From 027cba8f9933525f2fec0d586cd04447317f0580 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Wed, 4 Oct 2023 11:57:53 -0400 Subject: [PATCH] We are collecting silver coins in Crescent Island. (0/8 silver coins) (#413) * Match menu_results_loop * Match menu_options_loop * func_80059BF0 matched * Various small changes * Match func_8002125C * func_80021104 matched * Match func_800A0BD4 and _itoa * Match func_800A47A0 * Match func_800A7A60 * Match func_8000418C * Update README score * Match func_8001F23C * Rename gParticlePtrList_addObject to despawn_object * Rename it again * Apply suggestions from code review Co-authored-by: Fazana <52551480+FazanaJ@users.noreply.github.com> --------- Co-authored-by: Fazana <52551480+FazanaJ@users.noreply.github.com> --- README.md | 52 ++-- asm/non_matchings/audiosfx/func_8000418C.s | 30 -- asm/non_matchings/game_ui/func_800A0BD4.s | 136 -------- asm/non_matchings/game_ui/func_800A47A0.s | 126 -------- asm/non_matchings/game_ui/func_800A7A60.s | 70 ----- asm/non_matchings/menu/menu_options_loop.s | 270 ---------------- asm/non_matchings/menu/menu_results_loop.s | 291 ------------------ .../object_functions/func_8003F2E8.s | 8 +- .../object_functions/obj_loop_fish.s | 2 +- asm/non_matchings/objects/func_8000CC7C.s | 4 +- asm/non_matchings/objects/func_800101AC.s | 4 +- asm/non_matchings/objects/func_8001A8F4.s | 2 +- asm/non_matchings/objects/func_8001E93C.s | 2 +- asm/non_matchings/objects/func_8001F23C.s | 103 ------- asm/non_matchings/objects/func_80021104.s | 92 ------ asm/non_matchings/objects/func_8002125C.s | 115 ------- asm/non_matchings/objects/func_80022E18.s | 4 +- asm/non_matchings/particles/func_800B26E0.s | 2 +- asm/non_matchings/printf/_itoa.s | 58 ---- asm/non_matchings/racer/func_80059BF0.s | 146 --------- include/level_object_entries.h | 29 ++ include/structs.h | 43 ++- src/audiosfx.c | 20 +- src/audiosfx.h | 13 + src/game_ui.c | 142 +++++++-- src/game_ui.h | 23 +- src/menu.c | 149 +++++++-- src/menu.h | 5 +- src/object_functions.c | 64 ++-- src/object_functions.h | 2 +- src/objects.c | 126 +++++++- src/objects.h | 13 +- src/particles.c | 2 +- src/printf.c | 17 +- src/printf.h | 1 + src/racer.c | 58 ++-- src/racer.h | 2 +- src/thread3_main.c | 27 +- src/tracks.c | 2 +- src/unknown_008C40.c | 33 +- src/unknown_008C40.h | 4 +- 41 files changed, 620 insertions(+), 1672 deletions(-) delete mode 100644 asm/non_matchings/audiosfx/func_8000418C.s delete mode 100644 asm/non_matchings/game_ui/func_800A0BD4.s delete mode 100644 asm/non_matchings/game_ui/func_800A47A0.s delete mode 100644 asm/non_matchings/game_ui/func_800A7A60.s delete mode 100644 asm/non_matchings/menu/menu_options_loop.s delete mode 100644 asm/non_matchings/menu/menu_results_loop.s delete mode 100644 asm/non_matchings/objects/func_8001F23C.s delete mode 100644 asm/non_matchings/objects/func_80021104.s delete mode 100644 asm/non_matchings/objects/func_8002125C.s delete mode 100644 asm/non_matchings/printf/_itoa.s delete mode 100644 asm/non_matchings/racer/func_80059BF0.s diff --git a/README.md b/README.md index 1b0f77ea..b29c3eda 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of September 29, 2023, this is our current score: +As of October 4, 2023, this is our current score: -    Decomp progress: 55.56% +    Decomp progress: 56.18%     Documentation progress: 28.44% @@ -128,31 +128,31 @@ s32 is_drumstick_unlocked(void) { ``` -As of September 29th, 2023, this is our current score: +As of October 4th, 2023, this is our current score: ``` - =============================================================== - ADVENTURE ONE (ASM -> C Decompilation) - ----------------------- 55.56% Complete ----------------------- - # Decompiled functions: 1577 - # GLOBAL_ASM remaining: 261 - # NON_MATCHING functions: 13 - # NON_EQUIVALENT WIP functions: 64 - ------------------------- Game Status ------------------------- - Balloons: 26/47, Keys: 3/4, Trophies: 2/5 - T.T. Amulets: 3/4, Wizpig Amulets: 2/4 - --------------------------------------------------------------- - We are collecting silver coins in Whale Bay. (6/8 silver coins) - =============================================================== - ADVENTURE TWO (Cleanup & Documentation) - ----------------------- 28.44% Complete ----------------------- - # Documented functions: 624 - # Undocumented remaining: 946 - ------------------------- Game Status ------------------------- - Balloons: 14/47, Keys: 1/4, Trophies: 1/5 - T.T. Amulets: 1/4, Wizpig Amulets: 1/4 - --------------------------------------------------------------- - We are racing in Walrus Cove. (Lap 3/3) - =============================================================== + ===================================================================== + ADVENTURE ONE (ASM -> C Decompilation) + -------------------------- 56.18% Complete -------------------------- + # Decompiled functions: 1588 + # GLOBAL_ASM remaining: 250 + # NON_MATCHING functions: 12 + # NON_EQUIVALENT WIP functions: 61 + ---------------------------- Game Status ---------------------------- + Balloons: 27/47, Keys: 3/4, Trophies: 2/5 + T.T. Amulets: 3/4, Wizpig Amulets: 2/4 + --------------------------------------------------------------------- + We are collecting silver coins in Crescent Island. (0/8 silver coins) + ===================================================================== + ADVENTURE TWO (Cleanup & Documentation) + -------------------------- 28.44% Complete -------------------------- + # Documented functions: 624 + # Undocumented remaining: 946 + ---------------------------- Game Status ---------------------------- + Balloons: 14/47, Keys: 1/4, Trophies: 1/5 + T.T. Amulets: 1/4, Wizpig Amulets: 1/4 + --------------------------------------------------------------------- + We are racing in Walrus Cove. (Lap 3/3) + ===================================================================== ``` diff --git a/asm/non_matchings/audiosfx/func_8000418C.s b/asm/non_matchings/audiosfx/func_8000418C.s deleted file mode 100644 index b2e40e04..00000000 --- a/asm/non_matchings/audiosfx/func_8000418C.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel func_8000418C -/* 004D8C 8000418C 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 004D90 80004190 AFBF0014 */ sw $ra, 0x14($sp) -/* 004D94 80004194 8C8E0008 */ lw $t6, 8($a0) -/* 004D98 80004198 00803825 */ move $a3, $a0 -/* 004D9C 8000419C 8DCF0004 */ lw $t7, 4($t6) -/* 004DA0 800041A0 00000000 */ nop -/* 004DA4 800041A4 81E40005 */ lb $a0, 5($t7) -/* 004DA8 800041A8 0C032678 */ jal alCents2Ratio -/* 004DAC 800041AC AFA70030 */ sw $a3, 0x30($sp) -/* 004DB0 800041B0 8FA70030 */ lw $a3, 0x30($sp) -/* 004DB4 800041B4 3C04800E */ lui $a0, %hi(gAlSndPlayerPtr) # $a0, 0x800e -/* 004DB8 800041B8 C4E4002C */ lwc1 $f4, 0x2c($a3) -/* 004DBC 800041BC 8C84C6BC */ lw $a0, %lo(gAlSndPlayerPtr)($a0) -/* 004DC0 800041C0 46040182 */ mul.s $f6, $f0, $f4 -/* 004DC4 800041C4 24180010 */ li $t8, 16 -/* 004DC8 800041C8 A7B80020 */ sh $t8, 0x20($sp) -/* 004DCC 800041CC 27A50020 */ addiu $a1, $sp, 0x20 -/* 004DD0 800041D0 E7A6001C */ swc1 $f6, 0x1c($sp) -/* 004DD4 800041D4 8FB9001C */ lw $t9, 0x1c($sp) -/* 004DD8 800041D8 34068235 */ li $a2, 33333 -/* 004DDC 800041DC AFA70024 */ sw $a3, 0x24($sp) -/* 004DE0 800041E0 24840014 */ addiu $a0, $a0, 0x14 -/* 004DE4 800041E4 0C03246B */ jal alEvtqPostEvent -/* 004DE8 800041E8 AFB90028 */ sw $t9, 0x28($sp) -/* 004DEC 800041EC 8FBF0014 */ lw $ra, 0x14($sp) -/* 004DF0 800041F0 27BD0030 */ addiu $sp, $sp, 0x30 -/* 004DF4 800041F4 03E00008 */ jr $ra -/* 004DF8 800041F8 00000000 */ nop - diff --git a/asm/non_matchings/game_ui/func_800A0BD4.s b/asm/non_matchings/game_ui/func_800A0BD4.s deleted file mode 100644 index c483b6b1..00000000 --- a/asm/non_matchings/game_ui/func_800A0BD4.s +++ /dev/null @@ -1,136 +0,0 @@ -glabel func_800A0BD4 -/* 0A17D4 800A0BD4 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0A17D8 800A0BD8 3C038012 */ lui $v1, %hi(D_80126D74) # $v1, 0x8012 -/* 0A17DC 800A0BDC 24636D74 */ addiu $v1, %lo(D_80126D74) # addiu $v1, $v1, 0x6d74 -/* 0A17E0 800A0BE0 8C620000 */ lw $v0, ($v1) -/* 0A17E4 800A0BE4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0A17E8 800A0BE8 00808825 */ move $s1, $a0 -/* 0A17EC 800A0BEC AFBF002C */ sw $ra, 0x2c($sp) -/* 0A17F0 800A0BF0 AFB40028 */ sw $s4, 0x28($sp) -/* 0A17F4 800A0BF4 AFB30024 */ sw $s3, 0x24($sp) -/* 0A17F8 800A0BF8 AFB20020 */ sw $s2, 0x20($sp) -/* 0A17FC 800A0BFC 1840000D */ blez $v0, .L800A0C34 -/* 0A1800 800A0C00 AFB00018 */ sw $s0, 0x18($sp) -/* 0A1804 800A0C04 00447023 */ subu $t6, $v0, $a0 -/* 0A1808 800A0C08 1DC0000A */ bgtz $t6, .L800A0C34 -/* 0A180C 800A0C0C AC6E0000 */ sw $t6, ($v1) -/* 0A1810 800A0C10 3C058012 */ lui $a1, %hi(gHUDVoiceSoundMask) # $a1, 0x8012 -/* 0A1814 800A0C14 24A56D40 */ addiu $a1, %lo(gHUDVoiceSoundMask) # addiu $a1, $a1, 0x6d40 -/* 0A1818 800A0C18 8CB80000 */ lw $t8, ($a1) -/* 0A181C 800A0C1C AC600000 */ sw $zero, ($v1) -/* 0A1820 800A0C20 17000004 */ bnez $t8, .L800A0C34 -/* 0A1824 800A0C24 3C048012 */ lui $a0, %hi(D_80126D7C) # $a0, 0x8012 -/* 0A1828 800A0C28 94846D7C */ lhu $a0, %lo(D_80126D7C)($a0) -/* 0A182C 800A0C2C 0C000741 */ jal play_sound_global -/* 0A1830 800A0C30 00000000 */ nop -.L800A0C34: -/* 0A1834 800A0C34 3C10800E */ lui $s0, %hi(D_800E2770) # $s0, 0x800e -/* 0A1838 800A0C38 3C13800E */ lui $s3, %hi(gShowCourseDirections) # $s3, 0x800e -/* 0A183C 800A0C3C 26732790 */ addiu $s3, %lo(gShowCourseDirections) # addiu $s3, $s3, 0x2790 -/* 0A1840 800A0C40 26102770 */ addiu $s0, %lo(D_800E2770) # addiu $s0, $s0, 0x2770 -/* 0A1844 800A0C44 2414007F */ li $s4, 127 -/* 0A1848 800A0C48 2412007F */ li $s2, 127 -.L800A0C4C: -/* 0A184C 800A0C4C 92060002 */ lbu $a2, 2($s0) -/* 0A1850 800A0C50 00000000 */ nop -/* 0A1854 800A0C54 10C0002C */ beqz $a2, .L800A0D08 -/* 0A1858 800A0C58 00000000 */ nop -/* 0A185C 800A0C5C 8E050004 */ lw $a1, 4($s0) -/* 0A1860 800A0C60 00000000 */ nop -/* 0A1864 800A0C64 14A00007 */ bnez $a1, .L800A0C84 -/* 0A1868 800A0C68 00000000 */ nop -/* 0A186C 800A0C6C 96040000 */ lhu $a0, ($s0) -/* 0A1870 800A0C70 0C000741 */ jal play_sound_global -/* 0A1874 800A0C74 26050004 */ addiu $a1, $s0, 4 -/* 0A1878 800A0C78 92060002 */ lbu $a2, 2($s0) -/* 0A187C 800A0C7C 8E050004 */ lw $a1, 4($s0) -/* 0A1880 800A0C80 00000000 */ nop -.L800A0C84: -/* 0A1884 800A0C84 96040000 */ lhu $a0, ($s0) -/* 0A1888 800A0C88 0C0007EE */ jal func_80001FB8 -/* 0A188C 800A0C8C 00000000 */ nop -/* 0A1890 800A0C90 82040003 */ lb $a0, 3($s0) -/* 0A1894 800A0C94 00000000 */ nop -/* 0A1898 800A0C98 1880000D */ blez $a0, .L800A0CD0 -/* 0A189C 800A0C9C 00000000 */ nop -/* 0A18A0 800A0CA0 00910019 */ multu $a0, $s1 -/* 0A18A4 800A0CA4 92030002 */ lbu $v1, 2($s0) -/* 0A18A8 800A0CA8 00001012 */ mflo $v0 -/* 0A18AC 800A0CAC 0242C823 */ subu $t9, $s2, $v0 -/* 0A18B0 800A0CB0 0323082A */ slt $at, $t9, $v1 -/* 0A18B4 800A0CB4 14200003 */ bnez $at, .L800A0CC4 -/* 0A18B8 800A0CB8 00624021 */ addu $t0, $v1, $v0 -/* 0A18BC 800A0CBC 10000019 */ b .L800A0D24 -/* 0A18C0 800A0CC0 A2080002 */ sb $t0, 2($s0) -.L800A0CC4: -/* 0A18C4 800A0CC4 A2000003 */ sb $zero, 3($s0) -/* 0A18C8 800A0CC8 10000016 */ b .L800A0D24 -/* 0A18CC 800A0CCC A2140002 */ sb $s4, 2($s0) -.L800A0CD0: -/* 0A18D0 800A0CD0 04810014 */ bgez $a0, .L800A0D24 -/* 0A18D4 800A0CD4 00000000 */ nop -/* 0A18D8 800A0CD8 00910019 */ multu $a0, $s1 -/* 0A18DC 800A0CDC 92030002 */ lbu $v1, 2($s0) -/* 0A18E0 800A0CE0 00001012 */ mflo $v0 -/* 0A18E4 800A0CE4 00024823 */ negu $t1, $v0 -/* 0A18E8 800A0CE8 0123082A */ slt $at, $t1, $v1 -/* 0A18EC 800A0CEC 10200003 */ beqz $at, .L800A0CFC -/* 0A18F0 800A0CF0 00625021 */ addu $t2, $v1, $v0 -/* 0A18F4 800A0CF4 1000000B */ b .L800A0D24 -/* 0A18F8 800A0CF8 A20A0002 */ sb $t2, 2($s0) -.L800A0CFC: -/* 0A18FC 800A0CFC A2000003 */ sb $zero, 3($s0) -/* 0A1900 800A0D00 10000008 */ b .L800A0D24 -/* 0A1904 800A0D04 A2000002 */ sb $zero, 2($s0) -.L800A0D08: -/* 0A1908 800A0D08 8E050004 */ lw $a1, 4($s0) -/* 0A190C 800A0D0C 00000000 */ nop -/* 0A1910 800A0D10 10A00004 */ beqz $a1, .L800A0D24 -/* 0A1914 800A0D14 00000000 */ nop -/* 0A1918 800A0D18 0C001223 */ jal func_8000488C -/* 0A191C 800A0D1C 00A02025 */ move $a0, $a1 -/* 0A1920 800A0D20 AE000004 */ sw $zero, 4($s0) -.L800A0D24: -/* 0A1924 800A0D24 26100010 */ addiu $s0, $s0, 0x10 -/* 0A1928 800A0D28 1613FFC8 */ bne $s0, $s3, .L800A0C4C -/* 0A192C 800A0D2C 00000000 */ nop -/* 0A1930 800A0D30 3C038012 */ lui $v1, %hi(D_80126D70) # $v1, 0x8012 -/* 0A1934 800A0D34 24636D70 */ addiu $v1, %lo(D_80126D70) # addiu $v1, $v1, 0x6d70 -/* 0A1938 800A0D38 906B0000 */ lbu $t3, ($v1) -/* 0A193C 800A0D3C 3C0C800E */ lui $t4, %hi(D_800E2770+2) # $t4, 0x800e -/* 0A1940 800A0D40 11600018 */ beqz $t3, .L800A0DA4 -/* 0A1944 800A0D44 8FBF002C */ lw $ra, 0x2c($sp) -/* 0A1948 800A0D48 918C2772 */ lbu $t4, %lo(D_800E2770+2)($t4) -/* 0A194C 800A0D4C 3C028012 */ lui $v0, %hi(gNumActivePlayers) # $v0, 0x8012 -/* 0A1950 800A0D50 15800014 */ bnez $t4, .L800A0DA4 -/* 0A1954 800A0D54 8FBF002C */ lw $ra, 0x2c($sp) -/* 0A1958 800A0D58 A0600000 */ sb $zero, ($v1) -/* 0A195C 800A0D5C 90426D37 */ lbu $v0, %lo(gNumActivePlayers)($v0) -/* 0A1960 800A0D60 24010001 */ li $at, 1 -/* 0A1964 800A0D64 14410006 */ bne $v0, $at, .L800A0D80 -/* 0A1968 800A0D68 24010002 */ li $at, 2 -/* 0A196C 800A0D6C 0C000C63 */ jal set_sound_channel_count -/* 0A1970 800A0D70 24040008 */ li $a0, 8 -/* 0A1974 800A0D74 1000000B */ b .L800A0DA4 -/* 0A1978 800A0D78 8FBF002C */ lw $ra, 0x2c($sp) -/* 0A197C 800A0D7C 24010002 */ li $at, 2 -.L800A0D80: -/* 0A1980 800A0D80 14410005 */ bne $v0, $at, .L800A0D98 -/* 0A1984 800A0D84 00000000 */ nop -/* 0A1988 800A0D88 0C000C63 */ jal set_sound_channel_count -/* 0A198C 800A0D8C 2404000C */ li $a0, 12 -/* 0A1990 800A0D90 10000004 */ b .L800A0DA4 -/* 0A1994 800A0D94 8FBF002C */ lw $ra, 0x2c($sp) -.L800A0D98: -/* 0A1998 800A0D98 0C000C63 */ jal set_sound_channel_count -/* 0A199C 800A0D9C 24040010 */ li $a0, 16 -/* 0A19A0 800A0DA0 8FBF002C */ lw $ra, 0x2c($sp) -.L800A0DA4: -/* 0A19A4 800A0DA4 8FB00018 */ lw $s0, 0x18($sp) -/* 0A19A8 800A0DA8 8FB1001C */ lw $s1, 0x1c($sp) -/* 0A19AC 800A0DAC 8FB20020 */ lw $s2, 0x20($sp) -/* 0A19B0 800A0DB0 8FB30024 */ lw $s3, 0x24($sp) -/* 0A19B4 800A0DB4 8FB40028 */ lw $s4, 0x28($sp) -/* 0A19B8 800A0DB8 03E00008 */ jr $ra -/* 0A19BC 800A0DBC 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/game_ui/func_800A47A0.s b/asm/non_matchings/game_ui/func_800A47A0.s deleted file mode 100644 index 537616d1..00000000 --- a/asm/non_matchings/game_ui/func_800A47A0.s +++ /dev/null @@ -1,126 +0,0 @@ -glabel func_800A47A0 -/* 0A53A0 800A47A0 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 0A53A4 800A47A4 AFBE0038 */ sw $fp, 0x38($sp) -/* 0A53A8 800A47A8 444EF800 */ cfc1 $t6, $31 -/* 0A53AC 800A47AC 3C1E8012 */ lui $fp, %hi(gCurrentHud) # $fp, 0x8012 -/* 0A53B0 800A47B0 27DE6CDC */ addiu $fp, %lo(gCurrentHud) # addiu $fp, $fp, 0x6cdc -/* 0A53B4 800A47B4 AFB1001C */ sw $s1, 0x1c($sp) -/* 0A53B8 800A47B8 8FD10000 */ lw $s1, ($fp) -/* 0A53BC 800A47BC 35C10003 */ ori $at, $t6, 3 -/* 0A53C0 800A47C0 AFBF003C */ sw $ra, 0x3c($sp) -/* 0A53C4 800A47C4 AFB70034 */ sw $s7, 0x34($sp) -/* 0A53C8 800A47C8 AFB60030 */ sw $s6, 0x30($sp) -/* 0A53CC 800A47CC AFB5002C */ sw $s5, 0x2c($sp) -/* 0A53D0 800A47D0 AFB40028 */ sw $s4, 0x28($sp) -/* 0A53D4 800A47D4 AFB30024 */ sw $s3, 0x24($sp) -/* 0A53D8 800A47D8 AFB20020 */ sw $s2, 0x20($sp) -/* 0A53DC 800A47DC AFB00018 */ sw $s0, 0x18($sp) -/* 0A53E0 800A47E0 AFA5004C */ sw $a1, 0x4c($sp) -/* 0A53E4 800A47E4 38210002 */ xori $at, $at, 2 -/* 0A53E8 800A47E8 44C1F800 */ ctc1 $at, $31 -/* 0A53EC 800A47EC C62405D0 */ lwc1 $f4, 0x5d0($s1) -/* 0A53F0 800A47F0 3C128080 */ lui $s2, (0x80808080 >> 16) # lui $s2, 0x8080 -/* 0A53F4 800A47F4 460021A4 */ cvt.w.s $f6, $f4 -/* 0A53F8 800A47F8 3C138012 */ lui $s3, %hi(gHUDCurrDisplayList) # $s3, 0x8012 -/* 0A53FC 800A47FC 440F3000 */ mfc1 $t7, $f6 -/* 0A5400 800A4800 44CEF800 */ ctc1 $t6, $31 -/* 0A5404 800A4804 448F4000 */ mtc1 $t7, $f8 -/* 0A5408 800A4808 3C148012 */ lui $s4, %hi(gHUDCurrMatrix) # $s4, 0x8012 -/* 0A540C 800A480C 468042A0 */ cvt.s.w $f10, $f8 -/* 0A5410 800A4810 3C158012 */ lui $s5, %hi(gHUDCurrVertex) # $s5, 0x8012 -/* 0A5414 800A4814 0080B025 */ move $s6, $a0 -/* 0A5418 800A4818 4459F800 */ cfc1 $t9, $31 -/* 0A541C 800A481C E62A05D0 */ swc1 $f10, 0x5d0($s1) -/* 0A5420 800A4820 8FD80000 */ lw $t8, ($fp) -/* 0A5424 800A4824 37210003 */ ori $at, $t9, 3 -/* 0A5428 800A4828 38210002 */ xori $at, $at, 2 -/* 0A542C 800A482C 44C1F800 */ ctc1 $at, $31 -/* 0A5430 800A4830 C71005D0 */ lwc1 $f16, 0x5d0($t8) -/* 0A5434 800A4834 26B56D04 */ addiu $s5, %lo(gHUDCurrVertex) # addiu $s5, $s5, 0x6d04 -/* 0A5438 800A4838 460084A4 */ cvt.w.s $f18, $f16 -/* 0A543C 800A483C 26946D00 */ addiu $s4, %lo(gHUDCurrMatrix) # addiu $s4, $s4, 0x6d00 -/* 0A5440 800A4840 44089000 */ mfc1 $t0, $f18 -/* 0A5444 800A4844 44D9F800 */ ctc1 $t9, $31 -/* 0A5448 800A4848 26736CFC */ addiu $s3, %lo(gHUDCurrDisplayList) # addiu $s3, $s3, 0x6cfc -/* 0A544C 800A484C 36528080 */ ori $s2, (0x80808080 & 0xFFFF) # ori $s2, $s2, 0x8080 -/* 0A5450 800A4850 00008025 */ move $s0, $zero -/* 0A5454 800A4854 24170008 */ li $s7, 8 -/* 0A5458 800A4858 AFA80040 */ sw $t0, 0x40($sp) -.L800A485C: -/* 0A545C 800A485C 82C90202 */ lb $t1, 0x202($s6) -/* 0A5460 800A4860 8FD10000 */ lw $s1, ($fp) -/* 0A5464 800A4864 0209082A */ slt $at, $s0, $t1 -/* 0A5468 800A4868 14200003 */ bnez $at, .L800A4878 -/* 0A546C 800A486C 02602025 */ move $a0, $s3 -/* 0A5470 800A4870 3C01800E */ lui $at, %hi(D_800E2834) # $at, 0x800e -/* 0A5474 800A4874 AC322834 */ sw $s2, %lo(D_800E2834)($at) -.L800A4878: -/* 0A5478 800A4878 02802825 */ move $a1, $s4 -/* 0A547C 800A487C 02A03025 */ move $a2, $s5 -/* 0A5480 800A4880 0C02A980 */ jal func_800AA600 -/* 0A5484 800A4884 262705C0 */ addiu $a3, $s1, 0x5c0 -/* 0A5488 800A4888 8FD10000 */ lw $s1, ($fp) -/* 0A548C 800A488C 26100001 */ addiu $s0, $s0, 1 -/* 0A5490 800A4890 822A05DC */ lb $t2, 0x5dc($s1) -/* 0A5494 800A4894 C62405D0 */ lwc1 $f4, 0x5d0($s1) -/* 0A5498 800A4898 448A3000 */ mtc1 $t2, $f6 -/* 0A549C 800A489C 00000000 */ nop -/* 0A54A0 800A48A0 46803220 */ cvt.s.w $f8, $f6 -/* 0A54A4 800A48A4 46082281 */ sub.s $f10, $f4, $f8 -/* 0A54A8 800A48A8 1617FFEC */ bne $s0, $s7, .L800A485C -/* 0A54AC 800A48AC E62A05D0 */ swc1 $f10, 0x5d0($s1) -/* 0A54B0 800A48B0 82CB0202 */ lb $t3, 0x202($s6) -/* 0A54B4 800A48B4 00000000 */ nop -/* 0A54B8 800A48B8 16EB001D */ bne $s7, $t3, .L800A4930 -/* 0A54BC 800A48BC 8FA80040 */ lw $t0, 0x40($sp) -/* 0A54C0 800A48C0 8FD10000 */ lw $s1, ($fp) -/* 0A54C4 800A48C4 8FAC004C */ lw $t4, 0x4c($sp) -/* 0A54C8 800A48C8 822205DB */ lb $v0, 0x5db($s1) -/* 0A54CC 800A48CC 00000000 */ nop -/* 0A54D0 800A48D0 2841001E */ slti $at, $v0, 0x1e -/* 0A54D4 800A48D4 10200004 */ beqz $at, .L800A48E8 -/* 0A54D8 800A48D8 004C6821 */ addu $t5, $v0, $t4 -/* 0A54DC 800A48DC A22D05DB */ sb $t5, 0x5db($s1) -/* 0A54E0 800A48E0 8FD10000 */ lw $s1, ($fp) -/* 0A54E4 800A48E4 00000000 */ nop -.L800A48E8: -/* 0A54E8 800A48E8 822E05DA */ lb $t6, 0x5da($s1) -/* 0A54EC 800A48EC 00000000 */ nop -/* 0A54F0 800A48F0 15C0000F */ bnez $t6, .L800A4930 -/* 0A54F4 800A48F4 8FA80040 */ lw $t0, 0x40($sp) -/* 0A54F8 800A48F8 822F05DB */ lb $t7, 0x5db($s1) -/* 0A54FC 800A48FC 3C058012 */ lui $a1, %hi(gHUDVoiceSoundMask) # $a1, 0x8012 -/* 0A5500 800A4900 29E1001E */ slti $at, $t7, 0x1e -/* 0A5504 800A4904 14200009 */ bnez $at, .L800A492C -/* 0A5508 800A4908 24A56D40 */ addiu $a1, %lo(gHUDVoiceSoundMask) # addiu $a1, $a1, 0x6d40 -/* 0A550C 800A490C 24180001 */ li $t8, 1 -/* 0A5510 800A4910 A23805DA */ sb $t8, 0x5da($s1) -/* 0A5514 800A4914 8CB90000 */ lw $t9, ($a1) -/* 0A5518 800A4918 00000000 */ nop -/* 0A551C 800A491C 17200004 */ bnez $t9, .L800A4930 -/* 0A5520 800A4920 8FA80040 */ lw $t0, 0x40($sp) -/* 0A5524 800A4924 0C000741 */ jal play_sound_global -/* 0A5528 800A4928 24040147 */ li $a0, 327 -.L800A492C: -/* 0A552C 800A492C 8FA80040 */ lw $t0, 0x40($sp) -.L800A4930: -/* 0A5530 800A4930 8FC90000 */ lw $t1, ($fp) -/* 0A5534 800A4934 44888000 */ mtc1 $t0, $f16 -/* 0A5538 800A4938 240AFFFE */ li $t2, -2 -/* 0A553C 800A493C 468084A0 */ cvt.s.w $f18, $f16 -/* 0A5540 800A4940 3C01800E */ lui $at, %hi(D_800E2834) # $at, 0x800e -/* 0A5544 800A4944 E53205D0 */ swc1 $f18, 0x5d0($t1) -/* 0A5548 800A4948 8FBF003C */ lw $ra, 0x3c($sp) -/* 0A554C 800A494C 8FBE0038 */ lw $fp, 0x38($sp) -/* 0A5550 800A4950 8FB70034 */ lw $s7, 0x34($sp) -/* 0A5554 800A4954 8FB60030 */ lw $s6, 0x30($sp) -/* 0A5558 800A4958 8FB5002C */ lw $s5, 0x2c($sp) -/* 0A555C 800A495C 8FB40028 */ lw $s4, 0x28($sp) -/* 0A5560 800A4960 8FB30024 */ lw $s3, 0x24($sp) -/* 0A5564 800A4964 8FB20020 */ lw $s2, 0x20($sp) -/* 0A5568 800A4968 8FB1001C */ lw $s1, 0x1c($sp) -/* 0A556C 800A496C 8FB00018 */ lw $s0, 0x18($sp) -/* 0A5570 800A4970 AC2A2834 */ sw $t2, %lo(D_800E2834)($at) -/* 0A5574 800A4974 03E00008 */ jr $ra -/* 0A5578 800A4978 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/game_ui/func_800A7A60.s b/asm/non_matchings/game_ui/func_800A7A60.s deleted file mode 100644 index a5b18796..00000000 --- a/asm/non_matchings/game_ui/func_800A7A60.s +++ /dev/null @@ -1,70 +0,0 @@ -glabel func_800A7A60 -/* 0A8660 800A7A60 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0A8664 800A7A64 AFBF001C */ sw $ra, 0x1c($sp) -/* 0A8668 800A7A68 8C830064 */ lw $v1, 0x64($a0) -/* 0A866C 800A7A6C 00000000 */ nop -/* 0A8670 800A7A70 8C6E0140 */ lw $t6, 0x140($v1) -/* 0A8674 800A7A74 00000000 */ nop -/* 0A8678 800A7A78 11C00038 */ beqz $t6, .L800A7B5C -/* 0A867C 800A7A7C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0A8680 800A7A80 0C019888 */ jal get_current_viewport -/* 0A8684 800A7A84 AFA30024 */ sw $v1, 0x24($sp) -/* 0A8688 800A7A88 8FA30024 */ lw $v1, 0x24($sp) -/* 0A868C 800A7A8C 3C078012 */ lui $a3, %hi(gCurrentHud) # $a3, 0x8012 -/* 0A8690 800A7A90 846F0000 */ lh $t7, ($v1) -/* 0A8694 800A7A94 00000000 */ nop -/* 0A8698 800A7A98 144F0030 */ bne $v0, $t7, .L800A7B5C -/* 0A869C 800A7A9C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0A86A0 800A7AA0 8C780140 */ lw $t8, 0x140($v1) -/* 0A86A4 800A7AA4 8CE76CDC */ lw $a3, %lo(gCurrentHud)($a3) -/* 0A86A8 800A7AA8 C704000C */ lwc1 $f4, 0xc($t8) -/* 0A86AC 800A7AAC 84E60226 */ lh $a2, 0x226($a3) -/* 0A86B0 800A7AB0 E4E4022C */ swc1 $f4, 0x22c($a3) -/* 0A86B4 800A7AB4 8C790140 */ lw $t9, 0x140($v1) -/* 0A86B8 800A7AB8 3C098012 */ lui $t1, %hi(gAssetHudElements) # $t1, 0x8012 -/* 0A86BC 800A7ABC C7260010 */ lwc1 $f6, 0x10($t9) -/* 0A86C0 800A7AC0 00065080 */ sll $t2, $a2, 2 -/* 0A86C4 800A7AC4 E4E60230 */ swc1 $f6, 0x230($a3) -/* 0A86C8 800A7AC8 8C680140 */ lw $t0, 0x140($v1) -/* 0A86CC 800A7ACC 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A86D0 800A7AD0 C5080014 */ lwc1 $f8, 0x14($t0) -/* 0A86D4 800A7AD4 3C0C8012 */ lui $t4, %hi(gAssetHudElementStaleCounter) # $t4, 0x8012 -/* 0A86D8 800A7AD8 E4E80234 */ swc1 $f8, 0x234($a3) -/* 0A86DC 800A7ADC 8D296CF4 */ lw $t1, %lo(gAssetHudElements)($t1) -/* 0A86E0 800A7AE0 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A86E4 800A7AE4 012A5821 */ addu $t3, $t1, $t2 -/* 0A86E8 800A7AE8 8D620000 */ lw $v0, ($t3) -/* 0A86EC 800A7AEC 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A86F0 800A7AF0 10400019 */ beqz $v0, .L800A7B58 -/* 0A86F4 800A7AF4 24E70220 */ addiu $a3, $a3, 0x220 -/* 0A86F8 800A7AF8 8D8C6CD8 */ lw $t4, %lo(gAssetHudElementStaleCounter)($t4) -/* 0A86FC 800A7AFC 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A8700 800A7B00 01866821 */ addu $t5, $t4, $a2 -/* 0A8704 800A7B04 A1A00000 */ sb $zero, ($t5) -/* 0A8708 800A7B08 AFA70028 */ sw $a3, 0x28($sp) -/* 0A870C 800A7B0C 0C019B37 */ jal func_80066CDC -/* 0A8710 800A7B10 AFA2002C */ sw $v0, 0x2c($sp) -/* 0A8714 800A7B14 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A8718 800A7B18 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A871C 800A7B1C 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A8720 800A7B20 0C01A102 */ jal func_80068408 -/* 0A8724 800A7B24 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A8728 800A7B28 8FA2002C */ lw $v0, 0x2c($sp) -/* 0A872C 800A7B2C 8FA70028 */ lw $a3, 0x28($sp) -/* 0A8730 800A7B30 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A8734 800A7B34 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A8738 800A7B38 3C068012 */ lui $a2, %hi(gHUDCurrVertex) # $a2, 0x8012 -/* 0A873C 800A7B3C 240E0100 */ li $t6, 256 -/* 0A8740 800A7B40 AFAE0014 */ sw $t6, 0x14($sp) -/* 0A8744 800A7B44 24C66D04 */ addiu $a2, %lo(gHUDCurrVertex) # addiu $a2, $a2, 0x6d04 -/* 0A8748 800A7B48 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A874C 800A7B4C 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A8750 800A7B50 0C01A145 */ jal render_sprite_billboard -/* 0A8754 800A7B54 AFA20010 */ sw $v0, 0x10($sp) -.L800A7B58: -/* 0A8758 800A7B58 8FBF001C */ lw $ra, 0x1c($sp) -.L800A7B5C: -/* 0A875C 800A7B5C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0A8760 800A7B60 03E00008 */ jr $ra -/* 0A8764 800A7B64 00000000 */ nop - diff --git a/asm/non_matchings/menu/menu_options_loop.s b/asm/non_matchings/menu/menu_options_loop.s deleted file mode 100644 index 2f6f7d59..00000000 --- a/asm/non_matchings/menu/menu_options_loop.s +++ /dev/null @@ -1,270 +0,0 @@ -glabel menu_options_loop -/* 084F5C 8008435C 3C038012 */ lui $v1, %hi(gOptionBlinkTimer) # $v1, 0x8012 -/* 084F60 80084360 246363BC */ addiu $v1, %lo(gOptionBlinkTimer) # addiu $v1, $v1, 0x63bc -/* 084F64 80084364 8C6E0000 */ lw $t6, ($v1) -/* 084F68 80084368 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 084F6C 8008436C 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -/* 084F70 80084370 8D220000 */ lw $v0, ($t1) -/* 084F74 80084374 01C47821 */ addu $t7, $t6, $a0 -/* 084F78 80084378 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 084F7C 8008437C 31F8003F */ andi $t8, $t7, 0x3f -/* 084F80 80084380 AFBF0014 */ sw $ra, 0x14($sp) -/* 084F84 80084384 10400009 */ beqz $v0, .L800843AC -/* 084F88 80084388 AC780000 */ sw $t8, ($v1) -/* 084F8C 8008438C 18400005 */ blez $v0, .L800843A4 -/* 084F90 80084390 00445023 */ subu $t2, $v0, $a0 -/* 084F94 80084394 0044C821 */ addu $t9, $v0, $a0 -/* 084F98 80084398 AD390000 */ sw $t9, ($t1) -/* 084F9C 8008439C 10000003 */ b .L800843AC -/* 084FA0 800843A0 03201025 */ move $v0, $t9 -.L800843A4: -/* 084FA4 800843A4 AD2A0000 */ sw $t2, ($t1) -/* 084FA8 800843A8 01401025 */ move $v0, $t2 -.L800843AC: -/* 084FAC 800843AC 2841FFED */ slti $at, $v0, -0x13 -/* 084FB0 800843B0 14200007 */ bnez $at, .L800843D0 -/* 084FB4 800843B4 28410023 */ slti $at, $v0, 0x23 -/* 084FB8 800843B8 10200005 */ beqz $at, .L800843D0 -/* 084FBC 800843BC 00000000 */ nop -/* 084FC0 800843C0 0C02106E */ jal render_options_menu_ui -/* 084FC4 800843C4 00000000 */ nop -/* 084FC8 800843C8 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 084FCC 800843CC 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L800843D0: -/* 084FD0 800843D0 3C0B8012 */ lui $t3, %hi(gIgnorePlayerInputTime) # $t3, 0x8012 -/* 084FD4 800843D4 8D6B63C4 */ lw $t3, %lo(gIgnorePlayerInputTime)($t3) -/* 084FD8 800843D8 00003025 */ move $a2, $zero -/* 084FDC 800843DC 00003825 */ move $a3, $zero -/* 084FE0 800843E0 15600021 */ bnez $t3, .L80084468 -/* 084FE4 800843E4 00004025 */ move $t0, $zero -/* 084FE8 800843E8 8D2C0000 */ lw $t4, ($t1) -/* 084FEC 800843EC 00002025 */ move $a0, $zero -/* 084FF0 800843F0 1580001D */ bnez $t4, .L80084468 -/* 084FF4 800843F4 3C038012 */ lui $v1, %hi(gControllersXAxisDirection) # $v1, 0x8012 -/* 084FF8 800843F8 3C058012 */ lui $a1, %hi(gControllersYAxisDirection) # $a1, 0x8012 -/* 084FFC 800843FC 24A56464 */ addiu $a1, %lo(gControllersYAxisDirection) # addiu $a1, $a1, 0x6464 -/* 085000 80084400 2463645C */ addiu $v1, %lo(gControllersXAxisDirection) # addiu $v1, $v1, 0x645c -.L80084404: -/* 085004 80084404 AFA30020 */ sw $v1, 0x20($sp) -/* 085008 80084408 AFA40040 */ sw $a0, 0x40($sp) -/* 08500C 8008440C AFA5001C */ sw $a1, 0x1c($sp) -/* 085010 80084410 AFA60044 */ sw $a2, 0x44($sp) -/* 085014 80084414 AFA70038 */ sw $a3, 0x38($sp) -/* 085018 80084418 0C01A955 */ jal get_buttons_pressed_from_player -/* 08501C 8008441C AFA80034 */ sw $t0, 0x34($sp) -/* 085020 80084420 8FA30020 */ lw $v1, 0x20($sp) -/* 085024 80084424 8FA5001C */ lw $a1, 0x1c($sp) -/* 085028 80084428 8FA40040 */ lw $a0, 0x40($sp) -/* 08502C 8008442C 8FA60044 */ lw $a2, 0x44($sp) -/* 085030 80084430 8FA70038 */ lw $a3, 0x38($sp) -/* 085034 80084434 8FA80034 */ lw $t0, 0x34($sp) -/* 085038 80084438 806D0000 */ lb $t5, ($v1) -/* 08503C 8008443C 80AE0000 */ lb $t6, ($a1) -/* 085040 80084440 24010004 */ li $at, 4 -/* 085044 80084444 24840001 */ addiu $a0, $a0, 1 -/* 085048 80084448 24630001 */ addiu $v1, $v1, 1 -/* 08504C 8008444C 24A50001 */ addiu $a1, $a1, 1 -/* 085050 80084450 00C23025 */ or $a2, $a2, $v0 -/* 085054 80084454 00ED3821 */ addu $a3, $a3, $t5 -/* 085058 80084458 1481FFEA */ bne $a0, $at, .L80084404 -/* 08505C 8008445C 010E4021 */ addu $t0, $t0, $t6 -/* 085060 80084460 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 085064 80084464 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L80084468: -/* 085068 80084468 30CF4000 */ andi $t7, $a2, 0x4000 -/* 08506C 8008446C 15E00008 */ bnez $t7, .L80084490 -/* 085070 80084470 30C39000 */ andi $v1, $a2, 0x9000 -/* 085074 80084474 10600016 */ beqz $v1, .L800844D0 -/* 085078 80084478 3C06800E */ lui $a2, %hi(D_800DF460) # $a2, 0x800e -/* 08507C 8008447C 24C6F460 */ addiu $a2, %lo(D_800DF460) # addiu $a2, $a2, -0xba0 -/* 085080 80084480 8CD80000 */ lw $t8, ($a2) -/* 085084 80084484 24010005 */ li $at, 5 -/* 085088 80084488 17010011 */ bne $t8, $at, .L800844D0 -/* 08508C 8008448C 00000000 */ nop -.L80084490: -/* 085090 80084490 0C000326 */ jal set_music_fade_timer -/* 085094 80084494 2404FF80 */ li $a0, -128 -/* 085098 80084498 2419FFFF */ li $t9, -1 -/* 08509C 8008449C 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 0850A0 800844A0 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 0850A4 800844A4 AC39F47C */ sw $t9, %lo(gMenuDelay)($at) -/* 0850A8 800844A8 0C030076 */ jal transition_begin -/* 0850AC 800844AC 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 0850B0 800844B0 24040241 */ li $a0, 577 -/* 0850B4 800844B4 0C000741 */ jal play_sound_global -/* 0850B8 800844B8 00002825 */ move $a1, $zero -/* 0850BC 800844BC 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 0850C0 800844C0 3C06800E */ lui $a2, %hi(D_800DF460) # $a2, 0x800e -/* 0850C4 800844C4 24C6F460 */ addiu $a2, %lo(D_800DF460) # addiu $a2, $a2, -0xba0 -/* 0850C8 800844C8 1000006B */ b .L80084678 -/* 0850CC 800844CC 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L800844D0: -/* 0850D0 800844D0 3C06800E */ lui $a2, %hi(D_800DF460) # $a2, 0x800e -/* 0850D4 800844D4 24C6F460 */ addiu $a2, %lo(D_800DF460) # addiu $a2, $a2, -0xba0 -/* 0850D8 800844D8 8CC20000 */ lw $v0, ($a2) -/* 0850DC 800844DC 1060000C */ beqz $v1, .L80084510 -/* 0850E0 800844E0 28410002 */ slti $at, $v0, 2 -/* 0850E4 800844E4 1420000A */ bnez $at, .L80084510 -/* 0850E8 800844E8 240A001F */ li $t2, 31 -/* 0850EC 800844EC AD2A0000 */ sw $t2, ($t1) -/* 0850F0 800844F0 240400EF */ li $a0, 239 -/* 0850F4 800844F4 0C000741 */ jal play_sound_global -/* 0850F8 800844F8 00002825 */ move $a1, $zero -/* 0850FC 800844FC 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 085100 80084500 3C06800E */ lui $a2, %hi(D_800DF460) # $a2, 0x800e -/* 085104 80084504 24C6F460 */ addiu $a2, %lo(D_800DF460) # addiu $a2, $a2, -0xba0 -/* 085108 80084508 1000005B */ b .L80084678 -/* 08510C 8008450C 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L80084510: -/* 085110 80084510 14400018 */ bnez $v0, .L80084574 -/* 085114 80084514 24010001 */ li $at, 1 -/* 085118 80084518 10E00016 */ beqz $a3, .L80084574 -/* 08511C 8008451C 00000000 */ nop -/* 085120 80084520 0C027AC8 */ jal get_language -/* 085124 80084524 00000000 */ nop -/* 085128 80084528 000267C3 */ sra $t4, $v0, 0x1f -/* 08512C 8008452C 15800007 */ bnez $t4, .L8008454C -/* 085130 80084530 00000000 */ nop -/* 085134 80084534 14400005 */ bnez $v0, .L8008454C -/* 085138 80084538 00000000 */ nop -/* 08513C 8008453C 0C027AE5 */ jal set_language -/* 085140 80084540 24040002 */ li $a0, 2 -/* 085144 80084544 10000004 */ b .L80084558 -/* 085148 80084548 240400EB */ li $a0, 235 -.L8008454C: -/* 08514C 8008454C 0C027AE5 */ jal set_language -/* 085150 80084550 00002025 */ move $a0, $zero -/* 085154 80084554 240400EB */ li $a0, 235 -.L80084558: -/* 085158 80084558 0C000741 */ jal play_sound_global -/* 08515C 8008455C 00002825 */ move $a1, $zero -/* 085160 80084560 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 085164 80084564 3C06800E */ lui $a2, %hi(D_800DF460) # $a2, 0x800e -/* 085168 80084568 24C6F460 */ addiu $a2, %lo(D_800DF460) # addiu $a2, $a2, -0xba0 -/* 08516C 8008456C 10000042 */ b .L80084678 -/* 085170 80084570 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L80084574: -/* 085174 80084574 14410028 */ bne $v0, $at, .L80084618 -/* 085178 80084578 00000000 */ nop -/* 08517C 8008457C 10E00026 */ beqz $a3, .L80084618 -/* 085180 80084580 3C0F8012 */ lui $t7, %hi(sEepromSettings+4) # $t7, 0x8012 -/* 085184 80084584 8DEF644C */ lw $t7, %lo(sEepromSettings+4)($t7) -/* 085188 80084588 3C010200 */ lui $at, 0x200 -/* 08518C 8008458C 01E1C824 */ and $t9, $t7, $at -/* 085190 80084590 1320000F */ beqz $t9, .L800845D0 -/* 085194 80084594 240400EB */ li $a0, 235 -/* 085198 80084598 240400EB */ li $a0, 235 -/* 08519C 8008459C 0C000741 */ jal play_sound_global -/* 0851A0 800845A0 00002825 */ move $a1, $zero -/* 0851A4 800845A4 24040000 */ li $a0, 0 -/* 0851A8 800845A8 0C027AAF */ jal unset_eeprom_settings_value -/* 0851AC 800845AC 3C050200 */ lui $a1, 0x200 -/* 0851B0 800845B0 0C030ABD */ jal set_subtitles -/* 0851B4 800845B4 00002025 */ move $a0, $zero -/* 0851B8 800845B8 3C0B800E */ lui $t3, %hi(gMenuText) # $t3, 0x800e -/* 0851BC 800845BC 8D6BF4A0 */ lw $t3, %lo(gMenuText)($t3) -/* 0851C0 800845C0 3C01800E */ lui $at, %hi(gOptionMenuStrings+4) # $at, 0x800e -/* 0851C4 800845C4 8D6A02DC */ lw $t2, 0x2dc($t3) -/* 0851C8 800845C8 1000000E */ b .L80084604 -/* 0851CC 800845CC AC2AFA14 */ sw $t2, %lo(gOptionMenuStrings+4)($at) -.L800845D0: -/* 0851D0 800845D0 0C000741 */ jal play_sound_global -/* 0851D4 800845D4 00002825 */ move $a1, $zero -/* 0851D8 800845D8 24040000 */ li $a0, 0 -/* 0851DC 800845DC 0C027A9E */ jal set_eeprom_settings_value -/* 0851E0 800845E0 3C050200 */ lui $a1, 0x200 -/* 0851E4 800845E4 0C030ABD */ jal set_subtitles -/* 0851E8 800845E8 24040001 */ li $a0, 1 -/* 0851EC 800845EC 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e -/* 0851F0 800845F0 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) -/* 0851F4 800845F4 3C01800E */ lui $at, %hi(gOptionMenuStrings+4) # $at, 0x800e -/* 0851F8 800845F8 8D8D02D8 */ lw $t5, 0x2d8($t4) -/* 0851FC 800845FC 00000000 */ nop -/* 085200 80084600 AC2DFA14 */ sw $t5, %lo(gOptionMenuStrings+4)($at) -.L80084604: -/* 085204 80084604 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 085208 80084608 3C06800E */ lui $a2, %hi(D_800DF460) # $a2, 0x800e -/* 08520C 8008460C 24C6F460 */ addiu $a2, %lo(D_800DF460) # addiu $a2, $a2, -0xba0 -/* 085210 80084610 10000019 */ b .L80084678 -/* 085214 80084614 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L80084618: -/* 085218 80084618 05010008 */ bgez $t0, .L8008463C -/* 08521C 8008461C 00401825 */ move $v1, $v0 -/* 085220 80084620 244E0001 */ addiu $t6, $v0, 1 -/* 085224 80084624 29C10006 */ slti $at, $t6, 6 -/* 085228 80084628 ACCE0000 */ sw $t6, ($a2) -/* 08522C 8008462C 14200003 */ bnez $at, .L8008463C -/* 085230 80084630 01C01025 */ move $v0, $t6 -/* 085234 80084634 24020005 */ li $v0, 5 -/* 085238 80084638 ACC20000 */ sw $v0, ($a2) -.L8008463C: -/* 08523C 8008463C 19000006 */ blez $t0, .L80084658 -/* 085240 80084640 2458FFFF */ addiu $t8, $v0, -1 -/* 085244 80084644 ACD80000 */ sw $t8, ($a2) -/* 085248 80084648 07010003 */ bgez $t8, .L80084658 -/* 08524C 8008464C 03001025 */ move $v0, $t8 -/* 085250 80084650 ACC00000 */ sw $zero, ($a2) -/* 085254 80084654 00001025 */ move $v0, $zero -.L80084658: -/* 085258 80084658 10620007 */ beq $v1, $v0, .L80084678 -/* 08525C 8008465C 240400EB */ li $a0, 235 -/* 085260 80084660 0C000741 */ jal play_sound_global -/* 085264 80084664 00002825 */ move $a1, $zero -/* 085268 80084668 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 08526C 8008466C 3C06800E */ lui $a2, %hi(D_800DF460) # $a2, 0x800e -/* 085270 80084670 24C6F460 */ addiu $a2, %lo(D_800DF460) # addiu $a2, $a2, -0xba0 -/* 085274 80084674 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -.L80084678: -/* 085278 80084678 8D220000 */ lw $v0, ($t1) -/* 08527C 8008467C 00000000 */ nop -/* 085280 80084680 2841001F */ slti $at, $v0, 0x1f -/* 085284 80084684 1420001B */ bnez $at, .L800846F4 -/* 085288 80084688 2841FFE2 */ slti $at, $v0, -0x1e -/* 08528C 8008468C 8CC20000 */ lw $v0, ($a2) -/* 085290 80084690 24010002 */ li $at, 2 -/* 085294 80084694 14410008 */ bne $v0, $at, .L800846B8 -/* 085298 80084698 24010003 */ li $at, 3 -/* 08529C 8008469C 0C0211CD */ jal unload_big_font_1 -/* 0852A0 800846A0 00000000 */ nop -/* 0852A4 800846A4 0C0204F4 */ jal menu_init -/* 0852A8 800846A8 2404000D */ li $a0, 13 -/* 0852AC 800846AC 1000001D */ b .L80084724 -/* 0852B0 800846B0 00001025 */ move $v0, $zero -/* 0852B4 800846B4 24010003 */ li $at, 3 -.L800846B8: -/* 0852B8 800846B8 14410007 */ bne $v0, $at, .L800846D8 -/* 0852BC 800846BC 00000000 */ nop -/* 0852C0 800846C0 0C0211CD */ jal unload_big_font_1 -/* 0852C4 800846C4 00000000 */ nop -/* 0852C8 800846C8 0C0204F4 */ jal menu_init -/* 0852CC 800846CC 2404000E */ li $a0, 14 -/* 0852D0 800846D0 10000014 */ b .L80084724 -/* 0852D4 800846D4 00001025 */ move $v0, $zero -.L800846D8: -/* 0852D8 800846D8 0C0211CD */ jal unload_big_font_1 -/* 0852DC 800846DC 00000000 */ nop -/* 0852E0 800846E0 0C0204F4 */ jal menu_init -/* 0852E4 800846E4 2404000A */ li $a0, 10 -/* 0852E8 800846E8 1000000E */ b .L80084724 -/* 0852EC 800846EC 00001025 */ move $v0, $zero -/* 0852F0 800846F0 2841FFE2 */ slti $at, $v0, -0x1e -.L800846F4: -/* 0852F4 800846F4 10200009 */ beqz $at, .L8008471C -/* 0852F8 800846F8 00001025 */ move $v0, $zero -/* 0852FC 800846FC 0C0002CA */ jal func_80000B28 -/* 085300 80084700 00000000 */ nop -/* 085304 80084704 0C0211CD */ jal unload_big_font_1 -/* 085308 80084708 00000000 */ nop -/* 08530C 8008470C 0C0204F4 */ jal menu_init -/* 085310 80084710 00002025 */ move $a0, $zero -/* 085314 80084714 10000003 */ b .L80084724 -/* 085318 80084718 00001025 */ move $v0, $zero -.L8008471C: -/* 08531C 8008471C 3C018012 */ lui $at, %hi(gIgnorePlayerInputTime) # $at, 0x8012 -/* 085320 80084720 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInputTime)($at) -.L80084724: -/* 085324 80084724 8FBF0014 */ lw $ra, 0x14($sp) -/* 085328 80084728 27BD0048 */ addiu $sp, $sp, 0x48 -/* 08532C 8008472C 03E00008 */ jr $ra -/* 085330 80084730 00000000 */ nop - diff --git a/asm/non_matchings/menu/menu_results_loop.s b/asm/non_matchings/menu/menu_results_loop.s deleted file mode 100644 index 8be0a517..00000000 --- a/asm/non_matchings/menu/menu_results_loop.s +++ /dev/null @@ -1,291 +0,0 @@ -glabel menu_results_loop -/* 097EA8 800972A8 3C028012 */ lui $v0, %hi(gOptionBlinkTimer) # $v0, 0x8012 -/* 097EAC 800972AC 244263BC */ addiu $v0, %lo(gOptionBlinkTimer) # addiu $v0, $v0, 0x63bc -/* 097EB0 800972B0 8C4E0000 */ lw $t6, ($v0) -/* 097EB4 800972B4 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 097EB8 800972B8 01C4C021 */ addu $t8, $t6, $a0 -/* 097EBC 800972BC AFBF0014 */ sw $ra, 0x14($sp) -/* 097EC0 800972C0 3319003F */ andi $t9, $t8, 0x3f -/* 097EC4 800972C4 AFA40028 */ sw $a0, 0x28($sp) -/* 097EC8 800972C8 AFA00024 */ sw $zero, 0x24($sp) -/* 097ECC 800972CC AFA00020 */ sw $zero, 0x20($sp) -/* 097ED0 800972D0 AFA0001C */ sw $zero, 0x1c($sp) -/* 097ED4 800972D4 0C02393B */ jal func_8008E4EC -/* 097ED8 800972D8 AC590000 */ sw $t9, ($v0) -/* 097EDC 800972DC 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 097EE0 800972E0 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 -/* 097EE4 800972E4 8CC30000 */ lw $v1, ($a2) -/* 097EE8 800972E8 3C078012 */ lui $a3, %hi(gOpacityDecayTimer) # $a3, 0x8012 -/* 097EEC 800972EC 1C600013 */ bgtz $v1, .L8009733C -/* 097EF0 800972F0 24E763D8 */ addiu $a3, %lo(gOpacityDecayTimer) # addiu $a3, $a3, 0x63d8 -/* 097EF4 800972F4 8CEA0000 */ lw $t2, ($a3) -/* 097EF8 800972F8 8FAB0028 */ lw $t3, 0x28($sp) -/* 097EFC 800972FC 24080001 */ li $t0, 1 -/* 097F00 80097300 014B1021 */ addu $v0, $t2, $t3 -/* 097F04 80097304 2841003C */ slti $at, $v0, 0x3c -/* 097F08 80097308 14200003 */ bnez $at, .L80097318 -/* 097F0C 8009730C ACE20000 */ sw $v0, ($a3) -/* 097F10 80097310 1000000A */ b .L8009733C -/* 097F14 80097314 ACC80000 */ sw $t0, ($a2) -.L80097318: -/* 097F18 80097318 04610008 */ bgez $v1, .L8009733C -/* 097F1C 8009731C 28410015 */ slti $at, $v0, 0x15 -/* 097F20 80097320 14200006 */ bnez $at, .L8009733C -/* 097F24 80097324 24040016 */ li $a0, 22 -/* 097F28 80097328 ACC00000 */ sw $zero, ($a2) -/* 097F2C 8009732C 0C000741 */ jal play_sound_global -/* 097F30 80097330 00002825 */ move $a1, $zero -/* 097F34 80097334 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 097F38 80097338 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 -.L8009733C: -/* 097F3C 8009733C 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 097F40 80097340 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -/* 097F44 80097344 8D230000 */ lw $v1, ($t1) -/* 097F48 80097348 3C078012 */ lui $a3, %hi(gOpacityDecayTimer) # $a3, 0x8012 -/* 097F4C 8009734C 28610014 */ slti $at, $v1, 0x14 -/* 097F50 80097350 24E763D8 */ addiu $a3, %lo(gOpacityDecayTimer) # addiu $a3, $a3, 0x63d8 -/* 097F54 80097354 10200027 */ beqz $at, .L800973F4 -/* 097F58 80097358 24080001 */ li $t0, 1 -/* 097F5C 8009735C 8CCD0000 */ lw $t5, ($a2) -/* 097F60 80097360 8FA40028 */ lw $a0, 0x28($sp) -/* 097F64 80097364 1DA0001A */ bgtz $t5, .L800973D0 -/* 097F68 80097368 00000000 */ nop -/* 097F6C 8009736C 8CE20000 */ lw $v0, ($a3) -/* 097F70 80097370 00000000 */ nop -/* 097F74 80097374 28410014 */ slti $at, $v0, 0x14 -/* 097F78 80097378 1420001E */ bnez $at, .L800973F4 -/* 097F7C 8009737C 244EFFEC */ addiu $t6, $v0, -0x14 -/* 097F80 80097380 448E2000 */ mtc1 $t6, $f4 -/* 097F84 80097384 3C014220 */ li $at, 0x42200000 # 40.000000 -/* 097F88 80097388 468021A0 */ cvt.s.w $f6, $f4 -/* 097F8C 8009738C 44814000 */ mtc1 $at, $f8 -/* 097F90 80097390 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 097F94 80097394 46083283 */ div.s $f10, $f6, $f8 -/* 097F98 80097398 44818000 */ mtc1 $at, $f16 -/* 097F9C 8009739C 8FA40028 */ lw $a0, 0x28($sp) -/* 097FA0 800973A0 460A8481 */ sub.s $f18, $f16, $f10 -/* 097FA4 800973A4 44059000 */ mfc1 $a1, $f18 -/* 097FA8 800973A8 0C025A5E */ jal func_80096978 -/* 097FAC 800973AC 00000000 */ nop -/* 097FB0 800973B0 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e -/* 097FB4 800973B4 8C63F47C */ lw $v1, %lo(gMenuDelay)($v1) -/* 097FB8 800973B8 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 097FBC 800973BC 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 097FC0 800973C0 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -/* 097FC4 800973C4 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 -/* 097FC8 800973C8 1000000A */ b .L800973F4 -/* 097FCC 800973CC 24080001 */ li $t0, 1 -.L800973D0: -/* 097FD0 800973D0 0C025A5E */ jal func_80096978 -/* 097FD4 800973D4 24050000 */ li $a1, 0 -/* 097FD8 800973D8 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e -/* 097FDC 800973DC 3C068012 */ lui $a2, %hi(D_801263E0) # $a2, 0x8012 -/* 097FE0 800973E0 3C09800E */ lui $t1, %hi(gMenuDelay) # $t1, 0x800e -/* 097FE4 800973E4 8C63F47C */ lw $v1, %lo(gMenuDelay)($v1) -/* 097FE8 800973E8 2529F47C */ addiu $t1, %lo(gMenuDelay) # addiu $t1, $t1, -0xb84 -/* 097FEC 800973EC 24C663E0 */ addiu $a2, %lo(D_801263E0) # addiu $a2, $a2, 0x63e0 -/* 097FF0 800973F0 24080001 */ li $t0, 1 -.L800973F4: -/* 097FF4 800973F4 14600088 */ bnez $v1, .L80097618 -/* 097FF8 800973F8 8FB80028 */ lw $t8, 0x28($sp) -/* 097FFC 800973FC 8CCF0000 */ lw $t7, ($a2) -/* 098000 80097400 3C04800E */ lui $a0, %hi(gMenuSubOption) # $a0, 0x800e -/* 098004 80097404 15E00009 */ bnez $t7, .L8009742C -/* 098008 80097408 24840988 */ addiu $a0, %lo(gMenuSubOption) # addiu $a0, $a0, 0x988 -/* 09800C 8009740C 3C188012 */ lui $t8, %hi(D_801267E8) # $t8, 0x8012 -/* 098010 80097410 8F1867E8 */ lw $t8, %lo(D_801267E8)($t8) -/* 098014 80097414 00000000 */ nop -/* 098018 80097418 33199000 */ andi $t9, $t8, 0x9000 -/* 09801C 8009741C 13200068 */ beqz $t9, .L800975C0 -/* 098020 80097420 8FAC0024 */ lw $t4, 0x24($sp) -/* 098024 80097424 10000065 */ b .L800975BC -/* 098028 80097428 ACC80000 */ sw $t0, ($a2) -.L8009742C: -/* 09802C 8009742C 8C820000 */ lw $v0, ($a0) -/* 098030 80097430 3C038012 */ lui $v1, %hi(D_801267E8) # $v1, 0x8012 -/* 098034 80097434 1040002D */ beqz $v0, .L800974EC -/* 098038 80097438 3C188012 */ lui $t8, %hi(D_801267E8) # $t8, 0x8012 -/* 09803C 8009743C 8C6367E8 */ lw $v1, %lo(D_801267E8)($v1) -/* 098040 80097440 00000000 */ nop -/* 098044 80097444 306A9000 */ andi $t2, $v1, 0x9000 -/* 098048 80097448 11400010 */ beqz $t2, .L8009748C -/* 09804C 8009744C 306C4000 */ andi $t4, $v1, 0x4000 -/* 098050 80097450 1502000B */ bne $t0, $v0, .L80097480 -/* 098054 80097454 240B0001 */ li $t3, 1 -/* 098058 80097458 AFA80020 */ sw $t0, 0x20($sp) -/* 09805C 8009745C 0C000326 */ jal set_music_fade_timer -/* 098060 80097460 2404FF80 */ li $a0, -128 -/* 098064 80097464 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 098068 80097468 0C030076 */ jal transition_begin -/* 09806C 8009746C 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 098070 80097470 24080001 */ li $t0, 1 -/* 098074 80097474 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e -/* 098078 80097478 10000050 */ b .L800975BC -/* 09807C 8009747C AC28F47C */ sw $t0, %lo(gMenuDelay)($at) -.L80097480: -/* 098080 80097480 AFAB0024 */ sw $t3, 0x24($sp) -/* 098084 80097484 1000004D */ b .L800975BC -/* 098088 80097488 AC800000 */ sw $zero, ($a0) -.L8009748C: -/* 09808C 8009748C 11800005 */ beqz $t4, .L800974A4 -/* 098090 80097490 3C038012 */ lui $v1, %hi(D_80126838) # $v1, 0x8012 -/* 098094 80097494 240D0001 */ li $t5, 1 -/* 098098 80097498 AFAD0024 */ sw $t5, 0x24($sp) -/* 09809C 8009749C 10000047 */ b .L800975BC -/* 0980A0 800974A0 AC800000 */ sw $zero, ($a0) -.L800974A4: -/* 0980A4 800974A4 84636838 */ lh $v1, %lo(D_80126838)($v1) -/* 0980A8 800974A8 00402825 */ move $a1, $v0 -/* 0980AC 800974AC 18600005 */ blez $v1, .L800974C4 -/* 0980B0 800974B0 24010002 */ li $at, 2 -/* 0980B4 800974B4 14410003 */ bne $v0, $at, .L800974C4 -/* 0980B8 800974B8 00000000 */ nop -/* 0980BC 800974BC AC880000 */ sw $t0, ($a0) -/* 0980C0 800974C0 01001025 */ move $v0, $t0 -.L800974C4: -/* 0980C4 800974C4 04610005 */ bgez $v1, .L800974DC -/* 0980C8 800974C8 240F0001 */ li $t7, 1 -/* 0980CC 800974CC 15020003 */ bne $t0, $v0, .L800974DC -/* 0980D0 800974D0 00000000 */ nop -/* 0980D4 800974D4 24020002 */ li $v0, 2 -/* 0980D8 800974D8 AC820000 */ sw $v0, ($a0) -.L800974DC: -/* 0980DC 800974DC 10A20038 */ beq $a1, $v0, .L800975C0 -/* 0980E0 800974E0 8FAC0024 */ lw $t4, 0x24($sp) -/* 0980E4 800974E4 10000035 */ b .L800975BC -/* 0980E8 800974E8 AFAF001C */ sw $t7, 0x1c($sp) -.L800974EC: -/* 0980EC 800974EC 8F1867E8 */ lw $t8, %lo(D_801267E8)($t8) -/* 0980F0 800974F0 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 0980F4 800974F4 33199000 */ andi $t9, $t8, 0x9000 -/* 0980F8 800974F8 13200019 */ beqz $t9, .L80097560 -/* 0980FC 800974FC 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 098100 80097500 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 098104 80097504 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 098108 80097508 8CCA0000 */ lw $t2, ($a2) -/* 09810C 8009750C 3C0D800E */ lui $t5, %hi(gMenuText) # $t5, 0x800e -/* 098110 80097510 8DADF4A0 */ lw $t5, %lo(gMenuText)($t5) -/* 098114 80097514 3C0C8012 */ lui $t4, %hi(D_80126BF0) # $t4, 0x8012 -/* 098118 80097518 000A5880 */ sll $t3, $t2, 2 -/* 09811C 8009751C AFA80020 */ sw $t0, 0x20($sp) -/* 098120 80097520 018B6021 */ addu $t4, $t4, $t3 -/* 098124 80097524 8D8C6BF0 */ lw $t4, %lo(D_80126BF0)($t4) -/* 098128 80097528 8DAE0070 */ lw $t6, 0x70($t5) -/* 09812C 8009752C 240F0002 */ li $t7, 2 -/* 098130 80097530 158E0003 */ bne $t4, $t6, .L80097540 -/* 098134 80097534 00000000 */ nop -/* 098138 80097538 10000020 */ b .L800975BC -/* 09813C 8009753C AC8F0000 */ sw $t7, ($a0) -.L80097540: -/* 098140 80097540 3C04800E */ lui $a0, %hi(sMenuTransitionFadeIn) # $a0, 0x800e -/* 098144 80097544 AD280000 */ sw $t0, ($t1) -/* 098148 80097548 0C030076 */ jal transition_begin -/* 09814C 8009754C 2484F774 */ addiu $a0, %lo(sMenuTransitionFadeIn) # addiu $a0, $a0, -0x88c -/* 098150 80097550 0C000326 */ jal set_music_fade_timer -/* 098154 80097554 2404FF80 */ li $a0, -128 -/* 098158 80097558 10000019 */ b .L800975C0 -/* 09815C 8009755C 8FAC0024 */ lw $t4, 0x24($sp) -.L80097560: -/* 098160 80097560 3C038012 */ lui $v1, %hi(D_80126838) # $v1, 0x8012 -/* 098164 80097564 8CC20000 */ lw $v0, ($a2) -/* 098168 80097568 84636838 */ lh $v1, %lo(D_80126838)($v1) -/* 09816C 8009756C 3C188012 */ lui $t8, %hi(D_80126C14) # $t8, 0x8012 -/* 098170 80097570 04610009 */ bgez $v1, .L80097598 -/* 098174 80097574 00402825 */ move $a1, $v0 -/* 098178 80097578 8F186C14 */ lw $t8, %lo(D_80126C14)($t8) -/* 09817C 8009757C 244A0001 */ addiu $t2, $v0, 1 -/* 098180 80097580 2719FFFF */ addiu $t9, $t8, -1 -/* 098184 80097584 0059082A */ slt $at, $v0, $t9 -/* 098188 80097588 10200003 */ beqz $at, .L80097598 -/* 09818C 8009758C 00000000 */ nop -/* 098190 80097590 ACCA0000 */ sw $t2, ($a2) -/* 098194 80097594 01401025 */ move $v0, $t2 -.L80097598: -/* 098198 80097598 18600005 */ blez $v1, .L800975B0 -/* 09819C 8009759C 240D0001 */ li $t5, 1 -/* 0981A0 800975A0 18400003 */ blez $v0, .L800975B0 -/* 0981A4 800975A4 244BFFFF */ addiu $t3, $v0, -1 -/* 0981A8 800975A8 ACCB0000 */ sw $t3, ($a2) -/* 0981AC 800975AC 01601025 */ move $v0, $t3 -.L800975B0: -/* 0981B0 800975B0 10A20003 */ beq $a1, $v0, .L800975C0 -/* 0981B4 800975B4 8FAC0024 */ lw $t4, 0x24($sp) -/* 0981B8 800975B8 AFAD001C */ sw $t5, 0x1c($sp) -.L800975BC: -/* 0981BC 800975BC 8FAC0024 */ lw $t4, 0x24($sp) -.L800975C0: -/* 0981C0 800975C0 8FAE0020 */ lw $t6, 0x20($sp) -/* 0981C4 800975C4 11800005 */ beqz $t4, .L800975DC -/* 0981C8 800975C8 24040241 */ li $a0, 577 -/* 0981CC 800975CC 0C000741 */ jal play_sound_global -/* 0981D0 800975D0 00002825 */ move $a1, $zero -/* 0981D4 800975D4 10000036 */ b .L800976B0 -/* 0981D8 800975D8 00000000 */ nop -.L800975DC: -/* 0981DC 800975DC 11C00005 */ beqz $t6, .L800975F4 -/* 0981E0 800975E0 240400EF */ li $a0, 239 -/* 0981E4 800975E4 0C000741 */ jal play_sound_global -/* 0981E8 800975E8 00002825 */ move $a1, $zero -/* 0981EC 800975EC 10000030 */ b .L800976B0 -/* 0981F0 800975F0 00000000 */ nop -.L800975F4: -/* 0981F4 800975F4 8FAF001C */ lw $t7, 0x1c($sp) -/* 0981F8 800975F8 240400EB */ li $a0, 235 -/* 0981FC 800975FC 11E0002C */ beqz $t7, .L800976B0 -/* 098200 80097600 00000000 */ nop -/* 098204 80097604 0C000741 */ jal play_sound_global -/* 098208 80097608 00002825 */ move $a1, $zero -/* 09820C 8009760C 10000028 */ b .L800976B0 -/* 098210 80097610 00000000 */ nop -/* 098214 80097614 8FB80028 */ lw $t8, 0x28($sp) -.L80097618: -/* 098218 80097618 00000000 */ nop -/* 09821C 8009761C 0078C821 */ addu $t9, $v1, $t8 -/* 098220 80097620 2B21001F */ slti $at, $t9, 0x1f -/* 098224 80097624 14200022 */ bnez $at, .L800976B0 -/* 098228 80097628 AD390000 */ sw $t9, ($t1) -/* 09822C 8009762C 0C025DB3 */ jal func_800976CC -/* 098230 80097630 00000000 */ nop -/* 098234 80097634 0C031588 */ jal close_dialogue_box -/* 098238 80097638 24040007 */ li $a0, 7 -/* 09823C 8009763C 0C031525 */ jal assign_dialogue_box_id -/* 098240 80097640 24040007 */ li $a0, 7 -/* 098244 80097644 3C068012 */ lui $a2, %hi(gMenuOption) # $a2, 0x8012 -/* 098248 80097648 24C66A68 */ addiu $a2, %lo(gMenuOption) # addiu $a2, $a2, 0x6a68 -/* 09824C 8009764C 8CCB0000 */ lw $t3, ($a2) -/* 098250 80097650 3C03800E */ lui $v1, %hi(gMenuText) # $v1, 0x800e -/* 098254 80097654 8C63F4A0 */ lw $v1, %lo(gMenuText)($v1) -/* 098258 80097658 3C028012 */ lui $v0, %hi(D_80126BF0) # $v0, 0x8012 -/* 09825C 8009765C 000B6880 */ sll $t5, $t3, 2 -/* 098260 80097660 004D1021 */ addu $v0, $v0, $t5 -/* 098264 80097664 8C426BF0 */ lw $v0, %lo(D_80126BF0)($v0) -/* 098268 80097668 8C6C005C */ lw $t4, 0x5c($v1) -/* 09826C 8009766C 00000000 */ nop -/* 098270 80097670 144C0003 */ bne $v0, $t4, .L80097680 -/* 098274 80097674 00000000 */ nop -/* 098278 80097678 10000010 */ b .L800976BC -/* 09827C 8009767C 24020102 */ li $v0, 258 -.L80097680: -/* 098280 80097680 8C6E0060 */ lw $t6, 0x60($v1) -/* 098284 80097684 2404FFFF */ li $a0, -1 -/* 098288 80097688 144E0007 */ bne $v0, $t6, .L800976A8 -/* 09828C 8009768C 2405FFFF */ li $a1, -1 -/* 098290 80097690 0C01B8BA */ jal load_level_for_menu -/* 098294 80097694 00003025 */ move $a2, $zero -/* 098298 80097698 0C0204F4 */ jal menu_init -/* 09829C 8009769C 2404000F */ li $a0, 15 -/* 0982A0 800976A0 10000006 */ b .L800976BC -/* 0982A4 800976A4 00001025 */ move $v0, $zero -.L800976A8: -/* 0982A8 800976A8 10000004 */ b .L800976BC -/* 0982AC 800976AC 24020104 */ li $v0, 260 -.L800976B0: -/* 0982B0 800976B0 3C018012 */ lui $at, %hi(gIgnorePlayerInputTime) # $at, 0x8012 -/* 0982B4 800976B4 AC2063C4 */ sw $zero, %lo(gIgnorePlayerInputTime)($at) -/* 0982B8 800976B8 00001025 */ move $v0, $zero -.L800976BC: -/* 0982BC 800976BC 8FBF0014 */ lw $ra, 0x14($sp) -/* 0982C0 800976C0 27BD0028 */ addiu $sp, $sp, 0x28 -/* 0982C4 800976C4 03E00008 */ jr $ra -/* 0982C8 800976C8 00000000 */ nop - diff --git a/asm/non_matchings/object_functions/func_8003F2E8.s b/asm/non_matchings/object_functions/func_8003F2E8.s index 54871714..5966b8e3 100644 --- a/asm/non_matchings/object_functions/func_8003F2E8.s +++ b/asm/non_matchings/object_functions/func_8003F2E8.s @@ -206,7 +206,7 @@ glabel func_8003F2E8 /* 0401CC 8003F5CC 1D800007 */ bgtz $t4, .L8003F5EC /* 0401D0 8003F5D0 8FAE0064 */ lw $t6, 0x64($sp) /* 0401D4 8003F5D4 A50D0006 */ sh $t5, 6($t0) -/* 0401D8 8003F5D8 0C003FEE */ jal gParticlePtrList_addObject +/* 0401D8 8003F5D8 0C003FEE */ jal free_object /* 0401DC 8003F5DC AFA80038 */ sw $t0, 0x38($sp) /* 0401E0 8003F5E0 8FA80038 */ lw $t0, 0x38($sp) /* 0401E4 8003F5E4 00000000 */ nop @@ -352,7 +352,7 @@ glabel func_8003F2E8 /* 0403EC 8003F7EC 1DA00006 */ bgtz $t5, .L8003F808 /* 0403F0 8003F7F0 00000000 */ nop /* 0403F4 8003F7F4 A50F0006 */ sh $t7, 6($t0) -/* 0403F8 8003F7F8 0C003FEE */ jal gParticlePtrList_addObject +/* 0403F8 8003F7F8 0C003FEE */ jal free_object /* 0403FC 8003F7FC AFA80038 */ sw $t0, 0x38($sp) /* 040400 8003F800 8FA80038 */ lw $t0, 0x38($sp) /* 040404 8003F804 00000000 */ nop @@ -584,7 +584,7 @@ glabel func_8003F2E8 /* 04074C 8003FB4C 2401000A */ li $at, 10 /* 040750 8003FB50 10410005 */ beq $v0, $at, .L8003FB68 /* 040754 8003FB54 00000000 */ nop -/* 040758 8003FB58 0C003FEE */ jal gParticlePtrList_addObject +/* 040758 8003FB58 0C003FEE */ jal free_object /* 04075C 8003FB5C 02002025 */ move $a0, $s0 /* 040760 8003FB60 10000035 */ b .L8003FC38 /* 040764 8003FB64 8FBF002C */ lw $ra, 0x2c($sp) @@ -640,7 +640,7 @@ glabel func_8003F2E8 /* 040820 8003FC20 AFB80010 */ sw $t8, 0x10($sp) /* 040824 8003FC24 0C00FF11 */ jal func_8003FC44 /* 040828 8003FC28 E7A60014 */ swc1 $f6, 0x14($sp) -/* 04082C 8003FC2C 0C003FEE */ jal gParticlePtrList_addObject +/* 04082C 8003FC2C 0C003FEE */ jal free_object /* 040830 8003FC30 02002025 */ move $a0, $s0 .L8003FC34: /* 040834 8003FC34 8FBF002C */ lw $ra, 0x2c($sp) diff --git a/asm/non_matchings/object_functions/obj_loop_fish.s b/asm/non_matchings/object_functions/obj_loop_fish.s index 1658ef61..28a93663 100644 --- a/asm/non_matchings/object_functions/obj_loop_fish.s +++ b/asm/non_matchings/object_functions/obj_loop_fish.s @@ -8,7 +8,7 @@ glabel obj_loop_fish /* 037CEC 800370EC AFA50074 */ sw $a1, 0x74($sp) /* 037CF0 800370F0 18400005 */ blez $v0, .L80037108 /* 037CF4 800370F4 00000000 */ nop -/* 037CF8 800370F8 0C003FEE */ jal gParticlePtrList_addObject +/* 037CF8 800370F8 0C003FEE */ jal free_object /* 037CFC 800370FC 02202025 */ move $a0, $s1 /* 037D00 80037100 10000119 */ b .L80037568 /* 037D04 80037104 8FBF001C */ lw $ra, 0x1c($sp) diff --git a/asm/non_matchings/objects/func_8000CC7C.s b/asm/non_matchings/objects/func_8000CC7C.s index dcf904e7..e3feae33 100644 --- a/asm/non_matchings/objects/func_8000CC7C.s +++ b/asm/non_matchings/objects/func_8000CC7C.s @@ -993,7 +993,7 @@ glabel L8000D98C /* 00E634 8000DA34 00000000 */ nop /* 00E638 8000DA38 11A00007 */ beqz $t5, .L8000DA58 /* 00E63C 8000DA3C 00000000 */ nop -/* 00E640 8000DA40 0C003FEE */ jal gParticlePtrList_addObject +/* 00E640 8000DA40 0C003FEE */ jal free_object /* 00E644 8000DA44 02202025 */ move $a0, $s1 /* 00E648 8000DA48 3C028012 */ lui $v0, %hi(objCount) # $v0, 0x8012 /* 00E64C 8000DA4C 8C42AE5C */ lw $v0, %lo(objCount)($v0) @@ -1007,7 +1007,7 @@ glabel L8000D98C /* 00E668 8000DA68 2B210002 */ slti $at, $t9, 2 /* 00E66C 8000DA6C 14200006 */ bnez $at, .L8000DA88 /* 00E670 8000DA70 00000000 */ nop -/* 00E674 8000DA74 0C003FEE */ jal gParticlePtrList_addObject +/* 00E674 8000DA74 0C003FEE */ jal free_object /* 00E678 8000DA78 02202025 */ move $a0, $s1 /* 00E67C 8000DA7C 3C028012 */ lui $v0, %hi(objCount) # $v0, 0x8012 /* 00E680 8000DA80 8C42AE5C */ lw $v0, %lo(objCount)($v0) diff --git a/asm/non_matchings/objects/func_800101AC.s b/asm/non_matchings/objects/func_800101AC.s index 452c9deb..320daefb 100644 --- a/asm/non_matchings/objects/func_800101AC.s +++ b/asm/non_matchings/objects/func_800101AC.s @@ -238,7 +238,7 @@ glabel L800104D8 /* 0110E4 800104E4 00000000 */ nop /* 0110E8 800104E8 17200005 */ bnez $t9, .L80010500 /* 0110EC 800104EC 00000000 */ nop -/* 0110F0 800104F0 0C003FEE */ jal gParticlePtrList_addObject +/* 0110F0 800104F0 0C003FEE */ jal free_object /* 0110F4 800104F4 00000000 */ nop /* 0110F8 800104F8 86C50048 */ lh $a1, 0x48($s6) /* 0110FC 800104FC 00000000 */ nop @@ -451,7 +451,7 @@ glabel L80010664 /* 0113C8 800107C8 16420003 */ bne $s2, $v0, .L800107D8 /* 0113CC 800107CC 00000000 */ nop .L800107D0: -/* 0113D0 800107D0 0C003FEE */ jal gParticlePtrList_addObject +/* 0113D0 800107D0 0C003FEE */ jal free_object /* 0113D4 800107D4 00000000 */ nop .L800107D8: /* 0113D8 800107D8 8EB80000 */ lw $t8, ($s5) diff --git a/asm/non_matchings/objects/func_8001A8F4.s b/asm/non_matchings/objects/func_8001A8F4.s index 488d454d..280868e5 100644 --- a/asm/non_matchings/objects/func_8001A8F4.s +++ b/asm/non_matchings/objects/func_8001A8F4.s @@ -224,7 +224,7 @@ glabel func_8001A8F4 /* 01B838 8001AC38 0006C880 */ sll $t9, $a2, 2 /* 01B83C 8001AC3C 03194821 */ addu $t1, $t8, $t9 /* 01B840 8001AC40 8D240000 */ lw $a0, ($t1) -/* 01B844 8001AC44 0C003FEE */ jal gParticlePtrList_addObject +/* 01B844 8001AC44 0C003FEE */ jal free_object /* 01B848 8001AC48 00000000 */ nop /* 01B84C 8001AC4C 3C078012 */ lui $a3, %hi(D_8011AD51) # $a3, 0x8012 /* 01B850 8001AC50 24E7AD51 */ addiu $a3, %lo(D_8011AD51) # addiu $a3, $a3, -0x52af diff --git a/asm/non_matchings/objects/func_8001E93C.s b/asm/non_matchings/objects/func_8001E93C.s index 6868e407..3ec271ad 100644 --- a/asm/non_matchings/objects/func_8001E93C.s +++ b/asm/non_matchings/objects/func_8001E93C.s @@ -31,7 +31,7 @@ glabel func_8001E93C /* 01F5AC 8001E9AC 1219000A */ beq $s0, $t9, .L8001E9D8 /* 01F5B0 8001E9B0 00000000 */ nop /* 01F5B4 8001E9B4 00602025 */ move $a0, $v1 -/* 01F5B8 8001E9B8 0C003FEE */ jal gParticlePtrList_addObject +/* 01F5B8 8001E9B8 0C003FEE */ jal free_object /* 01F5BC 8001E9BC AFA2003C */ sw $v0, 0x3c($sp) /* 01F5C0 8001E9C0 8FA2003C */ lw $v0, 0x3c($sp) /* 01F5C4 8001E9C4 3C048012 */ lui $a0, %hi(D_8011AE78) # $a0, 0x8012 diff --git a/asm/non_matchings/objects/func_8001F23C.s b/asm/non_matchings/objects/func_8001F23C.s deleted file mode 100644 index 7ab76f30..00000000 --- a/asm/non_matchings/objects/func_8001F23C.s +++ /dev/null @@ -1,103 +0,0 @@ -glabel func_8001F23C -/* 01FE3C 8001F23C 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 01FE40 8001F240 AFBF002C */ sw $ra, 0x2c($sp) -/* 01FE44 8001F244 AFB50028 */ sw $s5, 0x28($sp) -/* 01FE48 8001F248 AFB40024 */ sw $s4, 0x24($sp) -/* 01FE4C 8001F24C AFB30020 */ sw $s3, 0x20($sp) -/* 01FE50 8001F250 AFB2001C */ sw $s2, 0x1c($sp) -/* 01FE54 8001F254 AFB10018 */ sw $s1, 0x18($sp) -/* 01FE58 8001F258 AFB00014 */ sw $s0, 0x14($sp) -/* 01FE5C 8001F25C 84AE0002 */ lh $t6, 2($a1) -/* 01FE60 8001F260 0080A025 */ move $s4, $a0 -/* 01FE64 8001F264 A7AE003E */ sh $t6, 0x3e($sp) -/* 01FE68 8001F268 84AF0004 */ lh $t7, 4($a1) -/* 01FE6C 8001F26C 27B5003C */ addiu $s5, $sp, 0x3c -/* 01FE70 8001F270 A7AF0040 */ sh $t7, 0x40($sp) -/* 01FE74 8001F274 84B80006 */ lh $t8, 6($a1) -/* 01FE78 8001F278 02A02025 */ move $a0, $s5 -/* 01FE7C 8001F27C A7B80042 */ sh $t8, 0x42($sp) -/* 01FE80 8001F280 84B9000C */ lh $t9, 0xc($a1) -/* 01FE84 8001F284 00000000 */ nop -/* 01FE88 8001F288 00194043 */ sra $t0, $t9, 1 -/* 01FE8C 8001F28C 31090080 */ andi $t1, $t0, 0x80 -/* 01FE90 8001F290 352A0008 */ ori $t2, $t1, 8 -/* 01FE94 8001F294 A3AA003D */ sb $t2, 0x3d($sp) -/* 01FE98 8001F298 84AB000C */ lh $t3, 0xc($a1) -/* 01FE9C 8001F29C 24050001 */ li $a1, 1 -/* 01FEA0 8001F2A0 0C003A95 */ jal spawn_object -/* 01FEA4 8001F2A4 A3AB003C */ sb $t3, 0x3c($sp) -/* 01FEA8 8001F2A8 AE820064 */ sw $v0, 0x64($s4) -/* 01FEAC 8001F2AC 1040000D */ beqz $v0, .L8001F2E4 -/* 01FEB0 8001F2B0 00408825 */ move $s1, $v0 -/* 01FEB4 8001F2B4 844C0048 */ lh $t4, 0x48($v0) -/* 01FEB8 8001F2B8 2401000C */ li $at, 12 -/* 01FEBC 8001F2BC 15810009 */ bne $t4, $at, .L8001F2E4 -/* 01FEC0 8001F2C0 3C0D8012 */ lui $t5, %hi(gTimeTrialEnabled) # $t5, 0x8012 -/* 01FEC4 8001F2C4 91ADAEF4 */ lbu $t5, %lo(gTimeTrialEnabled)($t5) -/* 01FEC8 8001F2C8 00000000 */ nop -/* 01FECC 8001F2CC 11A00005 */ beqz $t5, .L8001F2E4 -/* 01FED0 8001F2D0 00000000 */ nop -/* 01FED4 8001F2D4 0C003FEE */ jal gParticlePtrList_addObject -/* 01FED8 8001F2D8 00402025 */ move $a0, $v0 -/* 01FEDC 8001F2DC AE800064 */ sw $zero, 0x64($s4) -/* 01FEE0 8001F2E0 00008825 */ move $s1, $zero -.L8001F2E4: -/* 01FEE4 8001F2E4 1220002B */ beqz $s1, .L8001F394 -/* 01FEE8 8001F2E8 02802025 */ move $a0, $s4 -/* 01FEEC 8001F2EC AE20003C */ sw $zero, 0x3c($s1) -/* 01FEF0 8001F2F0 0C007BE9 */ jal func_8001EFA4 -/* 01FEF4 8001F2F4 02202825 */ move $a1, $s1 -/* 01FEF8 8001F2F8 8E2E0040 */ lw $t6, 0x40($s1) -/* 01FEFC 8001F2FC 24010033 */ li $at, 51 -/* 01FF00 8001F300 81CF0054 */ lb $t7, 0x54($t6) -/* 01FF04 8001F304 3C138012 */ lui $s3, %hi(D_8011AD3E) # $s3, 0x8012 -/* 01FF08 8001F308 15E10022 */ bne $t7, $at, .L8001F394 -/* 01FF0C 8001F30C 2673AD3E */ addiu $s3, %lo(D_8011AD3E) # addiu $s3, $s3, -0x52c2 -/* 01FF10 8001F310 8E220064 */ lw $v0, 0x64($s1) -/* 01FF14 8001F314 82780000 */ lb $t8, ($s3) -/* 01FF18 8001F318 0C019884 */ jal get_viewport_count -/* 01FF1C 8001F31C A0580044 */ sb $t8, 0x44($v0) -/* 01FF20 8001F320 0C01B067 */ jal func_8006C19C -/* 01FF24 8001F324 00409025 */ move $s2, $v0 -/* 01FF28 8001F328 10400002 */ beqz $v0, .L8001F334 -/* 01FF2C 8001F32C 00000000 */ nop -/* 01FF30 8001F330 24120001 */ li $s2, 1 -.L8001F334: -/* 01FF34 8001F334 1A400013 */ blez $s2, .L8001F384 -/* 01FF38 8001F338 00008025 */ move $s0, $zero -/* 01FF3C 8001F33C 02A02025 */ move $a0, $s5 -.L8001F340: -/* 01FF40 8001F340 0C003A95 */ jal spawn_object -/* 01FF44 8001F344 24050001 */ li $a1, 1 -/* 01FF48 8001F348 1040000B */ beqz $v0, .L8001F378 -/* 01FF4C 8001F34C 00408825 */ move $s1, $v0 -/* 01FF50 8001F350 AC40003C */ sw $zero, 0x3c($v0) -/* 01FF54 8001F354 02802025 */ move $a0, $s4 -/* 01FF58 8001F358 0C007BE9 */ jal func_8001EFA4 -/* 01FF5C 8001F35C 00402825 */ move $a1, $v0 -/* 01FF60 8001F360 8E220064 */ lw $v0, 0x64($s1) -/* 01FF64 8001F364 26100001 */ addiu $s0, $s0, 1 -/* 01FF68 8001F368 A0500030 */ sb $s0, 0x30($v0) -/* 01FF6C 8001F36C 82790000 */ lb $t9, ($s3) -/* 01FF70 8001F370 00000000 */ nop -/* 01FF74 8001F374 A0590044 */ sb $t9, 0x44($v0) -.L8001F378: -/* 01FF78 8001F378 0212082A */ slt $at, $s0, $s2 -/* 01FF7C 8001F37C 1420FFF0 */ bnez $at, .L8001F340 -/* 01FF80 8001F380 02A02025 */ move $a0, $s5 -.L8001F384: -/* 01FF84 8001F384 82680000 */ lb $t0, ($s3) -/* 01FF88 8001F388 00000000 */ nop -/* 01FF8C 8001F38C 25090001 */ addiu $t1, $t0, 1 -/* 01FF90 8001F390 A2690000 */ sb $t1, ($s3) -.L8001F394: -/* 01FF94 8001F394 8FBF002C */ lw $ra, 0x2c($sp) -/* 01FF98 8001F398 8FB00014 */ lw $s0, 0x14($sp) -/* 01FF9C 8001F39C 8FB10018 */ lw $s1, 0x18($sp) -/* 01FFA0 8001F3A0 8FB2001C */ lw $s2, 0x1c($sp) -/* 01FFA4 8001F3A4 8FB30020 */ lw $s3, 0x20($sp) -/* 01FFA8 8001F3A8 8FB40024 */ lw $s4, 0x24($sp) -/* 01FFAC 8001F3AC 8FB50028 */ lw $s5, 0x28($sp) -/* 01FFB0 8001F3B0 03E00008 */ jr $ra -/* 01FFB4 8001F3B4 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/objects/func_80021104.s b/asm/non_matchings/objects/func_80021104.s deleted file mode 100644 index e0394816..00000000 --- a/asm/non_matchings/objects/func_80021104.s +++ /dev/null @@ -1,92 +0,0 @@ -glabel func_80021104 -/* 021D04 80021104 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 021D08 80021108 AFBF0014 */ sw $ra, 0x14($sp) -/* 021D0C 8002110C AFA60028 */ sw $a2, 0x28($sp) -/* 021D10 80021110 848E0048 */ lh $t6, 0x48($a0) -/* 021D14 80021114 8CA3001C */ lw $v1, 0x1c($a1) -/* 021D18 80021118 24010033 */ li $at, 51 -/* 021D1C 8002111C 15C10009 */ bne $t6, $at, .L80021144 -/* 021D20 80021120 3C028012 */ lui $v0, %hi(D_8011AD3E) # $v0, 0x8012 -/* 021D24 80021124 2442AD3E */ addiu $v0, %lo(D_8011AD3E) # addiu $v0, $v0, -0x52c2 -/* 021D28 80021128 804F0000 */ lb $t7, ($v0) -/* 021D2C 8002112C 00000000 */ nop -/* 021D30 80021130 A0AF0044 */ sb $t7, 0x44($a1) -/* 021D34 80021134 80580000 */ lb $t8, ($v0) -/* 021D38 80021138 00000000 */ nop -/* 021D3C 8002113C 27190001 */ addiu $t9, $t8, 1 -/* 021D40 80021140 A0590000 */ sb $t9, ($v0) -.L80021144: -/* 021D44 80021144 8FA80028 */ lw $t0, 0x28($sp) -/* 021D48 80021148 24010012 */ li $at, 18 -/* 021D4C 8002114C 81040022 */ lb $a0, 0x22($t0) -/* 021D50 80021150 00000000 */ nop -/* 021D54 80021154 14810020 */ bne $a0, $at, .L800211D8 -/* 021D58 80021158 2881000A */ slti $at, $a0, 0xa -/* 021D5C 8002115C 80A40030 */ lb $a0, 0x30($a1) -/* 021D60 80021160 0C01997A */ jal set_active_camera -/* 021D64 80021164 AFA30018 */ sw $v1, 0x18($sp) -/* 021D68 80021168 0C01A73F */ jal get_active_camera_segment_no_cutscenes -/* 021D6C 8002116C 00000000 */ nop -/* 021D70 80021170 8FA30018 */ lw $v1, 0x18($sp) -/* 021D74 80021174 C444000C */ lwc1 $f4, 0xc($v0) -/* 021D78 80021178 340A8000 */ li $t2, 32768 -/* 021D7C 8002117C E464000C */ swc1 $f4, 0xc($v1) -/* 021D80 80021180 C4460010 */ lwc1 $f6, 0x10($v0) -/* 021D84 80021184 00000000 */ nop -/* 021D88 80021188 E4660010 */ swc1 $f6, 0x10($v1) -/* 021D8C 8002118C C4480014 */ lwc1 $f8, 0x14($v0) -/* 021D90 80021190 00000000 */ nop -/* 021D94 80021194 E4680014 */ swc1 $f8, 0x14($v1) -/* 021D98 80021198 84490000 */ lh $t1, ($v0) -/* 021D9C 8002119C 00000000 */ nop -/* 021DA0 800211A0 01495823 */ subu $t3, $t2, $t1 -/* 021DA4 800211A4 A46B0000 */ sh $t3, ($v1) -/* 021DA8 800211A8 844C0002 */ lh $t4, 2($v0) -/* 021DAC 800211AC 00000000 */ nop -/* 021DB0 800211B0 000C6823 */ negu $t5, $t4 -/* 021DB4 800211B4 A46D0002 */ sh $t5, 2($v1) -/* 021DB8 800211B8 844E0004 */ lh $t6, 4($v0) -/* 021DBC 800211BC 00000000 */ nop -/* 021DC0 800211C0 A46E0004 */ sh $t6, 4($v1) -/* 021DC4 800211C4 8FAF0028 */ lw $t7, 0x28($sp) -/* 021DC8 800211C8 00000000 */ nop -/* 021DCC 800211CC 81E40022 */ lb $a0, 0x22($t7) -/* 021DD0 800211D0 00000000 */ nop -/* 021DD4 800211D4 2881000A */ slti $at, $a0, 0xa -.L800211D8: -/* 021DD8 800211D8 1420001C */ bnez $at, .L8002124C -/* 021DDC 800211DC 28810012 */ slti $at, $a0, 0x12 -/* 021DE0 800211E0 1020001A */ beqz $at, .L8002124C -/* 021DE4 800211E4 3C188012 */ lui $t8, %hi(gRacers) # $t8, 0x8012 -/* 021DE8 800211E8 8F18AEE4 */ lw $t8, %lo(gRacers)($t8) -/* 021DEC 800211EC 0004C880 */ sll $t9, $a0, 2 -/* 021DF0 800211F0 03194021 */ addu $t0, $t8, $t9 -/* 021DF4 800211F4 8D02FFD8 */ lw $v0, -0x28($t0) -/* 021DF8 800211F8 00000000 */ nop -/* 021DFC 800211FC 10400014 */ beqz $v0, .L80021250 -/* 021E00 80021200 8FBF0014 */ lw $ra, 0x14($sp) -/* 021E04 80021204 C44A000C */ lwc1 $f10, 0xc($v0) -/* 021E08 80021208 00000000 */ nop -/* 021E0C 8002120C E46A000C */ swc1 $f10, 0xc($v1) -/* 021E10 80021210 C4500010 */ lwc1 $f16, 0x10($v0) -/* 021E14 80021214 00000000 */ nop -/* 021E18 80021218 E4700010 */ swc1 $f16, 0x10($v1) -/* 021E1C 8002121C C4520014 */ lwc1 $f18, 0x14($v0) -/* 021E20 80021220 00000000 */ nop -/* 021E24 80021224 E4720014 */ swc1 $f18, 0x14($v1) -/* 021E28 80021228 844A0000 */ lh $t2, ($v0) -/* 021E2C 8002122C 00000000 */ nop -/* 021E30 80021230 A46A0000 */ sh $t2, ($v1) -/* 021E34 80021234 84490002 */ lh $t1, 2($v0) -/* 021E38 80021238 00000000 */ nop -/* 021E3C 8002123C A4690002 */ sh $t1, 2($v1) -/* 021E40 80021240 844B0004 */ lh $t3, 4($v0) -/* 021E44 80021244 00000000 */ nop -/* 021E48 80021248 A46B0004 */ sh $t3, 4($v1) -.L8002124C: -/* 021E4C 8002124C 8FBF0014 */ lw $ra, 0x14($sp) -.L80021250: -/* 021E50 80021250 27BD0020 */ addiu $sp, $sp, 0x20 -/* 021E54 80021254 03E00008 */ jr $ra -/* 021E58 80021258 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_8002125C.s b/asm/non_matchings/objects/func_8002125C.s deleted file mode 100644 index 74a2dc5e..00000000 --- a/asm/non_matchings/objects/func_8002125C.s +++ /dev/null @@ -1,115 +0,0 @@ -glabel func_8002125C -/* 021E5C 8002125C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 021E60 80021260 AFBF0014 */ sw $ra, 0x14($sp) -/* 021E64 80021264 AFA70024 */ sw $a3, 0x24($sp) -/* 021E68 80021268 80A20012 */ lb $v0, 0x12($a1) -/* 021E6C 8002126C 00000000 */ nop -/* 021E70 80021270 04400014 */ bltz $v0, .L800212C4 -/* 021E74 80021274 00000000 */ nop -/* 021E78 80021278 808E003B */ lb $t6, 0x3b($a0) -/* 021E7C 8002127C 00000000 */ nop -/* 021E80 80021280 104E0006 */ beq $v0, $t6, .L8002129C -/* 021E84 80021284 00000000 */ nop -/* 021E88 80021288 90AF0016 */ lbu $t7, 0x16($a1) -/* 021E8C 8002128C 00000000 */ nop -/* 021E90 80021290 A48F0018 */ sh $t7, 0x18($a0) -/* 021E94 80021294 80A20012 */ lb $v0, 0x12($a1) -/* 021E98 80021298 00000000 */ nop -.L8002129C: -/* 021E9C 8002129C A082003B */ sb $v0, 0x3b($a0) -/* 021EA0 800212A0 80B80017 */ lb $t8, 0x17($a1) -/* 021EA4 800212A4 00000000 */ nop -/* 021EA8 800212A8 44982000 */ mtc1 $t8, $f4 -/* 021EAC 800212AC 00000000 */ nop -/* 021EB0 800212B0 468021A0 */ cvt.s.w $f6, $f4 -/* 021EB4 800212B4 E4C60014 */ swc1 $f6, 0x14($a2) -/* 021EB8 800212B8 90B90018 */ lbu $t9, 0x18($a1) -/* 021EBC 800212BC 00000000 */ nop -/* 021EC0 800212C0 A0D9002C */ sb $t9, 0x2c($a2) -.L800212C4: -/* 021EC4 800212C4 80A20013 */ lb $v0, 0x13($a1) -/* 021EC8 800212C8 00000000 */ nop -/* 021ECC 800212CC 04400002 */ bltz $v0, .L800212D8 -/* 021ED0 800212D0 00000000 */ nop -/* 021ED4 800212D4 A0C2002F */ sb $v0, 0x2f($a2) -.L800212D8: -/* 021ED8 800212D8 84A40024 */ lh $a0, 0x24($a1) -/* 021EDC 800212DC AFA60020 */ sw $a2, 0x20($sp) -/* 021EE0 800212E0 0C00322D */ jal normalise_time -/* 021EE4 800212E4 AFA5001C */ sw $a1, 0x1c($sp) -/* 021EE8 800212E8 8FA5001C */ lw $a1, 0x1c($sp) -/* 021EEC 800212EC 8FA60020 */ lw $a2, 0x20($sp) -/* 021EF0 800212F0 240100FF */ li $at, 255 -/* 021EF4 800212F4 A4C20036 */ sh $v0, 0x36($a2) -/* 021EF8 800212F8 80A8002D */ lb $t0, 0x2d($a1) -/* 021EFC 800212FC 00000000 */ nop -/* 021F00 80021300 A0C8003F */ sb $t0, 0x3f($a2) -/* 021F04 80021304 80A90026 */ lb $t1, 0x26($a1) -/* 021F08 80021308 00000000 */ nop -/* 021F0C 8002130C A0C9003A */ sb $t1, 0x3a($a2) -/* 021F10 80021310 80AA001F */ lb $t2, 0x1f($a1) -/* 021F14 80021314 00000000 */ nop -/* 021F18 80021318 A0CA0039 */ sb $t2, 0x39($a2) -/* 021F1C 8002131C 80AB0030 */ lb $t3, 0x30($a1) -/* 021F20 80021320 00000000 */ nop -/* 021F24 80021324 A0CB0043 */ sb $t3, 0x43($a2) -/* 021F28 80021328 90AC001E */ lbu $t4, 0x1e($a1) -/* 021F2C 8002132C 00000000 */ nop -/* 021F30 80021330 A0CC0038 */ sb $t4, 0x38($a2) -/* 021F34 80021334 80AD0029 */ lb $t5, 0x29($a1) -/* 021F38 80021338 00000000 */ nop -/* 021F3C 8002133C A0CD003B */ sb $t5, 0x3b($a2) -/* 021F40 80021340 80AE002E */ lb $t6, 0x2e($a1) -/* 021F44 80021344 00000000 */ nop -/* 021F48 80021348 A0CE0040 */ sb $t6, 0x40($a2) -/* 021F4C 8002134C 80AF002F */ lb $t7, 0x2f($a1) -/* 021F50 80021350 00000000 */ nop -/* 021F54 80021354 A0CF0041 */ sb $t7, 0x41($a2) -/* 021F58 80021358 80B8002B */ lb $t8, 0x2b($a1) -/* 021F5C 8002135C 00000000 */ nop -/* 021F60 80021360 A0D8003C */ sb $t8, 0x3c($a2) -/* 021F64 80021364 90A40027 */ lbu $a0, 0x27($a1) -/* 021F68 80021368 00000000 */ nop -/* 021F6C 8002136C 10810005 */ beq $a0, $at, .L80021384 -/* 021F70 80021370 00000000 */ nop -/* 021F74 80021374 0C030C7B */ jal func_800C31EC -/* 021F78 80021378 AFA5001C */ sw $a1, 0x1c($sp) -/* 021F7C 8002137C 8FA5001C */ lw $a1, 0x1c($sp) -/* 021F80 80021380 00000000 */ nop -.L80021384: -/* 021F84 80021384 80A4002A */ lb $a0, 0x2a($a1) -/* 021F88 80021388 00000000 */ nop -/* 021F8C 8002138C 04800005 */ bltz $a0, .L800213A4 -/* 021F90 80021390 00000000 */ nop -/* 021F94 80021394 0C007917 */ jal func_8001E45C -/* 021F98 80021398 00000000 */ nop -/* 021F9C 8002139C 10000015 */ b .L800213F4 -/* 021FA0 800213A0 8FBF0014 */ lw $ra, 0x14($sp) -.L800213A4: -/* 021FA4 800213A4 80A40015 */ lb $a0, 0x15($a1) -/* 021FA8 800213A8 00000000 */ nop -/* 021FAC 800213AC 04800005 */ bltz $a0, .L800213C4 -/* 021FB0 800213B0 00000000 */ nop -/* 021FB4 800213B4 0C008500 */ jal func_80021400 -/* 021FB8 800213B8 AFA5001C */ sw $a1, 0x1c($sp) -/* 021FBC 800213BC 8FA5001C */ lw $a1, 0x1c($sp) -/* 021FC0 800213C0 00000000 */ nop -.L800213C4: -/* 021FC4 800213C4 80B90028 */ lb $t9, 0x28($a1) -/* 021FC8 800213C8 3C088012 */ lui $t0, %hi(D_8011AD21) # $t0, 0x8012 -/* 021FCC 800213CC 07200008 */ bltz $t9, .L800213F0 -/* 021FD0 800213D0 3C098012 */ lui $t1, %hi(D_8011AD22) # $t1, 0x8012 -/* 021FD4 800213D4 8108AD21 */ lb $t0, %lo(D_8011AD21)($t0) -/* 021FD8 800213D8 2529AD22 */ addiu $t1, %lo(D_8011AD22) # addiu $t1, $t1, -0x52de -/* 021FDC 800213DC 01091021 */ addu $v0, $t0, $t1 -/* 021FE0 800213E0 804A0000 */ lb $t2, ($v0) -/* 021FE4 800213E4 00000000 */ nop -/* 021FE8 800213E8 254B0001 */ addiu $t3, $t2, 1 -/* 021FEC 800213EC A04B0000 */ sb $t3, ($v0) -.L800213F0: -/* 021FF0 800213F0 8FBF0014 */ lw $ra, 0x14($sp) -.L800213F4: -/* 021FF4 800213F4 27BD0018 */ addiu $sp, $sp, 0x18 -/* 021FF8 800213F8 03E00008 */ jr $ra -/* 021FFC 800213FC 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_80022E18.s b/asm/non_matchings/objects/func_80022E18.s index 9b0542ca..e2390606 100644 --- a/asm/non_matchings/objects/func_80022E18.s +++ b/asm/non_matchings/objects/func_80022E18.s @@ -39,7 +39,7 @@ glabel func_80022E18 /* 023AA8 80022EA8 8CEB0000 */ lw $t3, ($a3) /* 023AAC 80022EAC 00000000 */ nop /* 023AB0 80022EB0 8D640004 */ lw $a0, 4($t3) -/* 023AB4 80022EB4 0C003FEE */ jal gParticlePtrList_addObject +/* 023AB4 80022EB4 0C003FEE */ jal free_object /* 023AB8 80022EB8 00000000 */ nop /* 023ABC 80022EBC 3C078012 */ lui $a3, %hi(gRacers) # $a3, 0x8012 /* 023AC0 80022EC0 24E7AEE4 */ addiu $a3, %lo(gRacers) # addiu $a3, $a3, -0x511c @@ -91,7 +91,7 @@ glabel func_80022E18 /* 023B6C 80022F6C 00000000 */ nop /* 023B70 80022F70 10800007 */ beqz $a0, .L80022F90 /* 023B74 80022F74 8FAC0030 */ lw $t4, 0x30($sp) -/* 023B78 80022F78 0C003FEE */ jal gParticlePtrList_addObject +/* 023B78 80022F78 0C003FEE */ jal free_object /* 023B7C 80022F7C AFA30024 */ sw $v1, 0x24($sp) /* 023B80 80022F80 8FA30024 */ lw $v1, 0x24($sp) /* 023B84 80022F84 00000000 */ nop diff --git a/asm/non_matchings/particles/func_800B26E0.s b/asm/non_matchings/particles/func_800B26E0.s index 31acd00a..72a9a0aa 100644 --- a/asm/non_matchings/particles/func_800B26E0.s +++ b/asm/non_matchings/particles/func_800B26E0.s @@ -516,7 +516,7 @@ glabel func_800B26E0 /* 0B3A88 800B2E88 1DE00009 */ bgtz $t7, .L800B2EB0 /* 0B3A8C 800B2E8C 00000000 */ nop /* 0B3A90 800B2E90 AFA30038 */ sw $v1, 0x38($sp) -/* 0B3A94 800B2E94 0C003FEE */ jal gParticlePtrList_addObject +/* 0B3A94 800B2E94 0C003FEE */ jal free_object /* 0B3A98 800B2E98 AFA60050 */ sw $a2, 0x50($sp) /* 0B3A9C 800B2E9C 8FA30038 */ lw $v1, 0x38($sp) /* 0B3AA0 800B2EA0 3C058012 */ lui $a1, %hi(gParticleUpdateRate) # $a1, 0x8012 diff --git a/asm/non_matchings/printf/_itoa.s b/asm/non_matchings/printf/_itoa.s deleted file mode 100644 index 622dec86..00000000 --- a/asm/non_matchings/printf/_itoa.s +++ /dev/null @@ -1,58 +0,0 @@ -glabel _itoa -/* 0B5540 800B4940 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 0B5544 800B4944 8FAE0048 */ lw $t6, 0x48($sp) -/* 0B5548 800B4948 AFBF001C */ sw $ra, 0x1c($sp) -/* 0B554C 800B494C AFB10018 */ sw $s1, 0x18($sp) -/* 0B5550 800B4950 AFB00014 */ sw $s0, 0x14($sp) -/* 0B5554 800B4954 AFA40038 */ sw $a0, 0x38($sp) -/* 0B5558 800B4958 11C00004 */ beqz $t6, .L800B496C -/* 0B555C 800B495C AFA5003C */ sw $a1, 0x3c($sp) -/* 0B5560 800B4960 3C11800F */ lui $s1, %hi(D_800E8C28) # $s1, 0x800f -/* 0B5564 800B4964 10000003 */ b .L800B4974 -/* 0B5568 800B4968 26318C28 */ addiu $s1, %lo(D_800E8C28) # addiu $s1, $s1, -0x73d8 -.L800B496C: -/* 0B556C 800B496C 3C11800F */ lui $s1, %hi(D_800E8C00) # $s1, 0x800f -/* 0B5570 800B4970 26318C00 */ addiu $s1, %lo(D_800E8C00) # addiu $s1, $s1, -0x7400 -.L800B4974: -/* 0B5574 800B4974 8FB80038 */ lw $t8, 0x38($sp) -/* 0B5578 800B4978 8FB9003C */ lw $t9, 0x3c($sp) -/* 0B557C 800B497C 00C08025 */ move $s0, $a2 -/* 0B5580 800B4980 17000003 */ bnez $t8, .L800B4990 -/* 0B5584 800B4984 24080000 */ li $t0, 0 -/* 0B5588 800B4988 1320001A */ beqz $t9, .L800B49F4 -/* 0B558C 800B498C 8FBF001C */ lw $ra, 0x1c($sp) -.L800B4990: -/* 0B5590 800B4990 AFA80020 */ sw $t0, 0x20($sp) -/* 0B5594 800B4994 AFA70024 */ sw $a3, 0x24($sp) -.L800B4998: -/* 0B5598 800B4998 8FA40038 */ lw $a0, 0x38($sp) -.L800B499C: -/* 0B559C 800B499C 8FA5003C */ lw $a1, 0x3c($sp) -/* 0B55A0 800B49A0 8FA60020 */ lw $a2, 0x20($sp) -/* 0B55A4 800B49A4 8FA70024 */ lw $a3, 0x24($sp) -/* 0B55A8 800B49A8 0C033AA3 */ jal __ull_rem -/* 0B55AC 800B49AC 2610FFFF */ addiu $s0, $s0, -1 -/* 0B55B0 800B49B0 00715021 */ addu $t2, $v1, $s1 -/* 0B55B4 800B49B4 914B0000 */ lbu $t3, ($t2) -/* 0B55B8 800B49B8 00000000 */ nop -/* 0B55BC 800B49BC A20B0000 */ sb $t3, ($s0) -/* 0B55C0 800B49C0 8FA70024 */ lw $a3, 0x24($sp) -/* 0B55C4 800B49C4 8FA60020 */ lw $a2, 0x20($sp) -/* 0B55C8 800B49C8 8FA5003C */ lw $a1, 0x3c($sp) -/* 0B55CC 800B49CC 8FA40038 */ lw $a0, 0x38($sp) -/* 0B55D0 800B49D0 0C033AB2 */ jal __ull_div -/* 0B55D4 800B49D4 00000000 */ nop -/* 0B55D8 800B49D8 AFA20038 */ sw $v0, 0x38($sp) -/* 0B55DC 800B49DC AFA3003C */ sw $v1, 0x3c($sp) -/* 0B55E0 800B49E0 1440FFED */ bnez $v0, .L800B4998 -/* 0B55E4 800B49E4 00606825 */ move $t5, $v1 -/* 0B55E8 800B49E8 15A0FFEC */ bnez $t5, .L800B499C -/* 0B55EC 800B49EC 8FA40038 */ lw $a0, 0x38($sp) -/* 0B55F0 800B49F0 8FBF001C */ lw $ra, 0x1c($sp) -.L800B49F4: -/* 0B55F4 800B49F4 02001025 */ move $v0, $s0 -/* 0B55F8 800B49F8 8FB00014 */ lw $s0, 0x14($sp) -/* 0B55FC 800B49FC 8FB10018 */ lw $s1, 0x18($sp) -/* 0B5600 800B4A00 03E00008 */ jr $ra -/* 0B5604 800B4A04 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/asm/non_matchings/racer/func_80059BF0.s b/asm/non_matchings/racer/func_80059BF0.s deleted file mode 100644 index f72dcac4..00000000 --- a/asm/non_matchings/racer/func_80059BF0.s +++ /dev/null @@ -1,146 +0,0 @@ -glabel func_80059BF0 -/* 05A7F0 80059BF0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 05A7F4 80059BF4 AFBF0014 */ sw $ra, 0x14($sp) -/* 05A7F8 80059BF8 AFA5002C */ sw $a1, 0x2c($sp) -/* 05A7FC 80059BFC 8C880064 */ lw $t0, 0x64($a0) -/* 05A800 80059C00 00803025 */ move $a2, $a0 -/* 05A804 80059C04 85040164 */ lh $a0, 0x164($t0) -/* 05A808 80059C08 AFA60028 */ sw $a2, 0x28($sp) -/* 05A80C 80059C0C 0C01C1FE */ jal coss_f -/* 05A810 80059C10 AFA80020 */ sw $t0, 0x20($sp) -/* 05A814 80059C14 8FA80020 */ lw $t0, 0x20($sp) -/* 05A818 80059C18 E7A00018 */ swc1 $f0, 0x18($sp) -/* 05A81C 80059C1C 850F0166 */ lh $t7, 0x166($t0) -/* 05A820 80059C20 850E0162 */ lh $t6, 0x162($t0) -/* 05A824 80059C24 00000000 */ nop -/* 05A828 80059C28 01CF2023 */ subu $a0, $t6, $t7 -/* 05A82C 80059C2C 0004C400 */ sll $t8, $a0, 0x10 -/* 05A830 80059C30 0C01C1FE */ jal coss_f -/* 05A834 80059C34 00182403 */ sra $a0, $t8, 0x10 -/* 05A838 80059C38 C7A40018 */ lwc1 $f4, 0x18($sp) -/* 05A83C 80059C3C 44803000 */ mtc1 $zero, $f6 -/* 05A840 80059C40 46040302 */ mul.s $f12, $f0, $f4 -/* 05A844 80059C44 8FA60028 */ lw $a2, 0x28($sp) -/* 05A848 80059C48 8FA80020 */ lw $t0, 0x20($sp) -/* 05A84C 80059C4C 3C098012 */ lui $t1, %hi(D_8011D59E) # $t1, 0x8012 -/* 05A850 80059C50 4606603C */ c.lt.s $f12, $f6 -/* 05A854 80059C54 46006086 */ mov.s $f2, $f12 -/* 05A858 80059C58 45000007 */ bc1f .L80059C78 -/* 05A85C 80059C5C 2529D59E */ addiu $t1, %lo(D_8011D59E) # addiu $t1, $t1, -0x2a62 -/* 05A860 80059C60 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 05A864 80059C64 44815800 */ mtc1 $at, $f11 -/* 05A868 80059C68 44805000 */ mtc1 $zero, $f10 -/* 05A86C 80059C6C 46006221 */ cvt.d.s $f8, $f12 -/* 05A870 80059C70 462A4402 */ mul.d $f16, $f8, $f10 -/* 05A874 80059C74 462080A0 */ cvt.s.d $f2, $f16 -.L80059C78: -/* 05A878 80059C78 852E0000 */ lh $t6, ($t1) -/* 05A87C 80059C7C 8FAF002C */ lw $t7, 0x2c($sp) -/* 05A880 80059C80 3C014188 */ li $at, 0x41880000 # 17.000000 -/* 05A884 80059C84 44810000 */ mtc1 $at, $f0 -/* 05A888 80059C88 01CFC023 */ subu $t8, $t6, $t7 -/* 05A88C 80059C8C 46001482 */ mul.s $f18, $f2, $f0 -/* 05A890 80059C90 A5380000 */ sh $t8, ($t1) -/* 05A894 80059C94 85240000 */ lh $a0, ($t1) -/* 05A898 80059C98 00000000 */ nop -/* 05A89C 80059C9C 1C80005C */ bgtz $a0, .L80059E10 -/* 05A8A0 80059CA0 46120081 */ sub.s $f2, $f0, $f18 -/* 05A8A4 80059CA4 1C80005A */ bgtz $a0, .L80059E10 -/* 05A8A8 80059CA8 3C058012 */ lui $a1, %hi(D_8011D59C) # $a1, 0x8012 -/* 05A8AC 80059CAC 80A5D59C */ lb $a1, %lo(D_8011D59C)($a1) -/* 05A8B0 80059CB0 3C0E8012 */ lui $t6, %hi(D_8011D5A0) # $t6, 0x8012 -/* 05A8B4 80059CB4 25CED5A0 */ addiu $t6, %lo(D_8011D5A0) # addiu $t6, $t6, -0x2a60 -/* 05A8B8 80059CB8 3C0D8012 */ lui $t5, %hi(D_8011D5A0) # $t5, 0x8012 -/* 05A8BC 80059CBC 3C0C8012 */ lui $t4, %hi(gGhostData) # $t4, 0x8012 -/* 05A8C0 80059CC0 3C0A8012 */ lui $t2, %hi(D_8011D59C) # $t2, 0x8012 -/* 05A8C4 80059CC4 0005C840 */ sll $t9, $a1, 1 -/* 05A8C8 80059CC8 032E1821 */ addu $v1, $t9, $t6 -/* 05A8CC 80059CCC 254AD59C */ addiu $t2, %lo(D_8011D59C) # addiu $t2, $t2, -0x2a64 -/* 05A8D0 80059CD0 258CD590 */ addiu $t4, %lo(gGhostData) # addiu $t4, $t4, -0x2a70 -/* 05A8D4 80059CD4 25ADD5A0 */ addiu $t5, %lo(D_8011D5A0) # addiu $t5, $t5, -0x2a60 -/* 05A8D8 80059CD8 240B000C */ li $t3, 12 -.L80059CDC: -/* 05A8DC 80059CDC 84670000 */ lh $a3, ($v1) -/* 05A8E0 80059CE0 248F001E */ addiu $t7, $a0, 0x1e -/* 05A8E4 80059CE4 28E10168 */ slti $at, $a3, 0x168 -/* 05A8E8 80059CE8 1420000D */ bnez $at, .L80059D20 -/* 05A8EC 80059CEC A52F0000 */ sh $t7, ($t1) -/* 05A8F0 80059CF0 0C01BAAC */ jal is_postrace_viewport_active -/* 05A8F4 80059CF4 00000000 */ nop -/* 05A8F8 80059CF8 3C0A8012 */ lui $t2, %hi(D_8011D59C) # $t2, 0x8012 -/* 05A8FC 80059CFC 14400044 */ bnez $v0, .L80059E10 -/* 05A900 80059D00 254AD59C */ addiu $t2, %lo(D_8011D59C) # addiu $t2, $t2, -0x2a64 -/* 05A904 80059D04 81590000 */ lb $t9, ($t2) -/* 05A908 80059D08 3C018012 */ lui $at, %hi(D_8011D5A8) # $at, 0x8012 -/* 05A90C 80059D0C 00197040 */ sll $t6, $t9, 1 -/* 05A910 80059D10 002E0821 */ addu $at, $at, $t6 -/* 05A914 80059D14 24180001 */ li $t8, 1 -/* 05A918 80059D18 1000003D */ b .L80059E10 -/* 05A91C 80059D1C A438D5A8 */ sh $t8, %lo(D_8011D5A8)($at) -.L80059D20: -/* 05A920 80059D20 00EB0019 */ multu $a3, $t3 -/* 05A924 80059D24 0005C880 */ sll $t9, $a1, 2 -/* 05A928 80059D28 0199C021 */ addu $t8, $t4, $t9 -/* 05A92C 80059D2C 4459F800 */ cfc1 $t9, $31 -/* 05A930 80059D30 C4C4000C */ lwc1 $f4, 0xc($a2) -/* 05A934 80059D34 37210003 */ ori $at, $t9, 3 -/* 05A938 80059D38 38210002 */ xori $at, $at, 2 -/* 05A93C 80059D3C 44C1F800 */ ctc1 $at, $31 -/* 05A940 80059D40 8F0E0000 */ lw $t6, ($t8) -/* 05A944 80059D44 460021A4 */ cvt.w.s $f6, $f4 -/* 05A948 80059D48 44183000 */ mfc1 $t8, $f6 -/* 05A94C 80059D4C 00007812 */ mflo $t7 -/* 05A950 80059D50 01EE1021 */ addu $v0, $t7, $t6 -/* 05A954 80059D54 A4580000 */ sh $t8, ($v0) -/* 05A958 80059D58 44D9F800 */ ctc1 $t9, $31 -/* 05A95C 80059D5C C4C80010 */ lwc1 $f8, 0x10($a2) -/* 05A960 80059D60 00000000 */ nop -/* 05A964 80059D64 46024280 */ add.s $f10, $f8, $f2 -/* 05A968 80059D68 444FF800 */ cfc1 $t7, $31 -/* 05A96C 80059D6C 00000000 */ nop -/* 05A970 80059D70 35E10003 */ ori $at, $t7, 3 -/* 05A974 80059D74 38210002 */ xori $at, $at, 2 -/* 05A978 80059D78 44C1F800 */ ctc1 $at, $31 -/* 05A97C 80059D7C 37210003 */ ori $at, $t9, 3 -/* 05A980 80059D80 46005424 */ cvt.w.s $f16, $f10 -/* 05A984 80059D84 38210002 */ xori $at, $at, 2 -/* 05A988 80059D88 440E8000 */ mfc1 $t6, $f16 -/* 05A98C 80059D8C 44CFF800 */ ctc1 $t7, $31 -/* 05A990 80059D90 A44E0002 */ sh $t6, 2($v0) -/* 05A994 80059D94 C4D20014 */ lwc1 $f18, 0x14($a2) -/* 05A998 80059D98 44C1F800 */ ctc1 $at, $31 -/* 05A99C 80059D9C 00000000 */ nop -/* 05A9A0 80059DA0 46009124 */ cvt.w.s $f4, $f18 -/* 05A9A4 80059DA4 44182000 */ mfc1 $t8, $f4 -/* 05A9A8 80059DA8 44D9F800 */ ctc1 $t9, $31 -/* 05A9AC 80059DAC A4580004 */ sh $t8, 4($v0) -/* 05A9B0 80059DB0 850E0160 */ lh $t6, 0x160($t0) -/* 05A9B4 80059DB4 84CF0000 */ lh $t7, ($a2) -/* 05A9B8 80059DB8 00000000 */ nop -/* 05A9BC 80059DBC 01EEC821 */ addu $t9, $t7, $t6 -/* 05A9C0 80059DC0 A459000A */ sh $t9, 0xa($v0) -/* 05A9C4 80059DC4 850F0162 */ lh $t7, 0x162($t0) -/* 05A9C8 80059DC8 84D80002 */ lh $t8, 2($a2) -/* 05A9CC 80059DCC 00000000 */ nop -/* 05A9D0 80059DD0 030F7021 */ addu $t6, $t8, $t7 -/* 05A9D4 80059DD4 A44E0008 */ sh $t6, 8($v0) -/* 05A9D8 80059DD8 85180164 */ lh $t8, 0x164($t0) -/* 05A9DC 80059DDC 84D90004 */ lh $t9, 4($a2) -/* 05A9E0 80059DE0 00000000 */ nop -/* 05A9E4 80059DE4 03387821 */ addu $t7, $t9, $t8 -/* 05A9E8 80059DE8 A44F0006 */ sh $t7, 6($v0) -/* 05A9EC 80059DEC 81450000 */ lb $a1, ($t2) -/* 05A9F0 80059DF0 85240000 */ lh $a0, ($t1) -/* 05A9F4 80059DF4 00057040 */ sll $t6, $a1, 1 -/* 05A9F8 80059DF8 01AE1821 */ addu $v1, $t5, $t6 -/* 05A9FC 80059DFC 84790000 */ lh $t9, ($v1) -/* 05AA00 80059E00 00000000 */ nop -/* 05AA04 80059E04 27380001 */ addiu $t8, $t9, 1 -/* 05AA08 80059E08 1880FFB4 */ blez $a0, .L80059CDC -/* 05AA0C 80059E0C A4780000 */ sh $t8, ($v1) -.L80059E10: -/* 05AA10 80059E10 8FBF0014 */ lw $ra, 0x14($sp) -/* 05AA14 80059E14 27BD0028 */ addiu $sp, $sp, 0x28 -/* 05AA18 80059E18 03E00008 */ jr $ra -/* 05AA1C 80059E1C 00000000 */ nop - diff --git a/include/level_object_entries.h b/include/level_object_entries.h index 7f527c24..220b2c4f 100644 --- a/include/level_object_entries.h +++ b/include/level_object_entries.h @@ -673,6 +673,34 @@ typedef struct LevelObjectEntry_WavePower { u16 unkC; } LevelObjectEntry_WavePower; +typedef struct LevelObjectEntry_CharacterSelect { + LevelObjectEntryCommon common; + u8 pad8[0xA]; + s8 unk12; + s8 unk13; + s8 unk14; + s8 unk15; + u8 unk16; + s8 unk17; + u8 unk18; + s8 pad19[5]; + u8 unk1E; + s8 unk1F; + s8 pad20[4]; + s16 unk24; + s8 unk26; + u8 unk27; + s8 unk28; + s8 unk29; + s8 unk2A; + s8 unk2B; + s8 unk2C; + s8 unk2D; + s8 unk2E; + s8 unk2F; + s8 unk30; +} LevelObjectEntry_CharacterSelect; + typedef struct LevelObjectEntry { union { LevelObjectEntry_Racer racer; @@ -765,6 +793,7 @@ typedef struct LevelObjectEntry { LevelObjectEntry8003FC44 unk8003FC44; LevelObjectEntry800BF524 unk800BF524; LevelObjectEntry_WavePower wavePower; + LevelObjectEntry_CharacterSelect characterSelect; }; } LevelObjectEntry; diff --git a/include/structs.h b/include/structs.h index 8e0b1821..355bfe92 100644 --- a/include/structs.h +++ b/include/structs.h @@ -197,11 +197,11 @@ typedef struct Racer { /* Unknown Size */ typedef struct Settings4C { - u8 unk0; - u8 unk1; - s8 unk2; + u8 unk0; //courseId? + u8 unk1; // This value + 8 is cutsceneId index? gGameCurrentCutscene = D_80121250[D_80121250[1] + 8]; + s8 unk2; //mapId? u8 pad3[0xC]; - u8 unkF; + u8 unkF; //entranceId? } Settings4C; #define TAJ_FLAGS_CAR_CHAL_UNLOCKED 0x01 @@ -914,7 +914,7 @@ typedef struct Object_Animation { /* 0x2D */ u8 unk2D; /* 0x2E */ u8 unk2E; /* 0x2F */ u8 unk2F; - /* 0x30 */ u8 unk30; + /* 0x30 */ s8 unk30; /* 0x31 */ u8 unk31; /* 0x32 */ u8 unk32; /* 0x33 */ u8 unk33; @@ -1032,8 +1032,14 @@ typedef struct Object_CharacterFlag { typedef struct Object_AnimCamera { /* 0x00 */ u8 pad0[0x30]; /* 0x30 */ s8 unk30; - /* 0x31 */ u8 pad31[0x13]; - /* 0x44 */ s8 unk44; + /* 0x31 */ u8 pad31[0xB]; + /* 0x3C */ s32 unk3C; + /* 0x40 */ u8 pad40[4]; + /* 0x44 */ u8 unk44; + /* 0x45 */ u8 pad45[5]; + /* 0x4A */ s16 unk4A; + /* 0x4C */ u8 pad4C[8]; + /* 0x54 */ s8 unk54; } Object_AnimCamera; typedef struct Object_InfoPoint { @@ -1542,6 +1548,28 @@ typedef struct Object_8001E89C_64 { /* 0x0C */ Object_8001E89C_64_C *unkC; } Object_8001E89C_64; +typedef struct Object_CharacterSelect { + u8 pad0[0x14]; + f32 unk14; + u8 pad18[0x14]; + u8 unk2C; + u8 pad2D[2]; + u8 unk2F; + u8 pad30[6]; + s16 unk36; + u8 unk38; + u8 unk39; + s8 unk3A; + s8 unk3B; + s8 unk3C; + s8 pad3D[2]; + s8 unk3F; + s8 unk40; + s8 unk41; + s8 pad42; + s8 unk43; +} Object_CharacterSelect; + typedef struct Object_64 { union { Object_Laser laser; @@ -1587,6 +1615,7 @@ typedef struct Object_64 { Object_AnimatedObject animatedObject; Object_WizpigRocket wizpigRocket; Object_8001E89C_64 obj8001E89C_64; + Object_CharacterSelect characterSelect; }; } Object_64; diff --git a/src/audiosfx.c b/src/audiosfx.c index 0ce0b2ce..c8b44bce 100644 --- a/src/audiosfx.c +++ b/src/audiosfx.c @@ -124,20 +124,16 @@ void func_8000410C(ALSoundState *state) { _removeEvents(&gAlSndPlayerPtr->evtq, state, 0xFFFF); } -#ifdef NON_EQUIVALENT -//There's some weird shenanigans with these structs that needs to be figured out. void func_8000418C(ALVoiceState *voiceState) { - ALSndpEvent evt; - s32 pad; - evt.pitch.pitch = alCents2Ratio(((ALSound *)voiceState->voice.node.prev)->keyMap->detune) * voiceState->vibrato; - evt.pitch.type = AL_SEQP_STOP_EVT; - evt.pitch.state = voiceState; - evt.msg.msg.loop.count = evt.msg.msg.tempo.ticks; - alEvtqPostEvent(&gAlSndPlayerPtr->evtq, &evt.msg, 33333); + ALEvent_unk8000418C evt; + f32 sp1C; + + sp1C = alCents2Ratio(((ALLink_unk8000418C*)voiceState->voice.node.prev->prev)->unk5) * voiceState->vibrato; + evt.type = AL_SEQP_STOP_EVT; + evt.unk4 = voiceState; + evt.unk8 = *((s32*)&sp1C); // But why tho? + alEvtqPostEvent(&gAlSndPlayerPtr->evtq, (ALEvent *) &evt, 33333); } -#else -GLOBAL_ASM("asm/non_matchings/audiosfx/func_8000418C.s") -#endif static void _removeEvents(ALEventQueue *evtq, ALSoundState *state, u16 eventType) { ALLink *thisNode; diff --git a/src/audiosfx.h b/src/audiosfx.h index fc12ff21..56f867ee 100644 --- a/src/audiosfx.h +++ b/src/audiosfx.h @@ -40,6 +40,18 @@ typedef struct unk800DC6BC_40 { u8 pad0C[0x38]; } unk800DC6BC_40; //ALSoundState +typedef struct ALLink_unk8000418C { + u8 pad0[5]; + s8 unk5; +} ALLink_unk8000418C; + +typedef struct ALEvent_unk8000418C { + s16 type; + ALVoiceState *unk4; + s32 unk8; + u8 pad[4]; // Not sure how big this is supposed to be. +} ALEvent_unk8000418C; + /* Unknown Size */ typedef struct unk800DC6BC { ALPlayer node; @@ -128,6 +140,7 @@ void func_800049D8(void); void func_800049F8(s32 soundMask, s16 type, u32 volume); u16 get_sound_channel_volume(u8 channel); void set_sound_channel_volume(u8 channel, u16 volume); +void func_8000418C(ALVoiceState *voiceState); // Non Matching void func_80004520(ALSoundState *); diff --git a/src/game_ui.c b/src/game_ui.c index 7c8b86e5..0a4688fb 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -122,10 +122,9 @@ u16 D_800E2684[118] = { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, }; -//!@bug Not every attribute is initialised, but since bss is initialised as 0, nothing happens. unk800E2770 D_800E2770[2] = { - { 0, 0xFD, 0, 0, 0, 0, 0 }, - { 0, 0xFF, 0, 0, 0, 0, 0 }, + { 0x00FD, 0, 0, NULL, 0, 0, 0, 0, 0 }, + { 0x00FF, 0, 0, NULL, 0, 0, 0, 0, 0 }, }; u8 gShowCourseDirections = TRUE; @@ -373,7 +372,7 @@ void free_hud(void) { } else if (gAssetHudElementIds[i] & 0x8000) { free_sprite((Sprite *) gAssetHudElements->entry[i]); } else if (gAssetHudElementIds[i] & 0x4000) { - gParticlePtrList_addObject((Object *) gAssetHudElements->entry[i]); + free_object((Object *) gAssetHudElements->entry[i]); } else { func_8005FF40((ObjectModel **) gAssetHudElements->entry[i]); } @@ -594,7 +593,60 @@ void func_800A0B74(void) { } } -GLOBAL_ASM("asm/non_matchings/game_ui/func_800A0BD4.s") +void func_800A0BD4(s32 updateRate) { + s32 temp; + s32 i; + + if (D_80126D74 > 0) { + D_80126D74 -= updateRate; + if (D_80126D74 <= 0) { + D_80126D74 = 0; + if (gHUDVoiceSoundMask == 0) { + play_sound_global(D_80126D7C, &gHUDVoiceSoundMask); + } + } + } + for(i = 0; i < 2; i++) { + if (D_800E2770[i].unk2) { + if (D_800E2770[i].unk4 == 0) { + play_sound_global(D_800E2770[i].unk0, (s32 *) &D_800E2770[i].unk4); + } + func_80001FB8(D_800E2770[i].unk0, D_800E2770[i].unk4, D_800E2770[i].unk2); + if (D_800E2770[i].unk3 > 0) { + temp = D_800E2770[i].unk3 * updateRate; + if ((127 - temp) >= D_800E2770[i].unk2) { + D_800E2770[i].unk2 += temp; + } else { + D_800E2770[i].unk3 = 0; + D_800E2770[i].unk2 = 0x7F; + } + } else if (D_800E2770[i].unk3 < 0) { + temp = D_800E2770[i].unk3 * updateRate; + if (-temp < D_800E2770[i].unk2) { + D_800E2770[i].unk2 += temp; + } else { + D_800E2770[i].unk3 = 0; + D_800E2770[i].unk2 = 0; + } + } + } else { + if (D_800E2770[i].unk4) { + func_8000488C(D_800E2770[i].unk4); + D_800E2770[i].unk4 = 0; + } + } + } + if ((D_80126D70 != 0) && (D_800E2770[0].unk2 == 0)) { + D_80126D70 = 0; + if (gNumActivePlayers == 1) { + set_sound_channel_count(8); + } else if (gNumActivePlayers == 2) { + set_sound_channel_count(12); + } else { + set_sound_channel_count(16); + } + } +} void func_800A0DC0(s32 arg0, Object *arg1, s32 updateRate) { Object_Racer *racer = &arg1->unk64->racer; @@ -1130,14 +1182,14 @@ GLOBAL_ASM("asm/non_matchings/game_ui/func_800A277C.s") void func_800A36CC(u8 arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) { s32 var_a3; s32 i; - u8 *temp_v0_2; + UNUSED u8 *temp_v0_2; Object_68 **unk68; Object *hud20; if (is_in_time_trial()) { hud20 = gAssetHudElements->entry[20]; if (hud20 != NULL) { - unk68 = hud20->unk68[0]; + unk68 = (Object_68 **) hud20->unk68[0]; var_a3 = unk68[0]->unk28; for (i = 0; i < var_a3; i++) { @@ -1414,7 +1466,35 @@ void render_treasure_hud(Object_Racer *racer) { D_80126CD5 = 0; } -GLOBAL_ASM("asm/non_matchings/game_ui/func_800A47A0.s") +void func_800A47A0(Object_Racer *racer, s32 updateRate) { + s32 i; + s32 prevUnk5D0; + + gCurrentHud->unk5D0 = (s32) gCurrentHud->unk5D0; //Rounds float down to it's int value. + prevUnk5D0 = gCurrentHud->unk5D0; + for(i = 0; i < 8; i++) { + if (i >= racer->silverCoinCount) { + D_800E2834 = COLOUR_RGBA32(128, 128, 128, 128); + } + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk5C0); + gCurrentHud->unk5D0 -= gCurrentHud->unk5DC; + } + if (racer->silverCoinCount == 8) { + if (gCurrentHud->unk5DB < 30) { + gCurrentHud->unk5DB += updateRate; + } + if (gCurrentHud->unk5DA == 0) { + if (gCurrentHud->unk5DB >= 30) { + gCurrentHud->unk5DA = 1; + if (gHUDVoiceSoundMask == 0) { + play_sound_global(SOUND_VOICE_TT_GO_FOR_IT, &gHUDVoiceSoundMask); + } + } + } + } + gCurrentHud->unk5D0 = prevUnk5D0; + D_800E2834 = COLOUR_RGBA32(255, 255, 255, 254); +} /** * Plays the race finish fanfare and displays what position you finished @@ -1879,37 +1959,31 @@ void render_weapon_hud(Object *obj, s32 updateRate) { } } -#ifdef NON_EQUIVALENT -void func_800A7A60(Object *obj) { - unk80126CDC *hud; - unk80068514_arg4 *arg4; +void func_800A7A60(Object *racerObj) { + unk80068514_arg4 *entry; + unk80126CDC *temp; Object_Racer *racer; s32 hudElementIndex; - f32 *new_var; - racer = &obj->unk64->racer; - if (racer->magnetTargetObj != NULL) { - if (get_current_viewport() == racer->playerIndex) { - hud = gCurrentHud; - hudElementIndex = hud->unk226; - if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } - new_var = &racer->magnetTargetObj->segment.trans.x_position; - hud->unk22C = *new_var; - hud->unk230 = racer->magnetTargetObj->segment.trans.y_position; - hud->unk234 = racer->magnetTargetObj->segment.trans.z_position; - arg4 = (unk80068514_arg4 *) gAssetHudElements->entry[hudElementIndex]; - if (arg4 != NULL) { - gAssetHudElementStaleCounter[hudElementIndex] = 0; - func_80066CDC(&gHUDCurrDisplayList, &gHUDCurrMatrix); - func_80068408(&gHUDCurrDisplayList, &gHUDCurrMatrix); - render_sprite_billboard(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, hud->unk220, arg4, RENDER_Z_UPDATE); - } + if(entry){} // Fakematch + racer = &racerObj->unk64->racer; + if (racer->magnetTargetObj != NULL && get_current_viewport() == racer->playerIndex) { + temp = gCurrentHud; + temp->unk22C = racer->magnetTargetObj->segment.trans.x_position; + temp->unk230 = racer->magnetTargetObj->segment.trans.y_position; + temp->unk234 = racer->magnetTargetObj->segment.trans.z_position; + hudElementIndex = temp->unk226; + entry = gAssetHudElements->entry[hudElementIndex]; + if (entry == NULL) { + return; } + gAssetHudElementStaleCounter[hudElementIndex] = 0; + temp = (unk80126CDC *) &temp->unk220; + func_80066CDC(&gHUDCurrDisplayList, &gHUDCurrMatrix); + func_80068408(&gHUDCurrDisplayList, &gHUDCurrMatrix); + render_sprite_billboard(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, (Object *) temp, entry, RENDER_Z_UPDATE); } } -#else -GLOBAL_ASM("asm/non_matchings/game_ui/func_800A7A60.s") -#endif /** * Render the lap time on the top right. @@ -2082,7 +2156,7 @@ void render_minimap_and_misc_hud(Gfx **dList, MatrixS **mtx, Vertex **vtx, s32 u } else if (gAssetHudElementIds[i] & 0x8000) { free_sprite((Sprite *) gAssetHudElements->entry[i]); } else if (gAssetHudElementIds[i] & 0x4000) { - gParticlePtrList_addObject((Object *) gAssetHudElements->entry[i]); + free_object((Object *) gAssetHudElements->entry[i]); } else { func_8005FF40((ObjectModel **) gAssetHudElements->entry[i]); } diff --git a/src/game_ui.h b/src/game_ui.h index ad9e4ec0..d839f7ff 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -276,7 +276,15 @@ typedef struct unk80126CDC { struct unk80126CDC *unk580; u8 unk584[0x1C]; struct unk80126CDC *unk5A0; - u8 unk484[0x7C]; + u8 unk5A4[0x1C]; + struct unk80126CDC *unk5C0; + u8 unk5C1[0xC]; + f32 unk5D0; + u8 unk5D4[0x6]; + s8 unk5DA; + s8 unk5DB; + s8 unk5DC; + u8 unk5DD[0x43]; struct unk80126CDC *unk620; u8 unk624[0x14]; s16 unk638; @@ -330,11 +338,10 @@ typedef struct unk800E1E64 { /* Size: 0x10 bytes */ typedef struct unk800E2770 { - s8 unk0; - s8 unk1; - s8 unk2; + u16 unk0; + u8 unk2; s8 unk3; - s32 unk4; //soundMask? + s32 *unk4; //soundmask? s32 unk8; s8 unkC; s8 unkD; @@ -396,11 +403,13 @@ void func_800A1C04(s32 arg0, Object *obj, s32 updateRate); void func_800A22F4(Object_Racer *racer, void *unused); void free_hud(void); void func_800A36CC(u8, u8, u8, u8, u8); +void func_800A0BD4(s32 updateRate); +void func_800A47A0(Object_Racer *racer, s32 updateRate); +void func_800A7A60(Object *racerObj); // Non Matching void func_800A14F0(Object *, s32); void func_800A4C44(Object_Racer *racer, s32 updateRate); -void func_800A47A0(Object_Racer *obj, s32 updateRate); void func_800A718C(Object_64 *obj); void func_800AA600(Gfx **dList, MatrixS **mtx, Vertex **vtxList, unk80126CDC **arg3); void func_800A7FBC(s32, s32, s32 minutes, s32 seconds, s32 hundredths, s32); @@ -408,8 +417,6 @@ void func_800A1248(s32, Object*, s32); void func_800A277C(s32, Object*, s32); void func_800A6254(Object_64* obj, s32 updateRate); void func_800A6E30(Object_64* obj, s32 updateRate); -void func_800A7A60(Object*); -void func_800A0BD4(s32); void func_800A19A4(Object_Racer* racer, s32 updateRate); void func_800A1E48(Object*, s32); void render_treasure_hud(Object_Racer*); diff --git a/src/menu.c b/src/menu.c index ff7a51d0..08090bc1 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2893,7 +2893,6 @@ void render_options_menu_ui(UNUSED s32 updateRate) { } } -#ifdef NON_MATCHING s32 menu_options_loop(s32 updateRate) { s32 buttonsPressed; s32 i; @@ -2911,16 +2910,16 @@ s32 menu_options_loop(s32 updateRate) { } } - if (gMenuDelay >= -19 && gMenuDelay < 35) { + if (gMenuDelay > -20 && gMenuDelay < 35) { render_options_menu_ui(updateRate); } buttonsPressed = 0; analogX = 0; analogY = 0; if (gIgnorePlayerInputTime == 0 && gMenuDelay == 0) { - s8* xAxisPtr; - s8* yAxisPtr; - for (i = 0, xAxisPtr = gControllersXAxisDirection, yAxisPtr = gControllersYAxisDirection; i < 4; i++) { + s8 *xAxisPtr; + s8 *yAxisPtr; + for (i = 0, xAxisPtr = gControllersXAxisDirection, yAxisPtr = gControllersYAxisDirection; i < MAXCONTROLLERS; i++) { buttonsPressed |= get_buttons_pressed_from_player(i); analogX += *(xAxisPtr++); analogY += *(yAxisPtr++); @@ -2937,23 +2936,26 @@ s32 menu_options_loop(s32 updateRate) { gMenuDelay = 31; play_sound_global(SOUND_SELECT2, NULL); - } else if ((D_800DF460 == 0) && (analogX != 0)) { - s32 curLanguage = get_language(); - if (!(curLanguage >> 31) && (curLanguage == LANGUAGE_ENGLISH)) { - set_language(LANGUAGE_FRENCH); - } else { - set_language(LANGUAGE_ENGLISH); + } else if (D_800DF460 == 0 && analogX != 0) { + switch ((u64) get_language()) { + case LANGUAGE_ENGLISH: + set_language(LANGUAGE_FRENCH); + break; + default: + set_language(LANGUAGE_ENGLISH); + break; } play_sound_global(SOUND_MENU_PICK2, NULL); - } else if ((D_800DF460 == 1) && (analogX != 0)) { + } else if (D_800DF460 == 1 && analogX != 0) { if (sEepromSettings & 0x2000000) { + //0x2000000 SUBTITLES ENABLED? play_sound_global(SOUND_MENU_PICK2, NULL); - unset_eeprom_settings_value(0x02000000); + unset_eeprom_settings_value(0x2000000); set_subtitles(0); gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESOFF]; } else { play_sound_global(SOUND_MENU_PICK2, NULL); - set_eeprom_settings_value(0x02000000); + set_eeprom_settings_value(0x2000000); set_subtitles(1); gOptionMenuStrings[1] = gMenuText[ASSET_MENU_TEXT_SUBTITLESON]; } @@ -2975,7 +2977,7 @@ s32 menu_options_loop(s32 updateRate) { play_sound_global(SOUND_MENU_PICK2, NULL); } } - if (gMenuDelay >= 31) { + if (gMenuDelay > 30) { // Change screen to a sub-menu if (D_800DF460 == 2) { unload_big_font_1(); @@ -3001,10 +3003,6 @@ s32 menu_options_loop(s32 updateRate) { gIgnorePlayerInputTime = 0; return 0; } -#else -GLOBAL_ASM("asm/non_matchings/menu/menu_options_loop.s") -#endif - /** * Explicitly says to unload the ASSET_FONTS_BIGFONT type. @@ -7804,7 +7802,116 @@ void menu_11_init(void) { } GLOBAL_ASM("asm/non_matchings/menu/func_80096978.s") -GLOBAL_ASM("asm/non_matchings/menu/menu_results_loop.s") + +s32 menu_results_loop(s32 updateRate) { + s32 playBackSound; + s32 playSelectSound; + s32 playPickSound; + s32 prevOption; + + playBackSound = FALSE; + playSelectSound = FALSE; + playPickSound = FALSE; + gOptionBlinkTimer = (gOptionBlinkTimer + updateRate) & 0x3F; + func_8008E4EC(); + if (D_801263E0 <= 0) { + gOpacityDecayTimer += updateRate; + if (gOpacityDecayTimer >= 60) { + D_801263E0 = 1; + } else if (D_801263E0 < 0 && gOpacityDecayTimer > 20) { + D_801263E0 = 0; + play_sound_global(SOUND_WHOOSH1, NULL); + } + } + if (gMenuDelay < 20) { + if (D_801263E0 <= 0) { + if (gOpacityDecayTimer >= 20) { + func_80096978(updateRate, 1.0f - ((f32) (gOpacityDecayTimer - 20) / 40.0f)); + } + } else { + func_80096978(updateRate, 0.0f); + } + } + if (gMenuDelay == 0) { + if (D_801263E0 == 0) { + if (D_801267E8 & (A_BUTTON | START_BUTTON)) { + D_801263E0 = 1; + } + } else if (gMenuSubOption != 0) { + if (D_801267E8 & (A_BUTTON | START_BUTTON)) { + if (gMenuSubOption == 1) { + playSelectSound = TRUE; + set_music_fade_timer(-128); + transition_begin(&sMenuTransitionFadeIn); + gMenuDelay = 1; + } else { + playBackSound = TRUE; + gMenuSubOption = 0; + } + } else if (D_801267E8 & B_BUTTON) { + playBackSound = TRUE; + gMenuSubOption = 0; + } else { + prevOption = gMenuSubOption; + if (D_80126838 > 0 && gMenuSubOption == 2) { + gMenuSubOption = 1; + } + if (D_80126838 < 0 && gMenuSubOption == 1) { + gMenuSubOption = 2; + } + if (prevOption != gMenuSubOption) { + playPickSound = TRUE; + } + } + } else if (D_801267E8 & (A_BUTTON | START_BUTTON)) { + playSelectSound = TRUE; + if (D_80126BF0[gMenuOption] == gMenuText[28]) { + gMenuSubOption = 2; + } else { + gMenuDelay = 1; + transition_begin(&sMenuTransitionFadeIn); + set_music_fade_timer(-128); + } + } else { + prevOption = gMenuOption; + if (D_80126838 < 0 && gMenuOption < (D_80126C14 - 1)) { + gMenuOption++; + } + if (D_80126838 > 0 && gMenuOption > 0) { + gMenuOption--; + } + if (prevOption != gMenuOption) { + playPickSound = TRUE; + } + } + if (playBackSound) { + play_sound_global(SOUND_MENU_BACK3, NULL); + } else if (playSelectSound) { + play_sound_global(SOUND_SELECT2, NULL); + } else if (playPickSound) { + play_sound_global(SOUND_MENU_PICK2, NULL); + } + + } else { + gMenuDelay += updateRate; + if (gMenuDelay > 30) { + func_800976CC(); + close_dialogue_box(7); + assign_dialogue_box_id(7); + if (D_80126BF0[gMenuOption] == gMenuText[ASSET_MENU_TEXT_TRYAGAIN]) { + return (0x100 | 0x2); //This gets parsed in func_8006DCF8 as a flag and an ID from the bottom 7 bits. + } + if (D_80126BF0[gMenuOption] == gMenuText[ASSET_MENU_TEXT_SELECTTRACK]) { + load_level_for_menu(-1, -1, 0); + menu_init(MENU_TRACK_SELECT); + return 0; + } + return (0x100 | 0x4); + } + } + gIgnorePlayerInputTime = 0; + return 0; +} void func_800976CC(void) { func_8009C4A8(D_800E0A24); @@ -9239,7 +9346,7 @@ void func_8009C508(s32 arg0) { free_sprite((Sprite *) (u32) D_80126550[arg0]); } else { if ((*gAssetsMenuElementIds)[arg0] & 0x4000) { - gParticlePtrList_addObject((Object *) (u32) D_80126550[arg0]); + free_object((Object *) (u32) D_80126550[arg0]); } else { func_8005FF40((ObjectModel**)(u32)D_80126550[arg0]); } diff --git a/src/menu.h b/src/menu.h index 638f8587..fa4c1d0d 100644 --- a/src/menu.h +++ b/src/menu.h @@ -885,12 +885,13 @@ s32 menu_magic_codes_list_loop(s32 updateRate); void menu_trophy_race_rankings_init(void); void calculate_and_display_rom_checksum(void); s32 menu_trophy_race_rankings_loop(s32 updateRate); +s32 menu_results_loop(s32 updateRate); +s32 menu_options_loop(s32 updateRate); // Non Matching functions below here void load_menu_text(s32 language); // Non Matching void draw_menu_elements(s32 arg0, MenuElement *elem, f32 arg2); s32 menu_audio_options_loop(s32 arg0); -s32 menu_options_loop(s32 updateRate); s32 menu_controller_pak_loop(s32 updateRate); void render_magic_codes_list_menu_text(s32 arg0); void randomise_ai_racer_slots(s32 arg0); @@ -910,7 +911,6 @@ void menu_track_select_init(void); void func_8009E3D0(void); s32 menu_title_screen_loop(s32 updateRate); s32 menu_magic_codes_loop(s32 updateRate); -s32 menu_results_loop(s32 updateRate); s32 menu_credits_loop(s32 updateRate); void func_8009CA60(s32 imageID); void func_8007FFEC(s32 arg0); @@ -944,6 +944,7 @@ s32 func_80087734(s32, s32); void func_80085B9C(UNUSED s32 updateRate); void func_80098774(s32); void render_magic_codes_ui(s32 updateRate); +void func_80096978(s32, f32); typedef enum MenuTextures { /* 0x00 */ TEXTURE_UNK_00, diff --git a/src/object_functions.c b/src/object_functions.c index d0f75723..b05b7894 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -285,7 +285,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 updateRate) { racer->attackType = ATTACK_EXPLOSION; obj->properties.fireball.timer = 20; func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); - gParticlePtrList_addObject(obj); + free_object(obj); } else if (obj->properties.fireball.timer > 0) { racer->bubbleTrapTimer = 60; obj->properties.fireball.timer = -60; @@ -302,12 +302,12 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 updateRate) { obj->properties.fireball.timer -= updateRate; if (obj->properties.fireball.timer < 0) { if (obj->unk4A == 298) { - gParticlePtrList_addObject(obj); + free_object(obj); func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); } obj->segment.trans.scale *= 0.9; //!@Delta if (obj->segment.trans.scale < 0.5) { - gParticlePtrList_addObject(obj); + free_object(obj); } } } else { @@ -328,7 +328,7 @@ void obj_loop_fireball_octoweapon(Object *obj, s32 updateRate) { func_8000488C(soundMask); } play_sound_at_position(SOUND_POP, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); - gParticlePtrList_addObject(obj); + free_object(obj); } } } @@ -506,7 +506,7 @@ void obj_loop_laserbolt(Object *obj, s32 updateRate) { } } if (delete) { - gParticlePtrList_addObject(obj); + free_object(obj); } } @@ -768,7 +768,7 @@ void obj_loop_collectegg(Object *obj, s32 updateRate) { if (egg->spawnerObj != NULL) { egg->spawnerObj->properties.eggSpawner.egg = NULL; } - gParticlePtrList_addObject(obj); + free_object(obj); } if (hasCollision && surface == SURFACE_EGG_SPAWN) { egg->status = EGG_SPAWNED; @@ -922,7 +922,7 @@ void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_W obj->interactObj->hitboxRadius = 20; obj->interactObj->pushForce = 0; if (get_filtered_cheats() & CHEAT_TURN_OFF_ZIPPERS) { - gParticlePtrList_addObject(obj); + free_object(obj); } } @@ -999,7 +999,7 @@ void obj_init_groundzipper(Object *obj, LevelObjectEntry_GroundZipper *entry) { obj->interactObj->unk16 = -0x64; obj->interactObj->unk17 = 0x64; if (get_filtered_cheats() & CHEAT_TURN_OFF_ZIPPERS) { - gParticlePtrList_addObject(obj); + free_object(obj); } } @@ -1635,7 +1635,7 @@ void obj_init_animation(Object *obj, LevelObjectEntry_Animation *entry, s32 arg2 if (obj->unk64 != 0) { func_8001EFA4(obj, (Object *) obj64); if (entry->order != 0 || obj64->unk4A != entry->objectIdToSpawn) { - gParticlePtrList_addObject((Object *) obj64); + free_object((Object *) obj64); obj->unk64 = NULL; } } @@ -1924,7 +1924,7 @@ void obj_loop_smoke(Object *obj, s32 updateRate) { obj->segment.trans.y_position += obj->segment.y_velocity * updateRateF; obj->segment.trans.z_position += obj->segment.z_velocity * updateRateF; if (obj->segment.animFrame > 255) { - gParticlePtrList_addObject(obj); + free_object(obj); obj->segment.animFrame = 255; } } @@ -1935,7 +1935,7 @@ void obj_init_unknown25(UNUSED Object *obj, UNUSED LevelObjectEntry_Unknown25 *e void obj_loop_unknown25(Object *obj, s32 updateRate) { obj->segment.animFrame += updateRate * 8; if (obj->segment.animFrame > 255) { - gParticlePtrList_addObject(obj); + free_object(obj); obj->segment.animFrame = 255; } } @@ -1953,7 +1953,7 @@ void obj_loop_wardensmoke(Object *obj, s32 updateRate) { obj->segment.animFrame += updateRate * 4; obj->segment.trans.y_position += updateRateF * 0.25; if (obj->segment.animFrame > 255) { - gParticlePtrList_addObject(obj); + free_object(obj); obj->segment.animFrame = 255; } } @@ -1988,7 +1988,7 @@ void obj_loop_bombexplosion(Object *obj, s32 updateRate) { obj->segment.trans.scale = (((obj->properties.bombExplosion.timer - 20) / 20.0f) * 5.0f) + 10.5f; obj->properties.bombExplosion.unk4 = 0x1EF - (obj->properties.bombExplosion.timer * 0xC); } else { - gParticlePtrList_addObject(obj); + free_object(obj); } if (obj->unk74 != 0) { @@ -3058,7 +3058,7 @@ void obj_loop_goldenballoon(Object *obj, s32 updateRate) { func_800AFC3C(obj, updateRate); obj->properties.npc.timer -= updateRate; } else { - gParticlePtrList_addObject(obj); + free_object(obj); } } else { obj->segment.trans.flags |= OBJ_FLAGS_INVISIBLE; @@ -3649,7 +3649,7 @@ void obj_loop_flycoin(Object *obj, s32 updateRate) { if (racerObj->lap >= 10) { racerObj->raceFinished = TRUE; } - gParticlePtrList_addObject(obj); + free_object(obj); if (racerObj->playerIndex != PLAYER_COMPUTER) { play_sound_global(SOUND_SELECT, NULL); } @@ -3697,7 +3697,7 @@ void obj_init_banana(Object *obj, UNUSED LevelObjectEntry_Banana *entry) { obj->properties.banana.unk4 = 20; obj->properties.banana.unk6 = 16; if (get_filtered_cheats() & CHEAT_DISABLE_BANANAS) { - gParticlePtrList_addObject(obj); + free_object(obj); } } @@ -3734,7 +3734,7 @@ void obj_loop_banana(Object *obj, s32 updateRate) { obj->unk74 = 1; func_800AFC3C(obj, updateRate); if (properties->unk6 <= 0) { - gParticlePtrList_addObject(obj); + free_object(obj); } } else { if (banana->unk8 > 0) { @@ -3822,7 +3822,7 @@ void obj_loop_banana(Object *obj, s32 updateRate) { banana->spawner->properties.bananaSpawner.spawn = TRUE; } if (get_number_of_active_players() > TWO_PLAYERS) { - gParticlePtrList_addObject(obj); + free_object(obj); } else { properties->unk0 = -1; obj->unk74 = 1; @@ -3856,7 +3856,7 @@ void obj_init_silvercoin_adv2(Object *obj, UNUSED LevelObjectEntry_SilverCoinAdv } if (obj->properties.npc.action == SILVER_COIN_INACTIVE) { obj->segment.trans.flags |= OBJ_FLAGS_INVIS_PLAYER1 | OBJ_FLAGS_INVIS_PLAYER2; - gParticlePtrList_addObject(obj); + free_object(obj); } } @@ -3880,7 +3880,7 @@ void obj_init_silvercoin(Object *obj, UNUSED LevelObjectEntry_SilverCoin *entry) } if (obj->properties.npc.action == SILVER_COIN_INACTIVE) { obj->segment.trans.flags |= OBJ_FLAGS_INVIS_PLAYER2 | OBJ_FLAGS_INVIS_PLAYER1; - gParticlePtrList_addObject(obj); + free_object(obj); } } @@ -3939,7 +3939,7 @@ void obj_init_worldkey(Object *obj, LevelObjectEntry_WorldKey *entry) { if (!is_in_tracks_mode() && !(settings->keys & (1 << obj->properties.worldKey.keyID))) { return; } - gParticlePtrList_addObject(obj); + free_object(obj); } /** @@ -3964,7 +3964,7 @@ void obj_loop_worldkey(Object *worldKeyObj, s32 updateRate) { play_sequence(SEQUENCE_KEY_COLLECT); settings = get_settings(); settings->keys |= 1 << worldKeyObj->properties.worldKey.keyID; // Set key flag - gParticlePtrList_addObject(worldKeyObj); // Makes the key unload. + free_object(worldKeyObj); // Makes the key unload. } } } @@ -4028,7 +4028,7 @@ void obj_init_weaponballoon(Object *obj, LevelObjectEntry_WeaponBalloon *entry) obj->properties.weaponBalloon.unk4 = 0; if (get_filtered_cheats() & CHEAT_DISABLE_WEAPONS) { - gParticlePtrList_addObject(obj); + free_object(obj); } } @@ -4313,7 +4313,7 @@ block_25: } } func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); - gParticlePtrList_addObject(obj); + free_object(obj); return; } } @@ -4332,7 +4332,7 @@ block_37: obj->properties.projectile.timer -= updateRate; if (obj->properties.projectile.timer < 0) { func_8003FC44(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 44, SOUND_EXPLOSION, 1.0f, 1); - gParticlePtrList_addObject(obj); + free_object(obj); return; } } @@ -4549,7 +4549,7 @@ void obj_init_audio(Object *obj, LevelObjectEntry_Audio *entry) { 10, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, obj64->unk6, obj64->unkD, &obj64->soundMask); } - gParticlePtrList_addObject(obj); + free_object(obj); } /* Official name: audioLineInit */ @@ -4571,7 +4571,7 @@ void obj_init_audioline(Object *obj, LevelObjectEntry_AudioLine *entry) { func_800098A4(obj64->unk0, obj64->soundID, entry->common.x, entry->common.y, entry->common.z, obj64->unkF, obj64->unkE, obj64->unk10, obj64->unk12, obj64->unk4, obj64->unk11, obj64->unkC, obj64->unkD); - gParticlePtrList_addObject(obj); + free_object(obj); } void obj_init_audioreverb(Object *obj, LevelObjectEntry_AudioReverb *entry) { @@ -4582,7 +4582,7 @@ void obj_init_audioreverb(Object *obj, LevelObjectEntry_AudioReverb *entry) { obj64->unk4 = temp & 0xFF; obj64->unk5 = entry->unkA; func_80009968(entry->common.x, entry->common.y, entry->common.z, obj64->unk2, obj64->unk4, obj64->unk5); - gParticlePtrList_addObject(obj); + free_object(obj); } /* Official name: texscrollInit */ @@ -4978,7 +4978,7 @@ void obj_init_frog(Object *obj, LevelObjectEntry_Frog *entry) { * if the player hasn't completed the trophy races yet. */ if (is_drumstick_unlocked() || (get_settings()->trophies & 0xFF) != 0xFF) { - gParticlePtrList_addObject(obj); + free_object(obj); } } else { obj->segment.object.numModelIDs = FALSE; @@ -5028,7 +5028,7 @@ void obj_loop_frog(Object *obj, s32 updateRate) { set_eeprom_settings_value(2); set_magic_code_flags(CHEAT_CONTROL_DRUMSTICK); func_8006D8A4(); - gParticlePtrList_addObject(obj); + free_object(obj); break; } else { frog->action = 2; @@ -5110,7 +5110,7 @@ void obj_loop_frog(Object *obj, s32 updateRate) { set_eeprom_settings_value(2); set_magic_code_flags(CHEAT_CONTROL_DRUMSTICK); func_8006D8A4(); - gParticlePtrList_addObject(obj); + free_object(obj); } else { frog->action = FROG_SQUISH; play_sound_at_position(SOUND_SPLAT, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); @@ -5175,7 +5175,7 @@ void obj_init_levelname(Object *obj, LevelObjectEntry_LevelName *entry) { obj->properties.levelName.levelID = entry->levelID; obj->properties.levelName.opacity = 0; if (is_in_tracks_mode()) { - gParticlePtrList_addObject(obj); + free_object(obj); } func_800C56D0(4); } diff --git a/src/object_functions.h b/src/object_functions.h index c3579085..ce4ce684 100644 --- a/src/object_functions.h +++ b/src/object_functions.h @@ -402,6 +402,7 @@ void obj_loop_lasergun(Object *obj, s32 updateRate); void play_rocket_trailing_sound(Object *obj, struct Object_Weapon *weapon, u16 soundID); void rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon *rocket); void homing_rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon *rocket); +void func_8001F23C(Object *obj, LevelObjectEntry_Animation *animEntry); //Non Matching void obj_loop_lavaspurt(Object *obj, s32 updateRate); @@ -446,7 +447,6 @@ void try_to_collect_egg(Object *, Object_CollectEgg*); void func_8001EE74(); -void func_8001F23C(Object *obj, LevelObjectEntry_Animation *entry); s32 func_8001F3EC(s32); s32 func_80021600(s32); void func_8003F2E8(Object *, s32 updateRate); diff --git a/src/objects.c b/src/objects.c index d17adb6d..fbeb7bf3 100644 --- a/src/objects.c +++ b/src/objects.c @@ -328,11 +328,11 @@ void func_8000B290(void) { } } if (gShieldEffectObject) - gParticlePtrList_addObject(gShieldEffectObject); + free_object(gShieldEffectObject); gShieldEffectObject = NULL; if (gMagnetEffectObject) - gParticlePtrList_addObject(gMagnetEffectObject); + free_object(gMagnetEffectObject); gMagnetEffectObject = NULL; gParticlePtrList_flush(); } @@ -748,7 +748,7 @@ void func_8000E1EC(Object *obj, s32 vehicleID) { D_8011AD48 = obj->segment.trans.y_position; D_8011AD4A = obj->segment.trans.z_position; D_8011AD4C = obj->segment.trans.y_rotation; - gParticlePtrList_addObject(obj); + free_object(obj); gNumRacers = 0; } @@ -1415,7 +1415,8 @@ s32 func_8000FD34(Object *arg0, Object_5C *arg1) { GLOBAL_ASM("asm/non_matchings/objects/func_8000FD54.s") -void gParticlePtrList_addObject(Object *object) { +//Official Name: objFreeObject +void free_object(Object *object) { func_800245B4(object->unk4A | 0x8000); gParticlePtrList[gParticleCount] = object; gParticleCount++; @@ -4052,7 +4053,49 @@ void func_8001EFA4(Object *arg0, Object *animObj) { anim->unk45 = 0; } -GLOBAL_ASM("asm/non_matchings/objects/func_8001F23C.s") +void func_8001F23C(Object *obj, LevelObjectEntry_Animation *animEntry) { + s32 i; + LevelObjectEntryCommon newObjEntry; + Object *newObj; + Object_AnimCamera *camera; + s32 viewportCount; + + NEW_OBJECT_ENTRY(newObjEntry, animEntry->objectIdToSpawn, 8, animEntry->common.x, animEntry->common.y, animEntry->common.z); + + obj->unk64 = (Object_64*)spawn_object((LevelObjectEntryCommon* ) &newObjEntry, 1); + newObj = (Object *) obj->unk64; + // (newObj->behaviorId == BHV_DINO_WHALE) is Dinosaur1, Dinosaur2, Dinosaur3, Whale, and Dinoisle + if ((obj->unk64 != NULL) && (newObj->behaviorId == BHV_DINO_WHALE) && (gTimeTrialEnabled)) { + free_object(newObj); + obj->unk64 = NULL; + newObj = NULL; + } + camera = (Object_AnimCamera *) newObj; + if (camera != NULL) { + camera->unk3C = 0; + func_8001EFA4(obj, newObj); + if (newObj->segment.header->behaviorId == BHV_CAMERA_ANIMATION) { + camera = &newObj->unk64->anim_camera; + camera->unk44 = D_8011AD3E; + viewportCount = get_viewport_count(); + if (func_8006C19C()) { + viewportCount = VIEWPORTS_COUNT_2_PLAYERS; + } + for (i = 0; i < viewportCount;) { + newObj = spawn_object(&newObjEntry, 1); + if (newObj != NULL) { + newObj->segment.level_entry = NULL; + func_8001EFA4(obj, newObj); + camera = &newObj->unk64->anim_camera; + i++; + camera->unk30 = i; + camera->unk44 = D_8011AD3E; + } + } + D_8011AD3E++; + } + } +} s8 func_8001F3B8(void) { return D_8011ADD4; @@ -4096,8 +4139,77 @@ s32 func_800210CC(s8 arg0) { return 0; } -GLOBAL_ASM("asm/non_matchings/objects/func_80021104.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8002125C.s") +void func_80021104(Object *obj, Object_Animation *animObj, LevelObjectEntry_Animation *entry) { + ObjectSegment *seg; + ObjectTransform *animObjTrans; + + animObjTrans = animObj->unk1C; + if (obj->behaviorId == BHV_CAMERA_ANIMATION) { + animObj->unk44 = D_8011AD3E; + D_8011AD3E++; + } + if (entry->unk22 == 18) { + set_active_camera(animObj->unk30); + seg = get_active_camera_segment_no_cutscenes(); + animObjTrans->x_position = seg->trans.x_position; + animObjTrans->y_position = seg->trans.y_position; + animObjTrans->z_position = seg->trans.z_position; + animObjTrans->y_rotation = (0x8000 - seg->trans.y_rotation); + animObjTrans->x_rotation = -seg->trans.x_rotation; + animObjTrans->z_rotation = seg->trans.z_rotation; + } + if ((entry->unk22 >= 10) && (entry->unk22 < 18)) { + seg = &(*gRacers)[entry->unk22 - 10]->segment; + if (seg != NULL) { + animObjTrans->x_position = seg->trans.x_position; + animObjTrans->y_position = seg->trans.y_position; + animObjTrans->z_position = seg->trans.z_position; + animObjTrans->y_rotation = seg->trans.y_rotation; + animObjTrans->x_rotation = seg->trans.x_rotation; + animObjTrans->z_rotation = seg->trans.z_rotation; + } + } +} + +void func_8002125C(Object *charSelectObj, LevelObjectEntry_CharacterSelect *entry, Object_CharacterSelect *charSelect, UNUSED s32 index) { + s32 initialAnimFrame; + + initialAnimFrame = entry->unk12; + if (initialAnimFrame >= 0) { + if (initialAnimFrame != charSelectObj->segment.object.animationID) { + charSelectObj->segment.animFrame = entry->unk16; + } + charSelectObj->segment.object.animationID = entry->unk12; + charSelect->unk14 = entry->unk17; + charSelect->unk2C = entry->unk18; + } + if (entry->unk13 >= 0) { + charSelect->unk2F = entry->unk13; + } + charSelect->unk36 = normalise_time(entry->unk24); + charSelect->unk3F = entry->unk2D; + charSelect->unk3A = entry->unk26; + charSelect->unk39 = entry->unk1F; + charSelect->unk43 = entry->unk30; + charSelect->unk38 = entry->unk1E; + charSelect->unk3B = entry->unk29; + charSelect->unk40 = entry->unk2E; + charSelect->unk41 = entry->unk2F; + charSelect->unk3C = entry->unk2B; + if (entry->unk27 != 255) { + func_800C31EC(entry->unk27); + } + if (entry->unk2A >= 0) { + func_8001E45C(entry->unk2A); + return; + } + if (entry->unk15 >= 0) { + func_80021400(entry->unk15); + } + if (entry->unk28 >= 0) { + D_8011AD22[D_8011AD21]++; + } +} void func_80021400(s32 arg0) { s32 i; diff --git a/src/objects.h b/src/objects.h index ee9050d7..903fff00 100644 --- a/src/objects.h +++ b/src/objects.h @@ -9,6 +9,15 @@ #include "camera.h" #include "lights.h" + +#define NEW_OBJECT_ENTRY(entryVar, entryId, entrySize, xPos, yPos, zPos) { \ + entryVar.x = (xPos); \ + entryVar.y = (yPos); \ + entryVar.z = (zPos); \ + entryVar.size = ((((entryId) >> 1) & 0x80) | (entrySize)); \ + entryVar.objectID = (s8)(entryId); \ +} + enum ObjectBehaviours { BHV_NONE, BHV_RACER, @@ -333,7 +342,7 @@ Object **objGetObjList(s32 *arg0, s32 *cnt); s32 getObjectCount(void); s32 func_8000E9C0(void); void func_8000E9D0(Object *arg0); -void gParticlePtrList_addObject(Object *); +void free_object(Object *); s32 func_80010018(void); s32 func_80010028(s32 arg0); void func_80011390(void); @@ -448,6 +457,8 @@ s32 obj_init_property_flags(s32 behaviorId); void func_8001B3C4(s32 arg0, s16 *playerId); void func_8001EFA4(Object *, Object *); Object *func_80016C68(f32 x, f32 y, f32 z, f32 maxDistCheck, s32 dontCheckYAxis); +void func_8002125C(Object *charSelectObj, LevelObjectEntry_CharacterSelect *entry, Object_CharacterSelect *charSelect, UNUSED s32 index); +void func_80021104(Object *obj, Object_Animation *animObj, LevelObjectEntry_Animation *entry); //Non Matching void calc_dynamic_lighting_for_object_1(Object *, ObjectModel *, s16, Object *, f32, f32); diff --git a/src/particles.c b/src/particles.c index 11981f11..e9fd9674 100644 --- a/src/particles.c +++ b/src/particles.c @@ -1302,7 +1302,7 @@ void handle_particle_movement(Particle *particle, s32 updateRate) { } particle->segment.particle.destroyTimer -= gParticleUpdateRate; if (particle->segment.particle.destroyTimer <= 0) { - gParticlePtrList_addObject((Object*) particle); + free_object((Object*) particle); } else { if (particle->opacityTimer == 0) { particle->opacity += gParticleUpdateRate * particle->opacityVel; diff --git a/src/printf.c b/src/printf.c index 4b549dae..cf1cd3d2 100644 --- a/src/printf.c +++ b/src/printf.c @@ -147,8 +147,8 @@ Gfx dDebugFontSettings[] = { /************ .rodata ************/ -const char D_800E8C00[] = "0123456789abcdefghijklmnopqrstuvwxyz"; -const char D_800E8C28[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +const char gLowerCase[] = "0123456789abcdefghijklmnopqrstuvwxyz"; +const char gUpperCase[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const char D_800E8C50[] = ""; const char D_800E8C54[] = "(null)"; const char D_800E8C5C[] = "(nil)"; @@ -177,7 +177,18 @@ char *gDebugPrintBufferEnd; /******************************/ -GLOBAL_ASM("asm/non_matchings/printf/_itoa.s") +char *_itoa(u64 n, char *outBuffer, u32 radix, s32 useUpperCase) { + char *alphabet; + char *buffer; + + alphabet = (useUpperCase) ? (char *) gUpperCase : (char *) gLowerCase; + + for (buffer = outBuffer; n > 0; n /= radix) { + *(--buffer) = alphabet[n % radix]; + } + + return buffer; +} //Official Name: sprintfSetSpacingCodes void func_800B4A08(s32 arg0) { diff --git a/src/printf.h b/src/printf.h index 73a841a6..25a8ee90 100644 --- a/src/printf.h +++ b/src/printf.h @@ -44,6 +44,7 @@ typedef struct TexFontCoords { RENDER_PRINTF_CMD_END +char *_itoa(u64 n, char *outBuffer, u32 radix, s32 useUpperCase); void func_800B4A08(s32 arg0); void diPrintfInit(void); void set_render_printf_colour(u8 red, u8 green, u8 blue, u8 alpha); diff --git a/src/racer.c b/src/racer.c index 0dea6ea7..ddeb99c8 100644 --- a/src/racer.c +++ b/src/racer.c @@ -205,8 +205,7 @@ GhostNode *gGhostData[3]; s8 D_8011D59C; s8 D_8011D59D; s16 D_8011D59E; -s16 D_8011D5A0[2]; -s16 gTTGhostNodeCount; // Gets assigned, but never used? +s16 D_8011D5A0[3]; //gTTGhostNodeCount? s16 D_8011D5A8[2]; s16 D_8011D5AC; // Previous MapId? s8 gRacerWaveCount; @@ -5643,7 +5642,7 @@ s32 load_tt_ghost(s32 ghostOffset, s32 size, s16 *outTime) { gGhostData[2] = allocate_from_main_pool_safe(size - sizeof(GhostHeader), COLOUR_TAG_WHITE); if (gGhostData[2] != NULL) { *outTime = ghost->time; - gTTGhostNodeCount = ghost->nodeCount; + D_8011D5A0[2] = ghost->nodeCount; bcopy((u8 *) ghost + 8, gGhostData[2], size - sizeof(GhostHeader)); free_from_memory_pool(ghost); return 0; @@ -5664,46 +5663,39 @@ s32 func_80059B7C(s32 controllerIndex, s32 mapId, s16 arg2, s16 arg3, s16 arg4) return func_80075000(controllerIndex, (s16)mapId, arg2, arg3, arg4, D_8011D5A0[D_8011D59C], (GhostHeader *) gGhostData[D_8011D59C]); } -#ifdef NON_EQUIVALENT void func_80059BF0(Object *obj, s32 updateRate) { + f32 yOffset; + Object_Racer* racer; GhostNode *ghostNode; - Object_Racer *racer; - f32 yCosF; - f32 zCosf; - s32 temp; - s32 i; racer = &obj->unk64->racer; - zCosf = coss_f(racer->z_rotation_offset); - yCosF = coss_f(racer->x_rotation_offset - racer->unk166) * zCosf; - if (yCosF < 0.0f) { - yCosF *= 0.5; + yOffset = coss_f(racer->z_rotation_offset) * coss_f(racer->x_rotation_offset - racer->unk166); + if (yOffset < 0) { + yOffset *= 0.5; } - yCosF = (17.0f - (yCosF * 17.0f)); + yOffset = 17.0f - (yOffset * 17.0f); D_8011D59E -= updateRate; - if (D_8011D59E <= 0) { - for (i = 0; D_8011D59E <= 0; i++) { - temp = D_8011D5A0[D_8011D59C] + i; - if ((temp) >= 360) { - if (is_postrace_viewport_active() == 0) { - D_8011D5A8[D_8011D59C] = 1; - } - return; + if (D_8011D59E > 0) { + return; + } + while (D_8011D59E <= 0) { + D_8011D59E += 30; + if (D_8011D5A0[D_8011D59C] >= 360) { + if (!is_postrace_viewport_active()) { + D_8011D5A8[D_8011D59C] = 1; } - D_8011D59E += 30; - ghostNode = &gGhostData[D_8011D59C][temp]; - ghostNode->x = obj->segment.trans.x_position; - ghostNode->y = (obj->segment.trans.y_position + yCosF); - ghostNode->z = obj->segment.trans.z_position; - ghostNode->yRotation = (obj->segment.trans.y_rotation + racer->y_rotation_offset); - ghostNode->xRotation = (obj->segment.trans.x_rotation + racer->x_rotation_offset); - ghostNode->zRotation = (obj->segment.trans.z_rotation + racer->z_rotation_offset); + return; } + ghostNode = gGhostData[D_8011D59C] + D_8011D5A0[D_8011D59C]; + ghostNode->x = obj->segment.trans.x_position; + ghostNode->y = obj->segment.trans.y_position + yOffset; + ghostNode->z = obj->segment.trans.z_position; + ghostNode->yRotation = obj->segment.trans.y_rotation + racer->y_rotation_offset; + ghostNode->xRotation = obj->segment.trans.x_rotation + racer->x_rotation_offset; + ghostNode->zRotation = obj->segment.trans.z_rotation + racer->z_rotation_offset; + D_8011D5A0[D_8011D59C]++; } } -#else -GLOBAL_ASM("asm/non_matchings/racer/func_80059BF0.s") -#endif s16 func_80059E20(void) { return D_8011D5A8[D_8011D59C]; diff --git a/src/racer.h b/src/racer.h index 7debd566..2431df94 100644 --- a/src/racer.h +++ b/src/racer.h @@ -211,6 +211,7 @@ void handle_racer_items(Object *obj, Object_Racer *racer, s32 updateRate); void drop_bananas(Object *obj, Object_Racer *racer, s32 number); void update_player_racer(Object *obj, s32 updateRate); void func_80045128(Object **racerObjs); +void func_80059BF0(Object *obj, s32 updateRate); //Non Matching void set_ghost_position_and_rotation(Object *obj); @@ -218,7 +219,6 @@ void func_80054FD0(Object *obj, Object_Racer *racer, s32); void func_80053750(Object *obj, Object_Racer *racer, f32); void update_car_velocity_offground(Object *obj, Object_Racer *racer, s32, f32); s32 func_80017248(void*, s32, s32*, Vec3f*, f32*, f32*, s8* surface); -void func_80059BF0(Object* obj, s32 updateRate); void func_80059208(Object* obj, Object_Racer* racer, s32 updateRate); /* extern */ void func_8004F7F4(s32 updateRate, f32 updateRateF, Object* obj, Object_Racer* racer); /* extern */ void func_80046524(s32 updateRate, f32 updateRateF, Object* obj, Object_Racer* racer); /* extern */ diff --git a/src/thread3_main.c b/src/thread3_main.c index 9290f016..eeb96167 100644 --- a/src/thread3_main.c +++ b/src/thread3_main.c @@ -721,7 +721,7 @@ void ingame_logic_loop(s32 updateRate) { gGameCurrentCutscene = D_80121250[D_80121250[1] + 8]; gLevelDefaultVehicleID = get_map_default_vehicle(gPlayableMapId); if (gGameCurrentCutscene < 0) { - gGameCurrentCutscene = 0x64; + gGameCurrentCutscene = CUTSCENE_ID_UNK_64; } } load_level_game(gPlayableMapId, gGameNumPlayers, gGameCurrentEntrance, gLevelDefaultVehicleID); @@ -756,7 +756,7 @@ void func_8006D8F0(UNUSED s32 arg0) { if (sRenderContext != DRAW_UNK_04) { gPlayableMapId = D_80121250[0]; gGameCurrentEntrance = 0; - gGameCurrentCutscene = 0x64; + gGameCurrentCutscene = CUTSCENE_ID_UNK_64; temp = D_80121250[1]; if (D_80121250[15] >= 0) { gGameCurrentEntrance = D_80121250[15]; @@ -769,19 +769,20 @@ void func_8006D8F0(UNUSED s32 arg0) { } void func_8006D968(s8 *arg0) { + // Is arg0 LevelObjectEntry_Exit? s32 i; if (sRenderContext != DRAW_UNK_04) { D_80121250[0] = gPlayableMapId; for (i = 0; i < 2; i++) { - D_80121250[i + 2] = arg0[i + 8]; - D_80121250[i + 4] = arg0[i + 10]; - D_80121250[i + 6] = arg0[i + 12]; - D_80121250[i + 8] = arg0[i + 14]; - D_80121250[i + 10] = arg0[i + 18]; - D_80121250[i + 12] = arg0[i + 20]; + D_80121250[i + 2] = arg0[i + 8]; //0x8-0x9 - destinationMapId + D_80121250[i + 4] = arg0[i + 10]; //0xA-0xB - overworldSpawnIndex + D_80121250[i + 6] = arg0[i + 12]; //0xC-0xD - ? + D_80121250[i + 8] = arg0[i + 14]; //0xE-0xF - ? + D_80121250[i + 10] = arg0[i + 18]; //0x12-0x13 - ? + D_80121250[i + 12] = arg0[i + 20]; //0x14-0x15 - ? } - D_80121250[14] = arg0[22]; - D_80121250[15] = arg0[23]; + D_80121250[14] = arg0[22]; //0x16 - ? + D_80121250[15] = arg0[23]; //0x17 returnSpawnIndex D_801234FC = 1; } } @@ -923,7 +924,7 @@ void func_8006DCF8(s32 updateRate) { gPlayableMapId = menuLoopResult & 0x7F; gLevelDefaultVehicleID = get_map_default_vehicle(gPlayableMapId); gGameCurrentEntrance = 0; - gGameCurrentCutscene = 0x64; + gGameCurrentCutscene = CUTSCENE_ID_UNK_64; sRenderContext = DRAW_GAME; gIsPaused = FALSE; gPostRaceViewPort = NULL; @@ -942,14 +943,14 @@ void func_8006DCF8(s32 updateRate) { case 14: gPlayableMapId = ASSET_LEVEL_CENTRALAREAHUB; gGameCurrentEntrance = 0; - gGameCurrentCutscene = 0x64; + gGameCurrentCutscene = CUTSCENE_ID_UNK_64; sRenderContext = DRAW_GAME; load_level_game(gPlayableMapId, gGameNumPlayers, gGameCurrentEntrance, gLevelDefaultVehicleID); safe_mark_write_save_file(get_save_file_index()); break; case 1: gGameCurrentEntrance = 0; - gGameCurrentCutscene = 0x64; + gGameCurrentCutscene = CUTSCENE_ID_UNK_64; gPlayableMapId = D_80121250[0]; sRenderContext = DRAW_GAME; // Minor issue with these 2 if statements diff --git a/src/tracks.c b/src/tracks.c index 6c53502b..91a96e40 100644 --- a/src/tracks.c +++ b/src/tracks.c @@ -1792,7 +1792,7 @@ void free_track(void) { } func_800257D0(); if (gSkydomeSegment != NULL) { - gParticlePtrList_addObject(gSkydomeSegment); + free_object(gSkydomeSegment); gParticlePtrList_flush(); } func_8000C604(); diff --git a/src/unknown_008C40.c b/src/unknown_008C40.c index 6d5046c7..a2b53798 100644 --- a/src/unknown_008C40.c +++ b/src/unknown_008C40.c @@ -308,19 +308,18 @@ void func_800098A4(u8 arg0, u16 soundId, f32 x, f32 y, f32 z, u8 arg5, u8 arg6, // single regalloc diff void func_80009968(f32 x, f32 y, f32 z, u8 arg3, u8 arg4, u8 arg5) { Vec3f *temp_a1; - unk8011A6D8 *temp_v1; + s32 tempArg5 = arg5; - if ((arg4 < 7) && (arg5 < 15)) { - temp_v1 = &D_8011A6D8[arg4]; - temp_a1 = (Vec3f *) &temp_v1->unk4 + arg5 * 1; - temp_a1->x = x; - temp_a1->y = y; - temp_a1->z = z; - if (arg5 == 0) { - temp_v1->unk0.unk0_02 = arg3 & 0xFF; + if ((arg4 < 7) && (tempArg5 < 15)) { + temp_a1 = (Vec3f *) &D_8011A6D8[arg4].unk4.unk4_05; + temp_a1[tempArg5].x = x; + temp_a1[tempArg5].y = y; + temp_a1[tempArg5].z = z; + if (tempArg5 == 0) { + D_8011A6D8[arg4].unk0.unk0_02 = arg3 & 0xFF; } - if (temp_v1->unkB8 < arg5) { - temp_v1->unkB8 = arg5; + if (D_8011A6D8[arg4].unkB8 < tempArg5) { + D_8011A6D8[arg4].unkB8 = tempArg5; } } } @@ -379,7 +378,7 @@ s32 func_80009AB4(u8 arg0) { } #ifdef NON_EQUIVALENT -u8 func_80009D6C(unk8011A6D8 *, f32, f32, f32); /* extern */ +u8 func_80009D6C(unk8011A6D8 *, f32, f32, f32); void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { s32 j; @@ -390,18 +389,18 @@ void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { f32 *yVals; s32 distBetween; s32 numOfYVals; - s32 temp_v0_4; - s32 volume; + u8 temp_v0_4; + u8 volume; s32 var_s6; s32 i; s32 k; levelSegmentIndex = get_level_segment_index_from_position(x, y, z); volume = 0; - var_s6 = 0x190; + var_s6 = 400; for (i = 0; i < 7; i++) { if (D_8011A6D8[i].unk0.unk0_02 != 0) { - if (func_80009AB4(i & 0xFF) != 0) { + if (func_80009AB4(i) != 0) { for (j = 0; j < D_8011A6D8[i].unkB8; j++) { distBetween = func_800092A8(x, y, z, &D_8011A6D8[i].unk4.unk4_02[j], &outX, &outY, &outZ); if (distBetween < var_s6) { @@ -411,7 +410,7 @@ void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { var_s6 = distBetween; temp_v0_4 = func_80009D6C(&D_8011A6D8[i], outX, outY, outZ); if (volume < temp_v0_4) { - volume = temp_v0_4 & 0xFF; + volume = temp_v0_4; } } } diff --git a/src/unknown_008C40.h b/src/unknown_008C40.h index 92545bcf..00612303 100644 --- a/src/unknown_008C40.h +++ b/src/unknown_008C40.h @@ -26,13 +26,14 @@ typedef struct unk8011A6D8_04 { typedef struct unk8011A6D8 { union { /* 0x00 */ f32 unk0_01; - /* 0x00 */ s8 unk0_02; + /* 0x00 */ u8 unk0_02; } unk0; union { /* 0x04 */ unk8011A6D8_04 *unk4_01; /* 0x04 */ floatXYZVals *unk4_02; /* 0x04 */ unk8011A6D8_04 **unk4_03; /* 0x04 */ Vec3f **unk4_04; + /* 0x04 */ Vec3f *unk4_05; } unk4; /* 0x05 */ u8 pad05[0xB0]; /* 0xB8 */ s8 unkB8; @@ -63,6 +64,7 @@ s32 func_800099EC(u8 arg0); void func_8000A414(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *arg3, u8 red, u8 green, u8 blue); void func_80006BFC(Object *obj, ObjectSegment *segment, Object *obj2, s32 updateRate); void update_spatial_audio_position(SoundMask *arg0, f32 x, f32 y, f32 z); +s32 func_80009AB4(u8 arg0); s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, f32 *outY, f32 *outZ); void func_80009968(f32, f32, f32, u8, u8, u8); // Non Matching