From 7202d9efa5f74b7ddb6ce88e0405eba77cb1b7f4 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Mon, 18 Sep 2023 14:46:32 -0400 Subject: [PATCH] # GLOBAL_ASM remaining: 300 (#405) * Declare free_texture and free_sprite as NON_MATCHING now * Match func_8007B380 and split func_800149C0 from func_80014814 * Match func_800149C0 * Move weather asm to its own folder * Rename the unknown_05CEF0 folder to vehicle_tricky * 2 matches, remove matched asm files, and fix other things * WIP func_800BEFC4 * WIP update on func_800BEFC4 * Match func_800BEEB4 * Maybe better func_800BEEB4 * Update Score * Fix NON_EQUIVALENT build. --- README.md | 28 +- asm/non_matchings/menu/func_80081C04.s | 6 +- asm/non_matchings/menu/trim_filename_string.s | 50 -- asm/non_matchings/menu/tt_menu_loop.s | 610 ------------------ .../object_models/free_object_model.s | 83 --- asm/non_matchings/objects/func_80014814.s | 105 --- asm/non_matchings/objects/func_8001C524.s | 111 ---- asm/non_matchings/objects/func_8001E89C.s | 47 -- asm/non_matchings/particles/func_800B3564.s | 72 --- asm/non_matchings/racer/func_800494E0.s | 187 ------ asm/non_matchings/save_data/func_80072348.s | 61 -- .../textures_sprites/func_8007B380.s | 24 - .../func_8005CB68.s | 0 asm/non_matchings/waves/func_800BEEB4.s | 77 --- .../{game_ui => weather}/func_800AB4A8.s | 0 .../{game_ui => weather}/func_800AC0C8.s | 0 .../{game_ui => weather}/func_800AC21C.s | 0 .../{game_ui => weather}/func_800AC8A8.s | 0 .../{game_ui => weather}/func_800ACA20.s | 0 .../{game_ui => weather}/func_800AD030.s | 0 .../render_rain_overlay.s | 0 .../render_rain_splashes.s | 0 include/structs.h | 30 +- src/menu.c | 122 +++- src/object_functions.c | 5 +- src/objects.c | 92 ++- src/objects.h | 8 + src/particles.c | 19 +- src/textures_sprites.c | 36 +- src/textures_sprites.h | 1 - src/vehicle_tricky.c | 25 +- src/waves.c | 108 +++- src/waves.h | 25 +- src/weather.c | 18 +- src/weather.h | 2 +- 35 files changed, 425 insertions(+), 1527 deletions(-) delete mode 100644 asm/non_matchings/menu/trim_filename_string.s delete mode 100644 asm/non_matchings/menu/tt_menu_loop.s delete mode 100644 asm/non_matchings/object_models/free_object_model.s delete mode 100644 asm/non_matchings/objects/func_8001C524.s delete mode 100644 asm/non_matchings/objects/func_8001E89C.s delete mode 100644 asm/non_matchings/particles/func_800B3564.s delete mode 100644 asm/non_matchings/racer/func_800494E0.s delete mode 100644 asm/non_matchings/save_data/func_80072348.s delete mode 100644 asm/non_matchings/textures_sprites/func_8007B380.s rename asm/non_matchings/{unknown_05CEF0 => vehicle_tricky}/func_8005CB68.s (100%) delete mode 100644 asm/non_matchings/waves/func_800BEEB4.s rename asm/non_matchings/{game_ui => weather}/func_800AB4A8.s (100%) rename asm/non_matchings/{game_ui => weather}/func_800AC0C8.s (100%) rename asm/non_matchings/{game_ui => weather}/func_800AC21C.s (100%) rename asm/non_matchings/{game_ui => weather}/func_800AC8A8.s (100%) rename asm/non_matchings/{game_ui => weather}/func_800ACA20.s (100%) rename asm/non_matchings/{game_ui => weather}/func_800AD030.s (100%) rename asm/non_matchings/{game_ui => weather}/render_rain_overlay.s (100%) rename asm/non_matchings/{game_ui => weather}/render_rain_splashes.s (100%) diff --git a/README.md b/README.md index da631157..dec932e5 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ 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 14, 2023, this is our current score: +As of September 18, 2023, this is our current score: -    Decomp progress: 53.21% +    Decomp progress: 53.37% -    Documentation progress: 26.77% +    Documentation progress: 27.64% --- @@ -128,15 +128,15 @@ s32 is_drumstick_unlocked(void) { ``` -As of September 14th, 2023, this is our current score: +As of September 18th, 2023, this is our current score: ``` ======================================================== ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 53.21% Complete -------------------- - # Decompiled functions: 1526 - # GLOBAL_ASM remaining: 305 - # NON_MATCHING functions: 12 - # NON_EQUIVALENT WIP functions: 71 + ------------------- 53.37% Complete -------------------- + # Decompiled functions: 1532 + # GLOBAL_ASM remaining: 300 + # NON_MATCHING functions: 14 + # NON_EQUIVALENT WIP functions: 70 --------------------- Game Status ---------------------- Balloons: 26/47, Keys: 3/4, Trophies: 2/5 T.T. Amulets: 2/4, Wizpig Amulets: 2/4 @@ -144,14 +144,14 @@ As of September 14th, 2023, this is our current score: We are battling in Darkwater Beach. (3 opponents remain) ======================================================== ADVENTURE TWO (Cleanup & Documentation) - ------------------- 26.77% Complete -------------------- - # Documented functions: 574 - # Undocumented remaining: 989 + ------------------- 27.64% Complete -------------------- + # Documented functions: 604 + # Undocumented remaining: 960 --------------------- Game Status ---------------------- - Balloons: 13/47, Keys: 1/4, Trophies: 1/5 + Balloons: 14/47, Keys: 1/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 -------------------------------------------------------- - We are racing in Everfrost Peak. (Lap 3/3) + We are racing in Walrus Cove. (Lap 1/3) ======================================================== ``` diff --git a/asm/non_matchings/menu/func_80081C04.s b/asm/non_matchings/menu/func_80081C04.s index 716c7f82..215d57ee 100644 --- a/asm/non_matchings/menu/func_80081C04.s +++ b/asm/non_matchings/menu/func_80081C04.s @@ -5,12 +5,12 @@ glabel func_80081C04 /* 082810 80081C10 00A0A025 */ move $s4, $a1 /* 082814 80081C14 AFB30024 */ sw $s3, 0x24($sp) /* 082818 80081C18 AFB1001C */ sw $s1, 0x1c($sp) -/* 08281C 80081C1C 3C103B9A */ lui $s0, %hi(0x3B9A0001) # $s0, 0x3b9a +/* 08281C 80081C1C 3C103B9A */ lui $s0, (0x3B9ACA00 >> 16) /* 082820 80081C20 00808825 */ move $s1, $a0 /* 082824 80081C24 AFBF002C */ sw $ra, 0x2c($sp) /* 082828 80081C28 AFB20020 */ sw $s2, 0x20($sp) /* 08282C 80081C2C 00009825 */ move $s3, $zero -/* 082830 80081C30 3610CA00 */ ori $s0, (0x3B9ACA00 & 0xFFFF) # ori $s0, $s0, 0xca00 +/* 082830 80081C30 3610CA00 */ ori $s0, $s0, (0x3B9ACA00 & 0xFFFF) /* 082834 80081C34 00004025 */ move $t0, $zero /* 082838 80081C38 2405000A */ li $a1, 10 /* 08283C 80081C3C 27A30038 */ addiu $v1, $sp, 0x38 @@ -135,7 +135,7 @@ glabel func_80081C04 /* 0829E0 80081DE0 92290000 */ lbu $t1, ($s1) /* 0829E4 80081DE4 0C027298 */ jal func_8009CA60 /* 0829E8 80081DE8 A5490018 */ sh $t1, 0x18($t2) -/* 0829EC 80081DEC 26100001 */ addiu $s0, %lo(0x3B9A0001) # addiu $s0, $s0, 1 +/* 0829EC 80081DEC 26100001 */ addiu $s0, $s0, 0x1 /* 0829F0 80081DF0 26310001 */ addiu $s1, $s1, 1 /* 0829F4 80081DF4 1613FFF4 */ bne $s0, $s3, .L80081DC8 /* 0829F8 80081DF8 2694000C */ addiu $s4, $s4, 0xc diff --git a/asm/non_matchings/menu/trim_filename_string.s b/asm/non_matchings/menu/trim_filename_string.s deleted file mode 100644 index 9b48a927..00000000 --- a/asm/non_matchings/menu/trim_filename_string.s +++ /dev/null @@ -1,50 +0,0 @@ -glabel trim_filename_string -/* 0983D0 800977D0 908E0000 */ lbu $t6, ($a0) -/* 0983D4 800977D4 00A03825 */ move $a3, $a1 -/* 0983D8 800977D8 11C00024 */ beqz $t6, .L8009786C -/* 0983DC 800977DC 00001025 */ move $v0, $zero -/* 0983E0 800977E0 90860000 */ lbu $a2, ($a0) -/* 0983E4 800977E4 00802825 */ move $a1, $a0 -/* 0983E8 800977E8 24080020 */ li $t0, 32 -.L800977EC: -/* 0983EC 800977EC 15060018 */ bne $t0, $a2, .L80097850 -/* 0983F0 800977F0 00401825 */ move $v1, $v0 -/* 0983F4 800977F4 90A60001 */ lbu $a2, 1($a1) -/* 0983F8 800977F8 24420001 */ addiu $v0, $v0, 1 -/* 0983FC 800977FC 15060005 */ bne $t0, $a2, .L80097814 -/* 098400 80097800 24A50001 */ addiu $a1, $a1, 1 -.L80097804: -/* 098404 80097804 90A60001 */ lbu $a2, 1($a1) -/* 098408 80097808 24420001 */ addiu $v0, $v0, 1 -/* 09840C 8009780C 1106FFFD */ beq $t0, $a2, .L80097804 -/* 098410 80097810 24A50001 */ addiu $a1, $a1, 1 -.L80097814: -/* 098414 80097814 10C00013 */ beqz $a2, .L80097864 -/* 098418 80097818 0062082A */ slt $at, $v1, $v0 -/* 09841C 8009781C 10200011 */ beqz $at, .L80097864 -/* 098420 80097820 00000000 */ nop -/* 098424 80097824 00643021 */ addu $a2, $v1, $a0 -.L80097828: -/* 098428 80097828 90CF0000 */ lbu $t7, ($a2) -/* 09842C 8009782C 24630001 */ addiu $v1, $v1, 1 -/* 098430 80097830 0062082A */ slt $at, $v1, $v0 -/* 098434 80097834 24E70001 */ addiu $a3, $a3, 1 -/* 098438 80097838 24C60001 */ addiu $a2, $a2, 1 -/* 09843C 8009783C 1420FFFA */ bnez $at, .L80097828 -/* 098440 80097840 A0EFFFFF */ sb $t7, -1($a3) -/* 098444 80097844 90A60000 */ lbu $a2, ($a1) -/* 098448 80097848 10000006 */ b .L80097864 -/* 09844C 8009784C 00000000 */ nop -.L80097850: -/* 098450 80097850 A0E60000 */ sb $a2, ($a3) -/* 098454 80097854 90A60001 */ lbu $a2, 1($a1) -/* 098458 80097858 24E70001 */ addiu $a3, $a3, 1 -/* 09845C 8009785C 24420001 */ addiu $v0, $v0, 1 -/* 098460 80097860 24A50001 */ addiu $a1, $a1, 1 -.L80097864: -/* 098464 80097864 14C0FFE1 */ bnez $a2, .L800977EC -/* 098468 80097868 00000000 */ nop -.L8009786C: -/* 09846C 8009786C 03E00008 */ jr $ra -/* 098470 80097870 A0E00000 */ sb $zero, ($a3) - diff --git a/asm/non_matchings/menu/tt_menu_loop.s b/asm/non_matchings/menu/tt_menu_loop.s deleted file mode 100644 index a6197556..00000000 --- a/asm/non_matchings/menu/tt_menu_loop.s +++ /dev/null @@ -1,610 +0,0 @@ -.late_rodata -glabel jpt_800E85E0 -.word L8009DC60, L8009DEF0, L8009E37C, L8009E37C, L8009DFB0, L8009DFEC, L8009E098, L8009E194, L8009E23C, L8009E37C, L8009DC60 -glabel jpt_800E860C -.word L8009E2D0, L8009E2F4, L8009E354, L8009E354, L8009E314, L8009E354, L8009E314, L8009E2E4, L8009E354, L8009E334 - -.text -glabel tt_menu_loop -/* 09E73C 8009DB3C 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 09E740 8009DB40 AFBF001C */ sw $ra, 0x1c($sp) -/* 09E744 8009DB44 0C01BAA4 */ jal get_settings -/* 09E748 8009DB48 00000000 */ nop -/* 09E74C 8009DB4C 0C027B20 */ jal is_in_two_player_adventure -/* 09E750 8009DB50 AFA20030 */ sw $v0, 0x30($sp) -/* 09E754 8009DB54 10400007 */ beqz $v0, .L8009DB74 -/* 09E758 8009DB58 3C038012 */ lui $v1, %hi(sCurrentMenuID) # $v1, 0x8012 -/* 09E75C 8009DB5C 8FA20030 */ lw $v0, 0x30($sp) -/* 09E760 8009DB60 00000000 */ nop -/* 09E764 8009DB64 8C4E0010 */ lw $t6, 0x10($v0) -/* 09E768 8009DB68 00000000 */ nop -/* 09E76C 8009DB6C 35CF0002 */ ori $t7, $t6, 2 -/* 09E770 8009DB70 AC4F0010 */ sw $t7, 0x10($v0) -.L8009DB74: -/* 09E774 8009DB74 8FA20030 */ lw $v0, 0x30($sp) -/* 09E778 8009DB78 24090005 */ li $t1, 5 -/* 09E77C 8009DB7C 8C580010 */ lw $t8, 0x10($v0) -/* 09E780 8009DB80 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09E784 8009DB84 33190002 */ andi $t9, $t8, 2 -/* 09E788 8009DB88 17200002 */ bnez $t9, .L8009DB94 -/* 09E78C 8009DB8C 24040001 */ li $a0, 1 -/* 09E790 8009DB90 A02964E2 */ sb $t1, %lo(sCurrentMenuID)($at) -.L8009DB94: -/* 09E794 8009DB94 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09E798 8009DB98 24010004 */ li $at, 4 -/* 09E79C 8009DB9C 10610012 */ beq $v1, $at, .L8009DBE8 -/* 09E7A0 8009DBA0 24050018 */ li $a1, 24 -/* 09E7A4 8009DBA4 24010005 */ li $at, 5 -/* 09E7A8 8009DBA8 1061000F */ beq $v1, $at, .L8009DBE8 -/* 09E7AC 8009DBAC 240A0078 */ li $t2, 120 -/* 09E7B0 8009DBB0 0C006DE0 */ jal has_ghost_to_save -/* 09E7B4 8009DBB4 AFAA0044 */ sw $t2, 0x44($sp) -/* 09E7B8 8009DBB8 10400003 */ beqz $v0, .L8009DBC8 -/* 09E7BC 8009DBBC 24040001 */ li $a0, 1 -/* 09E7C0 8009DBC0 240B0088 */ li $t3, 136 -/* 09E7C4 8009DBC4 AFAB0044 */ sw $t3, 0x44($sp) -.L8009DBC8: -/* 09E7C8 8009DBC8 8FAC0044 */ lw $t4, 0x44($sp) -/* 09E7CC 8009DBCC 24050018 */ li $a1, 24 -/* 09E7D0 8009DBD0 24060010 */ li $a2, 16 -/* 09E7D4 8009DBD4 240700C0 */ li $a3, 192 -/* 09E7D8 8009DBD8 0C0313B7 */ jal set_current_dialogue_box_coords -/* 09E7DC 8009DBDC AFAC0010 */ sw $t4, 0x10($sp) -/* 09E7E0 8009DBE0 10000007 */ b .L8009DC00 -/* 09E7E4 8009DBE4 24040001 */ li $a0, 1 -.L8009DBE8: -/* 09E7E8 8009DBE8 240D00DC */ li $t5, 220 -/* 09E7EC 8009DBEC AFAD0010 */ sw $t5, 0x10($sp) -/* 09E7F0 8009DBF0 24060010 */ li $a2, 16 -/* 09E7F4 8009DBF4 0C0313B7 */ jal set_current_dialogue_box_coords -/* 09E7F8 8009DBF8 240700B8 */ li $a3, 184 -/* 09E7FC 8009DBFC 24040001 */ li $a0, 1 -.L8009DC00: -/* 09E800 8009DC00 0C0313DF */ jal set_dialogue_font -/* 09E804 8009DC04 00002825 */ move $a1, $zero -/* 09E808 8009DC08 AFA00044 */ sw $zero, 0x44($sp) -/* 09E80C 8009DC0C 0C01A955 */ jal get_buttons_pressed_from_player -/* 09E810 8009DC10 00002025 */ move $a0, $zero -/* 09E814 8009DC14 3C018012 */ lui $at, %hi(sDialogueOptionMax) # $at, 0x8012 -/* 09E818 8009DC18 A0206504 */ sb $zero, %lo(sDialogueOptionMax)($at) -/* 09E81C 8009DC1C 3C088012 */ lui $t0, %hi(sCurrentMenuID) # $t0, 0x8012 -/* 09E820 8009DC20 3C018012 */ lui $at, %hi(gDialogueOptionYOffset) # $at, 0x8012 -/* 09E824 8009DC24 240E0020 */ li $t6, 32 -/* 09E828 8009DC28 250864E2 */ addiu $t0, %lo(sCurrentMenuID) # addiu $t0, $t0, 0x64e2 -/* 09E82C 8009DC2C A02E650E */ sb $t6, %lo(gDialogueOptionYOffset)($at) -/* 09E830 8009DC30 81030000 */ lb $v1, ($t0) -/* 09E834 8009DC34 00402025 */ move $a0, $v0 -/* 09E838 8009DC38 2C61000B */ sltiu $at, $v1, 0xb -/* 09E83C 8009DC3C 102001CF */ beqz $at, .L8009E37C -/* 09E840 8009DC40 AFA20040 */ sw $v0, 0x40($sp) -/* 09E844 8009DC44 00037880 */ sll $t7, $v1, 2 -/* 09E848 8009DC48 3C01800F */ lui $at, %hi(jpt_800E85E0) # $at, 0x800f -/* 09E84C 8009DC4C 002F0821 */ addu $at, $at, $t7 -/* 09E850 8009DC50 8C2F85E0 */ lw $t7, %lo(jpt_800E85E0)($at) -/* 09E854 8009DC54 00000000 */ nop -/* 09E858 8009DC58 01E00008 */ jr $t7 -/* 09E85C 8009DC5C 00000000 */ nop -glabel L8009DC60 -/* 09E860 8009DC60 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e -/* 09E864 8009DC64 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) -/* 09E868 8009DC68 24190001 */ li $t9, 1 -/* 09E86C 8009DC6C 8F070090 */ lw $a3, 0x90($t8) -/* 09E870 8009DC70 24090004 */ li $t1, 4 -/* 09E874 8009DC74 AFA90014 */ sw $t1, 0x14($sp) -/* 09E878 8009DC78 AFB90010 */ sw $t9, 0x10($sp) -/* 09E87C 8009DC7C 24040001 */ li $a0, 1 -/* 09E880 8009DC80 24058000 */ li $a1, -32768 -/* 09E884 8009DC84 0C03145A */ jal render_dialogue_text -/* 09E888 8009DC88 24060006 */ li $a2, 6 -/* 09E88C 8009DC8C 3C0A800E */ lui $t2, %hi(gMenuText) # $t2, 0x800e -/* 09E890 8009DC90 8D4AF4A0 */ lw $t2, %lo(gMenuText)($t2) -/* 09E894 8009DC94 24050014 */ li $a1, 20 -/* 09E898 8009DC98 8D44011C */ lw $a0, 0x11c($t2) -/* 09E89C 8009DC9C 0C02746E */ jal render_dialogue_option -/* 09E8A0 8009DCA0 24060003 */ li $a2, 3 -/* 09E8A4 8009DCA4 0C027B20 */ jal is_in_two_player_adventure -/* 09E8A8 8009DCA8 00000000 */ nop -/* 09E8AC 8009DCAC 1440001B */ bnez $v0, .L8009DD1C -/* 09E8B0 8009DCB0 00000000 */ nop -/* 09E8B4 8009DCB4 0C003932 */ jal is_time_trial_enabled -/* 09E8B8 8009DCB8 00000000 */ nop -/* 09E8BC 8009DCBC 10400009 */ beqz $v0, .L8009DCE4 -/* 09E8C0 8009DCC0 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e -/* 09E8C4 8009DCC4 3C0B800E */ lui $t3, %hi(gMenuText) # $t3, 0x800e -/* 09E8C8 8009DCC8 8D6BF4A0 */ lw $t3, %lo(gMenuText)($t3) -/* 09E8CC 8009DCCC 24050014 */ li $a1, 20 -/* 09E8D0 8009DCD0 8D640104 */ lw $a0, 0x104($t3) -/* 09E8D4 8009DCD4 0C02746E */ jal render_dialogue_option -/* 09E8D8 8009DCD8 00003025 */ move $a2, $zero -/* 09E8DC 8009DCDC 10000006 */ b .L8009DCF8 -/* 09E8E0 8009DCE0 00000000 */ nop -.L8009DCE4: -/* 09E8E4 8009DCE4 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) -/* 09E8E8 8009DCE8 24050014 */ li $a1, 20 -/* 09E8EC 8009DCEC 8D840108 */ lw $a0, 0x108($t4) -/* 09E8F0 8009DCF0 0C02746E */ jal render_dialogue_option -/* 09E8F4 8009DCF4 00003025 */ move $a2, $zero -.L8009DCF8: -/* 09E8F8 8009DCF8 0C006DE0 */ jal has_ghost_to_save -/* 09E8FC 8009DCFC 00000000 */ nop -/* 09E900 8009DD00 10400006 */ beqz $v0, .L8009DD1C -/* 09E904 8009DD04 3C0D800E */ lui $t5, %hi(gMenuText) # $t5, 0x800e -/* 09E908 8009DD08 8DADF4A0 */ lw $t5, %lo(gMenuText)($t5) -/* 09E90C 8009DD0C 24050014 */ li $a1, 20 -/* 09E910 8009DD10 8DA4006C */ lw $a0, 0x6c($t5) -/* 09E914 8009DD14 0C02746E */ jal render_dialogue_option -/* 09E918 8009DD18 24060001 */ li $a2, 1 -.L8009DD1C: -/* 09E91C 8009DD1C 3C0E800E */ lui $t6, %hi(gMenuText) # $t6, 0x800e -/* 09E920 8009DD20 8DCEF4A0 */ lw $t6, %lo(gMenuText)($t6) -/* 09E924 8009DD24 24050014 */ li $a1, 20 -/* 09E928 8009DD28 8DC40014 */ lw $a0, 0x14($t6) -/* 09E92C 8009DD2C 0C02746E */ jal render_dialogue_option -/* 09E930 8009DD30 24060002 */ li $a2, 2 -/* 09E934 8009DD34 0C02749B */ jal handle_menu_joystick_input -/* 09E938 8009DD38 00000000 */ nop -/* 09E93C 8009DD3C 3C0F8012 */ lui $t7, %hi(gDialogueItemSelection) # $t7, 0x8012 -/* 09E940 8009DD40 81EF6516 */ lb $t7, %lo(gDialogueItemSelection)($t7) -/* 09E944 8009DD44 3C028012 */ lui $v0, %hi(gControllersXAxisDirection) # $v0, 0x8012 -/* 09E948 8009DD48 15E0001B */ bnez $t7, .L8009DDB8 -/* 09E94C 8009DD4C 8FB80040 */ lw $t8, 0x40($sp) -/* 09E950 8009DD50 8042645C */ lb $v0, %lo(gControllersXAxisDirection)($v0) -/* 09E954 8009DD54 00000000 */ nop -/* 09E958 8009DD58 1840000B */ blez $v0, .L8009DD88 -/* 09E95C 8009DD5C 00000000 */ nop -/* 09E960 8009DD60 0C003932 */ jal is_time_trial_enabled -/* 09E964 8009DD64 00000000 */ nop -/* 09E968 8009DD68 14400003 */ bnez $v0, .L8009DD78 -/* 09E96C 8009DD6C 24040231 */ li $a0, 561 -/* 09E970 8009DD70 0C00DAF3 */ jal play_tt_voice_clip -/* 09E974 8009DD74 24050001 */ li $a1, 1 -.L8009DD78: -/* 09E978 8009DD78 0C00392F */ jal set_time_trial_enabled -/* 09E97C 8009DD7C 24040001 */ li $a0, 1 -/* 09E980 8009DD80 1000000D */ b .L8009DDB8 -/* 09E984 8009DD84 8FB80040 */ lw $t8, 0x40($sp) -.L8009DD88: -/* 09E988 8009DD88 0441000B */ bgez $v0, .L8009DDB8 -/* 09E98C 8009DD8C 8FB80040 */ lw $t8, 0x40($sp) -/* 09E990 8009DD90 0C003932 */ jal is_time_trial_enabled -/* 09E994 8009DD94 00000000 */ nop -/* 09E998 8009DD98 24010001 */ li $at, 1 -/* 09E99C 8009DD9C 14410003 */ bne $v0, $at, .L8009DDAC -/* 09E9A0 8009DDA0 24040230 */ li $a0, 560 -/* 09E9A4 8009DDA4 0C00DAF3 */ jal play_tt_voice_clip -/* 09E9A8 8009DDA8 24050001 */ li $a1, 1 -.L8009DDAC: -/* 09E9AC 8009DDAC 0C00392F */ jal set_time_trial_enabled -/* 09E9B0 8009DDB0 00002025 */ move $a0, $zero -/* 09E9B4 8009DDB4 8FB80040 */ lw $t8, 0x40($sp) -.L8009DDB8: -/* 09E9B8 8009DDB8 8FAE0040 */ lw $t6, 0x40($sp) -/* 09E9BC 8009DDBC 33198000 */ andi $t9, $t8, 0x8000 -/* 09E9C0 8009DDC0 13200032 */ beqz $t9, .L8009DE8C -/* 09E9C4 8009DDC4 3C098012 */ lui $t1, %hi(sCurrentMenuID) # $t1, 0x8012 -/* 09E9C8 8009DDC8 812964E2 */ lb $t1, %lo(sCurrentMenuID)($t1) -/* 09E9CC 8009DDCC 2401000A */ li $at, 10 -/* 09E9D0 8009DDD0 1121002E */ beq $t1, $at, .L8009DE8C -/* 09E9D4 8009DDD4 3C038012 */ lui $v1, %hi(gDialogueItemSelection) # $v1, 0x8012 -/* 09E9D8 8009DDD8 80636516 */ lb $v1, %lo(gDialogueItemSelection)($v1) -/* 09E9DC 8009DDDC 24010001 */ li $at, 1 -/* 09E9E0 8009DDE0 10610006 */ beq $v1, $at, .L8009DDFC -/* 09E9E4 8009DDE4 240400EF */ li $a0, 239 -/* 09E9E8 8009DDE8 24010003 */ li $at, 3 -/* 09E9EC 8009DDEC 10610011 */ beq $v1, $at, .L8009DE34 -/* 09E9F0 8009DDF0 240400EF */ li $a0, 239 -/* 09E9F4 8009DDF4 10000023 */ b .L8009DE84 -/* 09E9F8 8009DDF8 246D0001 */ addiu $t5, $v1, 1 -.L8009DDFC: -/* 09E9FC 8009DDFC 0C000741 */ jal play_sound_global -/* 09EA00 8009DE00 00002825 */ move $a1, $zero -/* 09EA04 8009DE04 3C048012 */ lui $a0, %hi(gSaveGhostDelayCounter) # $a0, 0x8012 -/* 09EA08 8009DE08 24846398 */ addiu $a0, %lo(gSaveGhostDelayCounter) # addiu $a0, $a0, 0x6398 -/* 09EA0C 8009DE0C AC800000 */ sw $zero, ($a0) -/* 09EA10 8009DE10 3C018012 */ lui $at, %hi(gPreviousMenuID) # $at, 0x8012 -/* 09EA14 8009DE14 AC20639C */ sw $zero, %lo(gPreviousMenuID)($at) -/* 09EA18 8009DE18 3C038012 */ lui $v1, %hi(gDialogueItemSelection) # $v1, 0x8012 -/* 09EA1C 8009DE1C 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EA20 8009DE20 240A0008 */ li $t2, 8 -/* 09EA24 8009DE24 80636516 */ lb $v1, %lo(gDialogueItemSelection)($v1) -/* 09EA28 8009DE28 10000015 */ b .L8009DE80 -/* 09EA2C 8009DE2C A02A64E2 */ sb $t2, %lo(sCurrentMenuID)($at) -/* 09EA30 8009DE30 240400EF */ li $a0, 239 -.L8009DE34: -/* 09EA34 8009DE34 0C000741 */ jal play_sound_global -/* 09EA38 8009DE38 00002825 */ move $a1, $zero -/* 09EA3C 8009DE3C 2404022E */ li $a0, 558 -/* 09EA40 8009DE40 0C00DAF3 */ jal play_tt_voice_clip -/* 09EA44 8009DE44 24050001 */ li $a1, 1 -/* 09EA48 8009DE48 3C04800E */ lui $a0, %hi(D_800E1E2C) # $a0, 0x800e -/* 09EA4C 8009DE4C 0C02719D */ jal func_8009C674 -/* 09EA50 8009DE50 24841E2C */ addiu $a0, %lo(D_800E1E2C) # addiu $a0, $a0, 0x1e2c -/* 09EA54 8009DE54 3C04800E */ lui $a0, %hi(D_800E1E40) # $a0, 0x800e -/* 09EA58 8009DE58 0C027229 */ jal allocate_menu_images -/* 09EA5C 8009DE5C 24841E40 */ addiu $a0, %lo(D_800E1E40) # addiu $a0, $a0, 0x1e40 -/* 09EA60 8009DE60 240B0001 */ li $t3, 1 -/* 09EA64 8009DE64 3C01800E */ lui $at, %hi(D_800E1E28) # $at, 0x800e -/* 09EA68 8009DE68 A02B1E28 */ sb $t3, %lo(D_800E1E28)($at) -/* 09EA6C 8009DE6C 3C038012 */ lui $v1, %hi(gDialogueItemSelection) # $v1, 0x8012 -/* 09EA70 8009DE70 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EA74 8009DE74 240C0004 */ li $t4, 4 -/* 09EA78 8009DE78 80636516 */ lb $v1, %lo(gDialogueItemSelection)($v1) -/* 09EA7C 8009DE7C A02C64E2 */ sb $t4, %lo(sCurrentMenuID)($at) -.L8009DE80: -/* 09EA80 8009DE80 246D0001 */ addiu $t5, $v1, 1 -.L8009DE84: -/* 09EA84 8009DE84 10000008 */ b .L8009DEA8 -/* 09EA88 8009DE88 AFAD0044 */ sw $t5, 0x44($sp) -.L8009DE8C: -/* 09EA8C 8009DE8C 31CF4000 */ andi $t7, $t6, 0x4000 -/* 09EA90 8009DE90 11E00005 */ beqz $t7, .L8009DEA8 -/* 09EA94 8009DE94 24040241 */ li $a0, 577 -/* 09EA98 8009DE98 0C000741 */ jal play_sound_global -/* 09EA9C 8009DE9C 00002825 */ move $a1, $zero -/* 09EAA0 8009DEA0 24180003 */ li $t8, 3 -/* 09EAA4 8009DEA4 AFB80044 */ sw $t8, 0x44($sp) -.L8009DEA8: -/* 09EAA8 8009DEA8 3C038012 */ lui $v1, %hi(sCurrentMenuID) -/* 09EAAC 8009DEAC 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09EAB0 8009DEB0 24010004 */ li $at, 4 -/* 09EAB4 8009DEB4 14610002 */ bne $v1, $at, .L8009DEC0 -/* 09EAB8 8009DEB8 2409000A */ li $t1, 10 -/* 09EABC 8009DEBC AFA00044 */ sw $zero, 0x44($sp) -.L8009DEC0: -/* 09EAC0 8009DEC0 8FB90044 */ lw $t9, 0x44($sp) -/* 09EAC4 8009DEC4 24010003 */ li $at, 3 -/* 09EAC8 8009DEC8 17210004 */ bne $t9, $at, .L8009DEDC -/* 09EACC 8009DECC 240A0003 */ li $t2, 3 -/* 09EAD0 8009DED0 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EAD4 8009DED4 A02964E2 */ sb $t1, %lo(sCurrentMenuID)($at) -/* 09EAD8 8009DED8 2403000A */ li $v1, 10 -.L8009DEDC: -/* 09EADC 8009DEDC 2401000A */ li $at, 10 -/* 09EAE0 8009DEE0 14610127 */ bne $v1, $at, .L8009E380 -/* 09EAE4 8009DEE4 24010001 */ li $at, 1 -/* 09EAE8 8009DEE8 10000124 */ b .L8009E37C -/* 09EAEC 8009DEEC AFAA0044 */ sw $t2, 0x44($sp) -glabel L8009DEF0 -/* 09EAF0 8009DEF0 3C048012 */ lui $a0, %hi(gTTSaveGhostPakErrorText) # $a0, 0x8012 -/* 09EAF4 8009DEF4 8C8463A4 */ lw $a0, %lo(gTTSaveGhostPakErrorText)($a0) -/* 09EAF8 8009DEF8 00001825 */ move $v1, $zero -/* 09EAFC 8009DEFC 8C850000 */ lw $a1, ($a0) -/* 09EB00 8009DF00 240E003A */ li $t6, 58 -/* 09EB04 8009DF04 10A00005 */ beqz $a1, .L8009DF1C -/* 09EB08 8009DF08 00801025 */ move $v0, $a0 -.L8009DF0C: -/* 09EB0C 8009DF0C 8C4B0004 */ lw $t3, 4($v0) -/* 09EB10 8009DF10 24630001 */ addiu $v1, $v1, 1 -/* 09EB14 8009DF14 1560FFFD */ bnez $t3, .L8009DF0C -/* 09EB18 8009DF18 24420004 */ addiu $v0, $v0, 4 -.L8009DF1C: -/* 09EB1C 8009DF1C 1860001B */ blez $v1, .L8009DF8C -/* 09EB20 8009DF20 246CFFFF */ addiu $t4, $v1, -1 -/* 09EB24 8009DF24 000C68C0 */ sll $t5, $t4, 3 -/* 09EB28 8009DF28 10A00018 */ beqz $a1, .L8009DF8C -/* 09EB2C 8009DF2C 01CD3023 */ subu $a2, $t6, $t5 -/* 09EB30 8009DF30 8C870000 */ lw $a3, ($a0) -/* 09EB34 8009DF34 00001825 */ move $v1, $zero -/* 09EB38 8009DF38 240F0001 */ li $t7, 1 -.L8009DF3C: -/* 09EB3C 8009DF3C 24180004 */ li $t8, 4 -/* 09EB40 8009DF40 AFB80014 */ sw $t8, 0x14($sp) -/* 09EB44 8009DF44 AFAF0010 */ sw $t7, 0x10($sp) -/* 09EB48 8009DF48 24040001 */ li $a0, 1 -/* 09EB4C 8009DF4C 24058000 */ li $a1, -32768 -/* 09EB50 8009DF50 AFA30024 */ sw $v1, 0x24($sp) -/* 09EB54 8009DF54 0C03145A */ jal render_dialogue_text -/* 09EB58 8009DF58 AFA60038 */ sw $a2, 0x38($sp) -/* 09EB5C 8009DF5C 8FA30024 */ lw $v1, 0x24($sp) -/* 09EB60 8009DF60 3C198012 */ lui $t9, %hi(gTTSaveGhostPakErrorText) # $t9, 0x8012 -/* 09EB64 8009DF64 8F3963A4 */ lw $t9, %lo(gTTSaveGhostPakErrorText)($t9) -/* 09EB68 8009DF68 24630004 */ addiu $v1, $v1, 4 -/* 09EB6C 8009DF6C 03234821 */ addu $t1, $t9, $v1 -/* 09EB70 8009DF70 8FA60038 */ lw $a2, 0x38($sp) -/* 09EB74 8009DF74 8D270000 */ lw $a3, ($t1) -/* 09EB78 8009DF78 24C60010 */ addiu $a2, $a2, 0x10 -/* 09EB7C 8009DF7C 14E0FFEF */ bnez $a3, .L8009DF3C -/* 09EB80 8009DF80 240F0001 */ li $t7, 1 -/* 09EB84 8009DF84 3C088012 */ lui $t0, %hi(sCurrentMenuID) # $t0, 0x8012 -/* 09EB88 8009DF88 250864E2 */ addiu $t0, %lo(sCurrentMenuID) # addiu $t0, $t0, 0x64e2 -.L8009DF8C: -/* 09EB8C 8009DF8C 8FAA0040 */ lw $t2, 0x40($sp) -/* 09EB90 8009DF90 3C038012 */ lui $v1, %hi(sCurrentMenuID) # $v1, 0x8012 -/* 09EB94 8009DF94 314BC000 */ andi $t3, $t2, 0xc000 -/* 09EB98 8009DF98 11600002 */ beqz $t3, .L8009DFA4 -/* 09EB9C 8009DF9C 00000000 */ nop -/* 09EBA0 8009DFA0 A1000000 */ sb $zero, ($t0) -.L8009DFA4: -/* 09EBA4 8009DFA4 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09EBA8 8009DFA8 100000F5 */ b .L8009E380 -/* 09EBAC 8009DFAC 24010001 */ li $at, 1 -glabel L8009DFB0 -/* 09EBB0 8009DFB0 308CC000 */ andi $t4, $a0, 0xc000 -/* 09EBB4 8009DFB4 118000F1 */ beqz $t4, .L8009E37C -/* 09EBB8 8009DFB8 3C01800E */ lui $at, %hi(D_800E1E28) # $at, 0x800e -/* 09EBBC 8009DFBC A1000000 */ sb $zero, ($t0) -/* 09EBC0 8009DFC0 3C04800E */ lui $a0, %hi(D_800E1E2C) # $a0, 0x800e -/* 09EBC4 8009DFC4 A0201E28 */ sb $zero, %lo(D_800E1E28)($at) -/* 09EBC8 8009DFC8 0C02712A */ jal func_8009C4A8 -/* 09EBCC 8009DFCC 24841E2C */ addiu $a0, %lo(D_800E1E2C) # addiu $a0, $a0, 0x1e2c -/* 09EBD0 8009DFD0 2404022F */ li $a0, 559 -/* 09EBD4 8009DFD4 0C00DAF3 */ jal play_tt_voice_clip -/* 09EBD8 8009DFD8 24050001 */ li $a1, 1 -/* 09EBDC 8009DFDC 3C038012 */ lui $v1, %hi(sCurrentMenuID) # $v1, 0x8012 -/* 09EBE0 8009DFE0 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09EBE4 8009DFE4 100000E6 */ b .L8009E380 -/* 09EBE8 8009DFE8 24010001 */ li $at, 1 -glabel L8009DFEC -/* 09EBEC 8009DFEC 3C02800E */ lui $v0, %hi(gMenuText) # $v0, 0x800e -/* 09EBF0 8009DFF0 8C42F4A0 */ lw $v0, %lo(gMenuText)($v0) -/* 09EBF4 8009DFF4 240300D0 */ li $v1, 208 -/* 09EBF8 8009DFF8 8C4E00D0 */ lw $t6, 0xd0($v0) -/* 09EBFC 8009DFFC 00000000 */ nop -/* 09EC00 8009E000 11C00019 */ beqz $t6, .L8009E068 -/* 09EC04 8009E004 8FA90040 */ lw $t1, 0x40($sp) -/* 09EC08 8009E008 8C4700D0 */ lw $a3, 0xd0($v0) -/* 09EC0C 8009E00C 24060006 */ li $a2, 6 -/* 09EC10 8009E010 240D0001 */ li $t5, 1 -.L8009E014: -/* 09EC14 8009E014 240F0004 */ li $t7, 4 -/* 09EC18 8009E018 AFAF0014 */ sw $t7, 0x14($sp) -/* 09EC1C 8009E01C AFAD0010 */ sw $t5, 0x10($sp) -/* 09EC20 8009E020 24040001 */ li $a0, 1 -/* 09EC24 8009E024 24058000 */ li $a1, -32768 -/* 09EC28 8009E028 AFA30024 */ sw $v1, 0x24($sp) -/* 09EC2C 8009E02C 0C03145A */ jal render_dialogue_text -/* 09EC30 8009E030 AFA60020 */ sw $a2, 0x20($sp) -/* 09EC34 8009E034 8FA30024 */ lw $v1, 0x24($sp) -/* 09EC38 8009E038 3C18800E */ lui $t8, %hi(gMenuText) # $t8, 0x800e -/* 09EC3C 8009E03C 8F18F4A0 */ lw $t8, %lo(gMenuText)($t8) -/* 09EC40 8009E040 24630004 */ addiu $v1, $v1, 4 -/* 09EC44 8009E044 0303C821 */ addu $t9, $t8, $v1 -/* 09EC48 8009E048 8FA60020 */ lw $a2, 0x20($sp) -/* 09EC4C 8009E04C 8F270000 */ lw $a3, ($t9) -/* 09EC50 8009E050 24C60010 */ addiu $a2, $a2, 0x10 -/* 09EC54 8009E054 14E0FFEF */ bnez $a3, .L8009E014 -/* 09EC58 8009E058 240D0001 */ li $t5, 1 -/* 09EC5C 8009E05C 3C088012 */ lui $t0, %hi(sCurrentMenuID) # $t0, 0x8012 -/* 09EC60 8009E060 250864E2 */ addiu $t0, %lo(sCurrentMenuID) # addiu $t0, $t0, 0x64e2 -/* 09EC64 8009E064 8FA90040 */ lw $t1, 0x40($sp) -.L8009E068: -/* 09EC68 8009E068 8FAB0030 */ lw $t3, 0x30($sp) -/* 09EC6C 8009E06C 312AC000 */ andi $t2, $t1, 0xc000 -/* 09EC70 8009E070 11400006 */ beqz $t2, .L8009E08C -/* 09EC74 8009E074 3C038012 */ lui $v1, %hi(sCurrentMenuID) # $v1, 0x8012 -/* 09EC78 8009E078 8D6C0010 */ lw $t4, 0x10($t3) -/* 09EC7C 8009E07C 00000000 */ nop -/* 09EC80 8009E080 358E0002 */ ori $t6, $t4, 2 -/* 09EC84 8009E084 AD6E0010 */ sw $t6, 0x10($t3) -/* 09EC88 8009E088 A1000000 */ sb $zero, ($t0) -.L8009E08C: -/* 09EC8C 8009E08C 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09EC90 8009E090 100000BB */ b .L8009E380 -/* 09EC94 8009E094 24010001 */ li $at, 1 -glabel L8009E098 -/* 09EC98 8009E098 3C0D800E */ lui $t5, %hi(gMenuText) # $t5, 0x800e -/* 09EC9C 8009E09C 8DADF4A0 */ lw $t5, %lo(gMenuText)($t5) -/* 09ECA0 8009E0A0 240F0001 */ li $t7, 1 -/* 09ECA4 8009E0A4 8DA7027C */ lw $a3, 0x27c($t5) -/* 09ECA8 8009E0A8 24180004 */ li $t8, 4 -/* 09ECAC 8009E0AC AFB80014 */ sw $t8, 0x14($sp) -/* 09ECB0 8009E0B0 AFAF0010 */ sw $t7, 0x10($sp) -/* 09ECB4 8009E0B4 24040001 */ li $a0, 1 -/* 09ECB8 8009E0B8 24058000 */ li $a1, -32768 -/* 09ECBC 8009E0BC 0C03145A */ jal render_dialogue_text -/* 09ECC0 8009E0C0 24060022 */ li $a2, 34 -/* 09ECC4 8009E0C4 3C19800E */ lui $t9, %hi(gMenuText) # $t9, 0x800e -/* 09ECC8 8009E0C8 8F39F4A0 */ lw $t9, %lo(gMenuText)($t9) -/* 09ECCC 8009E0CC 24090001 */ li $t1, 1 -/* 09ECD0 8009E0D0 8F270280 */ lw $a3, 0x280($t9) -/* 09ECD4 8009E0D4 240A0004 */ li $t2, 4 -/* 09ECD8 8009E0D8 AFAA0014 */ sw $t2, 0x14($sp) -/* 09ECDC 8009E0DC AFA90010 */ sw $t1, 0x10($sp) -/* 09ECE0 8009E0E0 24040001 */ li $a0, 1 -/* 09ECE4 8009E0E4 24058000 */ li $a1, -32768 -/* 09ECE8 8009E0E8 0C03145A */ jal render_dialogue_text -/* 09ECEC 8009E0EC 24060032 */ li $a2, 50 -/* 09ECF0 8009E0F0 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e -/* 09ECF4 8009E0F4 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) -/* 09ECF8 8009E0F8 240E0001 */ li $t6, 1 -/* 09ECFC 8009E0FC 8D870288 */ lw $a3, 0x288($t4) -/* 09ED00 8009E100 240B0004 */ li $t3, 4 -/* 09ED04 8009E104 AFAB0014 */ sw $t3, 0x14($sp) -/* 09ED08 8009E108 AFAE0010 */ sw $t6, 0x10($sp) -/* 09ED0C 8009E10C 24040001 */ li $a0, 1 -/* 09ED10 8009E110 24058000 */ li $a1, -32768 -/* 09ED14 8009E114 0C03145A */ jal render_dialogue_text -/* 09ED18 8009E118 24060042 */ li $a2, 66 -/* 09ED1C 8009E11C 8FAD0040 */ lw $t5, 0x40($sp) -/* 09ED20 8009E120 240400EF */ li $a0, 239 -/* 09ED24 8009E124 31AF9000 */ andi $t7, $t5, 0x9000 -/* 09ED28 8009E128 11E0000E */ beqz $t7, .L8009E164 -/* 09ED2C 8009E12C 8FA90040 */ lw $t1, 0x40($sp) -/* 09ED30 8009E130 0C000741 */ jal play_sound_global -/* 09ED34 8009E134 00002825 */ move $a1, $zero -/* 09ED38 8009E138 3C048012 */ lui $a0, %hi(gSaveGhostDelayCounter) # $a0, 0x8012 -/* 09ED3C 8009E13C 24846398 */ addiu $a0, %lo(gSaveGhostDelayCounter) # addiu $a0, $a0, 0x6398 -/* 09ED40 8009E140 AC800000 */ sw $zero, ($a0) -/* 09ED44 8009E144 24180007 */ li $t8, 7 -/* 09ED48 8009E148 3C018012 */ lui $at, %hi(gPreviousMenuID) # $at, 0x8012 -/* 09ED4C 8009E14C AC38639C */ sw $t8, %lo(gPreviousMenuID)($at) -/* 09ED50 8009E150 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09ED54 8009E154 24190008 */ li $t9, 8 -/* 09ED58 8009E158 1000000A */ b .L8009E184 -/* 09ED5C 8009E15C A03964E2 */ sb $t9, %lo(sCurrentMenuID)($at) -/* 09ED60 8009E160 8FA90040 */ lw $t1, 0x40($sp) -.L8009E164: -/* 09ED64 8009E164 00000000 */ nop -/* 09ED68 8009E168 312A4000 */ andi $t2, $t1, 0x4000 -/* 09ED6C 8009E16C 11400005 */ beqz $t2, .L8009E184 -/* 09ED70 8009E170 24040241 */ li $a0, 577 -/* 09ED74 8009E174 0C000741 */ jal play_sound_global -/* 09ED78 8009E178 00002825 */ move $a1, $zero -/* 09ED7C 8009E17C 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09ED80 8009E180 A02064E2 */ sb $zero, %lo(sCurrentMenuID)($at) -.L8009E184: -/* 09ED84 8009E184 3C038012 */ lui $v1, %hi(sCurrentMenuID) # $v1, 0x8012 -/* 09ED88 8009E188 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09ED8C 8009E18C 1000007C */ b .L8009E380 -/* 09ED90 8009E190 24010001 */ li $at, 1 -glabel L8009E194 -/* 09ED94 8009E194 3C0C800E */ lui $t4, %hi(gMenuText) # $t4, 0x800e -/* 09ED98 8009E198 8D8CF4A0 */ lw $t4, %lo(gMenuText)($t4) -/* 09ED9C 8009E19C 240E0001 */ li $t6, 1 -/* 09EDA0 8009E1A0 8D87027C */ lw $a3, 0x27c($t4) -/* 09EDA4 8009E1A4 240B0004 */ li $t3, 4 -/* 09EDA8 8009E1A8 AFAB0014 */ sw $t3, 0x14($sp) -/* 09EDAC 8009E1AC AFAE0010 */ sw $t6, 0x10($sp) -/* 09EDB0 8009E1B0 24040001 */ li $a0, 1 -/* 09EDB4 8009E1B4 24058000 */ li $a1, -32768 -/* 09EDB8 8009E1B8 0C03145A */ jal render_dialogue_text -/* 09EDBC 8009E1BC 24060022 */ li $a2, 34 -/* 09EDC0 8009E1C0 3C0D800E */ lui $t5, %hi(gMenuText) # $t5, 0x800e -/* 09EDC4 8009E1C4 8DADF4A0 */ lw $t5, %lo(gMenuText)($t5) -/* 09EDC8 8009E1C8 240F0001 */ li $t7, 1 -/* 09EDCC 8009E1CC 8DA70284 */ lw $a3, 0x284($t5) -/* 09EDD0 8009E1D0 24180004 */ li $t8, 4 -/* 09EDD4 8009E1D4 AFB80014 */ sw $t8, 0x14($sp) -/* 09EDD8 8009E1D8 AFAF0010 */ sw $t7, 0x10($sp) -/* 09EDDC 8009E1DC 24040001 */ li $a0, 1 -/* 09EDE0 8009E1E0 24058000 */ li $a1, -32768 -/* 09EDE4 8009E1E4 0C03145A */ jal render_dialogue_text -/* 09EDE8 8009E1E8 24060032 */ li $a2, 50 -/* 09EDEC 8009E1EC 3C19800E */ lui $t9, %hi(gMenuText) # $t9, 0x800e -/* 09EDF0 8009E1F0 8F39F4A0 */ lw $t9, %lo(gMenuText)($t9) -/* 09EDF4 8009E1F4 24090001 */ li $t1, 1 -/* 09EDF8 8009E1F8 8F270288 */ lw $a3, 0x288($t9) -/* 09EDFC 8009E1FC 240A0004 */ li $t2, 4 -/* 09EE00 8009E200 AFAA0014 */ sw $t2, 0x14($sp) -/* 09EE04 8009E204 AFA90010 */ sw $t1, 0x10($sp) -/* 09EE08 8009E208 24040001 */ li $a0, 1 -/* 09EE0C 8009E20C 24058000 */ li $a1, -32768 -/* 09EE10 8009E210 0C03145A */ jal render_dialogue_text -/* 09EE14 8009E214 24060042 */ li $a2, 66 -/* 09EE18 8009E218 8FAC0040 */ lw $t4, 0x40($sp) -/* 09EE1C 8009E21C 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EE20 8009E220 318ED000 */ andi $t6, $t4, 0xd000 -/* 09EE24 8009E224 11C00002 */ beqz $t6, .L8009E230 -/* 09EE28 8009E228 3C038012 */ lui $v1, %hi(sCurrentMenuID) # $v1, 0x8012 -/* 09EE2C 8009E22C A02064E2 */ sb $zero, %lo(sCurrentMenuID)($at) -.L8009E230: -/* 09EE30 8009E230 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09EE34 8009E234 10000052 */ b .L8009E380 -/* 09EE38 8009E238 24010001 */ li $at, 1 -glabel L8009E23C -/* 09EE3C 8009E23C 3C0B800E */ lui $t3, %hi(gMenuText) # $t3, 0x800e -/* 09EE40 8009E240 8D6BF4A0 */ lw $t3, %lo(gMenuText)($t3) -/* 09EE44 8009E244 240D0001 */ li $t5, 1 -/* 09EE48 8009E248 8D6701F0 */ lw $a3, 0x1f0($t3) -/* 09EE4C 8009E24C 240F0004 */ li $t7, 4 -/* 09EE50 8009E250 AFAF0014 */ sw $t7, 0x14($sp) -/* 09EE54 8009E254 AFAD0010 */ sw $t5, 0x10($sp) -/* 09EE58 8009E258 24040001 */ li $a0, 1 -/* 09EE5C 8009E25C 24058000 */ li $a1, -32768 -/* 09EE60 8009E260 0C03145A */ jal render_dialogue_text -/* 09EE64 8009E264 24060032 */ li $a2, 50 -/* 09EE68 8009E268 3C048012 */ lui $a0, %hi(gSaveGhostDelayCounter) # $a0, 0x8012 -/* 09EE6C 8009E26C 24846398 */ addiu $a0, %lo(gSaveGhostDelayCounter) # addiu $a0, $a0, 0x6398 -/* 09EE70 8009E270 8C980000 */ lw $t8, ($a0) -/* 09EE74 8009E274 00000000 */ nop -/* 09EE78 8009E278 27190001 */ addiu $t9, $t8, 1 -/* 09EE7C 8009E27C 2B210005 */ slti $at, $t9, 5 -/* 09EE80 8009E280 1420003B */ bnez $at, .L8009E370 -/* 09EE84 8009E284 AC990000 */ sw $t9, ($a0) -/* 09EE88 8009E288 0C006DCE */ jal func_8001B738 -/* 09EE8C 8009E28C 00002025 */ move $a0, $zero -/* 09EE90 8009E290 304300FF */ andi $v1, $v0, 0xff -/* 09EE94 8009E294 24010005 */ li $at, 5 -/* 09EE98 8009E298 14610005 */ bne $v1, $at, .L8009E2B0 -/* 09EE9C 8009E29C 2C61000A */ sltiu $at, $v1, 0xa -/* 09EEA0 8009E2A0 0C006DCE */ jal func_8001B738 -/* 09EEA4 8009E2A4 00002025 */ move $a0, $zero -/* 09EEA8 8009E2A8 304300FF */ andi $v1, $v0, 0xff -/* 09EEAC 8009E2AC 2C61000A */ sltiu $at, $v1, 0xa -.L8009E2B0: -/* 09EEB0 8009E2B0 10200028 */ beqz $at, .L8009E354 -/* 09EEB4 8009E2B4 00035080 */ sll $t2, $v1, 2 -/* 09EEB8 8009E2B8 3C01800F */ lui $at, %hi(jpt_800E860C) # $at, 0x800f -/* 09EEBC 8009E2BC 002A0821 */ addu $at, $at, $t2 -/* 09EEC0 8009E2C0 8C2A860C */ lw $t2, %lo(jpt_800E860C)($at) -/* 09EEC4 8009E2C4 00000000 */ nop -/* 09EEC8 8009E2C8 01400008 */ jr $t2 -/* 09EECC 8009E2CC 00000000 */ nop -glabel L8009E2D0 -/* 09EED0 8009E2D0 3C0C8012 */ lui $t4, %hi(gPreviousMenuID) # $t4, 0x8012 -/* 09EED4 8009E2D4 8D8C639C */ lw $t4, %lo(gPreviousMenuID)($t4) -/* 09EED8 8009E2D8 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EEDC 8009E2DC 10000024 */ b .L8009E370 -/* 09EEE0 8009E2E0 A02C64E2 */ sb $t4, %lo(sCurrentMenuID)($at) -glabel L8009E2E4 -/* 09EEE4 8009E2E4 240E0006 */ li $t6, 6 -/* 09EEE8 8009E2E8 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EEEC 8009E2EC 10000020 */ b .L8009E370 -/* 09EEF0 8009E2F0 A02E64E2 */ sb $t6, %lo(sCurrentMenuID)($at) -glabel L8009E2F4 -/* 09EEF4 8009E2F4 3C0B800E */ lui $t3, %hi(sNoControllerPakMenuText) # $t3, 0x800e -/* 09EEF8 8009E2F8 256B09D8 */ addiu $t3, %lo(sNoControllerPakMenuText) # addiu $t3, $t3, 0x9d8 -/* 09EEFC 8009E2FC 3C018012 */ lui $at, %hi(gTTSaveGhostPakErrorText) # $at, 0x8012 -/* 09EF00 8009E300 AC2B63A4 */ sw $t3, %lo(gTTSaveGhostPakErrorText)($at) -/* 09EF04 8009E304 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EF08 8009E308 240D0001 */ li $t5, 1 -/* 09EF0C 8009E30C 10000018 */ b .L8009E370 -/* 09EF10 8009E310 A02D64E2 */ sb $t5, %lo(sCurrentMenuID)($at) -glabel L8009E314 -/* 09EF14 8009E314 3C0F800E */ lui $t7, %hi(sControllerPakFullMenuText) # $t7, 0x800e -/* 09EF18 8009E318 25EF09C4 */ addiu $t7, %lo(sControllerPakFullMenuText) # addiu $t7, $t7, 0x9c4 -/* 09EF1C 8009E31C 3C018012 */ lui $at, %hi(gTTSaveGhostPakErrorText) # $at, 0x8012 -/* 09EF20 8009E320 AC2F63A4 */ sw $t7, %lo(gTTSaveGhostPakErrorText)($at) -/* 09EF24 8009E324 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EF28 8009E328 24180001 */ li $t8, 1 -/* 09EF2C 8009E32C 10000010 */ b .L8009E370 -/* 09EF30 8009E330 A03864E2 */ sb $t8, %lo(sCurrentMenuID)($at) -glabel L8009E334 -/* 09EF34 8009E334 3C19800E */ lui $t9, %hi(sCorruptDataMenuText) # $t9, 0x800e -/* 09EF38 8009E338 273909EC */ addiu $t9, %lo(sCorruptDataMenuText) # addiu $t9, $t9, 0x9ec -/* 09EF3C 8009E33C 3C018012 */ lui $at, %hi(gTTSaveGhostPakErrorText) # $at, 0x8012 -/* 09EF40 8009E340 AC3963A4 */ sw $t9, %lo(gTTSaveGhostPakErrorText)($at) -/* 09EF44 8009E344 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EF48 8009E348 24090001 */ li $t1, 1 -/* 09EF4C 8009E34C 10000008 */ b .L8009E370 -/* 09EF50 8009E350 A02964E2 */ sb $t1, %lo(sCurrentMenuID)($at) -.L8009E354: -glabel L8009E354 -/* 09EF54 8009E354 3C0A800E */ lui $t2, %hi(sBadControllerPakMenuText) # $t2, 0x800e -/* 09EF58 8009E358 254A09B0 */ addiu $t2, %lo(sBadControllerPakMenuText) # addiu $t2, $t2, 0x9b0 -/* 09EF5C 8009E35C 3C018012 */ lui $at, %hi(gTTSaveGhostPakErrorText) # $at, 0x8012 -/* 09EF60 8009E360 AC2A63A4 */ sw $t2, %lo(gTTSaveGhostPakErrorText)($at) -/* 09EF64 8009E364 3C018012 */ lui $at, %hi(sCurrentMenuID) # $at, 0x8012 -/* 09EF68 8009E368 240C0001 */ li $t4, 1 -/* 09EF6C 8009E36C A02C64E2 */ sb $t4, %lo(sCurrentMenuID)($at) -.L8009E370: -/* 09EF70 8009E370 3C038012 */ lui $v1, %hi(sCurrentMenuID) # $v1, 0x8012 -/* 09EF74 8009E374 806364E2 */ lb $v1, %lo(sCurrentMenuID)($v1) -/* 09EF78 8009E378 00000000 */ nop -.L8009E37C: -glabel L8009E37C -/* 09EF7C 8009E37C 24010001 */ li $at, 1 -.L8009E380: -/* 09EF80 8009E380 10610005 */ beq $v1, $at, .L8009E398 -/* 09EF84 8009E384 24040001 */ li $a0, 1 -/* 09EF88 8009E388 24010002 */ li $at, 2 -/* 09EF8C 8009E38C 10610002 */ beq $v1, $at, .L8009E398 -/* 09EF90 8009E390 24010003 */ li $at, 3 -/* 09EF94 8009E394 1461000A */ bne $v1, $at, .L8009E3C0 -.L8009E398: -/* 09EF98 8009E398 3C0E800E */ lui $t6, %hi(gMenuText) # $t6, 0x800e -/* 09EF9C 8009E39C 8DCEF4A0 */ lw $t6, %lo(gMenuText)($t6) -/* 09EFA0 8009E3A0 240B0001 */ li $t3, 1 -/* 09EFA4 8009E3A4 8DC70100 */ lw $a3, 0x100($t6) -/* 09EFA8 8009E3A8 240D0004 */ li $t5, 4 -/* 09EFAC 8009E3AC AFAD0014 */ sw $t5, 0x14($sp) -/* 09EFB0 8009E3B0 AFAB0010 */ sw $t3, 0x10($sp) -/* 09EFB4 8009E3B4 24058000 */ li $a1, -32768 -/* 09EFB8 8009E3B8 0C03145A */ jal render_dialogue_text -/* 09EFBC 8009E3BC 24060006 */ li $a2, 6 -.L8009E3C0: -/* 09EFC0 8009E3C0 8FBF001C */ lw $ra, 0x1c($sp) -/* 09EFC4 8009E3C4 8FA20044 */ lw $v0, 0x44($sp) -/* 09EFC8 8009E3C8 03E00008 */ jr $ra -/* 09EFCC 8009E3CC 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/object_models/free_object_model.s b/asm/non_matchings/object_models/free_object_model.s deleted file mode 100644 index 7fb33f87..00000000 --- a/asm/non_matchings/object_models/free_object_model.s +++ /dev/null @@ -1,83 +0,0 @@ -glabel free_object_model -/* 060C58 80060058 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 060C5C 8006005C AFBF0024 */ sw $ra, 0x24($sp) -/* 060C60 80060060 AFB20020 */ sw $s2, 0x20($sp) -/* 060C64 80060064 AFB1001C */ sw $s1, 0x1c($sp) -/* 060C68 80060068 AFB00018 */ sw $s0, 0x18($sp) -/* 060C6C 8006006C 84820022 */ lh $v0, 0x22($a0) -/* 060C70 80060070 00809025 */ move $s2, $a0 -/* 060C74 80060074 18400011 */ blez $v0, .L800600BC -/* 060C78 80060078 00008025 */ move $s0, $zero -/* 060C7C 8006007C 00008825 */ move $s1, $zero -.L80060080: -/* 060C80 80060080 8E4E0000 */ lw $t6, ($s2) -/* 060C84 80060084 00000000 */ nop -/* 060C88 80060088 01D17821 */ addu $t7, $t6, $s1 -/* 060C8C 8006008C 8DE40000 */ lw $a0, ($t7) -/* 060C90 80060090 00000000 */ nop -/* 060C94 80060094 10800005 */ beqz $a0, .L800600AC -/* 060C98 80060098 00000000 */ nop -/* 060C9C 8006009C 0C01ECAF */ jal free_texture -/* 060CA0 800600A0 00000000 */ nop -/* 060CA4 800600A4 86420022 */ lh $v0, 0x22($s2) -/* 060CA8 800600A8 00000000 */ nop -.L800600AC: -/* 060CAC 800600AC 26100001 */ addiu $s0, $s0, 1 -/* 060CB0 800600B0 0202082A */ slt $at, $s0, $v0 -/* 060CB4 800600B4 1420FFF2 */ bnez $at, .L80060080 -/* 060CB8 800600B8 26310008 */ addiu $s1, $s1, 8 -.L800600BC: -/* 060CBC 800600BC 8E44000C */ lw $a0, 0xc($s2) -/* 060CC0 800600C0 00000000 */ nop -/* 060CC4 800600C4 10800003 */ beqz $a0, .L800600D4 -/* 060CC8 800600C8 00000000 */ nop -/* 060CCC 800600CC 0C01C450 */ jal free_from_memory_pool -/* 060CD0 800600D0 00000000 */ nop -.L800600D4: -/* 060CD4 800600D4 8E440010 */ lw $a0, 0x10($s2) -/* 060CD8 800600D8 00000000 */ nop -/* 060CDC 800600DC 10800003 */ beqz $a0, .L800600EC -/* 060CE0 800600E0 00000000 */ nop -/* 060CE4 800600E4 0C01C450 */ jal free_from_memory_pool -/* 060CE8 800600E8 00000000 */ nop -.L800600EC: -/* 060CEC 800600EC 8E440040 */ lw $a0, 0x40($s2) -/* 060CF0 800600F0 00000000 */ nop -/* 060CF4 800600F4 10800003 */ beqz $a0, .L80060104 -/* 060CF8 800600F8 00000000 */ nop -/* 060CFC 800600FC 0C01C450 */ jal free_from_memory_pool -/* 060D00 80060100 00000000 */ nop -.L80060104: -/* 060D04 80060104 8E580044 */ lw $t8, 0x44($s2) -/* 060D08 80060108 00000000 */ nop -/* 060D0C 8006010C 13000013 */ beqz $t8, .L8006015C -/* 060D10 80060110 00000000 */ nop -/* 060D14 80060114 86590048 */ lh $t9, 0x48($s2) -/* 060D18 80060118 00008025 */ move $s0, $zero -/* 060D1C 8006011C 1320000F */ beqz $t9, .L8006015C -/* 060D20 80060120 00008825 */ move $s1, $zero -.L80060124: -/* 060D24 80060124 8E480044 */ lw $t0, 0x44($s2) -/* 060D28 80060128 00000000 */ nop -/* 060D2C 8006012C 01114821 */ addu $t1, $t0, $s1 -/* 060D30 80060130 8D240000 */ lw $a0, ($t1) -/* 060D34 80060134 0C01C450 */ jal free_from_memory_pool -/* 060D38 80060138 2484FFFC */ addiu $a0, $a0, -4 -/* 060D3C 8006013C 864A0048 */ lh $t2, 0x48($s2) -/* 060D40 80060140 26100001 */ addiu $s0, $s0, 1 -/* 060D44 80060144 020A082A */ slt $at, $s0, $t2 -/* 060D48 80060148 1420FFF6 */ bnez $at, .L80060124 -/* 060D4C 8006014C 26310008 */ addiu $s1, $s1, 8 -/* 060D50 80060150 8E440044 */ lw $a0, 0x44($s2) -/* 060D54 80060154 0C01C450 */ jal free_from_memory_pool -/* 060D58 80060158 00000000 */ nop -.L8006015C: -/* 060D5C 8006015C 0C01C450 */ jal free_from_memory_pool -/* 060D60 80060160 02402025 */ move $a0, $s2 -/* 060D64 80060164 8FBF0024 */ lw $ra, 0x24($sp) -/* 060D68 80060168 8FB00018 */ lw $s0, 0x18($sp) -/* 060D6C 8006016C 8FB1001C */ lw $s1, 0x1c($sp) -/* 060D70 80060170 8FB20020 */ lw $s2, 0x20($sp) -/* 060D74 80060174 03E00008 */ jr $ra -/* 060D78 80060178 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/objects/func_80014814.s b/asm/non_matchings/objects/func_80014814.s index b0d52b1a..d454567e 100644 --- a/asm/non_matchings/objects/func_80014814.s +++ b/asm/non_matchings/objects/func_80014814.s @@ -124,108 +124,3 @@ glabel func_80014814 /* 0155B8 800149B8 03E00008 */ jr $ra /* 0155BC 800149BC 00000000 */ nop -/* 0155C0 800149C0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0155C4 800149C4 AFBF0014 */ sw $ra, 0x14($sp) -/* 0155C8 800149C8 AFA40028 */ sw $a0, 0x28($sp) -/* 0155CC 800149CC AFA5002C */ sw $a1, 0x2c($sp) -/* 0155D0 800149D0 AFA60030 */ sw $a2, 0x30($sp) -/* 0155D4 800149D4 AFA70034 */ sw $a3, 0x34($sp) -/* 0155D8 800149D8 848F0006 */ lh $t7, 6($a0) -/* 0155DC 800149DC 00807025 */ move $t6, $a0 -/* 0155E0 800149E0 448F2000 */ mtc1 $t7, $f4 -/* 0155E4 800149E4 00C02025 */ move $a0, $a2 -/* 0155E8 800149E8 46802020 */ cvt.s.w $f0, $f4 -/* 0155EC 800149EC 00E02825 */ move $a1, $a3 -/* 0155F0 800149F0 91C70004 */ lbu $a3, 4($t6) -/* 0155F4 800149F4 44060000 */ mfc1 $a2, $f0 -/* 0155F8 800149F8 0C0052D4 */ jal func_80014B50 -/* 0155FC 800149FC E7A00018 */ swc1 $f0, 0x18($sp) -/* 015600 80014A00 8FB80028 */ lw $t8, 0x28($sp) -/* 015604 80014A04 C7A00018 */ lwc1 $f0, 0x18($sp) -/* 015608 80014A08 93070004 */ lbu $a3, 4($t8) -/* 01560C 80014A0C 8FA40030 */ lw $a0, 0x30($sp) -/* 015610 80014A10 44060000 */ mfc1 $a2, $f0 -/* 015614 80014A14 AFA20020 */ sw $v0, 0x20($sp) -/* 015618 80014A18 2445FFFF */ addiu $a1, $v0, -1 -/* 01561C 80014A1C 0C0052D4 */ jal func_80014B50 -/* 015620 80014A20 24E70008 */ addiu $a3, $a3, 8 -/* 015624 80014A24 8FAB0020 */ lw $t3, 0x20($sp) -/* 015628 80014A28 00402825 */ move $a1, $v0 -/* 01562C 80014A2C 004B082A */ slt $at, $v0, $t3 -/* 015630 80014A30 1020003D */ beqz $at, .L80014B28 -/* 015634 80014A34 01622023 */ subu $a0, $t3, $v0 -/* 015638 80014A38 30990003 */ andi $t9, $a0, 3 -/* 01563C 80014A3C 13200010 */ beqz $t9, .L80014A80 -/* 015640 80014A40 03223021 */ addu $a2, $t9, $v0 -/* 015644 80014A44 3C098012 */ lui $t1, %hi(gObjPtrList) # $t1, 0x8012 -/* 015648 80014A48 8FA80040 */ lw $t0, 0x40($sp) -/* 01564C 80014A4C 2529AE58 */ addiu $t1, %lo(gObjPtrList) # addiu $t1, $t1, -0x51a8 -/* 015650 80014A50 00051880 */ sll $v1, $a1, 2 -.L80014A54: -/* 015654 80014A54 8D2C0000 */ lw $t4, ($t1) -/* 015658 80014A58 24A50001 */ addiu $a1, $a1, 1 -/* 01565C 80014A5C 01836821 */ addu $t5, $t4, $v1 -/* 015660 80014A60 8DA40000 */ lw $a0, ($t5) -/* 015664 80014A64 24630004 */ addiu $v1, $v1, 4 -/* 015668 80014A68 808F0038 */ lb $t7, 0x38($a0) -/* 01566C 80014A6C 00000000 */ nop -/* 015670 80014A70 01E87021 */ addu $t6, $t7, $t0 -/* 015674 80014A74 14C5FFF7 */ bne $a2, $a1, .L80014A54 -/* 015678 80014A78 A08E0038 */ sb $t6, 0x38($a0) -/* 01567C 80014A7C 10AB002A */ beq $a1, $t3, .L80014B28 -.L80014A80: -/* 015680 80014A80 3C098012 */ lui $t1, %hi(gObjPtrList) # $t1, 0x8012 -/* 015684 80014A84 8FA80040 */ lw $t0, 0x40($sp) -/* 015688 80014A88 2529AE58 */ addiu $t1, %lo(gObjPtrList) # addiu $t1, $t1, -0x51a8 -/* 01568C 80014A8C 00051880 */ sll $v1, $a1, 2 -/* 015690 80014A90 000B5080 */ sll $t2, $t3, 2 -.L80014A94: -/* 015694 80014A94 8D380000 */ lw $t8, ($t1) -/* 015698 80014A98 00000000 */ nop -/* 01569C 80014A9C 0303C821 */ addu $t9, $t8, $v1 -/* 0156A0 80014AA0 8F240000 */ lw $a0, ($t9) -/* 0156A4 80014AA4 00000000 */ nop -/* 0156A8 80014AA8 808C0038 */ lb $t4, 0x38($a0) -/* 0156AC 80014AAC 00000000 */ nop -/* 0156B0 80014AB0 01886821 */ addu $t5, $t4, $t0 -/* 0156B4 80014AB4 A08D0038 */ sb $t5, 0x38($a0) -/* 0156B8 80014AB8 8D2F0000 */ lw $t7, ($t1) -/* 0156BC 80014ABC 00000000 */ nop -/* 0156C0 80014AC0 01E37021 */ addu $t6, $t7, $v1 -/* 0156C4 80014AC4 8DC50004 */ lw $a1, 4($t6) -/* 0156C8 80014AC8 00000000 */ nop -/* 0156CC 80014ACC 80B80038 */ lb $t8, 0x38($a1) -/* 0156D0 80014AD0 00000000 */ nop -/* 0156D4 80014AD4 0308C821 */ addu $t9, $t8, $t0 -/* 0156D8 80014AD8 A0B90038 */ sb $t9, 0x38($a1) -/* 0156DC 80014ADC 8D2C0000 */ lw $t4, ($t1) -/* 0156E0 80014AE0 00000000 */ nop -/* 0156E4 80014AE4 01836821 */ addu $t5, $t4, $v1 -/* 0156E8 80014AE8 8DA60008 */ lw $a2, 8($t5) -/* 0156EC 80014AEC 00000000 */ nop -/* 0156F0 80014AF0 80CF0038 */ lb $t7, 0x38($a2) -/* 0156F4 80014AF4 00000000 */ nop -/* 0156F8 80014AF8 01E87021 */ addu $t6, $t7, $t0 -/* 0156FC 80014AFC A0CE0038 */ sb $t6, 0x38($a2) -/* 015700 80014B00 8D380000 */ lw $t8, ($t1) -/* 015704 80014B04 00000000 */ nop -/* 015708 80014B08 0303C821 */ addu $t9, $t8, $v1 -/* 01570C 80014B0C 8F27000C */ lw $a3, 0xc($t9) -/* 015710 80014B10 24630010 */ addiu $v1, $v1, 0x10 -/* 015714 80014B14 80EC0038 */ lb $t4, 0x38($a3) -/* 015718 80014B18 00000000 */ nop -/* 01571C 80014B1C 01886821 */ addu $t5, $t4, $t0 -/* 015720 80014B20 146AFFDC */ bne $v1, $t2, .L80014A94 -/* 015724 80014B24 A0ED0038 */ sb $t5, 0x38($a3) -.L80014B28: -/* 015728 80014B28 8FAF0038 */ lw $t7, 0x38($sp) -/* 01572C 80014B2C 256EFFFF */ addiu $t6, $t3, -1 -/* 015730 80014B30 ADE20000 */ sw $v0, ($t7) -/* 015734 80014B34 8FB8003C */ lw $t8, 0x3c($sp) -/* 015738 80014B38 00000000 */ nop -/* 01573C 80014B3C AF0E0000 */ sw $t6, ($t8) -/* 015740 80014B40 8FBF0014 */ lw $ra, 0x14($sp) -/* 015744 80014B44 27BD0028 */ addiu $sp, $sp, 0x28 -/* 015748 80014B48 03E00008 */ jr $ra -/* 01574C 80014B4C 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_8001C524.s b/asm/non_matchings/objects/func_8001C524.s deleted file mode 100644 index 3d208035..00000000 --- a/asm/non_matchings/objects/func_8001C524.s +++ /dev/null @@ -1,111 +0,0 @@ -glabel func_8001C524 -/* 01D124 8001C524 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 01D128 8001C528 E7BA0034 */ swc1 $f26, 0x34($sp) -/* 01D12C 8001C52C 4486D000 */ mtc1 $a2, $f26 -/* 01D130 8001C530 AFB20040 */ sw $s2, 0x40($sp) -/* 01D134 8001C534 E7B90028 */ swc1 $f25, 0x28($sp) -/* 01D138 8001C538 E7B8002C */ swc1 $f24, 0x2c($sp) -/* 01D13C 8001C53C E7B70020 */ swc1 $f23, 0x20($sp) -/* 01D140 8001C540 E7B60024 */ swc1 $f22, 0x24($sp) -/* 01D144 8001C544 46007586 */ mov.s $f22, $f14 -/* 01D148 8001C548 46006606 */ mov.s $f24, $f12 -/* 01D14C 8001C54C 00E09025 */ move $s2, $a3 -/* 01D150 8001C550 AFBF005C */ sw $ra, 0x5c($sp) -/* 01D154 8001C554 AFBE0058 */ sw $fp, 0x58($sp) -/* 01D158 8001C558 AFB70054 */ sw $s7, 0x54($sp) -/* 01D15C 8001C55C AFB60050 */ sw $s6, 0x50($sp) -/* 01D160 8001C560 AFB5004C */ sw $s5, 0x4c($sp) -/* 01D164 8001C564 AFB40048 */ sw $s4, 0x48($sp) -/* 01D168 8001C568 AFB30044 */ sw $s3, 0x44($sp) -/* 01D16C 8001C56C AFB1003C */ sw $s1, 0x3c($sp) -/* 01D170 8001C570 AFB00038 */ sw $s0, 0x38($sp) -/* 01D174 8001C574 E7BB0030 */ swc1 $f27, 0x30($sp) -/* 01D178 8001C578 E7B50018 */ swc1 $f21, 0x18($sp) -/* 01D17C 8001C57C 10E00004 */ beqz $a3, .L8001C590 -/* 01D180 8001C580 E7B4001C */ swc1 $f20, 0x1c($sp) -/* 01D184 8001C584 0C007106 */ jal func_8001C418 -/* 01D188 8001C588 46007306 */ mov.s $f12, $f14 -/* 01D18C 8001C58C AFA20064 */ sw $v0, 0x64($sp) -.L8001C590: -/* 01D190 8001C590 3C01800E */ lui $at, %hi(D_800E5644) # $at, 0x800e -/* 01D194 8001C594 3C138012 */ lui $s3, %hi(D_8011AF04) # $s3, 0x8012 -/* 01D198 8001C598 8FBE0064 */ lw $fp, 0x64($sp) -/* 01D19C 8001C59C C4345644 */ lwc1 $f20, %lo(D_800E5644)($at) -/* 01D1A0 8001C5A0 241700FF */ li $s7, 255 -/* 01D1A4 8001C5A4 2673AF04 */ addiu $s3, %lo(D_8011AF04) # addiu $s3, $s3, -0x50fc -/* 01D1A8 8001C5A8 00008025 */ move $s0, $zero -/* 01D1AC 8001C5AC 00008825 */ move $s1, $zero -/* 01D1B0 8001C5B0 24160080 */ li $s6, 128 -/* 01D1B4 8001C5B4 24150003 */ li $s5, 3 -/* 01D1B8 8001C5B8 24140002 */ li $s4, 2 -.L8001C5BC: -/* 01D1BC 8001C5BC 8E6E0000 */ lw $t6, ($s3) -/* 01D1C0 8001C5C0 00000000 */ nop -/* 01D1C4 8001C5C4 01D17821 */ addu $t7, $t6, $s1 -/* 01D1C8 8001C5C8 8DE20000 */ lw $v0, ($t7) -/* 01D1CC 8001C5CC 00000000 */ nop -/* 01D1D0 8001C5D0 10400024 */ beqz $v0, .L8001C664 -/* 01D1D4 8001C5D4 00000000 */ nop -/* 01D1D8 8001C5D8 8C43003C */ lw $v1, 0x3c($v0) -/* 01D1DC 8001C5DC 12400006 */ beqz $s2, .L8001C5F8 -/* 01D1E0 8001C5E0 24040001 */ li $a0, 1 -/* 01D1E4 8001C5E4 8078000E */ lb $t8, 0xe($v1) -/* 01D1E8 8001C5E8 00000000 */ nop -/* 01D1EC 8001C5EC 13D80002 */ beq $fp, $t8, .L8001C5F8 -/* 01D1F0 8001C5F0 00000000 */ nop -/* 01D1F4 8001C5F4 00002025 */ move $a0, $zero -.L8001C5F8: -/* 01D1F8 8001C5F8 16540006 */ bne $s2, $s4, .L8001C614 -/* 01D1FC 8001C5FC 00000000 */ nop -/* 01D200 8001C600 90790008 */ lbu $t9, 8($v1) -/* 01D204 8001C604 00000000 */ nop -/* 01D208 8001C608 12B90002 */ beq $s5, $t9, .L8001C614 -/* 01D20C 8001C60C 00000000 */ nop -/* 01D210 8001C610 00002025 */ move $a0, $zero -.L8001C614: -/* 01D214 8001C614 10800013 */ beqz $a0, .L8001C664 -/* 01D218 8001C618 00000000 */ nop -/* 01D21C 8001C61C C444000C */ lwc1 $f4, 0xc($v0) -/* 01D220 8001C620 C4460010 */ lwc1 $f6, 0x10($v0) -/* 01D224 8001C624 46182001 */ sub.s $f0, $f4, $f24 -/* 01D228 8001C628 C4480014 */ lwc1 $f8, 0x14($v0) -/* 01D22C 8001C62C 46000282 */ mul.s $f10, $f0, $f0 -/* 01D230 8001C630 46163081 */ sub.s $f2, $f6, $f22 -/* 01D234 8001C634 46021402 */ mul.s $f16, $f2, $f2 -/* 01D238 8001C638 461A4381 */ sub.s $f14, $f8, $f26 -/* 01D23C 8001C63C 460E7102 */ mul.s $f4, $f14, $f14 -/* 01D240 8001C640 46105480 */ add.s $f18, $f10, $f16 -/* 01D244 8001C644 0C0326B4 */ jal sqrtf -/* 01D248 8001C648 46049300 */ add.s $f12, $f18, $f4 -/* 01D24C 8001C64C 4614003C */ c.lt.s $f0, $f20 -/* 01D250 8001C650 00000000 */ nop -/* 01D254 8001C654 45000003 */ bc1f .L8001C664 -/* 01D258 8001C658 00000000 */ nop -/* 01D25C 8001C65C 46000506 */ mov.s $f20, $f0 -/* 01D260 8001C660 0200B825 */ move $s7, $s0 -.L8001C664: -/* 01D264 8001C664 26100001 */ addiu $s0, $s0, 1 -/* 01D268 8001C668 1616FFD4 */ bne $s0, $s6, .L8001C5BC -/* 01D26C 8001C66C 26310004 */ addiu $s1, $s1, 4 -/* 01D270 8001C670 8FBF005C */ lw $ra, 0x5c($sp) -/* 01D274 8001C674 02E01025 */ move $v0, $s7 -/* 01D278 8001C678 8FB70054 */ lw $s7, 0x54($sp) -/* 01D27C 8001C67C C7B50018 */ lwc1 $f21, 0x18($sp) -/* 01D280 8001C680 C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 01D284 8001C684 C7B70020 */ lwc1 $f23, 0x20($sp) -/* 01D288 8001C688 C7B60024 */ lwc1 $f22, 0x24($sp) -/* 01D28C 8001C68C C7B90028 */ lwc1 $f25, 0x28($sp) -/* 01D290 8001C690 C7B8002C */ lwc1 $f24, 0x2c($sp) -/* 01D294 8001C694 C7BB0030 */ lwc1 $f27, 0x30($sp) -/* 01D298 8001C698 C7BA0034 */ lwc1 $f26, 0x34($sp) -/* 01D29C 8001C69C 8FB00038 */ lw $s0, 0x38($sp) -/* 01D2A0 8001C6A0 8FB1003C */ lw $s1, 0x3c($sp) -/* 01D2A4 8001C6A4 8FB20040 */ lw $s2, 0x40($sp) -/* 01D2A8 8001C6A8 8FB30044 */ lw $s3, 0x44($sp) -/* 01D2AC 8001C6AC 8FB40048 */ lw $s4, 0x48($sp) -/* 01D2B0 8001C6B0 8FB5004C */ lw $s5, 0x4c($sp) -/* 01D2B4 8001C6B4 8FB60050 */ lw $s6, 0x50($sp) -/* 01D2B8 8001C6B8 8FBE0058 */ lw $fp, 0x58($sp) -/* 01D2BC 8001C6BC 03E00008 */ jr $ra -/* 01D2C0 8001C6C0 27BD0080 */ addiu $sp, $sp, 0x80 - diff --git a/asm/non_matchings/objects/func_8001E89C.s b/asm/non_matchings/objects/func_8001E89C.s deleted file mode 100644 index 0cf00264..00000000 --- a/asm/non_matchings/objects/func_8001E89C.s +++ /dev/null @@ -1,47 +0,0 @@ -glabel func_8001E89C -/* 01F49C 8001E89C 3C028012 */ lui $v0, %hi(D_8011AE01) # $v0, 0x8012 -/* 01F4A0 8001E8A0 2442AE01 */ addiu $v0, %lo(D_8011AE01) # addiu $v0, $v0, -0x51ff -/* 01F4A4 8001E8A4 804E0000 */ lb $t6, ($v0) -/* 01F4A8 8001E8A8 00000000 */ nop -/* 01F4AC 8001E8AC 11C00003 */ beqz $t6, .L8001E8BC -/* 01F4B0 8001E8B0 00000000 */ nop -/* 01F4B4 8001E8B4 03E00008 */ jr $ra -/* 01F4B8 8001E8B8 A0400000 */ sb $zero, ($v0) - -.L8001E8BC: -/* 01F4BC 8001E8BC 3C038012 */ lui $v1, %hi(D_8011AE00) # $v1, 0x8012 -/* 01F4C0 8001E8C0 8063AE00 */ lb $v1, %lo(D_8011AE00)($v1) -/* 01F4C4 8001E8C4 00001025 */ move $v0, $zero -/* 01F4C8 8001E8C8 1860001A */ blez $v1, .L8001E934 -/* 01F4CC 8001E8CC 3C058012 */ lui $a1, %hi(D_8011ADD8) # $a1, 0x8012 -/* 01F4D0 8001E8D0 24A5ADD8 */ addiu $a1, %lo(D_8011ADD8) # addiu $a1, $a1, -0x5228 -.L8001E8D4: -/* 01F4D4 8001E8D4 8CA40000 */ lw $a0, ($a1) -/* 01F4D8 8001E8D8 24420001 */ addiu $v0, $v0, 1 -/* 01F4DC 8001E8DC 8C860064 */ lw $a2, 0x64($a0) -/* 01F4E0 8001E8E0 00000000 */ nop -/* 01F4E4 8001E8E4 8CC7000C */ lw $a3, 0xc($a2) -/* 01F4E8 8001E8E8 00000000 */ nop -/* 01F4EC 8001E8EC 10E0000F */ beqz $a3, .L8001E92C -/* 01F4F0 8001E8F0 0043082A */ slt $at, $v0, $v1 -/* 01F4F4 8001E8F4 C4C40000 */ lwc1 $f4, ($a2) -/* 01F4F8 8001E8F8 3C038012 */ lui $v1, %hi(D_8011AE00) # $v1, 0x8012 -/* 01F4FC 8001E8FC E4E4000C */ swc1 $f4, 0xc($a3) -/* 01F500 8001E900 8CCF000C */ lw $t7, 0xc($a2) -/* 01F504 8001E904 C4C60004 */ lwc1 $f6, 4($a2) -/* 01F508 8001E908 00000000 */ nop -/* 01F50C 8001E90C E5E60010 */ swc1 $f6, 0x10($t7) -/* 01F510 8001E910 8CD8000C */ lw $t8, 0xc($a2) -/* 01F514 8001E914 C4C80008 */ lwc1 $f8, 8($a2) -/* 01F518 8001E918 00000000 */ nop -/* 01F51C 8001E91C E7080014 */ swc1 $f8, 0x14($t8) -/* 01F520 8001E920 8063AE00 */ lb $v1, %lo(D_8011AE00)($v1) -/* 01F524 8001E924 00000000 */ nop -/* 01F528 8001E928 0043082A */ slt $at, $v0, $v1 -.L8001E92C: -/* 01F52C 8001E92C 1420FFE9 */ bnez $at, .L8001E8D4 -/* 01F530 8001E930 24A50004 */ addiu $a1, $a1, 4 -.L8001E934: -/* 01F534 8001E934 03E00008 */ jr $ra -/* 01F538 8001E938 00000000 */ nop - diff --git a/asm/non_matchings/particles/func_800B3564.s b/asm/non_matchings/particles/func_800B3564.s deleted file mode 100644 index 560810f3..00000000 --- a/asm/non_matchings/particles/func_800B3564.s +++ /dev/null @@ -1,72 +0,0 @@ -glabel func_800B3564 -/* 0B4164 800B3564 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B4168 800B3568 AFB30028 */ sw $s3, 0x28($sp) -/* 0B416C 800B356C 3C138012 */ lui $s3, %hi(D_80127C80) # $s3, 0x8012 -/* 0B4170 800B3570 26737C80 */ addiu $s3, %lo(D_80127C80) # addiu $s3, $s3, 0x7c80 -/* 0B4174 800B3574 8E620000 */ lw $v0, ($s3) -/* 0B4178 800B3578 AFB10020 */ sw $s1, 0x20($sp) -/* 0B417C 800B357C AFB0001C */ sw $s0, 0x1c($sp) -/* 0B4180 800B3580 0002702A */ slt $t6, $zero, $v0 -/* 0B4184 800B3584 00808025 */ move $s0, $a0 -/* 0B4188 800B3588 AFBF002C */ sw $ra, 0x2c($sp) -/* 0B418C 800B358C AFB20024 */ sw $s2, 0x24($sp) -/* 0B4190 800B3590 E7B50010 */ swc1 $f21, 0x10($sp) -/* 0B4194 800B3594 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0B4198 800B3598 11C0002E */ beqz $t6, .L800B3654 -/* 0B419C 800B359C 24110001 */ li $s1, 1 -/* 0B41A0 800B35A0 4480A000 */ mtc1 $zero, $f20 -/* 0B41A4 800B35A4 2492001C */ addiu $s2, $a0, 0x1c -.L800B35A8: -/* 0B41A8 800B35A8 C6040058 */ lwc1 $f4, 0x58($s0) -/* 0B41AC 800B35AC E614001C */ swc1 $f20, 0x1c($s0) -/* 0B41B0 800B35B0 46002187 */ neg.s $f6, $f4 -/* 0B41B4 800B35B4 E6140020 */ swc1 $f20, 0x20($s0) -/* 0B41B8 800B35B8 E6060024 */ swc1 $f6, 0x24($s0) -/* 0B41BC 800B35BC 02002025 */ move $a0, $s0 -/* 0B41C0 800B35C0 0C01C124 */ jal f32_vec3_apply_object_rotation3 -/* 0B41C4 800B35C4 02402825 */ move $a1, $s2 -/* 0B41C8 800B35C8 C608000C */ lwc1 $f8, 0xc($s0) -/* 0B41CC 800B35CC C60A001C */ lwc1 $f10, 0x1c($s0) -/* 0B41D0 800B35D0 C6120020 */ lwc1 $f18, 0x20($s0) -/* 0B41D4 800B35D4 C6040068 */ lwc1 $f4, 0x68($s0) -/* 0B41D8 800B35D8 460A4400 */ add.s $f16, $f8, $f10 -/* 0B41DC 800B35DC C6080010 */ lwc1 $f8, 0x10($s0) -/* 0B41E0 800B35E0 46049181 */ sub.s $f6, $f18, $f4 -/* 0B41E4 800B35E4 E610000C */ swc1 $f16, 0xc($s0) -/* 0B41E8 800B35E8 46064280 */ add.s $f10, $f8, $f6 -/* 0B41EC 800B35EC C6100014 */ lwc1 $f16, 0x14($s0) -/* 0B41F0 800B35F0 C6120024 */ lwc1 $f18, 0x24($s0) -/* 0B41F4 800B35F4 C6060028 */ lwc1 $f6, 0x28($s0) -/* 0B41F8 800B35F8 C6080008 */ lwc1 $f8, 8($s0) -/* 0B41FC 800B35FC 860F0000 */ lh $t7, ($s0) -/* 0B4200 800B3600 86180062 */ lh $t8, 0x62($s0) -/* 0B4204 800B3604 86080002 */ lh $t0, 2($s0) -/* 0B4208 800B3608 86090064 */ lh $t1, 0x64($s0) -/* 0B420C 800B360C 860B0004 */ lh $t3, 4($s0) -/* 0B4210 800B3610 860C0066 */ lh $t4, 0x66($s0) -/* 0B4214 800B3614 E60A0010 */ swc1 $f10, 0x10($s0) -/* 0B4218 800B3618 46128100 */ add.s $f4, $f16, $f18 -/* 0B421C 800B361C 01F8C821 */ addu $t9, $t7, $t8 -/* 0B4220 800B3620 46064280 */ add.s $f10, $f8, $f6 -/* 0B4224 800B3624 01095021 */ addu $t2, $t0, $t1 -/* 0B4228 800B3628 016C6821 */ addu $t5, $t3, $t4 -/* 0B422C 800B362C E6040014 */ swc1 $f4, 0x14($s0) -/* 0B4230 800B3630 E60A0008 */ swc1 $f10, 8($s0) -/* 0B4234 800B3634 A6190000 */ sh $t9, ($s0) -/* 0B4238 800B3638 A60A0002 */ sh $t2, 2($s0) -/* 0B423C 800B363C A60D0004 */ sh $t5, 4($s0) -/* 0B4240 800B3640 8E6E0000 */ lw $t6, ($s3) -/* 0B4244 800B3644 00000000 */ nop -/* 0B4248 800B3648 022E102A */ slt $v0, $s1, $t6 -/* 0B424C 800B364C 1440FFD6 */ bnez $v0, .L800B35A8 -/* 0B4250 800B3650 26310001 */ addiu $s1, $s1, 1 -.L800B3654: -/* 0B4254 800B3654 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B4258 800B3658 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 0B425C 800B365C C7B40014 */ lwc1 $f20, 0x14($sp) -/* 0B4260 800B3660 8FB0001C */ lw $s0, 0x1c($sp) -/* 0B4264 800B3664 8FB10020 */ lw $s1, 0x20($sp) -/* 0B4268 800B3668 8FB20024 */ lw $s2, 0x24($sp) -/* 0B426C 800B366C 8FB30028 */ lw $s3, 0x28($sp) -/* 0B4270 800B3670 03E00008 */ jr $ra -/* 0B4274 800B3674 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/asm/non_matchings/racer/func_800494E0.s b/asm/non_matchings/racer/func_800494E0.s deleted file mode 100644 index 7799286b..00000000 --- a/asm/non_matchings/racer/func_800494E0.s +++ /dev/null @@ -1,187 +0,0 @@ -.late_rodata -glabel D_800E64A0 -.double 0.16666666666666666 - -.text -glabel rotate_racer_in_water -/* 04A0E0 800494E0 27BDFF78 */ addiu $sp, $sp, -0x88 -/* 04A0E4 800494E4 8FB80098 */ lw $t8, 0x98($sp) -/* 04A0E8 800494E8 00077600 */ sll $t6, $a3, 0x18 -/* 04A0EC 800494EC 44982000 */ mtc1 $t8, $f4 -/* 04A0F0 800494F0 000E7E03 */ sra $t7, $t6, 0x18 -/* 04A0F4 800494F4 AFB10028 */ sw $s1, 0x28($sp) -/* 04A0F8 800494F8 AFB00024 */ sw $s0, 0x24($sp) -/* 04A0FC 800494FC 2401000E */ li $at, 14 -/* 04A100 80049500 00C08025 */ move $s0, $a2 -/* 04A104 80049504 00808825 */ move $s1, $a0 -/* 04A108 80049508 AFBF002C */ sw $ra, 0x2c($sp) -/* 04A10C 8004950C AFA5008C */ sw $a1, 0x8c($sp) -/* 04A110 80049510 AFA70094 */ sw $a3, 0x94($sp) -/* 04A114 80049514 15E10019 */ bne $t7, $at, .L8004957C -/* 04A118 80049518 46802020 */ cvt.s.w $f0, $f4 -/* 04A11C 8004951C 44800000 */ mtc1 $zero, $f0 -/* 04A120 80049520 C4A2002C */ lwc1 $f2, 0x2c($a1) -/* 04A124 80049524 3C01800E */ lui $at, %hi(D_800E64A0 + 4) # $at, 0x800e -/* 04A128 80049528 4600103C */ c.lt.s $f2, $f0 -/* 04A12C 8004952C 00000000 */ nop -/* 04A130 80049530 45000002 */ bc1f .L8004953C -/* 04A134 80049534 00000000 */ nop -/* 04A138 80049538 46001087 */ neg.s $f2, $f2 -.L8004953C: -/* 04A13C 8004953C C42964A0 */ lwc1 $f9, %lo(D_800E64A0)($at) -/* 04A140 80049540 C42864A4 */ lwc1 $f8, %lo(D_800E64A0 + 4)($at) -/* 04A144 80049544 460011A1 */ cvt.d.s $f6, $f2 -/* 04A148 80049548 46283282 */ mul.d $f10, $f6, $f8 -/* 04A14C 8004954C 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 04A150 80049550 44818800 */ mtc1 $at, $f17 -/* 04A154 80049554 44808000 */ mtc1 $zero, $f16 -/* 04A158 80049558 00000000 */ nop -/* 04A15C 8004955C 462A8481 */ sub.d $f18, $f16, $f10 -/* 04A160 80049560 462090A0 */ cvt.s.d $f2, $f18 -/* 04A164 80049564 4600103C */ c.lt.s $f2, $f0 -/* 04A168 80049568 00000000 */ nop -/* 04A16C 8004956C 45000014 */ bc1f .L800495C0 -/* 04A170 80049570 00000000 */ nop -/* 04A174 80049574 10000012 */ b .L800495C0 -/* 04A178 80049578 46000086 */ mov.s $f2, $f0 -.L8004957C: -/* 04A17C 8004957C C6060000 */ lwc1 $f6, ($s0) -/* 04A180 80049580 C7AC00A0 */ lwc1 $f12, 0xa0($sp) -/* 04A184 80049584 46003202 */ mul.s $f8, $f6, $f0 -/* 04A188 80049588 C624000C */ lwc1 $f4, 0xc($s1) -/* 04A18C 8004958C C6320014 */ lwc1 $f18, 0x14($s1) -/* 04A190 80049590 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 04A194 80049594 460C4402 */ mul.s $f16, $f8, $f12 -/* 04A198 80049598 44811000 */ mtc1 $at, $f2 -/* 04A19C 8004959C 46102280 */ add.s $f10, $f4, $f16 -/* 04A1A0 800495A0 E62A000C */ swc1 $f10, 0xc($s1) -/* 04A1A4 800495A4 C6060008 */ lwc1 $f6, 8($s0) -/* 04A1A8 800495A8 00000000 */ nop -/* 04A1AC 800495AC 46003202 */ mul.s $f8, $f6, $f0 -/* 04A1B0 800495B0 44800000 */ mtc1 $zero, $f0 -/* 04A1B4 800495B4 460C4102 */ mul.s $f4, $f8, $f12 -/* 04A1B8 800495B8 46049400 */ add.s $f16, $f18, $f4 -/* 04A1BC 800495BC E6300014 */ swc1 $f16, 0x14($s1) -.L800495C0: -/* 04A1C0 800495C0 86280000 */ lh $t0, ($s1) -/* 04A1C4 800495C4 3C058012 */ lui $a1, %hi(gCurrentRacerTransform) # $a1, 0x8012 -/* 04A1C8 800495C8 24A5D510 */ addiu $a1, %lo(gCurrentRacerTransform) # addiu $a1, $a1, -0x2af0 -/* 04A1CC 800495CC 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 04A1D0 800495D0 44815000 */ mtc1 $at, $f10 -/* 04A1D4 800495D4 00084823 */ negu $t1, $t0 -/* 04A1D8 800495D8 A4A90000 */ sh $t1, ($a1) -/* 04A1DC 800495DC A4A00002 */ sh $zero, 2($a1) -/* 04A1E0 800495E0 A4A00004 */ sh $zero, 4($a1) -/* 04A1E4 800495E4 E4A0000C */ swc1 $f0, 0xc($a1) -/* 04A1E8 800495E8 E4A00010 */ swc1 $f0, 0x10($a1) -/* 04A1EC 800495EC E4A00014 */ swc1 $f0, 0x14($a1) -/* 04A1F0 800495F0 E7A20044 */ swc1 $f2, 0x44($sp) -/* 04A1F4 800495F4 27A40048 */ addiu $a0, $sp, 0x48 -/* 04A1F8 800495F8 0C01BF9D */ jal object_transform_to_matrix_2 -/* 04A1FC 800495FC E4AA0008 */ swc1 $f10, 8($a1) -/* 04A200 80049600 8E050000 */ lw $a1, ($s0) -/* 04A204 80049604 8E060004 */ lw $a2, 4($s0) -/* 04A208 80049608 8E070008 */ lw $a3, 8($s0) -/* 04A20C 8004960C 260A0004 */ addiu $t2, $s0, 4 -/* 04A210 80049610 260B0008 */ addiu $t3, $s0, 8 -/* 04A214 80049614 AFAB0018 */ sw $t3, 0x18($sp) -/* 04A218 80049618 AFAA0014 */ sw $t2, 0x14($sp) -/* 04A21C 8004961C AFB00010 */ sw $s0, 0x10($sp) -/* 04A220 80049620 0C01BD93 */ jal guMtxXFMF -/* 04A224 80049624 27A40048 */ addiu $a0, $sp, 0x48 -/* 04A228 80049628 C60C0000 */ lwc1 $f12, ($s0) -/* 04A22C 8004962C C60E0004 */ lwc1 $f14, 4($s0) -/* 04A230 80049630 0C01C1D4 */ jal arctan2_f -/* 04A234 80049634 00000000 */ nop -/* 04A238 80049638 00026400 */ sll $t4, $v0, 0x10 -/* 04A23C 8004963C 000C6C03 */ sra $t5, $t4, 0x10 -/* 04A240 80049640 000D7023 */ negu $t6, $t5 -/* 04A244 80049644 448E3000 */ mtc1 $t6, $f6 -/* 04A248 80049648 C7A20044 */ lwc1 $f2, 0x44($sp) -/* 04A24C 8004964C 46803220 */ cvt.s.w $f8, $f6 -/* 04A250 80049650 8FA5008C */ lw $a1, 0x8c($sp) -/* 04A254 80049654 8FB9009C */ lw $t9, 0x9c($sp) -/* 04A258 80049658 46024482 */ mul.s $f18, $f8, $f2 -/* 04A25C 8004965C 84A301A4 */ lh $v1, 0x1a4($a1) -/* 04A260 80049660 00194180 */ sll $t0, $t9, 6 -/* 04A264 80049664 306BFFFF */ andi $t3, $v1, 0xffff -/* 04A268 80049668 444FF800 */ cfc1 $t7, $31 -/* 04A26C 8004966C 8FAC0098 */ lw $t4, 0x98($sp) -/* 04A270 80049670 35E10003 */ ori $at, $t7, 3 -/* 04A274 80049674 38210002 */ xori $at, $at, 2 -/* 04A278 80049678 44C1F800 */ ctc1 $at, $31 -/* 04A27C 8004967C 34018001 */ li $at, 32769 -/* 04A280 80049680 46009124 */ cvt.w.s $f4, $f18 -/* 04A284 80049684 44182000 */ mfc1 $t8, $f4 -/* 04A288 80049688 44CFF800 */ ctc1 $t7, $31 -/* 04A28C 8004968C 03084823 */ subu $t1, $t8, $t0 -/* 04A290 80049690 312AFFFF */ andi $t2, $t1, 0xffff -/* 04A294 80049694 014B2023 */ subu $a0, $t2, $t3 -/* 04A298 80049698 0081082A */ slt $at, $a0, $at -/* 04A29C 8004969C 14200003 */ bnez $at, .L800496AC -/* 04A2A0 800496A0 3C01FFFF */ lui $at, (0xFFFF0001 >> 16) # lui $at, 0xffff -/* 04A2A4 800496A4 34210001 */ ori $at, (0xFFFF0001 & 0xFFFF) # ori $at, $at, 1 -/* 04A2A8 800496A8 00812021 */ addu $a0, $a0, $at -.L800496AC: -/* 04A2AC 800496AC 28818000 */ slti $at, $a0, -0x8000 -/* 04A2B0 800496B0 10200002 */ beqz $at, .L800496BC -/* 04A2B4 800496B4 3401FFFF */ li $at, 65535 -/* 04A2B8 800496B8 00812021 */ addu $a0, $a0, $at -.L800496BC: -/* 04A2BC 800496BC 008C0019 */ multu $a0, $t4 -/* 04A2C0 800496C0 00006812 */ mflo $t5 -/* 04A2C4 800496C4 000D7103 */ sra $t6, $t5, 4 -/* 04A2C8 800496C8 006E7821 */ addu $t7, $v1, $t6 -/* 04A2CC 800496CC A4AF01A4 */ sh $t7, 0x1a4($a1) -/* 04A2D0 800496D0 C60E0004 */ lwc1 $f14, 4($s0) -/* 04A2D4 800496D4 C60C0008 */ lwc1 $f12, 8($s0) -/* 04A2D8 800496D8 0C01C1D4 */ jal arctan2_f -/* 04A2DC 800496DC E7A20044 */ swc1 $f2, 0x44($sp) -/* 04A2E0 800496E0 0002CC00 */ sll $t9, $v0, 0x10 -/* 04A2E4 800496E4 0019C403 */ sra $t8, $t9, 0x10 -/* 04A2E8 800496E8 44988000 */ mtc1 $t8, $f16 -/* 04A2EC 800496EC C7A20044 */ lwc1 $f2, 0x44($sp) -/* 04A2F0 800496F0 468082A0 */ cvt.s.w $f10, $f16 -/* 04A2F4 800496F4 3C0A8012 */ lui $t2, %hi(gCurrentStickY) # $t2, 0x8012 -/* 04A2F8 800496F8 8D4AD538 */ lw $t2, %lo(gCurrentStickY)($t2) -/* 04A2FC 800496FC 46025182 */ mul.s $f6, $f10, $f2 -/* 04A300 80049700 000A5823 */ negu $t3, $t2 -/* 04A304 80049704 000B6140 */ sll $t4, $t3, 5 -/* 04A308 80049708 86250002 */ lh $a1, 2($s1) -/* 04A30C 8004970C 4448F800 */ cfc1 $t0, $31 -/* 04A310 80049710 30AEFFFF */ andi $t6, $a1, 0xffff -/* 04A314 80049714 35010003 */ ori $at, $t0, 3 -/* 04A318 80049718 38210002 */ xori $at, $at, 2 -/* 04A31C 8004971C 44C1F800 */ ctc1 $at, $31 -/* 04A320 80049720 34018001 */ li $at, 32769 -/* 04A324 80049724 46003224 */ cvt.w.s $f8, $f6 -/* 04A328 80049728 8FAF0098 */ lw $t7, 0x98($sp) -/* 04A32C 8004972C 44094000 */ mfc1 $t1, $f8 -/* 04A330 80049730 44C8F800 */ ctc1 $t0, $31 -/* 04A334 80049734 012C1821 */ addu $v1, $t1, $t4 -/* 04A338 80049738 246303C0 */ addiu $v1, $v1, 0x3c0 -/* 04A33C 8004973C 306DFFFF */ andi $t5, $v1, 0xffff -/* 04A340 80049740 01AE2023 */ subu $a0, $t5, $t6 -/* 04A344 80049744 0081082A */ slt $at, $a0, $at -/* 04A348 80049748 14200003 */ bnez $at, .L80049758 -/* 04A34C 8004974C 3C01FFFF */ lui $at, (0xFFFF0001 >> 16) # lui $at, 0xffff -/* 04A350 80049750 34210001 */ ori $at, (0xFFFF0001 & 0xFFFF) # ori $at, $at, 1 -/* 04A354 80049754 00812021 */ addu $a0, $a0, $at -.L80049758: -/* 04A358 80049758 28818000 */ slti $at, $a0, -0x8000 -/* 04A35C 8004975C 10200002 */ beqz $at, .L80049768 -/* 04A360 80049760 3401FFFF */ li $at, 65535 -/* 04A364 80049764 00812021 */ addu $a0, $a0, $at -.L80049768: -/* 04A368 80049768 008F0019 */ multu $a0, $t7 -/* 04A36C 8004976C 46001006 */ mov.s $f0, $f2 -/* 04A370 80049770 0000C812 */ mflo $t9 -/* 04A374 80049774 0019C103 */ sra $t8, $t9, 4 -/* 04A378 80049778 00B84021 */ addu $t0, $a1, $t8 -/* 04A37C 8004977C A6280002 */ sh $t0, 2($s1) -/* 04A380 80049780 8FBF002C */ lw $ra, 0x2c($sp) -/* 04A384 80049784 8FB10028 */ lw $s1, 0x28($sp) -/* 04A388 80049788 8FB00024 */ lw $s0, 0x24($sp) -/* 04A38C 8004978C 03E00008 */ jr $ra -/* 04A390 80049790 27BD0088 */ addiu $sp, $sp, 0x88 - diff --git a/asm/non_matchings/save_data/func_80072348.s b/asm/non_matchings/save_data/func_80072348.s deleted file mode 100644 index 14741616..00000000 --- a/asm/non_matchings/save_data/func_80072348.s +++ /dev/null @@ -1,61 +0,0 @@ -glabel func_80072348 -/* 072F48 80072348 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 072F4C 8007234C 00047400 */ sll $t6, $a0, 0x10 -/* 072F50 80072350 30B800FF */ andi $t8, $a1, 0xff -/* 072F54 80072354 000E7C03 */ sra $t7, $t6, 0x10 -/* 072F58 80072358 AFA40020 */ sw $a0, 0x20($sp) -/* 072F5C 8007235C 2B010013 */ slti $at, $t8, 0x13 -/* 072F60 80072360 01E02025 */ move $a0, $t7 -/* 072F64 80072364 AFBF0014 */ sw $ra, 0x14($sp) -/* 072F68 80072368 1020002A */ beqz $at, .L80072414 -/* 072F6C 8007236C AFA50024 */ sw $a1, 0x24($sp) -/* 072F70 80072370 05E00028 */ bltz $t7, .L80072414 -/* 072F74 80072374 29E10004 */ slti $at, $t7, 4 -/* 072F78 80072378 10200027 */ beqz $at, .L80072418 -/* 072F7C 8007237C 8FBF0014 */ lw $ra, 0x14($sp) -/* 072F80 80072380 A7AF0022 */ sh $t7, 0x22($sp) -/* 072F84 80072384 0C01C894 */ jal func_80072250 -/* 072F88 80072388 AFB80018 */ sw $t8, 0x18($sp) -/* 072F8C 8007238C 3059FFFF */ andi $t9, $v0, 0xffff -/* 072F90 80072390 00194080 */ sll $t0, $t9, 2 -/* 072F94 80072394 01194021 */ addu $t0, $t0, $t9 -/* 072F98 80072398 3C098012 */ lui $t1, %hi(D_801241B8) # $t1, 0x8012 -/* 072F9C 8007239C 252941B8 */ addiu $t1, %lo(D_801241B8) # addiu $t1, $t1, 0x41b8 -/* 072FA0 800723A0 00084040 */ sll $t0, $t0, 1 -/* 072FA4 800723A4 01091821 */ addu $v1, $t0, $t1 -/* 072FA8 800723A8 8FA60018 */ lw $a2, 0x18($sp) -/* 072FAC 800723AC 846A0000 */ lh $t2, ($v1) -/* 072FB0 800723B0 87A40022 */ lh $a0, 0x22($sp) -/* 072FB4 800723B4 14CA000C */ bne $a2, $t2, .L800723E8 -/* 072FB8 800723B8 3C088012 */ lui $t0, %hi(sUnkMiscAsset19) # $t0, 0x8012 -/* 072FBC 800723BC 846B0008 */ lh $t3, 8($v1) -/* 072FC0 800723C0 240CFED4 */ li $t4, -300 -/* 072FC4 800723C4 05610002 */ bgez $t3, .L800723D0 -/* 072FC8 800723C8 3C0D8012 */ lui $t5, %hi(sUnkMiscAsset19) # $t5, 0x8012 -/* 072FCC 800723CC A46C0008 */ sh $t4, 8($v1) -.L800723D0: -/* 072FD0 800723D0 8DAD41E0 */ lw $t5, %lo(sUnkMiscAsset19)($t5) -/* 072FD4 800723D4 00067880 */ sll $t7, $a2, 2 -/* 072FD8 800723D8 01AFC021 */ addu $t8, $t5, $t7 -/* 072FDC 800723DC 87190002 */ lh $t9, 2($t8) -/* 072FE0 800723E0 1000000C */ b .L80072414 -/* 072FE4 800723E4 A4790004 */ sh $t9, 4($v1) -.L800723E8: -/* 072FE8 800723E8 A4660000 */ sh $a2, ($v1) -/* 072FEC 800723EC 8D0841E0 */ lw $t0, %lo(sUnkMiscAsset19)($t0) -/* 072FF0 800723F0 00065080 */ sll $t2, $a2, 2 -/* 072FF4 800723F4 010A1021 */ addu $v0, $t0, $t2 -/* 072FF8 800723F8 84450000 */ lh $a1, ($v0) -/* 072FFC 800723FC 00000000 */ nop -/* 073000 80072400 10A00005 */ beqz $a1, .L80072418 -/* 073004 80072404 8FBF0014 */ lw $ra, 0x14($sp) -/* 073008 80072408 84460002 */ lh $a2, 2($v0) -/* 07300C 8007240C 0C01C95E */ jal func_80072578 -/* 073010 80072410 00000000 */ nop -.L80072414: -/* 073014 80072414 8FBF0014 */ lw $ra, 0x14($sp) -.L80072418: -/* 073018 80072418 27BD0020 */ addiu $sp, $sp, 0x20 -/* 07301C 8007241C 03E00008 */ jr $ra -/* 073020 80072420 00000000 */ nop - diff --git a/asm/non_matchings/textures_sprites/func_8007B380.s b/asm/non_matchings/textures_sprites/func_8007B380.s deleted file mode 100644 index afee6cdb..00000000 --- a/asm/non_matchings/textures_sprites/func_8007B380.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_8007B380 -/* 07BF80 8007B380 04800006 */ bltz $a0, .L8007B39C -/* 07BF84 8007B384 3C0E8012 */ lui $t6, %hi(gNumberOfLoadedTextures) # $t6, 0x8012 -/* 07BF88 8007B388 8DCE6330 */ lw $t6, %lo(gNumberOfLoadedTextures)($t6) -/* 07BF8C 8007B38C 3C0F8012 */ lui $t7, %hi(gTextureCache) # $t7, 0x8012 -/* 07BF90 8007B390 008E082A */ slt $at, $a0, $t6 -/* 07BF94 8007B394 14200003 */ bnez $at, .L8007B3A4 -/* 07BF98 8007B398 00000000 */ nop -.L8007B39C: -/* 07BF9C 8007B39C 03E00008 */ jr $ra -/* 07BFA0 8007B3A0 00001025 */ move $v0, $zero -.L8007B3A4: -/* 07BFA4 8007B3A4 8DEF6328 */ lw $t7, %lo(gTextureCache)($t7) -/* 07BFA8 8007B3A8 0004C8C0 */ sll $t9, $a0, 3 -/* 07BFAC 8007B3AC 01F94021 */ addu $t0, $t7, $t9 -/* 07BFB0 8007B3B0 8D030004 */ lw $v1, 4($t0) -/* 07BFB4 8007B3B4 2401FFFF */ li $at, -1 -/* 07BFB8 8007B3B8 14610003 */ bne $v1, $at, .L8007B3C8 -/* 07BFBC 8007B3BC 00601025 */ move $v0, $v1 -/* 07BFC0 8007B3C0 03E00008 */ jr $ra -/* 07BFC4 8007B3C4 00001025 */ move $v0, $zero -.L8007B3C8: -/* 07BFC8 8007B3C8 03E00008 */ jr $ra -/* 07BFCC 8007B3CC 00000000 */ nop diff --git a/asm/non_matchings/unknown_05CEF0/func_8005CB68.s b/asm/non_matchings/vehicle_tricky/func_8005CB68.s similarity index 100% rename from asm/non_matchings/unknown_05CEF0/func_8005CB68.s rename to asm/non_matchings/vehicle_tricky/func_8005CB68.s diff --git a/asm/non_matchings/waves/func_800BEEB4.s b/asm/non_matchings/waves/func_800BEEB4.s deleted file mode 100644 index e11bb8a2..00000000 --- a/asm/non_matchings/waves/func_800BEEB4.s +++ /dev/null @@ -1,77 +0,0 @@ -glabel func_800BEEB4 -/* 0BFAB4 800BEEB4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0BFAB8 800BEEB8 AFBF0014 */ sw $ra, 0x14($sp) -/* 0BFABC 800BEEBC 948E0004 */ lhu $t6, 4($a0) -/* 0BFAC0 800BEEC0 94830006 */ lhu $v1, 6($a0) -/* 0BFAC4 800BEEC4 01C57821 */ addu $t7, $t6, $a1 -/* 0BFAC8 800BEEC8 31E2FFFF */ andi $v0, $t7, 0xffff -/* 0BFACC 800BEECC 0043082A */ slt $at, $v0, $v1 -/* 0BFAD0 800BEED0 00803825 */ move $a3, $a0 -/* 0BFAD4 800BEED4 14200006 */ bnez $at, .L800BEEF0 -/* 0BFAD8 800BEED8 A48F0004 */ sh $t7, 4($a0) -.L800BEEDC: -/* 0BFADC 800BEEDC 0043C023 */ subu $t8, $v0, $v1 -/* 0BFAE0 800BEEE0 3302FFFF */ andi $v0, $t8, 0xffff -/* 0BFAE4 800BEEE4 0043082A */ slt $at, $v0, $v1 -/* 0BFAE8 800BEEE8 1020FFFC */ beqz $at, .L800BEEDC -/* 0BFAEC 800BEEEC A4F80004 */ sh $t8, 4($a3) -.L800BEEF0: -/* 0BFAF0 800BEEF0 0002C843 */ sra $t9, $v0, 1 -/* 0BFAF4 800BEEF4 00F92021 */ addu $a0, $a3, $t9 -/* 0BFAF8 800BEEF8 8088000E */ lb $t0, 0xe($a0) -/* 0BFAFC 800BEEFC 30490001 */ andi $t1, $v0, 1 -/* 0BFB00 800BEF00 11200012 */ beqz $t1, .L800BEF4C -/* 0BFB04 800BEF04 244A0001 */ addiu $t2, $v0, 1 -/* 0BFB08 800BEF08 0143082A */ slt $at, $t2, $v1 -/* 0BFB0C 800BEF0C 14200004 */ bnez $at, .L800BEF20 -/* 0BFB10 800BEF10 00000000 */ nop -/* 0BFB14 800BEF14 80EB000E */ lb $t3, 0xe($a3) -/* 0BFB18 800BEF18 10000004 */ b .L800BEF2C -/* 0BFB1C 800BEF1C 010B4021 */ addu $t0, $t0, $t3 -.L800BEF20: -/* 0BFB20 800BEF20 808C000F */ lb $t4, 0xf($a0) -/* 0BFB24 800BEF24 00000000 */ nop -/* 0BFB28 800BEF28 010C4021 */ addu $t0, $t0, $t4 -.L800BEF2C: -/* 0BFB2C 800BEF2C 90E20002 */ lbu $v0, 2($a3) -/* 0BFB30 800BEF30 00087043 */ sra $t6, $t0, 1 -/* 0BFB34 800BEF34 18400003 */ blez $v0, .L800BEF44 -/* 0BFB38 800BEF38 244D001F */ addiu $t5, $v0, 0x1f -/* 0BFB3C 800BEF3C 10000006 */ b .L800BEF58 -/* 0BFB40 800BEF40 01A84004 */ sllv $t0, $t0, $t5 -.L800BEF44: -/* 0BFB44 800BEF44 10000004 */ b .L800BEF58 -/* 0BFB48 800BEF48 01C04025 */ move $t0, $t6 -.L800BEF4C: -/* 0BFB4C 800BEF4C 90EF0002 */ lbu $t7, 2($a3) -/* 0BFB50 800BEF50 00000000 */ nop -/* 0BFB54 800BEF54 01E84004 */ sllv $t0, $t0, $t7 -.L800BEF58: -/* 0BFB58 800BEF58 44882000 */ mtc1 $t0, $f4 -/* 0BFB5C 800BEF5C 84F80000 */ lh $t8, ($a3) -/* 0BFB60 800BEF60 468021A0 */ cvt.s.w $f6, $f4 -/* 0BFB64 800BEF64 3C013FB0 */ li $at, 0x3FB00000 # 1.375000 -/* 0BFB68 800BEF68 44815800 */ mtc1 $at, $f11 -/* 0BFB6C 800BEF6C 44805000 */ mtc1 $zero, $f10 -/* 0BFB70 800BEF70 44989000 */ mtc1 $t8, $f18 -/* 0BFB74 800BEF74 46003221 */ cvt.d.s $f8, $f6 -/* 0BFB78 800BEF78 462A4402 */ mul.d $f16, $f8, $f10 -/* 0BFB7C 800BEF7C 46809120 */ cvt.s.w $f4, $f18 -/* 0BFB80 800BEF80 3C018013 */ lui $at, %hi(D_80129FC8 + 64) # $at, 0x8013 -/* 0BFB84 800BEF84 C42AA008 */ lwc1 $f10, %lo(D_80129FC8 + 64)($at) -/* 0BFB88 800BEF88 94E4000C */ lhu $a0, 0xc($a3) -/* 0BFB8C 800BEF8C 460021A1 */ cvt.d.s $f6, $f4 -/* 0BFB90 800BEF90 46268200 */ add.d $f8, $f16, $f6 -/* 0BFB94 800BEF94 94E50008 */ lhu $a1, 8($a3) -/* 0BFB98 800BEF98 462040A0 */ cvt.s.d $f2, $f8 -/* 0BFB9C 800BEF9C 94E6000A */ lhu $a2, 0xa($a3) -/* 0BFBA0 800BEFA0 460A1082 */ mul.s $f2, $f2, $f10 -/* 0BFBA4 800BEFA4 0C02FBF1 */ jal func_800BEFC4 -/* 0BFBA8 800BEFA8 E7A20018 */ swc1 $f2, 0x18($sp) -/* 0BFBAC 800BEFAC C7A20018 */ lwc1 $f2, 0x18($sp) -/* 0BFBB0 800BEFB0 8FBF0014 */ lw $ra, 0x14($sp) -/* 0BFBB4 800BEFB4 46001080 */ add.s $f2, $f2, $f0 -/* 0BFBB8 800BEFB8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 0BFBBC 800BEFBC 03E00008 */ jr $ra -/* 0BFBC0 800BEFC0 46001006 */ mov.s $f0, $f2 - diff --git a/asm/non_matchings/game_ui/func_800AB4A8.s b/asm/non_matchings/weather/func_800AB4A8.s similarity index 100% rename from asm/non_matchings/game_ui/func_800AB4A8.s rename to asm/non_matchings/weather/func_800AB4A8.s diff --git a/asm/non_matchings/game_ui/func_800AC0C8.s b/asm/non_matchings/weather/func_800AC0C8.s similarity index 100% rename from asm/non_matchings/game_ui/func_800AC0C8.s rename to asm/non_matchings/weather/func_800AC0C8.s diff --git a/asm/non_matchings/game_ui/func_800AC21C.s b/asm/non_matchings/weather/func_800AC21C.s similarity index 100% rename from asm/non_matchings/game_ui/func_800AC21C.s rename to asm/non_matchings/weather/func_800AC21C.s diff --git a/asm/non_matchings/game_ui/func_800AC8A8.s b/asm/non_matchings/weather/func_800AC8A8.s similarity index 100% rename from asm/non_matchings/game_ui/func_800AC8A8.s rename to asm/non_matchings/weather/func_800AC8A8.s diff --git a/asm/non_matchings/game_ui/func_800ACA20.s b/asm/non_matchings/weather/func_800ACA20.s similarity index 100% rename from asm/non_matchings/game_ui/func_800ACA20.s rename to asm/non_matchings/weather/func_800ACA20.s diff --git a/asm/non_matchings/game_ui/func_800AD030.s b/asm/non_matchings/weather/func_800AD030.s similarity index 100% rename from asm/non_matchings/game_ui/func_800AD030.s rename to asm/non_matchings/weather/func_800AD030.s diff --git a/asm/non_matchings/game_ui/render_rain_overlay.s b/asm/non_matchings/weather/render_rain_overlay.s similarity index 100% rename from asm/non_matchings/game_ui/render_rain_overlay.s rename to asm/non_matchings/weather/render_rain_overlay.s diff --git a/asm/non_matchings/game_ui/render_rain_splashes.s b/asm/non_matchings/weather/render_rain_splashes.s similarity index 100% rename from asm/non_matchings/game_ui/render_rain_splashes.s rename to asm/non_matchings/weather/render_rain_splashes.s diff --git a/include/structs.h b/include/structs.h index 78034f41..5257d51c 100644 --- a/include/structs.h +++ b/include/structs.h @@ -1463,6 +1463,32 @@ typedef struct Object_WizpigRocket { f32 unk74; } Object_WizpigRocket; +typedef struct Object_8001E89C_64_C { + /* 0x00 */ u8 pad0[0xC]; + /* 0x0C */ f32 unkC; + /* 0x10 */ f32 unk10; + /* 0x14 */ f32 unk14; +} Object_8001E89C_64_C; + +typedef struct Object_8001E89C_64 { + /* 0x00 */ f32 unk0; + /* 0x04 */ f32 unk4; + /* 0x08 */ f32 unk8; + /* 0x0C */ Object_8001E89C_64_C *unkC; +} Object_8001E89C_64; + +typedef struct Object_800BEEB4_64 { + /* 0x00 */ s16 unk0; + /* 0x02 */ u8 unk2; + /* 0x04 */ u8 unk3; + /* 0x04 */ u16 unk4; + /* 0x06 */ u16 unk6; + /* 0x08 */ u16 unk8; + /* 0x0A */ u16 unkA; + /* 0x0C */ u16 unkC; + /* 0x0E */ s8 unkE[2]; +} Object_800BEEB4_64; + typedef struct Object_64 { union { Object_Laser laser; @@ -1508,6 +1534,8 @@ typedef struct Object_64 { Object_LaserGun lasergun; Object_AnimatedObject animatedObject; Object_WizpigRocket wizpigRocket; + Object_8001E89C_64 obj8001E89C_64; + Object_800BEEB4_64 obj800BEEB4_64; }; } Object_64; @@ -1655,7 +1683,7 @@ typedef struct SegmentPropertiesObject { /* 0x0030 */ f32 distanceToCamera; /* 0x0034 */ s16 cameraSegmentID; /* 0x0036 */ s16 unk36; - /* 0x0038 */ u8 unk38; + /* 0x0038 */ s8 unk38; /* 0x0039 */ u8 opacity; /* 0x003A */ s8 numModelIDs; /* 0x003B */ s8 animationID; diff --git a/src/menu.c b/src/menu.c index f7bcea93..84845c08 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2147,7 +2147,69 @@ void show_timestamp(s32 frameCount, s32 xPos, s32 yPos, u8 red, u8 green, u8 blu sMenuGuiColourB = (u8)255; } +#ifdef NON_EQUIVALENT +//void func_80081C04(s32 num, s32 x, s32 y, u8 r, u8 g, u8 b, u8 a, u8 font, u8 alignment) +void func_80081C04(s32 num, s32 x, s32 y, u8 red, u8 green, u8 blue, u8 alpha, u8 font, u8 alignment) { + u8 *sp38; + s32 var_s0; + s32 var_s0_2; + s32 var_s3; + s32 var_s4_2; + s32 found; + + var_s3 = 0; + var_s0 = 1000000000; + found = FALSE; + + while (var_s0 >= 10) { + if (num < var_s0) { + found = TRUE; + sp38[var_s3] = (num / var_s0); + num %= var_s0; + } else if (found) { + sp38[var_s3] = 0; + } + var_s3++; + var_s0 /= 10; + } + sp38[var_s3] = num; + var_s3++; + if (alignment & 4) { + x -= var_s3 * 12; + var_s4_2 = x + 6; + } + else if (alignment & 1) { + var_s4_2 = x - ((var_s3 * 11) >> 1); + } else { + var_s4_2 = x + 6; + } + if (alignment & 8) { + y += 7; + } else if (alignment & 0x10) { + y -= 7; + } + sMenuGuiColourR = red; + sMenuGuiColourG = green; + sMenuGuiColourB = blue; + sMenuGuiOpacity = alpha; + func_8007BF1C(0); + func_80068508(1); + gMenuImageStack->unk10 = y; + for (var_s0_2 = 0; var_s0_2 < var_s3; var_s0_2++, var_s4_2 += 12) { + gMenuImageStack->unkC = var_s4_2; + gMenuImageStack->unk18 = sp38[var_s0_2]; + func_8009CA60(0); + } + func_8007BF1C(1); + func_80068508(0); + sMenuGuiColourR = 255; + sMenuGuiColourG = 255; + sMenuGuiColourB = 255; + sMenuGuiOpacity = 255; +} +#else GLOBAL_ASM("asm/non_matchings/menu/func_80081C04.s") +#endif void func_80081E54(MenuElement *arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5) { D_800DF798 = arg0; @@ -7393,37 +7455,47 @@ s32 compress_filename_string(char *filename, s32 length) { return output; } -#ifdef NON_EQUIVALENT +void trim_filename_string(char* input, char* output) { + s32 some_ptr; + u32 zxChar; + char* ptr_to_input; + char new_var; + s32 another_ptr; + char* one_more_ptr; -// Not matching, but functionally equivalent. -// Trims the trailing end of the string, so that spaces won't show up at the end. -void trim_filename_string(char *input, char *output) { - s32 numSpaces, numSpacesProcessed; - while (*input != '\0') { - numSpaces = 0; - numSpacesProcessed = 0; - if (*input == ' ') { - input++; - numSpaces++; - while (*input == ' ') { - input++; - numSpaces++; - } - if (*input != '\0') { - while (numSpacesProcessed < numSpaces) { - *(output++) = *(input++); - numSpacesProcessed++; + some_ptr = 0; + if (*input != 0) { + new_var = input[some_ptr]; + ptr_to_input = input; + zxChar = new_var; + do { + another_ptr = some_ptr; + if ((zxChar & 0xFFFFFFFF) == ' ') { + zxChar = ptr_to_input[1]; + some_ptr++; + ptr_to_input++; + while ((zxChar & 0xFFFFFFFF) == ' ') { + some_ptr++; + zxChar = *(++ptr_to_input); } + if ((zxChar != 0) && (another_ptr < some_ptr)) { + one_more_ptr = another_ptr + input; + do { + *(output++) = *(one_more_ptr++); + } while (++another_ptr < some_ptr); + zxChar = *ptr_to_input; + } + } else { + *output = zxChar; + zxChar = ptr_to_input[1]; + output++; + some_ptr++; + ptr_to_input++; } - } else { - *(output++) = *(input++); - } + } while (zxChar != 0); } *output = '\0'; } -#else -GLOBAL_ASM("asm/non_matchings/menu/trim_filename_string.s") -#endif void func_80097874(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 *arg4, char *arg5, s32 arg6) { D_800E0F90 = arg0; diff --git a/src/object_functions.c b/src/object_functions.c index cee2922b..0cea5f80 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -4605,7 +4605,7 @@ void obj_init_buoy_pirateship(Object *obj, UNUSED LevelObjectEntry_Buoy_PirateSh */ void obj_loop_buoy_pirateship(Object *obj, s32 updateRate) { if (obj->unk64 != NULL) { - obj->segment.trans.y_position = func_800BEEB4(obj->unk64); + obj->segment.trans.y_position = func_800BEEB4(obj->unk64, updateRate); } obj->segment.animFrame += updateRate * 8; } @@ -4645,7 +4645,7 @@ void obj_loop_log(Object *obj, s32 updateRate) { log = (Object_Log *) obj->unk64; if (log != NULL) { - obj->segment.trans.y_position = func_800BEEB4((Object_64 *) log); + obj->segment.trans.y_position = func_800BEEB4((Object_64 *) log, updateRate); } else { obj->segment.trans.y_position = ((LevelObjectEntryCommon *) obj->segment.level_entry)->y; } @@ -4831,6 +4831,7 @@ GLOBAL_ASM("asm/non_matchings/object_functions/obj_init_butterfly.s") GLOBAL_ASM("asm/non_matchings/object_functions/obj_loop_butterfly.s") +//Scratch: https://decomp.me/scratch/h4CcJ GLOBAL_ASM("asm/non_matchings/object_functions/obj_init_midifade.s") void obj_init_midifadepoint(Object *obj, LevelObjectEntry_MidiFadePoint *entry) { diff --git a/src/objects.c b/src/objects.c index 9ed20dbf..9d235396 100644 --- a/src/objects.c +++ b/src/objects.c @@ -199,7 +199,7 @@ s8 (*D_8011ADCC)[8]; f32 D_8011ADD0; s8 D_8011ADD4; s8 D_8011ADD5; -s32 D_8011ADD8[10]; +Object *D_8011ADD8[10]; s8 D_8011AE00; s8 D_8011AE01; s8 gIsNonCarRacers; @@ -2780,7 +2780,71 @@ s32 func_800143A8(ObjectModel *objModel, Object *obj, s32 startIndex, s32 flags, return i; } +#ifdef NON_EQUIVALENT +s32 func_80014814(s32 *retObjCount) { + s32 i; + s32 maxObjCount; + s32 curObjCount; + + *retObjCount = objCount; + if (D_8011AE7C) { + return D_8011AE7C; + } + curObjCount = D_8011AE60; + maxObjCount = objCount - 1; + while (maxObjCount >= curObjCount) { + for (i = 0; maxObjCount >= curObjCount && i == 0; i++) { + if (!(gObjPtrList[curObjCount]->segment.trans.flags & 0x8000)) { + if (gObjPtrList[curObjCount]->segment.header->unk30 & 1) { + curObjCount++; + } + i = -1; + } else { + curObjCount++; + } + } + for (i = 0; maxObjCount >= curObjCount && i == 0; i++) { + if (gObjPtrList[maxObjCount]->segment.trans.flags & 0x8000) { + i = -1; + } else if (!(gObjPtrList[maxObjCount]->segment.header->unk30 & 1)) { + maxObjCount--; + } else { + i = -1; + } + } + if (curObjCount > maxObjCount) { + gObjPtrList[curObjCount] = gObjPtrList[maxObjCount]; + gObjPtrList[maxObjCount] = gObjPtrList[curObjCount]; + curObjCount++; + maxObjCount--; + } + } + D_8011AE7C = curObjCount; + return curObjCount; +} +#else GLOBAL_ASM("asm/non_matchings/objects/func_80014814.s") +#endif + +UNUSED void func_800149C0(unk800149C0 *arg0, UNUSED s32 arg1, s32 arg2, s32 arg3, s32 *arg4, s32 *arg5, s32 arg6) { + UNUSED s32 pad; + s32 endVal; + s32 startVal; + f32 temp_f0; + s32 i; + + temp_f0 = arg0->unk6; + endVal = func_80014B50(arg2, arg3, temp_f0, arg0->unk4); + startVal = func_80014B50(arg2, endVal - 1, temp_f0, arg0->unk4 + 8); + + for (i = startVal; i < endVal; i++) { + gObjPtrList[i]->segment.object.unk38 += arg6; + } + + *arg4 = startVal; + *arg5 = endVal - 1; +} + GLOBAL_ASM("asm/non_matchings/objects/func_80014B50.s") GLOBAL_ASM("asm/non_matchings/objects/func_80015348.s") @@ -3768,7 +3832,31 @@ UNUSED s32 get_object_list_index(void) { GLOBAL_ASM("asm/non_matchings/objects/func_8001E4C4.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001E6EC.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001E89C.s") + +void func_8001E89C(void) { + s32 i; + Object *obj; + Object_64 *obj64; + + // some flag, flips to 1 when loading a new zone + if (D_8011AE01 != 0) { + D_8011AE01 = 0; + return; + } + + // loading (boss) cutscene + for (i = 0; i < D_8011AE00; i++) { + obj = D_8011ADD8[i]; + obj64 = obj->unk64; + + if (obj64->obj8001E89C_64.unkC != NULL) { + obj64->obj8001E89C_64.unkC->unkC = obj64->obj8001E89C_64.unk0; + obj64->obj8001E89C_64.unkC->unk10 = obj64->obj8001E89C_64.unk4; + obj64->obj8001E89C_64.unkC->unk14 = obj64->obj8001E89C_64.unk8; + } + } +} + GLOBAL_ASM("asm/non_matchings/objects/func_8001E93C.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001EE74.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001EFA4.s") diff --git a/src/objects.h b/src/objects.h index fe8eb098..f1783e0f 100644 --- a/src/objects.h +++ b/src/objects.h @@ -297,6 +297,13 @@ typedef struct unk8001A7D8_arg0 { u8 unk49; } unk8001A7D8_arg0; +typedef struct unk800149C0 { + u8 pad0[4]; + u8 unk4; + u8 pad5; + s16 unk6; +} unk800149C0; + #define CIC_ID 6103 extern s32 osCicId; // Used for an Anti-Piracy check in render_3d_model @@ -485,5 +492,6 @@ void func_800245F0(ObjectModel *, Object *, f32); //asm func in unknown_0251F0 s32 func_80061D30(Object *); //asm func in unknown_062930 void func_8000C8F8(s32, s32); Object *func_8000FD54(s32); +s32 func_80014B50(s32 arg0, s32 arg1, f32 arg2, u32 arg3); #endif diff --git a/src/particles.c b/src/particles.c index 5542db55..d62b938e 100644 --- a/src/particles.c +++ b/src/particles.c @@ -1407,7 +1407,24 @@ GLOBAL_ASM("asm/non_matchings/particles/func_800B3140.s") GLOBAL_ASM("asm/non_matchings/particles/func_800B3240.s") GLOBAL_ASM("asm/non_matchings/particles/func_800B3358.s") GLOBAL_ASM("asm/non_matchings/particles/func_800B34B0.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B3564.s") + +void func_800B3564(Particle *arg0) { + s32 var_s1; + + for (var_s1 = 0; D_80127C80 > var_s1++;) { + arg0->segment.x_velocity = 0.0f; + arg0->segment.y_velocity = 0.0f; + arg0->segment.z_velocity = -arg0->forwardVel; + f32_vec3_apply_object_rotation3(&arg0->segment.trans, &arg0->segment.x_velocity); + arg0->segment.trans.x_position += arg0->segment.x_velocity; + arg0->segment.trans.y_position += arg0->segment.y_velocity - arg0->unk68f; + arg0->segment.trans.z_position += arg0->segment.z_velocity; + arg0->segment.trans.scale += arg0->segment.unk28; + arg0->segment.trans.y_rotation += arg0->unk62; + arg0->segment.trans.x_rotation += arg0->unk64; + arg0->segment.trans.z_rotation += arg0->unk66; + } +} UNUSED void func_800B3678(Gfx **arg0, MatrixS **arg1, Vertex **arg2) { UNUSED s32 pad; diff --git a/src/textures_sprites.c b/src/textures_sprites.c index d2e418cd..7cf1756b 100644 --- a/src/textures_sprites.c +++ b/src/textures_sprites.c @@ -479,20 +479,25 @@ TextureHeader *load_texture(s32 arg0) { GLOBAL_ASM("asm/non_matchings/textures_sprites/load_texture.s") #endif -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING /** + * The same difference preventing this from matching is the same as free_sprite * Official Name: texFreeTexture */ void free_texture(TextureHeader *tex) { s32 i; + s32 texId; + if (tex != NULL) { tex->numberOfInstances--; - if ((tex->numberOfInstances & 0xFF) <= 0) { + if (tex->numberOfInstances <= 0) { for (i = 0; i < gNumberOfLoadedTextures; i++) { if (tex == gTextureCache[i].texture) { + texId = -1; free_from_memory_pool(tex); - gTextureCache[i].id = -1; - gTextureCache[i].texture = (TextureHeader *)-1; + gTextureCache[i].id = texId; + gTextureCache[i].texture = (TextureHeader *) texId; + break; } } } @@ -511,21 +516,16 @@ void set_texture_colour_tag(s32 tagID) { gTexColourTag = tagID; } -#ifdef NON_EQUIVALENT -// Unused. -TextureHeader *func_8007B380(s32 arg0) { +UNUSED TextureHeader *func_8007B380(s32 arg0) { if ((arg0 < 0) || (arg0 >= gNumberOfLoadedTextures)) { return 0; } // Regalloc issue here - if (gTextureCache[arg0].texture == (TextureHeader *)-1) { + if (gTextureCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].texture == (TextureHeader *)-1) { return 0; } - return gTextureCache[arg0].texture; + return gTextureCache[arg0 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1 << 1 >> 1].texture; } -#else -GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007B380.s") -#endif /** * Resets all render settings to the default state. @@ -932,29 +932,25 @@ s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 * GLOBAL_ASM("asm/non_matchings/textures_sprites/func_8007CA68.s") -#ifdef NON_EQUIVALENT -// andi 0xff instead of a simple mov for j = i. s32 doesn't work. +#ifdef NON_MATCHING /* Official name: texFreeSprite */ void free_sprite(Sprite *sprite) { s32 i; - u8 j; s32 frame; s32 spriteId; - SpriteCacheEntry *cache; if (sprite != NULL) { sprite->numberOfInstances--; if (sprite->numberOfInstances <= 0) { for (i = 0; i < D_80126358; i++) { - j = i; // What? - if (sprite == gSpriteCache[j].sprite) { + if (sprite == gSpriteCache[i].sprite) { for (frame = 0; frame < sprite->numberOfFrames; frame++) { free_texture(sprite->frames[frame]); } spriteId = -1; free_from_memory_pool(sprite); - gSpriteCache[j].id = spriteId; - gSpriteCache[j].sprite = (Sprite *)spriteId; // ? + gSpriteCache[i].id = spriteId; + gSpriteCache[i].sprite = (Sprite *)spriteId; break; } } diff --git a/src/textures_sprites.h b/src/textures_sprites.h index 0e383526..b7b2a6df 100644 --- a/src/textures_sprites.h +++ b/src/textures_sprites.h @@ -131,7 +131,6 @@ TextureHeader *func_8007B46C(TextureHeader *arg0, s32 arg1); TextureHeader *load_texture(s32 arg0); // Non Matching void free_texture(TextureHeader *tex); // Non Matching -TextureHeader *func_8007B380(s32 arg0); // Non Matching s32 get_texture_size_from_id(s32 arg0); // Non Matching s32 func_8007C860(s32 spriteIndex); // Non Matching s32 load_sprite_info(s32 spriteID, s32 *numOfInstancesOut, s32 *unkOut, diff --git a/src/vehicle_tricky.c b/src/vehicle_tricky.c index 898c3dc4..e8527b93 100644 --- a/src/vehicle_tricky.c +++ b/src/vehicle_tricky.c @@ -250,10 +250,10 @@ void play_random_boss_sound(s32 offset) { // This looks like it's just some stack and regalloc differences, but I can't be certain it's NON_MATCHING yet. // This function looks like it sets up the animation sequences void func_8005CB68(Object_Racer *racer, s8 *arg1) { - Settings *settings; + s32 bossId; s8 arg1_ret; s8 *miscAsset68; - s32 bossId; + Settings *settings; s32 racerUnk1AC; s8 *miscAsset67; s32 miscAsset68Byte5; @@ -301,21 +301,21 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { } if (settings->worldId == WORLD_CENTRAL_AREA) { if (racerUnk1AC == 1) { - push_level_property_stack((s32)SPECIAL_MAP_ID_UNK_NEG2, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG2, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset68Byte5, 0, -1, 0); push_level_property_stack(miscAsset67CourseByte, 0, -1, 1); } else { - push_level_property_stack((s32)SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset67CourseByte, 0, -1, 2); } } else if (racerUnk1AC == 1) { set_eeprom_settings_value(1); //Set Adventure Two Unlocked - push_level_property_stack((s32)SPECIAL_MAP_ID_UNK_NEG2, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG2, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset68Byte7, 0, -1, 0); push_level_property_stack(miscAsset68Byte6, 0, -1, 0); push_level_property_stack(miscAsset67CourseByte, 0, -1, 1); } else { - push_level_property_stack((s32)SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset67CourseByte, 0, -1, 2); } if (racerUnk1AC == 1) { @@ -348,9 +348,10 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { push_level_property_stack((s32)SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset67CourseByte, 4, -1, 4); } else if (!(settings->bosses & (bossId << 6))) { - settings->bosses |= bossId << 6; + settings->bosses |= (bossId << 6) & 0xFFFF; var_t1 = 0; if ((settings->worldId > 0) && (settings->worldId < 5)) { + if (settings->worldId){ } var_t1 = settings->wizpigAmulet + 1; if (var_t1 >= 5) { var_t1 = 4; @@ -358,21 +359,21 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { settings->wizpigAmulet = var_t1; } if (var_t1 != 0) { - push_level_property_stack((s32)SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); push_level_property_stack(ASSET_LEVELNAME_WIZPIGAMULETSEQUENCE, 0, -1, settings->wizpigAmulet - 1); push_level_property_stack(miscAsset67CourseByte, 6, -1, 6); } else { - push_level_property_stack((s32)SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset67CourseByte, 4, -1, 4); } } else { - push_level_property_stack((s32)SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset67CourseByte, 4, -1, 4); } func_8006F140(4); instShowBearBar(); } else { - push_level_property_stack((s32)SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); + push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset67CourseByte, 5, -1, 5); func_8006F140(3); } @@ -382,7 +383,7 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { *arg1 = arg1_ret; } #else -GLOBAL_ASM("asm/non_matchings/unknown_05CEF0/func_8005CB68.s") +GLOBAL_ASM("asm/non_matchings/vehicle_tricky/func_8005CB68.s") #endif /** diff --git a/src/waves.c b/src/waves.c index 27d286ff..403c4669 100644 --- a/src/waves.c +++ b/src/waves.c @@ -110,8 +110,8 @@ s32 D_8012A0A8; s32 D_8012A0AC; s32 D_8012A0B0; s32 D_8012A0B4; -s32 D_8012A0B8; -s32 D_8012A0BC; +f32 D_8012A0B8; +f32 D_8012A0BC; s32 D_8012A0C0; s32 D_8012A0C4; s32 D_8012A0C8; @@ -308,9 +308,111 @@ GLOBAL_ASM("asm/non_matchings/waves/func_800BC6C8.s") GLOBAL_ASM("asm/non_matchings/waves/func_800BCC70.s") GLOBAL_ASM("asm/non_matchings/waves/func_800BDC80.s") GLOBAL_ASM("asm/non_matchings/waves/func_800BE654.s") + // Get water height probably. -GLOBAL_ASM("asm/non_matchings/waves/func_800BEEB4.s") +f32 func_800BEEB4(Object_64 *arg0, s32 updateRate) { + s32 var_t0; + f32 temp; + + arg0->obj800BEEB4_64.unk4 += updateRate; + while (arg0->obj800BEEB4_64.unk4 >= arg0->obj800BEEB4_64.unk6) { + arg0->obj800BEEB4_64.unk4 -= arg0->obj800BEEB4_64.unk6; + } + var_t0 = arg0->obj800BEEB4_64.unkE[arg0->obj800BEEB4_64.unk4 >> 1]; + if (arg0->obj800BEEB4_64.unk4 & 1) { + if ((arg0->obj800BEEB4_64.unk4 + 1) >= arg0->obj800BEEB4_64.unk6) { + var_t0 += arg0->obj800BEEB4_64.unkE[0]; + } else { + var_t0 += arg0->obj800BEEB4_64.unkE[(arg0->obj800BEEB4_64.unk4 >> 1) + 1]; + } + if (arg0->obj800BEEB4_64.unk2 > 0) { + var_t0 <<= (arg0->obj800BEEB4_64.unk2 + 0x1F); + } else { + var_t0 >>= 1; + } + } else { + var_t0 <<= arg0->obj800BEEB4_64.unk2; + } + temp = (((f32) var_t0 * 0.0625) + (f32) arg0->obj800BEEB4_64.unk0); + temp *= D_80129FC8->unk40; + temp += func_800BEFC4(arg0->obj800BEEB4_64.unkC, arg0->obj800BEEB4_64.unk8, arg0->obj800BEEB4_64.unkA); + return temp; +} + +#ifdef NON_EQUIVALENT +f32 func_800BEFC4(s32 arg0, s32 arg1, s32 arg2) { + f32 temp_f0; + f32 temp_f12; + f32 temp_f20; + f32 temp_f22; + f32 temp_f24; + f32 temp_f30; + f32 var_f0; + f32 var_f28; + f32 var_f2; + s32 temp_a1; + s32 var_s3; + s32 var_v1; + s32 temp_s0; + u8 temp_t5; + unk800E3184 *temp_a3; + unk800E3190 *temp_s1; + + var_f28 = 0.0f; + if (D_800E3188 <= 0) { + return 0.0f; + } + var_f0 = D_8012A0B8; + var_v1 = D_80129FC8->unk0; + var_f2 = D_8012A0BC; + if (D_80129FC8->unk28 != 0) { + var_f0 *= 0.5f; + var_v1 *= 2; + var_f2 *= 0.5f; + } + temp_a1 = (D_800E30D8[arg0].unkA * var_v1) + arg1; + temp_a3 = &D_800E3184[temp_a1]; + temp_t5 = temp_a3->unk0[0]; + if (temp_t5 != 0xFF) { + temp_f30 = D_8012A0D0 + (temp_a1 * var_f0); + temp_f24 = D_8012A0D4 + (((D_800E30D8[arg0].unkB * var_v1) + arg2) * var_f2); + var_s3 = 0; + do { + temp_s1 = &D_800E3190[temp_a3->unk0[var_s3]]; + if ((temp_s1->unk0 <= temp_f24) && (temp_f24 <= temp_s1->unk4)) { + temp_f20 = temp_f30 - temp_s1->unk8; + temp_f22 = temp_f24 - temp_s1->unkC; + temp_f12 = (temp_f20 * temp_f20) + (temp_f22 * temp_f22); + if (temp_f12 < temp_s1->unk14) { + temp_f0 = sqrtf(temp_f12); + temp_s0 = temp_s1->unk1A; + if (temp_s1->unk31 != 0) { + if (temp_f20 < 0.0f) { + temp_s0 -= (s32) (temp_f20 * temp_s1->unk20); + } else { + temp_s0 += (s32) (temp_f20 * temp_s1->unk20); + } + } else if (temp_s1->unk32 != 0) { + if (temp_f20 < 0.0f) { + temp_s0 -= (s32) (temp_f22 * temp_s1->unk20); + } else { + temp_s0 += (s32) (temp_f22 * temp_s1->unk20); + } + } else { + temp_s0 += (s32) (temp_f0 * temp_s1->unk20); + } + temp_f0 = coss_f((temp_f0 * 65536.0f) / temp_s1->unk10); + var_f28 += temp_s1->unk24 * sins_f(temp_s0) * temp_f0; + } + } + var_s3++; + } while (var_s3 < 8 && temp_a3->unk0[var_s3] != 0xFF); + } + return var_f28; +} +#else GLOBAL_ASM("asm/non_matchings/waves/func_800BEFC4.s") +#endif void func_800BF3E4(s32 arg0) { s32 i; diff --git a/src/waves.h b/src/waves.h index d9c34f5d..0dc895eb 100644 --- a/src/waves.h +++ b/src/waves.h @@ -6,21 +6,33 @@ typedef struct{ LevelModelSegment *unk00; - u8 pad04[0x8]; + u8 pad04[0x6]; + u8 unkA; + u8 unkB; u32 unk0C; u8 pad10[0xC]; } LevelModel_Alternate; typedef struct unk800E3190 { - u8 pad0[0x1A]; + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + f32 unk14; + u8 pad18[0x2]; u16 unk1A; u32 unk1C; - u8 pad20[0x20]; + f32 unk20; + f32 unk24; + u8 pad28[0x8]; + u8 unk31; + u8 unk32; + u8 pad33[0xE]; } unk800E3190; typedef struct unk800E3184 { - u8 unk0[4]; - s32 unk4; + u8 unk0[8]; } unk800E3184; typedef struct unk800B8134 { @@ -99,13 +111,14 @@ void func_800BBE08(LevelModel *level, unk800BBE08_arg1 *arg1); void obj_loop_wavepower(Object *obj); void func_800BFC54(unk800BFC54_arg0 *arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4); void func_800BF3E4(s32 arg0); +f32 func_800BEEB4(Object_64 *, s32); Object_64 *func_800BE654(s16, f32, f32); // Non Matching -f32 func_800BEEB4(Object_64 *); // Non Matching void func_800BBF78(LevelModel *arg0); // Non Matching f32 func_800BB2F4(s32, f32, f32, f32*); void func_800B8C04(s32, s32, s32, s32, s32); void func_800BF524(Object *); void *func_800BF634(Object *arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4, f32 arg5, f32 arg6, f32 arg7, s32 arg8); +f32 func_800BEFC4(s32, s32, s32); #endif diff --git a/src/weather.c b/src/weather.c index efe5f0b7..7bfedab3 100644 --- a/src/weather.c +++ b/src/weather.c @@ -254,7 +254,7 @@ void free_weather_memory(void) { } } -GLOBAL_ASM("asm/non_matchings/game_ui/func_800AB4A8.s") +GLOBAL_ASM("asm/non_matchings/weather/func_800AB4A8.s") void func_800ABB34(void) { s32 temp_v0; @@ -334,7 +334,7 @@ void process_weather(Gfx **currDisplayList, MatrixS **currHudMat, Vertex **currH D_80127BB4 = (D_80127BB0 * D_80127BB8[0]) >> (unused = 16); D_80127BF8.unk4 = (D_80127BF8.unk0 + ((D_80127BF8.unk2 - D_80127BF8.unk0) * D_80127BB8[12])) >> (unused = 16); - func_800AC0C8(updateRate, &D_80127BF8); // This is the snow physics that makes it move + func_800AC0C8(updateRate); // This is the snow physics that makes it move if ((D_80127BB4 > 0) && (D_80127BF8.unk4 < D_80127BF8.unk0)) { D_800E2904 = D_800E2914[D_80127C08]; func_800AC21C(); // Both of these funcs are needed to render. @@ -348,8 +348,8 @@ void process_weather(Gfx **currDisplayList, MatrixS **currHudMat, Vertex **currH *currHudTris = gCurrWeatherTriList; } -GLOBAL_ASM("asm/non_matchings/game_ui/func_800AC0C8.s") -GLOBAL_ASM("asm/non_matchings/game_ui/func_800AC21C.s") +GLOBAL_ASM("asm/non_matchings/weather/func_800AC0C8.s") +GLOBAL_ASM("asm/non_matchings/weather/func_800AC21C.s") /** * Load and execute the draw commands for the falling snowflakes, seen with snowy weather enabled. @@ -399,10 +399,10 @@ void func_800AC880(s32 arg0) { } } -GLOBAL_ASM("asm/non_matchings/game_ui/func_800AC8A8.s") +GLOBAL_ASM("asm/non_matchings/weather/func_800AC8A8.s") //https://decomp.me/scratch/mYuMJ -GLOBAL_ASM("asm/non_matchings/game_ui/func_800ACA20.s") +GLOBAL_ASM("asm/non_matchings/weather/func_800ACA20.s") void cameraAddOverrideObject(Object *arg0) { if (D_800E2A88 < 0x10) { @@ -431,7 +431,7 @@ void func_800ACF98(Object* arg0) { } -GLOBAL_ASM("asm/non_matchings/game_ui/func_800AD030.s") +GLOBAL_ASM("asm/non_matchings/weather/func_800AD030.s") void func_800AD144(s32 arg0, s32 arg1) { gLightningFrequency = arg0; @@ -536,7 +536,7 @@ void handle_weather_rain(s32 updateRate) { } } -GLOBAL_ASM("asm/non_matchings/game_ui/render_rain_splashes.s") +GLOBAL_ASM("asm/non_matchings/weather/render_rain_splashes.s") /** * On a randomly set timer, based on the weather intensity, count down and make the sound of thunder. @@ -589,4 +589,4 @@ void handle_rain_sound(UNUSED s32 updateRate) { } //https://decomp.me/scratch/PDAZs -GLOBAL_ASM("asm/non_matchings/game_ui/render_rain_overlay.s") +GLOBAL_ASM("asm/non_matchings/weather/render_rain_overlay.s") diff --git a/src/weather.h b/src/weather.h index 39ebaeea..f079eeaa 100644 --- a/src/weather.h +++ b/src/weather.h @@ -102,7 +102,7 @@ void changeWeather(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5); s32 coss(s16); s32 sins(s16); void init_weather(void); -s32 func_800AC0C8(s32, unk80127BF8 *); +s32 func_800AC0C8(s32); void f32_matrix_dot(Matrix *arg0, Matrix *arg1, Matrix *arg2); void func_800AC21C(void); void func_800AC8A8(Object *);