From d8e58622e0cba40252e2ac5fa483b3970e593ebe Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Tue, 31 Oct 2023 16:39:28 +0000 Subject: [PATCH] Name the last two files in src (#429) * label animation and a few object flags * models * name funny spline * Update menu.c * better name * rename unknown_005740.c * ah its happened again * fix warnings * Fix that dumb idiot warning finally * teag * rename the last audio file * Update math_util.c * update math util to the latest * small funny format * quick change * fix warnings * Update README.md * Fix a maths func * fix nonequiv building * bro come on --- README.md | 14 +- .../func_80008040.s | 136 +- .../func_80008174.s | 392 +- .../func_80008438.s | 0 .../func_80009968.s | 74 +- .../func_80009B7C.s | 268 +- .../func_80009D6C.s | 574 +-- .../func_8000A184.s | 194 +- .../func_80004B40.s | 764 ++-- .../func_80005254.s | 40 +- .../func_800063EC.s | 26 +- .../func_80006FC8.s | 18 +- asm/non_matchings/game_ui/func_800A277C.s | 6 +- asm/non_matchings/game_ui/func_800AA600.s | 2 +- asm/non_matchings/objects/func_8000CC7C.s | 22 +- asm/non_matchings/objects/func_800101AC.s | 1164 +++--- asm/non_matchings/objects/func_80010994.s | 24 +- asm/non_matchings/objects/func_80019808.s | 2 +- asm/non_matchings/objects/func_8001A8F4.s | 2 +- asm/non_matchings/objects/func_80022948.s | 4 +- asm/non_matchings/objects/spawn_object.s | 2 +- asm/non_matchings/racer/func_80042D20.s | 2484 ++++++------- asm/non_matchings/racer/func_80050A28.s | 3308 ++++++++--------- .../func_80061D30.s => object_animate.s} | 12 +- asm/unknown_062930.s | 10 - include/structs.h | 32 +- src/{unknown_008C40.c => audio_spatial.c} | 43 +- src/{unknown_008C40.h => audio_spatial.h} | 6 +- src/audio_vehicle.c | 955 +++++ src/{unknown_005740.h => audio_vehicle.h} | 42 +- src/camera.c | 5 +- src/camera.h | 2 +- src/fade_transition.h | 2 - src/game.c | 106 +- src/game.h | 2 +- src/game_ui.c | 24 +- src/lights.c | 1 + src/math_util.c | 207 +- src/math_util.h | 8 +- src/memory.c | 19 +- src/memory.h | 5 - src/menu.c | 18 +- src/object_functions.c | 60 +- src/object_functions.h | 6 - src/object_models.c | 70 +- src/object_models.h | 10 +- src/objects.c | 97 +- src/objects.h | 6 +- src/racer.c | 84 +- src/textures_sprites.h | 32 +- src/thread3_main.c | 4 +- src/tracks.c | 14 +- src/unknown_005740.c | 938 ----- src/vehicle_bluey.c | 8 +- src/vehicle_bubbler.c | 6 +- src/vehicle_misc.h | 2 +- src/vehicle_rocket.c | 6 +- src/vehicle_smokey.c | 8 +- src/vehicle_tricky.c | 22 +- src/vehicle_wizpig.c | 6 +- src/waves.c | 1 + src/weather.c | 2 +- src/weather.h | 2 - tools/python/calc_func_checksums.py | 170 +- tools/python/find_glabels.py | 2 +- 65 files changed, 6344 insertions(+), 6231 deletions(-) rename asm/non_matchings/{unknown_008C40 => audio_spatial}/func_80008040.s (98%) rename asm/non_matchings/{unknown_008C40 => audio_spatial}/func_80008174.s (98%) rename asm/non_matchings/{unknown_008C40 => audio_spatial}/func_80008438.s (100%) rename asm/non_matchings/{unknown_008C40 => audio_spatial}/func_80009968.s (97%) rename asm/non_matchings/{unknown_008C40 => audio_spatial}/func_80009B7C.s (98%) rename asm/non_matchings/{unknown_008C40 => audio_spatial}/func_80009D6C.s (97%) rename asm/non_matchings/{unknown_008C40 => audio_spatial}/func_8000A184.s (95%) rename asm/non_matchings/{unknown_005740 => audio_vehicle}/func_80004B40.s (97%) rename asm/non_matchings/{unknown_005740 => audio_vehicle}/func_80005254.s (95%) rename asm/non_matchings/{unknown_005740 => audio_vehicle}/func_800063EC.s (95%) rename asm/non_matchings/{unknown_005740 => audio_vehicle}/func_80006FC8.s (98%) rename asm/{unknown_062930/func_80061D30.s => object_animate.s} (98%) delete mode 100644 asm/unknown_062930.s rename src/{unknown_008C40.c => audio_spatial.c} (92%) rename src/{unknown_008C40.h => audio_spatial.h} (93%) create mode 100644 src/audio_vehicle.c rename src/{unknown_005740.h => audio_vehicle.h} (78%) delete mode 100644 src/unknown_005740.c diff --git a/README.md b/README.md index 14722bf9..80834aaf 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ As of October 30, 2023, this is our current score:     Decomp progress: 62.34% -    Documentation progress: 33.66% +    Documentation progress: 34.35% --- @@ -135,8 +135,8 @@ As of October 30th, 2023, this is our current score: -------------------------- 62.34% Complete --------------------------- # Decompiled functions: 1656 # GLOBAL_ASM remaining: 189 - # NON_MATCHING functions: 12 - # NON_EQUIVALENT WIP functions: 57 + # NON_MATCHING functions: 14 + # NON_EQUIVALENT WIP functions: 55 ---------------------------- Game Status ----------------------------- Balloons: 30/47, Keys: 3/4, Trophies: 2/5 T.T. Amulets: 3/4, Wizpig Amulets: 3/4 @@ -144,14 +144,14 @@ As of October 30th, 2023, this is our current score: We are participating in the Trophy Race of Sherbet Island. (Round One) ====================================================================== ADVENTURE TWO (Cleanup & Documentation) - -------------------------- 33.66% Complete --------------------------- - # Documented functions: 747 - # Undocumented remaining: 821 + -------------------------- 34.35% Complete --------------------------- + # Documented functions: 761 + # Undocumented remaining: 807 ---------------------------- Game Status ----------------------------- Balloons: 17/47, Keys: 2/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 ---------------------------------------------------------------------- - We are battling in Icicle Pyramid. (3 opponents remain) + We are battling in Icicle Pyramid. (2 opponents remain) ====================================================================== ``` diff --git a/asm/non_matchings/unknown_008C40/func_80008040.s b/asm/non_matchings/audio_spatial/func_80008040.s similarity index 98% rename from asm/non_matchings/unknown_008C40/func_80008040.s rename to asm/non_matchings/audio_spatial/func_80008040.s index 438ad666..dbd2a839 100644 --- a/asm/non_matchings/unknown_008C40/func_80008040.s +++ b/asm/non_matchings/audio_spatial/func_80008040.s @@ -1,68 +1,68 @@ -glabel func_80008040 -/* 008C40 80008040 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 008C44 80008044 AFBF0014 */ sw $ra, 0x14($sp) -/* 008C48 80008048 3C048012 */ lui $a0, %hi(D_80119C40) # $a0, 0x8012 -/* 008C4C 8000804C 24849C40 */ addiu $a0, %lo(D_80119C40) # addiu $a0, $a0, -0x63c0 -/* 008C50 80008050 00002825 */ move $a1, $zero -/* 008C54 80008054 0C00084A */ jal func_80002128 -/* 008C58 80008058 00003025 */ move $a2, $zero -/* 008C5C 8000805C 3C0500FF */ lui $a1, (0x00FFFFFF >> 16) # lui $a1, 0xff -/* 008C60 80008060 34A5FFFF */ ori $a1, (0x00FFFFFF & 0xFFFF) # ori $a1, $a1, 0xffff -/* 008C64 80008064 0C01C327 */ jal allocate_from_main_pool_safe -/* 008C68 80008068 240405A0 */ li $a0, 1440 -/* 008C6C 8000806C 3C068012 */ lui $a2, %hi(D_80119C48) # $a2, 0x8012 -/* 008C70 80008070 24C69C48 */ addiu $a2, %lo(D_80119C48) # addiu $a2, $a2, -0x63b8 -/* 008C74 80008074 3C0500FF */ lui $a1, (0x00FFFFFF >> 16) # lui $a1, 0xff -/* 008C78 80008078 ACC20000 */ sw $v0, ($a2) -/* 008C7C 8000807C 34A5FFFF */ ori $a1, (0x00FFFFFF & 0xFFFF) # ori $a1, $a1, 0xffff -/* 008C80 80008080 0C01C327 */ jal allocate_from_main_pool_safe -/* 008C84 80008084 240400A0 */ li $a0, 160 -/* 008C88 80008088 3C018012 */ lui $at, %hi(D_80119C50) # $at, 0x8012 -/* 008C8C 8000808C 3C0500FF */ lui $a1, (0x00FFFFFF >> 16) # lui $a1, 0xff -/* 008C90 80008090 AC229C50 */ sw $v0, %lo(D_80119C50)($at) -/* 008C94 80008094 34A5FFFF */ ori $a1, (0x00FFFFFF & 0xFFFF) # ori $a1, $a1, 0xffff -/* 008C98 80008098 0C01C327 */ jal allocate_from_main_pool_safe -/* 008C9C 8000809C 240400A0 */ li $a0, 160 -/* 008CA0 800080A0 3C018012 */ lui $at, %hi(D_80119C44) # $at, 0x8012 -/* 008CA4 800080A4 AC229C44 */ sw $v0, %lo(D_80119C44)($at) -/* 008CA8 800080A8 3C068012 */ lui $a2, %hi(D_80119C48) # $a2, 0x8012 -/* 008CAC 800080AC 3C01800E */ lui $at, %hi(D_800DC6E0) # $at, 0x800e -/* 008CB0 800080B0 3C028012 */ lui $v0, %hi(D_8011A6D8) # $v0, 0x8012 -/* 008CB4 800080B4 3C038012 */ lui $v1, %hi(D_80119C58) # $v1, 0x8012 -/* 008CB8 800080B8 24C69C48 */ addiu $a2, %lo(D_80119C48) # addiu $a2, $a2, -0x63b8 -/* 008CBC 800080BC A420C6E0 */ sh $zero, %lo(D_800DC6E0)($at) -/* 008CC0 800080C0 24639C58 */ addiu $v1, %lo(D_80119C58) # addiu $v1, $v1, -0x63a8 -/* 008CC4 800080C4 2442A6D8 */ addiu $v0, %lo(D_8011A6D8) # addiu $v0, $v0, -0x5928 -.L800080C8: -/* 008CC8 800080C8 24630180 */ addiu $v1, $v1, 0x180 -/* 008CCC 800080CC 0062082B */ sltu $at, $v1, $v0 -/* 008CD0 800080D0 1420FFFD */ bnez $at, .L800080C8 -/* 008CD4 800080D4 AC60FFF8 */ sw $zero, -8($v1) -/* 008CD8 800080D8 00001025 */ move $v0, $zero -/* 008CDC 800080DC 240305A0 */ li $v1, 1440 -.L800080E0: -/* 008CE0 800080E0 8CCE0000 */ lw $t6, ($a2) -/* 008CE4 800080E4 00000000 */ nop -/* 008CE8 800080E8 01C27821 */ addu $t7, $t6, $v0 -/* 008CEC 800080EC ADE00018 */ sw $zero, 0x18($t7) -/* 008CF0 800080F0 8CD80000 */ lw $t8, ($a2) -/* 008CF4 800080F4 00000000 */ nop -/* 008CF8 800080F8 0302C821 */ addu $t9, $t8, $v0 -/* 008CFC 800080FC AF20003C */ sw $zero, 0x3c($t9) -/* 008D00 80008100 8CC80000 */ lw $t0, ($a2) -/* 008D04 80008104 00000000 */ nop -/* 008D08 80008108 01024821 */ addu $t1, $t0, $v0 -/* 008D0C 8000810C AD200060 */ sw $zero, 0x60($t1) -/* 008D10 80008110 8CCA0000 */ lw $t2, ($a2) -/* 008D14 80008114 00000000 */ nop -/* 008D18 80008118 01425821 */ addu $t3, $t2, $v0 -/* 008D1C 8000811C 24420090 */ addiu $v0, $v0, 0x90 -/* 008D20 80008120 1443FFEF */ bne $v0, $v1, .L800080E0 -/* 008D24 80008124 AD600084 */ sw $zero, 0x84($t3) -/* 008D28 80008128 0C00205D */ jal func_80008174 -/* 008D2C 8000812C 00000000 */ nop -/* 008D30 80008130 8FBF0014 */ lw $ra, 0x14($sp) -/* 008D34 80008134 27BD0018 */ addiu $sp, $sp, 0x18 -/* 008D38 80008138 03E00008 */ jr $ra -/* 008D3C 8000813C 00000000 */ nop - +glabel func_80008040 +/* 008C40 80008040 27BDFFE8 */ addiu $sp, $sp, -0x18 +/* 008C44 80008044 AFBF0014 */ sw $ra, 0x14($sp) +/* 008C48 80008048 3C048012 */ lui $a0, %hi(D_80119C40) # $a0, 0x8012 +/* 008C4C 8000804C 24849C40 */ addiu $a0, %lo(D_80119C40) # addiu $a0, $a0, -0x63c0 +/* 008C50 80008050 00002825 */ move $a1, $zero +/* 008C54 80008054 0C00084A */ jal func_80002128 +/* 008C58 80008058 00003025 */ move $a2, $zero +/* 008C5C 8000805C 3C0500FF */ lui $a1, (0x00FFFFFF >> 16) # lui $a1, 0xff +/* 008C60 80008060 34A5FFFF */ ori $a1, (0x00FFFFFF & 0xFFFF) # ori $a1, $a1, 0xffff +/* 008C64 80008064 0C01C327 */ jal allocate_from_main_pool_safe +/* 008C68 80008068 240405A0 */ li $a0, 1440 +/* 008C6C 8000806C 3C068012 */ lui $a2, %hi(D_80119C48) # $a2, 0x8012 +/* 008C70 80008070 24C69C48 */ addiu $a2, %lo(D_80119C48) # addiu $a2, $a2, -0x63b8 +/* 008C74 80008074 3C0500FF */ lui $a1, (0x00FFFFFF >> 16) # lui $a1, 0xff +/* 008C78 80008078 ACC20000 */ sw $v0, ($a2) +/* 008C7C 8000807C 34A5FFFF */ ori $a1, (0x00FFFFFF & 0xFFFF) # ori $a1, $a1, 0xffff +/* 008C80 80008080 0C01C327 */ jal allocate_from_main_pool_safe +/* 008C84 80008084 240400A0 */ li $a0, 160 +/* 008C88 80008088 3C018012 */ lui $at, %hi(D_80119C50) # $at, 0x8012 +/* 008C8C 8000808C 3C0500FF */ lui $a1, (0x00FFFFFF >> 16) # lui $a1, 0xff +/* 008C90 80008090 AC229C50 */ sw $v0, %lo(D_80119C50)($at) +/* 008C94 80008094 34A5FFFF */ ori $a1, (0x00FFFFFF & 0xFFFF) # ori $a1, $a1, 0xffff +/* 008C98 80008098 0C01C327 */ jal allocate_from_main_pool_safe +/* 008C9C 8000809C 240400A0 */ li $a0, 160 +/* 008CA0 800080A0 3C018012 */ lui $at, %hi(D_80119C44) # $at, 0x8012 +/* 008CA4 800080A4 AC229C44 */ sw $v0, %lo(D_80119C44)($at) +/* 008CA8 800080A8 3C068012 */ lui $a2, %hi(D_80119C48) # $a2, 0x8012 +/* 008CAC 800080AC 3C01800E */ lui $at, %hi(D_800DC6E0) # $at, 0x800e +/* 008CB0 800080B0 3C028012 */ lui $v0, %hi(D_8011A6D8) # $v0, 0x8012 +/* 008CB4 800080B4 3C038012 */ lui $v1, %hi(D_80119C58) # $v1, 0x8012 +/* 008CB8 800080B8 24C69C48 */ addiu $a2, %lo(D_80119C48) # addiu $a2, $a2, -0x63b8 +/* 008CBC 800080BC A420C6E0 */ sh $zero, %lo(D_800DC6E0)($at) +/* 008CC0 800080C0 24639C58 */ addiu $v1, %lo(D_80119C58) # addiu $v1, $v1, -0x63a8 +/* 008CC4 800080C4 2442A6D8 */ addiu $v0, %lo(D_8011A6D8) # addiu $v0, $v0, -0x5928 +.L800080C8: +/* 008CC8 800080C8 24630180 */ addiu $v1, $v1, 0x180 +/* 008CCC 800080CC 0062082B */ sltu $at, $v1, $v0 +/* 008CD0 800080D0 1420FFFD */ bnez $at, .L800080C8 +/* 008CD4 800080D4 AC60FFF8 */ sw $zero, -8($v1) +/* 008CD8 800080D8 00001025 */ move $v0, $zero +/* 008CDC 800080DC 240305A0 */ li $v1, 1440 +.L800080E0: +/* 008CE0 800080E0 8CCE0000 */ lw $t6, ($a2) +/* 008CE4 800080E4 00000000 */ nop +/* 008CE8 800080E8 01C27821 */ addu $t7, $t6, $v0 +/* 008CEC 800080EC ADE00018 */ sw $zero, 0x18($t7) +/* 008CF0 800080F0 8CD80000 */ lw $t8, ($a2) +/* 008CF4 800080F4 00000000 */ nop +/* 008CF8 800080F8 0302C821 */ addu $t9, $t8, $v0 +/* 008CFC 800080FC AF20003C */ sw $zero, 0x3c($t9) +/* 008D00 80008100 8CC80000 */ lw $t0, ($a2) +/* 008D04 80008104 00000000 */ nop +/* 008D08 80008108 01024821 */ addu $t1, $t0, $v0 +/* 008D0C 8000810C AD200060 */ sw $zero, 0x60($t1) +/* 008D10 80008110 8CCA0000 */ lw $t2, ($a2) +/* 008D14 80008114 00000000 */ nop +/* 008D18 80008118 01425821 */ addu $t3, $t2, $v0 +/* 008D1C 8000811C 24420090 */ addiu $v0, $v0, 0x90 +/* 008D20 80008120 1443FFEF */ bne $v0, $v1, .L800080E0 +/* 008D24 80008124 AD600084 */ sw $zero, 0x84($t3) +/* 008D28 80008128 0C00205D */ jal func_80008174 +/* 008D2C 8000812C 00000000 */ nop +/* 008D30 80008130 8FBF0014 */ lw $ra, 0x14($sp) +/* 008D34 80008134 27BD0018 */ addiu $sp, $sp, 0x18 +/* 008D38 80008138 03E00008 */ jr $ra +/* 008D3C 8000813C 00000000 */ nop + diff --git a/asm/non_matchings/unknown_008C40/func_80008174.s b/asm/non_matchings/audio_spatial/func_80008174.s similarity index 98% rename from asm/non_matchings/unknown_008C40/func_80008174.s rename to asm/non_matchings/audio_spatial/func_80008174.s index 4870cfb1..7b5ef2cd 100644 --- a/asm/non_matchings/unknown_008C40/func_80008174.s +++ b/asm/non_matchings/audio_spatial/func_80008174.s @@ -1,196 +1,196 @@ -.late_rodata -glabel D_800E4F10 -.float -100000.0 - -.text -glabel func_80008174 -/* 008D74 80008174 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 008D78 80008178 3C038012 */ lui $v1, %hi(D_80119C4C) # $v1, 0x8012 -/* 008D7C 8000817C 3C048012 */ lui $a0, %hi(D_80119C48) # $a0, 0x8012 -/* 008D80 80008180 300200FF */ andi $v0, $zero, 0xff -/* 008D84 80008184 24639C4C */ addiu $v1, %lo(D_80119C4C) # addiu $v1, $v1, -0x63b4 -/* 008D88 80008188 8C849C48 */ lw $a0, %lo(D_80119C48)($a0) -/* 008D8C 8000818C 28410028 */ slti $at, $v0, 0x28 -/* 008D90 80008190 AFBF003C */ sw $ra, 0x3c($sp) -/* 008D94 80008194 AFB60038 */ sw $s6, 0x38($sp) -/* 008D98 80008198 AFB50034 */ sw $s5, 0x34($sp) -/* 008D9C 8000819C AFB40030 */ sw $s4, 0x30($sp) -/* 008DA0 800081A0 AFB3002C */ sw $s3, 0x2c($sp) -/* 008DA4 800081A4 AFB20028 */ sw $s2, 0x28($sp) -/* 008DA8 800081A8 AFB10024 */ sw $s1, 0x24($sp) -/* 008DAC 800081AC AFB00020 */ sw $s0, 0x20($sp) -/* 008DB0 800081B0 E7B50018 */ swc1 $f21, 0x18($sp) -/* 008DB4 800081B4 E7B4001C */ swc1 $f20, 0x1c($sp) -/* 008DB8 800081B8 1020000E */ beqz $at, .L800081F4 -/* 008DBC 800081BC A0600000 */ sb $zero, ($v1) -/* 008DC0 800081C0 3C058012 */ lui $a1, %hi(D_80119C50) # $a1, 0x8012 -/* 008DC4 800081C4 24A59C50 */ addiu $a1, %lo(D_80119C50) # addiu $a1, $a1, -0x63b0 -.L800081C8: -/* 008DC8 800081C8 8CAE0000 */ lw $t6, ($a1) -/* 008DCC 800081CC 00027880 */ sll $t7, $v0, 2 -/* 008DD0 800081D0 01CFC021 */ addu $t8, $t6, $t7 -/* 008DD4 800081D4 AF040000 */ sw $a0, ($t8) -/* 008DD8 800081D8 90790000 */ lbu $t9, ($v1) -/* 008DDC 800081DC 24840024 */ addiu $a0, $a0, 0x24 -/* 008DE0 800081E0 27290001 */ addiu $t1, $t9, 1 -/* 008DE4 800081E4 312200FF */ andi $v0, $t1, 0xff -/* 008DE8 800081E8 28410028 */ slti $at, $v0, 0x28 -/* 008DEC 800081EC 1420FFF6 */ bnez $at, .L800081C8 -/* 008DF0 800081F0 A0690000 */ sb $t1, ($v1) -.L800081F4: -/* 008DF4 800081F4 3C14800E */ lui $s4, %hi(D_800DC6E0) # $s4, 0x800e -/* 008DF8 800081F8 2694C6E0 */ addiu $s4, %lo(D_800DC6E0) # addiu $s4, $s4, -0x3920 -/* 008DFC 800081FC 968B0000 */ lhu $t3, ($s4) -/* 008E00 80008200 244AFFFF */ addiu $t2, $v0, -1 -/* 008E04 80008204 A06A0000 */ sb $t2, ($v1) -/* 008E08 80008208 19600014 */ blez $t3, .L8000825C -/* 008E0C 8000820C 00008825 */ move $s1, $zero -/* 008E10 80008210 3C128012 */ lui $s2, %hi(D_80119C44) # $s2, 0x8012 -/* 008E14 80008214 26529C44 */ addiu $s2, %lo(D_80119C44) # addiu $s2, $s2, -0x63bc -/* 008E18 80008218 00008025 */ move $s0, $zero -.L8000821C: -/* 008E1C 8000821C 8E4C0000 */ lw $t4, ($s2) -/* 008E20 80008220 00000000 */ nop -/* 008E24 80008224 01906821 */ addu $t5, $t4, $s0 -/* 008E28 80008228 8DA20000 */ lw $v0, ($t5) -/* 008E2C 8000822C 00000000 */ nop -/* 008E30 80008230 8C440018 */ lw $a0, 0x18($v0) -/* 008E34 80008234 A0400012 */ sb $zero, 0x12($v0) -/* 008E38 80008238 10800003 */ beqz $a0, .L80008248 -/* 008E3C 8000823C 00000000 */ nop -/* 008E40 80008240 0C001223 */ jal func_8000488C -/* 008E44 80008244 00000000 */ nop -.L80008248: -/* 008E48 80008248 968E0000 */ lhu $t6, ($s4) -/* 008E4C 8000824C 26310001 */ addiu $s1, $s1, 1 -/* 008E50 80008250 022E082A */ slt $at, $s1, $t6 -/* 008E54 80008254 1420FFF1 */ bnez $at, .L8000821C -/* 008E58 80008258 26100004 */ addiu $s0, $s0, 4 -.L8000825C: -/* 008E5C 8000825C A6800000 */ sh $zero, ($s4) -/* 008E60 80008260 3C01800E */ lui $at, %hi(D_800E4F10) # $at, 0x800e -/* 008E64 80008264 3C118012 */ lui $s1, %hi(D_80119C58) # $s1, 0x8012 -/* 008E68 80008268 3C128012 */ lui $s2, %hi(D_80119C5C) # $s2, 0x8012 -/* 008E6C 8000826C 3C138012 */ lui $s3, %hi(D_80119C60) # $s3, 0x8012 -/* 008E70 80008270 3C158012 */ lui $s5, %hi(D_8011A6E0) # $s5, 0x8012 -/* 008E74 80008274 C4344F10 */ lwc1 $f20, %lo(D_800E4F10)($at) -/* 008E78 80008278 26B5A6E0 */ addiu $s5, %lo(D_8011A6E0) # addiu $s5, $s5, -0x5920 -/* 008E7C 8000827C 26739C60 */ addiu $s3, %lo(D_80119C60) # addiu $s3, $s3, -0x63a0 -/* 008E80 80008280 26529C5C */ addiu $s2, %lo(D_80119C5C) # addiu $s2, $s2, -0x63a4 -/* 008E84 80008284 26319C58 */ addiu $s1, %lo(D_80119C58) # addiu $s1, $s1, -0x63a8 -/* 008E88 80008288 2414FFFF */ li $s4, -1 -/* 008E8C 8000828C 24160001 */ li $s6, 1 -/* 008E90 80008290 2410001E */ li $s0, 30 -.L80008294: -/* 008E94 80008294 8E240178 */ lw $a0, 0x178($s1) -/* 008E98 80008298 AE20016C */ sw $zero, 0x16c($s1) -/* 008E9C 8000829C 1080000E */ beqz $a0, .L800082D8 -/* 008EA0 800082A0 00000000 */ nop -/* 008EA4 800082A4 92220000 */ lbu $v0, ($s1) -/* 008EA8 800082A8 00000000 */ nop -/* 008EAC 800082AC 14400005 */ bnez $v0, .L800082C4 -/* 008EB0 800082B0 00000000 */ nop -/* 008EB4 800082B4 0C001223 */ jal func_8000488C -/* 008EB8 800082B8 00000000 */ nop -/* 008EBC 800082BC 10000006 */ b .L800082D8 -/* 008EC0 800082C0 AE200178 */ sw $zero, 0x178($s1) -.L800082C4: -/* 008EC4 800082C4 16C20003 */ bne $s6, $v0, .L800082D4 -/* 008EC8 800082C8 00000000 */ nop -/* 008ECC 800082CC 0C000638 */ jal func_800018E0 -/* 008ED0 800082D0 00000000 */ nop -.L800082D4: -/* 008ED4 800082D4 AE200178 */ sw $zero, 0x178($s1) -.L800082D8: -/* 008ED8 800082D8 A234017C */ sb $s4, 0x17c($s1) -/* 008EDC 800082DC E6540000 */ swc1 $f20, ($s2) -/* 008EE0 800082E0 02601025 */ move $v0, $s3 -/* 008EE4 800082E4 E6740000 */ swc1 $f20, ($s3) -/* 008EE8 800082E8 E4540010 */ swc1 $f20, 0x10($v0) -/* 008EEC 800082EC E454000C */ swc1 $f20, 0xc($v0) -/* 008EF0 800082F0 E4540008 */ swc1 $f20, 8($v0) -/* 008EF4 800082F4 E4540004 */ swc1 $f20, 4($v0) -/* 008EF8 800082F8 24420014 */ addiu $v0, $v0, 0x14 -/* 008EFC 800082FC 24030002 */ li $v1, 2 -.L80008300: -/* 008F00 80008300 24630004 */ addiu $v1, $v1, 4 -/* 008F04 80008304 E454000C */ swc1 $f20, 0xc($v0) -/* 008F08 80008308 E4540010 */ swc1 $f20, 0x10($v0) -/* 008F0C 8000830C E4540014 */ swc1 $f20, 0x14($v0) -/* 008F10 80008310 E4540018 */ swc1 $f20, 0x18($v0) -/* 008F14 80008314 E454001C */ swc1 $f20, 0x1c($v0) -/* 008F18 80008318 E4540020 */ swc1 $f20, 0x20($v0) -/* 008F1C 8000831C E4540024 */ swc1 $f20, 0x24($v0) -/* 008F20 80008320 E4540028 */ swc1 $f20, 0x28($v0) -/* 008F24 80008324 E454002C */ swc1 $f20, 0x2c($v0) -/* 008F28 80008328 24420030 */ addiu $v0, $v0, 0x30 -/* 008F2C 8000832C E454FFD0 */ swc1 $f20, -0x30($v0) -/* 008F30 80008330 E454FFD4 */ swc1 $f20, -0x2c($v0) -/* 008F34 80008334 1470FFF2 */ bne $v1, $s0, .L80008300 -/* 008F38 80008338 E454FFD8 */ swc1 $f20, -0x28($v0) -/* 008F3C 8000833C 26730180 */ addiu $s3, $s3, 0x180 -/* 008F40 80008340 0275082B */ sltu $at, $s3, $s5 -/* 008F44 80008344 26310180 */ addiu $s1, $s1, 0x180 -/* 008F48 80008348 1420FFD2 */ bnez $at, .L80008294 -/* 008F4C 8000834C 26520180 */ addiu $s2, $s2, 0x180 -/* 008F50 80008350 3C058012 */ lui $a1, %hi(D_8011A6D8) # $a1, 0x8012 -/* 008F54 80008354 3C068012 */ lui $a2, %hi(D_8011A6DC) # $a2, 0x8012 -/* 008F58 80008358 3C078012 */ lui $a3, %hi(D_8011A6E0) # $a3, 0x8012 -/* 008F5C 8000835C 3C088012 */ lui $t0, %hi(D_8011AC20) # $t0, 0x8012 -/* 008F60 80008360 44800000 */ mtc1 $zero, $f0 -/* 008F64 80008364 2508AC20 */ addiu $t0, %lo(D_8011AC20) # addiu $t0, $t0, -0x53e0 -/* 008F68 80008368 24E7A6E0 */ addiu $a3, %lo(D_8011A6E0) # addiu $a3, $a3, -0x5920 -/* 008F6C 8000836C 24C6A6DC */ addiu $a2, %lo(D_8011A6DC) # addiu $a2, $a2, -0x5924 -/* 008F70 80008370 24A5A6D8 */ addiu $a1, %lo(D_8011A6D8) # addiu $a1, $a1, -0x5928 -/* 008F74 80008374 2404000F */ li $a0, 15 -.L80008378: -/* 008F78 80008378 A0B400B8 */ sb $s4, 0xb8($a1) -/* 008F7C 8000837C A0A00000 */ sb $zero, ($a1) -/* 008F80 80008380 E4A000BC */ swc1 $f0, 0xbc($a1) -/* 008F84 80008384 E4D40000 */ swc1 $f20, ($a2) -/* 008F88 80008388 00E01025 */ move $v0, $a3 -/* 008F8C 8000838C E4F40000 */ swc1 $f20, ($a3) -/* 008F90 80008390 E454001C */ swc1 $f20, 0x1c($v0) -/* 008F94 80008394 E4540018 */ swc1 $f20, 0x18($v0) -/* 008F98 80008398 E4540014 */ swc1 $f20, 0x14($v0) -/* 008F9C 8000839C E4540010 */ swc1 $f20, 0x10($v0) -/* 008FA0 800083A0 E454000C */ swc1 $f20, 0xc($v0) -/* 008FA4 800083A4 E4540008 */ swc1 $f20, 8($v0) -/* 008FA8 800083A8 E4540004 */ swc1 $f20, 4($v0) -/* 008FAC 800083AC 24420020 */ addiu $v0, $v0, 0x20 -/* 008FB0 800083B0 24030003 */ li $v1, 3 -.L800083B4: -/* 008FB4 800083B4 24630004 */ addiu $v1, $v1, 4 -/* 008FB8 800083B8 E454000C */ swc1 $f20, 0xc($v0) -/* 008FBC 800083BC E4540010 */ swc1 $f20, 0x10($v0) -/* 008FC0 800083C0 E4540014 */ swc1 $f20, 0x14($v0) -/* 008FC4 800083C4 E4540018 */ swc1 $f20, 0x18($v0) -/* 008FC8 800083C8 E454001C */ swc1 $f20, 0x1c($v0) -/* 008FCC 800083CC E4540020 */ swc1 $f20, 0x20($v0) -/* 008FD0 800083D0 E4540024 */ swc1 $f20, 0x24($v0) -/* 008FD4 800083D4 E4540028 */ swc1 $f20, 0x28($v0) -/* 008FD8 800083D8 E454002C */ swc1 $f20, 0x2c($v0) -/* 008FDC 800083DC 24420030 */ addiu $v0, $v0, 0x30 -/* 008FE0 800083E0 E454FFD0 */ swc1 $f20, -0x30($v0) -/* 008FE4 800083E4 E454FFD4 */ swc1 $f20, -0x2c($v0) -/* 008FE8 800083E8 1464FFF2 */ bne $v1, $a0, .L800083B4 -/* 008FEC 800083EC E454FFD8 */ swc1 $f20, -0x28($v0) -/* 008FF0 800083F0 24E700C0 */ addiu $a3, $a3, 0xc0 -/* 008FF4 800083F4 24A500C0 */ addiu $a1, $a1, 0xc0 -/* 008FF8 800083F8 14E8FFDF */ bne $a3, $t0, .L80008378 -/* 008FFC 800083FC 24C600C0 */ addiu $a2, $a2, 0xc0 -/* 009000 80008400 8FBF003C */ lw $ra, 0x3c($sp) -/* 009004 80008404 3C018012 */ lui $at, %hi(D_8011AC18) # $at, 0x8012 -/* 009008 80008408 C7B50018 */ lwc1 $f21, 0x18($sp) -/* 00900C 8000840C C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 009010 80008410 8FB00020 */ lw $s0, 0x20($sp) -/* 009014 80008414 8FB10024 */ lw $s1, 0x24($sp) -/* 009018 80008418 8FB20028 */ lw $s2, 0x28($sp) -/* 00901C 8000841C 8FB3002C */ lw $s3, 0x2c($sp) -/* 009020 80008420 8FB40030 */ lw $s4, 0x30($sp) -/* 009024 80008424 8FB50034 */ lw $s5, 0x34($sp) -/* 009028 80008428 8FB60038 */ lw $s6, 0x38($sp) -/* 00902C 8000842C A020AC18 */ sb $zero, %lo(D_8011AC18)($at) -/* 009030 80008430 03E00008 */ jr $ra -/* 009034 80008434 27BD0040 */ addiu $sp, $sp, 0x40 - +.late_rodata +glabel D_800E4F10 +.float -100000.0 + +.text +glabel func_80008174 +/* 008D74 80008174 27BDFFC0 */ addiu $sp, $sp, -0x40 +/* 008D78 80008178 3C038012 */ lui $v1, %hi(D_80119C4C) # $v1, 0x8012 +/* 008D7C 8000817C 3C048012 */ lui $a0, %hi(D_80119C48) # $a0, 0x8012 +/* 008D80 80008180 300200FF */ andi $v0, $zero, 0xff +/* 008D84 80008184 24639C4C */ addiu $v1, %lo(D_80119C4C) # addiu $v1, $v1, -0x63b4 +/* 008D88 80008188 8C849C48 */ lw $a0, %lo(D_80119C48)($a0) +/* 008D8C 8000818C 28410028 */ slti $at, $v0, 0x28 +/* 008D90 80008190 AFBF003C */ sw $ra, 0x3c($sp) +/* 008D94 80008194 AFB60038 */ sw $s6, 0x38($sp) +/* 008D98 80008198 AFB50034 */ sw $s5, 0x34($sp) +/* 008D9C 8000819C AFB40030 */ sw $s4, 0x30($sp) +/* 008DA0 800081A0 AFB3002C */ sw $s3, 0x2c($sp) +/* 008DA4 800081A4 AFB20028 */ sw $s2, 0x28($sp) +/* 008DA8 800081A8 AFB10024 */ sw $s1, 0x24($sp) +/* 008DAC 800081AC AFB00020 */ sw $s0, 0x20($sp) +/* 008DB0 800081B0 E7B50018 */ swc1 $f21, 0x18($sp) +/* 008DB4 800081B4 E7B4001C */ swc1 $f20, 0x1c($sp) +/* 008DB8 800081B8 1020000E */ beqz $at, .L800081F4 +/* 008DBC 800081BC A0600000 */ sb $zero, ($v1) +/* 008DC0 800081C0 3C058012 */ lui $a1, %hi(D_80119C50) # $a1, 0x8012 +/* 008DC4 800081C4 24A59C50 */ addiu $a1, %lo(D_80119C50) # addiu $a1, $a1, -0x63b0 +.L800081C8: +/* 008DC8 800081C8 8CAE0000 */ lw $t6, ($a1) +/* 008DCC 800081CC 00027880 */ sll $t7, $v0, 2 +/* 008DD0 800081D0 01CFC021 */ addu $t8, $t6, $t7 +/* 008DD4 800081D4 AF040000 */ sw $a0, ($t8) +/* 008DD8 800081D8 90790000 */ lbu $t9, ($v1) +/* 008DDC 800081DC 24840024 */ addiu $a0, $a0, 0x24 +/* 008DE0 800081E0 27290001 */ addiu $t1, $t9, 1 +/* 008DE4 800081E4 312200FF */ andi $v0, $t1, 0xff +/* 008DE8 800081E8 28410028 */ slti $at, $v0, 0x28 +/* 008DEC 800081EC 1420FFF6 */ bnez $at, .L800081C8 +/* 008DF0 800081F0 A0690000 */ sb $t1, ($v1) +.L800081F4: +/* 008DF4 800081F4 3C14800E */ lui $s4, %hi(D_800DC6E0) # $s4, 0x800e +/* 008DF8 800081F8 2694C6E0 */ addiu $s4, %lo(D_800DC6E0) # addiu $s4, $s4, -0x3920 +/* 008DFC 800081FC 968B0000 */ lhu $t3, ($s4) +/* 008E00 80008200 244AFFFF */ addiu $t2, $v0, -1 +/* 008E04 80008204 A06A0000 */ sb $t2, ($v1) +/* 008E08 80008208 19600014 */ blez $t3, .L8000825C +/* 008E0C 8000820C 00008825 */ move $s1, $zero +/* 008E10 80008210 3C128012 */ lui $s2, %hi(D_80119C44) # $s2, 0x8012 +/* 008E14 80008214 26529C44 */ addiu $s2, %lo(D_80119C44) # addiu $s2, $s2, -0x63bc +/* 008E18 80008218 00008025 */ move $s0, $zero +.L8000821C: +/* 008E1C 8000821C 8E4C0000 */ lw $t4, ($s2) +/* 008E20 80008220 00000000 */ nop +/* 008E24 80008224 01906821 */ addu $t5, $t4, $s0 +/* 008E28 80008228 8DA20000 */ lw $v0, ($t5) +/* 008E2C 8000822C 00000000 */ nop +/* 008E30 80008230 8C440018 */ lw $a0, 0x18($v0) +/* 008E34 80008234 A0400012 */ sb $zero, 0x12($v0) +/* 008E38 80008238 10800003 */ beqz $a0, .L80008248 +/* 008E3C 8000823C 00000000 */ nop +/* 008E40 80008240 0C001223 */ jal func_8000488C +/* 008E44 80008244 00000000 */ nop +.L80008248: +/* 008E48 80008248 968E0000 */ lhu $t6, ($s4) +/* 008E4C 8000824C 26310001 */ addiu $s1, $s1, 1 +/* 008E50 80008250 022E082A */ slt $at, $s1, $t6 +/* 008E54 80008254 1420FFF1 */ bnez $at, .L8000821C +/* 008E58 80008258 26100004 */ addiu $s0, $s0, 4 +.L8000825C: +/* 008E5C 8000825C A6800000 */ sh $zero, ($s4) +/* 008E60 80008260 3C01800E */ lui $at, %hi(D_800E4F10) # $at, 0x800e +/* 008E64 80008264 3C118012 */ lui $s1, %hi(D_80119C58) # $s1, 0x8012 +/* 008E68 80008268 3C128012 */ lui $s2, %hi(D_80119C5C) # $s2, 0x8012 +/* 008E6C 8000826C 3C138012 */ lui $s3, %hi(D_80119C60) # $s3, 0x8012 +/* 008E70 80008270 3C158012 */ lui $s5, %hi(D_8011A6E0) # $s5, 0x8012 +/* 008E74 80008274 C4344F10 */ lwc1 $f20, %lo(D_800E4F10)($at) +/* 008E78 80008278 26B5A6E0 */ addiu $s5, %lo(D_8011A6E0) # addiu $s5, $s5, -0x5920 +/* 008E7C 8000827C 26739C60 */ addiu $s3, %lo(D_80119C60) # addiu $s3, $s3, -0x63a0 +/* 008E80 80008280 26529C5C */ addiu $s2, %lo(D_80119C5C) # addiu $s2, $s2, -0x63a4 +/* 008E84 80008284 26319C58 */ addiu $s1, %lo(D_80119C58) # addiu $s1, $s1, -0x63a8 +/* 008E88 80008288 2414FFFF */ li $s4, -1 +/* 008E8C 8000828C 24160001 */ li $s6, 1 +/* 008E90 80008290 2410001E */ li $s0, 30 +.L80008294: +/* 008E94 80008294 8E240178 */ lw $a0, 0x178($s1) +/* 008E98 80008298 AE20016C */ sw $zero, 0x16c($s1) +/* 008E9C 8000829C 1080000E */ beqz $a0, .L800082D8 +/* 008EA0 800082A0 00000000 */ nop +/* 008EA4 800082A4 92220000 */ lbu $v0, ($s1) +/* 008EA8 800082A8 00000000 */ nop +/* 008EAC 800082AC 14400005 */ bnez $v0, .L800082C4 +/* 008EB0 800082B0 00000000 */ nop +/* 008EB4 800082B4 0C001223 */ jal func_8000488C +/* 008EB8 800082B8 00000000 */ nop +/* 008EBC 800082BC 10000006 */ b .L800082D8 +/* 008EC0 800082C0 AE200178 */ sw $zero, 0x178($s1) +.L800082C4: +/* 008EC4 800082C4 16C20003 */ bne $s6, $v0, .L800082D4 +/* 008EC8 800082C8 00000000 */ nop +/* 008ECC 800082CC 0C000638 */ jal func_800018E0 +/* 008ED0 800082D0 00000000 */ nop +.L800082D4: +/* 008ED4 800082D4 AE200178 */ sw $zero, 0x178($s1) +.L800082D8: +/* 008ED8 800082D8 A234017C */ sb $s4, 0x17c($s1) +/* 008EDC 800082DC E6540000 */ swc1 $f20, ($s2) +/* 008EE0 800082E0 02601025 */ move $v0, $s3 +/* 008EE4 800082E4 E6740000 */ swc1 $f20, ($s3) +/* 008EE8 800082E8 E4540010 */ swc1 $f20, 0x10($v0) +/* 008EEC 800082EC E454000C */ swc1 $f20, 0xc($v0) +/* 008EF0 800082F0 E4540008 */ swc1 $f20, 8($v0) +/* 008EF4 800082F4 E4540004 */ swc1 $f20, 4($v0) +/* 008EF8 800082F8 24420014 */ addiu $v0, $v0, 0x14 +/* 008EFC 800082FC 24030002 */ li $v1, 2 +.L80008300: +/* 008F00 80008300 24630004 */ addiu $v1, $v1, 4 +/* 008F04 80008304 E454000C */ swc1 $f20, 0xc($v0) +/* 008F08 80008308 E4540010 */ swc1 $f20, 0x10($v0) +/* 008F0C 8000830C E4540014 */ swc1 $f20, 0x14($v0) +/* 008F10 80008310 E4540018 */ swc1 $f20, 0x18($v0) +/* 008F14 80008314 E454001C */ swc1 $f20, 0x1c($v0) +/* 008F18 80008318 E4540020 */ swc1 $f20, 0x20($v0) +/* 008F1C 8000831C E4540024 */ swc1 $f20, 0x24($v0) +/* 008F20 80008320 E4540028 */ swc1 $f20, 0x28($v0) +/* 008F24 80008324 E454002C */ swc1 $f20, 0x2c($v0) +/* 008F28 80008328 24420030 */ addiu $v0, $v0, 0x30 +/* 008F2C 8000832C E454FFD0 */ swc1 $f20, -0x30($v0) +/* 008F30 80008330 E454FFD4 */ swc1 $f20, -0x2c($v0) +/* 008F34 80008334 1470FFF2 */ bne $v1, $s0, .L80008300 +/* 008F38 80008338 E454FFD8 */ swc1 $f20, -0x28($v0) +/* 008F3C 8000833C 26730180 */ addiu $s3, $s3, 0x180 +/* 008F40 80008340 0275082B */ sltu $at, $s3, $s5 +/* 008F44 80008344 26310180 */ addiu $s1, $s1, 0x180 +/* 008F48 80008348 1420FFD2 */ bnez $at, .L80008294 +/* 008F4C 8000834C 26520180 */ addiu $s2, $s2, 0x180 +/* 008F50 80008350 3C058012 */ lui $a1, %hi(D_8011A6D8) # $a1, 0x8012 +/* 008F54 80008354 3C068012 */ lui $a2, %hi(D_8011A6DC) # $a2, 0x8012 +/* 008F58 80008358 3C078012 */ lui $a3, %hi(D_8011A6E0) # $a3, 0x8012 +/* 008F5C 8000835C 3C088012 */ lui $t0, %hi(D_8011AC20) # $t0, 0x8012 +/* 008F60 80008360 44800000 */ mtc1 $zero, $f0 +/* 008F64 80008364 2508AC20 */ addiu $t0, %lo(D_8011AC20) # addiu $t0, $t0, -0x53e0 +/* 008F68 80008368 24E7A6E0 */ addiu $a3, %lo(D_8011A6E0) # addiu $a3, $a3, -0x5920 +/* 008F6C 8000836C 24C6A6DC */ addiu $a2, %lo(D_8011A6DC) # addiu $a2, $a2, -0x5924 +/* 008F70 80008370 24A5A6D8 */ addiu $a1, %lo(D_8011A6D8) # addiu $a1, $a1, -0x5928 +/* 008F74 80008374 2404000F */ li $a0, 15 +.L80008378: +/* 008F78 80008378 A0B400B8 */ sb $s4, 0xb8($a1) +/* 008F7C 8000837C A0A00000 */ sb $zero, ($a1) +/* 008F80 80008380 E4A000BC */ swc1 $f0, 0xbc($a1) +/* 008F84 80008384 E4D40000 */ swc1 $f20, ($a2) +/* 008F88 80008388 00E01025 */ move $v0, $a3 +/* 008F8C 8000838C E4F40000 */ swc1 $f20, ($a3) +/* 008F90 80008390 E454001C */ swc1 $f20, 0x1c($v0) +/* 008F94 80008394 E4540018 */ swc1 $f20, 0x18($v0) +/* 008F98 80008398 E4540014 */ swc1 $f20, 0x14($v0) +/* 008F9C 8000839C E4540010 */ swc1 $f20, 0x10($v0) +/* 008FA0 800083A0 E454000C */ swc1 $f20, 0xc($v0) +/* 008FA4 800083A4 E4540008 */ swc1 $f20, 8($v0) +/* 008FA8 800083A8 E4540004 */ swc1 $f20, 4($v0) +/* 008FAC 800083AC 24420020 */ addiu $v0, $v0, 0x20 +/* 008FB0 800083B0 24030003 */ li $v1, 3 +.L800083B4: +/* 008FB4 800083B4 24630004 */ addiu $v1, $v1, 4 +/* 008FB8 800083B8 E454000C */ swc1 $f20, 0xc($v0) +/* 008FBC 800083BC E4540010 */ swc1 $f20, 0x10($v0) +/* 008FC0 800083C0 E4540014 */ swc1 $f20, 0x14($v0) +/* 008FC4 800083C4 E4540018 */ swc1 $f20, 0x18($v0) +/* 008FC8 800083C8 E454001C */ swc1 $f20, 0x1c($v0) +/* 008FCC 800083CC E4540020 */ swc1 $f20, 0x20($v0) +/* 008FD0 800083D0 E4540024 */ swc1 $f20, 0x24($v0) +/* 008FD4 800083D4 E4540028 */ swc1 $f20, 0x28($v0) +/* 008FD8 800083D8 E454002C */ swc1 $f20, 0x2c($v0) +/* 008FDC 800083DC 24420030 */ addiu $v0, $v0, 0x30 +/* 008FE0 800083E0 E454FFD0 */ swc1 $f20, -0x30($v0) +/* 008FE4 800083E4 E454FFD4 */ swc1 $f20, -0x2c($v0) +/* 008FE8 800083E8 1464FFF2 */ bne $v1, $a0, .L800083B4 +/* 008FEC 800083EC E454FFD8 */ swc1 $f20, -0x28($v0) +/* 008FF0 800083F0 24E700C0 */ addiu $a3, $a3, 0xc0 +/* 008FF4 800083F4 24A500C0 */ addiu $a1, $a1, 0xc0 +/* 008FF8 800083F8 14E8FFDF */ bne $a3, $t0, .L80008378 +/* 008FFC 800083FC 24C600C0 */ addiu $a2, $a2, 0xc0 +/* 009000 80008400 8FBF003C */ lw $ra, 0x3c($sp) +/* 009004 80008404 3C018012 */ lui $at, %hi(D_8011AC18) # $at, 0x8012 +/* 009008 80008408 C7B50018 */ lwc1 $f21, 0x18($sp) +/* 00900C 8000840C C7B4001C */ lwc1 $f20, 0x1c($sp) +/* 009010 80008410 8FB00020 */ lw $s0, 0x20($sp) +/* 009014 80008414 8FB10024 */ lw $s1, 0x24($sp) +/* 009018 80008418 8FB20028 */ lw $s2, 0x28($sp) +/* 00901C 8000841C 8FB3002C */ lw $s3, 0x2c($sp) +/* 009020 80008420 8FB40030 */ lw $s4, 0x30($sp) +/* 009024 80008424 8FB50034 */ lw $s5, 0x34($sp) +/* 009028 80008428 8FB60038 */ lw $s6, 0x38($sp) +/* 00902C 8000842C A020AC18 */ sb $zero, %lo(D_8011AC18)($at) +/* 009030 80008430 03E00008 */ jr $ra +/* 009034 80008434 27BD0040 */ addiu $sp, $sp, 0x40 + diff --git a/asm/non_matchings/unknown_008C40/func_80008438.s b/asm/non_matchings/audio_spatial/func_80008438.s similarity index 100% rename from asm/non_matchings/unknown_008C40/func_80008438.s rename to asm/non_matchings/audio_spatial/func_80008438.s diff --git a/asm/non_matchings/unknown_008C40/func_80009968.s b/asm/non_matchings/audio_spatial/func_80009968.s similarity index 97% rename from asm/non_matchings/unknown_008C40/func_80009968.s rename to asm/non_matchings/audio_spatial/func_80009968.s index 471160ed..f2adb4f2 100644 --- a/asm/non_matchings/unknown_008C40/func_80009968.s +++ b/asm/non_matchings/audio_spatial/func_80009968.s @@ -1,37 +1,37 @@ -glabel func_80009968 -/* 00A568 80009968 93A40013 */ lbu $a0, 0x13($sp) -/* 00A56C 8000996C AFA60008 */ sw $a2, 8($sp) -/* 00A570 80009970 28810007 */ slti $at, $a0, 7 -/* 00A574 80009974 AFA7000C */ sw $a3, 0xc($sp) -/* 00A578 80009978 1020001A */ beqz $at, .L800099E4 -/* 00A57C 8000997C 30EE00FF */ andi $t6, $a3, 0xff -/* 00A580 80009980 93A20017 */ lbu $v0, 0x17($sp) -/* 00A584 80009984 00047880 */ sll $t7, $a0, 2 -/* 00A588 80009988 2841000F */ slti $at, $v0, 0xf -/* 00A58C 8000998C 10200015 */ beqz $at, .L800099E4 -/* 00A590 80009990 01E47823 */ subu $t7, $t7, $a0 -/* 00A594 80009994 3C188012 */ lui $t8, %hi(D_8011A6D8) # $t8, 0x8012 -/* 00A598 80009998 0002C880 */ sll $t9, $v0, 2 -/* 00A59C 8000999C 0322C823 */ subu $t9, $t9, $v0 -/* 00A5A0 800099A0 2718A6D8 */ addiu $t8, %lo(D_8011A6D8) # addiu $t8, $t8, -0x5928 -/* 00A5A4 800099A4 000F7980 */ sll $t7, $t7, 6 -/* 00A5A8 800099A8 01F81821 */ addu $v1, $t7, $t8 -/* 00A5AC 800099AC 00194080 */ sll $t0, $t9, 2 -/* 00A5B0 800099B0 C7A40008 */ lwc1 $f4, 8($sp) -/* 00A5B4 800099B4 00682821 */ addu $a1, $v1, $t0 -/* 00A5B8 800099B8 E4AC0004 */ swc1 $f12, 4($a1) -/* 00A5BC 800099BC E4AE0008 */ swc1 $f14, 8($a1) -/* 00A5C0 800099C0 14400002 */ bnez $v0, .L800099CC -/* 00A5C4 800099C4 E4A4000C */ swc1 $f4, 0xc($a1) -/* 00A5C8 800099C8 A06E0000 */ sb $t6, ($v1) -.L800099CC: -/* 00A5CC 800099CC 806900B8 */ lb $t1, 0xb8($v1) -/* 00A5D0 800099D0 00000000 */ nop -/* 00A5D4 800099D4 0122082A */ slt $at, $t1, $v0 -/* 00A5D8 800099D8 10200002 */ beqz $at, .L800099E4 -/* 00A5DC 800099DC 00000000 */ nop -/* 00A5E0 800099E0 A06200B8 */ sb $v0, 0xb8($v1) -.L800099E4: -/* 00A5E4 800099E4 03E00008 */ jr $ra -/* 00A5E8 800099E8 00000000 */ nop - +glabel func_80009968 +/* 00A568 80009968 93A40013 */ lbu $a0, 0x13($sp) +/* 00A56C 8000996C AFA60008 */ sw $a2, 8($sp) +/* 00A570 80009970 28810007 */ slti $at, $a0, 7 +/* 00A574 80009974 AFA7000C */ sw $a3, 0xc($sp) +/* 00A578 80009978 1020001A */ beqz $at, .L800099E4 +/* 00A57C 8000997C 30EE00FF */ andi $t6, $a3, 0xff +/* 00A580 80009980 93A20017 */ lbu $v0, 0x17($sp) +/* 00A584 80009984 00047880 */ sll $t7, $a0, 2 +/* 00A588 80009988 2841000F */ slti $at, $v0, 0xf +/* 00A58C 8000998C 10200015 */ beqz $at, .L800099E4 +/* 00A590 80009990 01E47823 */ subu $t7, $t7, $a0 +/* 00A594 80009994 3C188012 */ lui $t8, %hi(D_8011A6D8) # $t8, 0x8012 +/* 00A598 80009998 0002C880 */ sll $t9, $v0, 2 +/* 00A59C 8000999C 0322C823 */ subu $t9, $t9, $v0 +/* 00A5A0 800099A0 2718A6D8 */ addiu $t8, %lo(D_8011A6D8) # addiu $t8, $t8, -0x5928 +/* 00A5A4 800099A4 000F7980 */ sll $t7, $t7, 6 +/* 00A5A8 800099A8 01F81821 */ addu $v1, $t7, $t8 +/* 00A5AC 800099AC 00194080 */ sll $t0, $t9, 2 +/* 00A5B0 800099B0 C7A40008 */ lwc1 $f4, 8($sp) +/* 00A5B4 800099B4 00682821 */ addu $a1, $v1, $t0 +/* 00A5B8 800099B8 E4AC0004 */ swc1 $f12, 4($a1) +/* 00A5BC 800099BC E4AE0008 */ swc1 $f14, 8($a1) +/* 00A5C0 800099C0 14400002 */ bnez $v0, .L800099CC +/* 00A5C4 800099C4 E4A4000C */ swc1 $f4, 0xc($a1) +/* 00A5C8 800099C8 A06E0000 */ sb $t6, ($v1) +.L800099CC: +/* 00A5CC 800099CC 806900B8 */ lb $t1, 0xb8($v1) +/* 00A5D0 800099D0 00000000 */ nop +/* 00A5D4 800099D4 0122082A */ slt $at, $t1, $v0 +/* 00A5D8 800099D8 10200002 */ beqz $at, .L800099E4 +/* 00A5DC 800099DC 00000000 */ nop +/* 00A5E0 800099E0 A06200B8 */ sb $v0, 0xb8($v1) +.L800099E4: +/* 00A5E4 800099E4 03E00008 */ jr $ra +/* 00A5E8 800099E8 00000000 */ nop + diff --git a/asm/non_matchings/unknown_008C40/func_80009B7C.s b/asm/non_matchings/audio_spatial/func_80009B7C.s similarity index 98% rename from asm/non_matchings/unknown_008C40/func_80009B7C.s rename to asm/non_matchings/audio_spatial/func_80009B7C.s index eafb1078..11538ecf 100644 --- a/asm/non_matchings/unknown_008C40/func_80009B7C.s +++ b/asm/non_matchings/audio_spatial/func_80009B7C.s @@ -1,134 +1,134 @@ -glabel func_80009B7C -/* 00A77C 80009B7C 27BDFF28 */ addiu $sp, $sp, -0xd8 -/* 00A780 80009B80 E7B8003C */ swc1 $f24, 0x3c($sp) -/* 00A784 80009B84 E7B4002C */ swc1 $f20, 0x2c($sp) -/* 00A788 80009B88 4486A000 */ mtc1 $a2, $f20 -/* 00A78C 80009B8C 4487C000 */ mtc1 $a3, $f24 -/* 00A790 80009B90 E7B60034 */ swc1 $f22, 0x34($sp) -/* 00A794 80009B94 4485B000 */ mtc1 $a1, $f22 -/* 00A798 80009B98 AFBF0064 */ sw $ra, 0x64($sp) -/* 00A79C 80009B9C 4406C000 */ mfc1 $a2, $f24 -/* 00A7A0 80009BA0 AFBE0060 */ sw $fp, 0x60($sp) -/* 00A7A4 80009BA4 AFB7005C */ sw $s7, 0x5c($sp) -/* 00A7A8 80009BA8 AFB60058 */ sw $s6, 0x58($sp) -/* 00A7AC 80009BAC AFB50054 */ sw $s5, 0x54($sp) -/* 00A7B0 80009BB0 AFB40050 */ sw $s4, 0x50($sp) -/* 00A7B4 80009BB4 AFB3004C */ sw $s3, 0x4c($sp) -/* 00A7B8 80009BB8 AFB20048 */ sw $s2, 0x48($sp) -/* 00A7BC 80009BBC AFB10044 */ sw $s1, 0x44($sp) -/* 00A7C0 80009BC0 AFB00040 */ sw $s0, 0x40($sp) -/* 00A7C4 80009BC4 E7B90038 */ swc1 $f25, 0x38($sp) -/* 00A7C8 80009BC8 E7B70030 */ swc1 $f23, 0x30($sp) -/* 00A7CC 80009BCC E7B50028 */ swc1 $f21, 0x28($sp) -/* 00A7D0 80009BD0 AFA400D8 */ sw $a0, 0xd8($sp) -/* 00A7D4 80009BD4 4600A386 */ mov.s $f14, $f20 -/* 00A7D8 80009BD8 0C00A7C6 */ jal get_level_segment_index_from_position -/* 00A7DC 80009BDC 4600B306 */ mov.s $f12, $f22 -/* 00A7E0 80009BE0 3C178012 */ lui $s7, %hi(D_8011A6D8) # $s7, 0x8012 -/* 00A7E4 80009BE4 AFA200B0 */ sw $v0, 0xb0($sp) -/* 00A7E8 80009BE8 0000A825 */ move $s5, $zero -/* 00A7EC 80009BEC 24160190 */ li $s6, 400 -/* 00A7F0 80009BF0 26F7A6D8 */ addiu $s7, %lo(D_8011A6D8) # addiu $s7, $s7, -0x5928 -/* 00A7F4 80009BF4 00001825 */ move $v1, $zero -.L80009BF8: -/* 00A7F8 80009BF8 92EE0000 */ lbu $t6, ($s7) -/* 00A7FC 80009BFC AFB700CC */ sw $s7, 0xcc($sp) -/* 00A800 80009C00 11C0003D */ beqz $t6, .L80009CF8 -/* 00A804 80009C04 AFA300D4 */ sw $v1, 0xd4($sp) -/* 00A808 80009C08 306400FF */ andi $a0, $v1, 0xff -/* 00A80C 80009C0C 0C0026AD */ jal func_80009AB4 -/* 00A810 80009C10 AFA300D4 */ sw $v1, 0xd4($sp) -/* 00A814 80009C14 10400039 */ beqz $v0, .L80009CFC -/* 00A818 80009C18 8FA300D4 */ lw $v1, 0xd4($sp) -/* 00A81C 80009C1C 82EF00B8 */ lb $t7, 0xb8($s7) -/* 00A820 80009C20 26FE0004 */ addiu $fp, $s7, 4 -/* 00A824 80009C24 19E00034 */ blez $t7, .L80009CF8 -/* 00A828 80009C28 AFA000D0 */ sw $zero, 0xd0($sp) -.L80009C2C: -/* 00A82C 80009C2C 4406C000 */ mfc1 $a2, $f24 -/* 00A830 80009C30 27B800C4 */ addiu $t8, $sp, 0xc4 -/* 00A834 80009C34 27B900C0 */ addiu $t9, $sp, 0xc0 -/* 00A838 80009C38 27A800BC */ addiu $t0, $sp, 0xbc -/* 00A83C 80009C3C AFA80018 */ sw $t0, 0x18($sp) -/* 00A840 80009C40 AFB90014 */ sw $t9, 0x14($sp) -/* 00A844 80009C44 AFB80010 */ sw $t8, 0x10($sp) -/* 00A848 80009C48 4600B306 */ mov.s $f12, $f22 -/* 00A84C 80009C4C 4600A386 */ mov.s $f14, $f20 -/* 00A850 80009C50 0C0024AA */ jal func_800092A8 -/* 00A854 80009C54 03C03825 */ move $a3, $fp -/* 00A858 80009C58 0056082A */ slt $at, $v0, $s6 -/* 00A85C 80009C5C 1020001D */ beqz $at, .L80009CD4 -/* 00A860 80009C60 00409825 */ move $s3, $v0 -/* 00A864 80009C64 8FA400B0 */ lw $a0, 0xb0($sp) -/* 00A868 80009C68 4405B000 */ mfc1 $a1, $f22 -/* 00A86C 80009C6C 4406C000 */ mfc1 $a2, $f24 -/* 00A870 80009C70 27A7007C */ addiu $a3, $sp, 0x7c -/* 00A874 80009C74 0C00AEAC */ jal func_8002BAB0 -/* 00A878 80009C78 00001025 */ move $v0, $zero -/* 00A87C 80009C7C 18400015 */ blez $v0, .L80009CD4 -/* 00A880 80009C80 27B0007C */ addiu $s0, $sp, 0x7c -/* 00A884 80009C84 00025080 */ sll $t2, $v0, 2 -/* 00A888 80009C88 0150A021 */ addu $s4, $t2, $s0 -.L80009C8C: -/* 00A88C 80009C8C C6040000 */ lwc1 $f4, ($s0) -/* 00A890 80009C90 8FA500C4 */ lw $a1, 0xc4($sp) -/* 00A894 80009C94 4604A03C */ c.lt.s $f20, $f4 -/* 00A898 80009C98 8FA600C0 */ lw $a2, 0xc0($sp) -/* 00A89C 80009C9C 45000009 */ bc1f .L80009CC4 -/* 00A8A0 80009CA0 02E02025 */ move $a0, $s7 -/* 00A8A4 80009CA4 8FA700BC */ lw $a3, 0xbc($sp) -/* 00A8A8 80009CA8 0260B025 */ move $s6, $s3 -/* 00A8AC 80009CAC 0C00275B */ jal func_80009D6C -/* 00A8B0 80009CB0 02A08825 */ move $s1, $s5 -/* 00A8B4 80009CB4 0222082A */ slt $at, $s1, $v0 -/* 00A8B8 80009CB8 10200002 */ beqz $at, .L80009CC4 -/* 00A8BC 80009CBC 00000000 */ nop -/* 00A8C0 80009CC0 305500FF */ andi $s5, $v0, 0xff -.L80009CC4: -/* 00A8C4 80009CC4 26100004 */ addiu $s0, $s0, 4 -/* 00A8C8 80009CC8 0214082B */ sltu $at, $s0, $s4 -/* 00A8CC 80009CCC 1420FFEF */ bnez $at, .L80009C8C -/* 00A8D0 80009CD0 00000000 */ nop -.L80009CD4: -/* 00A8D4 80009CD4 8FA200D0 */ lw $v0, 0xd0($sp) -/* 00A8D8 80009CD8 8FAB00CC */ lw $t3, 0xcc($sp) -/* 00A8DC 80009CDC 24420001 */ addiu $v0, $v0, 1 -/* 00A8E0 80009CE0 AFA200D0 */ sw $v0, 0xd0($sp) -/* 00A8E4 80009CE4 816C00B8 */ lb $t4, 0xb8($t3) -/* 00A8E8 80009CE8 27DE000C */ addiu $fp, $fp, 0xc -/* 00A8EC 80009CEC 004C082A */ slt $at, $v0, $t4 -/* 00A8F0 80009CF0 1420FFCE */ bnez $at, .L80009C2C -/* 00A8F4 80009CF4 00000000 */ nop -.L80009CF8: -/* 00A8F8 80009CF8 8FA300D4 */ lw $v1, 0xd4($sp) -.L80009CFC: -/* 00A8FC 80009CFC 24010007 */ li $at, 7 -/* 00A900 80009D00 24630001 */ addiu $v1, $v1, 1 -/* 00A904 80009D04 1461FFBC */ bne $v1, $at, .L80009BF8 -/* 00A908 80009D08 26F700C0 */ addiu $s7, $s7, 0xc0 -/* 00A90C 80009D0C 8FA400D8 */ lw $a0, 0xd8($sp) -/* 00A910 80009D10 24050100 */ li $a1, 256 -/* 00A914 80009D14 10800004 */ beqz $a0, .L80009D28 -/* 00A918 80009D18 8FBF0064 */ lw $ra, 0x64($sp) -/* 00A91C 80009D1C 0C00127E */ jal func_800049F8 -/* 00A920 80009D20 02A03025 */ move $a2, $s5 -/* 00A924 80009D24 8FBF0064 */ lw $ra, 0x64($sp) -.L80009D28: -/* 00A928 80009D28 C7B50028 */ lwc1 $f21, 0x28($sp) -/* 00A92C 80009D2C C7B4002C */ lwc1 $f20, 0x2c($sp) -/* 00A930 80009D30 C7B70030 */ lwc1 $f23, 0x30($sp) -/* 00A934 80009D34 C7B60034 */ lwc1 $f22, 0x34($sp) -/* 00A938 80009D38 C7B90038 */ lwc1 $f25, 0x38($sp) -/* 00A93C 80009D3C C7B8003C */ lwc1 $f24, 0x3c($sp) -/* 00A940 80009D40 8FB00040 */ lw $s0, 0x40($sp) -/* 00A944 80009D44 8FB10044 */ lw $s1, 0x44($sp) -/* 00A948 80009D48 8FB20048 */ lw $s2, 0x48($sp) -/* 00A94C 80009D4C 8FB3004C */ lw $s3, 0x4c($sp) -/* 00A950 80009D50 8FB40050 */ lw $s4, 0x50($sp) -/* 00A954 80009D54 8FB50054 */ lw $s5, 0x54($sp) -/* 00A958 80009D58 8FB60058 */ lw $s6, 0x58($sp) -/* 00A95C 80009D5C 8FB7005C */ lw $s7, 0x5c($sp) -/* 00A960 80009D60 8FBE0060 */ lw $fp, 0x60($sp) -/* 00A964 80009D64 03E00008 */ jr $ra -/* 00A968 80009D68 27BD00D8 */ addiu $sp, $sp, 0xd8 - +glabel func_80009B7C +/* 00A77C 80009B7C 27BDFF28 */ addiu $sp, $sp, -0xd8 +/* 00A780 80009B80 E7B8003C */ swc1 $f24, 0x3c($sp) +/* 00A784 80009B84 E7B4002C */ swc1 $f20, 0x2c($sp) +/* 00A788 80009B88 4486A000 */ mtc1 $a2, $f20 +/* 00A78C 80009B8C 4487C000 */ mtc1 $a3, $f24 +/* 00A790 80009B90 E7B60034 */ swc1 $f22, 0x34($sp) +/* 00A794 80009B94 4485B000 */ mtc1 $a1, $f22 +/* 00A798 80009B98 AFBF0064 */ sw $ra, 0x64($sp) +/* 00A79C 80009B9C 4406C000 */ mfc1 $a2, $f24 +/* 00A7A0 80009BA0 AFBE0060 */ sw $fp, 0x60($sp) +/* 00A7A4 80009BA4 AFB7005C */ sw $s7, 0x5c($sp) +/* 00A7A8 80009BA8 AFB60058 */ sw $s6, 0x58($sp) +/* 00A7AC 80009BAC AFB50054 */ sw $s5, 0x54($sp) +/* 00A7B0 80009BB0 AFB40050 */ sw $s4, 0x50($sp) +/* 00A7B4 80009BB4 AFB3004C */ sw $s3, 0x4c($sp) +/* 00A7B8 80009BB8 AFB20048 */ sw $s2, 0x48($sp) +/* 00A7BC 80009BBC AFB10044 */ sw $s1, 0x44($sp) +/* 00A7C0 80009BC0 AFB00040 */ sw $s0, 0x40($sp) +/* 00A7C4 80009BC4 E7B90038 */ swc1 $f25, 0x38($sp) +/* 00A7C8 80009BC8 E7B70030 */ swc1 $f23, 0x30($sp) +/* 00A7CC 80009BCC E7B50028 */ swc1 $f21, 0x28($sp) +/* 00A7D0 80009BD0 AFA400D8 */ sw $a0, 0xd8($sp) +/* 00A7D4 80009BD4 4600A386 */ mov.s $f14, $f20 +/* 00A7D8 80009BD8 0C00A7C6 */ jal get_level_segment_index_from_position +/* 00A7DC 80009BDC 4600B306 */ mov.s $f12, $f22 +/* 00A7E0 80009BE0 3C178012 */ lui $s7, %hi(D_8011A6D8) # $s7, 0x8012 +/* 00A7E4 80009BE4 AFA200B0 */ sw $v0, 0xb0($sp) +/* 00A7E8 80009BE8 0000A825 */ move $s5, $zero +/* 00A7EC 80009BEC 24160190 */ li $s6, 400 +/* 00A7F0 80009BF0 26F7A6D8 */ addiu $s7, %lo(D_8011A6D8) # addiu $s7, $s7, -0x5928 +/* 00A7F4 80009BF4 00001825 */ move $v1, $zero +.L80009BF8: +/* 00A7F8 80009BF8 92EE0000 */ lbu $t6, ($s7) +/* 00A7FC 80009BFC AFB700CC */ sw $s7, 0xcc($sp) +/* 00A800 80009C00 11C0003D */ beqz $t6, .L80009CF8 +/* 00A804 80009C04 AFA300D4 */ sw $v1, 0xd4($sp) +/* 00A808 80009C08 306400FF */ andi $a0, $v1, 0xff +/* 00A80C 80009C0C 0C0026AD */ jal func_80009AB4 +/* 00A810 80009C10 AFA300D4 */ sw $v1, 0xd4($sp) +/* 00A814 80009C14 10400039 */ beqz $v0, .L80009CFC +/* 00A818 80009C18 8FA300D4 */ lw $v1, 0xd4($sp) +/* 00A81C 80009C1C 82EF00B8 */ lb $t7, 0xb8($s7) +/* 00A820 80009C20 26FE0004 */ addiu $fp, $s7, 4 +/* 00A824 80009C24 19E00034 */ blez $t7, .L80009CF8 +/* 00A828 80009C28 AFA000D0 */ sw $zero, 0xd0($sp) +.L80009C2C: +/* 00A82C 80009C2C 4406C000 */ mfc1 $a2, $f24 +/* 00A830 80009C30 27B800C4 */ addiu $t8, $sp, 0xc4 +/* 00A834 80009C34 27B900C0 */ addiu $t9, $sp, 0xc0 +/* 00A838 80009C38 27A800BC */ addiu $t0, $sp, 0xbc +/* 00A83C 80009C3C AFA80018 */ sw $t0, 0x18($sp) +/* 00A840 80009C40 AFB90014 */ sw $t9, 0x14($sp) +/* 00A844 80009C44 AFB80010 */ sw $t8, 0x10($sp) +/* 00A848 80009C48 4600B306 */ mov.s $f12, $f22 +/* 00A84C 80009C4C 4600A386 */ mov.s $f14, $f20 +/* 00A850 80009C50 0C0024AA */ jal func_800092A8 +/* 00A854 80009C54 03C03825 */ move $a3, $fp +/* 00A858 80009C58 0056082A */ slt $at, $v0, $s6 +/* 00A85C 80009C5C 1020001D */ beqz $at, .L80009CD4 +/* 00A860 80009C60 00409825 */ move $s3, $v0 +/* 00A864 80009C64 8FA400B0 */ lw $a0, 0xb0($sp) +/* 00A868 80009C68 4405B000 */ mfc1 $a1, $f22 +/* 00A86C 80009C6C 4406C000 */ mfc1 $a2, $f24 +/* 00A870 80009C70 27A7007C */ addiu $a3, $sp, 0x7c +/* 00A874 80009C74 0C00AEAC */ jal func_8002BAB0 +/* 00A878 80009C78 00001025 */ move $v0, $zero +/* 00A87C 80009C7C 18400015 */ blez $v0, .L80009CD4 +/* 00A880 80009C80 27B0007C */ addiu $s0, $sp, 0x7c +/* 00A884 80009C84 00025080 */ sll $t2, $v0, 2 +/* 00A888 80009C88 0150A021 */ addu $s4, $t2, $s0 +.L80009C8C: +/* 00A88C 80009C8C C6040000 */ lwc1 $f4, ($s0) +/* 00A890 80009C90 8FA500C4 */ lw $a1, 0xc4($sp) +/* 00A894 80009C94 4604A03C */ c.lt.s $f20, $f4 +/* 00A898 80009C98 8FA600C0 */ lw $a2, 0xc0($sp) +/* 00A89C 80009C9C 45000009 */ bc1f .L80009CC4 +/* 00A8A0 80009CA0 02E02025 */ move $a0, $s7 +/* 00A8A4 80009CA4 8FA700BC */ lw $a3, 0xbc($sp) +/* 00A8A8 80009CA8 0260B025 */ move $s6, $s3 +/* 00A8AC 80009CAC 0C00275B */ jal func_80009D6C +/* 00A8B0 80009CB0 02A08825 */ move $s1, $s5 +/* 00A8B4 80009CB4 0222082A */ slt $at, $s1, $v0 +/* 00A8B8 80009CB8 10200002 */ beqz $at, .L80009CC4 +/* 00A8BC 80009CBC 00000000 */ nop +/* 00A8C0 80009CC0 305500FF */ andi $s5, $v0, 0xff +.L80009CC4: +/* 00A8C4 80009CC4 26100004 */ addiu $s0, $s0, 4 +/* 00A8C8 80009CC8 0214082B */ sltu $at, $s0, $s4 +/* 00A8CC 80009CCC 1420FFEF */ bnez $at, .L80009C8C +/* 00A8D0 80009CD0 00000000 */ nop +.L80009CD4: +/* 00A8D4 80009CD4 8FA200D0 */ lw $v0, 0xd0($sp) +/* 00A8D8 80009CD8 8FAB00CC */ lw $t3, 0xcc($sp) +/* 00A8DC 80009CDC 24420001 */ addiu $v0, $v0, 1 +/* 00A8E0 80009CE0 AFA200D0 */ sw $v0, 0xd0($sp) +/* 00A8E4 80009CE4 816C00B8 */ lb $t4, 0xb8($t3) +/* 00A8E8 80009CE8 27DE000C */ addiu $fp, $fp, 0xc +/* 00A8EC 80009CEC 004C082A */ slt $at, $v0, $t4 +/* 00A8F0 80009CF0 1420FFCE */ bnez $at, .L80009C2C +/* 00A8F4 80009CF4 00000000 */ nop +.L80009CF8: +/* 00A8F8 80009CF8 8FA300D4 */ lw $v1, 0xd4($sp) +.L80009CFC: +/* 00A8FC 80009CFC 24010007 */ li $at, 7 +/* 00A900 80009D00 24630001 */ addiu $v1, $v1, 1 +/* 00A904 80009D04 1461FFBC */ bne $v1, $at, .L80009BF8 +/* 00A908 80009D08 26F700C0 */ addiu $s7, $s7, 0xc0 +/* 00A90C 80009D0C 8FA400D8 */ lw $a0, 0xd8($sp) +/* 00A910 80009D10 24050100 */ li $a1, 256 +/* 00A914 80009D14 10800004 */ beqz $a0, .L80009D28 +/* 00A918 80009D18 8FBF0064 */ lw $ra, 0x64($sp) +/* 00A91C 80009D1C 0C00127E */ jal func_800049F8 +/* 00A920 80009D20 02A03025 */ move $a2, $s5 +/* 00A924 80009D24 8FBF0064 */ lw $ra, 0x64($sp) +.L80009D28: +/* 00A928 80009D28 C7B50028 */ lwc1 $f21, 0x28($sp) +/* 00A92C 80009D2C C7B4002C */ lwc1 $f20, 0x2c($sp) +/* 00A930 80009D30 C7B70030 */ lwc1 $f23, 0x30($sp) +/* 00A934 80009D34 C7B60034 */ lwc1 $f22, 0x34($sp) +/* 00A938 80009D38 C7B90038 */ lwc1 $f25, 0x38($sp) +/* 00A93C 80009D3C C7B8003C */ lwc1 $f24, 0x3c($sp) +/* 00A940 80009D40 8FB00040 */ lw $s0, 0x40($sp) +/* 00A944 80009D44 8FB10044 */ lw $s1, 0x44($sp) +/* 00A948 80009D48 8FB20048 */ lw $s2, 0x48($sp) +/* 00A94C 80009D4C 8FB3004C */ lw $s3, 0x4c($sp) +/* 00A950 80009D50 8FB40050 */ lw $s4, 0x50($sp) +/* 00A954 80009D54 8FB50054 */ lw $s5, 0x54($sp) +/* 00A958 80009D58 8FB60058 */ lw $s6, 0x58($sp) +/* 00A95C 80009D5C 8FB7005C */ lw $s7, 0x5c($sp) +/* 00A960 80009D60 8FBE0060 */ lw $fp, 0x60($sp) +/* 00A964 80009D64 03E00008 */ jr $ra +/* 00A968 80009D68 27BD00D8 */ addiu $sp, $sp, 0xd8 + diff --git a/asm/non_matchings/unknown_008C40/func_80009D6C.s b/asm/non_matchings/audio_spatial/func_80009D6C.s similarity index 97% rename from asm/non_matchings/unknown_008C40/func_80009D6C.s rename to asm/non_matchings/audio_spatial/func_80009D6C.s index b3f58503..b4963c4f 100644 --- a/asm/non_matchings/unknown_008C40/func_80009D6C.s +++ b/asm/non_matchings/audio_spatial/func_80009D6C.s @@ -1,287 +1,287 @@ -glabel func_80009D6C -/* 00A96C 80009D6C 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 00A970 80009D70 E7B80024 */ swc1 $f24, 0x24($sp) -/* 00A974 80009D74 AFBF004C */ sw $ra, 0x4c($sp) -/* 00A978 80009D78 AFB10048 */ sw $s1, 0x48($sp) -/* 00A97C 80009D7C AFB00044 */ sw $s0, 0x44($sp) -/* 00A980 80009D80 E7BF0038 */ swc1 $f31, 0x38($sp) -/* 00A984 80009D84 E7BE003C */ swc1 $f30, 0x3c($sp) -/* 00A988 80009D88 E7BD0030 */ swc1 $f29, 0x30($sp) -/* 00A98C 80009D8C E7BC0034 */ swc1 $f28, 0x34($sp) -/* 00A990 80009D90 E7BB0028 */ swc1 $f27, 0x28($sp) -/* 00A994 80009D94 E7BA002C */ swc1 $f26, 0x2c($sp) -/* 00A998 80009D98 E7B90020 */ swc1 $f25, 0x20($sp) -/* 00A99C 80009D9C E7B70018 */ swc1 $f23, 0x18($sp) -/* 00A9A0 80009DA0 E7B6001C */ swc1 $f22, 0x1c($sp) -/* 00A9A4 80009DA4 E7B50010 */ swc1 $f21, 0x10($sp) -/* 00A9A8 80009DA8 E7B40014 */ swc1 $f20, 0x14($sp) -/* 00A9AC 80009DAC AFA5009C */ sw $a1, 0x9c($sp) -/* 00A9B0 80009DB0 AFA600A0 */ sw $a2, 0xa0($sp) -/* 00A9B4 80009DB4 AFA700A4 */ sw $a3, 0xa4($sp) -/* 00A9B8 80009DB8 4480C000 */ mtc1 $zero, $f24 -/* 00A9BC 80009DBC C48400BC */ lwc1 $f4, 0xbc($a0) -/* 00A9C0 80009DC0 00808825 */ move $s1, $a0 -/* 00A9C4 80009DC4 4604C032 */ c.eq.s $f24, $f4 -/* 00A9C8 80009DC8 00000000 */ nop -/* 00A9CC 80009DCC 45000028 */ bc1f .L80009E70 -/* 00A9D0 80009DD0 26300004 */ addiu $s0, $s1, 4 -/* 00A9D4 80009DD4 808E00B8 */ lb $t6, 0xb8($a0) -/* 00A9D8 80009DD8 24900004 */ addiu $s0, $a0, 4 -/* 00A9DC 80009DDC 448E3000 */ mtc1 $t6, $f6 -/* 00A9E0 80009DE0 4600C506 */ mov.s $f20, $f24 -/* 00A9E4 80009DE4 46803220 */ cvt.s.w $f8, $f6 -/* 00A9E8 80009DE8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00A9EC 80009DEC 4608C03C */ c.lt.s $f24, $f8 -/* 00A9F0 80009DF0 00000000 */ nop -/* 00A9F4 80009DF4 4500001D */ bc1f .L80009E6C -/* 00A9F8 80009DF8 00000000 */ nop -/* 00A9FC 80009DFC 4481B000 */ mtc1 $at, $f22 -/* 00AA00 80009E00 00000000 */ nop -.L80009E04: -/* 00AA04 80009E04 C60A000C */ lwc1 $f10, 0xc($s0) -/* 00AA08 80009E08 C6040000 */ lwc1 $f4, ($s0) -/* 00AA0C 80009E0C C6060010 */ lwc1 $f6, 0x10($s0) -/* 00AA10 80009E10 C6080004 */ lwc1 $f8, 4($s0) -/* 00AA14 80009E14 46045001 */ sub.s $f0, $f10, $f4 -/* 00AA18 80009E18 C6040008 */ lwc1 $f4, 8($s0) -/* 00AA1C 80009E1C 46083081 */ sub.s $f2, $f6, $f8 -/* 00AA20 80009E20 C60A0014 */ lwc1 $f10, 0x14($s0) -/* 00AA24 80009E24 46000182 */ mul.s $f6, $f0, $f0 -/* 00AA28 80009E28 46045381 */ sub.s $f14, $f10, $f4 -/* 00AA2C 80009E2C 46021202 */ mul.s $f8, $f2, $f2 -/* 00AA30 80009E30 00000000 */ nop -/* 00AA34 80009E34 460E7102 */ mul.s $f4, $f14, $f14 -/* 00AA38 80009E38 46083280 */ add.s $f10, $f6, $f8 -/* 00AA3C 80009E3C 0C0326B4 */ jal sqrtf -/* 00AA40 80009E40 46045300 */ add.s $f12, $f10, $f4 -/* 00AA44 80009E44 822F00B8 */ lb $t7, 0xb8($s1) -/* 00AA48 80009E48 4616A500 */ add.s $f20, $f20, $f22 -/* 00AA4C 80009E4C 448F5000 */ mtc1 $t7, $f10 -/* 00AA50 80009E50 C62600BC */ lwc1 $f6, 0xbc($s1) -/* 00AA54 80009E54 46805120 */ cvt.s.w $f4, $f10 -/* 00AA58 80009E58 2610000C */ addiu $s0, $s0, 0xc -/* 00AA5C 80009E5C 4604A03C */ c.lt.s $f20, $f4 -/* 00AA60 80009E60 46003200 */ add.s $f8, $f6, $f0 -/* 00AA64 80009E64 4501FFE7 */ bc1t .L80009E04 -/* 00AA68 80009E68 E62800BC */ swc1 $f8, 0xbc($s1) -.L80009E6C: -/* 00AA6C 80009E6C 26300004 */ addiu $s0, $s1, 4 -.L80009E70: -/* 00AA70 80009E70 4600C406 */ mov.s $f16, $f24 -/* 00AA74 80009E74 00001025 */ move $v0, $zero -.L80009E78: -/* 00AA78 80009E78 C6160000 */ lwc1 $f22, ($s0) -/* 00AA7C 80009E7C C614000C */ lwc1 $f20, 0xc($s0) -/* 00AA80 80009E80 C61E0004 */ lwc1 $f30, 4($s0) -/* 00AA84 80009E84 4616A601 */ sub.s $f24, $f20, $f22 -/* 00AA88 80009E88 C6000010 */ lwc1 $f0, 0x10($s0) -/* 00AA8C 80009E8C 4618C182 */ mul.s $f6, $f24, $f24 -/* 00AA90 80009E90 461E0681 */ sub.s $f26, $f0, $f30 -/* 00AA94 80009E94 C6120008 */ lwc1 $f18, 8($s0) -/* 00AA98 80009E98 C6020014 */ lwc1 $f2, 0x14($s0) -/* 00AA9C 80009E9C 461AD202 */ mul.s $f8, $f26, $f26 -/* 00AAA0 80009EA0 46121701 */ sub.s $f28, $f2, $f18 -/* 00AAA4 80009EA4 E7B0005C */ swc1 $f16, 0x5c($sp) -/* 00AAA8 80009EA8 A3A20057 */ sb $v0, 0x57($sp) -/* 00AAAC 80009EAC 461CE102 */ mul.s $f4, $f28, $f28 -/* 00AAB0 80009EB0 46083280 */ add.s $f10, $f6, $f8 -/* 00AAB4 80009EB4 E7B2007C */ swc1 $f18, 0x7c($sp) -/* 00AAB8 80009EB8 0C0326B4 */ jal sqrtf -/* 00AABC 80009EBC 46045300 */ add.s $f12, $f10, $f4 -/* 00AAC0 80009EC0 C7A6009C */ lwc1 $f6, 0x9c($sp) -/* 00AAC4 80009EC4 93A20057 */ lbu $v0, 0x57($sp) -/* 00AAC8 80009EC8 4606B03E */ c.le.s $f22, $f6 -/* 00AACC 80009ECC C7B0005C */ lwc1 $f16, 0x5c($sp) -/* 00AAD0 80009ED0 C7B2007C */ lwc1 $f18, 0x7c($sp) -/* 00AAD4 80009ED4 45000005 */ bc1f .L80009EEC -/* 00AAD8 80009ED8 00000000 */ nop -/* 00AADC 80009EDC 4614303E */ c.le.s $f6, $f20 -/* 00AAE0 80009EE0 00000000 */ nop -/* 00AAE4 80009EE4 4501000B */ bc1t .L80009F14 -/* 00AAE8 80009EE8 00000000 */ nop -.L80009EEC: -/* 00AAEC 80009EEC C7A8009C */ lwc1 $f8, 0x9c($sp) -/* 00AAF0 80009EF0 00000000 */ nop -/* 00AAF4 80009EF4 4608A03E */ c.le.s $f20, $f8 -/* 00AAF8 80009EF8 00000000 */ nop -/* 00AAFC 80009EFC 45000048 */ bc1f .L8000A020 -/* 00AB00 80009F00 00000000 */ nop -/* 00AB04 80009F04 4616403E */ c.le.s $f8, $f22 -/* 00AB08 80009F08 00000000 */ nop -/* 00AB0C 80009F0C 45000044 */ bc1f .L8000A020 -/* 00AB10 80009F10 00000000 */ nop -.L80009F14: -/* 00AB14 80009F14 44805000 */ mtc1 $zero, $f10 -/* 00AB18 80009F18 C7A4009C */ lwc1 $f4, 0x9c($sp) -/* 00AB1C 80009F1C 460AC032 */ c.eq.s $f24, $f10 -/* 00AB20 80009F20 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00AB24 80009F24 45010004 */ bc1t .L80009F38 -/* 00AB28 80009F28 00000000 */ nop -/* 00AB2C 80009F2C 46162181 */ sub.s $f6, $f4, $f22 -/* 00AB30 80009F30 10000012 */ b .L80009F7C -/* 00AB34 80009F34 46183303 */ div.s $f12, $f6, $f24 -.L80009F38: -/* 00AB38 80009F38 44801000 */ mtc1 $zero, $f2 -/* 00AB3C 80009F3C C7A800A0 */ lwc1 $f8, 0xa0($sp) -/* 00AB40 80009F40 4602D032 */ c.eq.s $f26, $f2 -/* 00AB44 80009F44 00000000 */ nop -/* 00AB48 80009F48 45010004 */ bc1t .L80009F5C -/* 00AB4C 80009F4C 00000000 */ nop -/* 00AB50 80009F50 461E4281 */ sub.s $f10, $f8, $f30 -/* 00AB54 80009F54 10000009 */ b .L80009F7C -/* 00AB58 80009F58 461A5303 */ div.s $f12, $f10, $f26 -.L80009F5C: -/* 00AB5C 80009F5C 4602E032 */ c.eq.s $f28, $f2 -/* 00AB60 80009F60 C7A400A4 */ lwc1 $f4, 0xa4($sp) -/* 00AB64 80009F64 45010004 */ bc1t .L80009F78 -/* 00AB68 80009F68 00000000 */ nop -/* 00AB6C 80009F6C 46122181 */ sub.s $f6, $f4, $f18 -/* 00AB70 80009F70 10000002 */ b .L80009F7C -/* 00AB74 80009F74 461C3303 */ div.s $f12, $f6, $f28 -.L80009F78: -/* 00AB78 80009F78 46001306 */ mov.s $f12, $f2 -.L80009F7C: -/* 00AB7C 80009F7C 460CD202 */ mul.s $f8, $f26, $f12 -/* 00AB80 80009F80 C7AA00A0 */ lwc1 $f10, 0xa0($sp) -/* 00AB84 80009F84 44813000 */ mtc1 $at, $f6 -/* 00AB88 80009F88 C7A400A0 */ lwc1 $f4, 0xa0($sp) -/* 00AB8C 80009F8C 461E4080 */ add.s $f2, $f8, $f30 -/* 00AB90 80009F90 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00AB94 80009F94 4602503E */ c.le.s $f10, $f2 -/* 00AB98 80009F98 00000000 */ nop -/* 00AB9C 80009F9C 45000003 */ bc1f .L80009FAC -/* 00ABA0 80009FA0 00000000 */ nop -/* 00ABA4 80009FA4 10000003 */ b .L80009FB4 -/* 00ABA8 80009FA8 460A1381 */ sub.s $f14, $f2, $f10 -.L80009FAC: -/* 00ABAC 80009FAC 46041381 */ sub.s $f14, $f2, $f4 -/* 00ABB0 80009FB0 46007387 */ neg.s $f14, $f14 -.L80009FB4: -/* 00ABB4 80009FB4 4606703C */ c.lt.s $f14, $f6 -/* 00ABB8 80009FB8 00000000 */ nop -/* 00ABBC 80009FBC 45000016 */ bc1f .L8000A018 -/* 00ABC0 80009FC0 00000000 */ nop -/* 00ABC4 80009FC4 460CE202 */ mul.s $f8, $f28, $f12 -/* 00ABC8 80009FC8 C7AA00A4 */ lwc1 $f10, 0xa4($sp) -/* 00ABCC 80009FCC 44813000 */ mtc1 $at, $f6 -/* 00ABD0 80009FD0 C7A400A4 */ lwc1 $f4, 0xa4($sp) -/* 00ABD4 80009FD4 46124080 */ add.s $f2, $f8, $f18 -/* 00ABD8 80009FD8 4602503E */ c.le.s $f10, $f2 -/* 00ABDC 80009FDC 00000000 */ nop -/* 00ABE0 80009FE0 45000003 */ bc1f .L80009FF0 -/* 00ABE4 80009FE4 00000000 */ nop -/* 00ABE8 80009FE8 10000003 */ b .L80009FF8 -/* 00ABEC 80009FEC 460A1381 */ sub.s $f14, $f2, $f10 -.L80009FF0: -/* 00ABF0 80009FF0 46041381 */ sub.s $f14, $f2, $f4 -/* 00ABF4 80009FF4 46007387 */ neg.s $f14, $f14 -.L80009FF8: -/* 00ABF8 80009FF8 4606703C */ c.lt.s $f14, $f6 -/* 00ABFC 80009FFC 00000000 */ nop -/* 00AC00 8000A000 45000005 */ bc1f .L8000A018 -/* 00AC04 8000A004 00000000 */ nop -/* 00AC08 8000A008 46006202 */ mul.s $f8, $f12, $f0 -/* 00AC0C 8000A00C 24020001 */ li $v0, 1 -/* 00AC10 8000A010 10000004 */ b .L8000A024 -/* 00AC14 8000A014 46088400 */ add.s $f16, $f16, $f8 -.L8000A018: -/* 00AC18 8000A018 10000002 */ b .L8000A024 -/* 00AC1C 8000A01C 46008400 */ add.s $f16, $f16, $f0 -.L8000A020: -/* 00AC20 8000A020 46008400 */ add.s $f16, $f16, $f0 -.L8000A024: -/* 00AC24 8000A024 1040FF94 */ beqz $v0, .L80009E78 -/* 00AC28 8000A028 2610000C */ addiu $s0, $s0, 0xc -/* 00AC2C 8000A02C 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00AC30 8000A030 44815000 */ mtc1 $at, $f10 -/* 00AC34 8000A034 C62000BC */ lwc1 $f0, 0xbc($s1) -/* 00AC38 8000A038 8FB00044 */ lw $s0, 0x44($sp) -/* 00AC3C 8000A03C 460A0103 */ div.s $f4, $f0, $f10 -/* 00AC40 8000A040 8FBF004C */ lw $ra, 0x4c($sp) -/* 00AC44 8000A044 3C014396 */ li $at, 0x43960000 # 300.000000 -/* 00AC48 8000A048 4610203C */ c.lt.s $f4, $f16 -/* 00AC4C 8000A04C 00000000 */ nop -/* 00AC50 8000A050 45000002 */ bc1f .L8000A05C -/* 00AC54 8000A054 00000000 */ nop -/* 00AC58 8000A058 46100401 */ sub.s $f16, $f0, $f16 -.L8000A05C: -/* 00AC5C 8000A05C 44810000 */ mtc1 $at, $f0 -/* 00AC60 8000A060 00000000 */ nop -/* 00AC64 8000A064 4600803C */ c.lt.s $f16, $f0 -/* 00AC68 8000A068 00000000 */ nop -/* 00AC6C 8000A06C 45000034 */ bc1f .L8000A140 -/* 00AC70 8000A070 00000000 */ nop -/* 00AC74 8000A074 92380000 */ lbu $t8, ($s1) -/* 00AC78 8000A078 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 00AC7C 8000A07C 44983000 */ mtc1 $t8, $f6 -/* 00AC80 8000A080 07010004 */ bgez $t8, .L8000A094 -/* 00AC84 8000A084 46803220 */ cvt.s.w $f8, $f6 -/* 00AC88 8000A088 44815000 */ mtc1 $at, $f10 -/* 00AC8C 8000A08C 00000000 */ nop -/* 00AC90 8000A090 460A4200 */ add.s $f8, $f8, $f10 -.L8000A094: -/* 00AC94 8000A094 46104102 */ mul.s $f4, $f8, $f16 -/* 00AC98 8000A098 24020001 */ li $v0, 1 -/* 00AC9C 8000A09C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 00ACA0 8000A0A0 46002183 */ div.s $f6, $f4, $f0 -/* 00ACA4 8000A0A4 4459F800 */ cfc1 $t9, $31 -/* 00ACA8 8000A0A8 44C2F800 */ ctc1 $v0, $31 -/* 00ACAC 8000A0AC 00000000 */ nop -/* 00ACB0 8000A0B0 460032A4 */ cvt.w.s $f10, $f6 -/* 00ACB4 8000A0B4 4442F800 */ cfc1 $v0, $31 -/* 00ACB8 8000A0B8 00000000 */ nop -/* 00ACBC 8000A0BC 30420078 */ andi $v0, $v0, 0x78 -/* 00ACC0 8000A0C0 10400018 */ beqz $v0, .L8000A124 -/* 00ACC4 8000A0C4 00000000 */ nop -/* 00ACC8 8000A0C8 44815000 */ mtc1 $at, $f10 -/* 00ACCC 8000A0CC 24020001 */ li $v0, 1 -/* 00ACD0 8000A0D0 460A3281 */ sub.s $f10, $f6, $f10 -/* 00ACD4 8000A0D4 3C018000 */ lui $at, 0x8000 -/* 00ACD8 8000A0D8 44C2F800 */ ctc1 $v0, $31 -/* 00ACDC 8000A0DC 00000000 */ nop -/* 00ACE0 8000A0E0 460052A4 */ cvt.w.s $f10, $f10 -/* 00ACE4 8000A0E4 4442F800 */ cfc1 $v0, $31 -/* 00ACE8 8000A0E8 00000000 */ nop -/* 00ACEC 8000A0EC 30420078 */ andi $v0, $v0, 0x78 -/* 00ACF0 8000A0F0 14400008 */ bnez $v0, .L8000A114 -/* 00ACF4 8000A0F4 2402FFFF */ li $v0, -1 -/* 00ACF8 8000A0F8 44025000 */ mfc1 $v0, $f10 -/* 00ACFC 8000A0FC 44D9F800 */ ctc1 $t9, $31 -/* 00AD00 8000A100 00411025 */ or $v0, $v0, $at -/* 00AD04 8000A104 304800FF */ andi $t0, $v0, 0xff -/* 00AD08 8000A108 1000000F */ b .L8000A148 -/* 00AD0C 8000A10C 01001025 */ move $v0, $t0 -.L8000A110: -/* 00AD10 8000A110 2402FFFF */ li $v0, -1 -.L8000A114: -/* 00AD14 8000A114 304800FF */ andi $t0, $v0, 0xff -/* 00AD18 8000A118 44D9F800 */ ctc1 $t9, $31 -/* 00AD1C 8000A11C 1000000A */ b .L8000A148 -/* 00AD20 8000A120 01001025 */ move $v0, $t0 -.L8000A124: -/* 00AD24 8000A124 44025000 */ mfc1 $v0, $f10 -/* 00AD28 8000A128 00000000 */ nop -/* 00AD2C 8000A12C 0440FFF8 */ bltz $v0, .L8000A110 -/* 00AD30 8000A130 304800FF */ andi $t0, $v0, 0xff -/* 00AD34 8000A134 44D9F800 */ ctc1 $t9, $31 -/* 00AD38 8000A138 10000003 */ b .L8000A148 -/* 00AD3C 8000A13C 01001025 */ move $v0, $t0 -.L8000A140: -/* 00AD40 8000A140 92220000 */ lbu $v0, ($s1) -/* 00AD44 8000A144 00000000 */ nop -.L8000A148: -/* 00AD48 8000A148 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 00AD4C 8000A14C C7B40014 */ lwc1 $f20, 0x14($sp) -/* 00AD50 8000A150 C7B70018 */ lwc1 $f23, 0x18($sp) -/* 00AD54 8000A154 C7B6001C */ lwc1 $f22, 0x1c($sp) -/* 00AD58 8000A158 C7B90020 */ lwc1 $f25, 0x20($sp) -/* 00AD5C 8000A15C C7B80024 */ lwc1 $f24, 0x24($sp) -/* 00AD60 8000A160 C7BB0028 */ lwc1 $f27, 0x28($sp) -/* 00AD64 8000A164 C7BA002C */ lwc1 $f26, 0x2c($sp) -/* 00AD68 8000A168 C7BD0030 */ lwc1 $f29, 0x30($sp) -/* 00AD6C 8000A16C C7BC0034 */ lwc1 $f28, 0x34($sp) -/* 00AD70 8000A170 C7BF0038 */ lwc1 $f31, 0x38($sp) -/* 00AD74 8000A174 C7BE003C */ lwc1 $f30, 0x3c($sp) -/* 00AD78 8000A178 8FB10048 */ lw $s1, 0x48($sp) -/* 00AD7C 8000A17C 03E00008 */ jr $ra -/* 00AD80 8000A180 27BD0098 */ addiu $sp, $sp, 0x98 +glabel func_80009D6C +/* 00A96C 80009D6C 27BDFF68 */ addiu $sp, $sp, -0x98 +/* 00A970 80009D70 E7B80024 */ swc1 $f24, 0x24($sp) +/* 00A974 80009D74 AFBF004C */ sw $ra, 0x4c($sp) +/* 00A978 80009D78 AFB10048 */ sw $s1, 0x48($sp) +/* 00A97C 80009D7C AFB00044 */ sw $s0, 0x44($sp) +/* 00A980 80009D80 E7BF0038 */ swc1 $f31, 0x38($sp) +/* 00A984 80009D84 E7BE003C */ swc1 $f30, 0x3c($sp) +/* 00A988 80009D88 E7BD0030 */ swc1 $f29, 0x30($sp) +/* 00A98C 80009D8C E7BC0034 */ swc1 $f28, 0x34($sp) +/* 00A990 80009D90 E7BB0028 */ swc1 $f27, 0x28($sp) +/* 00A994 80009D94 E7BA002C */ swc1 $f26, 0x2c($sp) +/* 00A998 80009D98 E7B90020 */ swc1 $f25, 0x20($sp) +/* 00A99C 80009D9C E7B70018 */ swc1 $f23, 0x18($sp) +/* 00A9A0 80009DA0 E7B6001C */ swc1 $f22, 0x1c($sp) +/* 00A9A4 80009DA4 E7B50010 */ swc1 $f21, 0x10($sp) +/* 00A9A8 80009DA8 E7B40014 */ swc1 $f20, 0x14($sp) +/* 00A9AC 80009DAC AFA5009C */ sw $a1, 0x9c($sp) +/* 00A9B0 80009DB0 AFA600A0 */ sw $a2, 0xa0($sp) +/* 00A9B4 80009DB4 AFA700A4 */ sw $a3, 0xa4($sp) +/* 00A9B8 80009DB8 4480C000 */ mtc1 $zero, $f24 +/* 00A9BC 80009DBC C48400BC */ lwc1 $f4, 0xbc($a0) +/* 00A9C0 80009DC0 00808825 */ move $s1, $a0 +/* 00A9C4 80009DC4 4604C032 */ c.eq.s $f24, $f4 +/* 00A9C8 80009DC8 00000000 */ nop +/* 00A9CC 80009DCC 45000028 */ bc1f .L80009E70 +/* 00A9D0 80009DD0 26300004 */ addiu $s0, $s1, 4 +/* 00A9D4 80009DD4 808E00B8 */ lb $t6, 0xb8($a0) +/* 00A9D8 80009DD8 24900004 */ addiu $s0, $a0, 4 +/* 00A9DC 80009DDC 448E3000 */ mtc1 $t6, $f6 +/* 00A9E0 80009DE0 4600C506 */ mov.s $f20, $f24 +/* 00A9E4 80009DE4 46803220 */ cvt.s.w $f8, $f6 +/* 00A9E8 80009DE8 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 00A9EC 80009DEC 4608C03C */ c.lt.s $f24, $f8 +/* 00A9F0 80009DF0 00000000 */ nop +/* 00A9F4 80009DF4 4500001D */ bc1f .L80009E6C +/* 00A9F8 80009DF8 00000000 */ nop +/* 00A9FC 80009DFC 4481B000 */ mtc1 $at, $f22 +/* 00AA00 80009E00 00000000 */ nop +.L80009E04: +/* 00AA04 80009E04 C60A000C */ lwc1 $f10, 0xc($s0) +/* 00AA08 80009E08 C6040000 */ lwc1 $f4, ($s0) +/* 00AA0C 80009E0C C6060010 */ lwc1 $f6, 0x10($s0) +/* 00AA10 80009E10 C6080004 */ lwc1 $f8, 4($s0) +/* 00AA14 80009E14 46045001 */ sub.s $f0, $f10, $f4 +/* 00AA18 80009E18 C6040008 */ lwc1 $f4, 8($s0) +/* 00AA1C 80009E1C 46083081 */ sub.s $f2, $f6, $f8 +/* 00AA20 80009E20 C60A0014 */ lwc1 $f10, 0x14($s0) +/* 00AA24 80009E24 46000182 */ mul.s $f6, $f0, $f0 +/* 00AA28 80009E28 46045381 */ sub.s $f14, $f10, $f4 +/* 00AA2C 80009E2C 46021202 */ mul.s $f8, $f2, $f2 +/* 00AA30 80009E30 00000000 */ nop +/* 00AA34 80009E34 460E7102 */ mul.s $f4, $f14, $f14 +/* 00AA38 80009E38 46083280 */ add.s $f10, $f6, $f8 +/* 00AA3C 80009E3C 0C0326B4 */ jal sqrtf +/* 00AA40 80009E40 46045300 */ add.s $f12, $f10, $f4 +/* 00AA44 80009E44 822F00B8 */ lb $t7, 0xb8($s1) +/* 00AA48 80009E48 4616A500 */ add.s $f20, $f20, $f22 +/* 00AA4C 80009E4C 448F5000 */ mtc1 $t7, $f10 +/* 00AA50 80009E50 C62600BC */ lwc1 $f6, 0xbc($s1) +/* 00AA54 80009E54 46805120 */ cvt.s.w $f4, $f10 +/* 00AA58 80009E58 2610000C */ addiu $s0, $s0, 0xc +/* 00AA5C 80009E5C 4604A03C */ c.lt.s $f20, $f4 +/* 00AA60 80009E60 46003200 */ add.s $f8, $f6, $f0 +/* 00AA64 80009E64 4501FFE7 */ bc1t .L80009E04 +/* 00AA68 80009E68 E62800BC */ swc1 $f8, 0xbc($s1) +.L80009E6C: +/* 00AA6C 80009E6C 26300004 */ addiu $s0, $s1, 4 +.L80009E70: +/* 00AA70 80009E70 4600C406 */ mov.s $f16, $f24 +/* 00AA74 80009E74 00001025 */ move $v0, $zero +.L80009E78: +/* 00AA78 80009E78 C6160000 */ lwc1 $f22, ($s0) +/* 00AA7C 80009E7C C614000C */ lwc1 $f20, 0xc($s0) +/* 00AA80 80009E80 C61E0004 */ lwc1 $f30, 4($s0) +/* 00AA84 80009E84 4616A601 */ sub.s $f24, $f20, $f22 +/* 00AA88 80009E88 C6000010 */ lwc1 $f0, 0x10($s0) +/* 00AA8C 80009E8C 4618C182 */ mul.s $f6, $f24, $f24 +/* 00AA90 80009E90 461E0681 */ sub.s $f26, $f0, $f30 +/* 00AA94 80009E94 C6120008 */ lwc1 $f18, 8($s0) +/* 00AA98 80009E98 C6020014 */ lwc1 $f2, 0x14($s0) +/* 00AA9C 80009E9C 461AD202 */ mul.s $f8, $f26, $f26 +/* 00AAA0 80009EA0 46121701 */ sub.s $f28, $f2, $f18 +/* 00AAA4 80009EA4 E7B0005C */ swc1 $f16, 0x5c($sp) +/* 00AAA8 80009EA8 A3A20057 */ sb $v0, 0x57($sp) +/* 00AAAC 80009EAC 461CE102 */ mul.s $f4, $f28, $f28 +/* 00AAB0 80009EB0 46083280 */ add.s $f10, $f6, $f8 +/* 00AAB4 80009EB4 E7B2007C */ swc1 $f18, 0x7c($sp) +/* 00AAB8 80009EB8 0C0326B4 */ jal sqrtf +/* 00AABC 80009EBC 46045300 */ add.s $f12, $f10, $f4 +/* 00AAC0 80009EC0 C7A6009C */ lwc1 $f6, 0x9c($sp) +/* 00AAC4 80009EC4 93A20057 */ lbu $v0, 0x57($sp) +/* 00AAC8 80009EC8 4606B03E */ c.le.s $f22, $f6 +/* 00AACC 80009ECC C7B0005C */ lwc1 $f16, 0x5c($sp) +/* 00AAD0 80009ED0 C7B2007C */ lwc1 $f18, 0x7c($sp) +/* 00AAD4 80009ED4 45000005 */ bc1f .L80009EEC +/* 00AAD8 80009ED8 00000000 */ nop +/* 00AADC 80009EDC 4614303E */ c.le.s $f6, $f20 +/* 00AAE0 80009EE0 00000000 */ nop +/* 00AAE4 80009EE4 4501000B */ bc1t .L80009F14 +/* 00AAE8 80009EE8 00000000 */ nop +.L80009EEC: +/* 00AAEC 80009EEC C7A8009C */ lwc1 $f8, 0x9c($sp) +/* 00AAF0 80009EF0 00000000 */ nop +/* 00AAF4 80009EF4 4608A03E */ c.le.s $f20, $f8 +/* 00AAF8 80009EF8 00000000 */ nop +/* 00AAFC 80009EFC 45000048 */ bc1f .L8000A020 +/* 00AB00 80009F00 00000000 */ nop +/* 00AB04 80009F04 4616403E */ c.le.s $f8, $f22 +/* 00AB08 80009F08 00000000 */ nop +/* 00AB0C 80009F0C 45000044 */ bc1f .L8000A020 +/* 00AB10 80009F10 00000000 */ nop +.L80009F14: +/* 00AB14 80009F14 44805000 */ mtc1 $zero, $f10 +/* 00AB18 80009F18 C7A4009C */ lwc1 $f4, 0x9c($sp) +/* 00AB1C 80009F1C 460AC032 */ c.eq.s $f24, $f10 +/* 00AB20 80009F20 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 00AB24 80009F24 45010004 */ bc1t .L80009F38 +/* 00AB28 80009F28 00000000 */ nop +/* 00AB2C 80009F2C 46162181 */ sub.s $f6, $f4, $f22 +/* 00AB30 80009F30 10000012 */ b .L80009F7C +/* 00AB34 80009F34 46183303 */ div.s $f12, $f6, $f24 +.L80009F38: +/* 00AB38 80009F38 44801000 */ mtc1 $zero, $f2 +/* 00AB3C 80009F3C C7A800A0 */ lwc1 $f8, 0xa0($sp) +/* 00AB40 80009F40 4602D032 */ c.eq.s $f26, $f2 +/* 00AB44 80009F44 00000000 */ nop +/* 00AB48 80009F48 45010004 */ bc1t .L80009F5C +/* 00AB4C 80009F4C 00000000 */ nop +/* 00AB50 80009F50 461E4281 */ sub.s $f10, $f8, $f30 +/* 00AB54 80009F54 10000009 */ b .L80009F7C +/* 00AB58 80009F58 461A5303 */ div.s $f12, $f10, $f26 +.L80009F5C: +/* 00AB5C 80009F5C 4602E032 */ c.eq.s $f28, $f2 +/* 00AB60 80009F60 C7A400A4 */ lwc1 $f4, 0xa4($sp) +/* 00AB64 80009F64 45010004 */ bc1t .L80009F78 +/* 00AB68 80009F68 00000000 */ nop +/* 00AB6C 80009F6C 46122181 */ sub.s $f6, $f4, $f18 +/* 00AB70 80009F70 10000002 */ b .L80009F7C +/* 00AB74 80009F74 461C3303 */ div.s $f12, $f6, $f28 +.L80009F78: +/* 00AB78 80009F78 46001306 */ mov.s $f12, $f2 +.L80009F7C: +/* 00AB7C 80009F7C 460CD202 */ mul.s $f8, $f26, $f12 +/* 00AB80 80009F80 C7AA00A0 */ lwc1 $f10, 0xa0($sp) +/* 00AB84 80009F84 44813000 */ mtc1 $at, $f6 +/* 00AB88 80009F88 C7A400A0 */ lwc1 $f4, 0xa0($sp) +/* 00AB8C 80009F8C 461E4080 */ add.s $f2, $f8, $f30 +/* 00AB90 80009F90 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 00AB94 80009F94 4602503E */ c.le.s $f10, $f2 +/* 00AB98 80009F98 00000000 */ nop +/* 00AB9C 80009F9C 45000003 */ bc1f .L80009FAC +/* 00ABA0 80009FA0 00000000 */ nop +/* 00ABA4 80009FA4 10000003 */ b .L80009FB4 +/* 00ABA8 80009FA8 460A1381 */ sub.s $f14, $f2, $f10 +.L80009FAC: +/* 00ABAC 80009FAC 46041381 */ sub.s $f14, $f2, $f4 +/* 00ABB0 80009FB0 46007387 */ neg.s $f14, $f14 +.L80009FB4: +/* 00ABB4 80009FB4 4606703C */ c.lt.s $f14, $f6 +/* 00ABB8 80009FB8 00000000 */ nop +/* 00ABBC 80009FBC 45000016 */ bc1f .L8000A018 +/* 00ABC0 80009FC0 00000000 */ nop +/* 00ABC4 80009FC4 460CE202 */ mul.s $f8, $f28, $f12 +/* 00ABC8 80009FC8 C7AA00A4 */ lwc1 $f10, 0xa4($sp) +/* 00ABCC 80009FCC 44813000 */ mtc1 $at, $f6 +/* 00ABD0 80009FD0 C7A400A4 */ lwc1 $f4, 0xa4($sp) +/* 00ABD4 80009FD4 46124080 */ add.s $f2, $f8, $f18 +/* 00ABD8 80009FD8 4602503E */ c.le.s $f10, $f2 +/* 00ABDC 80009FDC 00000000 */ nop +/* 00ABE0 80009FE0 45000003 */ bc1f .L80009FF0 +/* 00ABE4 80009FE4 00000000 */ nop +/* 00ABE8 80009FE8 10000003 */ b .L80009FF8 +/* 00ABEC 80009FEC 460A1381 */ sub.s $f14, $f2, $f10 +.L80009FF0: +/* 00ABF0 80009FF0 46041381 */ sub.s $f14, $f2, $f4 +/* 00ABF4 80009FF4 46007387 */ neg.s $f14, $f14 +.L80009FF8: +/* 00ABF8 80009FF8 4606703C */ c.lt.s $f14, $f6 +/* 00ABFC 80009FFC 00000000 */ nop +/* 00AC00 8000A000 45000005 */ bc1f .L8000A018 +/* 00AC04 8000A004 00000000 */ nop +/* 00AC08 8000A008 46006202 */ mul.s $f8, $f12, $f0 +/* 00AC0C 8000A00C 24020001 */ li $v0, 1 +/* 00AC10 8000A010 10000004 */ b .L8000A024 +/* 00AC14 8000A014 46088400 */ add.s $f16, $f16, $f8 +.L8000A018: +/* 00AC18 8000A018 10000002 */ b .L8000A024 +/* 00AC1C 8000A01C 46008400 */ add.s $f16, $f16, $f0 +.L8000A020: +/* 00AC20 8000A020 46008400 */ add.s $f16, $f16, $f0 +.L8000A024: +/* 00AC24 8000A024 1040FF94 */ beqz $v0, .L80009E78 +/* 00AC28 8000A028 2610000C */ addiu $s0, $s0, 0xc +/* 00AC2C 8000A02C 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 00AC30 8000A030 44815000 */ mtc1 $at, $f10 +/* 00AC34 8000A034 C62000BC */ lwc1 $f0, 0xbc($s1) +/* 00AC38 8000A038 8FB00044 */ lw $s0, 0x44($sp) +/* 00AC3C 8000A03C 460A0103 */ div.s $f4, $f0, $f10 +/* 00AC40 8000A040 8FBF004C */ lw $ra, 0x4c($sp) +/* 00AC44 8000A044 3C014396 */ li $at, 0x43960000 # 300.000000 +/* 00AC48 8000A048 4610203C */ c.lt.s $f4, $f16 +/* 00AC4C 8000A04C 00000000 */ nop +/* 00AC50 8000A050 45000002 */ bc1f .L8000A05C +/* 00AC54 8000A054 00000000 */ nop +/* 00AC58 8000A058 46100401 */ sub.s $f16, $f0, $f16 +.L8000A05C: +/* 00AC5C 8000A05C 44810000 */ mtc1 $at, $f0 +/* 00AC60 8000A060 00000000 */ nop +/* 00AC64 8000A064 4600803C */ c.lt.s $f16, $f0 +/* 00AC68 8000A068 00000000 */ nop +/* 00AC6C 8000A06C 45000034 */ bc1f .L8000A140 +/* 00AC70 8000A070 00000000 */ nop +/* 00AC74 8000A074 92380000 */ lbu $t8, ($s1) +/* 00AC78 8000A078 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 00AC7C 8000A07C 44983000 */ mtc1 $t8, $f6 +/* 00AC80 8000A080 07010004 */ bgez $t8, .L8000A094 +/* 00AC84 8000A084 46803220 */ cvt.s.w $f8, $f6 +/* 00AC88 8000A088 44815000 */ mtc1 $at, $f10 +/* 00AC8C 8000A08C 00000000 */ nop +/* 00AC90 8000A090 460A4200 */ add.s $f8, $f8, $f10 +.L8000A094: +/* 00AC94 8000A094 46104102 */ mul.s $f4, $f8, $f16 +/* 00AC98 8000A098 24020001 */ li $v0, 1 +/* 00AC9C 8000A09C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 +/* 00ACA0 8000A0A0 46002183 */ div.s $f6, $f4, $f0 +/* 00ACA4 8000A0A4 4459F800 */ cfc1 $t9, $31 +/* 00ACA8 8000A0A8 44C2F800 */ ctc1 $v0, $31 +/* 00ACAC 8000A0AC 00000000 */ nop +/* 00ACB0 8000A0B0 460032A4 */ cvt.w.s $f10, $f6 +/* 00ACB4 8000A0B4 4442F800 */ cfc1 $v0, $31 +/* 00ACB8 8000A0B8 00000000 */ nop +/* 00ACBC 8000A0BC 30420078 */ andi $v0, $v0, 0x78 +/* 00ACC0 8000A0C0 10400018 */ beqz $v0, .L8000A124 +/* 00ACC4 8000A0C4 00000000 */ nop +/* 00ACC8 8000A0C8 44815000 */ mtc1 $at, $f10 +/* 00ACCC 8000A0CC 24020001 */ li $v0, 1 +/* 00ACD0 8000A0D0 460A3281 */ sub.s $f10, $f6, $f10 +/* 00ACD4 8000A0D4 3C018000 */ lui $at, 0x8000 +/* 00ACD8 8000A0D8 44C2F800 */ ctc1 $v0, $31 +/* 00ACDC 8000A0DC 00000000 */ nop +/* 00ACE0 8000A0E0 460052A4 */ cvt.w.s $f10, $f10 +/* 00ACE4 8000A0E4 4442F800 */ cfc1 $v0, $31 +/* 00ACE8 8000A0E8 00000000 */ nop +/* 00ACEC 8000A0EC 30420078 */ andi $v0, $v0, 0x78 +/* 00ACF0 8000A0F0 14400008 */ bnez $v0, .L8000A114 +/* 00ACF4 8000A0F4 2402FFFF */ li $v0, -1 +/* 00ACF8 8000A0F8 44025000 */ mfc1 $v0, $f10 +/* 00ACFC 8000A0FC 44D9F800 */ ctc1 $t9, $31 +/* 00AD00 8000A100 00411025 */ or $v0, $v0, $at +/* 00AD04 8000A104 304800FF */ andi $t0, $v0, 0xff +/* 00AD08 8000A108 1000000F */ b .L8000A148 +/* 00AD0C 8000A10C 01001025 */ move $v0, $t0 +.L8000A110: +/* 00AD10 8000A110 2402FFFF */ li $v0, -1 +.L8000A114: +/* 00AD14 8000A114 304800FF */ andi $t0, $v0, 0xff +/* 00AD18 8000A118 44D9F800 */ ctc1 $t9, $31 +/* 00AD1C 8000A11C 1000000A */ b .L8000A148 +/* 00AD20 8000A120 01001025 */ move $v0, $t0 +.L8000A124: +/* 00AD24 8000A124 44025000 */ mfc1 $v0, $f10 +/* 00AD28 8000A128 00000000 */ nop +/* 00AD2C 8000A12C 0440FFF8 */ bltz $v0, .L8000A110 +/* 00AD30 8000A130 304800FF */ andi $t0, $v0, 0xff +/* 00AD34 8000A134 44D9F800 */ ctc1 $t9, $31 +/* 00AD38 8000A138 10000003 */ b .L8000A148 +/* 00AD3C 8000A13C 01001025 */ move $v0, $t0 +.L8000A140: +/* 00AD40 8000A140 92220000 */ lbu $v0, ($s1) +/* 00AD44 8000A144 00000000 */ nop +.L8000A148: +/* 00AD48 8000A148 C7B50010 */ lwc1 $f21, 0x10($sp) +/* 00AD4C 8000A14C C7B40014 */ lwc1 $f20, 0x14($sp) +/* 00AD50 8000A150 C7B70018 */ lwc1 $f23, 0x18($sp) +/* 00AD54 8000A154 C7B6001C */ lwc1 $f22, 0x1c($sp) +/* 00AD58 8000A158 C7B90020 */ lwc1 $f25, 0x20($sp) +/* 00AD5C 8000A15C C7B80024 */ lwc1 $f24, 0x24($sp) +/* 00AD60 8000A160 C7BB0028 */ lwc1 $f27, 0x28($sp) +/* 00AD64 8000A164 C7BA002C */ lwc1 $f26, 0x2c($sp) +/* 00AD68 8000A168 C7BD0030 */ lwc1 $f29, 0x30($sp) +/* 00AD6C 8000A16C C7BC0034 */ lwc1 $f28, 0x34($sp) +/* 00AD70 8000A170 C7BF0038 */ lwc1 $f31, 0x38($sp) +/* 00AD74 8000A174 C7BE003C */ lwc1 $f30, 0x3c($sp) +/* 00AD78 8000A178 8FB10048 */ lw $s1, 0x48($sp) +/* 00AD7C 8000A17C 03E00008 */ jr $ra +/* 00AD80 8000A180 27BD0098 */ addiu $sp, $sp, 0x98 diff --git a/asm/non_matchings/unknown_008C40/func_8000A184.s b/asm/non_matchings/audio_spatial/func_8000A184.s similarity index 95% rename from asm/non_matchings/unknown_008C40/func_8000A184.s rename to asm/non_matchings/audio_spatial/func_8000A184.s index 70b8cd9f..5110b259 100644 --- a/asm/non_matchings/unknown_008C40/func_8000A184.s +++ b/asm/non_matchings/audio_spatial/func_8000A184.s @@ -1,97 +1,97 @@ -glabel func_8000A184 -/* 00AD84 8000A184 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 00AD88 8000A188 AFBE0048 */ sw $fp, 0x48($sp) -/* 00AD8C 8000A18C AFB70044 */ sw $s7, 0x44($sp) -/* 00AD90 8000A190 AFB60040 */ sw $s6, 0x40($sp) -/* 00AD94 8000A194 AFB5003C */ sw $s5, 0x3c($sp) -/* 00AD98 8000A198 AFB40038 */ sw $s4, 0x38($sp) -/* 00AD9C 8000A19C AFB30034 */ sw $s3, 0x34($sp) -/* 00ADA0 8000A1A0 3C168012 */ lui $s6, %hi(D_80119C58) # $s6, 0x8012 -/* 00ADA4 8000A1A4 3C178012 */ lui $s7, %hi(D_80119C5C) # $s7, 0x8012 -/* 00ADA8 8000A1A8 3C1E8012 */ lui $fp, %hi(D_8011A6DC) # $fp, 0x8012 -/* 00ADAC 8000A1AC 00809825 */ move $s3, $a0 -/* 00ADB0 8000A1B0 00A0A025 */ move $s4, $a1 -/* 00ADB4 8000A1B4 00C0A825 */ move $s5, $a2 -/* 00ADB8 8000A1B8 AFBF004C */ sw $ra, 0x4c($sp) -/* 00ADBC 8000A1BC AFB20030 */ sw $s2, 0x30($sp) -/* 00ADC0 8000A1C0 AFB1002C */ sw $s1, 0x2c($sp) -/* 00ADC4 8000A1C4 AFB00028 */ sw $s0, 0x28($sp) -/* 00ADC8 8000A1C8 27DEA6DC */ addiu $fp, %lo(D_8011A6DC) # addiu $fp, $fp, -0x5924 -/* 00ADCC 8000A1CC 26F79C5C */ addiu $s7, %lo(D_80119C5C) # addiu $s7, $s7, -0x63a4 -/* 00ADD0 8000A1D0 26D69C58 */ addiu $s6, %lo(D_80119C58) # addiu $s6, $s6, -0x63a8 -.L8000A1D4: -/* 00ADD4 8000A1D4 8ECE016C */ lw $t6, 0x16c($s6) -/* 00ADD8 8000A1D8 02C09025 */ move $s2, $s6 -/* 00ADDC 8000A1DC 11C00013 */ beqz $t6, .L8000A22C -/* 00ADE0 8000A1E0 02E08825 */ move $s1, $s7 -/* 00ADE4 8000A1E4 82CF017C */ lb $t7, 0x17c($s6) -/* 00ADE8 8000A1E8 00008025 */ move $s0, $zero -/* 00ADEC 8000A1EC 19E0000F */ blez $t7, .L8000A22C -.L8000A1F0: -/* 00ADF0 8000A1F0 241800FF */ li $t8, 255 -/* 00ADF4 8000A1F4 241900FF */ li $t9, 255 -/* 00ADF8 8000A1F8 AFB90014 */ sw $t9, 0x14($sp) -/* 00ADFC 8000A1FC AFB80010 */ sw $t8, 0x10($sp) -/* 00AE00 8000A200 02602025 */ move $a0, $s3 -/* 00AE04 8000A204 02802825 */ move $a1, $s4 -/* 00AE08 8000A208 02A03025 */ move $a2, $s5 -/* 00AE0C 8000A20C 02203825 */ move $a3, $s1 -/* 00AE10 8000A210 0C002905 */ jal func_8000A414 -/* 00AE14 8000A214 AFA00018 */ sw $zero, 0x18($sp) -/* 00AE18 8000A218 8248017C */ lb $t0, 0x17c($s2) -/* 00AE1C 8000A21C 26100001 */ addiu $s0, $s0, 1 -/* 00AE20 8000A220 0208082A */ slt $at, $s0, $t0 -/* 00AE24 8000A224 1420FFF2 */ bnez $at, .L8000A1F0 -/* 00AE28 8000A228 2631000C */ addiu $s1, $s1, 0xc -.L8000A22C: -/* 00AE2C 8000A22C 26F70180 */ addiu $s7, $s7, 0x180 -/* 00AE30 8000A230 02FE082B */ sltu $at, $s7, $fp -/* 00AE34 8000A234 1420FFE7 */ bnez $at, .L8000A1D4 -/* 00AE38 8000A238 26D60180 */ addiu $s6, $s6, 0x180 -/* 00AE3C 8000A23C 3C168012 */ lui $s6, %hi(D_8011A6D8) # $s6, 0x8012 -/* 00AE40 8000A240 3C178012 */ lui $s7, %hi(D_8011A6DC) # $s7, 0x8012 -/* 00AE44 8000A244 3C1E8012 */ lui $fp, %hi(D_8011AC1C) # $fp, 0x8012 -/* 00AE48 8000A248 27DEAC1C */ addiu $fp, %lo(D_8011AC1C) # addiu $fp, $fp, -0x53e4 -/* 00AE4C 8000A24C 26F7A6DC */ addiu $s7, %lo(D_8011A6DC) # addiu $s7, $s7, -0x5924 -/* 00AE50 8000A250 26D6A6D8 */ addiu $s6, %lo(D_8011A6D8) # addiu $s6, $s6, -0x5928 -.L8000A254: -/* 00AE54 8000A254 92C90000 */ lbu $t1, ($s6) -/* 00AE58 8000A258 02C09025 */ move $s2, $s6 -/* 00AE5C 8000A25C 11200013 */ beqz $t1, .L8000A2AC -/* 00AE60 8000A260 02E08825 */ move $s1, $s7 -/* 00AE64 8000A264 82CA00B8 */ lb $t2, 0xb8($s6) -/* 00AE68 8000A268 00008025 */ move $s0, $zero -/* 00AE6C 8000A26C 1940000F */ blez $t2, .L8000A2AC -.L8000A270: -/* 00AE70 8000A270 240B00FF */ li $t3, 255 -/* 00AE74 8000A274 240C00FF */ li $t4, 255 -/* 00AE78 8000A278 AFAC0018 */ sw $t4, 0x18($sp) -/* 00AE7C 8000A27C AFAB0010 */ sw $t3, 0x10($sp) -/* 00AE80 8000A280 02602025 */ move $a0, $s3 -/* 00AE84 8000A284 02802825 */ move $a1, $s4 -/* 00AE88 8000A288 02A03025 */ move $a2, $s5 -/* 00AE8C 8000A28C 02203825 */ move $a3, $s1 -/* 00AE90 8000A290 0C002905 */ jal func_8000A414 -/* 00AE94 8000A294 AFA00014 */ sw $zero, 0x14($sp) -/* 00AE98 8000A298 824D00B8 */ lb $t5, 0xb8($s2) -/* 00AE9C 8000A29C 26100001 */ addiu $s0, $s0, 1 -/* 00AEA0 8000A2A0 020D082A */ slt $at, $s0, $t5 -/* 00AEA4 8000A2A4 1420FFF2 */ bnez $at, .L8000A270 -/* 00AEA8 8000A2A8 2631000C */ addiu $s1, $s1, 0xc -.L8000A2AC: -/* 00AEAC 8000A2AC 26F700C0 */ addiu $s7, $s7, 0xc0 -/* 00AEB0 8000A2B0 16FEFFE8 */ bne $s7, $fp, .L8000A254 -/* 00AEB4 8000A2B4 26D600C0 */ addiu $s6, $s6, 0xc0 -/* 00AEB8 8000A2B8 8FBF004C */ lw $ra, 0x4c($sp) -/* 00AEBC 8000A2BC 8FB00028 */ lw $s0, 0x28($sp) -/* 00AEC0 8000A2C0 8FB1002C */ lw $s1, 0x2c($sp) -/* 00AEC4 8000A2C4 8FB20030 */ lw $s2, 0x30($sp) -/* 00AEC8 8000A2C8 8FB30034 */ lw $s3, 0x34($sp) -/* 00AECC 8000A2CC 8FB40038 */ lw $s4, 0x38($sp) -/* 00AED0 8000A2D0 8FB5003C */ lw $s5, 0x3c($sp) -/* 00AED4 8000A2D4 8FB60040 */ lw $s6, 0x40($sp) -/* 00AED8 8000A2D8 8FB70044 */ lw $s7, 0x44($sp) -/* 00AEDC 8000A2DC 8FBE0048 */ lw $fp, 0x48($sp) -/* 00AEE0 8000A2E0 03E00008 */ jr $ra -/* 00AEE4 8000A2E4 27BD0050 */ addiu $sp, $sp, 0x50 - +glabel func_8000A184 +/* 00AD84 8000A184 27BDFFB0 */ addiu $sp, $sp, -0x50 +/* 00AD88 8000A188 AFBE0048 */ sw $fp, 0x48($sp) +/* 00AD8C 8000A18C AFB70044 */ sw $s7, 0x44($sp) +/* 00AD90 8000A190 AFB60040 */ sw $s6, 0x40($sp) +/* 00AD94 8000A194 AFB5003C */ sw $s5, 0x3c($sp) +/* 00AD98 8000A198 AFB40038 */ sw $s4, 0x38($sp) +/* 00AD9C 8000A19C AFB30034 */ sw $s3, 0x34($sp) +/* 00ADA0 8000A1A0 3C168012 */ lui $s6, %hi(D_80119C58) # $s6, 0x8012 +/* 00ADA4 8000A1A4 3C178012 */ lui $s7, %hi(D_80119C5C) # $s7, 0x8012 +/* 00ADA8 8000A1A8 3C1E8012 */ lui $fp, %hi(D_8011A6DC) # $fp, 0x8012 +/* 00ADAC 8000A1AC 00809825 */ move $s3, $a0 +/* 00ADB0 8000A1B0 00A0A025 */ move $s4, $a1 +/* 00ADB4 8000A1B4 00C0A825 */ move $s5, $a2 +/* 00ADB8 8000A1B8 AFBF004C */ sw $ra, 0x4c($sp) +/* 00ADBC 8000A1BC AFB20030 */ sw $s2, 0x30($sp) +/* 00ADC0 8000A1C0 AFB1002C */ sw $s1, 0x2c($sp) +/* 00ADC4 8000A1C4 AFB00028 */ sw $s0, 0x28($sp) +/* 00ADC8 8000A1C8 27DEA6DC */ addiu $fp, %lo(D_8011A6DC) # addiu $fp, $fp, -0x5924 +/* 00ADCC 8000A1CC 26F79C5C */ addiu $s7, %lo(D_80119C5C) # addiu $s7, $s7, -0x63a4 +/* 00ADD0 8000A1D0 26D69C58 */ addiu $s6, %lo(D_80119C58) # addiu $s6, $s6, -0x63a8 +.L8000A1D4: +/* 00ADD4 8000A1D4 8ECE016C */ lw $t6, 0x16c($s6) +/* 00ADD8 8000A1D8 02C09025 */ move $s2, $s6 +/* 00ADDC 8000A1DC 11C00013 */ beqz $t6, .L8000A22C +/* 00ADE0 8000A1E0 02E08825 */ move $s1, $s7 +/* 00ADE4 8000A1E4 82CF017C */ lb $t7, 0x17c($s6) +/* 00ADE8 8000A1E8 00008025 */ move $s0, $zero +/* 00ADEC 8000A1EC 19E0000F */ blez $t7, .L8000A22C +.L8000A1F0: +/* 00ADF0 8000A1F0 241800FF */ li $t8, 255 +/* 00ADF4 8000A1F4 241900FF */ li $t9, 255 +/* 00ADF8 8000A1F8 AFB90014 */ sw $t9, 0x14($sp) +/* 00ADFC 8000A1FC AFB80010 */ sw $t8, 0x10($sp) +/* 00AE00 8000A200 02602025 */ move $a0, $s3 +/* 00AE04 8000A204 02802825 */ move $a1, $s4 +/* 00AE08 8000A208 02A03025 */ move $a2, $s5 +/* 00AE0C 8000A20C 02203825 */ move $a3, $s1 +/* 00AE10 8000A210 0C002905 */ jal debug_render_line +/* 00AE14 8000A214 AFA00018 */ sw $zero, 0x18($sp) +/* 00AE18 8000A218 8248017C */ lb $t0, 0x17c($s2) +/* 00AE1C 8000A21C 26100001 */ addiu $s0, $s0, 1 +/* 00AE20 8000A220 0208082A */ slt $at, $s0, $t0 +/* 00AE24 8000A224 1420FFF2 */ bnez $at, .L8000A1F0 +/* 00AE28 8000A228 2631000C */ addiu $s1, $s1, 0xc +.L8000A22C: +/* 00AE2C 8000A22C 26F70180 */ addiu $s7, $s7, 0x180 +/* 00AE30 8000A230 02FE082B */ sltu $at, $s7, $fp +/* 00AE34 8000A234 1420FFE7 */ bnez $at, .L8000A1D4 +/* 00AE38 8000A238 26D60180 */ addiu $s6, $s6, 0x180 +/* 00AE3C 8000A23C 3C168012 */ lui $s6, %hi(D_8011A6D8) # $s6, 0x8012 +/* 00AE40 8000A240 3C178012 */ lui $s7, %hi(D_8011A6DC) # $s7, 0x8012 +/* 00AE44 8000A244 3C1E8012 */ lui $fp, %hi(D_8011AC1C) # $fp, 0x8012 +/* 00AE48 8000A248 27DEAC1C */ addiu $fp, %lo(D_8011AC1C) # addiu $fp, $fp, -0x53e4 +/* 00AE4C 8000A24C 26F7A6DC */ addiu $s7, %lo(D_8011A6DC) # addiu $s7, $s7, -0x5924 +/* 00AE50 8000A250 26D6A6D8 */ addiu $s6, %lo(D_8011A6D8) # addiu $s6, $s6, -0x5928 +.L8000A254: +/* 00AE54 8000A254 92C90000 */ lbu $t1, ($s6) +/* 00AE58 8000A258 02C09025 */ move $s2, $s6 +/* 00AE5C 8000A25C 11200013 */ beqz $t1, .L8000A2AC +/* 00AE60 8000A260 02E08825 */ move $s1, $s7 +/* 00AE64 8000A264 82CA00B8 */ lb $t2, 0xb8($s6) +/* 00AE68 8000A268 00008025 */ move $s0, $zero +/* 00AE6C 8000A26C 1940000F */ blez $t2, .L8000A2AC +.L8000A270: +/* 00AE70 8000A270 240B00FF */ li $t3, 255 +/* 00AE74 8000A274 240C00FF */ li $t4, 255 +/* 00AE78 8000A278 AFAC0018 */ sw $t4, 0x18($sp) +/* 00AE7C 8000A27C AFAB0010 */ sw $t3, 0x10($sp) +/* 00AE80 8000A280 02602025 */ move $a0, $s3 +/* 00AE84 8000A284 02802825 */ move $a1, $s4 +/* 00AE88 8000A288 02A03025 */ move $a2, $s5 +/* 00AE8C 8000A28C 02203825 */ move $a3, $s1 +/* 00AE90 8000A290 0C002905 */ jal debug_render_line +/* 00AE94 8000A294 AFA00014 */ sw $zero, 0x14($sp) +/* 00AE98 8000A298 824D00B8 */ lb $t5, 0xb8($s2) +/* 00AE9C 8000A29C 26100001 */ addiu $s0, $s0, 1 +/* 00AEA0 8000A2A0 020D082A */ slt $at, $s0, $t5 +/* 00AEA4 8000A2A4 1420FFF2 */ bnez $at, .L8000A270 +/* 00AEA8 8000A2A8 2631000C */ addiu $s1, $s1, 0xc +.L8000A2AC: +/* 00AEAC 8000A2AC 26F700C0 */ addiu $s7, $s7, 0xc0 +/* 00AEB0 8000A2B0 16FEFFE8 */ bne $s7, $fp, .L8000A254 +/* 00AEB4 8000A2B4 26D600C0 */ addiu $s6, $s6, 0xc0 +/* 00AEB8 8000A2B8 8FBF004C */ lw $ra, 0x4c($sp) +/* 00AEBC 8000A2BC 8FB00028 */ lw $s0, 0x28($sp) +/* 00AEC0 8000A2C0 8FB1002C */ lw $s1, 0x2c($sp) +/* 00AEC4 8000A2C4 8FB20030 */ lw $s2, 0x30($sp) +/* 00AEC8 8000A2C8 8FB30034 */ lw $s3, 0x34($sp) +/* 00AECC 8000A2CC 8FB40038 */ lw $s4, 0x38($sp) +/* 00AED0 8000A2D0 8FB5003C */ lw $s5, 0x3c($sp) +/* 00AED4 8000A2D4 8FB60040 */ lw $s6, 0x40($sp) +/* 00AED8 8000A2D8 8FB70044 */ lw $s7, 0x44($sp) +/* 00AEDC 8000A2DC 8FBE0048 */ lw $fp, 0x48($sp) +/* 00AEE0 8000A2E0 03E00008 */ jr $ra +/* 00AEE4 8000A2E4 27BD0050 */ addiu $sp, $sp, 0x50 + diff --git a/asm/non_matchings/unknown_005740/func_80004B40.s b/asm/non_matchings/audio_vehicle/func_80004B40.s similarity index 97% rename from asm/non_matchings/unknown_005740/func_80004B40.s rename to asm/non_matchings/audio_vehicle/func_80004B40.s index 30c22c34..8af6a50a 100644 --- a/asm/non_matchings/unknown_005740/func_80004B40.s +++ b/asm/non_matchings/audio_vehicle/func_80004B40.s @@ -1,382 +1,382 @@ -.late_rodata -glabel D_800E4BF0 -.float 10000.0 - -.text -glabel func_80004B40 -/* 005740 80004B40 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 005744 80004B44 AFB30024 */ sw $s3, 0x24($sp) -/* 005748 80004B48 AFB00018 */ sw $s0, 0x18($sp) -/* 00574C 80004B4C 2881000B */ slti $at, $a0, 0xb -/* 005750 80004B50 00808025 */ move $s0, $a0 -/* 005754 80004B54 00A09825 */ move $s3, $a1 -/* 005758 80004B58 AFBF0034 */ sw $ra, 0x34($sp) -/* 00575C 80004B5C AFB60030 */ sw $s6, 0x30($sp) -/* 005760 80004B60 AFB5002C */ sw $s5, 0x2c($sp) -/* 005764 80004B64 AFB40028 */ sw $s4, 0x28($sp) -/* 005768 80004B68 AFB20020 */ sw $s2, 0x20($sp) -/* 00576C 80004B6C 14200002 */ bnez $at, .L80004B78 -/* 005770 80004B70 AFB1001C */ sw $s1, 0x1c($sp) -/* 005774 80004B74 2410000B */ li $s0, 11 -.L80004B78: -/* 005778 80004B78 3C0E800E */ lui $t6, %hi(D_800DC6D8) # $t6, 0x800e -/* 00577C 80004B7C 8DCEC6D8 */ lw $t6, %lo(D_800DC6D8)($t6) -/* 005780 80004B80 00000000 */ nop -/* 005784 80004B84 11C00009 */ beqz $t6, .L80004BAC -/* 005788 80004B88 3C028012 */ lui $v0, %hi(D_80119C30) # $v0, 0x8012 -/* 00578C 80004B8C 3C038012 */ lui $v1, %hi(D_80119C38) # $v1, 0x8012 -/* 005790 80004B90 24639C38 */ addiu $v1, %lo(D_80119C38) # addiu $v1, $v1, -0x63c8 -/* 005794 80004B94 24429C30 */ addiu $v0, %lo(D_80119C30) # addiu $v0, $v0, -0x63d0 -.L80004B98: -/* 005798 80004B98 24420004 */ addiu $v0, $v0, 4 -/* 00579C 80004B9C 1443FFFE */ bne $v0, $v1, .L80004B98 -/* 0057A0 80004BA0 AC40FFFC */ sw $zero, -4($v0) -/* 0057A4 80004BA4 3C01800E */ lui $at, %hi(D_800DC6D8) # $at, 0x800e -/* 0057A8 80004BA8 AC20C6D8 */ sw $zero, %lo(D_800DC6D8)($at) -.L80004BAC: -/* 0057AC 80004BAC 0C01DB16 */ jal load_asset_section_from_rom -/* 0057B0 80004BB0 24040026 */ li $a0, 38 -/* 0057B4 80004BB4 0013B080 */ sll $s6, $s3, 2 -/* 0057B8 80004BB8 02D3B021 */ addu $s6, $s6, $s3 -/* 0057BC 80004BBC 0016B040 */ sll $s6, $s6, 1 -/* 0057C0 80004BC0 02D0C021 */ addu $t8, $s6, $s0 -/* 0057C4 80004BC4 0018C880 */ sll $t9, $t8, 2 -/* 0057C8 80004BC8 0338C821 */ addu $t9, $t9, $t8 -/* 0057CC 80004BCC AFA2003C */ sw $v0, 0x3c($sp) -/* 0057D0 80004BD0 0019C880 */ sll $t9, $t9, 2 -/* 0057D4 80004BD4 8C4F001C */ lw $t7, 0x1c($v0) -/* 0057D8 80004BD8 3C1200FF */ lui $s2, (0xFFFFFF >> 16) -/* 0057DC 80004BDC 0338C823 */ subu $t9, $t9, $t8 -/* 0057E0 80004BE0 3652FFFF */ ori $s2, $s2, (0xFFFFFF & 0xFFFF) -/* 0057E4 80004BE4 0019C880 */ sll $t9, $t9, 2 -/* 0057E8 80004BE8 02402825 */ move $a1, $s2 -/* 0057EC 80004BEC 2404004C */ li $a0, 76 -/* 0057F0 80004BF0 0C01C327 */ jal allocate_from_main_pool_safe -/* 0057F4 80004BF4 01F98821 */ addu $s1, $t7, $t9 -/* 0057F8 80004BF8 0040A825 */ move $s5, $v0 -/* 0057FC 80004BFC 24040027 */ li $a0, 39 -/* 005800 80004C00 00402825 */ move $a1, $v0 -/* 005804 80004C04 02203025 */ move $a2, $s1 -/* 005808 80004C08 0C01DB9A */ jal load_asset_to_address -/* 00580C 80004C0C 2407004C */ li $a3, 76 -/* 005810 80004C10 240400E0 */ li $a0, 224 -/* 005814 80004C14 0C01C327 */ jal allocate_from_main_pool_safe -/* 005818 80004C18 02402825 */ move $a1, $s2 -/* 00581C 80004C1C AFA20044 */ sw $v0, 0x44($sp) -/* 005820 80004C20 00401825 */ move $v1, $v0 -/* 005824 80004C24 00003825 */ move $a3, $zero -/* 005828 80004C28 240400E0 */ li $a0, 224 -.L80004C2C: -/* 00582C 80004C2C 24E70004 */ addiu $a3, $a3, 4 -/* 005830 80004C30 A0600001 */ sb $zero, 1($v1) -/* 005834 80004C34 A0600002 */ sb $zero, 2($v1) -/* 005838 80004C38 A0600003 */ sb $zero, 3($v1) -/* 00583C 80004C3C 24630004 */ addiu $v1, $v1, 4 -/* 005840 80004C40 14E4FFFA */ bne $a3, $a0, .L80004C2C -/* 005844 80004C44 A060FFFC */ sb $zero, -4($v1) -/* 005848 80004C48 92AE0036 */ lbu $t6, 0x36($s5) -/* 00584C 80004C4C 3C01800E */ lui $at, %hi(D_800E4BF0) # $at, 0x800e -/* 005850 80004C50 C4224BF0 */ lwc1 $f2, %lo(D_800E4BF0)($at) -/* 005854 80004C54 A04E0036 */ sb $t6, 0x36($v0) -/* 005858 80004C58 92B80037 */ lbu $t8, 0x37($s5) -/* 00585C 80004C5C 00008025 */ move $s0, $zero -/* 005860 80004C60 A0580037 */ sb $t8, 0x37($v0) -/* 005864 80004C64 92AF0038 */ lbu $t7, 0x38($s5) -/* 005868 80004C68 02A08825 */ move $s1, $s5 -/* 00586C 80004C6C A04F0038 */ sb $t7, 0x38($v0) -/* 005870 80004C70 92B90039 */ lbu $t9, 0x39($s5) -/* 005874 80004C74 02A05825 */ move $t3, $s5 -/* 005878 80004C78 A0590039 */ sb $t9, 0x39($v0) -/* 00587C 80004C7C 92AE003A */ lbu $t6, 0x3a($s5) -/* 005880 80004C80 02A06025 */ move $t4, $s5 -/* 005884 80004C84 A04E0064 */ sb $t6, 0x64($v0) -/* 005888 80004C88 86B80046 */ lh $t8, 0x46($s5) -/* 00588C 80004C8C 00406825 */ move $t5, $v0 -/* 005890 80004C90 44982000 */ mtc1 $t8, $f4 -/* 005894 80004C94 0040F825 */ move $ra, $v0 -/* 005898 80004C98 468021A0 */ cvt.s.w $f6, $f4 -/* 00589C 80004C9C 00404825 */ move $t1, $v0 -/* 0058A0 80004CA0 02A05025 */ move $t2, $s5 -/* 0058A4 80004CA4 46023203 */ div.s $f8, $f6, $f2 -/* 0058A8 80004CA8 00409025 */ move $s2, $v0 -/* 0058AC 80004CAC 02A09825 */ move $s3, $s5 -/* 0058B0 80004CB0 0040A025 */ move $s4, $v0 -/* 0058B4 80004CB4 24080005 */ li $t0, 5 -/* 0058B8 80004CB8 E44800C8 */ swc1 $f8, 0xc8($v0) -/* 0058BC 80004CBC 86AF003E */ lh $t7, 0x3e($s5) -/* 0058C0 80004CC0 00000000 */ nop -/* 0058C4 80004CC4 448F5000 */ mtc1 $t7, $f10 -/* 0058C8 80004CC8 00000000 */ nop -/* 0058CC 80004CCC 46805420 */ cvt.s.w $f16, $f10 -/* 0058D0 80004CD0 00000000 */ nop -/* 0058D4 80004CD4 46028483 */ div.s $f18, $f16, $f2 -/* 0058D8 80004CD8 E45200B0 */ swc1 $f18, 0xb0($v0) -/* 0058DC 80004CDC 86B90040 */ lh $t9, 0x40($s5) -/* 0058E0 80004CE0 00000000 */ nop -/* 0058E4 80004CE4 44992000 */ mtc1 $t9, $f4 -/* 0058E8 80004CE8 00000000 */ nop -/* 0058EC 80004CEC 468021A0 */ cvt.s.w $f6, $f4 -/* 0058F0 80004CF0 00000000 */ nop -/* 0058F4 80004CF4 46023203 */ div.s $f8, $f6, $f2 -/* 0058F8 80004CF8 E44800B4 */ swc1 $f8, 0xb4($v0) -/* 0058FC 80004CFC 86AE0042 */ lh $t6, 0x42($s5) -/* 005900 80004D00 00000000 */ nop -/* 005904 80004D04 448E5000 */ mtc1 $t6, $f10 -/* 005908 80004D08 00000000 */ nop -/* 00590C 80004D0C 46805420 */ cvt.s.w $f16, $f10 -/* 005910 80004D10 00000000 */ nop -/* 005914 80004D14 46028483 */ div.s $f18, $f16, $f2 -/* 005918 80004D18 E45200C0 */ swc1 $f18, 0xc0($v0) -/* 00591C 80004D1C 86B80044 */ lh $t8, 0x44($s5) -/* 005920 80004D20 00000000 */ nop -/* 005924 80004D24 44982000 */ mtc1 $t8, $f4 -/* 005928 80004D28 00000000 */ nop -/* 00592C 80004D2C 468021A0 */ cvt.s.w $f6, $f4 -/* 005930 80004D30 00000000 */ nop -/* 005934 80004D34 46023203 */ div.s $f8, $f6, $f2 -/* 005938 80004D38 E44800C4 */ swc1 $f8, 0xc4($v0) -/* 00593C 80004D3C 86AF003C */ lh $t7, 0x3c($s5) -/* 005940 80004D40 00000000 */ nop -/* 005944 80004D44 448F5000 */ mtc1 $t7, $f10 -/* 005948 80004D48 00000000 */ nop -/* 00594C 80004D4C 46805420 */ cvt.s.w $f16, $f10 -/* 005950 80004D50 44805000 */ mtc1 $zero, $f10 -/* 005954 80004D54 46028483 */ div.s $f18, $f16, $f2 -/* 005958 80004D58 E45200BC */ swc1 $f18, 0xbc($v0) -/* 00595C 80004D5C 92B9003B */ lbu $t9, 0x3b($s5) -/* 005960 80004D60 00000000 */ nop -/* 005964 80004D64 A05900B8 */ sb $t9, 0xb8($v0) -/* 005968 80004D68 86AE0048 */ lh $t6, 0x48($s5) -/* 00596C 80004D6C A04000D8 */ sb $zero, 0xd8($v0) -/* 005970 80004D70 448E2000 */ mtc1 $t6, $f4 -/* 005974 80004D74 00000000 */ nop -/* 005978 80004D78 468021A0 */ cvt.s.w $f6, $f4 -/* 00597C 80004D7C 00000000 */ nop -/* 005980 80004D80 46023203 */ div.s $f8, $f6, $f2 -/* 005984 80004D84 E44800CC */ swc1 $f8, 0xcc($v0) -.L80004D88: -/* 005988 80004D88 96380000 */ lhu $t8, ($s1) -/* 00598C 80004D8C 24070001 */ li $a3, 1 -/* 005990 80004D90 A6980000 */ sh $t8, ($s4) -/* 005994 80004D94 914F0004 */ lbu $t7, 4($t2) -/* 005998 80004D98 25630001 */ addiu $v1, $t3, 1 -/* 00599C 80004D9C A12F0004 */ sb $t7, 4($t1) -/* 0059A0 80004DA0 96790018 */ lhu $t9, 0x18($s3) -/* 0059A4 80004DA4 25850002 */ addiu $a1, $t4, 2 -/* 0059A8 80004DA8 A6590018 */ sh $t9, 0x18($s2) -/* 0059AC 80004DAC 914E000E */ lbu $t6, 0xe($t2) -/* 0059B0 80004DB0 25A40001 */ addiu $a0, $t5, 1 -/* 0059B4 80004DB4 A12E000E */ sb $t6, 0xe($t1) -/* 0059B8 80004DB8 9158002C */ lbu $t8, 0x2c($t2) -/* 0059BC 80004DBC 27E60002 */ addiu $a2, $ra, 2 -/* 0059C0 80004DC0 A138002C */ sb $t8, 0x2c($t1) -.L80004DC4: -/* 0059C4 80004DC4 906F0004 */ lbu $t7, 4($v1) -/* 0059C8 80004DC8 24E70002 */ addiu $a3, $a3, 2 -/* 0059CC 80004DCC A08F0004 */ sb $t7, 4($a0) -/* 0059D0 80004DD0 94B90018 */ lhu $t9, 0x18($a1) -/* 0059D4 80004DD4 24630002 */ addiu $v1, $v1, 2 -/* 0059D8 80004DD8 A4D90018 */ sh $t9, 0x18($a2) -/* 0059DC 80004DDC 906E000C */ lbu $t6, 0xc($v1) -/* 0059E0 80004DE0 24A50004 */ addiu $a1, $a1, 4 -/* 0059E4 80004DE4 A08E000E */ sb $t6, 0xe($a0) -/* 0059E8 80004DE8 9078002A */ lbu $t8, 0x2a($v1) -/* 0059EC 80004DEC 24840002 */ addiu $a0, $a0, 2 -/* 0059F0 80004DF0 A098002A */ sb $t8, 0x2a($a0) -/* 0059F4 80004DF4 906F0003 */ lbu $t7, 3($v1) -/* 0059F8 80004DF8 24C60004 */ addiu $a2, $a2, 4 -/* 0059FC 80004DFC A08F0003 */ sb $t7, 3($a0) -/* 005A00 80004E00 94B90016 */ lhu $t9, 0x16($a1) -/* 005A04 80004E04 00000000 */ nop -/* 005A08 80004E08 A4D90016 */ sh $t9, 0x16($a2) -/* 005A0C 80004E0C 906E000D */ lbu $t6, 0xd($v1) -/* 005A10 80004E10 00000000 */ nop -/* 005A14 80004E14 A08E000D */ sb $t6, 0xd($a0) -/* 005A18 80004E18 9078002B */ lbu $t8, 0x2b($v1) -/* 005A1C 80004E1C 14E8FFE9 */ bne $a3, $t0, .L80004DC4 -/* 005A20 80004E20 A098002B */ sb $t8, 0x2b($a0) -/* 005A24 80004E24 26100002 */ addiu $s0, $s0, 2 -/* 005A28 80004E28 2A010004 */ slti $at, $s0, 4 -/* 005A2C 80004E2C 26310002 */ addiu $s1, $s1, 2 -/* 005A30 80004E30 256B0005 */ addiu $t3, $t3, 5 -/* 005A34 80004E34 258C000A */ addiu $t4, $t4, 0xa -/* 005A38 80004E38 25AD0005 */ addiu $t5, $t5, 5 -/* 005A3C 80004E3C 27FF000A */ addiu $ra, $ra, 0xa -/* 005A40 80004E40 25290005 */ addiu $t1, $t1, 5 -/* 005A44 80004E44 254A0005 */ addiu $t2, $t2, 5 -/* 005A48 80004E48 2652000A */ addiu $s2, $s2, 0xa -/* 005A4C 80004E4C 2673000A */ addiu $s3, $s3, 0xa -/* 005A50 80004E50 1420FFCD */ bnez $at, .L80004D88 -/* 005A54 80004E54 26940002 */ addiu $s4, $s4, 2 -/* 005A58 80004E58 A0400074 */ sb $zero, 0x74($v0) -/* 005A5C 80004E5C E44A006C */ swc1 $f10, 0x6c($v0) -/* 005A60 80004E60 92AF004A */ lbu $t7, 0x4a($s5) -/* 005A64 80004E64 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 005A68 80004E68 448F8000 */ mtc1 $t7, $f16 -/* 005A6C 80004E6C 05E10004 */ bgez $t7, .L80004E80 -/* 005A70 80004E70 468084A0 */ cvt.s.w $f18, $f16 -/* 005A74 80004E74 44812000 */ mtc1 $at, $f4 -/* 005A78 80004E78 00000000 */ nop -/* 005A7C 80004E7C 46049480 */ add.s $f18, $f18, $f4 -.L80004E80: -/* 005A80 80004E80 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 005A84 80004E84 44813000 */ mtc1 $at, $f6 -/* 005A88 80004E88 00000000 */ nop -/* 005A8C 80004E8C 46069203 */ div.s $f8, $f18, $f6 -/* 005A90 80004E90 16C0002B */ bnez $s6, .L80004F40 -/* 005A94 80004E94 E44800D4 */ swc1 $f8, 0xd4($v0) -/* 005A98 80004E98 9059002C */ lbu $t9, 0x2c($v0) -/* 005A9C 80004E9C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 005AA0 80004EA0 44995000 */ mtc1 $t9, $f10 -/* 005AA4 80004EA4 07210004 */ bgez $t9, .L80004EB8 -/* 005AA8 80004EA8 46805420 */ cvt.s.w $f16, $f10 -/* 005AAC 80004EAC 44812000 */ mtc1 $at, $f4 -/* 005AB0 80004EB0 00000000 */ nop -/* 005AB4 80004EB4 46048400 */ add.s $f16, $f16, $f4 -.L80004EB8: -/* 005AB8 80004EB8 944E0018 */ lhu $t6, 0x18($v0) -/* 005ABC 80004EBC E4500054 */ swc1 $f16, 0x54($v0) -/* 005AC0 80004EC0 448E9000 */ mtc1 $t6, $f18 -/* 005AC4 80004EC4 05C10005 */ bgez $t6, .L80004EDC -/* 005AC8 80004EC8 468091A0 */ cvt.s.w $f6, $f18 -/* 005ACC 80004ECC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 005AD0 80004ED0 44814000 */ mtc1 $at, $f8 -/* 005AD4 80004ED4 00000000 */ nop -/* 005AD8 80004ED8 46083180 */ add.s $f6, $f6, $f8 -.L80004EDC: -/* 005ADC 80004EDC 00000000 */ nop -/* 005AE0 80004EE0 46023283 */ div.s $f10, $f6, $f2 -/* 005AE4 80004EE4 90580031 */ lbu $t8, 0x31($v0) -/* 005AE8 80004EE8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 005AEC 80004EEC 44982000 */ mtc1 $t8, $f4 -/* 005AF0 80004EF0 00000000 */ nop -/* 005AF4 80004EF4 46802420 */ cvt.s.w $f16, $f4 -/* 005AF8 80004EF8 07010004 */ bgez $t8, .L80004F0C -/* 005AFC 80004EFC E44A005C */ swc1 $f10, 0x5c($v0) -/* 005B00 80004F00 44819000 */ mtc1 $at, $f18 -/* 005B04 80004F04 00000000 */ nop -/* 005B08 80004F08 46128400 */ add.s $f16, $f16, $f18 -.L80004F0C: -/* 005B0C 80004F0C 944F0022 */ lhu $t7, 0x22($v0) -/* 005B10 80004F10 E4500058 */ swc1 $f16, 0x58($v0) -/* 005B14 80004F14 448F4000 */ mtc1 $t7, $f8 -/* 005B18 80004F18 05E10005 */ bgez $t7, .L80004F30 -/* 005B1C 80004F1C 468041A0 */ cvt.s.w $f6, $f8 -/* 005B20 80004F20 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 005B24 80004F24 44815000 */ mtc1 $at, $f10 -/* 005B28 80004F28 00000000 */ nop -/* 005B2C 80004F2C 460A3180 */ add.s $f6, $f6, $f10 -.L80004F30: -/* 005B30 80004F30 00000000 */ nop -/* 005B34 80004F34 46023103 */ div.s $f4, $f6, $f2 -/* 005B38 80004F38 10000055 */ b .L80005090 -/* 005B3C 80004F3C E4440060 */ swc1 $f4, 0x60($v0) -.L80004F40: -/* 005B40 80004F40 C44000D4 */ lwc1 $f0, 0xd4($v0) -/* 005B44 80004F44 24030001 */ li $v1, 1 -/* 005B48 80004F48 46020482 */ mul.s $f18, $f0, $f2 -/* 005B4C 80004F4C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 -/* 005B50 80004F50 E440005C */ swc1 $f0, 0x5c($v0) -/* 005B54 80004F54 4459F800 */ cfc1 $t9, $31 -/* 005B58 80004F58 44C3F800 */ ctc1 $v1, $31 -/* 005B5C 80004F5C 00000000 */ nop -/* 005B60 80004F60 46009424 */ cvt.w.s $f16, $f18 -/* 005B64 80004F64 4443F800 */ cfc1 $v1, $31 -/* 005B68 80004F68 00000000 */ nop -/* 005B6C 80004F6C 30630078 */ andi $v1, $v1, 0x78 -/* 005B70 80004F70 10600012 */ beqz $v1, .L80004FBC -/* 005B74 80004F74 00000000 */ nop -/* 005B78 80004F78 44818000 */ mtc1 $at, $f16 -/* 005B7C 80004F7C 24030001 */ li $v1, 1 -/* 005B80 80004F80 46109401 */ sub.s $f16, $f18, $f16 -/* 005B84 80004F84 3C018000 */ lui $at, 0x8000 -/* 005B88 80004F88 44C3F800 */ ctc1 $v1, $31 -/* 005B8C 80004F8C 00000000 */ nop -/* 005B90 80004F90 46008424 */ cvt.w.s $f16, $f16 -/* 005B94 80004F94 4443F800 */ cfc1 $v1, $31 -/* 005B98 80004F98 00000000 */ nop -/* 005B9C 80004F9C 30630078 */ andi $v1, $v1, 0x78 -/* 005BA0 80004FA0 14600004 */ bnez $v1, .L80004FB4 -/* 005BA4 80004FA4 00000000 */ nop -/* 005BA8 80004FA8 44038000 */ mfc1 $v1, $f16 -/* 005BAC 80004FAC 10000007 */ b .L80004FCC -/* 005BB0 80004FB0 00611825 */ or $v1, $v1, $at -.L80004FB4: -/* 005BB4 80004FB4 10000005 */ b .L80004FCC -/* 005BB8 80004FB8 2403FFFF */ li $v1, -1 -.L80004FBC: -/* 005BBC 80004FBC 44038000 */ mfc1 $v1, $f16 -/* 005BC0 80004FC0 00000000 */ nop -/* 005BC4 80004FC4 0460FFFB */ bltz $v1, .L80004FB4 -/* 005BC8 80004FC8 00000000 */ nop -.L80004FCC: -/* 005BCC 80004FCC 94580018 */ lhu $t8, 0x18($v0) -/* 005BD0 80004FD0 3065FFFF */ andi $a1, $v1, 0xffff -/* 005BD4 80004FD4 44D9F800 */ ctc1 $t9, $31 -/* 005BD8 80004FD8 00B8082A */ slt $at, $a1, $t8 -/* 005BDC 80004FDC 1420000C */ bnez $at, .L80005010 -/* 005BE0 80004FE0 00002025 */ move $a0, $zero -.L80004FE4: -/* 005BE4 80004FE4 24840001 */ addiu $a0, $a0, 1 -/* 005BE8 80004FE8 308FFFFF */ andi $t7, $a0, 0xffff -/* 005BEC 80004FEC 000FC840 */ sll $t9, $t7, 1 -/* 005BF0 80004FF0 00597021 */ addu $t6, $v0, $t9 -/* 005BF4 80004FF4 95D80018 */ lhu $t8, 0x18($t6) -/* 005BF8 80004FF8 01E02025 */ move $a0, $t7 -/* 005BFC 80004FFC 00B8082A */ slt $at, $a1, $t8 -/* 005C00 80005000 14200003 */ bnez $at, .L80005010 -/* 005C04 80005004 29E10004 */ slti $at, $t7, 4 -/* 005C08 80005008 1420FFF6 */ bnez $at, .L80004FE4 -/* 005C0C 8000500C 00000000 */ nop -.L80005010: -/* 005C10 80005010 2484FFFF */ addiu $a0, $a0, -1 -/* 005C14 80005014 3083FFFF */ andi $v1, $a0, 0xffff -/* 005C18 80005018 0003C840 */ sll $t9, $v1, 1 -/* 005C1C 8000501C 00597021 */ addu $t6, $v0, $t9 -/* 005C20 80005020 95C60018 */ lhu $a2, 0x18($t6) -/* 005C24 80005024 00037840 */ sll $t7, $v1, 1 -/* 005C28 80005028 004FC821 */ addu $t9, $v0, $t7 -/* 005C2C 8000502C 972E001A */ lhu $t6, 0x1a($t9) -/* 005C30 80005030 00A6C023 */ subu $t8, $a1, $a2 -/* 005C34 80005034 44984000 */ mtc1 $t8, $f8 -/* 005C38 80005038 01C6C023 */ subu $t8, $t6, $a2 -/* 005C3C 8000503C 44983000 */ mtc1 $t8, $f6 -/* 005C40 80005040 468042A0 */ cvt.s.w $f10, $f8 -/* 005C44 80005044 0043C821 */ addu $t9, $v0, $v1 -/* 005C48 80005048 00437821 */ addu $t7, $v0, $v1 -/* 005C4C 8000504C 46803120 */ cvt.s.w $f4, $f6 -/* 005C50 80005050 91E7002C */ lbu $a3, 0x2c($t7) -/* 005C54 80005054 932E002D */ lbu $t6, 0x2d($t9) -/* 005C58 80005058 46045003 */ div.s $f0, $f10, $f4 -/* 005C5C 8000505C 01C7C023 */ subu $t8, $t6, $a3 -/* 005C60 80005060 44989000 */ mtc1 $t8, $f18 -/* 005C64 80005064 44873000 */ mtc1 $a3, $f6 -/* 005C68 80005068 46809420 */ cvt.s.w $f16, $f18 -/* 005C6C 8000506C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 005C70 80005070 46008202 */ mul.s $f8, $f16, $f0 -/* 005C74 80005074 04E10004 */ bgez $a3, .L80005088 -/* 005C78 80005078 468032A0 */ cvt.s.w $f10, $f6 -/* 005C7C 8000507C 44812000 */ mtc1 $at, $f4 -/* 005C80 80005080 00000000 */ nop -/* 005C84 80005084 46045280 */ add.s $f10, $f10, $f4 -.L80005088: -/* 005C88 80005088 460A4480 */ add.s $f18, $f8, $f10 -/* 005C8C 8000508C E4520054 */ swc1 $f18, 0x54($v0) -.L80005090: -/* 005C90 80005090 8FA4003C */ lw $a0, 0x3c($sp) -/* 005C94 80005094 0C01C450 */ jal free_from_memory_pool -/* 005C98 80005098 00000000 */ nop -/* 005C9C 8000509C 0C01C450 */ jal free_from_memory_pool -/* 005CA0 800050A0 02A02025 */ move $a0, $s5 -/* 005CA4 800050A4 8FBF0034 */ lw $ra, 0x34($sp) -/* 005CA8 800050A8 8FA20044 */ lw $v0, 0x44($sp) -/* 005CAC 800050AC 8FB00018 */ lw $s0, 0x18($sp) -/* 005CB0 800050B0 8FB1001C */ lw $s1, 0x1c($sp) -/* 005CB4 800050B4 8FB20020 */ lw $s2, 0x20($sp) -/* 005CB8 800050B8 8FB30024 */ lw $s3, 0x24($sp) -/* 005CBC 800050BC 8FB40028 */ lw $s4, 0x28($sp) -/* 005CC0 800050C0 8FB5002C */ lw $s5, 0x2c($sp) -/* 005CC4 800050C4 8FB60030 */ lw $s6, 0x30($sp) -/* 005CC8 800050C8 03E00008 */ jr $ra -/* 005CCC 800050CC 27BD0058 */ addiu $sp, $sp, 0x58 - +.late_rodata +glabel D_800E4BF0 +.float 10000.0 + +.text +glabel func_80004B40 +/* 005740 80004B40 27BDFFA8 */ addiu $sp, $sp, -0x58 +/* 005744 80004B44 AFB30024 */ sw $s3, 0x24($sp) +/* 005748 80004B48 AFB00018 */ sw $s0, 0x18($sp) +/* 00574C 80004B4C 2881000B */ slti $at, $a0, 0xb +/* 005750 80004B50 00808025 */ move $s0, $a0 +/* 005754 80004B54 00A09825 */ move $s3, $a1 +/* 005758 80004B58 AFBF0034 */ sw $ra, 0x34($sp) +/* 00575C 80004B5C AFB60030 */ sw $s6, 0x30($sp) +/* 005760 80004B60 AFB5002C */ sw $s5, 0x2c($sp) +/* 005764 80004B64 AFB40028 */ sw $s4, 0x28($sp) +/* 005768 80004B68 AFB20020 */ sw $s2, 0x20($sp) +/* 00576C 80004B6C 14200002 */ bnez $at, .L80004B78 +/* 005770 80004B70 AFB1001C */ sw $s1, 0x1c($sp) +/* 005774 80004B74 2410000B */ li $s0, 11 +.L80004B78: +/* 005778 80004B78 3C0E800E */ lui $t6, %hi(D_800DC6D8) # $t6, 0x800e +/* 00577C 80004B7C 8DCEC6D8 */ lw $t6, %lo(D_800DC6D8)($t6) +/* 005780 80004B80 00000000 */ nop +/* 005784 80004B84 11C00009 */ beqz $t6, .L80004BAC +/* 005788 80004B88 3C028012 */ lui $v0, %hi(D_80119C30) # $v0, 0x8012 +/* 00578C 80004B8C 3C038012 */ lui $v1, %hi(gRacerSound) # $v1, 0x8012 +/* 005790 80004B90 24639C38 */ addiu $v1, %lo(gRacerSound) # addiu $v1, $v1, -0x63c8 +/* 005794 80004B94 24429C30 */ addiu $v0, %lo(D_80119C30) # addiu $v0, $v0, -0x63d0 +.L80004B98: +/* 005798 80004B98 24420004 */ addiu $v0, $v0, 4 +/* 00579C 80004B9C 1443FFFE */ bne $v0, $v1, .L80004B98 +/* 0057A0 80004BA0 AC40FFFC */ sw $zero, -4($v0) +/* 0057A4 80004BA4 3C01800E */ lui $at, %hi(D_800DC6D8) # $at, 0x800e +/* 0057A8 80004BA8 AC20C6D8 */ sw $zero, %lo(D_800DC6D8)($at) +.L80004BAC: +/* 0057AC 80004BAC 0C01DB16 */ jal load_asset_section_from_rom +/* 0057B0 80004BB0 24040026 */ li $a0, 38 +/* 0057B4 80004BB4 0013B080 */ sll $s6, $s3, 2 +/* 0057B8 80004BB8 02D3B021 */ addu $s6, $s6, $s3 +/* 0057BC 80004BBC 0016B040 */ sll $s6, $s6, 1 +/* 0057C0 80004BC0 02D0C021 */ addu $t8, $s6, $s0 +/* 0057C4 80004BC4 0018C880 */ sll $t9, $t8, 2 +/* 0057C8 80004BC8 0338C821 */ addu $t9, $t9, $t8 +/* 0057CC 80004BCC AFA2003C */ sw $v0, 0x3c($sp) +/* 0057D0 80004BD0 0019C880 */ sll $t9, $t9, 2 +/* 0057D4 80004BD4 8C4F001C */ lw $t7, 0x1c($v0) +/* 0057D8 80004BD8 3C1200FF */ lui $s2, (0xFFFFFF >> 16) +/* 0057DC 80004BDC 0338C823 */ subu $t9, $t9, $t8 +/* 0057E0 80004BE0 3652FFFF */ ori $s2, $s2, (0xFFFFFF & 0xFFFF) +/* 0057E4 80004BE4 0019C880 */ sll $t9, $t9, 2 +/* 0057E8 80004BE8 02402825 */ move $a1, $s2 +/* 0057EC 80004BEC 2404004C */ li $a0, 76 +/* 0057F0 80004BF0 0C01C327 */ jal allocate_from_main_pool_safe +/* 0057F4 80004BF4 01F98821 */ addu $s1, $t7, $t9 +/* 0057F8 80004BF8 0040A825 */ move $s5, $v0 +/* 0057FC 80004BFC 24040027 */ li $a0, 39 +/* 005800 80004C00 00402825 */ move $a1, $v0 +/* 005804 80004C04 02203025 */ move $a2, $s1 +/* 005808 80004C08 0C01DB9A */ jal load_asset_to_address +/* 00580C 80004C0C 2407004C */ li $a3, 76 +/* 005810 80004C10 240400E0 */ li $a0, 224 +/* 005814 80004C14 0C01C327 */ jal allocate_from_main_pool_safe +/* 005818 80004C18 02402825 */ move $a1, $s2 +/* 00581C 80004C1C AFA20044 */ sw $v0, 0x44($sp) +/* 005820 80004C20 00401825 */ move $v1, $v0 +/* 005824 80004C24 00003825 */ move $a3, $zero +/* 005828 80004C28 240400E0 */ li $a0, 224 +.L80004C2C: +/* 00582C 80004C2C 24E70004 */ addiu $a3, $a3, 4 +/* 005830 80004C30 A0600001 */ sb $zero, 1($v1) +/* 005834 80004C34 A0600002 */ sb $zero, 2($v1) +/* 005838 80004C38 A0600003 */ sb $zero, 3($v1) +/* 00583C 80004C3C 24630004 */ addiu $v1, $v1, 4 +/* 005840 80004C40 14E4FFFA */ bne $a3, $a0, .L80004C2C +/* 005844 80004C44 A060FFFC */ sb $zero, -4($v1) +/* 005848 80004C48 92AE0036 */ lbu $t6, 0x36($s5) +/* 00584C 80004C4C 3C01800E */ lui $at, %hi(D_800E4BF0) # $at, 0x800e +/* 005850 80004C50 C4224BF0 */ lwc1 $f2, %lo(D_800E4BF0)($at) +/* 005854 80004C54 A04E0036 */ sb $t6, 0x36($v0) +/* 005858 80004C58 92B80037 */ lbu $t8, 0x37($s5) +/* 00585C 80004C5C 00008025 */ move $s0, $zero +/* 005860 80004C60 A0580037 */ sb $t8, 0x37($v0) +/* 005864 80004C64 92AF0038 */ lbu $t7, 0x38($s5) +/* 005868 80004C68 02A08825 */ move $s1, $s5 +/* 00586C 80004C6C A04F0038 */ sb $t7, 0x38($v0) +/* 005870 80004C70 92B90039 */ lbu $t9, 0x39($s5) +/* 005874 80004C74 02A05825 */ move $t3, $s5 +/* 005878 80004C78 A0590039 */ sb $t9, 0x39($v0) +/* 00587C 80004C7C 92AE003A */ lbu $t6, 0x3a($s5) +/* 005880 80004C80 02A06025 */ move $t4, $s5 +/* 005884 80004C84 A04E0064 */ sb $t6, 0x64($v0) +/* 005888 80004C88 86B80046 */ lh $t8, 0x46($s5) +/* 00588C 80004C8C 00406825 */ move $t5, $v0 +/* 005890 80004C90 44982000 */ mtc1 $t8, $f4 +/* 005894 80004C94 0040F825 */ move $ra, $v0 +/* 005898 80004C98 468021A0 */ cvt.s.w $f6, $f4 +/* 00589C 80004C9C 00404825 */ move $t1, $v0 +/* 0058A0 80004CA0 02A05025 */ move $t2, $s5 +/* 0058A4 80004CA4 46023203 */ div.s $f8, $f6, $f2 +/* 0058A8 80004CA8 00409025 */ move $s2, $v0 +/* 0058AC 80004CAC 02A09825 */ move $s3, $s5 +/* 0058B0 80004CB0 0040A025 */ move $s4, $v0 +/* 0058B4 80004CB4 24080005 */ li $t0, 5 +/* 0058B8 80004CB8 E44800C8 */ swc1 $f8, 0xc8($v0) +/* 0058BC 80004CBC 86AF003E */ lh $t7, 0x3e($s5) +/* 0058C0 80004CC0 00000000 */ nop +/* 0058C4 80004CC4 448F5000 */ mtc1 $t7, $f10 +/* 0058C8 80004CC8 00000000 */ nop +/* 0058CC 80004CCC 46805420 */ cvt.s.w $f16, $f10 +/* 0058D0 80004CD0 00000000 */ nop +/* 0058D4 80004CD4 46028483 */ div.s $f18, $f16, $f2 +/* 0058D8 80004CD8 E45200B0 */ swc1 $f18, 0xb0($v0) +/* 0058DC 80004CDC 86B90040 */ lh $t9, 0x40($s5) +/* 0058E0 80004CE0 00000000 */ nop +/* 0058E4 80004CE4 44992000 */ mtc1 $t9, $f4 +/* 0058E8 80004CE8 00000000 */ nop +/* 0058EC 80004CEC 468021A0 */ cvt.s.w $f6, $f4 +/* 0058F0 80004CF0 00000000 */ nop +/* 0058F4 80004CF4 46023203 */ div.s $f8, $f6, $f2 +/* 0058F8 80004CF8 E44800B4 */ swc1 $f8, 0xb4($v0) +/* 0058FC 80004CFC 86AE0042 */ lh $t6, 0x42($s5) +/* 005900 80004D00 00000000 */ nop +/* 005904 80004D04 448E5000 */ mtc1 $t6, $f10 +/* 005908 80004D08 00000000 */ nop +/* 00590C 80004D0C 46805420 */ cvt.s.w $f16, $f10 +/* 005910 80004D10 00000000 */ nop +/* 005914 80004D14 46028483 */ div.s $f18, $f16, $f2 +/* 005918 80004D18 E45200C0 */ swc1 $f18, 0xc0($v0) +/* 00591C 80004D1C 86B80044 */ lh $t8, 0x44($s5) +/* 005920 80004D20 00000000 */ nop +/* 005924 80004D24 44982000 */ mtc1 $t8, $f4 +/* 005928 80004D28 00000000 */ nop +/* 00592C 80004D2C 468021A0 */ cvt.s.w $f6, $f4 +/* 005930 80004D30 00000000 */ nop +/* 005934 80004D34 46023203 */ div.s $f8, $f6, $f2 +/* 005938 80004D38 E44800C4 */ swc1 $f8, 0xc4($v0) +/* 00593C 80004D3C 86AF003C */ lh $t7, 0x3c($s5) +/* 005940 80004D40 00000000 */ nop +/* 005944 80004D44 448F5000 */ mtc1 $t7, $f10 +/* 005948 80004D48 00000000 */ nop +/* 00594C 80004D4C 46805420 */ cvt.s.w $f16, $f10 +/* 005950 80004D50 44805000 */ mtc1 $zero, $f10 +/* 005954 80004D54 46028483 */ div.s $f18, $f16, $f2 +/* 005958 80004D58 E45200BC */ swc1 $f18, 0xbc($v0) +/* 00595C 80004D5C 92B9003B */ lbu $t9, 0x3b($s5) +/* 005960 80004D60 00000000 */ nop +/* 005964 80004D64 A05900B8 */ sb $t9, 0xb8($v0) +/* 005968 80004D68 86AE0048 */ lh $t6, 0x48($s5) +/* 00596C 80004D6C A04000D8 */ sb $zero, 0xd8($v0) +/* 005970 80004D70 448E2000 */ mtc1 $t6, $f4 +/* 005974 80004D74 00000000 */ nop +/* 005978 80004D78 468021A0 */ cvt.s.w $f6, $f4 +/* 00597C 80004D7C 00000000 */ nop +/* 005980 80004D80 46023203 */ div.s $f8, $f6, $f2 +/* 005984 80004D84 E44800CC */ swc1 $f8, 0xcc($v0) +.L80004D88: +/* 005988 80004D88 96380000 */ lhu $t8, ($s1) +/* 00598C 80004D8C 24070001 */ li $a3, 1 +/* 005990 80004D90 A6980000 */ sh $t8, ($s4) +/* 005994 80004D94 914F0004 */ lbu $t7, 4($t2) +/* 005998 80004D98 25630001 */ addiu $v1, $t3, 1 +/* 00599C 80004D9C A12F0004 */ sb $t7, 4($t1) +/* 0059A0 80004DA0 96790018 */ lhu $t9, 0x18($s3) +/* 0059A4 80004DA4 25850002 */ addiu $a1, $t4, 2 +/* 0059A8 80004DA8 A6590018 */ sh $t9, 0x18($s2) +/* 0059AC 80004DAC 914E000E */ lbu $t6, 0xe($t2) +/* 0059B0 80004DB0 25A40001 */ addiu $a0, $t5, 1 +/* 0059B4 80004DB4 A12E000E */ sb $t6, 0xe($t1) +/* 0059B8 80004DB8 9158002C */ lbu $t8, 0x2c($t2) +/* 0059BC 80004DBC 27E60002 */ addiu $a2, $ra, 2 +/* 0059C0 80004DC0 A138002C */ sb $t8, 0x2c($t1) +.L80004DC4: +/* 0059C4 80004DC4 906F0004 */ lbu $t7, 4($v1) +/* 0059C8 80004DC8 24E70002 */ addiu $a3, $a3, 2 +/* 0059CC 80004DCC A08F0004 */ sb $t7, 4($a0) +/* 0059D0 80004DD0 94B90018 */ lhu $t9, 0x18($a1) +/* 0059D4 80004DD4 24630002 */ addiu $v1, $v1, 2 +/* 0059D8 80004DD8 A4D90018 */ sh $t9, 0x18($a2) +/* 0059DC 80004DDC 906E000C */ lbu $t6, 0xc($v1) +/* 0059E0 80004DE0 24A50004 */ addiu $a1, $a1, 4 +/* 0059E4 80004DE4 A08E000E */ sb $t6, 0xe($a0) +/* 0059E8 80004DE8 9078002A */ lbu $t8, 0x2a($v1) +/* 0059EC 80004DEC 24840002 */ addiu $a0, $a0, 2 +/* 0059F0 80004DF0 A098002A */ sb $t8, 0x2a($a0) +/* 0059F4 80004DF4 906F0003 */ lbu $t7, 3($v1) +/* 0059F8 80004DF8 24C60004 */ addiu $a2, $a2, 4 +/* 0059FC 80004DFC A08F0003 */ sb $t7, 3($a0) +/* 005A00 80004E00 94B90016 */ lhu $t9, 0x16($a1) +/* 005A04 80004E04 00000000 */ nop +/* 005A08 80004E08 A4D90016 */ sh $t9, 0x16($a2) +/* 005A0C 80004E0C 906E000D */ lbu $t6, 0xd($v1) +/* 005A10 80004E10 00000000 */ nop +/* 005A14 80004E14 A08E000D */ sb $t6, 0xd($a0) +/* 005A18 80004E18 9078002B */ lbu $t8, 0x2b($v1) +/* 005A1C 80004E1C 14E8FFE9 */ bne $a3, $t0, .L80004DC4 +/* 005A20 80004E20 A098002B */ sb $t8, 0x2b($a0) +/* 005A24 80004E24 26100002 */ addiu $s0, $s0, 2 +/* 005A28 80004E28 2A010004 */ slti $at, $s0, 4 +/* 005A2C 80004E2C 26310002 */ addiu $s1, $s1, 2 +/* 005A30 80004E30 256B0005 */ addiu $t3, $t3, 5 +/* 005A34 80004E34 258C000A */ addiu $t4, $t4, 0xa +/* 005A38 80004E38 25AD0005 */ addiu $t5, $t5, 5 +/* 005A3C 80004E3C 27FF000A */ addiu $ra, $ra, 0xa +/* 005A40 80004E40 25290005 */ addiu $t1, $t1, 5 +/* 005A44 80004E44 254A0005 */ addiu $t2, $t2, 5 +/* 005A48 80004E48 2652000A */ addiu $s2, $s2, 0xa +/* 005A4C 80004E4C 2673000A */ addiu $s3, $s3, 0xa +/* 005A50 80004E50 1420FFCD */ bnez $at, .L80004D88 +/* 005A54 80004E54 26940002 */ addiu $s4, $s4, 2 +/* 005A58 80004E58 A0400074 */ sb $zero, 0x74($v0) +/* 005A5C 80004E5C E44A006C */ swc1 $f10, 0x6c($v0) +/* 005A60 80004E60 92AF004A */ lbu $t7, 0x4a($s5) +/* 005A64 80004E64 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 005A68 80004E68 448F8000 */ mtc1 $t7, $f16 +/* 005A6C 80004E6C 05E10004 */ bgez $t7, .L80004E80 +/* 005A70 80004E70 468084A0 */ cvt.s.w $f18, $f16 +/* 005A74 80004E74 44812000 */ mtc1 $at, $f4 +/* 005A78 80004E78 00000000 */ nop +/* 005A7C 80004E7C 46049480 */ add.s $f18, $f18, $f4 +.L80004E80: +/* 005A80 80004E80 3C0142C8 */ li $at, 0x42C80000 # 100.000000 +/* 005A84 80004E84 44813000 */ mtc1 $at, $f6 +/* 005A88 80004E88 00000000 */ nop +/* 005A8C 80004E8C 46069203 */ div.s $f8, $f18, $f6 +/* 005A90 80004E90 16C0002B */ bnez $s6, .L80004F40 +/* 005A94 80004E94 E44800D4 */ swc1 $f8, 0xd4($v0) +/* 005A98 80004E98 9059002C */ lbu $t9, 0x2c($v0) +/* 005A9C 80004E9C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 005AA0 80004EA0 44995000 */ mtc1 $t9, $f10 +/* 005AA4 80004EA4 07210004 */ bgez $t9, .L80004EB8 +/* 005AA8 80004EA8 46805420 */ cvt.s.w $f16, $f10 +/* 005AAC 80004EAC 44812000 */ mtc1 $at, $f4 +/* 005AB0 80004EB0 00000000 */ nop +/* 005AB4 80004EB4 46048400 */ add.s $f16, $f16, $f4 +.L80004EB8: +/* 005AB8 80004EB8 944E0018 */ lhu $t6, 0x18($v0) +/* 005ABC 80004EBC E4500054 */ swc1 $f16, 0x54($v0) +/* 005AC0 80004EC0 448E9000 */ mtc1 $t6, $f18 +/* 005AC4 80004EC4 05C10005 */ bgez $t6, .L80004EDC +/* 005AC8 80004EC8 468091A0 */ cvt.s.w $f6, $f18 +/* 005ACC 80004ECC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 005AD0 80004ED0 44814000 */ mtc1 $at, $f8 +/* 005AD4 80004ED4 00000000 */ nop +/* 005AD8 80004ED8 46083180 */ add.s $f6, $f6, $f8 +.L80004EDC: +/* 005ADC 80004EDC 00000000 */ nop +/* 005AE0 80004EE0 46023283 */ div.s $f10, $f6, $f2 +/* 005AE4 80004EE4 90580031 */ lbu $t8, 0x31($v0) +/* 005AE8 80004EE8 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 005AEC 80004EEC 44982000 */ mtc1 $t8, $f4 +/* 005AF0 80004EF0 00000000 */ nop +/* 005AF4 80004EF4 46802420 */ cvt.s.w $f16, $f4 +/* 005AF8 80004EF8 07010004 */ bgez $t8, .L80004F0C +/* 005AFC 80004EFC E44A005C */ swc1 $f10, 0x5c($v0) +/* 005B00 80004F00 44819000 */ mtc1 $at, $f18 +/* 005B04 80004F04 00000000 */ nop +/* 005B08 80004F08 46128400 */ add.s $f16, $f16, $f18 +.L80004F0C: +/* 005B0C 80004F0C 944F0022 */ lhu $t7, 0x22($v0) +/* 005B10 80004F10 E4500058 */ swc1 $f16, 0x58($v0) +/* 005B14 80004F14 448F4000 */ mtc1 $t7, $f8 +/* 005B18 80004F18 05E10005 */ bgez $t7, .L80004F30 +/* 005B1C 80004F1C 468041A0 */ cvt.s.w $f6, $f8 +/* 005B20 80004F20 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 005B24 80004F24 44815000 */ mtc1 $at, $f10 +/* 005B28 80004F28 00000000 */ nop +/* 005B2C 80004F2C 460A3180 */ add.s $f6, $f6, $f10 +.L80004F30: +/* 005B30 80004F30 00000000 */ nop +/* 005B34 80004F34 46023103 */ div.s $f4, $f6, $f2 +/* 005B38 80004F38 10000055 */ b .L80005090 +/* 005B3C 80004F3C E4440060 */ swc1 $f4, 0x60($v0) +.L80004F40: +/* 005B40 80004F40 C44000D4 */ lwc1 $f0, 0xd4($v0) +/* 005B44 80004F44 24030001 */ li $v1, 1 +/* 005B48 80004F48 46020482 */ mul.s $f18, $f0, $f2 +/* 005B4C 80004F4C 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000 +/* 005B50 80004F50 E440005C */ swc1 $f0, 0x5c($v0) +/* 005B54 80004F54 4459F800 */ cfc1 $t9, $31 +/* 005B58 80004F58 44C3F800 */ ctc1 $v1, $31 +/* 005B5C 80004F5C 00000000 */ nop +/* 005B60 80004F60 46009424 */ cvt.w.s $f16, $f18 +/* 005B64 80004F64 4443F800 */ cfc1 $v1, $31 +/* 005B68 80004F68 00000000 */ nop +/* 005B6C 80004F6C 30630078 */ andi $v1, $v1, 0x78 +/* 005B70 80004F70 10600012 */ beqz $v1, .L80004FBC +/* 005B74 80004F74 00000000 */ nop +/* 005B78 80004F78 44818000 */ mtc1 $at, $f16 +/* 005B7C 80004F7C 24030001 */ li $v1, 1 +/* 005B80 80004F80 46109401 */ sub.s $f16, $f18, $f16 +/* 005B84 80004F84 3C018000 */ lui $at, 0x8000 +/* 005B88 80004F88 44C3F800 */ ctc1 $v1, $31 +/* 005B8C 80004F8C 00000000 */ nop +/* 005B90 80004F90 46008424 */ cvt.w.s $f16, $f16 +/* 005B94 80004F94 4443F800 */ cfc1 $v1, $31 +/* 005B98 80004F98 00000000 */ nop +/* 005B9C 80004F9C 30630078 */ andi $v1, $v1, 0x78 +/* 005BA0 80004FA0 14600004 */ bnez $v1, .L80004FB4 +/* 005BA4 80004FA4 00000000 */ nop +/* 005BA8 80004FA8 44038000 */ mfc1 $v1, $f16 +/* 005BAC 80004FAC 10000007 */ b .L80004FCC +/* 005BB0 80004FB0 00611825 */ or $v1, $v1, $at +.L80004FB4: +/* 005BB4 80004FB4 10000005 */ b .L80004FCC +/* 005BB8 80004FB8 2403FFFF */ li $v1, -1 +.L80004FBC: +/* 005BBC 80004FBC 44038000 */ mfc1 $v1, $f16 +/* 005BC0 80004FC0 00000000 */ nop +/* 005BC4 80004FC4 0460FFFB */ bltz $v1, .L80004FB4 +/* 005BC8 80004FC8 00000000 */ nop +.L80004FCC: +/* 005BCC 80004FCC 94580018 */ lhu $t8, 0x18($v0) +/* 005BD0 80004FD0 3065FFFF */ andi $a1, $v1, 0xffff +/* 005BD4 80004FD4 44D9F800 */ ctc1 $t9, $31 +/* 005BD8 80004FD8 00B8082A */ slt $at, $a1, $t8 +/* 005BDC 80004FDC 1420000C */ bnez $at, .L80005010 +/* 005BE0 80004FE0 00002025 */ move $a0, $zero +.L80004FE4: +/* 005BE4 80004FE4 24840001 */ addiu $a0, $a0, 1 +/* 005BE8 80004FE8 308FFFFF */ andi $t7, $a0, 0xffff +/* 005BEC 80004FEC 000FC840 */ sll $t9, $t7, 1 +/* 005BF0 80004FF0 00597021 */ addu $t6, $v0, $t9 +/* 005BF4 80004FF4 95D80018 */ lhu $t8, 0x18($t6) +/* 005BF8 80004FF8 01E02025 */ move $a0, $t7 +/* 005BFC 80004FFC 00B8082A */ slt $at, $a1, $t8 +/* 005C00 80005000 14200003 */ bnez $at, .L80005010 +/* 005C04 80005004 29E10004 */ slti $at, $t7, 4 +/* 005C08 80005008 1420FFF6 */ bnez $at, .L80004FE4 +/* 005C0C 8000500C 00000000 */ nop +.L80005010: +/* 005C10 80005010 2484FFFF */ addiu $a0, $a0, -1 +/* 005C14 80005014 3083FFFF */ andi $v1, $a0, 0xffff +/* 005C18 80005018 0003C840 */ sll $t9, $v1, 1 +/* 005C1C 8000501C 00597021 */ addu $t6, $v0, $t9 +/* 005C20 80005020 95C60018 */ lhu $a2, 0x18($t6) +/* 005C24 80005024 00037840 */ sll $t7, $v1, 1 +/* 005C28 80005028 004FC821 */ addu $t9, $v0, $t7 +/* 005C2C 8000502C 972E001A */ lhu $t6, 0x1a($t9) +/* 005C30 80005030 00A6C023 */ subu $t8, $a1, $a2 +/* 005C34 80005034 44984000 */ mtc1 $t8, $f8 +/* 005C38 80005038 01C6C023 */ subu $t8, $t6, $a2 +/* 005C3C 8000503C 44983000 */ mtc1 $t8, $f6 +/* 005C40 80005040 468042A0 */ cvt.s.w $f10, $f8 +/* 005C44 80005044 0043C821 */ addu $t9, $v0, $v1 +/* 005C48 80005048 00437821 */ addu $t7, $v0, $v1 +/* 005C4C 8000504C 46803120 */ cvt.s.w $f4, $f6 +/* 005C50 80005050 91E7002C */ lbu $a3, 0x2c($t7) +/* 005C54 80005054 932E002D */ lbu $t6, 0x2d($t9) +/* 005C58 80005058 46045003 */ div.s $f0, $f10, $f4 +/* 005C5C 8000505C 01C7C023 */ subu $t8, $t6, $a3 +/* 005C60 80005060 44989000 */ mtc1 $t8, $f18 +/* 005C64 80005064 44873000 */ mtc1 $a3, $f6 +/* 005C68 80005068 46809420 */ cvt.s.w $f16, $f18 +/* 005C6C 8000506C 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 +/* 005C70 80005070 46008202 */ mul.s $f8, $f16, $f0 +/* 005C74 80005074 04E10004 */ bgez $a3, .L80005088 +/* 005C78 80005078 468032A0 */ cvt.s.w $f10, $f6 +/* 005C7C 8000507C 44812000 */ mtc1 $at, $f4 +/* 005C80 80005080 00000000 */ nop +/* 005C84 80005084 46045280 */ add.s $f10, $f10, $f4 +.L80005088: +/* 005C88 80005088 460A4480 */ add.s $f18, $f8, $f10 +/* 005C8C 8000508C E4520054 */ swc1 $f18, 0x54($v0) +.L80005090: +/* 005C90 80005090 8FA4003C */ lw $a0, 0x3c($sp) +/* 005C94 80005094 0C01C450 */ jal free_from_memory_pool +/* 005C98 80005098 00000000 */ nop +/* 005C9C 8000509C 0C01C450 */ jal free_from_memory_pool +/* 005CA0 800050A0 02A02025 */ move $a0, $s5 +/* 005CA4 800050A4 8FBF0034 */ lw $ra, 0x34($sp) +/* 005CA8 800050A8 8FA20044 */ lw $v0, 0x44($sp) +/* 005CAC 800050AC 8FB00018 */ lw $s0, 0x18($sp) +/* 005CB0 800050B0 8FB1001C */ lw $s1, 0x1c($sp) +/* 005CB4 800050B4 8FB20020 */ lw $s2, 0x20($sp) +/* 005CB8 800050B8 8FB30024 */ lw $s3, 0x24($sp) +/* 005CBC 800050BC 8FB40028 */ lw $s4, 0x28($sp) +/* 005CC0 800050C0 8FB5002C */ lw $s5, 0x2c($sp) +/* 005CC4 800050C4 8FB60030 */ lw $s6, 0x30($sp) +/* 005CC8 800050C8 03E00008 */ jr $ra +/* 005CCC 800050CC 27BD0058 */ addiu $sp, $sp, 0x58 + diff --git a/asm/non_matchings/unknown_005740/func_80005254.s b/asm/non_matchings/audio_vehicle/func_80005254.s similarity index 95% rename from asm/non_matchings/unknown_005740/func_80005254.s rename to asm/non_matchings/audio_vehicle/func_80005254.s index 71bfb23a..fa0ad286 100644 --- a/asm/non_matchings/unknown_005740/func_80005254.s +++ b/asm/non_matchings/audio_vehicle/func_80005254.s @@ -27,8 +27,8 @@ glabel D_800E4C48 .text glabel func_80005254 /* 005E54 80005254 27BDFF60 */ addiu $sp, $sp, -0xa0 -/* 005E58 80005258 3C088012 */ lui $t0, %hi(D_80119C3C) # $t0, 0x8012 -/* 005E5C 8000525C 8D089C3C */ lw $t0, %lo(D_80119C3C)($t0) +/* 005E58 80005258 3C088012 */ lui $t0, %hi(gSoundRacerObj) # $t0, 0x8012 +/* 005E5C 8000525C 8D089C3C */ lw $t0, %lo(gSoundRacerObj)($t0) /* 005E60 80005260 AFBF0034 */ sw $ra, 0x34($sp) /* 005E64 80005264 AFB20030 */ sw $s2, 0x30($sp) /* 005E68 80005268 AFB1002C */ sw $s1, 0x2c($sp) @@ -57,7 +57,7 @@ glabel func_80005254 /* 005EBC 800052BC 3C014180 */ li $at, 0x41800000 # 16.000000 /* 005EC0 800052C0 44812000 */ mtc1 $at, $f4 /* 005EC4 800052C4 45000002 */ bc1f .L800052D0 -/* 005EC8 800052C8 3C078012 */ lui $a3, %hi(D_80119C38) # $a3, 0x8012 +/* 005EC8 800052C8 3C078012 */ lui $a3, %hi(gRacerSound) # $a3, 0x8012 /* 005ECC 800052CC 46000007 */ neg.s $f0, $f0 .L800052D0: /* 005ED0 800052D0 00000000 */ nop @@ -68,7 +68,7 @@ glabel func_80005254 /* 005EE4 800052E4 00006025 */ move $t4, $zero /* 005EE8 800052E8 32588000 */ andi $t8, $s2, 0x8000 /* 005EEC 800052EC 03009025 */ move $s2, $t8 -/* 005EF0 800052F0 3C118012 */ lui $s1, %hi(D_80119C38) # $s1, 0x8012 +/* 005EF0 800052F0 3C118012 */ lui $s1, %hi(gRacerSound) # $s1, 0x8012 /* 005EF4 800052F4 46083282 */ mul.s $f10, $f6, $f8 /* 005EF8 800052F8 444FF800 */ cfc1 $t7, $31 /* 005EFC 800052FC 00000000 */ nop @@ -88,8 +88,8 @@ glabel func_80005254 /* 005F30 80005330 3C01800E */ lui $at, %hi(D_800E4BF8 + 4) # $at, 0x800e /* 005F34 80005334 C4354BF8 */ lwc1 $f21, %lo(D_800E4BF8)($at) /* 005F38 80005338 C4344BFC */ lwc1 $f20, %lo(D_800E4BF8 + 4)($at) -/* 005F3C 8000533C 8CE79C38 */ lw $a3, %lo(D_80119C38)($a3) -/* 005F40 80005340 26319C38 */ addiu $s1, %lo(D_80119C38) # addiu $s1, $s1, -0x63c8 +/* 005F3C 8000533C 8CE79C38 */ lw $a3, %lo(gRacerSound)($a3) +/* 005F40 80005340 26319C38 */ addiu $s1, %lo(gRacerSound) # addiu $s1, $s1, -0x63c8 .L80005344: /* 005F44 80005344 00ECC821 */ addu $t9, $a3, $t4 /* 005F48 80005348 972D0000 */ lhu $t5, ($t9) @@ -257,8 +257,8 @@ glabel func_80005254 /* 00619C 8000559C 2A010033 */ slti $at, $s0, 0x33 /* 0061A0 800055A0 14200036 */ bnez $at, .L8000567C /* 0061A4 800055A4 46004483 */ div.s $f18, $f8, $f0 -/* 0061A8 800055A8 3C088012 */ lui $t0, %hi(D_80119C3C) # $t0, 0x8012 -/* 0061AC 800055AC 8D089C3C */ lw $t0, %lo(D_80119C3C)($t0) +/* 0061A8 800055A8 3C088012 */ lui $t0, %hi(gSoundRacerObj) # $t0, 0x8012 +/* 0061AC 800055AC 8D089C3C */ lw $t0, %lo(gSoundRacerObj)($t0) /* 0061B0 800055B0 00000000 */ nop /* 0061B4 800055B4 81020185 */ lb $v0, 0x185($t0) /* 0061B8 800055B8 00000000 */ nop @@ -283,7 +283,7 @@ glabel func_80005254 /* 006200 80005600 4500000E */ bc1f .L8000563C /* 006204 80005604 00000000 */ nop /* 006208 80005608 448F4000 */ mtc1 $t7, $f8 -/* 00620C 8000560C 3C088012 */ lui $t0, %hi(D_80119C3C) # $t0, 0x8012 +/* 00620C 8000560C 3C088012 */ lui $t0, %hi(gSoundRacerObj) # $t0, 0x8012 /* 006210 80005610 468042A1 */ cvt.d.w $f10, $f8 /* 006214 80005614 00000000 */ nop /* 006218 80005618 462A0103 */ div.d $f4, $f0, $f10 @@ -291,7 +291,7 @@ glabel func_80005254 /* 006220 80005620 46203220 */ cvt.s.d $f8, $f6 /* 006224 80005624 E4E8003C */ swc1 $f8, 0x3c($a3) /* 006228 80005628 8E270000 */ lw $a3, ($s1) -/* 00622C 8000562C 8D089C3C */ lw $t0, %lo(D_80119C3C)($t0) +/* 00622C 8000562C 8D089C3C */ lw $t0, %lo(gSoundRacerObj)($t0) /* 006230 80005630 C4EC003C */ lwc1 $f12, 0x3c($a3) /* 006234 80005634 1000000D */ b .L8000566C /* 006238 80005638 46109101 */ sub.s $f4, $f18, $f16 @@ -301,10 +301,10 @@ glabel func_80005254 /* 006244 80005644 45000008 */ bc1f .L80005668 /* 006248 80005648 00000000 */ nop /* 00624C 8000564C 462002A0 */ cvt.s.d $f10, $f0 -/* 006250 80005650 3C088012 */ lui $t0, %hi(D_80119C3C) # $t0, 0x8012 +/* 006250 80005650 3C088012 */ lui $t0, %hi(gSoundRacerObj) # $t0, 0x8012 /* 006254 80005654 E4EA003C */ swc1 $f10, 0x3c($a3) /* 006258 80005658 8E270000 */ lw $a3, ($s1) -/* 00625C 8000565C 8D089C3C */ lw $t0, %lo(D_80119C3C)($t0) +/* 00625C 8000565C 8D089C3C */ lw $t0, %lo(gSoundRacerObj)($t0) /* 006260 80005660 C4EC003C */ lwc1 $f12, 0x3c($a3) /* 006264 80005664 00000000 */ nop .L80005668: @@ -322,12 +322,12 @@ glabel func_80005254 /* 00628C 8000568C 46005121 */ cvt.d.s $f4, $f10 /* 006290 80005690 46262202 */ mul.d $f8, $f4, $f6 /* 006294 80005694 46109101 */ sub.s $f4, $f18, $f16 -/* 006298 80005698 3C088012 */ lui $t0, %hi(D_80119C3C) # $t0, 0x8012 +/* 006298 80005698 3C088012 */ lui $t0, %hi(gSoundRacerObj) # $t0, 0x8012 /* 00629C 8000569C 462042A0 */ cvt.s.d $f10, $f8 /* 0062A0 800056A0 460E2182 */ mul.s $f6, $f4, $f14 /* 0062A4 800056A4 E4EA003C */ swc1 $f10, 0x3c($a3) /* 0062A8 800056A8 8E270000 */ lw $a3, ($s1) -/* 0062AC 800056AC 8D089C3C */ lw $t0, %lo(D_80119C3C)($t0) +/* 0062AC 800056AC 8D089C3C */ lw $t0, %lo(gSoundRacerObj)($t0) /* 0062B0 800056B0 46103200 */ add.s $f8, $f6, $f16 /* 0062B4 800056B4 C4EA003C */ lwc1 $f10, 0x3c($a3) /* 0062B8 800056B8 00000000 */ nop @@ -336,7 +336,7 @@ glabel func_80005254 /* 0062C0 800056C0 811801E6 */ lb $t8, 0x1e6($t0) /* 0062C4 800056C4 3C014080 */ lui $at, 0x4080 /* 0062C8 800056C8 13000010 */ beqz $t8, .L8000570C -/* 0062CC 800056CC 3C088012 */ lui $t0, %hi(D_80119C3C) # $t0, 0x8012 +/* 0062CC 800056CC 3C088012 */ lui $t0, %hi(gSoundRacerObj) # $t0, 0x8012 # Used to access D_800E4C18 and D_800E4C18 + 4. /* 0062D0 800056D0 3C01800E */ lui $at, %hi(D_800E4C18) # $at, 0x800e /* 0062D4 800056D4 C4274C18 */ lwc1 $f7, %lo(D_800E4C18)($at) @@ -361,7 +361,7 @@ glabel func_80005254 /* 00631C 8000571C E4E60040 */ swc1 $f6, 0x40($a3) .L80005720: /* 006320 80005720 8E270000 */ lw $a3, ($s1) -/* 006324 80005724 8D089C3C */ lw $t0, %lo(D_80119C3C)($t0) +/* 006324 80005724 8D089C3C */ lw $t0, %lo(gSoundRacerObj)($t0) /* 006328 80005728 C4E80040 */ lwc1 $f8, 0x40($a3) /* 00632C 8000572C 811901E2 */ lb $t9, 0x1e2($t0) /* 006330 80005730 00EA1021 */ addu $v0, $a3, $t2 @@ -561,8 +561,8 @@ glabel func_80005254 /* 006610 80005A10 24010001 */ li $at, 1 /* 006614 80005A14 1521FE4B */ bne $t1, $at, .L80005344 /* 006618 80005A18 258C0002 */ addiu $t4, $t4, 2 -/* 00661C 80005A1C 3C088012 */ lui $t0, %hi(D_80119C3C) # $t0, 0x8012 -/* 006620 80005A20 8D089C3C */ lw $t0, %lo(D_80119C3C)($t0) +/* 00661C 80005A1C 3C088012 */ lui $t0, %hi(gSoundRacerObj) # $t0, 0x8012 +/* 006620 80005A20 8D089C3C */ lw $t0, %lo(gSoundRacerObj)($t0) /* 006624 80005A24 00000000 */ nop /* 006628 80005A28 8D180010 */ lw $t8, 0x10($t0) /* 00662C 80005A2C 00000000 */ nop @@ -666,8 +666,8 @@ glabel func_80005254 /* 00679C 80005B9C 00000000 */ nop .L80005BA0: /* 0067A0 80005BA0 10800029 */ beqz $a0, .L80005C48 -/* 0067A4 80005BA4 3C198012 */ lui $t9, %hi(D_80119C3C) # $t9, 0x8012 -/* 0067A8 80005BA8 8F399C3C */ lw $t9, %lo(D_80119C3C)($t9) +/* 0067A4 80005BA4 3C198012 */ lui $t9, %hi(gSoundRacerObj) # $t9, 0x8012 +/* 0067A8 80005BA8 8F399C3C */ lw $t9, %lo(gSoundRacerObj)($t9) /* 0067AC 80005BAC 8FAF00AC */ lw $t7, 0xac($sp) /* 0067B0 80005BB0 832D01E2 */ lb $t5, 0x1e2($t9) /* 0067B4 80005BB4 00003025 */ move $a2, $zero diff --git a/asm/non_matchings/unknown_005740/func_800063EC.s b/asm/non_matchings/audio_vehicle/func_800063EC.s similarity index 95% rename from asm/non_matchings/unknown_005740/func_800063EC.s rename to asm/non_matchings/audio_vehicle/func_800063EC.s index a7060a0a..a2a10fdf 100644 --- a/asm/non_matchings/unknown_005740/func_800063EC.s +++ b/asm/non_matchings/audio_vehicle/func_800063EC.s @@ -18,7 +18,7 @@ glabel func_800063EC /* 006FF4 800063F4 AFA40030 */ sw $a0, 0x30($sp) /* 006FF8 800063F8 AFA50034 */ sw $a1, 0x34($sp) /* 006FFC 800063FC AFA60038 */ sw $a2, 0x38($sp) -/* 007000 80006400 0C0044E7 */ jal func_8001139C +/* 007000 80006400 0C0044E7 */ jal get_race_countdown /* 007004 80006404 AFA7003C */ sw $a3, 0x3c($sp) /* 007008 80006408 1440000F */ bnez $v0, .L80006448 /* 00700C 8000640C 00000000 */ nop @@ -46,8 +46,8 @@ glabel func_800063EC /* 00705C 8000645C 4604903C */ c.lt.s $f18, $f4 /* 007060 80006460 00000000 */ nop /* 007064 80006464 45000014 */ bc1f .L800064B8 -/* 007068 80006468 3C098012 */ lui $t1, %hi(D_80119C38) # $t1, 0x8012 -/* 00706C 8000646C 25299C38 */ addiu $t1, %lo(D_80119C38) # addiu $t1, $t1, -0x63c8 +/* 007068 80006468 3C098012 */ lui $t1, %hi(gRacerSound) # $t1, 0x8012 +/* 00706C 8000646C 25299C38 */ addiu $t1, %lo(gRacerSound) # addiu $t1, $t1, -0x63c8 /* 007070 80006470 8D230000 */ lw $v1, ($t1) /* 007074 80006474 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 /* 007078 80006478 906E0037 */ lbu $t6, 0x37($v1) @@ -68,8 +68,8 @@ glabel func_800063EC /* 0070B0 800064B0 10000092 */ b .L800066FC /* 0070B4 800064B4 E4680054 */ swc1 $f8, 0x54($v1) .L800064B8: -/* 0070B8 800064B8 3C098012 */ lui $t1, %hi(D_80119C38) # $t1, 0x8012 -/* 0070BC 800064BC 25299C38 */ addiu $t1, %lo(D_80119C38) # addiu $t1, $t1, -0x63c8 +/* 0070B8 800064B8 3C098012 */ lui $t1, %hi(gRacerSound) # $t1, 0x8012 +/* 0070BC 800064BC 25299C38 */ addiu $t1, %lo(gRacerSound) # addiu $t1, $t1, -0x63c8 /* 0070C0 800064C0 8D230000 */ lw $v1, ($t1) /* 0070C4 800064C4 3C01800E */ lui $at, %hi(D_800E4C78) # $at, 0x800e /* 0070C8 800064C8 C4264C78 */ lwc1 $f6, %lo(D_800E4C78)($at) @@ -284,11 +284,11 @@ glabel func_800063EC /* 0073C4 800067C4 E7AE0018 */ swc1 $f14, 0x18($sp) /* 0073C8 800067C8 0C028064 */ jal func_800A0190 /* 0073CC 800067CC E7B2002C */ swc1 $f18, 0x2c($sp) -/* 0073D0 800067D0 3C098012 */ lui $t1, %hi(D_80119C38) # $t1, 0x8012 +/* 0073D0 800067D0 3C098012 */ lui $t1, %hi(gRacerSound) # $t1, 0x8012 /* 0073D4 800067D4 C7AE0018 */ lwc1 $f14, 0x18($sp) /* 0073D8 800067D8 C7B2002C */ lwc1 $f18, 0x2c($sp) /* 0073DC 800067DC 14400005 */ bnez $v0, .L800067F4 -/* 0073E0 800067E0 25299C38 */ addiu $t1, %lo(D_80119C38) # addiu $t1, $t1, -0x63c8 +/* 0073E0 800067E0 25299C38 */ addiu $t1, %lo(gRacerSound) # addiu $t1, $t1, -0x63c8 /* 0073E4 800067E4 44802000 */ mtc1 $zero, $f4 /* 0073E8 800067E8 8D390000 */ lw $t9, ($t1) /* 0073EC 800067EC 00000000 */ nop @@ -307,8 +307,8 @@ glabel func_800063EC /* 00741C 8000681C 85840004 */ lh $a0, 4($t4) /* 007420 80006820 0C01C1F1 */ jal sins_f /* 007424 80006824 00000000 */ nop -/* 007428 80006828 3C098012 */ lui $t1, %hi(D_80119C38) # $t1, 0x8012 -/* 00742C 8000682C 25299C38 */ addiu $t1, %lo(D_80119C38) # addiu $t1, $t1, -0x63c8 +/* 007428 80006828 3C098012 */ lui $t1, %hi(gRacerSound) # $t1, 0x8012 +/* 00742C 8000682C 25299C38 */ addiu $t1, %lo(gRacerSound) # addiu $t1, $t1, -0x63c8 /* 007430 80006830 8D230000 */ lw $v1, ($t1) /* 007434 80006834 C7A80028 */ lwc1 $f8, 0x28($sp) /* 007438 80006838 C46A00C4 */ lwc1 $f10, 0xc4($v1) @@ -322,7 +322,7 @@ glabel func_800063EC /* 007458 80006858 44818800 */ mtc1 $at, $f17 /* 00745C 8000685C 44808000 */ mtc1 $zero, $f16 /* 007460 80006860 4606103C */ c.lt.s $f2, $f6 -/* 007464 80006864 3C0D8012 */ lui $t5, %hi(D_80119C3C) # $t5, 0x8012 +/* 007464 80006864 3C0D8012 */ lui $t5, %hi(gSoundRacerObj) # $t5, 0x8012 /* 007468 80006868 45000002 */ bc1f .L80006874 /* 00746C 8000686C 46009021 */ cvt.d.s $f0, $f18 /* 007470 80006870 46001087 */ neg.s $f2, $f2 @@ -348,7 +348,7 @@ glabel func_800063EC /* 0074B0 800068B0 3C01800E */ lui $at, %hi(D_800E4C88) # $at, 0x800e /* 0074B4 800068B4 45010032 */ bc1t .L80006980 /* 0074B8 800068B8 46067380 */ add.s $f14, $f14, $f6 -/* 0074BC 800068BC 8DAD9C3C */ lw $t5, %lo(D_80119C3C)($t5) +/* 0074BC 800068BC 8DAD9C3C */ lw $t5, %lo(gSoundRacerObj)($t5) /* 0074C0 800068C0 00000000 */ nop /* 0074C4 800068C4 81A20185 */ lb $v0, 0x185($t5) /* 0074C8 800068C8 00000000 */ nop @@ -442,9 +442,9 @@ glabel func_800063EC /* 007610 80006A10 44804000 */ mtc1 $zero, $f8 /* 007614 80006A14 E4660060 */ swc1 $f6, 0x60($v1) /* 007618 80006A18 8D2F0000 */ lw $t7, ($t1) -/* 00761C 80006A1C 3C028012 */ lui $v0, %hi(D_80119C3C) # $v0, 0x8012 +/* 00761C 80006A1C 3C028012 */ lui $v0, %hi(gSoundRacerObj) # $v0, 0x8012 /* 007620 80006A20 E5E80058 */ swc1 $f8, 0x58($t7) -/* 007624 80006A24 8C429C3C */ lw $v0, %lo(D_80119C3C)($v0) +/* 007624 80006A24 8C429C3C */ lw $v0, %lo(gSoundRacerObj)($v0) /* 007628 80006A28 2401FFFF */ li $at, -1 /* 00762C 80006A2C 84580000 */ lh $t8, ($v0) /* 007630 80006A30 00000000 */ nop diff --git a/asm/non_matchings/unknown_005740/func_80006FC8.s b/asm/non_matchings/audio_vehicle/func_80006FC8.s similarity index 98% rename from asm/non_matchings/unknown_005740/func_80006FC8.s rename to asm/non_matchings/audio_vehicle/func_80006FC8.s index 487c605d..b942efc1 100644 --- a/asm/non_matchings/unknown_005740/func_80006FC8.s +++ b/asm/non_matchings/audio_vehicle/func_80006FC8.s @@ -55,13 +55,13 @@ glabel func_80006FC8 /* 007C44 80007044 3C01800E */ lui $at, %hi(D_800E4CC4) # $at, 0x800e /* 007C48 80007048 C43E4CC4 */ lwc1 $f30, %lo(D_800E4CC4)($at) /* 007C4C 8000704C 3C01800E */ lui $at, %hi(D_800E4CC8 + 4) # $at, 0x800e -/* 007C50 80007050 3C148012 */ lui $s4, %hi(D_80119C38) # $s4, 0x8012 +/* 007C50 80007050 3C148012 */ lui $s4, %hi(gRacerSound) # $s4, 0x8012 /* 007C54 80007054 C43D4CC8 */ lwc1 $f29, %lo(D_800E4CC8)($at) /* 007C58 80007058 C43C4CCC */ lwc1 $f28, %lo(D_800E4CC8 + 4)($at) /* 007C5C 8000705C 4480C800 */ mtc1 $zero, $f25 /* 007C60 80007060 4480C000 */ mtc1 $zero, $f24 /* 007C64 80007064 8FBE00D8 */ lw $fp, 0xd8($sp) -/* 007C68 80007068 26949C38 */ addiu $s4, %lo(D_80119C38) # addiu $s4, $s4, -0x63c8 +/* 007C68 80007068 26949C38 */ addiu $s4, %lo(gRacerSound) # addiu $s4, $s4, -0x63c8 /* 007C6C 8000706C 0080B025 */ move $s6, $a0 .L80007070: /* 007C70 80007070 8ED80000 */ lw $t8, ($s6) @@ -542,11 +542,11 @@ glabel func_80006FC8 /* 00835C 8000775C 8FAA007C */ lw $t2, 0x7c($sp) /* 008360 80007760 3C01800E */ lui $at, %hi(D_800E4CE0) # $at, 0x800e /* 008364 80007764 C43E4CE0 */ lwc1 $f30, %lo(D_800E4CE0)($at) -/* 008368 80007768 3C148012 */ lui $s4, %hi(D_80119C38) # $s4, 0x8012 +/* 008368 80007768 3C148012 */ lui $s4, %hi(gRacerSound) # $s4, 0x8012 /* 00836C 8000776C 8FBE00D8 */ lw $fp, 0xd8($sp) /* 008370 80007770 29410003 */ slti $at, $t2, 3 /* 008374 80007774 102001E8 */ beqz $at, .L80007F18 -/* 008378 80007778 26949C38 */ addiu $s4, %lo(D_80119C38) # addiu $s4, $s4, -0x63c8 +/* 008378 80007778 26949C38 */ addiu $s4, %lo(gRacerSound) # addiu $s4, $s4, -0x63c8 /* 00837C 8000777C 8FAC00CC */ lw $t4, 0xcc($sp) /* 008380 80007780 0140A825 */ move $s5, $t2 /* 008384 80007784 014C082A */ slt $at, $t2, $t4 @@ -875,8 +875,8 @@ glabel func_80006FC8 /* 008824 80007C24 26D60004 */ addiu $s6, $s6, 4 .L80007C28: /* 008828 80007C28 3C138012 */ lui $s3, %hi(D_80119C30) # $s3, 0x8012 -/* 00882C 80007C2C 3C108012 */ lui $s0, %hi(D_80119C38) # $s0, 0x8012 -/* 008830 80007C30 26109C38 */ addiu $s0, %lo(D_80119C38) # addiu $s0, $s0, -0x63c8 +/* 00882C 80007C2C 3C108012 */ lui $s0, %hi(gRacerSound) # $s0, 0x8012 +/* 008830 80007C30 26109C38 */ addiu $s0, %lo(gRacerSound) # addiu $s0, $s0, -0x63c8 /* 008834 80007C34 26739C30 */ addiu $s3, %lo(D_80119C30) # addiu $s3, $s3, -0x63d0 .L80007C38: /* 008838 80007C38 8E620000 */ lw $v0, ($s3) @@ -1014,12 +1014,12 @@ glabel func_80006FC8 /* 008A1C 80007E1C 16ACFFB1 */ bne $s5, $t4, .L80007CE4 /* 008A20 80007E20 26520004 */ addiu $s2, $s2, 4 .L80007E24: -/* 008A24 80007E24 0C0044E7 */ jal func_8001139C +/* 008A24 80007E24 0C0044E7 */ jal get_race_countdown /* 008A28 80007E28 24170002 */ li $s7, 2 /* 008A2C 80007E2C 1C40003A */ bgtz $v0, .L80007F18 /* 008A30 80007E30 3C138012 */ lui $s3, %hi(D_80119C30) # $s3, 0x8012 -/* 008A34 80007E34 3C108012 */ lui $s0, %hi(D_80119C38) # $s0, 0x8012 -/* 008A38 80007E38 26109C38 */ addiu $s0, %lo(D_80119C38) # addiu $s0, $s0, -0x63c8 +/* 008A34 80007E34 3C108012 */ lui $s0, %hi(gRacerSound) # $s0, 0x8012 +/* 008A38 80007E38 26109C38 */ addiu $s0, %lo(gRacerSound) # addiu $s0, $s0, -0x63c8 /* 008A3C 80007E3C 26739C30 */ addiu $s3, %lo(D_80119C30) # addiu $s3, $s3, -0x63d0 .L80007E40: /* 008A40 80007E40 8E710000 */ lw $s1, ($s3) diff --git a/asm/non_matchings/game_ui/func_800A277C.s b/asm/non_matchings/game_ui/func_800A277C.s index 28a004fa..557a6bde 100644 --- a/asm/non_matchings/game_ui/func_800A277C.s +++ b/asm/non_matchings/game_ui/func_800A277C.s @@ -120,7 +120,7 @@ glabel func_800A277C /* 0A34D8 800A28D8 24010004 */ li $at, 4 /* 0A34DC 800A28DC 1441000D */ bne $v0, $at, .L800A2914 /* 0A34E0 800A28E0 00000000 */ nop -/* 0A34E4 800A28E4 0C0044E7 */ jal func_8001139C +/* 0A34E4 800A28E4 0C0044E7 */ jal get_race_countdown /* 0A34E8 800A28E8 AFA900A8 */ sw $t1, 0xa8($sp) /* 0A34EC 800A28EC 8FA900A8 */ lw $t1, 0xa8($sp) /* 0A34F0 800A28F0 14400006 */ bnez $v0, .L800A290C @@ -287,7 +287,7 @@ glabel func_800A277C .L800A2B54: /* 0A3754 800A2B54 02002025 */ move $a0, $s0 .L800A2B58: -/* 0A3758 800A2B58 0C01874C */ jal func_80061D30 +/* 0A3758 800A2B58 0C01874C */ jal object_animate /* 0A375C 800A2B5C AFA900A8 */ sw $t1, 0xa8($sp) /* 0A3760 800A2B60 8FA900A8 */ lw $t1, 0xa8($sp) /* 0A3764 800A2B64 00000000 */ nop @@ -738,7 +738,7 @@ glabel func_800A277C /* 0A3DFC 800A31FC 00000000 */ nop /* 0A3E00 800A3200 1040004A */ beqz $v0, .L800A332C /* 0A3E04 800A3204 00408025 */ move $s0, $v0 -/* 0A3E08 800A3208 0C0044E7 */ jal func_8001139C +/* 0A3E08 800A3208 0C0044E7 */ jal get_race_countdown /* 0A3E0C 800A320C 00000000 */ nop /* 0A3E10 800A3210 14400047 */ bnez $v0, .L800A3330 /* 0A3E14 800A3214 8FAA00A0 */ lw $t2, 0xa0($sp) diff --git a/asm/non_matchings/game_ui/func_800AA600.s b/asm/non_matchings/game_ui/func_800AA600.s index 30944210..63489c26 100644 --- a/asm/non_matchings/game_ui/func_800AA600.s +++ b/asm/non_matchings/game_ui/func_800AA600.s @@ -105,7 +105,7 @@ glabel func_800AA600 /* 0AB36C 800AA76C ADC20000 */ sw $v0, ($t6) .L800AA770: /* 0AB370 800AA770 8FA40038 */ lw $a0, 0x38($sp) -/* 0AB374 800AA774 0C017E67 */ jal func_8005F99C +/* 0AB374 800AA774 0C017E67 */ jal object_model_init /* 0AB378 800AA778 00002825 */ move $a1, $zero /* 0AB37C 800AA77C 3C098012 */ lui $t1, %hi(gAssetHudElements) # $t1, 0x8012 /* 0AB380 800AA780 860F0006 */ lh $t7, 6($s0) diff --git a/asm/non_matchings/objects/func_8000CC7C.s b/asm/non_matchings/objects/func_8000CC7C.s index e9307ca6..eaef45e7 100644 --- a/asm/non_matchings/objects/func_8000CC7C.s +++ b/asm/non_matchings/objects/func_8000CC7C.s @@ -15,8 +15,8 @@ glabel func_8000CC7C /* 00D87C 8000CC7C 27BDFEB0 */ addiu $sp, $sp, -0x150 /* 00D880 8000CC80 3C018012 */ lui $at, %hi(D_8011AD20) # $at, 0x8012 /* 00D884 8000CC84 A020AD20 */ sb $zero, %lo(D_8011AD20)($at) -/* 00D888 8000CC88 3C018012 */ lui $at, %hi(D_8011ADB0) # $at, 0x8012 -/* 00D88C 8000CC8C AC20ADB0 */ sw $zero, %lo(D_8011ADB0)($at) +/* 00D888 8000CC88 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 +/* 00D88C 8000CC8C AC20ADB0 */ sw $zero, %lo(gEventCountdown)($at) /* 00D890 8000CC90 3C018012 */ lui $at, %hi(gFirstTimeFinish) # $at, 0x8012 /* 00D894 8000CC94 AFB1001C */ sw $s1, 0x1c($sp) /* 00D898 8000CC98 A020ADC4 */ sb $zero, %lo(gFirstTimeFinish)($at) @@ -936,7 +936,7 @@ glabel func_8000CC7C /* 00E570 8000D970 00000000 */ nop glabel L8000D974 /* 00E574 8000D974 02202025 */ move $a0, $s1 -/* 00E578 8000D978 0C0170BC */ jal func_8005C2F0 +/* 00E578 8000D978 0C0170BC */ jal racer_special_init /* 00E57C 8000D97C 02602825 */ move $a1, $s3 /* 00E580 8000D980 8FA40068 */ lw $a0, 0x68($sp) /* 00E584 8000D984 10000003 */ b .L8000D994 @@ -1151,9 +1151,9 @@ glabel L8000D98C /* 00E890 8000DC90 3C0E8012 */ lui $t6, %hi(gNumRacers) # $t6, 0x8012 /* 00E894 8000DC94 8DCEAEF0 */ lw $t6, %lo(gNumRacers)($t6) /* 00E898 8000DC98 24180064 */ li $t8, 100 -/* 00E89C 8000DC9C 3C018012 */ lui $at, %hi(D_8011ADB0) # $at, 0x8012 +/* 00E89C 8000DC9C 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 /* 00E8A0 8000DCA0 19C00068 */ blez $t6, .L8000DE44 -/* 00E8A4 8000DCA4 AC38ADB0 */ sw $t8, %lo(D_8011ADB0)($at) +/* 00E8A4 8000DCA4 AC38ADB0 */ sw $t8, %lo(gEventCountdown)($at) /* 00E8A8 8000DCA8 0000A825 */ move $s5, $zero .L8000DCAC: /* 00E8AC 8000DCAC 3C198012 */ lui $t9, %hi(gRacers) # $t9, 0x8012 @@ -1279,15 +1279,15 @@ glabel L8000D98C /* 00EA64 8000DE64 17200005 */ bnez $t9, .L8000DE7C /* 00EA68 8000DE68 00000000 */ nop /* 00EA6C 8000DE6C 81EFAD3C */ lb $t7, %lo(D_8011AD3C)($t7) -/* 00EA70 8000DE70 3C018012 */ lui $at, %hi(D_8011ADB0) # $at, 0x8012 +/* 00EA70 8000DE70 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 /* 00EA74 8000DE74 11E00004 */ beqz $t7, .L8000DE88 /* 00EA78 8000DE78 00000000 */ nop .L8000DE7C: -/* 00EA7C 8000DE7C 3C018012 */ lui $at, %hi(D_8011ADB0) # $at, 0x8012 +/* 00EA7C 8000DE7C 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 /* 00EA80 8000DE80 10000002 */ b .L8000DE8C -/* 00EA84 8000DE84 AC2DADB0 */ sw $t5, %lo(D_8011ADB0)($at) +/* 00EA84 8000DE84 AC2DADB0 */ sw $t5, %lo(gEventCountdown)($at) .L8000DE88: -/* 00EA88 8000DE88 AC20ADB0 */ sw $zero, %lo(D_8011ADB0)($at) +/* 00EA88 8000DE88 AC20ADB0 */ sw $zero, %lo(gEventCountdown)($at) .L8000DE8C: /* 00EA8C 8000DE8C 8FB80068 */ lw $t8, 0x68($sp) /* 00EA90 8000DE90 8FAE0058 */ lw $t6, 0x58($sp) @@ -1410,8 +1410,8 @@ glabel L8000D98C /* 00EC44 8000E044 00000000 */ nop /* 00EC48 8000E048 0C01C8A6 */ jal func_80072298 /* 00EC4C 8000E04C 00002025 */ move $a0, $zero -/* 00EC50 8000E050 3C018012 */ lui $at, %hi(D_8011ADB0) # $at, 0x8012 -/* 00EC54 8000E054 AC20ADB0 */ sw $zero, %lo(D_8011ADB0)($at) +/* 00EC50 8000E050 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 +/* 00EC54 8000E054 AC20ADB0 */ sw $zero, %lo(gEventCountdown)($at) /* 00EC58 8000E058 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 00EC5C 8000E05C 44816000 */ mtc1 $at, $f12 /* 00EC60 8000E060 0C01AF44 */ jal start_level_music diff --git a/asm/non_matchings/objects/func_800101AC.s b/asm/non_matchings/objects/func_800101AC.s index 4b072f78..d0b6acd1 100644 --- a/asm/non_matchings/objects/func_800101AC.s +++ b/asm/non_matchings/objects/func_800101AC.s @@ -1,582 +1,582 @@ -.late_rodata -glabel jpt_800E5250 -.word L80010374, L800105F8, L800105F8, L800105F8, L80010400, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L80010400, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800104C0, L800105F8, L800105F8, L800105A8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105D0, L800105E4, L800105F8, L800105F8, L800105F8, L800105F8, L800104D8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800104AC, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105A8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L80010508, L800105F8, L80010374, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L8001047C, L8001047C, L800105F8, L800105F8, L800105F8, L8001047C, L8001047C, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L8001044C -glabel jpt_800E5420 -.word L8001063C, L8001063C, L80010664, L8001063C, L8001063C, L80010664, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L80010664, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L8001063C, L80010664, L80010664, L8001063C, L8001063C, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L8001063C, L80010664, L80010664, L80010664, L8001063C, L8001063C, L8001063C, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L80010664, L8001063C, L80010664, L80010664, L80010664, L8001063C - -.text -glabel func_800101AC -/* 010DAC 800101AC 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 010DB0 800101B0 AFBF0034 */ sw $ra, 0x34($sp) -/* 010DB4 800101B4 AFB60030 */ sw $s6, 0x30($sp) -/* 010DB8 800101B8 AFB5002C */ sw $s5, 0x2c($sp) -/* 010DBC 800101BC AFB40028 */ sw $s4, 0x28($sp) -/* 010DC0 800101C0 AFB30024 */ sw $s3, 0x24($sp) -/* 010DC4 800101C4 AFB20020 */ sw $s2, 0x20($sp) -/* 010DC8 800101C8 AFB1001C */ sw $s1, 0x1c($sp) -/* 010DCC 800101CC AFB00018 */ sw $s0, 0x18($sp) -/* 010DD0 800101D0 AFA5003C */ sw $a1, 0x3c($sp) -/* 010DD4 800101D4 848E0006 */ lh $t6, 6($a0) -/* 010DD8 800101D8 0080B025 */ move $s6, $a0 -/* 010DDC 800101DC 31CF8000 */ andi $t7, $t6, 0x8000 -/* 010DE0 800101E0 11E0000A */ beqz $t7, .L8001020C -/* 010DE4 800101E4 00000000 */ nop -/* 010DE8 800101E8 0C02C810 */ jal func_800B2040 -/* 010DEC 800101EC 00000000 */ nop -/* 010DF0 800101F0 3C028012 */ lui $v0, %hi(gParticleCount) # $v0, 0x8012 -/* 010DF4 800101F4 2442AE64 */ addiu $v0, %lo(gParticleCount) # addiu $v0, $v0, -0x519c -/* 010DF8 800101F8 8C580000 */ lw $t8, ($v0) -/* 010DFC 800101FC 00000000 */ nop -/* 010E00 80010200 2719FFFF */ addiu $t9, $t8, -1 -/* 010E04 80010204 100001D9 */ b .L8001096C -/* 010E08 80010208 AC590000 */ sw $t9, ($v0) -.L8001020C: -/* 010E0C 8001020C 8EC30060 */ lw $v1, 0x60($s6) -/* 010E10 80010210 00000000 */ nop -/* 010E14 80010214 10600033 */ beqz $v1, .L800102E4 -/* 010E18 80010218 00000000 */ nop -/* 010E1C 8001021C 8C680000 */ lw $t0, ($v1) -/* 010E20 80010220 0000A825 */ move $s5, $zero -/* 010E24 80010224 1900002F */ blez $t0, .L800102E4 -/* 010E28 80010228 00000000 */ nop -/* 010E2C 8001022C 0000A025 */ move $s4, $zero -/* 010E30 80010230 00744821 */ addu $t1, $v1, $s4 -.L80010234: -/* 010E34 80010234 8D310004 */ lw $s1, 4($t1) -/* 010E38 80010238 00009825 */ move $s3, $zero -/* 010E3C 8001023C 8E220040 */ lw $v0, 0x40($s1) -/* 010E40 80010240 00000000 */ nop -/* 010E44 80010244 80440053 */ lb $a0, 0x53($v0) -/* 010E48 80010248 80520055 */ lb $s2, 0x55($v0) -/* 010E4C 8001024C 1480000E */ bnez $a0, .L80010288 -/* 010E50 80010250 00000000 */ nop -/* 010E54 80010254 1A400017 */ blez $s2, .L800102B4 -/* 010E58 80010258 00008025 */ move $s0, $zero -.L8001025C: -/* 010E5C 8001025C 8E2A0068 */ lw $t2, 0x68($s1) -/* 010E60 80010260 00000000 */ nop -/* 010E64 80010264 01505821 */ addu $t3, $t2, $s0 -/* 010E68 80010268 8D640000 */ lw $a0, ($t3) -/* 010E6C 8001026C 0C017FD0 */ jal func_8005FF40 -/* 010E70 80010270 00000000 */ nop -/* 010E74 80010274 26730001 */ addiu $s3, $s3, 1 -/* 010E78 80010278 1672FFF8 */ bne $s3, $s2, .L8001025C -/* 010E7C 8001027C 26100004 */ addiu $s0, $s0, 4 -/* 010E80 80010280 1000000D */ b .L800102B8 -/* 010E84 80010284 8624002C */ lh $a0, 0x2c($s1) -.L80010288: -/* 010E88 80010288 1A40000A */ blez $s2, .L800102B4 -/* 010E8C 8001028C 00008025 */ move $s0, $zero -.L80010290: -/* 010E90 80010290 8E2C0068 */ lw $t4, 0x68($s1) -/* 010E94 80010294 00000000 */ nop -/* 010E98 80010298 01906821 */ addu $t5, $t4, $s0 -/* 010E9C 8001029C 8DA40000 */ lw $a0, ($t5) -/* 010EA0 800102A0 0C01F32C */ jal free_sprite -/* 010EA4 800102A4 00000000 */ nop -/* 010EA8 800102A8 26730001 */ addiu $s3, $s3, 1 -/* 010EAC 800102AC 1672FFF8 */ bne $s3, $s2, .L80010290 -/* 010EB0 800102B0 26100004 */ addiu $s0, $s0, 4 -.L800102B4: -/* 010EB4 800102B4 8624002C */ lh $a0, 0x2c($s1) -.L800102B8: -/* 010EB8 800102B8 0C003211 */ jal try_free_object_header -/* 010EBC 800102BC 00000000 */ nop -/* 010EC0 800102C0 0C01C450 */ jal free_from_memory_pool -/* 010EC4 800102C4 02202025 */ move $a0, $s1 -/* 010EC8 800102C8 8EC30060 */ lw $v1, 0x60($s6) -/* 010ECC 800102CC 26B50001 */ addiu $s5, $s5, 1 -/* 010ED0 800102D0 8C6E0000 */ lw $t6, ($v1) -/* 010ED4 800102D4 26940004 */ addiu $s4, $s4, 4 -/* 010ED8 800102D8 02AE082A */ slt $at, $s5, $t6 -/* 010EDC 800102DC 1420FFD5 */ bnez $at, .L80010234 -/* 010EE0 800102E0 00744821 */ addu $t1, $v1, $s4 -.L800102E4: -/* 010EE4 800102E4 8ECF0070 */ lw $t7, 0x70($s6) -/* 010EE8 800102E8 00009825 */ move $s3, $zero -/* 010EEC 800102EC 11E00015 */ beqz $t7, .L80010344 -/* 010EF0 800102F0 00000000 */ nop -/* 010EF4 800102F4 8ED80040 */ lw $t8, 0x40($s6) -/* 010EF8 800102F8 0000A825 */ move $s5, $zero -/* 010EFC 800102FC 8319005A */ lb $t9, 0x5a($t8) -/* 010F00 80010300 00000000 */ nop -/* 010F04 80010304 1B20000F */ blez $t9, .L80010344 -/* 010F08 80010308 00000000 */ nop -/* 010F0C 8001030C 0000A025 */ move $s4, $zero -.L80010310: -/* 010F10 80010310 8EC80070 */ lw $t0, 0x70($s6) -/* 010F14 80010314 00000000 */ nop -/* 010F18 80010318 01144821 */ addu $t1, $t0, $s4 -/* 010F1C 8001031C 8D240000 */ lw $a0, ($t1) -/* 010F20 80010320 0C00CAEB */ jal func_80032BAC -/* 010F24 80010324 00000000 */ nop -/* 010F28 80010328 8ECA0040 */ lw $t2, 0x40($s6) -/* 010F2C 8001032C 26B50001 */ addiu $s5, $s5, 1 -/* 010F30 80010330 814B005A */ lb $t3, 0x5a($t2) -/* 010F34 80010334 26940004 */ addiu $s4, $s4, 4 -/* 010F38 80010338 02AB082A */ slt $at, $s5, $t3 -/* 010F3C 8001033C 1420FFF4 */ bnez $at, .L80010310 -/* 010F40 80010340 00000000 */ nop -.L80010344: -/* 010F44 80010344 86C50048 */ lh $a1, 0x48($s6) -/* 010F48 80010348 00000000 */ nop -/* 010F4C 8001034C 24ACFFFF */ addiu $t4, $a1, -1 -/* 010F50 80010350 2D810074 */ sltiu $at, $t4, 0x74 -/* 010F54 80010354 102000A8 */ beqz $at, .L800105F8 -/* 010F58 80010358 000C6080 */ sll $t4, $t4, 2 -/* 010F5C 8001035C 3C01800E */ lui $at, %hi(jpt_800E5250) # $at, 0x800e -/* 010F60 80010360 002C0821 */ addu $at, $at, $t4 -/* 010F64 80010364 8C2C5250 */ lw $t4, %lo(jpt_800E5250)($at) -/* 010F68 80010368 00000000 */ nop -/* 010F6C 8001036C 01800008 */ jr $t4 -/* 010F70 80010370 00000000 */ nop -glabel L80010374 -/* 010F74 80010374 3C038012 */ lui $v1, %hi(gObjectCount) # $v1, 0x8012 -/* 010F78 80010378 8C63AE5C */ lw $v1, %lo(gObjectCount)($v1) -/* 010F7C 8001037C 0000A825 */ move $s5, $zero -/* 010F80 80010380 1860001D */ blez $v1, .L800103F8 -/* 010F84 80010384 0000A025 */ move $s4, $zero -/* 010F88 80010388 24050001 */ li $a1, 1 -/* 010F8C 8001038C 2404003D */ li $a0, 61 -.L80010390: -/* 010F90 80010390 3C0D8012 */ lui $t5, %hi(gObjPtrList) # $t5, 0x8012 -/* 010F94 80010394 8DADAE58 */ lw $t5, %lo(gObjPtrList)($t5) -/* 010F98 80010398 26B50001 */ addiu $s5, $s5, 1 -/* 010F9C 8001039C 01B47021 */ addu $t6, $t5, $s4 -/* 010FA0 800103A0 8DD10000 */ lw $s1, ($t6) -/* 010FA4 800103A4 00000000 */ nop -/* 010FA8 800103A8 862F0048 */ lh $t7, 0x48($s1) -/* 010FAC 800103AC 00000000 */ nop -/* 010FB0 800103B0 148F000D */ bne $a0, $t7, .L800103E8 -/* 010FB4 800103B4 02A3082A */ slt $at, $s5, $v1 -/* 010FB8 800103B8 8E220064 */ lw $v0, 0x64($s1) -/* 010FBC 800103BC 00000000 */ nop -/* 010FC0 800103C0 8C580100 */ lw $t8, 0x100($v0) -/* 010FC4 800103C4 00000000 */ nop -/* 010FC8 800103C8 16D80007 */ bne $s6, $t8, .L800103E8 -/* 010FCC 800103CC 02A3082A */ slt $at, $s5, $v1 -/* 010FD0 800103D0 AC400100 */ sw $zero, 0x100($v0) -/* 010FD4 800103D4 A04500FD */ sb $a1, 0xfd($v0) -/* 010FD8 800103D8 3C038012 */ lui $v1, %hi(gObjectCount) # $v1, 0x8012 -/* 010FDC 800103DC 8C63AE5C */ lw $v1, %lo(gObjectCount)($v1) -/* 010FE0 800103E0 00000000 */ nop -/* 010FE4 800103E4 02A3082A */ slt $at, $s5, $v1 -.L800103E8: -/* 010FE8 800103E8 1420FFE9 */ bnez $at, .L80010390 -/* 010FEC 800103EC 26940004 */ addiu $s4, $s4, 4 -/* 010FF0 800103F0 86C50048 */ lh $a1, 0x48($s6) -/* 010FF4 800103F4 00000000 */ nop -.L800103F8: -/* 010FF8 800103F8 10000080 */ b .L800105FC -/* 010FFC 800103FC 24140012 */ li $s4, 18 -glabel L80010400 -/* 011000 80010400 8ED00064 */ lw $s0, 0x64($s6) -/* 011004 80010404 00000000 */ nop -/* 011008 80010408 8E04001C */ lw $a0, 0x1c($s0) -/* 01100C 8001040C 00000000 */ nop -/* 011010 80010410 1080000C */ beqz $a0, .L80010444 -/* 011014 80010414 00000000 */ nop -/* 011018 80010418 0C0025BE */ jal func_800096F8 -/* 01101C 8001041C 00000000 */ nop -/* 011020 80010420 AE00001C */ sw $zero, 0x1c($s0) -/* 011024 80010424 86C50048 */ lh $a1, 0x48($s6) -/* 011028 80010428 24140012 */ li $s4, 18 -/* 01102C 8001042C 16850005 */ bne $s4, $a1, .L80010444 -/* 011030 80010430 00000000 */ nop -/* 011034 80010434 0C00FC37 */ jal decrease_rocket_sound_timer -/* 011038 80010438 00000000 */ nop -/* 01103C 8001043C 86C50048 */ lh $a1, 0x48($s6) -/* 011040 80010440 00000000 */ nop -.L80010444: -/* 011044 80010444 1000006D */ b .L800105FC -/* 011048 80010448 24140012 */ li $s4, 18 -glabel L8001044C -/* 01104C 8001044C 8ED00064 */ lw $s0, 0x64($s6) -/* 011050 80010450 00000000 */ nop -/* 011054 80010454 8E04001C */ lw $a0, 0x1c($s0) -/* 011058 80010458 00000000 */ nop -/* 01105C 8001045C 10800005 */ beqz $a0, .L80010474 -/* 011060 80010460 00000000 */ nop -/* 011064 80010464 0C0025BE */ jal func_800096F8 -/* 011068 80010468 00000000 */ nop -/* 01106C 8001046C 86C50048 */ lh $a1, 0x48($s6) -/* 011070 80010470 00000000 */ nop -.L80010474: -/* 011074 80010474 10000061 */ b .L800105FC -/* 011078 80010478 24140012 */ li $s4, 18 -glabel L8001047C -/* 01107C 8001047C 8EC20064 */ lw $v0, 0x64($s6) -/* 011080 80010480 00000000 */ nop -/* 011084 80010484 8C430020 */ lw $v1, 0x20($v0) -/* 011088 80010488 00000000 */ nop -/* 01108C 8001048C 10600005 */ beqz $v1, .L800104A4 -/* 011090 80010490 00000000 */ nop -/* 011094 80010494 0C0025BE */ jal func_800096F8 -/* 011098 80010498 00602025 */ move $a0, $v1 -/* 01109C 8001049C 86C50048 */ lh $a1, 0x48($s6) -/* 0110A0 800104A0 00000000 */ nop -.L800104A4: -/* 0110A4 800104A4 10000055 */ b .L800105FC -/* 0110A8 800104A8 24140012 */ li $s4, 18 -glabel L800104AC -/* 0110AC 800104AC 0C02FCF9 */ jal func_800BF3E4 -/* 0110B0 800104B0 02C02025 */ move $a0, $s6 -/* 0110B4 800104B4 86C50048 */ lh $a1, 0x48($s6) -/* 0110B8 800104B8 10000050 */ b .L800105FC -/* 0110BC 800104BC 24140012 */ li $s4, 18 -glabel L800104C0 -/* 0110C0 800104C0 8EC40064 */ lw $a0, 0x64($s6) -/* 0110C4 800104C4 0C00CAEB */ jal func_80032BAC -/* 0110C8 800104C8 00000000 */ nop -/* 0110CC 800104CC 86C50048 */ lh $a1, 0x48($s6) -/* 0110D0 800104D0 1000004A */ b .L800105FC -/* 0110D4 800104D4 24140012 */ li $s4, 18 -glabel L800104D8 -/* 0110D8 800104D8 8EC40064 */ lw $a0, 0x64($s6) -/* 0110DC 800104DC 8FB9003C */ lw $t9, 0x3c($sp) -/* 0110E0 800104E0 10800007 */ beqz $a0, .L80010500 -/* 0110E4 800104E4 00000000 */ nop -/* 0110E8 800104E8 17200005 */ bnez $t9, .L80010500 -/* 0110EC 800104EC 00000000 */ nop -/* 0110F0 800104F0 0C003FEE */ jal free_object -/* 0110F4 800104F4 00000000 */ nop -/* 0110F8 800104F8 86C50048 */ lh $a1, 0x48($s6) -/* 0110FC 800104FC 00000000 */ nop -.L80010500: -/* 011100 80010500 1000003E */ b .L800105FC -/* 011104 80010504 24140012 */ li $s4, 18 -glabel L80010508 -/* 011108 80010508 3C048012 */ lui $a0, %hi(D_8011AE00) # $a0, 0x8012 -/* 01110C 8001050C 2484AE00 */ addiu $a0, %lo(D_8011AE00) # addiu $a0, $a0, -0x5200 -/* 011110 80010510 80830000 */ lb $v1, ($a0) -/* 011114 80010514 3C088012 */ lui $t0, %hi(D_8011ADD8) # $t0, 0x8012 -/* 011118 80010518 1860000E */ blez $v1, .L80010554 -/* 01111C 8001051C 24140012 */ li $s4, 18 -/* 011120 80010520 8D08ADD8 */ lw $t0, %lo(D_8011ADD8)($t0) -/* 011124 80010524 3C028012 */ lui $v0, %hi(D_8011ADD8) # $v0, 0x8012 -/* 011128 80010528 12C8000A */ beq $s6, $t0, .L80010554 -/* 01112C 8001052C 2442ADD8 */ addiu $v0, %lo(D_8011ADD8) # addiu $v0, $v0, -0x5228 -.L80010530: -/* 011130 80010530 26730001 */ addiu $s3, $s3, 1 -/* 011134 80010534 0263082A */ slt $at, $s3, $v1 -/* 011138 80010538 10200006 */ beqz $at, .L80010554 -/* 01113C 8001053C 00134880 */ sll $t1, $s3, 2 -/* 011140 80010540 00495021 */ addu $t2, $v0, $t1 -/* 011144 80010544 8D4B0000 */ lw $t3, ($t2) -/* 011148 80010548 00000000 */ nop -/* 01114C 8001054C 16CBFFF8 */ bne $s6, $t3, .L80010530 -/* 011150 80010550 00000000 */ nop -.L80010554: -/* 011154 80010554 0263082A */ slt $at, $s3, $v1 -/* 011158 80010558 10200010 */ beqz $at, .L8001059C -/* 01115C 8001055C 246CFFFF */ addiu $t4, $v1, -1 -/* 011160 80010560 A08C0000 */ sb $t4, ($a0) -/* 011164 80010564 80830000 */ lb $v1, ($a0) -/* 011168 80010568 00136880 */ sll $t5, $s3, 2 -/* 01116C 8001056C 0263082A */ slt $at, $s3, $v1 -/* 011170 80010570 1020000A */ beqz $at, .L8001059C -/* 011174 80010574 3C0E8012 */ lui $t6, %hi(D_8011ADD8) # $t6, 0x8012 -/* 011178 80010578 25CEADD8 */ addiu $t6, %lo(D_8011ADD8) # addiu $t6, $t6, -0x5228 -/* 01117C 8001057C 00037880 */ sll $t7, $v1, 2 -/* 011180 80010580 01EE2021 */ addu $a0, $t7, $t6 -/* 011184 80010584 01AE1021 */ addu $v0, $t5, $t6 -.L80010588: -/* 011188 80010588 8C580004 */ lw $t8, 4($v0) -/* 01118C 8001058C 24420004 */ addiu $v0, $v0, 4 -/* 011190 80010590 0044082B */ sltu $at, $v0, $a0 -/* 011194 80010594 1420FFFC */ bnez $at, .L80010588 -/* 011198 80010598 AC58FFFC */ sw $t8, -4($v0) -.L8001059C: -/* 01119C 8001059C 86C50048 */ lh $a1, 0x48($s6) -/* 0111A0 800105A0 10000016 */ b .L800105FC -/* 0111A4 800105A4 00009825 */ move $s3, $zero -glabel L800105A8 -/* 0111A8 800105A8 8EC40064 */ lw $a0, 0x64($s6) -/* 0111AC 800105AC 00000000 */ nop -/* 0111B0 800105B0 10800005 */ beqz $a0, .L800105C8 -/* 0111B4 800105B4 00000000 */ nop -/* 0111B8 800105B8 0C01C450 */ jal free_from_memory_pool -/* 0111BC 800105BC 00000000 */ nop -/* 0111C0 800105C0 86C50048 */ lh $a1, 0x48($s6) -/* 0111C4 800105C4 00000000 */ nop -.L800105C8: -/* 0111C8 800105C8 1000000C */ b .L800105FC -/* 0111CC 800105CC 24140012 */ li $s4, 18 -glabel L800105D0 -/* 0111D0 800105D0 0C02B220 */ jal func_800AC880 -/* 0111D4 800105D4 02C02025 */ move $a0, $s6 -/* 0111D8 800105D8 86C50048 */ lh $a1, 0x48($s6) -/* 0111DC 800105DC 10000007 */ b .L800105FC -/* 0111E0 800105E0 24140012 */ li $s4, 18 -glabel L800105E4 -/* 0111E4 800105E4 0C02B3E6 */ jal func_800ACF98 -/* 0111E8 800105E8 02C02025 */ move $a0, $s6 -/* 0111EC 800105EC 86C50048 */ lh $a1, 0x48($s6) -/* 0111F0 800105F0 10000002 */ b .L800105FC -/* 0111F4 800105F4 24140012 */ li $s4, 18 -.L800105F8: -glabel L800105F8 -/* 0111F8 800105F8 24140012 */ li $s4, 18 -.L800105FC: -/* 0111FC 800105FC 28A1000D */ slti $at, $a1, 0xd -/* 011200 80010600 1420000B */ bnez $at, .L80010630 -/* 011204 80010604 00A01025 */ move $v0, $a1 -/* 011208 80010608 2459FFCE */ addiu $t9, $v0, -0x32 -/* 01120C 8001060C 2F210046 */ sltiu $at, $t9, 0x46 -/* 011210 80010610 10200014 */ beqz $at, .L80010664 -/* 011214 80010614 0019C880 */ sll $t9, $t9, 2 -/* 011218 80010618 3C01800E */ lui $at, %hi(jpt_800E5420) # $at, 0x800e -/* 01121C 8001061C 00390821 */ addu $at, $at, $t9 -/* 011220 80010620 8C395420 */ lw $t9, %lo(jpt_800E5420)($at) -/* 011224 80010624 00000000 */ nop -/* 011228 80010628 03200008 */ jr $t9 -/* 01122C 8001062C 00000000 */ nop -.L80010630: -/* 011230 80010630 2401000C */ li $at, 12 -/* 011234 80010634 1441000C */ bne $v0, $at, .L80010668 -/* 011238 80010638 24010001 */ li $at, 1 -glabel L8001063C -/* 01123C 8001063C 8EC20064 */ lw $v0, 0x64($s6) -/* 011240 80010640 00000000 */ nop -/* 011244 80010644 8C440018 */ lw $a0, 0x18($v0) -/* 011248 80010648 00000000 */ nop -/* 01124C 8001064C 10800006 */ beqz $a0, .L80010668 -/* 011250 80010650 24010001 */ li $at, 1 -/* 011254 80010654 0C001223 */ jal func_8000488C -/* 011258 80010658 00000000 */ nop -/* 01125C 8001065C 86C50048 */ lh $a1, 0x48($s6) -/* 011260 80010660 00000000 */ nop -.L80010664: -glabel L80010664 -/* 011264 80010664 24010001 */ li $at, 1 -.L80010668: -/* 011268 80010668 14A10061 */ bne $a1, $at, .L800107F0 -/* 01126C 8001066C 00000000 */ nop -/* 011270 80010670 8ED00064 */ lw $s0, 0x64($s6) -/* 011274 80010674 00000000 */ nop -/* 011278 80010678 8E020018 */ lw $v0, 0x18($s0) -/* 01127C 8001067C 00000000 */ nop -/* 011280 80010680 10400003 */ beqz $v0, .L80010690 -/* 011284 80010684 00000000 */ nop -/* 011288 80010688 0C001223 */ jal func_8000488C -/* 01128C 8001068C 00402025 */ move $a0, $v0 -.L80010690: -/* 011290 80010690 8E020010 */ lw $v0, 0x10($s0) -/* 011294 80010694 00000000 */ nop -/* 011298 80010698 10400003 */ beqz $v0, .L800106A8 -/* 01129C 8001069C 00000000 */ nop -/* 0112A0 800106A0 0C001223 */ jal func_8000488C -/* 0112A4 800106A4 00402025 */ move $a0, $v0 -.L800106A8: -/* 0112A8 800106A8 8E020014 */ lw $v0, 0x14($s0) -/* 0112AC 800106AC 00000000 */ nop -/* 0112B0 800106B0 10400003 */ beqz $v0, .L800106C0 -/* 0112B4 800106B4 00000000 */ nop -/* 0112B8 800106B8 0C001223 */ jal func_8000488C -/* 0112BC 800106BC 00402025 */ move $a0, $v0 -.L800106C0: -/* 0112C0 800106C0 8E02001C */ lw $v0, 0x1c($s0) -/* 0112C4 800106C4 00000000 */ nop -/* 0112C8 800106C8 10400003 */ beqz $v0, .L800106D8 -/* 0112CC 800106CC 00000000 */ nop -/* 0112D0 800106D0 0C001223 */ jal func_8000488C -/* 0112D4 800106D4 00402025 */ move $a0, $v0 -.L800106D8: -/* 0112D8 800106D8 8E020020 */ lw $v0, 0x20($s0) -/* 0112DC 800106DC 00000000 */ nop -/* 0112E0 800106E0 10400003 */ beqz $v0, .L800106F0 -/* 0112E4 800106E4 00000000 */ nop -/* 0112E8 800106E8 0C001223 */ jal func_8000488C -/* 0112EC 800106EC 00402025 */ move $a0, $v0 -.L800106F0: -/* 0112F0 800106F0 8E040024 */ lw $a0, 0x24($s0) -/* 0112F4 800106F4 00000000 */ nop -/* 0112F8 800106F8 10800003 */ beqz $a0, .L80010708 -/* 0112FC 800106FC 00000000 */ nop -/* 011300 80010700 0C0025BE */ jal func_800096F8 -/* 011304 80010704 00000000 */ nop -.L80010708: -/* 011308 80010708 8E04017C */ lw $a0, 0x17c($s0) -/* 01130C 8001070C 00000000 */ nop -/* 011310 80010710 10800003 */ beqz $a0, .L80010720 -/* 011314 80010714 00000000 */ nop -/* 011318 80010718 0C0025BE */ jal func_800096F8 -/* 01131C 8001071C 00000000 */ nop -.L80010720: -/* 011320 80010720 8E040178 */ lw $a0, 0x178($s0) -/* 011324 80010724 00000000 */ nop -/* 011328 80010728 10800003 */ beqz $a0, .L80010738 -/* 01132C 8001072C 00000000 */ nop -/* 011330 80010730 0C001223 */ jal func_8000488C -/* 011334 80010734 00000000 */ nop -.L80010738: -/* 011338 80010738 0C001AB2 */ jal func_80006AC8 -/* 01133C 8001073C 02C02025 */ move $a0, $s6 -/* 011340 80010740 3C158012 */ lui $s5, %hi(gObjectCount) # $s5, 0x8012 -/* 011344 80010744 26B5AE5C */ addiu $s5, %lo(gObjectCount) # addiu $s5, $s5, -0x51a4 -/* 011348 80010748 8EA80000 */ lw $t0, ($s5) -/* 01134C 8001074C 00008025 */ move $s0, $zero -/* 011350 80010750 19000027 */ blez $t0, .L800107F0 -/* 011354 80010754 24120005 */ li $s2, 5 -/* 011358 80010758 2411004C */ li $s1, 76 -.L8001075C: -/* 01135C 8001075C 3C098012 */ lui $t1, %hi(gObjPtrList) # $t1, 0x8012 -/* 011360 80010760 8D29AE58 */ lw $t1, %lo(gObjPtrList)($t1) -/* 011364 80010764 00000000 */ nop -/* 011368 80010768 01305021 */ addu $t2, $t1, $s0 -/* 01136C 8001076C 8D440000 */ lw $a0, ($t2) -/* 011370 80010770 00000000 */ nop -/* 011374 80010774 848B0006 */ lh $t3, 6($a0) -/* 011378 80010778 00000000 */ nop -/* 01137C 8001077C 316C8000 */ andi $t4, $t3, 0x8000 -/* 011380 80010780 1180000B */ beqz $t4, .L800107B0 -/* 011384 80010784 00000000 */ nop -/* 011388 80010788 8C8D003C */ lw $t5, 0x3c($a0) -/* 01138C 8001078C 3C0F8012 */ lui $t7, %hi(gObjPtrList) # $t7, 0x8012 -/* 011390 80010790 16CD0007 */ bne $s6, $t5, .L800107B0 -/* 011394 80010794 00000000 */ nop -/* 011398 80010798 AC80003C */ sw $zero, 0x3c($a0) -/* 01139C 8001079C 8DEFAE58 */ lw $t7, %lo(gObjPtrList)($t7) -/* 0113A0 800107A0 00000000 */ nop -/* 0113A4 800107A4 01F07021 */ addu $t6, $t7, $s0 -/* 0113A8 800107A8 8DC40000 */ lw $a0, ($t6) -/* 0113AC 800107AC 00000000 */ nop -.L800107B0: -/* 0113B0 800107B0 84820048 */ lh $v0, 0x48($a0) -/* 0113B4 800107B4 00000000 */ nop -/* 0113B8 800107B8 12820005 */ beq $s4, $v0, .L800107D0 -/* 0113BC 800107BC 00000000 */ nop -/* 0113C0 800107C0 12220003 */ beq $s1, $v0, .L800107D0 -/* 0113C4 800107C4 00000000 */ nop -/* 0113C8 800107C8 16420003 */ bne $s2, $v0, .L800107D8 -/* 0113CC 800107CC 00000000 */ nop -.L800107D0: -/* 0113D0 800107D0 0C003FEE */ jal free_object -/* 0113D4 800107D4 00000000 */ nop -.L800107D8: -/* 0113D8 800107D8 8EB80000 */ lw $t8, ($s5) -/* 0113DC 800107DC 26730001 */ addiu $s3, $s3, 1 -/* 0113E0 800107E0 0278082A */ slt $at, $s3, $t8 -/* 0113E4 800107E4 1420FFDD */ bnez $at, .L8001075C -/* 0113E8 800107E8 26100004 */ addiu $s0, $s0, 4 -/* 0113EC 800107EC 00009825 */ move $s3, $zero -.L800107F0: -/* 0113F0 800107F0 8EC20050 */ lw $v0, 0x50($s6) -/* 0113F4 800107F4 00000000 */ nop -/* 0113F8 800107F8 10400007 */ beqz $v0, .L80010818 -/* 0113FC 800107FC 00000000 */ nop -/* 011400 80010800 8C440004 */ lw $a0, 4($v0) -/* 011404 80010804 00000000 */ nop -/* 011408 80010808 10800003 */ beqz $a0, .L80010818 -/* 01140C 8001080C 00000000 */ nop -/* 011410 80010810 0C01ECAF */ jal free_texture -/* 011414 80010814 00000000 */ nop -.L80010818: -/* 011418 80010818 8EC20058 */ lw $v0, 0x58($s6) -/* 01141C 8001081C 00000000 */ nop -/* 011420 80010820 10400007 */ beqz $v0, .L80010840 -/* 011424 80010824 00000000 */ nop -/* 011428 80010828 8C440004 */ lw $a0, 4($v0) -/* 01142C 8001082C 00000000 */ nop -/* 011430 80010830 10800003 */ beqz $a0, .L80010840 -/* 011434 80010834 00000000 */ nop -/* 011438 80010838 0C01ECAF */ jal free_texture -/* 01143C 8001083C 00000000 */ nop -.L80010840: -/* 011440 80010840 8EC20040 */ lw $v0, 0x40($s6) -/* 011444 80010844 00000000 */ nop -/* 011448 80010848 80440053 */ lb $a0, 0x53($v0) -/* 01144C 8001084C 80520055 */ lb $s2, 0x55($v0) -/* 011450 80010850 14800013 */ bnez $a0, .L800108A0 -/* 011454 80010854 24010004 */ li $at, 4 -/* 011458 80010858 1A40002E */ blez $s2, .L80010914 -/* 01145C 8001085C 00008025 */ move $s0, $zero -.L80010860: -/* 011460 80010860 8ED90068 */ lw $t9, 0x68($s6) -/* 011464 80010864 00000000 */ nop -/* 011468 80010868 03304021 */ addu $t0, $t9, $s0 -/* 01146C 8001086C 8D020000 */ lw $v0, ($t0) -/* 011470 80010870 00000000 */ nop -/* 011474 80010874 10400003 */ beqz $v0, .L80010884 -/* 011478 80010878 00000000 */ nop -/* 01147C 8001087C 0C017FD0 */ jal func_8005FF40 -/* 011480 80010880 00402025 */ move $a0, $v0 -.L80010884: -/* 011484 80010884 26730001 */ addiu $s3, $s3, 1 -/* 011488 80010888 1672FFF5 */ bne $s3, $s2, .L80010860 -/* 01148C 8001088C 26100004 */ addiu $s0, $s0, 4 -/* 011490 80010890 8EC20040 */ lw $v0, 0x40($s6) -/* 011494 80010894 10000020 */ b .L80010918 -/* 011498 80010898 80430057 */ lb $v1, 0x57($v0) -/* 01149C 8001089C 24010004 */ li $at, 4 -.L800108A0: -/* 0114A0 800108A0 1481000F */ bne $a0, $at, .L800108E0 -/* 0114A4 800108A4 00000000 */ nop -/* 0114A8 800108A8 1A40001A */ blez $s2, .L80010914 -/* 0114AC 800108AC 00008025 */ move $s0, $zero -.L800108B0: -/* 0114B0 800108B0 8EC90068 */ lw $t1, 0x68($s6) -/* 0114B4 800108B4 00000000 */ nop -/* 0114B8 800108B8 01305021 */ addu $t2, $t1, $s0 -/* 0114BC 800108BC 8D440000 */ lw $a0, ($t2) -/* 0114C0 800108C0 0C01ECAF */ jal free_texture -/* 0114C4 800108C4 00000000 */ nop -/* 0114C8 800108C8 26730001 */ addiu $s3, $s3, 1 -/* 0114CC 800108CC 1672FFF8 */ bne $s3, $s2, .L800108B0 -/* 0114D0 800108D0 26100004 */ addiu $s0, $s0, 4 -/* 0114D4 800108D4 8EC20040 */ lw $v0, 0x40($s6) -/* 0114D8 800108D8 1000000F */ b .L80010918 -/* 0114DC 800108DC 80430057 */ lb $v1, 0x57($v0) -.L800108E0: -/* 0114E0 800108E0 1A40000C */ blez $s2, .L80010914 -/* 0114E4 800108E4 00008025 */ move $s0, $zero -.L800108E8: -/* 0114E8 800108E8 8ECB0068 */ lw $t3, 0x68($s6) -/* 0114EC 800108EC 00000000 */ nop -/* 0114F0 800108F0 01706021 */ addu $t4, $t3, $s0 -/* 0114F4 800108F4 8D840000 */ lw $a0, ($t4) -/* 0114F8 800108F8 0C01F32C */ jal free_sprite -/* 0114FC 800108FC 00000000 */ nop -/* 011500 80010900 26730001 */ addiu $s3, $s3, 1 -/* 011504 80010904 1672FFF8 */ bne $s3, $s2, .L800108E8 -/* 011508 80010908 26100004 */ addiu $s0, $s0, 4 -/* 01150C 8001090C 8EC20040 */ lw $v0, 0x40($s6) -/* 011510 80010910 00000000 */ nop -.L80010914: -/* 011514 80010914 80430057 */ lb $v1, 0x57($v0) -.L80010918: -/* 011518 80010918 00000000 */ nop -/* 01151C 8001091C 1860000E */ blez $v1, .L80010958 -/* 011520 80010920 00000000 */ nop -/* 011524 80010924 1860000C */ blez $v1, .L80010958 -/* 011528 80010928 00009825 */ move $s3, $zero -.L8001092C: -/* 01152C 8001092C 8ECD006C */ lw $t5, 0x6c($s6) -/* 011530 80010930 00137940 */ sll $t7, $s3, 5 -/* 011534 80010934 0C02C898 */ jal func_800B2260 -/* 011538 80010938 01AF2021 */ addu $a0, $t5, $t7 -/* 01153C 8001093C 8ECE0040 */ lw $t6, 0x40($s6) -/* 011540 80010940 26730001 */ addiu $s3, $s3, 1 -/* 011544 80010944 81D80057 */ lb $t8, 0x57($t6) -/* 011548 80010948 00000000 */ nop -/* 01154C 8001094C 0278082A */ slt $at, $s3, $t8 -/* 011550 80010950 1420FFF6 */ bnez $at, .L8001092C -/* 011554 80010954 00000000 */ nop -.L80010958: -/* 011558 80010958 86C4002C */ lh $a0, 0x2c($s6) -/* 01155C 8001095C 0C003211 */ jal try_free_object_header -/* 011560 80010960 00000000 */ nop -/* 011564 80010964 0C01C450 */ jal free_from_memory_pool -/* 011568 80010968 02C02025 */ move $a0, $s6 -.L8001096C: -/* 01156C 8001096C 8FBF0034 */ lw $ra, 0x34($sp) -/* 011570 80010970 8FB00018 */ lw $s0, 0x18($sp) -/* 011574 80010974 8FB1001C */ lw $s1, 0x1c($sp) -/* 011578 80010978 8FB20020 */ lw $s2, 0x20($sp) -/* 01157C 8001097C 8FB30024 */ lw $s3, 0x24($sp) -/* 011580 80010980 8FB40028 */ lw $s4, 0x28($sp) -/* 011584 80010984 8FB5002C */ lw $s5, 0x2c($sp) -/* 011588 80010988 8FB60030 */ lw $s6, 0x30($sp) -/* 01158C 8001098C 03E00008 */ jr $ra -/* 011590 80010990 27BD0038 */ addiu $sp, $sp, 0x38 - +.late_rodata +glabel jpt_800E5250 +.word L80010374, L800105F8, L800105F8, L800105F8, L80010400, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L80010400, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800104C0, L800105F8, L800105F8, L800105A8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105D0, L800105E4, L800105F8, L800105F8, L800105F8, L800105F8, L800104D8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800104AC, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105A8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L80010508, L800105F8, L80010374, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L8001047C, L8001047C, L800105F8, L800105F8, L800105F8, L8001047C, L8001047C, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L800105F8, L8001044C +glabel jpt_800E5420 +.word L8001063C, L8001063C, L80010664, L8001063C, L8001063C, L80010664, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L80010664, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L8001063C, L80010664, L80010664, L8001063C, L8001063C, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L8001063C, L80010664, L80010664, L80010664, L8001063C, L8001063C, L8001063C, L8001063C, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L80010664, L8001063C, L80010664, L8001063C, L80010664, L80010664, L80010664, L8001063C + +.text +glabel func_800101AC +/* 010DAC 800101AC 27BDFFC8 */ addiu $sp, $sp, -0x38 +/* 010DB0 800101B0 AFBF0034 */ sw $ra, 0x34($sp) +/* 010DB4 800101B4 AFB60030 */ sw $s6, 0x30($sp) +/* 010DB8 800101B8 AFB5002C */ sw $s5, 0x2c($sp) +/* 010DBC 800101BC AFB40028 */ sw $s4, 0x28($sp) +/* 010DC0 800101C0 AFB30024 */ sw $s3, 0x24($sp) +/* 010DC4 800101C4 AFB20020 */ sw $s2, 0x20($sp) +/* 010DC8 800101C8 AFB1001C */ sw $s1, 0x1c($sp) +/* 010DCC 800101CC AFB00018 */ sw $s0, 0x18($sp) +/* 010DD0 800101D0 AFA5003C */ sw $a1, 0x3c($sp) +/* 010DD4 800101D4 848E0006 */ lh $t6, 6($a0) +/* 010DD8 800101D8 0080B025 */ move $s6, $a0 +/* 010DDC 800101DC 31CF8000 */ andi $t7, $t6, 0x8000 +/* 010DE0 800101E0 11E0000A */ beqz $t7, .L8001020C +/* 010DE4 800101E4 00000000 */ nop +/* 010DE8 800101E8 0C02C810 */ jal func_800B2040 +/* 010DEC 800101EC 00000000 */ nop +/* 010DF0 800101F0 3C028012 */ lui $v0, %hi(gParticleCount) # $v0, 0x8012 +/* 010DF4 800101F4 2442AE64 */ addiu $v0, %lo(gParticleCount) # addiu $v0, $v0, -0x519c +/* 010DF8 800101F8 8C580000 */ lw $t8, ($v0) +/* 010DFC 800101FC 00000000 */ nop +/* 010E00 80010200 2719FFFF */ addiu $t9, $t8, -1 +/* 010E04 80010204 100001D9 */ b .L8001096C +/* 010E08 80010208 AC590000 */ sw $t9, ($v0) +.L8001020C: +/* 010E0C 8001020C 8EC30060 */ lw $v1, 0x60($s6) +/* 010E10 80010210 00000000 */ nop +/* 010E14 80010214 10600033 */ beqz $v1, .L800102E4 +/* 010E18 80010218 00000000 */ nop +/* 010E1C 8001021C 8C680000 */ lw $t0, ($v1) +/* 010E20 80010220 0000A825 */ move $s5, $zero +/* 010E24 80010224 1900002F */ blez $t0, .L800102E4 +/* 010E28 80010228 00000000 */ nop +/* 010E2C 8001022C 0000A025 */ move $s4, $zero +/* 010E30 80010230 00744821 */ addu $t1, $v1, $s4 +.L80010234: +/* 010E34 80010234 8D310004 */ lw $s1, 4($t1) +/* 010E38 80010238 00009825 */ move $s3, $zero +/* 010E3C 8001023C 8E220040 */ lw $v0, 0x40($s1) +/* 010E40 80010240 00000000 */ nop +/* 010E44 80010244 80440053 */ lb $a0, 0x53($v0) +/* 010E48 80010248 80520055 */ lb $s2, 0x55($v0) +/* 010E4C 8001024C 1480000E */ bnez $a0, .L80010288 +/* 010E50 80010250 00000000 */ nop +/* 010E54 80010254 1A400017 */ blez $s2, .L800102B4 +/* 010E58 80010258 00008025 */ move $s0, $zero +.L8001025C: +/* 010E5C 8001025C 8E2A0068 */ lw $t2, 0x68($s1) +/* 010E60 80010260 00000000 */ nop +/* 010E64 80010264 01505821 */ addu $t3, $t2, $s0 +/* 010E68 80010268 8D640000 */ lw $a0, ($t3) +/* 010E6C 8001026C 0C017FD0 */ jal free_3d_model +/* 010E70 80010270 00000000 */ nop +/* 010E74 80010274 26730001 */ addiu $s3, $s3, 1 +/* 010E78 80010278 1672FFF8 */ bne $s3, $s2, .L8001025C +/* 010E7C 8001027C 26100004 */ addiu $s0, $s0, 4 +/* 010E80 80010280 1000000D */ b .L800102B8 +/* 010E84 80010284 8624002C */ lh $a0, 0x2c($s1) +.L80010288: +/* 010E88 80010288 1A40000A */ blez $s2, .L800102B4 +/* 010E8C 8001028C 00008025 */ move $s0, $zero +.L80010290: +/* 010E90 80010290 8E2C0068 */ lw $t4, 0x68($s1) +/* 010E94 80010294 00000000 */ nop +/* 010E98 80010298 01906821 */ addu $t5, $t4, $s0 +/* 010E9C 8001029C 8DA40000 */ lw $a0, ($t5) +/* 010EA0 800102A0 0C01F32C */ jal free_sprite +/* 010EA4 800102A4 00000000 */ nop +/* 010EA8 800102A8 26730001 */ addiu $s3, $s3, 1 +/* 010EAC 800102AC 1672FFF8 */ bne $s3, $s2, .L80010290 +/* 010EB0 800102B0 26100004 */ addiu $s0, $s0, 4 +.L800102B4: +/* 010EB4 800102B4 8624002C */ lh $a0, 0x2c($s1) +.L800102B8: +/* 010EB8 800102B8 0C003211 */ jal try_free_object_header +/* 010EBC 800102BC 00000000 */ nop +/* 010EC0 800102C0 0C01C450 */ jal free_from_memory_pool +/* 010EC4 800102C4 02202025 */ move $a0, $s1 +/* 010EC8 800102C8 8EC30060 */ lw $v1, 0x60($s6) +/* 010ECC 800102CC 26B50001 */ addiu $s5, $s5, 1 +/* 010ED0 800102D0 8C6E0000 */ lw $t6, ($v1) +/* 010ED4 800102D4 26940004 */ addiu $s4, $s4, 4 +/* 010ED8 800102D8 02AE082A */ slt $at, $s5, $t6 +/* 010EDC 800102DC 1420FFD5 */ bnez $at, .L80010234 +/* 010EE0 800102E0 00744821 */ addu $t1, $v1, $s4 +.L800102E4: +/* 010EE4 800102E4 8ECF0070 */ lw $t7, 0x70($s6) +/* 010EE8 800102E8 00009825 */ move $s3, $zero +/* 010EEC 800102EC 11E00015 */ beqz $t7, .L80010344 +/* 010EF0 800102F0 00000000 */ nop +/* 010EF4 800102F4 8ED80040 */ lw $t8, 0x40($s6) +/* 010EF8 800102F8 0000A825 */ move $s5, $zero +/* 010EFC 800102FC 8319005A */ lb $t9, 0x5a($t8) +/* 010F00 80010300 00000000 */ nop +/* 010F04 80010304 1B20000F */ blez $t9, .L80010344 +/* 010F08 80010308 00000000 */ nop +/* 010F0C 8001030C 0000A025 */ move $s4, $zero +.L80010310: +/* 010F10 80010310 8EC80070 */ lw $t0, 0x70($s6) +/* 010F14 80010314 00000000 */ nop +/* 010F18 80010318 01144821 */ addu $t1, $t0, $s4 +/* 010F1C 8001031C 8D240000 */ lw $a0, ($t1) +/* 010F20 80010320 0C00CAEB */ jal func_80032BAC +/* 010F24 80010324 00000000 */ nop +/* 010F28 80010328 8ECA0040 */ lw $t2, 0x40($s6) +/* 010F2C 8001032C 26B50001 */ addiu $s5, $s5, 1 +/* 010F30 80010330 814B005A */ lb $t3, 0x5a($t2) +/* 010F34 80010334 26940004 */ addiu $s4, $s4, 4 +/* 010F38 80010338 02AB082A */ slt $at, $s5, $t3 +/* 010F3C 8001033C 1420FFF4 */ bnez $at, .L80010310 +/* 010F40 80010340 00000000 */ nop +.L80010344: +/* 010F44 80010344 86C50048 */ lh $a1, 0x48($s6) +/* 010F48 80010348 00000000 */ nop +/* 010F4C 8001034C 24ACFFFF */ addiu $t4, $a1, -1 +/* 010F50 80010350 2D810074 */ sltiu $at, $t4, 0x74 +/* 010F54 80010354 102000A8 */ beqz $at, .L800105F8 +/* 010F58 80010358 000C6080 */ sll $t4, $t4, 2 +/* 010F5C 8001035C 3C01800E */ lui $at, %hi(jpt_800E5250) # $at, 0x800e +/* 010F60 80010360 002C0821 */ addu $at, $at, $t4 +/* 010F64 80010364 8C2C5250 */ lw $t4, %lo(jpt_800E5250)($at) +/* 010F68 80010368 00000000 */ nop +/* 010F6C 8001036C 01800008 */ jr $t4 +/* 010F70 80010370 00000000 */ nop +glabel L80010374 +/* 010F74 80010374 3C038012 */ lui $v1, %hi(gObjectCount) # $v1, 0x8012 +/* 010F78 80010378 8C63AE5C */ lw $v1, %lo(gObjectCount)($v1) +/* 010F7C 8001037C 0000A825 */ move $s5, $zero +/* 010F80 80010380 1860001D */ blez $v1, .L800103F8 +/* 010F84 80010384 0000A025 */ move $s4, $zero +/* 010F88 80010388 24050001 */ li $a1, 1 +/* 010F8C 8001038C 2404003D */ li $a0, 61 +.L80010390: +/* 010F90 80010390 3C0D8012 */ lui $t5, %hi(gObjPtrList) # $t5, 0x8012 +/* 010F94 80010394 8DADAE58 */ lw $t5, %lo(gObjPtrList)($t5) +/* 010F98 80010398 26B50001 */ addiu $s5, $s5, 1 +/* 010F9C 8001039C 01B47021 */ addu $t6, $t5, $s4 +/* 010FA0 800103A0 8DD10000 */ lw $s1, ($t6) +/* 010FA4 800103A4 00000000 */ nop +/* 010FA8 800103A8 862F0048 */ lh $t7, 0x48($s1) +/* 010FAC 800103AC 00000000 */ nop +/* 010FB0 800103B0 148F000D */ bne $a0, $t7, .L800103E8 +/* 010FB4 800103B4 02A3082A */ slt $at, $s5, $v1 +/* 010FB8 800103B8 8E220064 */ lw $v0, 0x64($s1) +/* 010FBC 800103BC 00000000 */ nop +/* 010FC0 800103C0 8C580100 */ lw $t8, 0x100($v0) +/* 010FC4 800103C4 00000000 */ nop +/* 010FC8 800103C8 16D80007 */ bne $s6, $t8, .L800103E8 +/* 010FCC 800103CC 02A3082A */ slt $at, $s5, $v1 +/* 010FD0 800103D0 AC400100 */ sw $zero, 0x100($v0) +/* 010FD4 800103D4 A04500FD */ sb $a1, 0xfd($v0) +/* 010FD8 800103D8 3C038012 */ lui $v1, %hi(gObjectCount) # $v1, 0x8012 +/* 010FDC 800103DC 8C63AE5C */ lw $v1, %lo(gObjectCount)($v1) +/* 010FE0 800103E0 00000000 */ nop +/* 010FE4 800103E4 02A3082A */ slt $at, $s5, $v1 +.L800103E8: +/* 010FE8 800103E8 1420FFE9 */ bnez $at, .L80010390 +/* 010FEC 800103EC 26940004 */ addiu $s4, $s4, 4 +/* 010FF0 800103F0 86C50048 */ lh $a1, 0x48($s6) +/* 010FF4 800103F4 00000000 */ nop +.L800103F8: +/* 010FF8 800103F8 10000080 */ b .L800105FC +/* 010FFC 800103FC 24140012 */ li $s4, 18 +glabel L80010400 +/* 011000 80010400 8ED00064 */ lw $s0, 0x64($s6) +/* 011004 80010404 00000000 */ nop +/* 011008 80010408 8E04001C */ lw $a0, 0x1c($s0) +/* 01100C 8001040C 00000000 */ nop +/* 011010 80010410 1080000C */ beqz $a0, .L80010444 +/* 011014 80010414 00000000 */ nop +/* 011018 80010418 0C0025BE */ jal func_800096F8 +/* 01101C 8001041C 00000000 */ nop +/* 011020 80010420 AE00001C */ sw $zero, 0x1c($s0) +/* 011024 80010424 86C50048 */ lh $a1, 0x48($s6) +/* 011028 80010428 24140012 */ li $s4, 18 +/* 01102C 8001042C 16850005 */ bne $s4, $a1, .L80010444 +/* 011030 80010430 00000000 */ nop +/* 011034 80010434 0C00FC37 */ jal decrease_rocket_sound_timer +/* 011038 80010438 00000000 */ nop +/* 01103C 8001043C 86C50048 */ lh $a1, 0x48($s6) +/* 011040 80010440 00000000 */ nop +.L80010444: +/* 011044 80010444 1000006D */ b .L800105FC +/* 011048 80010448 24140012 */ li $s4, 18 +glabel L8001044C +/* 01104C 8001044C 8ED00064 */ lw $s0, 0x64($s6) +/* 011050 80010450 00000000 */ nop +/* 011054 80010454 8E04001C */ lw $a0, 0x1c($s0) +/* 011058 80010458 00000000 */ nop +/* 01105C 8001045C 10800005 */ beqz $a0, .L80010474 +/* 011060 80010460 00000000 */ nop +/* 011064 80010464 0C0025BE */ jal func_800096F8 +/* 011068 80010468 00000000 */ nop +/* 01106C 8001046C 86C50048 */ lh $a1, 0x48($s6) +/* 011070 80010470 00000000 */ nop +.L80010474: +/* 011074 80010474 10000061 */ b .L800105FC +/* 011078 80010478 24140012 */ li $s4, 18 +glabel L8001047C +/* 01107C 8001047C 8EC20064 */ lw $v0, 0x64($s6) +/* 011080 80010480 00000000 */ nop +/* 011084 80010484 8C430020 */ lw $v1, 0x20($v0) +/* 011088 80010488 00000000 */ nop +/* 01108C 8001048C 10600005 */ beqz $v1, .L800104A4 +/* 011090 80010490 00000000 */ nop +/* 011094 80010494 0C0025BE */ jal func_800096F8 +/* 011098 80010498 00602025 */ move $a0, $v1 +/* 01109C 8001049C 86C50048 */ lh $a1, 0x48($s6) +/* 0110A0 800104A0 00000000 */ nop +.L800104A4: +/* 0110A4 800104A4 10000055 */ b .L800105FC +/* 0110A8 800104A8 24140012 */ li $s4, 18 +glabel L800104AC +/* 0110AC 800104AC 0C02FCF9 */ jal func_800BF3E4 +/* 0110B0 800104B0 02C02025 */ move $a0, $s6 +/* 0110B4 800104B4 86C50048 */ lh $a1, 0x48($s6) +/* 0110B8 800104B8 10000050 */ b .L800105FC +/* 0110BC 800104BC 24140012 */ li $s4, 18 +glabel L800104C0 +/* 0110C0 800104C0 8EC40064 */ lw $a0, 0x64($s6) +/* 0110C4 800104C4 0C00CAEB */ jal func_80032BAC +/* 0110C8 800104C8 00000000 */ nop +/* 0110CC 800104CC 86C50048 */ lh $a1, 0x48($s6) +/* 0110D0 800104D0 1000004A */ b .L800105FC +/* 0110D4 800104D4 24140012 */ li $s4, 18 +glabel L800104D8 +/* 0110D8 800104D8 8EC40064 */ lw $a0, 0x64($s6) +/* 0110DC 800104DC 8FB9003C */ lw $t9, 0x3c($sp) +/* 0110E0 800104E0 10800007 */ beqz $a0, .L80010500 +/* 0110E4 800104E4 00000000 */ nop +/* 0110E8 800104E8 17200005 */ bnez $t9, .L80010500 +/* 0110EC 800104EC 00000000 */ nop +/* 0110F0 800104F0 0C003FEE */ jal free_object +/* 0110F4 800104F4 00000000 */ nop +/* 0110F8 800104F8 86C50048 */ lh $a1, 0x48($s6) +/* 0110FC 800104FC 00000000 */ nop +.L80010500: +/* 011100 80010500 1000003E */ b .L800105FC +/* 011104 80010504 24140012 */ li $s4, 18 +glabel L80010508 +/* 011108 80010508 3C048012 */ lui $a0, %hi(D_8011AE00) # $a0, 0x8012 +/* 01110C 8001050C 2484AE00 */ addiu $a0, %lo(D_8011AE00) # addiu $a0, $a0, -0x5200 +/* 011110 80010510 80830000 */ lb $v1, ($a0) +/* 011114 80010514 3C088012 */ lui $t0, %hi(D_8011ADD8) # $t0, 0x8012 +/* 011118 80010518 1860000E */ blez $v1, .L80010554 +/* 01111C 8001051C 24140012 */ li $s4, 18 +/* 011120 80010520 8D08ADD8 */ lw $t0, %lo(D_8011ADD8)($t0) +/* 011124 80010524 3C028012 */ lui $v0, %hi(D_8011ADD8) # $v0, 0x8012 +/* 011128 80010528 12C8000A */ beq $s6, $t0, .L80010554 +/* 01112C 8001052C 2442ADD8 */ addiu $v0, %lo(D_8011ADD8) # addiu $v0, $v0, -0x5228 +.L80010530: +/* 011130 80010530 26730001 */ addiu $s3, $s3, 1 +/* 011134 80010534 0263082A */ slt $at, $s3, $v1 +/* 011138 80010538 10200006 */ beqz $at, .L80010554 +/* 01113C 8001053C 00134880 */ sll $t1, $s3, 2 +/* 011140 80010540 00495021 */ addu $t2, $v0, $t1 +/* 011144 80010544 8D4B0000 */ lw $t3, ($t2) +/* 011148 80010548 00000000 */ nop +/* 01114C 8001054C 16CBFFF8 */ bne $s6, $t3, .L80010530 +/* 011150 80010550 00000000 */ nop +.L80010554: +/* 011154 80010554 0263082A */ slt $at, $s3, $v1 +/* 011158 80010558 10200010 */ beqz $at, .L8001059C +/* 01115C 8001055C 246CFFFF */ addiu $t4, $v1, -1 +/* 011160 80010560 A08C0000 */ sb $t4, ($a0) +/* 011164 80010564 80830000 */ lb $v1, ($a0) +/* 011168 80010568 00136880 */ sll $t5, $s3, 2 +/* 01116C 8001056C 0263082A */ slt $at, $s3, $v1 +/* 011170 80010570 1020000A */ beqz $at, .L8001059C +/* 011174 80010574 3C0E8012 */ lui $t6, %hi(D_8011ADD8) # $t6, 0x8012 +/* 011178 80010578 25CEADD8 */ addiu $t6, %lo(D_8011ADD8) # addiu $t6, $t6, -0x5228 +/* 01117C 8001057C 00037880 */ sll $t7, $v1, 2 +/* 011180 80010580 01EE2021 */ addu $a0, $t7, $t6 +/* 011184 80010584 01AE1021 */ addu $v0, $t5, $t6 +.L80010588: +/* 011188 80010588 8C580004 */ lw $t8, 4($v0) +/* 01118C 8001058C 24420004 */ addiu $v0, $v0, 4 +/* 011190 80010590 0044082B */ sltu $at, $v0, $a0 +/* 011194 80010594 1420FFFC */ bnez $at, .L80010588 +/* 011198 80010598 AC58FFFC */ sw $t8, -4($v0) +.L8001059C: +/* 01119C 8001059C 86C50048 */ lh $a1, 0x48($s6) +/* 0111A0 800105A0 10000016 */ b .L800105FC +/* 0111A4 800105A4 00009825 */ move $s3, $zero +glabel L800105A8 +/* 0111A8 800105A8 8EC40064 */ lw $a0, 0x64($s6) +/* 0111AC 800105AC 00000000 */ nop +/* 0111B0 800105B0 10800005 */ beqz $a0, .L800105C8 +/* 0111B4 800105B4 00000000 */ nop +/* 0111B8 800105B8 0C01C450 */ jal free_from_memory_pool +/* 0111BC 800105BC 00000000 */ nop +/* 0111C0 800105C0 86C50048 */ lh $a1, 0x48($s6) +/* 0111C4 800105C4 00000000 */ nop +.L800105C8: +/* 0111C8 800105C8 1000000C */ b .L800105FC +/* 0111CC 800105CC 24140012 */ li $s4, 18 +glabel L800105D0 +/* 0111D0 800105D0 0C02B220 */ jal func_800AC880 +/* 0111D4 800105D4 02C02025 */ move $a0, $s6 +/* 0111D8 800105D8 86C50048 */ lh $a1, 0x48($s6) +/* 0111DC 800105DC 10000007 */ b .L800105FC +/* 0111E0 800105E0 24140012 */ li $s4, 18 +glabel L800105E4 +/* 0111E4 800105E4 0C02B3E6 */ jal func_800ACF98 +/* 0111E8 800105E8 02C02025 */ move $a0, $s6 +/* 0111EC 800105EC 86C50048 */ lh $a1, 0x48($s6) +/* 0111F0 800105F0 10000002 */ b .L800105FC +/* 0111F4 800105F4 24140012 */ li $s4, 18 +.L800105F8: +glabel L800105F8 +/* 0111F8 800105F8 24140012 */ li $s4, 18 +.L800105FC: +/* 0111FC 800105FC 28A1000D */ slti $at, $a1, 0xd +/* 011200 80010600 1420000B */ bnez $at, .L80010630 +/* 011204 80010604 00A01025 */ move $v0, $a1 +/* 011208 80010608 2459FFCE */ addiu $t9, $v0, -0x32 +/* 01120C 8001060C 2F210046 */ sltiu $at, $t9, 0x46 +/* 011210 80010610 10200014 */ beqz $at, .L80010664 +/* 011214 80010614 0019C880 */ sll $t9, $t9, 2 +/* 011218 80010618 3C01800E */ lui $at, %hi(jpt_800E5420) # $at, 0x800e +/* 01121C 8001061C 00390821 */ addu $at, $at, $t9 +/* 011220 80010620 8C395420 */ lw $t9, %lo(jpt_800E5420)($at) +/* 011224 80010624 00000000 */ nop +/* 011228 80010628 03200008 */ jr $t9 +/* 01122C 8001062C 00000000 */ nop +.L80010630: +/* 011230 80010630 2401000C */ li $at, 12 +/* 011234 80010634 1441000C */ bne $v0, $at, .L80010668 +/* 011238 80010638 24010001 */ li $at, 1 +glabel L8001063C +/* 01123C 8001063C 8EC20064 */ lw $v0, 0x64($s6) +/* 011240 80010640 00000000 */ nop +/* 011244 80010644 8C440018 */ lw $a0, 0x18($v0) +/* 011248 80010648 00000000 */ nop +/* 01124C 8001064C 10800006 */ beqz $a0, .L80010668 +/* 011250 80010650 24010001 */ li $at, 1 +/* 011254 80010654 0C001223 */ jal func_8000488C +/* 011258 80010658 00000000 */ nop +/* 01125C 8001065C 86C50048 */ lh $a1, 0x48($s6) +/* 011260 80010660 00000000 */ nop +.L80010664: +glabel L80010664 +/* 011264 80010664 24010001 */ li $at, 1 +.L80010668: +/* 011268 80010668 14A10061 */ bne $a1, $at, .L800107F0 +/* 01126C 8001066C 00000000 */ nop +/* 011270 80010670 8ED00064 */ lw $s0, 0x64($s6) +/* 011274 80010674 00000000 */ nop +/* 011278 80010678 8E020018 */ lw $v0, 0x18($s0) +/* 01127C 8001067C 00000000 */ nop +/* 011280 80010680 10400003 */ beqz $v0, .L80010690 +/* 011284 80010684 00000000 */ nop +/* 011288 80010688 0C001223 */ jal func_8000488C +/* 01128C 8001068C 00402025 */ move $a0, $v0 +.L80010690: +/* 011290 80010690 8E020010 */ lw $v0, 0x10($s0) +/* 011294 80010694 00000000 */ nop +/* 011298 80010698 10400003 */ beqz $v0, .L800106A8 +/* 01129C 8001069C 00000000 */ nop +/* 0112A0 800106A0 0C001223 */ jal func_8000488C +/* 0112A4 800106A4 00402025 */ move $a0, $v0 +.L800106A8: +/* 0112A8 800106A8 8E020014 */ lw $v0, 0x14($s0) +/* 0112AC 800106AC 00000000 */ nop +/* 0112B0 800106B0 10400003 */ beqz $v0, .L800106C0 +/* 0112B4 800106B4 00000000 */ nop +/* 0112B8 800106B8 0C001223 */ jal func_8000488C +/* 0112BC 800106BC 00402025 */ move $a0, $v0 +.L800106C0: +/* 0112C0 800106C0 8E02001C */ lw $v0, 0x1c($s0) +/* 0112C4 800106C4 00000000 */ nop +/* 0112C8 800106C8 10400003 */ beqz $v0, .L800106D8 +/* 0112CC 800106CC 00000000 */ nop +/* 0112D0 800106D0 0C001223 */ jal func_8000488C +/* 0112D4 800106D4 00402025 */ move $a0, $v0 +.L800106D8: +/* 0112D8 800106D8 8E020020 */ lw $v0, 0x20($s0) +/* 0112DC 800106DC 00000000 */ nop +/* 0112E0 800106E0 10400003 */ beqz $v0, .L800106F0 +/* 0112E4 800106E4 00000000 */ nop +/* 0112E8 800106E8 0C001223 */ jal func_8000488C +/* 0112EC 800106EC 00402025 */ move $a0, $v0 +.L800106F0: +/* 0112F0 800106F0 8E040024 */ lw $a0, 0x24($s0) +/* 0112F4 800106F4 00000000 */ nop +/* 0112F8 800106F8 10800003 */ beqz $a0, .L80010708 +/* 0112FC 800106FC 00000000 */ nop +/* 011300 80010700 0C0025BE */ jal func_800096F8 +/* 011304 80010704 00000000 */ nop +.L80010708: +/* 011308 80010708 8E04017C */ lw $a0, 0x17c($s0) +/* 01130C 8001070C 00000000 */ nop +/* 011310 80010710 10800003 */ beqz $a0, .L80010720 +/* 011314 80010714 00000000 */ nop +/* 011318 80010718 0C0025BE */ jal func_800096F8 +/* 01131C 8001071C 00000000 */ nop +.L80010720: +/* 011320 80010720 8E040178 */ lw $a0, 0x178($s0) +/* 011324 80010724 00000000 */ nop +/* 011328 80010728 10800003 */ beqz $a0, .L80010738 +/* 01132C 8001072C 00000000 */ nop +/* 011330 80010730 0C001223 */ jal func_8000488C +/* 011334 80010734 00000000 */ nop +.L80010738: +/* 011338 80010738 0C001AB2 */ jal racer_sound_free +/* 01133C 8001073C 02C02025 */ move $a0, $s6 +/* 011340 80010740 3C158012 */ lui $s5, %hi(gObjectCount) # $s5, 0x8012 +/* 011344 80010744 26B5AE5C */ addiu $s5, %lo(gObjectCount) # addiu $s5, $s5, -0x51a4 +/* 011348 80010748 8EA80000 */ lw $t0, ($s5) +/* 01134C 8001074C 00008025 */ move $s0, $zero +/* 011350 80010750 19000027 */ blez $t0, .L800107F0 +/* 011354 80010754 24120005 */ li $s2, 5 +/* 011358 80010758 2411004C */ li $s1, 76 +.L8001075C: +/* 01135C 8001075C 3C098012 */ lui $t1, %hi(gObjPtrList) # $t1, 0x8012 +/* 011360 80010760 8D29AE58 */ lw $t1, %lo(gObjPtrList)($t1) +/* 011364 80010764 00000000 */ nop +/* 011368 80010768 01305021 */ addu $t2, $t1, $s0 +/* 01136C 8001076C 8D440000 */ lw $a0, ($t2) +/* 011370 80010770 00000000 */ nop +/* 011374 80010774 848B0006 */ lh $t3, 6($a0) +/* 011378 80010778 00000000 */ nop +/* 01137C 8001077C 316C8000 */ andi $t4, $t3, 0x8000 +/* 011380 80010780 1180000B */ beqz $t4, .L800107B0 +/* 011384 80010784 00000000 */ nop +/* 011388 80010788 8C8D003C */ lw $t5, 0x3c($a0) +/* 01138C 8001078C 3C0F8012 */ lui $t7, %hi(gObjPtrList) # $t7, 0x8012 +/* 011390 80010790 16CD0007 */ bne $s6, $t5, .L800107B0 +/* 011394 80010794 00000000 */ nop +/* 011398 80010798 AC80003C */ sw $zero, 0x3c($a0) +/* 01139C 8001079C 8DEFAE58 */ lw $t7, %lo(gObjPtrList)($t7) +/* 0113A0 800107A0 00000000 */ nop +/* 0113A4 800107A4 01F07021 */ addu $t6, $t7, $s0 +/* 0113A8 800107A8 8DC40000 */ lw $a0, ($t6) +/* 0113AC 800107AC 00000000 */ nop +.L800107B0: +/* 0113B0 800107B0 84820048 */ lh $v0, 0x48($a0) +/* 0113B4 800107B4 00000000 */ nop +/* 0113B8 800107B8 12820005 */ beq $s4, $v0, .L800107D0 +/* 0113BC 800107BC 00000000 */ nop +/* 0113C0 800107C0 12220003 */ beq $s1, $v0, .L800107D0 +/* 0113C4 800107C4 00000000 */ nop +/* 0113C8 800107C8 16420003 */ bne $s2, $v0, .L800107D8 +/* 0113CC 800107CC 00000000 */ nop +.L800107D0: +/* 0113D0 800107D0 0C003FEE */ jal free_object +/* 0113D4 800107D4 00000000 */ nop +.L800107D8: +/* 0113D8 800107D8 8EB80000 */ lw $t8, ($s5) +/* 0113DC 800107DC 26730001 */ addiu $s3, $s3, 1 +/* 0113E0 800107E0 0278082A */ slt $at, $s3, $t8 +/* 0113E4 800107E4 1420FFDD */ bnez $at, .L8001075C +/* 0113E8 800107E8 26100004 */ addiu $s0, $s0, 4 +/* 0113EC 800107EC 00009825 */ move $s3, $zero +.L800107F0: +/* 0113F0 800107F0 8EC20050 */ lw $v0, 0x50($s6) +/* 0113F4 800107F4 00000000 */ nop +/* 0113F8 800107F8 10400007 */ beqz $v0, .L80010818 +/* 0113FC 800107FC 00000000 */ nop +/* 011400 80010800 8C440004 */ lw $a0, 4($v0) +/* 011404 80010804 00000000 */ nop +/* 011408 80010808 10800003 */ beqz $a0, .L80010818 +/* 01140C 8001080C 00000000 */ nop +/* 011410 80010810 0C01ECAF */ jal free_texture +/* 011414 80010814 00000000 */ nop +.L80010818: +/* 011418 80010818 8EC20058 */ lw $v0, 0x58($s6) +/* 01141C 8001081C 00000000 */ nop +/* 011420 80010820 10400007 */ beqz $v0, .L80010840 +/* 011424 80010824 00000000 */ nop +/* 011428 80010828 8C440004 */ lw $a0, 4($v0) +/* 01142C 8001082C 00000000 */ nop +/* 011430 80010830 10800003 */ beqz $a0, .L80010840 +/* 011434 80010834 00000000 */ nop +/* 011438 80010838 0C01ECAF */ jal free_texture +/* 01143C 8001083C 00000000 */ nop +.L80010840: +/* 011440 80010840 8EC20040 */ lw $v0, 0x40($s6) +/* 011444 80010844 00000000 */ nop +/* 011448 80010848 80440053 */ lb $a0, 0x53($v0) +/* 01144C 8001084C 80520055 */ lb $s2, 0x55($v0) +/* 011450 80010850 14800013 */ bnez $a0, .L800108A0 +/* 011454 80010854 24010004 */ li $at, 4 +/* 011458 80010858 1A40002E */ blez $s2, .L80010914 +/* 01145C 8001085C 00008025 */ move $s0, $zero +.L80010860: +/* 011460 80010860 8ED90068 */ lw $t9, 0x68($s6) +/* 011464 80010864 00000000 */ nop +/* 011468 80010868 03304021 */ addu $t0, $t9, $s0 +/* 01146C 8001086C 8D020000 */ lw $v0, ($t0) +/* 011470 80010870 00000000 */ nop +/* 011474 80010874 10400003 */ beqz $v0, .L80010884 +/* 011478 80010878 00000000 */ nop +/* 01147C 8001087C 0C017FD0 */ jal free_3d_model +/* 011480 80010880 00402025 */ move $a0, $v0 +.L80010884: +/* 011484 80010884 26730001 */ addiu $s3, $s3, 1 +/* 011488 80010888 1672FFF5 */ bne $s3, $s2, .L80010860 +/* 01148C 8001088C 26100004 */ addiu $s0, $s0, 4 +/* 011490 80010890 8EC20040 */ lw $v0, 0x40($s6) +/* 011494 80010894 10000020 */ b .L80010918 +/* 011498 80010898 80430057 */ lb $v1, 0x57($v0) +/* 01149C 8001089C 24010004 */ li $at, 4 +.L800108A0: +/* 0114A0 800108A0 1481000F */ bne $a0, $at, .L800108E0 +/* 0114A4 800108A4 00000000 */ nop +/* 0114A8 800108A8 1A40001A */ blez $s2, .L80010914 +/* 0114AC 800108AC 00008025 */ move $s0, $zero +.L800108B0: +/* 0114B0 800108B0 8EC90068 */ lw $t1, 0x68($s6) +/* 0114B4 800108B4 00000000 */ nop +/* 0114B8 800108B8 01305021 */ addu $t2, $t1, $s0 +/* 0114BC 800108BC 8D440000 */ lw $a0, ($t2) +/* 0114C0 800108C0 0C01ECAF */ jal free_texture +/* 0114C4 800108C4 00000000 */ nop +/* 0114C8 800108C8 26730001 */ addiu $s3, $s3, 1 +/* 0114CC 800108CC 1672FFF8 */ bne $s3, $s2, .L800108B0 +/* 0114D0 800108D0 26100004 */ addiu $s0, $s0, 4 +/* 0114D4 800108D4 8EC20040 */ lw $v0, 0x40($s6) +/* 0114D8 800108D8 1000000F */ b .L80010918 +/* 0114DC 800108DC 80430057 */ lb $v1, 0x57($v0) +.L800108E0: +/* 0114E0 800108E0 1A40000C */ blez $s2, .L80010914 +/* 0114E4 800108E4 00008025 */ move $s0, $zero +.L800108E8: +/* 0114E8 800108E8 8ECB0068 */ lw $t3, 0x68($s6) +/* 0114EC 800108EC 00000000 */ nop +/* 0114F0 800108F0 01706021 */ addu $t4, $t3, $s0 +/* 0114F4 800108F4 8D840000 */ lw $a0, ($t4) +/* 0114F8 800108F8 0C01F32C */ jal free_sprite +/* 0114FC 800108FC 00000000 */ nop +/* 011500 80010900 26730001 */ addiu $s3, $s3, 1 +/* 011504 80010904 1672FFF8 */ bne $s3, $s2, .L800108E8 +/* 011508 80010908 26100004 */ addiu $s0, $s0, 4 +/* 01150C 8001090C 8EC20040 */ lw $v0, 0x40($s6) +/* 011510 80010910 00000000 */ nop +.L80010914: +/* 011514 80010914 80430057 */ lb $v1, 0x57($v0) +.L80010918: +/* 011518 80010918 00000000 */ nop +/* 01151C 8001091C 1860000E */ blez $v1, .L80010958 +/* 011520 80010920 00000000 */ nop +/* 011524 80010924 1860000C */ blez $v1, .L80010958 +/* 011528 80010928 00009825 */ move $s3, $zero +.L8001092C: +/* 01152C 8001092C 8ECD006C */ lw $t5, 0x6c($s6) +/* 011530 80010930 00137940 */ sll $t7, $s3, 5 +/* 011534 80010934 0C02C898 */ jal func_800B2260 +/* 011538 80010938 01AF2021 */ addu $a0, $t5, $t7 +/* 01153C 8001093C 8ECE0040 */ lw $t6, 0x40($s6) +/* 011540 80010940 26730001 */ addiu $s3, $s3, 1 +/* 011544 80010944 81D80057 */ lb $t8, 0x57($t6) +/* 011548 80010948 00000000 */ nop +/* 01154C 8001094C 0278082A */ slt $at, $s3, $t8 +/* 011550 80010950 1420FFF6 */ bnez $at, .L8001092C +/* 011554 80010954 00000000 */ nop +.L80010958: +/* 011558 80010958 86C4002C */ lh $a0, 0x2c($s6) +/* 01155C 8001095C 0C003211 */ jal try_free_object_header +/* 011560 80010960 00000000 */ nop +/* 011564 80010964 0C01C450 */ jal free_from_memory_pool +/* 011568 80010968 02C02025 */ move $a0, $s6 +.L8001096C: +/* 01156C 8001096C 8FBF0034 */ lw $ra, 0x34($sp) +/* 011570 80010970 8FB00018 */ lw $s0, 0x18($sp) +/* 011574 80010974 8FB1001C */ lw $s1, 0x1c($sp) +/* 011578 80010978 8FB20020 */ lw $s2, 0x20($sp) +/* 01157C 8001097C 8FB30024 */ lw $s3, 0x24($sp) +/* 011580 80010980 8FB40028 */ lw $s4, 0x28($sp) +/* 011584 80010984 8FB5002C */ lw $s5, 0x2c($sp) +/* 011588 80010988 8FB60030 */ lw $s6, 0x30($sp) +/* 01158C 8001098C 03E00008 */ jr $ra +/* 011590 80010990 27BD0038 */ addiu $sp, $sp, 0x38 + diff --git a/asm/non_matchings/objects/func_80010994.s b/asm/non_matchings/objects/func_80010994.s index 5de6811c..71b7254b 100644 --- a/asm/non_matchings/objects/func_80010994.s +++ b/asm/non_matchings/objects/func_80010994.s @@ -11,17 +11,17 @@ glabel func_80010994 /* 0115B8 800109B8 AFB00018 */ sw $s0, 0x18($sp) /* 0115BC 800109BC 0C00916D */ jal func_800245B4 /* 0115C0 800109C0 2404FFFF */ li $a0, -1 -/* 0115C4 800109C4 3C028012 */ lui $v0, %hi(D_8011ADB0) # $v0, 0x8012 -/* 0115C8 800109C8 8C42ADB0 */ lw $v0, %lo(D_8011ADB0)($v0) -/* 0115CC 800109CC 3C018012 */ lui $at, %hi(gRaceStartCountdown) # $at, 0x8012 +/* 0115C4 800109C4 3C028012 */ lui $v0, %hi(gEventCountdown) # $v0, 0x8012 +/* 0115C8 800109C8 8C42ADB0 */ lw $v0, %lo(gEventCountdown)($v0) +/* 0115CC 800109CC 3C018012 */ lui $at, %hi(gEventStartTimer) # $at, 0x8012 /* 0115D0 800109D0 1840000D */ blez $v0, .L80010A08 -/* 0115D4 800109D4 AC22ADB8 */ sw $v0, %lo(gRaceStartCountdown)($at) +/* 0115D4 800109D4 AC22ADB8 */ sw $v0, %lo(gEventStartTimer)($at) /* 0115D8 800109D8 0C028064 */ jal func_800A0190 /* 0115DC 800109DC 00000000 */ nop /* 0115E0 800109E0 10400009 */ beqz $v0, .L80010A08 /* 0115E4 800109E4 3C038012 */ lui $v1, %hi(D_8011ADBC) # $v1, 0x8012 -/* 0115E8 800109E8 3C048012 */ lui $a0, %hi(D_8011ADB0) # $a0, 0x8012 -/* 0115EC 800109EC 2484ADB0 */ addiu $a0, %lo(D_8011ADB0) # addiu $a0, $a0, -0x5250 +/* 0115E8 800109E8 3C048012 */ lui $a0, %hi(gEventCountdown) # $a0, 0x8012 +/* 0115EC 800109EC 2484ADB0 */ addiu $a0, %lo(gEventCountdown) # addiu $a0, $a0, -0x5250 /* 0115F0 800109F0 8C8E0000 */ lw $t6, ($a0) /* 0115F4 800109F4 2463ADBC */ addiu $v1, %lo(D_8011ADBC) # addiu $v1, $v1, -0x5244 /* 0115F8 800109F8 01D41023 */ subu $v0, $t6, $s4 @@ -32,16 +32,16 @@ glabel func_80010994 /* 011608 80010A08 3C038012 */ lui $v1, %hi(D_8011ADBC) # $v1, 0x8012 /* 01160C 80010A0C 2463ADBC */ addiu $v1, %lo(D_8011ADBC) # addiu $v1, $v1, -0x5244 /* 011610 80010A10 8C780000 */ lw $t8, ($v1) -/* 011614 80010A14 3C028012 */ lui $v0, %hi(D_8011ADB0) # $v0, 0x8012 +/* 011614 80010A14 3C028012 */ lui $v0, %hi(gEventCountdown) # $v0, 0x8012 /* 011618 80010A18 0314C821 */ addu $t9, $t8, $s4 /* 01161C 80010A1C AC790000 */ sw $t9, ($v1) -/* 011620 80010A20 8C42ADB0 */ lw $v0, %lo(D_8011ADB0)($v0) +/* 011620 80010A20 8C42ADB0 */ lw $v0, %lo(gEventCountdown)($v0) /* 011624 80010A24 00000000 */ nop .L80010A28: /* 011628 80010A28 1C400003 */ bgtz $v0, .L80010A38 /* 01162C 80010A2C 3C048012 */ lui $a0, %hi(gNumRacers) # $a0, 0x8012 -/* 011630 80010A30 3C018012 */ lui $at, %hi(D_8011ADB0) # $at, 0x8012 -/* 011634 80010A34 AC20ADB0 */ sw $zero, %lo(D_8011ADB0)($at) +/* 011630 80010A30 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 +/* 011634 80010A34 AC20ADB0 */ sw $zero, %lo(gEventCountdown)($at) .L80010A38: /* 011638 80010A38 3C028012 */ lui $v0, %hi(D_8011AD21) # $v0, 0x8012 /* 01163C 80010A3C 3C018012 */ lui $at, %hi(D_8011AD3D) # $at, 0x8012 @@ -475,8 +475,8 @@ glabel func_80010994 /* 011C5C 8001105C 80620000 */ lb $v0, ($v1) /* 011C60 80011060 24010001 */ li $at, 1 /* 011C64 80011064 14410026 */ bne $v0, $at, .L80011100 -/* 011C68 80011068 3C0A8012 */ lui $t2, %hi(D_8011ADB0) # $t2, 0x8012 -/* 011C6C 8001106C 8D4AADB0 */ lw $t2, %lo(D_8011ADB0)($t2) +/* 011C68 80011068 3C0A8012 */ lui $t2, %hi(gEventCountdown) # $t2, 0x8012 +/* 011C6C 8001106C 8D4AADB0 */ lw $t2, %lo(gEventCountdown)($t2) /* 011C70 80011070 24010050 */ li $at, 80 /* 011C74 80011074 15410025 */ bne $t2, $at, .L8001110C /* 011C78 80011078 3C0B8012 */ lui $t3, %hi(gCutsceneID) # $t3, 0x8012 diff --git a/asm/non_matchings/objects/func_80019808.s b/asm/non_matchings/objects/func_80019808.s index f904b75c..76b91aa0 100644 --- a/asm/non_matchings/objects/func_80019808.s +++ b/asm/non_matchings/objects/func_80019808.s @@ -84,7 +84,7 @@ glabel func_80019808 /* 01A548 80019948 8F240000 */ lw $a0, ($t9) /* 01A54C 8001994C AFBF0064 */ sw $ra, 0x64($sp) /* 01A550 80019950 AFAA0044 */ sw $t2, 0x44($sp) -/* 01A554 80019954 0C001AB2 */ jal func_80006AC8 +/* 01A554 80019954 0C001AB2 */ jal racer_sound_free /* 01A558 80019958 AFA5004C */ sw $a1, 0x4c($sp) /* 01A55C 8001995C 3C0B8012 */ lui $t3, %hi(gRacers) # $t3, 0x8012 /* 01A560 80019960 256BAEE4 */ addiu $t3, %lo(gRacers) # addiu $t3, $t3, -0x511c diff --git a/asm/non_matchings/objects/func_8001A8F4.s b/asm/non_matchings/objects/func_8001A8F4.s index dfbe9af0..37ced3d5 100644 --- a/asm/non_matchings/objects/func_8001A8F4.s +++ b/asm/non_matchings/objects/func_8001A8F4.s @@ -104,7 +104,7 @@ glabel func_8001A8F4 /* 01B670 8001AA70 8DCEAEE4 */ lw $t6, %lo(gRacers)($t6) /* 01B674 8001AA74 00000000 */ nop /* 01B678 8001AA78 8DC40000 */ lw $a0, ($t6) -/* 01B67C 8001AA7C 0C001AB2 */ jal func_80006AC8 +/* 01B67C 8001AA7C 0C001AB2 */ jal racer_sound_free /* 01B680 8001AA80 00000000 */ nop /* 01B684 8001AA84 0C0282DD */ jal func_800A0B74 /* 01B688 8001AA88 00000000 */ nop diff --git a/asm/non_matchings/objects/func_80022948.s b/asm/non_matchings/objects/func_80022948.s index 124c7b9c..84539cb0 100644 --- a/asm/non_matchings/objects/func_80022948.s +++ b/asm/non_matchings/objects/func_80022948.s @@ -49,8 +49,8 @@ glabel func_80022948 /* 023604 80022A04 0C01BAA4 */ jal get_settings /* 023608 80022A08 AFA2007C */ sw $v0, 0x7c($sp) /* 02360C 80022A0C 24190050 */ li $t9, 80 -/* 023610 80022A10 3C018012 */ lui $at, %hi(D_8011ADB0) # $at, 0x8012 -/* 023614 80022A14 AC39ADB0 */ sw $t9, %lo(D_8011ADB0)($at) +/* 023610 80022A10 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 +/* 023614 80022A14 AC39ADB0 */ sw $t9, %lo(gEventCountdown)($at) /* 023618 80022A18 3C018012 */ lui $at, %hi(D_8011ADB4) # $at, 0x8012 /* 02361C 80022A1C 8FA30068 */ lw $v1, 0x68($sp) /* 023620 80022A20 AC20ADB4 */ sw $zero, %lo(D_8011ADB4)($at) diff --git a/asm/non_matchings/objects/spawn_object.s b/asm/non_matchings/objects/spawn_object.s index 0996a6bb..b09738e6 100644 --- a/asm/non_matchings/objects/spawn_object.s +++ b/asm/non_matchings/objects/spawn_object.s @@ -369,7 +369,7 @@ glabel L8000EDE0 /* 00FB8C 8000EF8C 00000000 */ nop /* 00FB90 8000EF90 01B07821 */ addu $t7, $t5, $s0 /* 00FB94 8000EF94 8DE40000 */ lw $a0, ($t7) -/* 00FB98 8000EF98 0C017E67 */ jal func_8005F99C +/* 00FB98 8000EF98 0C017E67 */ jal object_model_init /* 00FB9C 8000EF9C A3A30037 */ sb $v1, 0x37($sp) /* 00FBA0 8000EFA0 8E580068 */ lw $t8, 0x68($s2) /* 00FBA4 8000EFA4 83A30037 */ lb $v1, 0x37($sp) diff --git a/asm/non_matchings/racer/func_80042D20.s b/asm/non_matchings/racer/func_80042D20.s index 5e7f60e1..0bcc428a 100644 --- a/asm/non_matchings/racer/func_80042D20.s +++ b/asm/non_matchings/racer/func_80042D20.s @@ -1,1242 +1,1242 @@ -.late_rodata -glabel D_800E62A8 -.double -2500.0 -glabel D_800E62B0 -.double 0.025 -glabel D_800E62B8 -.double 0.561 -glabel D_800E62C0 -.double 0.004 -glabel D_800E62C8 -.double 0.025 -glabel D_800E62D0 -.double 0.561 -glabel D_800E62D8 -.double 0.004 -glabel D_800E62E0 -.double 0.2 -glabel D_800E62E8 -.double 0.004 -glabel D_800E62F0 -.double 0.595 -glabel D_800E62F8 -.double 0.025 -glabel D_800E6300 -.double 500.0 -glabel D_800E6308 -.double 650.0 -glabel D_800E6310 -.double -0.3 - -.text -glabel func_80042D20 -/* 043920 80042D20 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 043924 80042D24 AFBF001C */ sw $ra, 0x1c($sp) -/* 043928 80042D28 AFB00018 */ sw $s0, 0x18($sp) -/* 04392C 80042D2C AFA40098 */ sw $a0, 0x98($sp) -/* 043930 80042D30 AFA600A0 */ sw $a2, 0xa0($sp) -/* 043934 80042D34 80AE01CA */ lb $t6, 0x1ca($a1) -/* 043938 80042D38 00A08025 */ move $s0, $a1 -/* 04393C 80042D3C 24040001 */ li $a0, 1 -/* 043940 80042D40 0C0078A7 */ jal get_misc_asset -/* 043944 80042D44 A7AE006E */ sh $t6, 0x6e($sp) -/* 043948 80042D48 AFA20040 */ sw $v0, 0x40($sp) -/* 04394C 80042D4C 0C0078A7 */ jal get_misc_asset -/* 043950 80042D50 24040002 */ li $a0, 2 -/* 043954 80042D54 0C01AF6C */ jal get_current_level_header -/* 043958 80042D58 AFA20044 */ sw $v0, 0x44($sp) -/* 04395C 80042D5C AFA20050 */ sw $v0, 0x50($sp) -/* 043960 80042D60 0C006EAB */ jal get_racer_objects_by_position -/* 043964 80042D64 27A40068 */ addiu $a0, $sp, 0x68 -/* 043968 80042D68 0C01B063 */ jal get_ai_behaviour_table -/* 04396C 80042D6C AFA20060 */ sw $v0, 0x60($sp) -/* 043970 80042D70 AFA20054 */ sw $v0, 0x54($sp) -/* 043974 80042D74 860301C6 */ lh $v1, 0x1c6($s0) -/* 043978 80042D78 8FAA0060 */ lw $t2, 0x60($sp) -/* 04397C 80042D7C 18600006 */ blez $v1, .L80042D98 -/* 043980 80042D80 00000000 */ nop -/* 043984 80042D84 8FAF00A0 */ lw $t7, 0xa0($sp) -/* 043988 80042D88 00000000 */ nop -/* 04398C 80042D8C 006FC023 */ subu $t8, $v1, $t7 -/* 043990 80042D90 10000002 */ b .L80042D9C -/* 043994 80042D94 A61801C6 */ sh $t8, 0x1c6($s0) -.L80042D98: -/* 043998 80042D98 A60001C6 */ sh $zero, 0x1c6($s0) -.L80042D9C: -/* 04399C 80042D9C 0C006B91 */ jal func_8001AE44 -/* 0439A0 80042DA0 AFAA0060 */ sw $t2, 0x60($sp) -/* 0439A4 80042DA4 8FAA0060 */ lw $t2, 0x60($sp) -/* 0439A8 80042DA8 10400007 */ beqz $v0, .L80042DC8 -/* 0439AC 80042DAC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 0439B0 80042DB0 2442D528 */ addiu $v0, %lo(gCurrentRacerInput) # addiu $v0, $v0, -0x2ad8 -/* 0439B4 80042DB4 8C590000 */ lw $t9, ($v0) -/* 0439B8 80042DB8 00000000 */ nop -/* 0439BC 80042DBC 372E8000 */ ori $t6, $t9, 0x8000 -/* 0439C0 80042DC0 1000043E */ b .L80043EBC -/* 0439C4 80042DC4 AC4E0000 */ sw $t6, ($v0) -.L80042DC8: -/* 0439C8 80042DC8 8FAF0068 */ lw $t7, 0x68($sp) -/* 0439CC 80042DCC 00001825 */ move $v1, $zero -/* 0439D0 80042DD0 00006825 */ move $t5, $zero -/* 0439D4 80042DD4 00004025 */ move $t0, $zero -/* 0439D8 80042DD8 240CFFFF */ li $t4, -1 -/* 0439DC 80042DDC 19E00024 */ blez $t7, .L80042E70 -/* 0439E0 80042DE0 24020001 */ li $v0, 1 -/* 0439E4 80042DE4 241FFFFF */ li $ra, -1 -/* 0439E8 80042DE8 0003C080 */ sll $t8, $v1, 2 -.L80042DEC: -/* 0439EC 80042DEC 0158C821 */ addu $t9, $t2, $t8 -/* 0439F0 80042DF0 8F2E0000 */ lw $t6, ($t9) -/* 0439F4 80042DF4 00000000 */ nop -/* 0439F8 80042DF8 8DC90064 */ lw $t1, 0x64($t6) -/* 0439FC 80042DFC 00000000 */ nop -/* 043A00 80042E00 15300003 */ bne $t1, $s0, .L80042E10 -/* 043A04 80042E04 00000000 */ nop -/* 043A08 80042E08 00001025 */ move $v0, $zero -/* 043A0C 80042E0C A7A30072 */ sh $v1, 0x72($sp) -.L80042E10: -/* 043A10 80042E10 852F0000 */ lh $t7, ($t1) -/* 043A14 80042E14 00000000 */ nop -/* 043A18 80042E18 17EF0009 */ bne $ra, $t7, .L80042E40 -/* 043A1C 80042E1C 00000000 */ nop -/* 043A20 80042E20 25080001 */ addiu $t0, $t0, 1 -/* 043A24 80042E24 0008C400 */ sll $t8, $t0, 0x10 -/* 043A28 80042E28 1040000A */ beqz $v0, .L80042E54 -/* 043A2C 80042E2C 00184403 */ sra $t0, $t8, 0x10 -/* 043A30 80042E30 25AD0001 */ addiu $t5, $t5, 1 -/* 043A34 80042E34 000D7400 */ sll $t6, $t5, 0x10 -/* 043A38 80042E38 10000006 */ b .L80042E54 -/* 043A3C 80042E3C 000E6C03 */ sra $t5, $t6, 0x10 -.L80042E40: -/* 043A40 80042E40 159F0004 */ bne $t4, $ra, .L80042E54 -/* 043A44 80042E44 00000000 */ nop -/* 043A48 80042E48 00036400 */ sll $t4, $v1, 0x10 -/* 043A4C 80042E4C 000CC403 */ sra $t8, $t4, 0x10 -/* 043A50 80042E50 03006025 */ move $t4, $t8 -.L80042E54: -/* 043A54 80042E54 24630001 */ addiu $v1, $v1, 1 -/* 043A58 80042E58 8FAF0068 */ lw $t7, 0x68($sp) -/* 043A5C 80042E5C 0003CC00 */ sll $t9, $v1, 0x10 -/* 043A60 80042E60 00191C03 */ sra $v1, $t9, 0x10 -/* 043A64 80042E64 006F082A */ slt $at, $v1, $t7 -/* 043A68 80042E68 1420FFE0 */ bnez $at, .L80042DEC -/* 043A6C 80042E6C 0003C080 */ sll $t8, $v1, 2 -.L80042E70: -/* 043A70 80042E70 241FFFFF */ li $ra, -1 -/* 043A74 80042E74 159F0002 */ bne $t4, $ra, .L80042E80 -/* 043A78 80042E78 00000000 */ nop -/* 043A7C 80042E7C 00006025 */ move $t4, $zero -.L80042E80: -/* 043A80 80042E80 1100040F */ beqz $t0, .L80043EC0 -/* 043A84 80042E84 8FBF001C */ lw $ra, 0x1c($sp) -/* 043A88 80042E88 A7A80076 */ sh $t0, 0x76($sp) -/* 043A8C 80042E8C AFAA0060 */ sw $t2, 0x60($sp) -/* 043A90 80042E90 A7AC0034 */ sh $t4, 0x34($sp) -/* 043A94 80042E94 0C008D5A */ jal func_80023568 -/* 043A98 80042E98 A7AD0078 */ sh $t5, 0x78($sp) -/* 043A9C 80042E9C 3C188012 */ lui $t8, %hi(gRaceStartTimer) # $t8, 0x8012 -/* 043AA0 80042EA0 8F18D540 */ lw $t8, %lo(gRaceStartTimer)($t8) -/* 043AA4 80042EA4 87A80076 */ lh $t0, 0x76($sp) -/* 043AA8 80042EA8 8FAA0060 */ lw $t2, 0x60($sp) -/* 043AAC 80042EAC 87AC0034 */ lh $t4, 0x34($sp) -/* 043AB0 80042EB0 87AD0078 */ lh $t5, 0x78($sp) -/* 043AB4 80042EB4 241FFFFF */ li $ra, -1 -/* 043AB8 80042EB8 17000088 */ bnez $t8, .L800430DC -/* 043ABC 80042EBC A7A20070 */ sh $v0, 0x70($sp) -/* 043AC0 80042EC0 821901D6 */ lb $t9, 0x1d6($s0) -/* 043AC4 80042EC4 24010004 */ li $at, 4 -/* 043AC8 80042EC8 13210085 */ beq $t9, $at, .L800430E0 -/* 043ACC 80042ECC 87A70072 */ lh $a3, 0x72($sp) -/* 043AD0 80042ED0 87A70072 */ lh $a3, 0x72($sp) -/* 043AD4 80042ED4 9204020B */ lbu $a0, 0x20b($s0) -/* 043AD8 80042ED8 24E3FFFF */ addiu $v1, $a3, -1 -/* 043ADC 80042EDC 0087082A */ slt $at, $a0, $a3 -/* 043AE0 80042EE0 10200043 */ beqz $at, .L80042FF0 -/* 043AE4 80042EE4 00037400 */ sll $t6, $v1, 0x10 -/* 043AE8 80042EE8 000E7C03 */ sra $t7, $t6, 0x10 -/* 043AEC 80042EEC 05E00041 */ bltz $t7, .L80042FF4 -/* 043AF0 80042EF0 87AE0072 */ lh $t6, 0x72($sp) -/* 043AF4 80042EF4 8FB80068 */ lw $t8, 0x68($sp) -/* 043AF8 80042EF8 000FC880 */ sll $t9, $t7, 2 -/* 043AFC 80042EFC 01F8082A */ slt $at, $t7, $t8 -/* 043B00 80042F00 1020003B */ beqz $at, .L80042FF0 -/* 043B04 80042F04 01595821 */ addu $t3, $t2, $t9 -/* 043B08 80042F08 8D6E0000 */ lw $t6, ($t3) -/* 043B0C 80042F0C 0002C400 */ sll $t8, $v0, 0x10 -/* 043B10 80042F10 8DC90064 */ lw $t1, 0x64($t6) -/* 043B14 80042F14 0018CC03 */ sra $t9, $t8, 0x10 -/* 043B18 80042F18 852F0000 */ lh $t7, ($t1) -/* 043B1C 80042F1C 00000000 */ nop -/* 043B20 80042F20 13EF0034 */ beq $ra, $t7, .L80042FF4 -/* 043B24 80042F24 87AE0072 */ lh $t6, 0x72($sp) -/* 043B28 80042F28 17200011 */ bnez $t9, .L80042F70 -/* 043B2C 80042F2C 240501C2 */ li $a1, 450 -/* 043B30 80042F30 8FA40098 */ lw $a0, 0x98($sp) -/* 043B34 80042F34 24060008 */ li $a2, 8 -/* 043B38 80042F38 24070003 */ li $a3, 3 -/* 043B3C 80042F3C A7A80076 */ sh $t0, 0x76($sp) -/* 043B40 80042F40 AFAA0060 */ sw $t2, 0x60($sp) -/* 043B44 80042F44 AFAB0024 */ sw $t3, 0x24($sp) -/* 043B48 80042F48 A7AC0034 */ sh $t4, 0x34($sp) -/* 043B4C 80042F4C 0C015C2E */ jal play_random_character_voice -/* 043B50 80042F50 A7AD0078 */ sh $t5, 0x78($sp) -/* 043B54 80042F54 87A80076 */ lh $t0, 0x76($sp) -/* 043B58 80042F58 8FAA0060 */ lw $t2, 0x60($sp) -/* 043B5C 80042F5C 8FAB0024 */ lw $t3, 0x24($sp) -/* 043B60 80042F60 87AC0034 */ lh $t4, 0x34($sp) -/* 043B64 80042F64 87AD0078 */ lh $t5, 0x78($sp) -/* 043B68 80042F68 10000013 */ b .L80042FB8 -/* 043B6C 80042F6C 8D640000 */ lw $a0, ($t3) -.L80042F70: -/* 043B70 80042F70 8FA20098 */ lw $v0, 0x98($sp) -/* 043B74 80042F74 24070005 */ li $a3, 5 -/* 043B78 80042F78 C44C000C */ lwc1 $f12, 0xc($v0) -/* 043B7C 80042F7C C44E0010 */ lwc1 $f14, 0x10($v0) -/* 043B80 80042F80 8C460014 */ lw $a2, 0x14($v0) -/* 043B84 80042F84 A7AD0078 */ sh $t5, 0x78($sp) -/* 043B88 80042F88 A7AC0034 */ sh $t4, 0x34($sp) -/* 043B8C 80042F8C AFAB0024 */ sw $t3, 0x24($sp) -/* 043B90 80042F90 AFAA0060 */ sw $t2, 0x60($sp) -/* 043B94 80042F94 0C0172A1 */ jal func_8005CA84 -/* 043B98 80042F98 A7A80076 */ sh $t0, 0x76($sp) -/* 043B9C 80042F9C 87A80076 */ lh $t0, 0x76($sp) -/* 043BA0 80042FA0 8FAA0060 */ lw $t2, 0x60($sp) -/* 043BA4 80042FA4 8FAB0024 */ lw $t3, 0x24($sp) -/* 043BA8 80042FA8 87AC0034 */ lh $t4, 0x34($sp) -/* 043BAC 80042FAC 87AD0078 */ lh $t5, 0x78($sp) -/* 043BB0 80042FB0 00000000 */ nop -/* 043BB4 80042FB4 8D640000 */ lw $a0, ($t3) -.L80042FB8: -/* 043BB8 80042FB8 A7AD0078 */ sh $t5, 0x78($sp) -/* 043BBC 80042FBC A7AC0034 */ sh $t4, 0x34($sp) -/* 043BC0 80042FC0 AFAA0060 */ sw $t2, 0x60($sp) -/* 043BC4 80042FC4 A7A80076 */ sh $t0, 0x76($sp) -/* 043BC8 80042FC8 24050162 */ li $a1, 354 -/* 043BCC 80042FCC 24060008 */ li $a2, 8 -/* 043BD0 80042FD0 0C015C2E */ jal play_random_character_voice -/* 043BD4 80042FD4 24070002 */ li $a3, 2 -/* 043BD8 80042FD8 87A80076 */ lh $t0, 0x76($sp) -/* 043BDC 80042FDC 8FAA0060 */ lw $t2, 0x60($sp) -/* 043BE0 80042FE0 87AC0034 */ lh $t4, 0x34($sp) -/* 043BE4 80042FE4 87AD0078 */ lh $t5, 0x78($sp) -/* 043BE8 80042FE8 9204020B */ lbu $a0, 0x20b($s0) -/* 043BEC 80042FEC 241FFFFF */ li $ra, -1 -.L80042FF0: -/* 043BF0 80042FF0 87AE0072 */ lh $t6, 0x72($sp) -.L80042FF4: -/* 043BF4 80042FF4 00000000 */ nop -/* 043BF8 80042FF8 01C4082A */ slt $at, $t6, $a0 -/* 043BFC 80042FFC 10200037 */ beqz $at, .L800430DC -/* 043C00 80043000 25C20001 */ addiu $v0, $t6, 1 -/* 043C04 80043004 00027C00 */ sll $t7, $v0, 0x10 -/* 043C08 80043008 000FC403 */ sra $t8, $t7, 0x10 -/* 043C0C 8004300C 07000034 */ bltz $t8, .L800430E0 -/* 043C10 80043010 87A70072 */ lh $a3, 0x72($sp) -/* 043C14 80043014 8FB90068 */ lw $t9, 0x68($sp) -/* 043C18 80043018 00187880 */ sll $t7, $t8, 2 -/* 043C1C 8004301C 0319082A */ slt $at, $t8, $t9 -/* 043C20 80043020 1020002E */ beqz $at, .L800430DC -/* 043C24 80043024 014FC021 */ addu $t8, $t2, $t7 -/* 043C28 80043028 8F190000 */ lw $t9, ($t8) -/* 043C2C 8004302C 000EC080 */ sll $t8, $t6, 2 -/* 043C30 80043030 8F290064 */ lw $t1, 0x64($t9) -/* 043C34 80043034 0158C821 */ addu $t9, $t2, $t8 -/* 043C38 80043038 852F0000 */ lh $t7, ($t1) -/* 043C3C 8004303C 240501C2 */ li $a1, 450 -/* 043C40 80043040 13EF0026 */ beq $ra, $t7, .L800430DC -/* 043C44 80043044 24060008 */ li $a2, 8 -/* 043C48 80043048 8F240004 */ lw $a0, 4($t9) -/* 043C4C 8004304C A7AD0078 */ sh $t5, 0x78($sp) -/* 043C50 80043050 A7AC0034 */ sh $t4, 0x34($sp) -/* 043C54 80043054 A7A80076 */ sh $t0, 0x76($sp) -/* 043C58 80043058 0C015C2E */ jal play_random_character_voice -/* 043C5C 8004305C 24070002 */ li $a3, 2 -/* 043C60 80043060 87AF0070 */ lh $t7, 0x70($sp) -/* 043C64 80043064 87A80076 */ lh $t0, 0x76($sp) -/* 043C68 80043068 87AC0034 */ lh $t4, 0x34($sp) -/* 043C6C 8004306C 87AD0078 */ lh $t5, 0x78($sp) -/* 043C70 80043070 15E0000D */ bnez $t7, .L800430A8 -/* 043C74 80043074 24050162 */ li $a1, 354 -/* 043C78 80043078 8FA40098 */ lw $a0, 0x98($sp) -/* 043C7C 8004307C 24060008 */ li $a2, 8 -/* 043C80 80043080 24070003 */ li $a3, 3 -/* 043C84 80043084 A7A80076 */ sh $t0, 0x76($sp) -/* 043C88 80043088 A7AC0034 */ sh $t4, 0x34($sp) -/* 043C8C 8004308C 0C015C2E */ jal play_random_character_voice -/* 043C90 80043090 A7AD0078 */ sh $t5, 0x78($sp) -/* 043C94 80043094 87A80076 */ lh $t0, 0x76($sp) -/* 043C98 80043098 87AC0034 */ lh $t4, 0x34($sp) -/* 043C9C 8004309C 87AD0078 */ lh $t5, 0x78($sp) -/* 043CA0 800430A0 1000000F */ b .L800430E0 -/* 043CA4 800430A4 87A70072 */ lh $a3, 0x72($sp) -.L800430A8: -/* 043CA8 800430A8 8FA20098 */ lw $v0, 0x98($sp) -/* 043CAC 800430AC 24070003 */ li $a3, 3 -/* 043CB0 800430B0 C44C000C */ lwc1 $f12, 0xc($v0) -/* 043CB4 800430B4 C44E0010 */ lwc1 $f14, 0x10($v0) -/* 043CB8 800430B8 8C460014 */ lw $a2, 0x14($v0) -/* 043CBC 800430BC A7AD0078 */ sh $t5, 0x78($sp) -/* 043CC0 800430C0 A7AC0034 */ sh $t4, 0x34($sp) -/* 043CC4 800430C4 0C0172A1 */ jal func_8005CA84 -/* 043CC8 800430C8 A7A80076 */ sh $t0, 0x76($sp) -/* 043CCC 800430CC 87A80076 */ lh $t0, 0x76($sp) -/* 043CD0 800430D0 87AC0034 */ lh $t4, 0x34($sp) -/* 043CD4 800430D4 87AD0078 */ lh $t5, 0x78($sp) -/* 043CD8 800430D8 00000000 */ nop -.L800430DC: -/* 043CDC 800430DC 87A70072 */ lh $a3, 0x72($sp) -.L800430E0: -/* 043CE0 800430E0 44800000 */ mtc1 $zero, $f0 -/* 043CE4 800430E4 A207020B */ sb $a3, 0x20b($s0) -/* 043CE8 800430E8 A7AD0078 */ sh $t5, 0x78($sp) -/* 043CEC 800430EC A7AC0034 */ sh $t4, 0x34($sp) -/* 043CF0 800430F0 AFA0005C */ sw $zero, 0x5c($sp) -/* 043CF4 800430F4 A7A80076 */ sh $t0, 0x76($sp) -/* 043CF8 800430F8 02002025 */ move $a0, $s0 -/* 043CFC 800430FC 24050001 */ li $a1, 1 -/* 043D00 80043100 27A60094 */ addiu $a2, $sp, 0x94 -/* 043D04 80043104 E7A00094 */ swc1 $f0, 0x94($sp) -/* 043D08 80043108 0C006DEA */ jal func_8001B7A8 -/* 043D0C 8004310C E7A00090 */ swc1 $f0, 0x90($sp) -/* 043D10 80043110 87A80076 */ lh $t0, 0x76($sp) -/* 043D14 80043114 8FA9005C */ lw $t1, 0x5c($sp) -/* 043D18 80043118 87AC0034 */ lh $t4, 0x34($sp) -/* 043D1C 8004311C 87AD0078 */ lh $t5, 0x78($sp) -/* 043D20 80043120 10400003 */ beqz $v0, .L80043130 -/* 043D24 80043124 241FFFFF */ li $ra, -1 -/* 043D28 80043128 8C490064 */ lw $t1, 0x64($v0) -/* 043D2C 8004312C 00000000 */ nop -.L80043130: -/* 043D30 80043130 03E02825 */ move $a1, $ra -/* 043D34 80043134 AFA00058 */ sw $zero, 0x58($sp) -/* 043D38 80043138 02002025 */ move $a0, $s0 -/* 043D3C 8004313C 27A60090 */ addiu $a2, $sp, 0x90 -/* 043D40 80043140 A7A80076 */ sh $t0, 0x76($sp) -/* 043D44 80043144 AFA9005C */ sw $t1, 0x5c($sp) -/* 043D48 80043148 A7AC0034 */ sh $t4, 0x34($sp) -/* 043D4C 8004314C 0C006DEA */ jal func_8001B7A8 -/* 043D50 80043150 A7AD0078 */ sh $t5, 0x78($sp) -/* 043D54 80043154 87A80076 */ lh $t0, 0x76($sp) -/* 043D58 80043158 8FA9005C */ lw $t1, 0x5c($sp) -/* 043D5C 8004315C 87AC0034 */ lh $t4, 0x34($sp) -/* 043D60 80043160 87AD0078 */ lh $t5, 0x78($sp) -/* 043D64 80043164 10400004 */ beqz $v0, .L80043178 -/* 043D68 80043168 29010007 */ slti $at, $t0, 7 -/* 043D6C 8004316C 8C4E0064 */ lw $t6, 0x64($v0) -/* 043D70 80043170 00000000 */ nop -/* 043D74 80043174 AFAE0058 */ sw $t6, 0x58($sp) -.L80043178: -/* 043D78 80043178 82180003 */ lb $t8, 3($s0) -/* 043D7C 8004317C 11200004 */ beqz $t1, .L80043190 -/* 043D80 80043180 A3B8003E */ sb $t8, 0x3e($sp) -/* 043D84 80043184 81390003 */ lb $t9, 3($t1) -/* 043D88 80043188 00000000 */ nop -/* 043D8C 8004318C A3B9003F */ sb $t9, 0x3f($sp) -.L80043190: -/* 043D90 80043190 1020002A */ beqz $at, .L8004323C -/* 043D94 80043194 00000000 */ nop -/* 043D98 80043198 AFA9005C */ sw $t1, 0x5c($sp) -/* 043D9C 8004319C A7AC0034 */ sh $t4, 0x34($sp) -/* 043DA0 800431A0 0C02658B */ jal get_trophy_race_world_id -/* 043DA4 800431A4 A7AD0078 */ sh $t5, 0x78($sp) -/* 043DA8 800431A8 8FA9005C */ lw $t1, 0x5c($sp) -/* 043DAC 800431AC 87AC0034 */ lh $t4, 0x34($sp) -/* 043DB0 800431B0 87AD0078 */ lh $t5, 0x78($sp) -/* 043DB4 800431B4 14400021 */ bnez $v0, .L8004323C -/* 043DB8 800431B8 00000000 */ nop -/* 043DBC 800431BC AFA9005C */ sw $t1, 0x5c($sp) -/* 043DC0 800431C0 A7AC0034 */ sh $t4, 0x34($sp) -/* 043DC4 800431C4 0C008D5A */ jal func_80023568 -/* 043DC8 800431C8 A7AD0078 */ sh $t5, 0x78($sp) -/* 043DCC 800431CC 8FA9005C */ lw $t1, 0x5c($sp) -/* 043DD0 800431D0 87AC0034 */ lh $t4, 0x34($sp) -/* 043DD4 800431D4 87AD0078 */ lh $t5, 0x78($sp) -/* 043DD8 800431D8 14400018 */ bnez $v0, .L8004323C -/* 043DDC 800431DC 00000000 */ nop -/* 043DE0 800431E0 AFA9005C */ sw $t1, 0x5c($sp) -/* 043DE4 800431E4 A7AC0034 */ sh $t4, 0x34($sp) -/* 043DE8 800431E8 0C008D07 */ jal is_taj_challenge -/* 043DEC 800431EC A7AD0078 */ sh $t5, 0x78($sp) -/* 043DF0 800431F0 8FA9005C */ lw $t1, 0x5c($sp) -/* 043DF4 800431F4 87AC0034 */ lh $t4, 0x34($sp) -/* 043DF8 800431F8 87AD0078 */ lh $t5, 0x78($sp) -/* 043DFC 800431FC 1440000F */ bnez $v0, .L8004323C -/* 043E00 80043200 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 -/* 043E04 80043204 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) -/* 043E08 80043208 24010064 */ li $at, 100 -/* 043E0C 8004320C 15E10022 */ bne $t7, $at, .L80043298 -/* 043E10 80043210 00002025 */ move $a0, $zero -/* 043E14 80043214 24050002 */ li $a1, 2 -/* 043E18 80043218 AFA9005C */ sw $t1, 0x5c($sp) -/* 043E1C 8004321C A7AC0034 */ sh $t4, 0x34($sp) -/* 043E20 80043220 0C01BE53 */ jal get_random_number_from_range -/* 043E24 80043224 A7AD0078 */ sh $t5, 0x78($sp) -/* 043E28 80043228 8FA9005C */ lw $t1, 0x5c($sp) -/* 043E2C 8004322C 87AC0034 */ lh $t4, 0x34($sp) -/* 043E30 80043230 87AD0078 */ lh $t5, 0x78($sp) -/* 043E34 80043234 10000018 */ b .L80043298 -/* 043E38 80043238 A20201CC */ sb $v0, 0x1cc($s0) -.L8004323C: -/* 043E3C 8004323C AFA9005C */ sw $t1, 0x5c($sp) -/* 043E40 80043240 A7AC0034 */ sh $t4, 0x34($sp) -/* 043E44 80043244 0C02658B */ jal get_trophy_race_world_id -/* 043E48 80043248 A7AD0078 */ sh $t5, 0x78($sp) -/* 043E4C 8004324C 8FA9005C */ lw $t1, 0x5c($sp) -/* 043E50 80043250 87AC0034 */ lh $t4, 0x34($sp) -/* 043E54 80043254 87AD0078 */ lh $t5, 0x78($sp) -/* 043E58 80043258 10400009 */ beqz $v0, .L80043280 -/* 043E5C 8004325C 8FAE0050 */ lw $t6, 0x50($sp) -/* 043E60 80043260 8FAE0050 */ lw $t6, 0x50($sp) -/* 043E64 80043264 83B8003E */ lb $t8, 0x3e($sp) -/* 043E68 80043268 00000000 */ nop -/* 043E6C 8004326C 01D8C821 */ addu $t9, $t6, $t8 -/* 043E70 80043270 932F0016 */ lbu $t7, 0x16($t9) -/* 043E74 80043274 10000008 */ b .L80043298 -/* 043E78 80043278 A20F01CC */ sb $t7, 0x1cc($s0) -/* 043E7C 8004327C 8FAE0050 */ lw $t6, 0x50($sp) -.L80043280: -/* 043E80 80043280 83B8003E */ lb $t8, 0x3e($sp) -/* 043E84 80043284 00000000 */ nop -/* 043E88 80043288 01D8C821 */ addu $t9, $t6, $t8 -/* 043E8C 8004328C 932F000C */ lbu $t7, 0xc($t9) -/* 043E90 80043290 00000000 */ nop -/* 043E94 80043294 A20F01CC */ sb $t7, 0x1cc($s0) -.L80043298: -/* 043E98 80043298 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012 -/* 043E9C 8004329C C420D544 */ lwc1 $f0, %lo(D_8011D544)($at) -/* 043EA0 800432A0 44802000 */ mtc1 $zero, $f4 -/* 043EA4 800432A4 2404000C */ li $a0, 12 -/* 043EA8 800432A8 46002032 */ c.eq.s $f4, $f0 -/* 043EAC 800432AC 00000000 */ nop -/* 043EB0 800432B0 45010009 */ bc1t .L800432D8 -/* 043EB4 800432B4 00000000 */ nop -/* 043EB8 800432B8 860E01AE */ lh $t6, 0x1ae($s0) -/* 043EBC 800432BC 3C18800E */ lui $t8, %hi(D_800DCDA0) # $t8, 0x800e -/* 043EC0 800432C0 030EC021 */ addu $t8, $t8, $t6 -/* 043EC4 800432C4 8318CDA0 */ lb $t8, %lo(D_800DCDA0)($t8) -/* 043EC8 800432C8 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012 -/* 043ECC 800432CC A21801CA */ sb $t8, 0x1ca($s0) -/* 043ED0 800432D0 C420D544 */ lwc1 $f0, %lo(D_8011D544)($at) -/* 043ED4 800432D4 00000000 */ nop -.L800432D8: -/* 043ED8 800432D8 820301CC */ lb $v1, 0x1cc($s0) -/* 043EDC 800432DC 3C014396 */ li $at, 0x43960000 # 300.000000 -/* 043EE0 800432E0 246EFFFE */ addiu $t6, $v1, -2 -/* 043EE4 800432E4 000EC480 */ sll $t8, $t6, 0x12 -/* 043EE8 800432E8 00181C03 */ sra $v1, $t8, 0x10 -/* 043EEC 800432EC 44835000 */ mtc1 $v1, $f10 -/* 043EF0 800432F0 44813000 */ mtc1 $at, $f6 -/* 043EF4 800432F4 46805420 */ cvt.s.w $f16, $f10 -/* 043EF8 800432F8 46003201 */ sub.s $f8, $f6, $f0 -/* 043EFC 800432FC 4608803E */ c.le.s $f16, $f8 -/* 043F00 80043300 00000000 */ nop -/* 043F04 80043304 45000005 */ bc1f .L8004331C -/* 043F08 80043308 3C0F8012 */ lui $t7, %hi(gCurrentRacerInput) # $t7, 0x8012 -/* 043F0C 8004330C 8DEFD528 */ lw $t7, %lo(gCurrentRacerInput)($t7) -/* 043F10 80043310 3C018012 */ lui $at, %hi(gCurrentRacerInput) # $at, 0x8012 -/* 043F14 80043314 35EE8000 */ ori $t6, $t7, 0x8000 -/* 043F18 80043318 AC2ED528 */ sw $t6, %lo(gCurrentRacerInput)($at) -.L8004331C: -/* 043F1C 8004331C AFA9005C */ sw $t1, 0x5c($sp) -/* 043F20 80043320 A7AC0034 */ sh $t4, 0x34($sp) -/* 043F24 80043324 0C0078A7 */ jal get_misc_asset -/* 043F28 80043328 A7AD0078 */ sh $t5, 0x78($sp) -/* 043F2C 8004332C 82080174 */ lb $t0, 0x174($s0) -/* 043F30 80043330 8FA9005C */ lw $t1, 0x5c($sp) -/* 043F34 80043334 87AC0034 */ lh $t4, 0x34($sp) -/* 043F38 80043338 87AD0078 */ lh $t5, 0x78($sp) -/* 043F3C 8004333C 29010003 */ slti $at, $t0, 3 -/* 043F40 80043340 1020000A */ beqz $at, .L8004336C -/* 043F44 80043344 241FFFFF */ li $ra, -1 -/* 043F48 80043348 82180172 */ lb $t8, 0x172($s0) -/* 043F4C 8004334C 00000000 */ nop -/* 043F50 80043350 0018C880 */ sll $t9, $t8, 2 -/* 043F54 80043354 0338C823 */ subu $t9, $t9, $t8 -/* 043F58 80043358 03287821 */ addu $t7, $t9, $t0 -/* 043F5C 8004335C 01E27021 */ addu $t6, $t7, $v0 -/* 043F60 80043360 81CA0000 */ lb $t2, ($t6) -/* 043F64 80043364 10000004 */ b .L80043378 -/* 043F68 80043368 8FB80054 */ lw $t8, 0x54($sp) -.L8004336C: -/* 043F6C 8004336C 820A0172 */ lb $t2, 0x172($s0) -/* 043F70 80043370 00000000 */ nop -/* 043F74 80043374 8FB80054 */ lw $t8, 0x54($sp) -.L80043378: -/* 043F78 80043378 24020007 */ li $v0, 7 -/* 043F7C 8004337C 8303000C */ lb $v1, 0xc($t8) -/* 043F80 80043380 8319000D */ lb $t9, 0xd($t8) -/* 043F84 80043384 004D5823 */ subu $t3, $v0, $t5 -/* 043F88 80043388 03237823 */ subu $t7, $t9, $v1 -/* 043F8C 8004338C 01EB0019 */ multu $t7, $t3 -/* 043F90 80043390 00007012 */ mflo $t6 -/* 043F94 80043394 00000000 */ nop -/* 043F98 80043398 00000000 */ nop -/* 043F9C 8004339C 01C2001A */ div $zero, $t6, $v0 -/* 043FA0 800433A0 14400002 */ bnez $v0, .L800433AC -/* 043FA4 800433A4 00000000 */ nop -/* 043FA8 800433A8 0007000D */ break 7 -.L800433AC: -/* 043FAC 800433AC 2401FFFF */ li $at, -1 -/* 043FB0 800433B0 14410004 */ bne $v0, $at, .L800433C4 -/* 043FB4 800433B4 3C018000 */ lui $at, 0x8000 -/* 043FB8 800433B8 15C10002 */ bne $t6, $at, .L800433C4 -/* 043FBC 800433BC 00000000 */ nop -/* 043FC0 800433C0 0006000D */ break 6 -.L800433C4: -/* 043FC4 800433C4 0000C812 */ mflo $t9 -/* 043FC8 800433C8 03237821 */ addu $t7, $t9, $v1 -/* 043FCC 800433CC A7AF0038 */ sh $t7, 0x38($sp) -/* 043FD0 800433D0 830E0011 */ lb $t6, 0x11($t8) -/* 043FD4 800433D4 83040010 */ lb $a0, 0x10($t8) -/* 043FD8 800433D8 00000000 */ nop -/* 043FDC 800433DC 01C4C823 */ subu $t9, $t6, $a0 -/* 043FE0 800433E0 032B0019 */ multu $t9, $t3 -/* 043FE4 800433E4 00007012 */ mflo $t6 -/* 043FE8 800433E8 00000000 */ nop -/* 043FEC 800433EC 00000000 */ nop -/* 043FF0 800433F0 01C2001A */ div $zero, $t6, $v0 -/* 043FF4 800433F4 14400002 */ bnez $v0, .L80043400 -/* 043FF8 800433F8 00000000 */ nop -/* 043FFC 800433FC 0007000D */ break 7 -.L80043400: -/* 044000 80043400 2401FFFF */ li $at, -1 -/* 044004 80043404 14410004 */ bne $v0, $at, .L80043418 -/* 044008 80043408 3C018000 */ lui $at, 0x8000 -/* 04400C 8004340C 15C10002 */ bne $t6, $at, .L80043418 -/* 044010 80043410 00000000 */ nop -/* 044014 80043414 0006000D */ break 6 -.L80043418: -/* 044018 80043418 0000C812 */ mflo $t9 -/* 04401C 8004341C 03247021 */ addu $t6, $t9, $a0 -/* 044020 80043420 A7AE0036 */ sh $t6, 0x36($sp) -/* 044024 80043424 83190009 */ lb $t9, 9($t8) -/* 044028 80043428 83050008 */ lb $a1, 8($t8) -/* 04402C 8004342C 00000000 */ nop -/* 044030 80043430 03257023 */ subu $t6, $t9, $a1 -/* 044034 80043434 01CB0019 */ multu $t6, $t3 -/* 044038 80043438 0000C812 */ mflo $t9 -/* 04403C 8004343C 00000000 */ nop -/* 044040 80043440 00000000 */ nop -/* 044044 80043444 0322001A */ div $zero, $t9, $v0 -/* 044048 80043448 14400002 */ bnez $v0, .L80043454 -/* 04404C 8004344C 00000000 */ nop -/* 044050 80043450 0007000D */ break 7 -.L80043454: -/* 044054 80043454 2401FFFF */ li $at, -1 -/* 044058 80043458 14410004 */ bne $v0, $at, .L8004346C -/* 04405C 8004345C 3C018000 */ lui $at, 0x8000 -/* 044060 80043460 17210002 */ bne $t9, $at, .L8004346C -/* 044064 80043464 00000000 */ nop -/* 044068 80043468 0006000D */ break 6 -.L8004346C: -/* 04406C 8004346C 00007012 */ mflo $t6 -/* 044070 80043470 01C5C821 */ addu $t9, $t6, $a1 -/* 044074 80043474 A7B9003A */ sh $t9, 0x3a($sp) -/* 044078 80043478 830E0015 */ lb $t6, 0x15($t8) -/* 04407C 8004347C 83060014 */ lb $a2, 0x14($t8) -/* 044080 80043480 00000000 */ nop -/* 044084 80043484 01C6C823 */ subu $t9, $t6, $a2 -/* 044088 80043488 032B0019 */ multu $t9, $t3 -/* 04408C 8004348C 0000C012 */ mflo $t8 -/* 044090 80043490 00000000 */ nop -/* 044094 80043494 00000000 */ nop -/* 044098 80043498 0302001A */ div $zero, $t8, $v0 -/* 04409C 8004349C 14400002 */ bnez $v0, .L800434A8 -/* 0440A0 800434A0 00000000 */ nop -/* 0440A4 800434A4 0007000D */ break 7 -.L800434A8: -/* 0440A8 800434A8 2401FFFF */ li $at, -1 -/* 0440AC 800434AC 14410004 */ bne $v0, $at, .L800434C0 -/* 0440B0 800434B0 3C018000 */ lui $at, 0x8000 -/* 0440B4 800434B4 17010002 */ bne $t8, $at, .L800434C0 -/* 0440B8 800434B8 00000000 */ nop -/* 0440BC 800434BC 0006000D */ break 6 -.L800434C0: -/* 0440C0 800434C0 00007012 */ mflo $t6 -/* 0440C4 800434C4 01C6C821 */ addu $t9, $t6, $a2 -/* 0440C8 800434C8 A7B9003C */ sh $t9, 0x3c($sp) -/* 0440CC 800434CC 92070209 */ lbu $a3, 0x209($s0) -/* 0440D0 800434D0 AFAB0028 */ sw $t3, 0x28($sp) -/* 0440D4 800434D4 30F80001 */ andi $t8, $a3, 1 -/* 0440D8 800434D8 130000AF */ beqz $t8, .L80043798 -/* 0440DC 800434DC 00000000 */ nop -/* 0440E0 800434E0 820E0201 */ lb $t6, 0x201($s0) -/* 0440E4 800434E4 00000000 */ nop -/* 0440E8 800434E8 15C00025 */ bnez $t6, .L80043580 -/* 0440EC 800434EC 00000000 */ nop -/* 0440F0 800434F0 15000012 */ bnez $t0, .L8004353C -/* 0440F4 800434F4 000F2400 */ sll $a0, $t7, 0x10 -/* 0440F8 800434F8 0004CC03 */ sra $t9, $a0, 0x10 -/* 0440FC 800434FC 03202025 */ move $a0, $t9 -/* 044100 80043500 AFA9005C */ sw $t1, 0x5c($sp) -/* 044104 80043504 A3AA004B */ sb $t2, 0x4b($sp) -/* 044108 80043508 A7AC0034 */ sh $t4, 0x34($sp) -/* 04410C 8004350C 0C011114 */ jal roll_percent_chance -/* 044110 80043510 A7AD0078 */ sh $t5, 0x78($sp) -/* 044114 80043514 8FA9005C */ lw $t1, 0x5c($sp) -/* 044118 80043518 83AA004B */ lb $t2, 0x4b($sp) -/* 04411C 8004351C 87AC0034 */ lh $t4, 0x34($sp) -/* 044120 80043520 87AD0078 */ lh $t5, 0x78($sp) -/* 044124 80043524 10400005 */ beqz $v0, .L8004353C -/* 044128 80043528 241FFFFF */ li $ra, -1 -/* 04412C 8004352C 82180174 */ lb $t8, 0x174($s0) -/* 044130 80043530 00000000 */ nop -/* 044134 80043534 270E0001 */ addiu $t6, $t8, 1 -/* 044138 80043538 A20E0174 */ sb $t6, 0x174($s0) -.L8004353C: -/* 04413C 8004353C 15800010 */ bnez $t4, .L80043580 -/* 044140 80043540 29A10003 */ slti $at, $t5, 3 -/* 044144 80043544 1020000E */ beqz $at, .L80043580 -/* 044148 80043548 00000000 */ nop -/* 04414C 8004354C 87A4003C */ lh $a0, 0x3c($sp) -/* 044150 80043550 AFA9005C */ sw $t1, 0x5c($sp) -/* 044154 80043554 A3AA004B */ sb $t2, 0x4b($sp) -/* 044158 80043558 A7AC0034 */ sh $t4, 0x34($sp) -/* 04415C 8004355C 0C011114 */ jal roll_percent_chance -/* 044160 80043560 A7AD0078 */ sh $t5, 0x78($sp) -/* 044164 80043564 8FA9005C */ lw $t1, 0x5c($sp) -/* 044168 80043568 83AA004B */ lb $t2, 0x4b($sp) -/* 04416C 8004356C 87AC0034 */ lh $t4, 0x34($sp) -/* 044170 80043570 87AD0078 */ lh $t5, 0x78($sp) -/* 044174 80043574 10400002 */ beqz $v0, .L80043580 -/* 044178 80043578 241FFFFF */ li $ra, -1 -/* 04417C 8004357C A2000172 */ sb $zero, 0x172($s0) -.L80043580: -/* 044180 80043580 820F01D3 */ lb $t7, 0x1d3($s0) -/* 044184 80043584 3C19800E */ lui $t9, %hi(gRacerAIBalloonActionTable) # $t9, 0x800e -/* 044188 80043588 15E00016 */ bnez $t7, .L800435E4 -/* 04418C 8004358C 032AC821 */ addu $t9, $t9, $t2 -/* 044190 80043590 8339CD90 */ lb $t9, %lo(gRacerAIBalloonActionTable)($t9) -/* 044194 80043594 24010004 */ li $at, 4 -/* 044198 80043598 17210012 */ bne $t9, $at, .L800435E4 -/* 04419C 8004359C 00000000 */ nop -/* 0441A0 800435A0 87A4003C */ lh $a0, 0x3c($sp) -/* 0441A4 800435A4 AFA9005C */ sw $t1, 0x5c($sp) -/* 0441A8 800435A8 A3AA004B */ sb $t2, 0x4b($sp) -/* 0441AC 800435AC A7AC0034 */ sh $t4, 0x34($sp) -/* 0441B0 800435B0 0C011114 */ jal roll_percent_chance -/* 0441B4 800435B4 A7AD0078 */ sh $t5, 0x78($sp) -/* 0441B8 800435B8 8FA9005C */ lw $t1, 0x5c($sp) -/* 0441BC 800435BC 83AA004B */ lb $t2, 0x4b($sp) -/* 0441C0 800435C0 87AC0034 */ lh $t4, 0x34($sp) -/* 0441C4 800435C4 87AD0078 */ lh $t5, 0x78($sp) -/* 0441C8 800435C8 10400006 */ beqz $v0, .L800435E4 -/* 0441CC 800435CC 241FFFFF */ li $ra, -1 -/* 0441D0 800435D0 3C188012 */ lui $t8, %hi(gCurrentButtonsReleased) # $t8, 0x8012 -/* 0441D4 800435D4 8F18D530 */ lw $t8, %lo(gCurrentButtonsReleased)($t8) -/* 0441D8 800435D8 3C018012 */ lui $at, %hi(gCurrentButtonsReleased) # $at, 0x8012 -/* 0441DC 800435DC 370E2000 */ ori $t6, $t8, 0x2000 -/* 0441E0 800435E0 AC2ED530 */ sw $t6, %lo(gCurrentButtonsReleased)($at) -.L800435E4: -/* 0441E4 800435E4 820F0173 */ lb $t7, 0x173($s0) -/* 0441E8 800435E8 3C19800E */ lui $t9, %hi(gRacerAIBalloonActionTable) # $t9, 0x800e -/* 0441EC 800435EC 11E00065 */ beqz $t7, .L80043784 -/* 0441F0 800435F0 2739CD90 */ addiu $t9, %lo(gRacerAIBalloonActionTable) # addiu $t9, $t9, -0x3270 -/* 0441F4 800435F4 01591821 */ addu $v1, $t2, $t9 -/* 0441F8 800435F8 80780000 */ lb $t8, ($v1) -/* 0441FC 800435FC 24010001 */ li $at, 1 -/* 044200 80043600 1701002F */ bne $t8, $at, .L800436C0 -/* 044204 80043604 00000000 */ nop -/* 044208 80043608 11200014 */ beqz $t1, .L8004365C -/* 04420C 8004360C 87A40036 */ lh $a0, 0x36($sp) -/* 044210 80043610 852E0000 */ lh $t6, ($t1) -/* 044214 80043614 29810004 */ slti $at, $t4, 4 -/* 044218 80043618 17EE0010 */ bne $ra, $t6, .L8004365C -/* 04421C 8004361C 87A40036 */ lh $a0, 0x36($sp) -/* 044220 80043620 10200027 */ beqz $at, .L800436C0 -/* 044224 80043624 00000000 */ nop -/* 044228 80043628 83AF003E */ lb $t7, 0x3e($sp) -/* 04422C 8004362C 8FB90044 */ lw $t9, 0x44($sp) -/* 044230 80043630 00000000 */ nop -/* 044234 80043634 01F9C021 */ addu $t8, $t7, $t9 -/* 044238 80043638 830E0000 */ lb $t6, ($t8) -/* 04423C 8004363C 24190004 */ li $t9, 4 -/* 044240 80043640 000E7900 */ sll $t7, $t6, 4 -/* 044244 80043644 01EE7823 */ subu $t7, $t7, $t6 -/* 044248 80043648 000F7880 */ sll $t7, $t7, 2 -/* 04424C 8004364C A60F01C6 */ sh $t7, 0x1c6($s0) -/* 044250 80043650 1000001B */ b .L800436C0 -/* 044254 80043654 A21901C9 */ sb $t9, 0x1c9($s0) -/* 044258 80043658 87A40036 */ lh $a0, 0x36($sp) -.L8004365C: -/* 04425C 8004365C AFA3002C */ sw $v1, 0x2c($sp) -/* 044260 80043660 AFA9005C */ sw $t1, 0x5c($sp) -/* 044264 80043664 A7AC0034 */ sh $t4, 0x34($sp) -/* 044268 80043668 0C011114 */ jal roll_percent_chance -/* 04426C 8004366C A7AD0078 */ sh $t5, 0x78($sp) -/* 044270 80043670 8FA3002C */ lw $v1, 0x2c($sp) -/* 044274 80043674 8FA9005C */ lw $t1, 0x5c($sp) -/* 044278 80043678 87AC0034 */ lh $t4, 0x34($sp) -/* 04427C 8004367C 87AD0078 */ lh $t5, 0x78($sp) -/* 044280 80043680 1040000F */ beqz $v0, .L800436C0 -/* 044284 80043684 241FFFFF */ li $ra, -1 -/* 044288 80043688 29810002 */ slti $at, $t4, 2 -/* 04428C 8004368C 1020000C */ beqz $at, .L800436C0 -/* 044290 80043690 00000000 */ nop -/* 044294 80043694 83B8003E */ lb $t8, 0x3e($sp) -/* 044298 80043698 8FAE0044 */ lw $t6, 0x44($sp) -/* 04429C 8004369C 00000000 */ nop -/* 0442A0 800436A0 030E7821 */ addu $t7, $t8, $t6 -/* 0442A4 800436A4 81F90000 */ lb $t9, ($t7) -/* 0442A8 800436A8 240E0004 */ li $t6, 4 -/* 0442AC 800436AC 0019C100 */ sll $t8, $t9, 4 -/* 0442B0 800436B0 0319C023 */ subu $t8, $t8, $t9 -/* 0442B4 800436B4 0018C080 */ sll $t8, $t8, 2 -/* 0442B8 800436B8 A61801C6 */ sh $t8, 0x1c6($s0) -/* 0442BC 800436BC A20E01C9 */ sb $t6, 0x1c9($s0) -.L800436C0: -/* 0442C0 800436C0 806F0000 */ lb $t7, ($v1) -/* 0442C4 800436C4 24010002 */ li $at, 2 -/* 0442C8 800436C8 15E1002E */ bne $t7, $at, .L80043784 -/* 0442CC 800436CC 00000000 */ nop -/* 0442D0 800436D0 8FA30058 */ lw $v1, 0x58($sp) -/* 0442D4 800436D4 87A40036 */ lh $a0, 0x36($sp) -/* 0442D8 800436D8 10600013 */ beqz $v1, .L80043728 -/* 0442DC 800436DC 00000000 */ nop -/* 0442E0 800436E0 84790000 */ lh $t9, ($v1) -/* 0442E4 800436E4 29810004 */ slti $at, $t4, 4 -/* 0442E8 800436E8 17F9000F */ bne $ra, $t9, .L80043728 -/* 0442EC 800436EC 00000000 */ nop -/* 0442F0 800436F0 10200024 */ beqz $at, .L80043784 -/* 0442F4 800436F4 00000000 */ nop -/* 0442F8 800436F8 83B8003E */ lb $t8, 0x3e($sp) -/* 0442FC 800436FC 8FAE0044 */ lw $t6, 0x44($sp) -/* 044300 80043700 00000000 */ nop -/* 044304 80043704 030E7821 */ addu $t7, $t8, $t6 -/* 044308 80043708 81F90000 */ lb $t9, ($t7) -/* 04430C 8004370C 240E0005 */ li $t6, 5 -/* 044310 80043710 0019C100 */ sll $t8, $t9, 4 -/* 044314 80043714 0319C023 */ subu $t8, $t8, $t9 -/* 044318 80043718 0018C080 */ sll $t8, $t8, 2 -/* 04431C 8004371C A61801C6 */ sh $t8, 0x1c6($s0) -/* 044320 80043720 10000018 */ b .L80043784 -/* 044324 80043724 A20E01C9 */ sb $t6, 0x1c9($s0) -.L80043728: -/* 044328 80043728 AFA9005C */ sw $t1, 0x5c($sp) -/* 04432C 8004372C A7AC0034 */ sh $t4, 0x34($sp) -/* 044330 80043730 0C011114 */ jal roll_percent_chance -/* 044334 80043734 A7AD0078 */ sh $t5, 0x78($sp) -/* 044338 80043738 8FA9005C */ lw $t1, 0x5c($sp) -/* 04433C 8004373C 87AC0034 */ lh $t4, 0x34($sp) -/* 044340 80043740 87AD0078 */ lh $t5, 0x78($sp) -/* 044344 80043744 1040000F */ beqz $v0, .L80043784 -/* 044348 80043748 241FFFFF */ li $ra, -1 -/* 04434C 8004374C 29810002 */ slti $at, $t4, 2 -/* 044350 80043750 1020000C */ beqz $at, .L80043784 -/* 044354 80043754 00000000 */ nop -/* 044358 80043758 83AF003E */ lb $t7, 0x3e($sp) -/* 04435C 8004375C 8FB90044 */ lw $t9, 0x44($sp) -/* 044360 80043760 00000000 */ nop -/* 044364 80043764 01F9C021 */ addu $t8, $t7, $t9 -/* 044368 80043768 830E0000 */ lb $t6, ($t8) -/* 04436C 8004376C 24190005 */ li $t9, 5 -/* 044370 80043770 000E7900 */ sll $t7, $t6, 4 -/* 044374 80043774 01EE7823 */ subu $t7, $t7, $t6 -/* 044378 80043778 000F7880 */ sll $t7, $t7, 2 -/* 04437C 8004377C A60F01C6 */ sh $t7, 0x1c6($s0) -/* 044380 80043780 A21901C9 */ sb $t9, 0x1c9($s0) -.L80043784: -/* 044384 80043784 92180209 */ lbu $t8, 0x209($s0) -/* 044388 80043788 00000000 */ nop -/* 04438C 8004378C 330EFFFE */ andi $t6, $t8, 0xfffe -/* 044390 80043790 A20E0209 */ sb $t6, 0x209($s0) -/* 044394 80043794 31C700FF */ andi $a3, $t6, 0xff -.L80043798: -/* 044398 80043798 820F01D3 */ lb $t7, 0x1d3($s0) -/* 04439C 8004379C 8FA30058 */ lw $v1, 0x58($sp) -/* 0443A0 800437A0 11E00021 */ beqz $t7, .L80043828 -/* 0443A4 800437A4 30F90002 */ andi $t9, $a3, 2 -/* 0443A8 800437A8 17200016 */ bnez $t9, .L80043804 -/* 0443AC 800437AC 30F80004 */ andi $t8, $a3, 4 -/* 0443B0 800437B0 87A4003A */ lh $a0, 0x3a($sp) -/* 0443B4 800437B4 AFA9005C */ sw $t1, 0x5c($sp) -/* 0443B8 800437B8 A7AC0034 */ sh $t4, 0x34($sp) -/* 0443BC 800437BC 0C011114 */ jal roll_percent_chance -/* 0443C0 800437C0 A7AD0078 */ sh $t5, 0x78($sp) -/* 0443C4 800437C4 8FA9005C */ lw $t1, 0x5c($sp) -/* 0443C8 800437C8 87AC0034 */ lh $t4, 0x34($sp) -/* 0443CC 800437CC 87AD0078 */ lh $t5, 0x78($sp) -/* 0443D0 800437D0 10400005 */ beqz $v0, .L800437E8 -/* 0443D4 800437D4 241FFFFF */ li $ra, -1 -/* 0443D8 800437D8 92180209 */ lbu $t8, 0x209($s0) -/* 0443DC 800437DC 00000000 */ nop -/* 0443E0 800437E0 370E0004 */ ori $t6, $t8, 4 -/* 0443E4 800437E4 A20E0209 */ sb $t6, 0x209($s0) -.L800437E8: -/* 0443E8 800437E8 920F0209 */ lbu $t7, 0x209($s0) -/* 0443EC 800437EC 00000000 */ nop -/* 0443F0 800437F0 35F90002 */ ori $t9, $t7, 2 -/* 0443F4 800437F4 A2190209 */ sb $t9, 0x209($s0) -/* 0443F8 800437F8 8FA30058 */ lw $v1, 0x58($sp) -/* 0443FC 800437FC 332700FF */ andi $a3, $t9, 0xff -/* 044400 80043800 30F80004 */ andi $t8, $a3, 4 -.L80043804: -/* 044404 80043804 13000014 */ beqz $t8, .L80043858 -/* 044408 80043808 3C0E8012 */ lui $t6, %hi(gCurrentRacerInput) # $t6, 0x8012 -/* 04440C 8004380C 8DCED528 */ lw $t6, %lo(gCurrentRacerInput)($t6) -/* 044410 80043810 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff -/* 044414 80043814 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff -/* 044418 80043818 01C17824 */ and $t7, $t6, $at -/* 04441C 8004381C 3C018012 */ lui $at, %hi(gCurrentRacerInput) # $at, 0x8012 -/* 044420 80043820 1000000D */ b .L80043858 -/* 044424 80043824 AC2FD528 */ sw $t7, %lo(gCurrentRacerInput)($at) -.L80043828: -/* 044428 80043828 2401FFFD */ li $at, -3 -/* 04442C 8004382C 00E1C824 */ and $t9, $a3, $at -/* 044430 80043830 C604002C */ lwc1 $f4, 0x2c($s0) -/* 044434 80043834 3C01C028 */ li $at, 0xC0280000 # -2.625000 -/* 044438 80043838 44819800 */ mtc1 $at, $f19 -/* 04443C 8004383C 44809000 */ mtc1 $zero, $f18 -/* 044440 80043840 460021A1 */ cvt.d.s $f6, $f4 -/* 044444 80043844 4626903C */ c.lt.d $f18, $f6 -/* 044448 80043848 A2190209 */ sb $t9, 0x209($s0) -/* 04444C 8004384C 45000002 */ bc1f .L80043858 -/* 044450 80043850 332EFFFB */ andi $t6, $t9, 0xfffb -/* 044454 80043854 A20E0209 */ sb $t6, 0x209($s0) -.L80043858: -/* 044458 80043858 920F0209 */ lbu $t7, 0x209($s0) -/* 04445C 8004385C 00000000 */ nop -/* 044460 80043860 31F90004 */ andi $t9, $t7, 4 -/* 044464 80043864 13200007 */ beqz $t9, .L80043884 -/* 044468 80043868 3C188012 */ lui $t8, %hi(gCurrentRacerInput) # $t8, 0x8012 -/* 04446C 8004386C 8F18D528 */ lw $t8, %lo(gCurrentRacerInput)($t8) -/* 044470 80043870 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff -/* 044474 80043874 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff -/* 044478 80043878 03017024 */ and $t6, $t8, $at -/* 04447C 8004387C 3C018012 */ lui $at, %hi(gCurrentRacerInput) # $at, 0x8012 -/* 044480 80043880 AC2ED528 */ sw $t6, %lo(gCurrentRacerInput)($at) -.L80043884: -/* 044484 80043884 860F01C6 */ lh $t7, 0x1c6($s0) -/* 044488 80043888 00000000 */ nop -/* 04448C 8004388C 15E00043 */ bnez $t7, .L8004399C -/* 044490 80043890 8FAF0028 */ lw $t7, 0x28($sp) -/* 044494 80043894 920201C9 */ lbu $v0, 0x1c9($s0) -/* 044498 80043898 24010004 */ li $at, 4 -/* 04449C 8004389C 10410004 */ beq $v0, $at, .L800438B0 -/* 0444A0 800438A0 3C198012 */ lui $t9, %hi(gCurrentButtonsReleased) # $t9, 0x8012 -/* 0444A4 800438A4 24010005 */ li $at, 5 -/* 0444A8 800438A8 14410005 */ bne $v0, $at, .L800438C0 -/* 0444AC 800438AC 00000000 */ nop -.L800438B0: -/* 0444B0 800438B0 8F39D530 */ lw $t9, %lo(gCurrentButtonsReleased)($t9) -/* 0444B4 800438B4 3C018012 */ lui $at, %hi(gCurrentButtonsReleased) # $at, 0x8012 -/* 0444B8 800438B8 37382000 */ ori $t8, $t9, 0x2000 -/* 0444BC 800438BC AC38D530 */ sw $t8, %lo(gCurrentButtonsReleased)($at) -.L800438C0: -/* 0444C0 800438C0 1060001D */ beqz $v1, .L80043938 -/* 0444C4 800438C4 A20001C9 */ sb $zero, 0x1c9($s0) -/* 0444C8 800438C8 846E0000 */ lh $t6, ($v1) -/* 0444CC 800438CC C7AA0090 */ lwc1 $f10, 0x90($sp) -/* 0444D0 800438D0 13EE0019 */ beq $ra, $t6, .L80043938 -/* 0444D4 800438D4 3C014348 */ li $at, 0x43480000 # 200.000000 -/* 0444D8 800438D8 44814000 */ mtc1 $at, $f8 -/* 0444DC 800438DC 00000000 */ nop -/* 0444E0 800438E0 4608503C */ c.lt.s $f10, $f8 -/* 0444E4 800438E4 00000000 */ nop -/* 0444E8 800438E8 45000013 */ bc1f .L80043938 -/* 0444EC 800438EC 00000000 */ nop -/* 0444F0 800438F0 11A00011 */ beqz $t5, .L80043938 -/* 0444F4 800438F4 29810003 */ slti $at, $t4, 3 -/* 0444F8 800438F8 1020000F */ beqz $at, .L80043938 -/* 0444FC 800438FC 00000000 */ nop -/* 044500 80043900 83AF003E */ lb $t7, 0x3e($sp) -/* 044504 80043904 83B8003F */ lb $t8, 0x3f($sp) -/* 044508 80043908 000FC880 */ sll $t9, $t7, 2 -/* 04450C 8004390C 032FC821 */ addu $t9, $t9, $t7 -/* 044510 80043910 8FAF0040 */ lw $t7, 0x40($sp) -/* 044514 80043914 0019C840 */ sll $t9, $t9, 1 -/* 044518 80043918 03387021 */ addu $t6, $t9, $t8 -/* 04451C 8004391C 01CFC821 */ addu $t9, $t6, $t7 -/* 044520 80043920 83380000 */ lb $t8, ($t9) -/* 044524 80043924 240E0005 */ li $t6, 5 -/* 044528 80043928 2B010005 */ slti $at, $t8, 5 -/* 04452C 8004392C 10200002 */ beqz $at, .L80043938 -/* 044530 80043930 00000000 */ nop -/* 044534 80043934 A20E01C9 */ sb $t6, 0x1c9($s0) -.L80043938: -/* 044538 80043938 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012 -/* 04453C 8004393C C424D544 */ lwc1 $f4, %lo(D_8011D544)($at) -/* 044540 80043940 44808000 */ mtc1 $zero, $f16 -/* 044544 80043944 3C0F800E */ lui $t7, %hi(D_800DCDA8) # $t7, 0x800e -/* 044548 80043948 46048032 */ c.eq.s $f16, $f4 -/* 04454C 8004394C 01ED7821 */ addu $t7, $t7, $t5 -/* 044550 80043950 4500000F */ bc1f .L80043990 -/* 044554 80043954 8FA30058 */ lw $v1, 0x58($sp) -/* 044558 80043958 81EFCDA8 */ lb $t7, %lo(D_800DCDA8)($t7) -/* 04455C 8004395C 00000000 */ nop -/* 044560 80043960 A20F01CA */ sb $t7, 0x1ca($s0) -/* 044564 80043964 87A4003C */ lh $a0, 0x3c($sp) -/* 044568 80043968 0C011114 */ jal roll_percent_chance -/* 04456C 8004396C AFA9005C */ sw $t1, 0x5c($sp) -/* 044570 80043970 8FA9005C */ lw $t1, 0x5c($sp) -/* 044574 80043974 10400005 */ beqz $v0, .L8004398C -/* 044578 80043978 241FFFFF */ li $ra, -1 -/* 04457C 8004397C 821901CA */ lb $t9, 0x1ca($s0) -/* 044580 80043980 00000000 */ nop -/* 044584 80043984 2738FFFF */ addiu $t8, $t9, -1 -/* 044588 80043988 A21801CA */ sb $t8, 0x1ca($s0) -.L8004398C: -/* 04458C 8004398C 8FA30058 */ lw $v1, 0x58($sp) -.L80043990: -/* 044590 80043990 240E012C */ li $t6, 300 -/* 044594 80043994 A60E01C6 */ sh $t6, 0x1c6($s0) -/* 044598 80043998 8FAF0028 */ lw $t7, 0x28($sp) -.L8004399C: -/* 04459C 8004399C 24010007 */ li $at, 7 -/* 0445A0 800439A0 15E1000F */ bne $t7, $at, .L800439E0 -/* 0445A4 800439A4 00000000 */ nop -/* 0445A8 800439A8 1060000D */ beqz $v1, .L800439E0 -/* 0445AC 800439AC 3C01800E */ lui $at, %hi(D_800E62A8 + 4) # $at, 0x800e -/* 0445B0 800439B0 C7B20090 */ lwc1 $f18, 0x90($sp) -/* 0445B4 800439B4 C42B62A8 */ lwc1 $f11, %lo(D_800E62A8)($at) -/* 0445B8 800439B8 C42A62AC */ lwc1 $f10, %lo(D_800E62A8 + 4)($at) -/* 0445BC 800439BC 460091A1 */ cvt.d.s $f6, $f18 -/* 0445C0 800439C0 462A303C */ c.lt.d $f6, $f10 -/* 0445C4 800439C4 240E0001 */ li $t6, 1 -/* 0445C8 800439C8 45000005 */ bc1f .L800439E0 -/* 0445CC 800439CC 00000000 */ nop -/* 0445D0 800439D0 92190209 */ lbu $t9, 0x209($s0) -/* 0445D4 800439D4 A20E01CA */ sb $t6, 0x1ca($s0) -/* 0445D8 800439D8 3338FFFB */ andi $t8, $t9, 0xfffb -/* 0445DC 800439DC A2180209 */ sb $t8, 0x209($s0) -.L800439E0: -/* 0445E0 800439E0 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 -/* 0445E4 800439E4 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) -/* 0445E8 800439E8 8FB90054 */ lw $t9, 0x54($sp) -/* 0445EC 800439EC 15E00050 */ bnez $t7, .L80043B30 -/* 0445F0 800439F0 3C01800E */ lui $at, %hi(D_800E62B0 + 4) # $at, 0x800e -/* 0445F4 800439F4 C72E0004 */ lwc1 $f14, 4($t9) -/* 0445F8 800439F8 C43162B0 */ lwc1 $f17, %lo(D_800E62B0)($at) -/* 0445FC 800439FC C43062B4 */ lwc1 $f16, %lo(D_800E62B0 + 4)($at) -/* 044600 80043A00 46007221 */ cvt.d.s $f8, $f14 -/* 044604 80043A04 46304102 */ mul.d $f4, $f8, $f16 -/* 044608 80043A08 3C01800E */ lui $at, %hi(D_800E62B8 + 4) # $at, 0x800e -/* 04460C 80043A0C C43362B8 */ lwc1 $f19, %lo(D_800E62B8)($at) -/* 044610 80043A10 C43262BC */ lwc1 $f18, %lo(D_800E62B8 + 4)($at) -/* 044614 80043A14 3C01800E */ lui $at, %hi(D_800E62C0 + 4) # $at, 0x800e -/* 044618 80043A18 C42B62C0 */ lwc1 $f11, %lo(D_800E62C0)($at) -/* 04461C 80043A1C C42A62C4 */ lwc1 $f10, %lo(D_800E62C0 + 4)($at) -/* 044620 80043A20 46322180 */ add.d $f6, $f4, $f18 -/* 044624 80043A24 AFA9005C */ sw $t1, 0x5c($sp) -/* 044628 80043A28 462A3203 */ div.d $f8, $f6, $f10 -/* 04462C 80043A2C 0C0326B4 */ jal sqrtf -/* 044630 80043A30 46204320 */ cvt.s.d $f12, $f8 -/* 044634 80043A34 8FB80054 */ lw $t8, 0x54($sp) -/* 044638 80043A38 3C01800E */ lui $at, %hi(D_800E62C8 + 4) # $at, 0x800e -/* 04463C 80043A3C C7020000 */ lwc1 $f2, ($t8) -/* 044640 80043A40 C42562C8 */ lwc1 $f5, %lo(D_800E62C8)($at) -/* 044644 80043A44 C42462CC */ lwc1 $f4, %lo(D_800E62C8 + 4)($at) -/* 044648 80043A48 46001421 */ cvt.d.s $f16, $f2 -/* 04464C 80043A4C 46248482 */ mul.d $f18, $f16, $f4 -/* 044650 80043A50 3C01800E */ lui $at, %hi(D_800E62D0 + 4) # $at, 0x800e -/* 044654 80043A54 C42762D0 */ lwc1 $f7, %lo(D_800E62D0)($at) -/* 044658 80043A58 C42662D4 */ lwc1 $f6, %lo(D_800E62D0 + 4)($at) -/* 04465C 80043A5C 3C01800E */ lui $at, %hi(D_800E62D8 + 4) # $at, 0x800e -/* 044660 80043A60 C42962D8 */ lwc1 $f9, %lo(D_800E62D8)($at) -/* 044664 80043A64 C42862DC */ lwc1 $f8, %lo(D_800E62D8 + 4)($at) -/* 044668 80043A68 46269280 */ add.d $f10, $f18, $f6 -/* 04466C 80043A6C E7A00080 */ swc1 $f0, 0x80($sp) -/* 044670 80043A70 46285403 */ div.d $f16, $f10, $f8 -/* 044674 80043A74 0C0326B4 */ jal sqrtf -/* 044678 80043A78 46208320 */ cvt.s.d $f12, $f16 -/* 04467C 80043A7C 240E0007 */ li $t6, 7 -/* 044680 80043A80 448E9000 */ mtc1 $t6, $f18 -/* 044684 80043A84 C7AE0080 */ lwc1 $f14, 0x80($sp) -/* 044688 80043A88 468091A0 */ cvt.s.w $f6, $f18 -/* 04468C 80043A8C 8FAF0028 */ lw $t7, 0x28($sp) -/* 044690 80043A90 820201CA */ lb $v0, 0x1ca($s0) -/* 044694 80043A94 46007101 */ sub.s $f4, $f14, $f0 -/* 044698 80043A98 448F4000 */ mtc1 $t7, $f8 -/* 04469C 80043A9C 46062283 */ div.s $f10, $f4, $f6 -/* 0446A0 80043AA0 46804420 */ cvt.s.w $f16, $f8 -/* 0446A4 80043AA4 8FA9005C */ lw $t1, 0x5c($sp) -/* 0446A8 80043AA8 28410002 */ slti $at, $v0, 2 -/* 0446AC 80043AAC 241FFFFF */ li $ra, -1 -/* 0446B0 80043AB0 2459FFFF */ addiu $t9, $v0, -1 -/* 0446B4 80043AB4 46105482 */ mul.s $f18, $f10, $f16 -/* 0446B8 80043AB8 46120300 */ add.s $f12, $f0, $f18 -/* 0446BC 80043ABC 1420000B */ bnez $at, .L80043AEC -/* 0446C0 80043AC0 46006086 */ mov.s $f2, $f12 -/* 0446C4 80043AC4 44992000 */ mtc1 $t9, $f4 -/* 0446C8 80043AC8 3C01800E */ lui $at, %hi(D_800E62E0 + 4) # $at, 0x800e -/* 0446CC 80043ACC 468021A0 */ cvt.s.w $f6, $f4 -/* 0446D0 80043AD0 C42B62E0 */ lwc1 $f11, %lo(D_800E62E0)($at) -/* 0446D4 80043AD4 C42A62E4 */ lwc1 $f10, %lo(D_800E62E0 + 4)($at) -/* 0446D8 80043AD8 46003221 */ cvt.d.s $f8, $f6 -/* 0446DC 80043ADC 462A4402 */ mul.d $f16, $f8, $f10 -/* 0446E0 80043AE0 460064A1 */ cvt.d.s $f18, $f12 -/* 0446E4 80043AE4 46309100 */ add.d $f4, $f18, $f16 -/* 0446E8 80043AE8 462020A0 */ cvt.s.d $f2, $f4 -.L80043AEC: -/* 0446EC 80043AEC 46021182 */ mul.s $f6, $f2, $f2 -/* 0446F0 80043AF0 3C01800E */ lui $at, %hi(D_800E62E8 + 4) # $at, 0x800e -/* 0446F4 80043AF4 C42B62E8 */ lwc1 $f11, %lo(D_800E62E8)($at) -/* 0446F8 80043AF8 C42A62EC */ lwc1 $f10, %lo(D_800E62E8 + 4)($at) -/* 0446FC 80043AFC 46003221 */ cvt.d.s $f8, $f6 -/* 044700 80043B00 462A4482 */ mul.d $f18, $f8, $f10 -/* 044704 80043B04 3C01800E */ lui $at, %hi(D_800E62F0 + 4) # $at, 0x800e -/* 044708 80043B08 C43162F0 */ lwc1 $f17, %lo(D_800E62F0)($at) -/* 04470C 80043B0C C43062F4 */ lwc1 $f16, %lo(D_800E62F0 + 4)($at) -/* 044710 80043B10 3C01800E */ lui $at, %hi(D_800E62F8 + 4) # $at, 0x800e -/* 044714 80043B14 C42762F8 */ lwc1 $f7, %lo(D_800E62F8)($at) -/* 044718 80043B18 C42662FC */ lwc1 $f6, %lo(D_800E62F8 + 4)($at) -/* 04471C 80043B1C 46309101 */ sub.d $f4, $f18, $f16 -/* 044720 80043B20 00000000 */ nop -/* 044724 80043B24 46262203 */ div.d $f8, $f4, $f6 -/* 044728 80043B28 462040A0 */ cvt.s.d $f2, $f8 -/* 04472C 80043B2C E6020124 */ swc1 $f2, 0x124($s0) -.L80043B30: -/* 044730 80043B30 8FA30058 */ lw $v1, 0x58($sp) -/* 044734 80043B34 1120000E */ beqz $t1, .L80043B70 -/* 044738 80043B38 00000000 */ nop -/* 04473C 80043B3C 821801CA */ lb $t8, 0x1ca($s0) -/* 044740 80043B40 24010003 */ li $at, 3 -/* 044744 80043B44 1701000A */ bne $t8, $at, .L80043B70 -/* 044748 80043B48 3C01800E */ lui $at, %hi(D_800E6300 + 4) # $at, 0x800e -/* 04474C 80043B4C C7B20094 */ lwc1 $f18, 0x94($sp) -/* 044750 80043B50 C42B6300 */ lwc1 $f11, %lo(D_800E6300)($at) -/* 044754 80043B54 C42A6304 */ lwc1 $f10, %lo(D_800E6300 + 4)($at) -/* 044758 80043B58 46009421 */ cvt.d.s $f16, $f18 -/* 04475C 80043B5C 4630503C */ c.lt.d $f10, $f16 -/* 044760 80043B60 240E0002 */ li $t6, 2 -/* 044764 80043B64 45000002 */ bc1f .L80043B70 -/* 044768 80043B68 00000000 */ nop -/* 04476C 80043B6C A20E01CA */ sb $t6, 0x1ca($s0) -.L80043B70: -/* 044770 80043B70 920201C9 */ lbu $v0, 0x1c9($s0) -/* 044774 80043B74 24010004 */ li $at, 4 -/* 044778 80043B78 10400007 */ beqz $v0, .L80043B98 -/* 04477C 80043B7C 00000000 */ nop -/* 044780 80043B80 10410023 */ beq $v0, $at, .L80043C10 -/* 044784 80043B84 24010005 */ li $at, 5 -/* 044788 80043B88 10410026 */ beq $v0, $at, .L80043C24 -/* 04478C 80043B8C 00000000 */ nop -/* 044790 80043B90 10000029 */ b .L80043C38 -/* 044794 80043B94 00000000 */ nop -.L80043B98: -/* 044798 80043B98 11200027 */ beqz $t1, .L80043C38 -/* 04479C 80043B9C 00000000 */ nop -/* 0447A0 80043BA0 852F0000 */ lh $t7, ($t1) -/* 0447A4 80043BA4 00000000 */ nop -/* 0447A8 80043BA8 17EF0023 */ bne $ra, $t7, .L80043C38 -/* 0447AC 80043BAC 00000000 */ nop -/* 0447B0 80043BB0 913901C9 */ lbu $t9, 0x1c9($t1) -/* 0447B4 80043BB4 00000000 */ nop -/* 0447B8 80043BB8 1720001F */ bnez $t9, .L80043C38 -/* 0447BC 80043BBC 00000000 */ nop -/* 0447C0 80043BC0 820201CA */ lb $v0, 0x1ca($s0) -/* 0447C4 80043BC4 813801CA */ lb $t8, 0x1ca($t1) -/* 0447C8 80043BC8 C7A40094 */ lwc1 $f4, 0x94($sp) -/* 0447CC 80043BCC 1458001A */ bne $v0, $t8, .L80043C38 -/* 0447D0 80043BD0 3C014059 */ li $at, 0x40590000 # 3.390625 -/* 0447D4 80043BD4 44814800 */ mtc1 $at, $f9 -/* 0447D8 80043BD8 44804000 */ mtc1 $zero, $f8 -/* 0447DC 80043BDC 460021A1 */ cvt.d.s $f6, $f4 -/* 0447E0 80043BE0 4628303C */ c.lt.d $f6, $f8 -/* 0447E4 80043BE4 244E0001 */ addiu $t6, $v0, 1 -/* 0447E8 80043BE8 45000013 */ bc1f .L80043C38 -/* 0447EC 80043BEC 00000000 */ nop -/* 0447F0 80043BF0 A20E01CA */ sb $t6, 0x1ca($s0) -/* 0447F4 80043BF4 820F01CA */ lb $t7, 0x1ca($s0) -/* 0447F8 80043BF8 24190003 */ li $t9, 3 -/* 0447FC 80043BFC 29E10004 */ slti $at, $t7, 4 -/* 044800 80043C00 1420000D */ bnez $at, .L80043C38 -/* 044804 80043C04 00000000 */ nop -/* 044808 80043C08 1000000B */ b .L80043C38 -/* 04480C 80043C0C A21901CA */ sb $t9, 0x1ca($s0) -.L80043C10: -/* 044810 80043C10 11200009 */ beqz $t1, .L80043C38 -/* 044814 80043C14 00000000 */ nop -/* 044818 80043C18 853801BA */ lh $t8, 0x1ba($t1) -/* 04481C 80043C1C 10000006 */ b .L80043C38 -/* 044820 80043C20 A61801BA */ sh $t8, 0x1ba($s0) -.L80043C24: -/* 044824 80043C24 10600004 */ beqz $v1, .L80043C38 -/* 044828 80043C28 00000000 */ nop -/* 04482C 80043C2C 846E01BA */ lh $t6, 0x1ba($v1) -/* 044830 80043C30 00000000 */ nop -/* 044834 80043C34 A60E01BA */ sh $t6, 0x1ba($s0) -.L80043C38: -/* 044838 80043C38 0C008D07 */ jal is_taj_challenge -/* 04483C 80043C3C 00000000 */ nop -/* 044840 80043C40 00021C00 */ sll $v1, $v0, 0x10 -/* 044844 80043C44 0002CC00 */ sll $t9, $v0, 0x10 -/* 044848 80043C48 0019C403 */ sra $t8, $t9, 0x10 -/* 04484C 80043C4C 00037C03 */ sra $t7, $v1, 0x10 -/* 044850 80043C50 17000005 */ bnez $t8, .L80043C68 -/* 044854 80043C54 01E01825 */ move $v1, $t7 -/* 044858 80043C58 87AE0070 */ lh $t6, 0x70($sp) -/* 04485C 80043C5C 00000000 */ nop -/* 044860 80043C60 11C00016 */ beqz $t6, .L80043CBC -/* 044864 80043C64 87AE0070 */ lh $t6, 0x70($sp) -.L80043C68: -/* 044868 80043C68 A20001CA */ sb $zero, 0x1ca($s0) -/* 04486C 80043C6C A20001C9 */ sb $zero, 0x1c9($s0) -/* 044870 80043C70 87AF0070 */ lh $t7, 0x70($sp) -/* 044874 80043C74 24040011 */ li $a0, 17 -/* 044878 80043C78 11E00006 */ beqz $t7, .L80043C94 -/* 04487C 80043C7C 00000000 */ nop -/* 044880 80043C80 0C0078A7 */ jal get_misc_asset -/* 044884 80043C84 24040012 */ li $a0, 18 -/* 044888 80043C88 87A30070 */ lh $v1, 0x70($sp) -/* 04488C 80043C8C 10000006 */ b .L80043CA8 -/* 044890 80043C90 0003C880 */ sll $t9, $v1, 2 -.L80043C94: -/* 044894 80043C94 0C0078A7 */ jal get_misc_asset -/* 044898 80043C98 A7A3007A */ sh $v1, 0x7a($sp) -/* 04489C 80043C9C 87A3007A */ lh $v1, 0x7a($sp) -/* 0448A0 80043CA0 00000000 */ nop -/* 0448A4 80043CA4 0003C880 */ sll $t9, $v1, 2 -.L80043CA8: -/* 0448A8 80043CA8 0059C021 */ addu $t8, $v0, $t9 -/* 0448AC 80043CAC C712FFFC */ lwc1 $f18, -4($t8) -/* 0448B0 80043CB0 00000000 */ nop -/* 0448B4 80043CB4 E6120124 */ swc1 $f18, 0x124($s0) -/* 0448B8 80043CB8 87AE0070 */ lh $t6, 0x70($sp) -.L80043CBC: -/* 0448BC 80043CBC 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 -/* 0448C0 80043CC0 11C00061 */ beqz $t6, .L80043E48 -/* 0448C4 80043CC4 00000000 */ nop -/* 0448C8 80043CC8 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) -/* 0448CC 80043CCC 3C038012 */ lui $v1, %hi(D_8011D5B8) # $v1, 0x8012 -/* 0448D0 80043CD0 11E00006 */ beqz $t7, .L80043CEC -/* 0448D4 80043CD4 2463D5B8 */ addiu $v1, %lo(D_8011D5B8) # addiu $v1, $v1, -0x2a48 -/* 0448D8 80043CD8 3C038012 */ lui $v1, %hi(D_8011D5B8) # $v1, 0x8012 -/* 0448DC 80043CDC 2463D5B8 */ addiu $v1, %lo(D_8011D5B8) # addiu $v1, $v1, -0x2a48 -/* 0448E0 80043CE0 24190384 */ li $t9, 900 -/* 0448E4 80043CE4 10000040 */ b .L80043DE8 -/* 0448E8 80043CE8 A4790000 */ sh $t9, ($v1) -.L80043CEC: -/* 0448EC 80043CEC 84780000 */ lh $t8, ($v1) -/* 0448F0 80043CF0 8FAE00A0 */ lw $t6, 0xa0($sp) -/* 0448F4 80043CF4 00000000 */ nop -/* 0448F8 80043CF8 030E7823 */ subu $t7, $t8, $t6 -/* 0448FC 80043CFC A46F0000 */ sh $t7, ($v1) -/* 044900 80043D00 84620000 */ lh $v0, ($v1) -/* 044904 80043D04 00000000 */ nop -/* 044908 80043D08 04410016 */ bgez $v0, .L80043D64 -/* 04490C 80043D0C 284102D1 */ slti $at, $v0, 0x2d1 -/* 044910 80043D10 87B90072 */ lh $t9, 0x72($sp) -/* 044914 80043D14 24010001 */ li $at, 1 -/* 044918 80043D18 17210033 */ bne $t9, $at, .L80043DE8 -/* 04491C 80043D1C A4600000 */ sh $zero, ($v1) -/* 044920 80043D20 3C01800E */ lui $at, %hi(D_800E6308 + 4) # $at, 0x800e -/* 044924 80043D24 C7B00094 */ lwc1 $f16, 0x94($sp) -/* 044928 80043D28 C42B6308 */ lwc1 $f11, %lo(D_800E6308)($at) -/* 04492C 80043D2C C42A630C */ lwc1 $f10, %lo(D_800E6308 + 4)($at) -/* 044930 80043D30 46008121 */ cvt.d.s $f4, $f16 -/* 044934 80043D34 4624503C */ c.lt.d $f10, $f4 -/* 044938 80043D38 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 04493C 80043D3C 4500002A */ bc1f .L80043DE8 -/* 044940 80043D40 00000000 */ nop -/* 044944 80043D44 C6060124 */ lwc1 $f6, 0x124($s0) -/* 044948 80043D48 44819800 */ mtc1 $at, $f19 -/* 04494C 80043D4C 44809000 */ mtc1 $zero, $f18 -/* 044950 80043D50 46003221 */ cvt.d.s $f8, $f6 -/* 044954 80043D54 46324400 */ add.d $f16, $f8, $f18 -/* 044958 80043D58 462082A0 */ cvt.s.d $f10, $f16 -/* 04495C 80043D5C 10000022 */ b .L80043DE8 -/* 044960 80043D60 E60A0124 */ swc1 $f10, 0x124($s0) -.L80043D64: -/* 044964 80043D64 C6000124 */ lwc1 $f0, 0x124($s0) -/* 044968 80043D68 14200008 */ bnez $at, .L80043D8C -/* 04496C 80043D6C 46000386 */ mov.s $f14, $f0 -/* 044970 80043D70 3C014014 */ li $at, 0x40140000 # 2.312500 -/* 044974 80043D74 44813800 */ mtc1 $at, $f7 -/* 044978 80043D78 44803000 */ mtc1 $zero, $f6 -/* 04497C 80043D7C 46007121 */ cvt.d.s $f4, $f14 -/* 044980 80043D80 46262200 */ add.d $f8, $f4, $f6 -/* 044984 80043D84 10000013 */ b .L80043DD4 -/* 044988 80043D88 462043A0 */ cvt.s.d $f14, $f8 -.L80043D8C: -/* 04498C 80043D8C 87B80072 */ lh $t8, 0x72($sp) -/* 044990 80043D90 24010001 */ li $at, 1 -/* 044994 80043D94 1301000A */ beq $t8, $at, .L80043DC0 -/* 044998 80043D98 3C014024 */ lui $at, 0x4024 -/* 04499C 80043D9C C7B20090 */ lwc1 $f18, 0x90($sp) -/* 0449A0 80043DA0 3C014069 */ li $at, 0x40690000 # 3.640625 -/* 0449A4 80043DA4 44815800 */ mtc1 $at, $f11 -/* 0449A8 80043DA8 44805000 */ mtc1 $zero, $f10 -/* 0449AC 80043DAC 46009421 */ cvt.d.s $f16, $f18 -/* 0449B0 80043DB0 462A803C */ c.lt.d $f16, $f10 -/* 0449B4 80043DB4 00000000 */ nop -/* 0449B8 80043DB8 45000006 */ bc1f .L80043DD4 -/* 0449BC 80043DBC 3C014024 */ li $at, 0x40240000 # 2.562500 -.L80043DC0: -/* 0449C0 80043DC0 44813800 */ mtc1 $at, $f7 -/* 0449C4 80043DC4 44803000 */ mtc1 $zero, $f6 -/* 0449C8 80043DC8 46007121 */ cvt.d.s $f4, $f14 -/* 0449CC 80043DCC 46262200 */ add.d $f8, $f4, $f6 -/* 0449D0 80043DD0 462043A0 */ cvt.s.d $f14, $f8 -.L80043DD4: -/* 0449D4 80043DD4 460E003C */ c.lt.s $f0, $f14 -/* 0449D8 80043DD8 00000000 */ nop -/* 0449DC 80043DDC 45000002 */ bc1f .L80043DE8 -/* 0449E0 80043DE0 00000000 */ nop -/* 0449E4 80043DE4 E60E0124 */ swc1 $f14, 0x124($s0) -.L80043DE8: -/* 0449E8 80043DE8 820E01D8 */ lb $t6, 0x1d8($s0) -/* 0449EC 80043DEC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 0449F0 80043DF0 11C00015 */ beqz $t6, .L80043E48 -/* 0449F4 80043DF4 2442D528 */ addiu $v0, %lo(gCurrentRacerInput) # addiu $v0, $v0, -0x2ad8 -/* 0449F8 80043DF8 A20001D3 */ sb $zero, 0x1d3($s0) -/* 0449FC 80043DFC A2000213 */ sb $zero, 0x213($s0) -/* 044A00 80043E00 8C4F0000 */ lw $t7, ($v0) -/* 044A04 80043E04 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff -/* 044A08 80043E08 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff -/* 044A0C 80043E0C 01E1C824 */ and $t9, $t7, $at -/* 044A10 80043E10 AC590000 */ sw $t9, ($v0) -/* 044A14 80043E14 372E4000 */ ori $t6, $t9, 0x4000 -/* 044A18 80043E18 AC4E0000 */ sw $t6, ($v0) -/* 044A1C 80043E1C 3C01800E */ lui $at, %hi(D_800E6310 + 4) # $at, 0x800e -/* 044A20 80043E20 C610002C */ lwc1 $f16, 0x2c($s0) -/* 044A24 80043E24 C4336310 */ lwc1 $f19, %lo(D_800E6310)($at) -/* 044A28 80043E28 C4326314 */ lwc1 $f18, %lo(D_800E6310 + 4)($at) -/* 044A2C 80043E2C 460082A1 */ cvt.d.s $f10, $f16 -/* 044A30 80043E30 462A903C */ c.lt.d $f18, $f10 -/* 044A34 80043E34 35D98000 */ ori $t9, $t6, 0x8000 -/* 044A38 80043E38 45000003 */ bc1f .L80043E48 -/* 044A3C 80043E3C 3C018012 */ lui $at, %hi(gCurrentStickX) # $at, 0x8012 -/* 044A40 80043E40 AC590000 */ sw $t9, ($v0) -/* 044A44 80043E44 AC20D534 */ sw $zero, %lo(gCurrentStickX)($at) -.L80043E48: -/* 044A48 80043E48 82180214 */ lb $t8, 0x214($s0) -/* 044A4C 80043E4C 87AE006E */ lh $t6, 0x6e($sp) -/* 044A50 80043E50 13000002 */ beqz $t8, .L80043E5C -/* 044A54 80043E54 24190040 */ li $t9, 64 -/* 044A58 80043E58 A20E01CA */ sb $t6, 0x1ca($s0) -.L80043E5C: -/* 044A5C 80043E5C 860F01BA */ lh $t7, 0x1ba($s0) -/* 044A60 80043E60 240E0028 */ li $t6, 40 -/* 044A64 80043E64 29E10041 */ slti $at, $t7, 0x41 -/* 044A68 80043E68 14200002 */ bnez $at, .L80043E74 -/* 044A6C 80043E6C 00000000 */ nop -/* 044A70 80043E70 A61901BA */ sh $t9, 0x1ba($s0) -.L80043E74: -/* 044A74 80043E74 861801BC */ lh $t8, 0x1bc($s0) -/* 044A78 80043E78 2419FFC0 */ li $t9, -64 -/* 044A7C 80043E7C 2B010029 */ slti $at, $t8, 0x29 -/* 044A80 80043E80 14200002 */ bnez $at, .L80043E8C -/* 044A84 80043E84 00000000 */ nop -/* 044A88 80043E88 A60E01BC */ sh $t6, 0x1bc($s0) -.L80043E8C: -/* 044A8C 80043E8C 860F01BA */ lh $t7, 0x1ba($s0) -/* 044A90 80043E90 240EFFD8 */ li $t6, -40 -/* 044A94 80043E94 29E1FFC0 */ slti $at, $t7, -0x40 -/* 044A98 80043E98 10200002 */ beqz $at, .L80043EA4 -/* 044A9C 80043E9C 00000000 */ nop -/* 044AA0 80043EA0 A61901BA */ sh $t9, 0x1ba($s0) -.L80043EA4: -/* 044AA4 80043EA4 861801BC */ lh $t8, 0x1bc($s0) -/* 044AA8 80043EA8 00000000 */ nop -/* 044AAC 80043EAC 2B01FFD8 */ slti $at, $t8, -0x28 -/* 044AB0 80043EB0 10200003 */ beqz $at, .L80043EC0 -/* 044AB4 80043EB4 8FBF001C */ lw $ra, 0x1c($sp) -/* 044AB8 80043EB8 A60E01BC */ sh $t6, 0x1bc($s0) -.L80043EBC: -/* 044ABC 80043EBC 8FBF001C */ lw $ra, 0x1c($sp) -.L80043EC0: -/* 044AC0 80043EC0 8FB00018 */ lw $s0, 0x18($sp) -/* 044AC4 80043EC4 03E00008 */ jr $ra -/* 044AC8 80043EC8 27BD0098 */ addiu $sp, $sp, 0x98 - +.late_rodata +glabel D_800E62A8 +.double -2500.0 +glabel D_800E62B0 +.double 0.025 +glabel D_800E62B8 +.double 0.561 +glabel D_800E62C0 +.double 0.004 +glabel D_800E62C8 +.double 0.025 +glabel D_800E62D0 +.double 0.561 +glabel D_800E62D8 +.double 0.004 +glabel D_800E62E0 +.double 0.2 +glabel D_800E62E8 +.double 0.004 +glabel D_800E62F0 +.double 0.595 +glabel D_800E62F8 +.double 0.025 +glabel D_800E6300 +.double 500.0 +glabel D_800E6308 +.double 650.0 +glabel D_800E6310 +.double -0.3 + +.text +glabel func_80042D20 +/* 043920 80042D20 27BDFF68 */ addiu $sp, $sp, -0x98 +/* 043924 80042D24 AFBF001C */ sw $ra, 0x1c($sp) +/* 043928 80042D28 AFB00018 */ sw $s0, 0x18($sp) +/* 04392C 80042D2C AFA40098 */ sw $a0, 0x98($sp) +/* 043930 80042D30 AFA600A0 */ sw $a2, 0xa0($sp) +/* 043934 80042D34 80AE01CA */ lb $t6, 0x1ca($a1) +/* 043938 80042D38 00A08025 */ move $s0, $a1 +/* 04393C 80042D3C 24040001 */ li $a0, 1 +/* 043940 80042D40 0C0078A7 */ jal get_misc_asset +/* 043944 80042D44 A7AE006E */ sh $t6, 0x6e($sp) +/* 043948 80042D48 AFA20040 */ sw $v0, 0x40($sp) +/* 04394C 80042D4C 0C0078A7 */ jal get_misc_asset +/* 043950 80042D50 24040002 */ li $a0, 2 +/* 043954 80042D54 0C01AF6C */ jal get_current_level_header +/* 043958 80042D58 AFA20044 */ sw $v0, 0x44($sp) +/* 04395C 80042D5C AFA20050 */ sw $v0, 0x50($sp) +/* 043960 80042D60 0C006EAB */ jal get_racer_objects_by_position +/* 043964 80042D64 27A40068 */ addiu $a0, $sp, 0x68 +/* 043968 80042D68 0C01B063 */ jal get_ai_behaviour_table +/* 04396C 80042D6C AFA20060 */ sw $v0, 0x60($sp) +/* 043970 80042D70 AFA20054 */ sw $v0, 0x54($sp) +/* 043974 80042D74 860301C6 */ lh $v1, 0x1c6($s0) +/* 043978 80042D78 8FAA0060 */ lw $t2, 0x60($sp) +/* 04397C 80042D7C 18600006 */ blez $v1, .L80042D98 +/* 043980 80042D80 00000000 */ nop +/* 043984 80042D84 8FAF00A0 */ lw $t7, 0xa0($sp) +/* 043988 80042D88 00000000 */ nop +/* 04398C 80042D8C 006FC023 */ subu $t8, $v1, $t7 +/* 043990 80042D90 10000002 */ b .L80042D9C +/* 043994 80042D94 A61801C6 */ sh $t8, 0x1c6($s0) +.L80042D98: +/* 043998 80042D98 A60001C6 */ sh $zero, 0x1c6($s0) +.L80042D9C: +/* 04399C 80042D9C 0C006B91 */ jal func_8001AE44 +/* 0439A0 80042DA0 AFAA0060 */ sw $t2, 0x60($sp) +/* 0439A4 80042DA4 8FAA0060 */ lw $t2, 0x60($sp) +/* 0439A8 80042DA8 10400007 */ beqz $v0, .L80042DC8 +/* 0439AC 80042DAC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 +/* 0439B0 80042DB0 2442D528 */ addiu $v0, %lo(gCurrentRacerInput) # addiu $v0, $v0, -0x2ad8 +/* 0439B4 80042DB4 8C590000 */ lw $t9, ($v0) +/* 0439B8 80042DB8 00000000 */ nop +/* 0439BC 80042DBC 372E8000 */ ori $t6, $t9, 0x8000 +/* 0439C0 80042DC0 1000043E */ b .L80043EBC +/* 0439C4 80042DC4 AC4E0000 */ sw $t6, ($v0) +.L80042DC8: +/* 0439C8 80042DC8 8FAF0068 */ lw $t7, 0x68($sp) +/* 0439CC 80042DCC 00001825 */ move $v1, $zero +/* 0439D0 80042DD0 00006825 */ move $t5, $zero +/* 0439D4 80042DD4 00004025 */ move $t0, $zero +/* 0439D8 80042DD8 240CFFFF */ li $t4, -1 +/* 0439DC 80042DDC 19E00024 */ blez $t7, .L80042E70 +/* 0439E0 80042DE0 24020001 */ li $v0, 1 +/* 0439E4 80042DE4 241FFFFF */ li $ra, -1 +/* 0439E8 80042DE8 0003C080 */ sll $t8, $v1, 2 +.L80042DEC: +/* 0439EC 80042DEC 0158C821 */ addu $t9, $t2, $t8 +/* 0439F0 80042DF0 8F2E0000 */ lw $t6, ($t9) +/* 0439F4 80042DF4 00000000 */ nop +/* 0439F8 80042DF8 8DC90064 */ lw $t1, 0x64($t6) +/* 0439FC 80042DFC 00000000 */ nop +/* 043A00 80042E00 15300003 */ bne $t1, $s0, .L80042E10 +/* 043A04 80042E04 00000000 */ nop +/* 043A08 80042E08 00001025 */ move $v0, $zero +/* 043A0C 80042E0C A7A30072 */ sh $v1, 0x72($sp) +.L80042E10: +/* 043A10 80042E10 852F0000 */ lh $t7, ($t1) +/* 043A14 80042E14 00000000 */ nop +/* 043A18 80042E18 17EF0009 */ bne $ra, $t7, .L80042E40 +/* 043A1C 80042E1C 00000000 */ nop +/* 043A20 80042E20 25080001 */ addiu $t0, $t0, 1 +/* 043A24 80042E24 0008C400 */ sll $t8, $t0, 0x10 +/* 043A28 80042E28 1040000A */ beqz $v0, .L80042E54 +/* 043A2C 80042E2C 00184403 */ sra $t0, $t8, 0x10 +/* 043A30 80042E30 25AD0001 */ addiu $t5, $t5, 1 +/* 043A34 80042E34 000D7400 */ sll $t6, $t5, 0x10 +/* 043A38 80042E38 10000006 */ b .L80042E54 +/* 043A3C 80042E3C 000E6C03 */ sra $t5, $t6, 0x10 +.L80042E40: +/* 043A40 80042E40 159F0004 */ bne $t4, $ra, .L80042E54 +/* 043A44 80042E44 00000000 */ nop +/* 043A48 80042E48 00036400 */ sll $t4, $v1, 0x10 +/* 043A4C 80042E4C 000CC403 */ sra $t8, $t4, 0x10 +/* 043A50 80042E50 03006025 */ move $t4, $t8 +.L80042E54: +/* 043A54 80042E54 24630001 */ addiu $v1, $v1, 1 +/* 043A58 80042E58 8FAF0068 */ lw $t7, 0x68($sp) +/* 043A5C 80042E5C 0003CC00 */ sll $t9, $v1, 0x10 +/* 043A60 80042E60 00191C03 */ sra $v1, $t9, 0x10 +/* 043A64 80042E64 006F082A */ slt $at, $v1, $t7 +/* 043A68 80042E68 1420FFE0 */ bnez $at, .L80042DEC +/* 043A6C 80042E6C 0003C080 */ sll $t8, $v1, 2 +.L80042E70: +/* 043A70 80042E70 241FFFFF */ li $ra, -1 +/* 043A74 80042E74 159F0002 */ bne $t4, $ra, .L80042E80 +/* 043A78 80042E78 00000000 */ nop +/* 043A7C 80042E7C 00006025 */ move $t4, $zero +.L80042E80: +/* 043A80 80042E80 1100040F */ beqz $t0, .L80043EC0 +/* 043A84 80042E84 8FBF001C */ lw $ra, 0x1c($sp) +/* 043A88 80042E88 A7A80076 */ sh $t0, 0x76($sp) +/* 043A8C 80042E8C AFAA0060 */ sw $t2, 0x60($sp) +/* 043A90 80042E90 A7AC0034 */ sh $t4, 0x34($sp) +/* 043A94 80042E94 0C008D5A */ jal func_80023568 +/* 043A98 80042E98 A7AD0078 */ sh $t5, 0x78($sp) +/* 043A9C 80042E9C 3C188012 */ lui $t8, %hi(gRaceStartTimer) # $t8, 0x8012 +/* 043AA0 80042EA0 8F18D540 */ lw $t8, %lo(gRaceStartTimer)($t8) +/* 043AA4 80042EA4 87A80076 */ lh $t0, 0x76($sp) +/* 043AA8 80042EA8 8FAA0060 */ lw $t2, 0x60($sp) +/* 043AAC 80042EAC 87AC0034 */ lh $t4, 0x34($sp) +/* 043AB0 80042EB0 87AD0078 */ lh $t5, 0x78($sp) +/* 043AB4 80042EB4 241FFFFF */ li $ra, -1 +/* 043AB8 80042EB8 17000088 */ bnez $t8, .L800430DC +/* 043ABC 80042EBC A7A20070 */ sh $v0, 0x70($sp) +/* 043AC0 80042EC0 821901D6 */ lb $t9, 0x1d6($s0) +/* 043AC4 80042EC4 24010004 */ li $at, 4 +/* 043AC8 80042EC8 13210085 */ beq $t9, $at, .L800430E0 +/* 043ACC 80042ECC 87A70072 */ lh $a3, 0x72($sp) +/* 043AD0 80042ED0 87A70072 */ lh $a3, 0x72($sp) +/* 043AD4 80042ED4 9204020B */ lbu $a0, 0x20b($s0) +/* 043AD8 80042ED8 24E3FFFF */ addiu $v1, $a3, -1 +/* 043ADC 80042EDC 0087082A */ slt $at, $a0, $a3 +/* 043AE0 80042EE0 10200043 */ beqz $at, .L80042FF0 +/* 043AE4 80042EE4 00037400 */ sll $t6, $v1, 0x10 +/* 043AE8 80042EE8 000E7C03 */ sra $t7, $t6, 0x10 +/* 043AEC 80042EEC 05E00041 */ bltz $t7, .L80042FF4 +/* 043AF0 80042EF0 87AE0072 */ lh $t6, 0x72($sp) +/* 043AF4 80042EF4 8FB80068 */ lw $t8, 0x68($sp) +/* 043AF8 80042EF8 000FC880 */ sll $t9, $t7, 2 +/* 043AFC 80042EFC 01F8082A */ slt $at, $t7, $t8 +/* 043B00 80042F00 1020003B */ beqz $at, .L80042FF0 +/* 043B04 80042F04 01595821 */ addu $t3, $t2, $t9 +/* 043B08 80042F08 8D6E0000 */ lw $t6, ($t3) +/* 043B0C 80042F0C 0002C400 */ sll $t8, $v0, 0x10 +/* 043B10 80042F10 8DC90064 */ lw $t1, 0x64($t6) +/* 043B14 80042F14 0018CC03 */ sra $t9, $t8, 0x10 +/* 043B18 80042F18 852F0000 */ lh $t7, ($t1) +/* 043B1C 80042F1C 00000000 */ nop +/* 043B20 80042F20 13EF0034 */ beq $ra, $t7, .L80042FF4 +/* 043B24 80042F24 87AE0072 */ lh $t6, 0x72($sp) +/* 043B28 80042F28 17200011 */ bnez $t9, .L80042F70 +/* 043B2C 80042F2C 240501C2 */ li $a1, 450 +/* 043B30 80042F30 8FA40098 */ lw $a0, 0x98($sp) +/* 043B34 80042F34 24060008 */ li $a2, 8 +/* 043B38 80042F38 24070003 */ li $a3, 3 +/* 043B3C 80042F3C A7A80076 */ sh $t0, 0x76($sp) +/* 043B40 80042F40 AFAA0060 */ sw $t2, 0x60($sp) +/* 043B44 80042F44 AFAB0024 */ sw $t3, 0x24($sp) +/* 043B48 80042F48 A7AC0034 */ sh $t4, 0x34($sp) +/* 043B4C 80042F4C 0C015C2E */ jal play_random_character_voice +/* 043B50 80042F50 A7AD0078 */ sh $t5, 0x78($sp) +/* 043B54 80042F54 87A80076 */ lh $t0, 0x76($sp) +/* 043B58 80042F58 8FAA0060 */ lw $t2, 0x60($sp) +/* 043B5C 80042F5C 8FAB0024 */ lw $t3, 0x24($sp) +/* 043B60 80042F60 87AC0034 */ lh $t4, 0x34($sp) +/* 043B64 80042F64 87AD0078 */ lh $t5, 0x78($sp) +/* 043B68 80042F68 10000013 */ b .L80042FB8 +/* 043B6C 80042F6C 8D640000 */ lw $a0, ($t3) +.L80042F70: +/* 043B70 80042F70 8FA20098 */ lw $v0, 0x98($sp) +/* 043B74 80042F74 24070005 */ li $a3, 5 +/* 043B78 80042F78 C44C000C */ lwc1 $f12, 0xc($v0) +/* 043B7C 80042F7C C44E0010 */ lwc1 $f14, 0x10($v0) +/* 043B80 80042F80 8C460014 */ lw $a2, 0x14($v0) +/* 043B84 80042F84 A7AD0078 */ sh $t5, 0x78($sp) +/* 043B88 80042F88 A7AC0034 */ sh $t4, 0x34($sp) +/* 043B8C 80042F8C AFAB0024 */ sw $t3, 0x24($sp) +/* 043B90 80042F90 AFAA0060 */ sw $t2, 0x60($sp) +/* 043B94 80042F94 0C0172A1 */ jal func_8005CA84 +/* 043B98 80042F98 A7A80076 */ sh $t0, 0x76($sp) +/* 043B9C 80042F9C 87A80076 */ lh $t0, 0x76($sp) +/* 043BA0 80042FA0 8FAA0060 */ lw $t2, 0x60($sp) +/* 043BA4 80042FA4 8FAB0024 */ lw $t3, 0x24($sp) +/* 043BA8 80042FA8 87AC0034 */ lh $t4, 0x34($sp) +/* 043BAC 80042FAC 87AD0078 */ lh $t5, 0x78($sp) +/* 043BB0 80042FB0 00000000 */ nop +/* 043BB4 80042FB4 8D640000 */ lw $a0, ($t3) +.L80042FB8: +/* 043BB8 80042FB8 A7AD0078 */ sh $t5, 0x78($sp) +/* 043BBC 80042FBC A7AC0034 */ sh $t4, 0x34($sp) +/* 043BC0 80042FC0 AFAA0060 */ sw $t2, 0x60($sp) +/* 043BC4 80042FC4 A7A80076 */ sh $t0, 0x76($sp) +/* 043BC8 80042FC8 24050162 */ li $a1, 354 +/* 043BCC 80042FCC 24060008 */ li $a2, 8 +/* 043BD0 80042FD0 0C015C2E */ jal play_random_character_voice +/* 043BD4 80042FD4 24070002 */ li $a3, 2 +/* 043BD8 80042FD8 87A80076 */ lh $t0, 0x76($sp) +/* 043BDC 80042FDC 8FAA0060 */ lw $t2, 0x60($sp) +/* 043BE0 80042FE0 87AC0034 */ lh $t4, 0x34($sp) +/* 043BE4 80042FE4 87AD0078 */ lh $t5, 0x78($sp) +/* 043BE8 80042FE8 9204020B */ lbu $a0, 0x20b($s0) +/* 043BEC 80042FEC 241FFFFF */ li $ra, -1 +.L80042FF0: +/* 043BF0 80042FF0 87AE0072 */ lh $t6, 0x72($sp) +.L80042FF4: +/* 043BF4 80042FF4 00000000 */ nop +/* 043BF8 80042FF8 01C4082A */ slt $at, $t6, $a0 +/* 043BFC 80042FFC 10200037 */ beqz $at, .L800430DC +/* 043C00 80043000 25C20001 */ addiu $v0, $t6, 1 +/* 043C04 80043004 00027C00 */ sll $t7, $v0, 0x10 +/* 043C08 80043008 000FC403 */ sra $t8, $t7, 0x10 +/* 043C0C 8004300C 07000034 */ bltz $t8, .L800430E0 +/* 043C10 80043010 87A70072 */ lh $a3, 0x72($sp) +/* 043C14 80043014 8FB90068 */ lw $t9, 0x68($sp) +/* 043C18 80043018 00187880 */ sll $t7, $t8, 2 +/* 043C1C 8004301C 0319082A */ slt $at, $t8, $t9 +/* 043C20 80043020 1020002E */ beqz $at, .L800430DC +/* 043C24 80043024 014FC021 */ addu $t8, $t2, $t7 +/* 043C28 80043028 8F190000 */ lw $t9, ($t8) +/* 043C2C 8004302C 000EC080 */ sll $t8, $t6, 2 +/* 043C30 80043030 8F290064 */ lw $t1, 0x64($t9) +/* 043C34 80043034 0158C821 */ addu $t9, $t2, $t8 +/* 043C38 80043038 852F0000 */ lh $t7, ($t1) +/* 043C3C 8004303C 240501C2 */ li $a1, 450 +/* 043C40 80043040 13EF0026 */ beq $ra, $t7, .L800430DC +/* 043C44 80043044 24060008 */ li $a2, 8 +/* 043C48 80043048 8F240004 */ lw $a0, 4($t9) +/* 043C4C 8004304C A7AD0078 */ sh $t5, 0x78($sp) +/* 043C50 80043050 A7AC0034 */ sh $t4, 0x34($sp) +/* 043C54 80043054 A7A80076 */ sh $t0, 0x76($sp) +/* 043C58 80043058 0C015C2E */ jal play_random_character_voice +/* 043C5C 8004305C 24070002 */ li $a3, 2 +/* 043C60 80043060 87AF0070 */ lh $t7, 0x70($sp) +/* 043C64 80043064 87A80076 */ lh $t0, 0x76($sp) +/* 043C68 80043068 87AC0034 */ lh $t4, 0x34($sp) +/* 043C6C 8004306C 87AD0078 */ lh $t5, 0x78($sp) +/* 043C70 80043070 15E0000D */ bnez $t7, .L800430A8 +/* 043C74 80043074 24050162 */ li $a1, 354 +/* 043C78 80043078 8FA40098 */ lw $a0, 0x98($sp) +/* 043C7C 8004307C 24060008 */ li $a2, 8 +/* 043C80 80043080 24070003 */ li $a3, 3 +/* 043C84 80043084 A7A80076 */ sh $t0, 0x76($sp) +/* 043C88 80043088 A7AC0034 */ sh $t4, 0x34($sp) +/* 043C8C 8004308C 0C015C2E */ jal play_random_character_voice +/* 043C90 80043090 A7AD0078 */ sh $t5, 0x78($sp) +/* 043C94 80043094 87A80076 */ lh $t0, 0x76($sp) +/* 043C98 80043098 87AC0034 */ lh $t4, 0x34($sp) +/* 043C9C 8004309C 87AD0078 */ lh $t5, 0x78($sp) +/* 043CA0 800430A0 1000000F */ b .L800430E0 +/* 043CA4 800430A4 87A70072 */ lh $a3, 0x72($sp) +.L800430A8: +/* 043CA8 800430A8 8FA20098 */ lw $v0, 0x98($sp) +/* 043CAC 800430AC 24070003 */ li $a3, 3 +/* 043CB0 800430B0 C44C000C */ lwc1 $f12, 0xc($v0) +/* 043CB4 800430B4 C44E0010 */ lwc1 $f14, 0x10($v0) +/* 043CB8 800430B8 8C460014 */ lw $a2, 0x14($v0) +/* 043CBC 800430BC A7AD0078 */ sh $t5, 0x78($sp) +/* 043CC0 800430C0 A7AC0034 */ sh $t4, 0x34($sp) +/* 043CC4 800430C4 0C0172A1 */ jal func_8005CA84 +/* 043CC8 800430C8 A7A80076 */ sh $t0, 0x76($sp) +/* 043CCC 800430CC 87A80076 */ lh $t0, 0x76($sp) +/* 043CD0 800430D0 87AC0034 */ lh $t4, 0x34($sp) +/* 043CD4 800430D4 87AD0078 */ lh $t5, 0x78($sp) +/* 043CD8 800430D8 00000000 */ nop +.L800430DC: +/* 043CDC 800430DC 87A70072 */ lh $a3, 0x72($sp) +.L800430E0: +/* 043CE0 800430E0 44800000 */ mtc1 $zero, $f0 +/* 043CE4 800430E4 A207020B */ sb $a3, 0x20b($s0) +/* 043CE8 800430E8 A7AD0078 */ sh $t5, 0x78($sp) +/* 043CEC 800430EC A7AC0034 */ sh $t4, 0x34($sp) +/* 043CF0 800430F0 AFA0005C */ sw $zero, 0x5c($sp) +/* 043CF4 800430F4 A7A80076 */ sh $t0, 0x76($sp) +/* 043CF8 800430F8 02002025 */ move $a0, $s0 +/* 043CFC 800430FC 24050001 */ li $a1, 1 +/* 043D00 80043100 27A60094 */ addiu $a2, $sp, 0x94 +/* 043D04 80043104 E7A00094 */ swc1 $f0, 0x94($sp) +/* 043D08 80043108 0C006DEA */ jal func_8001B7A8 +/* 043D0C 8004310C E7A00090 */ swc1 $f0, 0x90($sp) +/* 043D10 80043110 87A80076 */ lh $t0, 0x76($sp) +/* 043D14 80043114 8FA9005C */ lw $t1, 0x5c($sp) +/* 043D18 80043118 87AC0034 */ lh $t4, 0x34($sp) +/* 043D1C 8004311C 87AD0078 */ lh $t5, 0x78($sp) +/* 043D20 80043120 10400003 */ beqz $v0, .L80043130 +/* 043D24 80043124 241FFFFF */ li $ra, -1 +/* 043D28 80043128 8C490064 */ lw $t1, 0x64($v0) +/* 043D2C 8004312C 00000000 */ nop +.L80043130: +/* 043D30 80043130 03E02825 */ move $a1, $ra +/* 043D34 80043134 AFA00058 */ sw $zero, 0x58($sp) +/* 043D38 80043138 02002025 */ move $a0, $s0 +/* 043D3C 8004313C 27A60090 */ addiu $a2, $sp, 0x90 +/* 043D40 80043140 A7A80076 */ sh $t0, 0x76($sp) +/* 043D44 80043144 AFA9005C */ sw $t1, 0x5c($sp) +/* 043D48 80043148 A7AC0034 */ sh $t4, 0x34($sp) +/* 043D4C 8004314C 0C006DEA */ jal func_8001B7A8 +/* 043D50 80043150 A7AD0078 */ sh $t5, 0x78($sp) +/* 043D54 80043154 87A80076 */ lh $t0, 0x76($sp) +/* 043D58 80043158 8FA9005C */ lw $t1, 0x5c($sp) +/* 043D5C 8004315C 87AC0034 */ lh $t4, 0x34($sp) +/* 043D60 80043160 87AD0078 */ lh $t5, 0x78($sp) +/* 043D64 80043164 10400004 */ beqz $v0, .L80043178 +/* 043D68 80043168 29010007 */ slti $at, $t0, 7 +/* 043D6C 8004316C 8C4E0064 */ lw $t6, 0x64($v0) +/* 043D70 80043170 00000000 */ nop +/* 043D74 80043174 AFAE0058 */ sw $t6, 0x58($sp) +.L80043178: +/* 043D78 80043178 82180003 */ lb $t8, 3($s0) +/* 043D7C 8004317C 11200004 */ beqz $t1, .L80043190 +/* 043D80 80043180 A3B8003E */ sb $t8, 0x3e($sp) +/* 043D84 80043184 81390003 */ lb $t9, 3($t1) +/* 043D88 80043188 00000000 */ nop +/* 043D8C 8004318C A3B9003F */ sb $t9, 0x3f($sp) +.L80043190: +/* 043D90 80043190 1020002A */ beqz $at, .L8004323C +/* 043D94 80043194 00000000 */ nop +/* 043D98 80043198 AFA9005C */ sw $t1, 0x5c($sp) +/* 043D9C 8004319C A7AC0034 */ sh $t4, 0x34($sp) +/* 043DA0 800431A0 0C02658B */ jal get_trophy_race_world_id +/* 043DA4 800431A4 A7AD0078 */ sh $t5, 0x78($sp) +/* 043DA8 800431A8 8FA9005C */ lw $t1, 0x5c($sp) +/* 043DAC 800431AC 87AC0034 */ lh $t4, 0x34($sp) +/* 043DB0 800431B0 87AD0078 */ lh $t5, 0x78($sp) +/* 043DB4 800431B4 14400021 */ bnez $v0, .L8004323C +/* 043DB8 800431B8 00000000 */ nop +/* 043DBC 800431BC AFA9005C */ sw $t1, 0x5c($sp) +/* 043DC0 800431C0 A7AC0034 */ sh $t4, 0x34($sp) +/* 043DC4 800431C4 0C008D5A */ jal func_80023568 +/* 043DC8 800431C8 A7AD0078 */ sh $t5, 0x78($sp) +/* 043DCC 800431CC 8FA9005C */ lw $t1, 0x5c($sp) +/* 043DD0 800431D0 87AC0034 */ lh $t4, 0x34($sp) +/* 043DD4 800431D4 87AD0078 */ lh $t5, 0x78($sp) +/* 043DD8 800431D8 14400018 */ bnez $v0, .L8004323C +/* 043DDC 800431DC 00000000 */ nop +/* 043DE0 800431E0 AFA9005C */ sw $t1, 0x5c($sp) +/* 043DE4 800431E4 A7AC0034 */ sh $t4, 0x34($sp) +/* 043DE8 800431E8 0C008D07 */ jal is_taj_challenge +/* 043DEC 800431EC A7AD0078 */ sh $t5, 0x78($sp) +/* 043DF0 800431F0 8FA9005C */ lw $t1, 0x5c($sp) +/* 043DF4 800431F4 87AC0034 */ lh $t4, 0x34($sp) +/* 043DF8 800431F8 87AD0078 */ lh $t5, 0x78($sp) +/* 043DFC 800431FC 1440000F */ bnez $v0, .L8004323C +/* 043E00 80043200 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 +/* 043E04 80043204 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) +/* 043E08 80043208 24010064 */ li $at, 100 +/* 043E0C 8004320C 15E10022 */ bne $t7, $at, .L80043298 +/* 043E10 80043210 00002025 */ move $a0, $zero +/* 043E14 80043214 24050002 */ li $a1, 2 +/* 043E18 80043218 AFA9005C */ sw $t1, 0x5c($sp) +/* 043E1C 8004321C A7AC0034 */ sh $t4, 0x34($sp) +/* 043E20 80043220 0C01BE53 */ jal get_random_number_from_range +/* 043E24 80043224 A7AD0078 */ sh $t5, 0x78($sp) +/* 043E28 80043228 8FA9005C */ lw $t1, 0x5c($sp) +/* 043E2C 8004322C 87AC0034 */ lh $t4, 0x34($sp) +/* 043E30 80043230 87AD0078 */ lh $t5, 0x78($sp) +/* 043E34 80043234 10000018 */ b .L80043298 +/* 043E38 80043238 A20201CC */ sb $v0, 0x1cc($s0) +.L8004323C: +/* 043E3C 8004323C AFA9005C */ sw $t1, 0x5c($sp) +/* 043E40 80043240 A7AC0034 */ sh $t4, 0x34($sp) +/* 043E44 80043244 0C02658B */ jal get_trophy_race_world_id +/* 043E48 80043248 A7AD0078 */ sh $t5, 0x78($sp) +/* 043E4C 8004324C 8FA9005C */ lw $t1, 0x5c($sp) +/* 043E50 80043250 87AC0034 */ lh $t4, 0x34($sp) +/* 043E54 80043254 87AD0078 */ lh $t5, 0x78($sp) +/* 043E58 80043258 10400009 */ beqz $v0, .L80043280 +/* 043E5C 8004325C 8FAE0050 */ lw $t6, 0x50($sp) +/* 043E60 80043260 8FAE0050 */ lw $t6, 0x50($sp) +/* 043E64 80043264 83B8003E */ lb $t8, 0x3e($sp) +/* 043E68 80043268 00000000 */ nop +/* 043E6C 8004326C 01D8C821 */ addu $t9, $t6, $t8 +/* 043E70 80043270 932F0016 */ lbu $t7, 0x16($t9) +/* 043E74 80043274 10000008 */ b .L80043298 +/* 043E78 80043278 A20F01CC */ sb $t7, 0x1cc($s0) +/* 043E7C 8004327C 8FAE0050 */ lw $t6, 0x50($sp) +.L80043280: +/* 043E80 80043280 83B8003E */ lb $t8, 0x3e($sp) +/* 043E84 80043284 00000000 */ nop +/* 043E88 80043288 01D8C821 */ addu $t9, $t6, $t8 +/* 043E8C 8004328C 932F000C */ lbu $t7, 0xc($t9) +/* 043E90 80043290 00000000 */ nop +/* 043E94 80043294 A20F01CC */ sb $t7, 0x1cc($s0) +.L80043298: +/* 043E98 80043298 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012 +/* 043E9C 8004329C C420D544 */ lwc1 $f0, %lo(D_8011D544)($at) +/* 043EA0 800432A0 44802000 */ mtc1 $zero, $f4 +/* 043EA4 800432A4 2404000C */ li $a0, 12 +/* 043EA8 800432A8 46002032 */ c.eq.s $f4, $f0 +/* 043EAC 800432AC 00000000 */ nop +/* 043EB0 800432B0 45010009 */ bc1t .L800432D8 +/* 043EB4 800432B4 00000000 */ nop +/* 043EB8 800432B8 860E01AE */ lh $t6, 0x1ae($s0) +/* 043EBC 800432BC 3C18800E */ lui $t8, %hi(D_800DCDA0) # $t8, 0x800e +/* 043EC0 800432C0 030EC021 */ addu $t8, $t8, $t6 +/* 043EC4 800432C4 8318CDA0 */ lb $t8, %lo(D_800DCDA0)($t8) +/* 043EC8 800432C8 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012 +/* 043ECC 800432CC A21801CA */ sb $t8, 0x1ca($s0) +/* 043ED0 800432D0 C420D544 */ lwc1 $f0, %lo(D_8011D544)($at) +/* 043ED4 800432D4 00000000 */ nop +.L800432D8: +/* 043ED8 800432D8 820301CC */ lb $v1, 0x1cc($s0) +/* 043EDC 800432DC 3C014396 */ li $at, 0x43960000 # 300.000000 +/* 043EE0 800432E0 246EFFFE */ addiu $t6, $v1, -2 +/* 043EE4 800432E4 000EC480 */ sll $t8, $t6, 0x12 +/* 043EE8 800432E8 00181C03 */ sra $v1, $t8, 0x10 +/* 043EEC 800432EC 44835000 */ mtc1 $v1, $f10 +/* 043EF0 800432F0 44813000 */ mtc1 $at, $f6 +/* 043EF4 800432F4 46805420 */ cvt.s.w $f16, $f10 +/* 043EF8 800432F8 46003201 */ sub.s $f8, $f6, $f0 +/* 043EFC 800432FC 4608803E */ c.le.s $f16, $f8 +/* 043F00 80043300 00000000 */ nop +/* 043F04 80043304 45000005 */ bc1f .L8004331C +/* 043F08 80043308 3C0F8012 */ lui $t7, %hi(gCurrentRacerInput) # $t7, 0x8012 +/* 043F0C 8004330C 8DEFD528 */ lw $t7, %lo(gCurrentRacerInput)($t7) +/* 043F10 80043310 3C018012 */ lui $at, %hi(gCurrentRacerInput) # $at, 0x8012 +/* 043F14 80043314 35EE8000 */ ori $t6, $t7, 0x8000 +/* 043F18 80043318 AC2ED528 */ sw $t6, %lo(gCurrentRacerInput)($at) +.L8004331C: +/* 043F1C 8004331C AFA9005C */ sw $t1, 0x5c($sp) +/* 043F20 80043320 A7AC0034 */ sh $t4, 0x34($sp) +/* 043F24 80043324 0C0078A7 */ jal get_misc_asset +/* 043F28 80043328 A7AD0078 */ sh $t5, 0x78($sp) +/* 043F2C 8004332C 82080174 */ lb $t0, 0x174($s0) +/* 043F30 80043330 8FA9005C */ lw $t1, 0x5c($sp) +/* 043F34 80043334 87AC0034 */ lh $t4, 0x34($sp) +/* 043F38 80043338 87AD0078 */ lh $t5, 0x78($sp) +/* 043F3C 8004333C 29010003 */ slti $at, $t0, 3 +/* 043F40 80043340 1020000A */ beqz $at, .L8004336C +/* 043F44 80043344 241FFFFF */ li $ra, -1 +/* 043F48 80043348 82180172 */ lb $t8, 0x172($s0) +/* 043F4C 8004334C 00000000 */ nop +/* 043F50 80043350 0018C880 */ sll $t9, $t8, 2 +/* 043F54 80043354 0338C823 */ subu $t9, $t9, $t8 +/* 043F58 80043358 03287821 */ addu $t7, $t9, $t0 +/* 043F5C 8004335C 01E27021 */ addu $t6, $t7, $v0 +/* 043F60 80043360 81CA0000 */ lb $t2, ($t6) +/* 043F64 80043364 10000004 */ b .L80043378 +/* 043F68 80043368 8FB80054 */ lw $t8, 0x54($sp) +.L8004336C: +/* 043F6C 8004336C 820A0172 */ lb $t2, 0x172($s0) +/* 043F70 80043370 00000000 */ nop +/* 043F74 80043374 8FB80054 */ lw $t8, 0x54($sp) +.L80043378: +/* 043F78 80043378 24020007 */ li $v0, 7 +/* 043F7C 8004337C 8303000C */ lb $v1, 0xc($t8) +/* 043F80 80043380 8319000D */ lb $t9, 0xd($t8) +/* 043F84 80043384 004D5823 */ subu $t3, $v0, $t5 +/* 043F88 80043388 03237823 */ subu $t7, $t9, $v1 +/* 043F8C 8004338C 01EB0019 */ multu $t7, $t3 +/* 043F90 80043390 00007012 */ mflo $t6 +/* 043F94 80043394 00000000 */ nop +/* 043F98 80043398 00000000 */ nop +/* 043F9C 8004339C 01C2001A */ div $zero, $t6, $v0 +/* 043FA0 800433A0 14400002 */ bnez $v0, .L800433AC +/* 043FA4 800433A4 00000000 */ nop +/* 043FA8 800433A8 0007000D */ break 7 +.L800433AC: +/* 043FAC 800433AC 2401FFFF */ li $at, -1 +/* 043FB0 800433B0 14410004 */ bne $v0, $at, .L800433C4 +/* 043FB4 800433B4 3C018000 */ lui $at, 0x8000 +/* 043FB8 800433B8 15C10002 */ bne $t6, $at, .L800433C4 +/* 043FBC 800433BC 00000000 */ nop +/* 043FC0 800433C0 0006000D */ break 6 +.L800433C4: +/* 043FC4 800433C4 0000C812 */ mflo $t9 +/* 043FC8 800433C8 03237821 */ addu $t7, $t9, $v1 +/* 043FCC 800433CC A7AF0038 */ sh $t7, 0x38($sp) +/* 043FD0 800433D0 830E0011 */ lb $t6, 0x11($t8) +/* 043FD4 800433D4 83040010 */ lb $a0, 0x10($t8) +/* 043FD8 800433D8 00000000 */ nop +/* 043FDC 800433DC 01C4C823 */ subu $t9, $t6, $a0 +/* 043FE0 800433E0 032B0019 */ multu $t9, $t3 +/* 043FE4 800433E4 00007012 */ mflo $t6 +/* 043FE8 800433E8 00000000 */ nop +/* 043FEC 800433EC 00000000 */ nop +/* 043FF0 800433F0 01C2001A */ div $zero, $t6, $v0 +/* 043FF4 800433F4 14400002 */ bnez $v0, .L80043400 +/* 043FF8 800433F8 00000000 */ nop +/* 043FFC 800433FC 0007000D */ break 7 +.L80043400: +/* 044000 80043400 2401FFFF */ li $at, -1 +/* 044004 80043404 14410004 */ bne $v0, $at, .L80043418 +/* 044008 80043408 3C018000 */ lui $at, 0x8000 +/* 04400C 8004340C 15C10002 */ bne $t6, $at, .L80043418 +/* 044010 80043410 00000000 */ nop +/* 044014 80043414 0006000D */ break 6 +.L80043418: +/* 044018 80043418 0000C812 */ mflo $t9 +/* 04401C 8004341C 03247021 */ addu $t6, $t9, $a0 +/* 044020 80043420 A7AE0036 */ sh $t6, 0x36($sp) +/* 044024 80043424 83190009 */ lb $t9, 9($t8) +/* 044028 80043428 83050008 */ lb $a1, 8($t8) +/* 04402C 8004342C 00000000 */ nop +/* 044030 80043430 03257023 */ subu $t6, $t9, $a1 +/* 044034 80043434 01CB0019 */ multu $t6, $t3 +/* 044038 80043438 0000C812 */ mflo $t9 +/* 04403C 8004343C 00000000 */ nop +/* 044040 80043440 00000000 */ nop +/* 044044 80043444 0322001A */ div $zero, $t9, $v0 +/* 044048 80043448 14400002 */ bnez $v0, .L80043454 +/* 04404C 8004344C 00000000 */ nop +/* 044050 80043450 0007000D */ break 7 +.L80043454: +/* 044054 80043454 2401FFFF */ li $at, -1 +/* 044058 80043458 14410004 */ bne $v0, $at, .L8004346C +/* 04405C 8004345C 3C018000 */ lui $at, 0x8000 +/* 044060 80043460 17210002 */ bne $t9, $at, .L8004346C +/* 044064 80043464 00000000 */ nop +/* 044068 80043468 0006000D */ break 6 +.L8004346C: +/* 04406C 8004346C 00007012 */ mflo $t6 +/* 044070 80043470 01C5C821 */ addu $t9, $t6, $a1 +/* 044074 80043474 A7B9003A */ sh $t9, 0x3a($sp) +/* 044078 80043478 830E0015 */ lb $t6, 0x15($t8) +/* 04407C 8004347C 83060014 */ lb $a2, 0x14($t8) +/* 044080 80043480 00000000 */ nop +/* 044084 80043484 01C6C823 */ subu $t9, $t6, $a2 +/* 044088 80043488 032B0019 */ multu $t9, $t3 +/* 04408C 8004348C 0000C012 */ mflo $t8 +/* 044090 80043490 00000000 */ nop +/* 044094 80043494 00000000 */ nop +/* 044098 80043498 0302001A */ div $zero, $t8, $v0 +/* 04409C 8004349C 14400002 */ bnez $v0, .L800434A8 +/* 0440A0 800434A0 00000000 */ nop +/* 0440A4 800434A4 0007000D */ break 7 +.L800434A8: +/* 0440A8 800434A8 2401FFFF */ li $at, -1 +/* 0440AC 800434AC 14410004 */ bne $v0, $at, .L800434C0 +/* 0440B0 800434B0 3C018000 */ lui $at, 0x8000 +/* 0440B4 800434B4 17010002 */ bne $t8, $at, .L800434C0 +/* 0440B8 800434B8 00000000 */ nop +/* 0440BC 800434BC 0006000D */ break 6 +.L800434C0: +/* 0440C0 800434C0 00007012 */ mflo $t6 +/* 0440C4 800434C4 01C6C821 */ addu $t9, $t6, $a2 +/* 0440C8 800434C8 A7B9003C */ sh $t9, 0x3c($sp) +/* 0440CC 800434CC 92070209 */ lbu $a3, 0x209($s0) +/* 0440D0 800434D0 AFAB0028 */ sw $t3, 0x28($sp) +/* 0440D4 800434D4 30F80001 */ andi $t8, $a3, 1 +/* 0440D8 800434D8 130000AF */ beqz $t8, .L80043798 +/* 0440DC 800434DC 00000000 */ nop +/* 0440E0 800434E0 820E0201 */ lb $t6, 0x201($s0) +/* 0440E4 800434E4 00000000 */ nop +/* 0440E8 800434E8 15C00025 */ bnez $t6, .L80043580 +/* 0440EC 800434EC 00000000 */ nop +/* 0440F0 800434F0 15000012 */ bnez $t0, .L8004353C +/* 0440F4 800434F4 000F2400 */ sll $a0, $t7, 0x10 +/* 0440F8 800434F8 0004CC03 */ sra $t9, $a0, 0x10 +/* 0440FC 800434FC 03202025 */ move $a0, $t9 +/* 044100 80043500 AFA9005C */ sw $t1, 0x5c($sp) +/* 044104 80043504 A3AA004B */ sb $t2, 0x4b($sp) +/* 044108 80043508 A7AC0034 */ sh $t4, 0x34($sp) +/* 04410C 8004350C 0C011114 */ jal roll_percent_chance +/* 044110 80043510 A7AD0078 */ sh $t5, 0x78($sp) +/* 044114 80043514 8FA9005C */ lw $t1, 0x5c($sp) +/* 044118 80043518 83AA004B */ lb $t2, 0x4b($sp) +/* 04411C 8004351C 87AC0034 */ lh $t4, 0x34($sp) +/* 044120 80043520 87AD0078 */ lh $t5, 0x78($sp) +/* 044124 80043524 10400005 */ beqz $v0, .L8004353C +/* 044128 80043528 241FFFFF */ li $ra, -1 +/* 04412C 8004352C 82180174 */ lb $t8, 0x174($s0) +/* 044130 80043530 00000000 */ nop +/* 044134 80043534 270E0001 */ addiu $t6, $t8, 1 +/* 044138 80043538 A20E0174 */ sb $t6, 0x174($s0) +.L8004353C: +/* 04413C 8004353C 15800010 */ bnez $t4, .L80043580 +/* 044140 80043540 29A10003 */ slti $at, $t5, 3 +/* 044144 80043544 1020000E */ beqz $at, .L80043580 +/* 044148 80043548 00000000 */ nop +/* 04414C 8004354C 87A4003C */ lh $a0, 0x3c($sp) +/* 044150 80043550 AFA9005C */ sw $t1, 0x5c($sp) +/* 044154 80043554 A3AA004B */ sb $t2, 0x4b($sp) +/* 044158 80043558 A7AC0034 */ sh $t4, 0x34($sp) +/* 04415C 8004355C 0C011114 */ jal roll_percent_chance +/* 044160 80043560 A7AD0078 */ sh $t5, 0x78($sp) +/* 044164 80043564 8FA9005C */ lw $t1, 0x5c($sp) +/* 044168 80043568 83AA004B */ lb $t2, 0x4b($sp) +/* 04416C 8004356C 87AC0034 */ lh $t4, 0x34($sp) +/* 044170 80043570 87AD0078 */ lh $t5, 0x78($sp) +/* 044174 80043574 10400002 */ beqz $v0, .L80043580 +/* 044178 80043578 241FFFFF */ li $ra, -1 +/* 04417C 8004357C A2000172 */ sb $zero, 0x172($s0) +.L80043580: +/* 044180 80043580 820F01D3 */ lb $t7, 0x1d3($s0) +/* 044184 80043584 3C19800E */ lui $t9, %hi(gRacerAIBalloonActionTable) # $t9, 0x800e +/* 044188 80043588 15E00016 */ bnez $t7, .L800435E4 +/* 04418C 8004358C 032AC821 */ addu $t9, $t9, $t2 +/* 044190 80043590 8339CD90 */ lb $t9, %lo(gRacerAIBalloonActionTable)($t9) +/* 044194 80043594 24010004 */ li $at, 4 +/* 044198 80043598 17210012 */ bne $t9, $at, .L800435E4 +/* 04419C 8004359C 00000000 */ nop +/* 0441A0 800435A0 87A4003C */ lh $a0, 0x3c($sp) +/* 0441A4 800435A4 AFA9005C */ sw $t1, 0x5c($sp) +/* 0441A8 800435A8 A3AA004B */ sb $t2, 0x4b($sp) +/* 0441AC 800435AC A7AC0034 */ sh $t4, 0x34($sp) +/* 0441B0 800435B0 0C011114 */ jal roll_percent_chance +/* 0441B4 800435B4 A7AD0078 */ sh $t5, 0x78($sp) +/* 0441B8 800435B8 8FA9005C */ lw $t1, 0x5c($sp) +/* 0441BC 800435BC 83AA004B */ lb $t2, 0x4b($sp) +/* 0441C0 800435C0 87AC0034 */ lh $t4, 0x34($sp) +/* 0441C4 800435C4 87AD0078 */ lh $t5, 0x78($sp) +/* 0441C8 800435C8 10400006 */ beqz $v0, .L800435E4 +/* 0441CC 800435CC 241FFFFF */ li $ra, -1 +/* 0441D0 800435D0 3C188012 */ lui $t8, %hi(gCurrentButtonsReleased) # $t8, 0x8012 +/* 0441D4 800435D4 8F18D530 */ lw $t8, %lo(gCurrentButtonsReleased)($t8) +/* 0441D8 800435D8 3C018012 */ lui $at, %hi(gCurrentButtonsReleased) # $at, 0x8012 +/* 0441DC 800435DC 370E2000 */ ori $t6, $t8, 0x2000 +/* 0441E0 800435E0 AC2ED530 */ sw $t6, %lo(gCurrentButtonsReleased)($at) +.L800435E4: +/* 0441E4 800435E4 820F0173 */ lb $t7, 0x173($s0) +/* 0441E8 800435E8 3C19800E */ lui $t9, %hi(gRacerAIBalloonActionTable) # $t9, 0x800e +/* 0441EC 800435EC 11E00065 */ beqz $t7, .L80043784 +/* 0441F0 800435F0 2739CD90 */ addiu $t9, %lo(gRacerAIBalloonActionTable) # addiu $t9, $t9, -0x3270 +/* 0441F4 800435F4 01591821 */ addu $v1, $t2, $t9 +/* 0441F8 800435F8 80780000 */ lb $t8, ($v1) +/* 0441FC 800435FC 24010001 */ li $at, 1 +/* 044200 80043600 1701002F */ bne $t8, $at, .L800436C0 +/* 044204 80043604 00000000 */ nop +/* 044208 80043608 11200014 */ beqz $t1, .L8004365C +/* 04420C 8004360C 87A40036 */ lh $a0, 0x36($sp) +/* 044210 80043610 852E0000 */ lh $t6, ($t1) +/* 044214 80043614 29810004 */ slti $at, $t4, 4 +/* 044218 80043618 17EE0010 */ bne $ra, $t6, .L8004365C +/* 04421C 8004361C 87A40036 */ lh $a0, 0x36($sp) +/* 044220 80043620 10200027 */ beqz $at, .L800436C0 +/* 044224 80043624 00000000 */ nop +/* 044228 80043628 83AF003E */ lb $t7, 0x3e($sp) +/* 04422C 8004362C 8FB90044 */ lw $t9, 0x44($sp) +/* 044230 80043630 00000000 */ nop +/* 044234 80043634 01F9C021 */ addu $t8, $t7, $t9 +/* 044238 80043638 830E0000 */ lb $t6, ($t8) +/* 04423C 8004363C 24190004 */ li $t9, 4 +/* 044240 80043640 000E7900 */ sll $t7, $t6, 4 +/* 044244 80043644 01EE7823 */ subu $t7, $t7, $t6 +/* 044248 80043648 000F7880 */ sll $t7, $t7, 2 +/* 04424C 8004364C A60F01C6 */ sh $t7, 0x1c6($s0) +/* 044250 80043650 1000001B */ b .L800436C0 +/* 044254 80043654 A21901C9 */ sb $t9, 0x1c9($s0) +/* 044258 80043658 87A40036 */ lh $a0, 0x36($sp) +.L8004365C: +/* 04425C 8004365C AFA3002C */ sw $v1, 0x2c($sp) +/* 044260 80043660 AFA9005C */ sw $t1, 0x5c($sp) +/* 044264 80043664 A7AC0034 */ sh $t4, 0x34($sp) +/* 044268 80043668 0C011114 */ jal roll_percent_chance +/* 04426C 8004366C A7AD0078 */ sh $t5, 0x78($sp) +/* 044270 80043670 8FA3002C */ lw $v1, 0x2c($sp) +/* 044274 80043674 8FA9005C */ lw $t1, 0x5c($sp) +/* 044278 80043678 87AC0034 */ lh $t4, 0x34($sp) +/* 04427C 8004367C 87AD0078 */ lh $t5, 0x78($sp) +/* 044280 80043680 1040000F */ beqz $v0, .L800436C0 +/* 044284 80043684 241FFFFF */ li $ra, -1 +/* 044288 80043688 29810002 */ slti $at, $t4, 2 +/* 04428C 8004368C 1020000C */ beqz $at, .L800436C0 +/* 044290 80043690 00000000 */ nop +/* 044294 80043694 83B8003E */ lb $t8, 0x3e($sp) +/* 044298 80043698 8FAE0044 */ lw $t6, 0x44($sp) +/* 04429C 8004369C 00000000 */ nop +/* 0442A0 800436A0 030E7821 */ addu $t7, $t8, $t6 +/* 0442A4 800436A4 81F90000 */ lb $t9, ($t7) +/* 0442A8 800436A8 240E0004 */ li $t6, 4 +/* 0442AC 800436AC 0019C100 */ sll $t8, $t9, 4 +/* 0442B0 800436B0 0319C023 */ subu $t8, $t8, $t9 +/* 0442B4 800436B4 0018C080 */ sll $t8, $t8, 2 +/* 0442B8 800436B8 A61801C6 */ sh $t8, 0x1c6($s0) +/* 0442BC 800436BC A20E01C9 */ sb $t6, 0x1c9($s0) +.L800436C0: +/* 0442C0 800436C0 806F0000 */ lb $t7, ($v1) +/* 0442C4 800436C4 24010002 */ li $at, 2 +/* 0442C8 800436C8 15E1002E */ bne $t7, $at, .L80043784 +/* 0442CC 800436CC 00000000 */ nop +/* 0442D0 800436D0 8FA30058 */ lw $v1, 0x58($sp) +/* 0442D4 800436D4 87A40036 */ lh $a0, 0x36($sp) +/* 0442D8 800436D8 10600013 */ beqz $v1, .L80043728 +/* 0442DC 800436DC 00000000 */ nop +/* 0442E0 800436E0 84790000 */ lh $t9, ($v1) +/* 0442E4 800436E4 29810004 */ slti $at, $t4, 4 +/* 0442E8 800436E8 17F9000F */ bne $ra, $t9, .L80043728 +/* 0442EC 800436EC 00000000 */ nop +/* 0442F0 800436F0 10200024 */ beqz $at, .L80043784 +/* 0442F4 800436F4 00000000 */ nop +/* 0442F8 800436F8 83B8003E */ lb $t8, 0x3e($sp) +/* 0442FC 800436FC 8FAE0044 */ lw $t6, 0x44($sp) +/* 044300 80043700 00000000 */ nop +/* 044304 80043704 030E7821 */ addu $t7, $t8, $t6 +/* 044308 80043708 81F90000 */ lb $t9, ($t7) +/* 04430C 8004370C 240E0005 */ li $t6, 5 +/* 044310 80043710 0019C100 */ sll $t8, $t9, 4 +/* 044314 80043714 0319C023 */ subu $t8, $t8, $t9 +/* 044318 80043718 0018C080 */ sll $t8, $t8, 2 +/* 04431C 8004371C A61801C6 */ sh $t8, 0x1c6($s0) +/* 044320 80043720 10000018 */ b .L80043784 +/* 044324 80043724 A20E01C9 */ sb $t6, 0x1c9($s0) +.L80043728: +/* 044328 80043728 AFA9005C */ sw $t1, 0x5c($sp) +/* 04432C 8004372C A7AC0034 */ sh $t4, 0x34($sp) +/* 044330 80043730 0C011114 */ jal roll_percent_chance +/* 044334 80043734 A7AD0078 */ sh $t5, 0x78($sp) +/* 044338 80043738 8FA9005C */ lw $t1, 0x5c($sp) +/* 04433C 8004373C 87AC0034 */ lh $t4, 0x34($sp) +/* 044340 80043740 87AD0078 */ lh $t5, 0x78($sp) +/* 044344 80043744 1040000F */ beqz $v0, .L80043784 +/* 044348 80043748 241FFFFF */ li $ra, -1 +/* 04434C 8004374C 29810002 */ slti $at, $t4, 2 +/* 044350 80043750 1020000C */ beqz $at, .L80043784 +/* 044354 80043754 00000000 */ nop +/* 044358 80043758 83AF003E */ lb $t7, 0x3e($sp) +/* 04435C 8004375C 8FB90044 */ lw $t9, 0x44($sp) +/* 044360 80043760 00000000 */ nop +/* 044364 80043764 01F9C021 */ addu $t8, $t7, $t9 +/* 044368 80043768 830E0000 */ lb $t6, ($t8) +/* 04436C 8004376C 24190005 */ li $t9, 5 +/* 044370 80043770 000E7900 */ sll $t7, $t6, 4 +/* 044374 80043774 01EE7823 */ subu $t7, $t7, $t6 +/* 044378 80043778 000F7880 */ sll $t7, $t7, 2 +/* 04437C 8004377C A60F01C6 */ sh $t7, 0x1c6($s0) +/* 044380 80043780 A21901C9 */ sb $t9, 0x1c9($s0) +.L80043784: +/* 044384 80043784 92180209 */ lbu $t8, 0x209($s0) +/* 044388 80043788 00000000 */ nop +/* 04438C 8004378C 330EFFFE */ andi $t6, $t8, 0xfffe +/* 044390 80043790 A20E0209 */ sb $t6, 0x209($s0) +/* 044394 80043794 31C700FF */ andi $a3, $t6, 0xff +.L80043798: +/* 044398 80043798 820F01D3 */ lb $t7, 0x1d3($s0) +/* 04439C 8004379C 8FA30058 */ lw $v1, 0x58($sp) +/* 0443A0 800437A0 11E00021 */ beqz $t7, .L80043828 +/* 0443A4 800437A4 30F90002 */ andi $t9, $a3, 2 +/* 0443A8 800437A8 17200016 */ bnez $t9, .L80043804 +/* 0443AC 800437AC 30F80004 */ andi $t8, $a3, 4 +/* 0443B0 800437B0 87A4003A */ lh $a0, 0x3a($sp) +/* 0443B4 800437B4 AFA9005C */ sw $t1, 0x5c($sp) +/* 0443B8 800437B8 A7AC0034 */ sh $t4, 0x34($sp) +/* 0443BC 800437BC 0C011114 */ jal roll_percent_chance +/* 0443C0 800437C0 A7AD0078 */ sh $t5, 0x78($sp) +/* 0443C4 800437C4 8FA9005C */ lw $t1, 0x5c($sp) +/* 0443C8 800437C8 87AC0034 */ lh $t4, 0x34($sp) +/* 0443CC 800437CC 87AD0078 */ lh $t5, 0x78($sp) +/* 0443D0 800437D0 10400005 */ beqz $v0, .L800437E8 +/* 0443D4 800437D4 241FFFFF */ li $ra, -1 +/* 0443D8 800437D8 92180209 */ lbu $t8, 0x209($s0) +/* 0443DC 800437DC 00000000 */ nop +/* 0443E0 800437E0 370E0004 */ ori $t6, $t8, 4 +/* 0443E4 800437E4 A20E0209 */ sb $t6, 0x209($s0) +.L800437E8: +/* 0443E8 800437E8 920F0209 */ lbu $t7, 0x209($s0) +/* 0443EC 800437EC 00000000 */ nop +/* 0443F0 800437F0 35F90002 */ ori $t9, $t7, 2 +/* 0443F4 800437F4 A2190209 */ sb $t9, 0x209($s0) +/* 0443F8 800437F8 8FA30058 */ lw $v1, 0x58($sp) +/* 0443FC 800437FC 332700FF */ andi $a3, $t9, 0xff +/* 044400 80043800 30F80004 */ andi $t8, $a3, 4 +.L80043804: +/* 044404 80043804 13000014 */ beqz $t8, .L80043858 +/* 044408 80043808 3C0E8012 */ lui $t6, %hi(gCurrentRacerInput) # $t6, 0x8012 +/* 04440C 8004380C 8DCED528 */ lw $t6, %lo(gCurrentRacerInput)($t6) +/* 044410 80043810 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff +/* 044414 80043814 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff +/* 044418 80043818 01C17824 */ and $t7, $t6, $at +/* 04441C 8004381C 3C018012 */ lui $at, %hi(gCurrentRacerInput) # $at, 0x8012 +/* 044420 80043820 1000000D */ b .L80043858 +/* 044424 80043824 AC2FD528 */ sw $t7, %lo(gCurrentRacerInput)($at) +.L80043828: +/* 044428 80043828 2401FFFD */ li $at, -3 +/* 04442C 8004382C 00E1C824 */ and $t9, $a3, $at +/* 044430 80043830 C604002C */ lwc1 $f4, 0x2c($s0) +/* 044434 80043834 3C01C028 */ li $at, 0xC0280000 # -2.625000 +/* 044438 80043838 44819800 */ mtc1 $at, $f19 +/* 04443C 8004383C 44809000 */ mtc1 $zero, $f18 +/* 044440 80043840 460021A1 */ cvt.d.s $f6, $f4 +/* 044444 80043844 4626903C */ c.lt.d $f18, $f6 +/* 044448 80043848 A2190209 */ sb $t9, 0x209($s0) +/* 04444C 8004384C 45000002 */ bc1f .L80043858 +/* 044450 80043850 332EFFFB */ andi $t6, $t9, 0xfffb +/* 044454 80043854 A20E0209 */ sb $t6, 0x209($s0) +.L80043858: +/* 044458 80043858 920F0209 */ lbu $t7, 0x209($s0) +/* 04445C 8004385C 00000000 */ nop +/* 044460 80043860 31F90004 */ andi $t9, $t7, 4 +/* 044464 80043864 13200007 */ beqz $t9, .L80043884 +/* 044468 80043868 3C188012 */ lui $t8, %hi(gCurrentRacerInput) # $t8, 0x8012 +/* 04446C 8004386C 8F18D528 */ lw $t8, %lo(gCurrentRacerInput)($t8) +/* 044470 80043870 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff +/* 044474 80043874 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff +/* 044478 80043878 03017024 */ and $t6, $t8, $at +/* 04447C 8004387C 3C018012 */ lui $at, %hi(gCurrentRacerInput) # $at, 0x8012 +/* 044480 80043880 AC2ED528 */ sw $t6, %lo(gCurrentRacerInput)($at) +.L80043884: +/* 044484 80043884 860F01C6 */ lh $t7, 0x1c6($s0) +/* 044488 80043888 00000000 */ nop +/* 04448C 8004388C 15E00043 */ bnez $t7, .L8004399C +/* 044490 80043890 8FAF0028 */ lw $t7, 0x28($sp) +/* 044494 80043894 920201C9 */ lbu $v0, 0x1c9($s0) +/* 044498 80043898 24010004 */ li $at, 4 +/* 04449C 8004389C 10410004 */ beq $v0, $at, .L800438B0 +/* 0444A0 800438A0 3C198012 */ lui $t9, %hi(gCurrentButtonsReleased) # $t9, 0x8012 +/* 0444A4 800438A4 24010005 */ li $at, 5 +/* 0444A8 800438A8 14410005 */ bne $v0, $at, .L800438C0 +/* 0444AC 800438AC 00000000 */ nop +.L800438B0: +/* 0444B0 800438B0 8F39D530 */ lw $t9, %lo(gCurrentButtonsReleased)($t9) +/* 0444B4 800438B4 3C018012 */ lui $at, %hi(gCurrentButtonsReleased) # $at, 0x8012 +/* 0444B8 800438B8 37382000 */ ori $t8, $t9, 0x2000 +/* 0444BC 800438BC AC38D530 */ sw $t8, %lo(gCurrentButtonsReleased)($at) +.L800438C0: +/* 0444C0 800438C0 1060001D */ beqz $v1, .L80043938 +/* 0444C4 800438C4 A20001C9 */ sb $zero, 0x1c9($s0) +/* 0444C8 800438C8 846E0000 */ lh $t6, ($v1) +/* 0444CC 800438CC C7AA0090 */ lwc1 $f10, 0x90($sp) +/* 0444D0 800438D0 13EE0019 */ beq $ra, $t6, .L80043938 +/* 0444D4 800438D4 3C014348 */ li $at, 0x43480000 # 200.000000 +/* 0444D8 800438D8 44814000 */ mtc1 $at, $f8 +/* 0444DC 800438DC 00000000 */ nop +/* 0444E0 800438E0 4608503C */ c.lt.s $f10, $f8 +/* 0444E4 800438E4 00000000 */ nop +/* 0444E8 800438E8 45000013 */ bc1f .L80043938 +/* 0444EC 800438EC 00000000 */ nop +/* 0444F0 800438F0 11A00011 */ beqz $t5, .L80043938 +/* 0444F4 800438F4 29810003 */ slti $at, $t4, 3 +/* 0444F8 800438F8 1020000F */ beqz $at, .L80043938 +/* 0444FC 800438FC 00000000 */ nop +/* 044500 80043900 83AF003E */ lb $t7, 0x3e($sp) +/* 044504 80043904 83B8003F */ lb $t8, 0x3f($sp) +/* 044508 80043908 000FC880 */ sll $t9, $t7, 2 +/* 04450C 8004390C 032FC821 */ addu $t9, $t9, $t7 +/* 044510 80043910 8FAF0040 */ lw $t7, 0x40($sp) +/* 044514 80043914 0019C840 */ sll $t9, $t9, 1 +/* 044518 80043918 03387021 */ addu $t6, $t9, $t8 +/* 04451C 8004391C 01CFC821 */ addu $t9, $t6, $t7 +/* 044520 80043920 83380000 */ lb $t8, ($t9) +/* 044524 80043924 240E0005 */ li $t6, 5 +/* 044528 80043928 2B010005 */ slti $at, $t8, 5 +/* 04452C 8004392C 10200002 */ beqz $at, .L80043938 +/* 044530 80043930 00000000 */ nop +/* 044534 80043934 A20E01C9 */ sb $t6, 0x1c9($s0) +.L80043938: +/* 044538 80043938 3C018012 */ lui $at, %hi(D_8011D544) # $at, 0x8012 +/* 04453C 8004393C C424D544 */ lwc1 $f4, %lo(D_8011D544)($at) +/* 044540 80043940 44808000 */ mtc1 $zero, $f16 +/* 044544 80043944 3C0F800E */ lui $t7, %hi(D_800DCDA8) # $t7, 0x800e +/* 044548 80043948 46048032 */ c.eq.s $f16, $f4 +/* 04454C 8004394C 01ED7821 */ addu $t7, $t7, $t5 +/* 044550 80043950 4500000F */ bc1f .L80043990 +/* 044554 80043954 8FA30058 */ lw $v1, 0x58($sp) +/* 044558 80043958 81EFCDA8 */ lb $t7, %lo(D_800DCDA8)($t7) +/* 04455C 8004395C 00000000 */ nop +/* 044560 80043960 A20F01CA */ sb $t7, 0x1ca($s0) +/* 044564 80043964 87A4003C */ lh $a0, 0x3c($sp) +/* 044568 80043968 0C011114 */ jal roll_percent_chance +/* 04456C 8004396C AFA9005C */ sw $t1, 0x5c($sp) +/* 044570 80043970 8FA9005C */ lw $t1, 0x5c($sp) +/* 044574 80043974 10400005 */ beqz $v0, .L8004398C +/* 044578 80043978 241FFFFF */ li $ra, -1 +/* 04457C 8004397C 821901CA */ lb $t9, 0x1ca($s0) +/* 044580 80043980 00000000 */ nop +/* 044584 80043984 2738FFFF */ addiu $t8, $t9, -1 +/* 044588 80043988 A21801CA */ sb $t8, 0x1ca($s0) +.L8004398C: +/* 04458C 8004398C 8FA30058 */ lw $v1, 0x58($sp) +.L80043990: +/* 044590 80043990 240E012C */ li $t6, 300 +/* 044594 80043994 A60E01C6 */ sh $t6, 0x1c6($s0) +/* 044598 80043998 8FAF0028 */ lw $t7, 0x28($sp) +.L8004399C: +/* 04459C 8004399C 24010007 */ li $at, 7 +/* 0445A0 800439A0 15E1000F */ bne $t7, $at, .L800439E0 +/* 0445A4 800439A4 00000000 */ nop +/* 0445A8 800439A8 1060000D */ beqz $v1, .L800439E0 +/* 0445AC 800439AC 3C01800E */ lui $at, %hi(D_800E62A8 + 4) # $at, 0x800e +/* 0445B0 800439B0 C7B20090 */ lwc1 $f18, 0x90($sp) +/* 0445B4 800439B4 C42B62A8 */ lwc1 $f11, %lo(D_800E62A8)($at) +/* 0445B8 800439B8 C42A62AC */ lwc1 $f10, %lo(D_800E62A8 + 4)($at) +/* 0445BC 800439BC 460091A1 */ cvt.d.s $f6, $f18 +/* 0445C0 800439C0 462A303C */ c.lt.d $f6, $f10 +/* 0445C4 800439C4 240E0001 */ li $t6, 1 +/* 0445C8 800439C8 45000005 */ bc1f .L800439E0 +/* 0445CC 800439CC 00000000 */ nop +/* 0445D0 800439D0 92190209 */ lbu $t9, 0x209($s0) +/* 0445D4 800439D4 A20E01CA */ sb $t6, 0x1ca($s0) +/* 0445D8 800439D8 3338FFFB */ andi $t8, $t9, 0xfffb +/* 0445DC 800439DC A2180209 */ sb $t8, 0x209($s0) +.L800439E0: +/* 0445E0 800439E0 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 +/* 0445E4 800439E4 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) +/* 0445E8 800439E8 8FB90054 */ lw $t9, 0x54($sp) +/* 0445EC 800439EC 15E00050 */ bnez $t7, .L80043B30 +/* 0445F0 800439F0 3C01800E */ lui $at, %hi(D_800E62B0 + 4) # $at, 0x800e +/* 0445F4 800439F4 C72E0004 */ lwc1 $f14, 4($t9) +/* 0445F8 800439F8 C43162B0 */ lwc1 $f17, %lo(D_800E62B0)($at) +/* 0445FC 800439FC C43062B4 */ lwc1 $f16, %lo(D_800E62B0 + 4)($at) +/* 044600 80043A00 46007221 */ cvt.d.s $f8, $f14 +/* 044604 80043A04 46304102 */ mul.d $f4, $f8, $f16 +/* 044608 80043A08 3C01800E */ lui $at, %hi(D_800E62B8 + 4) # $at, 0x800e +/* 04460C 80043A0C C43362B8 */ lwc1 $f19, %lo(D_800E62B8)($at) +/* 044610 80043A10 C43262BC */ lwc1 $f18, %lo(D_800E62B8 + 4)($at) +/* 044614 80043A14 3C01800E */ lui $at, %hi(D_800E62C0 + 4) # $at, 0x800e +/* 044618 80043A18 C42B62C0 */ lwc1 $f11, %lo(D_800E62C0)($at) +/* 04461C 80043A1C C42A62C4 */ lwc1 $f10, %lo(D_800E62C0 + 4)($at) +/* 044620 80043A20 46322180 */ add.d $f6, $f4, $f18 +/* 044624 80043A24 AFA9005C */ sw $t1, 0x5c($sp) +/* 044628 80043A28 462A3203 */ div.d $f8, $f6, $f10 +/* 04462C 80043A2C 0C0326B4 */ jal sqrtf +/* 044630 80043A30 46204320 */ cvt.s.d $f12, $f8 +/* 044634 80043A34 8FB80054 */ lw $t8, 0x54($sp) +/* 044638 80043A38 3C01800E */ lui $at, %hi(D_800E62C8 + 4) # $at, 0x800e +/* 04463C 80043A3C C7020000 */ lwc1 $f2, ($t8) +/* 044640 80043A40 C42562C8 */ lwc1 $f5, %lo(D_800E62C8)($at) +/* 044644 80043A44 C42462CC */ lwc1 $f4, %lo(D_800E62C8 + 4)($at) +/* 044648 80043A48 46001421 */ cvt.d.s $f16, $f2 +/* 04464C 80043A4C 46248482 */ mul.d $f18, $f16, $f4 +/* 044650 80043A50 3C01800E */ lui $at, %hi(D_800E62D0 + 4) # $at, 0x800e +/* 044654 80043A54 C42762D0 */ lwc1 $f7, %lo(D_800E62D0)($at) +/* 044658 80043A58 C42662D4 */ lwc1 $f6, %lo(D_800E62D0 + 4)($at) +/* 04465C 80043A5C 3C01800E */ lui $at, %hi(D_800E62D8 + 4) # $at, 0x800e +/* 044660 80043A60 C42962D8 */ lwc1 $f9, %lo(D_800E62D8)($at) +/* 044664 80043A64 C42862DC */ lwc1 $f8, %lo(D_800E62D8 + 4)($at) +/* 044668 80043A68 46269280 */ add.d $f10, $f18, $f6 +/* 04466C 80043A6C E7A00080 */ swc1 $f0, 0x80($sp) +/* 044670 80043A70 46285403 */ div.d $f16, $f10, $f8 +/* 044674 80043A74 0C0326B4 */ jal sqrtf +/* 044678 80043A78 46208320 */ cvt.s.d $f12, $f16 +/* 04467C 80043A7C 240E0007 */ li $t6, 7 +/* 044680 80043A80 448E9000 */ mtc1 $t6, $f18 +/* 044684 80043A84 C7AE0080 */ lwc1 $f14, 0x80($sp) +/* 044688 80043A88 468091A0 */ cvt.s.w $f6, $f18 +/* 04468C 80043A8C 8FAF0028 */ lw $t7, 0x28($sp) +/* 044690 80043A90 820201CA */ lb $v0, 0x1ca($s0) +/* 044694 80043A94 46007101 */ sub.s $f4, $f14, $f0 +/* 044698 80043A98 448F4000 */ mtc1 $t7, $f8 +/* 04469C 80043A9C 46062283 */ div.s $f10, $f4, $f6 +/* 0446A0 80043AA0 46804420 */ cvt.s.w $f16, $f8 +/* 0446A4 80043AA4 8FA9005C */ lw $t1, 0x5c($sp) +/* 0446A8 80043AA8 28410002 */ slti $at, $v0, 2 +/* 0446AC 80043AAC 241FFFFF */ li $ra, -1 +/* 0446B0 80043AB0 2459FFFF */ addiu $t9, $v0, -1 +/* 0446B4 80043AB4 46105482 */ mul.s $f18, $f10, $f16 +/* 0446B8 80043AB8 46120300 */ add.s $f12, $f0, $f18 +/* 0446BC 80043ABC 1420000B */ bnez $at, .L80043AEC +/* 0446C0 80043AC0 46006086 */ mov.s $f2, $f12 +/* 0446C4 80043AC4 44992000 */ mtc1 $t9, $f4 +/* 0446C8 80043AC8 3C01800E */ lui $at, %hi(D_800E62E0 + 4) # $at, 0x800e +/* 0446CC 80043ACC 468021A0 */ cvt.s.w $f6, $f4 +/* 0446D0 80043AD0 C42B62E0 */ lwc1 $f11, %lo(D_800E62E0)($at) +/* 0446D4 80043AD4 C42A62E4 */ lwc1 $f10, %lo(D_800E62E0 + 4)($at) +/* 0446D8 80043AD8 46003221 */ cvt.d.s $f8, $f6 +/* 0446DC 80043ADC 462A4402 */ mul.d $f16, $f8, $f10 +/* 0446E0 80043AE0 460064A1 */ cvt.d.s $f18, $f12 +/* 0446E4 80043AE4 46309100 */ add.d $f4, $f18, $f16 +/* 0446E8 80043AE8 462020A0 */ cvt.s.d $f2, $f4 +.L80043AEC: +/* 0446EC 80043AEC 46021182 */ mul.s $f6, $f2, $f2 +/* 0446F0 80043AF0 3C01800E */ lui $at, %hi(D_800E62E8 + 4) # $at, 0x800e +/* 0446F4 80043AF4 C42B62E8 */ lwc1 $f11, %lo(D_800E62E8)($at) +/* 0446F8 80043AF8 C42A62EC */ lwc1 $f10, %lo(D_800E62E8 + 4)($at) +/* 0446FC 80043AFC 46003221 */ cvt.d.s $f8, $f6 +/* 044700 80043B00 462A4482 */ mul.d $f18, $f8, $f10 +/* 044704 80043B04 3C01800E */ lui $at, %hi(D_800E62F0 + 4) # $at, 0x800e +/* 044708 80043B08 C43162F0 */ lwc1 $f17, %lo(D_800E62F0)($at) +/* 04470C 80043B0C C43062F4 */ lwc1 $f16, %lo(D_800E62F0 + 4)($at) +/* 044710 80043B10 3C01800E */ lui $at, %hi(D_800E62F8 + 4) # $at, 0x800e +/* 044714 80043B14 C42762F8 */ lwc1 $f7, %lo(D_800E62F8)($at) +/* 044718 80043B18 C42662FC */ lwc1 $f6, %lo(D_800E62F8 + 4)($at) +/* 04471C 80043B1C 46309101 */ sub.d $f4, $f18, $f16 +/* 044720 80043B20 00000000 */ nop +/* 044724 80043B24 46262203 */ div.d $f8, $f4, $f6 +/* 044728 80043B28 462040A0 */ cvt.s.d $f2, $f8 +/* 04472C 80043B2C E6020124 */ swc1 $f2, 0x124($s0) +.L80043B30: +/* 044730 80043B30 8FA30058 */ lw $v1, 0x58($sp) +/* 044734 80043B34 1120000E */ beqz $t1, .L80043B70 +/* 044738 80043B38 00000000 */ nop +/* 04473C 80043B3C 821801CA */ lb $t8, 0x1ca($s0) +/* 044740 80043B40 24010003 */ li $at, 3 +/* 044744 80043B44 1701000A */ bne $t8, $at, .L80043B70 +/* 044748 80043B48 3C01800E */ lui $at, %hi(D_800E6300 + 4) # $at, 0x800e +/* 04474C 80043B4C C7B20094 */ lwc1 $f18, 0x94($sp) +/* 044750 80043B50 C42B6300 */ lwc1 $f11, %lo(D_800E6300)($at) +/* 044754 80043B54 C42A6304 */ lwc1 $f10, %lo(D_800E6300 + 4)($at) +/* 044758 80043B58 46009421 */ cvt.d.s $f16, $f18 +/* 04475C 80043B5C 4630503C */ c.lt.d $f10, $f16 +/* 044760 80043B60 240E0002 */ li $t6, 2 +/* 044764 80043B64 45000002 */ bc1f .L80043B70 +/* 044768 80043B68 00000000 */ nop +/* 04476C 80043B6C A20E01CA */ sb $t6, 0x1ca($s0) +.L80043B70: +/* 044770 80043B70 920201C9 */ lbu $v0, 0x1c9($s0) +/* 044774 80043B74 24010004 */ li $at, 4 +/* 044778 80043B78 10400007 */ beqz $v0, .L80043B98 +/* 04477C 80043B7C 00000000 */ nop +/* 044780 80043B80 10410023 */ beq $v0, $at, .L80043C10 +/* 044784 80043B84 24010005 */ li $at, 5 +/* 044788 80043B88 10410026 */ beq $v0, $at, .L80043C24 +/* 04478C 80043B8C 00000000 */ nop +/* 044790 80043B90 10000029 */ b .L80043C38 +/* 044794 80043B94 00000000 */ nop +.L80043B98: +/* 044798 80043B98 11200027 */ beqz $t1, .L80043C38 +/* 04479C 80043B9C 00000000 */ nop +/* 0447A0 80043BA0 852F0000 */ lh $t7, ($t1) +/* 0447A4 80043BA4 00000000 */ nop +/* 0447A8 80043BA8 17EF0023 */ bne $ra, $t7, .L80043C38 +/* 0447AC 80043BAC 00000000 */ nop +/* 0447B0 80043BB0 913901C9 */ lbu $t9, 0x1c9($t1) +/* 0447B4 80043BB4 00000000 */ nop +/* 0447B8 80043BB8 1720001F */ bnez $t9, .L80043C38 +/* 0447BC 80043BBC 00000000 */ nop +/* 0447C0 80043BC0 820201CA */ lb $v0, 0x1ca($s0) +/* 0447C4 80043BC4 813801CA */ lb $t8, 0x1ca($t1) +/* 0447C8 80043BC8 C7A40094 */ lwc1 $f4, 0x94($sp) +/* 0447CC 80043BCC 1458001A */ bne $v0, $t8, .L80043C38 +/* 0447D0 80043BD0 3C014059 */ li $at, 0x40590000 # 3.390625 +/* 0447D4 80043BD4 44814800 */ mtc1 $at, $f9 +/* 0447D8 80043BD8 44804000 */ mtc1 $zero, $f8 +/* 0447DC 80043BDC 460021A1 */ cvt.d.s $f6, $f4 +/* 0447E0 80043BE0 4628303C */ c.lt.d $f6, $f8 +/* 0447E4 80043BE4 244E0001 */ addiu $t6, $v0, 1 +/* 0447E8 80043BE8 45000013 */ bc1f .L80043C38 +/* 0447EC 80043BEC 00000000 */ nop +/* 0447F0 80043BF0 A20E01CA */ sb $t6, 0x1ca($s0) +/* 0447F4 80043BF4 820F01CA */ lb $t7, 0x1ca($s0) +/* 0447F8 80043BF8 24190003 */ li $t9, 3 +/* 0447FC 80043BFC 29E10004 */ slti $at, $t7, 4 +/* 044800 80043C00 1420000D */ bnez $at, .L80043C38 +/* 044804 80043C04 00000000 */ nop +/* 044808 80043C08 1000000B */ b .L80043C38 +/* 04480C 80043C0C A21901CA */ sb $t9, 0x1ca($s0) +.L80043C10: +/* 044810 80043C10 11200009 */ beqz $t1, .L80043C38 +/* 044814 80043C14 00000000 */ nop +/* 044818 80043C18 853801BA */ lh $t8, 0x1ba($t1) +/* 04481C 80043C1C 10000006 */ b .L80043C38 +/* 044820 80043C20 A61801BA */ sh $t8, 0x1ba($s0) +.L80043C24: +/* 044824 80043C24 10600004 */ beqz $v1, .L80043C38 +/* 044828 80043C28 00000000 */ nop +/* 04482C 80043C2C 846E01BA */ lh $t6, 0x1ba($v1) +/* 044830 80043C30 00000000 */ nop +/* 044834 80043C34 A60E01BA */ sh $t6, 0x1ba($s0) +.L80043C38: +/* 044838 80043C38 0C008D07 */ jal is_taj_challenge +/* 04483C 80043C3C 00000000 */ nop +/* 044840 80043C40 00021C00 */ sll $v1, $v0, 0x10 +/* 044844 80043C44 0002CC00 */ sll $t9, $v0, 0x10 +/* 044848 80043C48 0019C403 */ sra $t8, $t9, 0x10 +/* 04484C 80043C4C 00037C03 */ sra $t7, $v1, 0x10 +/* 044850 80043C50 17000005 */ bnez $t8, .L80043C68 +/* 044854 80043C54 01E01825 */ move $v1, $t7 +/* 044858 80043C58 87AE0070 */ lh $t6, 0x70($sp) +/* 04485C 80043C5C 00000000 */ nop +/* 044860 80043C60 11C00016 */ beqz $t6, .L80043CBC +/* 044864 80043C64 87AE0070 */ lh $t6, 0x70($sp) +.L80043C68: +/* 044868 80043C68 A20001CA */ sb $zero, 0x1ca($s0) +/* 04486C 80043C6C A20001C9 */ sb $zero, 0x1c9($s0) +/* 044870 80043C70 87AF0070 */ lh $t7, 0x70($sp) +/* 044874 80043C74 24040011 */ li $a0, 17 +/* 044878 80043C78 11E00006 */ beqz $t7, .L80043C94 +/* 04487C 80043C7C 00000000 */ nop +/* 044880 80043C80 0C0078A7 */ jal get_misc_asset +/* 044884 80043C84 24040012 */ li $a0, 18 +/* 044888 80043C88 87A30070 */ lh $v1, 0x70($sp) +/* 04488C 80043C8C 10000006 */ b .L80043CA8 +/* 044890 80043C90 0003C880 */ sll $t9, $v1, 2 +.L80043C94: +/* 044894 80043C94 0C0078A7 */ jal get_misc_asset +/* 044898 80043C98 A7A3007A */ sh $v1, 0x7a($sp) +/* 04489C 80043C9C 87A3007A */ lh $v1, 0x7a($sp) +/* 0448A0 80043CA0 00000000 */ nop +/* 0448A4 80043CA4 0003C880 */ sll $t9, $v1, 2 +.L80043CA8: +/* 0448A8 80043CA8 0059C021 */ addu $t8, $v0, $t9 +/* 0448AC 80043CAC C712FFFC */ lwc1 $f18, -4($t8) +/* 0448B0 80043CB0 00000000 */ nop +/* 0448B4 80043CB4 E6120124 */ swc1 $f18, 0x124($s0) +/* 0448B8 80043CB8 87AE0070 */ lh $t6, 0x70($sp) +.L80043CBC: +/* 0448BC 80043CBC 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 +/* 0448C0 80043CC0 11C00061 */ beqz $t6, .L80043E48 +/* 0448C4 80043CC4 00000000 */ nop +/* 0448C8 80043CC8 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) +/* 0448CC 80043CCC 3C038012 */ lui $v1, %hi(D_8011D5B8) # $v1, 0x8012 +/* 0448D0 80043CD0 11E00006 */ beqz $t7, .L80043CEC +/* 0448D4 80043CD4 2463D5B8 */ addiu $v1, %lo(D_8011D5B8) # addiu $v1, $v1, -0x2a48 +/* 0448D8 80043CD8 3C038012 */ lui $v1, %hi(D_8011D5B8) # $v1, 0x8012 +/* 0448DC 80043CDC 2463D5B8 */ addiu $v1, %lo(D_8011D5B8) # addiu $v1, $v1, -0x2a48 +/* 0448E0 80043CE0 24190384 */ li $t9, 900 +/* 0448E4 80043CE4 10000040 */ b .L80043DE8 +/* 0448E8 80043CE8 A4790000 */ sh $t9, ($v1) +.L80043CEC: +/* 0448EC 80043CEC 84780000 */ lh $t8, ($v1) +/* 0448F0 80043CF0 8FAE00A0 */ lw $t6, 0xa0($sp) +/* 0448F4 80043CF4 00000000 */ nop +/* 0448F8 80043CF8 030E7823 */ subu $t7, $t8, $t6 +/* 0448FC 80043CFC A46F0000 */ sh $t7, ($v1) +/* 044900 80043D00 84620000 */ lh $v0, ($v1) +/* 044904 80043D04 00000000 */ nop +/* 044908 80043D08 04410016 */ bgez $v0, .L80043D64 +/* 04490C 80043D0C 284102D1 */ slti $at, $v0, 0x2d1 +/* 044910 80043D10 87B90072 */ lh $t9, 0x72($sp) +/* 044914 80043D14 24010001 */ li $at, 1 +/* 044918 80043D18 17210033 */ bne $t9, $at, .L80043DE8 +/* 04491C 80043D1C A4600000 */ sh $zero, ($v1) +/* 044920 80043D20 3C01800E */ lui $at, %hi(D_800E6308 + 4) # $at, 0x800e +/* 044924 80043D24 C7B00094 */ lwc1 $f16, 0x94($sp) +/* 044928 80043D28 C42B6308 */ lwc1 $f11, %lo(D_800E6308)($at) +/* 04492C 80043D2C C42A630C */ lwc1 $f10, %lo(D_800E6308 + 4)($at) +/* 044930 80043D30 46008121 */ cvt.d.s $f4, $f16 +/* 044934 80043D34 4624503C */ c.lt.d $f10, $f4 +/* 044938 80043D38 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 04493C 80043D3C 4500002A */ bc1f .L80043DE8 +/* 044940 80043D40 00000000 */ nop +/* 044944 80043D44 C6060124 */ lwc1 $f6, 0x124($s0) +/* 044948 80043D48 44819800 */ mtc1 $at, $f19 +/* 04494C 80043D4C 44809000 */ mtc1 $zero, $f18 +/* 044950 80043D50 46003221 */ cvt.d.s $f8, $f6 +/* 044954 80043D54 46324400 */ add.d $f16, $f8, $f18 +/* 044958 80043D58 462082A0 */ cvt.s.d $f10, $f16 +/* 04495C 80043D5C 10000022 */ b .L80043DE8 +/* 044960 80043D60 E60A0124 */ swc1 $f10, 0x124($s0) +.L80043D64: +/* 044964 80043D64 C6000124 */ lwc1 $f0, 0x124($s0) +/* 044968 80043D68 14200008 */ bnez $at, .L80043D8C +/* 04496C 80043D6C 46000386 */ mov.s $f14, $f0 +/* 044970 80043D70 3C014014 */ li $at, 0x40140000 # 2.312500 +/* 044974 80043D74 44813800 */ mtc1 $at, $f7 +/* 044978 80043D78 44803000 */ mtc1 $zero, $f6 +/* 04497C 80043D7C 46007121 */ cvt.d.s $f4, $f14 +/* 044980 80043D80 46262200 */ add.d $f8, $f4, $f6 +/* 044984 80043D84 10000013 */ b .L80043DD4 +/* 044988 80043D88 462043A0 */ cvt.s.d $f14, $f8 +.L80043D8C: +/* 04498C 80043D8C 87B80072 */ lh $t8, 0x72($sp) +/* 044990 80043D90 24010001 */ li $at, 1 +/* 044994 80043D94 1301000A */ beq $t8, $at, .L80043DC0 +/* 044998 80043D98 3C014024 */ lui $at, 0x4024 +/* 04499C 80043D9C C7B20090 */ lwc1 $f18, 0x90($sp) +/* 0449A0 80043DA0 3C014069 */ li $at, 0x40690000 # 3.640625 +/* 0449A4 80043DA4 44815800 */ mtc1 $at, $f11 +/* 0449A8 80043DA8 44805000 */ mtc1 $zero, $f10 +/* 0449AC 80043DAC 46009421 */ cvt.d.s $f16, $f18 +/* 0449B0 80043DB0 462A803C */ c.lt.d $f16, $f10 +/* 0449B4 80043DB4 00000000 */ nop +/* 0449B8 80043DB8 45000006 */ bc1f .L80043DD4 +/* 0449BC 80043DBC 3C014024 */ li $at, 0x40240000 # 2.562500 +.L80043DC0: +/* 0449C0 80043DC0 44813800 */ mtc1 $at, $f7 +/* 0449C4 80043DC4 44803000 */ mtc1 $zero, $f6 +/* 0449C8 80043DC8 46007121 */ cvt.d.s $f4, $f14 +/* 0449CC 80043DCC 46262200 */ add.d $f8, $f4, $f6 +/* 0449D0 80043DD0 462043A0 */ cvt.s.d $f14, $f8 +.L80043DD4: +/* 0449D4 80043DD4 460E003C */ c.lt.s $f0, $f14 +/* 0449D8 80043DD8 00000000 */ nop +/* 0449DC 80043DDC 45000002 */ bc1f .L80043DE8 +/* 0449E0 80043DE0 00000000 */ nop +/* 0449E4 80043DE4 E60E0124 */ swc1 $f14, 0x124($s0) +.L80043DE8: +/* 0449E8 80043DE8 820E01D8 */ lb $t6, 0x1d8($s0) +/* 0449EC 80043DEC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 +/* 0449F0 80043DF0 11C00015 */ beqz $t6, .L80043E48 +/* 0449F4 80043DF4 2442D528 */ addiu $v0, %lo(gCurrentRacerInput) # addiu $v0, $v0, -0x2ad8 +/* 0449F8 80043DF8 A20001D3 */ sb $zero, 0x1d3($s0) +/* 0449FC 80043DFC A2000213 */ sb $zero, 0x213($s0) +/* 044A00 80043E00 8C4F0000 */ lw $t7, ($v0) +/* 044A04 80043E04 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff +/* 044A08 80043E08 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff +/* 044A0C 80043E0C 01E1C824 */ and $t9, $t7, $at +/* 044A10 80043E10 AC590000 */ sw $t9, ($v0) +/* 044A14 80043E14 372E4000 */ ori $t6, $t9, 0x4000 +/* 044A18 80043E18 AC4E0000 */ sw $t6, ($v0) +/* 044A1C 80043E1C 3C01800E */ lui $at, %hi(D_800E6310 + 4) # $at, 0x800e +/* 044A20 80043E20 C610002C */ lwc1 $f16, 0x2c($s0) +/* 044A24 80043E24 C4336310 */ lwc1 $f19, %lo(D_800E6310)($at) +/* 044A28 80043E28 C4326314 */ lwc1 $f18, %lo(D_800E6310 + 4)($at) +/* 044A2C 80043E2C 460082A1 */ cvt.d.s $f10, $f16 +/* 044A30 80043E30 462A903C */ c.lt.d $f18, $f10 +/* 044A34 80043E34 35D98000 */ ori $t9, $t6, 0x8000 +/* 044A38 80043E38 45000003 */ bc1f .L80043E48 +/* 044A3C 80043E3C 3C018012 */ lui $at, %hi(gCurrentStickX) # $at, 0x8012 +/* 044A40 80043E40 AC590000 */ sw $t9, ($v0) +/* 044A44 80043E44 AC20D534 */ sw $zero, %lo(gCurrentStickX)($at) +.L80043E48: +/* 044A48 80043E48 82180214 */ lb $t8, 0x214($s0) +/* 044A4C 80043E4C 87AE006E */ lh $t6, 0x6e($sp) +/* 044A50 80043E50 13000002 */ beqz $t8, .L80043E5C +/* 044A54 80043E54 24190040 */ li $t9, 64 +/* 044A58 80043E58 A20E01CA */ sb $t6, 0x1ca($s0) +.L80043E5C: +/* 044A5C 80043E5C 860F01BA */ lh $t7, 0x1ba($s0) +/* 044A60 80043E60 240E0028 */ li $t6, 40 +/* 044A64 80043E64 29E10041 */ slti $at, $t7, 0x41 +/* 044A68 80043E68 14200002 */ bnez $at, .L80043E74 +/* 044A6C 80043E6C 00000000 */ nop +/* 044A70 80043E70 A61901BA */ sh $t9, 0x1ba($s0) +.L80043E74: +/* 044A74 80043E74 861801BC */ lh $t8, 0x1bc($s0) +/* 044A78 80043E78 2419FFC0 */ li $t9, -64 +/* 044A7C 80043E7C 2B010029 */ slti $at, $t8, 0x29 +/* 044A80 80043E80 14200002 */ bnez $at, .L80043E8C +/* 044A84 80043E84 00000000 */ nop +/* 044A88 80043E88 A60E01BC */ sh $t6, 0x1bc($s0) +.L80043E8C: +/* 044A8C 80043E8C 860F01BA */ lh $t7, 0x1ba($s0) +/* 044A90 80043E90 240EFFD8 */ li $t6, -40 +/* 044A94 80043E94 29E1FFC0 */ slti $at, $t7, -0x40 +/* 044A98 80043E98 10200002 */ beqz $at, .L80043EA4 +/* 044A9C 80043E9C 00000000 */ nop +/* 044AA0 80043EA0 A61901BA */ sh $t9, 0x1ba($s0) +.L80043EA4: +/* 044AA4 80043EA4 861801BC */ lh $t8, 0x1bc($s0) +/* 044AA8 80043EA8 00000000 */ nop +/* 044AAC 80043EAC 2B01FFD8 */ slti $at, $t8, -0x28 +/* 044AB0 80043EB0 10200003 */ beqz $at, .L80043EC0 +/* 044AB4 80043EB4 8FBF001C */ lw $ra, 0x1c($sp) +/* 044AB8 80043EB8 A60E01BC */ sh $t6, 0x1bc($s0) +.L80043EBC: +/* 044ABC 80043EBC 8FBF001C */ lw $ra, 0x1c($sp) +.L80043EC0: +/* 044AC0 80043EC0 8FB00018 */ lw $s0, 0x18($sp) +/* 044AC4 80043EC4 03E00008 */ jr $ra +/* 044AC8 80043EC8 27BD0098 */ addiu $sp, $sp, 0x98 + diff --git a/asm/non_matchings/racer/func_80050A28.s b/asm/non_matchings/racer/func_80050A28.s index 12a6e5e8..913e6d2a 100644 --- a/asm/non_matchings/racer/func_80050A28.s +++ b/asm/non_matchings/racer/func_80050A28.s @@ -1,1654 +1,1654 @@ -.late_rodata -glabel D_800E6638 -.double 0.024999999999999998 -glabel D_800E6640 -.double 0.4 -glabel D_800E6648 -.double 1.1 -glabel D_800E6650 -.double -0.3 -glabel D_800E6658 -.double 0.3 -glabel D_800E6660 -.float 0.02 -.word 0 # Padding -glabel D_800E6668 -.double 0.9 -glabel D_800E6670 -.double 0.7 -glabel D_800E6678 -.double 1.7 -glabel D_800E6680 -.double 0.15 -glabel D_800E6688 -.double 0.3 -glabel D_800E6690 -.double 0.32 -glabel D_800E6698 -.double -0.04 -glabel D_800E66A0 -.double 0.04 -glabel D_800E66A8 -.double 0.9 -glabel D_800E66B0 -.double 0.3 -glabel D_800E66B8 -.double 0.1 -glabel D_800E66C0 -.float 0.1 -.word 0 # Padding -glabel D_800E66C8 -.double 0.05 - -.text -glabel func_80050A28 -/* 051628 80050A28 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 05162C 80050A2C AFBF0024 */ sw $ra, 0x24($sp) -/* 051630 80050A30 AFB00020 */ sw $s0, 0x20($sp) -/* 051634 80050A34 AFA40078 */ sw $a0, 0x78($sp) -/* 051638 80050A38 AFA60080 */ sw $a2, 0x80($sp) -/* 05163C 80050A3C AFA70084 */ sw $a3, 0x84($sp) -/* 051640 80050A40 AFA00058 */ sw $zero, 0x58($sp) -/* 051644 80050A44 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 051648 80050A48 44807000 */ mtc1 $zero, $f14 -/* 05164C 80050A4C 460C6102 */ mul.s $f4, $f12, $f12 -/* 051650 80050A50 460E603C */ c.lt.s $f12, $f14 -/* 051654 80050A54 00803825 */ move $a3, $a0 -/* 051658 80050A58 00A08025 */ move $s0, $a1 -/* 05165C 80050A5C 45000005 */ bc1f .L80050A74 -/* 051660 80050A60 E7A40050 */ swc1 $f4, 0x50($sp) -/* 051664 80050A64 C7A60050 */ lwc1 $f6, 0x50($sp) -/* 051668 80050A68 00000000 */ nop -/* 05166C 80050A6C 46003207 */ neg.s $f8, $f6 -/* 051670 80050A70 E7A80050 */ swc1 $f8, 0x50($sp) -.L80050A74: -/* 051674 80050A74 E60E0084 */ swc1 $f14, 0x84($s0) -/* 051678 80050A78 E60E0088 */ swc1 $f14, 0x88($s0) -/* 05167C 80050A7C 3C0E8012 */ lui $t6, %hi(gDialogueCameraAngle) # $t6, 0x8012 -/* 051680 80050A80 85CED586 */ lh $t6, %lo(gDialogueCameraAngle)($t6) -/* 051684 80050A84 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051688 80050A88 15C00041 */ bnez $t6, .L80050B90 -/* 05168C 80050A8C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -/* 051690 80050A90 820F01E7 */ lb $t7, 0x1e7($s0) -/* 051694 80050A94 3C19800E */ lui $t9, %hi(D_800DCDB0) # $t9, 0x800e -/* 051698 80050A98 31F8001F */ andi $t8, $t7, 0x1f -/* 05169C 80050A9C 0338C821 */ addu $t9, $t9, $t8 -/* 0516A0 80050AA0 8339CDB0 */ lb $t9, %lo(D_800DCDB0)($t9) -/* 0516A4 80050AA4 3C01800E */ lui $at, %hi(D_800E6638 + 4) # $at, 0x800e -/* 0516A8 80050AA8 44995000 */ mtc1 $t9, $f10 -/* 0516AC 80050AAC C4276638 */ lwc1 $f7, %lo(D_800E6638)($at) -/* 0516B0 80050AB0 468054A0 */ cvt.s.w $f18, $f10 -/* 0516B4 80050AB4 C426663C */ lwc1 $f6, %lo(D_800E6638 + 4)($at) -/* 0516B8 80050AB8 C60A00A0 */ lwc1 $f10, 0xa0($s0) -/* 0516BC 80050ABC 46009121 */ cvt.d.s $f4, $f18 -/* 0516C0 80050AC0 46262202 */ mul.d $f8, $f4, $f6 -/* 0516C4 80050AC4 46005487 */ neg.s $f18, $f10 -/* 0516C8 80050AC8 C60600A4 */ lwc1 $f6, 0xa4($s0) -/* 0516CC 80050ACC 46204020 */ cvt.s.d $f0, $f8 -/* 0516D0 80050AD0 46009102 */ mul.s $f4, $f18, $f0 -/* 0516D4 80050AD4 46003207 */ neg.s $f8, $f6 -/* 0516D8 80050AD8 C612009C */ lwc1 $f18, 0x9c($s0) -/* 0516DC 80050ADC 46004282 */ mul.s $f10, $f8, $f0 -/* 0516E0 80050AE0 E6040078 */ swc1 $f4, 0x78($s0) -/* 0516E4 80050AE4 46009107 */ neg.s $f4, $f18 -/* 0516E8 80050AE8 46002182 */ mul.s $f6, $f4, $f0 -/* 0516EC 80050AEC E60A007C */ swc1 $f10, 0x7c($s0) -/* 0516F0 80050AF0 E6060080 */ swc1 $f6, 0x80($s0) -/* 0516F4 80050AF4 8CE30060 */ lw $v1, 0x60($a3) -/* 0516F8 80050AF8 00000000 */ nop -/* 0516FC 80050AFC 10600022 */ beqz $v1, .L80050B88 -/* 051700 80050B00 00000000 */ nop -/* 051704 80050B04 8C6A0000 */ lw $t2, ($v1) -/* 051708 80050B08 00003025 */ move $a2, $zero -/* 05170C 80050B0C 1940001E */ blez $t2, .L80050B88 -/* 051710 80050B10 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 051714 80050B14 44811000 */ mtc1 $at, $f2 -/* 051718 80050B18 00002025 */ move $a0, $zero -.L80050B1C: -/* 05171C 80050B1C C4E80008 */ lwc1 $f8, 8($a3) -/* 051720 80050B20 C60A0078 */ lwc1 $f10, 0x78($s0) -/* 051724 80050B24 46081003 */ div.s $f0, $f2, $f8 -/* 051728 80050B28 46005487 */ neg.s $f18, $f10 -/* 05172C 80050B2C 00645821 */ addu $t3, $v1, $a0 -/* 051730 80050B30 8D620004 */ lw $v0, 4($t3) -/* 051734 80050B34 24C60001 */ addiu $a2, $a2, 1 -/* 051738 80050B38 24840004 */ addiu $a0, $a0, 4 -/* 05173C 80050B3C 46009102 */ mul.s $f4, $f18, $f0 -/* 051740 80050B40 E444000C */ swc1 $f4, 0xc($v0) -/* 051744 80050B44 C606007C */ lwc1 $f6, 0x7c($s0) -/* 051748 80050B48 00000000 */ nop -/* 05174C 80050B4C 46003207 */ neg.s $f8, $f6 -/* 051750 80050B50 46004282 */ mul.s $f10, $f8, $f0 -/* 051754 80050B54 E44A0010 */ swc1 $f10, 0x10($v0) -/* 051758 80050B58 C6120080 */ lwc1 $f18, 0x80($s0) -/* 05175C 80050B5C 00000000 */ nop -/* 051760 80050B60 46009107 */ neg.s $f4, $f18 -/* 051764 80050B64 46002182 */ mul.s $f6, $f4, $f0 -/* 051768 80050B68 E4460014 */ swc1 $f6, 0x14($v0) -/* 05176C 80050B6C 8CE30060 */ lw $v1, 0x60($a3) -/* 051770 80050B70 00000000 */ nop -/* 051774 80050B74 8C6C0000 */ lw $t4, ($v1) -/* 051778 80050B78 00000000 */ nop -/* 05177C 80050B7C 00CC082A */ slt $at, $a2, $t4 -/* 051780 80050B80 1420FFE6 */ bnez $at, .L80050B1C -/* 051784 80050B84 00000000 */ nop -.L80050B88: -/* 051788 80050B88 10000005 */ b .L80050BA0 -/* 05178C 80050B8C C60A002C */ lwc1 $f10, 0x2c($s0) -.L80050B90: -/* 051790 80050B90 E60E0078 */ swc1 $f14, 0x78($s0) -/* 051794 80050B94 E60E007C */ swc1 $f14, 0x7c($s0) -/* 051798 80050B98 E60E0080 */ swc1 $f14, 0x80($s0) -/* 05179C 80050B9C C60A002C */ lwc1 $f10, 0x2c($s0) -.L80050BA0: -/* 0517A0 80050BA0 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 -/* 0517A4 80050BA4 44814800 */ mtc1 $at, $f9 -/* 0517A8 80050BA8 44804000 */ mtc1 $zero, $f8 -/* 0517AC 80050BAC 460054A1 */ cvt.d.s $f18, $f10 -/* 0517B0 80050BB0 4632403C */ c.lt.d $f8, $f18 -/* 0517B4 80050BB4 00000000 */ nop -/* 0517B8 80050BB8 4500000A */ bc1f .L80050BE4 -/* 0517BC 80050BBC 00000000 */ nop -/* 0517C0 80050BC0 8D0D0000 */ lw $t5, ($t0) -/* 0517C4 80050BC4 240F003C */ li $t7, 60 -/* 0517C8 80050BC8 31AE8000 */ andi $t6, $t5, 0x8000 -/* 0517CC 80050BCC 11C00003 */ beqz $t6, .L80050BDC -/* 0517D0 80050BD0 00000000 */ nop -/* 0517D4 80050BD4 1000000A */ b .L80050C00 -/* 0517D8 80050BD8 A20F01FB */ sb $t7, 0x1fb($s0) -.L80050BDC: -/* 0517DC 80050BDC 10000008 */ b .L80050C00 -/* 0517E0 80050BE0 A20001FB */ sb $zero, 0x1fb($s0) -.L80050BE4: -/* 0517E4 80050BE4 3C188012 */ lui $t8, %hi(gCurrentRacerInput) # $t8, 0x8012 -/* 0517E8 80050BE8 8F18D528 */ lw $t8, %lo(gCurrentRacerInput)($t8) -/* 0517EC 80050BEC 00000000 */ nop -/* 0517F0 80050BF0 33198000 */ andi $t9, $t8, 0x8000 -/* 0517F4 80050BF4 17200002 */ bnez $t9, .L80050C00 -/* 0517F8 80050BF8 00000000 */ nop -/* 0517FC 80050BFC A20001FB */ sb $zero, 0x1fb($s0) -.L80050C00: -/* 051800 80050C00 820201FB */ lb $v0, 0x1fb($s0) -/* 051804 80050C04 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051808 80050C08 18400006 */ blez $v0, .L80050C24 -/* 05180C 80050C0C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -/* 051810 80050C10 8FAA0080 */ lw $t2, 0x80($sp) -/* 051814 80050C14 00000000 */ nop -/* 051818 80050C18 004A5823 */ subu $t3, $v0, $t2 -/* 05181C 80050C1C 10000002 */ b .L80050C28 -/* 051820 80050C20 A20B01FB */ sb $t3, 0x1fb($s0) -.L80050C24: -/* 051824 80050C24 A20001FB */ sb $zero, 0x1fb($s0) -.L80050C28: -/* 051828 80050C28 AFA00060 */ sw $zero, 0x60($sp) -/* 05182C 80050C2C 3C01800E */ lui $at, %hi(D_800E6640 + 4) # $at, 0x800e -/* 051830 80050C30 C60600B8 */ lwc1 $f6, 0xb8($s0) -/* 051834 80050C34 C4256640 */ lwc1 $f5, %lo(D_800E6640)($at) -/* 051838 80050C38 C4246644 */ lwc1 $f4, %lo(D_800E6640 + 4)($at) -/* 05183C 80050C3C 460032A1 */ cvt.d.s $f10, $f6 -/* 051840 80050C40 462A203C */ c.lt.d $f4, $f10 -/* 051844 80050C44 00000000 */ nop -/* 051848 80050C48 45000048 */ bc1f .L80050D6C -/* 05184C 80050C4C 00000000 */ nop -/* 051850 80050C50 C608002C */ lwc1 $f8, 0x2c($s0) -/* 051854 80050C54 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 051858 80050C58 44813800 */ mtc1 $at, $f7 -/* 05185C 80050C5C 44803000 */ mtc1 $zero, $f6 -/* 051860 80050C60 460044A1 */ cvt.d.s $f18, $f8 -/* 051864 80050C64 4626903C */ c.lt.d $f18, $f6 -/* 051868 80050C68 00000000 */ nop -/* 05186C 80050C6C 4500000B */ bc1f .L80050C9C -/* 051870 80050C70 00000000 */ nop -/* 051874 80050C74 820C01D8 */ lb $t4, 0x1d8($s0) -/* 051878 80050C78 24050001 */ li $a1, 1 -/* 05187C 80050C7C 15800007 */ bnez $t4, .L80050C9C -/* 051880 80050C80 00000000 */ nop -/* 051884 80050C84 86040000 */ lh $a0, ($s0) -/* 051888 80050C88 0C01C8D2 */ jal func_80072348 -/* 05188C 80050C8C AFA70078 */ sw $a3, 0x78($sp) -/* 051890 80050C90 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051894 80050C94 8FA70078 */ lw $a3, 0x78($sp) -/* 051898 80050C98 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -.L80050C9C: -/* 05189C 80050C9C 3C0E8012 */ lui $t6, %hi(gCurrentPlayerIndex) # $t6, 0x8012 -/* 0518A0 80050CA0 8DCED55C */ lw $t6, %lo(gCurrentPlayerIndex)($t6) -/* 0518A4 80050CA4 240D0001 */ li $t5, 1 -/* 0518A8 80050CA8 05C0001D */ bltz $t6, .L80050D20 -/* 0518AC 80050CAC AFAD0060 */ sw $t5, 0x60($sp) -/* 0518B0 80050CB0 3C0F800E */ lui $t7, %hi(gNumViewports) # $t7, 0x800e -/* 0518B4 80050CB4 8DEFCB98 */ lw $t7, %lo(gNumViewports)($t7) -/* 0518B8 80050CB8 240E0001 */ li $t6, 1 -/* 0518BC 80050CBC 29E10003 */ slti $at, $t7, 3 -/* 0518C0 80050CC0 10200016 */ beqz $at, .L80050D1C -/* 0518C4 80050CC4 00000000 */ nop -/* 0518C8 80050CC8 820401E6 */ lb $a0, 0x1e6($s0) -/* 0518CC 80050CCC 00000000 */ nop -/* 0518D0 80050CD0 18800006 */ blez $a0, .L80050CEC -/* 0518D4 80050CD4 00000000 */ nop -/* 0518D8 80050CD8 8CF80074 */ lw $t8, 0x74($a3) -/* 0518DC 80050CDC 00000000 */ nop -/* 0518E0 80050CE0 37191400 */ ori $t9, $t8, 0x1400 -/* 0518E4 80050CE4 1000000E */ b .L80050D20 -/* 0518E8 80050CE8 ACF90074 */ sw $t9, 0x74($a3) -.L80050CEC: -/* 0518EC 80050CEC 04810006 */ bgez $a0, .L80050D08 -/* 0518F0 80050CF0 00000000 */ nop -/* 0518F4 80050CF4 8CEA0074 */ lw $t2, 0x74($a3) -/* 0518F8 80050CF8 00000000 */ nop -/* 0518FC 80050CFC 354B2800 */ ori $t3, $t2, 0x2800 -/* 051900 80050D00 10000007 */ b .L80050D20 -/* 051904 80050D04 ACEB0074 */ sw $t3, 0x74($a3) -.L80050D08: -/* 051908 80050D08 8CEC0074 */ lw $t4, 0x74($a3) -/* 05190C 80050D0C 00000000 */ nop -/* 051910 80050D10 358D3000 */ ori $t5, $t4, 0x3000 -/* 051914 80050D14 10000002 */ b .L80050D20 -/* 051918 80050D18 ACED0074 */ sw $t5, 0x74($a3) -.L80050D1C: -/* 05191C 80050D1C AFAE0058 */ sw $t6, 0x58($sp) -.L80050D20: -/* 051920 80050D20 820F01E7 */ lb $t7, 0x1e7($s0) -/* 051924 80050D24 2404FFE7 */ li $a0, -25 -/* 051928 80050D28 31F80007 */ andi $t8, $t7, 7 -/* 05192C 80050D2C 2B010002 */ slti $at, $t8, 2 -/* 051930 80050D30 10200007 */ beqz $at, .L80050D50 -/* 051934 80050D34 24050019 */ li $a1, 25 -/* 051938 80050D38 0C01BE53 */ jal get_random_number_from_range -/* 05193C 80050D3C AFA70078 */ sw $a3, 0x78($sp) -/* 051940 80050D40 A20201D1 */ sb $v0, 0x1d1($s0) -/* 051944 80050D44 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051948 80050D48 8FA70078 */ lw $a3, 0x78($sp) -/* 05194C 80050D4C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -.L80050D50: -/* 051950 80050D50 3C098012 */ lui $t1, %hi(gCurrentStickX) # $t1, 0x8012 -/* 051954 80050D54 2529D534 */ addiu $t1, %lo(gCurrentStickX) # addiu $t1, $t1, -0x2acc -/* 051958 80050D58 8D390000 */ lw $t9, ($t1) -/* 05195C 80050D5C 820A01D1 */ lb $t2, 0x1d1($s0) -/* 051960 80050D60 00000000 */ nop -/* 051964 80050D64 032A5821 */ addu $t3, $t9, $t2 -/* 051968 80050D68 AD2B0000 */ sw $t3, ($t1) -.L80050D6C: -/* 05196C 80050D6C 820401FA */ lb $a0, 0x1fa($s0) -/* 051970 80050D70 3C098012 */ lui $t1, %hi(gCurrentStickX) # $t1, 0x8012 -/* 051974 80050D74 14800020 */ bnez $a0, .L80050DF8 -/* 051978 80050D78 2529D534 */ addiu $t1, %lo(gCurrentStickX) # addiu $t1, $t1, -0x2acc -/* 05197C 80050D7C C60A002C */ lwc1 $f10, 0x2c($s0) -/* 051980 80050D80 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 051984 80050D84 44812800 */ mtc1 $at, $f5 -/* 051988 80050D88 44802000 */ mtc1 $zero, $f4 -/* 05198C 80050D8C 46005221 */ cvt.d.s $f8, $f10 -/* 051990 80050D90 4628203C */ c.lt.d $f4, $f8 -/* 051994 80050D94 00000000 */ nop -/* 051998 80050D98 45000017 */ bc1f .L80050DF8 -/* 05199C 80050D9C 00000000 */ nop -/* 0519A0 80050DA0 8D0C0000 */ lw $t4, ($t0) -/* 0519A4 80050DA4 00000000 */ nop -/* 0519A8 80050DA8 318D0010 */ andi $t5, $t4, 0x10 -/* 0519AC 80050DAC 11A00012 */ beqz $t5, .L80050DF8 -/* 0519B0 80050DB0 00000000 */ nop -/* 0519B4 80050DB4 8D220000 */ lw $v0, ($t1) -/* 0519B8 80050DB8 00000000 */ nop -/* 0519BC 80050DBC 28410033 */ slti $at, $v0, 0x33 -/* 0519C0 80050DC0 10200003 */ beqz $at, .L80050DD0 -/* 0519C4 80050DC4 2841FFCE */ slti $at, $v0, -0x32 -/* 0519C8 80050DC8 1020000B */ beqz $at, .L80050DF8 -/* 0519CC 80050DCC 00000000 */ nop -.L80050DD0: -/* 0519D0 80050DD0 18400006 */ blez $v0, .L80050DEC -/* 0519D4 80050DD4 240FFFFF */ li $t7, -1 -/* 0519D8 80050DD8 240E0001 */ li $t6, 1 -/* 0519DC 80050DDC A20E01FA */ sb $t6, 0x1fa($s0) -/* 0519E0 80050DE0 820401FA */ lb $a0, 0x1fa($s0) -/* 0519E4 80050DE4 10000004 */ b .L80050DF8 -/* 0519E8 80050DE8 00000000 */ nop -.L80050DEC: -/* 0519EC 80050DEC A20F01FA */ sb $t7, 0x1fa($s0) -/* 0519F0 80050DF0 820401FA */ lb $a0, 0x1fa($s0) -/* 0519F4 80050DF4 00000000 */ nop -.L80050DF8: -/* 0519F8 80050DF8 10800043 */ beqz $a0, .L80050F08 -/* 0519FC 80050DFC 02002825 */ move $a1, $s0 -/* 051A00 80050E00 8D180000 */ lw $t8, ($t0) -/* 051A04 80050E04 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff -/* 051A08 80050E08 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff -/* 051A0C 80050E0C 0301C824 */ and $t9, $t8, $at -/* 051A10 80050E10 AD190000 */ sw $t9, ($t0) -/* 051A14 80050E14 372B4000 */ ori $t3, $t9, 0x4000 -/* 051A18 80050E18 AD0B0000 */ sw $t3, ($t0) -/* 051A1C 80050E1C 3C0E800E */ lui $t6, %hi(gNumViewports) # $t6, 0x800e -/* 051A20 80050E20 8DCECB98 */ lw $t6, %lo(gNumViewports)($t6) -/* 051A24 80050E24 3C018012 */ lui $at, %hi(gCurrentStickY) # $at, 0x8012 -/* 051A28 80050E28 240CFFBA */ li $t4, -70 -/* 051A2C 80050E2C AC2CD538 */ sw $t4, %lo(gCurrentStickY)($at) -/* 051A30 80050E30 240D0001 */ li $t5, 1 -/* 051A34 80050E34 29C10003 */ slti $at, $t6, 3 -/* 051A38 80050E38 10200006 */ beqz $at, .L80050E54 -/* 051A3C 80050E3C AFAD0060 */ sw $t5, 0x60($sp) -/* 051A40 80050E40 8CEF0074 */ lw $t7, 0x74($a3) -/* 051A44 80050E44 00000000 */ nop -/* 051A48 80050E48 35F83C00 */ ori $t8, $t7, 0x3c00 -/* 051A4C 80050E4C 10000003 */ b .L80050E5C -/* 051A50 80050E50 ACF80074 */ sw $t8, 0x74($a3) -.L80050E54: -/* 051A54 80050E54 24190001 */ li $t9, 1 -/* 051A58 80050E58 AFB90058 */ sw $t9, 0x58($sp) -.L80050E5C: -/* 051A5C 80050E5C 8FAA0080 */ lw $t2, 0x80($sp) -/* 051A60 80050E60 820401FA */ lb $a0, 0x1fa($s0) -/* 051A64 80050E64 000A5880 */ sll $t3, $t2, 2 -/* 051A68 80050E68 016A5823 */ subu $t3, $t3, $t2 -/* 051A6C 80050E6C 000B5A40 */ sll $t3, $t3, 9 -/* 051A70 80050E70 01640019 */ multu $t3, $a0 -/* 051A74 80050E74 860301A2 */ lh $v1, 0x1a2($s0) -/* 051A78 80050E78 00000000 */ nop -/* 051A7C 80050E7C 00603025 */ move $a2, $v1 -/* 051A80 80050E80 00006012 */ mflo $t4 -/* 051A84 80050E84 006C6821 */ addu $t5, $v1, $t4 -/* 051A88 80050E88 1880000B */ blez $a0, .L80050EB8 -/* 051A8C 80050E8C A60D01A2 */ sh $t5, 0x1a2($s0) -/* 051A90 80050E90 860E01A2 */ lh $t6, 0x1a2($s0) -/* 051A94 80050E94 00000000 */ nop -/* 051A98 80050E98 05C10010 */ bgez $t6, .L80050EDC -/* 051A9C 80050E9C 00000000 */ nop -/* 051AA0 80050EA0 0460000E */ bltz $v1, .L80050EDC -/* 051AA4 80050EA4 240F7FFF */ li $t7, 32767 -/* 051AA8 80050EA8 A20001FA */ sb $zero, 0x1fa($s0) -/* 051AAC 80050EAC 820401FA */ lb $a0, 0x1fa($s0) -/* 051AB0 80050EB0 1000000A */ b .L80050EDC -/* 051AB4 80050EB4 A60F01A2 */ sh $t7, 0x1a2($s0) -.L80050EB8: -/* 051AB8 80050EB8 861801A2 */ lh $t8, 0x1a2($s0) -/* 051ABC 80050EBC 00000000 */ nop -/* 051AC0 80050EC0 1B000006 */ blez $t8, .L80050EDC -/* 051AC4 80050EC4 00000000 */ nop -/* 051AC8 80050EC8 1CC00004 */ bgtz $a2, .L80050EDC -/* 051ACC 80050ECC 24198000 */ li $t9, -32768 -/* 051AD0 80050ED0 A20001FA */ sb $zero, 0x1fa($s0) -/* 051AD4 80050ED4 820401FA */ lb $a0, 0x1fa($s0) -/* 051AD8 80050ED8 A61901A2 */ sh $t9, 0x1a2($s0) -.L80050EDC: -/* 051ADC 80050EDC 1480000A */ bnez $a0, .L80050F08 -/* 051AE0 80050EE0 00000000 */ nop -/* 051AE4 80050EE4 860301A2 */ lh $v1, 0x1a2($s0) -/* 051AE8 80050EE8 860A01A0 */ lh $t2, 0x1a0($s0) -/* 051AEC 80050EEC C612002C */ lwc1 $f18, 0x2c($s0) -/* 051AF0 80050EF0 01435821 */ addu $t3, $t2, $v1 -/* 051AF4 80050EF4 46009187 */ neg.s $f6, $f18 -/* 051AF8 80050EF8 A60B01A0 */ sh $t3, 0x1a0($s0) -/* 051AFC 80050EFC A60001A2 */ sh $zero, 0x1a2($s0) -/* 051B00 80050F00 E606002C */ swc1 $f6, 0x2c($s0) -/* 051B04 80050F04 A603019E */ sh $v1, 0x19e($s0) -.L80050F08: -/* 051B08 80050F08 820401E6 */ lb $a0, 0x1e6($s0) -/* 051B0C 80050F0C 44809000 */ mtc1 $zero, $f18 -/* 051B10 80050F10 10800019 */ beqz $a0, .L80050F78 -/* 051B14 80050F14 3C0C8012 */ lui $t4, %hi(gCurrentPlayerIndex) # $t4, 0x8012 -/* 051B18 80050F18 8D8CD55C */ lw $t4, %lo(gCurrentPlayerIndex)($t4) -/* 051B1C 80050F1C 3C0D800E */ lui $t5, %hi(gNumViewports) # $t5, 0x800e -/* 051B20 80050F20 05800015 */ bltz $t4, .L80050F78 -/* 051B24 80050F24 00000000 */ nop -/* 051B28 80050F28 8DADCB98 */ lw $t5, %lo(gNumViewports)($t5) -/* 051B2C 80050F2C 240A0001 */ li $t2, 1 -/* 051B30 80050F30 29A10003 */ slti $at, $t5, 3 -/* 051B34 80050F34 1020000F */ beqz $at, .L80050F74 -/* 051B38 80050F38 00000000 */ nop -/* 051B3C 80050F3C 18800006 */ blez $a0, .L80050F58 -/* 051B40 80050F40 00000000 */ nop -/* 051B44 80050F44 8CEE0074 */ lw $t6, 0x74($a3) -/* 051B48 80050F48 00000000 */ nop -/* 051B4C 80050F4C 35CF1400 */ ori $t7, $t6, 0x1400 -/* 051B50 80050F50 10000005 */ b .L80050F68 -/* 051B54 80050F54 ACEF0074 */ sw $t7, 0x74($a3) -.L80050F58: -/* 051B58 80050F58 8CF80074 */ lw $t8, 0x74($a3) -/* 051B5C 80050F5C 00000000 */ nop -/* 051B60 80050F60 37192800 */ ori $t9, $t8, 0x2800 -/* 051B64 80050F64 ACF90074 */ sw $t9, 0x74($a3) -.L80050F68: -/* 051B68 80050F68 820401E6 */ lb $a0, 0x1e6($s0) -/* 051B6C 80050F6C 10000002 */ b .L80050F78 -/* 051B70 80050F70 00000000 */ nop -.L80050F74: -/* 051B74 80050F74 AFAA0058 */ sw $t2, 0x58($sp) -.L80050F78: -/* 051B78 80050F78 1480001D */ bnez $a0, .L80050FF0 -/* 051B7C 80050F7C 00000000 */ nop -/* 051B80 80050F80 8D0B0000 */ lw $t3, ($t0) -/* 051B84 80050F84 3C01C008 */ li $at, 0xC0080000 # -2.125000 -/* 051B88 80050F88 316C0010 */ andi $t4, $t3, 0x10 -/* 051B8C 80050F8C 11800018 */ beqz $t4, .L80050FF0 -/* 051B90 80050F90 00000000 */ nop -/* 051B94 80050F94 C60A002C */ lwc1 $f10, 0x2c($s0) -/* 051B98 80050F98 44814800 */ mtc1 $at, $f9 -/* 051B9C 80050F9C 44804000 */ mtc1 $zero, $f8 -/* 051BA0 80050FA0 46005121 */ cvt.d.s $f4, $f10 -/* 051BA4 80050FA4 4628203C */ c.lt.d $f4, $f8 -/* 051BA8 80050FA8 00000000 */ nop -/* 051BAC 80050FAC 45000010 */ bc1f .L80050FF0 -/* 051BB0 80050FB0 00000000 */ nop -/* 051BB4 80050FB4 8D220000 */ lw $v0, ($t1) -/* 051BB8 80050FB8 00000000 */ nop -/* 051BBC 80050FBC 28410010 */ slti $at, $v0, 0x10 -/* 051BC0 80050FC0 10200003 */ beqz $at, .L80050FD0 -/* 051BC4 80050FC4 2841FFF1 */ slti $at, $v0, -0xf -/* 051BC8 80050FC8 10200009 */ beqz $at, .L80050FF0 -/* 051BCC 80050FCC 00000000 */ nop -.L80050FD0: -/* 051BD0 80050FD0 04410004 */ bgez $v0, .L80050FE4 -/* 051BD4 80050FD4 240DFFFF */ li $t5, -1 -/* 051BD8 80050FD8 A20D01E6 */ sb $t5, 0x1e6($s0) -/* 051BDC 80050FDC 8D220000 */ lw $v0, ($t1) -/* 051BE0 80050FE0 00000000 */ nop -.L80050FE4: -/* 051BE4 80050FE4 18400002 */ blez $v0, .L80050FF0 -/* 051BE8 80050FE8 240E0001 */ li $t6, 1 -/* 051BEC 80050FEC A20E01E6 */ sb $t6, 0x1e6($s0) -.L80050FF0: -/* 051BF0 80050FF0 C606002C */ lwc1 $f6, 0x2c($s0) -/* 051BF4 80050FF4 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 051BF8 80050FF8 44819800 */ mtc1 $at, $f19 -/* 051BFC 80050FFC 460032A1 */ cvt.d.s $f10, $f6 -/* 051C00 80051000 462A903C */ c.lt.d $f18, $f10 -/* 051C04 80051004 00E02025 */ move $a0, $a3 -/* 051C08 80051008 45000002 */ bc1f .L80051014 -/* 051C0C 8005100C 00000000 */ nop -/* 051C10 80051010 A20001E6 */ sb $zero, 0x1e6($s0) -.L80051014: -/* 051C14 80051014 0C015C88 */ jal handle_racer_top_speed -/* 051C18 80051018 AFA70078 */ sw $a3, 0x78($sp) -/* 051C1C 8005101C 3C0F8012 */ lui $t7, %hi(gCurrentRacerInput) # $t7, 0x8012 -/* 051C20 80051020 8DEFD528 */ lw $t7, %lo(gCurrentRacerInput)($t7) -/* 051C24 80051024 E7A00034 */ swc1 $f0, 0x34($sp) -/* 051C28 80051028 31F80010 */ andi $t8, $t7, 0x10 -/* 051C2C 8005102C 13000019 */ beqz $t8, .L80051094 -/* 051C30 80051030 00000000 */ nop -/* 051C34 80051034 820401E6 */ lb $a0, 0x1e6($s0) -/* 051C38 80051038 3C01800E */ lui $at, %hi(D_800E6648 + 4) # $at, 0x800e -/* 051C3C 8005103C 10800015 */ beqz $a0, .L80051094 -/* 051C40 80051040 3C198012 */ lui $t9, %hi(gCurrentStickX) # $t9, 0x8012 -/* 051C44 80051044 C4296648 */ lwc1 $f9, %lo(D_800E6648)($at) -/* 051C48 80051048 C428664C */ lwc1 $f8, %lo(D_800E6648 + 4)($at) -/* 051C4C 8005104C 46000121 */ cvt.d.s $f4, $f0 -/* 051C50 80051050 46282182 */ mul.d $f6, $f4, $f8 -/* 051C54 80051054 8F39D534 */ lw $t9, %lo(gCurrentStickX)($t9) -/* 051C58 80051058 00045900 */ sll $t3, $a0, 4 -/* 051C5C 8005105C 01645823 */ subu $t3, $t3, $a0 -/* 051C60 80051060 000B5840 */ sll $t3, $t3, 1 -/* 051C64 80051064 00195043 */ sra $t2, $t9, 1 -/* 051C68 80051068 014B1021 */ addu $v0, $t2, $t3 -/* 051C6C 8005106C 462034A0 */ cvt.s.d $f18, $f6 -/* 051C70 80051070 2841004C */ slti $at, $v0, 0x4c -/* 051C74 80051074 14200002 */ bnez $at, .L80051080 -/* 051C78 80051078 E7B20034 */ swc1 $f18, 0x34($sp) -/* 051C7C 8005107C 2402004B */ li $v0, 75 -.L80051080: -/* 051C80 80051080 2841FFB5 */ slti $at, $v0, -0x4b -/* 051C84 80051084 10200006 */ beqz $at, .L800510A0 -/* 051C88 80051088 00000000 */ nop -/* 051C8C 8005108C 10000005 */ b .L800510A4 -/* 051C90 80051090 8E02010C */ lw $v0, 0x10c($s0) -.L80051094: -/* 051C94 80051094 A20001E6 */ sb $zero, 0x1e6($s0) -/* 051C98 80051098 820401E6 */ lb $a0, 0x1e6($s0) -/* 051C9C 8005109C 00000000 */ nop -.L800510A0: -/* 051CA0 800510A0 8E02010C */ lw $v0, 0x10c($s0) -.L800510A4: -/* 051CA4 800510A4 8FAE0080 */ lw $t6, 0x80($sp) -/* 051CA8 800510A8 00046340 */ sll $t4, $a0, 0xd -/* 051CAC 800510AC 004C6823 */ subu $t5, $v0, $t4 -/* 051CB0 800510B0 01AE0019 */ multu $t5, $t6 -/* 051CB4 800510B4 860301A2 */ lh $v1, 0x1a2($s0) -/* 051CB8 800510B8 00000000 */ nop -/* 051CBC 800510BC 28611801 */ slti $at, $v1, 0x1801 -/* 051CC0 800510C0 00007812 */ mflo $t7 -/* 051CC4 800510C4 000FC103 */ sra $t8, $t7, 4 -/* 051CC8 800510C8 0058C823 */ subu $t9, $v0, $t8 -/* 051CCC 800510CC 1020000D */ beqz $at, .L80051104 -/* 051CD0 800510D0 AE19010C */ sw $t9, 0x10c($s0) -/* 051CD4 800510D4 2861E800 */ slti $at, $v1, -0x1800 -/* 051CD8 800510D8 1420000B */ bnez $at, .L80051108 -/* 051CDC 800510DC 240C0001 */ li $t4, 1 -/* 051CE0 800510E0 14800009 */ bnez $a0, .L80051108 -/* 051CE4 800510E4 240C0001 */ li $t4, 1 -/* 051CE8 800510E8 820A01FA */ lb $t2, 0x1fa($s0) -/* 051CEC 800510EC 00000000 */ nop -/* 051CF0 800510F0 15400005 */ bnez $t2, .L80051108 -/* 051CF4 800510F4 240C0001 */ li $t4, 1 -/* 051CF8 800510F8 820B01FB */ lb $t3, 0x1fb($s0) -/* 051CFC 800510FC 00000000 */ nop -/* 051D00 80051100 1160004A */ beqz $t3, .L8005122C -.L80051104: -/* 051D04 80051104 240C0001 */ li $t4, 1 -.L80051108: -/* 051D08 80051108 AFAC0060 */ sw $t4, 0x60($sp) -/* 051D0C 8005110C 820D01FB */ lb $t5, 0x1fb($s0) -/* 051D10 80051110 00000000 */ nop -/* 051D14 80051114 11A0000A */ beqz $t5, .L80051140 -/* 051D18 80051118 00000000 */ nop -/* 051D1C 8005111C 820E01D8 */ lb $t6, 0x1d8($s0) -/* 051D20 80051120 00000000 */ nop -/* 051D24 80051124 15C00006 */ bnez $t6, .L80051140 -/* 051D28 80051128 00000000 */ nop -/* 051D2C 8005112C 86040000 */ lh $a0, ($s0) -/* 051D30 80051130 0C01C8D2 */ jal func_80072348 -/* 051D34 80051134 00002825 */ move $a1, $zero -/* 051D38 80051138 860301A2 */ lh $v1, 0x1a2($s0) -/* 051D3C 8005113C 00000000 */ nop -.L80051140: -/* 051D40 80051140 04610009 */ bgez $v1, .L80051168 -/* 051D44 80051144 8FA80078 */ lw $t0, 0x78($sp) -/* 051D48 80051148 8FA80078 */ lw $t0, 0x78($sp) -/* 051D4C 8005114C 00000000 */ nop -/* 051D50 80051150 8D0F0074 */ lw $t7, 0x74($t0) -/* 051D54 80051154 00000000 */ nop -/* 051D58 80051158 35F81400 */ ori $t8, $t7, 0x1400 -/* 051D5C 8005115C 10000007 */ b .L8005117C -/* 051D60 80051160 AD180074 */ sw $t8, 0x74($t0) -/* 051D64 80051164 8FA80078 */ lw $t0, 0x78($sp) -.L80051168: -/* 051D68 80051168 00000000 */ nop -/* 051D6C 8005116C 8D0A0074 */ lw $t2, 0x74($t0) -/* 051D70 80051170 00000000 */ nop -/* 051D74 80051174 354B2800 */ ori $t3, $t2, 0x2800 -/* 051D78 80051178 AD0B0074 */ sw $t3, 0x74($t0) -.L8005117C: -/* 051D7C 8005117C 820C01E6 */ lb $t4, 0x1e6($s0) -/* 051D80 80051180 00000000 */ nop -/* 051D84 80051184 15800009 */ bnez $t4, .L800511AC -/* 051D88 80051188 00000000 */ nop -/* 051D8C 8005118C 820D01FA */ lb $t5, 0x1fa($s0) -/* 051D90 80051190 00000000 */ nop -/* 051D94 80051194 15A00005 */ bnez $t5, .L800511AC -/* 051D98 80051198 00000000 */ nop -/* 051D9C 8005119C 820E01FB */ lb $t6, 0x1fb($s0) -/* 051DA0 800511A0 00000000 */ nop -/* 051DA4 800511A4 11C00019 */ beqz $t6, .L8005120C -/* 051DA8 800511A8 00000000 */ nop -.L800511AC: -/* 051DAC 800511AC 8E020010 */ lw $v0, 0x10($s0) -/* 051DB0 800511B0 24040001 */ li $a0, 1 -/* 051DB4 800511B4 14400008 */ bnez $v0, .L800511D8 -/* 051DB8 800511B8 260F0010 */ addiu $t7, $s0, 0x10 -/* 051DBC 800511BC 8D05000C */ lw $a1, 0xc($t0) -/* 051DC0 800511C0 8D060010 */ lw $a2, 0x10($t0) -/* 051DC4 800511C4 8D070014 */ lw $a3, 0x14($t0) -/* 051DC8 800511C8 0C0007AA */ jal play_sound_spatial -/* 051DCC 800511CC AFAF0010 */ sw $t7, 0x10($sp) -/* 051DD0 800511D0 10000007 */ b .L800511F0 -/* 051DD4 800511D4 8E020014 */ lw $v0, 0x14($s0) -.L800511D8: -/* 051DD8 800511D8 8D05000C */ lw $a1, 0xc($t0) -/* 051DDC 800511DC 8D060010 */ lw $a2, 0x10($t0) -/* 051DE0 800511E0 8D070014 */ lw $a3, 0x14($t0) -/* 051DE4 800511E4 0C0026DF */ jal func_80009B7C -/* 051DE8 800511E8 00402025 */ move $a0, $v0 -/* 051DEC 800511EC 8E020014 */ lw $v0, 0x14($s0) -.L800511F0: -/* 051DF0 800511F0 00000000 */ nop -/* 051DF4 800511F4 10400003 */ beqz $v0, .L80051204 -/* 051DF8 800511F8 00000000 */ nop -/* 051DFC 800511FC 0C001223 */ jal func_8000488C -/* 051E00 80051200 00402025 */ move $a0, $v0 -.L80051204: -/* 051E04 80051204 10000015 */ b .L8005125C -/* 051E08 80051208 00000000 */ nop -.L8005120C: -/* 051E0C 8005120C 8E020010 */ lw $v0, 0x10($s0) -/* 051E10 80051210 00000000 */ nop -/* 051E14 80051214 10400011 */ beqz $v0, .L8005125C -/* 051E18 80051218 00000000 */ nop -/* 051E1C 8005121C 0C001223 */ jal func_8000488C -/* 051E20 80051220 00402025 */ move $a0, $v0 -/* 051E24 80051224 1000000D */ b .L8005125C -/* 051E28 80051228 00000000 */ nop -.L8005122C: -/* 051E2C 8005122C 8E020010 */ lw $v0, 0x10($s0) -/* 051E30 80051230 00000000 */ nop -/* 051E34 80051234 10400003 */ beqz $v0, .L80051244 -/* 051E38 80051238 00000000 */ nop -/* 051E3C 8005123C 0C001223 */ jal func_8000488C -/* 051E40 80051240 00402025 */ move $a0, $v0 -.L80051244: -/* 051E44 80051244 8E020014 */ lw $v0, 0x14($s0) -/* 051E48 80051248 00000000 */ nop -/* 051E4C 8005124C 10400003 */ beqz $v0, .L8005125C -/* 051E50 80051250 00000000 */ nop -/* 051E54 80051254 0C001223 */ jal func_8000488C -/* 051E58 80051258 00402025 */ move $a0, $v0 -.L8005125C: -/* 051E5C 8005125C 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 051E60 80051260 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 051E64 80051264 820301E1 */ lb $v1, 0x1e1($s0) -/* 051E68 80051268 30584000 */ andi $t8, $v0, 0x4000 -/* 051E6C 8005126C 24060006 */ li $a2, 6 -/* 051E70 80051270 13000002 */ beqz $t8, .L8005127C -/* 051E74 80051274 03001025 */ move $v0, $t8 -/* 051E78 80051278 2406000C */ li $a2, 12 -.L8005127C: -/* 051E7C 8005127C 10400006 */ beqz $v0, .L80051298 -/* 051E80 80051280 3C01800E */ lui $at, %hi(D_800E6650 + 4) # $at, 0x800e -/* 051E84 80051284 820A01E6 */ lb $t2, 0x1e6($s0) -/* 051E88 80051288 00000000 */ nop -/* 051E8C 8005128C 11400002 */ beqz $t2, .L80051298 -/* 051E90 80051290 00000000 */ nop -/* 051E94 80051294 24060012 */ li $a2, 18 -.L80051298: -/* 051E98 80051298 C60A002C */ lwc1 $f10, 0x2c($s0) -/* 051E9C 8005129C C4256650 */ lwc1 $f5, %lo(D_800E6650)($at) -/* 051EA0 800512A0 C4246654 */ lwc1 $f4, %lo(D_800E6650 + 4)($at) -/* 051EA4 800512A4 460050A1 */ cvt.d.s $f2, $f10 -/* 051EA8 800512A8 4624103C */ c.lt.d $f2, $f4 -/* 051EAC 800512AC 00001025 */ move $v0, $zero -/* 051EB0 800512B0 45000005 */ bc1f .L800512C8 -/* 051EB4 800512B4 3C01800E */ lui $at, %hi(D_800E6658 + 4) # $at, 0x800e -/* 051EB8 800512B8 00660019 */ multu $v1, $a2 -/* 051EBC 800512BC 00001012 */ mflo $v0 -/* 051EC0 800512C0 00000000 */ nop -/* 051EC4 800512C4 00000000 */ nop -.L800512C8: -/* 051EC8 800512C8 C4296658 */ lwc1 $f9, %lo(D_800E6658)($at) -/* 051ECC 800512CC C428665C */ lwc1 $f8, %lo(D_800E6658 + 4)($at) -/* 051ED0 800512D0 8FB90080 */ lw $t9, 0x80($sp) -/* 051ED4 800512D4 4622403C */ c.lt.d $f8, $f2 -/* 051ED8 800512D8 00000000 */ nop -/* 051EDC 800512DC 45000005 */ bc1f .L800512F4 -/* 051EE0 800512E0 00035823 */ negu $t3, $v1 -/* 051EE4 800512E4 01660019 */ multu $t3, $a2 -/* 051EE8 800512E8 00001012 */ mflo $v0 -/* 051EEC 800512EC 00000000 */ nop -/* 051EF0 800512F0 00000000 */ nop -.L800512F4: -/* 051EF4 800512F4 00590019 */ multu $v0, $t9 -/* 051EF8 800512F8 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 -/* 051EFC 800512FC C42AD570 */ lwc1 $f10, %lo(gCurrentRacerHandlingStat)($at) -/* 051F00 80051300 860E01A0 */ lh $t6, 0x1a0($s0) -/* 051F04 80051304 02002025 */ move $a0, $s0 -/* 051F08 80051308 00001012 */ mflo $v0 -/* 051F0C 8005130C 00026043 */ sra $t4, $v0, 1 -/* 051F10 80051310 448C3000 */ mtc1 $t4, $f6 -/* 051F14 80051314 00000000 */ nop -/* 051F18 80051318 468034A0 */ cvt.s.w $f18, $f6 -/* 051F1C 8005131C 460A9102 */ mul.s $f4, $f18, $f10 -/* 051F20 80051320 444DF800 */ cfc1 $t5, $31 -/* 051F24 80051324 00000000 */ nop -/* 051F28 80051328 35A10003 */ ori $at, $t5, 3 -/* 051F2C 8005132C 38210002 */ xori $at, $at, 2 -/* 051F30 80051330 44C1F800 */ ctc1 $at, $31 -/* 051F34 80051334 00000000 */ nop -/* 051F38 80051338 46002224 */ cvt.w.s $f8, $f4 -/* 051F3C 8005133C 440F4000 */ mfc1 $t7, $f8 -/* 051F40 80051340 44CDF800 */ ctc1 $t5, $31 -/* 051F44 80051344 01CFC023 */ subu $t8, $t6, $t7 -/* 051F48 80051348 0C014D1E */ jal handle_car_steering -/* 051F4C 8005134C A61801A0 */ sh $t8, 0x1a0($s0) -/* 051F50 80051350 C606002C */ lwc1 $f6, 0x2c($s0) -/* 051F54 80051354 3C01C010 */ li $at, 0xC0100000 # -2.250000 -/* 051F58 80051358 44815800 */ mtc1 $at, $f11 -/* 051F5C 8005135C 44805000 */ mtc1 $zero, $f10 -/* 051F60 80051360 460034A1 */ cvt.d.s $f18, $f6 -/* 051F64 80051364 462A903C */ c.lt.d $f18, $f10 -/* 051F68 80051368 44807000 */ mtc1 $zero, $f14 -/* 051F6C 8005136C 45000032 */ bc1f .L80051438 -/* 051F70 80051370 00004825 */ move $t1, $zero -/* 051F74 80051374 3C028012 */ lui $v0, %hi(gCurrentCarSteerVel) # $v0, 0x8012 -/* 051F78 80051378 8C42D554 */ lw $v0, %lo(gCurrentCarSteerVel)($v0) -/* 051F7C 8005137C 00000000 */ nop -/* 051F80 80051380 28411401 */ slti $at, $v0, 0x1401 -/* 051F84 80051384 10200007 */ beqz $at, .L800513A4 -/* 051F88 80051388 00000000 */ nop -/* 051F8C 8005138C 820401E6 */ lb $a0, 0x1e6($s0) -/* 051F90 80051390 2841EC00 */ slti $at, $v0, -0x1400 -/* 051F94 80051394 10800013 */ beqz $a0, .L800513E4 -/* 051F98 80051398 00000000 */ nop -/* 051F9C 8005139C 18400011 */ blez $v0, .L800513E4 -/* 051FA0 800513A0 00000000 */ nop -.L800513A4: -/* 051FA4 800513A4 820601E7 */ lb $a2, 0x1e7($s0) -/* 051FA8 800513A8 240B0007 */ li $t3, 7 -/* 051FAC 800513AC 30CA0007 */ andi $t2, $a2, 7 -/* 051FB0 800513B0 29410004 */ slti $at, $t2, 4 -/* 051FB4 800513B4 14200002 */ bnez $at, .L800513C0 -/* 051FB8 800513B8 01403025 */ move $a2, $t2 -/* 051FBC 800513BC 016A3023 */ subu $a2, $t3, $t2 -.L800513C0: -/* 051FC0 800513C0 0006C880 */ sll $t9, $a2, 2 -/* 051FC4 800513C4 0326C823 */ subu $t9, $t9, $a2 -/* 051FC8 800513C8 0019C8C0 */ sll $t9, $t9, 3 -/* 051FCC 800513CC 0326C821 */ addu $t9, $t9, $a2 -/* 051FD0 800513D0 0019C900 */ sll $t9, $t9, 4 -/* 051FD4 800513D4 00596021 */ addu $t4, $v0, $t9 -/* 051FD8 800513D8 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 -/* 051FDC 800513DC 10000016 */ b .L80051438 -/* 051FE0 800513E0 AC2CD554 */ sw $t4, %lo(gCurrentCarSteerVel)($at) -.L800513E4: -/* 051FE4 800513E4 14200005 */ bnez $at, .L800513FC -/* 051FE8 800513E8 00000000 */ nop -/* 051FEC 800513EC 10800012 */ beqz $a0, .L80051438 -/* 051FF0 800513F0 00000000 */ nop -/* 051FF4 800513F4 04410010 */ bgez $v0, .L80051438 -/* 051FF8 800513F8 00000000 */ nop -.L800513FC: -/* 051FFC 800513FC 820601E7 */ lb $a2, 0x1e7($s0) -/* 052000 80051400 240E0007 */ li $t6, 7 -/* 052004 80051404 30CD0007 */ andi $t5, $a2, 7 -/* 052008 80051408 29A10004 */ slti $at, $t5, 4 -/* 05200C 8005140C 14200002 */ bnez $at, .L80051418 -/* 052010 80051410 01A03025 */ move $a2, $t5 -/* 052014 80051414 01CD3023 */ subu $a2, $t6, $t5 -.L80051418: -/* 052018 80051418 00067880 */ sll $t7, $a2, 2 -/* 05201C 8005141C 01E67823 */ subu $t7, $t7, $a2 -/* 052020 80051420 000F78C0 */ sll $t7, $t7, 3 -/* 052024 80051424 01E67821 */ addu $t7, $t7, $a2 -/* 052028 80051428 000F7900 */ sll $t7, $t7, 4 -/* 05202C 8005142C 004FC023 */ subu $t8, $v0, $t7 -/* 052030 80051430 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 -/* 052034 80051434 AC38D554 */ sw $t8, %lo(gCurrentCarSteerVel)($at) -.L80051438: -/* 052038 80051438 44808000 */ mtc1 $zero, $f16 -/* 05203C 8005143C 44801000 */ mtc1 $zero, $f2 -/* 052040 80051440 AFA00068 */ sw $zero, 0x68($sp) -/* 052044 80051444 00004025 */ move $t0, $zero -/* 052048 80051448 00003025 */ move $a2, $zero -/* 05204C 8005144C 02002825 */ move $a1, $s0 -.L80051450: -/* 052050 80051450 90AA01DC */ lbu $t2, 0x1dc($a1) -/* 052054 80051454 240100FF */ li $at, 255 -/* 052058 80051458 11410038 */ beq $t2, $at, .L8005153C -/* 05205C 8005145C 00000000 */ nop -/* 052060 80051460 AFA50028 */ sw $a1, 0x28($sp) -/* 052064 80051464 AFA60070 */ sw $a2, 0x70($sp) -/* 052068 80051468 A3A80057 */ sb $t0, 0x57($sp) -/* 05206C 8005146C AFA90064 */ sw $t1, 0x64($sp) -/* 052070 80051470 E7A20048 */ swc1 $f2, 0x48($sp) -/* 052074 80051474 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052078 80051478 0C0270C3 */ jal get_filtered_cheats -/* 05207C 8005147C E7B00040 */ swc1 $f16, 0x40($sp) -/* 052080 80051480 8FA50028 */ lw $a1, 0x28($sp) -/* 052084 80051484 8FA60070 */ lw $a2, 0x70($sp) -/* 052088 80051488 3C07800E */ lui $a3, %hi(gSurfaceTractionTable) # $a3, 0x800e -/* 05208C 8005148C 83A80057 */ lb $t0, 0x57($sp) -/* 052090 80051490 8FA90064 */ lw $t1, 0x64($sp) -/* 052094 80051494 C7A20048 */ lwc1 $f2, 0x48($sp) -/* 052098 80051498 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 05209C 8005149C C7B00040 */ lwc1 $f16, 0x40($sp) -/* 0520A0 800514A0 00025A00 */ sll $t3, $v0, 8 -/* 0520A4 800514A4 05610006 */ bgez $t3, .L800514C0 -/* 0520A8 800514A8 24E7CB9C */ addiu $a3, %lo(gSurfaceTractionTable) # addiu $a3, $a3, -0x3464 -/* 0520AC 800514AC C4E40000 */ lwc1 $f4, ($a3) -/* 0520B0 800514B0 90A201DC */ lbu $v0, 0x1dc($a1) -/* 0520B4 800514B4 46047380 */ add.s $f14, $f14, $f4 -/* 0520B8 800514B8 10000008 */ b .L800514DC -/* 0520BC 800514BC 00021880 */ sll $v1, $v0, 2 -.L800514C0: -/* 0520C0 800514C0 90A201DC */ lbu $v0, 0x1dc($a1) -/* 0520C4 800514C4 00000000 */ nop -/* 0520C8 800514C8 00021880 */ sll $v1, $v0, 2 -/* 0520CC 800514CC 00E3C821 */ addu $t9, $a3, $v1 -/* 0520D0 800514D0 C7280000 */ lwc1 $f8, ($t9) -/* 0520D4 800514D4 00000000 */ nop -/* 0520D8 800514D8 46087380 */ add.s $f14, $f14, $f8 -.L800514DC: -/* 0520DC 800514DC 3C01800E */ lui $at, %hi(D_800DCBE8) # $at, 0x800e -/* 0520E0 800514E0 3C0D800E */ lui $t5, %hi(gSurfaceBobbingTable) # $t5, 0x800e -/* 0520E4 800514E4 00230821 */ addu $at, $at, $v1 -/* 0520E8 800514E8 01A36821 */ addu $t5, $t5, $v1 -/* 0520EC 800514EC C426CBE8 */ lwc1 $f6, %lo(D_800DCBE8)($at) -/* 0520F0 800514F0 8DADCC34 */ lw $t5, %lo(gSurfaceBobbingTable)($t5) -/* 0520F4 800514F4 8FAC0068 */ lw $t4, 0x68($sp) -/* 0520F8 800514F8 0122082A */ slt $at, $t1, $v0 -/* 0520FC 800514FC 018D7021 */ addu $t6, $t4, $t5 -/* 052100 80051500 AFAE0068 */ sw $t6, 0x68($sp) -/* 052104 80051504 00402025 */ move $a0, $v0 -/* 052108 80051508 10200002 */ beqz $at, .L80051514 -/* 05210C 8005150C 46068400 */ add.s $f16, $f16, $f6 -/* 052110 80051510 00404825 */ move $t1, $v0 -.L80051514: -/* 052114 80051514 24010004 */ li $at, 4 -/* 052118 80051518 14810005 */ bne $a0, $at, .L80051530 -/* 05211C 8005151C 3C013F80 */ lui $at, 0x3f80 -/* 052120 80051520 25080001 */ addiu $t0, $t0, 1 -/* 052124 80051524 00087E00 */ sll $t7, $t0, 0x18 -/* 052128 80051528 000F4603 */ sra $t0, $t7, 0x18 -/* 05212C 8005152C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -.L80051530: -/* 052130 80051530 44819000 */ mtc1 $at, $f18 -/* 052134 80051534 00000000 */ nop -/* 052138 80051538 46121080 */ add.s $f2, $f2, $f18 -.L8005153C: -/* 05213C 8005153C 24C60001 */ addiu $a2, $a2, 1 -/* 052140 80051540 28C10004 */ slti $at, $a2, 4 -/* 052144 80051544 1420FFC2 */ bnez $at, .L80051450 -/* 052148 80051548 24A50001 */ addiu $a1, $a1, 1 -/* 05214C 8005154C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 052150 80051550 44815000 */ mtc1 $at, $f10 -/* 052154 80051554 44802800 */ mtc1 $zero, $f5 -/* 052158 80051558 4602503C */ c.lt.s $f10, $f2 -/* 05215C 8005155C 00000000 */ nop -/* 052160 80051560 45000004 */ bc1f .L80051574 -/* 052164 80051564 00000000 */ nop -/* 052168 80051568 46027383 */ div.s $f14, $f14, $f2 -/* 05216C 8005156C 00000000 */ nop -/* 052170 80051570 46028403 */ div.s $f16, $f16, $f2 -.L80051574: -/* 052174 80051574 860A0000 */ lh $t2, ($s0) -/* 052178 80051578 00000000 */ nop -/* 05217C 8005157C 1540000D */ bnez $t2, .L800515B4 -/* 052180 80051580 00000000 */ nop -/* 052184 80051584 820B01E2 */ lb $t3, 0x1e2($s0) -/* 052188 80051588 2401000C */ li $at, 12 -/* 05218C 8005158C 11600009 */ beqz $t3, .L800515B4 -/* 052190 80051590 00000000 */ nop -/* 052194 80051594 15210007 */ bne $t1, $at, .L800515B4 -/* 052198 80051598 3C198012 */ lui $t9, %hi(gCurrentButtonsPressed) # $t9, 0x8012 -/* 05219C 8005159C 8F39D52C */ lw $t9, %lo(gCurrentButtonsPressed)($t9) -/* 0521A0 800515A0 240D0002 */ li $t5, 2 -/* 0521A4 800515A4 332C2000 */ andi $t4, $t9, 0x2000 -/* 0521A8 800515A8 11800002 */ beqz $t4, .L800515B4 -/* 0521AC 800515AC 3C018012 */ lui $at, %hi(gTajInteractStatus) # $at, 0x8012 -/* 0521B0 800515B0 A02DD582 */ sb $t5, %lo(gTajInteractStatus)($at) -.L800515B4: -/* 0521B4 800515B4 C60800C0 */ lwc1 $f8, 0xc0($s0) -/* 0521B8 800515B8 44802000 */ mtc1 $zero, $f4 -/* 0521BC 800515BC 460041A1 */ cvt.d.s $f6, $f8 -/* 0521C0 800515C0 46262032 */ c.eq.d $f4, $f6 -/* 0521C4 800515C4 00000000 */ nop -/* 0521C8 800515C8 45010004 */ bc1t .L800515DC -/* 0521CC 800515CC 3C01800E */ lui $at, %hi(D_800E6660) # $at, 0x800e -/* 0521D0 800515D0 C42E6660 */ lwc1 $f14, %lo(D_800E6660)($at) -/* 0521D4 800515D4 44808000 */ mtc1 $zero, $f16 -/* 0521D8 800515D8 00000000 */ nop -.L800515DC: -/* 0521DC 800515DC 24010002 */ li $at, 2 -/* 0521E0 800515E0 1521001A */ bne $t1, $at, .L8005164C -/* 0521E4 800515E4 24040008 */ li $a0, 8 -/* 0521E8 800515E8 C612002C */ lwc1 $f18, 0x2c($s0) -/* 0521EC 800515EC 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 0521F0 800515F0 44814800 */ mtc1 $at, $f9 -/* 0521F4 800515F4 44804000 */ mtc1 $zero, $f8 -/* 0521F8 800515F8 460092A1 */ cvt.d.s $f10, $f18 -/* 0521FC 800515FC 4628503C */ c.lt.d $f10, $f8 -/* 052200 80051600 00000000 */ nop -/* 052204 80051604 45000011 */ bc1f .L8005164C -/* 052208 80051608 24040008 */ li $a0, 8 -/* 05220C 8005160C 820E01D8 */ lb $t6, 0x1d8($s0) -/* 052210 80051610 00002825 */ move $a1, $zero -/* 052214 80051614 15C0000D */ bnez $t6, .L8005164C -/* 052218 80051618 24040008 */ li $a0, 8 -/* 05221C 8005161C 86040000 */ lh $a0, ($s0) -/* 052220 80051620 E7B00040 */ swc1 $f16, 0x40($sp) -/* 052224 80051624 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052228 80051628 AFA90064 */ sw $t1, 0x64($sp) -/* 05222C 8005162C 0C01C8D2 */ jal func_80072348 -/* 052230 80051630 A3A80057 */ sb $t0, 0x57($sp) -/* 052234 80051634 83A80057 */ lb $t0, 0x57($sp) -/* 052238 80051638 8FA90064 */ lw $t1, 0x64($sp) -/* 05223C 8005163C C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052240 80051640 C7B00040 */ lwc1 $f16, 0x40($sp) -/* 052244 80051644 00000000 */ nop -/* 052248 80051648 24040008 */ li $a0, 8 -.L8005164C: -/* 05224C 8005164C A3A80057 */ sb $t0, 0x57($sp) -/* 052250 80051650 AFA90064 */ sw $t1, 0x64($sp) -/* 052254 80051654 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052258 80051658 0C0078A7 */ jal get_misc_asset -/* 05225C 8005165C E7B00040 */ swc1 $f16, 0x40($sp) -/* 052260 80051660 3C0F8012 */ lui $t7, %hi(gCurrentPlayerIndex) # $t7, 0x8012 -/* 052264 80051664 8DEFD55C */ lw $t7, %lo(gCurrentPlayerIndex)($t7) -/* 052268 80051668 2403FFFF */ li $v1, -1 -/* 05226C 8005166C 83A80057 */ lb $t0, 0x57($sp) -/* 052270 80051670 8FA90064 */ lw $t1, 0x64($sp) -/* 052274 80051674 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052278 80051678 C7B00040 */ lwc1 $f16, 0x40($sp) -/* 05227C 8005167C 106F0028 */ beq $v1, $t7, .L80051720 -/* 052280 80051680 00000000 */ nop -/* 052284 80051684 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052288 80051688 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 05228C 8005168C 44812800 */ mtc1 $at, $f5 -/* 052290 80051690 44802000 */ mtc1 $zero, $f4 -/* 052294 80051694 460061A1 */ cvt.d.s $f6, $f12 -/* 052298 80051698 4626203C */ c.lt.d $f4, $f6 -/* 05229C 8005169C 00000000 */ nop -/* 0522A0 800516A0 4501001F */ bc1t .L80051720 -/* 0522A4 800516A4 00000000 */ nop -/* 0522A8 800516A8 821801E6 */ lb $t8, 0x1e6($s0) -/* 0522AC 800516AC 00000000 */ nop -/* 0522B0 800516B0 1700001B */ bnez $t8, .L80051720 -/* 0522B4 800516B4 00000000 */ nop -/* 0522B8 800516B8 820A01D8 */ lb $t2, 0x1d8($s0) -/* 0522BC 800516BC 3C0B8012 */ lui $t3, %hi(gCurrentStickX) # $t3, 0x8012 -/* 0522C0 800516C0 15400017 */ bnez $t2, .L80051720 -/* 0522C4 800516C4 00000000 */ nop -/* 0522C8 800516C8 8D6BD534 */ lw $t3, %lo(gCurrentStickX)($t3) -/* 0522CC 800516CC 82190003 */ lb $t9, 3($s0) -/* 0522D0 800516D0 448B9000 */ mtc1 $t3, $f18 -/* 0522D4 800516D4 00196080 */ sll $t4, $t9, 2 -/* 0522D8 800516D8 468092A0 */ cvt.s.w $f10, $f18 -/* 0522DC 800516DC 004C6821 */ addu $t5, $v0, $t4 -/* 0522E0 800516E0 C5A40000 */ lwc1 $f4, ($t5) -/* 0522E4 800516E4 460A6202 */ mul.s $f8, $f12, $f10 -/* 0522E8 800516E8 C6120030 */ lwc1 $f18, 0x30($s0) -/* 0522EC 800516EC 860E0000 */ lh $t6, ($s0) -/* 0522F0 800516F0 3C01800E */ lui $at, %hi(D_800E6668 + 4) # $at, 0x800e -/* 0522F4 800516F4 46044183 */ div.s $f6, $f8, $f4 -/* 0522F8 800516F8 46069280 */ add.s $f10, $f18, $f6 -/* 0522FC 800516FC 146E0008 */ bne $v1, $t6, .L80051720 -/* 052300 80051700 E60A0030 */ swc1 $f10, 0x30($s0) -/* 052304 80051704 C6080030 */ lwc1 $f8, 0x30($s0) -/* 052308 80051708 C4336668 */ lwc1 $f19, %lo(D_800E6668)($at) -/* 05230C 8005170C C432666C */ lwc1 $f18, %lo(D_800E6668 + 4)($at) -/* 052310 80051710 46004121 */ cvt.d.s $f4, $f8 -/* 052314 80051714 46322182 */ mul.d $f6, $f4, $f18 -/* 052318 80051718 462032A0 */ cvt.s.d $f10, $f6 -/* 05231C 8005171C E60A0030 */ swc1 $f10, 0x30($s0) -.L80051720: -/* 052320 80051720 C608002C */ lwc1 $f8, 0x2c($s0) -/* 052324 80051724 3C01C008 */ li $at, 0xC0080000 # -2.125000 -/* 052328 80051728 44812800 */ mtc1 $at, $f5 -/* 05232C 8005172C 44802000 */ mtc1 $zero, $f4 -/* 052330 80051730 460040A1 */ cvt.d.s $f2, $f8 -/* 052334 80051734 4622203C */ c.lt.d $f4, $f2 -/* 052338 80051738 00000000 */ nop -/* 05233C 8005173C 4500002D */ bc1f .L800517F4 -/* 052340 80051740 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 052344 80051744 44819800 */ mtc1 $at, $f19 -/* 052348 80051748 44809000 */ mtc1 $zero, $f18 -/* 05234C 8005174C 44804800 */ mtc1 $zero, $f9 -/* 052350 80051750 46321180 */ add.d $f6, $f2, $f18 -/* 052354 80051754 44804000 */ mtc1 $zero, $f8 -/* 052358 80051758 46203287 */ neg.d $f10, $f6 -/* 05235C 8005175C 46205020 */ cvt.s.d $f0, $f10 -/* 052360 80051760 3C0F8012 */ lui $t7, %hi(gCurrentCarSteerVel) # $t7, 0x8012 -/* 052364 80051764 46000321 */ cvt.d.s $f12, $f0 -/* 052368 80051768 4628603C */ c.lt.d $f12, $f8 -/* 05236C 8005176C 00000000 */ nop -/* 052370 80051770 45000004 */ bc1f .L80051784 -/* 052374 80051774 00000000 */ nop -/* 052378 80051778 44800000 */ mtc1 $zero, $f0 -/* 05237C 8005177C 00000000 */ nop -/* 052380 80051780 46000321 */ cvt.d.s $f12, $f0 -.L80051784: -/* 052384 80051784 8DEFD554 */ lw $t7, %lo(gCurrentCarSteerVel)($t7) -/* 052388 80051788 44804000 */ mtc1 $zero, $f8 -/* 05238C 8005178C 448F2000 */ mtc1 $t7, $f4 -/* 052390 80051790 00000000 */ nop -/* 052394 80051794 468024A0 */ cvt.s.w $f18, $f4 -/* 052398 80051798 46009182 */ mul.s $f6, $f18, $f0 -/* 05239C 8005179C 4458F800 */ cfc1 $t8, $31 -/* 0523A0 800517A0 00000000 */ nop -/* 0523A4 800517A4 37010003 */ ori $at, $t8, 3 -/* 0523A8 800517A8 38210002 */ xori $at, $at, 2 -/* 0523AC 800517AC 44C1F800 */ ctc1 $at, $31 -/* 0523B0 800517B0 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 -/* 0523B4 800517B4 460032A4 */ cvt.w.s $f10, $f6 -/* 0523B8 800517B8 440A5000 */ mfc1 $t2, $f10 -/* 0523BC 800517BC 44D8F800 */ ctc1 $t8, $31 -/* 0523C0 800517C0 AC2AD554 */ sw $t2, %lo(gCurrentCarSteerVel)($at) -/* 0523C4 800517C4 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 0523C8 800517C8 44814800 */ mtc1 $at, $f9 -/* 0523CC 800517CC 3C01800E */ lui $at, %hi(D_800E6670 + 4) # $at, 0x800e -/* 0523D0 800517D0 C4336670 */ lwc1 $f19, %lo(D_800E6670)($at) -/* 0523D4 800517D4 C4326674 */ lwc1 $f18, %lo(D_800E6670 + 4)($at) -/* 0523D8 800517D8 462C4101 */ sub.d $f4, $f8, $f12 -/* 0523DC 800517DC 46322182 */ mul.d $f6, $f4, $f18 -/* 0523E0 800517E0 00000000 */ nop -/* 0523E4 800517E4 46008282 */ mul.s $f10, $f16, $f0 -/* 0523E8 800517E8 46005221 */ cvt.d.s $f8, $f10 -/* 0523EC 800517EC 46283100 */ add.d $f4, $f6, $f8 -/* 0523F0 800517F0 46202420 */ cvt.s.d $f16, $f4 -.L800517F4: -/* 0523F4 800517F4 C6120030 */ lwc1 $f18, 0x30($s0) -/* 0523F8 800517F8 860401A4 */ lh $a0, 0x1a4($s0) -/* 0523FC 800517FC 46109282 */ mul.s $f10, $f18, $f16 -/* 052400 80051800 E60A0030 */ swc1 $f10, 0x30($s0) -/* 052404 80051804 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052408 80051808 AFA90064 */ sw $t1, 0x64($sp) -/* 05240C 8005180C 0C01C1FE */ jal coss_f -/* 052410 80051810 A3A80057 */ sb $t0, 0x57($sp) -/* 052414 80051814 44803000 */ mtc1 $zero, $f6 -/* 052418 80051818 83A80057 */ lb $t0, 0x57($sp) -/* 05241C 8005181C 4606003C */ c.lt.s $f0, $f6 -/* 052420 80051820 8FA90064 */ lw $t1, 0x64($sp) -/* 052424 80051824 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052428 80051828 45000002 */ bc1f .L80051834 -/* 05242C 8005182C 46000086 */ mov.s $f2, $f0 -/* 052430 80051830 46000087 */ neg.s $f2, $f0 -.L80051834: -/* 052434 80051834 C6080030 */ lwc1 $f8, 0x30($s0) -/* 052438 80051838 3C018012 */ lui $at, %hi(gCurrentSurfaceType) # $at, 0x8012 -/* 05243C 8005183C 46024102 */ mul.s $f4, $f8, $f2 -/* 052440 80051840 E6040030 */ swc1 $f4, 0x30($s0) -/* 052444 80051844 11000013 */ beqz $t0, .L80051894 -/* 052448 80051848 A029D581 */ sb $t1, %lo(gCurrentSurfaceType)($at) -/* 05244C 8005184C 24040020 */ li $a0, 32 -/* 052450 80051850 A3A80057 */ sb $t0, 0x57($sp) -/* 052454 80051854 AFA90064 */ sw $t1, 0x64($sp) -/* 052458 80051858 0C0078A7 */ jal get_misc_asset -/* 05245C 8005185C E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052460 80051860 83A80057 */ lb $t0, 0x57($sp) -/* 052464 80051864 C7B20034 */ lwc1 $f18, 0x34($sp) -/* 052468 80051868 00085880 */ sll $t3, $t0, 2 -/* 05246C 8005186C 004BC821 */ addu $t9, $v0, $t3 -/* 052470 80051870 C72A0000 */ lwc1 $f10, ($t9) -/* 052474 80051874 44804000 */ mtc1 $zero, $f8 -/* 052478 80051878 460A9182 */ mul.s $f6, $f18, $f10 -/* 05247C 8005187C 8FA90064 */ lw $t1, 0x64($sp) -/* 052480 80051880 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052484 80051884 E7A60034 */ swc1 $f6, 0x34($sp) -/* 052488 80051888 A2000175 */ sb $zero, 0x175($s0) -/* 05248C 8005188C 1000000F */ b .L800518CC -/* 052490 80051890 E6080030 */ swc1 $f8, 0x30($s0) -.L80051894: -/* 052494 80051894 2401000A */ li $at, 10 -/* 052498 80051898 1521000C */ bne $t1, $at, .L800518CC -/* 05249C 8005189C 00000000 */ nop -/* 0524A0 800518A0 920C01EF */ lbu $t4, 0x1ef($s0) -/* 0524A4 800518A4 24050138 */ li $a1, 312 -/* 0524A8 800518A8 358D0004 */ ori $t5, $t4, 4 -/* 0524AC 800518AC A20D01EF */ sb $t5, 0x1ef($s0) -/* 0524B0 800518B0 8FA40078 */ lw $a0, 0x78($sp) -/* 0524B4 800518B4 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 0524B8 800518B8 0C015C12 */ jal racer_play_sound -/* 0524BC 800518BC AFA90064 */ sw $t1, 0x64($sp) -/* 0524C0 800518C0 8FA90064 */ lw $t1, 0x64($sp) -/* 0524C4 800518C4 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 0524C8 800518C8 00000000 */ nop -.L800518CC: -/* 0524CC 800518CC 820E01D3 */ lb $t6, 0x1d3($s0) -/* 0524D0 800518D0 00000000 */ nop -/* 0524D4 800518D4 15C0001D */ bnez $t6, .L8005194C -/* 0524D8 800518D8 24010003 */ li $at, 3 -/* 0524DC 800518DC 1521001B */ bne $t1, $at, .L8005194C -/* 0524E0 800518E0 2404002D */ li $a0, 45 -/* 0524E4 800518E4 AFA90064 */ sw $t1, 0x64($sp) -/* 0524E8 800518E8 0C00322D */ jal normalise_time -/* 0524EC 800518EC E7AE0044 */ swc1 $f14, 0x44($sp) -/* 0524F0 800518F0 240F0002 */ li $t7, 2 -/* 0524F4 800518F4 A20201D3 */ sb $v0, 0x1d3($s0) -/* 0524F8 800518F8 A20F0203 */ sb $t7, 0x203($s0) -/* 0524FC 800518FC 8FA40078 */ lw $a0, 0x78($sp) -/* 052500 80051900 0C015C12 */ jal racer_play_sound -/* 052504 80051904 24050107 */ li $a1, 263 -/* 052508 80051908 8FA40078 */ lw $a0, 0x78($sp) -/* 05250C 8005190C 24050162 */ li $a1, 354 -/* 052510 80051910 24060008 */ li $a2, 8 -/* 052514 80051914 0C015C2E */ jal play_random_character_voice -/* 052518 80051918 24070082 */ li $a3, 130 -/* 05251C 8005191C 821801D8 */ lb $t8, 0x1d8($s0) -/* 052520 80051920 8FA90064 */ lw $t1, 0x64($sp) -/* 052524 80051924 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052528 80051928 17000008 */ bnez $t8, .L8005194C -/* 05252C 8005192C 24050008 */ li $a1, 8 -/* 052530 80051930 86040000 */ lh $a0, ($s0) -/* 052534 80051934 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052538 80051938 0C01C8D2 */ jal func_80072348 -/* 05253C 8005193C AFA90064 */ sw $t1, 0x64($sp) -/* 052540 80051940 8FA90064 */ lw $t1, 0x64($sp) -/* 052544 80051944 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052548 80051948 00000000 */ nop -.L8005194C: -/* 05254C 8005194C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 052550 80051950 44819000 */ mtc1 $at, $f18 -/* 052554 80051954 C7A40050 */ lwc1 $f4, 0x50($sp) -/* 052558 80051958 00000000 */ nop -/* 05255C 8005195C 4612203C */ c.lt.s $f4, $f18 -/* 052560 80051960 00000000 */ nop -/* 052564 80051964 4500000F */ bc1f .L800519A4 -/* 052568 80051968 3C0A8012 */ lui $t2, %hi(gCurrentRacerInput) # $t2, 0x8012 -/* 05256C 8005196C 8D4AD528 */ lw $t2, %lo(gCurrentRacerInput)($t2) -/* 052570 80051970 00000000 */ nop -/* 052574 80051974 314B8000 */ andi $t3, $t2, 0x8000 -/* 052578 80051978 1560000A */ bnez $t3, .L800519A4 -/* 05257C 8005197C 00000000 */ nop -/* 052580 80051980 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052584 80051984 3C014100 */ li $at, 0x41000000 # 8.000000 -/* 052588 80051988 460E6282 */ mul.s $f10, $f12, $f14 -/* 05258C 8005198C 44813000 */ mtc1 $at, $f6 -/* 052590 80051990 00000000 */ nop -/* 052594 80051994 46065202 */ mul.s $f8, $f10, $f6 -/* 052598 80051998 46086101 */ sub.s $f4, $f12, $f8 -/* 05259C 8005199C 10000006 */ b .L800519B8 -/* 0525A0 800519A0 E604002C */ swc1 $f4, 0x2c($s0) -.L800519A4: -/* 0525A4 800519A4 C7AA0050 */ lwc1 $f10, 0x50($sp) -/* 0525A8 800519A8 C612002C */ lwc1 $f18, 0x2c($s0) -/* 0525AC 800519AC 460E5182 */ mul.s $f6, $f10, $f14 -/* 0525B0 800519B0 46069201 */ sub.s $f8, $f18, $f6 -/* 0525B4 800519B4 E608002C */ swc1 $f8, 0x2c($s0) -.L800519B8: -/* 0525B8 800519B8 8FB90060 */ lw $t9, 0x60($sp) -/* 0525BC 800519BC 00000000 */ nop -/* 0525C0 800519C0 13200008 */ beqz $t9, .L800519E4 -/* 0525C4 800519C4 00000000 */ nop -/* 0525C8 800519C8 920201EE */ lbu $v0, 0x1ee($s0) -/* 0525CC 800519CC 00000000 */ nop -/* 0525D0 800519D0 28410010 */ slti $at, $v0, 0x10 -/* 0525D4 800519D4 10200004 */ beqz $at, .L800519E8 -/* 0525D8 800519D8 244C0001 */ addiu $t4, $v0, 1 -/* 0525DC 800519DC 10000002 */ b .L800519E8 -/* 0525E0 800519E0 A20C01EE */ sb $t4, 0x1ee($s0) -.L800519E4: -/* 0525E4 800519E4 A20001EE */ sb $zero, 0x1ee($s0) -.L800519E8: -/* 0525E8 800519E8 0C019884 */ jal get_viewport_count -/* 0525EC 800519EC AFA90064 */ sw $t1, 0x64($sp) -/* 0525F0 800519F0 8FA90064 */ lw $t1, 0x64($sp) -/* 0525F4 800519F4 28410002 */ slti $at, $v0, 2 -/* 0525F8 800519F8 1020004B */ beqz $at, .L80051B28 -/* 0525FC 800519FC 0009C080 */ sll $t8, $t1, 2 -/* 052600 80051A00 8FAD0060 */ lw $t5, 0x60($sp) -/* 052604 80051A04 8FAE0058 */ lw $t6, 0x58($sp) -/* 052608 80051A08 11A00009 */ beqz $t5, .L80051A30 -/* 05260C 80051A0C 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 052610 80051A10 C604002C */ lwc1 $f4, 0x2c($s0) -/* 052614 80051A14 44819800 */ mtc1 $at, $f19 -/* 052618 80051A18 44809000 */ mtc1 $zero, $f18 -/* 05261C 80051A1C 460022A1 */ cvt.d.s $f10, $f4 -/* 052620 80051A20 4632503C */ c.lt.d $f10, $f18 -/* 052624 80051A24 00000000 */ nop -/* 052628 80051A28 45010007 */ bc1t .L80051A48 -/* 05262C 80051A2C 00000000 */ nop -.L80051A30: -/* 052630 80051A30 15C00005 */ bnez $t6, .L80051A48 -/* 052634 80051A34 00000000 */ nop -/* 052638 80051A38 820F01FB */ lb $t7, 0x1fb($s0) -/* 05263C 80051A3C 00000000 */ nop -/* 052640 80051A40 11E00019 */ beqz $t7, .L80051AA8 -/* 052644 80051A44 00000000 */ nop -.L80051A48: -/* 052648 80051A48 920201DE */ lbu $v0, 0x1de($s0) -/* 05264C 80051A4C 8FA60078 */ lw $a2, 0x78($sp) -/* 052650 80051A50 284100FF */ slti $at, $v0, 0xff -/* 052654 80051A54 10200008 */ beqz $at, .L80051A78 -/* 052658 80051A58 00025080 */ sll $t2, $v0, 2 -/* 05265C 80051A5C 3C0B800E */ lui $t3, %hi(gSurfaceFlagTable) # $t3, 0x800e -/* 052660 80051A60 016A5821 */ addu $t3, $t3, $t2 -/* 052664 80051A64 8D6BCCF4 */ lw $t3, %lo(gSurfaceFlagTable)($t3) -/* 052668 80051A68 8CD80074 */ lw $t8, 0x74($a2) -/* 05266C 80051A6C 00000000 */ nop -/* 052670 80051A70 030BC825 */ or $t9, $t8, $t3 -/* 052674 80051A74 ACD90074 */ sw $t9, 0x74($a2) -.L80051A78: -/* 052678 80051A78 920201DF */ lbu $v0, 0x1df($s0) -/* 05267C 80051A7C 8FA60078 */ lw $a2, 0x78($sp) -/* 052680 80051A80 284100FF */ slti $at, $v0, 0xff -/* 052684 80051A84 10200008 */ beqz $at, .L80051AA8 -/* 052688 80051A88 00026880 */ sll $t5, $v0, 2 -/* 05268C 80051A8C 3C0E800E */ lui $t6, %hi(gSurfaceFlagTable) # $t6, 0x800e -/* 052690 80051A90 01CD7021 */ addu $t6, $t6, $t5 -/* 052694 80051A94 8DCECCF4 */ lw $t6, %lo(gSurfaceFlagTable)($t6) -/* 052698 80051A98 8CCC0074 */ lw $t4, 0x74($a2) -/* 05269C 80051A9C 000E7840 */ sll $t7, $t6, 1 -/* 0526A0 80051AA0 018F5025 */ or $t2, $t4, $t7 -/* 0526A4 80051AA4 ACCA0074 */ sw $t2, 0x74($a2) -.L80051AA8: -/* 0526A8 80051AA8 C606002C */ lwc1 $f6, 0x2c($s0) -/* 0526AC 80051AAC 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 0526B0 80051AB0 44812800 */ mtc1 $at, $f5 -/* 0526B4 80051AB4 44802000 */ mtc1 $zero, $f4 -/* 0526B8 80051AB8 46003221 */ cvt.d.s $f8, $f6 -/* 0526BC 80051ABC 4624403C */ c.lt.d $f8, $f4 -/* 0526C0 80051AC0 8FA60078 */ lw $a2, 0x78($sp) -/* 0526C4 80051AC4 45000018 */ bc1f .L80051B28 -/* 0526C8 80051AC8 0009C080 */ sll $t8, $t1, 2 -/* 0526CC 80051ACC 920201DE */ lbu $v0, 0x1de($s0) -/* 0526D0 80051AD0 3C19800E */ lui $t9, %hi(gSurfaceFlagTable4P) # $t9, 0x800e -/* 0526D4 80051AD4 284100FF */ slti $at, $v0, 0xff -/* 0526D8 80051AD8 10200007 */ beqz $at, .L80051AF8 -/* 0526DC 80051ADC 00025880 */ sll $t3, $v0, 2 -/* 0526E0 80051AE0 032BC821 */ addu $t9, $t9, $t3 -/* 0526E4 80051AE4 8F39CD40 */ lw $t9, %lo(gSurfaceFlagTable4P)($t9) -/* 0526E8 80051AE8 8CD80074 */ lw $t8, 0x74($a2) -/* 0526EC 80051AEC 00000000 */ nop -/* 0526F0 80051AF0 03196825 */ or $t5, $t8, $t9 -/* 0526F4 80051AF4 ACCD0074 */ sw $t5, 0x74($a2) -.L80051AF8: -/* 0526F8 80051AF8 920201DF */ lbu $v0, 0x1df($s0) -/* 0526FC 80051AFC 3C0F800E */ lui $t7, %hi(gSurfaceFlagTable4P) # $t7, 0x800e -/* 052700 80051B00 284100FF */ slti $at, $v0, 0xff -/* 052704 80051B04 10200007 */ beqz $at, .L80051B24 -/* 052708 80051B08 00026080 */ sll $t4, $v0, 2 -/* 05270C 80051B0C 01EC7821 */ addu $t7, $t7, $t4 -/* 052710 80051B10 8DEFCD40 */ lw $t7, %lo(gSurfaceFlagTable4P)($t7) -/* 052714 80051B14 8CCE0074 */ lw $t6, 0x74($a2) -/* 052718 80051B18 000F5040 */ sll $t2, $t7, 1 -/* 05271C 80051B1C 01CA5825 */ or $t3, $t6, $t2 -/* 052720 80051B20 ACCB0074 */ sw $t3, 0x74($a2) -.L80051B24: -/* 052724 80051B24 0009C080 */ sll $t8, $t1, 2 -.L80051B28: -/* 052728 80051B28 3C09800E */ lui $t1, %hi(gSurfaceSoundTable) # $t1, 0x800e -/* 05272C 80051B2C 8E020018 */ lw $v0, 0x18($s0) -/* 052730 80051B30 01384821 */ addu $t1, $t1, $t8 -/* 052734 80051B34 8FA60078 */ lw $a2, 0x78($sp) -/* 052738 80051B38 8D29CC80 */ lw $t1, %lo(gSurfaceSoundTable)($t1) -/* 05273C 80051B3C 14400011 */ bnez $v0, .L80051B84 -/* 052740 80051B40 00000000 */ nop -/* 052744 80051B44 1120000F */ beqz $t1, .L80051B84 -/* 052748 80051B48 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 05274C 80051B4C C60A002C */ lwc1 $f10, 0x2c($s0) -/* 052750 80051B50 44813800 */ mtc1 $at, $f7 -/* 052754 80051B54 44803000 */ mtc1 $zero, $f6 -/* 052758 80051B58 460054A1 */ cvt.d.s $f18, $f10 -/* 05275C 80051B5C 4626903C */ c.lt.d $f18, $f6 -/* 052760 80051B60 3124FFFF */ andi $a0, $t1, 0xffff -/* 052764 80051B64 45000007 */ bc1f .L80051B84 -/* 052768 80051B68 26050018 */ addiu $a1, $s0, 0x18 -/* 05276C 80051B6C 0C000741 */ jal play_sound_global -/* 052770 80051B70 AFA90064 */ sw $t1, 0x64($sp) -/* 052774 80051B74 8FA90064 */ lw $t1, 0x64($sp) -/* 052778 80051B78 8E020018 */ lw $v0, 0x18($s0) -/* 05277C 80051B7C 8FA60078 */ lw $a2, 0x78($sp) -/* 052780 80051B80 00000000 */ nop -.L80051B84: -/* 052784 80051B84 10400010 */ beqz $v0, .L80051BC8 -/* 052788 80051B88 00000000 */ nop -/* 05278C 80051B8C 11200008 */ beqz $t1, .L80051BB0 -/* 052790 80051B90 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 052794 80051B94 C604002C */ lwc1 $f4, 0x2c($s0) -/* 052798 80051B98 44814800 */ mtc1 $at, $f9 -/* 05279C 80051B9C 44804000 */ mtc1 $zero, $f8 -/* 0527A0 80051BA0 460022A1 */ cvt.d.s $f10, $f4 -/* 0527A4 80051BA4 462A403C */ c.lt.d $f8, $f10 -/* 0527A8 80051BA8 00000000 */ nop -/* 0527AC 80051BAC 45000006 */ bc1f .L80051BC8 -.L80051BB0: -/* 0527B0 80051BB0 00402025 */ move $a0, $v0 -/* 0527B4 80051BB4 0C001223 */ jal func_8000488C -/* 0527B8 80051BB8 AFA90064 */ sw $t1, 0x64($sp) -/* 0527BC 80051BBC 8FA90064 */ lw $t1, 0x64($sp) -/* 0527C0 80051BC0 8FA60078 */ lw $a2, 0x78($sp) -/* 0527C4 80051BC4 00000000 */ nop -.L80051BC8: -/* 0527C8 80051BC8 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 0527CC 80051BCC 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 0527D0 80051BD0 44813800 */ mtc1 $at, $f7 -/* 0527D4 80051BD4 44803000 */ mtc1 $zero, $f6 -/* 0527D8 80051BD8 460064A1 */ cvt.d.s $f18, $f12 -/* 0527DC 80051BDC 4626903C */ c.lt.d $f18, $f6 -/* 0527E0 80051BE0 3C0E8012 */ lui $t6, %hi(gCurrentRacerMiscAssetPtr) # $t6, 0x8012 -/* 0527E4 80051BE4 45000020 */ bc1f .L80051C68 -/* 0527E8 80051BE8 00000000 */ nop -/* 0527EC 80051BEC 8FB90068 */ lw $t9, 0x68($sp) -/* 0527F0 80051BF0 00000000 */ nop -/* 0527F4 80051BF4 2B210004 */ slti $at, $t9, 4 -/* 0527F8 80051BF8 1420001B */ bnez $at, .L80051C68 -/* 0527FC 80051BFC 00000000 */ nop -/* 052800 80051C00 820D01E7 */ lb $t5, 0x1e7($s0) -/* 052804 80051C04 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 052808 80051C08 31AC0001 */ andi $t4, $t5, 1 -/* 05280C 80051C0C 448C2000 */ mtc1 $t4, $f4 -/* 052810 80051C10 44819800 */ mtc1 $at, $f19 -/* 052814 80051C14 46802220 */ cvt.s.w $f8, $f4 -/* 052818 80051C18 44809000 */ mtc1 $zero, $f18 -/* 05281C 80051C1C C6040078 */ lwc1 $f4, 0x78($s0) -/* 052820 80051C20 460042A1 */ cvt.d.s $f10, $f8 -/* 052824 80051C24 46325182 */ mul.d $f6, $f10, $f18 -/* 052828 80051C28 C60800A0 */ lwc1 $f8, 0xa0($s0) -/* 05282C 80051C2C C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052830 80051C30 46203020 */ cvt.s.d $f0, $f6 -/* 052834 80051C34 C606007C */ lwc1 $f6, 0x7c($s0) -/* 052838 80051C38 46004282 */ mul.s $f10, $f8, $f0 -/* 05283C 80051C3C C60800A4 */ lwc1 $f8, 0xa4($s0) -/* 052840 80051C40 460A2481 */ sub.s $f18, $f4, $f10 -/* 052844 80051C44 46004102 */ mul.s $f4, $f8, $f0 -/* 052848 80051C48 C608009C */ lwc1 $f8, 0x9c($s0) -/* 05284C 80051C4C E6120078 */ swc1 $f18, 0x78($s0) -/* 052850 80051C50 C6120080 */ lwc1 $f18, 0x80($s0) -/* 052854 80051C54 46043281 */ sub.s $f10, $f6, $f4 -/* 052858 80051C58 46004182 */ mul.s $f6, $f8, $f0 -/* 05285C 80051C5C E60A007C */ swc1 $f10, 0x7c($s0) -/* 052860 80051C60 46069101 */ sub.s $f4, $f18, $f6 -/* 052864 80051C64 E6040080 */ swc1 $f4, 0x80($s0) -.L80051C68: -/* 052868 80051C68 44805000 */ mtc1 $zero, $f10 -/* 05286C 80051C6C 3C014140 */ li $at, 0x41400000 # 12.000000 -/* 052870 80051C70 460A603C */ c.lt.s $f12, $f10 -/* 052874 80051C74 44810000 */ mtc1 $at, $f0 -/* 052878 80051C78 45000002 */ bc1f .L80051C84 -/* 05287C 80051C7C 46006386 */ mov.s $f14, $f12 -/* 052880 80051C80 46007387 */ neg.s $f14, $f14 -.L80051C84: -/* 052884 80051C84 460E003C */ c.lt.s $f0, $f14 -/* 052888 80051C88 00000000 */ nop -/* 05288C 80051C8C 45000002 */ bc1f .L80051C98 -/* 052890 80051C90 00000000 */ nop -/* 052894 80051C94 46000386 */ mov.s $f14, $f0 -.L80051C98: -/* 052898 80051C98 444FF800 */ cfc1 $t7, $31 -/* 05289C 80051C9C 8DCED564 */ lw $t6, %lo(gCurrentRacerMiscAssetPtr)($t6) -/* 0528A0 80051CA0 35E10003 */ ori $at, $t7, 3 -/* 0528A4 80051CA4 38210002 */ xori $at, $at, 2 -/* 0528A8 80051CA8 44C1F800 */ ctc1 $at, $31 -/* 0528AC 80051CAC 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 0528B0 80051CB0 46007224 */ cvt.w.s $f8, $f14 -/* 0528B4 80051CB4 44812800 */ mtc1 $at, $f5 -/* 0528B8 80051CB8 44024000 */ mfc1 $v0, $f8 -/* 0528BC 80051CBC 44CFF800 */ ctc1 $t7, $31 -/* 0528C0 80051CC0 44829000 */ mtc1 $v0, $f18 -/* 0528C4 80051CC4 00025080 */ sll $t2, $v0, 2 -/* 0528C8 80051CC8 468091A0 */ cvt.s.w $f6, $f18 -/* 0528CC 80051CCC 44802000 */ mtc1 $zero, $f4 -/* 0528D0 80051CD0 01CA1821 */ addu $v1, $t6, $t2 -/* 0528D4 80051CD4 46067001 */ sub.s $f0, $f14, $f6 -/* 0528D8 80051CD8 C4720000 */ lwc1 $f18, ($v1) -/* 0528DC 80051CDC 460002A1 */ cvt.d.s $f10, $f0 -/* 0528E0 80051CE0 462A2201 */ sub.d $f8, $f4, $f10 -/* 0528E4 80051CE4 C46A0004 */ lwc1 $f10, 4($v1) -/* 0528E8 80051CE8 460091A1 */ cvt.d.s $f6, $f18 -/* 0528EC 80051CEC 46283102 */ mul.d $f4, $f6, $f8 -/* 0528F0 80051CF0 3C01800E */ lui $at, %hi(D_800E6678 + 4) # $at, 0x800e -/* 0528F4 80051CF4 820B01D3 */ lb $t3, 0x1d3($s0) -/* 0528F8 80051CF8 46005482 */ mul.s $f18, $f10, $f0 -/* 0528FC 80051CFC C4336678 */ lwc1 $f19, %lo(D_800E6678)($at) -/* 052900 80051D00 460091A1 */ cvt.d.s $f6, $f18 -/* 052904 80051D04 46262200 */ add.d $f8, $f4, $f6 -/* 052908 80051D08 C432667C */ lwc1 $f18, %lo(D_800E6678 + 4)($at) -/* 05290C 80051D0C 462043A0 */ cvt.s.d $f14, $f8 -/* 052910 80051D10 C7A60034 */ lwc1 $f6, 0x34($sp) -/* 052914 80051D14 460072A1 */ cvt.d.s $f10, $f14 -/* 052918 80051D18 46325102 */ mul.d $f4, $f10, $f18 -/* 05291C 80051D1C 462023A0 */ cvt.s.d $f14, $f4 -/* 052920 80051D20 44802000 */ mtc1 $zero, $f4 -/* 052924 80051D24 46067382 */ mul.s $f14, $f14, $f6 -/* 052928 80051D28 19600016 */ blez $t3, .L80051D84 -/* 05292C 80051D2C 3C188012 */ lui $t8, %hi(gRaceStartTimer) # $t8, 0x8012 -/* 052930 80051D30 8F18D540 */ lw $t8, %lo(gRaceStartTimer)($t8) -/* 052934 80051D34 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 052938 80051D38 17000010 */ bnez $t8, .L80051D7C -/* 05293C 80051D3C 00000000 */ nop -/* 052940 80051D40 44805800 */ mtc1 $zero, $f11 -/* 052944 80051D44 44805000 */ mtc1 $zero, $f10 -/* 052948 80051D48 460074A1 */ cvt.d.s $f18, $f14 -/* 05294C 80051D4C 44814000 */ mtc1 $at, $f8 -/* 052950 80051D50 46325032 */ c.eq.d $f10, $f18 -/* 052954 80051D54 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 052958 80051D58 45010003 */ bc1t .L80051D68 -/* 05295C 80051D5C E60800B4 */ swc1 $f8, 0xb4($s0) -/* 052960 80051D60 44817000 */ mtc1 $at, $f14 -/* 052964 80051D64 00000000 */ nop -.L80051D68: -/* 052968 80051D68 821901D3 */ lb $t9, 0x1d3($s0) -/* 05296C 80051D6C 8FAD0080 */ lw $t5, 0x80($sp) -/* 052970 80051D70 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052974 80051D74 032D6023 */ subu $t4, $t9, $t5 -/* 052978 80051D78 A20C01D3 */ sb $t4, 0x1d3($s0) -.L80051D7C: -/* 05297C 80051D7C 10000004 */ b .L80051D90 -/* 052980 80051D80 460060A1 */ cvt.d.s $f2, $f12 -.L80051D84: -/* 052984 80051D84 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052988 80051D88 A20001D3 */ sb $zero, 0x1d3($s0) -/* 05298C 80051D8C 460060A1 */ cvt.d.s $f2, $f12 -.L80051D90: -/* 052990 80051D90 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 052994 80051D94 44812800 */ mtc1 $at, $f5 -/* 052998 80051D98 00000000 */ nop -/* 05299C 80051D9C 4622203C */ c.lt.d $f4, $f2 -/* 0529A0 80051DA0 00000000 */ nop -/* 0529A4 80051DA4 45000039 */ bc1f .L80051E8C -/* 0529A8 80051DA8 3C014008 */ li $at, 0x40080000 # 2.125000 -/* 0529AC 80051DAC 44818800 */ mtc1 $at, $f17 -/* 0529B0 80051DB0 44808000 */ mtc1 $zero, $f16 -/* 0529B4 80051DB4 00000000 */ nop -/* 0529B8 80051DB8 4630103C */ c.lt.d $f2, $f16 -/* 0529BC 80051DBC 00000000 */ nop -/* 0529C0 80051DC0 45000032 */ bc1f .L80051E8C -/* 0529C4 80051DC4 00000000 */ nop -/* 0529C8 80051DC8 860F0000 */ lh $t7, ($s0) -/* 0529CC 80051DCC 2401FFFF */ li $at, -1 -/* 0529D0 80051DD0 15E10004 */ bne $t7, $at, .L80051DE4 -/* 0529D4 80051DD4 3C0A8012 */ lui $t2, %hi(gCurrentStickY) # $t2, 0x8012 -/* 0529D8 80051DD8 820E0214 */ lb $t6, 0x214($s0) -/* 0529DC 80051DDC 00000000 */ nop -/* 0529E0 80051DE0 11C0002A */ beqz $t6, .L80051E8C -.L80051DE4: -/* 0529E4 80051DE4 3C01800E */ lui $at, %hi(D_800E6680 + 4) # $at, 0x800e -/* 0529E8 80051DE8 C4296680 */ lwc1 $f9, %lo(D_800E6680)($at) -/* 0529EC 80051DEC C4286684 */ lwc1 $f8, %lo(D_800E6680 + 4)($at) -/* 0529F0 80051DF0 46228181 */ sub.d $f6, $f16, $f2 -/* 0529F4 80051DF4 24010004 */ li $at, 4 -/* 0529F8 80051DF8 46283282 */ mul.d $f10, $f6, $f8 -/* 0529FC 80051DFC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 052A00 80051E00 15210007 */ bne $t1, $at, .L80051E20 -/* 052A04 80051E04 46205020 */ cvt.s.d $f0, $f10 -/* 052A08 80051E08 3C013FD0 */ li $at, 0x3FD00000 # 1.625000 -/* 052A0C 80051E0C 44812800 */ mtc1 $at, $f5 -/* 052A10 80051E10 44802000 */ mtc1 $zero, $f4 -/* 052A14 80051E14 460004A1 */ cvt.d.s $f18, $f0 -/* 052A18 80051E18 46249182 */ mul.d $f6, $f18, $f4 -/* 052A1C 80051E1C 46203020 */ cvt.s.d $f0, $f6 -.L80051E20: -/* 052A20 80051E20 8D4AD538 */ lw $t2, %lo(gCurrentStickY)($t2) -/* 052A24 80051E24 00000000 */ nop -/* 052A28 80051E28 2941FFE7 */ slti $at, $t2, -0x19 -/* 052A2C 80051E2C 10200017 */ beqz $at, .L80051E8C -/* 052A30 80051E30 00000000 */ nop -/* 052A34 80051E34 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 052A38 80051E38 00000000 */ nop -/* 052A3C 80051E3C 304B8000 */ andi $t3, $v0, 0x8000 -/* 052A40 80051E40 15600012 */ bnez $t3, .L80051E8C -/* 052A44 80051E44 30584000 */ andi $t8, $v0, 0x4000 -/* 052A48 80051E48 13000010 */ beqz $t8, .L80051E8C -/* 052A4C 80051E4C 00000000 */ nop -/* 052A50 80051E50 821901D7 */ lb $t9, 0x1d7($s0) -/* 052A54 80051E54 00000000 */ nop -/* 052A58 80051E58 2B210005 */ slti $at, $t9, 5 -/* 052A5C 80051E5C 14200006 */ bnez $at, .L80051E78 -/* 052A60 80051E60 3C01800E */ lui $at, %hi(D_800E6688 + 4) # $at, 0x800e -/* 052A64 80051E64 C42B6688 */ lwc1 $f11, %lo(D_800E6688)($at) -/* 052A68 80051E68 C42A668C */ lwc1 $f10, %lo(D_800E6688 + 4)($at) -/* 052A6C 80051E6C 46000221 */ cvt.d.s $f8, $f0 -/* 052A70 80051E70 462A4482 */ mul.d $f18, $f8, $f10 -/* 052A74 80051E74 46209020 */ cvt.s.d $f0, $f18 -.L80051E78: -/* 052A78 80051E78 46006100 */ add.s $f4, $f12, $f0 -/* 052A7C 80051E7C 44803000 */ mtc1 $zero, $f6 -/* 052A80 80051E80 E604002C */ swc1 $f4, 0x2c($s0) -/* 052A84 80051E84 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052A88 80051E88 E60600B8 */ swc1 $f6, 0xb8($s0) -.L80051E8C: -/* 052A8C 80051E8C C60800B8 */ lwc1 $f8, 0xb8($s0) -/* 052A90 80051E90 3C01800E */ lui $at, %hi(D_800E6690 + 4) # $at, 0x800e -/* 052A94 80051E94 460E4282 */ mul.s $f10, $f8, $f14 -/* 052A98 80051E98 C4256690 */ lwc1 $f5, %lo(D_800E6690)($at) -/* 052A9C 80051E9C C4246694 */ lwc1 $f4, %lo(D_800E6690 + 4)($at) -/* 052AA0 80051EA0 C60800B4 */ lwc1 $f8, 0xb4($s0) -/* 052AA4 80051EA4 460054A1 */ cvt.d.s $f18, $f10 -/* 052AA8 80051EA8 46249182 */ mul.d $f6, $f18, $f4 -/* 052AAC 80051EAC 3C01800E */ lui $at, %hi(D_800E6698) # $at, 0x800e -/* 052AB0 80051EB0 46087282 */ mul.s $f10, $f14, $f8 -/* 052AB4 80051EB4 46203020 */ cvt.s.d $f0, $f6 -/* 052AB8 80051EB8 460A6481 */ sub.s $f18, $f12, $f10 -/* 052ABC 80051EBC 44805000 */ mtc1 $zero, $f10 -/* 052AC0 80051EC0 E612002C */ swc1 $f18, 0x2c($s0) -/* 052AC4 80051EC4 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052AC8 80051EC8 C424669C */ lwc1 $f4, %lo(D_800E6698 + 4)($at) -/* 052ACC 80051ECC C4256698 */ lwc1 $f5, %lo(D_800E6698)($at) -/* 052AD0 80051ED0 460060A1 */ cvt.d.s $f2, $f12 -/* 052AD4 80051ED4 4622203C */ c.lt.d $f4, $f2 -/* 052AD8 80051ED8 00000000 */ nop -/* 052ADC 80051EDC 4500000D */ bc1f .L80051F14 -/* 052AE0 80051EE0 3C01800E */ lui $at, %hi(D_800E66A0 + 4) # $at, 0x800e -/* 052AE4 80051EE4 C42766A0 */ lwc1 $f7, %lo(D_800E66A0)($at) -/* 052AE8 80051EE8 C42666A4 */ lwc1 $f6, %lo(D_800E66A0 + 4)($at) -/* 052AEC 80051EEC 00000000 */ nop -/* 052AF0 80051EF0 4626103C */ c.lt.d $f2, $f6 -/* 052AF4 80051EF4 00000000 */ nop -/* 052AF8 80051EF8 45000006 */ bc1f .L80051F14 -/* 052AFC 80051EFC 00000000 */ nop -/* 052B00 80051F00 44804000 */ mtc1 $zero, $f8 -/* 052B04 80051F04 00000000 */ nop -/* 052B08 80051F08 E608002C */ swc1 $f8, 0x2c($s0) -/* 052B0C 80051F0C C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052B10 80051F10 00000000 */ nop -.L80051F14: -/* 052B14 80051F14 460A603C */ c.lt.s $f12, $f10 -/* 052B18 80051F18 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 -/* 052B1C 80051F1C 4500000D */ bc1f .L80051F54 -/* 052B20 80051F20 00000000 */ nop -/* 052B24 80051F24 46006480 */ add.s $f18, $f12, $f0 -/* 052B28 80051F28 44802000 */ mtc1 $zero, $f4 -/* 052B2C 80051F2C E612002C */ swc1 $f18, 0x2c($s0) -/* 052B30 80051F30 C606002C */ lwc1 $f6, 0x2c($s0) -/* 052B34 80051F34 00000000 */ nop -/* 052B38 80051F38 4606203C */ c.lt.s $f4, $f6 -/* 052B3C 80051F3C 00000000 */ nop -/* 052B40 80051F40 45000010 */ bc1f .L80051F84 -/* 052B44 80051F44 00000000 */ nop -/* 052B48 80051F48 44804000 */ mtc1 $zero, $f8 -/* 052B4C 80051F4C 1000000D */ b .L80051F84 -/* 052B50 80051F50 E608002C */ swc1 $f8, 0x2c($s0) -.L80051F54: -/* 052B54 80051F54 46006281 */ sub.s $f10, $f12, $f0 -/* 052B58 80051F58 44802000 */ mtc1 $zero, $f4 -/* 052B5C 80051F5C E60A002C */ swc1 $f10, 0x2c($s0) -/* 052B60 80051F60 C612002C */ lwc1 $f18, 0x2c($s0) -/* 052B64 80051F64 00000000 */ nop -/* 052B68 80051F68 4604903C */ c.lt.s $f18, $f4 -/* 052B6C 80051F6C 00000000 */ nop -/* 052B70 80051F70 45000004 */ bc1f .L80051F84 -/* 052B74 80051F74 00000000 */ nop -/* 052B78 80051F78 44803000 */ mtc1 $zero, $f6 -/* 052B7C 80051F7C 00000000 */ nop -/* 052B80 80051F80 E606002C */ swc1 $f6, 0x2c($s0) -.L80051F84: -/* 052B84 80051F84 C42ED56C */ lwc1 $f14, %lo(gCurrentRacerWeightStat)($at) -/* 052B88 80051F88 C7AA0084 */ lwc1 $f10, 0x84($sp) -/* 052B8C 80051F8C C4C80020 */ lwc1 $f8, 0x20($a2) -/* 052B90 80051F90 460A7482 */ mul.s $f18, $f14, $f10 -/* 052B94 80051F94 3C0D8012 */ lui $t5, %hi(gDialogueCameraAngle) # $t5, 0x8012 -/* 052B98 80051F98 3C01800E */ lui $at, %hi(D_800E66A8 + 4) # $at, 0x800e -/* 052B9C 80051F9C 46124101 */ sub.s $f4, $f8, $f18 -/* 052BA0 80051FA0 E4C40020 */ swc1 $f4, 0x20($a2) -/* 052BA4 80051FA4 85ADD586 */ lh $t5, %lo(gDialogueCameraAngle)($t5) -/* 052BA8 80051FA8 00000000 */ nop -/* 052BAC 80051FAC 11A00003 */ beqz $t5, .L80051FBC -/* 052BB0 80051FB0 00000000 */ nop -/* 052BB4 80051FB4 44807000 */ mtc1 $zero, $f14 -/* 052BB8 80051FB8 00000000 */ nop -.L80051FBC: -/* 052BBC 80051FBC C60600B8 */ lwc1 $f6, 0xb8($s0) -/* 052BC0 80051FC0 C42966A8 */ lwc1 $f9, %lo(D_800E66A8)($at) -/* 052BC4 80051FC4 C42866AC */ lwc1 $f8, %lo(D_800E66A8 + 4)($at) -/* 052BC8 80051FC8 460032A1 */ cvt.d.s $f10, $f6 -/* 052BCC 80051FCC 4628503C */ c.lt.d $f10, $f8 -/* 052BD0 80051FD0 00000000 */ nop -/* 052BD4 80051FD4 4500003F */ bc1f .L800520D4 -/* 052BD8 80051FD8 00000000 */ nop -/* 052BDC 80051FDC 820C01D7 */ lb $t4, 0x1d7($s0) -/* 052BE0 80051FE0 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 -/* 052BE4 80051FE4 29810005 */ slti $at, $t4, 5 -/* 052BE8 80051FE8 1020003A */ beqz $at, .L800520D4 -/* 052BEC 80051FEC 00000000 */ nop -/* 052BF0 80051FF0 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) -/* 052BF4 80051FF4 00000000 */ nop -/* 052BF8 80051FF8 15E00036 */ bnez $t7, .L800520D4 -/* 052BFC 80051FFC 00000000 */ nop -/* 052C00 80052000 C60C009C */ lwc1 $f12, 0x9c($s0) -/* 052C04 80052004 44802800 */ mtc1 $zero, $f5 -/* 052C08 80052008 44802000 */ mtc1 $zero, $f4 -/* 052C0C 8005200C 460064A1 */ cvt.d.s $f18, $f12 -/* 052C10 80052010 4624903C */ c.lt.d $f18, $f4 -/* 052C14 80052014 3C01800E */ lui $at, %hi(D_800E66B0 + 4) # $at, 0x800e -/* 052C18 80052018 45000020 */ bc1f .L8005209C -/* 052C1C 8005201C 46006086 */ mov.s $f2, $f12 -/* 052C20 80052020 C42B66B0 */ lwc1 $f11, %lo(D_800E66B0)($at) -/* 052C24 80052024 C42A66B4 */ lwc1 $f10, %lo(D_800E66B0 + 4)($at) -/* 052C28 80052028 46001087 */ neg.s $f2, $f2 -/* 052C2C 8005202C 460011A1 */ cvt.d.s $f6, $f2 -/* 052C30 80052030 462A3201 */ sub.d $f8, $f6, $f10 -/* 052C34 80052034 44809800 */ mtc1 $zero, $f19 -/* 052C38 80052038 462040A0 */ cvt.s.d $f2, $f8 -/* 052C3C 8005203C 44809000 */ mtc1 $zero, $f18 -/* 052C40 80052040 46001021 */ cvt.d.s $f0, $f2 -/* 052C44 80052044 4632003C */ c.lt.d $f0, $f18 -/* 052C48 80052048 3C01800E */ lui $at, %hi(D_800E66B8 + 4) # $at, 0x800e -/* 052C4C 8005204C 45000004 */ bc1f .L80052060 -/* 052C50 80052050 00000000 */ nop -/* 052C54 80052054 44801000 */ mtc1 $zero, $f2 -/* 052C58 80052058 00000000 */ nop -/* 052C5C 8005205C 46001021 */ cvt.d.s $f0, $f2 -.L80052060: -/* 052C60 80052060 C42566B8 */ lwc1 $f5, %lo(D_800E66B8)($at) -/* 052C64 80052064 C42466BC */ lwc1 $f4, %lo(D_800E66B8 + 4)($at) -/* 052C68 80052068 3C01800E */ lui $at, %hi(D_800E66C0) # $at, 0x800e -/* 052C6C 8005206C 4620203C */ c.lt.d $f4, $f0 -/* 052C70 80052070 00000000 */ nop -/* 052C74 80052074 45000003 */ bc1f .L80052084 -/* 052C78 80052078 00000000 */ nop -/* 052C7C 8005207C C42266C0 */ lwc1 $f2, %lo(D_800E66C0)($at) -/* 052C80 80052080 00000000 */ nop -.L80052084: -/* 052C84 80052084 3C01420C */ li $at, 0x420C0000 # 35.000000 -/* 052C88 80052088 44813000 */ mtc1 $at, $f6 -/* 052C8C 8005208C 00000000 */ nop -/* 052C90 80052090 46061082 */ mul.s $f2, $f2, $f6 -/* 052C94 80052094 10000004 */ b .L800520A8 -/* 052C98 80052098 3C014080 */ lui $at, 0x4080 -.L8005209C: -/* 052C9C 8005209C 44801000 */ mtc1 $zero, $f2 -/* 052CA0 800520A0 00000000 */ nop -/* 052CA4 800520A4 3C014080 */ li $at, 0x40800000 # 4.000000 -.L800520A8: -/* 052CA8 800520A8 44815000 */ mtc1 $at, $f10 -/* 052CAC 800520AC C7A60084 */ lwc1 $f6, 0x84($sp) -/* 052CB0 800520B0 46025201 */ sub.s $f8, $f10, $f2 -/* 052CB4 800520B4 00000000 */ nop -/* 052CB8 800520B8 46086483 */ div.s $f18, $f12, $f8 -/* 052CBC 800520BC C608002C */ lwc1 $f8, 0x2c($s0) -/* 052CC0 800520C0 46127102 */ mul.s $f4, $f14, $f18 -/* 052CC4 800520C4 00000000 */ nop -/* 052CC8 800520C8 46062282 */ mul.s $f10, $f4, $f6 -/* 052CCC 800520CC 460A4480 */ add.s $f18, $f8, $f10 -/* 052CD0 800520D0 E612002C */ swc1 $f18, 0x2c($s0) -.L800520D4: -/* 052CD4 800520D4 3C01800E */ lui $at, %hi(D_800E66C8 + 4) # $at, 0x800e -/* 052CD8 800520D8 C606002C */ lwc1 $f6, 0x2c($s0) -/* 052CDC 800520DC C42B66C8 */ lwc1 $f11, %lo(D_800E66C8)($at) -/* 052CE0 800520E0 C42A66CC */ lwc1 $f10, %lo(D_800E66C8 + 4)($at) -/* 052CE4 800520E4 46003221 */ cvt.d.s $f8, $f6 -/* 052CE8 800520E8 462A4482 */ mul.d $f18, $f8, $f10 -/* 052CEC 800520EC C6040008 */ lwc1 $f4, 8($s0) -/* 052CF0 800520F0 3C013FC0 */ li $at, 0x3FC00000 # 1.500000 -/* 052CF4 800520F4 46002021 */ cvt.d.s $f0, $f4 -/* 052CF8 800520F8 44813800 */ mtc1 $at, $f7 -/* 052CFC 800520FC 46320100 */ add.d $f4, $f0, $f18 -/* 052D00 80052100 44803000 */ mtc1 $zero, $f6 -/* 052D04 80052104 820E01E1 */ lb $t6, 0x1e1($s0) -/* 052D08 80052108 46262202 */ mul.d $f8, $f4, $f6 -/* 052D0C 8005210C 3C0A8012 */ lui $t2, %hi(gCurrentCarSteerVel) # $t2, 0x8012 -/* 052D10 80052110 A20E01E8 */ sb $t6, 0x1e8($s0) -/* 052D14 80052114 820B01E0 */ lb $t3, 0x1e0($s0) -/* 052D18 80052118 46280281 */ sub.d $f10, $f0, $f8 -/* 052D1C 8005211C 462054A0 */ cvt.s.d $f18, $f10 -/* 052D20 80052120 E6120008 */ swc1 $f18, 8($s0) -/* 052D24 80052124 8D4AD554 */ lw $t2, %lo(gCurrentCarSteerVel)($t2) -/* 052D28 80052128 11600013 */ beqz $t3, .L80052178 -/* 052D2C 8005212C AE0A0110 */ sw $t2, 0x110($s0) -/* 052D30 80052130 3C188012 */ lui $t8, %hi(gCurrentPlayerIndex) # $t8, 0x8012 -/* 052D34 80052134 8F18D55C */ lw $t8, %lo(gCurrentPlayerIndex)($t8) -/* 052D38 80052138 2401FFFF */ li $at, -1 -/* 052D3C 8005213C 1301000F */ beq $t8, $at, .L8005217C -/* 052D40 80052140 8FBF0024 */ lw $ra, 0x24($sp) -/* 052D44 80052144 920201DC */ lbu $v0, 0x1dc($s0) -/* 052D48 80052148 240100FF */ li $at, 255 -/* 052D4C 8005214C 1041000A */ beq $v0, $at, .L80052178 -/* 052D50 80052150 0002C840 */ sll $t9, $v0, 1 -/* 052D54 80052154 3C0D800E */ lui $t5, %hi(D_800DCCCC) # $t5, 0x800e -/* 052D58 80052158 01B96821 */ addu $t5, $t5, $t9 -/* 052D5C 8005215C 95ADCCCC */ lhu $t5, %lo(D_800DCCCC)($t5) -/* 052D60 80052160 3C018012 */ lui $at, %hi(D_8011D550) # $at, 0x8012 -/* 052D64 80052164 A42DD550 */ sh $t5, %lo(D_8011D550)($at) -/* 052D68 80052168 820C01E0 */ lb $t4, 0x1e0($s0) -/* 052D6C 8005216C 3C018012 */ lui $at, %hi(D_8011D552) # $at, 0x8012 -/* 052D70 80052170 A42CD552 */ sh $t4, %lo(D_8011D552)($at) -/* 052D74 80052174 A20001E0 */ sb $zero, 0x1e0($s0) -.L80052178: -/* 052D78 80052178 8FBF0024 */ lw $ra, 0x24($sp) -.L8005217C: -/* 052D7C 8005217C 8FB00020 */ lw $s0, 0x20($sp) -/* 052D80 80052180 03E00008 */ jr $ra -/* 052D84 80052184 27BD0078 */ addiu $sp, $sp, 0x78 - +.late_rodata +glabel D_800E6638 +.double 0.024999999999999998 +glabel D_800E6640 +.double 0.4 +glabel D_800E6648 +.double 1.1 +glabel D_800E6650 +.double -0.3 +glabel D_800E6658 +.double 0.3 +glabel D_800E6660 +.float 0.02 +.word 0 # Padding +glabel D_800E6668 +.double 0.9 +glabel D_800E6670 +.double 0.7 +glabel D_800E6678 +.double 1.7 +glabel D_800E6680 +.double 0.15 +glabel D_800E6688 +.double 0.3 +glabel D_800E6690 +.double 0.32 +glabel D_800E6698 +.double -0.04 +glabel D_800E66A0 +.double 0.04 +glabel D_800E66A8 +.double 0.9 +glabel D_800E66B0 +.double 0.3 +glabel D_800E66B8 +.double 0.1 +glabel D_800E66C0 +.float 0.1 +.word 0 # Padding +glabel D_800E66C8 +.double 0.05 + +.text +glabel func_80050A28 +/* 051628 80050A28 27BDFF88 */ addiu $sp, $sp, -0x78 +/* 05162C 80050A2C AFBF0024 */ sw $ra, 0x24($sp) +/* 051630 80050A30 AFB00020 */ sw $s0, 0x20($sp) +/* 051634 80050A34 AFA40078 */ sw $a0, 0x78($sp) +/* 051638 80050A38 AFA60080 */ sw $a2, 0x80($sp) +/* 05163C 80050A3C AFA70084 */ sw $a3, 0x84($sp) +/* 051640 80050A40 AFA00058 */ sw $zero, 0x58($sp) +/* 051644 80050A44 C4AC002C */ lwc1 $f12, 0x2c($a1) +/* 051648 80050A48 44807000 */ mtc1 $zero, $f14 +/* 05164C 80050A4C 460C6102 */ mul.s $f4, $f12, $f12 +/* 051650 80050A50 460E603C */ c.lt.s $f12, $f14 +/* 051654 80050A54 00803825 */ move $a3, $a0 +/* 051658 80050A58 00A08025 */ move $s0, $a1 +/* 05165C 80050A5C 45000005 */ bc1f .L80050A74 +/* 051660 80050A60 E7A40050 */ swc1 $f4, 0x50($sp) +/* 051664 80050A64 C7A60050 */ lwc1 $f6, 0x50($sp) +/* 051668 80050A68 00000000 */ nop +/* 05166C 80050A6C 46003207 */ neg.s $f8, $f6 +/* 051670 80050A70 E7A80050 */ swc1 $f8, 0x50($sp) +.L80050A74: +/* 051674 80050A74 E60E0084 */ swc1 $f14, 0x84($s0) +/* 051678 80050A78 E60E0088 */ swc1 $f14, 0x88($s0) +/* 05167C 80050A7C 3C0E8012 */ lui $t6, %hi(gDialogueCameraAngle) # $t6, 0x8012 +/* 051680 80050A80 85CED586 */ lh $t6, %lo(gDialogueCameraAngle)($t6) +/* 051684 80050A84 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 +/* 051688 80050A88 15C00041 */ bnez $t6, .L80050B90 +/* 05168C 80050A8C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 +/* 051690 80050A90 820F01E7 */ lb $t7, 0x1e7($s0) +/* 051694 80050A94 3C19800E */ lui $t9, %hi(D_800DCDB0) # $t9, 0x800e +/* 051698 80050A98 31F8001F */ andi $t8, $t7, 0x1f +/* 05169C 80050A9C 0338C821 */ addu $t9, $t9, $t8 +/* 0516A0 80050AA0 8339CDB0 */ lb $t9, %lo(D_800DCDB0)($t9) +/* 0516A4 80050AA4 3C01800E */ lui $at, %hi(D_800E6638 + 4) # $at, 0x800e +/* 0516A8 80050AA8 44995000 */ mtc1 $t9, $f10 +/* 0516AC 80050AAC C4276638 */ lwc1 $f7, %lo(D_800E6638)($at) +/* 0516B0 80050AB0 468054A0 */ cvt.s.w $f18, $f10 +/* 0516B4 80050AB4 C426663C */ lwc1 $f6, %lo(D_800E6638 + 4)($at) +/* 0516B8 80050AB8 C60A00A0 */ lwc1 $f10, 0xa0($s0) +/* 0516BC 80050ABC 46009121 */ cvt.d.s $f4, $f18 +/* 0516C0 80050AC0 46262202 */ mul.d $f8, $f4, $f6 +/* 0516C4 80050AC4 46005487 */ neg.s $f18, $f10 +/* 0516C8 80050AC8 C60600A4 */ lwc1 $f6, 0xa4($s0) +/* 0516CC 80050ACC 46204020 */ cvt.s.d $f0, $f8 +/* 0516D0 80050AD0 46009102 */ mul.s $f4, $f18, $f0 +/* 0516D4 80050AD4 46003207 */ neg.s $f8, $f6 +/* 0516D8 80050AD8 C612009C */ lwc1 $f18, 0x9c($s0) +/* 0516DC 80050ADC 46004282 */ mul.s $f10, $f8, $f0 +/* 0516E0 80050AE0 E6040078 */ swc1 $f4, 0x78($s0) +/* 0516E4 80050AE4 46009107 */ neg.s $f4, $f18 +/* 0516E8 80050AE8 46002182 */ mul.s $f6, $f4, $f0 +/* 0516EC 80050AEC E60A007C */ swc1 $f10, 0x7c($s0) +/* 0516F0 80050AF0 E6060080 */ swc1 $f6, 0x80($s0) +/* 0516F4 80050AF4 8CE30060 */ lw $v1, 0x60($a3) +/* 0516F8 80050AF8 00000000 */ nop +/* 0516FC 80050AFC 10600022 */ beqz $v1, .L80050B88 +/* 051700 80050B00 00000000 */ nop +/* 051704 80050B04 8C6A0000 */ lw $t2, ($v1) +/* 051708 80050B08 00003025 */ move $a2, $zero +/* 05170C 80050B0C 1940001E */ blez $t2, .L80050B88 +/* 051710 80050B10 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 051714 80050B14 44811000 */ mtc1 $at, $f2 +/* 051718 80050B18 00002025 */ move $a0, $zero +.L80050B1C: +/* 05171C 80050B1C C4E80008 */ lwc1 $f8, 8($a3) +/* 051720 80050B20 C60A0078 */ lwc1 $f10, 0x78($s0) +/* 051724 80050B24 46081003 */ div.s $f0, $f2, $f8 +/* 051728 80050B28 46005487 */ neg.s $f18, $f10 +/* 05172C 80050B2C 00645821 */ addu $t3, $v1, $a0 +/* 051730 80050B30 8D620004 */ lw $v0, 4($t3) +/* 051734 80050B34 24C60001 */ addiu $a2, $a2, 1 +/* 051738 80050B38 24840004 */ addiu $a0, $a0, 4 +/* 05173C 80050B3C 46009102 */ mul.s $f4, $f18, $f0 +/* 051740 80050B40 E444000C */ swc1 $f4, 0xc($v0) +/* 051744 80050B44 C606007C */ lwc1 $f6, 0x7c($s0) +/* 051748 80050B48 00000000 */ nop +/* 05174C 80050B4C 46003207 */ neg.s $f8, $f6 +/* 051750 80050B50 46004282 */ mul.s $f10, $f8, $f0 +/* 051754 80050B54 E44A0010 */ swc1 $f10, 0x10($v0) +/* 051758 80050B58 C6120080 */ lwc1 $f18, 0x80($s0) +/* 05175C 80050B5C 00000000 */ nop +/* 051760 80050B60 46009107 */ neg.s $f4, $f18 +/* 051764 80050B64 46002182 */ mul.s $f6, $f4, $f0 +/* 051768 80050B68 E4460014 */ swc1 $f6, 0x14($v0) +/* 05176C 80050B6C 8CE30060 */ lw $v1, 0x60($a3) +/* 051770 80050B70 00000000 */ nop +/* 051774 80050B74 8C6C0000 */ lw $t4, ($v1) +/* 051778 80050B78 00000000 */ nop +/* 05177C 80050B7C 00CC082A */ slt $at, $a2, $t4 +/* 051780 80050B80 1420FFE6 */ bnez $at, .L80050B1C +/* 051784 80050B84 00000000 */ nop +.L80050B88: +/* 051788 80050B88 10000005 */ b .L80050BA0 +/* 05178C 80050B8C C60A002C */ lwc1 $f10, 0x2c($s0) +.L80050B90: +/* 051790 80050B90 E60E0078 */ swc1 $f14, 0x78($s0) +/* 051794 80050B94 E60E007C */ swc1 $f14, 0x7c($s0) +/* 051798 80050B98 E60E0080 */ swc1 $f14, 0x80($s0) +/* 05179C 80050B9C C60A002C */ lwc1 $f10, 0x2c($s0) +.L80050BA0: +/* 0517A0 80050BA0 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 +/* 0517A4 80050BA4 44814800 */ mtc1 $at, $f9 +/* 0517A8 80050BA8 44804000 */ mtc1 $zero, $f8 +/* 0517AC 80050BAC 460054A1 */ cvt.d.s $f18, $f10 +/* 0517B0 80050BB0 4632403C */ c.lt.d $f8, $f18 +/* 0517B4 80050BB4 00000000 */ nop +/* 0517B8 80050BB8 4500000A */ bc1f .L80050BE4 +/* 0517BC 80050BBC 00000000 */ nop +/* 0517C0 80050BC0 8D0D0000 */ lw $t5, ($t0) +/* 0517C4 80050BC4 240F003C */ li $t7, 60 +/* 0517C8 80050BC8 31AE8000 */ andi $t6, $t5, 0x8000 +/* 0517CC 80050BCC 11C00003 */ beqz $t6, .L80050BDC +/* 0517D0 80050BD0 00000000 */ nop +/* 0517D4 80050BD4 1000000A */ b .L80050C00 +/* 0517D8 80050BD8 A20F01FB */ sb $t7, 0x1fb($s0) +.L80050BDC: +/* 0517DC 80050BDC 10000008 */ b .L80050C00 +/* 0517E0 80050BE0 A20001FB */ sb $zero, 0x1fb($s0) +.L80050BE4: +/* 0517E4 80050BE4 3C188012 */ lui $t8, %hi(gCurrentRacerInput) # $t8, 0x8012 +/* 0517E8 80050BE8 8F18D528 */ lw $t8, %lo(gCurrentRacerInput)($t8) +/* 0517EC 80050BEC 00000000 */ nop +/* 0517F0 80050BF0 33198000 */ andi $t9, $t8, 0x8000 +/* 0517F4 80050BF4 17200002 */ bnez $t9, .L80050C00 +/* 0517F8 80050BF8 00000000 */ nop +/* 0517FC 80050BFC A20001FB */ sb $zero, 0x1fb($s0) +.L80050C00: +/* 051800 80050C00 820201FB */ lb $v0, 0x1fb($s0) +/* 051804 80050C04 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 +/* 051808 80050C08 18400006 */ blez $v0, .L80050C24 +/* 05180C 80050C0C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 +/* 051810 80050C10 8FAA0080 */ lw $t2, 0x80($sp) +/* 051814 80050C14 00000000 */ nop +/* 051818 80050C18 004A5823 */ subu $t3, $v0, $t2 +/* 05181C 80050C1C 10000002 */ b .L80050C28 +/* 051820 80050C20 A20B01FB */ sb $t3, 0x1fb($s0) +.L80050C24: +/* 051824 80050C24 A20001FB */ sb $zero, 0x1fb($s0) +.L80050C28: +/* 051828 80050C28 AFA00060 */ sw $zero, 0x60($sp) +/* 05182C 80050C2C 3C01800E */ lui $at, %hi(D_800E6640 + 4) # $at, 0x800e +/* 051830 80050C30 C60600B8 */ lwc1 $f6, 0xb8($s0) +/* 051834 80050C34 C4256640 */ lwc1 $f5, %lo(D_800E6640)($at) +/* 051838 80050C38 C4246644 */ lwc1 $f4, %lo(D_800E6640 + 4)($at) +/* 05183C 80050C3C 460032A1 */ cvt.d.s $f10, $f6 +/* 051840 80050C40 462A203C */ c.lt.d $f4, $f10 +/* 051844 80050C44 00000000 */ nop +/* 051848 80050C48 45000048 */ bc1f .L80050D6C +/* 05184C 80050C4C 00000000 */ nop +/* 051850 80050C50 C608002C */ lwc1 $f8, 0x2c($s0) +/* 051854 80050C54 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 051858 80050C58 44813800 */ mtc1 $at, $f7 +/* 05185C 80050C5C 44803000 */ mtc1 $zero, $f6 +/* 051860 80050C60 460044A1 */ cvt.d.s $f18, $f8 +/* 051864 80050C64 4626903C */ c.lt.d $f18, $f6 +/* 051868 80050C68 00000000 */ nop +/* 05186C 80050C6C 4500000B */ bc1f .L80050C9C +/* 051870 80050C70 00000000 */ nop +/* 051874 80050C74 820C01D8 */ lb $t4, 0x1d8($s0) +/* 051878 80050C78 24050001 */ li $a1, 1 +/* 05187C 80050C7C 15800007 */ bnez $t4, .L80050C9C +/* 051880 80050C80 00000000 */ nop +/* 051884 80050C84 86040000 */ lh $a0, ($s0) +/* 051888 80050C88 0C01C8D2 */ jal func_80072348 +/* 05188C 80050C8C AFA70078 */ sw $a3, 0x78($sp) +/* 051890 80050C90 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 +/* 051894 80050C94 8FA70078 */ lw $a3, 0x78($sp) +/* 051898 80050C98 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 +.L80050C9C: +/* 05189C 80050C9C 3C0E8012 */ lui $t6, %hi(gCurrentPlayerIndex) # $t6, 0x8012 +/* 0518A0 80050CA0 8DCED55C */ lw $t6, %lo(gCurrentPlayerIndex)($t6) +/* 0518A4 80050CA4 240D0001 */ li $t5, 1 +/* 0518A8 80050CA8 05C0001D */ bltz $t6, .L80050D20 +/* 0518AC 80050CAC AFAD0060 */ sw $t5, 0x60($sp) +/* 0518B0 80050CB0 3C0F800E */ lui $t7, %hi(gNumViewports) # $t7, 0x800e +/* 0518B4 80050CB4 8DEFCB98 */ lw $t7, %lo(gNumViewports)($t7) +/* 0518B8 80050CB8 240E0001 */ li $t6, 1 +/* 0518BC 80050CBC 29E10003 */ slti $at, $t7, 3 +/* 0518C0 80050CC0 10200016 */ beqz $at, .L80050D1C +/* 0518C4 80050CC4 00000000 */ nop +/* 0518C8 80050CC8 820401E6 */ lb $a0, 0x1e6($s0) +/* 0518CC 80050CCC 00000000 */ nop +/* 0518D0 80050CD0 18800006 */ blez $a0, .L80050CEC +/* 0518D4 80050CD4 00000000 */ nop +/* 0518D8 80050CD8 8CF80074 */ lw $t8, 0x74($a3) +/* 0518DC 80050CDC 00000000 */ nop +/* 0518E0 80050CE0 37191400 */ ori $t9, $t8, 0x1400 +/* 0518E4 80050CE4 1000000E */ b .L80050D20 +/* 0518E8 80050CE8 ACF90074 */ sw $t9, 0x74($a3) +.L80050CEC: +/* 0518EC 80050CEC 04810006 */ bgez $a0, .L80050D08 +/* 0518F0 80050CF0 00000000 */ nop +/* 0518F4 80050CF4 8CEA0074 */ lw $t2, 0x74($a3) +/* 0518F8 80050CF8 00000000 */ nop +/* 0518FC 80050CFC 354B2800 */ ori $t3, $t2, 0x2800 +/* 051900 80050D00 10000007 */ b .L80050D20 +/* 051904 80050D04 ACEB0074 */ sw $t3, 0x74($a3) +.L80050D08: +/* 051908 80050D08 8CEC0074 */ lw $t4, 0x74($a3) +/* 05190C 80050D0C 00000000 */ nop +/* 051910 80050D10 358D3000 */ ori $t5, $t4, 0x3000 +/* 051914 80050D14 10000002 */ b .L80050D20 +/* 051918 80050D18 ACED0074 */ sw $t5, 0x74($a3) +.L80050D1C: +/* 05191C 80050D1C AFAE0058 */ sw $t6, 0x58($sp) +.L80050D20: +/* 051920 80050D20 820F01E7 */ lb $t7, 0x1e7($s0) +/* 051924 80050D24 2404FFE7 */ li $a0, -25 +/* 051928 80050D28 31F80007 */ andi $t8, $t7, 7 +/* 05192C 80050D2C 2B010002 */ slti $at, $t8, 2 +/* 051930 80050D30 10200007 */ beqz $at, .L80050D50 +/* 051934 80050D34 24050019 */ li $a1, 25 +/* 051938 80050D38 0C01BE53 */ jal get_random_number_from_range +/* 05193C 80050D3C AFA70078 */ sw $a3, 0x78($sp) +/* 051940 80050D40 A20201D1 */ sb $v0, 0x1d1($s0) +/* 051944 80050D44 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 +/* 051948 80050D48 8FA70078 */ lw $a3, 0x78($sp) +/* 05194C 80050D4C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 +.L80050D50: +/* 051950 80050D50 3C098012 */ lui $t1, %hi(gCurrentStickX) # $t1, 0x8012 +/* 051954 80050D54 2529D534 */ addiu $t1, %lo(gCurrentStickX) # addiu $t1, $t1, -0x2acc +/* 051958 80050D58 8D390000 */ lw $t9, ($t1) +/* 05195C 80050D5C 820A01D1 */ lb $t2, 0x1d1($s0) +/* 051960 80050D60 00000000 */ nop +/* 051964 80050D64 032A5821 */ addu $t3, $t9, $t2 +/* 051968 80050D68 AD2B0000 */ sw $t3, ($t1) +.L80050D6C: +/* 05196C 80050D6C 820401FA */ lb $a0, 0x1fa($s0) +/* 051970 80050D70 3C098012 */ lui $t1, %hi(gCurrentStickX) # $t1, 0x8012 +/* 051974 80050D74 14800020 */ bnez $a0, .L80050DF8 +/* 051978 80050D78 2529D534 */ addiu $t1, %lo(gCurrentStickX) # addiu $t1, $t1, -0x2acc +/* 05197C 80050D7C C60A002C */ lwc1 $f10, 0x2c($s0) +/* 051980 80050D80 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 051984 80050D84 44812800 */ mtc1 $at, $f5 +/* 051988 80050D88 44802000 */ mtc1 $zero, $f4 +/* 05198C 80050D8C 46005221 */ cvt.d.s $f8, $f10 +/* 051990 80050D90 4628203C */ c.lt.d $f4, $f8 +/* 051994 80050D94 00000000 */ nop +/* 051998 80050D98 45000017 */ bc1f .L80050DF8 +/* 05199C 80050D9C 00000000 */ nop +/* 0519A0 80050DA0 8D0C0000 */ lw $t4, ($t0) +/* 0519A4 80050DA4 00000000 */ nop +/* 0519A8 80050DA8 318D0010 */ andi $t5, $t4, 0x10 +/* 0519AC 80050DAC 11A00012 */ beqz $t5, .L80050DF8 +/* 0519B0 80050DB0 00000000 */ nop +/* 0519B4 80050DB4 8D220000 */ lw $v0, ($t1) +/* 0519B8 80050DB8 00000000 */ nop +/* 0519BC 80050DBC 28410033 */ slti $at, $v0, 0x33 +/* 0519C0 80050DC0 10200003 */ beqz $at, .L80050DD0 +/* 0519C4 80050DC4 2841FFCE */ slti $at, $v0, -0x32 +/* 0519C8 80050DC8 1020000B */ beqz $at, .L80050DF8 +/* 0519CC 80050DCC 00000000 */ nop +.L80050DD0: +/* 0519D0 80050DD0 18400006 */ blez $v0, .L80050DEC +/* 0519D4 80050DD4 240FFFFF */ li $t7, -1 +/* 0519D8 80050DD8 240E0001 */ li $t6, 1 +/* 0519DC 80050DDC A20E01FA */ sb $t6, 0x1fa($s0) +/* 0519E0 80050DE0 820401FA */ lb $a0, 0x1fa($s0) +/* 0519E4 80050DE4 10000004 */ b .L80050DF8 +/* 0519E8 80050DE8 00000000 */ nop +.L80050DEC: +/* 0519EC 80050DEC A20F01FA */ sb $t7, 0x1fa($s0) +/* 0519F0 80050DF0 820401FA */ lb $a0, 0x1fa($s0) +/* 0519F4 80050DF4 00000000 */ nop +.L80050DF8: +/* 0519F8 80050DF8 10800043 */ beqz $a0, .L80050F08 +/* 0519FC 80050DFC 02002825 */ move $a1, $s0 +/* 051A00 80050E00 8D180000 */ lw $t8, ($t0) +/* 051A04 80050E04 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff +/* 051A08 80050E08 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff +/* 051A0C 80050E0C 0301C824 */ and $t9, $t8, $at +/* 051A10 80050E10 AD190000 */ sw $t9, ($t0) +/* 051A14 80050E14 372B4000 */ ori $t3, $t9, 0x4000 +/* 051A18 80050E18 AD0B0000 */ sw $t3, ($t0) +/* 051A1C 80050E1C 3C0E800E */ lui $t6, %hi(gNumViewports) # $t6, 0x800e +/* 051A20 80050E20 8DCECB98 */ lw $t6, %lo(gNumViewports)($t6) +/* 051A24 80050E24 3C018012 */ lui $at, %hi(gCurrentStickY) # $at, 0x8012 +/* 051A28 80050E28 240CFFBA */ li $t4, -70 +/* 051A2C 80050E2C AC2CD538 */ sw $t4, %lo(gCurrentStickY)($at) +/* 051A30 80050E30 240D0001 */ li $t5, 1 +/* 051A34 80050E34 29C10003 */ slti $at, $t6, 3 +/* 051A38 80050E38 10200006 */ beqz $at, .L80050E54 +/* 051A3C 80050E3C AFAD0060 */ sw $t5, 0x60($sp) +/* 051A40 80050E40 8CEF0074 */ lw $t7, 0x74($a3) +/* 051A44 80050E44 00000000 */ nop +/* 051A48 80050E48 35F83C00 */ ori $t8, $t7, 0x3c00 +/* 051A4C 80050E4C 10000003 */ b .L80050E5C +/* 051A50 80050E50 ACF80074 */ sw $t8, 0x74($a3) +.L80050E54: +/* 051A54 80050E54 24190001 */ li $t9, 1 +/* 051A58 80050E58 AFB90058 */ sw $t9, 0x58($sp) +.L80050E5C: +/* 051A5C 80050E5C 8FAA0080 */ lw $t2, 0x80($sp) +/* 051A60 80050E60 820401FA */ lb $a0, 0x1fa($s0) +/* 051A64 80050E64 000A5880 */ sll $t3, $t2, 2 +/* 051A68 80050E68 016A5823 */ subu $t3, $t3, $t2 +/* 051A6C 80050E6C 000B5A40 */ sll $t3, $t3, 9 +/* 051A70 80050E70 01640019 */ multu $t3, $a0 +/* 051A74 80050E74 860301A2 */ lh $v1, 0x1a2($s0) +/* 051A78 80050E78 00000000 */ nop +/* 051A7C 80050E7C 00603025 */ move $a2, $v1 +/* 051A80 80050E80 00006012 */ mflo $t4 +/* 051A84 80050E84 006C6821 */ addu $t5, $v1, $t4 +/* 051A88 80050E88 1880000B */ blez $a0, .L80050EB8 +/* 051A8C 80050E8C A60D01A2 */ sh $t5, 0x1a2($s0) +/* 051A90 80050E90 860E01A2 */ lh $t6, 0x1a2($s0) +/* 051A94 80050E94 00000000 */ nop +/* 051A98 80050E98 05C10010 */ bgez $t6, .L80050EDC +/* 051A9C 80050E9C 00000000 */ nop +/* 051AA0 80050EA0 0460000E */ bltz $v1, .L80050EDC +/* 051AA4 80050EA4 240F7FFF */ li $t7, 32767 +/* 051AA8 80050EA8 A20001FA */ sb $zero, 0x1fa($s0) +/* 051AAC 80050EAC 820401FA */ lb $a0, 0x1fa($s0) +/* 051AB0 80050EB0 1000000A */ b .L80050EDC +/* 051AB4 80050EB4 A60F01A2 */ sh $t7, 0x1a2($s0) +.L80050EB8: +/* 051AB8 80050EB8 861801A2 */ lh $t8, 0x1a2($s0) +/* 051ABC 80050EBC 00000000 */ nop +/* 051AC0 80050EC0 1B000006 */ blez $t8, .L80050EDC +/* 051AC4 80050EC4 00000000 */ nop +/* 051AC8 80050EC8 1CC00004 */ bgtz $a2, .L80050EDC +/* 051ACC 80050ECC 24198000 */ li $t9, -32768 +/* 051AD0 80050ED0 A20001FA */ sb $zero, 0x1fa($s0) +/* 051AD4 80050ED4 820401FA */ lb $a0, 0x1fa($s0) +/* 051AD8 80050ED8 A61901A2 */ sh $t9, 0x1a2($s0) +.L80050EDC: +/* 051ADC 80050EDC 1480000A */ bnez $a0, .L80050F08 +/* 051AE0 80050EE0 00000000 */ nop +/* 051AE4 80050EE4 860301A2 */ lh $v1, 0x1a2($s0) +/* 051AE8 80050EE8 860A01A0 */ lh $t2, 0x1a0($s0) +/* 051AEC 80050EEC C612002C */ lwc1 $f18, 0x2c($s0) +/* 051AF0 80050EF0 01435821 */ addu $t3, $t2, $v1 +/* 051AF4 80050EF4 46009187 */ neg.s $f6, $f18 +/* 051AF8 80050EF8 A60B01A0 */ sh $t3, 0x1a0($s0) +/* 051AFC 80050EFC A60001A2 */ sh $zero, 0x1a2($s0) +/* 051B00 80050F00 E606002C */ swc1 $f6, 0x2c($s0) +/* 051B04 80050F04 A603019E */ sh $v1, 0x19e($s0) +.L80050F08: +/* 051B08 80050F08 820401E6 */ lb $a0, 0x1e6($s0) +/* 051B0C 80050F0C 44809000 */ mtc1 $zero, $f18 +/* 051B10 80050F10 10800019 */ beqz $a0, .L80050F78 +/* 051B14 80050F14 3C0C8012 */ lui $t4, %hi(gCurrentPlayerIndex) # $t4, 0x8012 +/* 051B18 80050F18 8D8CD55C */ lw $t4, %lo(gCurrentPlayerIndex)($t4) +/* 051B1C 80050F1C 3C0D800E */ lui $t5, %hi(gNumViewports) # $t5, 0x800e +/* 051B20 80050F20 05800015 */ bltz $t4, .L80050F78 +/* 051B24 80050F24 00000000 */ nop +/* 051B28 80050F28 8DADCB98 */ lw $t5, %lo(gNumViewports)($t5) +/* 051B2C 80050F2C 240A0001 */ li $t2, 1 +/* 051B30 80050F30 29A10003 */ slti $at, $t5, 3 +/* 051B34 80050F34 1020000F */ beqz $at, .L80050F74 +/* 051B38 80050F38 00000000 */ nop +/* 051B3C 80050F3C 18800006 */ blez $a0, .L80050F58 +/* 051B40 80050F40 00000000 */ nop +/* 051B44 80050F44 8CEE0074 */ lw $t6, 0x74($a3) +/* 051B48 80050F48 00000000 */ nop +/* 051B4C 80050F4C 35CF1400 */ ori $t7, $t6, 0x1400 +/* 051B50 80050F50 10000005 */ b .L80050F68 +/* 051B54 80050F54 ACEF0074 */ sw $t7, 0x74($a3) +.L80050F58: +/* 051B58 80050F58 8CF80074 */ lw $t8, 0x74($a3) +/* 051B5C 80050F5C 00000000 */ nop +/* 051B60 80050F60 37192800 */ ori $t9, $t8, 0x2800 +/* 051B64 80050F64 ACF90074 */ sw $t9, 0x74($a3) +.L80050F68: +/* 051B68 80050F68 820401E6 */ lb $a0, 0x1e6($s0) +/* 051B6C 80050F6C 10000002 */ b .L80050F78 +/* 051B70 80050F70 00000000 */ nop +.L80050F74: +/* 051B74 80050F74 AFAA0058 */ sw $t2, 0x58($sp) +.L80050F78: +/* 051B78 80050F78 1480001D */ bnez $a0, .L80050FF0 +/* 051B7C 80050F7C 00000000 */ nop +/* 051B80 80050F80 8D0B0000 */ lw $t3, ($t0) +/* 051B84 80050F84 3C01C008 */ li $at, 0xC0080000 # -2.125000 +/* 051B88 80050F88 316C0010 */ andi $t4, $t3, 0x10 +/* 051B8C 80050F8C 11800018 */ beqz $t4, .L80050FF0 +/* 051B90 80050F90 00000000 */ nop +/* 051B94 80050F94 C60A002C */ lwc1 $f10, 0x2c($s0) +/* 051B98 80050F98 44814800 */ mtc1 $at, $f9 +/* 051B9C 80050F9C 44804000 */ mtc1 $zero, $f8 +/* 051BA0 80050FA0 46005121 */ cvt.d.s $f4, $f10 +/* 051BA4 80050FA4 4628203C */ c.lt.d $f4, $f8 +/* 051BA8 80050FA8 00000000 */ nop +/* 051BAC 80050FAC 45000010 */ bc1f .L80050FF0 +/* 051BB0 80050FB0 00000000 */ nop +/* 051BB4 80050FB4 8D220000 */ lw $v0, ($t1) +/* 051BB8 80050FB8 00000000 */ nop +/* 051BBC 80050FBC 28410010 */ slti $at, $v0, 0x10 +/* 051BC0 80050FC0 10200003 */ beqz $at, .L80050FD0 +/* 051BC4 80050FC4 2841FFF1 */ slti $at, $v0, -0xf +/* 051BC8 80050FC8 10200009 */ beqz $at, .L80050FF0 +/* 051BCC 80050FCC 00000000 */ nop +.L80050FD0: +/* 051BD0 80050FD0 04410004 */ bgez $v0, .L80050FE4 +/* 051BD4 80050FD4 240DFFFF */ li $t5, -1 +/* 051BD8 80050FD8 A20D01E6 */ sb $t5, 0x1e6($s0) +/* 051BDC 80050FDC 8D220000 */ lw $v0, ($t1) +/* 051BE0 80050FE0 00000000 */ nop +.L80050FE4: +/* 051BE4 80050FE4 18400002 */ blez $v0, .L80050FF0 +/* 051BE8 80050FE8 240E0001 */ li $t6, 1 +/* 051BEC 80050FEC A20E01E6 */ sb $t6, 0x1e6($s0) +.L80050FF0: +/* 051BF0 80050FF0 C606002C */ lwc1 $f6, 0x2c($s0) +/* 051BF4 80050FF4 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 051BF8 80050FF8 44819800 */ mtc1 $at, $f19 +/* 051BFC 80050FFC 460032A1 */ cvt.d.s $f10, $f6 +/* 051C00 80051000 462A903C */ c.lt.d $f18, $f10 +/* 051C04 80051004 00E02025 */ move $a0, $a3 +/* 051C08 80051008 45000002 */ bc1f .L80051014 +/* 051C0C 8005100C 00000000 */ nop +/* 051C10 80051010 A20001E6 */ sb $zero, 0x1e6($s0) +.L80051014: +/* 051C14 80051014 0C015C88 */ jal handle_racer_top_speed +/* 051C18 80051018 AFA70078 */ sw $a3, 0x78($sp) +/* 051C1C 8005101C 3C0F8012 */ lui $t7, %hi(gCurrentRacerInput) # $t7, 0x8012 +/* 051C20 80051020 8DEFD528 */ lw $t7, %lo(gCurrentRacerInput)($t7) +/* 051C24 80051024 E7A00034 */ swc1 $f0, 0x34($sp) +/* 051C28 80051028 31F80010 */ andi $t8, $t7, 0x10 +/* 051C2C 8005102C 13000019 */ beqz $t8, .L80051094 +/* 051C30 80051030 00000000 */ nop +/* 051C34 80051034 820401E6 */ lb $a0, 0x1e6($s0) +/* 051C38 80051038 3C01800E */ lui $at, %hi(D_800E6648 + 4) # $at, 0x800e +/* 051C3C 8005103C 10800015 */ beqz $a0, .L80051094 +/* 051C40 80051040 3C198012 */ lui $t9, %hi(gCurrentStickX) # $t9, 0x8012 +/* 051C44 80051044 C4296648 */ lwc1 $f9, %lo(D_800E6648)($at) +/* 051C48 80051048 C428664C */ lwc1 $f8, %lo(D_800E6648 + 4)($at) +/* 051C4C 8005104C 46000121 */ cvt.d.s $f4, $f0 +/* 051C50 80051050 46282182 */ mul.d $f6, $f4, $f8 +/* 051C54 80051054 8F39D534 */ lw $t9, %lo(gCurrentStickX)($t9) +/* 051C58 80051058 00045900 */ sll $t3, $a0, 4 +/* 051C5C 8005105C 01645823 */ subu $t3, $t3, $a0 +/* 051C60 80051060 000B5840 */ sll $t3, $t3, 1 +/* 051C64 80051064 00195043 */ sra $t2, $t9, 1 +/* 051C68 80051068 014B1021 */ addu $v0, $t2, $t3 +/* 051C6C 8005106C 462034A0 */ cvt.s.d $f18, $f6 +/* 051C70 80051070 2841004C */ slti $at, $v0, 0x4c +/* 051C74 80051074 14200002 */ bnez $at, .L80051080 +/* 051C78 80051078 E7B20034 */ swc1 $f18, 0x34($sp) +/* 051C7C 8005107C 2402004B */ li $v0, 75 +.L80051080: +/* 051C80 80051080 2841FFB5 */ slti $at, $v0, -0x4b +/* 051C84 80051084 10200006 */ beqz $at, .L800510A0 +/* 051C88 80051088 00000000 */ nop +/* 051C8C 8005108C 10000005 */ b .L800510A4 +/* 051C90 80051090 8E02010C */ lw $v0, 0x10c($s0) +.L80051094: +/* 051C94 80051094 A20001E6 */ sb $zero, 0x1e6($s0) +/* 051C98 80051098 820401E6 */ lb $a0, 0x1e6($s0) +/* 051C9C 8005109C 00000000 */ nop +.L800510A0: +/* 051CA0 800510A0 8E02010C */ lw $v0, 0x10c($s0) +.L800510A4: +/* 051CA4 800510A4 8FAE0080 */ lw $t6, 0x80($sp) +/* 051CA8 800510A8 00046340 */ sll $t4, $a0, 0xd +/* 051CAC 800510AC 004C6823 */ subu $t5, $v0, $t4 +/* 051CB0 800510B0 01AE0019 */ multu $t5, $t6 +/* 051CB4 800510B4 860301A2 */ lh $v1, 0x1a2($s0) +/* 051CB8 800510B8 00000000 */ nop +/* 051CBC 800510BC 28611801 */ slti $at, $v1, 0x1801 +/* 051CC0 800510C0 00007812 */ mflo $t7 +/* 051CC4 800510C4 000FC103 */ sra $t8, $t7, 4 +/* 051CC8 800510C8 0058C823 */ subu $t9, $v0, $t8 +/* 051CCC 800510CC 1020000D */ beqz $at, .L80051104 +/* 051CD0 800510D0 AE19010C */ sw $t9, 0x10c($s0) +/* 051CD4 800510D4 2861E800 */ slti $at, $v1, -0x1800 +/* 051CD8 800510D8 1420000B */ bnez $at, .L80051108 +/* 051CDC 800510DC 240C0001 */ li $t4, 1 +/* 051CE0 800510E0 14800009 */ bnez $a0, .L80051108 +/* 051CE4 800510E4 240C0001 */ li $t4, 1 +/* 051CE8 800510E8 820A01FA */ lb $t2, 0x1fa($s0) +/* 051CEC 800510EC 00000000 */ nop +/* 051CF0 800510F0 15400005 */ bnez $t2, .L80051108 +/* 051CF4 800510F4 240C0001 */ li $t4, 1 +/* 051CF8 800510F8 820B01FB */ lb $t3, 0x1fb($s0) +/* 051CFC 800510FC 00000000 */ nop +/* 051D00 80051100 1160004A */ beqz $t3, .L8005122C +.L80051104: +/* 051D04 80051104 240C0001 */ li $t4, 1 +.L80051108: +/* 051D08 80051108 AFAC0060 */ sw $t4, 0x60($sp) +/* 051D0C 8005110C 820D01FB */ lb $t5, 0x1fb($s0) +/* 051D10 80051110 00000000 */ nop +/* 051D14 80051114 11A0000A */ beqz $t5, .L80051140 +/* 051D18 80051118 00000000 */ nop +/* 051D1C 8005111C 820E01D8 */ lb $t6, 0x1d8($s0) +/* 051D20 80051120 00000000 */ nop +/* 051D24 80051124 15C00006 */ bnez $t6, .L80051140 +/* 051D28 80051128 00000000 */ nop +/* 051D2C 8005112C 86040000 */ lh $a0, ($s0) +/* 051D30 80051130 0C01C8D2 */ jal func_80072348 +/* 051D34 80051134 00002825 */ move $a1, $zero +/* 051D38 80051138 860301A2 */ lh $v1, 0x1a2($s0) +/* 051D3C 8005113C 00000000 */ nop +.L80051140: +/* 051D40 80051140 04610009 */ bgez $v1, .L80051168 +/* 051D44 80051144 8FA80078 */ lw $t0, 0x78($sp) +/* 051D48 80051148 8FA80078 */ lw $t0, 0x78($sp) +/* 051D4C 8005114C 00000000 */ nop +/* 051D50 80051150 8D0F0074 */ lw $t7, 0x74($t0) +/* 051D54 80051154 00000000 */ nop +/* 051D58 80051158 35F81400 */ ori $t8, $t7, 0x1400 +/* 051D5C 8005115C 10000007 */ b .L8005117C +/* 051D60 80051160 AD180074 */ sw $t8, 0x74($t0) +/* 051D64 80051164 8FA80078 */ lw $t0, 0x78($sp) +.L80051168: +/* 051D68 80051168 00000000 */ nop +/* 051D6C 8005116C 8D0A0074 */ lw $t2, 0x74($t0) +/* 051D70 80051170 00000000 */ nop +/* 051D74 80051174 354B2800 */ ori $t3, $t2, 0x2800 +/* 051D78 80051178 AD0B0074 */ sw $t3, 0x74($t0) +.L8005117C: +/* 051D7C 8005117C 820C01E6 */ lb $t4, 0x1e6($s0) +/* 051D80 80051180 00000000 */ nop +/* 051D84 80051184 15800009 */ bnez $t4, .L800511AC +/* 051D88 80051188 00000000 */ nop +/* 051D8C 8005118C 820D01FA */ lb $t5, 0x1fa($s0) +/* 051D90 80051190 00000000 */ nop +/* 051D94 80051194 15A00005 */ bnez $t5, .L800511AC +/* 051D98 80051198 00000000 */ nop +/* 051D9C 8005119C 820E01FB */ lb $t6, 0x1fb($s0) +/* 051DA0 800511A0 00000000 */ nop +/* 051DA4 800511A4 11C00019 */ beqz $t6, .L8005120C +/* 051DA8 800511A8 00000000 */ nop +.L800511AC: +/* 051DAC 800511AC 8E020010 */ lw $v0, 0x10($s0) +/* 051DB0 800511B0 24040001 */ li $a0, 1 +/* 051DB4 800511B4 14400008 */ bnez $v0, .L800511D8 +/* 051DB8 800511B8 260F0010 */ addiu $t7, $s0, 0x10 +/* 051DBC 800511BC 8D05000C */ lw $a1, 0xc($t0) +/* 051DC0 800511C0 8D060010 */ lw $a2, 0x10($t0) +/* 051DC4 800511C4 8D070014 */ lw $a3, 0x14($t0) +/* 051DC8 800511C8 0C0007AA */ jal play_sound_spatial +/* 051DCC 800511CC AFAF0010 */ sw $t7, 0x10($sp) +/* 051DD0 800511D0 10000007 */ b .L800511F0 +/* 051DD4 800511D4 8E020014 */ lw $v0, 0x14($s0) +.L800511D8: +/* 051DD8 800511D8 8D05000C */ lw $a1, 0xc($t0) +/* 051DDC 800511DC 8D060010 */ lw $a2, 0x10($t0) +/* 051DE0 800511E0 8D070014 */ lw $a3, 0x14($t0) +/* 051DE4 800511E4 0C0026DF */ jal func_80009B7C +/* 051DE8 800511E8 00402025 */ move $a0, $v0 +/* 051DEC 800511EC 8E020014 */ lw $v0, 0x14($s0) +.L800511F0: +/* 051DF0 800511F0 00000000 */ nop +/* 051DF4 800511F4 10400003 */ beqz $v0, .L80051204 +/* 051DF8 800511F8 00000000 */ nop +/* 051DFC 800511FC 0C001223 */ jal func_8000488C +/* 051E00 80051200 00402025 */ move $a0, $v0 +.L80051204: +/* 051E04 80051204 10000015 */ b .L8005125C +/* 051E08 80051208 00000000 */ nop +.L8005120C: +/* 051E0C 8005120C 8E020010 */ lw $v0, 0x10($s0) +/* 051E10 80051210 00000000 */ nop +/* 051E14 80051214 10400011 */ beqz $v0, .L8005125C +/* 051E18 80051218 00000000 */ nop +/* 051E1C 8005121C 0C001223 */ jal func_8000488C +/* 051E20 80051220 00402025 */ move $a0, $v0 +/* 051E24 80051224 1000000D */ b .L8005125C +/* 051E28 80051228 00000000 */ nop +.L8005122C: +/* 051E2C 8005122C 8E020010 */ lw $v0, 0x10($s0) +/* 051E30 80051230 00000000 */ nop +/* 051E34 80051234 10400003 */ beqz $v0, .L80051244 +/* 051E38 80051238 00000000 */ nop +/* 051E3C 8005123C 0C001223 */ jal func_8000488C +/* 051E40 80051240 00402025 */ move $a0, $v0 +.L80051244: +/* 051E44 80051244 8E020014 */ lw $v0, 0x14($s0) +/* 051E48 80051248 00000000 */ nop +/* 051E4C 8005124C 10400003 */ beqz $v0, .L8005125C +/* 051E50 80051250 00000000 */ nop +/* 051E54 80051254 0C001223 */ jal func_8000488C +/* 051E58 80051258 00402025 */ move $a0, $v0 +.L8005125C: +/* 051E5C 8005125C 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 +/* 051E60 80051260 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) +/* 051E64 80051264 820301E1 */ lb $v1, 0x1e1($s0) +/* 051E68 80051268 30584000 */ andi $t8, $v0, 0x4000 +/* 051E6C 8005126C 24060006 */ li $a2, 6 +/* 051E70 80051270 13000002 */ beqz $t8, .L8005127C +/* 051E74 80051274 03001025 */ move $v0, $t8 +/* 051E78 80051278 2406000C */ li $a2, 12 +.L8005127C: +/* 051E7C 8005127C 10400006 */ beqz $v0, .L80051298 +/* 051E80 80051280 3C01800E */ lui $at, %hi(D_800E6650 + 4) # $at, 0x800e +/* 051E84 80051284 820A01E6 */ lb $t2, 0x1e6($s0) +/* 051E88 80051288 00000000 */ nop +/* 051E8C 8005128C 11400002 */ beqz $t2, .L80051298 +/* 051E90 80051290 00000000 */ nop +/* 051E94 80051294 24060012 */ li $a2, 18 +.L80051298: +/* 051E98 80051298 C60A002C */ lwc1 $f10, 0x2c($s0) +/* 051E9C 8005129C C4256650 */ lwc1 $f5, %lo(D_800E6650)($at) +/* 051EA0 800512A0 C4246654 */ lwc1 $f4, %lo(D_800E6650 + 4)($at) +/* 051EA4 800512A4 460050A1 */ cvt.d.s $f2, $f10 +/* 051EA8 800512A8 4624103C */ c.lt.d $f2, $f4 +/* 051EAC 800512AC 00001025 */ move $v0, $zero +/* 051EB0 800512B0 45000005 */ bc1f .L800512C8 +/* 051EB4 800512B4 3C01800E */ lui $at, %hi(D_800E6658 + 4) # $at, 0x800e +/* 051EB8 800512B8 00660019 */ multu $v1, $a2 +/* 051EBC 800512BC 00001012 */ mflo $v0 +/* 051EC0 800512C0 00000000 */ nop +/* 051EC4 800512C4 00000000 */ nop +.L800512C8: +/* 051EC8 800512C8 C4296658 */ lwc1 $f9, %lo(D_800E6658)($at) +/* 051ECC 800512CC C428665C */ lwc1 $f8, %lo(D_800E6658 + 4)($at) +/* 051ED0 800512D0 8FB90080 */ lw $t9, 0x80($sp) +/* 051ED4 800512D4 4622403C */ c.lt.d $f8, $f2 +/* 051ED8 800512D8 00000000 */ nop +/* 051EDC 800512DC 45000005 */ bc1f .L800512F4 +/* 051EE0 800512E0 00035823 */ negu $t3, $v1 +/* 051EE4 800512E4 01660019 */ multu $t3, $a2 +/* 051EE8 800512E8 00001012 */ mflo $v0 +/* 051EEC 800512EC 00000000 */ nop +/* 051EF0 800512F0 00000000 */ nop +.L800512F4: +/* 051EF4 800512F4 00590019 */ multu $v0, $t9 +/* 051EF8 800512F8 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 +/* 051EFC 800512FC C42AD570 */ lwc1 $f10, %lo(gCurrentRacerHandlingStat)($at) +/* 051F00 80051300 860E01A0 */ lh $t6, 0x1a0($s0) +/* 051F04 80051304 02002025 */ move $a0, $s0 +/* 051F08 80051308 00001012 */ mflo $v0 +/* 051F0C 8005130C 00026043 */ sra $t4, $v0, 1 +/* 051F10 80051310 448C3000 */ mtc1 $t4, $f6 +/* 051F14 80051314 00000000 */ nop +/* 051F18 80051318 468034A0 */ cvt.s.w $f18, $f6 +/* 051F1C 8005131C 460A9102 */ mul.s $f4, $f18, $f10 +/* 051F20 80051320 444DF800 */ cfc1 $t5, $31 +/* 051F24 80051324 00000000 */ nop +/* 051F28 80051328 35A10003 */ ori $at, $t5, 3 +/* 051F2C 8005132C 38210002 */ xori $at, $at, 2 +/* 051F30 80051330 44C1F800 */ ctc1 $at, $31 +/* 051F34 80051334 00000000 */ nop +/* 051F38 80051338 46002224 */ cvt.w.s $f8, $f4 +/* 051F3C 8005133C 440F4000 */ mfc1 $t7, $f8 +/* 051F40 80051340 44CDF800 */ ctc1 $t5, $31 +/* 051F44 80051344 01CFC023 */ subu $t8, $t6, $t7 +/* 051F48 80051348 0C014D1E */ jal handle_car_steering +/* 051F4C 8005134C A61801A0 */ sh $t8, 0x1a0($s0) +/* 051F50 80051350 C606002C */ lwc1 $f6, 0x2c($s0) +/* 051F54 80051354 3C01C010 */ li $at, 0xC0100000 # -2.250000 +/* 051F58 80051358 44815800 */ mtc1 $at, $f11 +/* 051F5C 8005135C 44805000 */ mtc1 $zero, $f10 +/* 051F60 80051360 460034A1 */ cvt.d.s $f18, $f6 +/* 051F64 80051364 462A903C */ c.lt.d $f18, $f10 +/* 051F68 80051368 44807000 */ mtc1 $zero, $f14 +/* 051F6C 8005136C 45000032 */ bc1f .L80051438 +/* 051F70 80051370 00004825 */ move $t1, $zero +/* 051F74 80051374 3C028012 */ lui $v0, %hi(gCurrentCarSteerVel) # $v0, 0x8012 +/* 051F78 80051378 8C42D554 */ lw $v0, %lo(gCurrentCarSteerVel)($v0) +/* 051F7C 8005137C 00000000 */ nop +/* 051F80 80051380 28411401 */ slti $at, $v0, 0x1401 +/* 051F84 80051384 10200007 */ beqz $at, .L800513A4 +/* 051F88 80051388 00000000 */ nop +/* 051F8C 8005138C 820401E6 */ lb $a0, 0x1e6($s0) +/* 051F90 80051390 2841EC00 */ slti $at, $v0, -0x1400 +/* 051F94 80051394 10800013 */ beqz $a0, .L800513E4 +/* 051F98 80051398 00000000 */ nop +/* 051F9C 8005139C 18400011 */ blez $v0, .L800513E4 +/* 051FA0 800513A0 00000000 */ nop +.L800513A4: +/* 051FA4 800513A4 820601E7 */ lb $a2, 0x1e7($s0) +/* 051FA8 800513A8 240B0007 */ li $t3, 7 +/* 051FAC 800513AC 30CA0007 */ andi $t2, $a2, 7 +/* 051FB0 800513B0 29410004 */ slti $at, $t2, 4 +/* 051FB4 800513B4 14200002 */ bnez $at, .L800513C0 +/* 051FB8 800513B8 01403025 */ move $a2, $t2 +/* 051FBC 800513BC 016A3023 */ subu $a2, $t3, $t2 +.L800513C0: +/* 051FC0 800513C0 0006C880 */ sll $t9, $a2, 2 +/* 051FC4 800513C4 0326C823 */ subu $t9, $t9, $a2 +/* 051FC8 800513C8 0019C8C0 */ sll $t9, $t9, 3 +/* 051FCC 800513CC 0326C821 */ addu $t9, $t9, $a2 +/* 051FD0 800513D0 0019C900 */ sll $t9, $t9, 4 +/* 051FD4 800513D4 00596021 */ addu $t4, $v0, $t9 +/* 051FD8 800513D8 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 +/* 051FDC 800513DC 10000016 */ b .L80051438 +/* 051FE0 800513E0 AC2CD554 */ sw $t4, %lo(gCurrentCarSteerVel)($at) +.L800513E4: +/* 051FE4 800513E4 14200005 */ bnez $at, .L800513FC +/* 051FE8 800513E8 00000000 */ nop +/* 051FEC 800513EC 10800012 */ beqz $a0, .L80051438 +/* 051FF0 800513F0 00000000 */ nop +/* 051FF4 800513F4 04410010 */ bgez $v0, .L80051438 +/* 051FF8 800513F8 00000000 */ nop +.L800513FC: +/* 051FFC 800513FC 820601E7 */ lb $a2, 0x1e7($s0) +/* 052000 80051400 240E0007 */ li $t6, 7 +/* 052004 80051404 30CD0007 */ andi $t5, $a2, 7 +/* 052008 80051408 29A10004 */ slti $at, $t5, 4 +/* 05200C 8005140C 14200002 */ bnez $at, .L80051418 +/* 052010 80051410 01A03025 */ move $a2, $t5 +/* 052014 80051414 01CD3023 */ subu $a2, $t6, $t5 +.L80051418: +/* 052018 80051418 00067880 */ sll $t7, $a2, 2 +/* 05201C 8005141C 01E67823 */ subu $t7, $t7, $a2 +/* 052020 80051420 000F78C0 */ sll $t7, $t7, 3 +/* 052024 80051424 01E67821 */ addu $t7, $t7, $a2 +/* 052028 80051428 000F7900 */ sll $t7, $t7, 4 +/* 05202C 8005142C 004FC023 */ subu $t8, $v0, $t7 +/* 052030 80051430 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 +/* 052034 80051434 AC38D554 */ sw $t8, %lo(gCurrentCarSteerVel)($at) +.L80051438: +/* 052038 80051438 44808000 */ mtc1 $zero, $f16 +/* 05203C 8005143C 44801000 */ mtc1 $zero, $f2 +/* 052040 80051440 AFA00068 */ sw $zero, 0x68($sp) +/* 052044 80051444 00004025 */ move $t0, $zero +/* 052048 80051448 00003025 */ move $a2, $zero +/* 05204C 8005144C 02002825 */ move $a1, $s0 +.L80051450: +/* 052050 80051450 90AA01DC */ lbu $t2, 0x1dc($a1) +/* 052054 80051454 240100FF */ li $at, 255 +/* 052058 80051458 11410038 */ beq $t2, $at, .L8005153C +/* 05205C 8005145C 00000000 */ nop +/* 052060 80051460 AFA50028 */ sw $a1, 0x28($sp) +/* 052064 80051464 AFA60070 */ sw $a2, 0x70($sp) +/* 052068 80051468 A3A80057 */ sb $t0, 0x57($sp) +/* 05206C 8005146C AFA90064 */ sw $t1, 0x64($sp) +/* 052070 80051470 E7A20048 */ swc1 $f2, 0x48($sp) +/* 052074 80051474 E7AE0044 */ swc1 $f14, 0x44($sp) +/* 052078 80051478 0C0270C3 */ jal get_filtered_cheats +/* 05207C 8005147C E7B00040 */ swc1 $f16, 0x40($sp) +/* 052080 80051480 8FA50028 */ lw $a1, 0x28($sp) +/* 052084 80051484 8FA60070 */ lw $a2, 0x70($sp) +/* 052088 80051488 3C07800E */ lui $a3, %hi(gSurfaceTractionTable) # $a3, 0x800e +/* 05208C 8005148C 83A80057 */ lb $t0, 0x57($sp) +/* 052090 80051490 8FA90064 */ lw $t1, 0x64($sp) +/* 052094 80051494 C7A20048 */ lwc1 $f2, 0x48($sp) +/* 052098 80051498 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 05209C 8005149C C7B00040 */ lwc1 $f16, 0x40($sp) +/* 0520A0 800514A0 00025A00 */ sll $t3, $v0, 8 +/* 0520A4 800514A4 05610006 */ bgez $t3, .L800514C0 +/* 0520A8 800514A8 24E7CB9C */ addiu $a3, %lo(gSurfaceTractionTable) # addiu $a3, $a3, -0x3464 +/* 0520AC 800514AC C4E40000 */ lwc1 $f4, ($a3) +/* 0520B0 800514B0 90A201DC */ lbu $v0, 0x1dc($a1) +/* 0520B4 800514B4 46047380 */ add.s $f14, $f14, $f4 +/* 0520B8 800514B8 10000008 */ b .L800514DC +/* 0520BC 800514BC 00021880 */ sll $v1, $v0, 2 +.L800514C0: +/* 0520C0 800514C0 90A201DC */ lbu $v0, 0x1dc($a1) +/* 0520C4 800514C4 00000000 */ nop +/* 0520C8 800514C8 00021880 */ sll $v1, $v0, 2 +/* 0520CC 800514CC 00E3C821 */ addu $t9, $a3, $v1 +/* 0520D0 800514D0 C7280000 */ lwc1 $f8, ($t9) +/* 0520D4 800514D4 00000000 */ nop +/* 0520D8 800514D8 46087380 */ add.s $f14, $f14, $f8 +.L800514DC: +/* 0520DC 800514DC 3C01800E */ lui $at, %hi(D_800DCBE8) # $at, 0x800e +/* 0520E0 800514E0 3C0D800E */ lui $t5, %hi(gSurfaceBobbingTable) # $t5, 0x800e +/* 0520E4 800514E4 00230821 */ addu $at, $at, $v1 +/* 0520E8 800514E8 01A36821 */ addu $t5, $t5, $v1 +/* 0520EC 800514EC C426CBE8 */ lwc1 $f6, %lo(D_800DCBE8)($at) +/* 0520F0 800514F0 8DADCC34 */ lw $t5, %lo(gSurfaceBobbingTable)($t5) +/* 0520F4 800514F4 8FAC0068 */ lw $t4, 0x68($sp) +/* 0520F8 800514F8 0122082A */ slt $at, $t1, $v0 +/* 0520FC 800514FC 018D7021 */ addu $t6, $t4, $t5 +/* 052100 80051500 AFAE0068 */ sw $t6, 0x68($sp) +/* 052104 80051504 00402025 */ move $a0, $v0 +/* 052108 80051508 10200002 */ beqz $at, .L80051514 +/* 05210C 8005150C 46068400 */ add.s $f16, $f16, $f6 +/* 052110 80051510 00404825 */ move $t1, $v0 +.L80051514: +/* 052114 80051514 24010004 */ li $at, 4 +/* 052118 80051518 14810005 */ bne $a0, $at, .L80051530 +/* 05211C 8005151C 3C013F80 */ lui $at, 0x3f80 +/* 052120 80051520 25080001 */ addiu $t0, $t0, 1 +/* 052124 80051524 00087E00 */ sll $t7, $t0, 0x18 +/* 052128 80051528 000F4603 */ sra $t0, $t7, 0x18 +/* 05212C 8005152C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +.L80051530: +/* 052130 80051530 44819000 */ mtc1 $at, $f18 +/* 052134 80051534 00000000 */ nop +/* 052138 80051538 46121080 */ add.s $f2, $f2, $f18 +.L8005153C: +/* 05213C 8005153C 24C60001 */ addiu $a2, $a2, 1 +/* 052140 80051540 28C10004 */ slti $at, $a2, 4 +/* 052144 80051544 1420FFC2 */ bnez $at, .L80051450 +/* 052148 80051548 24A50001 */ addiu $a1, $a1, 1 +/* 05214C 8005154C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 052150 80051550 44815000 */ mtc1 $at, $f10 +/* 052154 80051554 44802800 */ mtc1 $zero, $f5 +/* 052158 80051558 4602503C */ c.lt.s $f10, $f2 +/* 05215C 8005155C 00000000 */ nop +/* 052160 80051560 45000004 */ bc1f .L80051574 +/* 052164 80051564 00000000 */ nop +/* 052168 80051568 46027383 */ div.s $f14, $f14, $f2 +/* 05216C 8005156C 00000000 */ nop +/* 052170 80051570 46028403 */ div.s $f16, $f16, $f2 +.L80051574: +/* 052174 80051574 860A0000 */ lh $t2, ($s0) +/* 052178 80051578 00000000 */ nop +/* 05217C 8005157C 1540000D */ bnez $t2, .L800515B4 +/* 052180 80051580 00000000 */ nop +/* 052184 80051584 820B01E2 */ lb $t3, 0x1e2($s0) +/* 052188 80051588 2401000C */ li $at, 12 +/* 05218C 8005158C 11600009 */ beqz $t3, .L800515B4 +/* 052190 80051590 00000000 */ nop +/* 052194 80051594 15210007 */ bne $t1, $at, .L800515B4 +/* 052198 80051598 3C198012 */ lui $t9, %hi(gCurrentButtonsPressed) # $t9, 0x8012 +/* 05219C 8005159C 8F39D52C */ lw $t9, %lo(gCurrentButtonsPressed)($t9) +/* 0521A0 800515A0 240D0002 */ li $t5, 2 +/* 0521A4 800515A4 332C2000 */ andi $t4, $t9, 0x2000 +/* 0521A8 800515A8 11800002 */ beqz $t4, .L800515B4 +/* 0521AC 800515AC 3C018012 */ lui $at, %hi(gTajInteractStatus) # $at, 0x8012 +/* 0521B0 800515B0 A02DD582 */ sb $t5, %lo(gTajInteractStatus)($at) +.L800515B4: +/* 0521B4 800515B4 C60800C0 */ lwc1 $f8, 0xc0($s0) +/* 0521B8 800515B8 44802000 */ mtc1 $zero, $f4 +/* 0521BC 800515BC 460041A1 */ cvt.d.s $f6, $f8 +/* 0521C0 800515C0 46262032 */ c.eq.d $f4, $f6 +/* 0521C4 800515C4 00000000 */ nop +/* 0521C8 800515C8 45010004 */ bc1t .L800515DC +/* 0521CC 800515CC 3C01800E */ lui $at, %hi(D_800E6660) # $at, 0x800e +/* 0521D0 800515D0 C42E6660 */ lwc1 $f14, %lo(D_800E6660)($at) +/* 0521D4 800515D4 44808000 */ mtc1 $zero, $f16 +/* 0521D8 800515D8 00000000 */ nop +.L800515DC: +/* 0521DC 800515DC 24010002 */ li $at, 2 +/* 0521E0 800515E0 1521001A */ bne $t1, $at, .L8005164C +/* 0521E4 800515E4 24040008 */ li $a0, 8 +/* 0521E8 800515E8 C612002C */ lwc1 $f18, 0x2c($s0) +/* 0521EC 800515EC 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 0521F0 800515F0 44814800 */ mtc1 $at, $f9 +/* 0521F4 800515F4 44804000 */ mtc1 $zero, $f8 +/* 0521F8 800515F8 460092A1 */ cvt.d.s $f10, $f18 +/* 0521FC 800515FC 4628503C */ c.lt.d $f10, $f8 +/* 052200 80051600 00000000 */ nop +/* 052204 80051604 45000011 */ bc1f .L8005164C +/* 052208 80051608 24040008 */ li $a0, 8 +/* 05220C 8005160C 820E01D8 */ lb $t6, 0x1d8($s0) +/* 052210 80051610 00002825 */ move $a1, $zero +/* 052214 80051614 15C0000D */ bnez $t6, .L8005164C +/* 052218 80051618 24040008 */ li $a0, 8 +/* 05221C 8005161C 86040000 */ lh $a0, ($s0) +/* 052220 80051620 E7B00040 */ swc1 $f16, 0x40($sp) +/* 052224 80051624 E7AE0044 */ swc1 $f14, 0x44($sp) +/* 052228 80051628 AFA90064 */ sw $t1, 0x64($sp) +/* 05222C 8005162C 0C01C8D2 */ jal func_80072348 +/* 052230 80051630 A3A80057 */ sb $t0, 0x57($sp) +/* 052234 80051634 83A80057 */ lb $t0, 0x57($sp) +/* 052238 80051638 8FA90064 */ lw $t1, 0x64($sp) +/* 05223C 8005163C C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 052240 80051640 C7B00040 */ lwc1 $f16, 0x40($sp) +/* 052244 80051644 00000000 */ nop +/* 052248 80051648 24040008 */ li $a0, 8 +.L8005164C: +/* 05224C 8005164C A3A80057 */ sb $t0, 0x57($sp) +/* 052250 80051650 AFA90064 */ sw $t1, 0x64($sp) +/* 052254 80051654 E7AE0044 */ swc1 $f14, 0x44($sp) +/* 052258 80051658 0C0078A7 */ jal get_misc_asset +/* 05225C 8005165C E7B00040 */ swc1 $f16, 0x40($sp) +/* 052260 80051660 3C0F8012 */ lui $t7, %hi(gCurrentPlayerIndex) # $t7, 0x8012 +/* 052264 80051664 8DEFD55C */ lw $t7, %lo(gCurrentPlayerIndex)($t7) +/* 052268 80051668 2403FFFF */ li $v1, -1 +/* 05226C 8005166C 83A80057 */ lb $t0, 0x57($sp) +/* 052270 80051670 8FA90064 */ lw $t1, 0x64($sp) +/* 052274 80051674 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 052278 80051678 C7B00040 */ lwc1 $f16, 0x40($sp) +/* 05227C 8005167C 106F0028 */ beq $v1, $t7, .L80051720 +/* 052280 80051680 00000000 */ nop +/* 052284 80051684 C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052288 80051688 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 05228C 8005168C 44812800 */ mtc1 $at, $f5 +/* 052290 80051690 44802000 */ mtc1 $zero, $f4 +/* 052294 80051694 460061A1 */ cvt.d.s $f6, $f12 +/* 052298 80051698 4626203C */ c.lt.d $f4, $f6 +/* 05229C 8005169C 00000000 */ nop +/* 0522A0 800516A0 4501001F */ bc1t .L80051720 +/* 0522A4 800516A4 00000000 */ nop +/* 0522A8 800516A8 821801E6 */ lb $t8, 0x1e6($s0) +/* 0522AC 800516AC 00000000 */ nop +/* 0522B0 800516B0 1700001B */ bnez $t8, .L80051720 +/* 0522B4 800516B4 00000000 */ nop +/* 0522B8 800516B8 820A01D8 */ lb $t2, 0x1d8($s0) +/* 0522BC 800516BC 3C0B8012 */ lui $t3, %hi(gCurrentStickX) # $t3, 0x8012 +/* 0522C0 800516C0 15400017 */ bnez $t2, .L80051720 +/* 0522C4 800516C4 00000000 */ nop +/* 0522C8 800516C8 8D6BD534 */ lw $t3, %lo(gCurrentStickX)($t3) +/* 0522CC 800516CC 82190003 */ lb $t9, 3($s0) +/* 0522D0 800516D0 448B9000 */ mtc1 $t3, $f18 +/* 0522D4 800516D4 00196080 */ sll $t4, $t9, 2 +/* 0522D8 800516D8 468092A0 */ cvt.s.w $f10, $f18 +/* 0522DC 800516DC 004C6821 */ addu $t5, $v0, $t4 +/* 0522E0 800516E0 C5A40000 */ lwc1 $f4, ($t5) +/* 0522E4 800516E4 460A6202 */ mul.s $f8, $f12, $f10 +/* 0522E8 800516E8 C6120030 */ lwc1 $f18, 0x30($s0) +/* 0522EC 800516EC 860E0000 */ lh $t6, ($s0) +/* 0522F0 800516F0 3C01800E */ lui $at, %hi(D_800E6668 + 4) # $at, 0x800e +/* 0522F4 800516F4 46044183 */ div.s $f6, $f8, $f4 +/* 0522F8 800516F8 46069280 */ add.s $f10, $f18, $f6 +/* 0522FC 800516FC 146E0008 */ bne $v1, $t6, .L80051720 +/* 052300 80051700 E60A0030 */ swc1 $f10, 0x30($s0) +/* 052304 80051704 C6080030 */ lwc1 $f8, 0x30($s0) +/* 052308 80051708 C4336668 */ lwc1 $f19, %lo(D_800E6668)($at) +/* 05230C 8005170C C432666C */ lwc1 $f18, %lo(D_800E6668 + 4)($at) +/* 052310 80051710 46004121 */ cvt.d.s $f4, $f8 +/* 052314 80051714 46322182 */ mul.d $f6, $f4, $f18 +/* 052318 80051718 462032A0 */ cvt.s.d $f10, $f6 +/* 05231C 8005171C E60A0030 */ swc1 $f10, 0x30($s0) +.L80051720: +/* 052320 80051720 C608002C */ lwc1 $f8, 0x2c($s0) +/* 052324 80051724 3C01C008 */ li $at, 0xC0080000 # -2.125000 +/* 052328 80051728 44812800 */ mtc1 $at, $f5 +/* 05232C 8005172C 44802000 */ mtc1 $zero, $f4 +/* 052330 80051730 460040A1 */ cvt.d.s $f2, $f8 +/* 052334 80051734 4622203C */ c.lt.d $f4, $f2 +/* 052338 80051738 00000000 */ nop +/* 05233C 8005173C 4500002D */ bc1f .L800517F4 +/* 052340 80051740 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 052344 80051744 44819800 */ mtc1 $at, $f19 +/* 052348 80051748 44809000 */ mtc1 $zero, $f18 +/* 05234C 8005174C 44804800 */ mtc1 $zero, $f9 +/* 052350 80051750 46321180 */ add.d $f6, $f2, $f18 +/* 052354 80051754 44804000 */ mtc1 $zero, $f8 +/* 052358 80051758 46203287 */ neg.d $f10, $f6 +/* 05235C 8005175C 46205020 */ cvt.s.d $f0, $f10 +/* 052360 80051760 3C0F8012 */ lui $t7, %hi(gCurrentCarSteerVel) # $t7, 0x8012 +/* 052364 80051764 46000321 */ cvt.d.s $f12, $f0 +/* 052368 80051768 4628603C */ c.lt.d $f12, $f8 +/* 05236C 8005176C 00000000 */ nop +/* 052370 80051770 45000004 */ bc1f .L80051784 +/* 052374 80051774 00000000 */ nop +/* 052378 80051778 44800000 */ mtc1 $zero, $f0 +/* 05237C 8005177C 00000000 */ nop +/* 052380 80051780 46000321 */ cvt.d.s $f12, $f0 +.L80051784: +/* 052384 80051784 8DEFD554 */ lw $t7, %lo(gCurrentCarSteerVel)($t7) +/* 052388 80051788 44804000 */ mtc1 $zero, $f8 +/* 05238C 8005178C 448F2000 */ mtc1 $t7, $f4 +/* 052390 80051790 00000000 */ nop +/* 052394 80051794 468024A0 */ cvt.s.w $f18, $f4 +/* 052398 80051798 46009182 */ mul.s $f6, $f18, $f0 +/* 05239C 8005179C 4458F800 */ cfc1 $t8, $31 +/* 0523A0 800517A0 00000000 */ nop +/* 0523A4 800517A4 37010003 */ ori $at, $t8, 3 +/* 0523A8 800517A8 38210002 */ xori $at, $at, 2 +/* 0523AC 800517AC 44C1F800 */ ctc1 $at, $31 +/* 0523B0 800517B0 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 +/* 0523B4 800517B4 460032A4 */ cvt.w.s $f10, $f6 +/* 0523B8 800517B8 440A5000 */ mfc1 $t2, $f10 +/* 0523BC 800517BC 44D8F800 */ ctc1 $t8, $31 +/* 0523C0 800517C0 AC2AD554 */ sw $t2, %lo(gCurrentCarSteerVel)($at) +/* 0523C4 800517C4 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 +/* 0523C8 800517C8 44814800 */ mtc1 $at, $f9 +/* 0523CC 800517CC 3C01800E */ lui $at, %hi(D_800E6670 + 4) # $at, 0x800e +/* 0523D0 800517D0 C4336670 */ lwc1 $f19, %lo(D_800E6670)($at) +/* 0523D4 800517D4 C4326674 */ lwc1 $f18, %lo(D_800E6670 + 4)($at) +/* 0523D8 800517D8 462C4101 */ sub.d $f4, $f8, $f12 +/* 0523DC 800517DC 46322182 */ mul.d $f6, $f4, $f18 +/* 0523E0 800517E0 00000000 */ nop +/* 0523E4 800517E4 46008282 */ mul.s $f10, $f16, $f0 +/* 0523E8 800517E8 46005221 */ cvt.d.s $f8, $f10 +/* 0523EC 800517EC 46283100 */ add.d $f4, $f6, $f8 +/* 0523F0 800517F0 46202420 */ cvt.s.d $f16, $f4 +.L800517F4: +/* 0523F4 800517F4 C6120030 */ lwc1 $f18, 0x30($s0) +/* 0523F8 800517F8 860401A4 */ lh $a0, 0x1a4($s0) +/* 0523FC 800517FC 46109282 */ mul.s $f10, $f18, $f16 +/* 052400 80051800 E60A0030 */ swc1 $f10, 0x30($s0) +/* 052404 80051804 E7AE0044 */ swc1 $f14, 0x44($sp) +/* 052408 80051808 AFA90064 */ sw $t1, 0x64($sp) +/* 05240C 8005180C 0C01C1FE */ jal coss_f +/* 052410 80051810 A3A80057 */ sb $t0, 0x57($sp) +/* 052414 80051814 44803000 */ mtc1 $zero, $f6 +/* 052418 80051818 83A80057 */ lb $t0, 0x57($sp) +/* 05241C 8005181C 4606003C */ c.lt.s $f0, $f6 +/* 052420 80051820 8FA90064 */ lw $t1, 0x64($sp) +/* 052424 80051824 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 052428 80051828 45000002 */ bc1f .L80051834 +/* 05242C 8005182C 46000086 */ mov.s $f2, $f0 +/* 052430 80051830 46000087 */ neg.s $f2, $f0 +.L80051834: +/* 052434 80051834 C6080030 */ lwc1 $f8, 0x30($s0) +/* 052438 80051838 3C018012 */ lui $at, %hi(gCurrentSurfaceType) # $at, 0x8012 +/* 05243C 8005183C 46024102 */ mul.s $f4, $f8, $f2 +/* 052440 80051840 E6040030 */ swc1 $f4, 0x30($s0) +/* 052444 80051844 11000013 */ beqz $t0, .L80051894 +/* 052448 80051848 A029D581 */ sb $t1, %lo(gCurrentSurfaceType)($at) +/* 05244C 8005184C 24040020 */ li $a0, 32 +/* 052450 80051850 A3A80057 */ sb $t0, 0x57($sp) +/* 052454 80051854 AFA90064 */ sw $t1, 0x64($sp) +/* 052458 80051858 0C0078A7 */ jal get_misc_asset +/* 05245C 8005185C E7AE0044 */ swc1 $f14, 0x44($sp) +/* 052460 80051860 83A80057 */ lb $t0, 0x57($sp) +/* 052464 80051864 C7B20034 */ lwc1 $f18, 0x34($sp) +/* 052468 80051868 00085880 */ sll $t3, $t0, 2 +/* 05246C 8005186C 004BC821 */ addu $t9, $v0, $t3 +/* 052470 80051870 C72A0000 */ lwc1 $f10, ($t9) +/* 052474 80051874 44804000 */ mtc1 $zero, $f8 +/* 052478 80051878 460A9182 */ mul.s $f6, $f18, $f10 +/* 05247C 8005187C 8FA90064 */ lw $t1, 0x64($sp) +/* 052480 80051880 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 052484 80051884 E7A60034 */ swc1 $f6, 0x34($sp) +/* 052488 80051888 A2000175 */ sb $zero, 0x175($s0) +/* 05248C 8005188C 1000000F */ b .L800518CC +/* 052490 80051890 E6080030 */ swc1 $f8, 0x30($s0) +.L80051894: +/* 052494 80051894 2401000A */ li $at, 10 +/* 052498 80051898 1521000C */ bne $t1, $at, .L800518CC +/* 05249C 8005189C 00000000 */ nop +/* 0524A0 800518A0 920C01EF */ lbu $t4, 0x1ef($s0) +/* 0524A4 800518A4 24050138 */ li $a1, 312 +/* 0524A8 800518A8 358D0004 */ ori $t5, $t4, 4 +/* 0524AC 800518AC A20D01EF */ sb $t5, 0x1ef($s0) +/* 0524B0 800518B0 8FA40078 */ lw $a0, 0x78($sp) +/* 0524B4 800518B4 E7AE0044 */ swc1 $f14, 0x44($sp) +/* 0524B8 800518B8 0C015C12 */ jal racer_play_sound +/* 0524BC 800518BC AFA90064 */ sw $t1, 0x64($sp) +/* 0524C0 800518C0 8FA90064 */ lw $t1, 0x64($sp) +/* 0524C4 800518C4 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 0524C8 800518C8 00000000 */ nop +.L800518CC: +/* 0524CC 800518CC 820E01D3 */ lb $t6, 0x1d3($s0) +/* 0524D0 800518D0 00000000 */ nop +/* 0524D4 800518D4 15C0001D */ bnez $t6, .L8005194C +/* 0524D8 800518D8 24010003 */ li $at, 3 +/* 0524DC 800518DC 1521001B */ bne $t1, $at, .L8005194C +/* 0524E0 800518E0 2404002D */ li $a0, 45 +/* 0524E4 800518E4 AFA90064 */ sw $t1, 0x64($sp) +/* 0524E8 800518E8 0C00322D */ jal normalise_time +/* 0524EC 800518EC E7AE0044 */ swc1 $f14, 0x44($sp) +/* 0524F0 800518F0 240F0002 */ li $t7, 2 +/* 0524F4 800518F4 A20201D3 */ sb $v0, 0x1d3($s0) +/* 0524F8 800518F8 A20F0203 */ sb $t7, 0x203($s0) +/* 0524FC 800518FC 8FA40078 */ lw $a0, 0x78($sp) +/* 052500 80051900 0C015C12 */ jal racer_play_sound +/* 052504 80051904 24050107 */ li $a1, 263 +/* 052508 80051908 8FA40078 */ lw $a0, 0x78($sp) +/* 05250C 8005190C 24050162 */ li $a1, 354 +/* 052510 80051910 24060008 */ li $a2, 8 +/* 052514 80051914 0C015C2E */ jal play_random_character_voice +/* 052518 80051918 24070082 */ li $a3, 130 +/* 05251C 8005191C 821801D8 */ lb $t8, 0x1d8($s0) +/* 052520 80051920 8FA90064 */ lw $t1, 0x64($sp) +/* 052524 80051924 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 052528 80051928 17000008 */ bnez $t8, .L8005194C +/* 05252C 8005192C 24050008 */ li $a1, 8 +/* 052530 80051930 86040000 */ lh $a0, ($s0) +/* 052534 80051934 E7AE0044 */ swc1 $f14, 0x44($sp) +/* 052538 80051938 0C01C8D2 */ jal func_80072348 +/* 05253C 8005193C AFA90064 */ sw $t1, 0x64($sp) +/* 052540 80051940 8FA90064 */ lw $t1, 0x64($sp) +/* 052544 80051944 C7AE0044 */ lwc1 $f14, 0x44($sp) +/* 052548 80051948 00000000 */ nop +.L8005194C: +/* 05254C 8005194C 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 052550 80051950 44819000 */ mtc1 $at, $f18 +/* 052554 80051954 C7A40050 */ lwc1 $f4, 0x50($sp) +/* 052558 80051958 00000000 */ nop +/* 05255C 8005195C 4612203C */ c.lt.s $f4, $f18 +/* 052560 80051960 00000000 */ nop +/* 052564 80051964 4500000F */ bc1f .L800519A4 +/* 052568 80051968 3C0A8012 */ lui $t2, %hi(gCurrentRacerInput) # $t2, 0x8012 +/* 05256C 8005196C 8D4AD528 */ lw $t2, %lo(gCurrentRacerInput)($t2) +/* 052570 80051970 00000000 */ nop +/* 052574 80051974 314B8000 */ andi $t3, $t2, 0x8000 +/* 052578 80051978 1560000A */ bnez $t3, .L800519A4 +/* 05257C 8005197C 00000000 */ nop +/* 052580 80051980 C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052584 80051984 3C014100 */ li $at, 0x41000000 # 8.000000 +/* 052588 80051988 460E6282 */ mul.s $f10, $f12, $f14 +/* 05258C 8005198C 44813000 */ mtc1 $at, $f6 +/* 052590 80051990 00000000 */ nop +/* 052594 80051994 46065202 */ mul.s $f8, $f10, $f6 +/* 052598 80051998 46086101 */ sub.s $f4, $f12, $f8 +/* 05259C 8005199C 10000006 */ b .L800519B8 +/* 0525A0 800519A0 E604002C */ swc1 $f4, 0x2c($s0) +.L800519A4: +/* 0525A4 800519A4 C7AA0050 */ lwc1 $f10, 0x50($sp) +/* 0525A8 800519A8 C612002C */ lwc1 $f18, 0x2c($s0) +/* 0525AC 800519AC 460E5182 */ mul.s $f6, $f10, $f14 +/* 0525B0 800519B0 46069201 */ sub.s $f8, $f18, $f6 +/* 0525B4 800519B4 E608002C */ swc1 $f8, 0x2c($s0) +.L800519B8: +/* 0525B8 800519B8 8FB90060 */ lw $t9, 0x60($sp) +/* 0525BC 800519BC 00000000 */ nop +/* 0525C0 800519C0 13200008 */ beqz $t9, .L800519E4 +/* 0525C4 800519C4 00000000 */ nop +/* 0525C8 800519C8 920201EE */ lbu $v0, 0x1ee($s0) +/* 0525CC 800519CC 00000000 */ nop +/* 0525D0 800519D0 28410010 */ slti $at, $v0, 0x10 +/* 0525D4 800519D4 10200004 */ beqz $at, .L800519E8 +/* 0525D8 800519D8 244C0001 */ addiu $t4, $v0, 1 +/* 0525DC 800519DC 10000002 */ b .L800519E8 +/* 0525E0 800519E0 A20C01EE */ sb $t4, 0x1ee($s0) +.L800519E4: +/* 0525E4 800519E4 A20001EE */ sb $zero, 0x1ee($s0) +.L800519E8: +/* 0525E8 800519E8 0C019884 */ jal get_viewport_count +/* 0525EC 800519EC AFA90064 */ sw $t1, 0x64($sp) +/* 0525F0 800519F0 8FA90064 */ lw $t1, 0x64($sp) +/* 0525F4 800519F4 28410002 */ slti $at, $v0, 2 +/* 0525F8 800519F8 1020004B */ beqz $at, .L80051B28 +/* 0525FC 800519FC 0009C080 */ sll $t8, $t1, 2 +/* 052600 80051A00 8FAD0060 */ lw $t5, 0x60($sp) +/* 052604 80051A04 8FAE0058 */ lw $t6, 0x58($sp) +/* 052608 80051A08 11A00009 */ beqz $t5, .L80051A30 +/* 05260C 80051A0C 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 052610 80051A10 C604002C */ lwc1 $f4, 0x2c($s0) +/* 052614 80051A14 44819800 */ mtc1 $at, $f19 +/* 052618 80051A18 44809000 */ mtc1 $zero, $f18 +/* 05261C 80051A1C 460022A1 */ cvt.d.s $f10, $f4 +/* 052620 80051A20 4632503C */ c.lt.d $f10, $f18 +/* 052624 80051A24 00000000 */ nop +/* 052628 80051A28 45010007 */ bc1t .L80051A48 +/* 05262C 80051A2C 00000000 */ nop +.L80051A30: +/* 052630 80051A30 15C00005 */ bnez $t6, .L80051A48 +/* 052634 80051A34 00000000 */ nop +/* 052638 80051A38 820F01FB */ lb $t7, 0x1fb($s0) +/* 05263C 80051A3C 00000000 */ nop +/* 052640 80051A40 11E00019 */ beqz $t7, .L80051AA8 +/* 052644 80051A44 00000000 */ nop +.L80051A48: +/* 052648 80051A48 920201DE */ lbu $v0, 0x1de($s0) +/* 05264C 80051A4C 8FA60078 */ lw $a2, 0x78($sp) +/* 052650 80051A50 284100FF */ slti $at, $v0, 0xff +/* 052654 80051A54 10200008 */ beqz $at, .L80051A78 +/* 052658 80051A58 00025080 */ sll $t2, $v0, 2 +/* 05265C 80051A5C 3C0B800E */ lui $t3, %hi(gSurfaceFlagTable) # $t3, 0x800e +/* 052660 80051A60 016A5821 */ addu $t3, $t3, $t2 +/* 052664 80051A64 8D6BCCF4 */ lw $t3, %lo(gSurfaceFlagTable)($t3) +/* 052668 80051A68 8CD80074 */ lw $t8, 0x74($a2) +/* 05266C 80051A6C 00000000 */ nop +/* 052670 80051A70 030BC825 */ or $t9, $t8, $t3 +/* 052674 80051A74 ACD90074 */ sw $t9, 0x74($a2) +.L80051A78: +/* 052678 80051A78 920201DF */ lbu $v0, 0x1df($s0) +/* 05267C 80051A7C 8FA60078 */ lw $a2, 0x78($sp) +/* 052680 80051A80 284100FF */ slti $at, $v0, 0xff +/* 052684 80051A84 10200008 */ beqz $at, .L80051AA8 +/* 052688 80051A88 00026880 */ sll $t5, $v0, 2 +/* 05268C 80051A8C 3C0E800E */ lui $t6, %hi(gSurfaceFlagTable) # $t6, 0x800e +/* 052690 80051A90 01CD7021 */ addu $t6, $t6, $t5 +/* 052694 80051A94 8DCECCF4 */ lw $t6, %lo(gSurfaceFlagTable)($t6) +/* 052698 80051A98 8CCC0074 */ lw $t4, 0x74($a2) +/* 05269C 80051A9C 000E7840 */ sll $t7, $t6, 1 +/* 0526A0 80051AA0 018F5025 */ or $t2, $t4, $t7 +/* 0526A4 80051AA4 ACCA0074 */ sw $t2, 0x74($a2) +.L80051AA8: +/* 0526A8 80051AA8 C606002C */ lwc1 $f6, 0x2c($s0) +/* 0526AC 80051AAC 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 0526B0 80051AB0 44812800 */ mtc1 $at, $f5 +/* 0526B4 80051AB4 44802000 */ mtc1 $zero, $f4 +/* 0526B8 80051AB8 46003221 */ cvt.d.s $f8, $f6 +/* 0526BC 80051ABC 4624403C */ c.lt.d $f8, $f4 +/* 0526C0 80051AC0 8FA60078 */ lw $a2, 0x78($sp) +/* 0526C4 80051AC4 45000018 */ bc1f .L80051B28 +/* 0526C8 80051AC8 0009C080 */ sll $t8, $t1, 2 +/* 0526CC 80051ACC 920201DE */ lbu $v0, 0x1de($s0) +/* 0526D0 80051AD0 3C19800E */ lui $t9, %hi(gSurfaceFlagTable4P) # $t9, 0x800e +/* 0526D4 80051AD4 284100FF */ slti $at, $v0, 0xff +/* 0526D8 80051AD8 10200007 */ beqz $at, .L80051AF8 +/* 0526DC 80051ADC 00025880 */ sll $t3, $v0, 2 +/* 0526E0 80051AE0 032BC821 */ addu $t9, $t9, $t3 +/* 0526E4 80051AE4 8F39CD40 */ lw $t9, %lo(gSurfaceFlagTable4P)($t9) +/* 0526E8 80051AE8 8CD80074 */ lw $t8, 0x74($a2) +/* 0526EC 80051AEC 00000000 */ nop +/* 0526F0 80051AF0 03196825 */ or $t5, $t8, $t9 +/* 0526F4 80051AF4 ACCD0074 */ sw $t5, 0x74($a2) +.L80051AF8: +/* 0526F8 80051AF8 920201DF */ lbu $v0, 0x1df($s0) +/* 0526FC 80051AFC 3C0F800E */ lui $t7, %hi(gSurfaceFlagTable4P) # $t7, 0x800e +/* 052700 80051B00 284100FF */ slti $at, $v0, 0xff +/* 052704 80051B04 10200007 */ beqz $at, .L80051B24 +/* 052708 80051B08 00026080 */ sll $t4, $v0, 2 +/* 05270C 80051B0C 01EC7821 */ addu $t7, $t7, $t4 +/* 052710 80051B10 8DEFCD40 */ lw $t7, %lo(gSurfaceFlagTable4P)($t7) +/* 052714 80051B14 8CCE0074 */ lw $t6, 0x74($a2) +/* 052718 80051B18 000F5040 */ sll $t2, $t7, 1 +/* 05271C 80051B1C 01CA5825 */ or $t3, $t6, $t2 +/* 052720 80051B20 ACCB0074 */ sw $t3, 0x74($a2) +.L80051B24: +/* 052724 80051B24 0009C080 */ sll $t8, $t1, 2 +.L80051B28: +/* 052728 80051B28 3C09800E */ lui $t1, %hi(gSurfaceSoundTable) # $t1, 0x800e +/* 05272C 80051B2C 8E020018 */ lw $v0, 0x18($s0) +/* 052730 80051B30 01384821 */ addu $t1, $t1, $t8 +/* 052734 80051B34 8FA60078 */ lw $a2, 0x78($sp) +/* 052738 80051B38 8D29CC80 */ lw $t1, %lo(gSurfaceSoundTable)($t1) +/* 05273C 80051B3C 14400011 */ bnez $v0, .L80051B84 +/* 052740 80051B40 00000000 */ nop +/* 052744 80051B44 1120000F */ beqz $t1, .L80051B84 +/* 052748 80051B48 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 05274C 80051B4C C60A002C */ lwc1 $f10, 0x2c($s0) +/* 052750 80051B50 44813800 */ mtc1 $at, $f7 +/* 052754 80051B54 44803000 */ mtc1 $zero, $f6 +/* 052758 80051B58 460054A1 */ cvt.d.s $f18, $f10 +/* 05275C 80051B5C 4626903C */ c.lt.d $f18, $f6 +/* 052760 80051B60 3124FFFF */ andi $a0, $t1, 0xffff +/* 052764 80051B64 45000007 */ bc1f .L80051B84 +/* 052768 80051B68 26050018 */ addiu $a1, $s0, 0x18 +/* 05276C 80051B6C 0C000741 */ jal play_sound_global +/* 052770 80051B70 AFA90064 */ sw $t1, 0x64($sp) +/* 052774 80051B74 8FA90064 */ lw $t1, 0x64($sp) +/* 052778 80051B78 8E020018 */ lw $v0, 0x18($s0) +/* 05277C 80051B7C 8FA60078 */ lw $a2, 0x78($sp) +/* 052780 80051B80 00000000 */ nop +.L80051B84: +/* 052784 80051B84 10400010 */ beqz $v0, .L80051BC8 +/* 052788 80051B88 00000000 */ nop +/* 05278C 80051B8C 11200008 */ beqz $t1, .L80051BB0 +/* 052790 80051B90 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 052794 80051B94 C604002C */ lwc1 $f4, 0x2c($s0) +/* 052798 80051B98 44814800 */ mtc1 $at, $f9 +/* 05279C 80051B9C 44804000 */ mtc1 $zero, $f8 +/* 0527A0 80051BA0 460022A1 */ cvt.d.s $f10, $f4 +/* 0527A4 80051BA4 462A403C */ c.lt.d $f8, $f10 +/* 0527A8 80051BA8 00000000 */ nop +/* 0527AC 80051BAC 45000006 */ bc1f .L80051BC8 +.L80051BB0: +/* 0527B0 80051BB0 00402025 */ move $a0, $v0 +/* 0527B4 80051BB4 0C001223 */ jal func_8000488C +/* 0527B8 80051BB8 AFA90064 */ sw $t1, 0x64($sp) +/* 0527BC 80051BBC 8FA90064 */ lw $t1, 0x64($sp) +/* 0527C0 80051BC0 8FA60078 */ lw $a2, 0x78($sp) +/* 0527C4 80051BC4 00000000 */ nop +.L80051BC8: +/* 0527C8 80051BC8 C60C002C */ lwc1 $f12, 0x2c($s0) +/* 0527CC 80051BCC 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 0527D0 80051BD0 44813800 */ mtc1 $at, $f7 +/* 0527D4 80051BD4 44803000 */ mtc1 $zero, $f6 +/* 0527D8 80051BD8 460064A1 */ cvt.d.s $f18, $f12 +/* 0527DC 80051BDC 4626903C */ c.lt.d $f18, $f6 +/* 0527E0 80051BE0 3C0E8012 */ lui $t6, %hi(gCurrentRacerMiscAssetPtr) # $t6, 0x8012 +/* 0527E4 80051BE4 45000020 */ bc1f .L80051C68 +/* 0527E8 80051BE8 00000000 */ nop +/* 0527EC 80051BEC 8FB90068 */ lw $t9, 0x68($sp) +/* 0527F0 80051BF0 00000000 */ nop +/* 0527F4 80051BF4 2B210004 */ slti $at, $t9, 4 +/* 0527F8 80051BF8 1420001B */ bnez $at, .L80051C68 +/* 0527FC 80051BFC 00000000 */ nop +/* 052800 80051C00 820D01E7 */ lb $t5, 0x1e7($s0) +/* 052804 80051C04 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 +/* 052808 80051C08 31AC0001 */ andi $t4, $t5, 1 +/* 05280C 80051C0C 448C2000 */ mtc1 $t4, $f4 +/* 052810 80051C10 44819800 */ mtc1 $at, $f19 +/* 052814 80051C14 46802220 */ cvt.s.w $f8, $f4 +/* 052818 80051C18 44809000 */ mtc1 $zero, $f18 +/* 05281C 80051C1C C6040078 */ lwc1 $f4, 0x78($s0) +/* 052820 80051C20 460042A1 */ cvt.d.s $f10, $f8 +/* 052824 80051C24 46325182 */ mul.d $f6, $f10, $f18 +/* 052828 80051C28 C60800A0 */ lwc1 $f8, 0xa0($s0) +/* 05282C 80051C2C C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052830 80051C30 46203020 */ cvt.s.d $f0, $f6 +/* 052834 80051C34 C606007C */ lwc1 $f6, 0x7c($s0) +/* 052838 80051C38 46004282 */ mul.s $f10, $f8, $f0 +/* 05283C 80051C3C C60800A4 */ lwc1 $f8, 0xa4($s0) +/* 052840 80051C40 460A2481 */ sub.s $f18, $f4, $f10 +/* 052844 80051C44 46004102 */ mul.s $f4, $f8, $f0 +/* 052848 80051C48 C608009C */ lwc1 $f8, 0x9c($s0) +/* 05284C 80051C4C E6120078 */ swc1 $f18, 0x78($s0) +/* 052850 80051C50 C6120080 */ lwc1 $f18, 0x80($s0) +/* 052854 80051C54 46043281 */ sub.s $f10, $f6, $f4 +/* 052858 80051C58 46004182 */ mul.s $f6, $f8, $f0 +/* 05285C 80051C5C E60A007C */ swc1 $f10, 0x7c($s0) +/* 052860 80051C60 46069101 */ sub.s $f4, $f18, $f6 +/* 052864 80051C64 E6040080 */ swc1 $f4, 0x80($s0) +.L80051C68: +/* 052868 80051C68 44805000 */ mtc1 $zero, $f10 +/* 05286C 80051C6C 3C014140 */ li $at, 0x41400000 # 12.000000 +/* 052870 80051C70 460A603C */ c.lt.s $f12, $f10 +/* 052874 80051C74 44810000 */ mtc1 $at, $f0 +/* 052878 80051C78 45000002 */ bc1f .L80051C84 +/* 05287C 80051C7C 46006386 */ mov.s $f14, $f12 +/* 052880 80051C80 46007387 */ neg.s $f14, $f14 +.L80051C84: +/* 052884 80051C84 460E003C */ c.lt.s $f0, $f14 +/* 052888 80051C88 00000000 */ nop +/* 05288C 80051C8C 45000002 */ bc1f .L80051C98 +/* 052890 80051C90 00000000 */ nop +/* 052894 80051C94 46000386 */ mov.s $f14, $f0 +.L80051C98: +/* 052898 80051C98 444FF800 */ cfc1 $t7, $31 +/* 05289C 80051C9C 8DCED564 */ lw $t6, %lo(gCurrentRacerMiscAssetPtr)($t6) +/* 0528A0 80051CA0 35E10003 */ ori $at, $t7, 3 +/* 0528A4 80051CA4 38210002 */ xori $at, $at, 2 +/* 0528A8 80051CA8 44C1F800 */ ctc1 $at, $31 +/* 0528AC 80051CAC 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 +/* 0528B0 80051CB0 46007224 */ cvt.w.s $f8, $f14 +/* 0528B4 80051CB4 44812800 */ mtc1 $at, $f5 +/* 0528B8 80051CB8 44024000 */ mfc1 $v0, $f8 +/* 0528BC 80051CBC 44CFF800 */ ctc1 $t7, $31 +/* 0528C0 80051CC0 44829000 */ mtc1 $v0, $f18 +/* 0528C4 80051CC4 00025080 */ sll $t2, $v0, 2 +/* 0528C8 80051CC8 468091A0 */ cvt.s.w $f6, $f18 +/* 0528CC 80051CCC 44802000 */ mtc1 $zero, $f4 +/* 0528D0 80051CD0 01CA1821 */ addu $v1, $t6, $t2 +/* 0528D4 80051CD4 46067001 */ sub.s $f0, $f14, $f6 +/* 0528D8 80051CD8 C4720000 */ lwc1 $f18, ($v1) +/* 0528DC 80051CDC 460002A1 */ cvt.d.s $f10, $f0 +/* 0528E0 80051CE0 462A2201 */ sub.d $f8, $f4, $f10 +/* 0528E4 80051CE4 C46A0004 */ lwc1 $f10, 4($v1) +/* 0528E8 80051CE8 460091A1 */ cvt.d.s $f6, $f18 +/* 0528EC 80051CEC 46283102 */ mul.d $f4, $f6, $f8 +/* 0528F0 80051CF0 3C01800E */ lui $at, %hi(D_800E6678 + 4) # $at, 0x800e +/* 0528F4 80051CF4 820B01D3 */ lb $t3, 0x1d3($s0) +/* 0528F8 80051CF8 46005482 */ mul.s $f18, $f10, $f0 +/* 0528FC 80051CFC C4336678 */ lwc1 $f19, %lo(D_800E6678)($at) +/* 052900 80051D00 460091A1 */ cvt.d.s $f6, $f18 +/* 052904 80051D04 46262200 */ add.d $f8, $f4, $f6 +/* 052908 80051D08 C432667C */ lwc1 $f18, %lo(D_800E6678 + 4)($at) +/* 05290C 80051D0C 462043A0 */ cvt.s.d $f14, $f8 +/* 052910 80051D10 C7A60034 */ lwc1 $f6, 0x34($sp) +/* 052914 80051D14 460072A1 */ cvt.d.s $f10, $f14 +/* 052918 80051D18 46325102 */ mul.d $f4, $f10, $f18 +/* 05291C 80051D1C 462023A0 */ cvt.s.d $f14, $f4 +/* 052920 80051D20 44802000 */ mtc1 $zero, $f4 +/* 052924 80051D24 46067382 */ mul.s $f14, $f14, $f6 +/* 052928 80051D28 19600016 */ blez $t3, .L80051D84 +/* 05292C 80051D2C 3C188012 */ lui $t8, %hi(gRaceStartTimer) # $t8, 0x8012 +/* 052930 80051D30 8F18D540 */ lw $t8, %lo(gRaceStartTimer)($t8) +/* 052934 80051D34 3C013F80 */ li $at, 0x3F800000 # 1.000000 +/* 052938 80051D38 17000010 */ bnez $t8, .L80051D7C +/* 05293C 80051D3C 00000000 */ nop +/* 052940 80051D40 44805800 */ mtc1 $zero, $f11 +/* 052944 80051D44 44805000 */ mtc1 $zero, $f10 +/* 052948 80051D48 460074A1 */ cvt.d.s $f18, $f14 +/* 05294C 80051D4C 44814000 */ mtc1 $at, $f8 +/* 052950 80051D50 46325032 */ c.eq.d $f10, $f18 +/* 052954 80051D54 3C014000 */ li $at, 0x40000000 # 2.000000 +/* 052958 80051D58 45010003 */ bc1t .L80051D68 +/* 05295C 80051D5C E60800B4 */ swc1 $f8, 0xb4($s0) +/* 052960 80051D60 44817000 */ mtc1 $at, $f14 +/* 052964 80051D64 00000000 */ nop +.L80051D68: +/* 052968 80051D68 821901D3 */ lb $t9, 0x1d3($s0) +/* 05296C 80051D6C 8FAD0080 */ lw $t5, 0x80($sp) +/* 052970 80051D70 C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052974 80051D74 032D6023 */ subu $t4, $t9, $t5 +/* 052978 80051D78 A20C01D3 */ sb $t4, 0x1d3($s0) +.L80051D7C: +/* 05297C 80051D7C 10000004 */ b .L80051D90 +/* 052980 80051D80 460060A1 */ cvt.d.s $f2, $f12 +.L80051D84: +/* 052984 80051D84 C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052988 80051D88 A20001D3 */ sb $zero, 0x1d3($s0) +/* 05298C 80051D8C 460060A1 */ cvt.d.s $f2, $f12 +.L80051D90: +/* 052990 80051D90 3C01C000 */ li $at, 0xC0000000 # -2.000000 +/* 052994 80051D94 44812800 */ mtc1 $at, $f5 +/* 052998 80051D98 00000000 */ nop +/* 05299C 80051D9C 4622203C */ c.lt.d $f4, $f2 +/* 0529A0 80051DA0 00000000 */ nop +/* 0529A4 80051DA4 45000039 */ bc1f .L80051E8C +/* 0529A8 80051DA8 3C014008 */ li $at, 0x40080000 # 2.125000 +/* 0529AC 80051DAC 44818800 */ mtc1 $at, $f17 +/* 0529B0 80051DB0 44808000 */ mtc1 $zero, $f16 +/* 0529B4 80051DB4 00000000 */ nop +/* 0529B8 80051DB8 4630103C */ c.lt.d $f2, $f16 +/* 0529BC 80051DBC 00000000 */ nop +/* 0529C0 80051DC0 45000032 */ bc1f .L80051E8C +/* 0529C4 80051DC4 00000000 */ nop +/* 0529C8 80051DC8 860F0000 */ lh $t7, ($s0) +/* 0529CC 80051DCC 2401FFFF */ li $at, -1 +/* 0529D0 80051DD0 15E10004 */ bne $t7, $at, .L80051DE4 +/* 0529D4 80051DD4 3C0A8012 */ lui $t2, %hi(gCurrentStickY) # $t2, 0x8012 +/* 0529D8 80051DD8 820E0214 */ lb $t6, 0x214($s0) +/* 0529DC 80051DDC 00000000 */ nop +/* 0529E0 80051DE0 11C0002A */ beqz $t6, .L80051E8C +.L80051DE4: +/* 0529E4 80051DE4 3C01800E */ lui $at, %hi(D_800E6680 + 4) # $at, 0x800e +/* 0529E8 80051DE8 C4296680 */ lwc1 $f9, %lo(D_800E6680)($at) +/* 0529EC 80051DEC C4286684 */ lwc1 $f8, %lo(D_800E6680 + 4)($at) +/* 0529F0 80051DF0 46228181 */ sub.d $f6, $f16, $f2 +/* 0529F4 80051DF4 24010004 */ li $at, 4 +/* 0529F8 80051DF8 46283282 */ mul.d $f10, $f6, $f8 +/* 0529FC 80051DFC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 +/* 052A00 80051E00 15210007 */ bne $t1, $at, .L80051E20 +/* 052A04 80051E04 46205020 */ cvt.s.d $f0, $f10 +/* 052A08 80051E08 3C013FD0 */ li $at, 0x3FD00000 # 1.625000 +/* 052A0C 80051E0C 44812800 */ mtc1 $at, $f5 +/* 052A10 80051E10 44802000 */ mtc1 $zero, $f4 +/* 052A14 80051E14 460004A1 */ cvt.d.s $f18, $f0 +/* 052A18 80051E18 46249182 */ mul.d $f6, $f18, $f4 +/* 052A1C 80051E1C 46203020 */ cvt.s.d $f0, $f6 +.L80051E20: +/* 052A20 80051E20 8D4AD538 */ lw $t2, %lo(gCurrentStickY)($t2) +/* 052A24 80051E24 00000000 */ nop +/* 052A28 80051E28 2941FFE7 */ slti $at, $t2, -0x19 +/* 052A2C 80051E2C 10200017 */ beqz $at, .L80051E8C +/* 052A30 80051E30 00000000 */ nop +/* 052A34 80051E34 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) +/* 052A38 80051E38 00000000 */ nop +/* 052A3C 80051E3C 304B8000 */ andi $t3, $v0, 0x8000 +/* 052A40 80051E40 15600012 */ bnez $t3, .L80051E8C +/* 052A44 80051E44 30584000 */ andi $t8, $v0, 0x4000 +/* 052A48 80051E48 13000010 */ beqz $t8, .L80051E8C +/* 052A4C 80051E4C 00000000 */ nop +/* 052A50 80051E50 821901D7 */ lb $t9, 0x1d7($s0) +/* 052A54 80051E54 00000000 */ nop +/* 052A58 80051E58 2B210005 */ slti $at, $t9, 5 +/* 052A5C 80051E5C 14200006 */ bnez $at, .L80051E78 +/* 052A60 80051E60 3C01800E */ lui $at, %hi(D_800E6688 + 4) # $at, 0x800e +/* 052A64 80051E64 C42B6688 */ lwc1 $f11, %lo(D_800E6688)($at) +/* 052A68 80051E68 C42A668C */ lwc1 $f10, %lo(D_800E6688 + 4)($at) +/* 052A6C 80051E6C 46000221 */ cvt.d.s $f8, $f0 +/* 052A70 80051E70 462A4482 */ mul.d $f18, $f8, $f10 +/* 052A74 80051E74 46209020 */ cvt.s.d $f0, $f18 +.L80051E78: +/* 052A78 80051E78 46006100 */ add.s $f4, $f12, $f0 +/* 052A7C 80051E7C 44803000 */ mtc1 $zero, $f6 +/* 052A80 80051E80 E604002C */ swc1 $f4, 0x2c($s0) +/* 052A84 80051E84 C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052A88 80051E88 E60600B8 */ swc1 $f6, 0xb8($s0) +.L80051E8C: +/* 052A8C 80051E8C C60800B8 */ lwc1 $f8, 0xb8($s0) +/* 052A90 80051E90 3C01800E */ lui $at, %hi(D_800E6690 + 4) # $at, 0x800e +/* 052A94 80051E94 460E4282 */ mul.s $f10, $f8, $f14 +/* 052A98 80051E98 C4256690 */ lwc1 $f5, %lo(D_800E6690)($at) +/* 052A9C 80051E9C C4246694 */ lwc1 $f4, %lo(D_800E6690 + 4)($at) +/* 052AA0 80051EA0 C60800B4 */ lwc1 $f8, 0xb4($s0) +/* 052AA4 80051EA4 460054A1 */ cvt.d.s $f18, $f10 +/* 052AA8 80051EA8 46249182 */ mul.d $f6, $f18, $f4 +/* 052AAC 80051EAC 3C01800E */ lui $at, %hi(D_800E6698) # $at, 0x800e +/* 052AB0 80051EB0 46087282 */ mul.s $f10, $f14, $f8 +/* 052AB4 80051EB4 46203020 */ cvt.s.d $f0, $f6 +/* 052AB8 80051EB8 460A6481 */ sub.s $f18, $f12, $f10 +/* 052ABC 80051EBC 44805000 */ mtc1 $zero, $f10 +/* 052AC0 80051EC0 E612002C */ swc1 $f18, 0x2c($s0) +/* 052AC4 80051EC4 C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052AC8 80051EC8 C424669C */ lwc1 $f4, %lo(D_800E6698 + 4)($at) +/* 052ACC 80051ECC C4256698 */ lwc1 $f5, %lo(D_800E6698)($at) +/* 052AD0 80051ED0 460060A1 */ cvt.d.s $f2, $f12 +/* 052AD4 80051ED4 4622203C */ c.lt.d $f4, $f2 +/* 052AD8 80051ED8 00000000 */ nop +/* 052ADC 80051EDC 4500000D */ bc1f .L80051F14 +/* 052AE0 80051EE0 3C01800E */ lui $at, %hi(D_800E66A0 + 4) # $at, 0x800e +/* 052AE4 80051EE4 C42766A0 */ lwc1 $f7, %lo(D_800E66A0)($at) +/* 052AE8 80051EE8 C42666A4 */ lwc1 $f6, %lo(D_800E66A0 + 4)($at) +/* 052AEC 80051EEC 00000000 */ nop +/* 052AF0 80051EF0 4626103C */ c.lt.d $f2, $f6 +/* 052AF4 80051EF4 00000000 */ nop +/* 052AF8 80051EF8 45000006 */ bc1f .L80051F14 +/* 052AFC 80051EFC 00000000 */ nop +/* 052B00 80051F00 44804000 */ mtc1 $zero, $f8 +/* 052B04 80051F04 00000000 */ nop +/* 052B08 80051F08 E608002C */ swc1 $f8, 0x2c($s0) +/* 052B0C 80051F0C C60C002C */ lwc1 $f12, 0x2c($s0) +/* 052B10 80051F10 00000000 */ nop +.L80051F14: +/* 052B14 80051F14 460A603C */ c.lt.s $f12, $f10 +/* 052B18 80051F18 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 +/* 052B1C 80051F1C 4500000D */ bc1f .L80051F54 +/* 052B20 80051F20 00000000 */ nop +/* 052B24 80051F24 46006480 */ add.s $f18, $f12, $f0 +/* 052B28 80051F28 44802000 */ mtc1 $zero, $f4 +/* 052B2C 80051F2C E612002C */ swc1 $f18, 0x2c($s0) +/* 052B30 80051F30 C606002C */ lwc1 $f6, 0x2c($s0) +/* 052B34 80051F34 00000000 */ nop +/* 052B38 80051F38 4606203C */ c.lt.s $f4, $f6 +/* 052B3C 80051F3C 00000000 */ nop +/* 052B40 80051F40 45000010 */ bc1f .L80051F84 +/* 052B44 80051F44 00000000 */ nop +/* 052B48 80051F48 44804000 */ mtc1 $zero, $f8 +/* 052B4C 80051F4C 1000000D */ b .L80051F84 +/* 052B50 80051F50 E608002C */ swc1 $f8, 0x2c($s0) +.L80051F54: +/* 052B54 80051F54 46006281 */ sub.s $f10, $f12, $f0 +/* 052B58 80051F58 44802000 */ mtc1 $zero, $f4 +/* 052B5C 80051F5C E60A002C */ swc1 $f10, 0x2c($s0) +/* 052B60 80051F60 C612002C */ lwc1 $f18, 0x2c($s0) +/* 052B64 80051F64 00000000 */ nop +/* 052B68 80051F68 4604903C */ c.lt.s $f18, $f4 +/* 052B6C 80051F6C 00000000 */ nop +/* 052B70 80051F70 45000004 */ bc1f .L80051F84 +/* 052B74 80051F74 00000000 */ nop +/* 052B78 80051F78 44803000 */ mtc1 $zero, $f6 +/* 052B7C 80051F7C 00000000 */ nop +/* 052B80 80051F80 E606002C */ swc1 $f6, 0x2c($s0) +.L80051F84: +/* 052B84 80051F84 C42ED56C */ lwc1 $f14, %lo(gCurrentRacerWeightStat)($at) +/* 052B88 80051F88 C7AA0084 */ lwc1 $f10, 0x84($sp) +/* 052B8C 80051F8C C4C80020 */ lwc1 $f8, 0x20($a2) +/* 052B90 80051F90 460A7482 */ mul.s $f18, $f14, $f10 +/* 052B94 80051F94 3C0D8012 */ lui $t5, %hi(gDialogueCameraAngle) # $t5, 0x8012 +/* 052B98 80051F98 3C01800E */ lui $at, %hi(D_800E66A8 + 4) # $at, 0x800e +/* 052B9C 80051F9C 46124101 */ sub.s $f4, $f8, $f18 +/* 052BA0 80051FA0 E4C40020 */ swc1 $f4, 0x20($a2) +/* 052BA4 80051FA4 85ADD586 */ lh $t5, %lo(gDialogueCameraAngle)($t5) +/* 052BA8 80051FA8 00000000 */ nop +/* 052BAC 80051FAC 11A00003 */ beqz $t5, .L80051FBC +/* 052BB0 80051FB0 00000000 */ nop +/* 052BB4 80051FB4 44807000 */ mtc1 $zero, $f14 +/* 052BB8 80051FB8 00000000 */ nop +.L80051FBC: +/* 052BBC 80051FBC C60600B8 */ lwc1 $f6, 0xb8($s0) +/* 052BC0 80051FC0 C42966A8 */ lwc1 $f9, %lo(D_800E66A8)($at) +/* 052BC4 80051FC4 C42866AC */ lwc1 $f8, %lo(D_800E66A8 + 4)($at) +/* 052BC8 80051FC8 460032A1 */ cvt.d.s $f10, $f6 +/* 052BCC 80051FCC 4628503C */ c.lt.d $f10, $f8 +/* 052BD0 80051FD0 00000000 */ nop +/* 052BD4 80051FD4 4500003F */ bc1f .L800520D4 +/* 052BD8 80051FD8 00000000 */ nop +/* 052BDC 80051FDC 820C01D7 */ lb $t4, 0x1d7($s0) +/* 052BE0 80051FE0 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 +/* 052BE4 80051FE4 29810005 */ slti $at, $t4, 5 +/* 052BE8 80051FE8 1020003A */ beqz $at, .L800520D4 +/* 052BEC 80051FEC 00000000 */ nop +/* 052BF0 80051FF0 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) +/* 052BF4 80051FF4 00000000 */ nop +/* 052BF8 80051FF8 15E00036 */ bnez $t7, .L800520D4 +/* 052BFC 80051FFC 00000000 */ nop +/* 052C00 80052000 C60C009C */ lwc1 $f12, 0x9c($s0) +/* 052C04 80052004 44802800 */ mtc1 $zero, $f5 +/* 052C08 80052008 44802000 */ mtc1 $zero, $f4 +/* 052C0C 8005200C 460064A1 */ cvt.d.s $f18, $f12 +/* 052C10 80052010 4624903C */ c.lt.d $f18, $f4 +/* 052C14 80052014 3C01800E */ lui $at, %hi(D_800E66B0 + 4) # $at, 0x800e +/* 052C18 80052018 45000020 */ bc1f .L8005209C +/* 052C1C 8005201C 46006086 */ mov.s $f2, $f12 +/* 052C20 80052020 C42B66B0 */ lwc1 $f11, %lo(D_800E66B0)($at) +/* 052C24 80052024 C42A66B4 */ lwc1 $f10, %lo(D_800E66B0 + 4)($at) +/* 052C28 80052028 46001087 */ neg.s $f2, $f2 +/* 052C2C 8005202C 460011A1 */ cvt.d.s $f6, $f2 +/* 052C30 80052030 462A3201 */ sub.d $f8, $f6, $f10 +/* 052C34 80052034 44809800 */ mtc1 $zero, $f19 +/* 052C38 80052038 462040A0 */ cvt.s.d $f2, $f8 +/* 052C3C 8005203C 44809000 */ mtc1 $zero, $f18 +/* 052C40 80052040 46001021 */ cvt.d.s $f0, $f2 +/* 052C44 80052044 4632003C */ c.lt.d $f0, $f18 +/* 052C48 80052048 3C01800E */ lui $at, %hi(D_800E66B8 + 4) # $at, 0x800e +/* 052C4C 8005204C 45000004 */ bc1f .L80052060 +/* 052C50 80052050 00000000 */ nop +/* 052C54 80052054 44801000 */ mtc1 $zero, $f2 +/* 052C58 80052058 00000000 */ nop +/* 052C5C 8005205C 46001021 */ cvt.d.s $f0, $f2 +.L80052060: +/* 052C60 80052060 C42566B8 */ lwc1 $f5, %lo(D_800E66B8)($at) +/* 052C64 80052064 C42466BC */ lwc1 $f4, %lo(D_800E66B8 + 4)($at) +/* 052C68 80052068 3C01800E */ lui $at, %hi(D_800E66C0) # $at, 0x800e +/* 052C6C 8005206C 4620203C */ c.lt.d $f4, $f0 +/* 052C70 80052070 00000000 */ nop +/* 052C74 80052074 45000003 */ bc1f .L80052084 +/* 052C78 80052078 00000000 */ nop +/* 052C7C 8005207C C42266C0 */ lwc1 $f2, %lo(D_800E66C0)($at) +/* 052C80 80052080 00000000 */ nop +.L80052084: +/* 052C84 80052084 3C01420C */ li $at, 0x420C0000 # 35.000000 +/* 052C88 80052088 44813000 */ mtc1 $at, $f6 +/* 052C8C 8005208C 00000000 */ nop +/* 052C90 80052090 46061082 */ mul.s $f2, $f2, $f6 +/* 052C94 80052094 10000004 */ b .L800520A8 +/* 052C98 80052098 3C014080 */ lui $at, 0x4080 +.L8005209C: +/* 052C9C 8005209C 44801000 */ mtc1 $zero, $f2 +/* 052CA0 800520A0 00000000 */ nop +/* 052CA4 800520A4 3C014080 */ li $at, 0x40800000 # 4.000000 +.L800520A8: +/* 052CA8 800520A8 44815000 */ mtc1 $at, $f10 +/* 052CAC 800520AC C7A60084 */ lwc1 $f6, 0x84($sp) +/* 052CB0 800520B0 46025201 */ sub.s $f8, $f10, $f2 +/* 052CB4 800520B4 00000000 */ nop +/* 052CB8 800520B8 46086483 */ div.s $f18, $f12, $f8 +/* 052CBC 800520BC C608002C */ lwc1 $f8, 0x2c($s0) +/* 052CC0 800520C0 46127102 */ mul.s $f4, $f14, $f18 +/* 052CC4 800520C4 00000000 */ nop +/* 052CC8 800520C8 46062282 */ mul.s $f10, $f4, $f6 +/* 052CCC 800520CC 460A4480 */ add.s $f18, $f8, $f10 +/* 052CD0 800520D0 E612002C */ swc1 $f18, 0x2c($s0) +.L800520D4: +/* 052CD4 800520D4 3C01800E */ lui $at, %hi(D_800E66C8 + 4) # $at, 0x800e +/* 052CD8 800520D8 C606002C */ lwc1 $f6, 0x2c($s0) +/* 052CDC 800520DC C42B66C8 */ lwc1 $f11, %lo(D_800E66C8)($at) +/* 052CE0 800520E0 C42A66CC */ lwc1 $f10, %lo(D_800E66C8 + 4)($at) +/* 052CE4 800520E4 46003221 */ cvt.d.s $f8, $f6 +/* 052CE8 800520E8 462A4482 */ mul.d $f18, $f8, $f10 +/* 052CEC 800520EC C6040008 */ lwc1 $f4, 8($s0) +/* 052CF0 800520F0 3C013FC0 */ li $at, 0x3FC00000 # 1.500000 +/* 052CF4 800520F4 46002021 */ cvt.d.s $f0, $f4 +/* 052CF8 800520F8 44813800 */ mtc1 $at, $f7 +/* 052CFC 800520FC 46320100 */ add.d $f4, $f0, $f18 +/* 052D00 80052100 44803000 */ mtc1 $zero, $f6 +/* 052D04 80052104 820E01E1 */ lb $t6, 0x1e1($s0) +/* 052D08 80052108 46262202 */ mul.d $f8, $f4, $f6 +/* 052D0C 8005210C 3C0A8012 */ lui $t2, %hi(gCurrentCarSteerVel) # $t2, 0x8012 +/* 052D10 80052110 A20E01E8 */ sb $t6, 0x1e8($s0) +/* 052D14 80052114 820B01E0 */ lb $t3, 0x1e0($s0) +/* 052D18 80052118 46280281 */ sub.d $f10, $f0, $f8 +/* 052D1C 8005211C 462054A0 */ cvt.s.d $f18, $f10 +/* 052D20 80052120 E6120008 */ swc1 $f18, 8($s0) +/* 052D24 80052124 8D4AD554 */ lw $t2, %lo(gCurrentCarSteerVel)($t2) +/* 052D28 80052128 11600013 */ beqz $t3, .L80052178 +/* 052D2C 8005212C AE0A0110 */ sw $t2, 0x110($s0) +/* 052D30 80052130 3C188012 */ lui $t8, %hi(gCurrentPlayerIndex) # $t8, 0x8012 +/* 052D34 80052134 8F18D55C */ lw $t8, %lo(gCurrentPlayerIndex)($t8) +/* 052D38 80052138 2401FFFF */ li $at, -1 +/* 052D3C 8005213C 1301000F */ beq $t8, $at, .L8005217C +/* 052D40 80052140 8FBF0024 */ lw $ra, 0x24($sp) +/* 052D44 80052144 920201DC */ lbu $v0, 0x1dc($s0) +/* 052D48 80052148 240100FF */ li $at, 255 +/* 052D4C 8005214C 1041000A */ beq $v0, $at, .L80052178 +/* 052D50 80052150 0002C840 */ sll $t9, $v0, 1 +/* 052D54 80052154 3C0D800E */ lui $t5, %hi(D_800DCCCC) # $t5, 0x800e +/* 052D58 80052158 01B96821 */ addu $t5, $t5, $t9 +/* 052D5C 8005215C 95ADCCCC */ lhu $t5, %lo(D_800DCCCC)($t5) +/* 052D60 80052160 3C018012 */ lui $at, %hi(D_8011D550) # $at, 0x8012 +/* 052D64 80052164 A42DD550 */ sh $t5, %lo(D_8011D550)($at) +/* 052D68 80052168 820C01E0 */ lb $t4, 0x1e0($s0) +/* 052D6C 8005216C 3C018012 */ lui $at, %hi(D_8011D552) # $at, 0x8012 +/* 052D70 80052170 A42CD552 */ sh $t4, %lo(D_8011D552)($at) +/* 052D74 80052174 A20001E0 */ sb $zero, 0x1e0($s0) +.L80052178: +/* 052D78 80052178 8FBF0024 */ lw $ra, 0x24($sp) +.L8005217C: +/* 052D7C 8005217C 8FB00020 */ lw $s0, 0x20($sp) +/* 052D80 80052180 03E00008 */ jr $ra +/* 052D84 80052184 27BD0078 */ addiu $sp, $sp, 0x78 + diff --git a/asm/unknown_062930/func_80061D30.s b/asm/object_animate.s similarity index 98% rename from asm/unknown_062930/func_80061D30.s rename to asm/object_animate.s index c2069512..61922959 100644 --- a/asm/unknown_062930/func_80061D30.s +++ b/asm/object_animate.s @@ -1,4 +1,13 @@ -glabel func_80061D30 +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80061D30 */ + +.include "macros.inc" + +.set noat # allow manual use of $at +.set noreorder # dont insert nops after branches +.set gp=64 # 64-bit instructions are used + +glabel object_animate /* 062930 80061D30 27BDFFF8 */ addiu $sp, $sp, -8 /* 062934 80061D34 AFB10004 */ sw $s1, 4($sp) /* 062938 80061D38 AFB00000 */ sw $s0, ($sp) @@ -371,3 +380,4 @@ glabel func_80061D30 /* 062E88 80062288 27BD0008 */ addiu $sp, $sp, 8 /* 062E8C 8006228C 00000000 */ nop + diff --git a/asm/unknown_062930.s b/asm/unknown_062930.s deleted file mode 100644 index 5fb9a69a..00000000 --- a/asm/unknown_062930.s +++ /dev/null @@ -1,10 +0,0 @@ -/* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x80061D30 */ - -.include "macros.inc" - -.set noat # allow manual use of $at -.set noreorder # dont insert nops after branches -.set gp=64 # 64-bit instructions are used - -.include "asm/unknown_062930/func_80061D30.s" diff --git a/include/structs.h b/include/structs.h index 7ef5d09a..53f09051 100644 --- a/include/structs.h +++ b/include/structs.h @@ -389,7 +389,7 @@ typedef struct LevelHeader { /* 0x08 */ f32 course_height; /* 0x0C */ u8 unkC[10]; /* 0x16 */ u8 unk16[10]; - /* 0x20 */ s32 *unk20; + /* 0x20 */ s8 *AILevelTable; /* 0x24 */ u8 pad24[6]; /* 0x2A */ u8 unk2A; @@ -459,12 +459,13 @@ typedef struct LevelHeader { /* 0xBA */ s16 unkBA; /* 0xBC */ u8 unkBC; /* 0xBD */ s8 unkBD; - /* 0xBE */ u8 unkBE; - /* 0xBF */ u8 unkBF; - /* 0xC0 */ u8 unkC0; - /* 0xC1 */ u8 unkC1; - /* 0xC2 */ u8 unkC2; - /* 0xC3 */ u8 unkC3; + // Multiplayer gradient background + /* 0xBE */ u8 BGColourBottomR; + /* 0xBF */ u8 BGColourBottomG; + /* 0xC0 */ u8 BGColourBottomB; + /* 0xC1 */ u8 BGColourTopR; + /* 0xC2 */ u8 BGColourTopG; + /* 0xC3 */ u8 BGColourTopB; } LevelHeader; /* Size: 0x50 bytes */ @@ -587,7 +588,7 @@ typedef struct ObjectModel { /* 0x2A */ u8 pad2A[4]; /* 0x2E */ u8 unk2E; /* 0x2F */ char pad2F[1]; - /* 0x30 */ s16 unk30; + /* 0x30 */ s16 references; /* 0x32 */ s16 unk32; /* 0x34 */ u8 pad34[4]; /* 0x38 */ TriangleBatchInfo* batches; @@ -1236,7 +1237,7 @@ typedef struct Object_Racer { /* 0x10C */ s32 unk10C; /* 0x110 */ s32 unk110; /* 0x114 */ s32 unk114; - /* 0x118 */ struct unk80119C38 *unk118; + /* 0x118 */ struct VehicleSoundData *vehicleSound; /* 0x11C */ f32 unk11C; /* 0x120 */ f32 unk120; /* 0x124 */ f32 unk124; @@ -1283,7 +1284,7 @@ typedef struct Object_Racer { /* 0x193 */ s8 lap; /* 0x194 */ s8 countLap; /* 0x195 */ s8 magnetLevel3; - /* 0x196 */ s16 unk196; + /* 0x196 */ s16 cameraYaw; /* 0x198 */ s16 unk198; /* 0x19A */ s16 unk19A; /* 0x19C */ s16 unk19C; @@ -1660,16 +1661,17 @@ typedef struct Object_68 { ObjectModel *objModel; TextureHeader *texHeader; }; - /* 0x04 */ Vertex *unk4[3]; - /* 0x10 */ s16 unk10; - /* 0x12 */ s16 unk12; - /* 0x14 */ s16 unk14; + /* 0x04 */ Vertex *unk4[2]; + /* 0x0C */ s32 *unkC; + /* 0x10 */ s16 animationID; + /* 0x12 */ s16 animationFrame; + /* 0x14 */ s16 animationFrameCount; /* 0x16 */ s16 unk16; /* 0x18 */ s16 unk18; /* 0x1A */ s16 unk1A; /* 0x1C */ s16 unk1C; /* 0x1E */ s8 unk1E; - /* 0x1F */ s8 unk1F; + /* 0x1F */ s8 animationTaskNum; /* 0x20 */ s8 unk20; /* 0x21 */ s8 unk21; /* 0x22 */ s16 unk22; diff --git a/src/unknown_008C40.c b/src/audio_spatial.c similarity index 92% rename from src/unknown_008C40.c rename to src/audio_spatial.c index a2b53798..b4dd96ab 100644 --- a/src/unknown_008C40.c +++ b/src/audio_spatial.c @@ -1,11 +1,11 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80008040 */ -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "types.h" #include "macros.h" #include "audio_internal.h" -#include "unknown_005740.h" +#include "audio_vehicle.h" #include "memory.h" #include "audio.h" #include "textures_sprites.h" @@ -65,7 +65,7 @@ void func_80008040(void) { func_80008174(); } #else -GLOBAL_ASM("asm/non_matchings/unknown_008C40/func_80008040.s") +GLOBAL_ASM("asm/non_matchings/audio_spatial/func_80008040.s") #endif void func_80008140(void) { @@ -127,10 +127,10 @@ void func_80008174(void) { D_8011AC18 = 0; } #else -GLOBAL_ASM("asm/non_matchings/unknown_008C40/func_80008174.s") +GLOBAL_ASM("asm/non_matchings/audio_spatial/func_80008174.s") #endif -GLOBAL_ASM("asm/non_matchings/unknown_008C40/func_80008438.s") +GLOBAL_ASM("asm/non_matchings/audio_spatial/func_80008438.s") s32 func_800090C0(f32 arg0, f32 arg1, s32 arg2) { s32 temp_v1; @@ -284,7 +284,7 @@ void func_800098A4(u8 arg0, u16 soundId, f32 x, f32 y, f32 z, u8 arg5, u8 arg6, if ((argB < 7) && (argC < 30)) { temp_v1 = &D_80119C58[argB]; - temp_a0 = &temp_v1->unk4 + argC * 3; //This can't be right... + temp_a0 = (Vec3f *) (((u32 *) &temp_v1->unk4) + argC * 3); //This can't be right... temp_a0->x = x; temp_a0->y = y; temp_a0->z = z; @@ -324,7 +324,7 @@ void func_80009968(f32 x, f32 y, f32 z, u8 arg3, u8 arg4, u8 arg5) { } } #else -GLOBAL_ASM("asm/non_matchings/unknown_008C40/func_80009968.s") +GLOBAL_ASM("asm/non_matchings/audio_spatial/func_80009968.s") #endif s32 func_800099EC(u8 arg0) { @@ -424,21 +424,22 @@ void func_80009B7C(s32 *soundState, f32 x, f32 y, f32 z) { } } #else -GLOBAL_ASM("asm/non_matchings/unknown_008C40/func_80009B7C.s") +GLOBAL_ASM("asm/non_matchings/audio_spatial/func_80009B7C.s") #endif -GLOBAL_ASM("asm/non_matchings/unknown_008C40/func_80009D6C.s") +GLOBAL_ASM("asm/non_matchings/audio_spatial/func_80009D6C.s") #ifdef NON_EQUIVALENT extern unk80119C58 **D_80119C5C; extern unk8011A6D8 **D_8011A6DC; +// debug_render_audio_effects void func_8000A184(Gfx **arg0, Vertex **arg1, Triangle **arg2) { s32 i, j; for (i = 0; i < 7; i++) { if (D_80119C58[i].unk16C != 0) { for (j = 0; j < D_80119C58[i].unk17C; j++) { - func_8000A414(arg0, arg1, arg2, (floatXYZVals *) &D_80119C5C[i], 0xFF, 0xFF, 0); + debug_render_line(arg0, arg1, arg2, (floatXYZVals *) &D_80119C5C[i], 0xFF, 0xFF, 0); } } } @@ -446,13 +447,13 @@ void func_8000A184(Gfx **arg0, Vertex **arg1, Triangle **arg2) { for (i = 0; i < 7; i++) { if (D_8011A6D8[i].unk0.unk0_02 != 0) { for (j = 0; j < D_8011A6D8[i].unkB8; j++) { - func_8000A414(arg0, arg1, arg2, (floatXYZVals *) &D_8011A6DC[i], 0xFF, 0xFF, 0); + debug_render_line(arg0, arg1, arg2, (floatXYZVals *) &D_8011A6DC[i], 0xFF, 0xFF, 0); } } } } #else -GLOBAL_ASM("asm/non_matchings/unknown_008C40/func_8000A184.s") +GLOBAL_ASM("asm/non_matchings/audio_spatial/func_8000A184.s") #endif void func_8000A2E8(s32 arg0) { @@ -471,7 +472,11 @@ void func_8000A2E8(s32 arg0) { } } -void func_8000A414(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *arg3, u8 red, u8 green, u8 blue) { +/** + * Generates and renders a coloured line visible from anywhere. + * Allows use of a colour, that interpolates from bright to dark from the beginning to the end of the line. +*/ +void debug_render_line(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *coords, u8 red, u8 green, u8 blue) { Gfx *temp_dlist; Vertex *temp_verts; Triangle *temp_tris; @@ -482,12 +487,12 @@ void func_8000A414(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *a s16 y2; s16 z2; - x1 = arg3->x1; - y1 = arg3->y1; - z1 = arg3->z1; - x2 = arg3->x2; - y2 = arg3->y2; - z2 = arg3->z2; + x1 = coords->x1; + y1 = coords->y1; + z1 = coords->z1; + x2 = coords->x2; + y2 = coords->y2; + z2 = coords->z2; temp_dlist = *dlist; temp_verts = *verts; diff --git a/src/unknown_008C40.h b/src/audio_spatial.h similarity index 93% rename from src/unknown_008C40.h rename to src/audio_spatial.h index 00612303..fe17ddfa 100644 --- a/src/unknown_008C40.h +++ b/src/audio_spatial.h @@ -1,5 +1,5 @@ -#ifndef _UNKNOWN_008C40_H_ -#define _UNKNOWN_008C40_H_ +#ifndef _AUDIO_SPATIAL_H_ +#define _AUDIO_SPATIAL_H_ #include "types.h" #include "libc/math.h" @@ -61,7 +61,7 @@ void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 arg6, void func_800098A4(u8 arg0, u16 soundId, f32 x, f32 y, f32 z, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u16 arg9, u8 argA, u8 argB, u8 argC); s32 func_800099EC(u8 arg0); -void func_8000A414(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *arg3, u8 red, u8 green, u8 blue); +void debug_render_line(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *coords, u8 red, u8 green, u8 blue); void func_80006BFC(Object *obj, ObjectSegment *segment, Object *obj2, s32 updateRate); void update_spatial_audio_position(SoundMask *arg0, f32 x, f32 y, f32 z); s32 func_80009AB4(u8 arg0); diff --git a/src/audio_vehicle.c b/src/audio_vehicle.c new file mode 100644 index 00000000..a09fb711 --- /dev/null +++ b/src/audio_vehicle.c @@ -0,0 +1,955 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x80004B40 */ + +#include "audio_vehicle.h" + +#include "types.h" +#include "macros.h" +#include "audio_spatial.h" +#include "audiosfx.h" +#include "objects.h" +#include "controller.h" +#include "racer.h" +#include "PR/libaudio.h" +#include "game_ui.h" +#include "math_util.h" +#include "printf.h" + +/************ .data ************/ + +u8 gVehicleSounds = TRUE; +s32 D_800DC6D4 = 0; // Currently unknown, might be a different type. +s32 D_800DC6D8 = 1; // Currently unknown, might be a different type. + +/*******************************/ + +/************ .bss ************/ + +VehicleSoundData *D_80119C30[2]; +VehicleSoundData *gRacerSound; +Object_Racer *gSoundRacerObj; +unk80115D18 *D_80119C40; // This should be in audio_spatial? +SoundMask **D_80119C44; +unk80119C48 **D_80119C48; //0x24 struct size - 0x5A0 total size - should be 40 elements +u8 D_80119C4C; +SoundMask **D_80119C50; +s32 D_80119C54; //Padding? +unk80119C58 **D_80119C58; //Struct of size in func_8000A184 = 0x180 = 384 bytes | Ambient Sounds +unk80119C58 **D_80119C5C; //Struct of size in func_8000A184 = 0x180 = 384 bytes Likely the same as above +f32 D_80119C60[670]; //array size of 672 looks to be required for func_80008174 +unk8011A6D8 *D_8011A6D8; //unk8011A6D8[] | Reverb stuff +unk8011A6D8 **D_8011A6DC; // Struct of size 0xC0 +f32 D_8011A6E0[334]; +s32 D_8011AC18; +s32 D_8011AC1C; + +/******************************/ + +#ifdef NON_EQUIVALENT +// racer_sound_init +VehicleSoundData *func_80004B40(s8 characterId, s8 vehicleId) { + u16 temp_a1; + s32 temp_s1; + u16 var_a0_2; + s32 var_a3; + s32 var_a3_2; + s32 var_s0_2; + VehicleSoundData *var_a2; + s32 *addrPtr; + unkAudioAsset *temp_v0_2; + VehicleSoundData *temp_v0_3; + u8 *memset; + VehicleSoundData *var_a0; + unkAudioAsset *var_a1; + unkAudioAsset *var_v1_2; + s32 i; + f32 new_var; + + if (characterId >= 11) { + characterId = 11; + } + + if (D_800DC6D8 != 0) { + for (i = 0; i < 2; i++) { + D_80119C30[i] = NULL; + } + D_800DC6D8 = 0; + } + addrPtr = (s32 *) load_asset_section_from_rom(ASSET_AUDIO_TABLE); + vehicleId *= 10; + temp_s1 = addrPtr[ASSET_AUDIO_7] + ((vehicleId + characterId) * sizeof(unkAudioAsset)); + temp_v0_2 = (unkAudioAsset *) allocate_from_main_pool_safe(sizeof(unkAudioAsset), COLOUR_TAG_CYAN); + load_asset_to_address(ASSET_AUDIO, (u32) temp_v0_2, temp_s1, sizeof(unkAudioAsset)); + temp_v0_3 = (VehicleSoundData *) allocate_from_main_pool_safe(sizeof(VehicleSoundData), COLOUR_TAG_CYAN); + + //Not really sure this is right... + memset = temp_v0_3; + for (var_a3 = 0; var_a3 < sizeof(VehicleSoundData); var_a3++) { + memset[var_a3] = 0; + } + + var_s0_2 = 0; + temp_v0_3->unk36 = temp_v0_2->unk36; + temp_v0_3->unk37 = temp_v0_2->unk37; + temp_v0_3->unk38 = temp_v0_2->unk38; + temp_v0_3->unk39 = temp_v0_2->unk39; + temp_v0_3->unk64 = temp_v0_2->unk3A; + temp_v0_3->throttlePitchCeil = temp_v0_2->unk46 / 10000.0f; + temp_v0_3->throttlePitchVel = temp_v0_2->unk3E / 10000.0f; + temp_v0_3->throttlePitchDecay = temp_v0_2->unk40 / 10000.0f; + temp_v0_3->unkC0 = temp_v0_2->unk42 / 10000.0f; + temp_v0_3->unkC4 = temp_v0_2->unk44 / 10000.0f; + temp_v0_3->unkBC = temp_v0_2->unk3C / 10000.0f; + temp_v0_3->unkB8 = temp_v0_2->unk3B; + temp_v0_3->brakeSound = 0; + temp_v0_3->unkCC = temp_v0_2->unk48 / 10000.0f; + do { + var_a3_2 = 1; + temp_v0_3->unk0[0] = temp_v0_2->unk0; + var_v1_2 = &temp_v0_2[1]; + temp_v0_3->unk4[0][0] = temp_v0_2->unk4[2]; + var_a1 = temp_v0_2 + 2; + temp_v0_3->unk18[0] = temp_v0_2->unk18; + var_a0 = temp_v0_3 + 1; + temp_v0_3->unkC[0][0] = temp_v0_2->unkC; + var_a2 = &temp_v0_3->unk0[1]; + temp_v0_3->unk2C[0] = temp_v0_2->unk2C; +loop_10: + var_a3_2 += 2; + var_a0->unk4[0][0] = (u8) var_v1_2->unk4[0]; + var_v1_2 += 2; + var_a2->unk18[0] = (u16) var_a1->unk18[0]; + var_a1 += 4; + var_a0->unkC[0][0] = (u8) var_v1_2->unkC; + var_a0 += 2; + var_a0->unk2A[0] = (u8) var_v1_2->unk2A[0]; + var_a2 += 4; + var_a0->unk0[1] = (u8) var_v1_2->unk3; + var_a2->unk16 = (u16) var_a1->unk16; + var_a0->unkC[0][1] = (u8) var_v1_2->unkD; + var_a0->unk2A[1] = (u8) var_v1_2->unk2A[1]; + if (var_a3_2 != 5) { + goto loop_10; + } + var_s0_2 += 2; + temp_v0_2 += 2; + temp_v0_2 += 5; + temp_v0_2 += 0xA; + temp_v0_3 += 5; + temp_v0_3 += 0xA; + temp_v0_3 += 5; + temp_v0_2 += 5; + temp_v0_3 += 0xA; + temp_v0_2 += 0xA; + temp_v0_3 += 2; + } while (var_s0_2 < 4); + temp_v0_3->unk74 = 0; + temp_v0_3->unk6C[0] = 0.0f; + temp_v0_3->basePitch = temp_v0_2->unk4A / 100.0f; + if (vehicleId == 0) { + temp_v0_3->unk54[0] = temp_v0_3->unk2C[0]; + temp_v0_3->unk5C[0] = temp_v0_3->unk18[0] / 10000.0f; + temp_v0_3->unk54[1] = temp_v0_3->unk31; + temp_v0_3->unk5C[1] = temp_v0_3->unk22 / 10000.0f; + } else { + temp_v0_3->unk5C[0] = temp_v0_3->basePitch; + temp_a1 = temp_v0_3->unk5C[0] * 10000.0f; + for (var_a0_2 = 0; temp_a1 >= temp_v0_3->unk18[var_a0_2] && var_a0_2 < 4; var_a0_2++) { } + var_a0_2--; + new_var = (temp_a1 - temp_v0_3->unk18[var_a0_2]) / ((f32) (temp_v0_3->unk18[var_a0_2 + 1] - temp_v0_3->unk18[var_a0_2])); + temp_v0_3->unk54[0] = temp_v0_3->unk2C[var_a0_2] + (temp_v0_3->unk2C[var_a0_2 + 1] - temp_v0_3->unk2C[var_a0_2]) * new_var; + } + free_from_memory_pool(addrPtr); + free_from_memory_pool((void *) temp_v0_2); + return temp_v0_3; +} +#else +GLOBAL_ASM("asm/non_matchings/audio_vehicle/func_80004B40.s") +#endif + +/** + * Update the sound of the engine and braking during gameplay, for later. + * Check which vehicle is being used, update the position of the audio, + * then call a function to handle that particular vehicles audio. +*/ +void racer_sound_update(Object *obj, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { + if (gVehicleSounds) { + gSoundRacerObj = &obj->unk64->racer; + gRacerSound = (VehicleSoundData *) gSoundRacerObj->vehicleSound; + if (gRacerSound != NULL) { + if (get_race_countdown()) { + if (gSoundRacerObj->playerIndex != PLAYER_COMPUTER) { + buttonsHeld = get_buttons_held_from_player(gSoundRacerObj->playerIndex); + buttonsPressed = get_buttons_pressed_from_player(gSoundRacerObj->playerIndex); + } + } + if (gRacerSound->unk0[0] == 0) { + gRacerSound->racerPos.x = -32000.0f; + gRacerSound->racerPos.y = -32000.0f; + gRacerSound->racerPos.z = -32000.0f; + } else { + gRacerSound->racerPos.x = obj->segment.trans.x_position; + gRacerSound->racerPos.y = obj->segment.trans.y_position; + gRacerSound->racerPos.z = obj->segment.trans.z_position; + switch (gSoundRacerObj->vehicleIDPrev) { + case VEHICLE_HOVERCRAFT: + racer_sound_hovercraft(obj, buttonsPressed, buttonsHeld, updateRate); + break; + case VEHICLE_PLANE: + func_800063EC(obj, buttonsPressed, buttonsHeld, updateRate); + break; + default: + func_80005254(obj, buttonsPressed, buttonsHeld, updateRate); + break; + } + } + } + } +} + +#ifdef NON_EQUIVALENT +//Scratch: https://decomp.me/scratch/w3w2c +void func_80005254(Object *obj, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { + f32 sp6C; + f32 temp_f14; + f32 temp_f16; + f32 temp_f18; + u8 temp_f4; + f32 var_f0; + f32 var_f12; + f32 var_f14; + f32 var_f20; + f32 var_f2; + s32 temp_a0_4; + s32 var_s0; + s32 outerLoop; + s32 innerLoop; + s32 var_v1_3; + + if (gSoundRacerObj->unk1FB != 0) { + var_f0 = 12.0f; + } else { + var_f0 = gSoundRacerObj->velocity; + } + if (var_f0 < 0.0f) { + var_f0 = -var_f0; + } + var_s0 = (var_f0 / 16) * 100; + var_s0 += 5; + if (var_s0 > 100) { + var_s0 = 100; + } + for (outerLoop = 0; outerLoop < 1; outerLoop++) { + if ((gRacerSound->unk0[outerLoop]) != 0) { + innerLoop = 0; + while ((var_s0 < gRacerSound->unkC[outerLoop][innerLoop] || var_s0 > gRacerSound->unkC[outerLoop][innerLoop + 1] ) && innerLoop < 4) { + innerLoop++; + } + + temp_f14 = (var_s0 - gRacerSound->unkC[0][innerLoop] ) / ((f32) (gRacerSound->unkC[0][innerLoop + 1] - gRacerSound->unkC[0][innerLoop] )); + temp_f4 = gRacerSound->unk2C[outerLoop] + (gRacerSound->unk2C[outerLoop + 1] - gRacerSound->unk2C[outerLoop]) * temp_f14; + + innerLoop = 0; + while ((var_s0 < gRacerSound->unk4[0][innerLoop] || var_s0 > gRacerSound->unk4[0][innerLoop + 1]) && innerLoop < 4) { + innerLoop++; + } + + temp_f14 = (var_s0 - gRacerSound->unk4[0][innerLoop]) / ((f32) (gRacerSound->unk4[0][innerLoop + 1] - gRacerSound->unk4[0][innerLoop])); + temp_f16 = gRacerSound->unk18[innerLoop] / 10000.0f; + temp_f18 = gRacerSound->unk18[innerLoop + 1] / 10000.0f; + if (var_s0 > 50 && gSoundRacerObj->bananas != 0) { + if (gSoundRacerObj->bananas <= 10) { + var_v1_3 = gSoundRacerObj->bananas; + } else { + var_v1_3 = 10; + } + if (gRacerSound->bananaPitch < (0.05 * var_v1_3)) { + gRacerSound->bananaPitch += ((0.05 * var_v1_3) / (var_v1_3 * 64)); + } else if (gRacerSound->bananaPitch > (0.05 * var_v1_3)) { + gRacerSound->bananaPitch = (0.05 * var_v1_3); + } + var_f2 = ((temp_f18 - temp_f16) * temp_f14) + temp_f16 + gRacerSound->bananaPitch; + } else { + gRacerSound->bananaPitch *= 0.95; + var_f2 = ((temp_f18 - temp_f16) * temp_f14) + temp_f16 + gRacerSound->bananaPitch; + } + if (gSoundRacerObj->drift_direction != 0) { + gRacerSound->unk40 += ((0.13 - gRacerSound->unk40) / 8); + } else { + gRacerSound->unk40 /= 4; + } + var_f2 += gRacerSound->unk40; + if ((gSoundRacerObj->groundedWheels == 0) && (gSoundRacerObj->playerIndex != PLAYER_COMPUTER)) { + var_f2 += 0.3; + } + var_f12 = (var_f2 - gRacerSound->unk5C[outerLoop]) / 2; + var_f14 = (temp_f4 - gRacerSound->unk54[outerLoop]) / 2; + if (gSoundRacerObj->playerIndex != PLAYER_COMPUTER) { + if (get_random_number_from_range(0, 10) < 7) { + gRacerSound->unk90 = (gRacerSound->unk90 + get_random_number_from_range(0, 10)) - 5; + if (gRacerSound->unk90 > 5) { + gRacerSound->unk90 = 5; + } else if (gRacerSound->unk90 < -5) { + gRacerSound->unk90 = -5; + } + } + var_f12 += 0.02 * (gRacerSound->unk90 / 5.0f); + var_f14 += 5.0f * (gRacerSound->unk90 / 5.0f); + } + if ((buttonsHeld & A_BUTTON) && (gRacerSound->enginePitch < 0.4)) { + gRacerSound->enginePitch += ((f32) updateRate * 0.01); + if (gRacerSound->enginePitch > 0.4) { + gRacerSound->enginePitch = 0.4f; + } + } + if (!(buttonsHeld & A_BUTTON) && (gRacerSound->enginePitch > 0.0f)) { + gRacerSound->enginePitch -= ((f32) updateRate * 0.005); + if (gRacerSound->enginePitch < 0.0f) { + gRacerSound->enginePitch = 0.0f; + } + } + gRacerSound->unk5C[outerLoop] += var_f12; + if (buttonsHeld & A_BUTTON) { + gRacerSound->unk54[outerLoop] += var_f14; + } else { + gRacerSound->unk54[outerLoop] = 35.0f; + } + } + } + if (((gSoundRacerObj->unk10 != 0) || (gSoundRacerObj->unk14 != 0) || + !(buttonsHeld & B_BUTTON) || (gSoundRacerObj->velocity > -0.1) || + (gSoundRacerObj->vehicleID == 4)) && (gRacerSound->unkA8 != 0) + ) { + func_8000488C(gRacerSound->unkA8); + gRacerSound->unkA8 = 0; + } else if ((buttonsPressed & B_BUTTON) && (gRacerSound->unkA8 == 0) && (gSoundRacerObj->playerIndex >= 0)) { + if (gSoundRacerObj->velocity < 0.0f) { + var_f20 = -gSoundRacerObj->velocity; + } else { + var_f20 = gSoundRacerObj->velocity; + } + if (var_f20 > 12.0f) { + var_f20 = 12.0f; + } + func_80001F14(25, &gRacerSound->unkA8); + sp6C = (((var_f20 * 0.5) / 12.0) + 0.5); + temp_a0_4 = gRacerSound->unkA8; + if (temp_a0_4 != 0) { + func_800049F8(temp_a0_4, 16, *((u32*) &sp6C)); + } + gRacerSound->unkAC = 110; + gRacerSound->unkD0 = 0; + } + if (gRacerSound->unkA8 != 0) { + if (gSoundRacerObj->groundedWheels == 0) { + gRacerSound->unkD0 += updateRate; + } else { + gRacerSound->unkD0 = 0; + } + if (gRacerSound->unkD0 >= 10) { + func_800049F8(gRacerSound->unkA8, 8, 0); + } else { + func_800049F8(gRacerSound->unkA8, 8, gRacerSound->unkAC << 8); + func_80009B7C((s32 *) gRacerSound->unkA8, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); + } + } + gRacerSound->unkA0 = var_s0; + if ((buttonsHeld & A_BUTTON) != 0) { + gRacerSound->unk98 = gRacerSound->unk54[0]; + } +} +#else +GLOBAL_ASM("asm/non_matchings/audio_vehicle/func_80005254.s") +#endif + +/** + * Update the engine sounds for the hovercraft. + * Uses velocity, banana count and ground contact to decide what pitch to use. + * Those values are calculated in this function. +*/ +void racer_sound_hovercraft(Object *obj, UNUSED u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { + UNUSED s32 pad; + f32 velocity; + f32 new_var; + u16 temp_f10; + f32 angleSine; + f32 var_f18; + f32 pitch; + s32 angleDiff; + s32 bananaPitch; + u8 var_t0; + u8 i; + + if (get_race_countdown() == 0) { + velocity = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity)); + } else { + velocity = 0.0f; + } + pitch = gRacerSound->basePitch; + if (buttonsHeld & A_BUTTON) { + gRacerSound->throttlePitch += gRacerSound->throttlePitchVel * updateRate; + if (gRacerSound->throttlePitch > gRacerSound->throttlePitchCeil) { + gRacerSound->throttlePitch = gRacerSound->throttlePitchCeil; + } + } else { + gRacerSound->throttlePitch -= gRacerSound->throttlePitchDecay * updateRate; + } + if (gRacerSound->throttlePitch < 0.0f) { + gRacerSound->throttlePitch = 0.0f; + } + + angleDiff = (-gSoundRacerObj->cameraYaw - (gSoundRacerObj->steerVisualRotation & 0xFFFF)) + 0x8000; + WRAP(angleDiff, -0x8000, 0x8000); + angleSine = sins_f(angleDiff); + angleSine = ABSF(angleSine); + if (check_if_showing_cutscene_camera() == FALSE && get_race_countdown() == 0) { + var_f18 = (gRacerSound->unkBC * angleSine * velocity) / 15.0; + } else { + var_f18 = 0.0f; + } + if (func_800A0190() == FALSE) { + gRacerSound->throttlePitch = 0.0f; + } + if (velocity > 10.0) { + velocity -= 10.0; + } else { + velocity = 0.0f; + } + //!@Delta: This entire block is not timing correct. + if (velocity != 0.0 && gSoundRacerObj->bananas != 0) { + if (gSoundRacerObj->bananas <= 10) { + bananaPitch = gSoundRacerObj->bananas; + } else { + bananaPitch = 10; + } + if (gRacerSound->bananaPitch < 0.05 * bananaPitch) { + gRacerSound->bananaPitch += (0.05 * bananaPitch) / (bananaPitch * 64); + } else if (gRacerSound->bananaPitch > 0.05 * bananaPitch) { + gRacerSound->bananaPitch = 0.05 * bananaPitch; + } + pitch += gRacerSound->bananaPitch; + } else { + gRacerSound->bananaPitch *= 0.95; + pitch += gRacerSound->bananaPitch; + } + pitch += ((velocity * gRacerSound->unkCC) + var_f18 + gRacerSound->throttlePitch); + if (gSoundRacerObj->playerIndex != PLAYER_COMPUTER && gSoundRacerObj->groundedWheels == 0 && gSoundRacerObj->waterTimer < 4) { + if (get_race_countdown() == 0) { + pitch += 0.3; + } + } + gRacerSound->unk5C[0] += ((pitch - gRacerSound->unk5C[0]) / 8); + if (gRacerSound->unk5C[0] > (0x7FFF / 5000.0)) { + gRacerSound->unk5C[0] = (0x7FFF / 5000.0); //6.5534 + } + temp_f10 = gRacerSound->unk5C[0] * 10000.0f; + for (i = 0; temp_f10 >= gRacerSound->unk18[i] && i < 4; i++) { } + if (i == 4) { + var_t0 = gRacerSound->unk2C[i]; + } else { + if (i != 0) { + i--; + } + new_var = (temp_f10 - gRacerSound->unk18[i]) / ((f32) (gRacerSound->unk18[i + 1] - gRacerSound->unk18[i])); + var_t0 = gRacerSound->unk2C[i] + (gRacerSound->unk2C[i + 1] - gRacerSound->unk2C[i]) * new_var; + } + gRacerSound->unk54[0] += ((var_t0 - gRacerSound->unk54[0]) / 8); + gRacerSound->unk5C[1] = 1.0f; + gRacerSound->unk54[1] = 0.0f; +} + +#ifdef NON_EQUIVALENT +void func_800063EC(Object *obj, UNUSED u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { + f32 sp28; + f32 var_f2; + u16 temp_f10; + f32 var_f14; + f32 temp_f8; + f32 var_f18; + u8 i; + s32 var_a0; + u8 var_t0; + f32 xVel; + f32 yVel; + f32 zVel; + + if (get_race_countdown() == 0) { + xVel = obj->segment.x_velocity; + zVel = obj->segment.z_velocity; + yVel = obj->segment.y_velocity; + var_f18 = sqrtf((xVel * xVel) + (zVel * zVel) + (yVel * yVel)); + //var_f18 = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity) + (obj->segment.y_velocity * obj->segment.y_velocity)); + } else { + var_f18 = 0.0f; + } + if (var_f18 < 2.0f) { + gRacerSound->unk54[0] += ((gRacerSound->unk37 - gRacerSound->unk54[0]) / 8); + } else { + temp_f10 = gRacerSound->unk5C[0] * 10000.0f; + for (i = 0; temp_f10 >= gRacerSound->unk18[i] && i < 4; i++) { } + if (i == 4) { + var_t0 = gRacerSound->unk2C[i]; + } else { + if (i != 0) { + i--; + } + temp_f8 = (temp_f10 - gRacerSound->unk18[i]) / ((f32) (gRacerSound->unk18[i + 1] - gRacerSound->unk18[i])); + var_t0 = gRacerSound->unk2C[i] + (gRacerSound->unk2C[i + 1] - gRacerSound->unk2C[i]) * temp_f8; + } + gRacerSound->unk54[0] += ((var_t0 - gRacerSound->unk54[0]) / 8); + } + var_f14 = gRacerSound->basePitch; + if (buttonsHeld & A_BUTTON) { + gRacerSound->throttlePitch += gRacerSound->throttlePitchVel * (f32) updateRate; + if (gRacerSound->throttlePitchCeil < gRacerSound->throttlePitch) { + gRacerSound->throttlePitch = gRacerSound->throttlePitchCeil; + } + } else { + gRacerSound->throttlePitch -= gRacerSound->throttlePitchDecay * (f32) updateRate; + } + if (gRacerSound->throttlePitch < 0) { + gRacerSound->throttlePitch = 0; + } + if (func_800A0190() == 0) { + gRacerSound->throttlePitch = 0.0f; + } + var_f14 += gRacerSound->throttlePitch; + sp28 = sins_f(obj->segment.trans.x_rotation); + var_f2 = sins_f(obj->segment.trans.z_rotation) * gRacerSound->unkC0; + if (var_f2 < 0.0f) { + var_f2 = -var_f2; + } + if (var_f18 > 10.0) { + var_f18 -= 10.0; + } else { + var_f18 = 0.0; + } + var_f14 += ((gRacerSound->unkC4 * sp28) + var_f2); + var_f14 += (var_f18 * gRacerSound->unkCC); + if ((var_f18 != 0.0) && (gSoundRacerObj->bananas != 0)) { + if (gSoundRacerObj->bananas <= 10) { + var_a0 = gSoundRacerObj->bananas; + } else { + var_a0 = 10; + } + if (gRacerSound->bananaPitch < (0.05 * var_a0)) { + gRacerSound->bananaPitch += ((0.05 * var_a0) / (var_a0 * 64)); + } else if (gRacerSound->bananaPitch > (0.05 * var_a0)) { + gRacerSound->bananaPitch = (0.05 * var_a0); + } + var_f14 += gRacerSound->bananaPitch; + } else { + gRacerSound->bananaPitch *= 0.95; + var_f14 += gRacerSound->bananaPitch; + } + gRacerSound->unk5C[0] += ((var_f14 - gRacerSound->unk5C[0]) / 8); + if (gRacerSound->unk5C[0] > (0x7FFF / 5000.0)) { + gRacerSound->unk5C[0] = (0x7FFF / 5000.0); //6.5534 + } + gRacerSound->unk5C[1] = 1.0f; + gRacerSound->unk54[1] = 0.0f; + if ((gSoundRacerObj->playerIndex != PLAYER_COMPUTER) && (gSoundRacerObj->spinout_timer != 0) && !gRacerSound->brakeSound) { + gRacerSound->brakeSound = TRUE; + play_sound_global(SOUND_UNK_13D, &gRacerSound->brakeSoundMask); + } else if (gSoundRacerObj->spinout_timer == 0) { + gRacerSound->brakeSound = FALSE; + if (gRacerSound->brakeSoundMask != NULL) { + func_8000488C(gRacerSound->brakeSoundMask); + } + } +} +#else +GLOBAL_ASM("asm/non_matchings/audio_vehicle/func_800063EC.s") +#endif + +/** + * Stops all associated sounds and then frees the vehicle sound data from RAM. +*/ +void racer_sound_free(Object *obj) { + s32 i; + + gRacerSound = (VehicleSoundData *) obj->unk64->racer.vehicleSound; + if (gRacerSound != NULL) { + for (i = 0; i != 2; i++) { + if (gRacerSound->unk48[i] != NULL) { + func_8000488C(gRacerSound->unk48[i]); + gRacerSound->unk48[i] = 0; + } + } + if (gRacerSound->unk50 != NULL) { + func_8000488C(gRacerSound->unk50); + gRacerSound->unk50 = NULL; + } + if (gRacerSound->unkA8 != NULL) { + func_8000488C(gRacerSound->unkA8); + gRacerSound->unkA8 = 0; + } + for (i = 0; i < ARRAY_COUNT(D_80119C30); i++) { + if (D_80119C30[i] == gRacerSound) { + D_80119C30[i] = NULL; + } + } + free_from_memory_pool(gRacerSound); + obj->unk64->racer.vehicleSound = NULL; + } +} + +void func_80006BFC(Object *obj, ObjectSegment *segment, Object *obj2, s32 updateRate) { + Object_Racer *racer; + f32 velocity; + f32 xPos; + f32 yPos; + f32 zPos; + f32 new_xPos; + f32 new_zPos; + f32 new_yPos; + f32 var_f2_2; + f32 posSquared; + f32 sp1C; + Object_Racer *racer2; + s32 new_var; + + racer = &obj->unk64->racer; + racer2 = &obj2->unk64->racer; + gRacerSound = (VehicleSoundData *) racer2->vehicleSound; + if (gRacerSound != NULL) { + if (segment != NULL) { + xPos = segment[racer->playerIndex].trans.x_position; + yPos = segment[racer->playerIndex].trans.y_position; + zPos = segment[racer->playerIndex].trans.z_position; + sp1C = 1.0f; + } else { + xPos = obj->segment.trans.x_position; + yPos = obj->segment.trans.y_position; + zPos = obj->segment.trans.z_position; + switch (racer->vehicleID) { + case VEHICLE_CAR: + if (racer->velocity >= 0.0f) { + velocity = racer->velocity; + } else { + velocity = -racer->velocity; + } + break; + case VEHICLE_HOVERCRAFT: + velocity = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity)); + break; + default: + velocity = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity) + (obj->segment.y_velocity * obj->segment.y_velocity)); + break; + } + if (velocity > 15.0f) { + velocity = 15.0f; + } + sp1C = 1.0f - (velocity / 15.0f); + } + new_xPos = obj2->segment.trans.x_position - xPos; + new_yPos = obj2->segment.trans.y_position - yPos; + new_zPos = obj2->segment.trans.z_position - zPos; + posSquared = sqrtf(((new_xPos * new_xPos) + (new_yPos * new_yPos)) + (new_zPos * new_zPos)); + var_f2_2 = (gRacerSound->unk6C[racer->playerIndex] - posSquared) / updateRate; + if (var_f2_2 > 15.0f) { + var_f2_2 = 15.0f; + } else if (var_f2_2 < -15.0f) { + var_f2_2 = -15.0f; + } + new_var = func_80007FA4(gRacerSound->unk5C[0]) * 1731.23404; + gRacerSound->unk68 += (((alCents2Ratio((((70.0f + var_f2_2) / (70.0f - var_f2_2)) * new_var)) - gRacerSound->unk5C[0]) - gRacerSound->unk68) / 2); + gRacerSound->unk68 *= sp1C; + if (gRacerSound->unk68 > 0.8) { + gRacerSound->unk68 = 0.8; + } else if (gRacerSound->unk68 < -0.8) { + gRacerSound->unk68 = -0.8; + } + gRacerSound->unk6C[racer->playerIndex] = posSquared; + } +} + +#ifdef NON_EQUIVALENT +//https://decomp.me/scratch/utYpK +void func_80006FC8(Object **objs, s32 numRacers, ObjectSegment *segment, u8 arg3, s32 updateRate) { + f32 tempxPos; + f32 tempyPos; + f32 tempzPos; + Object_Racer *racer; + f32 temp_f20_2; + s32 loopCount2; + s32 loopCount1; + f32 temp_f0_3; + f32 var_f26; + u8 temp_s3; + s32 curVal; + s32 loopCount3; + s32 maxVal; + s32 curIndex; + f32 sp8C; + s32 pad; + VehicleSoundData *temp; + + for (loopCount1 = 0; loopCount1 < arg3; loopCount1++) { + racer = &objs[loopCount1]->unk64->racer; + if (racer != NULL) { + gRacerSound = (VehicleSoundData *) racer->vehicleSound; + } else { + gRacerSound = NULL; + } + + if (gRacerSound != NULL && gRacerSound->unk0[0] != 0) { + if (racer->raceFinished || check_if_showing_cutscene_camera()) { + tempxPos = objs[loopCount1]->segment.trans.x_position - segment[loopCount1].trans.x_position; + tempyPos = objs[loopCount1]->segment.trans.y_position - segment[loopCount1].trans.y_position; + tempzPos = objs[loopCount1]->segment.trans.z_position - segment[loopCount1].trans.z_position; + func_80006BFC(objs[loopCount1], segment, objs[loopCount1], updateRate); + gRacerSound->unk84 = sqrtf((tempxPos * tempxPos) + (tempyPos * tempyPos) + (tempzPos * tempzPos)); + if (gRacerSound->unk84 < 1500.0f) { + var_f26 = 2250000.0f; //(1500.0f * 1500.0f) + var_f26 = (var_f26 - (gRacerSound->unk84 * gRacerSound->unk84)) / var_f26; + var_f26 *= var_f26; + gRacerSound->unk91[0] = func_800090C0(tempxPos, tempzPos, segment[loopCount1].trans.y_rotation); + } else { + var_f26 = 0.0f; + } + if (racer->raceFinished == 0) { + var_f26 *= 0.5; + } + } else { + var_f26 = 1.0f; + gRacerSound->unk91[0] = 64; + gRacerSound->unk68 = 0.0f; + } + if ((gRacerSound->unkA0 < 70) && (gRacerSound->unk36) && (arg3 < 3) && (var_f26 != 0.0) && !(gRacerSound->unk44[0] & 1)) { + temp_f20_2 = gRacerSound->unkA0 / 70.0f; + temp_s3 = (gRacerSound->unk37 - (gRacerSound->unk37 * temp_f20_2)) * var_f26; + if (temp_s3 >= 16) { + if (gRacerSound->unk50 == NULL) { + func_80001F14(gRacerSound->unk36, (s32 *) &gRacerSound->unk50); + } + temp_f0_3 = gRacerSound->unk38 / 100.0f; + sp8C = temp_f0_3 + ((((f32) gRacerSound->unk39 / 100.0f) - temp_f0_3) * temp_f20_2); + if (gRacerSound->unk50 != NULL) { + func_80009B7C((s32 *) gRacerSound->unk50, objs[loopCount1]->segment.trans.x_position, objs[loopCount1]->segment.trans.y_position, objs[loopCount1]->segment.trans.z_position); + func_800049F8(gRacerSound->unk50, 8, temp_s3 << 8); + func_800049F8(gRacerSound->unk50, 16, *((u32*) &sp8C)); + func_80004604(gRacerSound->unk50, 80); + func_800049F8(gRacerSound->unk50, 4, gRacerSound->unk91[0]); + } + } else if (gRacerSound->unk50 != NULL) { + func_8000488C(gRacerSound->unk50); + gRacerSound->unk50 = 0; + } + } else if (gRacerSound->unk50 != NULL) { + func_8000488C(gRacerSound->unk50); + gRacerSound->unk50 = 0; + } + for (loopCount2 = 0; loopCount2 < 2 && gRacerSound->unk0[loopCount2] != 0 && var_f26 != 0.0; loopCount2++) { + temp_s3 = gRacerSound->unk54[loopCount2] * var_f26; + sp8C = gRacerSound->unk5C[loopCount2] + gRacerSound->bananaPitch + gRacerSound->enginePitch + gRacerSound->unk68; + if (sp8C < 0.05) { + sp8C = 0.05f; + } + if ((loopCount2 == 0) && (gRacerSound->unk44[0] & 1)) { + if (gRacerSound->unk48[0] != NULL) { + func_8000488C(gRacerSound->unk48[0]); + gRacerSound->unk48[0] = NULL; + } + } else { + if ((gRacerSound->unk48[loopCount2] != NULL) && (temp_s3 == 0)) { + func_8000488C(gRacerSound->unk48[loopCount2]); + gRacerSound->unk48[loopCount2] = NULL; + } else { + if (gRacerSound->unk48[loopCount2] == NULL) { + func_80001F14(gRacerSound->unk0[loopCount2], (s32 *) &gRacerSound->unk48[loopCount2]); + } + if (gRacerSound->unk48[loopCount2] != NULL) { + func_80009B7C((s32 *) gRacerSound->unk48[loopCount2], objs[loopCount1]->segment.trans.x_position, objs[loopCount1]->segment.trans.y_position, objs[loopCount1]->segment.trans.z_position); + func_800049F8(gRacerSound->unk48[loopCount2], 8, temp_s3 << 8); + func_800049F8(gRacerSound->unk48[loopCount2], 16, *((u32*) &sp8C)); + func_80004604(gRacerSound->unk48[loopCount2], 80); + if (arg3 != 1) { + gRacerSound->unk91[0] = 64; + } + func_800049F8(gRacerSound->unk48[loopCount2], 4, gRacerSound->unk91[0]); + } + } + } + } + } + } + if (arg3 < 3) { + for (loopCount2 = arg3; loopCount2 < numRacers; loopCount2++) { + racer = &objs[loopCount2]->unk64->racer; + if (racer != NULL) { + gRacerSound = (VehicleSoundData *) racer->vehicleSound; + if (gRacerSound != NULL) { + gRacerSound->unk88 = 0; + } + } + } + for (loopCount1 = 0; loopCount1 < arg3; loopCount1++) { + racer = &objs[loopCount1]->unk64->racer; + for (loopCount2 = arg3; loopCount2 < numRacers; loopCount2++) { + if (objs[loopCount2]->unk64 != NULL) { + gRacerSound = (VehicleSoundData *) objs[loopCount2]->unk64->racer.cameraYaw; + if (gRacerSound != 0) { + if (racer->raceFinished != 0) { + tempxPos = objs[loopCount2]->segment.trans.x_position - segment[loopCount1].trans.x_position; + tempyPos = objs[loopCount2]->segment.trans.y_position - segment[loopCount1].trans.y_position; + tempzPos = objs[loopCount2]->segment.trans.z_position - segment[loopCount1].trans.z_position; + } else { + tempxPos = objs[loopCount2]->segment.trans.x_position - objs[loopCount1]->segment.trans.x_position; + tempyPos = objs[loopCount2]->segment.trans.y_position - objs[loopCount1]->segment.trans.y_position; + tempzPos = objs[loopCount2]->segment.trans.z_position - objs[loopCount1]->segment.trans.z_position; + } + gRacerSound->unk84 = sqrtf((tempxPos * tempxPos) + (tempyPos * tempyPos) + (tempzPos * tempzPos)); + if (gRacerSound->unk84 < 1500.0f) { + var_f26 = 2250000.0f; //(1500.0f * 1500.0f) + var_f26 = (var_f26 - (gRacerSound->unk84 * gRacerSound->unk84)) / var_f26; + temp_s3 = gRacerSound->unk54[0] * var_f26; + if (temp_s3 > 127) { + temp_s3 = 127; + } + temp_s3 *= 0.8; + if (gRacerSound->unk88 < temp_s3) { + gRacerSound->unk88 = temp_s3; + gRacerSound->unk91[0] = func_800090C0(tempxPos, tempzPos, segment->trans.y_rotation); + if (racer->raceFinished != 0) { + func_80006BFC(objs[loopCount1], segment, objs[loopCount2], updateRate); + } else { + func_80006BFC(objs[loopCount1], NULL, objs[loopCount2], updateRate); + } + gRacerSound->unk8C = gRacerSound->unk5C[0] + gRacerSound->unk68; + if (gRacerSound->unk8C < 0.05) { + gRacerSound->unk8C = 0.05f; + } + } + } + } + } + } + } + for (loopCount3 = 0; loopCount3 < ARRAY_COUNT(D_80119C30); loopCount3++) { + if (D_80119C30[loopCount3] != NULL) { + if (D_80119C30[loopCount3]->unk48[0] != NULL && D_80119C30[loopCount3]->unk88 < 8) { + func_8000488C(D_80119C30[loopCount3]->unk48[0]); + D_80119C30[loopCount3]->unk48[0] = NULL; + D_80119C30[loopCount3]->unk74 = 0; + D_80119C30[loopCount3] = NULL; + } + } + } + if (updateRate < D_800DC6D4) { + D_800DC6D4 -= updateRate; + } else { + D_800DC6D4 = 0; + } + for (loopCount1 = 1; loopCount1 < numRacers; loopCount1++) { + racer = &objs[loopCount1]->unk64->racer; + if (objs[loopCount1]->unk64 != NULL) { + gRacerSound = (VehicleSoundData *) racer->vehicleSound; + if (gRacerSound != NULL) { + if (gRacerSound->unk74 == 0) { + maxVal = 20; + if (gRacerSound->unk0[0] != 0) { + loopCount3 = -1; + for (loopCount2 = 0; loopCount2 < ARRAY_COUNT(D_80119C30); loopCount2++) { + if (D_80119C30[loopCount2] != NULL) { + curVal = gRacerSound->unk88; + curVal -= D_80119C30[loopCount2]->unk88; + if ((maxVal < curVal) && (D_800DC6D4 == 0)) { + loopCount3 = loopCount2; + maxVal = curVal; + } + } else if (gRacerSound->unk88 >= 9) { + loopCount3 = loopCount2; + } + } + if (loopCount3 != -1) { + gRacerSound->unk74 = 2; + if (D_80119C30[loopCount3] != NULL) { + if (D_80119C30[loopCount3]->unk48[0] != NULL) { + func_8000488C(D_80119C30[loopCount3]->unk48[0]); + D_80119C30[loopCount3]->unk48[0] = NULL; + gRacerSound->unk74 = 1; + } + D_800DC6D4 = 60; + D_80119C30[loopCount3]->unk74 = 0; + } + D_80119C30[loopCount3] = gRacerSound; + } + } + } + } + } + } + if (get_race_countdown() <= 0) { + for (loopCount2 = 0; loopCount2 < ARRAY_COUNT(D_80119C30); loopCount2++) { + temp = D_80119C30[loopCount2]; + if (temp != NULL) { + if (temp->unk0[0] != 0) { + if (temp->unk74 == 1) { + temp->unk74 = 2; + } else { + if (temp->unk48[0] == NULL) { + func_80001F14(temp->unk0[0], (s32 *) &temp->unk48[0]); + } + if (temp->unk48[0] != NULL) { + func_80009B7C((s32 *) temp->unk48[0], temp->racerPos.x, temp->racerPos.y, temp->racerPos.z); + func_800049F8(temp->unk48[0], 8, temp->unk88 << 8); + func_800049F8(temp->unk48[0], 16, *((u32*) &temp->unk8C)); + if (arg3 != 1) { + temp->unk91[0] = 64; + } + func_800049F8(temp->unk48[0], 4, temp->unk91[0]); + func_80004604(temp->unk48[0], 70); + } + } + } + } + } + } + } +} +#else +GLOBAL_ASM("asm/non_matchings/audio_vehicle/func_80006FC8.s") +#endif + +/** + * Enable the vehicle sounds made during gameplay. +*/ +UNUSED void sound_vehicle_enable(void) { + gVehicleSounds = TRUE; +} + +/** + * Disable the vehicle sounds made during gameplay. +*/ +UNUSED void sound_vehicle_disable(void) { + gVehicleSounds = FALSE; +} + +/** + * Return whether vehicle sounds should be playing during gameplay. +*/ +UNUSED u8 sound_vehicle_check(void) { + return gVehicleSounds; +} + +// This is likely an arctanh function. +f32 func_80007FA4(f32 arg0) { + f32 temp_f0; + f32 temp_f12; + f32 var_f14; + f32 var_f2; + s32 var_v0; + + var_f2 = 0.0f; + temp_f0 = -1.0f; + arg0 = (arg0 - 1.0f) / (1.0f + arg0); + var_f14 = arg0; + temp_f12 = arg0 * arg0; + for (var_v0 = 1; (var_f2 - temp_f0) > 0.001; var_v0 += 2) { + temp_f0 = var_f2; + var_f2 += var_f14 / var_v0; + var_f14 *= temp_f12; + } + return var_f2 * 2; +} diff --git a/src/unknown_005740.h b/src/audio_vehicle.h similarity index 78% rename from src/unknown_005740.h rename to src/audio_vehicle.h index 20fecf42..45e09c46 100644 --- a/src/unknown_005740.h +++ b/src/audio_vehicle.h @@ -1,5 +1,5 @@ -#ifndef _UNKNOWN_005740_H_ -#define _UNKNOWN_005740_H_ +#ifndef _AUDIO_VEHICLE_H_ +#define _AUDIO_VEHICLE_H_ #include "types.h" #include "structs.h" @@ -34,7 +34,7 @@ typedef struct unk80119C58 { } unk80119C58; /* Size: 0xE0 / 224 bytes */ -typedef struct unk80119C38 { +typedef struct VehicleSoundData { /* 0x00 */ u16 unk0[2]; u8 unk4[2][4]; /* 0x08 */ u8 pad8[0x2]; @@ -58,7 +58,7 @@ typedef struct unk80119C38 { /* 0x38 */ u8 unk38; /* 0x39 */ u8 unk39; /* 0x3A */ u8 pad3A[0x2]; - /* 0x3C */ f32 unk3C; + /* 0x3C */ f32 bananaPitch; /* 0x40 */ f32 unk40; /* 0x44 */ u8 unk44[4]; /* 0x48 */ u8 *unk48[2]; //soundMask / soundState? @@ -69,34 +69,32 @@ typedef struct unk80119C38 { /* 0x68 */ f32 unk68; /* 0x6C */ f32 unk6C[2]; /* 0x74 */ u8 unk74; - /* 0x78 */ f32 unk78; // X - /* 0x7C */ f32 unk7C; // Y - /* 0x80 */ f32 unk80; // Z + /* 0x78 */ Vec3f racerPos; /* 0x84 */ f32 unk84; /* 0x88 */ u8 unk88; // Volume? /* 0x8C */ f32 unk8C; // Volume? /* 0x90 */ s8 unk90; /* 0x91 */ u8 unk91[3]; - /* 0x94 */ f32 unk94; + /* 0x94 */ f32 enginePitch; // Engine noise for the car. /* 0x98 */ u8 unk98; /* 0x99 */ u8 pad99[0x7]; /* 0xA0 */ u8 unkA0; - /* 0xA4 */ f32 unkA4; - /* 0xA8 */ s32 unkA8; + /* 0xA4 */ f32 throttlePitch; // Engine noise for the hovercraft and plane. + /* 0xA8 */ SoundMask *unkA8; /* 0xAC */ u16 unkAC; - /* 0xB0 */ f32 unkB0; - /* 0xB4 */ f32 unkB4; + /* 0xB0 */ f32 throttlePitchVel; + /* 0xB4 */ f32 throttlePitchDecay; /* 0xB8 */ u8 unkB8; /* 0xBC */ f32 unkBC; /* 0xC0 */ f32 unkC0; /* 0xC4 */ f32 unkC4; - /* 0xC8 */ f32 unkC8; + /* 0xC8 */ f32 throttlePitchCeil; /* 0xCC */ f32 unkCC; /* 0xD0 */ u8 unkD0; - /* 0xD4 */ f32 unkD4; - /* 0xD8 */ u8 unkD8; //Sound is playing bool? - /* 0xDC */ u8 *unkDC; //soundMask / soundState? -} unk80119C38; + /* 0xD4 */ f32 basePitch; + /* 0xD8 */ u8 brakeSound; //Sound is playing bool? + /* 0xDC */ SoundMask *brakeSoundMask; //soundMask / soundState? +} VehicleSoundData; /* Size: 0x4C / 76 Bytes */ typedef struct unkAudioAsset { @@ -131,7 +129,7 @@ typedef struct unkAudioAsset { /* 0x4A */ u8 unk4A; } unkAudioAsset; -extern u8 D_800DC6D0; +extern u8 gVehicleSounds; extern s32 D_800DC6D8; extern s32 D_800DC6DC; extern u16 D_800DC6E0; @@ -141,13 +139,13 @@ extern SoundMask **D_80119C50; extern u8 D_80119C4C; -void func_800050D0(Object* obj, u32 buttonsPressed, u32 carInput, s32 updateRate); -void func_80006AC8(Object *); +void racer_sound_update(Object* obj, u32 buttonsPressed, u32 carInput, s32 updateRate); +void racer_sound_free(Object *); f32 func_80007FA4(f32 arg0); -unk80119C38 *func_80004B40(s8 characterId, s8 vehicleId); +VehicleSoundData *func_80004B40(s8 characterId, s8 vehicleId); void func_80005254(Object *obj, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate); -void func_80005D08(Object *, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate); +void racer_sound_hovercraft(Object *, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate); void func_800063EC(Object *, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate); #endif diff --git a/src/camera.c b/src/camera.c index ff19b044..78df5564 100644 --- a/src/camera.c +++ b/src/camera.c @@ -1461,7 +1461,10 @@ Matrix *get_camera_matrix(void) { return &gCameraMatrixF; } -f32 func_80069DC8(f32 x, f32 y, f32 z) { +/** + * Return the screenspace distance to the camera. +*/ +f32 get_distance_to_camera(f32 x, f32 y, f32 z) { f32 ox, oy, oz; guMtxXFMF(gCameraMatrixF, x, y, z, &ox, &oy, &oz); diff --git a/src/camera.h b/src/camera.h index f6010606..96ec5d75 100644 --- a/src/camera.h +++ b/src/camera.h @@ -117,7 +117,7 @@ ObjectSegment *get_cutscene_camera_segment(void); Matrix *get_projection_matrix_f32(void); MatrixS *get_projection_matrix_s16(void); Matrix *get_camera_matrix(void); -f32 func_80069DC8(f32 x, f32 y, f32 z); +f32 get_distance_to_camera(f32 x, f32 y, f32 z); void set_camera_shake_by_distance(f32 x, f32 y, f32 z, f32 dist, f32 magnitude); void set_camera_shake(f32 magnitude); void func_80067D3C(Gfx **dlist, MatrixS **mats); diff --git a/src/fade_transition.h b/src/fade_transition.h index 1887689e..077da414 100644 --- a/src/fade_transition.h +++ b/src/fade_transition.h @@ -47,8 +47,6 @@ typedef struct FadeTransition { /* 0x06 */ u16 endTimer; } FadeTransition; -extern u32 osTvType; - void enable_new_screen_transitions(void); void disable_new_screen_transitions(void); u32 check_fadeout_transition(void); diff --git a/src/game.c b/src/game.c index 268e0c3a..214b6e37 100644 --- a/src/game.c +++ b/src/game.c @@ -34,7 +34,7 @@ #include "printf.h" #include "fade_transition.h" #include "borders.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "tracks.h" #include "game_text.h" #include "game_ui.h" @@ -405,60 +405,58 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicl if (gCurrentLevelHeader->race_type == RACETYPE_DEFAULT) { clear_level_property_stack(); } - if (get_level_property_stack_pos() == 0) { - if (D_800DD32C == 0) { - if (gCurrentLevelHeader->race_type == RACETYPE_BOSS) { - var_s0 = settings->courseFlagsPtr[levelId]; - wizpig = FALSE; - if (gCurrentLevelHeader->world == WORLD_CENTRAL_AREA || gCurrentLevelHeader->world == WORLD_FUTURE_FUN_LAND) { - wizpig = TRUE; - } - if (!(var_s0 & 1) || wizpig) { - push_level_property_stack(levelId, entranceId, vehicleId, cutsceneId); - if (settings->bosses & (1 << settings->worldId)) { - cutsceneId = CUTSCENE_ID_UNK_7; - } else { - cutsceneId = CUTSCENE_ID_UNK_3; - } - if (wizpig) { - cutsceneId = 0; - if (var_s0 & 1) { - D_800DD330 = 2; - } - } - someAsset = (s8 *) get_misc_asset(ASSET_MISC_67); - for (var_s0 = 0; levelId != someAsset[var_s0]; var_s0 += 2) { } - levelId = someAsset[var_s0 + 1]; - entranceId = cutsceneId; - if (cutsceneId == CUTSCENE_NONE) { - stubbed_printf("BossLev problem\n"); - } - } + if (get_level_property_stack_pos() == 0 && D_800DD32C == 0) { + if (gCurrentLevelHeader->race_type == RACETYPE_BOSS) { + var_s0 = settings->courseFlagsPtr[levelId]; + wizpig = FALSE; + if (gCurrentLevelHeader->world == WORLD_CENTRAL_AREA || gCurrentLevelHeader->world == WORLD_FUTURE_FUN_LAND) { + wizpig = TRUE; } - if (gCurrentLevelHeader->race_type == RACETYPE_HUBWORLD) { - if (gCurrentLevelHeader->world > WORLD_CENTRAL_AREA && gCurrentLevelHeader->world < WORLD_FUTURE_FUN_LAND) { - var_s0 = gCurrentLevelHeader->world; - if (settings->keys & (1 << var_s0) && !(settings->cutsceneFlags & (CUTSCENE_DINO_DOMAIN_KEY << (var_s0 + 31)))) { - // Trigger World Key unlocking Challenge Door cutscene. - push_level_property_stack(levelId, entranceId, vehicleId, cutsceneId); - settings->cutsceneFlags |= CUTSCENE_DINO_DOMAIN_KEY << (var_s0 + 31); - someAsset = (s8 *) get_misc_asset(ASSET_MISC_68); - levelId = someAsset[var_s0 - 1]; - entranceId = 0; - cutsceneId = CUTSCENE_ID_UNK_5; - } - } - } - if (gCurrentLevelHeader->race_type == RACETYPE_HUBWORLD && gCurrentLevelHeader->world == WORLD_CENTRAL_AREA && - !(settings->cutsceneFlags & CUTSCENE_WIZPIG_FACE) && settings->wizpigAmulet >= 4) { - // Trigger wizpig face cutscene + if (!(var_s0 & 1) || wizpig) { push_level_property_stack(levelId, entranceId, vehicleId, cutsceneId); - entranceId = 0; - cutsceneId = CUTSCENE_NONE; - settings->cutsceneFlags |= CUTSCENE_WIZPIG_FACE; - levelId = ((s8 *) get_misc_asset(ASSET_MISC_68))[4]; + if (settings->bosses & (1 << settings->worldId)) { + cutsceneId = CUTSCENE_ID_UNK_7; + } else { + cutsceneId = CUTSCENE_ID_UNK_3; + } + if (wizpig) { + cutsceneId = 0; + if (var_s0 & 1) { + D_800DD330 = 2; + } + } + someAsset = (s8 *) get_misc_asset(ASSET_MISC_67); + for (var_s0 = 0; levelId != someAsset[var_s0]; var_s0 += 2) { } + levelId = someAsset[var_s0 + 1]; + entranceId = cutsceneId; + if (cutsceneId == CUTSCENE_NONE) { + stubbed_printf("BossLev problem\n"); + } } } + if (gCurrentLevelHeader->race_type == RACETYPE_HUBWORLD) { + if (gCurrentLevelHeader->world > WORLD_CENTRAL_AREA && gCurrentLevelHeader->world < WORLD_FUTURE_FUN_LAND) { + var_s0 = gCurrentLevelHeader->world; + if (settings->keys & (1 << var_s0) && !(settings->cutsceneFlags & (CUTSCENE_DINO_DOMAIN_KEY << (var_s0 + 31)))) { + // Trigger World Key unlocking Challenge Door cutscene. + push_level_property_stack(levelId, entranceId, vehicleId, cutsceneId); + settings->cutsceneFlags |= CUTSCENE_DINO_DOMAIN_KEY << (var_s0 + 31); + someAsset = (s8 *) get_misc_asset(ASSET_MISC_68); + levelId = someAsset[var_s0 - 1]; + entranceId = 0; + cutsceneId = CUTSCENE_ID_UNK_5; + } + } + } + if (gCurrentLevelHeader->race_type == RACETYPE_HUBWORLD && gCurrentLevelHeader->world == WORLD_CENTRAL_AREA && + !(settings->cutsceneFlags & CUTSCENE_WIZPIG_FACE) && settings->wizpigAmulet >= 4) { + // Trigger wizpig face cutscene + push_level_property_stack(levelId, entranceId, vehicleId, cutsceneId); + entranceId = 0; + cutsceneId = CUTSCENE_NONE; + settings->cutsceneFlags |= CUTSCENE_WIZPIG_FACE; + levelId = ((s8 *) get_misc_asset(ASSET_MISC_68))[4]; + } } D_800DD32C = 0; if (prevLevelID != levelId) { @@ -469,7 +467,7 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, Vehicle vehicl load_asset_to_address(ASSET_LEVEL_HEADERS, (u32) gCurrentLevelHeader, offset, size); } free_from_memory_pool(gTempAssetTable); - set_ai_level((s8 *) &gCurrentLevelHeader->unk20); + set_ai_level((s8 *) &gCurrentLevelHeader->AILevelTable); func_8000CBC0(); gMapId = levelId; for (var_s0 = 0; var_s0 < 7; var_s0++) { @@ -705,7 +703,7 @@ void clear_audio_and_track(void) { * Set the skill level of the AI. * Apply offsets based on game mode. */ -void set_ai_level(s8 *arg0) { +void set_ai_level(s8 *aiLevelTable) { s32 temp; UNUSED s32 temp2; s16 phi_v1; @@ -731,7 +729,7 @@ void set_ai_level(s8 *arg0) { if (is_in_adventure_two()) { aiLevel += 5; } - aiLevel = arg0[aiLevel]; + aiLevel = aiLevelTable[aiLevel]; if (get_filtered_cheats() & CHEAT_ULTIMATE_AI) { aiLevel = 9; } diff --git a/src/game.h b/src/game.h index 62d75afd..64c9658c 100644 --- a/src/game.h +++ b/src/game.h @@ -47,7 +47,7 @@ LevelHeader *get_current_level_header(void); u8 get_total_level_header_count(void); char *get_level_name(s32 levelId); void clear_audio_and_track(void); -void set_ai_level(s8 *arg0); +void set_ai_level(s8 *aiLevelTable); void free_ai_behaviour_table(void); AIBehaviourTable *get_ai_behaviour_table(void); s8 is_two_player_adventure_race(void); diff --git a/src/game_ui.c b/src/game_ui.c index f8b00320..b709eaee 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -19,7 +19,7 @@ #include "rcp.h" #include "audiosfx.h" #include "printf.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "controller.h" /************ .data ************/ @@ -374,7 +374,7 @@ void free_hud(void) { } else if (gAssetHudElementIds[i] & 0x4000) { free_object((Object *) gAssetHudElements->entry[i]); } else { - func_8005FF40((ObjectModel **) gAssetHudElements->entry[i]); + free_3d_model((ObjectModel **) gAssetHudElements->entry[i]); } gAssetHudElements->entry[i] = 0; } @@ -512,7 +512,7 @@ void render_hud(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *arg3, s render_magnet_reticle(arg3); set_ortho_matrix_view(&gHUDCurrDisplayList, &gHUDCurrMatrix); gDPSetEnvColor(gHUDCurrDisplayList++, 255, 255, 255, 0); - sp2C = func_8001139C() >> 1; + sp2C = get_race_countdown() >> 1; if (is_in_time_trial()) { func_800A277C(sp2C, arg3, updateRate); } else { @@ -1073,7 +1073,7 @@ void render_hud_hubworld(Object *obj, s32 updateRate) { } } -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING // render_hud_time_trial // https://decomp.me/scratch/BWqz9 // Draws Time Trial HUD. Also handles music/audio? @@ -1090,7 +1090,7 @@ void func_800A277C(s32 arg0, Object* playerRacerObj, s32 updateRate) { Object_68 *obj68; LevelObjectEntryCommon ttSWBody; LevelObjectEntryCommon ttSWArms; - s32 temp_a0_2; + UNUSED s32 temp_a0_2; s32 temp_t6; u16 stopwatchEndSoundID; s32 recordTime; @@ -1098,7 +1098,7 @@ void func_800A277C(s32 arg0, Object* playerRacerObj, s32 updateRate) { f32 posX; f32 posY; f32 posZ; - f32 new_var; + UNUSED f32 new_var; char *SWMessage[3]; curRacer = &playerRacerObj->unk64->racer; @@ -1130,7 +1130,7 @@ void func_800A277C(s32 arg0, Object* playerRacerObj, s32 updateRate) { obj68 = (Object_68 *) ttSWBodyObject->unk68[0]; obj68->objModel->unk52 = updateRate; if (gStopwatchFaceID != 0xFF) { - if ((gStopwatchFaceID == 4) && ((func_8001139C()) || (!music_is_playing()))) { + if ((gStopwatchFaceID == 4) && ((get_race_countdown()) || (!music_is_playing()))) { ttSWBodyObject->segment.animFrame = 16; } else if (gStopwatchFaceID == 4) { posX = audio_get_chr_select_anim_frac(); @@ -1167,7 +1167,7 @@ void func_800A277C(s32 arg0, Object* playerRacerObj, s32 updateRate) { } } } - func_80061D30(ttSWBodyObject); + object_animate(ttSWBodyObject); } func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, (unk80126CDC** ) &gCurrentHud->unk340); @@ -1254,7 +1254,7 @@ void func_800A277C(s32 arg0, Object* playerRacerObj, s32 updateRate) { if (func_8001B288()) { ttSWBodyObject = func_8001B2E0(); if (ttSWBodyObject != NULL) { - if ((func_8001139C() == 0) && (curRacer->raceFinished == 0)) { + if ((get_race_countdown() == 0) && (curRacer->raceFinished == 0)) { posY = ttSWBodyObject->segment.trans.y_position - playerRacerObj->segment.trans.y_position; posX = ttSWBodyObject->segment.trans.x_position - playerRacerObj->segment.trans.x_position; posZ = ttSWBodyObject->segment.trans.z_position - playerRacerObj->segment.trans.z_position; @@ -1317,7 +1317,7 @@ void func_800A277C(s32 arg0, Object* playerRacerObj, s32 updateRate) { draw_text(&gHUDCurrDisplayList, D_8012718C + D_80126D24 + D_80126D28, D_80127190, SWMessage[0], ALIGN_MIDDLE_CENTER); draw_text(&gHUDCurrDisplayList, D_8012718C + D_80126D24 + D_80126D28, D_80127190 + 14, SWMessage[1], ALIGN_MIDDLE_CENTER); draw_text(&gHUDCurrDisplayList, D_8012718C + D_80126D24 + D_80126D28, D_80127190 + 28, SWMessage[2], ALIGN_MIDDLE_CENTER); - update_colour_cycle((s8 *)D_80127194, updateRate); + update_colour_cycle(D_80127194, updateRate); set_kerning(0); } func_80068508(0); @@ -1736,7 +1736,7 @@ void render_race_position(Object_Racer *racer, s32 updateRate) { return; } place = racer->racePosition; - if (func_8001139C()) { + if (get_race_countdown()) { if (get_current_level_race_type() == RACETYPE_BOSS || is_taj_challenge()) { place = 2; } else { @@ -2591,7 +2591,7 @@ void render_minimap_and_misc_hud(Gfx **dList, MatrixS **mtx, Vertex **vtx, s32 u } else if (gAssetHudElementIds[i] & 0x4000) { free_object((Object *) gAssetHudElements->entry[i]); } else { - func_8005FF40((ObjectModel **) gAssetHudElements->entry[i]); + free_3d_model((ObjectModel **) gAssetHudElements->entry[i]); } gAssetHudElements->entry[i] = 0; } diff --git a/src/lights.c b/src/lights.c index 658a649d..23391677 100644 --- a/src/lights.c +++ b/src/lights.c @@ -8,6 +8,7 @@ #include "macros.h" #include "objects.h" #include "game.h" +#include "math_util.h" /************ .data ************/ diff --git a/src/math_util.c b/src/math_util.c index c67f0cba..acc59802 100644 --- a/src/math_util.c +++ b/src/math_util.c @@ -7,6 +7,8 @@ #include "types.h" #include "macros.h" #include "structs.h" +#include "game.h" +#include "string.h" extern s32 gIntDisFlag; extern s32 gCurrentRNGSeed; //Official Name: rngSeed @@ -22,13 +24,45 @@ extern s16 gArcTanTable[]; /******************************/ +#ifdef NON_MATCHING /* Official Name: disableInterrupts*/ +u32 disable_interrupts(void) { + if (gIntDisFlag) { + return __osDisableInt(); + } +} +#else GLOBAL_ASM("asm/math_util/disable_interrupts.s") +#endif + +#ifdef NON_MATCHING /* Official Name: enable_interrupts */ +void enable_interrupts(u32 flags) { + if (gIntDisFlag) { + __osRestoreInt(flags); + } +} +#else GLOBAL_ASM("asm/math_util/enable_interrupts.s") +#endif + +#ifdef NON_MATCHING /* Official Name: setIntDisFlag */ +void set_gIntDisFlag(s8 setting) { + gIntDisFlag = setting; +} +#else GLOBAL_ASM("asm/math_util/set_gIntDisFlag.s") +#endif + +#ifdef NON_MATCHING +/* Official Name: getIntDisFlag */ +s8 get_gIntDisFlag(void) { + return gIntDisFlag; +} +#else GLOBAL_ASM("asm/math_util/get_gIntDisFlag.s") +#endif #ifdef NON_EQUIVALENT // Untested UNUSED void s32_matrix_to_s16_matrix(s32 **input, s16 **output) { @@ -48,8 +82,8 @@ UNUSED void s32_matrix_to_s16_matrix(s32 **input, s16 **output) { GLOBAL_ASM("asm/math_util/s32_matrix_to_s16_matrix.s") #endif -#ifdef NON_EQUIVALENT -void f32_matrix_to_s32_matrix(Matrix *input, Matrix *output) { +#ifdef NON_MATCHING +void f32_matrix_to_s32_matrix(Matrix *input, MatrixS *output) { s32 i; for(i = 0; i < 4; i++) { (*output)[i][0] = (s32) ((*input)[i][0] * 65536.0f); @@ -73,55 +107,51 @@ void guMtxXFMF(Matrix mf, float x, float y, float z, float *ox, float *oy, float GLOBAL_ASM("asm/math_util/guMtxXFMF.s") #endif -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING /* Official name: mathMtxFastXFMF */ void f32_matrix_dot(Matrix *mat1, Matrix *mat2, Matrix *output) { - (*output)[0][0] = ((*mat2)[0][0] * (*mat1)[0][0]) + ((*mat2)[0][1] * (*mat1)[1][0]) + ((*mat2)[0][2] * (*mat1)[2][0]); - (*output)[0][1] = ((*mat2)[0][0] * (*mat1)[0][1]) + ((*mat2)[0][1] * (*mat1)[1][1]) + ((*mat2)[0][2] * (*mat1)[2][1]); - (*output)[0][2] = ((*mat2)[0][0] * (*mat1)[0][2]) + ((*mat2)[0][1] * (*mat1)[1][2]) + ((*mat2)[0][2] * (*mat1)[2][2]); + f32 temp_f4; + f32 temp_f6; + f32 temp_f8; + + temp_f4 = (*mat2)[0][0]; + temp_f6 = (*mat2)[0][1]; + temp_f8 = (*mat2)[0][2]; + (*output)[0][0] = (temp_f4 * (*mat1)[0][0]) + (temp_f6 * (*mat1)[1][0]) + (temp_f8 * (*mat1)[2][0]); + (*output)[0][1] = (temp_f4 * (*mat1)[0][1]) + (temp_f6 * (*mat1)[1][1]) + (temp_f8 * (*mat1)[2][1]); + (*output)[0][2] = (temp_f4 * (*mat1)[0][2]) + (temp_f6 * (*mat1)[1][2]) + (temp_f8 * (*mat1)[2][2]); } #else GLOBAL_ASM("asm/math_util/f32_matrix_dot.s") #endif -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING /* Official name: mathMtxCatF */ void f32_matrix_mult(Matrix *mat1, Matrix *mat2, Matrix *output) { s32 i; - for(i = 0; i < 4; i++) { - (*output)[i][0] = (f32) (((*mat1)[i][1] * (*mat2)[1][0]) + ((*mat1)[i][3] * (*mat2)[2][0]) + (((*mat1)[i][0] * (*mat2)[0][0]) + ((*mat1)[i][3] * (*mat2)[3][0]))); - (*output)[i][1] = (f32) (((*mat1)[i][1] * (*mat2)[1][1]) + ((*mat1)[i][3] * (*mat2)[2][1]) + (((*mat1)[i][0] * (*mat2)[0][1]) + ((*mat1)[i][3] * (*mat2)[3][1]))); - (*output)[i][2] = (f32) (((*mat1)[i][1] * (*mat2)[1][2]) + ((*mat1)[i][3] * (*mat2)[2][2]) + (((*mat1)[i][0] * (*mat2)[0][2]) + ((*mat1)[i][3] * (*mat2)[3][2]))); - (*output)[i][3] = (f32) (((*mat1)[i][1] * (*mat2)[1][3]) + ((*mat1)[i][3] * (*mat2)[2][3]) + (((*mat1)[i][0] * (*mat2)[0][3]) + ((*mat1)[i][3] * (*mat2)[3][3]))); + f32 x; + f32 y; + f32 z; + f32 w; + for (i = 0; i < 4; i++) { + x = (*mat1)[i][0]; + y = (*mat1)[i][1]; + z = (*mat1)[i][2]; + w = (*mat1)[i][3]; + (*output)[i][0] = (f32) ((y * (*mat2)[1][0]) + (z * (*mat2)[2][0]) + ((x * (*mat2)[0][0]) + (w * (*mat2)[3][0]))); + (*output)[i][1] = (f32) ((y * (*mat2)[1][1]) + (z * (*mat2)[2][1]) + ((x * (*mat2)[0][1]) + (w * (*mat2)[3][1]))); + (*output)[i][2] = (f32) ((y * (*mat2)[1][2]) + (z * (*mat2)[2][2]) + ((x * (*mat2)[0][2]) + (w * (*mat2)[3][2]))); + (*output)[i][3] = (f32) ((y * (*mat2)[1][3]) + (z * (*mat2)[2][3]) + ((x * (*mat2)[0][3]) + (w * (*mat2)[3][3]))); } } #else GLOBAL_ASM("asm/math_util/f32_matrix_mult.s") #endif -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING /* Official name: mathMtxF2L */ void f32_matrix_to_s16_matrix(Matrix *input, MatrixS *output) { - s32 temp_f10; - s32 temp_f4; - s32 temp_f6; - s32 temp_f8; - s32 i; - - for(i = 0; i < 4; i++){ - temp_f4 = (*input)[i][0] * 65536.0f; - temp_f6 = (*input)[i][1] * 65536.0f; - temp_f8 = (*input)[i][2] * 65536.0f; - temp_f10 = (*input)[i][3] * 65536.0f; - *output[i+4][0] = temp_f4; - *output[i+4][1] = temp_f6; - *output[i+4][2] = temp_f8; - *output[i+4][3] = temp_f10; - *output[i][0] = (temp_f4 >> 16); - *output[i][1] = (temp_f6 >> 16); - *output[i][2] = (temp_f8 >> 16); - *output[i][3] = (temp_f10 >> 16); - } + guMtxF2L((float (*)[4]) input, (Mtx *) output); } #else GLOBAL_ASM("asm/math_util/f32_matrix_to_s16_matrix.s") @@ -146,8 +176,20 @@ s32 get_rng_seed(void) { return gCurrentRNGSeed; } +#ifdef NON_MATCHING /* Official Name: mathRnd */ +s32 get_random_number_from_range(s32 min, s32 max) { + s32 newSeed; + u64 curSeed; + + curSeed = (((u64) ((s64) gCurrentRNGSeed << 0x3F) >> 0x1F) | ((u64) ((s64) gCurrentRNGSeed << 0x1F) >> 0x20)) ^ ((u64) ((s64) gCurrentRNGSeed << 0x2C) >> 0x20); + newSeed = ((curSeed >> 0x14) & 0xFFF) ^ curSeed; + gCurrentRNGSeed = newSeed; + return ((u32) (newSeed - min) % (u32) ((max - min) + 1)) + min; +} +#else GLOBAL_ASM("asm/math_util/rng.s") +#endif #ifdef NON_EQUIVALENT /* Official name: fastShortReflection */ @@ -187,11 +229,18 @@ UNUSED void s16_vec3_mult_by_s32_matrix_full(s32 **input, s16 *output) { GLOBAL_ASM("asm/math_util/s16_vec3_mult_by_s32_matrix_full.s") #endif -#ifdef NON_EQUIVALENT -void s16_vec3_mult_by_s32_matrix(s32 **input, s16 *output) { - output[0] = ((output[0] * input[0][0]) + (output[1] * input[1][0]) + (output[2] * input[2][0])) >> 16; - output[1] = ((output[0] * input[0][1]) + (output[1] * input[1][1]) + (output[2] * input[2][1])) >> 16; - output[2] = ((output[0] * input[0][2]) + (output[1] * input[1][2]) + (output[2] * input[2][2])) >> 16; +#ifdef NON_MATCHING +void s16_vec3_mult_by_s32_matrix(MatrixS input, Vec3s *output) { + s32 x; + s32 y; + s32 z; + + x = output->x; + y = output->y; + z = output->z; + output->x = ((x * input[0][0]) + (y * input[1][0]) + (z * input[2][0])) >> 16; + output->y = ((x * input[0][1]) + (y * input[1][1]) + (z * input[2][1])) >> 16; + output->z = ((x * input[0][2]) + (y * input[1][2]) + (z * input[2][2])) >> 16; } #else GLOBAL_ASM("asm/math_util/s16_vec3_mult_by_s32_matrix.s") @@ -539,46 +588,67 @@ GLOBAL_ASM("asm/math_util/f32_matrix_from_position.s") GLOBAL_ASM("asm/math_util/f32_matrix_from_scale.s") -#ifdef NON_EQUIVALENT -s32 atan2s(s32 xDelta, s32 zDelta) { - s32 temp; - s32 someAngle; +#ifdef NON_MATCHING +// Blatantly stolen from SM64 :) +static u16 atan2_lookup(f32 y, f32 x) { + u16 ret; - if ((xDelta | zDelta) == 0) { - return 0; + if (x == 0) { + ret = gArcTanTable[0]; + } else { + ret = gArcTanTable[(s32)(y / x * 1024 + 0.5f)]; } - if (xDelta >= 0) { - if (zDelta >= 0) { - someAngle = 0; + return ret; +} + +s32 atan2s(s32 x, s32 y) { + u16 ret; + + if (x >= 0) { + if (y >= 0) { + if (y >= x) { + ret = atan2_lookup(x, y); + } else { + ret = 0x4000 - atan2_lookup(y, x); + } } else { - zDelta = -zDelta; - someAngle = 0x4000; - temp = xDelta ^ zDelta; - zDelta ^= temp; - xDelta = temp ^ zDelta; + y = -y; + if (y < x) { + ret = 0x4000 + atan2_lookup(y, x); + } else { + ret = 0x8000 - atan2_lookup(x, y); + } } } else { - xDelta = -xDelta; - if (zDelta >= 0) { - someAngle = 0xC000; - temp = xDelta ^ zDelta; - zDelta ^= temp; - xDelta = temp ^ zDelta; + x = -x; + if (y < 0) { + y = -y; + if (y >= x) { + ret = 0x8000 + atan2_lookup(x, y); + } else { + ret = 0xC000 - atan2_lookup(y, x); + } } else { - zDelta = -zDelta; - someAngle = 0x8000; + if (y < x) { + ret = 0xC000 + atan2_lookup(y, x); + } else { + ret = -atan2_lookup(x, y); + } } } - if ((xDelta - zDelta) >= 0) { - return (someAngle + 0x4000) - gArcTanTable[((zDelta << 11) / xDelta) & 0xFFE]; - } else { - return someAngle + gArcTanTable[((xDelta << 11) / zDelta) & 0xFFE]; - } + return ret; } #else GLOBAL_ASM("asm/math_util/atan2s.s") #endif + +#ifdef NON_MATCHING +s16 arctan2_f(f32 y, f32 x) { + return atan2s((s32) (y * 255.0f), (s32) (x * 255.0f)); +} +#else GLOBAL_ASM("asm/math_util/arctan2_f.s") +#endif #ifdef NON_EQUIVALENT // Untested UNUSED s32 s32_matrix_cell_sqrt(s32 arg0) { @@ -674,4 +744,11 @@ GLOBAL_ASM("asm/math_util/area_triangle_2d.s") #endif GLOBAL_ASM("asm/math_util/set_breakpoint.s") + +#ifdef NON_MATCHING +void dmacopy_doubleword(void *src, void *dst, s32 size) { + memcpy(dst, src, size); +} +#else GLOBAL_ASM("asm/math_util/dmacopy_doubleword.s") +#endif \ No newline at end of file diff --git a/src/math_util.h b/src/math_util.h index cdc670d6..131cba28 100644 --- a/src/math_util.h +++ b/src/math_util.h @@ -3,6 +3,7 @@ #include "types.h" #include "structs.h" +#include "memory.h" /** * Keeps the value within the range. @@ -32,13 +33,13 @@ void save_rng_seed(s32 num); void load_rng_seed(s32 num); s32 get_rng_seed(void); s32 get_random_number_from_range(s32, s32); -void f32_matrix_to_s32_matrix(Matrix *input, Matrix *output); +void f32_matrix_to_s32_matrix(Matrix *input, MatrixS *output); void guMtxXFMF(Matrix mf, float x, float y, float z, float *ox, float *oy, float *oz); void f32_matrix_dot(Matrix *mat1, Matrix *mat2, Matrix *output); void f32_matrix_mult(Matrix *mat1, Matrix *mat2, Matrix *output); void f32_matrix_to_s16_matrix(Matrix *input, MatrixS *output); void s16_matrix_rotate(s16 *arg0[4][4], s16 arg1[4][4]); -void s16_vec3_mult_by_s32_matrix(s32 **input, s16 *output); +void s16_vec3_mult_by_s32_matrix(MatrixS input, Vec3s *output); void object_transform_to_matrix(Matrix mtx, ObjectTransform *trans); void f32_matrix_scale(Matrix *input, f32 scale); void f32_matrix_y_scale(Matrix *input, f32 scale); @@ -54,5 +55,8 @@ void f32_matrix_from_scale(Matrix, f32, f32, f32); s32 atan2s(s32 xDelta, s32 zDelta); f32 area_triangle_2d(f32 x0, f32 z0, f32 x1, f32 z1, f32 x2, f32 z2); void dmacopy_doubleword(void *src, void *dst, s32 size); +unk800B7D10 *get_stack_pointer(void); +u32 disable_interrupts(void); +void enable_interrupts(u32 flags); #endif // MATH_UTIL_H diff --git a/src/memory.c b/src/memory.c index 59f94ebe..05754f26 100644 --- a/src/memory.c +++ b/src/memory.c @@ -5,6 +5,7 @@ #include "printf.h" #include "thread0_epc.h" #include "controller.h" +#include "math_util.h" /************ .bss ************/ @@ -50,7 +51,7 @@ MemoryPoolSlot *new_sub_memory_pool(s32 poolDataSize, s32 numSlots) { s32 size; MemoryPoolSlot *slots; UNUSED s32 unused_2; - s32 *flags = disable_interrupts(); + u32 flags = disable_interrupts(); MemoryPoolSlot *newPool; size = poolDataSize + (numSlots * sizeof(MemoryPoolSlot)); @@ -129,7 +130,7 @@ MemoryPoolSlot *allocate_from_memory_pool(s32 poolIndex, s32 size, u32 colourTag UNUSED s32 pad; MemoryPool *pool; MemoryPoolSlot *slots; - s32 *flags; + u32 flags; s32 nextIndex; s32 currIndex; @@ -187,7 +188,7 @@ void *allocate_at_address_in_main_pool(s32 size, u8 *address, u32 colorTag) { s32 i; MemoryPoolSlot *curSlot; MemoryPoolSlot *slots; - s32 *flags; + u32 flags; flags = disable_interrupts(); if (size == 0) { @@ -230,7 +231,7 @@ void *allocate_at_address_in_main_pool(s32 size, u8 *address, u32 colorTag) { * Official name: mmSetDelay */ void set_free_queue_state(s32 state) { - s32 *flags = disable_interrupts(); + u32 flags = disable_interrupts(); gFreeQueueTimer = state; if (state == 0) { // flush free queue if state is 0. while (gFreeQueueCount > 0) { @@ -246,7 +247,7 @@ void set_free_queue_state(s32 state) { * Official Name: mmFree */ void free_from_memory_pool(void *data) { - s32 *flags = disable_interrupts(); + u32 flags = disable_interrupts(); if (gFreeQueueTimer == 0) { free_slot_containing_address(data); } else { @@ -261,7 +262,7 @@ void free_from_memory_pool(void *data) { */ void clear_free_queue(void) { s32 i; - s32 *flags; + u32 flags; flags = disable_interrupts(); @@ -309,7 +310,7 @@ UNUSED void func_80071314(void) { MemoryPoolSlot *slotPos; MemoryPool *pool; UNUSED s32 pad; - s32 *flags; + u32 flags; s32 poolIndex; s32 slotIndex; @@ -358,7 +359,7 @@ s32 func_80071478(u8 *address) { s32 slotIndex; MemoryPoolSlot *slot; MemoryPool *pool; - s32 *flags; + u32 flags; flags = disable_interrupts(); pool = &gMemoryPools[get_memory_pool_index_containing_address(address)]; @@ -382,7 +383,7 @@ s32 func_80071538(u8 *address) { s32 slotIndex; MemoryPoolSlot *slot; MemoryPool *pool; - s32 *flags; + u32 flags; flags = disable_interrupts(); pool = &gMemoryPools[get_memory_pool_index_containing_address(address)]; diff --git a/src/memory.h b/src/memory.h index 20b1b3f2..6d37aec0 100644 --- a/src/memory.h +++ b/src/memory.h @@ -68,11 +68,6 @@ typedef struct unk800B7D10 { s32 unk14; } unk800B7D10; -//Functions below don't have files or matches yet -unk800B7D10 *get_stack_pointer(void); // Non Matching with own file? -s32 *disable_interrupts(void); -void enable_interrupts(s32*); - void init_main_memory_pool(void); MemoryPoolSlot *new_sub_memory_pool(s32 poolDataSize, s32 numSlots); void *allocate_from_main_pool_safe(s32 size, u32 colourTag); diff --git a/src/menu.c b/src/menu.c index 5945004a..ac4b037f 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2873,7 +2873,7 @@ void func_80083098(f32 arg0) { text = introCharData->unk0; didUpdate = TRUE; } else { - if (!gTitleCinematicTextColours){} // Fake + if (!gTitleCinematicTextColours[0].red){} // Fake D_801268E0++; } } @@ -4112,7 +4112,7 @@ s32 func_80087734(s32 buttonsPressed, s32 yAxis) { D_80126A80[i]->unk13 = 0; } } - if (buttonsPressed & B_BUTTON || (buttonsPressed & (START_BUTTON | A_BUTTON) && D_80126A74 == (D_80126A78 + 1U))) { + if (buttonsPressed & B_BUTTON || (buttonsPressed & (START_BUTTON | A_BUTTON) && (u32) D_80126A74 == (D_80126A78 + 1U))) { play_sound_global(SOUND_MENU_BACK3, NULL); gMenuOptionCount &= ~8; switch (sp1C) { @@ -7401,7 +7401,7 @@ void render_track_select(s32 x, s32 y, char *hubName, char *trackName, s32 rectO opacity = 255; } if (hubName != D_801269F0) { - temp = get_level_name(get_hub_area_id(3)); + temp = (s32) get_level_name(get_hub_area_id(3)); if ((s32) hubName == temp) { set_kerning(TRUE); } @@ -10432,7 +10432,7 @@ void func_80099E8C(UNUSED s32 updateRate) { set_text_font(FONT_SMALL); x = 40; while (spE4 < D_801264D4 && spE8 > 0) { - if (((!gGhostDataElementPositions) && (!gGhostDataElementPositions)) && (!gGhostDataElementPositions)){} // Fakematch + if (gGhostDataElementPositions[0]){} // Fakematch currentWorldId = get_map_world_id(D_80126508[spE4]) - 1; if (currentWorldId < 0 || currentWorldId >= 5) { @@ -11136,7 +11136,7 @@ void func_8009C508(s32 arg0) { if ((*gAssetsMenuElementIds)[arg0] & 0x4000) { free_object((Object *) (u32) gMenuObjects[arg0]); } else { - func_8005FF40((ObjectModel**)(u32)gMenuObjects[arg0]); + free_3d_model((ObjectModel**)(u32)gMenuObjects[arg0]); } } } @@ -11184,9 +11184,9 @@ void func_8009C6D4(s32 arg0) { if (((!arg0) && (!arg0)) && (!arg0)){} // Fakematch if ((i & 0xC000) == 0xC000) { - gMenuObjects[arg0] = load_texture(i & 0x3FFF); + gMenuObjects[arg0] = (TextureHeader *) load_texture(i & 0x3FFF); } else if (i & 0x8000) { - gMenuObjects[arg0] = func_8007C12C(i & 0x3FFF, 0); + gMenuObjects[arg0] = (TextureHeader *) func_8007C12C(i & 0x3FFF, 0); } else if (i & 0x4000) { if (gMenuElementIdCount){} // Fakematch entry.objectID = i & 0xFFFF; @@ -11194,9 +11194,9 @@ void func_8009C6D4(s32 arg0) { entry.x = 0; entry.y = 0; entry.z = 0; - gMenuObjects[arg0] = spawn_object(&entry, 0); + gMenuObjects[arg0] = (TextureHeader *) spawn_object(&entry, 0); } else { - gMenuObjects[arg0] = func_8005F99C(i & 0x3FFF, 0); + gMenuObjects[arg0] = (TextureHeader *) object_model_init(i & 0x3FFF, 0); } D_80126750[arg0] = TRUE; diff --git a/src/object_functions.c b/src/object_functions.c index 53c315aa..553ae4ff 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -14,7 +14,7 @@ #include "racer.h" #include "game.h" #include "audio.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "objects.h" #include "particles.h" #include "tracks.h" @@ -26,7 +26,7 @@ #include "math_util.h" #include "game_text.h" #include "fade_transition.h" -#include "unknown_005740.h" +#include "audio_vehicle.h" #include "object_models.h" #include "lib/src/libc/rmonPrintf.h" #include "collision.h" @@ -1064,7 +1064,7 @@ void obj_loop_unknown58(Object *obj, s32 updateRate) { obj->segment.object.animationID = 0; obj->segment.animFrame = 40; - if (func_8001139C() == 0) { + if (get_race_countdown() == 0) { obj->properties.common.unk0 += updateRate; } set_ghost_position_and_rotation(obj); @@ -1249,8 +1249,8 @@ void obj_loop_stopwatchman(Object *obj, s32 updateRate) { func_800012E8(); play_music(SEQUENCE_TTS_THEME); if (racerObj != NULL) { - func_80006AC8(racerObj); - racer->unk118 = 0; + racer_sound_free(racerObj); + racer->vehicleSound = NULL; } } } @@ -1343,7 +1343,7 @@ void obj_loop_stopwatchman(Object *obj, s32 updateRate) { slowly_change_fog(PLAYER_ONE, tt->fogR, tt->fogG, tt->fogB, tt->fogNear, tt->fogFar, 180); play_music(header->music); func_80001074(header->instruments); - racer->unk118 = func_80004B40(racer->characterId, racer->vehicleID); + racer->vehicleSound = func_80004B40(racer->characterId, racer->vehicleID); } obj->properties.npc.timer = 180; move_object(obj, obj->segment.x_velocity * updateRateF, obj->segment.y_velocity * updateRateF, obj->segment.z_velocity * updateRateF); @@ -2219,7 +2219,7 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { s32 dialogueID; s32 numRacers; Object_NPC *taj; - Object_64 *racer64; + Object_Racer *racer; u32 buttonsPressed; s8 sp6B; LevelHeader *levelHeader; @@ -2247,9 +2247,9 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { obj->segment.z_velocity = 0.0f; racerObj = get_racer_object(PLAYER_ONE); if (racerObj != NULL) { - racer64 = racerObj->unk64; - xPosDiff = (racerObj->segment.trans.x_position - (racer64->racer.ox1 * 50.0f)) - obj->segment.trans.x_position; - zPosDiff = (racerObj->segment.trans.z_position - (racer64->racer.oz1 * 50.0f)) - obj->segment.trans.z_position; + racer = (Object_Racer *) racerObj->unk64; + xPosDiff = (racerObj->segment.trans.x_position - (racer->ox1 * 50.0f)) - obj->segment.trans.x_position; + zPosDiff = (racerObj->segment.trans.z_position - (racer->oz1 * 50.0f)) - obj->segment.trans.z_position; distance = sqrtf((xPosDiff * xPosDiff) + (zPosDiff * zPosDiff)); } buttonsPressed = get_buttons_pressed_from_player(PLAYER_ONE); @@ -2263,7 +2263,7 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { ) ) { if (buttonsPressed & Z_TRIG) { - play_char_horn_sound(racerObj, &racer64->racer); + play_char_horn_sound(racerObj, racer); } arctan = arctan2_f(racerObj->segment.trans.x_position - obj->segment.trans.x_position, racerObj->segment.trans.z_position - obj->segment.trans.z_position) - (racerObj->segment.trans.y_rotation & 0xFFFF); if (arctan > 0x8000) { @@ -2283,8 +2283,8 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { set_music_player_voice_limit(24); play_music(SEQUENCE_ENTRANCED); if (racerObj != NULL) { - func_80006AC8(racerObj); - racer64->racer.unk118 = 0; + racer_sound_free(racerObj); + racer->vehicleSound = NULL; } func_80008140(); arctan = arctan2_f( @@ -2441,23 +2441,23 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { } if (dialogueID & 0x80) { gTajDialogueChoice = dialogueID & 0x7F; - if (gTajDialogueChoice != racer64->racer.vehicleID) { + if (gTajDialogueChoice != racer->vehicleID) { obj->properties.npc.action = TAJ_MODE_TRANSFORM_BEGIN; taj->animFrameF = 0; // Voice clips: Abrakadabra, Alakazam, Alakazoom? - play_taj_voice_clip((racer64->racer.vehicleID + SOUND_VOICE_TAJ_ABRAKADABRA), TRUE); + play_taj_voice_clip((racer->vehicleID + SOUND_VOICE_TAJ_ABRAKADABRA), TRUE); } else { set_menu_id_if_option_equal(0x62, 2); } } if (dialogueID & 0x40) { gTajDialogueChoice = dialogueID & 0xF; - if (gTajDialogueChoice != racer64->racer.vehicleID) { + if (gTajDialogueChoice != racer->vehicleID) { gTajDialogueChoice |= 0x80; obj->properties.npc.action = TAJ_MODE_TRANSFORM_BEGIN; taj->animFrameF = 0.0f; // Voice clips: Abrakadabra, Alakazam, Alakazoom? - play_taj_voice_clip((racer64->racer.vehicleID + SOUND_VOICE_TAJ_ABRAKADABRA), TRUE); + play_taj_voice_clip((racer->vehicleID + SOUND_VOICE_TAJ_ABRAKADABRA), TRUE); } else { obj->properties.npc.action = TAJ_MODE_SET_CHALLENGE; transition_begin(&gTajTransition); @@ -2479,10 +2479,10 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { } if (taj->animFrameF > 60.0) { taj->animFrameF = 60.0f; - if (racer64->racer.transparency > (updateRate * 16)) { - racer64->racer.transparency -= (updateRate * 16); + if (racer->transparency > (updateRate * 16)) { + racer->transparency -= (updateRate * 16); } else { - racer64->racer.transparency = 0; + racer->transparency = 0; despawn_player_racer(racerObj, gTajDialogueChoice & 0xF); obj->properties.npc.action = TAJ_MODE_TRANSFORM_END; play_sound_global(SOUND_CYMBAL, NULL); @@ -2501,10 +2501,10 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { var_a2 = 4; } var_a2 <<= 5; - if (racer64->racer.transparency < (255 - (var_a2))) { - racer64->racer.transparency += var_a2; + if (racer->transparency < (255 - (var_a2))) { + racer->transparency += var_a2; } else { - racer64->racer.transparency = 255; + racer->transparency = 255; if (taj->animFrameF == 0.0) { if (gTajDialogueChoice & 0x80) { transition_begin(&gTajTransition); @@ -2530,14 +2530,14 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { if (obj->properties.npc.action == TAJ_MODE_END_DIALOGUE_UNUSED) { func_80022CFC( obj->segment.object.segmentID, - obj->segment.trans.x_position - (racer64->racer.ox1 * 50.0f), + obj->segment.trans.x_position - (racer->ox1 * 50.0f), obj->segment.trans.y_position, - obj->segment.trans.z_position - (racer64->racer.oz1 * 50.0f) + obj->segment.trans.z_position - (racer->oz1 * 50.0f) ); } obj->properties.npc.action = TAJ_MODE_TELEPORT_AWAY_BEGIN; play_sound_global(SOUND_WHOOSH4, NULL); - racer64->racer.unk118 = func_80004B40(racer64->racer.characterId, racer64->racer.vehicleID); + racer->vehicleSound = func_80004B40(racer->characterId, racer->vehicleID); } break; case TAJ_MODE_TELEPORT_TO_PLAYER_BEGIN: @@ -2560,8 +2560,8 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { sp6B = 1; obj->segment.object.opacity = 0; obj->properties.npc.action = TAJ_MODE_TELEPORT_TO_PLAYER_END; - obj->segment.trans.x_position = racerObj->segment.trans.x_position - (racer64->racer.ox1 * 150.0f); - obj->segment.trans.z_position = racerObj->segment.trans.z_position - (racer64->racer.oz1 * 150.0f); + obj->segment.trans.x_position = racerObj->segment.trans.x_position - (racer->ox1 * 150.0f); + obj->segment.trans.z_position = racerObj->segment.trans.z_position - (racer->oz1 * 150.0f); obj->segment.object.segmentID = get_level_segment_index_from_position(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); obj->segment.trans.y_rotation = racerObj->segment.trans.y_rotation + 0x8000; } @@ -2595,12 +2595,12 @@ void obj_loop_parkwarden(Object *obj, s32 updateRate) { if (obj->segment.object.opacity > var_a2) { obj->segment.object.opacity -= var_a2; } else { - racer64->racer.unk118 = func_80004B40(racer64->racer.characterId, racer64->racer.vehicleID); + racer->vehicleSound = func_80004B40(racer->characterId, racer->vehicleID); slowly_change_fog(PLAYER_ONE, taj->fogR, taj->fogG, taj->fogB, taj->fogNear, taj->fogFar, 180); set_music_player_voice_limit(levelHeader->voiceLimit); play_music(levelHeader->music); func_80001074(levelHeader->instruments); - init_racer_for_challenge(racer64->racer.vehicleID); + init_racer_for_challenge(racer->vehicleID); telepoint = find_furthest_telepoint(obj->segment.trans.x_position, obj->segment.trans.z_position); if (telepoint != NULL) { obj->segment.trans.x_position = telepoint->segment.trans.x_position; diff --git a/src/object_functions.h b/src/object_functions.h index 1d64bfb6..3e1c256c 100644 --- a/src/object_functions.h +++ b/src/object_functions.h @@ -259,12 +259,6 @@ typedef struct VertexPosition { extern Triangle D_800DCAA8[8]; extern VertexPosition D_800DCB28[6]; -extern u32 osTvType; - -f32 sins_f(s16); // No idea where it's located -f32 coss_f(s16); // No idea where it's located -s32 get_random_number_from_range(s32, s32); // Non Matching src/math_util.c -s32 atan2s(s32, s32); // Non Matching src/math_util.c void obj_init_fireball_octoweapon(Object *obj, LevelObjectEntry_Fireball_Octoweapon *entry); void obj_init_lasergun(Object *obj, LevelObjectEntry_Lasergun *entry); diff --git a/src/object_models.c b/src/object_models.c index 520b0683..21439718 100644 --- a/src/object_models.c +++ b/src/object_models.c @@ -13,7 +13,7 @@ /************ .data ************/ s32 gTractionTableChecksum = 116315; -s32 gFunc80024D54Length = 1980; +s32 gTrackRenderFuncLength = 1980; /*******************************/ @@ -34,7 +34,7 @@ s32 *gObjectModelTable; s32 *D_8011D624; s32 *D_8011D628; s32 D_8011D62C; -s32 D_8011D630; +s32 gNumModelIDs; s32 D_8011D634; s16 *gAnimationTable; s32 *gObjectAnimationTable; @@ -55,11 +55,11 @@ void allocate_object_model_pools(void) { D_8011D62C = 0; D_8011D634 = 0; gObjectModelTable = (s32 *) load_asset_section_from_rom(ASSET_OBJECT_MODELS_TABLE); - D_8011D630 = 0; - while (gObjectModelTable[D_8011D630] != -1) { - D_8011D630++; + gNumModelIDs = 0; + while (gObjectModelTable[gNumModelIDs] != -1) { + gNumModelIDs++; } - D_8011D630--; + gNumModelIDs--; gAnimationTable = (s16 *) load_asset_section_from_rom(ASSET_ANIMATION_IDS); gObjectAnimationTable = (s32 *) load_asset_section_from_rom(ASSET_OBJECT_ANIMATIONS_TABLE); D_8011D644 = (s32) allocate_from_main_pool_safe(0xC00, COLOUR_TAG_GREEN); @@ -67,7 +67,7 @@ void allocate_object_model_pools(void) { // Antipiracy measure checksum = 0; - for (i = 0; i < gFunc80024D54Length; i++) { + for (i = 0; i < gTrackRenderFuncLength; i++) { checksum += *(u8 *)(((s32) &render_scene) + i); } if (checksum != gTractionTableChecksum) { @@ -75,7 +75,11 @@ void allocate_object_model_pools(void) { } } -Object_68 *func_8005F99C(s32 arg0, s32 arg1) { +/** + * Load the associated model ID and assign it to the objects gfx data. + * Also loads textures and animations. +*/ +Object_68 *object_model_init(s32 modelID, s32 flags) { s32 i; s32 sp50; ObjectModel *objMdl; @@ -86,17 +90,18 @@ Object_68 *func_8005F99C(s32 arg0, s32 arg1) { u32 compressedData; s32 sp34; - if (arg0 >= D_8011D630) { - arg0 = 0; + if (modelID >= gNumModelIDs) { + stubbed_printf(D_800E6B20); + modelID = 0; } // Check if the model already exists in the cache. for(i = 0; i < D_8011D62C; i++) { - if(arg0 == D_8011D624[(i << 1)]) { + if(modelID == D_8011D624[(i << 1)]) { objMdl = (ObjectModel *) D_8011D624[(i << 1) + 1]; - ret = func_8005FCD0(objMdl, arg1); + ret = func_8005FCD0(objMdl, flags); if (ret != NULL) { - objMdl->unk30++; + objMdl->references++; } return ret; } @@ -110,8 +115,8 @@ Object_68 *func_8005F99C(s32 arg0, s32 arg1) { D_8011D62C++; } - temp_s0 = gObjectModelTable[arg0]; - sp48 = gObjectModelTable[arg0 + 1] - temp_s0; + temp_s0 = gObjectModelTable[modelID]; + sp48 = gObjectModelTable[modelID + 1] - temp_s0; sp34 = get_asset_uncompressed_size(ASSET_OBJECT_MODELS, temp_s0) + 0x80; objMdl = (ObjectModel *) allocate_from_main_pool(sp34, COLOUR_TAG_RED); if (objMdl == NULL) { @@ -127,7 +132,7 @@ Object_68 *func_8005F99C(s32 arg0, s32 arg1) { objMdl->unk14 = (s16 *) ((s32) objMdl->unk14 + (u8 *) objMdl); objMdl->unk1C = (s16 *) ((s32) objMdl->unk1C + (u8 *) objMdl); objMdl->unk4C = (s32 *) ((s32) objMdl->unk4C + (u8 *) objMdl); - objMdl->unk30 = 1; + objMdl->references = 1; objMdl->unkC = 0; objMdl->unk10 = 0; objMdl->unk32 = 0; @@ -145,13 +150,14 @@ Object_68 *func_8005F99C(s32 arg0, s32 arg1) { if (!sp3F) { for(i = 0; i < objMdl->numberOfBatches; i++) { if ((objMdl->batches[i].textureIndex != 0xFF) && (objMdl->batches[i].textureIndex >= objMdl->numberOfTextures)) { + stubbed_printf(D_800E6B4C); goto block_30; } } - if ((func_80060EA8(objMdl) == 0) && (func_80061A00(objMdl, arg0) == 0)) { - ret = func_8005FCD0(objMdl, arg1); + if ((func_80060EA8(objMdl) == 0) && (func_80061A00(objMdl, modelID) == 0)) { + ret = func_8005FCD0(objMdl, flags); if (ret != NULL) { - D_8011D624[(sp50 << 1)] = arg0; + D_8011D624[(sp50 << 1)] = modelID; D_8011D624[(sp50 << 1) + 1] = (s32) objMdl; if (D_8011D62C < 70) { ret->unk20 = 0; @@ -161,7 +167,7 @@ Object_68 *func_8005F99C(s32 arg0, s32 arg1) { } } block_30: - free_object_model((ObjectModel* ) objMdl); + free_model_data((ObjectModel* ) objMdl); return NULL; } @@ -207,9 +213,9 @@ Object_68 *func_8005FCD0(ObjectModel *model, s32 arg1) { result->unk18 = 0; result->unk1A = 0; result->objModel = model; - result->unk10 = -1; - result->unk12 = -1; - result->unk1F = 0; + result->animationID = -1; + result->animationFrame = -1; + result->animationTaskNum = 0; if (result->unk1E != 0) { temp = 0; vertex = result->unk4[0]; @@ -246,7 +252,10 @@ Object_68 *func_8005FCD0(ObjectModel *model, s32 arg1) { return result; } -void func_8005FF40(ObjectModel **modelPtr) { +/** + * Attempts to free the object model from RAM. +*/ +void free_3d_model(ObjectModel **modelPtr) { UNUSED s32 pad; s32 modelIndex; ObjectModel *model; @@ -254,8 +263,8 @@ void func_8005FF40(ObjectModel **modelPtr) { if (modelPtr != 0) { model = *modelPtr; - model->unk30--; - if (model->unk30 > 0) { + model->references--; + if (model->references > 0) { // Model is still used, so free the reference and return. free_from_memory_pool(modelPtr); return; } @@ -268,7 +277,7 @@ void func_8005FF40(ObjectModel **modelPtr) { } if (modelIndex != -1) { - free_object_model(model); + free_model_data(model); D_8011D628[D_8011D634] = modelIndex; D_8011D634++; D_8011D624[modelIndex << 1] = -1; @@ -278,7 +287,10 @@ void func_8005FF40(ObjectModel **modelPtr) { } } -void free_object_model(ObjectModel *mdl) { +/** + * Frees all associated meshes, textures and animations from the model. +*/ +void free_model_data(ObjectModel *mdl) { // free the textures s16 numTextures = mdl->numberOfTextures; if (numTextures > 0) { @@ -469,7 +481,7 @@ void func_80061C0C(Object *obj) { } if (var_v1 < obj->segment.animFrame >> 4) { obj->segment.animFrame = 0; - gfxData->unk10 = -1; + gfxData->animationID = -1; } } } diff --git a/src/object_models.h b/src/object_models.h index e07c9f0c..d0cb10e9 100644 --- a/src/object_models.h +++ b/src/object_models.h @@ -12,18 +12,18 @@ typedef struct unk8011D624 { } unk8011D624; extern s32 gTractionTableChecksum; -extern s32 gFunc80024D54Length; +extern s32 gTrackRenderFuncLength; void allocate_object_model_pools(void); void func_800619F4(s32 arg0); void func_80061C0C(Object* obj); -void func_8005FF40(ObjectModel **modelPtr); +void free_3d_model(ObjectModel **modelPtr); s32 func_80061A00(ObjectModel *model, s32 animTableIndex); -s32 func_80060C58(Vertex *vertices, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +s32 check_nearby_vertices(Vertex *vertices, s32 arg1, s32 arg2, s32 arg3, s32 arg4); Object_68 *func_8005FCD0(ObjectModel *model, s32 arg1); -Object_68 *func_8005F99C(s32 arg0, s32 arg1); +Object_68 *object_model_init(s32 arg0, s32 arg1); -void free_object_model(ObjectModel *model); //Non Matching +void free_model_data(ObjectModel *model); //Non Matching void func_80060910(ObjectModel *); s32 func_80060AC8(ObjectModel *mdl, s32 arg1, s32 arg2, s32 arg3, s32 *outBatchIndex, s32 *outVertexIndex); s32 func_80060EA8(ObjectModel *); diff --git a/src/objects.c b/src/objects.c index 526872e8..7d0fb3d0 100644 --- a/src/objects.c +++ b/src/objects.c @@ -24,11 +24,11 @@ #include "object_models.h" #include "lights.h" #include "game_ui.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "controller.h" #include "game_text.h" #include "audiosfx.h" -#include "unknown_005740.h" +#include "audio_vehicle.h" #include "vehicle_misc.h" #define MAX_CHECKPOINTS 60 @@ -191,9 +191,9 @@ s32 gAssetsMiscTableLength; s16 D_8011ADA4; f32 gObjectUpdateRateF; s32 D_8011ADAC; -s32 D_8011ADB0; +s32 gEventCountdown; s32 D_8011ADB4; -s32 gRaceStartCountdown; +s32 gEventStartTimer; s32 D_8011ADBC; s32 D_8011ADC0; s8 gFirstTimeFinish; @@ -672,7 +672,7 @@ s32 func_8000CC20(Object *obj) { return NextFreeIndex; } -#ifdef NON_EQUIVALENT +#ifdef NON_MATCHING void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { s32 numPlayers; // sp144 enum GameMode gameMode; @@ -707,7 +707,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { s32 tajFlags; D_8011AD20 = 0; - D_8011ADB0 = 0; + gEventCountdown = 0; gFirstTimeFinish = 0; gNumRacers = 0; D_8011AF00 = 0; @@ -748,7 +748,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { curObj = gObjPtrList[i2]; if (!(curObj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED)) { if (curObj->behaviorId == BHV_SETUP_POINT) { - if (arg1 == curObj->properties.setupPoint.unk4) { + if (arg1 == (u32) curObj->properties.setupPoint.unk4) { if (curObj->properties.setupPoint.unk0 < 8) { spF4[curObj->properties.setupPoint.unk0] = curObj->segment.trans.x_position; spD4[curObj->properties.setupPoint.unk0] = curObj->segment.trans.y_position; @@ -844,7 +844,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { } } } - if (((!(&curObj->segment.trans)) && (!(&curObj->segment.trans))) && (!(&curObj->segment.trans))) {} + if (((!(curObj->segment.trans.y_rotation)) && (!(curObj->segment.trans.y_rotation))) && (!(curObj->segment.trans.y_rotation))) {} entry = allocate_from_main_pool_safe(sizeof(LevelObjectEntry_Unk8000CC7C), COLOUR_TAG_YELLOW); entry->unkC = 0; entry->unkA = 0; @@ -934,7 +934,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { newRacerObj->segment.level_entry = NULL; curRacer->vehicleID = vehicle; curRacer->vehicleIDPrev = vehicle; - if (sp127 != -1 && sp127 != vehicle) { + if (sp127 != -1 && sp127 != (s32) vehicle) { D_8011AD20 = 1; } sp127 = vehicle; @@ -964,9 +964,9 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { } } if ((gameMode != GAMEMODE_MENU || D_8011AD3C == 2) && vehicle < VEHICLE_TRICKY) { - curRacer->unk118 = func_80004B40(curRacer->characterId, curRacer->vehicleID); + curRacer->vehicleSound = func_80004B40(curRacer->characterId, curRacer->vehicleID); } else { - curRacer->unk118 = NULL; + curRacer->vehicleSound = NULL; } newRacerObj->interactObj->pushForce = miscAsset16[curRacer->characterId] + 1; @@ -979,7 +979,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { case VEHICLE_BUBBLER: case VEHICLE_WIZPIG: case VEHICLE_ROCKET: - func_8005C2F0(newRacerObj, curRacer); + racer_special_init(newRacerObj, curRacer); break; default: break; @@ -1047,7 +1047,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { newRacerObj->unk64->racer.transparency = 0x60; } } - D_8011ADB0 = 100; + gEventCountdown = 100; for (j = 0; j < gNumRacers; j++) { curRacerObj = (*gRacers)[j]; curRacer = &curRacerObj->unk64->racer; @@ -1083,9 +1083,9 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { curRacer->stretch_height = 1.0f; } if (raceType == RACETYPE_DEFAULT || isChallengeMode || gIsTimeTrial || D_8011AD3C) { - D_8011ADB0 = 80; + gEventCountdown = 80; } else { - D_8011ADB0 = 0; + gEventCountdown = 0; } if (raceType == RACETYPE_DEFAULT && numPlayers == 1 && !is_in_adventure_two()) { if (is_two_player_adventure_race() == 0) { @@ -1134,7 +1134,7 @@ void func_8000CC7C(Vehicle vehicle, u32 arg1, s32 arg2) { } if (func_8000E148() != 0) { func_80072298(0); - D_8011ADB0 = 0; + gEventCountdown = 0; start_level_music(1.0f); } set_free_queue_state(0); @@ -1284,7 +1284,7 @@ void transform_player_vehicle(void) { racer->unk2 = 0; racer->characterId = settings->racers[PLAYER_ONE].character; racer->playerIndex = 0; - racer->unk118 = 0; + racer->vehicleSound = 0; if (get_filtered_cheats() & CHEAT_BIG_CHARACTERS) { player->segment.trans.scale *= 1.4f; } @@ -1559,7 +1559,7 @@ Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) { } else if (var_a2 == 1 && arg1 & 8) { curObj->unk68[var_a2] = NULL; } else { - curObj->unk68[var_a2] = (Object_68 *) func_8005F99C(curObj->segment.header->modelIds[var_a2], sp50); + curObj->unk68[var_a2] = (Object_68 *) object_model_init(curObj->segment.header->modelIds[var_a2], sp50); if (curObj->unk68[var_a2] == NULL) { var_v1 = TRUE; } @@ -1732,7 +1732,7 @@ void objFreeAssets(Object *obj, s32 count, s32 objType) { if (objType == OBJECT_MODEL_TYPE_3D_MODEL) { // 3D model for (i = 0; i < count; i++) { if (obj->unk68[i] != NULL) { - func_8005FF40((ObjectModel **) (s32) obj->unk68[i]); + free_3d_model((ObjectModel **) (s32) obj->unk68[i]); } } } else if (objType == OBJECT_MODEL_TYPE_MISC) { @@ -1955,7 +1955,7 @@ Object *func_8000FD54(s32 objectHeaderIndex) { failedToLoadModel = FALSE; if (modelType == OBJECT_MODEL_TYPE_3D_MODEL) { for(i = 0; i < numModelIds; i++) { - object->unk68[i] = func_8005F99C(object->segment.header->modelIds[i], 0); + object->unk68[i] = object_model_init(object->segment.header->modelIds[i], 0); if (object->unk68[i] == NULL) { failedToLoadModel = TRUE; } @@ -2044,15 +2044,15 @@ void func_80010994(s32 updateRate) { UNUSED Object_64 *obj64; func_800245B4(-1); - gRaceStartCountdown = D_8011ADB0; - if ((D_8011ADB0 > 0) && (func_800A0190() != 0)) { - D_8011ADB0 -= updateRate; + gEventStartTimer = gEventCountdown; + if ((gEventCountdown > 0) && (func_800A0190() != 0)) { + gEventCountdown -= updateRate; D_8011ADBC = 0; } else { D_8011ADBC += updateRate; } - if (D_8011ADB0 <= 0) { - D_8011ADB0 = 0; + if (gEventCountdown <= 0) { + gEventCountdown = 0; } D_8011AD3D = 0; D_8011AD21 = 1 - D_8011AD21; @@ -2171,7 +2171,7 @@ void func_80010994(s32 updateRate) { func_800179D0(); } while(0); //FAKEMATCH if (D_8011AF00 == 1) { - if ((D_8011ADB0 == 0x50) && (gCutsceneID == 0)) { + if ((gEventCountdown == 0x50) && (gCutsceneID == 0)) { sp54 = 0; for (i = 0; i < MAXCONTROLLERS; i++) { tempVal = get_buttons_pressed_from_player(i); @@ -2278,17 +2278,20 @@ void func_80011390(void) { D_8011ADAC = 0; } -s32 func_8001139C(void) { - return D_8011ADB0; +/** + * Return the current race countdown timer. +*/ +s32 get_race_countdown(void) { + return gEventCountdown; } /** - * Return the timer countdown before the race starts. + * Return the timer that the countdown is set to before the race starts. * There exists another variable in racer.c with exactly the same purpose. * This does not get used anywhere else. */ s32 get_race_start_timer(void) { - return gRaceStartCountdown; + return gEventStartTimer; } // Unused function, purpose currently unknown. @@ -2646,9 +2649,9 @@ void render_3d_model(Object *obj) { racerObj = NULL; } if (obj68->unk20 <= 0) { - obj->unk44 = (Vertex *) obj68->unk4[obj68->unk1F]; + obj->unk44 = (Vertex *) obj68->unk4[obj68->animationTaskNum]; if (obj68->unk1E == 2) { - func_80061D30(obj); + object_animate(obj); } if (obj68->unk1E && objModel->unk40 != NULL) { flags = TRUE; @@ -2658,7 +2661,7 @@ void render_3d_model(Object *obj) { if (get_viewport_count() != VIEWPORTS_COUNT_1_PLAYER) { flags = FALSE; } - obj->unk44 = (Vertex *) obj68->unk4[obj68->unk1F]; + obj->unk44 = (Vertex *) obj68->unk4[obj68->animationTaskNum]; if (obj->behaviorId == BHV_UNK_3F) { // 63 = stopwatchicon, stopwatchhand calc_dyn_light_and_env_map_for_object(objModel, obj, 0, gCurrentLightIntensity); } else if (flags) { @@ -2673,7 +2676,7 @@ void render_3d_model(Object *obj) { obj68->unk20 = 1; } } - obj->unk44 = (Vertex *) obj68->unk4[obj68->unk1F]; + obj->unk44 = (Vertex *) obj68->unk4[obj68->animationTaskNum]; if (obj->behaviorId == BHV_DOOR) { func_80011264(objModel, obj); } @@ -3188,7 +3191,7 @@ void render_racer_shield(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *o shear *= scale; gfxData = gShieldEffectObject->unk68[shieldType]; mdl = gfxData->objModel; - gShieldEffectObject->unk44 = (Vertex *) gfxData->unk4[gfxData->unk1F]; + gShieldEffectObject->unk44 = (Vertex *) gfxData->unk4[gfxData->animationTaskNum]; gDPSetEnvColor(gObjectCurrDisplayList++, 255, 255, 255, 0); if (racer->shieldTimer < 64) { gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, 255, 255, 255, racer->shieldTimer * 4); @@ -3252,7 +3255,7 @@ void render_racer_magnet(Gfx **dList, MatrixS **mtx, Vertex **vtxList, Object *o gMagnetEffectObject->segment.trans.z_rotation = 0; gfxData = *gMagnetEffectObject->unk68; mdl = gfxData->objModel; - gMagnetEffectObject->unk44 = (Vertex *) gfxData->unk4[gfxData->unk1F]; + gMagnetEffectObject->unk44 = (Vertex *) gfxData->unk4[gfxData->animationTaskNum]; opacity = ((D_8011B078[(var_t0 * 4) + 1] * 8) & 0x7F) + 0x80; func_8007F594(&gObjectCurrDisplayList, 2, COLOUR_RGBA32(255, 255, 255, opacity), gMagnetColours[racer->magnetModelID]); apply_object_shear_matrix(&gObjectCurrDisplayList, &gObjectCurrMatrix, gMagnetEffectObject, obj, shear); @@ -3442,8 +3445,10 @@ UNUSED void func_800149C0(unk800149C0 *arg0, UNUSED s32 arg1, s32 arg2, s32 arg3 GLOBAL_ASM("asm/non_matchings/objects/func_80014B50.s") -// Sorts objects by distance to the camera. -void func_80015348(s32 startIndex, s32 lastIndex) { +/** + * Takes every object and sorts the main object list by distance to the camera. +*/ +void sort_objects_by_dist(s32 startIndex, s32 lastIndex) { s32 i; s32 didNotSwap; Object *obj; @@ -3456,12 +3461,12 @@ void func_80015348(s32 startIndex, s32 lastIndex) { obj = gObjPtrList[i]; if (obj != NULL) { if (obj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) { - // func_80069DC8 calculates the distance to the camera from a XYZ location. - obj->segment.object.distanceToCamera = -func_80069DC8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); + // get_distance_to_camera calculates the distance to the camera from a XYZ location. + obj->segment.object.distanceToCamera = -get_distance_to_camera(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } else if (obj->segment.header->flags & OBJ_FLAGS_UNK_0080) { obj->segment.object.distanceToCamera += -16000.0f; } else { - obj->segment.object.distanceToCamera = -func_80069DC8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); + obj->segment.object.distanceToCamera = -get_distance_to_camera(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } } else { //!@bug obj is NULL here, so it would probably cause a crash. Thankfully, gObjPtrList shouldn't have NULL objects in it. @@ -3661,12 +3666,12 @@ void func_80016748(Object *obj0, Object *obj1) { if (!((objModel->unk3C + 50.0) < sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)))) { obj0Interact = obj0->interactObj; obj1Interact = obj1->interactObj; - object_transform_to_matrix(obj1TransformMtx, &obj1->segment.trans); + object_transform_to_matrix((float (*)[4]) obj1TransformMtx, &obj1->segment.trans); for(i = 0; i < objModel->unk20; i += 2) { xDiff = obj1->unk44[objModel->unk1C[i]].x; yDiff = obj1->unk44[objModel->unk1C[i]].y; zDiff = obj1->unk44[objModel->unk1C[i]].z; - guMtxXFMF(obj1TransformMtx, xDiff, yDiff, zDiff, &xDiff, &yDiff, &zDiff); + guMtxXFMF((float (*)[4]) obj1TransformMtx, xDiff, yDiff, zDiff, &xDiff, &yDiff, &zDiff); temp = (((f32) objModel->unk1C[i + 1] / 64) * obj1->segment.trans.scale) * 50.0; xDiff -= obj0->segment.trans.x_position; yDiff -= obj0->segment.trans.y_position; @@ -4229,7 +4234,7 @@ u8 func_8001B4FC(s32 trackId) { gBeatStaffGhost = FALSE; gTimeTrialStaffGhost = FALSE; settings = get_settings(); - if (get_map_default_vehicle(trackId) == D_8011AE82) { + if (get_map_default_vehicle(trackId) == (Vehicle) D_8011AE82) { mainTrackIds = (s8 *) get_misc_asset(ASSET_MISC_MAIN_TRACKS_IDS); temp_v0 = (u16 *) get_misc_asset(ASSET_MISC_24); for (i = 0; mainTrackIds[i] != -1 && trackId != mainTrackIds[i]; i++) { } @@ -5712,8 +5717,8 @@ void func_80022E18(s32 arg0) { if (arg0 == 2) { set_current_text(0); } - D_8011ADB0 = 0; - gRaceStartCountdown = 0; + gEventCountdown = 0; + gEventStartTimer = 0; obj->properties.common.unk0 = 0x14; } func_80000B28(); diff --git a/src/objects.h b/src/objects.h index cff693a8..8ea3835f 100644 --- a/src/objects.h +++ b/src/objects.h @@ -354,7 +354,7 @@ void free_object(Object *); s32 func_80010018(void); s32 func_80010028(s32 arg0); void func_80011390(void); -s32 func_8001139C(void); +s32 get_race_countdown(void); s32 get_race_start_timer(void); s32 ignore_bounds_check(void); void func_80012C30(void); @@ -478,7 +478,7 @@ void func_80022E18(s32 arg0); void func_8001BF20(void); void func_8001E6EC(s8); Object *func_8000FD54(s32 objectHeaderIndex); -void func_80015348(s32 startIndex, s32 lastIndex); +void sort_objects_by_dist(s32 startIndex, s32 lastIndex); void func_80016748(Object *obj0, Object *obj1); void func_8001AE64(void); s32 func_80016DE8(f32 x, f32 y, f32 z, f32 radius, s32 is2dCheck, Object **arg5); @@ -516,7 +516,7 @@ void func_80010994(s32 updateRate); void func_800159C8(Object *, Object *); void func_80011264(ObjectModel *, Object *); void func_800245F0(ObjectModel *, Object *, f32); //asm func in unknown_0251F0 -s32 func_80061D30(Object *); //asm func in unknown_062930 +s32 object_animate(Object *obj); //asm func in unknown_062930 s32 func_80014B50(s32 arg0, s32 arg1, f32 arg2, u32 arg3); s16 func_8001CD28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); // NON MATCHING diff --git a/src/racer.c b/src/racer.c index c1d78a5b..55b94905 100644 --- a/src/racer.c +++ b/src/racer.c @@ -11,7 +11,7 @@ #include "structs.h" #include "asset_enums.h" #include "save_data.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "objects.h" #include "audio.h" #include "object_functions.h" @@ -21,7 +21,7 @@ #include "tracks.h" #include "weather.h" #include "vehicle_misc.h" -#include "unknown_005740.h" +#include "audio_vehicle.h" #include "game_ui.h" #include "object_models.h" #include "audiosfx.h" @@ -1097,7 +1097,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r temp_f0 = sqrtf((obj->segment.z_velocity * obj->segment.z_velocity) + (obj->segment.x_velocity * obj->segment.x_velocity)); if (temp_f0 > 0.25) { racer->unk168 = arctan2_f(obj->segment.x_velocity, obj->segment.z_velocity) + 0x8000; - var_v1 = ((0x8000 - racer->unk168) & 0xFFFF) - (racer->unk196 & 0xFFFF); + var_v1 = ((0x8000 - racer->unk168) & 0xFFFF) - (racer->cameraYaw & 0xFFFF); if (var_v1 > 0x8000) { var_v1 -= 0xFFFF; } @@ -1109,8 +1109,8 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r sp11C = 8.0f; } sp11C *= 0.125; - racer->unk196 += (((s32) ((var_v1 * ((f32) sp11C)) * 0.75)) * updateRate) >> 4; - var_v1 = (0x8000 - racer->unk196) - (racer->steerVisualRotation & 0xFFFF); + racer->cameraYaw += (((s32) ((var_v1 * ((f32) sp11C)) * 0.75)) * updateRate) >> 4; + var_v1 = (0x8000 - racer->cameraYaw) - (racer->steerVisualRotation & 0xFFFF); if (var_v1 > 0x8000) { var_v1 -= 0xFFFF; } @@ -1126,7 +1126,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r } racer->steerVisualRotation += ((s32) (var_v1 * updateRate)) >> 7; } - var_v1 = (0x8000 - racer->steerVisualRotation) - (racer->unk196 & 0xFFFF); + var_v1 = (0x8000 - racer->steerVisualRotation) - (racer->cameraYaw & 0xFFFF); if (var_v1 > 0x8000) { var_v1 -= 0xFFFF; } @@ -1134,7 +1134,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r var_v1 += 0xFFFF; } temp = 1.0f; - racer->unk196 += (((s32) ((((f32) var_v1) * 1.75) * temp)) * updateRate) >> 6; + racer->cameraYaw += (((s32) ((((f32) var_v1) * 1.75) * temp)) * updateRate) >> 6; if (!racer->zipperDirCorrection) { if ((gCurrentPlayerIndex == PLAYER_COMPUTER) && (!racer->raceFinished)) { var_f16 = racer->lateral_velocity * 0.25; @@ -1595,14 +1595,14 @@ void update_camera_hovercraft(f32 updateRate, Object *obj, Object_Racer *racer) sp34 = sins_f(gCameraObject->trans.x_rotation - sp24); phi_f18 = coss_f(gCameraObject->trans.x_rotation - sp24); phi_f18 = (gCameraObject->unk1C * sp34) + (gCameraObject->unk20 * phi_f18); - xVel = sins_f(-racer->unk196 + 0x8000) * gCameraObject->unk1C; - zVel = coss_f(-racer->unk196 + 0x8000) * gCameraObject->unk1C; + xVel = sins_f(-racer->cameraYaw + 0x8000) * gCameraObject->unk1C; + zVel = coss_f(-racer->cameraYaw + 0x8000) * gCameraObject->unk1C; yVel = (1.0 - (gDialogueCameraAngle / 10240.0f)); // Goes between 0-1 xVel -= racer->ox1 * 10.0f * yVel; zVel -= racer->oz1 * 10.0f * yVel; yVel = racer->lateral_velocity * 2; racer->unkC8 -= (racer->unkC8 - yVel) * 0.25; - yVel = sins_f(racer->unk196 + 0x4000) * racer->unkC8; + yVel = sins_f(racer->cameraYaw + 0x4000) * racer->unkC8; gCameraObject->trans.x_position = obj->segment.trans.x_position + xVel + yVel; yVel = gCameraObject->trans.y_position - (obj->segment.trans.y_position + phi_f18); if (yVel > 0.0f) { @@ -1623,9 +1623,9 @@ void update_camera_hovercraft(f32 updateRate, Object *obj, Object_Racer *racer) gCameraObject->trans.y_position = obj->segment.trans.y_position + phi_f18; } - coss_f(racer->unk196 + 0x4000); // Unused function call that wasn't fully optimised out. + coss_f(racer->cameraYaw + 0x4000); // Unused function call that wasn't fully optimised out. gCameraObject->trans.z_position = obj->segment.trans.z_position + zVel; - gCameraObject->trans.y_rotation = racer->unk196; + gCameraObject->trans.y_rotation = racer->cameraYaw; segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position); if (segmentIndex != SEGMENT_NONE) { gCameraObject->segmentIndex = segmentIndex; @@ -1813,7 +1813,7 @@ void update_camera_plane(f32 updateRate, Object* obj, Object_Racer* racer) { baseFloat1 = 42.0f; } if (((!(gCurrentRacerInput & 0x10)) || racer->groundedWheels < 3) && !racer->zipperDirCorrection) { - angle = (-racer->steerVisualRotation - (racer->unk196 & 0xFFFF)) + 0x8000; + angle = (-racer->steerVisualRotation - (racer->cameraYaw & 0xFFFF)) + 0x8000; if (angle > 0x8000) { angle -= 0xFFFF; } @@ -1840,12 +1840,12 @@ void update_camera_plane(f32 updateRate, Object* obj, Object_Racer* racer) { if (angle > 0 && angle < angleVel) { angleVel = angle; } - racer->unk196 += angleVel; + racer->cameraYaw += angleVel; } else { racer->camera_zoom = 0.0f; } if (gDialogueCameraAngle) { - racer->unk196 = 0x8000 - racer->steerVisualRotation; + racer->cameraYaw = 0x8000 - racer->steerVisualRotation; } if (racer->unk1E0 == 2 || racer->unk1E0 == -2) { angle = 0; @@ -1919,9 +1919,9 @@ void update_camera_plane(f32 updateRate, Object* obj, Object_Racer* racer) { baseFloat2 = (gCameraObject->unk1C * baseFloat3) - (gCameraObject->unk20 * xOffset); baseFloat1 = ((gCameraObject->unk1C) * (gCameraObject->unk1C)); baseFloat1 += (gCameraObject->unk20 * baseFloat3); - xOffset = sins_f(0x8000 - racer->unk196) * baseFloat2; - zOffset = coss_f(0x8000 - racer->unk196) * baseFloat2; - yVel = sins_f(racer->unk196 + 0x4000) * 3.0f; + xOffset = sins_f(0x8000 - racer->cameraYaw) * baseFloat2; + zOffset = coss_f(0x8000 - racer->cameraYaw) * baseFloat2; + yVel = sins_f(racer->cameraYaw + 0x4000) * 3.0f; yVel = yVel * racer->lateral_velocity; gCameraObject->trans.x_position = (obj->segment.trans.x_position + xOffset) + yVel; temp_f16 = obj->segment.trans.y_position; @@ -1946,8 +1946,8 @@ void update_camera_plane(f32 updateRate, Object* obj, Object_Racer* racer) { yVel = yOffset; } gCameraObject->trans.y_position -= yVel; - gCameraObject->trans.z_position = zOffset + obj->segment.trans.z_position + (-coss_f(racer->unk196 + 0x4000) * 3.0f * racer->lateral_velocity); - gCameraObject->trans.y_rotation = racer->unk196; + gCameraObject->trans.z_position = zOffset + obj->segment.trans.z_position + (-coss_f(racer->cameraYaw + 0x4000) * 3.0f * racer->lateral_velocity); + gCameraObject->trans.y_rotation = racer->cameraYaw; if (racer->unk1E0 || gDialogueCameraAngle) { angle = -(u16) gCameraObject->trans.z_rotation; if (angle > 0x8000) { @@ -1973,7 +1973,7 @@ void update_camera_plane(f32 updateRate, Object* obj, Object_Racer* racer) { if (segmentIndex != -1) { gCameraObject->segmentIndex = segmentIndex; } - racer->unk196 = gCameraObject->trans.y_rotation; + racer->cameraYaw = gCameraObject->trans.y_rotation; } #else GLOBAL_ASM("asm/non_matchings/racer/update_camera_plane.s") @@ -2004,7 +2004,7 @@ void update_camera_loop(f32 updateRateF, Object *obj, Object_Racer *racer) { if (gRaceStartTimer > 60) { zoom += ((f32) (gRaceStartTimer - 60) * 4.0f); } - racer->unk196 = 0x8000 - racer->steerVisualRotation; + racer->cameraYaw = 0x8000 - racer->steerVisualRotation; if (get_viewport_count() == 1) { zoom = 160.0f; } @@ -2040,12 +2040,12 @@ void update_camera_loop(f32 updateRateF, Object *obj, Object_Racer *racer) { angle = angleDiff - (u16) gCameraObject->trans.x_rotation; WRAP(angle, -0x8000, 0x8000); gCameraObject->trans.x_rotation += ((angle * UpdateRate) >> 4); - gCameraObject->trans.y_rotation = racer->unk196; + gCameraObject->trans.y_rotation = racer->cameraYaw; segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position); if (segmentIndex != SEGMENT_NONE) { gCameraObject->segmentIndex = segmentIndex; } - racer->unk196 = gCameraObject->trans.y_rotation; + racer->cameraYaw = gCameraObject->trans.y_rotation; gCameraObject->trans.x_position += gCameraObject->offsetX; gCameraObject->trans.y_position += gCameraObject->offsetY; gCameraObject->trans.z_position += gCameraObject->offsetZ; @@ -2057,8 +2057,8 @@ void update_camera_loop(f32 updateRateF, Object *obj, Object_Racer *racer) { void update_carpet(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *racer) { s16 sp26; - if (racer->unk118 != 0) { - func_80006AC8(obj); + if (racer->vehicleSound) { + racer_sound_free(obj); } if (is_taj_challenge() && racer->vehicleID == VEHICLE_CARPET) { obj->interactObj->flags = INTERACT_FLAGS_NONE; @@ -2116,7 +2116,7 @@ void obj_init_racer(Object *obj, LevelObjectEntry_Racer *racer) { tempRacer->x_rotation_vel = obj->segment.trans.z_rotation; tempRacer->unkC4 = 0.5f; if (1) {} // Fakematch - tempRacer->unk196 = tempRacer->steerVisualRotation; + tempRacer->cameraYaw = tempRacer->steerVisualRotation; tempRacer->unkD8.x = obj->segment.trans.x_position; tempRacer->unkD8.y = obj->segment.trans.y_position + 30.0f; tempRacer->unkD8.z = obj->segment.trans.z_position; @@ -2152,7 +2152,7 @@ void obj_init_racer(Object *obj, LevelObjectEntry_Racer *racer) { gCameraObject = (ObjectCamera *) get_active_camera_segment_no_cutscenes(); gCameraObject->trans.z_rotation = 0; gCameraObject->trans.x_rotation = 0x400; - gCameraObject->trans.y_rotation = tempRacer->unk196; + gCameraObject->trans.y_rotation = tempRacer->cameraYaw; gCameraObject->mode = CAMERA_CAR; gCameraObject->unk3C = 0xFF; gCameraObject->unk3D = 0xFF; @@ -2217,7 +2217,7 @@ void update_player_racer(Object *obj, s32 updateRate) { gNumViewports = get_viewport_count() + 1; gCurrentSurfaceType = SURFACE_DEFAULT; - gRaceStartTimer = func_8001139C(); + gRaceStartTimer = get_race_countdown(); updateRateF = updateRate; tempRacer = (Object_Racer *) obj->unk64; // Cap all of the velocities on the different axes. @@ -2499,7 +2499,7 @@ void update_player_racer(Object *obj, s32 updateRate) { CLAMP(tempRacer->velocity, playerIDF, playerID); } if (context != GAMEMODE_MENU || func_8000E148()) { - func_800050D0(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate); + racer_sound_update(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate); } lastCheckpointDist = tempRacer->checkpoint_distance; tempVar = func_800185E4(tempRacer->checkpoint, obj, xTemp, yTemp, zTemp, &tempRacer->checkpoint_distance, &tempRacer->unk1C8); @@ -2630,7 +2630,7 @@ void update_player_racer(Object *obj, s32 updateRate) { if (tempRacer->shieldTimer > 60) { if (tempRacer->shieldSoundMask) { update_spatial_audio_position(tempRacer->shieldSoundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); - } else if (tempRacer->unk118) { + } else if (tempRacer->vehicleSound) { play_sound_at_position(SOUND_SHIELD, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &tempRacer->shieldSoundMask); } } else if (tempRacer->shieldSoundMask) { @@ -5143,7 +5143,7 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) { baseAngle = 0xD00; } angle = racer->unk19E >> 3; - racer->unk196 = (-racer->steerVisualRotation - racer->unk19E) + 0x8000; + racer->cameraYaw = (-racer->steerVisualRotation - racer->unk19E) + 0x8000; if (angle > 0x400) { angle = 0x400; } @@ -5235,8 +5235,8 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) { lateralOffset = gCameraObject->unk1C; lateralOffset = (lateralOffset * sineOffset) - (gCameraObject->unk20 * cosOffset); yVel = (gCameraObject->unk1C * cosOffset) + (gCameraObject->unk20 * sineOffset); - sineOffset = sins_f(-racer->unk196 + 0x8000) * lateralOffset; - cosOffset = coss_f(-racer->unk196 + 0x8000) * lateralOffset; + sineOffset = sins_f(-racer->cameraYaw + 0x8000) * lateralOffset; + cosOffset = coss_f(-racer->cameraYaw + 0x8000) * lateralOffset; baseDistance = 0.0f; if (gCurrentRacerInput & A_BUTTON) { baseDistance = racer->lateral_velocity * 1.3; @@ -5264,7 +5264,7 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) { xOffset = obj->segment.trans.x_position - (racer->ox1 * racer->camera_zoom); yOffset = obj->segment.trans.y_position - (racer->oy1 * racer->camera_zoom); zOffset = obj->segment.trans.z_position - (racer->oz1 * racer->camera_zoom); - tempVel = sins_f(racer->unk196 + 0x4000) * racer->unkC8; + tempVel = sins_f(racer->cameraYaw + 0x4000) * racer->unkC8; baseDistance = xOffset + tempVel; gCameraObject->trans.x_position = sineOffset + baseDistance; yOffset += yVel; @@ -5276,8 +5276,8 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) { if (temp_f16 > 0.0f || gRaceStartTimer) { gCameraObject->trans.y_position = yOffset; } - gCameraObject->trans.z_position = zOffset + (-coss_f(racer->unk196 + 0x4000) * racer->unkC8) + cosOffset; - gCameraObject->trans.y_rotation = racer->unk196; + gCameraObject->trans.z_position = zOffset + (-coss_f(racer->cameraYaw + 0x4000) * racer->unkC8) + cosOffset; + gCameraObject->trans.y_rotation = racer->cameraYaw; newAngle = gCameraObject->trans.z_rotation; if ((racer->drift_direction && racer->brake > 0.0) || gDialogueCameraAngle) { newAngle = 0; @@ -5297,7 +5297,7 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) { if (segmentIndex != -1) { gCameraObject->segmentIndex = segmentIndex; } - racer->unk196 = gCameraObject->trans.y_rotation; + racer->cameraYaw = gCameraObject->trans.y_rotation; } #else GLOBAL_ASM("asm/non_matchings/racer/update_camera_car.s") @@ -5334,7 +5334,7 @@ void update_camera_finish_challenge(UNUSED f32 updateRate, Object *obj, Object_R if (segmentIndex != SEGMENT_NONE) { gCameraObject->segmentIndex = segmentIndex; } - racer->unk196 = gCameraObject->trans.y_rotation; + racer->cameraYaw = gCameraObject->trans.y_rotation; } /** @@ -6080,7 +6080,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat case VEHICLE_ROCKET: update_rocket(updateRate, updateRateF, obj, racer, &gCurrentRacerInput, &gCurrentButtonsPressed, &gRaceStartTimer); break; } if (gameMode != GAMEMODE_MENU) { - func_800050D0(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate); + racer_sound_update(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate); } lastCheckpointDist = racer->checkpoint_distance; countOfObjects = racer->checkpoint; @@ -6133,7 +6133,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat } else { func_8005B818(obj, racer, updateRate, updateRateF); if (gameMode != GAMEMODE_MENU) { - func_800050D0(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate); + racer_sound_update(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate); } } if (racer->magnetTimer == 0) { @@ -6172,7 +6172,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat if (racer->shieldTimer > 60) { if (racer->shieldSoundMask) { update_spatial_audio_position(racer->shieldSoundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); - } else if (racer->unk118 != 0) { + } else if (racer->vehicleSound) { play_sound_at_position(SOUND_SHIELD, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &racer->shieldSoundMask); } } else { diff --git a/src/textures_sprites.h b/src/textures_sprites.h index ed8019b3..bc21656f 100644 --- a/src/textures_sprites.h +++ b/src/textures_sprites.h @@ -69,22 +69,22 @@ enum RenderFlags { typedef enum TransFlags { OBJ_FLAGS_NONE, - OBJ_FLAGS_UNK_0001 = (1 << 0), - OBJ_FLAGS_UNK_0002 = (1 << 1), - OBJ_FLAGS_UNK_0004 = (1 << 2), - OBJ_FLAGS_UNK_0008 = (1 << 3), - OBJ_FLAGS_UNK_0010 = (1 << 4), - OBJ_FLAGS_UNK_0020 = (1 << 5), - OBJ_FLAGS_UNK_0040 = (1 << 6), - OBJ_FLAGS_UNK_0080 = (1 << 7), - OBJ_FLAGS_UNK_0100 = (1 << 8), - OBJ_FLAGS_INVIS_PLAYER1 = (1 << 9), // Player 1 cannot see this. - OBJ_FLAGS_INVIS_PLAYER2 = (1 << 10), // Player 2 cannot see this. - OBJ_FLAGS_UNK_0800 = (1 << 11), - OBJ_FLAGS_SHADOW_ONLY = (1 << 12), // Still has a shadow, but the model is invisible. - OBJ_FLAGS_UNK_2000 = (1 << 13), - OBJ_FLAGS_INVISIBLE = (1 << 14), // Invisible, and hidden shadow too. - OBJ_FLAGS_DEACTIVATED = (1 << 15) // Object is invisible and inactive. + OBJ_FLAGS_UNK_0001 = (1 << 0), + OBJ_FLAGS_UNK_0002 = (1 << 1), + OBJ_FLAGS_UNK_0004 = (1 << 2), + OBJ_FLAGS_UNK_0008 = (1 << 3), + OBJ_FLAGS_UNK_0010 = (1 << 4), + OBJ_FLAGS_DESPAWN_TIME_TRIAL = (1 << 5), // Don't show up in time trial. + OBJ_FLAGS_DESPAWN_MULTIPLAYER = (1 << 6), // Don't show up in 3/4 player. + OBJ_FLAGS_UNK_0080 = (1 << 7), + OBJ_FLAGS_UNK_0100 = (1 << 8), + OBJ_FLAGS_INVIS_PLAYER1 = (1 << 9), // Player 1 cannot see this. + OBJ_FLAGS_INVIS_PLAYER2 = (1 << 10), // Player 2 cannot see this. + OBJ_FLAGS_UNK_0800 = (1 << 11), + OBJ_FLAGS_SHADOW_ONLY = (1 << 12), // Still has a shadow, but the model is invisible. + OBJ_FLAGS_UNK_2000 = (1 << 13), + OBJ_FLAGS_INVISIBLE = (1 << 14), // Invisible, and hidden shadow too. + OBJ_FLAGS_DEACTIVATED = (1 << 15) // Object is invisible and inactive. } TransFlags; #define TEX_TABLE_2D 0 diff --git a/src/thread3_main.c b/src/thread3_main.c index 89671a51..ff670195 100644 --- a/src/thread3_main.c +++ b/src/thread3_main.c @@ -34,7 +34,7 @@ #include "printf.h" #include "fade_transition.h" #include "borders.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "tracks.h" #include "game_text.h" #include "game_ui.h" @@ -431,7 +431,7 @@ void ingame_logic_loop(s32 updateRate) { // Update all objects if (!gIsPaused) { func_80010994(updateRate); - if (check_if_showing_cutscene_camera() == 0 || func_8001139C()) { + if (check_if_showing_cutscene_camera() == 0 || get_race_countdown()) { if (buttonPressedInputs & START_BUTTON && get_level_property_stack_pos() == 0 && gDrumstickSceneLoadTimer == 0 && gGameMode == GAMEMODE_INGAME && gPostRaceViewPort == NULL && gLevelLoadTimer == 0 && gPauseLockTimer == 0) { buttonPressedInputs = 0; diff --git a/src/tracks.c b/src/tracks.c index 382fc55f..895b4ff9 100644 --- a/src/tracks.c +++ b/src/tracks.c @@ -748,13 +748,13 @@ void draw_gradient_background(void) { verts = (Vertex *) gSceneCurrVertexList; tris = (Triangle *) gSceneCurrTriList; - headerRed0 = gCurrentLevelHeader2->unkC1; + headerRed0 = gCurrentLevelHeader2->BGColourTopR; also_one = 1; - headerGreen0 = gCurrentLevelHeader2->unkC2; - headerBlue0 = gCurrentLevelHeader2->unkC3; - headerRed1 = gCurrentLevelHeader2->unkBE; - headerGreen1 = gCurrentLevelHeader2->unkBF; - headerBlue1 = gCurrentLevelHeader2->unkC0; + headerGreen0 = gCurrentLevelHeader2->BGColourTopG; + headerBlue0 = gCurrentLevelHeader2->BGColourTopB; + headerRed1 = gCurrentLevelHeader2->BGColourBottomR; + headerGreen1 = gCurrentLevelHeader2->BGColourBottomG; + headerBlue1 = gCurrentLevelHeader2->BGColourBottomB; reset_render_settings(&gSceneCurrDisplayList); load_and_set_texture_no_offset(&gSceneCurrDisplayList, 0, RENDER_FOG_ACTIVE); gSPVertexDKR(gSceneCurrDisplayList++, OS_PHYSICAL_TO_K0(verts), 4, 0); @@ -949,7 +949,7 @@ void render_level_geometry_and_objects(void) { } reset_render_settings(&gSceneCurrDisplayList); - func_80015348(sp160, objCount - 1); + sort_objects_by_dist(sp160, objCount - 1); visibleFlags = OBJ_FLAGS_INVIS_PLAYER1 << (get_current_viewport() & 1); for (i = sp160; i < objCount; i++) { diff --git a/src/unknown_005740.c b/src/unknown_005740.c deleted file mode 100644 index 77b09d40..00000000 --- a/src/unknown_005740.c +++ /dev/null @@ -1,938 +0,0 @@ -/* The comment below is needed for this file to be picked up by generate_ld */ -/* RAM_POS: 0x80004B40 */ - -#include "unknown_005740.h" - -#include "types.h" -#include "macros.h" -#include "unknown_008C40.h" -#include "audiosfx.h" -#include "objects.h" -#include "controller.h" -#include "racer.h" -#include "PR/libaudio.h" -#include "game_ui.h" - -/************ .data ************/ - -u8 D_800DC6D0 = 1; -s32 D_800DC6D4 = 0; // Currently unknown, might be a different type. -s32 D_800DC6D8 = 1; // Currently unknown, might be a different type. - -/*******************************/ - -/************ .bss ************/ - -unk80119C38 *D_80119C30[2]; -unk80119C38 *D_80119C38; -Object_Racer *D_80119C3C; -unk80115D18 *D_80119C40; // This should be in unknown_008C40? -SoundMask **D_80119C44; -unk80119C48 **D_80119C48; //0x24 struct size - 0x5A0 total size - should be 40 elements -u8 D_80119C4C; -SoundMask **D_80119C50; -s32 D_80119C54; //Padding? -unk80119C58 **D_80119C58; //Struct of size in func_8000A184 = 0x180 = 384 bytes -unk80119C58 **D_80119C5C; //Struct of size in func_8000A184 = 0x180 = 384 bytes Likely the same as above -f32 D_80119C60[670]; //array size of 672 looks to be required for func_80008174 -unk8011A6D8 *D_8011A6D8; //unk8011A6D8[] -unk8011A6D8 **D_8011A6DC; // Struct of size 0xC0 -f32 D_8011A6E0[334]; -s32 D_8011AC18; -s32 D_8011AC1C; - -/******************************/ - -#ifdef NON_EQUIVALENT -unk80119C38 *func_80004B40(s8 characterId, s8 vehicleId) { - u16 temp_a1; - s32 temp_s1; - u16 var_a0_2; - s32 var_a3; - s32 var_a3_2; - s32 var_s0_2; - unk80119C38 *var_a2; - s32 *addrPtr; - unkAudioAsset *temp_v0_2; - unk80119C38 *temp_v0_3; - u8 *memset; - unk80119C38 *var_a0; - unkAudioAsset *var_a1; - unkAudioAsset *var_v1_2; - s32 i; - f32 new_var; - - if (characterId >= 11) { - characterId = 11; - } - - if (D_800DC6D8 != 0) { - for (i = 0; i < 2; i++) { - D_80119C30[i] = NULL; - } - D_800DC6D8 = 0; - } - addrPtr = (s32 *) load_asset_section_from_rom(ASSET_AUDIO_TABLE); - vehicleId *= 10; - temp_s1 = addrPtr[ASSET_AUDIO_7] + ((vehicleId + characterId) * sizeof(unkAudioAsset)); - temp_v0_2 = (unkAudioAsset *) allocate_from_main_pool_safe(sizeof(unkAudioAsset), COLOUR_TAG_CYAN); - load_asset_to_address(ASSET_AUDIO, (u32) temp_v0_2, temp_s1, sizeof(unkAudioAsset)); - temp_v0_3 = (unk80119C38 *) allocate_from_main_pool_safe(sizeof(unk80119C38), COLOUR_TAG_CYAN); - - //Not really sure this is right... - memset = temp_v0_3; - for (var_a3 = 0; var_a3 < sizeof(unk80119C38); var_a3++) { - memset[var_a3] = 0; - } - - var_s0_2 = 0; - temp_v0_3->unk36 = temp_v0_2->unk36; - temp_v0_3->unk37 = temp_v0_2->unk37; - temp_v0_3->unk38 = temp_v0_2->unk38; - temp_v0_3->unk39 = temp_v0_2->unk39; - temp_v0_3->unk64 = temp_v0_2->unk3A; - temp_v0_3->unkC8 = temp_v0_2->unk46 / 10000.0f; - temp_v0_3->unkB0 = temp_v0_2->unk3E / 10000.0f; - temp_v0_3->unkB4 = temp_v0_2->unk40 / 10000.0f; - temp_v0_3->unkC0 = temp_v0_2->unk42 / 10000.0f; - temp_v0_3->unkC4 = temp_v0_2->unk44 / 10000.0f; - temp_v0_3->unkBC = temp_v0_2->unk3C / 10000.0f; - temp_v0_3->unkB8 = temp_v0_2->unk3B; - temp_v0_3->unkD8 = 0; - temp_v0_3->unkCC = temp_v0_2->unk48 / 10000.0f; - do { - var_a3_2 = 1; - temp_v0_3->unk0[0] = temp_v0_2->unk0; - var_v1_2 = &temp_v0_2[1]; - temp_v0_3->unk4[0][0] = temp_v0_2->unk4[2]; - var_a1 = temp_v0_2 + 2; - temp_v0_3->unk18[0] = temp_v0_2->unk18; - var_a0 = temp_v0_3 + 1; - temp_v0_3->unkC[0][0] = temp_v0_2->unkC; - var_a2 = &temp_v0_3->unk0[1]; - temp_v0_3->unk2C[0] = temp_v0_2->unk2C; -loop_10: - var_a3_2 += 2; - var_a0->unk4[0][0] = (u8) var_v1_2->unk4[0]; - var_v1_2 += 2; - var_a2->unk18[0] = (u16) var_a1->unk18[0]; - var_a1 += 4; - var_a0->unkC[0][0] = (u8) var_v1_2->unkC; - var_a0 += 2; - var_a0->unk2A[0] = (u8) var_v1_2->unk2A[0]; - var_a2 += 4; - var_a0->unk0[1] = (u8) var_v1_2->unk3; - var_a2->unk16 = (u16) var_a1->unk16; - var_a0->unkC[0][1] = (u8) var_v1_2->unkD; - var_a0->unk2A[1] = (u8) var_v1_2->unk2A[1]; - if (var_a3_2 != 5) { - goto loop_10; - } - var_s0_2 += 2; - temp_v0_2 += 2; - temp_v0_2 += 5; - temp_v0_2 += 0xA; - temp_v0_3 += 5; - temp_v0_3 += 0xA; - temp_v0_3 += 5; - temp_v0_2 += 5; - temp_v0_3 += 0xA; - temp_v0_2 += 0xA; - temp_v0_3 += 2; - } while (var_s0_2 < 4); - temp_v0_3->unk74 = 0; - temp_v0_3->unk6C[0] = 0.0f; - temp_v0_3->unkD4 = temp_v0_2->unk4A / 100.0f; - if (vehicleId == 0) { - temp_v0_3->unk54[0] = temp_v0_3->unk2C[0]; - temp_v0_3->unk5C[0] = temp_v0_3->unk18[0] / 10000.0f; - temp_v0_3->unk54[1] = temp_v0_3->unk31; - temp_v0_3->unk5C[1] = temp_v0_3->unk22 / 10000.0f; - } else { - temp_v0_3->unk5C[0] = temp_v0_3->unkD4; - temp_a1 = temp_v0_3->unk5C[0] * 10000.0f; - for (var_a0_2 = 0; temp_a1 >= temp_v0_3->unk18[var_a0_2] && var_a0_2 < 4; var_a0_2++) { } - var_a0_2--; - new_var = (temp_a1 - temp_v0_3->unk18[var_a0_2]) / ((f32) (temp_v0_3->unk18[var_a0_2 + 1] - temp_v0_3->unk18[var_a0_2])); - temp_v0_3->unk54[0] = temp_v0_3->unk2C[var_a0_2] + (temp_v0_3->unk2C[var_a0_2 + 1] - temp_v0_3->unk2C[var_a0_2]) * new_var; - } - free_from_memory_pool(addrPtr); - free_from_memory_pool((void *) temp_v0_2); - return temp_v0_3; -} -#else -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80004B40.s") -#endif - -void func_800050D0(Object *obj, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { - if ((D_800DC6D0 != 0)) { - D_80119C3C = &obj->unk64->racer; - D_80119C38 = (unk80119C38 *) D_80119C3C->unk118; - if (D_80119C38 != NULL) { - if (func_8001139C()) { - if (D_80119C3C->playerIndex != PLAYER_COMPUTER) { - buttonsHeld = get_buttons_held_from_player(D_80119C3C->playerIndex); - buttonsPressed = get_buttons_pressed_from_player(D_80119C3C->playerIndex); - } - } - if (D_80119C38->unk0[0] == 0) { - D_80119C38->unk78 = -32000.0f; - D_80119C38->unk7C = -32000.0f; - D_80119C38->unk80 = -32000.0f; - } else { - D_80119C38->unk78 = obj->segment.trans.x_position; - D_80119C38->unk7C = obj->segment.trans.y_position; - D_80119C38->unk80 = obj->segment.trans.z_position; - switch (D_80119C3C->vehicleIDPrev) { - case 1: - func_80005D08(obj, buttonsPressed, buttonsHeld, updateRate); - break; - case 2: - func_800063EC(obj, buttonsPressed, buttonsHeld, updateRate); - break; - default: - func_80005254(obj, buttonsPressed, buttonsHeld, updateRate); - break; - } - } - } - } -} - -#ifdef NON_EQUIVALENT -//Scratch: https://decomp.me/scratch/w3w2c -void func_80005254(Object *obj, u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { - f32 sp6C; - f32 temp_f14; - f32 temp_f16; - f32 temp_f18; - u8 temp_f4; - f32 var_f0; - f32 var_f12; - f32 var_f14; - f32 var_f20; - f32 var_f2; - s32 temp_a0_4; - s32 var_s0; - s32 outerLoop; - s32 innerLoop; - s32 var_v1_3; - - if (D_80119C3C->unk1FB != 0) { - var_f0 = 12.0f; - } else { - var_f0 = D_80119C3C->velocity; - } - if (var_f0 < 0.0f) { - var_f0 = -var_f0; - } - var_s0 = (var_f0 / 16) * 100; - var_s0 += 5; - if (var_s0 > 100) { - var_s0 = 100; - } - for (outerLoop = 0; outerLoop < 1; outerLoop++) { - if ((D_80119C38->unk0[outerLoop]) != 0) { - innerLoop = 0; - while ((var_s0 < D_80119C38->unkC[outerLoop][innerLoop] || var_s0 > D_80119C38->unkC[outerLoop][innerLoop + 1] ) && innerLoop < 4) { - innerLoop++; - } - - temp_f14 = (var_s0 - D_80119C38->unkC[0][innerLoop] ) / ((f32) (D_80119C38->unkC[0][innerLoop + 1] - D_80119C38->unkC[0][innerLoop] )); - temp_f4 = D_80119C38->unk2C[outerLoop] + (D_80119C38->unk2C[outerLoop + 1] - D_80119C38->unk2C[outerLoop]) * temp_f14; - - innerLoop = 0; - while ((var_s0 < D_80119C38->unk4[0][innerLoop] || var_s0 > D_80119C38->unk4[0][innerLoop + 1]) && innerLoop < 4) { - innerLoop++; - } - - temp_f14 = (var_s0 - D_80119C38->unk4[0][innerLoop]) / ((f32) (D_80119C38->unk4[0][innerLoop + 1] - D_80119C38->unk4[0][innerLoop])); - temp_f16 = D_80119C38->unk18[innerLoop] / 10000.0f; - temp_f18 = D_80119C38->unk18[innerLoop + 1] / 10000.0f; - if (var_s0 > 50 && D_80119C3C->bananas != 0) { - if (D_80119C3C->bananas <= 10) { - var_v1_3 = D_80119C3C->bananas; - } else { - var_v1_3 = 10; - } - if (D_80119C38->unk3C < (0.05 * var_v1_3)) { - D_80119C38->unk3C += ((0.05 * var_v1_3) / (var_v1_3 * 64)); - } else if (D_80119C38->unk3C > (0.05 * var_v1_3)) { - D_80119C38->unk3C = (0.05 * var_v1_3); - } - var_f2 = ((temp_f18 - temp_f16) * temp_f14) + temp_f16 + D_80119C38->unk3C; - } else { - D_80119C38->unk3C *= 0.95; - var_f2 = ((temp_f18 - temp_f16) * temp_f14) + temp_f16 + D_80119C38->unk3C; - } - if (D_80119C3C->drift_direction != 0) { - D_80119C38->unk40 += ((0.13 - D_80119C38->unk40) / 8); - } else { - D_80119C38->unk40 /= 4; - } - var_f2 += D_80119C38->unk40; - if ((D_80119C3C->groundedWheels == 0) && (D_80119C3C->playerIndex != PLAYER_COMPUTER)) { - var_f2 += 0.3; - } - var_f12 = (var_f2 - D_80119C38->unk5C[outerLoop]) / 2; - var_f14 = (temp_f4 - D_80119C38->unk54[outerLoop]) / 2; - if (D_80119C3C->playerIndex != PLAYER_COMPUTER) { - if (get_random_number_from_range(0, 10) < 7) { - D_80119C38->unk90 = (D_80119C38->unk90 + get_random_number_from_range(0, 10)) - 5; - if (D_80119C38->unk90 > 5) { - D_80119C38->unk90 = 5; - } else if (D_80119C38->unk90 < -5) { - D_80119C38->unk90 = -5; - } - } - var_f12 += 0.02 * (D_80119C38->unk90 / 5.0f); - var_f14 += 5.0f * (D_80119C38->unk90 / 5.0f); - } - if ((buttonsHeld & A_BUTTON) && (D_80119C38->unk94 < 0.4)) { - D_80119C38->unk94 += ((f32) updateRate * 0.01); - if (D_80119C38->unk94 > 0.4) { - D_80119C38->unk94 = 0.4f; - } - } - if (!(buttonsHeld & A_BUTTON) && (D_80119C38->unk94 > 0.0f)) { - D_80119C38->unk94 -= ((f32) updateRate * 0.005); - if (D_80119C38->unk94 < 0.0f) { - D_80119C38->unk94 = 0.0f; - } - } - D_80119C38->unk5C[outerLoop] += var_f12; - if (buttonsHeld & A_BUTTON) { - D_80119C38->unk54[outerLoop] += var_f14; - } else { - D_80119C38->unk54[outerLoop] = 35.0f; - } - } - } - if (((D_80119C3C->unk10 != 0) || (D_80119C3C->unk14 != 0) || - !(buttonsHeld & B_BUTTON) || (D_80119C3C->velocity > -0.1) || - (D_80119C3C->vehicleID == 4)) && (D_80119C38->unkA8 != 0) - ) { - func_8000488C(D_80119C38->unkA8); - D_80119C38->unkA8 = 0; - } else if ((buttonsPressed & B_BUTTON) && (D_80119C38->unkA8 == 0) && (D_80119C3C->playerIndex >= 0)) { - if (D_80119C3C->velocity < 0.0f) { - var_f20 = -D_80119C3C->velocity; - } else { - var_f20 = D_80119C3C->velocity; - } - if (var_f20 > 12.0f) { - var_f20 = 12.0f; - } - func_80001F14(25, &D_80119C38->unkA8); - sp6C = (((var_f20 * 0.5) / 12.0) + 0.5); - temp_a0_4 = D_80119C38->unkA8; - if (temp_a0_4 != 0) { - func_800049F8(temp_a0_4, 16, *((u32*) &sp6C)); - } - D_80119C38->unkAC = 110; - D_80119C38->unkD0 = 0; - } - if (D_80119C38->unkA8 != 0) { - if (D_80119C3C->groundedWheels == 0) { - D_80119C38->unkD0 += updateRate; - } else { - D_80119C38->unkD0 = 0; - } - if (D_80119C38->unkD0 >= 10) { - func_800049F8(D_80119C38->unkA8, 8, 0); - } else { - func_800049F8(D_80119C38->unkA8, 8, D_80119C38->unkAC << 8); - func_80009B7C((s32 *) D_80119C38->unkA8, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); - } - } - D_80119C38->unkA0 = var_s0; - if ((buttonsHeld & A_BUTTON) != 0) { - D_80119C38->unk98 = D_80119C38->unk54[0]; - } -} -#else -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80005254.s") -#endif - -void func_80005D08(Object *arg0, UNUSED u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { - UNUSED s32 pad; - f32 var_f16; - f32 new_var; - u16 temp_f10; - f32 var_f2; - f32 var_f18; - f32 var_f14; - f32 temp_f14; - s32 var_v0; - s32 var_a1; - u8 var_t0; - u8 i; - - if (func_8001139C() == 0) { - temp_f14 = arg0->segment.x_velocity; - var_f2 = arg0->segment.z_velocity; - var_f16 = sqrtf((temp_f14 * temp_f14) + (var_f2 * var_f2)); - } else { - var_f16 = 0.0f; - } - var_f14 = D_80119C38->unkD4; - if (buttonsHeld & A_BUTTON) { - D_80119C38->unkA4 += D_80119C38->unkB0 * (f32) updateRate; - if (D_80119C38->unkC8 < D_80119C38->unkA4) { - D_80119C38->unkA4 = D_80119C38->unkC8; - } - } else { - D_80119C38->unkA4 -= D_80119C38->unkB4 * (f32) updateRate; - } - if (D_80119C38->unkA4 < 0.0f) { - D_80119C38->unkA4 = 0.0f; - } - var_v0 = (-D_80119C3C->unk196 - (D_80119C3C->steerVisualRotation & 0xFFFF)) + 0x8000; - if (var_v0 > 0x8000) { - var_v0 -= 0xFFFF; - } - if (var_v0 < -0x8000) { - var_v0 += 0xFFFF; - } - var_f2 = sins_f(var_v0); - if (var_f2 < 0.0f) { - var_f2 = -var_f2; - } - if (check_if_showing_cutscene_camera() == 0 && func_8001139C() == 0) { - var_f18 = ((D_80119C38->unkBC * var_f2 * var_f16) / 15.0); - } else { - var_f18 = 0.0f; - } - if (func_800A0190() == FALSE) { - D_80119C38->unkA4 = 0.0f; - } - if (var_f16 > 10.0) { - var_f16 -= 10.0; - } else { - var_f16 = 0.0f; - } - if (var_f16 != 0.0 && D_80119C3C->bananas != 0) { - if (D_80119C3C->bananas <= 10) { - var_a1 = D_80119C3C->bananas; - } else { - var_a1 = 10; - } - if (D_80119C38->unk3C < (0.05 * var_a1)) { - D_80119C38->unk3C += ((0.05 * var_a1) / (var_a1 * 64)); - } else if (D_80119C38->unk3C > (0.05 * var_a1)) { - D_80119C38->unk3C = (0.05 * var_a1); - } - var_f14 += D_80119C38->unk3C; - } else { - D_80119C38->unk3C *= 0.95; - var_f14 += D_80119C38->unk3C; - } - var_f14 += ((var_f16 * D_80119C38->unkCC) + var_f18 + D_80119C38->unkA4); - if ((D_80119C3C->playerIndex != -1) && (D_80119C3C->groundedWheels == 0) && (D_80119C3C->waterTimer < 4)) { - if (func_8001139C() == 0) { - var_f14 += 0.3; - } - } - D_80119C38->unk5C[0] += ((var_f14 - D_80119C38->unk5C[0]) / 8); - if (D_80119C38->unk5C[0] > (0x7FFF / 5000.0)) { - D_80119C38->unk5C[0] = (0x7FFF / 5000.0); //6.5534 - } - temp_f10 = D_80119C38->unk5C[0] * 10000.0f; - for (i = 0; temp_f10 >= D_80119C38->unk18[i] && i < 4; i++) { } - if (i == 4) { - var_t0 = D_80119C38->unk2C[i]; - } else { - if (i != 0) { - i--; - } - new_var = (temp_f10 - D_80119C38->unk18[i]) / ((f32) (D_80119C38->unk18[i + 1] - D_80119C38->unk18[i])); - var_t0 = D_80119C38->unk2C[i] + (D_80119C38->unk2C[i + 1] - D_80119C38->unk2C[i]) * new_var; - } - D_80119C38->unk54[0] += ((var_t0 - D_80119C38->unk54[0]) / 8); - D_80119C38->unk5C[1] = 1.0f; - D_80119C38->unk54[1] = 0.0f; -} - -#ifdef NON_EQUIVALENT -void func_800063EC(Object *obj, UNUSED u32 buttonsPressed, u32 buttonsHeld, s32 updateRate) { - f32 sp28; - f32 var_f2; - u16 temp_f10; - f32 var_f14; - f32 temp_f8; - f32 var_f18; - u8 i; - s32 var_a0; - u8 var_t0; - f32 xVel; - f32 yVel; - f32 zVel; - - if (func_8001139C() == 0) { - xVel = obj->segment.x_velocity; - zVel = obj->segment.z_velocity; - yVel = obj->segment.y_velocity; - var_f18 = sqrtf((xVel * xVel) + (zVel * zVel) + (yVel * yVel)); - //var_f18 = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity) + (obj->segment.y_velocity * obj->segment.y_velocity)); - } else { - var_f18 = 0.0f; - } - if (var_f18 < 2.0f) { - D_80119C38->unk54[0] += ((D_80119C38->unk37 - D_80119C38->unk54[0]) / 8); - } else { - temp_f10 = D_80119C38->unk5C[0] * 10000.0f; - for (i = 0; temp_f10 >= D_80119C38->unk18[i] && i < 4; i++) { } - if (i == 4) { - var_t0 = D_80119C38->unk2C[i]; - } else { - if (i != 0) { - i--; - } - temp_f8 = (temp_f10 - D_80119C38->unk18[i]) / ((f32) (D_80119C38->unk18[i + 1] - D_80119C38->unk18[i])); - var_t0 = D_80119C38->unk2C[i] + (D_80119C38->unk2C[i + 1] - D_80119C38->unk2C[i]) * temp_f8; - } - D_80119C38->unk54[0] += ((var_t0 - D_80119C38->unk54[0]) / 8); - } - var_f14 = D_80119C38->unkD4; - if (buttonsHeld & A_BUTTON) { - D_80119C38->unkA4 += D_80119C38->unkB0 * (f32) updateRate; - if (D_80119C38->unkC8 < D_80119C38->unkA4) { - D_80119C38->unkA4 = D_80119C38->unkC8; - } - } else { - D_80119C38->unkA4 -= D_80119C38->unkB4 * (f32) updateRate; - } - if (D_80119C38->unkA4 < 0) { - D_80119C38->unkA4 = 0; - } - if (func_800A0190() == 0) { - D_80119C38->unkA4 = 0.0f; - } - var_f14 += D_80119C38->unkA4; - sp28 = sins_f(obj->segment.trans.x_rotation); - var_f2 = sins_f(obj->segment.trans.z_rotation) * D_80119C38->unkC0; - if (var_f2 < 0.0f) { - var_f2 = -var_f2; - } - if (var_f18 > 10.0) { - var_f18 -= 10.0; - } else { - var_f18 = 0.0; - } - var_f14 += ((D_80119C38->unkC4 * sp28) + var_f2); - var_f14 += (var_f18 * D_80119C38->unkCC); - if ((var_f18 != 0.0) && (D_80119C3C->bananas != 0)) { - if (D_80119C3C->bananas <= 10) { - var_a0 = D_80119C3C->bananas; - } else { - var_a0 = 10; - } - if (D_80119C38->unk3C < (0.05 * var_a0)) { - D_80119C38->unk3C += ((0.05 * var_a0) / (var_a0 * 64)); - } else if (D_80119C38->unk3C > (0.05 * var_a0)) { - D_80119C38->unk3C = (0.05 * var_a0); - } - var_f14 += D_80119C38->unk3C; - } else { - D_80119C38->unk3C *= 0.95; - var_f14 += D_80119C38->unk3C; - } - D_80119C38->unk5C[0] += ((var_f14 - D_80119C38->unk5C[0]) / 8); - if (D_80119C38->unk5C[0] > (0x7FFF / 5000.0)) { - D_80119C38->unk5C[0] = (0x7FFF / 5000.0); //6.5534 - } - D_80119C38->unk5C[1] = 1.0f; - D_80119C38->unk54[1] = 0.0f; - if ((D_80119C3C->playerIndex != PLAYER_COMPUTER) && (D_80119C3C->spinout_timer != 0) && !D_80119C38->unkD8) { - D_80119C38->unkD8 = TRUE; - play_sound_global(SOUND_UNK_13D, &D_80119C38->unkDC); - } else if (D_80119C3C->spinout_timer == 0) { - D_80119C38->unkD8 = FALSE; - if (D_80119C38->unkDC != NULL) { - func_8000488C(D_80119C38->unkDC); - } - } -} -#else -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_800063EC.s") -#endif - -void func_80006AC8(Object *obj) { - s32 i; - - D_80119C38 = (unk80119C38 *) obj->unk64->racer.unk118; - if (D_80119C38 != NULL) { - for (i = 0; i != 2; i++) { - if (D_80119C38->unk48[i] != NULL) { - func_8000488C(D_80119C38->unk48[i]); - D_80119C38->unk48[i] = 0; - } - } - if (D_80119C38->unk50 != NULL) { - func_8000488C(D_80119C38->unk50); - D_80119C38->unk50 = NULL; - } - if (D_80119C38->unkA8 != NULL) { - func_8000488C(D_80119C38->unkA8); - D_80119C38->unkA8 = 0; - } - for (i = 0; i < ARRAY_COUNT(D_80119C30); i++) { - if (D_80119C30[i] == D_80119C38) { - D_80119C30[i] = NULL; - } - } - free_from_memory_pool(D_80119C38); - obj->unk64->racer.unk118 = NULL; - } -} - -void func_80006BFC(Object *obj, ObjectSegment *segment, Object *obj2, s32 updateRate) { - Object_Racer *racer; - f32 velocity; - f32 xPos; - f32 yPos; - f32 zPos; - f32 new_xPos; - f32 new_zPos; - f32 new_yPos; - f32 var_f2_2; - f32 posSquared; - f32 sp1C; - Object_Racer *racer2; - s32 new_var; - - racer = &obj->unk64->racer; - racer2 = &obj2->unk64->racer; - D_80119C38 = (unk80119C38 *) racer2->unk118; - if (D_80119C38 != NULL) { - if (segment != NULL) { - xPos = segment[racer->playerIndex].trans.x_position; - yPos = segment[racer->playerIndex].trans.y_position; - zPos = segment[racer->playerIndex].trans.z_position; - sp1C = 1.0f; - } else { - xPos = obj->segment.trans.x_position; - yPos = obj->segment.trans.y_position; - zPos = obj->segment.trans.z_position; - switch (racer->vehicleID) { - case VEHICLE_CAR: - if (racer->velocity >= 0.0f) { - velocity = racer->velocity; - } else { - velocity = -racer->velocity; - } - break; - case VEHICLE_HOVERCRAFT: - velocity = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity)); - break; - default: - velocity = sqrtf((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.z_velocity * obj->segment.z_velocity) + (obj->segment.y_velocity * obj->segment.y_velocity)); - break; - } - if (velocity > 15.0f) { - velocity = 15.0f; - } - sp1C = 1.0f - (velocity / 15.0f); - } - new_xPos = obj2->segment.trans.x_position - xPos; - new_yPos = obj2->segment.trans.y_position - yPos; - new_zPos = obj2->segment.trans.z_position - zPos; - posSquared = sqrtf(((new_xPos * new_xPos) + (new_yPos * new_yPos)) + (new_zPos * new_zPos)); - var_f2_2 = (D_80119C38->unk6C[racer->playerIndex] - posSquared) / updateRate; - if (var_f2_2 > 15.0f) { - var_f2_2 = 15.0f; - } else if (var_f2_2 < -15.0f) { - var_f2_2 = -15.0f; - } - new_var = func_80007FA4(D_80119C38->unk5C[0]) * 1731.23404; - D_80119C38->unk68 += (((alCents2Ratio((((70.0f + var_f2_2) / (70.0f - var_f2_2)) * new_var)) - D_80119C38->unk5C[0]) - D_80119C38->unk68) / 2); - D_80119C38->unk68 *= sp1C; - if (D_80119C38->unk68 > 0.8) { - D_80119C38->unk68 = 0.8; - } else if (D_80119C38->unk68 < -0.8) { - D_80119C38->unk68 = -0.8; - } - D_80119C38->unk6C[racer->playerIndex] = posSquared; - } -} - -#ifdef NON_EQUIVALENT -//https://decomp.me/scratch/utYpK -void func_80006FC8(Object **objs, s32 numRacers, ObjectSegment *segment, u8 arg3, s32 updateRate) { - f32 tempxPos; - f32 tempyPos; - f32 tempzPos; - Object_Racer *racer; - f32 temp_f20_2; - s32 loopCount2; - s32 loopCount1; - f32 temp_f0_3; - f32 var_f26; - u8 temp_s3; - s32 curVal; - s32 loopCount3; - s32 maxVal; - s32 curIndex; - f32 sp8C; - s32 pad; - unk80119C38 *temp; - - for (loopCount1 = 0; loopCount1 < arg3; loopCount1++) { - racer = &objs[loopCount1]->unk64->racer; - if (racer != NULL) { - D_80119C38 = (unk80119C38 *) racer->unk118; - } else { - D_80119C38 = NULL; - } - - if (D_80119C38 != NULL && D_80119C38->unk0[0] != 0) { - if (racer->raceFinished || check_if_showing_cutscene_camera()) { - tempxPos = objs[loopCount1]->segment.trans.x_position - segment[loopCount1].trans.x_position; - tempyPos = objs[loopCount1]->segment.trans.y_position - segment[loopCount1].trans.y_position; - tempzPos = objs[loopCount1]->segment.trans.z_position - segment[loopCount1].trans.z_position; - func_80006BFC(objs[loopCount1], segment, objs[loopCount1], updateRate); - D_80119C38->unk84 = sqrtf((tempxPos * tempxPos) + (tempyPos * tempyPos) + (tempzPos * tempzPos)); - if (D_80119C38->unk84 < 1500.0f) { - var_f26 = 2250000.0f; //(1500.0f * 1500.0f) - var_f26 = (var_f26 - (D_80119C38->unk84 * D_80119C38->unk84)) / var_f26; - var_f26 *= var_f26; - D_80119C38->unk91[0] = func_800090C0(tempxPos, tempzPos, segment[loopCount1].trans.y_rotation); - } else { - var_f26 = 0.0f; - } - if (racer->raceFinished == 0) { - var_f26 *= 0.5; - } - } else { - var_f26 = 1.0f; - D_80119C38->unk91[0] = 64; - D_80119C38->unk68 = 0.0f; - } - if ((D_80119C38->unkA0 < 70) && (D_80119C38->unk36) && (arg3 < 3) && (var_f26 != 0.0) && !(D_80119C38->unk44[0] & 1)) { - temp_f20_2 = D_80119C38->unkA0 / 70.0f; - temp_s3 = (D_80119C38->unk37 - (D_80119C38->unk37 * temp_f20_2)) * var_f26; - if (temp_s3 >= 16) { - if (D_80119C38->unk50 == NULL) { - func_80001F14(D_80119C38->unk36, (s32 *) &D_80119C38->unk50); - } - temp_f0_3 = D_80119C38->unk38 / 100.0f; - sp8C = temp_f0_3 + ((((f32) D_80119C38->unk39 / 100.0f) - temp_f0_3) * temp_f20_2); - if (D_80119C38->unk50 != NULL) { - func_80009B7C((s32 *) D_80119C38->unk50, objs[loopCount1]->segment.trans.x_position, objs[loopCount1]->segment.trans.y_position, objs[loopCount1]->segment.trans.z_position); - func_800049F8(D_80119C38->unk50, 8, temp_s3 << 8); - func_800049F8(D_80119C38->unk50, 16, *((u32*) &sp8C)); - func_80004604(D_80119C38->unk50, 80); - func_800049F8(D_80119C38->unk50, 4, D_80119C38->unk91[0]); - } - } else if (D_80119C38->unk50 != NULL) { - func_8000488C(D_80119C38->unk50); - D_80119C38->unk50 = 0; - } - } else if (D_80119C38->unk50 != NULL) { - func_8000488C(D_80119C38->unk50); - D_80119C38->unk50 = 0; - } - for (loopCount2 = 0; loopCount2 < 2 && D_80119C38->unk0[loopCount2] != 0 && var_f26 != 0.0; loopCount2++) { - temp_s3 = D_80119C38->unk54[loopCount2] * var_f26; - sp8C = D_80119C38->unk5C[loopCount2] + D_80119C38->unk3C + D_80119C38->unk94 + D_80119C38->unk68; - if (sp8C < 0.05) { - sp8C = 0.05f; - } - if ((loopCount2 == 0) && (D_80119C38->unk44[0] & 1)) { - if (D_80119C38->unk48[0] != NULL) { - func_8000488C(D_80119C38->unk48[0]); - D_80119C38->unk48[0] = NULL; - } - } else { - if ((D_80119C38->unk48[loopCount2] != NULL) && (temp_s3 == 0)) { - func_8000488C(D_80119C38->unk48[loopCount2]); - D_80119C38->unk48[loopCount2] = NULL; - } else { - if (D_80119C38->unk48[loopCount2] == NULL) { - func_80001F14(D_80119C38->unk0[loopCount2], (s32 *) &D_80119C38->unk48[loopCount2]); - } - if (D_80119C38->unk48[loopCount2] != NULL) { - func_80009B7C((s32 *) D_80119C38->unk48[loopCount2], objs[loopCount1]->segment.trans.x_position, objs[loopCount1]->segment.trans.y_position, objs[loopCount1]->segment.trans.z_position); - func_800049F8(D_80119C38->unk48[loopCount2], 8, temp_s3 << 8); - func_800049F8(D_80119C38->unk48[loopCount2], 16, *((u32*) &sp8C)); - func_80004604(D_80119C38->unk48[loopCount2], 80); - if (arg3 != 1) { - D_80119C38->unk91[0] = 64; - } - func_800049F8(D_80119C38->unk48[loopCount2], 4, D_80119C38->unk91[0]); - } - } - } - } - } - } - if (arg3 < 3) { - for (loopCount2 = arg3; loopCount2 < numRacers; loopCount2++) { - racer = &objs[loopCount2]->unk64->racer; - if (racer != NULL) { - D_80119C38 = (unk80119C38 *) racer->unk118; - if (D_80119C38 != NULL) { - D_80119C38->unk88 = 0; - } - } - } - for (loopCount1 = 0; loopCount1 < arg3; loopCount1++) { - racer = &objs[loopCount1]->unk64->racer; - for (loopCount2 = arg3; loopCount2 < numRacers; loopCount2++) { - if (objs[loopCount2]->unk64 != NULL) { - D_80119C38 = (unk80119C38 *) objs[loopCount2]->unk64->racer.unk118; - if (D_80119C38 != 0) { - if (racer->raceFinished != 0) { - tempxPos = objs[loopCount2]->segment.trans.x_position - segment[loopCount1].trans.x_position; - tempyPos = objs[loopCount2]->segment.trans.y_position - segment[loopCount1].trans.y_position; - tempzPos = objs[loopCount2]->segment.trans.z_position - segment[loopCount1].trans.z_position; - } else { - tempxPos = objs[loopCount2]->segment.trans.x_position - objs[loopCount1]->segment.trans.x_position; - tempyPos = objs[loopCount2]->segment.trans.y_position - objs[loopCount1]->segment.trans.y_position; - tempzPos = objs[loopCount2]->segment.trans.z_position - objs[loopCount1]->segment.trans.z_position; - } - D_80119C38->unk84 = sqrtf((tempxPos * tempxPos) + (tempyPos * tempyPos) + (tempzPos * tempzPos)); - if (D_80119C38->unk84 < 1500.0f) { - var_f26 = 2250000.0f; //(1500.0f * 1500.0f) - var_f26 = (var_f26 - (D_80119C38->unk84 * D_80119C38->unk84)) / var_f26; - temp_s3 = D_80119C38->unk54[0] * var_f26; - if (temp_s3 > 127) { - temp_s3 = 127; - } - temp_s3 *= 0.8; - if (D_80119C38->unk88 < temp_s3) { - D_80119C38->unk88 = temp_s3; - D_80119C38->unk91[0] = func_800090C0(tempxPos, tempzPos, segment->trans.y_rotation); - if (racer->raceFinished != 0) { - func_80006BFC(objs[loopCount1], segment, objs[loopCount2], updateRate); - } else { - func_80006BFC(objs[loopCount1], NULL, objs[loopCount2], updateRate); - } - D_80119C38->unk8C = D_80119C38->unk5C[0] + D_80119C38->unk68; - if (D_80119C38->unk8C < 0.05) { - D_80119C38->unk8C = 0.05f; - } - } - } - } - } - } - } - for (loopCount3 = 0; loopCount3 < ARRAY_COUNT(D_80119C30); loopCount3++) { - if (D_80119C30[loopCount3] != NULL) { - if (D_80119C30[loopCount3]->unk48[0] != NULL && D_80119C30[loopCount3]->unk88 < 8) { - func_8000488C(D_80119C30[loopCount3]->unk48[0]); - D_80119C30[loopCount3]->unk48[0] = NULL; - D_80119C30[loopCount3]->unk74 = 0; - D_80119C30[loopCount3] = NULL; - } - } - } - if (updateRate < D_800DC6D4) { - D_800DC6D4 -= updateRate; - } else { - D_800DC6D4 = 0; - } - for (loopCount1 = 1; loopCount1 < numRacers; loopCount1++) { - racer = &objs[loopCount1]->unk64->racer; - if (objs[loopCount1]->unk64 != NULL) { - D_80119C38 = (unk80119C38 *) racer->unk118; - if (D_80119C38 != NULL) { - if (D_80119C38->unk74 == 0) { - maxVal = 20; - if (D_80119C38->unk0[0] != 0) { - loopCount3 = -1; - for (loopCount2 = 0; loopCount2 < ARRAY_COUNT(D_80119C30); loopCount2++) { - if (D_80119C30[loopCount2] != NULL) { - curVal = D_80119C38->unk88; - curVal -= D_80119C30[loopCount2]->unk88; - if ((maxVal < curVal) && (D_800DC6D4 == 0)) { - loopCount3 = loopCount2; - maxVal = curVal; - } - } else if (D_80119C38->unk88 >= 9) { - loopCount3 = loopCount2; - } - } - if (loopCount3 != -1) { - D_80119C38->unk74 = 2; - if (D_80119C30[loopCount3] != NULL) { - if (D_80119C30[loopCount3]->unk48[0] != NULL) { - func_8000488C(D_80119C30[loopCount3]->unk48[0]); - D_80119C30[loopCount3]->unk48[0] = NULL; - D_80119C38->unk74 = 1; - } - D_800DC6D4 = 60; - D_80119C30[loopCount3]->unk74 = 0; - } - D_80119C30[loopCount3] = D_80119C38; - } - } - } - } - } - } - if (func_8001139C() <= 0) { - for (loopCount2 = 0; loopCount2 < ARRAY_COUNT(D_80119C30); loopCount2++) { - temp = D_80119C30[loopCount2]; - if (temp != NULL) { - if (temp->unk0[0] != 0) { - if (temp->unk74 == 1) { - temp->unk74 = 2; - } else { - if (temp->unk48[0] == NULL) { - func_80001F14(temp->unk0[0], (s32 *) &temp->unk48[0]); - } - if (temp->unk48[0] != NULL) { - func_80009B7C((s32 *) temp->unk48[0], temp->unk78, temp->unk7C, temp->unk80); - func_800049F8(temp->unk48[0], 8, temp->unk88 << 8); - func_800049F8(temp->unk48[0], 16, *((u32*) &temp->unk8C)); - if (arg3 != 1) { - temp->unk91[0] = 64; - } - func_800049F8(temp->unk48[0], 4, temp->unk91[0]); - func_80004604(temp->unk48[0], 70); - } - } - } - } - } - } - } -} -#else -GLOBAL_ASM("asm/non_matchings/unknown_005740/func_80006FC8.s") -#endif - -UNUSED void func_80007F78(void) { - D_800DC6D0 = 1; -} - -UNUSED void func_80007F88(void) { - D_800DC6D0 = 0; -} - -UNUSED u8 func_80007F94(void) { - return D_800DC6D0; -} - -// This is likely an arctanh function. -f32 func_80007FA4(f32 arg0) { - f32 temp_f0; - f32 temp_f12; - f32 var_f14; - f32 var_f2; - s32 var_v0; - - var_f2 = 0.0f; - temp_f0 = -1.0f; - arg0 = (arg0 - 1.0f) / (1.0f + arg0); - var_f14 = arg0; - temp_f12 = arg0 * arg0; - for (var_v0 = 1; (var_f2 - temp_f0) > 0.001; var_v0 += 2) { - temp_f0 = var_f2; - var_f2 += var_f14 / var_v0; - var_f14 *= temp_f12; - } - return var_f2 * 2; -} diff --git a/src/vehicle_bluey.c b/src/vehicle_bluey.c index fdae567d..17fe0bbf 100644 --- a/src/vehicle_bluey.c +++ b/src/vehicle_bluey.c @@ -8,7 +8,7 @@ #include "math_util.h" #include "objects.h" #include "object_functions.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "racer.h" #include "particles.h" @@ -165,13 +165,13 @@ void update_bluey(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *ra diffX = (objModel->animations[obj->segment.object.animationID].unk4 * 16) - 17; while (racer->animationSpeed < 0.0f) { racer->animationSpeed += diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } while (diffX < racer->animationSpeed) { racer->animationSpeed -= diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } - if (gfxData->unk10 == -1 && obj->segment.object.animationID == ANIM_BLUEY_DAMAGE) { + if (gfxData->animationID == -1 && obj->segment.object.animationID == ANIM_BLUEY_DAMAGE) { obj->segment.object.animationID = racer->unk1CD; } animFrame = obj->segment.animFrame; diff --git a/src/vehicle_bubbler.c b/src/vehicle_bubbler.c index 42d15893..2b8f2ec8 100644 --- a/src/vehicle_bubbler.c +++ b/src/vehicle_bubbler.c @@ -123,13 +123,13 @@ void update_bubbler(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer * racer->animationSpeed += 2.0 * updateRateF; while (racer->animationSpeed < 0.0f) { racer->animationSpeed += diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } while (diffX < racer->animationSpeed) { racer->animationSpeed -= diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } - if (gfxData->unk10 == -1 && obj->segment.object.animationID == ANIM_BUBBLER_DAMAGE) { + if (gfxData->animationID == -1 && obj->segment.object.animationID == ANIM_BUBBLER_DAMAGE) { obj->segment.object.animationID = ANIM_BUBBLER_MOVE; racer->animationSpeed = 0.0f; } diff --git a/src/vehicle_misc.h b/src/vehicle_misc.h index c6f4c6bc..49a35e24 100644 --- a/src/vehicle_misc.h +++ b/src/vehicle_misc.h @@ -14,7 +14,7 @@ void update_smokey(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r void update_wizpig(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *racer, u32 *input, u32 *buttonsPressed, s32 *startTimer); void update_rocket(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *racer, u32 *input, u32 *buttonsPressed, s32 *startTimer); void spawn_boss_hazard(Object *obj, Object_Racer *racer, f32 offset, s32 objectID, s32 soundID); -void func_8005C2F0(Object *object, Object_Racer *racer); +void racer_special_init(Object *object, Object_Racer *racer); void set_boss_voice_clip_offset(u16 *soundID); void func_8005CA84(f32 x, f32 y, f32 z, s32 arg3); void play_random_boss_sound(s32 arg0); diff --git a/src/vehicle_rocket.c b/src/vehicle_rocket.c index 7f1357d8..03595a31 100644 --- a/src/vehicle_rocket.c +++ b/src/vehicle_rocket.c @@ -129,13 +129,13 @@ void update_rocket(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r diffX = (objModel->animations[obj->segment.object.animationID].unk4 * 16) - 17; while (diffX <= racer->animationSpeed) { racer->animationSpeed -= diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } while (racer->animationSpeed <= 0.0f) { racer->animationSpeed += diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } - if (obj->segment.object.animationID == ANIM_ROCKET_DAMAGE && gfxData->unk10 == -1) { + if (obj->segment.object.animationID == ANIM_ROCKET_DAMAGE && gfxData->animationID == -1) { obj->segment.object.animationID = ANIM_ROCKET_IDLE; racer->animationSpeed = 0.0f; } diff --git a/src/vehicle_smokey.c b/src/vehicle_smokey.c index 361814ed..31c70970 100644 --- a/src/vehicle_smokey.c +++ b/src/vehicle_smokey.c @@ -8,7 +8,7 @@ #include "math_util.h" #include "objects.h" #include "object_functions.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "racer.h" #include "particles.h" @@ -175,17 +175,17 @@ void update_smokey(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r } while (diffX <= racer->animationSpeed) { racer->animationSpeed -= diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } while (racer->animationSpeed <= 0.0f) { racer->animationSpeed += diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } if (obj->segment.object.animationID == ANIM_SMOKEY_WALK && racer->groundedWheels == 0 && racer->velocity < -6.5) { obj->segment.object.animationID = ANIM_SMOKEY_LAND; racer->animationSpeed = 0.0f; } - if (gfxData->unk10 == -1 || obj->segment.object.animationID == ANIM_SMOKEY_IDLE) { + if (gfxData->animationID == -1 || obj->segment.object.animationID == ANIM_SMOKEY_IDLE) { if (obj->segment.object.animationID == ANIM_SMOKEY_DAMAGE) { obj->segment.object.animationID = racer->unk1CD; racer->animationSpeed = 0.0f; diff --git a/src/vehicle_tricky.c b/src/vehicle_tricky.c index 6ece9f49..f6de5655 100644 --- a/src/vehicle_tricky.c +++ b/src/vehicle_tricky.c @@ -8,8 +8,8 @@ #include "macros.h" #include "audio.h" #include "objects.h" -#include "unknown_005740.h" -#include "unknown_008C40.h" +#include "audio_vehicle.h" +#include "audio_spatial.h" #include "menu.h" #include "game.h" #include "particles.h" @@ -54,15 +54,19 @@ enum TrickyAnimations { ANIM_TRICKY_DAMAGE }; -void func_8005C2F0(Object *object, Object_Racer *racer) { +/** + * Overrides some basic racer properties that are either not needed or intended to work differently. + * Also frees the engine sound data, since it won't be used. +*/ +void racer_special_init(Object *object, Object_Racer *racer) { object->interactObj->flags = INTERACT_FLAGS_SOLID | INTERACT_FLAGS_UNK_0004; object->interactObj->unk11 = 0; object->interactObj->hitboxRadius = 30; object->interactObj->pushForce = 0; racer->animationSpeed = 0.0f; gTrickyRacerPeakHeight = object->segment.trans.y_position; - if (racer->unk118 != 0) { - func_80006AC8(object); + if (racer->vehicleSound) { + racer_sound_free(object); } gTrickyCutsceneTimer = 0; } @@ -152,13 +156,13 @@ void update_tricky(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r } while (racer->animationSpeed < 0.0f) { racer->animationSpeed += diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } while (diffX < racer->animationSpeed) { racer->animationSpeed -= diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } - if (gfxData->unk10 == -1 && obj->segment.object.animationID == ANIM_TRICKY_DAMAGE) { + if (gfxData->animationID == -1 && obj->segment.object.animationID == ANIM_TRICKY_DAMAGE) { obj->segment.object.animationID = racer->unk1CD; } animFrame = obj->segment.animFrame; @@ -392,7 +396,7 @@ GLOBAL_ASM("asm/non_matchings/vehicle_tricky/func_8005CB68.s") void fade_when_near_camera(Object *object, Object_Racer *racer, s32 distance) { Object *player = get_racer_object(PLAYER_ONE); racer->transparency = 255; - if (!func_8001139C()) { + if (!get_race_countdown()) { if ((object->segment.object.distanceToCamera + distance) < player->segment.object.distanceToCamera) { racer->transparency = 64; } diff --git a/src/vehicle_wizpig.c b/src/vehicle_wizpig.c index 332a72a5..f8a3b6e5 100644 --- a/src/vehicle_wizpig.c +++ b/src/vehicle_wizpig.c @@ -179,17 +179,17 @@ void update_wizpig(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r while (diffX <= racer->animationSpeed) { racer->animationSpeed -= diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } while (racer->animationSpeed <= 0.0f){ racer->animationSpeed += diffX; - gfxData->unk10 = -1; + gfxData->animationID = -1; } if (obj->segment.object.animationID == ANIM_WIZPIG_RUN && nextCheckpoint) { obj->segment.object.animationID = ANIM_WIZPIG_JUMP; racer->animationSpeed = 0.0f; } - if (gfxData->unk10 == -1 || obj->segment.object.animationID == ANIM_WIZPIG_IDLE) { + if (gfxData->animationID == -1 || obj->segment.object.animationID == ANIM_WIZPIG_IDLE) { if (obj->segment.object.animationID == ANIM_WIZPIG_DAMAGE) { obj->segment.object.animationID = racer->unk1CD; racer->animationSpeed = 0.0f; diff --git a/src/waves.c b/src/waves.c index b3b51ec5..8bf700bf 100644 --- a/src/waves.c +++ b/src/waves.c @@ -9,6 +9,7 @@ #include "textures_sprites.h" #include "objects.h" #include "tracks.h" +#include "math_util.h" /************ .data ************/ diff --git a/src/weather.c b/src/weather.c index cae6a8f9..a659d6ba 100644 --- a/src/weather.c +++ b/src/weather.c @@ -9,7 +9,7 @@ #include "PR/libultra.h" #include "camera.h" #include "tracks.h" -#include "unknown_008C40.h" +#include "audio_spatial.h" #include "textures_sprites.h" #include "math_util.h" #include "objects.h" diff --git a/src/weather.h b/src/weather.h index 464244e5..a1c9d745 100644 --- a/src/weather.h +++ b/src/weather.h @@ -89,8 +89,6 @@ typedef struct unk800E28D4 { u8 unkF; } unk800E28D4; -extern u32 osTvType; - void set_weather_limits(s16 arg0, s16 arg1); void func_800AC880(Object *obj); void cameraAddOverrideObject(Object *arg0); diff --git a/tools/python/calc_func_checksums.py b/tools/python/calc_func_checksums.py index 06ba296d..162e1041 100644 --- a/tools/python/calc_func_checksums.py +++ b/tools/python/calc_func_checksums.py @@ -1,85 +1,85 @@ -import re -import os -import sys - -from file_util import FileUtil - -VERSION = sys.argv[1] - -BUILD_DIR = 'build/' + VERSION -MAP_FILEPATH = BUILD_DIR + '/dkr.map' -ROM_FILEPATH = BUILD_DIR + '/dkr.z64' - -FUNCTIONS_TO_CALC = [ - # function checksum variable func size variable - ('func_80019808', 'gFunc80019808Checksum', 'gFunc80019808Length'), - ('render_scene', 'gTractionTableChecksum', 'gFunc80024D54Length'), - ('obj_loop_goldenballoon', 'gObjLoopGoldenBalloonChecksum', 'gObjLoopGoldenBalloonLength'), - ('func_80068158', 'gFunc80068158Checksum', 'gFunc80068158Length') -] - -def getMatches(string, regex): - out = [] - matches = re.finditer(regex, string, re.MULTILINE) - for matchNum, match in enumerate(matches, start=1): - start = match.start() - end = match.end() - out.append((string[start:end], match.groups(), (start, end))) - return out - -rom = FileUtil.get_bytes_from_file(ROM_FILEPATH) -mapFile = {} -RAM_TO_ROM = None - -def write_word_to_rom(romOffset, value): - global rom - rom[romOffset + 0] = (value >> 24) & 0xFF - rom[romOffset + 1] = (value >> 16) & 0xFF - rom[romOffset + 2] = (value >> 8) & 0xFF - rom[romOffset + 3] = value & 0xFF - -def calculate_checksum_for_function(funcLabel, varLabel, funcSizeLabel): - if funcLabel not in mapFile: - raise Exception('Label "' + funcLabel + '" does not exist in the map file!') - if varLabel not in mapFile: - raise Exception('Label "' + varLabel + '" does not exist in the map file!') - if funcSizeLabel not in mapFile: - raise Exception('Label "' + funcSizeLabel + '" does not exist in the map file!') - funcEntry = mapFile[funcLabel] - funcAddress = funcEntry['value'] - funcLength = funcEntry['length'] - funcRomOffset = funcAddress - RAM_TO_ROM - count = 0 - for i in range(0, funcLength): - count += rom[funcRomOffset + i] - # Save function checksum. - varEntry = mapFile[varLabel] - varAddress = varEntry['value'] - varRomOffset = varAddress - RAM_TO_ROM - write_word_to_rom(varRomOffset, count) - # Save function size. - sizeEntry = mapFile[funcSizeLabel] - sizeAddress = sizeEntry['value'] - sizeRomOffset = sizeAddress - RAM_TO_ROM - write_word_to_rom(sizeRomOffset, funcLength) - -def calculate_matches(): - global mapFile, RAM_TO_ROM - REGEX_MAP_GET_LABEL = r"[ ]*?(?:0x[0-9A-Fa-f]{8})?([0-9A-Fa-f]{8})[ ]*?([_A-Za-z0-9]+)" - mapText = FileUtil.get_text_from_file(MAP_FILEPATH) - mapMatches = getMatches(mapText, REGEX_MAP_GET_LABEL) - for i in range(0, len(mapMatches) - 1): - match = mapMatches[i] - labelValue = match[1] - value = int(labelValue[0], 16) - length = int(mapMatches[i + 1][1][0], 16) - value - mapFile[labelValue[1]] = { "value": value, "length": length } - RAM_TO_ROM = mapFile['__RAM_TO_ROM']['value'] - -def main(): - calculate_matches() - for entry in FUNCTIONS_TO_CALC: - calculate_checksum_for_function(entry[0], entry[1], entry[2]) - FileUtil.write_bytes_to_file(ROM_FILEPATH, rom) - -main() +import re +import os +import sys + +from file_util import FileUtil + +VERSION = sys.argv[1] + +BUILD_DIR = 'build/' + VERSION +MAP_FILEPATH = BUILD_DIR + '/dkr.map' +ROM_FILEPATH = BUILD_DIR + '/dkr.z64' + +FUNCTIONS_TO_CALC = [ + # function checksum variable func size variable + ('func_80019808', 'gFunc80019808Checksum', 'gFunc80019808Length'), + ('render_scene', 'gTractionTableChecksum', 'gTrackRenderFuncLength'), + ('obj_loop_goldenballoon', 'gObjLoopGoldenBalloonChecksum', 'gObjLoopGoldenBalloonLength'), + ('func_80068158', 'gFunc80068158Checksum', 'gFunc80068158Length') +] + +def getMatches(string, regex): + out = [] + matches = re.finditer(regex, string, re.MULTILINE) + for matchNum, match in enumerate(matches, start=1): + start = match.start() + end = match.end() + out.append((string[start:end], match.groups(), (start, end))) + return out + +rom = FileUtil.get_bytes_from_file(ROM_FILEPATH) +mapFile = {} +RAM_TO_ROM = None + +def write_word_to_rom(romOffset, value): + global rom + rom[romOffset + 0] = (value >> 24) & 0xFF + rom[romOffset + 1] = (value >> 16) & 0xFF + rom[romOffset + 2] = (value >> 8) & 0xFF + rom[romOffset + 3] = value & 0xFF + +def calculate_checksum_for_function(funcLabel, varLabel, funcSizeLabel): + if funcLabel not in mapFile: + raise Exception('Label "' + funcLabel + '" does not exist in the map file!') + if varLabel not in mapFile: + raise Exception('Label "' + varLabel + '" does not exist in the map file!') + if funcSizeLabel not in mapFile: + raise Exception('Label "' + funcSizeLabel + '" does not exist in the map file!') + funcEntry = mapFile[funcLabel] + funcAddress = funcEntry['value'] + funcLength = funcEntry['length'] + funcRomOffset = funcAddress - RAM_TO_ROM + count = 0 + for i in range(0, funcLength): + count += rom[funcRomOffset + i] + # Save function checksum. + varEntry = mapFile[varLabel] + varAddress = varEntry['value'] + varRomOffset = varAddress - RAM_TO_ROM + write_word_to_rom(varRomOffset, count) + # Save function size. + sizeEntry = mapFile[funcSizeLabel] + sizeAddress = sizeEntry['value'] + sizeRomOffset = sizeAddress - RAM_TO_ROM + write_word_to_rom(sizeRomOffset, funcLength) + +def calculate_matches(): + global mapFile, RAM_TO_ROM + REGEX_MAP_GET_LABEL = r"[ ]*?(?:0x[0-9A-Fa-f]{8})?([0-9A-Fa-f]{8})[ ]*?([_A-Za-z0-9]+)" + mapText = FileUtil.get_text_from_file(MAP_FILEPATH) + mapMatches = getMatches(mapText, REGEX_MAP_GET_LABEL) + for i in range(0, len(mapMatches) - 1): + match = mapMatches[i] + labelValue = match[1] + value = int(labelValue[0], 16) + length = int(mapMatches[i + 1][1][0], 16) - value + mapFile[labelValue[1]] = { "value": value, "length": length } + RAM_TO_ROM = mapFile['__RAM_TO_ROM']['value'] + +def main(): + calculate_matches() + for entry in FUNCTIONS_TO_CALC: + calculate_checksum_for_function(entry[0], entry[1], entry[2]) + FileUtil.write_bytes_to_file(ROM_FILEPATH, rom) + +main() diff --git a/tools/python/find_glabels.py b/tools/python/find_glabels.py index 56c264be..7f0d96f8 100644 --- a/tools/python/find_glabels.py +++ b/tools/python/find_glabels.py @@ -57,7 +57,7 @@ def _find_glabels(asm): def main(): FileUtil.set_working_dir_to_project_base() - contents = FileUtil.get_text_from_file('asm/non_matchings/unknown_005740/func_80005254.s') + contents = FileUtil.get_text_from_file('asm/non_matchings/audio_vehicle/func_80005254.s') glabels = _find_glabels(contents) print('%d undeclared labels found:' % len(glabels)) for glabel in glabels: