From 8468119587381ff06ee372bb29cdbce25db5eefc Mon Sep 17 00:00:00 2001 From: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Mon, 8 Aug 2022 16:08:08 +0100 Subject: [PATCH] Few extra racer.c matches (#238) * Squashed commit of the following: commit 3ab471611006d05553f2fea56ace0a92397344cf Author: Fazana <52551480+FazanaJ@users.noreply.github.com> Date: Mon May 23 23:11:46 2022 +0100 Mostly misc labelling, but also weather too (#232) * bit more labelling * identify some weather stuff * Update sound_ids.h * yum * more random identification * last weather stuff for now * Update README.md * Update README.md * Fix non equivalent * I found the 60fps button * match func_80052B64 * match racer_attack_handler * match func_80048C7C * buncha function declaring * e * tweak * match func_8004DE38 oh man oh man * Small bit of labelling * Merge remote-tracking branch 'upstream/master' into the-many-against-the-few * Update README.md * Fix monumentally poor bout of misinformation in the readme we wouldn't want to mislead the readers, would we? * github please * Update README.md * requested changes kinda funny because I knew this struct existed, and knew it was used for this, but never made the connection lol * Update objects.c * match racer_enter_door A nice easy one after the pure hellscape of the last few days :) * names * renames * match func_8005250C * heehee * Update racer.c * identify some misc asset calls * identify some surface types * match func_8005492C * Delete func_8005492C.s * match func_80052D7C * move some enums * label all existing misc asset calls granted I know what almost none of them are lmao, buut will make things slightly easier in the long run * Update README.md * requested changes pain * Update README.md --- README.md | 22 +- asm/non_matchings/racer/func_80046524.s | 28 +- asm/non_matchings/racer/func_80049794.s | 16 +- asm/non_matchings/racer/func_8004F7F4.s | 4 +- asm/non_matchings/racer/func_80050A28.s | 16 +- asm/non_matchings/racer/func_8005250C.s | 320 ------------- asm/non_matchings/racer/func_80052D7C.s | 512 --------------------- asm/non_matchings/racer/func_8005492C.s | 478 -------------------- asm/non_matchings/racer/func_8005A424.s | 196 -------- asm/non_matchings/racer/func_8005A6F0.s | 32 +- asm/non_matchings/racer/func_8005B818.s | 4 +- include/enums.h | 104 +++++ include/math_util.h | 2 +- include/sound_ids.h | 212 ++++----- include/structs.h | 33 +- src/game.c | 10 +- src/menu.c | 14 +- src/object_functions.c | 24 +- src/objects.c | 2 +- src/objects.h | 5 +- src/racer.c | 569 +++++++++++++++++++++--- src/racer.h | 13 +- 22 files changed, 835 insertions(+), 1781 deletions(-) delete mode 100644 asm/non_matchings/racer/func_8005250C.s delete mode 100644 asm/non_matchings/racer/func_80052D7C.s delete mode 100644 asm/non_matchings/racer/func_8005492C.s delete mode 100644 asm/non_matchings/racer/func_8005A424.s diff --git a/README.md b/README.md index d1e1619f..89f774e6 100755 --- a/README.md +++ b/README.md @@ -113,25 +113,25 @@ s32 is_drumstick_unlocked(void) { } ``` -As of May 28th, 2022, this is our current score: +As of August 8th, 2022, this is our current score: ``` ======================================================== ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 25.50% Complete -------------------- - # Decompiled functions: 1140 - # GLOBAL_ASM remaining: 638 - # NON_MATCHING functions: 10 - # NON_EQUIVALENT WIP functions: 105 + ------------------- 28.87% Complete -------------------- + # Decompiled functions: 1200 + # GLOBAL_ASM remaining: 566 + # NON_MATCHING functions: 11 + # NON_EQUIVALENT WIP functions: 100 --------------------- Game Status ---------------------- - Balloons: 12/47, Keys: 1/4, Trophies: 1/5 + Balloons: 15/47, Keys: 1/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 -------------------------------------------------------- - We are racing Taj in the Car Challenge. (Lap 3/3) + We are racing in Snowball Valley. (Lap 1/3) ======================================================== ADVENTURE TWO (Cleanup & Documentation) - ------------------- 5.01% Complete -------------------- - # Documented functions: 175 - # Undocumented remaining: 1603 + ------------------- 5.16% Complete -------------------- + # Documented functions: 181 + # Undocumented remaining: 1585 --------------------- Game Status ---------------------- Balloons: 3/47, Keys: 0/4, Trophies: 0/5 T.T. Amulets: 0/4, Wizpig Amulets: 0/4 diff --git a/asm/non_matchings/racer/func_80046524.s b/asm/non_matchings/racer/func_80046524.s index 7ae18ced..66ff2464 100644 --- a/asm/non_matchings/racer/func_80046524.s +++ b/asm/non_matchings/racer/func_80046524.s @@ -810,7 +810,7 @@ glabel func_80046524 /* 047C28 80047028 8E0E0148 */ lw $t6, 0x148($s0) /* 047C2C 8004702C 44805000 */ mtc1 $zero, $f10 /* 047C30 80047030 15C0000E */ bnez $t6, .L8004706C -/* 047C34 80047034 3C0A8012 */ lui $t2, %hi(D_8011D564) # $t2, 0x8012 +/* 047C34 80047034 3C0A8012 */ lui $t2, %hi(gCurrentRacerMiscAssetPtr) # $t2, 0x8012 /* 047C38 80047038 A220003B */ sb $zero, 0x3b($s1) /* 047C3C 8004703C 820201E1 */ lb $v0, 0x1e1($s0) /* 047C40 80047040 24180028 */ li $t8, 40 @@ -842,7 +842,7 @@ glabel func_80046524 /* 047C98 80047098 46000486 */ mov.s $f18, $f0 .L8004709C: /* 047C9C 8004709C 4459F800 */ cfc1 $t9, $31 -/* 047CA0 800470A0 8D4AD564 */ lw $t2, %lo(D_8011D564)($t2) +/* 047CA0 800470A0 8D4AD564 */ lw $t2, %lo(gCurrentRacerMiscAssetPtr)($t2) /* 047CA4 800470A4 37210003 */ ori $at, $t9, 3 /* 047CA8 800470A8 38210002 */ xori $at, $at, 2 /* 047CAC 800470AC 44C1F800 */ ctc1 $at, $31 @@ -860,11 +860,11 @@ glabel func_80046524 /* 047CDC 800470DC C4640000 */ lwc1 $f4, ($v1) /* 047CE0 800470E0 460001A1 */ cvt.d.s $f6, $f0 /* 047CE4 800470E4 46265201 */ sub.d $f8, $f10, $f6 -/* 047CE8 800470E8 3C068012 */ lui $a2, %hi(D_8011D56C) # $a2, 0x8012 +/* 047CE8 800470E8 3C068012 */ lui $a2, %hi(gCurrentRacerWeightStat) # $a2, 0x8012 /* 047CEC 800470EC 460022A1 */ cvt.d.s $f10, $f4 /* 047CF0 800470F0 46285182 */ mul.d $f6, $f10, $f8 /* 047CF4 800470F4 C4640004 */ lwc1 $f4, 4($v1) -/* 047CF8 800470F8 24C6D56C */ addiu $a2, %lo(D_8011D56C) # addiu $a2, $a2, -0x2a94 +/* 047CF8 800470F8 24C6D56C */ addiu $a2, %lo(gCurrentRacerWeightStat) # addiu $a2, $a2, -0x2a94 /* 047CFC 800470FC 3C013FE8 */ li $at, 0x3FE80000 # 1.812500 /* 047D00 80047100 02001825 */ move $v1, $s0 /* 047D04 80047104 46002282 */ mul.s $f10, $f4, $f0 @@ -1003,8 +1003,8 @@ glabel func_80046524 /* 047F00 80047300 46265202 */ mul.d $f8, $f10, $f6 /* 047F04 80047304 462044A0 */ cvt.s.d $f18, $f8 .L80047308: -/* 047F08 80047308 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 -/* 047F0C 8004730C C424D570 */ lwc1 $f4, %lo(D_8011D570)($at) +/* 047F08 80047308 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 +/* 047F0C 8004730C C424D570 */ lwc1 $f4, %lo(gCurrentRacerHandlingStat)($at) /* 047F10 80047310 860D01A0 */ lh $t5, 0x1a0($s0) /* 047F14 80047314 46047382 */ mul.s $f14, $f14, $f4 /* 047F18 80047318 820C01E2 */ lb $t4, 0x1e2($s0) @@ -1682,8 +1682,8 @@ glabel func_80046524 /* 048900 80047D00 8D8CD540 */ lw $t4, %lo(gRaceStartTimer)($t4) /* 048904 80047D04 C7A8012C */ lwc1 $f8, 0x12c($sp) /* 048908 80047D08 15800029 */ bnez $t4, .L80047DB0 -/* 04890C 80047D0C 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 -/* 048910 80047D10 C426D56C */ lwc1 $f6, %lo(D_8011D56C)($at) +/* 04890C 80047D0C 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 +/* 048910 80047D10 C426D56C */ lwc1 $f6, %lo(gCurrentRacerWeightStat)($at) /* 048914 80047D14 3C013FD0 */ li $at, 0x3FD00000 # 1.625000 /* 048918 80047D18 46083282 */ mul.s $f10, $f6, $f8 /* 04891C 80047D1C 44803000 */ mtc1 $zero, $f6 @@ -2473,9 +2473,9 @@ glabel func_80046524 /* 049490 80048890 AE200074 */ sw $zero, 0x74($s1) /* 049494 80048894 8FAD0128 */ lw $t5, 0x128($sp) .L80048898: -/* 049498 80048898 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 +/* 049498 80048898 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 /* 04949C 8004889C 448D3000 */ mtc1 $t5, $f6 -/* 0494A0 800488A0 C42AD56C */ lwc1 $f10, %lo(D_8011D56C)($at) +/* 0494A0 800488A0 C42AD56C */ lwc1 $f10, %lo(gCurrentRacerWeightStat)($at) /* 0494A4 800488A4 46803020 */ cvt.s.w $f0, $f6 /* 0494A8 800488A8 C6280020 */ lwc1 $f8, 0x20($s1) /* 0494AC 800488AC 02202025 */ move $a0, $s1 @@ -2485,9 +2485,9 @@ glabel func_80046524 /* 0494BC 800488BC 8FA50128 */ lw $a1, 0x128($sp) /* 0494C0 800488C0 0C02BDC5 */ jal func_800AF714 /* 0494C4 800488C4 E7A0004C */ swc1 $f0, 0x4c($sp) -/* 0494C8 800488C8 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 +/* 0494C8 800488C8 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 /* 0494CC 800488CC C7A0004C */ lwc1 $f0, 0x4c($sp) -/* 0494D0 800488D0 C428D56C */ lwc1 $f8, %lo(D_8011D56C)($at) +/* 0494D0 800488D0 C428D56C */ lwc1 $f8, %lo(gCurrentRacerWeightStat)($at) /* 0494D4 800488D4 C62A0020 */ lwc1 $f10, 0x20($s1) /* 0494D8 800488D8 46080102 */ mul.s $f4, $f0, $f8 /* 0494DC 800488DC 46045181 */ sub.s $f6, $f10, $f4 @@ -2665,8 +2665,8 @@ glabel func_80046524 /* 049760 80048B60 00000000 */ nop /* 049764 80048B64 46002021 */ cvt.d.s $f0, $f4 .L80048B68: -/* 049768 80048B68 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 -/* 04976C 80048B6C C428D56C */ lwc1 $f8, %lo(D_8011D56C)($at) +/* 049768 80048B68 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 +/* 04976C 80048B6C C428D56C */ lwc1 $f8, %lo(gCurrentRacerWeightStat)($at) /* 049770 80048B70 46200180 */ add.d $f6, $f0, $f0 /* 049774 80048B74 460042A1 */ cvt.d.s $f10, $f8 /* 049778 80048B78 00000000 */ nop diff --git a/asm/non_matchings/racer/func_80049794.s b/asm/non_matchings/racer/func_80049794.s index c51f46a8..41f0dced 100644 --- a/asm/non_matchings/racer/func_80049794.s +++ b/asm/non_matchings/racer/func_80049794.s @@ -618,8 +618,8 @@ glabel func_80049794 /* 04ABD0 80049FD0 106C0004 */ beq $v1, $t4, .L80049FE4 /* 04ABD4 80049FD4 00000000 */ nop /* 04ABD8 80049FD8 C42664E8 */ lwc1 $f6, %lo(D_800E64E8)($at) -/* 04ABDC 80049FDC 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 -/* 04ABE0 80049FE0 E426D570 */ swc1 $f6, %lo(D_8011D570)($at) +/* 04ABDC 80049FDC 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 +/* 04ABE0 80049FE0 E426D570 */ swc1 $f6, %lo(gCurrentRacerHandlingStat)($at) .L80049FE4: /* 04ABE4 80049FE4 C620001C */ lwc1 $f0, 0x1c($s1) /* 04ABE8 80049FE8 C6220024 */ lwc1 $f2, 0x24($s1) @@ -655,7 +655,7 @@ glabel func_80049794 /* 04AC5C 8004A05C 460CA03C */ c.lt.s $f20, $f12 /* 04AC60 8004A060 44814800 */ mtc1 $at, $f9 /* 04AC64 8004A064 45000002 */ bc1f .L8004A070 -/* 04AC68 8004A068 3C0B8012 */ lui $t3, %hi(D_8011D564) # $t3, 0x8012 +/* 04AC68 8004A068 3C0B8012 */ lui $t3, %hi(gCurrentRacerMiscAssetPtr) # $t3, 0x8012 /* 04AC6C 8004A06C 46006506 */ mov.s $f20, $f12 .L8004A070: /* 04AC70 8004A070 44804000 */ mtc1 $zero, $f8 @@ -772,7 +772,7 @@ glabel func_80049794 /* 04AE0C 8004A20C 37210003 */ ori $at, $t9, 3 /* 04AE10 8004A210 38210002 */ xori $at, $at, 2 /* 04AE14 8004A214 44C1F800 */ ctc1 $at, $31 -/* 04AE18 8004A218 8D6BD564 */ lw $t3, %lo(D_8011D564)($t3) +/* 04AE18 8004A218 8D6BD564 */ lw $t3, %lo(gCurrentRacerMiscAssetPtr)($t3) /* 04AE1C 8004A21C 460074A4 */ cvt.w.s $f18, $f14 /* 04AE20 8004A220 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 /* 04AE24 8004A224 44029000 */ mfc1 $v0, $f18 @@ -1089,8 +1089,8 @@ glabel func_80049794 /* 04B2B0 8004A6B0 4480A000 */ mtc1 $zero, $f20 /* 04B2B4 8004A6B4 00000000 */ nop .L8004A6B8: -/* 04B2B8 8004A6B8 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 -/* 04B2BC 8004A6BC C42AD56C */ lwc1 $f10, %lo(D_8011D56C)($at) +/* 04B2B8 8004A6B8 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 +/* 04B2BC 8004A6BC C42AD56C */ lwc1 $f10, %lo(gCurrentRacerWeightStat)($at) /* 04B2C0 8004A6C0 C6240020 */ lwc1 $f4, 0x20($s1) /* 04B2C4 8004A6C4 460AA502 */ mul.s $f20, $f20, $f10 /* 04B2C8 8004A6C8 46142201 */ sub.s $f8, $f4, $f20 @@ -1687,9 +1687,9 @@ glabel func_80049794 /* 04BB48 8004AF48 000D4040 */ sll $t0, $t5, 1 .L8004AF4C: /* 04BB4C 8004AF4C 44883000 */ mtc1 $t0, $f6 -/* 04BB50 8004AF50 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 +/* 04BB50 8004AF50 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 /* 04BB54 8004AF54 46803120 */ cvt.s.w $f4, $f6 -/* 04BB58 8004AF58 C428D570 */ lwc1 $f8, %lo(D_8011D570)($at) +/* 04BB58 8004AF58 C428D570 */ lwc1 $f8, %lo(gCurrentRacerHandlingStat)($at) /* 04BB5C 8004AF5C 8FAB00F8 */ lw $t3, 0xf8($sp) /* 04BB60 8004AF60 46082482 */ mul.s $f18, $f4, $f8 /* 04BB64 8004AF64 860C01A0 */ lh $t4, 0x1a0($s0) diff --git a/asm/non_matchings/racer/func_8004F7F4.s b/asm/non_matchings/racer/func_8004F7F4.s index f8abd01c..8d1253ad 100644 --- a/asm/non_matchings/racer/func_8004F7F4.s +++ b/asm/non_matchings/racer/func_8004F7F4.s @@ -348,8 +348,8 @@ glabel func_8004F7F4 /* 0508B0 8004FCB0 00000000 */ nop /* 0508B4 8004FCB4 15000005 */ bnez $t0, .L8004FCCC .L8004FCB8: -/* 0508B8 8004FCB8 3C098012 */ lui $t1, %hi(D_8011D581) # $t1, 0x8012 -/* 0508BC 8004FCBC 8129D581 */ lb $t1, %lo(D_8011D581)($t1) +/* 0508B8 8004FCB8 3C098012 */ lui $t1, %hi(gCurrentSurfaceType) # $t1, 0x8012 +/* 0508BC 8004FCBC 8129D581 */ lb $t1, %lo(gCurrentSurfaceType)($t1) /* 0508C0 8004FCC0 2401000A */ li $at, 10 /* 0508C4 8004FCC4 1521004F */ bne $t1, $at, .L8004FE04 /* 0508C8 8004FCC8 00000000 */ nop diff --git a/asm/non_matchings/racer/func_80050A28.s b/asm/non_matchings/racer/func_80050A28.s index 4a434642..25800662 100644 --- a/asm/non_matchings/racer/func_80050A28.s +++ b/asm/non_matchings/racer/func_80050A28.s @@ -660,8 +660,8 @@ glabel func_80050A28 /* 051EF0 800512F0 00000000 */ nop .L800512F4: /* 051EF4 800512F4 00590019 */ multu $v0, $t9 -/* 051EF8 800512F8 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 -/* 051EFC 800512FC C42AD570 */ lwc1 $f10, %lo(D_8011D570)($at) +/* 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 @@ -1016,11 +1016,11 @@ glabel func_80050A28 /* 052430 80051830 46000087 */ neg.s $f2, $f0 .L80051834: /* 052434 80051834 C6080030 */ lwc1 $f8, 0x30($s0) -/* 052438 80051838 3C018012 */ lui $at, %hi(D_8011D581) # $at, 0x8012 +/* 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(D_8011D581)($at) +/* 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) @@ -1267,7 +1267,7 @@ glabel func_80050A28 /* 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(D_8011D564) # $t6, 0x8012 +/* 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) @@ -1317,7 +1317,7 @@ glabel func_80050A28 /* 052894 80051C94 46000386 */ mov.s $f14, $f0 .L80051C98: /* 052898 80051C98 444FF800 */ cfc1 $t7, $31 -/* 05289C 80051C9C 8DCED564 */ lw $t6, %lo(D_8011D564)($t6) +/* 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 @@ -1485,7 +1485,7 @@ glabel func_80050A28 /* 052B10 80051F10 00000000 */ nop .L80051F14: /* 052B14 80051F14 460A603C */ c.lt.s $f12, $f10 -/* 052B18 80051F18 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 +/* 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 @@ -1514,7 +1514,7 @@ glabel func_80050A28 /* 052B7C 80051F7C 00000000 */ nop /* 052B80 80051F80 E606002C */ swc1 $f6, 0x2c($s0) .L80051F84: -/* 052B84 80051F84 C42ED56C */ lwc1 $f14, %lo(D_8011D56C)($at) +/* 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 diff --git a/asm/non_matchings/racer/func_8005250C.s b/asm/non_matchings/racer/func_8005250C.s deleted file mode 100644 index 80493a84..00000000 --- a/asm/non_matchings/racer/func_8005250C.s +++ /dev/null @@ -1,320 +0,0 @@ -.late_rodata -glabel jpt_800E66D0 -.word L80052678, L80052978, L80052978, L800527AC, L8005280C, L80052858, L800528A4, L80052910 - -.text -glabel func_8005250C -/* 05310C 8005250C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 053110 80052510 AFBF0024 */ sw $ra, 0x24($sp) -/* 053114 80052514 AFA40028 */ sw $a0, 0x28($sp) -/* 053118 80052518 AFA60030 */ sw $a2, 0x30($sp) -/* 05311C 8005251C 80AE0173 */ lb $t6, 0x173($a1) -/* 053120 80052520 00001825 */ move $v1, $zero -/* 053124 80052524 19C0000F */ blez $t6, .L80052564 -/* 053128 80052528 2404000C */ li $a0, 12 -/* 05312C 8005252C 0C0078A7 */ jal get_misc_asset -/* 053130 80052530 AFA5002C */ sw $a1, 0x2c($sp) -/* 053134 80052534 8FA5002C */ lw $a1, 0x2c($sp) -/* 053138 80052538 00000000 */ nop -/* 05313C 8005253C 80AF0172 */ lb $t7, 0x172($a1) -/* 053140 80052540 80B90174 */ lb $t9, 0x174($a1) -/* 053144 80052544 000FC080 */ sll $t8, $t7, 2 -/* 053148 80052548 030FC021 */ addu $t8, $t8, $t7 -/* 05314C 8005254C 0018C040 */ sll $t8, $t8, 1 -/* 053150 80052550 00194040 */ sll $t0, $t9, 1 -/* 053154 80052554 03084821 */ addu $t1, $t8, $t0 -/* 053158 80052558 01225021 */ addu $t2, $t1, $v0 -/* 05315C 8005255C 81430000 */ lb $v1, ($t2) -/* 053160 80052560 00000000 */ nop -.L80052564: -/* 053164 80052564 3C0B8012 */ lui $t3, %hi(gCurrentButtonsPressed) # $t3, 0x8012 -/* 053168 80052568 8D6BD52C */ lw $t3, %lo(gCurrentButtonsPressed)($t3) -/* 05316C 8005256C 24010004 */ li $at, 4 -/* 053170 80052570 316C2000 */ andi $t4, $t3, 0x2000 -/* 053174 80052574 11800006 */ beqz $t4, .L80052590 -/* 053178 80052578 3C09800E */ lui $t1, %hi(gNumViewports) # $t1, 0x800e -/* 05317C 8005257C 10610004 */ beq $v1, $at, .L80052590 -/* 053180 80052580 24010008 */ li $at, 8 -/* 053184 80052584 10610002 */ beq $v1, $at, .L80052590 -/* 053188 80052588 240D0005 */ li $t5, 5 -/* 05318C 8005258C A0AD01F2 */ sb $t5, 0x1f2($a1) -.L80052590: -/* 053190 80052590 80AE01D3 */ lb $t6, 0x1d3($a1) -/* 053194 80052594 00000000 */ nop -/* 053198 80052598 11C00005 */ beqz $t6, .L800525B0 -/* 05319C 8005259C 00000000 */ nop -/* 0531A0 800525A0 90AF01F3 */ lbu $t7, 0x1f3($a1) -/* 0531A4 800525A4 00000000 */ nop -/* 0531A8 800525A8 35F90004 */ ori $t9, $t7, 4 -/* 0531AC 800525AC A0B901F3 */ sb $t9, 0x1f3($a1) -.L800525B0: -/* 0531B0 800525B0 90B801F3 */ lbu $t8, 0x1f3($a1) -/* 0531B4 800525B4 00000000 */ nop -/* 0531B8 800525B8 33080008 */ andi $t0, $t8, 8 -/* 0531BC 800525BC 11000016 */ beqz $t0, .L80052618 -/* 0531C0 800525C0 24180004 */ li $t8, 4 -/* 0531C4 800525C4 8D29CB98 */ lw $t1, %lo(gNumViewports)($t1) -/* 0531C8 800525C8 3C0A8012 */ lui $t2, %hi(gCurrentPlayerIndex) # $t2, 0x8012 -/* 0531CC 800525CC 29210003 */ slti $at, $t1, 3 -/* 0531D0 800525D0 10200010 */ beqz $at, .L80052614 -/* 0531D4 800525D4 00000000 */ nop -/* 0531D8 800525D8 8D4AD55C */ lw $t2, %lo(gCurrentPlayerIndex)($t2) -/* 0531DC 800525DC 8FAE0028 */ lw $t6, 0x28($sp) -/* 0531E0 800525E0 05400008 */ bltz $t2, .L80052604 -/* 0531E4 800525E4 00000000 */ nop -/* 0531E8 800525E8 8FAB0028 */ lw $t3, 0x28($sp) -/* 0531EC 800525EC 3C010010 */ lui $at, 0x10 -/* 0531F0 800525F0 8D6C0074 */ lw $t4, 0x74($t3) -/* 0531F4 800525F4 00000000 */ nop -/* 0531F8 800525F8 01816825 */ or $t5, $t4, $at -/* 0531FC 800525FC 10000005 */ b .L80052614 -/* 053200 80052600 AD6D0074 */ sw $t5, 0x74($t3) -.L80052604: -/* 053204 80052604 8DCF0074 */ lw $t7, 0x74($t6) -/* 053208 80052608 3C010008 */ lui $at, 8 -/* 05320C 8005260C 01E1C825 */ or $t9, $t7, $at -/* 053210 80052610 ADD90074 */ sw $t9, 0x74($t6) -.L80052614: -/* 053214 80052614 A0B801F2 */ sb $t8, 0x1f2($a1) -.L80052618: -/* 053218 80052618 3C088012 */ lui $t0, %hi(gRaceStartTimer) # $t0, 0x8012 -/* 05321C 8005261C 8D08D540 */ lw $t0, %lo(gRaceStartTimer)($t0) -/* 053220 80052620 00000000 */ nop -/* 053224 80052624 11000003 */ beqz $t0, .L80052634 -/* 053228 80052628 00000000 */ nop -/* 05322C 8005262C A0A001F3 */ sb $zero, 0x1f3($a1) -/* 053230 80052630 A0A001F2 */ sb $zero, 0x1f2($a1) -.L80052634: -/* 053234 80052634 80A901D8 */ lb $t1, 0x1d8($a1) -/* 053238 80052638 24010001 */ li $at, 1 -/* 05323C 8005263C 15210003 */ bne $t1, $at, .L8005264C -/* 053240 80052640 00000000 */ nop -/* 053244 80052644 A0A001F2 */ sb $zero, 0x1f2($a1) -/* 053248 80052648 A0A001F3 */ sb $zero, 0x1f3($a1) -.L8005264C: -/* 05324C 8005264C 90AA01F2 */ lbu $t2, 0x1f2($a1) -/* 053250 80052650 00000000 */ nop -/* 053254 80052654 2D410008 */ sltiu $at, $t2, 8 -/* 053258 80052658 102000C7 */ beqz $at, .L80052978 -/* 05325C 8005265C 000A5080 */ sll $t2, $t2, 2 -/* 053260 80052660 3C01800E */ lui $at, %hi(jpt_800E66D0) # $at, 0x800e -/* 053264 80052664 002A0821 */ addu $at, $at, $t2 -/* 053268 80052668 8C2A66D0 */ lw $t2, %lo(jpt_800E66D0)($at) -/* 05326C 8005266C 00000000 */ nop -/* 053270 80052670 01400008 */ jr $t2 -/* 053274 80052674 00000000 */ nop -glabel L80052678 -/* 053278 80052678 84AC01A2 */ lh $t4, 0x1a2($a1) -/* 05327C 8005267C 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 -/* 053280 80052680 000C6823 */ negu $t5, $t4 -/* 053284 80052684 000D5A03 */ sra $t3, $t5, 8 -/* 053288 80052688 448B2000 */ mtc1 $t3, $f4 -/* 05328C 8005268C C428D570 */ lwc1 $f8, %lo(D_8011D570)($at) -/* 053290 80052690 468021A0 */ cvt.s.w $f6, $f4 -/* 053294 80052694 8FA20030 */ lw $v0, 0x30($sp) -/* 053298 80052698 24190028 */ li $t9, 40 -/* 05329C 8005269C 46083283 */ div.s $f10, $f6, $f8 -/* 0532A0 800526A0 8FAE0028 */ lw $t6, 0x28($sp) -/* 0532A4 800526A4 8FAA0028 */ lw $t2, 0x28($sp) -/* 0532A8 800526A8 44809800 */ mtc1 $zero, $f19 -/* 0532AC 800526AC 240D0003 */ li $t5, 3 -/* 0532B0 800526B0 0002C080 */ sll $t8, $v0, 2 -/* 0532B4 800526B4 444FF800 */ cfc1 $t7, $31 -/* 0532B8 800526B8 00000000 */ nop -/* 0532BC 800526BC 35E10003 */ ori $at, $t7, 3 -/* 0532C0 800526C0 38210002 */ xori $at, $at, 2 -/* 0532C4 800526C4 44C1F800 */ ctc1 $at, $31 -/* 0532C8 800526C8 00000000 */ nop -/* 0532CC 800526CC 46005424 */ cvt.w.s $f16, $f10 -/* 0532D0 800526D0 44038000 */ mfc1 $v1, $f16 -/* 0532D4 800526D4 44CFF800 */ ctc1 $t7, $31 -/* 0532D8 800526D8 03231823 */ subu $v1, $t9, $v1 -/* 0532DC 800526DC 04610002 */ bgez $v1, .L800526E8 -/* 0532E0 800526E0 3C0F8012 */ lui $t7, %hi(gCurrentRacerInput) # $t7, 0x8012 -/* 0532E4 800526E4 00001825 */ move $v1, $zero -.L800526E8: -/* 0532E8 800526E8 2861004A */ slti $at, $v1, 0x4a -/* 0532EC 800526EC 14200002 */ bnez $at, .L800526F8 -/* 0532F0 800526F0 00000000 */ nop -/* 0532F4 800526F4 24030049 */ li $v1, 73 -.L800526F8: -/* 0532F8 800526F8 85C60018 */ lh $a2, 0x18($t6) -/* 0532FC 800526FC 00000000 */ nop -/* 053300 80052700 00662023 */ subu $a0, $v1, $a2 -/* 053304 80052704 18800006 */ blez $a0, .L80052720 -/* 053308 80052708 00001825 */ move $v1, $zero -/* 05330C 8005270C 03021823 */ subu $v1, $t8, $v0 -/* 053310 80052710 0083082A */ slt $at, $a0, $v1 -/* 053314 80052714 10200002 */ beqz $at, .L80052720 -/* 053318 80052718 00000000 */ nop -/* 05331C 8005271C 00801825 */ move $v1, $a0 -.L80052720: -/* 053320 80052720 0481000B */ bgez $a0, .L80052750 -/* 053324 80052724 00C34821 */ addu $t1, $a2, $v1 -/* 053328 80052728 8FA20030 */ lw $v0, 0x30($sp) -/* 05332C 8005272C 00000000 */ nop -/* 053330 80052730 00020823 */ negu $at, $v0 -/* 053334 80052734 00014080 */ sll $t0, $at, 2 -/* 053338 80052738 01011823 */ subu $v1, $t0, $at -/* 05333C 8005273C 0064082A */ slt $at, $v1, $a0 -/* 053340 80052740 10200003 */ beqz $at, .L80052750 -/* 053344 80052744 00C34821 */ addu $t1, $a2, $v1 -/* 053348 80052748 00801825 */ move $v1, $a0 -/* 05334C 8005274C 00C34821 */ addu $t1, $a2, $v1 -.L80052750: -/* 053350 80052750 A5490018 */ sh $t1, 0x18($t2) -/* 053354 80052754 A140003B */ sb $zero, 0x3b($t2) -/* 053358 80052758 90A201F3 */ lbu $v0, 0x1f3($a1) -/* 05335C 8005275C 00000000 */ nop -/* 053360 80052760 304C0004 */ andi $t4, $v0, 4 -/* 053364 80052764 11800003 */ beqz $t4, .L80052774 -/* 053368 80052768 304BFFFB */ andi $t3, $v0, 0xfffb -/* 05336C 8005276C A0AD01F2 */ sb $t5, 0x1f2($a1) -/* 053370 80052770 A0AB01F3 */ sb $t3, 0x1f3($a1) -.L80052774: -/* 053374 80052774 C4A4002C */ lwc1 $f4, 0x2c($a1) -/* 053378 80052778 44809000 */ mtc1 $zero, $f18 -/* 05337C 8005277C 460021A1 */ cvt.d.s $f6, $f4 -/* 053380 80052780 4626903C */ c.lt.d $f18, $f6 -/* 053384 80052784 00000000 */ nop -/* 053388 80052788 4500007C */ bc1f .L8005297C -/* 05338C 8005278C 8FBF0024 */ lw $ra, 0x24($sp) -/* 053390 80052790 8DEFD528 */ lw $t7, %lo(gCurrentRacerInput)($t7) -/* 053394 80052794 240E0006 */ li $t6, 6 -/* 053398 80052798 31F94000 */ andi $t9, $t7, 0x4000 -/* 05339C 8005279C 13200077 */ beqz $t9, .L8005297C -/* 0533A0 800527A0 8FBF0024 */ lw $ra, 0x24($sp) -/* 0533A4 800527A4 10000074 */ b .L80052978 -/* 0533A8 800527A8 A0AE01F2 */ sb $t6, 0x1f2($a1) -glabel L800527AC -/* 0533AC 800527AC 90B801F3 */ lbu $t8, 0x1f3($a1) -/* 0533B0 800527B0 8FA40028 */ lw $a0, 0x28($sp) -/* 0533B4 800527B4 33080004 */ andi $t0, $t8, 4 -/* 0533B8 800527B8 11000002 */ beqz $t0, .L800527C4 -/* 0533BC 800527BC 24020002 */ li $v0, 2 -/* 0533C0 800527C0 24020006 */ li $v0, 6 -.L800527C4: -/* 0533C4 800527C4 8FAC0030 */ lw $t4, 0x30($sp) -/* 0533C8 800527C8 24090020 */ li $t1, 32 -/* 0533CC 800527CC 240A0004 */ li $t2, 4 -/* 0533D0 800527D0 AFAA0014 */ sw $t2, 0x14($sp) -/* 0533D4 800527D4 AFA90010 */ sw $t1, 0x10($sp) -/* 0533D8 800527D8 24060002 */ li $a2, 2 -/* 0533DC 800527DC 00003825 */ move $a3, $zero -/* 0533E0 800527E0 AFA20018 */ sw $v0, 0x18($sp) -/* 0533E4 800527E4 AFA5002C */ sw $a1, 0x2c($sp) -/* 0533E8 800527E8 0C014A62 */ jal func_80052988 -/* 0533EC 800527EC AFAC001C */ sw $t4, 0x1c($sp) -/* 0533F0 800527F0 8FA5002C */ lw $a1, 0x2c($sp) -/* 0533F4 800527F4 00000000 */ nop -/* 0533F8 800527F8 90AD01F3 */ lbu $t5, 0x1f3($a1) -/* 0533FC 800527FC 00000000 */ nop -/* 053400 80052800 31ABFFFB */ andi $t3, $t5, 0xfffb -/* 053404 80052804 1000005C */ b .L80052978 -/* 053408 80052808 A0AB01F3 */ sb $t3, 0x1f3($a1) -glabel L8005280C -/* 05340C 8005280C 8FAE0030 */ lw $t6, 0x30($sp) -/* 053410 80052810 8FA40028 */ lw $a0, 0x28($sp) -/* 053414 80052814 240F0020 */ li $t7, 32 -/* 053418 80052818 24190002 */ li $t9, 2 -/* 05341C 8005281C AFB90014 */ sw $t9, 0x14($sp) -/* 053420 80052820 AFAF0010 */ sw $t7, 0x10($sp) -/* 053424 80052824 24060003 */ li $a2, 3 -/* 053428 80052828 00003825 */ move $a3, $zero -/* 05342C 8005282C AFA00018 */ sw $zero, 0x18($sp) -/* 053430 80052830 AFA5002C */ sw $a1, 0x2c($sp) -/* 053434 80052834 0C014A62 */ jal func_80052988 -/* 053438 80052838 AFAE001C */ sw $t6, 0x1c($sp) -/* 05343C 8005283C 8FA5002C */ lw $a1, 0x2c($sp) -/* 053440 80052840 00000000 */ nop -/* 053444 80052844 90B801F3 */ lbu $t8, 0x1f3($a1) -/* 053448 80052848 00000000 */ nop -/* 05344C 8005284C 3308FFF7 */ andi $t0, $t8, 0xfff7 -/* 053450 80052850 10000049 */ b .L80052978 -/* 053454 80052854 A0A801F3 */ sb $t0, 0x1f3($a1) -glabel L80052858 -/* 053458 80052858 3C098012 */ lui $t1, %hi(gCurrentRacerInput) # $t1, 0x8012 -/* 05345C 8005285C 8D29D528 */ lw $t1, %lo(gCurrentRacerInput)($t1) -/* 053460 80052860 8FA40028 */ lw $a0, 0x28($sp) -/* 053464 80052864 312A2000 */ andi $t2, $t1, 0x2000 -/* 053468 80052868 11400002 */ beqz $t2, .L80052874 -/* 05346C 8005286C 24020002 */ li $v0, 2 -/* 053470 80052870 24020006 */ li $v0, 6 -.L80052874: -/* 053474 80052874 8FAB0030 */ lw $t3, 0x30($sp) -/* 053478 80052878 240C0030 */ li $t4, 48 -/* 05347C 8005287C 240D0004 */ li $t5, 4 -/* 053480 80052880 AFAD0014 */ sw $t5, 0x14($sp) -/* 053484 80052884 AFAC0010 */ sw $t4, 0x10($sp) -/* 053488 80052888 24060004 */ li $a2, 4 -/* 05348C 8005288C 00003825 */ move $a3, $zero -/* 053490 80052890 AFA20018 */ sw $v0, 0x18($sp) -/* 053494 80052894 0C014A62 */ jal func_80052988 -/* 053498 80052898 AFAB001C */ sw $t3, 0x1c($sp) -/* 05349C 8005289C 10000037 */ b .L8005297C -/* 0534A0 800528A0 8FBF0024 */ lw $ra, 0x24($sp) -glabel L800528A4 -/* 0534A4 800528A4 C4AA002C */ lwc1 $f10, 0x2c($a1) -/* 0534A8 800528A8 44804800 */ mtc1 $zero, $f9 -/* 0534AC 800528AC 44804000 */ mtc1 $zero, $f8 -/* 0534B0 800528B0 46005421 */ cvt.d.s $f16, $f10 -/* 0534B4 800528B4 4630403C */ c.lt.d $f8, $f16 -/* 0534B8 800528B8 8FA40028 */ lw $a0, 0x28($sp) -/* 0534BC 800528BC 45000008 */ bc1f .L800528E0 -/* 0534C0 800528C0 24020003 */ li $v0, 3 -/* 0534C4 800528C4 3C0F8012 */ lui $t7, %hi(gCurrentRacerInput) # $t7, 0x8012 -/* 0534C8 800528C8 8DEFD528 */ lw $t7, %lo(gCurrentRacerInput)($t7) -/* 0534CC 800528CC 00000000 */ nop -/* 0534D0 800528D0 31F94000 */ andi $t9, $t7, 0x4000 -/* 0534D4 800528D4 13200003 */ beqz $t9, .L800528E4 -/* 0534D8 800528D8 8FA80030 */ lw $t0, 0x30($sp) -/* 0534DC 800528DC 24020007 */ li $v0, 7 -.L800528E0: -/* 0534E0 800528E0 8FA80030 */ lw $t0, 0x30($sp) -.L800528E4: -/* 0534E4 800528E4 240E0050 */ li $t6, 80 -/* 0534E8 800528E8 24180003 */ li $t8, 3 -/* 0534EC 800528EC AFB80014 */ sw $t8, 0x14($sp) -/* 0534F0 800528F0 AFAE0010 */ sw $t6, 0x10($sp) -/* 0534F4 800528F4 24060001 */ li $a2, 1 -/* 0534F8 800528F8 00003825 */ move $a3, $zero -/* 0534FC 800528FC AFA20018 */ sw $v0, 0x18($sp) -/* 053500 80052900 0C014A62 */ jal func_80052988 -/* 053504 80052904 AFA8001C */ sw $t0, 0x1c($sp) -/* 053508 80052908 1000001C */ b .L8005297C -/* 05350C 8005290C 8FBF0024 */ lw $ra, 0x24($sp) -glabel L80052910 -/* 053510 80052910 8FAC0030 */ lw $t4, 0x30($sp) -/* 053514 80052914 8FA40028 */ lw $a0, 0x28($sp) -/* 053518 80052918 24090060 */ li $t1, 96 -/* 05351C 8005291C 240A0004 */ li $t2, 4 -/* 053520 80052920 AFAA0014 */ sw $t2, 0x14($sp) -/* 053524 80052924 AFA90010 */ sw $t1, 0x10($sp) -/* 053528 80052928 24060005 */ li $a2, 5 -/* 05352C 8005292C 00003825 */ move $a3, $zero -/* 053530 80052930 AFA00018 */ sw $zero, 0x18($sp) -/* 053534 80052934 AFA5002C */ sw $a1, 0x2c($sp) -/* 053538 80052938 0C014A62 */ jal func_80052988 -/* 05353C 8005293C AFAC001C */ sw $t4, 0x1c($sp) -/* 053540 80052940 8FA5002C */ lw $a1, 0x2c($sp) -/* 053544 80052944 8FA40028 */ lw $a0, 0x28($sp) -/* 053548 80052948 90AD01F2 */ lbu $t5, 0x1f2($a1) -/* 05354C 8005294C 24060005 */ li $a2, 5 -/* 053550 80052950 15A00009 */ bnez $t5, .L80052978 -/* 053554 80052954 00003825 */ move $a3, $zero -/* 053558 80052958 8FB90030 */ lw $t9, 0x30($sp) -/* 05355C 8005295C 240B0060 */ li $t3, 96 -/* 053560 80052960 240F0004 */ li $t7, 4 -/* 053564 80052964 AFAF0014 */ sw $t7, 0x14($sp) -/* 053568 80052968 AFAB0010 */ sw $t3, 0x10($sp) -/* 05356C 8005296C AFA00018 */ sw $zero, 0x18($sp) -/* 053570 80052970 0C014A62 */ jal func_80052988 -/* 053574 80052974 AFB9001C */ sw $t9, 0x1c($sp) -.L80052978: -glabel L80052978 -/* 053578 80052978 8FBF0024 */ lw $ra, 0x24($sp) -.L8005297C: -/* 05357C 8005297C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 053580 80052980 03E00008 */ jr $ra -/* 053584 80052984 00000000 */ nop - diff --git a/asm/non_matchings/racer/func_80052D7C.s b/asm/non_matchings/racer/func_80052D7C.s deleted file mode 100644 index 3a14e701..00000000 --- a/asm/non_matchings/racer/func_80052D7C.s +++ /dev/null @@ -1,512 +0,0 @@ -.late_rodata -glabel D_800E66F8 -.double 0.87 -glabel D_800E6700 -.double 0.9 -glabel D_800E6708 -.double 0.3 -glabel D_800E6710 -.double 1.6 -glabel D_800E6718 -.double 0.025 -glabel D_800E6720 -.float 0.45 -.word 0 # Padding -glabel D_800E6728 -.double 0.97 -glabel D_800E6730 -.double 0.2 -glabel D_800E6738 -.double 0.2 -glabel D_800E6740 -.double 1.33 -glabel D_800E6748 -.double 0.53 - -.text -glabel func_80052D7C -/* 05397C 80052D7C 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 053980 80052D80 AFBF0024 */ sw $ra, 0x24($sp) -/* 053984 80052D84 AFA40040 */ sw $a0, 0x40($sp) -/* 053988 80052D88 AFA60048 */ sw $a2, 0x48($sp) -/* 05398C 80052D8C AFA7004C */ sw $a3, 0x4c($sp) -/* 053990 80052D90 A3A00033 */ sb $zero, 0x33($sp) -/* 053994 80052D94 90AE01FE */ lbu $t6, 0x1fe($a1) -/* 053998 80052D98 24010001 */ li $at, 1 -/* 05399C 80052D9C 15C10007 */ bne $t6, $at, .L80052DBC -/* 0539A0 80052DA0 00000000 */ nop -/* 0539A4 80052DA4 84AF0000 */ lh $t7, ($a1) -/* 0539A8 80052DA8 2401FFFF */ li $at, -1 -/* 0539AC 80052DAC 15E10003 */ bne $t7, $at, .L80052DBC -/* 0539B0 80052DB0 2418003C */ li $t8, 60 -/* 0539B4 80052DB4 3C018012 */ lui $at, %hi(gCurrentStickY) # $at, 0x8012 -/* 0539B8 80052DB8 AC38D538 */ sw $t8, %lo(gCurrentStickY)($at) -.L80052DBC: -/* 0539BC 80052DBC 90B901F0 */ lbu $t9, 0x1f0($a1) -/* 0539C0 80052DC0 00000000 */ nop -/* 0539C4 80052DC4 13200024 */ beqz $t9, .L80052E58 -/* 0539C8 80052DC8 00000000 */ nop -/* 0539CC 80052DCC 84A80000 */ lh $t0, ($a1) -/* 0539D0 80052DD0 2401FFFF */ li $at, -1 -/* 0539D4 80052DD4 11010004 */ beq $t0, $at, .L80052DE8 -/* 0539D8 80052DD8 3C038012 */ lui $v1, %hi(gCurrentStickX) # $v1, 0x8012 -/* 0539DC 80052DDC 80A301E1 */ lb $v1, 0x1e1($a1) -/* 0539E0 80052DE0 10000004 */ b .L80052DF4 -/* 0539E4 80052DE4 00034880 */ sll $t1, $v1, 2 -.L80052DE8: -/* 0539E8 80052DE8 8C63D534 */ lw $v1, %lo(gCurrentStickX)($v1) -/* 0539EC 80052DEC 00000000 */ nop -/* 0539F0 80052DF0 00034880 */ sll $t1, $v1, 2 -.L80052DF4: -/* 0539F4 80052DF4 8FAA0048 */ lw $t2, 0x48($sp) -/* 0539F8 80052DF8 01234823 */ subu $t1, $t1, $v1 -/* 0539FC 80052DFC 00094840 */ sll $t1, $t1, 1 -/* 053A00 80052E00 012A0019 */ multu $t1, $t2 -/* 053A04 80052E04 84A401A4 */ lh $a0, 0x1a4($a1) -/* 053A08 80052E08 84AE01A0 */ lh $t6, 0x1a0($a1) -/* 053A0C 80052E0C 3082FFFF */ andi $v0, $a0, 0xffff -/* 053A10 80052E10 00021023 */ negu $v0, $v0 -/* 053A14 80052E14 34018001 */ li $at, 32769 -/* 053A18 80052E18 0041082A */ slt $at, $v0, $at -/* 053A1C 80052E1C 00005812 */ mflo $t3 -/* 053A20 80052E20 000B6843 */ sra $t5, $t3, 1 -/* 053A24 80052E24 01CD7823 */ subu $t7, $t6, $t5 -/* 053A28 80052E28 14200004 */ bnez $at, .L80052E3C -/* 053A2C 80052E2C A4AF01A0 */ sh $t7, 0x1a0($a1) -/* 053A30 80052E30 3C01FFFF */ lui $at, (0xFFFF0001 >> 16) # lui $at, 0xffff -/* 053A34 80052E34 34210001 */ ori $at, (0xFFFF0001 & 0xFFFF) # ori $at, $at, 1 -/* 053A38 80052E38 00411021 */ addu $v0, $v0, $at -.L80052E3C: -/* 053A3C 80052E3C 28418000 */ slti $at, $v0, -0x8000 -/* 053A40 80052E40 10200002 */ beqz $at, .L80052E4C -/* 053A44 80052E44 3401FFFF */ li $at, 65535 -/* 053A48 80052E48 00411021 */ addu $v0, $v0, $at -.L80052E4C: -/* 053A4C 80052E4C 0002C0C3 */ sra $t8, $v0, 3 -/* 053A50 80052E50 0098C821 */ addu $t9, $a0, $t8 -/* 053A54 80052E54 A4B901A4 */ sh $t9, 0x1a4($a1) -.L80052E58: -/* 053A58 80052E58 8CA20018 */ lw $v0, 0x18($a1) -/* 053A5C 80052E5C 00000000 */ nop -/* 053A60 80052E60 10400005 */ beqz $v0, .L80052E78 -/* 053A64 80052E64 00402025 */ move $a0, $v0 -/* 053A68 80052E68 0C001223 */ jal func_8000488C -/* 053A6C 80052E6C AFA50044 */ sw $a1, 0x44($sp) -/* 053A70 80052E70 8FA50044 */ lw $a1, 0x44($sp) -/* 053A74 80052E74 00000000 */ nop -.L80052E78: -/* 053A78 80052E78 8CA20010 */ lw $v0, 0x10($a1) -/* 053A7C 80052E7C 00000000 */ nop -/* 053A80 80052E80 10400005 */ beqz $v0, .L80052E98 -/* 053A84 80052E84 00402025 */ move $a0, $v0 -/* 053A88 80052E88 0C001223 */ jal func_8000488C -/* 053A8C 80052E8C AFA50044 */ sw $a1, 0x44($sp) -/* 053A90 80052E90 8FA50044 */ lw $a1, 0x44($sp) -/* 053A94 80052E94 00000000 */ nop -.L80052E98: -/* 053A98 80052E98 8CA20014 */ lw $v0, 0x14($a1) -/* 053A9C 80052E9C 00000000 */ nop -/* 053AA0 80052EA0 10400005 */ beqz $v0, .L80052EB8 -/* 053AA4 80052EA4 00402025 */ move $a0, $v0 -/* 053AA8 80052EA8 0C001223 */ jal func_8000488C -/* 053AAC 80052EAC AFA50044 */ sw $a1, 0x44($sp) -/* 053AB0 80052EB0 8FA50044 */ lw $a1, 0x44($sp) -/* 053AB4 80052EB4 00000000 */ nop -.L80052EB8: -/* 053AB8 80052EB8 90A201FE */ lbu $v0, 0x1fe($a1) -/* 053ABC 80052EBC 24010001 */ li $at, 1 -/* 053AC0 80052EC0 10410003 */ beq $v0, $at, .L80052ED0 -/* 053AC4 80052EC4 24010003 */ li $at, 3 -/* 053AC8 80052EC8 14410004 */ bne $v0, $at, .L80052EDC -/* 053ACC 80052ECC 00000000 */ nop -.L80052ED0: -/* 053AD0 80052ED0 80A801E1 */ lb $t0, 0x1e1($a1) -/* 053AD4 80052ED4 00000000 */ nop -/* 053AD8 80052ED8 A0A801E8 */ sb $t0, 0x1e8($a1) -.L80052EDC: -/* 053ADC 80052EDC C4A600C0 */ lwc1 $f6, 0xc0($a1) -/* 053AE0 80052EE0 44802800 */ mtc1 $zero, $f5 -/* 053AE4 80052EE4 44802000 */ mtc1 $zero, $f4 -/* 053AE8 80052EE8 46003221 */ cvt.d.s $f8, $f6 -/* 053AEC 80052EEC 46282032 */ c.eq.d $f4, $f8 -/* 053AF0 80052EF0 00000000 */ nop -/* 053AF4 80052EF4 45010063 */ bc1t .L80053084 -/* 053AF8 80052EF8 00000000 */ nop -/* 053AFC 80052EFC 8FA90040 */ lw $t1, 0x40($sp) -/* 053B00 80052F00 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 053B04 80052F04 C52A0020 */ lwc1 $f10, 0x20($t1) -/* 053B08 80052F08 44818800 */ mtc1 $at, $f17 -/* 053B0C 80052F0C 44808000 */ mtc1 $zero, $f16 -/* 053B10 80052F10 46005021 */ cvt.d.s $f0, $f10 -/* 053B14 80052F14 4620803C */ c.lt.d $f16, $f0 -/* 053B18 80052F18 44803000 */ mtc1 $zero, $f6 -/* 053B1C 80052F1C 45000006 */ bc1f .L80052F38 -/* 053B20 80052F20 240F0001 */ li $t7, 1 -/* 053B24 80052F24 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 053B28 80052F28 44819000 */ mtc1 $at, $f18 -/* 053B2C 80052F2C 00000000 */ nop -/* 053B30 80052F30 E5320020 */ swc1 $f18, 0x20($t1) -/* 053B34 80052F34 46009021 */ cvt.d.s $f0, $f18 -.L80052F38: -/* 053B38 80052F38 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 053B3C 80052F3C 44813800 */ mtc1 $at, $f7 -/* 053B40 80052F40 8FAA0040 */ lw $t2, 0x40($sp) -/* 053B44 80052F44 4626003C */ c.lt.d $f0, $f6 -/* 053B48 80052F48 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 053B4C 80052F4C 45000004 */ bc1f .L80052F60 -/* 053B50 80052F50 3C0D8012 */ lui $t5, %hi(gCurrentStickY) # $t5, 0x8012 -/* 053B54 80052F54 44812000 */ mtc1 $at, $f4 -/* 053B58 80052F58 00000000 */ nop -/* 053B5C 80052F5C E5440020 */ swc1 $f4, 0x20($t2) -.L80052F60: -/* 053B60 80052F60 80AB01E1 */ lb $t3, 0x1e1($a1) -/* 053B64 80052F64 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 053B68 80052F68 A0AB01E8 */ sb $t3, 0x1e8($a1) -/* 053B6C 80052F6C 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 053B70 80052F70 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 053B74 80052F74 304C8000 */ andi $t4, $v0, 0x8000 -/* 053B78 80052F78 1180000C */ beqz $t4, .L80052FAC -/* 053B7C 80052F7C 304E4000 */ andi $t6, $v0, 0x4000 -/* 053B80 80052F80 C4A8002C */ lwc1 $f8, 0x2c($a1) -/* 053B84 80052F84 44818800 */ mtc1 $at, $f17 -/* 053B88 80052F88 44808000 */ mtc1 $zero, $f16 -/* 053B8C 80052F8C 460042A1 */ cvt.d.s $f10, $f8 -/* 053B90 80052F90 46305481 */ sub.d $f18, $f10, $f16 -/* 053B94 80052F94 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 053B98 80052F98 462091A0 */ cvt.s.d $f6, $f18 -/* 053B9C 80052F9C E4A6002C */ swc1 $f6, 0x2c($a1) -/* 053BA0 80052FA0 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 053BA4 80052FA4 00000000 */ nop -/* 053BA8 80052FA8 304E4000 */ andi $t6, $v0, 0x4000 -.L80052FAC: -/* 053BAC 80052FAC 11C0000E */ beqz $t6, .L80052FE8 -/* 053BB0 80052FB0 00000000 */ nop -/* 053BB4 80052FB4 8DADD538 */ lw $t5, %lo(gCurrentStickY)($t5) -/* 053BB8 80052FB8 00000000 */ nop -/* 053BBC 80052FBC 29A1FFE7 */ slti $at, $t5, -0x19 -/* 053BC0 80052FC0 10200009 */ beqz $at, .L80052FE8 -/* 053BC4 80052FC4 00000000 */ nop -/* 053BC8 80052FC8 C4A4002C */ lwc1 $f4, 0x2c($a1) -/* 053BCC 80052FCC 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 053BD0 80052FD0 44815800 */ mtc1 $at, $f11 -/* 053BD4 80052FD4 44805000 */ mtc1 $zero, $f10 -/* 053BD8 80052FD8 46002221 */ cvt.d.s $f8, $f4 -/* 053BDC 80052FDC 462A4400 */ add.d $f16, $f8, $f10 -/* 053BE0 80052FE0 462084A0 */ cvt.s.d $f18, $f16 -/* 053BE4 80052FE4 E4B2002C */ swc1 $f18, 0x2c($a1) -.L80052FE8: -/* 053BE8 80052FE8 3C01800E */ lui $at, %hi(D_800E66F8 + 4) # $at, 0x800e -/* 053BEC 80052FEC A3AF0033 */ sb $t7, 0x33($sp) -/* 053BF0 80052FF0 C4A60030 */ lwc1 $f6, 0x30($a1) -/* 053BF4 80052FF4 C42166F8 */ lwc1 $f1, %lo(D_800E66F8)($at) -/* 053BF8 80052FF8 C42066FC */ lwc1 $f0, %lo(D_800E66F8 + 4)($at) -/* 053BFC 80052FFC 46003121 */ cvt.d.s $f4, $f6 -/* 053C00 80053000 46202202 */ mul.d $f8, $f4, $f0 -/* 053C04 80053004 C4B0002C */ lwc1 $f16, 0x2c($a1) -/* 053C08 80053008 3C01800E */ lui $at, %hi(D_800E6700) # $at, 0x800e -/* 053C0C 8005300C 460084A1 */ cvt.d.s $f18, $f16 -/* 053C10 80053010 3C088012 */ lui $t0, %hi(gCurrentStickX) # $t0, 0x8012 -/* 053C14 80053014 46209182 */ mul.d $f6, $f18, $f0 -/* 053C18 80053018 462042A0 */ cvt.s.d $f10, $f8 -/* 053C1C 8005301C 3C078012 */ lui $a3, %hi(D_8011D504) # $a3, 0x8012 -/* 053C20 80053020 E4AA0030 */ swc1 $f10, 0x30($a1) -/* 053C24 80053024 3C068012 */ lui $a2, %hi(D_8011D4F8) # $a2, 0x8012 -/* 053C28 80053028 46203120 */ cvt.s.d $f4, $f6 -/* 053C2C 8005302C 24C6D4F8 */ addiu $a2, %lo(D_8011D4F8) # addiu $a2, $a2, -0x2b08 -/* 053C30 80053030 E4A4002C */ swc1 $f4, 0x2c($a1) -/* 053C34 80053034 8FA40040 */ lw $a0, 0x40($sp) -/* 053C38 80053038 C4306704 */ lwc1 $f16, %lo(D_800E6700 + 4)($at) -/* 053C3C 8005303C C4880020 */ lwc1 $f8, 0x20($a0) -/* 053C40 80053040 C4316700 */ lwc1 $f17, %lo(D_800E6700)($at) -/* 053C44 80053044 460042A1 */ cvt.d.s $f10, $f8 -/* 053C48 80053048 46305482 */ mul.d $f18, $f10, $f16 -/* 053C4C 8005304C 3C0140C0 */ li $at, 0x40C00000 # 6.000000 -/* 053C50 80053050 44812000 */ mtc1 $at, $f4 -/* 053C54 80053054 462091A0 */ cvt.s.d $f6, $f18 -/* 053C58 80053058 E4860020 */ swc1 $f6, 0x20($a0) -/* 053C5C 8005305C 8D08D534 */ lw $t0, %lo(gCurrentStickX)($t0) -/* 053C60 80053060 8FB90048 */ lw $t9, 0x48($sp) -/* 053C64 80053064 80E7D504 */ lb $a3, %lo(D_8011D504)($a3) -/* 053C68 80053068 AFA50044 */ sw $a1, 0x44($sp) -/* 053C6C 8005306C E7A40018 */ swc1 $f4, 0x18($sp) -/* 053C70 80053070 AFA80014 */ sw $t0, 0x14($sp) -/* 053C74 80053074 0C012538 */ jal func_800494E0 -/* 053C78 80053078 AFB90010 */ sw $t9, 0x10($sp) -/* 053C7C 8005307C 8FA50044 */ lw $a1, 0x44($sp) -/* 053C80 80053080 00000000 */ nop -.L80053084: -/* 053C84 80053084 84A90000 */ lh $t1, ($a1) -/* 053C88 80053088 2401FFFF */ li $at, -1 -/* 053C8C 8005308C 15210004 */ bne $t1, $at, .L800530A0 -/* 053C90 80053090 3C068012 */ lui $a2, %hi(gCurrentCarSteerVel) # $a2, 0x8012 -/* 053C94 80053094 80AA01E1 */ lb $t2, 0x1e1($a1) -/* 053C98 80053098 00000000 */ nop -/* 053C9C 8005309C A0AA01E8 */ sb $t2, 0x1e8($a1) -.L800530A0: -/* 053CA0 800530A0 80A201D3 */ lb $v0, 0x1d3($a1) -/* 053CA4 800530A4 3C01800E */ lui $at, %hi(D_800E6708 + 4) # $at, 0x800e -/* 053CA8 800530A8 18400006 */ blez $v0, .L800530C4 -/* 053CAC 800530AC 24C6D554 */ addiu $a2, %lo(gCurrentCarSteerVel) # addiu $a2, $a2, -0x2aac -/* 053CB0 800530B0 8FAB0048 */ lw $t3, 0x48($sp) -/* 053CB4 800530B4 00000000 */ nop -/* 053CB8 800530B8 004B6023 */ subu $t4, $v0, $t3 -/* 053CBC 800530BC 10000002 */ b .L800530C8 -/* 053CC0 800530C0 A0AC01D3 */ sb $t4, 0x1d3($a1) -.L800530C4: -/* 053CC4 800530C4 A0A001D3 */ sb $zero, 0x1d3($a1) -.L800530C8: -/* 053CC8 800530C8 C4AA002C */ lwc1 $f10, 0x2c($a1) -/* 053CCC 800530CC 80A201E8 */ lb $v0, 0x1e8($a1) -/* 053CD0 800530D0 C4296708 */ lwc1 $f9, %lo(D_800E6708)($at) -/* 053CD4 800530D4 C428670C */ lwc1 $f8, %lo(D_800E6708 + 4)($at) -/* 053CD8 800530D8 46005421 */ cvt.d.s $f16, $f10 -/* 053CDC 800530DC 4630403C */ c.lt.d $f8, $f16 -/* 053CE0 800530E0 00027080 */ sll $t6, $v0, 2 -/* 053CE4 800530E4 01C27023 */ subu $t6, $t6, $v0 -/* 053CE8 800530E8 45000007 */ bc1f .L80053108 -/* 053CEC 800530EC 000E1040 */ sll $v0, $t6, 1 -/* 053CF0 800530F0 80A201E1 */ lb $v0, 0x1e1($a1) -/* 053CF4 800530F4 00000000 */ nop -/* 053CF8 800530F8 00021023 */ negu $v0, $v0 -/* 053CFC 800530FC 00026880 */ sll $t5, $v0, 2 -/* 053D00 80053100 01A26823 */ subu $t5, $t5, $v0 -/* 053D04 80053104 000D1040 */ sll $v0, $t5, 1 -.L80053108: -/* 053D08 80053108 84AF01A0 */ lh $t7, 0x1a0($a1) -/* 053D0C 8005310C 8CA80110 */ lw $t0, 0x110($a1) -/* 053D10 80053110 01E2C823 */ subu $t9, $t7, $v0 -/* 053D14 80053114 A4B901A0 */ sh $t9, 0x1a0($a1) -/* 053D18 80053118 ACC80000 */ sw $t0, ($a2) -/* 053D1C 8005311C 80A901D3 */ lb $t1, 0x1d3($a1) -/* 053D20 80053120 3C01C034 */ li $at, 0xC0340000 # -2.812500 -/* 053D24 80053124 1120000F */ beqz $t1, .L80053164 -/* 053D28 80053128 3C038012 */ lui $v1, %hi(gCurrentStickY) # $v1, 0x8012 -/* 053D2C 8005312C C4B2002C */ lwc1 $f18, 0x2c($a1) -/* 053D30 80053130 44813800 */ mtc1 $at, $f7 -/* 053D34 80053134 44803000 */ mtc1 $zero, $f6 -/* 053D38 80053138 46009021 */ cvt.d.s $f0, $f18 -/* 053D3C 8005313C 4620303C */ c.lt.d $f6, $f0 -/* 053D40 80053140 3C01800E */ lui $at, %hi(D_800E6710 + 4) # $at, 0x800e -/* 053D44 80053144 45000007 */ bc1f .L80053164 -/* 053D48 80053148 00000000 */ nop -/* 053D4C 8005314C C4256710 */ lwc1 $f5, %lo(D_800E6710)($at) -/* 053D50 80053150 C4246714 */ lwc1 $f4, %lo(D_800E6710 + 4)($at) -/* 053D54 80053154 00000000 */ nop -/* 053D58 80053158 46240281 */ sub.d $f10, $f0, $f4 -/* 053D5C 8005315C 46205220 */ cvt.s.d $f8, $f10 -/* 053D60 80053160 E4A8002C */ swc1 $f8, 0x2c($a1) -.L80053164: -/* 053D64 80053164 8C63D538 */ lw $v1, %lo(gCurrentStickY)($v1) -/* 053D68 80053168 8FAA0040 */ lw $t2, 0x40($sp) -/* 053D6C 8005316C 28610032 */ slti $at, $v1, 0x32 -/* 053D70 80053170 10200004 */ beqz $at, .L80053184 -/* 053D74 80053174 2861FFCF */ slti $at, $v1, -0x31 -/* 053D78 80053178 14200002 */ bnez $at, .L80053184 -/* 053D7C 8005317C 00000000 */ nop -/* 053D80 80053180 00001825 */ move $v1, $zero -.L80053184: -/* 053D84 80053184 3C01800E */ lui $at, %hi(D_800E6718 + 4) # $at, 0x800e -/* 053D88 80053188 C5500020 */ lwc1 $f16, 0x20($t2) -/* 053D8C 8005318C C4336718 */ lwc1 $f19, %lo(D_800E6718)($at) -/* 053D90 80053190 C432671C */ lwc1 $f18, %lo(D_800E6718 + 4)($at) -/* 053D94 80053194 46008021 */ cvt.d.s $f0, $f16 -/* 053D98 80053198 46320182 */ mul.d $f6, $f0, $f18 -/* 053D9C 8005319C C7A4004C */ lwc1 $f4, 0x4c($sp) -/* 053DA0 800531A0 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 -/* 053DA4 800531A4 460022A1 */ cvt.d.s $f10, $f4 -/* 053DA8 800531A8 462A3202 */ mul.d $f8, $f6, $f10 -/* 053DAC 800531AC 46280401 */ sub.d $f16, $f0, $f8 -/* 053DB0 800531B0 462084A0 */ cvt.s.d $f18, $f16 -/* 053DB4 800531B4 E5520020 */ swc1 $f18, 0x20($t2) -/* 053DB8 800531B8 90AB01F1 */ lbu $t3, 0x1f1($a1) -/* 053DBC 800531BC C422D56C */ lwc1 $f2, %lo(D_8011D56C)($at) -/* 053DC0 800531C0 15600005 */ bnez $t3, .L800531D8 -/* 053DC4 800531C4 3C01800E */ lui $at, %hi(D_800E6720) # $at, 0x800e -/* 053DC8 800531C8 90AC01F0 */ lbu $t4, 0x1f0($a1) -/* 053DCC 800531CC 00000000 */ nop -/* 053DD0 800531D0 11800010 */ beqz $t4, .L80053214 -/* 053DD4 800531D4 00000000 */ nop -.L800531D8: -/* 053DD8 800531D8 8FAD0048 */ lw $t5, 0x48($sp) -/* 053DDC 800531DC 84AE0160 */ lh $t6, 0x160($a1) -/* 053DE0 800531E0 000D7880 */ sll $t7, $t5, 2 -/* 053DE4 800531E4 01ED7821 */ addu $t7, $t7, $t5 -/* 053DE8 800531E8 000F7A00 */ sll $t7, $t7, 8 -/* 053DEC 800531EC C4226720 */ lwc1 $f2, %lo(D_800E6720)($at) -/* 053DF0 800531F0 01CFC021 */ addu $t8, $t6, $t7 -/* 053DF4 800531F4 A4B80160 */ sh $t8, 0x160($a1) -/* 053DF8 800531F8 8FA80048 */ lw $t0, 0x48($sp) -/* 053DFC 800531FC 84B90162 */ lh $t9, 0x162($a1) -/* 053E00 80053200 00084880 */ sll $t1, $t0, 2 -/* 053E04 80053204 01284823 */ subu $t1, $t1, $t0 -/* 053E08 80053208 00094A40 */ sll $t1, $t1, 9 -/* 053E0C 8005320C 03295021 */ addu $t2, $t9, $t1 -/* 053E10 80053210 A4AA0162 */ sh $t2, 0x162($a1) -.L80053214: -/* 053E14 80053214 90A201FE */ lbu $v0, 0x1fe($a1) -/* 053E18 80053218 24010001 */ li $at, 1 -/* 053E1C 8005321C 10410002 */ beq $v0, $at, .L80053228 -/* 053E20 80053220 24010003 */ li $at, 3 -/* 053E24 80053224 14410023 */ bne $v0, $at, .L800532B4 -.L80053228: -/* 053E28 80053228 3C01800E */ lui $at, %hi(D_800E6728 + 4) # $at, 0x800e -/* 053E2C 8005322C C4A40030 */ lwc1 $f4, 0x30($a1) -/* 053E30 80053230 C4216728 */ lwc1 $f1, %lo(D_800E6728)($at) -/* 053E34 80053234 C420672C */ lwc1 $f0, %lo(D_800E6728 + 4)($at) -/* 053E38 80053238 460021A1 */ cvt.d.s $f6, $f4 -/* 053E3C 8005323C 46203282 */ mul.d $f10, $f6, $f0 -/* 053E40 80053240 C4B0002C */ lwc1 $f16, 0x2c($a1) -/* 053E44 80053244 28610033 */ slti $at, $v1, 0x33 -/* 053E48 80053248 460084A1 */ cvt.d.s $f18, $f16 -/* 053E4C 8005324C 240B0001 */ li $t3, 1 -/* 053E50 80053250 46209102 */ mul.d $f4, $f18, $f0 -/* 053E54 80053254 46205220 */ cvt.s.d $f8, $f10 -/* 053E58 80053258 E4A80030 */ swc1 $f8, 0x30($a1) -/* 053E5C 8005325C 462021A0 */ cvt.s.d $f6, $f4 -/* 053E60 80053260 E4A6002C */ swc1 $f6, 0x2c($a1) -/* 053E64 80053264 14200009 */ bnez $at, .L8005328C -/* 053E68 80053268 A3AB0033 */ sb $t3, 0x33($sp) -/* 053E6C 8005326C 3C01800E */ lui $at, %hi(D_800E6730 + 4) # $at, 0x800e -/* 053E70 80053270 C4AA002C */ lwc1 $f10, 0x2c($a1) -/* 053E74 80053274 C4316730 */ lwc1 $f17, %lo(D_800E6730)($at) -/* 053E78 80053278 C4306734 */ lwc1 $f16, %lo(D_800E6730 + 4)($at) -/* 053E7C 8005327C 46005221 */ cvt.d.s $f8, $f10 -/* 053E80 80053280 46304481 */ sub.d $f18, $f8, $f16 -/* 053E84 80053284 46209120 */ cvt.s.d $f4, $f18 -/* 053E88 80053288 E4A4002C */ swc1 $f4, 0x2c($a1) -.L8005328C: -/* 053E8C 8005328C 2861FFCE */ slti $at, $v1, -0x32 -/* 053E90 80053290 10200008 */ beqz $at, .L800532B4 -/* 053E94 80053294 3C01800E */ lui $at, %hi(D_800E6738 + 4) # $at, 0x800e -/* 053E98 80053298 C4A6002C */ lwc1 $f6, 0x2c($a1) -/* 053E9C 8005329C C4296738 */ lwc1 $f9, %lo(D_800E6738)($at) -/* 053EA0 800532A0 C428673C */ lwc1 $f8, %lo(D_800E6738 + 4)($at) -/* 053EA4 800532A4 460032A1 */ cvt.d.s $f10, $f6 -/* 053EA8 800532A8 46285400 */ add.d $f16, $f10, $f8 -/* 053EAC 800532AC 462084A0 */ cvt.s.d $f18, $f16 -/* 053EB0 800532B0 E4B2002C */ swc1 $f18, 0x2c($a1) -.L800532B4: -/* 053EB4 800532B4 83AC0033 */ lb $t4, 0x33($sp) -/* 053EB8 800532B8 8FAD0040 */ lw $t5, 0x40($sp) -/* 053EBC 800532BC 11800015 */ beqz $t4, .L80053314 -/* 053EC0 800532C0 28610033 */ slti $at, $v1, 0x33 -/* 053EC4 800532C4 ADA00074 */ sw $zero, 0x74($t5) -/* 053EC8 800532C8 A0A001E6 */ sb $zero, 0x1e6($a1) -/* 053ECC 800532CC 8FAE0048 */ lw $t6, 0x48($sp) -/* 053ED0 800532D0 8CA2010C */ lw $v0, 0x10c($a1) -/* 053ED4 800532D4 00A02025 */ move $a0, $a1 -/* 053ED8 800532D8 004E0019 */ multu $v0, $t6 -/* 053EDC 800532DC 00007812 */ mflo $t7 -/* 053EE0 800532E0 000FC103 */ sra $t8, $t7, 4 -/* 053EE4 800532E4 00584023 */ subu $t0, $v0, $t8 -/* 053EE8 800532E8 ACA8010C */ sw $t0, 0x10c($a1) -/* 053EEC 800532EC ACC00000 */ sw $zero, ($a2) -/* 053EF0 800532F0 E7A2002C */ swc1 $f2, 0x2c($sp) -/* 053EF4 800532F4 AFA50044 */ sw $a1, 0x44($sp) -/* 053EF8 800532F8 0C014D1E */ jal handle_car_steering -/* 053EFC 800532FC AFA30038 */ sw $v1, 0x38($sp) -/* 053F00 80053300 8FA30038 */ lw $v1, 0x38($sp) -/* 053F04 80053304 8FA50044 */ lw $a1, 0x44($sp) -/* 053F08 80053308 C7A2002C */ lwc1 $f2, 0x2c($sp) -/* 053F0C 8005330C 10000011 */ b .L80053354 -/* 053F10 80053310 80B901D3 */ lb $t9, 0x1d3($a1) -.L80053314: -/* 053F14 80053314 14200006 */ bnez $at, .L80053330 -/* 053F18 80053318 3C01800E */ lui $at, %hi(D_800E6740 + 4) # $at, 0x800e -/* 053F1C 8005331C C4276740 */ lwc1 $f7, %lo(D_800E6740)($at) -/* 053F20 80053320 C4266744 */ lwc1 $f6, %lo(D_800E6740 + 4)($at) -/* 053F24 80053324 46001121 */ cvt.d.s $f4, $f2 -/* 053F28 80053328 46262282 */ mul.d $f10, $f4, $f6 -/* 053F2C 8005332C 462050A0 */ cvt.s.d $f2, $f10 -.L80053330: -/* 053F30 80053330 2861FFCE */ slti $at, $v1, -0x32 -/* 053F34 80053334 10200006 */ beqz $at, .L80053350 -/* 053F38 80053338 3C01800E */ lui $at, %hi(D_800E6748 + 4) # $at, 0x800e -/* 053F3C 8005333C C4316748 */ lwc1 $f17, %lo(D_800E6748)($at) -/* 053F40 80053340 C430674C */ lwc1 $f16, %lo(D_800E6748 + 4)($at) -/* 053F44 80053344 46001221 */ cvt.d.s $f8, $f2 -/* 053F48 80053348 46304482 */ mul.d $f18, $f8, $f16 -/* 053F4C 8005334C 462090A0 */ cvt.s.d $f2, $f18 -.L80053350: -/* 053F50 80053350 80B901D3 */ lb $t9, 0x1d3($a1) -.L80053354: -/* 053F54 80053354 00031823 */ negu $v1, $v1 -/* 053F58 80053358 13200007 */ beqz $t9, .L80053378 -/* 053F5C 8005335C 00034980 */ sll $t1, $v1, 6 -/* 053F60 80053360 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 053F64 80053364 44813800 */ mtc1 $at, $f7 -/* 053F68 80053368 44803000 */ mtc1 $zero, $f6 -/* 053F6C 8005336C 46001121 */ cvt.d.s $f4, $f2 -/* 053F70 80053370 46262282 */ mul.d $f10, $f4, $f6 -/* 053F74 80053374 462050A0 */ cvt.s.d $f2, $f10 -.L80053378: -/* 053F78 80053378 8FAB0040 */ lw $t3, 0x40($sp) -/* 053F7C 8005337C 312AFFFF */ andi $t2, $t1, 0xffff -/* 053F80 80053380 85640002 */ lh $a0, 2($t3) -/* 053F84 80053384 34018001 */ li $at, 32769 -/* 053F88 80053388 308CFFFF */ andi $t4, $a0, 0xffff -/* 053F8C 8005338C 014C1023 */ subu $v0, $t2, $t4 -/* 053F90 80053390 0041082A */ slt $at, $v0, $at -/* 053F94 80053394 14200003 */ bnez $at, .L800533A4 -/* 053F98 80053398 3C01FFFF */ lui $at, (0xFFFF0001 >> 16) # lui $at, 0xffff -/* 053F9C 8005339C 34210001 */ ori $at, (0xFFFF0001 & 0xFFFF) # ori $at, $at, 1 -/* 053FA0 800533A0 00411021 */ addu $v0, $v0, $at -.L800533A4: -/* 053FA4 800533A4 28418000 */ slti $at, $v0, -0x8000 -/* 053FA8 800533A8 10200002 */ beqz $at, .L800533B4 -/* 053FAC 800533AC 3401FFFF */ li $at, 65535 -/* 053FB0 800533B0 00411021 */ addu $v0, $v0, $at -.L800533B4: -/* 053FB4 800533B4 8FAF0040 */ lw $t7, 0x40($sp) -/* 053FB8 800533B8 000268C3 */ sra $t5, $v0, 3 -/* 053FBC 800533BC 008D7021 */ addu $t6, $a0, $t5 -/* 053FC0 800533C0 A5EE0002 */ sh $t6, 2($t7) -/* 053FC4 800533C4 C7B0004C */ lwc1 $f16, 0x4c($sp) -/* 053FC8 800533C8 C5E80020 */ lwc1 $f8, 0x20($t7) -/* 053FCC 800533CC 46101482 */ mul.s $f18, $f2, $f16 -/* 053FD0 800533D0 44803800 */ mtc1 $zero, $f7 -/* 053FD4 800533D4 44803000 */ mtc1 $zero, $f6 -/* 053FD8 800533D8 3C014034 */ li $at, 0x40340000 # 2.812500 -/* 053FDC 800533DC 46124101 */ sub.s $f4, $f8, $f18 -/* 053FE0 800533E0 E5E40020 */ swc1 $f4, 0x20($t7) -/* 053FE4 800533E4 C4AA00C0 */ lwc1 $f10, 0xc0($a1) -/* 053FE8 800533E8 00000000 */ nop -/* 053FEC 800533EC 46005421 */ cvt.d.s $f16, $f10 -/* 053FF0 800533F0 46303032 */ c.eq.d $f6, $f16 -/* 053FF4 800533F4 00000000 */ nop -/* 053FF8 800533F8 45000019 */ bc1f .L80053460 -/* 053FFC 800533FC 8FA80040 */ lw $t0, 0x40($sp) -/* 054000 80053400 44815800 */ mtc1 $at, $f11 -/* 054004 80053404 44805000 */ mtc1 $zero, $f10 -/* 054008 80053408 46002207 */ neg.s $f8, $f4 -/* 05400C 8005340C 460044A1 */ cvt.d.s $f18, $f8 -/* 054010 80053410 462A9182 */ mul.d $f6, $f18, $f10 -/* 054014 80053414 4458F800 */ cfc1 $t8, $31 -/* 054018 80053418 00000000 */ nop -/* 05401C 8005341C 37010003 */ ori $at, $t8, 3 -/* 054020 80053420 38210002 */ xori $at, $at, 2 -/* 054024 80053424 44C1F800 */ ctc1 $at, $31 -/* 054028 80053428 00000000 */ nop -/* 05402C 8005342C 46203424 */ cvt.w.d $f16, $f6 -/* 054030 80053430 44038000 */ mfc1 $v1, $f16 -/* 054034 80053434 44D8F800 */ ctc1 $t8, $31 -/* 054038 80053438 28610032 */ slti $at, $v1, 0x32 -/* 05403C 8005343C 10200003 */ beqz $at, .L8005344C -/* 054040 80053440 28610080 */ slti $at, $v1, 0x80 -/* 054044 80053444 24030032 */ li $v1, 50 -/* 054048 80053448 28610080 */ slti $at, $v1, 0x80 -.L8005344C: -/* 05404C 8005344C 14200002 */ bnez $at, .L80053458 -/* 054050 80053450 00000000 */ nop -/* 054054 80053454 2403007F */ li $v1, 127 -.L80053458: -/* 054058 80053458 A0A301E0 */ sb $v1, 0x1e0($a1) -/* 05405C 8005345C 8FA80040 */ lw $t0, 0x40($sp) -.L80053460: -/* 054060 80053460 00000000 */ nop -/* 054064 80053464 AD000074 */ sw $zero, 0x74($t0) -/* 054068 80053468 8FBF0024 */ lw $ra, 0x24($sp) -/* 05406C 8005346C 27BD0040 */ addiu $sp, $sp, 0x40 -/* 054070 80053470 03E00008 */ jr $ra -/* 054074 80053474 00000000 */ nop - diff --git a/asm/non_matchings/racer/func_8005492C.s b/asm/non_matchings/racer/func_8005492C.s deleted file mode 100644 index fb0dd1d0..00000000 --- a/asm/non_matchings/racer/func_8005492C.s +++ /dev/null @@ -1,478 +0,0 @@ -.late_rodata -glabel D_800E67E8 -.double -0.3 -glabel D_800E67F0 -.double 0.3 -glabel D_800E67F8 -.double 0.9 -glabel D_800E6800 -.float 0.02 -.word 0 # Padding -glabel D_800E6808 -.double 1.7 -glabel D_800E6810 -.double 0.15 -glabel D_800E6818 -.double 0.32 -glabel D_800E6820 -.double -0.04 -glabel D_800E6828 -.double 0.04 -glabel D_800E6830 -.double 0.9 - -.text -glabel func_8005492C -/* 05552C 8005492C 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 055530 80054930 AFBF0014 */ sw $ra, 0x14($sp) -/* 055534 80054934 AFA40048 */ sw $a0, 0x48($sp) -/* 055538 80054938 AFA60050 */ sw $a2, 0x50($sp) -/* 05553C 8005493C AFA70054 */ sw $a3, 0x54($sp) -/* 055540 80054940 44809000 */ mtc1 $zero, $f18 -/* 055544 80054944 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 055548 80054948 00803825 */ move $a3, $a0 -/* 05554C 8005494C 4612603C */ c.lt.s $f12, $f18 -/* 055550 80054950 460C6082 */ mul.s $f2, $f12, $f12 -/* 055554 80054954 E4B20084 */ swc1 $f18, 0x84($a1) -/* 055558 80054958 45000002 */ bc1f .L80054964 -/* 05555C 8005495C E4B20088 */ swc1 $f18, 0x88($a1) -/* 055560 80054960 46001087 */ neg.s $f2, $f2 -.L80054964: -/* 055564 80054964 AFA00038 */ sw $zero, 0x38($sp) -/* 055568 80054968 00E02025 */ move $a0, $a3 -/* 05556C 8005496C AFA5004C */ sw $a1, 0x4c($sp) -/* 055570 80054970 AFA70048 */ sw $a3, 0x48($sp) -/* 055574 80054974 0C015C88 */ jal handle_racer_top_speed -/* 055578 80054978 E7A20030 */ swc1 $f2, 0x30($sp) -/* 05557C 8005497C 8FA5004C */ lw $a1, 0x4c($sp) -/* 055580 80054980 E7A00018 */ swc1 $f0, 0x18($sp) -/* 055584 80054984 84A201A2 */ lh $v0, 0x1a2($a1) -/* 055588 80054988 8FA70048 */ lw $a3, 0x48($sp) -/* 05558C 8005498C C7A20030 */ lwc1 $f2, 0x30($sp) -/* 055590 80054990 28411C01 */ slti $at, $v0, 0x1c01 -/* 055594 80054994 10200003 */ beqz $at, .L800549A4 -/* 055598 80054998 3C048012 */ lui $a0, %hi(gCurrentStickX) # $a0, 0x8012 -/* 05559C 8005499C 2841E400 */ slti $at, $v0, -0x1c00 -/* 0555A0 800549A0 10200002 */ beqz $at, .L800549AC -.L800549A4: -/* 0555A4 800549A4 240E0001 */ li $t6, 1 -/* 0555A8 800549A8 AFAE0038 */ sw $t6, 0x38($sp) -.L800549AC: -/* 0555AC 800549AC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 0555B0 800549B0 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 0555B4 800549B4 8C84D534 */ lw $a0, %lo(gCurrentStickX)($a0) -/* 0555B8 800549B8 304F4000 */ andi $t7, $v0, 0x4000 -/* 0555BC 800549BC 24030006 */ li $v1, 6 -/* 0555C0 800549C0 11E00002 */ beqz $t7, .L800549CC -/* 0555C4 800549C4 01E01025 */ move $v0, $t7 -/* 0555C8 800549C8 2403000C */ li $v1, 12 -.L800549CC: -/* 0555CC 800549CC 10400006 */ beqz $v0, .L800549E8 -/* 0555D0 800549D0 3C01800E */ lui $at, %hi(D_800E67E8 + 4) # $at, 0x800e -/* 0555D4 800549D4 80B801E6 */ lb $t8, 0x1e6($a1) -/* 0555D8 800549D8 00000000 */ nop -/* 0555DC 800549DC 13000002 */ beqz $t8, .L800549E8 -/* 0555E0 800549E0 00000000 */ nop -/* 0555E4 800549E4 24030012 */ li $v1, 18 -.L800549E8: -/* 0555E8 800549E8 C4A4002C */ lwc1 $f4, 0x2c($a1) -/* 0555EC 800549EC C42767E8 */ lwc1 $f7, %lo(D_800E67E8)($at) -/* 0555F0 800549F0 C42667EC */ lwc1 $f6, %lo(D_800E67E8 + 4)($at) -/* 0555F4 800549F4 46002021 */ cvt.d.s $f0, $f4 -/* 0555F8 800549F8 4626003C */ c.lt.d $f0, $f6 -/* 0555FC 800549FC 00001025 */ move $v0, $zero -/* 055600 80054A00 45000005 */ bc1f .L80054A18 -/* 055604 80054A04 3C01800E */ lui $at, %hi(D_800E67F0 + 4) # $at, 0x800e -/* 055608 80054A08 00830019 */ multu $a0, $v1 -/* 05560C 80054A0C 00001012 */ mflo $v0 -/* 055610 80054A10 00000000 */ nop -/* 055614 80054A14 00000000 */ nop -.L80054A18: -/* 055618 80054A18 C42967F0 */ lwc1 $f9, %lo(D_800E67F0)($at) -/* 05561C 80054A1C C42867F4 */ lwc1 $f8, %lo(D_800E67F0 + 4)($at) -/* 055620 80054A20 8FA80050 */ lw $t0, 0x50($sp) -/* 055624 80054A24 4620403C */ c.lt.d $f8, $f0 -/* 055628 80054A28 00000000 */ nop -/* 05562C 80054A2C 45000005 */ bc1f .L80054A44 -/* 055630 80054A30 0004C823 */ negu $t9, $a0 -/* 055634 80054A34 03230019 */ multu $t9, $v1 -/* 055638 80054A38 00001012 */ mflo $v0 -/* 05563C 80054A3C 00000000 */ nop -/* 055640 80054A40 00000000 */ nop -.L80054A44: -/* 055644 80054A44 00480019 */ multu $v0, $t0 -/* 055648 80054A48 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 -/* 05564C 80054A4C C426D570 */ lwc1 $f6, %lo(D_8011D570)($at) -/* 055650 80054A50 84AB01A0 */ lh $t3, 0x1a0($a1) -/* 055654 80054A54 00A02025 */ move $a0, $a1 -/* 055658 80054A58 00001012 */ mflo $v0 -/* 05565C 80054A5C 00024843 */ sra $t1, $v0, 1 -/* 055660 80054A60 44895000 */ mtc1 $t1, $f10 -/* 055664 80054A64 00000000 */ nop -/* 055668 80054A68 46805120 */ cvt.s.w $f4, $f10 -/* 05566C 80054A6C 46062202 */ mul.s $f8, $f4, $f6 -/* 055670 80054A70 444AF800 */ cfc1 $t2, $31 -/* 055674 80054A74 00000000 */ nop -/* 055678 80054A78 35410003 */ ori $at, $t2, 3 -/* 05567C 80054A7C 38210002 */ xori $at, $at, 2 -/* 055680 80054A80 44C1F800 */ ctc1 $at, $31 -/* 055684 80054A84 00000000 */ nop -/* 055688 80054A88 460042A4 */ cvt.w.s $f10, $f8 -/* 05568C 80054A8C 440C5000 */ mfc1 $t4, $f10 -/* 055690 80054A90 44CAF800 */ ctc1 $t2, $31 -/* 055694 80054A94 016C6823 */ subu $t5, $t3, $t4 -/* 055698 80054A98 A4AD01A0 */ sh $t5, 0x1a0($a1) -/* 05569C 80054A9C E7A20030 */ swc1 $f2, 0x30($sp) -/* 0556A0 80054AA0 AFA70048 */ sw $a3, 0x48($sp) -/* 0556A4 80054AA4 0C014D1E */ jal handle_car_steering -/* 0556A8 80054AA8 AFA5004C */ sw $a1, 0x4c($sp) -/* 0556AC 80054AAC 8FA5004C */ lw $a1, 0x4c($sp) -/* 0556B0 80054AB0 3C01800E */ lui $at, %hi(D_800E67F8 + 4) # $at, 0x800e -/* 0556B4 80054AB4 C4A40030 */ lwc1 $f4, 0x30($a1) -/* 0556B8 80054AB8 C42967F8 */ lwc1 $f9, %lo(D_800E67F8)($at) -/* 0556BC 80054ABC C42867FC */ lwc1 $f8, %lo(D_800E67F8 + 4)($at) -/* 0556C0 80054AC0 460021A1 */ cvt.d.s $f6, $f4 -/* 0556C4 80054AC4 46283282 */ mul.d $f10, $f6, $f8 -/* 0556C8 80054AC8 44809000 */ mtc1 $zero, $f18 -/* 0556CC 80054ACC 90A401DC */ lbu $a0, 0x1dc($a1) -/* 0556D0 80054AD0 8FA70048 */ lw $a3, 0x48($sp) -/* 0556D4 80054AD4 C7A20030 */ lwc1 $f2, 0x30($sp) -/* 0556D8 80054AD8 46205120 */ cvt.s.d $f4, $f10 -/* 0556DC 80054ADC 240100FF */ li $at, 255 -/* 0556E0 80054AE0 00001825 */ move $v1, $zero -/* 0556E4 80054AE4 E4A40030 */ swc1 $f4, 0x30($a1) -/* 0556E8 80054AE8 10810008 */ beq $a0, $at, .L80054B0C -/* 0556EC 80054AEC 46009006 */ mov.s $f0, $f18 -/* 0556F0 80054AF0 00047080 */ sll $t6, $a0, 2 -/* 0556F4 80054AF4 3C01800E */ lui $at, %hi(gSurfaceTractionTable) # $at, 0x800e -/* 0556F8 80054AF8 002E0821 */ addu $at, $at, $t6 -/* 0556FC 80054AFC C426CB9C */ lwc1 $f6, %lo(gSurfaceTractionTable)($at) -/* 055700 80054B00 18800002 */ blez $a0, .L80054B0C -/* 055704 80054B04 46069000 */ add.s $f0, $f18, $f6 -/* 055708 80054B08 00801825 */ move $v1, $a0 -.L80054B0C: -/* 05570C 80054B0C C4AA00C0 */ lwc1 $f10, 0xc0($a1) -/* 055710 80054B10 44804800 */ mtc1 $zero, $f9 -/* 055714 80054B14 44804000 */ mtc1 $zero, $f8 -/* 055718 80054B18 46005121 */ cvt.d.s $f4, $f10 -/* 05571C 80054B1C 46244032 */ c.eq.d $f8, $f4 -/* 055720 80054B20 00000000 */ nop -/* 055724 80054B24 45010003 */ bc1t .L80054B34 -/* 055728 80054B28 3C01800E */ lui $at, %hi(D_800E6800) # $at, 0x800e -/* 05572C 80054B2C C4206800 */ lwc1 $f0, %lo(D_800E6800)($at) -/* 055730 80054B30 00000000 */ nop -.L80054B34: -/* 055734 80054B34 3C018012 */ lui $at, %hi(D_8011D581) # $at, 0x8012 -/* 055738 80054B38 A023D581 */ sb $v1, %lo(D_8011D581)($at) -/* 05573C 80054B3C 24010004 */ li $at, 4 -/* 055740 80054B40 A0A001E6 */ sb $zero, 0x1e6($a1) -/* 055744 80054B44 14610006 */ bne $v1, $at, .L80054B60 -/* 055748 80054B48 ACA0010C */ sw $zero, 0x10c($a1) -/* 05574C 80054B4C 3C013E80 */ li $at, 0x3E800000 # 0.250000 -/* 055750 80054B50 44813000 */ mtc1 $at, $f6 -/* 055754 80054B54 00000000 */ nop -/* 055758 80054B58 E7A60018 */ swc1 $f6, 0x18($sp) -/* 05575C 80054B5C E4B20030 */ swc1 $f18, 0x30($a1) -.L80054B60: -/* 055760 80054B60 80AF01D3 */ lb $t7, 0x1d3($a1) -/* 055764 80054B64 00000000 */ nop -/* 055768 80054B68 15E0000F */ bnez $t7, .L80054BA8 -/* 05576C 80054B6C 24010003 */ li $at, 3 -/* 055770 80054B70 1461000D */ bne $v1, $at, .L80054BA8 -/* 055774 80054B74 2404002D */ li $a0, 45 -/* 055778 80054B78 AFA5004C */ sw $a1, 0x4c($sp) -/* 05577C 80054B7C AFA70048 */ sw $a3, 0x48($sp) -/* 055780 80054B80 E7A00028 */ swc1 $f0, 0x28($sp) -/* 055784 80054B84 0C00322D */ jal normalise_time -/* 055788 80054B88 E7A20030 */ swc1 $f2, 0x30($sp) -/* 05578C 80054B8C 8FA5004C */ lw $a1, 0x4c($sp) -/* 055790 80054B90 8FA70048 */ lw $a3, 0x48($sp) -/* 055794 80054B94 C7A00028 */ lwc1 $f0, 0x28($sp) -/* 055798 80054B98 C7A20030 */ lwc1 $f2, 0x30($sp) -/* 05579C 80054B9C 24180003 */ li $t8, 3 -/* 0557A0 80054BA0 A0A201D3 */ sb $v0, 0x1d3($a1) -/* 0557A4 80054BA4 A0B80203 */ sb $t8, 0x203($a1) -.L80054BA8: -/* 0557A8 80054BA8 46001202 */ mul.s $f8, $f2, $f0 -/* 0557AC 80054BAC C4AA002C */ lwc1 $f10, 0x2c($a1) -/* 0557B0 80054BB0 00000000 */ nop -/* 0557B4 80054BB4 46085101 */ sub.s $f4, $f10, $f8 -/* 0557B8 80054BB8 E4A4002C */ swc1 $f4, 0x2c($a1) -/* 0557BC 80054BBC 8FB90038 */ lw $t9, 0x38($sp) -/* 0557C0 80054BC0 00000000 */ nop -/* 0557C4 80054BC4 13200008 */ beqz $t9, .L80054BE8 -/* 0557C8 80054BC8 00000000 */ nop -/* 0557CC 80054BCC 90A201EE */ lbu $v0, 0x1ee($a1) -/* 0557D0 80054BD0 00000000 */ nop -/* 0557D4 80054BD4 28410010 */ slti $at, $v0, 0x10 -/* 0557D8 80054BD8 10200004 */ beqz $at, .L80054BEC -/* 0557DC 80054BDC 24480001 */ addiu $t0, $v0, 1 -/* 0557E0 80054BE0 10000002 */ b .L80054BEC -/* 0557E4 80054BE4 A0A801EE */ sb $t0, 0x1ee($a1) -.L80054BE8: -/* 0557E8 80054BE8 A0A001EE */ sb $zero, 0x1ee($a1) -.L80054BEC: -/* 0557EC 80054BEC AFA5004C */ sw $a1, 0x4c($sp) -/* 0557F0 80054BF0 0C019884 */ jal get_viewport_count -/* 0557F4 80054BF4 AFA70048 */ sw $a3, 0x48($sp) -/* 0557F8 80054BF8 8FA5004C */ lw $a1, 0x4c($sp) -/* 0557FC 80054BFC 8FA70048 */ lw $a3, 0x48($sp) -/* 055800 80054C00 44809000 */ mtc1 $zero, $f18 -/* 055804 80054C04 28410002 */ slti $at, $v0, 2 -/* 055808 80054C08 1020001F */ beqz $at, .L80054C88 -/* 05580C 80054C0C 00000000 */ nop -/* 055810 80054C10 8FA90038 */ lw $t1, 0x38($sp) -/* 055814 80054C14 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 055818 80054C18 1120001B */ beqz $t1, .L80054C88 -/* 05581C 80054C1C 00000000 */ nop -/* 055820 80054C20 C4A6002C */ lwc1 $f6, 0x2c($a1) -/* 055824 80054C24 44814800 */ mtc1 $at, $f9 -/* 055828 80054C28 44804000 */ mtc1 $zero, $f8 -/* 05582C 80054C2C 460032A1 */ cvt.d.s $f10, $f6 -/* 055830 80054C30 4628503C */ c.lt.d $f10, $f8 -/* 055834 80054C34 00000000 */ nop -/* 055838 80054C38 45000013 */ bc1f .L80054C88 -/* 05583C 80054C3C 00000000 */ nop -/* 055840 80054C40 90A201DE */ lbu $v0, 0x1de($a1) -/* 055844 80054C44 240C0001 */ li $t4, 1 -/* 055848 80054C48 284100FF */ slti $at, $v0, 0xff -/* 05584C 80054C4C 10200005 */ beqz $at, .L80054C64 -/* 055850 80054C50 00025840 */ sll $t3, $v0, 1 -/* 055854 80054C54 8CEA0074 */ lw $t2, 0x74($a3) -/* 055858 80054C58 016C6804 */ sllv $t5, $t4, $t3 -/* 05585C 80054C5C 014D7025 */ or $t6, $t2, $t5 -/* 055860 80054C60 ACEE0074 */ sw $t6, 0x74($a3) -.L80054C64: -/* 055864 80054C64 90A201DF */ lbu $v0, 0x1df($a1) -/* 055868 80054C68 24190002 */ li $t9, 2 -/* 05586C 80054C6C 284100FF */ slti $at, $v0, 0xff -/* 055870 80054C70 10200005 */ beqz $at, .L80054C88 -/* 055874 80054C74 0002C040 */ sll $t8, $v0, 1 -/* 055878 80054C78 8CEF0074 */ lw $t7, 0x74($a3) -/* 05587C 80054C7C 03194004 */ sllv $t0, $t9, $t8 -/* 055880 80054C80 01E84825 */ or $t1, $t7, $t0 -/* 055884 80054C84 ACE90074 */ sw $t1, 0x74($a3) -.L80054C88: -/* 055888 80054C88 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 05588C 80054C8C 3C014140 */ li $at, 0x41400000 # 12.000000 -/* 055890 80054C90 4612603C */ c.lt.s $f12, $f18 -/* 055894 80054C94 44810000 */ mtc1 $at, $f0 -/* 055898 80054C98 45000002 */ bc1f .L80054CA4 -/* 05589C 80054C9C 46006086 */ mov.s $f2, $f12 -/* 0558A0 80054CA0 46001087 */ neg.s $f2, $f2 -.L80054CA4: -/* 0558A4 80054CA4 4602003C */ c.lt.s $f0, $f2 -/* 0558A8 80054CA8 3C0B8012 */ lui $t3, %hi(D_8011D564) # $t3, 0x8012 -/* 0558AC 80054CAC 45000002 */ bc1f .L80054CB8 -/* 0558B0 80054CB0 3C0E8012 */ lui $t6, %hi(gRaceStartTimer) # $t6, 0x8012 -/* 0558B4 80054CB4 46000086 */ mov.s $f2, $f0 -.L80054CB8: -/* 0558B8 80054CB8 444CF800 */ cfc1 $t4, $31 -/* 0558BC 80054CBC 8D6BD564 */ lw $t3, %lo(D_8011D564)($t3) -/* 0558C0 80054CC0 35810003 */ ori $at, $t4, 3 -/* 0558C4 80054CC4 38210002 */ xori $at, $at, 2 -/* 0558C8 80054CC8 44C1F800 */ ctc1 $at, $31 -/* 0558CC 80054CCC 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 0558D0 80054CD0 46001124 */ cvt.w.s $f4, $f2 -/* 0558D4 80054CD4 44814800 */ mtc1 $at, $f9 -/* 0558D8 80054CD8 44022000 */ mfc1 $v0, $f4 -/* 0558DC 80054CDC 44CCF800 */ ctc1 $t4, $31 -/* 0558E0 80054CE0 44823000 */ mtc1 $v0, $f6 -/* 0558E4 80054CE4 44804000 */ mtc1 $zero, $f8 -/* 0558E8 80054CE8 468032A0 */ cvt.s.w $f10, $f6 -/* 0558EC 80054CEC 00025080 */ sll $t2, $v0, 2 -/* 0558F0 80054CF0 016A1821 */ addu $v1, $t3, $t2 -/* 0558F4 80054CF4 460A1001 */ sub.s $f0, $f2, $f10 -/* 0558F8 80054CF8 C46A0000 */ lwc1 $f10, ($v1) -/* 0558FC 80054CFC 46000121 */ cvt.d.s $f4, $f0 -/* 055900 80054D00 46244181 */ sub.d $f6, $f8, $f4 -/* 055904 80054D04 3C01800E */ lui $at, %hi(D_800E6808) # $at, 0x800e -/* 055908 80054D08 46005221 */ cvt.d.s $f8, $f10 -/* 05590C 80054D0C 46264102 */ mul.d $f4, $f8, $f6 -/* 055910 80054D10 C46A0004 */ lwc1 $f10, 4($v1) -/* 055914 80054D14 80AD01D3 */ lb $t5, 0x1d3($a1) -/* 055918 80054D18 46005202 */ mul.s $f8, $f10, $f0 -/* 05591C 80054D1C 460041A1 */ cvt.d.s $f6, $f8 -/* 055920 80054D20 46262280 */ add.d $f10, $f4, $f6 -/* 055924 80054D24 C424680C */ lwc1 $f4, %lo(D_800E6808 + 4)($at) -/* 055928 80054D28 462050A0 */ cvt.s.d $f2, $f10 -/* 05592C 80054D2C C4256808 */ lwc1 $f5, %lo(D_800E6808)($at) -/* 055930 80054D30 46001221 */ cvt.d.s $f8, $f2 -/* 055934 80054D34 46244182 */ mul.d $f6, $f8, $f4 -/* 055938 80054D38 C7AA0018 */ lwc1 $f10, 0x18($sp) -/* 05593C 80054D3C 462030A0 */ cvt.s.d $f2, $f6 -/* 055940 80054D40 460A1082 */ mul.s $f2, $f2, $f10 -/* 055944 80054D44 19A00016 */ blez $t5, .L80054DA0 -/* 055948 80054D48 00000000 */ nop -/* 05594C 80054D4C 8DCED540 */ lw $t6, %lo(gRaceStartTimer)($t6) -/* 055950 80054D50 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 055954 80054D54 15C00010 */ bnez $t6, .L80054D98 -/* 055958 80054D58 00000000 */ nop -/* 05595C 80054D5C 44802800 */ mtc1 $zero, $f5 -/* 055960 80054D60 44802000 */ mtc1 $zero, $f4 -/* 055964 80054D64 460011A1 */ cvt.d.s $f6, $f2 -/* 055968 80054D68 44814000 */ mtc1 $at, $f8 -/* 05596C 80054D6C 46262032 */ c.eq.d $f4, $f6 -/* 055970 80054D70 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 055974 80054D74 45010003 */ bc1t .L80054D84 -/* 055978 80054D78 E4A800B4 */ swc1 $f8, 0xb4($a1) -/* 05597C 80054D7C 44811000 */ mtc1 $at, $f2 -/* 055980 80054D80 00000000 */ nop -.L80054D84: -/* 055984 80054D84 80B901D3 */ lb $t9, 0x1d3($a1) -/* 055988 80054D88 8FB80050 */ lw $t8, 0x50($sp) -/* 05598C 80054D8C C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 055990 80054D90 03387823 */ subu $t7, $t9, $t8 -/* 055994 80054D94 A0AF01D3 */ sb $t7, 0x1d3($a1) -.L80054D98: -/* 055998 80054D98 10000004 */ b .L80054DAC -/* 05599C 80054D9C 46006021 */ cvt.d.s $f0, $f12 -.L80054DA0: -/* 0559A0 80054DA0 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 0559A4 80054DA4 A0A001D3 */ sb $zero, 0x1d3($a1) -/* 0559A8 80054DA8 46006021 */ cvt.d.s $f0, $f12 -.L80054DAC: -/* 0559AC 80054DAC 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 0559B0 80054DB0 44815800 */ mtc1 $at, $f11 -/* 0559B4 80054DB4 44805000 */ mtc1 $zero, $f10 -/* 0559B8 80054DB8 3C014008 */ li $at, 0x40080000 # 2.125000 -/* 0559BC 80054DBC 4620503C */ c.lt.d $f10, $f0 -/* 0559C0 80054DC0 3C0B8012 */ lui $t3, %hi(gRaceStartTimer) # $t3, 0x8012 -/* 0559C4 80054DC4 4500001E */ bc1f .L80054E40 -/* 0559C8 80054DC8 00000000 */ nop -/* 0559CC 80054DCC 44818800 */ mtc1 $at, $f17 -/* 0559D0 80054DD0 44808000 */ mtc1 $zero, $f16 -/* 0559D4 80054DD4 3C01800E */ lui $at, %hi(D_800E6810 + 4) # $at, 0x800e -/* 0559D8 80054DD8 4630003C */ c.lt.d $f0, $f16 -/* 0559DC 80054DDC 00000000 */ nop -/* 0559E0 80054DE0 45000017 */ bc1f .L80054E40 -/* 0559E4 80054DE4 00000000 */ nop -/* 0559E8 80054DE8 46208201 */ sub.d $f8, $f16, $f0 -/* 0559EC 80054DEC C4256810 */ lwc1 $f5, %lo(D_800E6810)($at) -/* 0559F0 80054DF0 C4246814 */ lwc1 $f4, %lo(D_800E6810 + 4)($at) -/* 0559F4 80054DF4 3C088012 */ lui $t0, %hi(gCurrentStickY) # $t0, 0x8012 -/* 0559F8 80054DF8 46244182 */ mul.d $f6, $f8, $f4 -/* 0559FC 80054DFC 8D08D538 */ lw $t0, %lo(gCurrentStickY)($t0) -/* 055A00 80054E00 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 055A04 80054E04 2901FFE7 */ slti $at, $t0, -0x19 -/* 055A08 80054E08 1020000D */ beqz $at, .L80054E40 -/* 055A0C 80054E0C 462033A0 */ cvt.s.d $f14, $f6 -/* 055A10 80054E10 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 055A14 80054E14 00000000 */ nop -/* 055A18 80054E18 30498000 */ andi $t1, $v0, 0x8000 -/* 055A1C 80054E1C 15200008 */ bnez $t1, .L80054E40 -/* 055A20 80054E20 304C4000 */ andi $t4, $v0, 0x4000 -/* 055A24 80054E24 11800006 */ beqz $t4, .L80054E40 -/* 055A28 80054E28 00000000 */ nop -/* 055A2C 80054E2C 460E6280 */ add.s $f10, $f12, $f14 -/* 055A30 80054E30 E4B200B8 */ swc1 $f18, 0xb8($a1) -/* 055A34 80054E34 E4AA002C */ swc1 $f10, 0x2c($a1) -/* 055A38 80054E38 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 055A3C 80054E3C 00000000 */ nop -.L80054E40: -/* 055A40 80054E40 C4A800B8 */ lwc1 $f8, 0xb8($a1) -/* 055A44 80054E44 3C01800E */ lui $at, %hi(D_800E6818 + 4) # $at, 0x800e -/* 055A48 80054E48 46024102 */ mul.s $f4, $f8, $f2 -/* 055A4C 80054E4C C42B6818 */ lwc1 $f11, %lo(D_800E6818)($at) -/* 055A50 80054E50 C42A681C */ lwc1 $f10, %lo(D_800E6818 + 4)($at) -/* 055A54 80054E54 3C01800E */ lui $at, %hi(D_800E6820) # $at, 0x800e -/* 055A58 80054E58 460021A1 */ cvt.d.s $f6, $f4 -/* 055A5C 80054E5C 462A3202 */ mul.d $f8, $f6, $f10 -/* 055A60 80054E60 C4A400B4 */ lwc1 $f4, 0xb4($a1) -/* 055A64 80054E64 00000000 */ nop -/* 055A68 80054E68 46041182 */ mul.s $f6, $f2, $f4 -/* 055A6C 80054E6C 462043A0 */ cvt.s.d $f14, $f8 -/* 055A70 80054E70 46066281 */ sub.s $f10, $f12, $f6 -/* 055A74 80054E74 E4AA002C */ swc1 $f10, 0x2c($a1) -/* 055A78 80054E78 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 055A7C 80054E7C C4286824 */ lwc1 $f8, %lo(D_800E6820 + 4)($at) -/* 055A80 80054E80 C4296820 */ lwc1 $f9, %lo(D_800E6820)($at) -/* 055A84 80054E84 46006021 */ cvt.d.s $f0, $f12 -/* 055A88 80054E88 4620403C */ c.lt.d $f8, $f0 -/* 055A8C 80054E8C 3C01800E */ lui $at, %hi(D_800E6828 + 4) # $at, 0x800e -/* 055A90 80054E90 4500000B */ bc1f .L80054EC0 -/* 055A94 80054E94 00000000 */ nop -/* 055A98 80054E98 C4256828 */ lwc1 $f5, %lo(D_800E6828)($at) -/* 055A9C 80054E9C C424682C */ lwc1 $f4, %lo(D_800E6828 + 4)($at) -/* 055AA0 80054EA0 00000000 */ nop -/* 055AA4 80054EA4 4624003C */ c.lt.d $f0, $f4 -/* 055AA8 80054EA8 00000000 */ nop -/* 055AAC 80054EAC 45000004 */ bc1f .L80054EC0 -/* 055AB0 80054EB0 00000000 */ nop -/* 055AB4 80054EB4 E4B2002C */ swc1 $f18, 0x2c($a1) -/* 055AB8 80054EB8 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 055ABC 80054EBC 00000000 */ nop -.L80054EC0: -/* 055AC0 80054EC0 4612603C */ c.lt.s $f12, $f18 -/* 055AC4 80054EC4 3C018012 */ lui $at, %hi(D_8011D56C) # $at, 0x8012 -/* 055AC8 80054EC8 4500000B */ bc1f .L80054EF8 -/* 055ACC 80054ECC 00000000 */ nop -/* 055AD0 80054ED0 460E6180 */ add.s $f6, $f12, $f14 -/* 055AD4 80054ED4 E4A6002C */ swc1 $f6, 0x2c($a1) -/* 055AD8 80054ED8 C4AA002C */ lwc1 $f10, 0x2c($a1) -/* 055ADC 80054EDC 00000000 */ nop -/* 055AE0 80054EE0 460A903C */ c.lt.s $f18, $f10 -/* 055AE4 80054EE4 00000000 */ nop -/* 055AE8 80054EE8 4500000C */ bc1f .L80054F1C -/* 055AEC 80054EEC 00000000 */ nop -/* 055AF0 80054EF0 1000000A */ b .L80054F1C -/* 055AF4 80054EF4 E4B2002C */ swc1 $f18, 0x2c($a1) -.L80054EF8: -/* 055AF8 80054EF8 460E6201 */ sub.s $f8, $f12, $f14 -/* 055AFC 80054EFC E4A8002C */ swc1 $f8, 0x2c($a1) -/* 055B00 80054F00 C4A4002C */ lwc1 $f4, 0x2c($a1) -/* 055B04 80054F04 00000000 */ nop -/* 055B08 80054F08 4612203C */ c.lt.s $f4, $f18 -/* 055B0C 80054F0C 00000000 */ nop -/* 055B10 80054F10 45000002 */ bc1f .L80054F1C -/* 055B14 80054F14 00000000 */ nop -/* 055B18 80054F18 E4B2002C */ swc1 $f18, 0x2c($a1) -.L80054F1C: -/* 055B1C 80054F1C C4AA00C0 */ lwc1 $f10, 0xc0($a1) -/* 055B20 80054F20 44803800 */ mtc1 $zero, $f7 -/* 055B24 80054F24 44803000 */ mtc1 $zero, $f6 -/* 055B28 80054F28 46005221 */ cvt.d.s $f8, $f10 -/* 055B2C 80054F2C 46283032 */ c.eq.d $f6, $f8 -/* 055B30 80054F30 C420D56C */ lwc1 $f0, %lo(D_8011D56C)($at) -/* 055B34 80054F34 45010006 */ bc1t .L80054F50 -/* 055B38 80054F38 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 055B3C 80054F3C 44815800 */ mtc1 $at, $f11 -/* 055B40 80054F40 44805000 */ mtc1 $zero, $f10 -/* 055B44 80054F44 46000121 */ cvt.d.s $f4, $f0 -/* 055B48 80054F48 462A2182 */ mul.d $f6, $f4, $f10 -/* 055B4C 80054F4C 46203020 */ cvt.s.d $f0, $f6 -.L80054F50: -/* 055B50 80054F50 3C01800E */ lui $at, %hi(D_800E6830 + 4) # $at, 0x800e -/* 055B54 80054F54 C4A800B8 */ lwc1 $f8, 0xb8($a1) -/* 055B58 80054F58 C42B6830 */ lwc1 $f11, %lo(D_800E6830)($at) -/* 055B5C 80054F5C C42A6834 */ lwc1 $f10, %lo(D_800E6830 + 4)($at) -/* 055B60 80054F60 46004121 */ cvt.d.s $f4, $f8 -/* 055B64 80054F64 462A203C */ c.lt.d $f4, $f10 -/* 055B68 80054F68 00000000 */ nop -/* 055B6C 80054F6C 4500000F */ bc1f .L80054FAC -/* 055B70 80054F70 00000000 */ nop -/* 055B74 80054F74 8D6BD540 */ lw $t3, %lo(gRaceStartTimer)($t3) -/* 055B78 80054F78 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 055B7C 80054F7C 1560000B */ bnez $t3, .L80054FAC -/* 055B80 80054F80 00000000 */ nop -/* 055B84 80054F84 C4A6009C */ lwc1 $f6, 0x9c($a1) -/* 055B88 80054F88 44814000 */ mtc1 $at, $f8 -/* 055B8C 80054F8C 00000000 */ nop -/* 055B90 80054F90 46083103 */ div.s $f4, $f6, $f8 -/* 055B94 80054F94 C7A60054 */ lwc1 $f6, 0x54($sp) -/* 055B98 80054F98 46040282 */ mul.s $f10, $f0, $f4 -/* 055B9C 80054F9C C4A4002C */ lwc1 $f4, 0x2c($a1) -/* 055BA0 80054FA0 46065202 */ mul.s $f8, $f10, $f6 -/* 055BA4 80054FA4 46082280 */ add.s $f10, $f4, $f8 -/* 055BA8 80054FA8 E4AA002C */ swc1 $f10, 0x2c($a1) -.L80054FAC: -/* 055BAC 80054FAC C7A40054 */ lwc1 $f4, 0x54($sp) -/* 055BB0 80054FB0 C4E60020 */ lwc1 $f6, 0x20($a3) -/* 055BB4 80054FB4 46040202 */ mul.s $f8, $f0, $f4 -/* 055BB8 80054FB8 46083281 */ sub.s $f10, $f6, $f8 -/* 055BBC 80054FBC E4EA0020 */ swc1 $f10, 0x20($a3) -/* 055BC0 80054FC0 8FBF0014 */ lw $ra, 0x14($sp) -/* 055BC4 80054FC4 27BD0048 */ addiu $sp, $sp, 0x48 -/* 055BC8 80054FC8 03E00008 */ jr $ra -/* 055BCC 80054FCC 00000000 */ nop - diff --git a/asm/non_matchings/racer/func_8005A424.s b/asm/non_matchings/racer/func_8005A424.s deleted file mode 100644 index 4add9526..00000000 --- a/asm/non_matchings/racer/func_8005A424.s +++ /dev/null @@ -1,196 +0,0 @@ -glabel func_8005A424 -/* 05B024 8005A424 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 05B028 8005A428 AFBF0014 */ sw $ra, 0x14($sp) -/* 05B02C 8005A42C AFA50024 */ sw $a1, 0x24($sp) -/* 05B030 8005A430 8C8E0108 */ lw $t6, 0x108($a0) -/* 05B034 8005A434 240FFFFF */ li $t7, -1 -/* 05B038 8005A438 8DC70064 */ lw $a3, 0x64($t6) -/* 05B03C 8005A43C A48F0000 */ sh $t7, ($a0) -/* 05B040 8005A440 C4EE0008 */ lwc1 $f14, 8($a3) -/* 05B044 8005A444 C4EC0000 */ lwc1 $f12, ($a3) -/* 05B048 8005A448 AFA40020 */ sw $a0, 0x20($sp) -/* 05B04C 8005A44C 0C01C1D4 */ jal arctan2_f -/* 05B050 8005A450 AFA7001C */ sw $a3, 0x1c($sp) -/* 05B054 8005A454 8FA60020 */ lw $a2, 0x20($sp) -/* 05B058 8005A458 3058FFFF */ andi $t8, $v0, 0xffff -/* 05B05C 8005A45C 84D901A0 */ lh $t9, 0x1a0($a2) -/* 05B060 8005A460 34018001 */ li $at, 32769 -/* 05B064 8005A464 332AFFFF */ andi $t2, $t9, 0xffff -/* 05B068 8005A468 030A1823 */ subu $v1, $t8, $t2 -/* 05B06C 8005A46C 8FA7001C */ lw $a3, 0x1c($sp) -/* 05B070 8005A470 0061082A */ slt $at, $v1, $at -/* 05B074 8005A474 14200004 */ bnez $at, .L8005A488 -/* 05B078 8005A478 2409FFFF */ li $t1, -1 -/* 05B07C 8005A47C 3C01FFFF */ lui $at, (0xFFFF0001 >> 16) # lui $at, 0xffff -/* 05B080 8005A480 34210001 */ ori $at, (0xFFFF0001 & 0xFFFF) # ori $at, $at, 1 -/* 05B084 8005A484 00611821 */ addu $v1, $v1, $at -.L8005A488: -/* 05B088 8005A488 28618000 */ slti $at, $v1, -0x8000 -/* 05B08C 8005A48C 10200003 */ beqz $at, .L8005A49C -/* 05B090 8005A490 3C048012 */ lui $a0, %hi(gCurrentRacerInput) # $a0, 0x8012 -/* 05B094 8005A494 3401FFFF */ li $at, 65535 -/* 05B098 8005A498 00611821 */ addu $v1, $v1, $at -.L8005A49C: -/* 05B09C 8005A49C 3C058012 */ lui $a1, %hi(gCurrentStickX) # $a1, 0x8012 -/* 05B0A0 8005A4A0 00031823 */ negu $v1, $v1 -/* 05B0A4 8005A4A4 24A5D534 */ addiu $a1, %lo(gCurrentStickX) # addiu $a1, $a1, -0x2acc -/* 05B0A8 8005A4A8 00035943 */ sra $t3, $v1, 5 -/* 05B0AC 8005A4AC ACAB0000 */ sw $t3, ($a1) -/* 05B0B0 8005A4B0 3C018012 */ lui $at, %hi(gCurrentButtonsPressed) # $at, 0x8012 -/* 05B0B4 8005A4B4 AC20D52C */ sw $zero, %lo(gCurrentButtonsPressed)($at) -/* 05B0B8 8005A4B8 3C018012 */ lui $at, %hi(gCurrentButtonsReleased) # $at, 0x8012 -/* 05B0BC 8005A4BC AC20D530 */ sw $zero, %lo(gCurrentButtonsReleased)($at) -/* 05B0C0 8005A4C0 2484D528 */ addiu $a0, %lo(gCurrentRacerInput) # addiu $a0, $a0, -0x2ad8 -/* 05B0C4 8005A4C4 AC800000 */ sw $zero, ($a0) -/* 05B0C8 8005A4C8 3C018012 */ lui $at, %hi(gCurrentStickY) # $at, 0x8012 -/* 05B0CC 8005A4CC AC20D538 */ sw $zero, %lo(gCurrentStickY)($at) -/* 05B0D0 8005A4D0 C4C4002C */ lwc1 $f4, 0x2c($a2) -/* 05B0D4 8005A4D4 3C01C010 */ li $at, 0xC0100000 # -2.250000 -/* 05B0D8 8005A4D8 44813800 */ mtc1 $at, $f7 -/* 05B0DC 8005A4DC 44803000 */ mtc1 $zero, $f6 -/* 05B0E0 8005A4E0 46002021 */ cvt.d.s $f0, $f4 -/* 05B0E4 8005A4E4 4620303C */ c.lt.d $f6, $f0 -/* 05B0E8 8005A4E8 3C01C014 */ li $at, 0xC0140000 # -2.312500 -/* 05B0EC 8005A4EC 45000006 */ bc1f .L8005A508 -/* 05B0F0 8005A4F0 00000000 */ nop -/* 05B0F4 8005A4F4 8C8C0000 */ lw $t4, ($a0) -/* 05B0F8 8005A4F8 00000000 */ nop -/* 05B0FC 8005A4FC 358D8000 */ ori $t5, $t4, 0x8000 -/* 05B100 8005A500 1000000C */ b .L8005A534 -/* 05B104 8005A504 AC8D0000 */ sw $t5, ($a0) -.L8005A508: -/* 05B108 8005A508 44814800 */ mtc1 $at, $f9 -/* 05B10C 8005A50C 44804000 */ mtc1 $zero, $f8 -/* 05B110 8005A510 00000000 */ nop -/* 05B114 8005A514 4628003C */ c.lt.d $f0, $f8 -/* 05B118 8005A518 00000000 */ nop -/* 05B11C 8005A51C 45000006 */ bc1f .L8005A538 -/* 05B120 8005A520 8FB90024 */ lw $t9, 0x24($sp) -/* 05B124 8005A524 8C8E0000 */ lw $t6, ($a0) -/* 05B128 8005A528 00000000 */ nop -/* 05B12C 8005A52C 35CF4000 */ ori $t7, $t6, 0x4000 -/* 05B130 8005A530 AC8F0000 */ sw $t7, ($a0) -.L8005A534: -/* 05B134 8005A534 8FB90024 */ lw $t9, 0x24($sp) -.L8005A538: -/* 05B138 8005A538 C4E40000 */ lwc1 $f4, ($a3) -/* 05B13C 8005A53C 44995000 */ mtc1 $t9, $f10 -/* 05B140 8005A540 3C013FF8 */ li $at, 0x3FF80000 # 1.937500 -/* 05B144 8005A544 46805020 */ cvt.s.w $f0, $f10 -/* 05B148 8005A548 44811800 */ mtc1 $at, $f3 -/* 05B14C 8005A54C 44801000 */ mtc1 $zero, $f2 -/* 05B150 8005A550 46002182 */ mul.s $f6, $f4, $f0 -/* 05B154 8005A554 3C088012 */ lui $t0, %hi(gCameraObject) # $t0, 0x8012 -/* 05B158 8005A558 2508D508 */ addiu $t0, %lo(gCameraObject) # addiu $t0, $t0, -0x2af8 -/* 05B15C 8005A55C 8D020000 */ lw $v0, ($t0) -/* 05B160 8005A560 46003221 */ cvt.d.s $f8, $f6 -/* 05B164 8005A564 46224282 */ mul.d $f10, $f8, $f2 -/* 05B168 8005A568 C450000C */ lwc1 $f16, 0xc($v0) -/* 05B16C 8005A56C 240CFFB5 */ li $t4, -75 -/* 05B170 8005A570 460084A1 */ cvt.d.s $f18, $f16 -/* 05B174 8005A574 462A9400 */ add.d $f16, $f18, $f10 -/* 05B178 8005A578 46208120 */ cvt.s.d $f4, $f16 -/* 05B17C 8005A57C E444000C */ swc1 $f4, 0xc($v0) -/* 05B180 8005A580 C4F20008 */ lwc1 $f18, 8($a3) -/* 05B184 8005A584 8D020000 */ lw $v0, ($t0) -/* 05B188 8005A588 46009282 */ mul.s $f10, $f18, $f0 -/* 05B18C 8005A58C C4460014 */ lwc1 $f6, 0x14($v0) -/* 05B190 8005A590 46005421 */ cvt.d.s $f16, $f10 -/* 05B194 8005A594 46228102 */ mul.d $f4, $f16, $f2 -/* 05B198 8005A598 46003221 */ cvt.d.s $f8, $f6 -/* 05B19C 8005A59C 46244180 */ add.d $f6, $f8, $f4 -/* 05B1A0 8005A5A0 462034A0 */ cvt.s.d $f18, $f6 -/* 05B1A4 8005A5A4 E4520014 */ swc1 $f18, 0x14($v0) -/* 05B1A8 8005A5A8 8CA30000 */ lw $v1, ($a1) -/* 05B1AC 8005A5AC 00000000 */ nop -/* 05B1B0 8005A5B0 2861004C */ slti $at, $v1, 0x4c -/* 05B1B4 8005A5B4 14200007 */ bnez $at, .L8005A5D4 -/* 05B1B8 8005A5B8 2861FFB5 */ slti $at, $v1, -0x4b -/* 05B1BC 8005A5BC 8C8A0000 */ lw $t2, ($a0) -/* 05B1C0 8005A5C0 2403004B */ li $v1, 75 -/* 05B1C4 8005A5C4 354BC000 */ ori $t3, $t2, 0xc000 -/* 05B1C8 8005A5C8 AC8B0000 */ sw $t3, ($a0) -/* 05B1CC 8005A5CC ACA30000 */ sw $v1, ($a1) -/* 05B1D0 8005A5D0 2861FFB5 */ slti $at, $v1, -0x4b -.L8005A5D4: -/* 05B1D4 8005A5D4 10200005 */ beqz $at, .L8005A5EC -/* 05B1D8 8005A5D8 00000000 */ nop -/* 05B1DC 8005A5DC 8C8D0000 */ lw $t5, ($a0) -/* 05B1E0 8005A5E0 ACAC0000 */ sw $t4, ($a1) -/* 05B1E4 8005A5E4 35AEC000 */ ori $t6, $t5, 0xc000 -/* 05B1E8 8005A5E8 AC8E0000 */ sw $t6, ($a0) -.L8005A5EC: -/* 05B1EC 8005A5EC 80C20200 */ lb $v0, 0x200($a2) -/* 05B1F0 8005A5F0 8FAF0024 */ lw $t7, 0x24($sp) -/* 05B1F4 8005A5F4 2841FFFF */ slti $at, $v0, -1 -/* 05B1F8 8005A5F8 10200009 */ beqz $at, .L8005A620 -/* 05B1FC 8005A5FC 004FC821 */ addu $t9, $v0, $t7 -/* 05B200 8005A600 A0D90200 */ sb $t9, 0x200($a2) -/* 05B204 8005A604 80C20200 */ lb $v0, 0x200($a2) -/* 05B208 8005A608 00000000 */ nop -/* 05B20C 8005A60C 04400005 */ bltz $v0, .L8005A624 -/* 05B210 8005A610 2841FFFF */ slti $at, $v0, -1 -/* 05B214 8005A614 A0C90200 */ sb $t1, 0x200($a2) -/* 05B218 8005A618 80C20200 */ lb $v0, 0x200($a2) -/* 05B21C 8005A61C 00000000 */ nop -.L8005A620: -/* 05B220 8005A620 2841FFFF */ slti $at, $v0, -1 -.L8005A624: -/* 05B224 8005A624 10200008 */ beqz $at, .L8005A648 -/* 05B228 8005A628 00000000 */ nop -/* 05B22C 8005A62C 8CA30000 */ lw $v1, ($a1) -/* 05B230 8005A630 00000000 */ nop -/* 05B234 8005A634 2861000A */ slti $at, $v1, 0xa -/* 05B238 8005A638 10200003 */ beqz $at, .L8005A648 -/* 05B23C 8005A63C 2861FFF7 */ slti $at, $v1, -9 -/* 05B240 8005A640 10200003 */ beqz $at, .L8005A650 -/* 05B244 8005A644 00000000 */ nop -.L8005A648: -/* 05B248 8005A648 15220010 */ bne $t1, $v0, .L8005A68C -/* 05B24C 8005A64C 24040001 */ li $a0, 1 -.L8005A650: -/* 05B250 8005A650 0C019944 */ jal func_80066510 -/* 05B254 8005A654 AFA60020 */ sw $a2, 0x20($sp) -/* 05B258 8005A658 8FA60020 */ lw $a2, 0x20($sp) -/* 05B25C 8005A65C 14400006 */ bnez $v0, .L8005A678 -/* 05B260 8005A660 3C04800E */ lui $a0, %hi(D_800DCDD4) # $a0, 0x800e -/* 05B264 8005A664 2484CDD4 */ addiu $a0, %lo(D_800DCDD4) # addiu $a0, $a0, -0x322c -/* 05B268 8005A668 0C030076 */ jal func_800C01D8 -/* 05B26C 8005A66C AFA60020 */ sw $a2, 0x20($sp) -/* 05B270 8005A670 8FA60020 */ lw $a2, 0x20($sp) -/* 05B274 8005A674 00000000 */ nop -.L8005A678: -/* 05B278 8005A678 8FB80024 */ lw $t8, 0x24($sp) -/* 05B27C 8005A67C 240A003C */ li $t2, 60 -/* 05B280 8005A680 01585823 */ subu $t3, $t2, $t8 -/* 05B284 8005A684 A0CB0200 */ sb $t3, 0x200($a2) -/* 05B288 8005A688 24040001 */ li $a0, 1 -.L8005A68C: -/* 05B28C 8005A68C 0C01BCE2 */ jal func_8006F388 -/* 05B290 8005A690 AFA60020 */ sw $a2, 0x20($sp) -/* 05B294 8005A694 8FA60020 */ lw $a2, 0x20($sp) -/* 05B298 8005A698 8FAC0024 */ lw $t4, 0x24($sp) -/* 05B29C 8005A69C 80C20200 */ lb $v0, 0x200($a2) -/* 05B2A0 8005A6A0 00000000 */ nop -/* 05B2A4 8005A6A4 1840000E */ blez $v0, .L8005A6E0 -/* 05B2A8 8005A6A8 004C6823 */ subu $t5, $v0, $t4 -/* 05B2AC 8005A6AC A0CD0200 */ sb $t5, 0x200($a2) -/* 05B2B0 8005A6B0 80CE0200 */ lb $t6, 0x200($a2) -/* 05B2B4 8005A6B4 00000000 */ nop -/* 05B2B8 8005A6B8 1DC0000A */ bgtz $t6, .L8005A6E4 -/* 05B2BC 8005A6BC 8FBF0014 */ lw $ra, 0x14($sp) -/* 05B2C0 8005A6C0 8CCF0108 */ lw $t7, 0x108($a2) -/* 05B2C4 8005A6C4 00000000 */ nop -/* 05B2C8 8005A6C8 8DE4003C */ lw $a0, 0x3c($t7) -/* 05B2CC 8005A6CC 0C01B65A */ jal func_8006D968 -/* 05B2D0 8005A6D0 AFA60020 */ sw $a2, 0x20($sp) -/* 05B2D4 8005A6D4 8FA60020 */ lw $a2, 0x20($sp) -/* 05B2D8 8005A6D8 00000000 */ nop -/* 05B2DC 8005A6DC A0C00200 */ sb $zero, 0x200($a2) -.L8005A6E0: -/* 05B2E0 8005A6E0 8FBF0014 */ lw $ra, 0x14($sp) -.L8005A6E4: -/* 05B2E4 8005A6E4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 05B2E8 8005A6E8 03E00008 */ jr $ra -/* 05B2EC 8005A6EC 00000000 */ nop - diff --git a/asm/non_matchings/racer/func_8005A6F0.s b/asm/non_matchings/racer/func_8005A6F0.s index 49ebe1de..0a6a692f 100644 --- a/asm/non_matchings/racer/func_8005A6F0.s +++ b/asm/non_matchings/racer/func_8005A6F0.s @@ -77,8 +77,8 @@ glabel func_8005A6F0 .L8005A798: /* 05B398 8005A798 0C0078A7 */ jal get_misc_asset /* 05B39C 8005A79C 24040009 */ li $a0, 9 -/* 05B3A0 8005A7A0 3C038012 */ lui $v1, %hi(D_8011D564) # $v1, 0x8012 -/* 05B3A4 8005A7A4 2463D564 */ addiu $v1, %lo(D_8011D564) # addiu $v1, $v1, -0x2a9c +/* 05B3A0 8005A7A0 3C038012 */ lui $v1, %hi(gCurrentRacerMiscAssetPtr) # $v1, 0x8012 +/* 05B3A4 8005A7A4 2463D564 */ addiu $v1, %lo(gCurrentRacerMiscAssetPtr) # addiu $v1, $v1, -0x2a9c /* 05B3A8 8005A7A8 AC620000 */ sw $v0, ($v1) /* 05B3AC 8005A7AC 82190003 */ lb $t9, 3($s0) /* 05B3B0 8005A7B0 3C01800E */ lui $at, %hi(D_800E6940 + 4) # $at, 0x800e @@ -89,8 +89,8 @@ glabel func_8005A6F0 /* 05B3C4 8005A7C4 C4286944 */ lwc1 $f8, %lo(D_800E6940 + 4)($at) /* 05B3C8 8005A7C8 460021A1 */ cvt.d.s $f6, $f4 /* 05B3CC 8005A7CC 46283282 */ mul.d $f10, $f6, $f8 -/* 05B3D0 8005A7D0 3C0C8012 */ lui $t4, %hi(D_8011D56C) # $t4, 0x8012 -/* 05B3D4 8005A7D4 258CD56C */ addiu $t4, %lo(D_8011D56C) # addiu $t4, $t4, -0x2a94 +/* 05B3D0 8005A7D0 3C0C8012 */ lui $t4, %hi(gCurrentRacerWeightStat) # $t4, 0x8012 +/* 05B3D4 8005A7D4 258CD56C */ addiu $t4, %lo(gCurrentRacerWeightStat) # addiu $t4, $t4, -0x2a94 /* 05B3D8 8005A7D8 462054A0 */ cvt.s.d $f18, $f10 /* 05B3DC 8005A7DC E5920000 */ swc1 $f18, ($t4) /* 05B3E0 8005A7E0 860F0204 */ lh $t7, 0x204($s0) @@ -103,19 +103,19 @@ glabel func_8005A6F0 .L8005A7FC: /* 05B3FC 8005A7FC 0C0078A7 */ jal get_misc_asset /* 05B400 8005A800 2404000A */ li $a0, 10 -/* 05B404 8005A804 3C038012 */ lui $v1, %hi(D_8011D564) # $v1, 0x8012 -/* 05B408 8005A808 2463D564 */ addiu $v1, %lo(D_8011D564) # addiu $v1, $v1, -0x2a9c +/* 05B404 8005A804 3C038012 */ lui $v1, %hi(gCurrentRacerMiscAssetPtr) # $v1, 0x8012 +/* 05B408 8005A808 2463D564 */ addiu $v1, %lo(gCurrentRacerMiscAssetPtr) # addiu $v1, $v1, -0x2a9c /* 05B40C 8005A80C AC620000 */ sw $v0, ($v1) /* 05B410 8005A810 82180003 */ lb $t8, 3($s0) -/* 05B414 8005A814 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 +/* 05B414 8005A814 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 /* 05B418 8005A818 00186880 */ sll $t5, $t8, 2 /* 05B41C 8005A81C 004D7021 */ addu $t6, $v0, $t5 /* 05B420 8005A820 C5C60000 */ lwc1 $f6, ($t6) /* 05B424 8005A824 2404000B */ li $a0, 11 /* 05B428 8005A828 0C0078A7 */ jal get_misc_asset -/* 05B42C 8005A82C E426D570 */ swc1 $f6, %lo(D_8011D570)($at) -/* 05B430 8005A830 3C058012 */ lui $a1, %hi(D_8011D564) # $a1, 0x8012 -/* 05B434 8005A834 24A5D564 */ addiu $a1, %lo(D_8011D564) # addiu $a1, $a1, -0x2a9c +/* 05B42C 8005A82C E426D570 */ swc1 $f6, %lo(gCurrentRacerHandlingStat)($at) +/* 05B430 8005A830 3C058012 */ lui $a1, %hi(gCurrentRacerMiscAssetPtr) # $a1, 0x8012 +/* 05B434 8005A834 24A5D564 */ addiu $a1, %lo(gCurrentRacerMiscAssetPtr) # addiu $a1, $a1, -0x2a9c /* 05B438 8005A838 ACA20000 */ sw $v0, ($a1) /* 05B43C 8005A83C 82180003 */ lb $t8, 3($s0) /* 05B440 8005A840 8FA400A0 */ lw $a0, 0xa0($sp) @@ -369,9 +369,9 @@ glabel func_8005A6F0 /* 05B7C4 8005ABC4 02002825 */ move $a1, $s0 /* 05B7C8 8005ABC8 3C0E8012 */ lui $t6, %hi(gCurrentRacerInput) # $t6, 0x8012 /* 05B7CC 8005ABCC 8DCED528 */ lw $t6, %lo(gCurrentRacerInput)($t6) -/* 05B7D0 8005ABD0 3C0C8012 */ lui $t4, %hi(D_8011D56C) # $t4, 0x8012 +/* 05B7D0 8005ABD0 3C0C8012 */ lui $t4, %hi(gCurrentRacerWeightStat) # $t4, 0x8012 /* 05B7D4 8005ABD4 31D88000 */ andi $t8, $t6, 0x8000 -/* 05B7D8 8005ABD8 258CD56C */ addiu $t4, %lo(D_8011D56C) # addiu $t4, $t4, -0x2a94 +/* 05B7D8 8005ABD8 258CD56C */ addiu $t4, %lo(gCurrentRacerWeightStat) # addiu $t4, $t4, -0x2a94 /* 05B7DC 8005ABDC 17000003 */ bnez $t8, .L8005ABEC /* 05B7E0 8005ABE0 240B0001 */ li $t3, 1 /* 05B7E4 8005ABE4 240F0001 */ li $t7, 1 @@ -505,13 +505,13 @@ glabel func_8005A6F0 .L8005ADC8: /* 05B9C8 8005ADC8 3C013F80 */ li $at, 0x3F800000 # 1.000000 /* 05B9CC 8005ADCC 44814000 */ mtc1 $at, $f8 -/* 05B9D0 8005ADD0 3C018012 */ lui $at, %hi(D_8011D570) # $at, 0x8012 +/* 05B9D0 8005ADD0 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 /* 05B9D4 8005ADD4 24040021 */ li $a0, 33 /* 05B9D8 8005ADD8 0C0078A7 */ jal get_misc_asset -/* 05B9DC 8005ADDC E428D570 */ swc1 $f8, %lo(D_8011D570)($at) +/* 05B9DC 8005ADDC E428D570 */ swc1 $f8, %lo(gCurrentRacerHandlingStat)($at) /* 05B9E0 8005ADE0 8FB900A0 */ lw $t9, 0xa0($sp) -/* 05B9E4 8005ADE4 3C018012 */ lui $at, %hi(D_8011D564) # $at, 0x8012 -/* 05B9E8 8005ADE8 AC22D564 */ sw $v0, %lo(D_8011D564)($at) +/* 05B9E4 8005ADE4 3C018012 */ lui $at, %hi(gCurrentRacerMiscAssetPtr) # $at, 0x8012 +/* 05B9E8 8005ADE8 AC22D564 */ sw $v0, %lo(gCurrentRacerMiscAssetPtr)($at) /* 05B9EC 8005ADEC 8F2D0040 */ lw $t5, 0x40($t9) /* 05B9F0 8005ADF0 00000000 */ nop /* 05B9F4 8005ADF4 91A4005D */ lbu $a0, 0x5d($t5) diff --git a/asm/non_matchings/racer/func_8005B818.s b/asm/non_matchings/racer/func_8005B818.s index 0d149b6a..49777b48 100644 --- a/asm/non_matchings/racer/func_8005B818.s +++ b/asm/non_matchings/racer/func_8005B818.s @@ -43,9 +43,9 @@ glabel func_8005B818 /* 05C46C 8005B86C AFA60130 */ sw $a2, 0x130($sp) /* 05C470 8005B870 0C0078A7 */ jal get_misc_asset /* 05C474 8005B874 24040021 */ li $a0, 33 -/* 05C478 8005B878 3C018012 */ lui $at, %hi(D_8011D564) # $at, 0x8012 +/* 05C478 8005B878 3C018012 */ lui $at, %hi(gCurrentRacerMiscAssetPtr) # $at, 0x8012 /* 05C47C 8005B87C 0C01AF6C */ jal get_current_level_header -/* 05C480 8005B880 AC22D564 */ sw $v0, %lo(D_8011D564)($at) +/* 05C480 8005B880 AC22D564 */ sw $v0, %lo(gCurrentRacerMiscAssetPtr)($at) /* 05C484 8005B884 0C006E99 */ jal func_8001BA64 /* 05C488 8005B888 AFA20080 */ sw $v0, 0x80($sp) /* 05C48C 8005B88C 10400260 */ beqz $v0, .L8005C210 diff --git a/include/enums.h b/include/enums.h index 9ce6b963..d3abd23c 100644 --- a/include/enums.h +++ b/include/enums.h @@ -79,4 +79,108 @@ typedef enum AlignmentFlags { ALIGN_BOTTOM_RIGHT = VERT_ALIGN_BOTTOM | HORZ_ALIGN_RIGHT } AlignmentFlags; +typedef enum MiscAsset { + MISC_ASSET_UNK00, + MISC_ASSET_UNK01, + MISC_ASSET_UNK02, + MISC_ASSET_UNK03, + MISC_ASSET_UNK04, + MISC_ASSET_UNK05, + MISC_ASSET_UNK06, + MISC_ASSET_UNK07, + MISC_ASSET_UNK08, + MISC_RACER_WEIGHT, + MISC_RACER_HANDLING, + MISC_ASSET_UNK0B, + MISC_ASSET_UNK0C, + MISC_ASSET_UNK0D, + MISC_ASSET_UNK0E, + MISC_ASSET_UNK0F, + MISC_ASSET_UNK10, + MISC_ASSET_UNK11, + MISC_ASSET_UNK12, + MISC_ASSET_UNK13, + MISC_ASSET_UNK14, + MISC_ASSET_UNK15, + MISC_ASSET_UNK16, + MISC_ASSET_UNK17, + MISC_ASSET_UNK18, + MISC_ASSET_UNK19, + MISC_ASSET_UNK1A, + MISC_ASSET_UNK1B, + MISC_ASSET_UNK1C, + MISC_ASSET_UNK1D, + MISC_ASSET_UNK1E, + MISC_ASSET_UNK1F, + MISC_ASSET_UNK20, + MISC_ASSET_UNK21, + MISC_ASSET_UNK22, + MISC_ASSET_UNK23, + MISC_ASSET_UNK24, + MISC_ASSET_UNK25, + MISC_ASSET_UNK26, + MISC_ASSET_UNK27, + MISC_ASSET_UNK28, + MISC_ASSET_UNK29, + MISC_ASSET_UNK2A, + MISC_ASSET_UNK2B, + MISC_ASSET_UNK2C, + MISC_ASSET_UNK2D, + MISC_ASSET_UNK2E, + MISC_ASSET_UNK2F, + MISC_ASSET_UNK30, + MISC_ASSET_UNK31, + MISC_ASSET_UNK32, + MISC_ASSET_UNK33, + MISC_ASSET_UNK34, + MISC_ASSET_UNK35, + MISC_ASSET_UNK36, + MISC_ASSET_UNK37, + MISC_ASSET_UNK38, + MISC_ASSET_UNK39, + MISC_ASSET_UNK3A, + MISC_ASSET_UNK3B, + MISC_ASSET_UNK3C, + MISC_ASSET_UNK3D, + MISC_ASSET_UNK3E, + MISC_ASSET_UNK3F, + MISC_ASSET_UNK40, + MISC_ASSET_UNK41, + MISC_ASSET_UNK42, + MISC_ASSET_UNK43, + MISC_ASSET_UNK44, + MISC_ASSET_UNK45, + MISC_ASSET_UNK46, + MISC_ASSET_UNK47, + MISC_ASSET_UNK48, + MISC_ASSET_UNK49, + MISC_ASSET_UNK4A, + MISC_ASSET_UNK4B, + MISC_ASSET_UNK4C +} MiscAsset; + +typedef enum SurfaceType { + SURFACE_DEFAULT, + SURFACE_GRASS, + SURFACE_SAND, + SURFACE_UNK03, + SURFACE_STONE, + SURFACE_UNK05, + SURFACE_UNK06, + SURFACE_UNK07, + SURFACE_UNK08, + SURFACE_UNK09, + SURFACE_FROZEN_WATER, + SURFACE_UNK0B, + SURFACE_TAJ_PAD, + SURFACE_SNOW, + SURFACE_UNK0E, + SURFACE_UNK0F, + SURFACE_UNK10, + SURFACE_INVIS_WALL, + SURFACE_UNK12, + + SURFACE_NONE = 255 +} SurfaceType; + #endif diff --git a/include/math_util.h b/include/math_util.h index b34b498d..54c30b19 100644 --- a/include/math_util.h +++ b/include/math_util.h @@ -24,6 +24,6 @@ s16 arctan2_f(f32 y, f32 x); f32 sine_s(s16 angle); f32 cosine_s(s16 angle); void func_80031130(s32, f32*, f32*, s32); -s32 func_80031600(f32*, f32*, s32*, s8*, s32, s32*); +s32 func_80031600(f32*, f32*, s32*, s8* surface, s32, s32*); #endif // MATH_UTIL_H diff --git a/include/sound_ids.h b/include/sound_ids.h index 74ac0f2d..a78fddc1 100644 --- a/include/sound_ids.h +++ b/include/sound_ids.h @@ -12,39 +12,39 @@ // Anything I've labelled as UNK, without a comment, is something I didn't get an audible sound from. enum SoundID { - SOUND_UNK0, + SOUND_UNK00, SOUND_CAR_SLIDE, SOUND_CAR_SLIDE2, // Not sure what this is for. I thought it was for the brakes originally, but there's clearly a brake SOUND_INTRO_PLANE, SOUND_INTRO_KIDS, - SOUND_UNK5, // Sounds like something sifting, idk. - SOUND_UNK6, // Same thing, but faster - SOUND_UNK7, - SOUND_UNK8, + SOUND_UNK_05, // Sounds like something sifting, idk. + SOUND_UNK_06, // Same thing, but faster + SOUND_UNK_07, + SOUND_UNK_08, SOUND_STOMP, - SOUND_UNK10, - SOUND_UNK11, + SOUND_UNK_0A, + SOUND_UNK_0B, SOUND_CRASH, SOUND_CRASH2, // Not the same as the last, sounds like a cymbal or something. SOUND_BALLOON_POP, SOUND_PLOP, // Dropping a landmine - SOUND_UNK16, + SOUND_UNK_10, SOUND_EXPLOSION, SOUND_NYOOM, // Firing a rocket. - SOUND_UNK19, - SOUND_UNK20, - SOUND_UNK21, + SOUND_UNK_13, + SOUND_UNK_14, + SOUND_UNK_15, SOUND_WHOOSH1, // The hud flying in on a race start. SOUND_EXPLOSION2, // Not sure what this one's for. SOUND_VOICE_TT_GET_READY, SOUND_VOICE_TT_GO, - SOUND_UNK26, - SOUND_UNK27, + SOUND_UNK_1A, + SOUND_UNK_1B, SOUND_CAR_BRAKE, - SOUND_UNK_29, - SOUND_UNK_30, - SOUND_UNK_31, - SOUND_UNK_32, + SOUND_UNK_1D, + SOUND_UNK_1E, + SOUND_UNK_1F, + SOUND_UNK_20, SOUND_NITRO_BOOST, SOUND_SELECT, SOUND_VOICE_TAJ_CUTSCENE_0, // "Woah there!" @@ -54,7 +54,7 @@ enum SoundID { SOUND_LIGHTNING, SOUND_VOICE_TAJ_WOAH, SOUND_VOICE_TAJ_HINT, // "I've got something special for you." - SOUND_UNK42, // Sounds like a wave or something, not sure. + SOUND_UNK_2A, // Sounds like a wave or something, not sure. SOUND_RIBBIT, // :frog: SOUND_SPLOOSH, SOUND_VOICE_TAJ_WINNER, // "You won first prize!" @@ -63,11 +63,11 @@ enum SoundID { SOUND_WHOOSH2, // This is a transition before a Taj Tech Tip. SOUND_WHOOSH3, // Don't remember what this is but I know it's used somewhere. SOUND_VOICE_TAJ_BALLOON, // "This is for you." - SOUND_UNK51, // Some softer gong thing maybe? + SOUND_UNK_33, // Some softer gong thing maybe? SOUND_TWINKLE, // Sounds like a lower, slower version of SOUND_SELECT SOUND_VOICE_WIZPIG_LAUGH, SOUND_NYOOM_HIGH, // High pitched nyoom. - SOUND_UNK55, // I cannot describe tbis. uhh, a car coming past? really I can't say + SOUND_UNK_37, // I cannot describe tbis. uhh, a car coming past? really I can't say SOUND_VOICE_TT_RADIO, // "Okay control" remind me to find the subtitles for this lol. It's the rocket. SOUND_DOOR_CLOSE, SOUND_VOICE_TT_THREE, @@ -77,7 +77,7 @@ enum SoundID { SOUND_VOICE_TT_ONE, SOUND_VOICE_TT_BLASTOFF, SOUND_ROCKET_LAUNCH, - SOUND_UNK65, // Sounds like an explosion sort. Likely related to the rocket. + SOUND_UNK_41, // Sounds like an explosion sort. Likely related to the rocket. SOUND_VOICE_DIDDY_LAUGH, SOUND_VOICE_BANJO_GUHHUH, SOUND_VOICE_DIDDY_LAUGH2, @@ -97,28 +97,28 @@ enum SoundID { SOUND_VOICE_WIZPIG_LAUGH3, SOUND_VOICE_WIZPIG_ENDING, // "Sorry to break the party worms, but I had to say goodbyte!" SOUND_VOICE_WIZPIG_UNK0, // "Well lookie here, it's the little worm!" - SOUND_UNK85, // Sounds like some future something + SOUND_UNK_55, // Sounds like some future something SOUND_VOICE_WIZPIG_SEEYA, // "See ya later, worms!" SOUND_VOICE_WIZPIG_LAUGH4, SOUND_VOICE_BLUEY_REMATCH1, // "Fantastic!" SOUND_VOICE_BLUEY_REMATCH2, // "If you can beat me again..." SOUND_VOICE_BLUEY_REMATCH3, // "I'll give you a special prize" - SOUND_UNK91, // Might be the hovercraft engine. - SOUND_UNK92, // Might be the car engine. + SOUND_UNK_58, // Might be the hovercraft engine. + SOUND_UNK_59, // Might be the car engine. SOUND_TING_LOW, SOUND_TING_HIGH, SOUND_BOOST_LEVEL3, - SOUND_UNK96, // Also not sure - SOUND_UNK97, // Sounds like an earthquake, goes on for absolutely ever, but not a continuous sound. + SOUND_UNK_60, // Also not sure + SOUND_UNK_61, // Sounds like an earthquake, goes on for absolutely ever, but not a continuous sound. SOUND_ELECTRIC_BUZZ, // Bzzzz! - SOUND_UNK99, // sounds kind of like lightning but not 100% sure - SOUND_UNK100, - SOUND_UNK101, + SOUND_UNK_63, // sounds kind of like lightning but not 100% sure + SOUND_UNK_64, + SOUND_UNK_65, SOUND_VOICE_TT_WRONG_WAY, SOUND_VOICE_TT_NONONO, SOUND_MENU_BACK, SOUND_MENU_BACK2, // Appears to be exactly the same as the previous to my tonedeaf ears. - SOUND_UNK106, // Same thing as the previous but with an inverse wave. + SOUND_UNK_6A, // Same thing as the previous but with an inverse wave. SOUND_VOICE_WIZPIG_ENCOUNTER, // "You can't beat me!" SOUND_VOICE_WIZPIG_DEFEAT, // "Gragh, no! No!" SOUND_VOICE_WIZPIG_GROAN, @@ -128,23 +128,23 @@ enum SoundID { SOUND_ZAP3, SOUND_VOICE_WIZPIG_SCREAM2, SOUND_VOICE_KRUNCH_LAUGH, - SOUND_UNK116, // More lightning? + SOUND_UNK_74, // More lightning? SOUND_VOICE_WIZPIG_SCREAM3, SOUND_VOICE_DRUMSTUCK_BWAK, // Chicken noises intensify. SOUND_VOICE_BLUEY_GOODBYE, // "Goodbye, Kid!" SOUND_VOICE_BANJO_YAHOO, SOUND_VOICE_BLUEY_SILVERCOINS2, // "Collect all the silver coins from the snow world" SOUND_CAR_REV, // Selecting the car in the menu, and the initial revs at the start. - SOUND_UNK123, - SOUND_UNK124, - SOUND_UNK125, - SOUND_UNK126, - SOUND_UNK127, - SOUND_UNK128, - SOUND_UNK129, - SOUND_UNK130, - SOUND_UNK131, - SOUND_UNK132, + SOUND_UNK_7B, + SOUND_UNK_7C, + SOUND_UNK_7D, + SOUND_UNK_7E, + SOUND_UNK_7F, + SOUND_UNK_80, + SOUND_UNK_81, + SOUND_UNK_82, + SOUND_UNK_83, + SOUND_UNK_84, SOUND_VOICE_BLUEY_TROPHY_CHALLENGE, // "Now try the trophy challenge" SOUND_VOICE_BLUEY_AMULET, // "You've won a piece of the amulet" SOUND_VOICE_KRUNCH_SELECT, // "My name's Krunch" @@ -187,9 +187,9 @@ enum SoundID { SOUND_STOMP2, SOUND_STOMP3, SOUND_BOUNCE, - SOUND_UNK175, // sounds just like UNK5 + SOUND_UNK_AF, // sounds just like UNK5 SOUND_FOOTSTEP, - SOUND_UNK177, // Very low pitch something + SOUND_UNK_B1, // Very low pitch something SOUND_MENU_PICK, SOUND_VOICE_WIZPIG_LAUGH_SHORT2, SOUND_VOICE_WIZPIG_LAUGH_SHORT3, @@ -221,7 +221,7 @@ enum SoundID { SOUND_VOICE_SMOKEY_GOODTRY, // "Excellent" SOUND_VOICE_SMOKEY_SILVERCOINS3, // "You must find 8 from each level and win" SOUND_VOICE_SMOKEY_SILVERCOINS4, // "Then come back and see me" - SOUND_UNK209, + SOUND_UNK_D1, SOUND_VOICE_SMOKEY_BADLUCK, // "Bad luck" SOUND_VOICE_SMOKEY_RETRY, // "Try again whenever you're ready" SOUND_VOICE_SMOKEY_TROPHY1, // "You have earned a piece of the amulet" @@ -249,8 +249,8 @@ enum SoundID { SOUND_VOICE_BLUEY_ENCOUNTER2, // "Now I challenge you to a race" SOUND_MENU_PICK2, SOUND_MENU_PICK3, - SOUND_UNK237, - SOUND_UNK238, + SOUND_UNK_ED, + SOUND_UNK_EE, SOUND_SELECT2, SOUND_VOICE_TRICKY_WOAH3, SOUND_VOICE_TRICKY_WOAH4, @@ -264,21 +264,21 @@ enum SoundID { SOUND_VOICE_SMOKEY_LAUGH, SOUND_VOICE_BLUEY_HAHA3, SOUND_VOICE_BLUEY_HAHA4, - SOUND_UNK252, + SOUND_UNK_FC, SOUND_CROWD, SOUND_MENU_PICK4, - SOUND_UNK255, + SOUND_UNK_FF, SOUND_VOICE_TT_LAP2, SOUND_VOICE_TT_FINAL_LAP, SOUND_VOICE_TT_FINISH, - SOUND_UNK259, // Sounds like car engines driving past - SOUND_UNK260, // Continuous sound, not sure what it is + SOUND_UNK_103, // Sounds like car engines driving past + SOUND_UNK_104, // Continuous sound, not sure what it is SOUND_VOICE_TT_DIDDY_KONG_RACING, // title drop SOUND_VOICE_TT_PRESS_START, SOUND_ZIP_PAD_BOOST, - SOUND_UNK264, - SOUND_UNK265, - SOUND_UNK266, + SOUND_UNK_108, + SOUND_UNK_109, + SOUND_UNK_10A, SOUND_STOMP4, SOUND_STOMP5, SOUND_INTRO_KIDS2, @@ -329,7 +329,7 @@ enum SoundID { SOUND_MAGNET_HUM, SOUND_TYRE_SCREECH, SOUND_TWANG, - SOUND_UNK317, // Unsure + SOUND_UNK_13D, // Unsure SOUND_VOICE_TT_POWERUP, SOUND_SPLAT, SOUND_PLOP2, @@ -338,11 +338,11 @@ enum SoundID { SOUND_VOICE_TT_OK, SOUND_VOICE_TT_LAP_RECORD, SOUND_VOICE_TT_RACE_RECORD, - SOUND_UNK326, + SOUND_UNK_146, SOUND_VOICE_TT_GO_FOR_IT, SOUND_VOICE_TT_KEEP_GOING, SOUND_VOICE_TT_YOU_CAN_DO_THIS, - SOUND_UNK330, + SOUND_UNK_14A, SOUND_VOICE_TT_OH_NO, SOUND_VOICE_TT_TOO_BAD, SOUND_VOICE_TT_UNLUCKY, @@ -559,9 +559,9 @@ enum SoundID { //Betting these are unused, because they sit in the spot where character ID's should be. SOUND_VOICE_BLUEY_REMATCH4, // "If you can beat me again..." SOUND_VOICE_BLUEY_TROPHY2, // "Goodbye kid" - SOUND_UNK546, // I'm guessing rolling snowballs - SOUND_UNK547, // The sound of hitting something - SOUND_UNK548, // Same + SOUND_UNK_222, // I'm guessing rolling snowballs + SOUND_UNK_223, // The sound of hitting something + SOUND_UNK_224, // Same SOUND_VOICE_TRICKY_OW, SOUND_VOICE_TRICKY_OW2, SOUND_VOICE_SMOKEY_HM, @@ -606,53 +606,53 @@ enum SoundID { SOUND_VOICE_TT_BEAT_ALL_TIMES, // "You've beaten all my times" SOUND_VOICE_TT_UNLOCKED, // "Now you can pick me" SOUND_VOICE_TAJ_CHALLENGE_RACE, // "I challenge you to a race" - SOUND_UNK593, - SOUND_UNK594, - SOUND_UNK595, - SOUND_UNK596, - SOUND_UNK597, - SOUND_UNK598, - SOUND_UNK599, - SOUND_UNK600, - SOUND_UNK601, - SOUND_UNK602, - SOUND_UNK603, - SOUND_UNK604, - SOUND_UNK605, - SOUND_UNK606, - SOUND_UNK607, - SOUND_UNK608, - SOUND_UNK609, - SOUND_UNK610, - SOUND_UNK611, - SOUND_UNK612, - SOUND_UNK613, - SOUND_UNK614, - SOUND_UNK615, - SOUND_UNK616, - SOUND_UNK617, - SOUND_UNK618, - SOUND_UNK619, - SOUND_UNK620, - SOUND_UNK621, - SOUND_UNK622, - SOUND_UNK623, - SOUND_UNK624, - SOUND_UNK625, - SOUND_UNK626, - SOUND_UNK627, - SOUND_UNK628, - SOUND_UNK629, - SOUND_UNK630, - SOUND_UNK631, - SOUND_UNK632, - SOUND_UNK633, - SOUND_UNK634, - SOUND_UNK635, - SOUND_UNK636, - SOUND_UNK637, - SOUND_UNK638, - // Trying to play 639 onwards will incur a crash. + SOUND_UNK_251, + SOUND_UNK_252, + SOUND_UNK_253, + SOUND_UNK_254, + SOUND_UNK_255, + SOUND_UNK_256, + SOUND_UNK_257, + SOUND_UNK_258, + SOUND_UNK_259, + SOUND_UNK_25A, + SOUND_UNK_25B, + SOUND_UNK_25C, + SOUND_UNK_25D, + SOUND_UNK_25E, + SOUND_UNK_25F, + SOUND_UNK_260, + SOUND_UNK_261, + SOUND_UNK_262, + SOUND_UNK_263, + SOUND_UNK_264, + SOUND_UNK_265, + SOUND_UNK_266, + SOUND_UNK_267, + SOUND_UNK_268, + SOUND_UNK_269, + SOUND_UNK_26A, + SOUND_UNK_26B, + SOUND_UNK_26C, + SOUND_UNK_26D, + SOUND_UNK_26E, + SOUND_UNK_26F, + SOUND_UNK_270, + SOUND_UNK_271, + SOUND_UNK_272, + SOUND_UNK_273, + SOUND_UNK_274, + SOUND_UNK_275, + SOUND_UNK_276, + SOUND_UNK_277, + SOUND_UNK_278, + SOUND_UNK_279, + SOUND_UNK_27A, + SOUND_UNK_27B, + SOUND_UNK_27C, + SOUND_UNK_27E, + SOUND_UNK_27F, + // Trying to play 27F onwards will incur a crash. NUM_SOUND_IDS }; diff --git a/include/structs.h b/include/structs.h index 39a1b7a7..6f7c2b56 100644 --- a/include/structs.h +++ b/include/structs.h @@ -393,7 +393,8 @@ typedef struct ObjectModel { /* 0x24 */ s16 numberOfVertices; /* 0x26 */ s16 numberOfTriangles; /* 0x28 */ s16 numberOfBatches; - u8 pad2A[6]; + u8 pad2A[4]; +/* 0x2E */ u8 unk2E; /* 0x30 */ s16 unk30; u8 pad32[6]; /* 0x38 */ TriangleBatchInfo *batches; @@ -407,7 +408,7 @@ typedef struct ObjectModel { typedef struct LevelModelSegment { /* 0x00 */ Vertex *vertices; /* 0x04 */ Triangle *triangles; - u8 pad8[4]; +/* 0x08 */ s32 unk8; /* 0x0C */ TriangleBatchInfo *batches; /* 0x10 */ s32 unk10; /* 0x14 */ u8 *unk14; @@ -810,9 +811,9 @@ typedef struct Object_Racer { /* 0x004 */ s32 unk4; /* 0x008 */ f32 forwardVel; /* 0x00C */ s32 unkC; - /* 0x010 */ f32 unk10; - /* 0x014 */ f32 unk14; - /* 0x018 */ f32 unk18; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ s32 unk18; /* 0x01C */ s32 unk1C; /* 0x020 */ s32 unk20; /* 0x024 */ s32 soundMask; @@ -833,9 +834,9 @@ typedef struct Object_Racer { /* 0x05C */ f32 prev_x_position; /* 0x060 */ f32 prev_y_position; /* 0x064 */ f32 prev_z_position; - /* 0x068 */ s32 unk68; - /* 0x06C */ s32 unk6C; - /* 0x070 */ s32 unk70; + /* 0x068 */ f32 unk68; + /* 0x06C */ f32 unk6C; + /* 0x070 */ f32 unk70; /* 0x074 */ f32 unk74; /* 0x078 */ f32 carBobX; /* 0x07C */ f32 carBobY; @@ -865,7 +866,7 @@ typedef struct Object_Racer { /* 0x0E4 */ f32 unkE4[3]; /* 0x0F0 */ f32 unkF0[3]; /* 0x0FC */ f32 unkFC[3]; - /* 0x108 */ s32 unk108; + /* 0x108 */ struct Object *unk108; /* 0x10C */ s32 unk10C; /* 0x110 */ s32 unk110; /* 0x114 */ s32 unk114; @@ -899,7 +900,7 @@ typedef struct Object_Racer { /* 0x174 */ s8 balloon_level; /* 0x175 */ s8 unk175; /* 0x176 */ s16 unk176; - /* 0x178 */ s32 unk178; + /* 0x178 */ s32 *unk178; /* 0x17C */ s32 shieldSoundMask; /* 0x180 */ s32 unk180; // Soundmask for banana pickup, whether that's the only use I do not yet know. /* 0x184 */ s8 unk184; @@ -934,8 +935,10 @@ typedef struct Object_Racer { /* 0x1B4 */ s32 unk1B4; /* 0x1B8 */ s16 unk1B8; /* 0x1BA */ s16 unk1BA; - /* 0x1BC */ s32 unk1BC; - /* 0x1C0 */ s32 unk1C0; + /* 0x1BC */ s16 unk1BC; + /* 0x1BE */ s16 unk1BE; + /* 0x1C0 */ s16 unk1C0; + /* 0x1C2 */ s16 unk1C2; /* 0x1C4 */ s16 unk1C4; /* 0x1C6 */ s16 unk1C6; /* 0x1C8 */ u8 unk1C8; @@ -973,7 +976,7 @@ typedef struct Object_Racer { /* 0x1EB */ s8 unk1EB; /* 0x1EC */ s8 unk1EC; /* 0x1ED */ s8 squish_timer; - /* 0x1EE */ s8 unk1EE; + /* 0x1EE */ u8 unk1EE; /* 0x1EF */ u8 boost_sound; /* 0x1F0 */ u8 unk1F0; /* 0x1F1 */ u8 unk1F1; @@ -987,11 +990,11 @@ typedef struct Object_Racer { /* 0x291 */ s8 indicator_timer; /* 0x1FA */ s8 unk1FA; /* 0x1FB */ s8 unk1FB; - /* 0x1FC */ s8 unk1FC; + /* 0x1FC */ u8 unk1FC; /* 0x1FD */ u8 unk1FD; /* 0x1FE */ u8 unk1FE; /* 0x1FF */ u8 unk1FF; - /* 0x200 */ s8 unk200; + /* 0x200 */ s8 transitionTimer; /* 0x201 */ s8 unk201; /* 0x202 */ s8 unk202; /* 0x203 */ s8 boostType; diff --git a/src/game.c b/src/game.c index 67930b8e..7e600ec4 100644 --- a/src/game.c +++ b/src/game.c @@ -337,7 +337,7 @@ s32 get_hub_area_id(s32 worldId) { if (worldId < 0 || worldId >= gNumberOfWorlds) { worldId = 0; } - hubAreaIds = (s8 *)get_misc_asset(27); //hub_area_ids + hubAreaIds = (s8 *)get_misc_asset(MISC_ASSET_UNK1B); //hub_area_ids return hubAreaIds[worldId]; } @@ -427,7 +427,7 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId, D_800DD330 = (u8)2; } } - someAsset = get_misc_asset(0x43); + someAsset = get_misc_asset(MISC_ASSET_UNK43); phi_s0 = 0; while (levelId != someAsset[phi_s0 + 1]) { phi_s0++; @@ -445,7 +445,7 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId, // Trigger World Key unlocking Challenge Door cutscene. func_8006C1AC(levelId, entranceId, vehicleId, cutsceneId); settings->cutsceneFlags |= temp_v0_5; - levelId = get_misc_asset(0x44)[curWorld - 1]; + levelId = get_misc_asset(MISC_ASSET_UNK44)[curWorld - 1]; entranceId = 0; cutsceneId = 5; } @@ -460,7 +460,7 @@ void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId, entranceId = 0; func_8006C1AC(levelId, savedEntranceId, vehicleId, savedCutsceneId); settings->cutsceneFlags |= 0x2000; - levelId = get_misc_asset(0x44)[1]; + levelId = get_misc_asset(MISC_ASSET_UNK44)[1]; } } } @@ -1740,7 +1740,7 @@ void func_8006E770(Settings *settings, s32 arg1) { u16 *temp_v0; get_number_of_levels_and_worlds(&numLevels, &numWorlds); - temp_v0 = (u16 *)get_misc_asset(0x17); + temp_v0 = (u16 *)get_misc_asset(MISC_ASSET_UNK17); for (i = 0; i < 3; i++) { // 3 = number of save files? for (j = 0; j < numLevels; j++) { index = (j * 12) + (i * 4); diff --git a/src/menu.c b/src/menu.c index c4892b6f..6ef02bd2 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1702,7 +1702,7 @@ void func_80081218(void) { D_80126530[3] = (u8 *)D_80126530[2] + sp20; D_80126530[3]->courseFlagsPtr = (u8 *)D_80126530[3] + sizeof(Settings); D_80126530[3]->balloonsPtr = (u8 *)D_80126530[3]->courseFlagsPtr + sp28; - gCheatsAssetData = get_misc_asset(0x41); + gCheatsAssetData = get_misc_asset(MISC_ASSET_UNK41); gNumberOfCheats = (s32)(*gCheatsAssetData); gMenuText = allocate_from_main_pool_safe(1024 * sizeof(char *), COLOUR_TAG_WHITE); load_menu_text(LANGUAGE_ENGLISH); @@ -2325,7 +2325,7 @@ void menu_title_screen_init(void) { func_80000890(0); set_time_trial_enabled(FALSE); D_80126864 = 0; - sTitleScreenDemoIds = (TitleScreenDemos *)get_misc_asset(66); + sTitleScreenDemoIds = (TitleScreenDemos *)get_misc_asset(MISC_ASSET_UNK42); numberOfPlayers = sTitleScreenDemoIds->numberOfPlayers; D_80126868 = 0; if (numberOfPlayers == -2) { @@ -5126,7 +5126,7 @@ s32 func_80092BE0(s32 arg0) { s32 index; s32 temp; - trackIdArray = (s8 *)get_misc_asset(0x1C); + trackIdArray = (s8 *)get_misc_asset(MISC_ASSET_UNK1C); index = 0; temp = -1; @@ -5704,7 +5704,7 @@ void menu_trophy_race_round_init(void) { s8 *levelIds; settings = get_settings(); - levelIds = (s8 *)get_misc_asset(26); // Returns level ids array. + levelIds = (s8 *)get_misc_asset(MISC_ASSET_UNK1A); // Returns level ids array. if (gTrophyRaceRound == 0) { for (i = 0; i < 8; i++) { @@ -5745,7 +5745,7 @@ void draw_trophy_race_text(UNUSED s32 updateRate) { u8 *levelName; s8 *levelIds; - levelIds = (s8 *)get_misc_asset(26); + levelIds = (s8 *)get_misc_asset(MISC_ASSET_UNK1A); if (osTvType == TV_TYPE_PAL) { yPos = 18; } else { @@ -5772,7 +5772,7 @@ s32 menu_trophy_race_round_loop(s32 updateRate) { s16 temp_a2; s32 temp; - trackMenuIds = (s8 *)get_misc_asset(26); //tracks_menu_ids + trackMenuIds = (s8 *)get_misc_asset(MISC_ASSET_UNK1A); //tracks_menu_ids if (D_800E0980 != 0) { D_800E0980 -= updateRate; if (D_800E0980 <= 0) { @@ -6059,7 +6059,7 @@ void func_8009ABD8(s8 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { arg0++; } - if ((phi_v1 == 0) && (get_misc_asset(0x19) == (s32 *)arg0)) { + if ((phi_v1 == 0) && (get_misc_asset(MISC_ASSET_UNK19) == (s32 *)arg0)) { D_8012684C = 1; } else { D_8012684C = 0; diff --git a/src/object_functions.c b/src/object_functions.c index d47a1c12..7de02c51 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -777,7 +777,7 @@ void obj_init_airzippers_waterzippers(Object *obj, LevelObjectEntry_AirZippers_W void obj_loop_airzippers_waterzippers(Object *obj, UNUSED s32 speed) { Object *curRacerObj; - Object_Racer *racerObj64; + Object_Racer *racer; f32 xDiff; f32 yDiff; f32 zDiff; @@ -794,14 +794,14 @@ void obj_loop_airzippers_waterzippers(Object *obj, UNUSED s32 speed) { racerObjs = get_object_struct_array(&numObjects); for (i = 0; i < numObjects; i++) { curRacerObj = racerObjs[i]; - racerObj64 = &curRacerObj->unk64->racer; - if ((racerObj64->unk1F5 == 0) && (racerObj64->boostTimer < 15)) { + racer = &curRacerObj->unk64->racer; + if ((racer->unk1F5 == 0) && (racer->boostTimer < 15)) { xDiff = curRacerObj->segment.trans.x_position - obj->segment.trans.x_position; yDiff = curRacerObj->segment.trans.y_position - obj->segment.trans.y_position; zDiff = curRacerObj->segment.trans.z_position - obj->segment.trans.z_position; if ((s32) sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < 100) { - racerObj64->unk1F5 = 1; - racerObj64->unk14C = obj; + racer->unk1F5 = 1; + racer->unk14C = obj; } } } @@ -1501,7 +1501,7 @@ void obj_init_exit(Object *obj, LevelObjectEntry_Exit *entry) { void obj_loop_exit(Object *obj, UNUSED s32 speed) { Object *racerObj; - Object_Racer *racerObj64; + Object_Racer *racer; s32 numberOfRacers; Settings *settings; f32 xDiff; @@ -1529,16 +1529,16 @@ void obj_loop_exit(Object *obj, UNUSED s32 speed) { racerObjects = get_object_struct_array(&numberOfRacers); for (i = 0; i < numberOfRacers; i++) { racerObj = racerObjects[i]; - racerObj64 = &racerObj->unk64->racer; - if ((racerObj64->playerIndex != -1) && (racerObj64->unk108 == 0)) { + racer = &racerObj->unk64->racer; + if ((racer->playerIndex != -1) && (racer->unk108 == 0)) { xDiff = racerObj->segment.trans.x_position - obj->segment.trans.x_position; yDiff = racerObj->segment.trans.y_position - obj->segment.trans.y_position; zDiff = racerObj->segment.trans.z_position - obj->segment.trans.z_position; if ((sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)) < dist)) { temp = (obj64->unk0 * racerObj->segment.trans.x_position) + (obj64->unk8 * racerObj->segment.trans.z_position) + obj64->unkC; if (temp < 0.0f) { - racerObj64->unk108 = obj; - racerObj64->unk200 = -120; + racer->unk108 = obj; + racer->transitionTimer = -120; } } } @@ -1730,7 +1730,7 @@ void obj_loop_bonus(Object *obj, UNUSED s32 speed) { if ((s32) racer->bananas < 10) { racer->bananas = 10; func_80009558(SOUND_SELECT, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, 4, NULL); - play_sound_spatial(racer->characterId + SOUND_UNK123, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, NULL); + play_sound_spatial(racer->characterId + SOUND_UNK_7B, racerObj->segment.trans.x_position, racerObj->segment.trans.y_position, racerObj->segment.trans.z_position, NULL); } } } @@ -2650,7 +2650,7 @@ void obj_loop_bubbler(Object *obj, s32 speed) { } void obj_init_boost(Object *obj, LevelObjectEntry_Boost *entry) { - obj->unk64 = (s32)get_misc_asset(0x14) + (entry->unk8[0] << 7); + obj->unk64 = (s32)get_misc_asset(MISC_ASSET_UNK14) + (entry->unk8[0] << 7); obj->segment.unk3C_a.unk3C = NULL; } diff --git a/src/objects.c b/src/objects.c index 937cf951..42a8937c 100644 --- a/src/objects.c +++ b/src/objects.c @@ -284,7 +284,7 @@ void func_8000B290(void *data) { if (D_800DC754) { free_from_memory_pool(data); } - get_misc_asset(20); + get_misc_asset(MISC_ASSET_UNK14); /*{ if(D_800DC754->unk7a) free_sprite(); diff --git a/src/objects.h b/src/objects.h index a91bcd29..94150679 100644 --- a/src/objects.h +++ b/src/objects.h @@ -30,7 +30,9 @@ typedef struct unknown8011AECC { f32 unk20; f32 unk24; Object* unk28; - u8 pad2C[0xA]; + u8 pad2C[0x2]; + s8 unk2E[4]; + s8 unk32[4]; s8 unk36[4]; s8 unk3A; s8 unk3B; @@ -254,5 +256,6 @@ void func_8001BF20(void); void func_80022E18(s32); /* extern */ void func_80018CE0(Object* obj, f32 xPos, f32 yPos, f32 zPos, s32 updateRate); /* extern */ s32 func_800185E4(s8, Object* obj, f32 xPos, f32 yPos, f32 zPos, f32* checkpointDistance, u8*); /* extern */ +Object *func_8001B7A8(Object *arg0, s32 arg1, f32 *arg2); #endif diff --git a/src/racer.c b/src/racer.c index 6594a802..647b541d 100644 --- a/src/racer.c +++ b/src/racer.c @@ -172,15 +172,15 @@ s32 D_8011D558; s32 gCurrentPlayerIndex; s16 D_8011D560; // Set, but never read. UNUSED s16 D_8011D562; -f32 *D_8011D564; -s32 *D_8011D568; -f32 D_8011D56C; -f32 D_8011D570; +f32 *gCurrentRacerMiscAssetPtr; +f32 *D_8011D568; +f32 gCurrentRacerWeightStat; +f32 gCurrentRacerHandlingStat; f32 D_8011D574; f32 D_8011D578; f32 D_8011D57C; u8 D_8011D580; -s8 D_8011D581; +s8 gCurrentSurfaceType; s8 D_8011D582; s8 D_8011D583; s8 D_8011D584; @@ -202,6 +202,8 @@ struct TempStruct8 **D_8011D5B0; s32 D_8011D5B4; s16 D_8011D5B8; +extern void func_8000488C(u8 *soundMask); + /******************************/ GLOBAL_ASM("asm/non_matchings/racer/func_80042D20.s") @@ -248,7 +250,7 @@ void func_80043ECC(s32 arg0, Object_Racer *racer, s32 updateRate) { } else { D_8011D5BC = 0; } - test = get_misc_asset(12); + test = get_misc_asset(MISC_ASSET_UNK0C); if ((gCurrentButtonsReleased & 0x2000) && racer->balloon_quantity) { if (racer->balloon_level < 3) { phi_a0 = test[racer->balloon_type * 3 + racer->balloon_level]; @@ -276,7 +278,6 @@ void func_80043ECC(s32 arg0, Object_Racer *racer, s32 updateRate) { } } -// Might be the main loop for the AI racers. void func_80044170(Object *obj, Object_Racer *racer, s32 updateRate) { s32 raceType; @@ -556,8 +557,7 @@ void update_camera_hovercraft(f32 updateRate, Object *obj, Object_Racer *racer) gCameraObject->trans.y_position = obj->segment.trans.y_position + phi_f18; } - // Unused function call that wasn't fully optimised out. - sine_s(racer->unk196 + 0x4000); + sine_s(racer->unk196 + 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; segmentIndex = get_level_segment_index_from_position(gCameraObject->trans.x_position, gCameraObject->trans.y_position, gCameraObject->trans.z_position); @@ -620,7 +620,7 @@ GLOBAL_ASM("asm/non_matchings/racer/func_800494E0.s") GLOBAL_ASM("asm/non_matchings/racer/func_80049794.s") // Something Plane related. -void func_8004C0A0(s32 arg0, Object *planeObj, Object_Racer *racer) { +void func_8004C0A0(s32 updateRate, Object *obj, Object_Racer *racer) { s32 temp_v1; s32 phi_v0; @@ -637,21 +637,21 @@ void func_8004C0A0(s32 arg0, Object *planeObj, Object_Racer *racer) { if (phi_v0 > 73) { phi_v0 = 73; } - temp_v1 = phi_v0 - planeObj->segment.unk18; + temp_v1 = phi_v0 - obj->segment.unk18; phi_v0 = 0; if (temp_v1 > 0) { - phi_v0 = arg0 * 3; + phi_v0 = updateRate * 3; if (temp_v1 < phi_v0) { phi_v0 = temp_v1; } } if (temp_v1 < 0) { - phi_v0 = arg0 * -3; + phi_v0 = updateRate * -3; if (phi_v0 < temp_v1) { phi_v0 = temp_v1; } } - planeObj->segment.unk18 += phi_v0; + obj->segment.unk18 += phi_v0; } } @@ -1128,9 +1128,9 @@ void update_player_racer(Object* obj, s32 updateRate) { f32 delta; f32 waterHeight; Object_Racer* tempRacer; - f32 tempX; - f32 tempY; - f32 tempZ; + f32 xTemp; + f32 yTemp; + f32 zTemp; f32 lastCheckpointDist; f32 temp_f12; LevelHeader* header; @@ -1141,7 +1141,7 @@ void update_player_racer(Object* obj, s32 updateRate) { struct LevelObjectEntryCommon newObject; gNumViewports = get_viewport_count() + 1; - D_8011D581 = 0; + gCurrentSurfaceType = SURFACE_DEFAULT; gRaceStartTimer = func_8001139C(); delta = updateRate; tempRacer = (Object_Racer *)obj->unk64; @@ -1204,7 +1204,7 @@ void update_player_racer(Object* obj, s32 updateRate) { gCurrentCourseHeight = header->course_height; tempRacer->throttleReleased = 0; if (tempRacer->playerIndex == PLAYER_COMPUTER) { - func_8005A6F0(obj, tempRacer, updateRate, delta); + func_8005A6F0(obj, tempRacer, updateRate, delta); // AI. } else { // Print player 1's coordinates to the screen if the debug cheat is enabled. if ((gRaceStartTimer == 0) && (tempRacer->playerIndex == PLAYER_ONE)) { @@ -1231,22 +1231,22 @@ void update_player_racer(Object* obj, s32 updateRate) { } else { tempRacer->unk18C = 0; } - D_8011D564 = (f32*) get_misc_asset(9); - D_8011D56C = D_8011D564[tempRacer->characterId] * 0.45; + gCurrentRacerMiscAssetPtr = (f32*) get_misc_asset(MISC_RACER_WEIGHT); + gCurrentRacerWeightStat = gCurrentRacerMiscAssetPtr[tempRacer->characterId] * 0.45; if (tempRacer->unk204 > 0) { - D_8011D56C = -0.02f; + gCurrentRacerWeightStat = -0.02f; } - D_8011D564 = (f32*) get_misc_asset(10); - D_8011D570 = D_8011D564[tempRacer->characterId]; - D_8011D564 = (f32*) get_misc_asset(11); - D_8011D574 = D_8011D564[tempRacer->characterId]; + gCurrentRacerMiscAssetPtr = (f32*) get_misc_asset(MISC_RACER_HANDLING); + gCurrentRacerHandlingStat = gCurrentRacerMiscAssetPtr[tempRacer->characterId]; + gCurrentRacerMiscAssetPtr = (f32*) get_misc_asset(MISC_ASSET_UNK0B); + D_8011D574 = gCurrentRacerMiscAssetPtr[tempRacer->characterId]; if (tempRacer->unk1FE == 3) { - D_8011D56C *= (f32) tempRacer->unk1FF / 256; + gCurrentRacerWeightStat *= (f32) tempRacer->unk1FF / 256; } if (tempRacer->unk1FE == 1) { - D_8011D56C -= (D_8011D56C * tempRacer->unk1FF) / 128; + gCurrentRacerWeightStat -= (gCurrentRacerWeightStat * tempRacer->unk1FF) / 128; if (tempRacer->unk204 > 0) { - D_8011D56C = -D_8011D56C; + gCurrentRacerWeightStat = -gCurrentRacerWeightStat; } } if (tempRacer->unk1FE == 2) { @@ -1256,14 +1256,15 @@ void update_player_racer(Object* obj, s32 updateRate) { tempRacer->unk84 -= tempRacer->unk84 * 0.0625 * delta; tempRacer->unk88 -= tempRacer->unk88 * 0.0625 * delta; } - D_8011D564 = (f32*) get_misc_asset(obj->segment.header->pad5B[1]); + gCurrentRacerMiscAssetPtr = (f32*) get_misc_asset(obj->segment.header->pad5B[1]); D_8011D568 = get_misc_asset(obj->segment.header->pad5B[2]); + if (obj->segment.y_velocity < 4.0 && (tempRacer->unk1E2 >= 3 || tempRacer->buoyancy != 0.0)) { tempRacer->unk1F1 = 0; } - tempX = obj->segment.trans.x_position; - tempY = obj->segment.trans.y_position; - tempZ = obj->segment.trans.z_position; + xTemp = obj->segment.trans.x_position; + yTemp = obj->segment.trans.y_position; + zTemp = obj->segment.trans.z_position; if (tempRacer->unk1B2 > 0) { tempRacer->unk1B2 -= updateRate; if (tempRacer->unk1B2 < 0) { @@ -1299,13 +1300,13 @@ void update_player_racer(Object* obj, s32 updateRate) { gCurrentButtonsPressed = get_buttons_pressed_from_player(tempVar); gCurrentButtonsReleased = get_buttons_released_from_player(tempVar); } else { - func_8005A424(tempRacer, updateRate); + racer_enter_door(tempRacer, updateRate); } } else { func_80044170(obj, tempRacer, updateRate); } //Set the value that decides whether to get an empowered boost. - if ((gCurrentRacerInput & 0x8000) == 0) { + if ((gCurrentRacerInput & A_BUTTON) == 0) { tempRacer->throttleReleased = 1; } if (func_80066510() || gRaceStartTimer == 100 || tempRacer->unk1F1 || D_8011D584 || tempRacer->unk148 || tempRacer->unk204 > 0) { @@ -1454,7 +1455,7 @@ void update_player_racer(Object* obj, s32 updateRate) { func_800050D0(obj, gCurrentButtonsPressed, gCurrentRacerInput, updateRate); } lastCheckpointDist = tempRacer->checkpoint_distance; - tempVar = func_800185E4(tempRacer->unk192, obj, tempX, tempY, tempZ, &tempRacer->checkpoint_distance, &tempRacer->unk1C8); + tempVar = func_800185E4(tempRacer->unk192, obj, xTemp, yTemp, zTemp, &tempRacer->checkpoint_distance, &tempRacer->unk1C8); if (tempVar == -100) { func_8005C270(tempRacer); } @@ -1530,7 +1531,7 @@ void update_player_racer(Object* obj, s32 updateRate) { func_80022E18(2); } } - func_80018CE0(obj, tempX, tempY, tempZ, updateRate); + func_80018CE0(obj, xTemp, yTemp, zTemp, updateRate); func_80059208(obj, tempRacer, updateRate); if (tempRacer->raceStatus == 1) { if (tempRacer->unk1D9 < 60) { @@ -1613,7 +1614,8 @@ void update_player_racer(Object* obj, s32 updateRate) { if (tempRacer->unk150 && gRaceStartTimer == 0) { s8 *yAsset; tempRacer->unk150->segment.trans.x_position = obj->segment.trans.x_position; - yAsset = (s8 *)get_misc_asset(0); + yAsset = (s8 *)get_misc_asset(MISC_ASSET_UNK00); + tempRacer->unk150->segment.trans.y_position = obj->segment.trans.y_position + yAsset[tempRacer->characterId]; tempRacer->unk150->segment.trans.z_position = obj->segment.trans.z_position; tempRacer->unk150->segment.trans.scale = obj->segment.unk30 / 265.0f; @@ -1858,7 +1860,113 @@ s32 func_80052388(Object *obj1, Object_Racer *racer, Object *obj2, f32 distance) return ret; } -GLOBAL_ASM("asm/non_matchings/racer/func_8005250C.s") +void func_8005250C(Object* obj, Object_Racer* racer, s32 updateRate) { + s8 *balloonAsset; + s16 angleDelta; + s32 phi_t1; + s32 angleVel; + s32 newAngle; + s32 actionStatus; + + angleVel = 0; + if (racer->balloon_quantity > 0) { + balloonAsset = (s8 *) get_misc_asset(MISC_ASSET_UNK0C); + + angleVel = balloonAsset[(racer->balloon_type * 10) + (racer->balloon_level * 2)]; + } + if (gCurrentButtonsPressed & Z_TRIG && angleVel != 4 && angleVel != 8) { + racer->unk1F2 = 5; + } + if (racer->boostTimer) { + racer->unk1F3 |= 4; + } + if (racer->unk1F3 & 8) { + if (gNumViewports < 3) { + if (gCurrentPlayerIndex >= PLAYER_ONE) { + obj->unk74 |= 0x100000; + } else { + obj->unk74 |= 0x80000; + } + } + racer->unk1F2 = 4; + } + if (gRaceStartTimer) { + racer->unk1F3 = 0; + racer->unk1F2 = 0; + } + if (racer->raceStatus == STATUS_FINISHED) { + racer->unk1F2 = 0; + racer->unk1F3 = 0; + } + switch (racer->unk1F2) { + case 0: // Sliding, creating tyre marks + angleVel = (s32) (((-racer->y_rotation_vel) >> 8) / gCurrentRacerHandlingStat); + angleVel = 40 - angleVel; + if (angleVel < 0) { + angleVel = 0; + } + if (angleVel > 73) { + angleVel = 73; + } + newAngle = angleVel - obj->segment.unk18; + angleVel = 0; + if (newAngle > 0) { + angleVel = updateRate * 3; + if (newAngle < angleVel) { + angleVel = newAngle; + } + } + if (newAngle < 0) { + angleVel = updateRate * -3; + if (angleVel < newAngle) { + angleVel = newAngle; + } + } + obj->segment.unk18 += angleVel; + obj->segment.unk3B = 0; + if (angleVel); + if (racer->unk1F3 & 4) { + racer->unk1F2 = 3; + racer->unk1F3 &= 0xFFFB; + } + if (racer->velocity > 0.0 && gCurrentRacerInput & B_BUTTON) { + racer->unk1F2 = 6; + } + break; + case 3: // Boost + actionStatus = 2; + if (racer->unk1F3 & 4) { + actionStatus = 6; + } + func_80052988(obj, racer, 2, 0, 32, 4, actionStatus, updateRate); + racer->unk1F3 &= 0xFFFB; + break; + case 4: // Crash + func_80052988(obj, racer, 3, 0, 32, 2, 0, updateRate); + racer->unk1F3 &= 0xFFF7; + break; + case 5: // Horn + actionStatus = 2; + if (gCurrentRacerInput & Z_TRIG) { + actionStatus = 6; + } + func_80052988(obj, racer, 4, 0, 48, 4, actionStatus, updateRate); + break; + case 6: + actionStatus = 3; + if (racer->velocity > 0.0 && gCurrentRacerInput & B_BUTTON) { + actionStatus = 7; // Reverse + } + func_80052988(obj, racer, 1, 0, 80, 3, actionStatus, updateRate); + break; + case 7: + func_80052988(obj, racer, 5, 0, 96, 4, 0, updateRate); + if (racer->unk1F2 == 0) { + func_80052988(obj, racer, 5, 0, 96, 4, 0, updateRate); + } + break; + } +} void func_80052988(Object *obj, Object_Racer *racer, s32 action, s32 arg3, s32 duration, s32 arg5, s32 arg6, s32 arg7) { arg5 *= arg7; @@ -1938,10 +2046,10 @@ void racer_spinout_car(Object* obj, Object_Racer* racer, s32 updateRate, f32 upd obj->unk74 |= 0x4FC00; goto skip; } - if (racer->wheel_surfaces[2] < 0xFF) { + if (racer->wheel_surfaces[2] < SURFACE_NONE) { obj->unk74 |= 1 << (racer->wheel_surfaces[2] * 2); } - if (racer->wheel_surfaces[3] < 0xFF) { + if (racer->wheel_surfaces[3] < SURFACE_NONE) { obj->unk74 |= 2 << (racer->wheel_surfaces[3] * 2); } } @@ -1964,12 +2072,150 @@ void racer_spinout_car(Object* obj, Object_Racer* racer, s32 updateRate, f32 upd } } gCurrentCarSteerVel = racer->y_rotation_vel; - obj->segment.y_velocity -= D_8011D56C * updateRateF; + obj->segment.y_velocity -= gCurrentRacerWeightStat * updateRateF; gCurrentStickX = 0; racer->steerAngle = 0; } -GLOBAL_ASM("asm/non_matchings/racer/func_80052D7C.s") +void func_80052D7C(Object* obj, Object_Racer* racer, s32 updateRate, f32 updateRateF) { + s32 steerAngle; + s32 yStick; + s32 angle; + s8 sp33; + f32 vel; + s32 temp; + + sp33 = 0; + if (racer->unk1FE == 1 && racer->playerIndex == PLAYER_COMPUTER) { + gCurrentStickY = 60; + } + if (racer->unk1F0 != 0) { + if (racer->playerIndex != PLAYER_COMPUTER) { + steerAngle = racer->steerAngle; + } else { + steerAngle = gCurrentStickX; + } + racer->unk1A0 -= (u16) ((steerAngle * 6 * updateRate) >> 1); + angle = -(u16) racer->x_rotation_vel; + if (angle > 0x8000) { + angle -= 0xFFFF; + } + if (angle < -0x8000) { + angle += 0xFFFF; + } + racer->x_rotation_vel += (angle >> 3); + } + if (racer->unk18) { + func_8000488C(racer->unk18); + } + if (racer->unk10) { + func_8000488C(racer->unk10); + } + if (racer->unk14) { + func_8000488C(racer->unk14); + } + if (racer->unk1FE == 1 || racer->unk1FE == 3) { + racer->unk1E8 = racer->steerAngle; + } + if (racer->buoyancy != 0.0) { + if (obj->segment.y_velocity > 2.0) { + obj->segment.y_velocity = 2.0f; + } + if (obj->segment.y_velocity < -2.0) { + obj->segment.y_velocity = -2.0f; + } + racer->unk1E8 = racer->steerAngle; + if (gCurrentRacerInput & A_BUTTON) { + racer->velocity -= 0.5; + } + if (gCurrentRacerInput & B_BUTTON && gCurrentStickY < -25) { + racer->velocity += 0.5; + } + sp33 = 1; + racer->lateral_velocity *= 0.87; + racer->velocity *= 0.87; + obj->segment.y_velocity *= 0.9; + func_800494E0(obj, racer, D_8011D4F8, D_8011D504, updateRate, gCurrentStickX, 6.0f); + } + if (racer->playerIndex == -1) { + racer->unk1E8 = racer->steerAngle; + } + if (racer->boostTimer > 0) { + racer->boostTimer -= updateRate; + } else { + racer->boostTimer = 0; + } + angle = racer->unk1E8 * 6; + if (racer->velocity > 0.3) { + angle = -racer->steerAngle; + angle *= 6; + } + racer->unk1A0 -= angle & 0xFFFF; + gCurrentCarSteerVel = racer->unk110; + if (racer->boostTimer) { + if (racer->velocity > -20.0) { + racer->velocity -= 1.6; + } + } + yStick = gCurrentStickY; + if ((yStick < 50) && (yStick > (-50))) { + yStick = 0; + } + obj->segment.y_velocity -= (obj->segment.y_velocity * 0.025) * updateRateF; + vel = gCurrentRacerWeightStat; + if (racer->unk1F1 || racer->unk1F0) { + vel = 0.45f; + racer->y_rotation_offset += 0x500 * updateRate; + racer->x_rotation_offset += 0x600 * updateRate; + } + if (racer->unk1FE == 1 || racer->unk1FE == 3) { + racer->lateral_velocity *= 0.97; + racer->velocity *= 0.97; + if (yStick > 50) { + racer->velocity -= 0.2; + } + if (yStick < -50) { + racer->velocity += 0.2; + } + sp33 = 1; + } + if (sp33) { + obj->unk74 = 0; + racer->drift_direction = 0; + racer->unk10C -= (racer->unk10C * updateRate) >> 4; + gCurrentCarSteerVel = 0; + handle_car_steering(racer); + } else { + if (yStick > 50) { + vel *= 1.33; + } + if (yStick < -50) { + vel *= 0.53; + } + } + if (racer->boostTimer) { + vel *= 0.5; + } + yStick = -yStick; + yStick *= 64; + yStick = (u16) yStick; + angle = yStick - ((u16) obj->segment.trans.x_rotation); + angle = angle > 0x8000 ? angle - 0xFFFF : angle; + angle = angle < -0x8000 ? angle + 0xFFFF : angle; + obj->segment.trans.x_rotation += (angle >> 3); + obj->segment.y_velocity -= vel * updateRateF; + if (racer->buoyancy == 0.0) { + steerAngle = -obj->segment.y_velocity * 20.0; + if (steerAngle < 50) { + steerAngle = 50; + } + if (steerAngle > 127) { + steerAngle = 127; + } + racer->unk1E0 = steerAngle; + } + obj->unk74 = 0; +} /** * Handle the steering input of all cars. @@ -2154,7 +2400,7 @@ void func_80054110(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } apply_vehicle_rotation_offset(racer, updateRate, 0, 0, 0); header = get_current_level_header(); - if ((racer->buoyancy != 0.0 && header->unk2) || D_8011D581 == 10) { + if ((racer->buoyancy != 0.0 && header->unk2) || gCurrentSurfaceType == SURFACE_FROZEN_WATER) { if (racer->unk1F0) { racer->checkpoint_distance -= 0.3; } else { @@ -2179,7 +2425,7 @@ void func_80054110(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->unk1F0 = 0; } obj->segment.unk3B = 0; - tempAngle = ((-racer->y_rotation_vel >> 8) / D_8011D570); + tempAngle = ((-racer->y_rotation_vel >> 8) / gCurrentRacerHandlingStat); tempAngle = 40 - tempAngle; if (tempAngle < 0) { tempAngle = 0; @@ -2273,7 +2519,154 @@ void func_80054110(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } } -GLOBAL_ASM("asm/non_matchings/racer/func_8005492C.s") +void func_8005492C(Object* obj, Object_Racer* racer, s32 updateRate, f32 updateRateF) { + s32 xStick; + s32 stickMultiplier; + s32 surfaceType; + s32 sp38; + f32 temp_f0_2; + f32 velSquare; + f32 pad; + f32 traction; + f32 forwardVel; + f32 weight; + f32 vel; + f32 multiplier; + s32 rawStick; + s32 velocityS; + s32 temp; + u16 temp2; + + velSquare = racer->velocity * racer->velocity; + racer->unk84 = 0.0f; + racer->unk88 = 0.0f; + if (racer->velocity < 0.0f) { + velSquare = -velSquare; + } + sp38 = 0; + multiplier = handle_racer_top_speed(obj, racer); + if (racer->y_rotation_vel > 0x1C00 || racer->y_rotation_vel < -0x1C00) { + sp38 = 1; + } + rawStick = gCurrentStickX; + stickMultiplier = 6; + if (gCurrentRacerInput & B_BUTTON) { + stickMultiplier = 12; + } + if (gCurrentRacerInput & B_BUTTON && racer->drift_direction != 0) { + stickMultiplier = 18; + } + xStick = 0; + if (racer->velocity < -0.3) { + xStick = rawStick * stickMultiplier; + } + if (racer->velocity > 0.3) { + xStick = -rawStick * stickMultiplier; + } + xStick *= updateRate; + temp = (s32) ((xStick >> 1) * gCurrentRacerHandlingStat); + temp2 = temp; + racer->unk1A0 -= temp2; + handle_car_steering(racer); + racer->lateral_velocity *= 0.9; + surfaceType = SURFACE_DEFAULT; + traction = 0.0f; + if (racer->wheel_surfaces[0] != SURFACE_NONE) { + traction += gSurfaceTractionTable[racer->wheel_surfaces[0]]; + if (racer->wheel_surfaces[0] > SURFACE_DEFAULT) { + surfaceType = racer->wheel_surfaces[0]; + } + } + if (racer->buoyancy != 0.0) { + traction = 0.02f; + } + gCurrentSurfaceType = surfaceType; + racer->drift_direction = 0; + racer->unk10C = 0; + if (surfaceType == 4) { + multiplier = 0.25f; + racer->lateral_velocity = 0.0f; + } + if (racer->boostTimer == 0 && surfaceType == SURFACE_UNK03) { + racer->boostTimer = normalise_time(45); + racer->boostType = 3; + } + racer->velocity -= velSquare * traction; + if (sp38) { + if (racer->unk1EE < 16) { + racer->unk1EE++; + } + } else { + racer->unk1EE = 0; + } + if (get_viewport_count() < 2 && sp38 && racer->velocity < -2.0) { + if (racer->wheel_surfaces[2] < 0xFF) { + obj->unk74 |= 1 << (racer->wheel_surfaces[2] * 2); + } + if (racer->wheel_surfaces[3] < 0xFF) { + obj->unk74 |= 2 << (racer->wheel_surfaces[3] * 2); + } + } + vel = racer->velocity; + if (vel < 0.0f) { + vel = -vel; + } + if (vel > 12.0f) { + vel = 12.0f; + } + velocityS = (s32) vel; + temp_f0_2 = vel - (f32) velocityS; + vel = (gCurrentRacerMiscAssetPtr[velocityS+1] * temp_f0_2) + (gCurrentRacerMiscAssetPtr[velocityS] * (1.0 - temp_f0_2)); + vel *= 1.7; + vel *= multiplier; + if (racer->boostTimer > 0) { + if (gRaceStartTimer == 0) { + racer->throttle = 1.0f; + if (vel != 0.0) { + vel = 2.0f; + } + racer->boostTimer -= updateRate; + } + } else { + racer->boostTimer = 0; + } + // If basically at a standstill, then allow reversing. + if (racer->velocity > -2.0 && racer->velocity < 3.0) { + f32 reverseVel = (3.0 - racer->velocity) * 0.15; + if (gCurrentStickY < -25 && !(gCurrentRacerInput & A_BUTTON) && gCurrentRacerInput & B_BUTTON) { + racer->brake = 0.0f; + racer->velocity += reverseVel; + } + } + forwardVel = (vel * racer->brake) * 0.32; + racer->velocity -= vel * racer->throttle; + if (racer->velocity > -0.04 && racer->velocity < 0.04) { + racer->velocity = 0.0f; + } + if (racer->velocity < 0.0f) { + racer->velocity += forwardVel; + if (racer->velocity > 0.0f) { + racer->velocity = 0.0f; + } + } else { + racer->velocity -= forwardVel; + if (racer->velocity < 0.0f) { + racer->velocity = 0.0f; + } + } + + // Heavier characters will fall faster. + weight = gCurrentRacerWeightStat; + if (racer->buoyancy != 0.0) { + weight *= 0.5; + } + if (racer->brake < 0.9 && gRaceStartTimer == 0) { + racer->velocity += weight * (racer->pitch / 4) * updateRateF; + } + obj->segment.y_velocity -= weight * updateRateF; +} + + GLOBAL_ASM("asm/non_matchings/racer/func_80054FD0.s") void func_80055A84(Object *obj, Object_Racer *racer, s32 updateRate) { @@ -2291,14 +2684,14 @@ void func_80055A84(Object *obj, Object_Racer *racer, s32 updateRate) { f32 tempPos[3]; s32 i; f32 sp40; - s8 sp3F; + s8 surface; s8 shouldSquish; if (obj->segment.trans.y_position > gCurrentCourseHeight) { obj->segment.trans.y_position = gCurrentCourseHeight; } - temp_v0 =(f32 *) get_misc_asset(56); - sp3F = -1; + temp_v0 =(f32 *) get_misc_asset(MISC_ASSET_UNK38); + surface = -1; sp40 = temp_v0[racer->unk1D7]; tempPos[0] = obj->segment.trans.x_position; tempPos[1] = obj->segment.trans.y_position; @@ -2308,7 +2701,7 @@ void func_80055A84(Object *obj, Object_Racer *racer, s32 updateRate) { sp74 = 0; flags = 0; if (racer->playerIndex != PLAYER_COMPUTER || racer->unk1D7 < 5) { - flags = func_80017248(obj, 1, &sp74, racer->unkD8, tempPos, &sp40, &sp3F); + flags = func_80017248(obj, 1, &sp74, racer->unkD8, tempPos, &sp40, &surface); } if (flags & 0x80) { D_8011D548 = tempPos[0] - obj->segment.trans.x_position; @@ -2321,7 +2714,7 @@ void func_80055A84(Object *obj, Object_Racer *racer, s32 updateRate) { } func_80031130(1, &racer->unkD8[0], tempPos, racer->unk1D6); sp74 = 0; - racer->unk1E3 = func_80031600(racer->unkD8 , tempPos, &sp40, &sp3F, 1, &sp74); + racer->unk1E3 = func_80031600(racer->unkD8 , tempPos, &sp40, &surface, 1, &sp74); racer->unk1E4 = flags; racer->unk1E3 |= flags; racer->unk1E2 = 0; @@ -2339,11 +2732,11 @@ void func_80055A84(Object *obj, Object_Racer *racer, s32 updateRate) { for (i = 0; i < 3; i++) { racer->unkD8[i] = tempPos[i]; } - racer->wheel_surfaces[0] = sp3F; + racer->wheel_surfaces[0] = surface; i = 1; - racer->wheel_surfaces[1] = sp3F; - racer->wheel_surfaces[2] = sp3F; - racer->wheel_surfaces[3] = sp3F; + racer->wheel_surfaces[1] = surface; + racer->wheel_surfaces[2] = surface; + racer->wheel_surfaces[3] = surface; obj->segment.trans.x_position = racer->unkD8[0]; obj->segment.trans.y_position = racer->unkD8[1]; obj->segment.trans.z_position = racer->unkD8[2]; @@ -2576,11 +2969,11 @@ GLOBAL_ASM("asm/non_matchings/racer/func_800576E0.s") * Generate the steer velocity by taking the current steer velocity and getting the difference between the stick tilt. * Get the velocity from a fraction of the difference. */ -void handle_base_steering(Object_Racer *racer, UNUSED s32 arg1, f32 updateRate) { +void handle_base_steering(Object_Racer *racer, UNUSED s32 updateRate, f32 updateRateF) { s32 steering, turnVel; steering = gCurrentStickX - racer->steerAngle; - turnVel = (steering * updateRate) * 0.125; + turnVel = (steering * updateRateF) * 0.125; if (steering != 0 && turnVel == 0) { if (steering > 0) { @@ -2621,7 +3014,7 @@ void update_player_camera(Object *obj, Object_Racer *racer, f32 updateRate) { play_sound_global(SOUND_MENU_BACK2, NULL); break; default: - play_sound_global(SOUND_UNK106, NULL); + play_sound_global(SOUND_UNK_6A, NULL); break; } } @@ -2862,7 +3255,7 @@ void update_camera_car(f32 updateRate, Object *obj, Object_Racer *racer) { sineOffset = cosine_s(-racer->unk196 + 0x8000) * lateralOffset; cosOffset = sine_s(-racer->unk196 + 0x8000) * lateralOffset; baseDistance = 0.0f; - if (gCurrentRacerInput & 0x8000) { + if (gCurrentRacerInput & A_BUTTON) { baseDistance = racer->lateral_velocity * 1.3; if (baseDistance > 0.0f) { baseDistance -= 1.5; @@ -3181,7 +3574,61 @@ void func_8005A3D0(void) { } } -GLOBAL_ASM("asm/non_matchings/racer/func_8005A424.s") +/** + * When you enter a door, take control away from the player. + * Get the angle to the door object, and drive towards it. + * After a timer hits 0, execute the transition. + */ +void racer_enter_door(Object_Racer* racer, s32 updateRate) { + struct Object_Exit *temp_a3; + f32 delta; + s32 angle; + + temp_a3 = (struct Object_Exit *) racer->unk108->unk64; + racer->playerIndex = PLAYER_COMPUTER; + angle = (u16) arctan2_f(temp_a3->unk0, temp_a3->unk8) - (racer->unk1A0 & 0xFFFF); + WRAP(angle, -0x8000, 0x8000); + angle = -angle >> 5; + gCurrentStickX = angle; + gCurrentButtonsPressed = 0; + gCurrentButtonsReleased = 0; + gCurrentRacerInput = 0; + gCurrentStickY = 0; + if (racer->velocity > -4.0) { + gCurrentRacerInput |= A_BUTTON; + } else if (racer->velocity < -5.0) { + gCurrentRacerInput |= B_BUTTON; + } + delta = (f32) updateRate; + gCameraObject->trans.x_position += (temp_a3->unk0 * delta) * 1.5; + gCameraObject->trans.z_position += (temp_a3->unk8 * delta) * 1.5; + if (gCurrentStickX > 75) { gCurrentStickX = 75; gCurrentRacerInput |= A_BUTTON | B_BUTTON; } // Only matches if it's on the same line + if (gCurrentStickX < -75) { + gCurrentStickX = -75; + gCurrentRacerInput |= A_BUTTON | B_BUTTON; + } + if (racer->transitionTimer < -1) { + racer->transitionTimer += updateRate; + if (racer->transitionTimer >= 0) { + racer->transitionTimer = -1; + } + } + if ((racer->transitionTimer < -1 && gCurrentStickX < 10 && gCurrentStickX > -10) || racer->transitionTimer == -1) { + if (func_80066510() == 0) { + func_800C01D8((FadeTransition* ) D_800DCDD4); + } + racer->transitionTimer = 60 - updateRate; + } + func_8006F388(1); + if (racer->transitionTimer > 0) { + racer->transitionTimer -= updateRate; + if (racer->transitionTimer <= 0) { + func_8006D968((s8* ) racer->unk108->segment.unk3C_a.unk3C); + racer->transitionTimer = 0; + } + } +} + GLOBAL_ASM("asm/non_matchings/racer/func_8005A6F0.s") GLOBAL_ASM("asm/non_matchings/racer/func_8005B818.s") @@ -3191,7 +3638,7 @@ GLOBAL_ASM("asm/non_matchings/racer/func_8005B818.s") * table to an unreasonable value, wrecking drivability while on it. */ void antipiracy_modify_surface_traction_table(void) { - gSurfaceTractionTable[0] = 0.05f; + gSurfaceTractionTable[SURFACE_DEFAULT] = 0.05f; } void func_8005C270(Object_Racer *racer) { diff --git a/src/racer.h b/src/racer.h index 66fc8800..ef5d907b 100644 --- a/src/racer.h +++ b/src/racer.h @@ -195,7 +195,7 @@ void func_8006FC30(Matrix, ObjectTransform *); // asm func void func_8006FE74(Matrix *, ObjectTransform *); // Non Matching ? s32 func_80044450(s32 cap); -void func_8004C0A0(s32 arg0, Object *planeObj, Object_Racer *planeObj64); +void func_8004C0A0(s32 updateRate, Object *obj, Object_Racer *racer); void func_8004C140(Object *obj, Object_Racer *racer); void func_8004D95C(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *racer); void func_8004F77C(unk8004F77C *arg0); @@ -210,7 +210,7 @@ void play_char_horn_sound(Object *obj, Object_Racer *racer); void racer_play_sound(Object *obj, s32 soundID); void func_800570A4(Object *obj, s32 arg1, s32 arg2); void func_800575EC(Object *obj, Object_Racer *racer); -void handle_base_steering(Object_Racer *racer, s32 arg1, f32 updateRate); +void handle_base_steering(Object_Racer *racer, s32 updateRate, f32 updateRateF); void func_800580B4(Object *obj, Object_Racer *racer, s32 mode, f32 arg3); void get_timestamp_from_frames(s32 frameCount, s32 *minutes, s32 *seconds, s32 *hundredths); void func_800598D0(void); @@ -251,19 +251,21 @@ void update_player_camera(Object *obj, Object_Racer *racer, f32 updateRate); void racer_spinout_car(Object* obj, Object_Racer* racer, s32 updateRate, f32 updateRateF); void racer_attack_handler(Object* obj, Object_Racer* racer, s32 updateRate); void func_80048C7C(Object* obj, Object_Racer* racer); +void racer_enter_door(Object_Racer *racer, s32 updateRate); +void func_8005250C(Object* obj, Object_Racer* racer, s32 updateRate); +void func_8005492C(Object* obj, Object_Racer* racer, s32 updateRate, f32 updateRateF); +f32 func_800494E0(Object* obj1, Object_Racer* racer, f32 *pos, s8 arg3, s32 updateRate, s32 arg5, f32 arg6); //Non Matching void set_ghost_position_and_rotation(Object *obj); void func_800576E0(Object *obj, Object_Racer *racer, s32 arg2); void func_80055EC0(Object *obj, Object_Racer *racer, s32); void func_80054FD0(Object *obj, Object_Racer *racer, s32); -void func_8005492C(Object *obj, Object_Racer *racer, s32, f32); void func_80053750(Object *obj, Object_Racer *racer, f32); void func_80052D7C(Object *obj, Object_Racer *racer, s32, f32); -s32 func_80017248(void*, s32, s32*, void*, f32*, s32*, s8*); +s32 func_80017248(void*, s32, s32*, void*, f32*, s32*, s8* surface); void func_80059BF0(Object* obj, s32 updateRate); void func_8005A6F0(Object* obj, Object_Racer* racer, s32 updateRate, f32 updateRateF); /* extern */ -void func_8005A424(Object_Racer *racer, s32 updateRate); /* extern */ void func_80059208(Object* obj, Object_Racer* racer, s32 updateRate); /* extern */ void func_8004F7F4(s32 updateRate, f32 updateRateF, Object* obj, Object_Racer* racer); /* extern */ void func_80046524(s32 updateRate, f32 updateRateF, Object* obj, Object_Racer* racer); /* extern */ @@ -273,5 +275,6 @@ void func_8004447C(Object *obj, Object_Racer *racer, s32 updateRate); void func_800452A0(Object *obj, Object_Racer *racer, s32 updateRate); void func_80045C48(Object *obj, Object_Racer *racer, s32 updateRate); void func_80056E2C(Object *obj, Object_Racer *racer, s32 updateRate); +Object* func_8005698C(Object_Racer* racer, Object* obj, f32* arg2); #endif