diff --git a/README.md b/README.md index d2a94667..f81c95d5 100755 --- a/README.md +++ b/README.md @@ -113,30 +113,31 @@ s32 is_drumstick_unlocked(void) { } ``` -As of August 25th, 2022, this is our current score: +As of September 24th, 2022, this is our current score: ``` ======================================================== ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 29.61% Complete -------------------- - # Decompiled functions: 1210 - # GLOBAL_ASM remaining: 576 - # NON_MATCHING functions: 14 - # NON_EQUIVALENT WIP functions: 99 + ------------------- 31.18% Complete -------------------- + # Decompiled functions: 1271 + # GLOBAL_ASM remaining: 562 + # NON_MATCHING functions: 15 + # NON_EQUIVALENT WIP functions: 101 --------------------- Game Status ---------------------- - Balloons: 15/47, Keys: 1/4, Trophies: 1/5 + Balloons: 16/47, Keys: 2/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 -------------------------------------------------------- - We are racing in Snowball Valley. (Lap 2/3) + We are racing in Frosty Village. (Lap 2/3) ======================================================== ADVENTURE TWO (Cleanup & Documentation) - ------------------- 5.16% Complete -------------------- - # Documented functions: 181 - # Undocumented remaining: 1605 + ------------------- 5.39% Complete -------------------- + # Documented functions: 195 + # Undocumented remaining: 1638 --------------------- Game Status ---------------------- Balloons: 3/47, Keys: 0/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 -------------------------------------------------------- - We are collecting the fourth balloon on Timber's Island. + We are collecting the fourth balloon on Timber's Island. + ======================================================== ``` --- diff --git a/asm/non_matchings/unknown_078050/func_800775B0.s b/asm/non_matchings/unknown_078050/func_800775B0.s deleted file mode 100644 index 0006a201..00000000 --- a/asm/non_matchings/unknown_078050/func_800775B0.s +++ /dev/null @@ -1,101 +0,0 @@ -glabel func_800775B0 -/* 0781B0 800775B0 3C03800E */ lui $v1, %hi(D_800DE4D8) # $v1, 0x800e -/* 0781B4 800775B4 2463E4D8 */ addiu $v1, %lo(D_800DE4D8) # addiu $v1, $v1, -0x1b28 -/* 0781B8 800775B8 8C620000 */ lw $v0, ($v1) -/* 0781BC 800775BC 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0781C0 800775C0 000270C0 */ sll $t6, $v0, 3 -/* 0781C4 800775C4 3C0F8012 */ lui $t7, %hi(D_80126020) # $t7, 0x8012 -/* 0781C8 800775C8 01C27023 */ subu $t6, $t6, $v0 -/* 0781CC 800775CC 000E7100 */ sll $t6, $t6, 4 -/* 0781D0 800775D0 25EF6020 */ addiu $t7, %lo(D_80126020) # addiu $t7, $t7, 0x6020 -/* 0781D4 800775D4 24010002 */ li $at, 2 -/* 0781D8 800775D8 24580001 */ addiu $t8, $v0, 1 -/* 0781DC 800775DC AFBF0014 */ sw $ra, 0x14($sp) -/* 0781E0 800775E0 AFA60030 */ sw $a2, 0x30($sp) -/* 0781E4 800775E4 AFA00020 */ sw $zero, 0x20($sp) -/* 0781E8 800775E8 01CF3821 */ addu $a3, $t6, $t7 -/* 0781EC 800775EC 17010002 */ bne $t8, $at, .L800775F8 -/* 0781F0 800775F0 AC780000 */ sw $t8, ($v1) -/* 0781F4 800775F4 AC600000 */ sw $zero, ($v1) -.L800775F8: -/* 0781F8 800775F8 3C02800E */ lui $v0, %hi(rspF3DDKRBootStart) # $v0, 0x800e -/* 0781FC 800775FC 3C0D800E */ lui $t5, %hi(rspF3DDKRDramStart) # $t5, 0x800e -/* 078200 80077600 244284C0 */ addiu $v0, %lo(rspF3DDKRBootStart) # addiu $v0, $v0, -0x7b40 -/* 078204 80077604 00A44023 */ subu $t0, $a1, $a0 -/* 078208 80077608 25AD8590 */ addiu $t5, %lo(rspF3DDKRDramStart) # addiu $t5, $t5, -0x7a70 -/* 07820C 8007760C 000848C3 */ sra $t1, $t0, 3 -/* 078210 80077610 01A27023 */ subu $t6, $t5, $v0 -/* 078214 80077614 000950C0 */ sll $t2, $t1, 3 -/* 078218 80077618 ACEA0044 */ sw $t2, 0x44($a3) -/* 07821C 8007761C 240B0001 */ li $t3, 1 -/* 078220 80077620 240C0002 */ li $t4, 2 -/* 078224 80077624 ACEE001C */ sw $t6, 0x1c($a3) -/* 078228 80077628 3C0F800E */ lui $t7, %hi(rspF3DDKRXbusStart) # $t7, 0x800e -/* 07822C 8007762C ACEB0010 */ sw $t3, 0x10($a3) -/* 078230 80077630 ACEC0014 */ sw $t4, 0x14($a3) -/* 078234 80077634 25EFA970 */ addiu $t7, %lo(rspF3DDKRXbusStart) # addiu $t7, $t7, -0x5690 -/* 078238 80077638 3C18800F */ lui $t8, %hi(rspF3DDKRDataXbusStart) # $t8, 0x800f -/* 07823C 8007763C 3C088012 */ lui $t0, %hi(gDramStack) # $t0, 0x8012 -/* 078240 80077640 3C0A8012 */ lui $t2, %hi(D_801271B0) # $t2, 0x8012 -/* 078244 80077644 3C0D8012 */ lui $t5, %hi(D_80125ED8) # $t5, 0x8012 -/* 078248 80077648 3C0E800E */ lui $t6, %hi(D_800DE490) # $t6, 0x800e -/* 07824C 8007764C ACEF0020 */ sw $t7, 0x20($a3) -/* 078250 80077650 2718ABA0 */ addiu $t8, %lo(rspF3DDKRDataXbusStart) # addiu $t8, $t8, -0x5460 -/* 078254 80077654 24190800 */ li $t9, 2048 -/* 078258 80077658 250842A0 */ addiu $t0, %lo(gDramStack) # addiu $t0, $t0, 0x42a0 -/* 07825C 8007765C 24090400 */ li $t1, 1024 -/* 078260 80077660 254A71B0 */ addiu $t2, %lo(D_801271B0) # addiu $t2, $t2, 0x71b0 -/* 078264 80077664 240B0A00 */ li $t3, 2560 -/* 078268 80077668 240C0003 */ li $t4, 3 -/* 07826C 8007766C 25AD5ED8 */ addiu $t5, %lo(D_80125ED8) # addiu $t5, $t5, 0x5ed8 -/* 078270 80077670 25CEE490 */ addiu $t6, %lo(D_800DE490) # addiu $t6, $t6, -0x1b70 -/* 078274 80077674 ACE40040 */ sw $a0, 0x40($a3) -/* 078278 80077678 ACE20018 */ sw $v0, 0x18($a3) -/* 07827C 8007767C ACF80028 */ sw $t8, 0x28($a3) -/* 078280 80077680 ACF9002C */ sw $t9, 0x2c($a3) -/* 078284 80077684 ACE80030 */ sw $t0, 0x30($a3) -/* 078288 80077688 ACE90034 */ sw $t1, 0x34($a3) -/* 07828C 8007768C ACEA0048 */ sw $t2, 0x48($a3) -/* 078290 80077690 ACEB004C */ sw $t3, 0x4c($a3) -/* 078294 80077694 ACE00038 */ sw $zero, 0x38($a3) -/* 078298 80077698 ACE0003C */ sw $zero, 0x3c($a3) -/* 07829C 8007769C ACE00000 */ sw $zero, ($a3) -/* 0782A0 800776A0 ACEC0008 */ sw $t4, 8($a3) -/* 0782A4 800776A4 ACED0050 */ sw $t5, 0x50($a3) -/* 0782A8 800776A8 ACEE0054 */ sw $t6, 0x54($a3) -/* 0782AC 800776AC 3C0F8012 */ lui $t7, %hi(gVideoCurrFramebuffer) # $t7, 0x8012 -/* 0782B0 800776B0 8DEF62D4 */ lw $t7, %lo(gVideoCurrFramebuffer)($t7) -/* 0782B4 800776B4 3C02FF00 */ lui $v0, (0xFF0000FF >> 16) # lui $v0, 0xff00 -/* 0782B8 800776B8 344200FF */ ori $v0, (0xFF0000FF & 0xFFFF) # ori $v0, $v0, 0xff -/* 0782BC 800776BC 240300FF */ li $v1, 255 -/* 0782C0 800776C0 ACE20058 */ sw $v0, 0x58($a3) -/* 0782C4 800776C4 ACE2005C */ sw $v0, 0x5c($a3) -/* 0782C8 800776C8 ACE30060 */ sw $v1, 0x60($a3) -/* 0782CC 800776CC ACE30064 */ sw $v1, 0x64($a3) -/* 0782D0 800776D0 ACE00068 */ sw $zero, 0x68($a3) -/* 0782D4 800776D4 ACEF000C */ sw $t7, 0xc($a3) -/* 0782D8 800776D8 8FB80030 */ lw $t8, 0x30($sp) -/* 0782DC 800776DC 3C198012 */ lui $t9, %hi(D_80125EA0) # $t9, 0x8012 -/* 0782E0 800776E0 13000002 */ beqz $t8, .L800776EC -/* 0782E4 800776E4 27395EA0 */ addiu $t9, %lo(D_80125EA0) # addiu $t9, $t9, 0x5ea0 -/* 0782E8 800776E8 ACF90050 */ sw $t9, 0x50($a3) -.L800776EC: -/* 0782EC 800776EC 0C034628 */ jal osWritebackDCacheAll -/* 0782F0 800776F0 AFA70024 */ sw $a3, 0x24($sp) -/* 0782F4 800776F4 3C048012 */ lui $a0, %hi(osScInterruptQ) # $a0, 0x8012 -/* 0782F8 800776F8 8FA50024 */ lw $a1, 0x24($sp) -/* 0782FC 800776FC 8C846100 */ lw $a0, %lo(osScInterruptQ)($a0) -/* 078300 80077700 0C03238C */ jal osSendMesg -/* 078304 80077704 24060001 */ li $a2, 1 -/* 078308 80077708 8FA80030 */ lw $t0, 0x30($sp) -/* 07830C 8007770C 3C048012 */ lui $a0, %hi(D_80125EA0) # $a0, 0x8012 -/* 078310 80077710 11000004 */ beqz $t0, .L80077724 -/* 078314 80077714 24845EA0 */ addiu $a0, %lo(D_80125EA0) # addiu $a0, $a0, 0x5ea0 -/* 078318 80077718 27A50020 */ addiu $a1, $sp, 0x20 -/* 07831C 8007771C 0C0322EC */ jal osRecvMesg -/* 078320 80077720 24060001 */ li $a2, 1 -.L80077724: -/* 078324 80077724 8FBF0014 */ lw $ra, 0x14($sp) -/* 078328 80077728 27BD0028 */ addiu $sp, $sp, 0x28 -/* 07832C 8007772C 03E00008 */ jr $ra -/* 078330 80077730 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/unknown_078050/func_80077734.s b/asm/non_matchings/unknown_078050/func_80077734.s deleted file mode 100644 index 3a07af4b..00000000 --- a/asm/non_matchings/unknown_078050/func_80077734.s +++ /dev/null @@ -1,105 +0,0 @@ -glabel func_80077734 -/* 078334 80077734 3C03800E */ lui $v1, %hi(D_800DE4D8) # $v1, 0x800e -/* 078338 80077738 2463E4D8 */ addiu $v1, %lo(D_800DE4D8) # addiu $v1, $v1, -0x1b28 -/* 07833C 8007773C 8C620000 */ lw $v0, ($v1) -/* 078340 80077740 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 078344 80077744 000270C0 */ sll $t6, $v0, 3 -/* 078348 80077748 3C0F8012 */ lui $t7, %hi(D_80126020) # $t7, 0x8012 -/* 07834C 8007774C 01C27023 */ subu $t6, $t6, $v0 -/* 078350 80077750 000E7100 */ sll $t6, $t6, 4 -/* 078354 80077754 25EF6020 */ addiu $t7, %lo(D_80126020) # addiu $t7, $t7, 0x6020 -/* 078358 80077758 24010002 */ li $at, 2 -/* 07835C 8007775C 24580001 */ addiu $t8, $v0, 1 -/* 078360 80077760 AFBF0014 */ sw $ra, 0x14($sp) -/* 078364 80077764 AFA60030 */ sw $a2, 0x30($sp) -/* 078368 80077768 AFA00020 */ sw $zero, 0x20($sp) -/* 07836C 8007776C 01CF3821 */ addu $a3, $t6, $t7 -/* 078370 80077770 17010002 */ bne $t8, $at, .L8007777C -/* 078374 80077774 AC780000 */ sw $t8, ($v1) -/* 078378 80077778 AC600000 */ sw $zero, ($v1) -.L8007777C: -/* 07837C 8007777C 3C02800E */ lui $v0, %hi(rspF3DDKRBootStart) # $v0, 0x800e -/* 078380 80077780 00A44023 */ subu $t0, $a1, $a0 -/* 078384 80077784 3C0D800E */ lui $t5, %hi(rspF3DDKRDramStart) # $t5, 0x800e -/* 078388 80077788 244284C0 */ addiu $v0, %lo(rspF3DDKRBootStart) # addiu $v0, $v0, -0x7b40 -/* 07838C 8007778C 000848C3 */ sra $t1, $t0, 3 -/* 078390 80077790 25AD8590 */ addiu $t5, %lo(rspF3DDKRDramStart) # addiu $t5, $t5, -0x7a70 -/* 078394 80077794 3C0F800E */ lui $t7, %hi(rspF3DDKRFifoStart) # $t7, 0x800e -/* 078398 80077798 3C18800F */ lui $t8, %hi(rspF3DDKRDataFifoStart) # $t8, 0x800f -/* 07839C 8007779C 000950C0 */ sll $t2, $t1, 3 -/* 0783A0 800777A0 240B0001 */ li $t3, 1 -/* 0783A4 800777A4 240C0002 */ li $t4, 2 -/* 0783A8 800777A8 01A27023 */ subu $t6, $t5, $v0 -/* 0783AC 800777AC 25EF9790 */ addiu $t7, %lo(rspF3DDKRFifoStart) # addiu $t7, $t7, -0x6870 -/* 0783B0 800777B0 2718A3A0 */ addiu $t8, %lo(rspF3DDKRDataFifoStart) # addiu $t8, $t8, -0x5c60 -/* 0783B4 800777B4 ACEA0044 */ sw $t2, 0x44($a3) -/* 0783B8 800777B8 ACEB0010 */ sw $t3, 0x10($a3) -/* 0783BC 800777BC ACEC0014 */ sw $t4, 0x14($a3) -/* 0783C0 800777C0 ACEF0020 */ sw $t7, 0x20($a3) -/* 0783C4 800777C4 ACF80028 */ sw $t8, 0x28($a3) -/* 0783C8 800777C8 ACEE001C */ sw $t6, 0x1c($a3) -/* 0783CC 800777CC 24190800 */ li $t9, 2048 -/* 0783D0 800777D0 3C088012 */ lui $t0, %hi(gDramStack) # $t0, 0x8012 -/* 0783D4 800777D4 3C0A8012 */ lui $t2, %hi(gGfxSPTaskYieldBuffer) # $t2, 0x8012 -/* 0783D8 800777D8 3C0B8012 */ lui $t3, %hi(D_80125EA0) # $t3, 0x8012 -/* 0783DC 800777DC 3C0C8012 */ lui $t4, %hi(D_801271B0) # $t4, 0x8012 -/* 0783E0 800777E0 3C0F8012 */ lui $t7, %hi(D_80125ED8) # $t7, 0x8012 -/* 0783E4 800777E4 3C18800E */ lui $t8, %hi(D_800DE490) # $t8, 0x800e -/* 0783E8 800777E8 ACF9002C */ sw $t9, 0x2c($a3) -/* 0783EC 800777EC 250842A0 */ addiu $t0, %lo(gDramStack) # addiu $t0, $t0, 0x42a0 -/* 0783F0 800777F0 24090400 */ li $t1, 1024 -/* 0783F4 800777F4 254A46A0 */ addiu $t2, %lo(gGfxSPTaskYieldBuffer) # addiu $t2, $t2, 0x46a0 -/* 0783F8 800777F8 256B5EA0 */ addiu $t3, %lo(D_80125EA0) # addiu $t3, $t3, 0x5ea0 -/* 0783FC 800777FC 258C71B0 */ addiu $t4, %lo(D_801271B0) # addiu $t4, $t4, 0x71b0 -/* 078400 80077800 240D0A00 */ li $t5, 2560 -/* 078404 80077804 240E0007 */ li $t6, 7 -/* 078408 80077808 25EF5ED8 */ addiu $t7, %lo(D_80125ED8) # addiu $t7, $t7, 0x5ed8 -/* 07840C 8007780C 2718E490 */ addiu $t8, %lo(D_800DE490) # addiu $t8, $t8, -0x1b70 -/* 078410 80077810 ACE40040 */ sw $a0, 0x40($a3) -/* 078414 80077814 ACE20018 */ sw $v0, 0x18($a3) -/* 078418 80077818 ACE80030 */ sw $t0, 0x30($a3) -/* 07841C 8007781C ACE90034 */ sw $t1, 0x34($a3) -/* 078420 80077820 ACEA0038 */ sw $t2, 0x38($a3) -/* 078424 80077824 ACEB003C */ sw $t3, 0x3c($a3) -/* 078428 80077828 ACEC0048 */ sw $t4, 0x48($a3) -/* 07842C 8007782C ACED004C */ sw $t5, 0x4c($a3) -/* 078430 80077830 ACE00000 */ sw $zero, ($a3) -/* 078434 80077834 ACEE0008 */ sw $t6, 8($a3) -/* 078438 80077838 ACEF0050 */ sw $t7, 0x50($a3) -/* 07843C 8007783C ACF80054 */ sw $t8, 0x54($a3) -/* 078440 80077840 3C198012 */ lui $t9, %hi(gVideoCurrFramebuffer) # $t9, 0x8012 -/* 078444 80077844 8F3962D4 */ lw $t9, %lo(gVideoCurrFramebuffer)($t9) -/* 078448 80077848 3C02FF00 */ lui $v0, (0xFF0000FF >> 16) # lui $v0, 0xff00 -/* 07844C 8007784C 344200FF */ ori $v0, (0xFF0000FF & 0xFFFF) # ori $v0, $v0, 0xff -/* 078450 80077850 240300FF */ li $v1, 255 -/* 078454 80077854 ACE20058 */ sw $v0, 0x58($a3) -/* 078458 80077858 ACE2005C */ sw $v0, 0x5c($a3) -/* 07845C 8007785C ACE30060 */ sw $v1, 0x60($a3) -/* 078460 80077860 ACE30064 */ sw $v1, 0x64($a3) -/* 078464 80077864 ACE00068 */ sw $zero, 0x68($a3) -/* 078468 80077868 ACF9000C */ sw $t9, 0xc($a3) -/* 07846C 8007786C 8FA80030 */ lw $t0, 0x30($sp) -/* 078470 80077870 3C098012 */ lui $t1, %hi(D_80125EA0) # $t1, 0x8012 -/* 078474 80077874 11000002 */ beqz $t0, .L80077880 -/* 078478 80077878 25295EA0 */ addiu $t1, %lo(D_80125EA0) # addiu $t1, $t1, 0x5ea0 -/* 07847C 8007787C ACE90050 */ sw $t1, 0x50($a3) -.L80077880: -/* 078480 80077880 0C034628 */ jal osWritebackDCacheAll -/* 078484 80077884 AFA70024 */ sw $a3, 0x24($sp) -/* 078488 80077888 3C048012 */ lui $a0, %hi(osScInterruptQ) # $a0, 0x8012 -/* 07848C 8007788C 8FA50024 */ lw $a1, 0x24($sp) -/* 078490 80077890 8C846100 */ lw $a0, %lo(osScInterruptQ)($a0) -/* 078494 80077894 0C03238C */ jal osSendMesg -/* 078498 80077898 24060001 */ li $a2, 1 -/* 07849C 8007789C 8FAA0030 */ lw $t2, 0x30($sp) -/* 0784A0 800778A0 3C048012 */ lui $a0, %hi(D_80125EA0) # $a0, 0x8012 -/* 0784A4 800778A4 11400004 */ beqz $t2, .L800778B8 -/* 0784A8 800778A8 24845EA0 */ addiu $a0, %lo(D_80125EA0) # addiu $a0, $a0, 0x5ea0 -/* 0784AC 800778AC 27A50020 */ addiu $a1, $sp, 0x20 -/* 0784B0 800778B0 0C0322EC */ jal osRecvMesg -/* 0784B4 800778B4 24060001 */ li $a2, 1 -.L800778B8: -/* 0784B8 800778B8 8FBF0014 */ lw $ra, 0x14($sp) -/* 0784BC 800778BC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0784C0 800778C0 03E00008 */ jr $ra -/* 0784C4 800778C4 00000000 */ nop diff --git a/asm/non_matchings/unknown_078050/func_800778C8.s b/asm/non_matchings/unknown_078050/func_800778C8.s deleted file mode 100644 index 154705f2..00000000 --- a/asm/non_matchings/unknown_078050/func_800778C8.s +++ /dev/null @@ -1,104 +0,0 @@ -glabel func_800778C8 -/* 0784C8 800778C8 3C03800E */ lui $v1, %hi(D_800DE4D4) # $v1, 0x800e -/* 0784CC 800778CC 2463E4D4 */ addiu $v1, %lo(D_800DE4D4) # addiu $v1, $v1, -0x1b2c -/* 0784D0 800778D0 8C620000 */ lw $v0, ($v1) -/* 0784D4 800778D4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0784D8 800778D8 000270C0 */ sll $t6, $v0, 3 -/* 0784DC 800778DC 3C0F8012 */ lui $t7, %hi(D_80125F40) # $t7, 0x8012 -/* 0784E0 800778E0 01C27023 */ subu $t6, $t6, $v0 -/* 0784E4 800778E4 000E7100 */ sll $t6, $t6, 4 -/* 0784E8 800778E8 25EF5F40 */ addiu $t7, %lo(D_80125F40) # addiu $t7, $t7, 0x5f40 -/* 0784EC 800778EC 24010003 */ li $at, 3 -/* 0784F0 800778F0 24580001 */ addiu $t8, $v0, 1 -/* 0784F4 800778F4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0784F8 800778F8 AFA60030 */ sw $a2, 0x30($sp) -/* 0784FC 800778FC AFA00020 */ sw $zero, 0x20($sp) -/* 078500 80077900 01CF3821 */ addu $a3, $t6, $t7 -/* 078504 80077904 17010002 */ bne $t8, $at, .L80077910 -/* 078508 80077908 AC780000 */ sw $t8, ($v1) -/* 07850C 8007790C AC600000 */ sw $zero, ($v1) -.L80077910: -/* 078510 80077910 3C02800E */ lui $v0, %hi(rspF3DDKRBootStart) # $v0, 0x800e -/* 078514 80077914 00A44023 */ subu $t0, $a1, $a0 -/* 078518 80077918 3C0D800E */ lui $t5, %hi(rspF3DDKRDramStart) # $t5, 0x800e -/* 07851C 8007791C 244284C0 */ addiu $v0, %lo(rspF3DDKRBootStart) # addiu $v0, $v0, -0x7b40 -/* 078520 80077920 000848C3 */ sra $t1, $t0, 3 -/* 078524 80077924 25AD8590 */ addiu $t5, %lo(rspF3DDKRDramStart) # addiu $t5, $t5, -0x7a70 -/* 078528 80077928 3C0F800E */ lui $t7, %hi(rspF3DDKRFifoStart) # $t7, 0x800e -/* 07852C 8007792C 3C18800F */ lui $t8, %hi(rspF3DDKRDataFifoStart) # $t8, 0x800f -/* 078530 80077930 000950C0 */ sll $t2, $t1, 3 -/* 078534 80077934 240B0001 */ li $t3, 1 -/* 078538 80077938 240C0002 */ li $t4, 2 -/* 07853C 8007793C 01A27023 */ subu $t6, $t5, $v0 -/* 078540 80077940 25EF9790 */ addiu $t7, %lo(rspF3DDKRFifoStart) # addiu $t7, $t7, -0x6870 -/* 078544 80077944 2718A3A0 */ addiu $t8, %lo(rspF3DDKRDataFifoStart) # addiu $t8, $t8, -0x5c60 -/* 078548 80077948 ACEA0044 */ sw $t2, 0x44($a3) -/* 07854C 8007794C ACEB0010 */ sw $t3, 0x10($a3) -/* 078550 80077950 ACEC0014 */ sw $t4, 0x14($a3) -/* 078554 80077954 ACEF0020 */ sw $t7, 0x20($a3) -/* 078558 80077958 ACF80028 */ sw $t8, 0x28($a3) -/* 07855C 8007795C ACEE001C */ sw $t6, 0x1c($a3) -/* 078560 80077960 24190800 */ li $t9, 2048 -/* 078564 80077964 3C088012 */ lui $t0, %hi(gDramStack) # $t0, 0x8012 -/* 078568 80077968 3C0A8012 */ lui $t2, %hi(gGfxSPTaskYieldBuffer) # $t2, 0x8012 -/* 07856C 8007796C 3C0B8012 */ lui $t3, %hi(D_80125EA0) # $t3, 0x8012 -/* 078570 80077970 3C0C8012 */ lui $t4, %hi(D_801271B0) # $t4, 0x8012 -/* 078574 80077974 3C0F8012 */ lui $t7, %hi(D_80125ED8) # $t7, 0x8012 -/* 078578 80077978 3C18800E */ lui $t8, %hi(D_800DE490) # $t8, 0x800e -/* 07857C 8007797C ACE20018 */ sw $v0, 0x18($a3) -/* 078580 80077980 ACF9002C */ sw $t9, 0x2c($a3) -/* 078584 80077984 250842A0 */ addiu $t0, %lo(gDramStack) # addiu $t0, $t0, 0x42a0 -/* 078588 80077988 24090400 */ li $t1, 1024 -/* 07858C 8007798C 254A46A0 */ addiu $t2, %lo(gGfxSPTaskYieldBuffer) # addiu $t2, $t2, 0x46a0 -/* 078590 80077990 256B5EA0 */ addiu $t3, %lo(D_80125EA0) # addiu $t3, $t3, 0x5ea0 -/* 078594 80077994 258C71B0 */ addiu $t4, %lo(D_801271B0) # addiu $t4, $t4, 0x71b0 -/* 078598 80077998 240D0A00 */ li $t5, 2560 -/* 07859C 8007799C 240E0007 */ li $t6, 7 -/* 0785A0 800779A0 25EF5ED8 */ addiu $t7, %lo(D_80125ED8) # addiu $t7, $t7, 0x5ed8 -/* 0785A4 800779A4 2718E490 */ addiu $t8, %lo(D_800DE490) # addiu $t8, $t8, -0x1b70 -/* 0785A8 800779A8 ACE40040 */ sw $a0, 0x40($a3) -/* 0785AC 800779AC ACE80030 */ sw $t0, 0x30($a3) -/* 0785B0 800779B0 ACE90034 */ sw $t1, 0x34($a3) -/* 0785B4 800779B4 ACEA0038 */ sw $t2, 0x38($a3) -/* 0785B8 800779B8 ACEB003C */ sw $t3, 0x3c($a3) -/* 0785BC 800779BC ACEC0048 */ sw $t4, 0x48($a3) -/* 0785C0 800779C0 ACED004C */ sw $t5, 0x4c($a3) -/* 0785C4 800779C4 ACE00000 */ sw $zero, ($a3) -/* 0785C8 800779C8 ACEE0008 */ sw $t6, 8($a3) -/* 0785CC 800779CC ACEF0050 */ sw $t7, 0x50($a3) -/* 0785D0 800779D0 ACF80054 */ sw $t8, 0x54($a3) -/* 0785D4 800779D4 3C198012 */ lui $t9, %hi(gVideoCurrFramebuffer) # $t9, 0x8012 -/* 0785D8 800779D8 8F3962D4 */ lw $t9, %lo(gVideoCurrFramebuffer)($t9) -/* 0785DC 800779DC 3C02FF00 */ lui $v0, (0xFF0000FF >> 16) # lui $v0, 0xff00 -/* 0785E0 800779E0 344200FF */ ori $v0, (0xFF0000FF & 0xFFFF) # ori $v0, $v0, 0xff -/* 0785E4 800779E4 ACE20058 */ sw $v0, 0x58($a3) -/* 0785E8 800779E8 ACE2005C */ sw $v0, 0x5c($a3) -/* 0785EC 800779EC ACF9000C */ sw $t9, 0xc($a3) -/* 0785F0 800779F0 8FA80030 */ lw $t0, 0x30($sp) -/* 0785F4 800779F4 240200FF */ li $v0, 255 -/* 0785F8 800779F8 11000003 */ beqz $t0, .L80077A08 -/* 0785FC 800779FC 00000000 */ nop -/* 078600 80077A00 ACE20060 */ sw $v0, 0x60($a3) -/* 078604 80077A04 ACE20064 */ sw $v0, 0x64($a3) -.L80077A08: -/* 078608 80077A08 ACE00068 */ sw $zero, 0x68($a3) -/* 07860C 80077A0C 0C034628 */ jal osWritebackDCacheAll -/* 078610 80077A10 AFA70024 */ sw $a3, 0x24($sp) -/* 078614 80077A14 3C048012 */ lui $a0, %hi(osScInterruptQ) # $a0, 0x8012 -/* 078618 80077A18 8FA50024 */ lw $a1, 0x24($sp) -/* 07861C 80077A1C 8C846100 */ lw $a0, %lo(osScInterruptQ)($a0) -/* 078620 80077A20 0C03238C */ jal osSendMesg -/* 078624 80077A24 24060001 */ li $a2, 1 -/* 078628 80077A28 8FA90030 */ lw $t1, 0x30($sp) -/* 07862C 80077A2C 3C048012 */ lui $a0, %hi(D_80125ED8) # $a0, 0x8012 -/* 078630 80077A30 11200004 */ beqz $t1, .L80077A44 -/* 078634 80077A34 24845ED8 */ addiu $a0, %lo(D_80125ED8) # addiu $a0, $a0, 0x5ed8 -/* 078638 80077A38 27A50020 */ addiu $a1, $sp, 0x20 -/* 07863C 80077A3C 0C0322EC */ jal osRecvMesg -/* 078640 80077A40 24060001 */ li $a2, 1 -.L80077A44: -/* 078644 80077A44 8FBF0014 */ lw $ra, 0x14($sp) -/* 078648 80077A48 27BD0028 */ addiu $sp, $sp, 0x28 -/* 07864C 80077A4C 03E00008 */ jr $ra -/* 078650 80077A50 00000000 */ nop - diff --git a/asm/non_matchings/unknown_078050/setupOSTasks.s b/asm/non_matchings/unknown_078050/setupOSTasks.s deleted file mode 100644 index 5a1084d9..00000000 --- a/asm/non_matchings/unknown_078050/setupOSTasks.s +++ /dev/null @@ -1,91 +0,0 @@ -glabel setupOSTasks -/* 078050 80077450 3C03800E */ lui $v1, %hi(D_800DE4D4) # $v1, 0x800e -/* 078054 80077454 240E0001 */ li $t6, 1 -/* 078058 80077458 3C01800E */ lui $at, %hi(D_800DE4DC) # $at, 0x800e -/* 07805C 8007745C 2463E4D4 */ addiu $v1, %lo(D_800DE4D4) # addiu $v1, $v1, -0x1b2c -/* 078060 80077460 AC2EE4DC */ sw $t6, %lo(D_800DE4DC)($at) -/* 078064 80077464 8C620000 */ lw $v0, ($v1) -/* 078068 80077468 3C188012 */ lui $t8, %hi(D_80125F40) # $t8, 0x8012 -/* 07806C 8007746C 000278C0 */ sll $t7, $v0, 3 -/* 078070 80077470 01E27823 */ subu $t7, $t7, $v0 -/* 078074 80077474 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 078078 80077478 000F7900 */ sll $t7, $t7, 4 -/* 07807C 8007747C 27185F40 */ addiu $t8, %lo(D_80125F40) # addiu $t8, $t8, 0x5f40 -/* 078080 80077480 24010002 */ li $at, 2 -/* 078084 80077484 24590001 */ addiu $t9, $v0, 1 -/* 078088 80077488 AFBF0014 */ sw $ra, 0x14($sp) -/* 07808C 8007748C AFA60028 */ sw $a2, 0x28($sp) -/* 078090 80077490 01F83821 */ addu $a3, $t7, $t8 -/* 078094 80077494 17210002 */ bne $t9, $at, .L800774A0 -/* 078098 80077498 AC790000 */ sw $t9, ($v1) -/* 07809C 8007749C AC600000 */ sw $zero, ($v1) -.L800774A0: -/* 0780A0 800774A0 00A45823 */ subu $t3, $a1, $a0 -/* 0780A4 800774A4 3C03800E */ lui $v1, %hi(rspF3DDKRBootStart) # $v1, 0x800e -/* 0780A8 800774A8 3C0A8012 */ lui $t2, %hi(D_80125ED8) # $t2, 0x8012 -/* 0780AC 800774AC 000B60C3 */ sra $t4, $t3, 3 -/* 0780B0 800774B0 240D0001 */ li $t5, 1 -/* 0780B4 800774B4 3C0F800E */ lui $t7, %hi(rspF3DDKRDramStart) # $t7, 0x800e -/* 0780B8 800774B8 246384C0 */ addiu $v1, %lo(rspF3DDKRBootStart) # addiu $v1, $v1, -0x7b40 -/* 0780BC 800774BC 254A5ED8 */ addiu $t2, %lo(D_80125ED8) # addiu $t2, $t2, 0x5ed8 -/* 0780C0 800774C0 ACEC0044 */ sw $t4, 0x44($a3) -/* 0780C4 800774C4 ACED0010 */ sw $t5, 0x10($a3) -/* 0780C8 800774C8 240E0002 */ li $t6, 2 -/* 0780CC 800774CC 25EF8590 */ addiu $t7, %lo(rspF3DDKRDramStart) # addiu $t7, $t7, -0x7a70 -/* 0780D0 800774D0 3C02FF00 */ lui $v0, (0xFF0000FF >> 16) # lui $v0, 0xff00 -/* 0780D4 800774D4 24090023 */ li $t1, 35 -/* 0780D8 800774D8 ACEA0050 */ sw $t2, 0x50($a3) -/* 0780DC 800774DC ACEE0014 */ sw $t6, 0x14($a3) -/* 0780E0 800774E0 01E3C023 */ subu $t8, $t7, $v1 -/* 0780E4 800774E4 3C0C8012 */ lui $t4, %hi(gGfxSPTaskYieldBuffer) # $t4, 0x8012 -/* 0780E8 800774E8 3C0D8012 */ lui $t5, %hi(D_80125EA0) # $t5, 0x8012 -/* 0780EC 800774EC 344200FF */ ori $v0, (0xFF0000FF & 0xFFFF) # ori $v0, $v0, 0xff -/* 0780F0 800774F0 ACE90008 */ sw $t1, 8($a3) -/* 0780F4 800774F4 3C19800E */ lui $t9, %hi(rspF3DDKRXbusStart) # $t9, 0x800e -/* 0780F8 800774F8 3C08800F */ lui $t0, %hi(rspF3DDKRDataXbusStart) # $t0, 0x800f -/* 0780FC 800774FC 3C0A8012 */ lui $t2, %hi(gDramStack) # $t2, 0x8012 -/* 078100 80077500 258C46A0 */ addiu $t4, %lo(gGfxSPTaskYieldBuffer) # addiu $t4, $t4, 0x46a0 -/* 078104 80077504 25AD5EA0 */ addiu $t5, %lo(D_80125EA0) # addiu $t5, $t5, 0x5ea0 -/* 078108 80077508 3C0E8012 */ lui $t6, %hi(D_801271B0) # $t6, 0x8012 -/* 07810C 8007750C ACF8001C */ sw $t8, 0x1c($a3) -/* 078110 80077510 2739A970 */ addiu $t9, %lo(rspF3DDKRXbusStart) # addiu $t9, $t9, -0x5690 -/* 078114 80077514 2508ABA0 */ addiu $t0, %lo(rspF3DDKRDataXbusStart) # addiu $t0, $t0, -0x5460 -/* 078118 80077518 24090800 */ li $t1, 2048 -/* 07811C 8007751C 254A42A0 */ addiu $t2, %lo(gDramStack) # addiu $t2, $t2, 0x42a0 -/* 078120 80077520 240B0400 */ li $t3, 1024 -/* 078124 80077524 ACEC0038 */ sw $t4, 0x38($a3) -/* 078128 80077528 ACED003C */ sw $t5, 0x3c($a3) -/* 07812C 8007752C 25CE71B0 */ addiu $t6, %lo(D_801271B0) # addiu $t6, $t6, 0x71b0 -/* 078130 80077530 240F0A00 */ li $t7, 2560 -/* 078134 80077534 ACE20058 */ sw $v0, 0x58($a3) -/* 078138 80077538 ACE2005C */ sw $v0, 0x5c($a3) -/* 07813C 8007753C ACE40040 */ sw $a0, 0x40($a3) -/* 078140 80077540 ACE30018 */ sw $v1, 0x18($a3) -/* 078144 80077544 ACF90020 */ sw $t9, 0x20($a3) -/* 078148 80077548 ACE80028 */ sw $t0, 0x28($a3) -/* 07814C 8007754C ACE9002C */ sw $t1, 0x2c($a3) -/* 078150 80077550 ACEA0030 */ sw $t2, 0x30($a3) -/* 078154 80077554 ACEB0034 */ sw $t3, 0x34($a3) -/* 078158 80077558 ACEE0048 */ sw $t6, 0x48($a3) -/* 07815C 8007755C ACEF004C */ sw $t7, 0x4c($a3) -/* 078160 80077560 ACE00038 */ sw $zero, 0x38($a3) -/* 078164 80077564 ACE0003C */ sw $zero, 0x3c($a3) -/* 078168 80077568 ACE00000 */ sw $zero, ($a3) -/* 07816C 8007756C 3C188012 */ lui $t8, %hi(gVideoCurrFramebuffer) # $t8, 0x8012 -/* 078170 80077570 8F1862D4 */ lw $t8, %lo(gVideoCurrFramebuffer)($t8) -/* 078174 80077574 240200FF */ li $v0, 255 -/* 078178 80077578 ACE20060 */ sw $v0, 0x60($a3) -/* 07817C 8007757C ACE20064 */ sw $v0, 0x64($a3) -/* 078180 80077580 ACF8000C */ sw $t8, 0xc($a3) -/* 078184 80077584 0C034628 */ jal osWritebackDCacheAll -/* 078188 80077588 AFA7001C */ sw $a3, 0x1c($sp) -/* 07818C 8007758C 3C048012 */ lui $a0, %hi(osScInterruptQ) # $a0, 0x8012 -/* 078190 80077590 8FA5001C */ lw $a1, 0x1c($sp) -/* 078194 80077594 8C846100 */ lw $a0, %lo(osScInterruptQ)($a0) -/* 078198 80077598 0C03238C */ jal osSendMesg -/* 07819C 8007759C 24060001 */ li $a2, 1 -/* 0781A0 800775A0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0781A4 800775A4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0781A8 800775A8 03E00008 */ jr $ra -/* 0781AC 800775AC 00001025 */ move $v0, $zero - diff --git a/src/game.c b/src/game.c index cce9a195..cc11a74d 100644 --- a/src/game.c +++ b/src/game.c @@ -901,9 +901,9 @@ void main_game_loop(void) { if (D_800DD380 == 8) { gCurrDisplayList = gDisplayLists[gSPTaskNum]; set_rsp_segment(&gCurrDisplayList, 0, 0); - set_rsp_segment(&gCurrDisplayList, 1, gVideoCurrFramebuffer); + set_rsp_segment(&gCurrDisplayList, 1, (s32)gVideoCurrFramebuffer); set_rsp_segment(&gCurrDisplayList, 2, gVideoLastDepthBuffer); - set_rsp_segment(&gCurrDisplayList, 4, gVideoCurrFramebuffer - 0x500); + set_rsp_segment(&gCurrDisplayList, 4, (s32)gVideoCurrFramebuffer - 0x500); } if (D_800DD3F0 == 0) { setupOSTasks(gDisplayLists[gSPTaskNum], gCurrDisplayList, 0); @@ -993,7 +993,7 @@ void main_game_loop(void) { if (osTvType == TV_TYPE_PAL) { framebufferSize = (s32)((SCREEN_WIDTH * SCREEN_HEIGHT * 2) * 1.1f); } - func_80070B04(gVideoLastFramebuffer, gVideoCurrFramebuffer, gVideoCurrFramebuffer + framebufferSize); + func_80070B04(gVideoLastFramebuffer, (s32)gVideoCurrFramebuffer, (s32)gVideoCurrFramebuffer + framebufferSize); } // tempLogicUpdateRate will be set to a value 2 or higher, based on the framerate. // the mul factor is hardcapped at 6, which happens at 10FPS. The mul factor diff --git a/src/game.h b/src/game.h index 257edc00..b529db9f 100644 --- a/src/game.h +++ b/src/game.h @@ -2,6 +2,7 @@ #define _UNKNOWN_06B2B0_H_ #include "types.h" +#include "video.h" #include "structs.h" #include "fade_transition.h" #include "libc/math.h" @@ -78,7 +79,7 @@ extern FadeTransition D_800DD3FC; extern char *D_800DD410[3]; extern FadeTransition D_800DD41C; extern FadeTransition D_800DD424; -extern s32 gVideoCurrFramebuffer; +extern u16 *gVideoCurrFramebuffer; extern s32 gVideoLastFramebuffer; extern s32 gVideoLastDepthBuffer; diff --git a/src/game_ui.h b/src/game_ui.h index 8d70a543..3373d1c9 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -49,6 +49,8 @@ extern u32 D_80126D00; extern u32 D_80126D04; extern u8 D_80126D37; +extern s32 D_801271B0[640]; + u8 func_800A0190(void); void func_800A0B74(void); void func_800A0DC0(s32 arg0, Object *arg1, s32 arg2); diff --git a/src/unknown_078050.c b/src/unknown_078050.c index e1123031..8c55dcc6 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -147,8 +147,10 @@ Gfx D_800DE6E8[][2] = { /************ .bss ************/ +#define YIELD_BUFFER_SIZE 0x1800 + u8 gDramStack[SP_DRAM_STACK_SIZE8]; -u8 gGfxSPTaskYieldBuffer[0x1800]; +u8 gGfxSPTaskYieldBuffer[YIELD_BUFFER_SIZE]; OSMesgQueue D_80125EA0; OSMesg D_80125EB8; OSMesgQueue D_80125EC0; @@ -165,17 +167,192 @@ u8 D_80125F36; u8 D_80125F37; s32 D_80125F38; s32 D_80125F3C; -s32 D_80125F40[56]; -s32 D_80126020[56]; + +DKR_OSTask D_80125F40[2]; +DKR_OSTask D_80126020[2]; + OSMesgQueue *osScInterruptQ; /*******************************/ -GLOBAL_ASM("asm/non_matchings/unknown_078050/setupOSTasks.s") -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_800775B0.s") -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80077734.s") -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_800778C8.s") +s32 setupOSTasks(Gfx* arg0, Gfx* arg1, s32 arg2) { + DKR_OSTask *dkrtask; + D_800DE4DC = 1; + dkrtask = &D_80125F40[D_800DE4D4]; + D_800DE4D4++; + if (D_800DE4D4 == 2) { + D_800DE4D4 = 0; + } + dkrtask->unk8 = 0x23; + dkrtask->unk50 = &D_80125ED8; + dkrtask->unk58 = 0xFF0000FF; + dkrtask->unk5C = 0xFF0000FF; + dkrtask->task.data_ptr = arg0; + dkrtask->task.data_size = ((s32)arg1 - (s32)arg0) >> 3; + dkrtask->task.type = 1; + dkrtask->task.flags = 2; + dkrtask->task.ucode_boot = rspF3DDKRBootStart; + dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); + dkrtask->task.ucode = rspF3DDKRXbusStart; + dkrtask->task.ucode_data = rspF3DDKRDataXbusStart; + dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.dram_stack = gDramStack; + dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.output_buff = gGfxSPTaskYieldBuffer; + dkrtask->task.output_buff_size = &D_80125EA0; + dkrtask->task.yield_data_ptr = D_801271B0; + dkrtask->task.yield_data_size = 0xA00; + dkrtask->task.output_buff = NULL; + dkrtask->task.output_buff_size = NULL; + dkrtask->unk0 = 0; + dkrtask->unkC = (s32) gVideoCurrFramebuffer; + dkrtask->unk60 = 0xFF; + dkrtask->unk64 = 0xFF; + osWritebackDCacheAll(); + osSendMesg(osScInterruptQ, dkrtask, 1); + return 0; +} + +void func_800775B0(Gfx* arg0, Gfx* arg1, s32 arg2) { + DKR_OSTask *dkrtask; + s32 *sp20; + + sp20 = NULL; + dkrtask = &D_80126020[D_800DE4D8]; + D_800DE4D8++; + if (D_800DE4D8 == 2) { + D_800DE4D8 = 0; + } + dkrtask->task.data_ptr = arg0; + dkrtask->task.data_size = (s32) (((s32) (arg1 - arg0) << 3)); + dkrtask->task.type = 1; + dkrtask->task.flags = 2; + dkrtask->task.ucode_boot = rspF3DDKRBootStart; + dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); + dkrtask->task.ucode = rspF3DDKRXbusStart; + dkrtask->task.ucode_data = rspF3DDKRDataXbusStart; + dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.dram_stack = gDramStack; + dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.yield_data_ptr = D_801271B0; + dkrtask->task.yield_data_size = 0xA00; + dkrtask->task.output_buff = NULL; + dkrtask->task.output_buff_size = 0; + dkrtask->unk0 = 0; + dkrtask->unk8 = 3; + dkrtask->unk50 = &D_80125ED8; + dkrtask->unk54 = D_800DE490; + dkrtask->unkC = (s32) gVideoCurrFramebuffer; + dkrtask->unk58 = 0xFF0000FF; + dkrtask->unk5C = 0xFF0000FF; + dkrtask->unk60 = 0xFF; + dkrtask->unk64 = 0xFF; + dkrtask->unk68 = 0; + + if (arg2 != 0) { + dkrtask->unk50 = &D_80125EA0; + } + osWritebackDCacheAll(); + osSendMesg(osScInterruptQ, dkrtask, 1); + if (arg2 != 0) { + osRecvMesg(&D_80125EA0, &sp20, 1); + } +} + +void func_80077734(Gfx* arg0, Gfx* arg1, s32 arg2) { + DKR_OSTask *dkrtask; + s32 *sp20; + + sp20 = NULL; + dkrtask = &D_80126020[D_800DE4D8]; + D_800DE4D8++; + if (D_800DE4D8 == 2) { + D_800DE4D8 = 0; + } + + dkrtask->task.data_ptr = arg0; + dkrtask->task.ucode_boot = rspF3DDKRBootStart; + dkrtask->task.data_size = (s32) (((s32) (arg1 - arg0)) << 3); + dkrtask->task.type = 1; + dkrtask->task.flags = 2; + dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); + dkrtask->task.ucode = rspF3DDKRFifoStart; + dkrtask->task.ucode_data = rspF3DDKRDataFifoStart; + dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.dram_stack = gDramStack; + dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.output_buff = gGfxSPTaskYieldBuffer; + dkrtask->task.output_buff_size = gGfxSPTaskYieldBuffer + YIELD_BUFFER_SIZE; + + dkrtask->task.yield_data_ptr = D_801271B0; + dkrtask->task.yield_data_size = 0xA00; + dkrtask->unk0 = 0; + dkrtask->unk8 = 7; + dkrtask->unk50 = &D_80125ED8; + dkrtask->unk54 = D_800DE490; + dkrtask->unkC = (s32) gVideoCurrFramebuffer; + dkrtask->unk58 = 0xFF0000FF; + dkrtask->unk5C = 0xFF0000FF; + dkrtask->unk60 = 0xFF; + dkrtask->unk64 = 0xFF; + dkrtask->unk68 = 0; + + if (arg2 != 0) { + dkrtask->unk50 = &D_80125EA0; + } + osWritebackDCacheAll(); + osSendMesg(osScInterruptQ, dkrtask, 1); + + if (arg2 != 0) { + osRecvMesg(&D_80125EA0, &sp20, 1); + } +} + +void func_800778C8(Gfx* arg0, Gfx* arg1, s32 arg2) { + DKR_OSTask *dkrtask; + s32 *sp20; + + sp20 = NULL; + dkrtask = &D_80125F40[D_800DE4D4]; + D_800DE4D4++; + if (D_800DE4D4 == 3) { + D_800DE4D4 = 0; + } + + dkrtask->task.data_size = (s32) (((s32) (arg1 - arg0)) << 3); + dkrtask->task.data_ptr = arg0; + dkrtask->task.type = 1; + dkrtask->task.flags = 2; + dkrtask->task.ucode_boot = rspF3DDKRBootStart; + dkrtask->task.ucode_boot_size = (s32) (rspF3DDKRDramStart - rspF3DDKRBootStart); + dkrtask->task.ucode = rspF3DDKRFifoStart; + dkrtask->task.ucode_data = rspF3DDKRDataFifoStart; + dkrtask->task.ucode_data_size = 0x800; + dkrtask->task.dram_stack = gDramStack; + dkrtask->task.dram_stack_size = 0x400; + dkrtask->task.output_buff = gGfxSPTaskYieldBuffer; + dkrtask->task.output_buff_size = &D_80125EA0; + dkrtask->task.yield_data_ptr = &D_801271B0; + dkrtask->task.yield_data_size = 0xA00; + dkrtask->unk0 = 0; + dkrtask->unk8 = 7; + dkrtask->unk50 = &D_80125ED8; + dkrtask->unk54 = D_800DE490; + dkrtask->unkC = (s32) gVideoCurrFramebuffer; + dkrtask->unk58 = 0xFF0000FF; + dkrtask->unk5C = 0xFF0000FF; + if (arg2 != 0) { + dkrtask->unk60 = 0xFF; + dkrtask->unk64 = 0xFF; + } + dkrtask->unk68 = 0; + osWritebackDCacheAll(); + osSendMesg(osScInterruptQ, dkrtask, 1); + if (arg2 != 0) { + osRecvMesg(&D_80125ED8, &sp20, 1); + } +} s32 func_80077A54(void) { s32 *sp1C = NULL; diff --git a/src/unknown_078050.h b/src/unknown_078050.h index 24ea62ed..c53d6133 100644 --- a/src/unknown_078050.h +++ b/src/unknown_078050.h @@ -7,11 +7,30 @@ #include "sched.h" #include "libultra_internal.h" +#include "game_ui.h" +#include "video.h" + typedef union { void (*function)(Gfx*, s32); void *ptr; } unk800DE4D0; +typedef struct DKR_OSTask { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + OSTask_t task; // Size: 0x40 bytes + OSMesgQueue *unk50; + s32 unk54; + s32 unk58; + s32 unk5C; + s32 unk60; + s32 unk64; + s32 unk68; + s32 unk6C; +} DKR_OSTask; + extern s16 D_800DE490[16]; extern u8 sBackgroundPrimColourR; @@ -28,6 +47,14 @@ extern s32 D_800DE4D4; extern s32 D_800DE4D8; extern s32 D_800DE4DC; +// Defined in dkr.ld +extern s8 rspF3DDKRDramStart[]; +extern s8 rspF3DDKRBootStart[]; +extern s8 rspF3DDKRXbusStart[]; +extern s8 rspF3DDKRDataXbusStart[]; +extern s8 rspF3DDKRFifoStart[]; +extern s8 rspF3DDKRDataFifoStart[]; + s32 func_80077A54(void); void func_80077AAC(void *bufPtr, s32 arg1, UNUSED s32 arg2); void set_background_prim_colour(u8 arg0, u8 arg1, u8 arg2); diff --git a/src/video.h b/src/video.h index 0dbde27c..696be505 100644 --- a/src/video.h +++ b/src/video.h @@ -58,6 +58,7 @@ enum LogicUpdateRates { extern s32 gVideoRefreshRate; +extern u16 *gVideoCurrFramebuffer; extern u16 *gVideoDepthBuffer; extern s32 D_800DE774; extern s8 D_800DE778;