From b13aa33b64ae5f6a4976aca4e0729bb096cde3c3 Mon Sep 17 00:00:00 2001 From: Dominik Peters Date: Fri, 7 Mar 2025 15:41:12 +0100 Subject: [PATCH] match: func_80050A28 (#474) --- README.md | 18 +- asm/non_matchings/racer/func_80050A28.s | 1654 ----------------------- src/racer.c | 196 ++- src/racer.h | 5 + 4 files changed, 111 insertions(+), 1762 deletions(-) delete mode 100644 asm/non_matchings/racer/func_80050A28.s diff --git a/README.md b/README.md index 111a5575..c96e02b9 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version (SHA1 = 0cb115d8716dbbc2922fda38e533b9fe63bb9670) of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of March 6, 2025, this is our current score: +As of March 7, 2025, this is our current score: -    Decomp progress: 72.88% +    Decomp progress: 73.56%     Documentation progress: 49.99% @@ -126,20 +126,20 @@ s32 is_drumstick_unlocked(void) { ``` -As of March 6, 2025, this is our current score: +As of March 7, 2025, this is our current score: ``` -========================================================== + ========================================================== ADVENTURE ONE (ASM -> C Decompilation) - --------- 72.88% Complete (76.05% NON_MATCHING) ---------- - # Decompiled functions: 1817 - # GLOBAL_ASM remaining: 124 - # NON_MATCHING functions: 15 + --------- 73.56% Complete (76.05% NON_MATCHING) ---------- + # Decompiled functions: 1818 + # GLOBAL_ASM remaining: 123 + # NON_MATCHING functions: 14 # NON_EQUIVALENT WIP functions: 43 ---------------------- Game Status ----------------------- Balloons: 35/47, Keys: 4/4, Trophies: 3/5 T.T. Amulets: 3/4, Wizpig Amulets: 3/4 ---------------------------------------------------------- - We are collecting bananas in Smokey Castle. (1/10 Bananas) + We are collecting bananas in Smokey Castle. (5/10 Bananas) ========================================================== ADVENTURE TWO (Cleanup & Documentation) -------------------- 49.99% Complete --------------------- diff --git a/asm/non_matchings/racer/func_80050A28.s b/asm/non_matchings/racer/func_80050A28.s deleted file mode 100644 index 8d06f0ec..00000000 --- a/asm/non_matchings/racer/func_80050A28.s +++ /dev/null @@ -1,1654 +0,0 @@ -.late_rodata -glabel D_800E6638 -.double 0.024999999999999998 -glabel D_800E6640 -.double 0.4 -glabel D_800E6648 -.double 1.1 -glabel D_800E6650 -.double -0.3 -glabel D_800E6658 -.double 0.3 -glabel D_800E6660 -.float 0.02 -.word 0 # Padding -glabel D_800E6668 -.double 0.9 -glabel D_800E6670 -.double 0.7 -glabel D_800E6678 -.double 1.7 -glabel D_800E6680 -.double 0.15 -glabel D_800E6688 -.double 0.3 -glabel D_800E6690 -.double 0.32 -glabel D_800E6698 -.double -0.04 -glabel D_800E66A0 -.double 0.04 -glabel D_800E66A8 -.double 0.9 -glabel D_800E66B0 -.double 0.3 -glabel D_800E66B8 -.double 0.1 -glabel D_800E66C0 -.float 0.1 -.word 0 # Padding -glabel D_800E66C8 -.double 0.05 - -.text -glabel func_80050A28 -/* 051628 80050A28 27BDFF88 */ addiu $sp, $sp, -0x78 -/* 05162C 80050A2C AFBF0024 */ sw $ra, 0x24($sp) -/* 051630 80050A30 AFB00020 */ sw $s0, 0x20($sp) -/* 051634 80050A34 AFA40078 */ sw $a0, 0x78($sp) -/* 051638 80050A38 AFA60080 */ sw $a2, 0x80($sp) -/* 05163C 80050A3C AFA70084 */ sw $a3, 0x84($sp) -/* 051640 80050A40 AFA00058 */ sw $zero, 0x58($sp) -/* 051644 80050A44 C4AC002C */ lwc1 $f12, 0x2c($a1) -/* 051648 80050A48 44807000 */ mtc1 $zero, $f14 -/* 05164C 80050A4C 460C6102 */ mul.s $f4, $f12, $f12 -/* 051650 80050A50 460E603C */ c.lt.s $f12, $f14 -/* 051654 80050A54 00803825 */ move $a3, $a0 -/* 051658 80050A58 00A08025 */ move $s0, $a1 -/* 05165C 80050A5C 45000005 */ bc1f .L80050A74 -/* 051660 80050A60 E7A40050 */ swc1 $f4, 0x50($sp) -/* 051664 80050A64 C7A60050 */ lwc1 $f6, 0x50($sp) -/* 051668 80050A68 00000000 */ nop -/* 05166C 80050A6C 46003207 */ neg.s $f8, $f6 -/* 051670 80050A70 E7A80050 */ swc1 $f8, 0x50($sp) -.L80050A74: -/* 051674 80050A74 E60E0084 */ swc1 $f14, 0x84($s0) -/* 051678 80050A78 E60E0088 */ swc1 $f14, 0x88($s0) -/* 05167C 80050A7C 3C0E8012 */ lui $t6, %hi(gDialogueCameraAngle) # $t6, 0x8012 -/* 051680 80050A80 85CED586 */ lh $t6, %lo(gDialogueCameraAngle)($t6) -/* 051684 80050A84 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051688 80050A88 15C00041 */ bnez $t6, .L80050B90 -/* 05168C 80050A8C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -/* 051690 80050A90 820F01E7 */ lb $t7, 0x1e7($s0) -/* 051694 80050A94 3C19800E */ lui $t9, %hi(D_800DCDB0) # $t9, 0x800e -/* 051698 80050A98 31F8001F */ andi $t8, $t7, 0x1f -/* 05169C 80050A9C 0338C821 */ addu $t9, $t9, $t8 -/* 0516A0 80050AA0 8339CDB0 */ lb $t9, %lo(D_800DCDB0)($t9) -/* 0516A4 80050AA4 3C01800E */ lui $at, %hi(D_800E6638 + 4) # $at, 0x800e -/* 0516A8 80050AA8 44995000 */ mtc1 $t9, $f10 -/* 0516AC 80050AAC C4276638 */ lwc1 $f7, %lo(D_800E6638)($at) -/* 0516B0 80050AB0 468054A0 */ cvt.s.w $f18, $f10 -/* 0516B4 80050AB4 C426663C */ lwc1 $f6, %lo(D_800E6638 + 4)($at) -/* 0516B8 80050AB8 C60A00A0 */ lwc1 $f10, 0xa0($s0) -/* 0516BC 80050ABC 46009121 */ cvt.d.s $f4, $f18 -/* 0516C0 80050AC0 46262202 */ mul.d $f8, $f4, $f6 -/* 0516C4 80050AC4 46005487 */ neg.s $f18, $f10 -/* 0516C8 80050AC8 C60600A4 */ lwc1 $f6, 0xa4($s0) -/* 0516CC 80050ACC 46204020 */ cvt.s.d $f0, $f8 -/* 0516D0 80050AD0 46009102 */ mul.s $f4, $f18, $f0 -/* 0516D4 80050AD4 46003207 */ neg.s $f8, $f6 -/* 0516D8 80050AD8 C612009C */ lwc1 $f18, 0x9c($s0) -/* 0516DC 80050ADC 46004282 */ mul.s $f10, $f8, $f0 -/* 0516E0 80050AE0 E6040078 */ swc1 $f4, 0x78($s0) -/* 0516E4 80050AE4 46009107 */ neg.s $f4, $f18 -/* 0516E8 80050AE8 46002182 */ mul.s $f6, $f4, $f0 -/* 0516EC 80050AEC E60A007C */ swc1 $f10, 0x7c($s0) -/* 0516F0 80050AF0 E6060080 */ swc1 $f6, 0x80($s0) -/* 0516F4 80050AF4 8CE30060 */ lw $v1, 0x60($a3) -/* 0516F8 80050AF8 00000000 */ nop -/* 0516FC 80050AFC 10600022 */ beqz $v1, .L80050B88 -/* 051700 80050B00 00000000 */ nop -/* 051704 80050B04 8C6A0000 */ lw $t2, ($v1) -/* 051708 80050B08 00003025 */ move $a2, $zero -/* 05170C 80050B0C 1940001E */ blez $t2, .L80050B88 -/* 051710 80050B10 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 051714 80050B14 44811000 */ mtc1 $at, $f2 -/* 051718 80050B18 00002025 */ move $a0, $zero -.L80050B1C: -/* 05171C 80050B1C C4E80008 */ lwc1 $f8, 8($a3) -/* 051720 80050B20 C60A0078 */ lwc1 $f10, 0x78($s0) -/* 051724 80050B24 46081003 */ div.s $f0, $f2, $f8 -/* 051728 80050B28 46005487 */ neg.s $f18, $f10 -/* 05172C 80050B2C 00645821 */ addu $t3, $v1, $a0 -/* 051730 80050B30 8D620004 */ lw $v0, 4($t3) -/* 051734 80050B34 24C60001 */ addiu $a2, $a2, 1 -/* 051738 80050B38 24840004 */ addiu $a0, $a0, 4 -/* 05173C 80050B3C 46009102 */ mul.s $f4, $f18, $f0 -/* 051740 80050B40 E444000C */ swc1 $f4, 0xc($v0) -/* 051744 80050B44 C606007C */ lwc1 $f6, 0x7c($s0) -/* 051748 80050B48 00000000 */ nop -/* 05174C 80050B4C 46003207 */ neg.s $f8, $f6 -/* 051750 80050B50 46004282 */ mul.s $f10, $f8, $f0 -/* 051754 80050B54 E44A0010 */ swc1 $f10, 0x10($v0) -/* 051758 80050B58 C6120080 */ lwc1 $f18, 0x80($s0) -/* 05175C 80050B5C 00000000 */ nop -/* 051760 80050B60 46009107 */ neg.s $f4, $f18 -/* 051764 80050B64 46002182 */ mul.s $f6, $f4, $f0 -/* 051768 80050B68 E4460014 */ swc1 $f6, 0x14($v0) -/* 05176C 80050B6C 8CE30060 */ lw $v1, 0x60($a3) -/* 051770 80050B70 00000000 */ nop -/* 051774 80050B74 8C6C0000 */ lw $t4, ($v1) -/* 051778 80050B78 00000000 */ nop -/* 05177C 80050B7C 00CC082A */ slt $at, $a2, $t4 -/* 051780 80050B80 1420FFE6 */ bnez $at, .L80050B1C -/* 051784 80050B84 00000000 */ nop -.L80050B88: -/* 051788 80050B88 10000005 */ b .L80050BA0 -/* 05178C 80050B8C C60A002C */ lwc1 $f10, 0x2c($s0) -.L80050B90: -/* 051790 80050B90 E60E0078 */ swc1 $f14, 0x78($s0) -/* 051794 80050B94 E60E007C */ swc1 $f14, 0x7c($s0) -/* 051798 80050B98 E60E0080 */ swc1 $f14, 0x80($s0) -/* 05179C 80050B9C C60A002C */ lwc1 $f10, 0x2c($s0) -.L80050BA0: -/* 0517A0 80050BA0 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 -/* 0517A4 80050BA4 44814800 */ mtc1 $at, $f9 -/* 0517A8 80050BA8 44804000 */ mtc1 $zero, $f8 -/* 0517AC 80050BAC 460054A1 */ cvt.d.s $f18, $f10 -/* 0517B0 80050BB0 4632403C */ c.lt.d $f8, $f18 -/* 0517B4 80050BB4 00000000 */ nop -/* 0517B8 80050BB8 4500000A */ bc1f .L80050BE4 -/* 0517BC 80050BBC 00000000 */ nop -/* 0517C0 80050BC0 8D0D0000 */ lw $t5, ($t0) -/* 0517C4 80050BC4 240F003C */ li $t7, 60 -/* 0517C8 80050BC8 31AE8000 */ andi $t6, $t5, 0x8000 -/* 0517CC 80050BCC 11C00003 */ beqz $t6, .L80050BDC -/* 0517D0 80050BD0 00000000 */ nop -/* 0517D4 80050BD4 1000000A */ b .L80050C00 -/* 0517D8 80050BD8 A20F01FB */ sb $t7, 0x1fb($s0) -.L80050BDC: -/* 0517DC 80050BDC 10000008 */ b .L80050C00 -/* 0517E0 80050BE0 A20001FB */ sb $zero, 0x1fb($s0) -.L80050BE4: -/* 0517E4 80050BE4 3C188012 */ lui $t8, %hi(gCurrentRacerInput) # $t8, 0x8012 -/* 0517E8 80050BE8 8F18D528 */ lw $t8, %lo(gCurrentRacerInput)($t8) -/* 0517EC 80050BEC 00000000 */ nop -/* 0517F0 80050BF0 33198000 */ andi $t9, $t8, 0x8000 -/* 0517F4 80050BF4 17200002 */ bnez $t9, .L80050C00 -/* 0517F8 80050BF8 00000000 */ nop -/* 0517FC 80050BFC A20001FB */ sb $zero, 0x1fb($s0) -.L80050C00: -/* 051800 80050C00 820201FB */ lb $v0, 0x1fb($s0) -/* 051804 80050C04 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051808 80050C08 18400006 */ blez $v0, .L80050C24 -/* 05180C 80050C0C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -/* 051810 80050C10 8FAA0080 */ lw $t2, 0x80($sp) -/* 051814 80050C14 00000000 */ nop -/* 051818 80050C18 004A5823 */ subu $t3, $v0, $t2 -/* 05181C 80050C1C 10000002 */ b .L80050C28 -/* 051820 80050C20 A20B01FB */ sb $t3, 0x1fb($s0) -.L80050C24: -/* 051824 80050C24 A20001FB */ sb $zero, 0x1fb($s0) -.L80050C28: -/* 051828 80050C28 AFA00060 */ sw $zero, 0x60($sp) -/* 05182C 80050C2C 3C01800E */ lui $at, %hi(D_800E6640 + 4) # $at, 0x800e -/* 051830 80050C30 C60600B8 */ lwc1 $f6, 0xb8($s0) -/* 051834 80050C34 C4256640 */ lwc1 $f5, %lo(D_800E6640)($at) -/* 051838 80050C38 C4246644 */ lwc1 $f4, %lo(D_800E6640 + 4)($at) -/* 05183C 80050C3C 460032A1 */ cvt.d.s $f10, $f6 -/* 051840 80050C40 462A203C */ c.lt.d $f4, $f10 -/* 051844 80050C44 00000000 */ nop -/* 051848 80050C48 45000048 */ bc1f .L80050D6C -/* 05184C 80050C4C 00000000 */ nop -/* 051850 80050C50 C608002C */ lwc1 $f8, 0x2c($s0) -/* 051854 80050C54 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 051858 80050C58 44813800 */ mtc1 $at, $f7 -/* 05185C 80050C5C 44803000 */ mtc1 $zero, $f6 -/* 051860 80050C60 460044A1 */ cvt.d.s $f18, $f8 -/* 051864 80050C64 4626903C */ c.lt.d $f18, $f6 -/* 051868 80050C68 00000000 */ nop -/* 05186C 80050C6C 4500000B */ bc1f .L80050C9C -/* 051870 80050C70 00000000 */ nop -/* 051874 80050C74 820C01D8 */ lb $t4, 0x1d8($s0) -/* 051878 80050C78 24050001 */ li $a1, 1 -/* 05187C 80050C7C 15800007 */ bnez $t4, .L80050C9C -/* 051880 80050C80 00000000 */ nop -/* 051884 80050C84 86040000 */ lh $a0, ($s0) -/* 051888 80050C88 0C01C8D2 */ jal rumble_set -/* 05188C 80050C8C AFA70078 */ sw $a3, 0x78($sp) -/* 051890 80050C90 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051894 80050C94 8FA70078 */ lw $a3, 0x78($sp) -/* 051898 80050C98 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -.L80050C9C: -/* 05189C 80050C9C 3C0E8012 */ lui $t6, %hi(gCurrentPlayerIndex) # $t6, 0x8012 -/* 0518A0 80050CA0 8DCED55C */ lw $t6, %lo(gCurrentPlayerIndex)($t6) -/* 0518A4 80050CA4 240D0001 */ li $t5, 1 -/* 0518A8 80050CA8 05C0001D */ bltz $t6, .L80050D20 -/* 0518AC 80050CAC AFAD0060 */ sw $t5, 0x60($sp) -/* 0518B0 80050CB0 3C0F800E */ lui $t7, %hi(gNumViewports) # $t7, 0x800e -/* 0518B4 80050CB4 8DEFCB98 */ lw $t7, %lo(gNumViewports)($t7) -/* 0518B8 80050CB8 240E0001 */ li $t6, 1 -/* 0518BC 80050CBC 29E10003 */ slti $at, $t7, 3 -/* 0518C0 80050CC0 10200016 */ beqz $at, .L80050D1C -/* 0518C4 80050CC4 00000000 */ nop -/* 0518C8 80050CC8 820401E6 */ lb $a0, 0x1e6($s0) -/* 0518CC 80050CCC 00000000 */ nop -/* 0518D0 80050CD0 18800006 */ blez $a0, .L80050CEC -/* 0518D4 80050CD4 00000000 */ nop -/* 0518D8 80050CD8 8CF80074 */ lw $t8, 0x74($a3) -/* 0518DC 80050CDC 00000000 */ nop -/* 0518E0 80050CE0 37191400 */ ori $t9, $t8, 0x1400 -/* 0518E4 80050CE4 1000000E */ b .L80050D20 -/* 0518E8 80050CE8 ACF90074 */ sw $t9, 0x74($a3) -.L80050CEC: -/* 0518EC 80050CEC 04810006 */ bgez $a0, .L80050D08 -/* 0518F0 80050CF0 00000000 */ nop -/* 0518F4 80050CF4 8CEA0074 */ lw $t2, 0x74($a3) -/* 0518F8 80050CF8 00000000 */ nop -/* 0518FC 80050CFC 354B2800 */ ori $t3, $t2, 0x2800 -/* 051900 80050D00 10000007 */ b .L80050D20 -/* 051904 80050D04 ACEB0074 */ sw $t3, 0x74($a3) -.L80050D08: -/* 051908 80050D08 8CEC0074 */ lw $t4, 0x74($a3) -/* 05190C 80050D0C 00000000 */ nop -/* 051910 80050D10 358D3000 */ ori $t5, $t4, 0x3000 -/* 051914 80050D14 10000002 */ b .L80050D20 -/* 051918 80050D18 ACED0074 */ sw $t5, 0x74($a3) -.L80050D1C: -/* 05191C 80050D1C AFAE0058 */ sw $t6, 0x58($sp) -.L80050D20: -/* 051920 80050D20 820F01E7 */ lb $t7, 0x1e7($s0) -/* 051924 80050D24 2404FFE7 */ li $a0, -25 -/* 051928 80050D28 31F80007 */ andi $t8, $t7, 7 -/* 05192C 80050D2C 2B010002 */ slti $at, $t8, 2 -/* 051930 80050D30 10200007 */ beqz $at, .L80050D50 -/* 051934 80050D34 24050019 */ li $a1, 25 -/* 051938 80050D38 0C01BE53 */ jal get_random_number_from_range -/* 05193C 80050D3C AFA70078 */ sw $a3, 0x78($sp) -/* 051940 80050D40 A20201D1 */ sb $v0, 0x1d1($s0) -/* 051944 80050D44 3C088012 */ lui $t0, %hi(gCurrentRacerInput) # $t0, 0x8012 -/* 051948 80050D48 8FA70078 */ lw $a3, 0x78($sp) -/* 05194C 80050D4C 2508D528 */ addiu $t0, %lo(gCurrentRacerInput) # addiu $t0, $t0, -0x2ad8 -.L80050D50: -/* 051950 80050D50 3C098012 */ lui $t1, %hi(gCurrentStickX) # $t1, 0x8012 -/* 051954 80050D54 2529D534 */ addiu $t1, %lo(gCurrentStickX) # addiu $t1, $t1, -0x2acc -/* 051958 80050D58 8D390000 */ lw $t9, ($t1) -/* 05195C 80050D5C 820A01D1 */ lb $t2, 0x1d1($s0) -/* 051960 80050D60 00000000 */ nop -/* 051964 80050D64 032A5821 */ addu $t3, $t9, $t2 -/* 051968 80050D68 AD2B0000 */ sw $t3, ($t1) -.L80050D6C: -/* 05196C 80050D6C 820401FA */ lb $a0, 0x1fa($s0) -/* 051970 80050D70 3C098012 */ lui $t1, %hi(gCurrentStickX) # $t1, 0x8012 -/* 051974 80050D74 14800020 */ bnez $a0, .L80050DF8 -/* 051978 80050D78 2529D534 */ addiu $t1, %lo(gCurrentStickX) # addiu $t1, $t1, -0x2acc -/* 05197C 80050D7C C60A002C */ lwc1 $f10, 0x2c($s0) -/* 051980 80050D80 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 051984 80050D84 44812800 */ mtc1 $at, $f5 -/* 051988 80050D88 44802000 */ mtc1 $zero, $f4 -/* 05198C 80050D8C 46005221 */ cvt.d.s $f8, $f10 -/* 051990 80050D90 4628203C */ c.lt.d $f4, $f8 -/* 051994 80050D94 00000000 */ nop -/* 051998 80050D98 45000017 */ bc1f .L80050DF8 -/* 05199C 80050D9C 00000000 */ nop -/* 0519A0 80050DA0 8D0C0000 */ lw $t4, ($t0) -/* 0519A4 80050DA4 00000000 */ nop -/* 0519A8 80050DA8 318D0010 */ andi $t5, $t4, 0x10 -/* 0519AC 80050DAC 11A00012 */ beqz $t5, .L80050DF8 -/* 0519B0 80050DB0 00000000 */ nop -/* 0519B4 80050DB4 8D220000 */ lw $v0, ($t1) -/* 0519B8 80050DB8 00000000 */ nop -/* 0519BC 80050DBC 28410033 */ slti $at, $v0, 0x33 -/* 0519C0 80050DC0 10200003 */ beqz $at, .L80050DD0 -/* 0519C4 80050DC4 2841FFCE */ slti $at, $v0, -0x32 -/* 0519C8 80050DC8 1020000B */ beqz $at, .L80050DF8 -/* 0519CC 80050DCC 00000000 */ nop -.L80050DD0: -/* 0519D0 80050DD0 18400006 */ blez $v0, .L80050DEC -/* 0519D4 80050DD4 240FFFFF */ li $t7, -1 -/* 0519D8 80050DD8 240E0001 */ li $t6, 1 -/* 0519DC 80050DDC A20E01FA */ sb $t6, 0x1fa($s0) -/* 0519E0 80050DE0 820401FA */ lb $a0, 0x1fa($s0) -/* 0519E4 80050DE4 10000004 */ b .L80050DF8 -/* 0519E8 80050DE8 00000000 */ nop -.L80050DEC: -/* 0519EC 80050DEC A20F01FA */ sb $t7, 0x1fa($s0) -/* 0519F0 80050DF0 820401FA */ lb $a0, 0x1fa($s0) -/* 0519F4 80050DF4 00000000 */ nop -.L80050DF8: -/* 0519F8 80050DF8 10800043 */ beqz $a0, .L80050F08 -/* 0519FC 80050DFC 02002825 */ move $a1, $s0 -/* 051A00 80050E00 8D180000 */ lw $t8, ($t0) -/* 051A04 80050E04 3C01FFFF */ lui $at, (0xFFFF7FFF >> 16) # lui $at, 0xffff -/* 051A08 80050E08 34217FFF */ ori $at, (0xFFFF7FFF & 0xFFFF) # ori $at, $at, 0x7fff -/* 051A0C 80050E0C 0301C824 */ and $t9, $t8, $at -/* 051A10 80050E10 AD190000 */ sw $t9, ($t0) -/* 051A14 80050E14 372B4000 */ ori $t3, $t9, 0x4000 -/* 051A18 80050E18 AD0B0000 */ sw $t3, ($t0) -/* 051A1C 80050E1C 3C0E800E */ lui $t6, %hi(gNumViewports) # $t6, 0x800e -/* 051A20 80050E20 8DCECB98 */ lw $t6, %lo(gNumViewports)($t6) -/* 051A24 80050E24 3C018012 */ lui $at, %hi(gCurrentStickY) # $at, 0x8012 -/* 051A28 80050E28 240CFFBA */ li $t4, -70 -/* 051A2C 80050E2C AC2CD538 */ sw $t4, %lo(gCurrentStickY)($at) -/* 051A30 80050E30 240D0001 */ li $t5, 1 -/* 051A34 80050E34 29C10003 */ slti $at, $t6, 3 -/* 051A38 80050E38 10200006 */ beqz $at, .L80050E54 -/* 051A3C 80050E3C AFAD0060 */ sw $t5, 0x60($sp) -/* 051A40 80050E40 8CEF0074 */ lw $t7, 0x74($a3) -/* 051A44 80050E44 00000000 */ nop -/* 051A48 80050E48 35F83C00 */ ori $t8, $t7, 0x3c00 -/* 051A4C 80050E4C 10000003 */ b .L80050E5C -/* 051A50 80050E50 ACF80074 */ sw $t8, 0x74($a3) -.L80050E54: -/* 051A54 80050E54 24190001 */ li $t9, 1 -/* 051A58 80050E58 AFB90058 */ sw $t9, 0x58($sp) -.L80050E5C: -/* 051A5C 80050E5C 8FAA0080 */ lw $t2, 0x80($sp) -/* 051A60 80050E60 820401FA */ lb $a0, 0x1fa($s0) -/* 051A64 80050E64 000A5880 */ sll $t3, $t2, 2 -/* 051A68 80050E68 016A5823 */ subu $t3, $t3, $t2 -/* 051A6C 80050E6C 000B5A40 */ sll $t3, $t3, 9 -/* 051A70 80050E70 01640019 */ multu $t3, $a0 -/* 051A74 80050E74 860301A2 */ lh $v1, 0x1a2($s0) -/* 051A78 80050E78 00000000 */ nop -/* 051A7C 80050E7C 00603025 */ move $a2, $v1 -/* 051A80 80050E80 00006012 */ mflo $t4 -/* 051A84 80050E84 006C6821 */ addu $t5, $v1, $t4 -/* 051A88 80050E88 1880000B */ blez $a0, .L80050EB8 -/* 051A8C 80050E8C A60D01A2 */ sh $t5, 0x1a2($s0) -/* 051A90 80050E90 860E01A2 */ lh $t6, 0x1a2($s0) -/* 051A94 80050E94 00000000 */ nop -/* 051A98 80050E98 05C10010 */ bgez $t6, .L80050EDC -/* 051A9C 80050E9C 00000000 */ nop -/* 051AA0 80050EA0 0460000E */ bltz $v1, .L80050EDC -/* 051AA4 80050EA4 240F7FFF */ li $t7, 32767 -/* 051AA8 80050EA8 A20001FA */ sb $zero, 0x1fa($s0) -/* 051AAC 80050EAC 820401FA */ lb $a0, 0x1fa($s0) -/* 051AB0 80050EB0 1000000A */ b .L80050EDC -/* 051AB4 80050EB4 A60F01A2 */ sh $t7, 0x1a2($s0) -.L80050EB8: -/* 051AB8 80050EB8 861801A2 */ lh $t8, 0x1a2($s0) -/* 051ABC 80050EBC 00000000 */ nop -/* 051AC0 80050EC0 1B000006 */ blez $t8, .L80050EDC -/* 051AC4 80050EC4 00000000 */ nop -/* 051AC8 80050EC8 1CC00004 */ bgtz $a2, .L80050EDC -/* 051ACC 80050ECC 24198000 */ li $t9, -32768 -/* 051AD0 80050ED0 A20001FA */ sb $zero, 0x1fa($s0) -/* 051AD4 80050ED4 820401FA */ lb $a0, 0x1fa($s0) -/* 051AD8 80050ED8 A61901A2 */ sh $t9, 0x1a2($s0) -.L80050EDC: -/* 051ADC 80050EDC 1480000A */ bnez $a0, .L80050F08 -/* 051AE0 80050EE0 00000000 */ nop -/* 051AE4 80050EE4 860301A2 */ lh $v1, 0x1a2($s0) -/* 051AE8 80050EE8 860A01A0 */ lh $t2, 0x1a0($s0) -/* 051AEC 80050EEC C612002C */ lwc1 $f18, 0x2c($s0) -/* 051AF0 80050EF0 01435821 */ addu $t3, $t2, $v1 -/* 051AF4 80050EF4 46009187 */ neg.s $f6, $f18 -/* 051AF8 80050EF8 A60B01A0 */ sh $t3, 0x1a0($s0) -/* 051AFC 80050EFC A60001A2 */ sh $zero, 0x1a2($s0) -/* 051B00 80050F00 E606002C */ swc1 $f6, 0x2c($s0) -/* 051B04 80050F04 A603019E */ sh $v1, 0x19e($s0) -.L80050F08: -/* 051B08 80050F08 820401E6 */ lb $a0, 0x1e6($s0) -/* 051B0C 80050F0C 44809000 */ mtc1 $zero, $f18 -/* 051B10 80050F10 10800019 */ beqz $a0, .L80050F78 -/* 051B14 80050F14 3C0C8012 */ lui $t4, %hi(gCurrentPlayerIndex) # $t4, 0x8012 -/* 051B18 80050F18 8D8CD55C */ lw $t4, %lo(gCurrentPlayerIndex)($t4) -/* 051B1C 80050F1C 3C0D800E */ lui $t5, %hi(gNumViewports) # $t5, 0x800e -/* 051B20 80050F20 05800015 */ bltz $t4, .L80050F78 -/* 051B24 80050F24 00000000 */ nop -/* 051B28 80050F28 8DADCB98 */ lw $t5, %lo(gNumViewports)($t5) -/* 051B2C 80050F2C 240A0001 */ li $t2, 1 -/* 051B30 80050F30 29A10003 */ slti $at, $t5, 3 -/* 051B34 80050F34 1020000F */ beqz $at, .L80050F74 -/* 051B38 80050F38 00000000 */ nop -/* 051B3C 80050F3C 18800006 */ blez $a0, .L80050F58 -/* 051B40 80050F40 00000000 */ nop -/* 051B44 80050F44 8CEE0074 */ lw $t6, 0x74($a3) -/* 051B48 80050F48 00000000 */ nop -/* 051B4C 80050F4C 35CF1400 */ ori $t7, $t6, 0x1400 -/* 051B50 80050F50 10000005 */ b .L80050F68 -/* 051B54 80050F54 ACEF0074 */ sw $t7, 0x74($a3) -.L80050F58: -/* 051B58 80050F58 8CF80074 */ lw $t8, 0x74($a3) -/* 051B5C 80050F5C 00000000 */ nop -/* 051B60 80050F60 37192800 */ ori $t9, $t8, 0x2800 -/* 051B64 80050F64 ACF90074 */ sw $t9, 0x74($a3) -.L80050F68: -/* 051B68 80050F68 820401E6 */ lb $a0, 0x1e6($s0) -/* 051B6C 80050F6C 10000002 */ b .L80050F78 -/* 051B70 80050F70 00000000 */ nop -.L80050F74: -/* 051B74 80050F74 AFAA0058 */ sw $t2, 0x58($sp) -.L80050F78: -/* 051B78 80050F78 1480001D */ bnez $a0, .L80050FF0 -/* 051B7C 80050F7C 00000000 */ nop -/* 051B80 80050F80 8D0B0000 */ lw $t3, ($t0) -/* 051B84 80050F84 3C01C008 */ li $at, 0xC0080000 # -2.125000 -/* 051B88 80050F88 316C0010 */ andi $t4, $t3, 0x10 -/* 051B8C 80050F8C 11800018 */ beqz $t4, .L80050FF0 -/* 051B90 80050F90 00000000 */ nop -/* 051B94 80050F94 C60A002C */ lwc1 $f10, 0x2c($s0) -/* 051B98 80050F98 44814800 */ mtc1 $at, $f9 -/* 051B9C 80050F9C 44804000 */ mtc1 $zero, $f8 -/* 051BA0 80050FA0 46005121 */ cvt.d.s $f4, $f10 -/* 051BA4 80050FA4 4628203C */ c.lt.d $f4, $f8 -/* 051BA8 80050FA8 00000000 */ nop -/* 051BAC 80050FAC 45000010 */ bc1f .L80050FF0 -/* 051BB0 80050FB0 00000000 */ nop -/* 051BB4 80050FB4 8D220000 */ lw $v0, ($t1) -/* 051BB8 80050FB8 00000000 */ nop -/* 051BBC 80050FBC 28410010 */ slti $at, $v0, 0x10 -/* 051BC0 80050FC0 10200003 */ beqz $at, .L80050FD0 -/* 051BC4 80050FC4 2841FFF1 */ slti $at, $v0, -0xf -/* 051BC8 80050FC8 10200009 */ beqz $at, .L80050FF0 -/* 051BCC 80050FCC 00000000 */ nop -.L80050FD0: -/* 051BD0 80050FD0 04410004 */ bgez $v0, .L80050FE4 -/* 051BD4 80050FD4 240DFFFF */ li $t5, -1 -/* 051BD8 80050FD8 A20D01E6 */ sb $t5, 0x1e6($s0) -/* 051BDC 80050FDC 8D220000 */ lw $v0, ($t1) -/* 051BE0 80050FE0 00000000 */ nop -.L80050FE4: -/* 051BE4 80050FE4 18400002 */ blez $v0, .L80050FF0 -/* 051BE8 80050FE8 240E0001 */ li $t6, 1 -/* 051BEC 80050FEC A20E01E6 */ sb $t6, 0x1e6($s0) -.L80050FF0: -/* 051BF0 80050FF0 C606002C */ lwc1 $f6, 0x2c($s0) -/* 051BF4 80050FF4 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 051BF8 80050FF8 44819800 */ mtc1 $at, $f19 -/* 051BFC 80050FFC 460032A1 */ cvt.d.s $f10, $f6 -/* 051C00 80051000 462A903C */ c.lt.d $f18, $f10 -/* 051C04 80051004 00E02025 */ move $a0, $a3 -/* 051C08 80051008 45000002 */ bc1f .L80051014 -/* 051C0C 8005100C 00000000 */ nop -/* 051C10 80051010 A20001E6 */ sb $zero, 0x1e6($s0) -.L80051014: -/* 051C14 80051014 0C015C88 */ jal handle_racer_top_speed -/* 051C18 80051018 AFA70078 */ sw $a3, 0x78($sp) -/* 051C1C 8005101C 3C0F8012 */ lui $t7, %hi(gCurrentRacerInput) # $t7, 0x8012 -/* 051C20 80051020 8DEFD528 */ lw $t7, %lo(gCurrentRacerInput)($t7) -/* 051C24 80051024 E7A00034 */ swc1 $f0, 0x34($sp) -/* 051C28 80051028 31F80010 */ andi $t8, $t7, 0x10 -/* 051C2C 8005102C 13000019 */ beqz $t8, .L80051094 -/* 051C30 80051030 00000000 */ nop -/* 051C34 80051034 820401E6 */ lb $a0, 0x1e6($s0) -/* 051C38 80051038 3C01800E */ lui $at, %hi(D_800E6648 + 4) # $at, 0x800e -/* 051C3C 8005103C 10800015 */ beqz $a0, .L80051094 -/* 051C40 80051040 3C198012 */ lui $t9, %hi(gCurrentStickX) # $t9, 0x8012 -/* 051C44 80051044 C4296648 */ lwc1 $f9, %lo(D_800E6648)($at) -/* 051C48 80051048 C428664C */ lwc1 $f8, %lo(D_800E6648 + 4)($at) -/* 051C4C 8005104C 46000121 */ cvt.d.s $f4, $f0 -/* 051C50 80051050 46282182 */ mul.d $f6, $f4, $f8 -/* 051C54 80051054 8F39D534 */ lw $t9, %lo(gCurrentStickX)($t9) -/* 051C58 80051058 00045900 */ sll $t3, $a0, 4 -/* 051C5C 8005105C 01645823 */ subu $t3, $t3, $a0 -/* 051C60 80051060 000B5840 */ sll $t3, $t3, 1 -/* 051C64 80051064 00195043 */ sra $t2, $t9, 1 -/* 051C68 80051068 014B1021 */ addu $v0, $t2, $t3 -/* 051C6C 8005106C 462034A0 */ cvt.s.d $f18, $f6 -/* 051C70 80051070 2841004C */ slti $at, $v0, 0x4c -/* 051C74 80051074 14200002 */ bnez $at, .L80051080 -/* 051C78 80051078 E7B20034 */ swc1 $f18, 0x34($sp) -/* 051C7C 8005107C 2402004B */ li $v0, 75 -.L80051080: -/* 051C80 80051080 2841FFB5 */ slti $at, $v0, -0x4b -/* 051C84 80051084 10200006 */ beqz $at, .L800510A0 -/* 051C88 80051088 00000000 */ nop -/* 051C8C 8005108C 10000005 */ b .L800510A4 -/* 051C90 80051090 8E02010C */ lw $v0, 0x10c($s0) -.L80051094: -/* 051C94 80051094 A20001E6 */ sb $zero, 0x1e6($s0) -/* 051C98 80051098 820401E6 */ lb $a0, 0x1e6($s0) -/* 051C9C 8005109C 00000000 */ nop -.L800510A0: -/* 051CA0 800510A0 8E02010C */ lw $v0, 0x10c($s0) -.L800510A4: -/* 051CA4 800510A4 8FAE0080 */ lw $t6, 0x80($sp) -/* 051CA8 800510A8 00046340 */ sll $t4, $a0, 0xd -/* 051CAC 800510AC 004C6823 */ subu $t5, $v0, $t4 -/* 051CB0 800510B0 01AE0019 */ multu $t5, $t6 -/* 051CB4 800510B4 860301A2 */ lh $v1, 0x1a2($s0) -/* 051CB8 800510B8 00000000 */ nop -/* 051CBC 800510BC 28611801 */ slti $at, $v1, 0x1801 -/* 051CC0 800510C0 00007812 */ mflo $t7 -/* 051CC4 800510C4 000FC103 */ sra $t8, $t7, 4 -/* 051CC8 800510C8 0058C823 */ subu $t9, $v0, $t8 -/* 051CCC 800510CC 1020000D */ beqz $at, .L80051104 -/* 051CD0 800510D0 AE19010C */ sw $t9, 0x10c($s0) -/* 051CD4 800510D4 2861E800 */ slti $at, $v1, -0x1800 -/* 051CD8 800510D8 1420000B */ bnez $at, .L80051108 -/* 051CDC 800510DC 240C0001 */ li $t4, 1 -/* 051CE0 800510E0 14800009 */ bnez $a0, .L80051108 -/* 051CE4 800510E4 240C0001 */ li $t4, 1 -/* 051CE8 800510E8 820A01FA */ lb $t2, 0x1fa($s0) -/* 051CEC 800510EC 00000000 */ nop -/* 051CF0 800510F0 15400005 */ bnez $t2, .L80051108 -/* 051CF4 800510F4 240C0001 */ li $t4, 1 -/* 051CF8 800510F8 820B01FB */ lb $t3, 0x1fb($s0) -/* 051CFC 800510FC 00000000 */ nop -/* 051D00 80051100 1160004A */ beqz $t3, .L8005122C -.L80051104: -/* 051D04 80051104 240C0001 */ li $t4, 1 -.L80051108: -/* 051D08 80051108 AFAC0060 */ sw $t4, 0x60($sp) -/* 051D0C 8005110C 820D01FB */ lb $t5, 0x1fb($s0) -/* 051D10 80051110 00000000 */ nop -/* 051D14 80051114 11A0000A */ beqz $t5, .L80051140 -/* 051D18 80051118 00000000 */ nop -/* 051D1C 8005111C 820E01D8 */ lb $t6, 0x1d8($s0) -/* 051D20 80051120 00000000 */ nop -/* 051D24 80051124 15C00006 */ bnez $t6, .L80051140 -/* 051D28 80051128 00000000 */ nop -/* 051D2C 8005112C 86040000 */ lh $a0, ($s0) -/* 051D30 80051130 0C01C8D2 */ jal rumble_set -/* 051D34 80051134 00002825 */ move $a1, $zero -/* 051D38 80051138 860301A2 */ lh $v1, 0x1a2($s0) -/* 051D3C 8005113C 00000000 */ nop -.L80051140: -/* 051D40 80051140 04610009 */ bgez $v1, .L80051168 -/* 051D44 80051144 8FA80078 */ lw $t0, 0x78($sp) -/* 051D48 80051148 8FA80078 */ lw $t0, 0x78($sp) -/* 051D4C 8005114C 00000000 */ nop -/* 051D50 80051150 8D0F0074 */ lw $t7, 0x74($t0) -/* 051D54 80051154 00000000 */ nop -/* 051D58 80051158 35F81400 */ ori $t8, $t7, 0x1400 -/* 051D5C 8005115C 10000007 */ b .L8005117C -/* 051D60 80051160 AD180074 */ sw $t8, 0x74($t0) -/* 051D64 80051164 8FA80078 */ lw $t0, 0x78($sp) -.L80051168: -/* 051D68 80051168 00000000 */ nop -/* 051D6C 8005116C 8D0A0074 */ lw $t2, 0x74($t0) -/* 051D70 80051170 00000000 */ nop -/* 051D74 80051174 354B2800 */ ori $t3, $t2, 0x2800 -/* 051D78 80051178 AD0B0074 */ sw $t3, 0x74($t0) -.L8005117C: -/* 051D7C 8005117C 820C01E6 */ lb $t4, 0x1e6($s0) -/* 051D80 80051180 00000000 */ nop -/* 051D84 80051184 15800009 */ bnez $t4, .L800511AC -/* 051D88 80051188 00000000 */ nop -/* 051D8C 8005118C 820D01FA */ lb $t5, 0x1fa($s0) -/* 051D90 80051190 00000000 */ nop -/* 051D94 80051194 15A00005 */ bnez $t5, .L800511AC -/* 051D98 80051198 00000000 */ nop -/* 051D9C 8005119C 820E01FB */ lb $t6, 0x1fb($s0) -/* 051DA0 800511A0 00000000 */ nop -/* 051DA4 800511A4 11C00019 */ beqz $t6, .L8005120C -/* 051DA8 800511A8 00000000 */ nop -.L800511AC: -/* 051DAC 800511AC 8E020010 */ lw $v0, 0x10($s0) -/* 051DB0 800511B0 24040001 */ li $a0, 1 -/* 051DB4 800511B4 14400008 */ bnez $v0, .L800511D8 -/* 051DB8 800511B8 260F0010 */ addiu $t7, $s0, 0x10 -/* 051DBC 800511BC 8D05000C */ lw $a1, 0xc($t0) -/* 051DC0 800511C0 8D060010 */ lw $a2, 0x10($t0) -/* 051DC4 800511C4 8D070014 */ lw $a3, 0x14($t0) -/* 051DC8 800511C8 0C0007AA */ jal sound_play_spatial -/* 051DCC 800511CC AFAF0010 */ sw $t7, 0x10($sp) -/* 051DD0 800511D0 10000007 */ b .L800511F0 -/* 051DD4 800511D4 8E020014 */ lw $v0, 0x14($s0) -.L800511D8: -/* 051DD8 800511D8 8D05000C */ lw $a1, 0xc($t0) -/* 051DDC 800511DC 8D060010 */ lw $a2, 0x10($t0) -/* 051DE0 800511E0 8D070014 */ lw $a3, 0x14($t0) -/* 051DE4 800511E4 0C0026DF */ jal func_80009B7C -/* 051DE8 800511E8 00402025 */ move $a0, $v0 -/* 051DEC 800511EC 8E020014 */ lw $v0, 0x14($s0) -.L800511F0: -/* 051DF0 800511F0 00000000 */ nop -/* 051DF4 800511F4 10400003 */ beqz $v0, .L80051204 -/* 051DF8 800511F8 00000000 */ nop -/* 051DFC 800511FC 0C001223 */ jal sound_stop -/* 051E00 80051200 00402025 */ move $a0, $v0 -.L80051204: -/* 051E04 80051204 10000015 */ b .L8005125C -/* 051E08 80051208 00000000 */ nop -.L8005120C: -/* 051E0C 8005120C 8E020010 */ lw $v0, 0x10($s0) -/* 051E10 80051210 00000000 */ nop -/* 051E14 80051214 10400011 */ beqz $v0, .L8005125C -/* 051E18 80051218 00000000 */ nop -/* 051E1C 8005121C 0C001223 */ jal sound_stop -/* 051E20 80051220 00402025 */ move $a0, $v0 -/* 051E24 80051224 1000000D */ b .L8005125C -/* 051E28 80051228 00000000 */ nop -.L8005122C: -/* 051E2C 8005122C 8E020010 */ lw $v0, 0x10($s0) -/* 051E30 80051230 00000000 */ nop -/* 051E34 80051234 10400003 */ beqz $v0, .L80051244 -/* 051E38 80051238 00000000 */ nop -/* 051E3C 8005123C 0C001223 */ jal sound_stop -/* 051E40 80051240 00402025 */ move $a0, $v0 -.L80051244: -/* 051E44 80051244 8E020014 */ lw $v0, 0x14($s0) -/* 051E48 80051248 00000000 */ nop -/* 051E4C 8005124C 10400003 */ beqz $v0, .L8005125C -/* 051E50 80051250 00000000 */ nop -/* 051E54 80051254 0C001223 */ jal sound_stop -/* 051E58 80051258 00402025 */ move $a0, $v0 -.L8005125C: -/* 051E5C 8005125C 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 051E60 80051260 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 051E64 80051264 820301E1 */ lb $v1, 0x1e1($s0) -/* 051E68 80051268 30584000 */ andi $t8, $v0, 0x4000 -/* 051E6C 8005126C 24060006 */ li $a2, 6 -/* 051E70 80051270 13000002 */ beqz $t8, .L8005127C -/* 051E74 80051274 03001025 */ move $v0, $t8 -/* 051E78 80051278 2406000C */ li $a2, 12 -.L8005127C: -/* 051E7C 8005127C 10400006 */ beqz $v0, .L80051298 -/* 051E80 80051280 3C01800E */ lui $at, %hi(D_800E6650 + 4) # $at, 0x800e -/* 051E84 80051284 820A01E6 */ lb $t2, 0x1e6($s0) -/* 051E88 80051288 00000000 */ nop -/* 051E8C 8005128C 11400002 */ beqz $t2, .L80051298 -/* 051E90 80051290 00000000 */ nop -/* 051E94 80051294 24060012 */ li $a2, 18 -.L80051298: -/* 051E98 80051298 C60A002C */ lwc1 $f10, 0x2c($s0) -/* 051E9C 8005129C C4256650 */ lwc1 $f5, %lo(D_800E6650)($at) -/* 051EA0 800512A0 C4246654 */ lwc1 $f4, %lo(D_800E6650 + 4)($at) -/* 051EA4 800512A4 460050A1 */ cvt.d.s $f2, $f10 -/* 051EA8 800512A8 4624103C */ c.lt.d $f2, $f4 -/* 051EAC 800512AC 00001025 */ move $v0, $zero -/* 051EB0 800512B0 45000005 */ bc1f .L800512C8 -/* 051EB4 800512B4 3C01800E */ lui $at, %hi(D_800E6658 + 4) # $at, 0x800e -/* 051EB8 800512B8 00660019 */ multu $v1, $a2 -/* 051EBC 800512BC 00001012 */ mflo $v0 -/* 051EC0 800512C0 00000000 */ nop -/* 051EC4 800512C4 00000000 */ nop -.L800512C8: -/* 051EC8 800512C8 C4296658 */ lwc1 $f9, %lo(D_800E6658)($at) -/* 051ECC 800512CC C428665C */ lwc1 $f8, %lo(D_800E6658 + 4)($at) -/* 051ED0 800512D0 8FB90080 */ lw $t9, 0x80($sp) -/* 051ED4 800512D4 4622403C */ c.lt.d $f8, $f2 -/* 051ED8 800512D8 00000000 */ nop -/* 051EDC 800512DC 45000005 */ bc1f .L800512F4 -/* 051EE0 800512E0 00035823 */ negu $t3, $v1 -/* 051EE4 800512E4 01660019 */ multu $t3, $a2 -/* 051EE8 800512E8 00001012 */ mflo $v0 -/* 051EEC 800512EC 00000000 */ nop -/* 051EF0 800512F0 00000000 */ nop -.L800512F4: -/* 051EF4 800512F4 00590019 */ multu $v0, $t9 -/* 051EF8 800512F8 3C018012 */ lui $at, %hi(gCurrentRacerHandlingStat) # $at, 0x8012 -/* 051EFC 800512FC C42AD570 */ lwc1 $f10, %lo(gCurrentRacerHandlingStat)($at) -/* 051F00 80051300 860E01A0 */ lh $t6, 0x1a0($s0) -/* 051F04 80051304 02002025 */ move $a0, $s0 -/* 051F08 80051308 00001012 */ mflo $v0 -/* 051F0C 8005130C 00026043 */ sra $t4, $v0, 1 -/* 051F10 80051310 448C3000 */ mtc1 $t4, $f6 -/* 051F14 80051314 00000000 */ nop -/* 051F18 80051318 468034A0 */ cvt.s.w $f18, $f6 -/* 051F1C 8005131C 460A9102 */ mul.s $f4, $f18, $f10 -/* 051F20 80051320 444DF800 */ cfc1 $t5, $31 -/* 051F24 80051324 00000000 */ nop -/* 051F28 80051328 35A10003 */ ori $at, $t5, 3 -/* 051F2C 8005132C 38210002 */ xori $at, $at, 2 -/* 051F30 80051330 44C1F800 */ ctc1 $at, $31 -/* 051F34 80051334 00000000 */ nop -/* 051F38 80051338 46002224 */ cvt.w.s $f8, $f4 -/* 051F3C 8005133C 440F4000 */ mfc1 $t7, $f8 -/* 051F40 80051340 44CDF800 */ ctc1 $t5, $31 -/* 051F44 80051344 01CFC023 */ subu $t8, $t6, $t7 -/* 051F48 80051348 0C014D1E */ jal handle_car_steering -/* 051F4C 8005134C A61801A0 */ sh $t8, 0x1a0($s0) -/* 051F50 80051350 C606002C */ lwc1 $f6, 0x2c($s0) -/* 051F54 80051354 3C01C010 */ li $at, 0xC0100000 # -2.250000 -/* 051F58 80051358 44815800 */ mtc1 $at, $f11 -/* 051F5C 8005135C 44805000 */ mtc1 $zero, $f10 -/* 051F60 80051360 460034A1 */ cvt.d.s $f18, $f6 -/* 051F64 80051364 462A903C */ c.lt.d $f18, $f10 -/* 051F68 80051368 44807000 */ mtc1 $zero, $f14 -/* 051F6C 8005136C 45000032 */ bc1f .L80051438 -/* 051F70 80051370 00004825 */ move $t1, $zero -/* 051F74 80051374 3C028012 */ lui $v0, %hi(gCurrentCarSteerVel) # $v0, 0x8012 -/* 051F78 80051378 8C42D554 */ lw $v0, %lo(gCurrentCarSteerVel)($v0) -/* 051F7C 8005137C 00000000 */ nop -/* 051F80 80051380 28411401 */ slti $at, $v0, 0x1401 -/* 051F84 80051384 10200007 */ beqz $at, .L800513A4 -/* 051F88 80051388 00000000 */ nop -/* 051F8C 8005138C 820401E6 */ lb $a0, 0x1e6($s0) -/* 051F90 80051390 2841EC00 */ slti $at, $v0, -0x1400 -/* 051F94 80051394 10800013 */ beqz $a0, .L800513E4 -/* 051F98 80051398 00000000 */ nop -/* 051F9C 8005139C 18400011 */ blez $v0, .L800513E4 -/* 051FA0 800513A0 00000000 */ nop -.L800513A4: -/* 051FA4 800513A4 820601E7 */ lb $a2, 0x1e7($s0) -/* 051FA8 800513A8 240B0007 */ li $t3, 7 -/* 051FAC 800513AC 30CA0007 */ andi $t2, $a2, 7 -/* 051FB0 800513B0 29410004 */ slti $at, $t2, 4 -/* 051FB4 800513B4 14200002 */ bnez $at, .L800513C0 -/* 051FB8 800513B8 01403025 */ move $a2, $t2 -/* 051FBC 800513BC 016A3023 */ subu $a2, $t3, $t2 -.L800513C0: -/* 051FC0 800513C0 0006C880 */ sll $t9, $a2, 2 -/* 051FC4 800513C4 0326C823 */ subu $t9, $t9, $a2 -/* 051FC8 800513C8 0019C8C0 */ sll $t9, $t9, 3 -/* 051FCC 800513CC 0326C821 */ addu $t9, $t9, $a2 -/* 051FD0 800513D0 0019C900 */ sll $t9, $t9, 4 -/* 051FD4 800513D4 00596021 */ addu $t4, $v0, $t9 -/* 051FD8 800513D8 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 -/* 051FDC 800513DC 10000016 */ b .L80051438 -/* 051FE0 800513E0 AC2CD554 */ sw $t4, %lo(gCurrentCarSteerVel)($at) -.L800513E4: -/* 051FE4 800513E4 14200005 */ bnez $at, .L800513FC -/* 051FE8 800513E8 00000000 */ nop -/* 051FEC 800513EC 10800012 */ beqz $a0, .L80051438 -/* 051FF0 800513F0 00000000 */ nop -/* 051FF4 800513F4 04410010 */ bgez $v0, .L80051438 -/* 051FF8 800513F8 00000000 */ nop -.L800513FC: -/* 051FFC 800513FC 820601E7 */ lb $a2, 0x1e7($s0) -/* 052000 80051400 240E0007 */ li $t6, 7 -/* 052004 80051404 30CD0007 */ andi $t5, $a2, 7 -/* 052008 80051408 29A10004 */ slti $at, $t5, 4 -/* 05200C 8005140C 14200002 */ bnez $at, .L80051418 -/* 052010 80051410 01A03025 */ move $a2, $t5 -/* 052014 80051414 01CD3023 */ subu $a2, $t6, $t5 -.L80051418: -/* 052018 80051418 00067880 */ sll $t7, $a2, 2 -/* 05201C 8005141C 01E67823 */ subu $t7, $t7, $a2 -/* 052020 80051420 000F78C0 */ sll $t7, $t7, 3 -/* 052024 80051424 01E67821 */ addu $t7, $t7, $a2 -/* 052028 80051428 000F7900 */ sll $t7, $t7, 4 -/* 05202C 8005142C 004FC023 */ subu $t8, $v0, $t7 -/* 052030 80051430 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 -/* 052034 80051434 AC38D554 */ sw $t8, %lo(gCurrentCarSteerVel)($at) -.L80051438: -/* 052038 80051438 44808000 */ mtc1 $zero, $f16 -/* 05203C 8005143C 44801000 */ mtc1 $zero, $f2 -/* 052040 80051440 AFA00068 */ sw $zero, 0x68($sp) -/* 052044 80051444 00004025 */ move $t0, $zero -/* 052048 80051448 00003025 */ move $a2, $zero -/* 05204C 8005144C 02002825 */ move $a1, $s0 -.L80051450: -/* 052050 80051450 90AA01DC */ lbu $t2, 0x1dc($a1) -/* 052054 80051454 240100FF */ li $at, 255 -/* 052058 80051458 11410038 */ beq $t2, $at, .L8005153C -/* 05205C 8005145C 00000000 */ nop -/* 052060 80051460 AFA50028 */ sw $a1, 0x28($sp) -/* 052064 80051464 AFA60070 */ sw $a2, 0x70($sp) -/* 052068 80051468 A3A80057 */ sb $t0, 0x57($sp) -/* 05206C 8005146C AFA90064 */ sw $t1, 0x64($sp) -/* 052070 80051470 E7A20048 */ swc1 $f2, 0x48($sp) -/* 052074 80051474 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052078 80051478 0C0270C3 */ jal get_filtered_cheats -/* 05207C 8005147C E7B00040 */ swc1 $f16, 0x40($sp) -/* 052080 80051480 8FA50028 */ lw $a1, 0x28($sp) -/* 052084 80051484 8FA60070 */ lw $a2, 0x70($sp) -/* 052088 80051488 3C07800E */ lui $a3, %hi(gSurfaceTractionTable) # $a3, 0x800e -/* 05208C 8005148C 83A80057 */ lb $t0, 0x57($sp) -/* 052090 80051490 8FA90064 */ lw $t1, 0x64($sp) -/* 052094 80051494 C7A20048 */ lwc1 $f2, 0x48($sp) -/* 052098 80051498 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 05209C 8005149C C7B00040 */ lwc1 $f16, 0x40($sp) -/* 0520A0 800514A0 00025A00 */ sll $t3, $v0, 8 -/* 0520A4 800514A4 05610006 */ bgez $t3, .L800514C0 -/* 0520A8 800514A8 24E7CB9C */ addiu $a3, %lo(gSurfaceTractionTable) # addiu $a3, $a3, -0x3464 -/* 0520AC 800514AC C4E40000 */ lwc1 $f4, ($a3) -/* 0520B0 800514B0 90A201DC */ lbu $v0, 0x1dc($a1) -/* 0520B4 800514B4 46047380 */ add.s $f14, $f14, $f4 -/* 0520B8 800514B8 10000008 */ b .L800514DC -/* 0520BC 800514BC 00021880 */ sll $v1, $v0, 2 -.L800514C0: -/* 0520C0 800514C0 90A201DC */ lbu $v0, 0x1dc($a1) -/* 0520C4 800514C4 00000000 */ nop -/* 0520C8 800514C8 00021880 */ sll $v1, $v0, 2 -/* 0520CC 800514CC 00E3C821 */ addu $t9, $a3, $v1 -/* 0520D0 800514D0 C7280000 */ lwc1 $f8, ($t9) -/* 0520D4 800514D4 00000000 */ nop -/* 0520D8 800514D8 46087380 */ add.s $f14, $f14, $f8 -.L800514DC: -/* 0520DC 800514DC 3C01800E */ lui $at, %hi(D_800DCBE8) # $at, 0x800e -/* 0520E0 800514E0 3C0D800E */ lui $t5, %hi(gSurfaceBobbingTable) # $t5, 0x800e -/* 0520E4 800514E4 00230821 */ addu $at, $at, $v1 -/* 0520E8 800514E8 01A36821 */ addu $t5, $t5, $v1 -/* 0520EC 800514EC C426CBE8 */ lwc1 $f6, %lo(D_800DCBE8)($at) -/* 0520F0 800514F0 8DADCC34 */ lw $t5, %lo(gSurfaceBobbingTable)($t5) -/* 0520F4 800514F4 8FAC0068 */ lw $t4, 0x68($sp) -/* 0520F8 800514F8 0122082A */ slt $at, $t1, $v0 -/* 0520FC 800514FC 018D7021 */ addu $t6, $t4, $t5 -/* 052100 80051500 AFAE0068 */ sw $t6, 0x68($sp) -/* 052104 80051504 00402025 */ move $a0, $v0 -/* 052108 80051508 10200002 */ beqz $at, .L80051514 -/* 05210C 8005150C 46068400 */ add.s $f16, $f16, $f6 -/* 052110 80051510 00404825 */ move $t1, $v0 -.L80051514: -/* 052114 80051514 24010004 */ li $at, 4 -/* 052118 80051518 14810005 */ bne $a0, $at, .L80051530 -/* 05211C 8005151C 3C013F80 */ lui $at, 0x3f80 -/* 052120 80051520 25080001 */ addiu $t0, $t0, 1 -/* 052124 80051524 00087E00 */ sll $t7, $t0, 0x18 -/* 052128 80051528 000F4603 */ sra $t0, $t7, 0x18 -/* 05212C 8005152C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -.L80051530: -/* 052130 80051530 44819000 */ mtc1 $at, $f18 -/* 052134 80051534 00000000 */ nop -/* 052138 80051538 46121080 */ add.s $f2, $f2, $f18 -.L8005153C: -/* 05213C 8005153C 24C60001 */ addiu $a2, $a2, 1 -/* 052140 80051540 28C10004 */ slti $at, $a2, 4 -/* 052144 80051544 1420FFC2 */ bnez $at, .L80051450 -/* 052148 80051548 24A50001 */ addiu $a1, $a1, 1 -/* 05214C 8005154C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 052150 80051550 44815000 */ mtc1 $at, $f10 -/* 052154 80051554 44802800 */ mtc1 $zero, $f5 -/* 052158 80051558 4602503C */ c.lt.s $f10, $f2 -/* 05215C 8005155C 00000000 */ nop -/* 052160 80051560 45000004 */ bc1f .L80051574 -/* 052164 80051564 00000000 */ nop -/* 052168 80051568 46027383 */ div.s $f14, $f14, $f2 -/* 05216C 8005156C 00000000 */ nop -/* 052170 80051570 46028403 */ div.s $f16, $f16, $f2 -.L80051574: -/* 052174 80051574 860A0000 */ lh $t2, ($s0) -/* 052178 80051578 00000000 */ nop -/* 05217C 8005157C 1540000D */ bnez $t2, .L800515B4 -/* 052180 80051580 00000000 */ nop -/* 052184 80051584 820B01E2 */ lb $t3, 0x1e2($s0) -/* 052188 80051588 2401000C */ li $at, 12 -/* 05218C 8005158C 11600009 */ beqz $t3, .L800515B4 -/* 052190 80051590 00000000 */ nop -/* 052194 80051594 15210007 */ bne $t1, $at, .L800515B4 -/* 052198 80051598 3C198012 */ lui $t9, %hi(gCurrentButtonsPressed) # $t9, 0x8012 -/* 05219C 8005159C 8F39D52C */ lw $t9, %lo(gCurrentButtonsPressed)($t9) -/* 0521A0 800515A0 240D0002 */ li $t5, 2 -/* 0521A4 800515A4 332C2000 */ andi $t4, $t9, 0x2000 -/* 0521A8 800515A8 11800002 */ beqz $t4, .L800515B4 -/* 0521AC 800515AC 3C018012 */ lui $at, %hi(gTajInteractStatus) # $at, 0x8012 -/* 0521B0 800515B0 A02DD582 */ sb $t5, %lo(gTajInteractStatus)($at) -.L800515B4: -/* 0521B4 800515B4 C60800C0 */ lwc1 $f8, 0xc0($s0) -/* 0521B8 800515B8 44802000 */ mtc1 $zero, $f4 -/* 0521BC 800515BC 460041A1 */ cvt.d.s $f6, $f8 -/* 0521C0 800515C0 46262032 */ c.eq.d $f4, $f6 -/* 0521C4 800515C4 00000000 */ nop -/* 0521C8 800515C8 45010004 */ bc1t .L800515DC -/* 0521CC 800515CC 3C01800E */ lui $at, %hi(D_800E6660) # $at, 0x800e -/* 0521D0 800515D0 C42E6660 */ lwc1 $f14, %lo(D_800E6660)($at) -/* 0521D4 800515D4 44808000 */ mtc1 $zero, $f16 -/* 0521D8 800515D8 00000000 */ nop -.L800515DC: -/* 0521DC 800515DC 24010002 */ li $at, 2 -/* 0521E0 800515E0 1521001A */ bne $t1, $at, .L8005164C -/* 0521E4 800515E4 24040008 */ li $a0, 8 -/* 0521E8 800515E8 C612002C */ lwc1 $f18, 0x2c($s0) -/* 0521EC 800515EC 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 0521F0 800515F0 44814800 */ mtc1 $at, $f9 -/* 0521F4 800515F4 44804000 */ mtc1 $zero, $f8 -/* 0521F8 800515F8 460092A1 */ cvt.d.s $f10, $f18 -/* 0521FC 800515FC 4628503C */ c.lt.d $f10, $f8 -/* 052200 80051600 00000000 */ nop -/* 052204 80051604 45000011 */ bc1f .L8005164C -/* 052208 80051608 24040008 */ li $a0, 8 -/* 05220C 8005160C 820E01D8 */ lb $t6, 0x1d8($s0) -/* 052210 80051610 00002825 */ move $a1, $zero -/* 052214 80051614 15C0000D */ bnez $t6, .L8005164C -/* 052218 80051618 24040008 */ li $a0, 8 -/* 05221C 8005161C 86040000 */ lh $a0, ($s0) -/* 052220 80051620 E7B00040 */ swc1 $f16, 0x40($sp) -/* 052224 80051624 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052228 80051628 AFA90064 */ sw $t1, 0x64($sp) -/* 05222C 8005162C 0C01C8D2 */ jal rumble_set -/* 052230 80051630 A3A80057 */ sb $t0, 0x57($sp) -/* 052234 80051634 83A80057 */ lb $t0, 0x57($sp) -/* 052238 80051638 8FA90064 */ lw $t1, 0x64($sp) -/* 05223C 8005163C C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052240 80051640 C7B00040 */ lwc1 $f16, 0x40($sp) -/* 052244 80051644 00000000 */ nop -/* 052248 80051648 24040008 */ li $a0, 8 -.L8005164C: -/* 05224C 8005164C A3A80057 */ sb $t0, 0x57($sp) -/* 052250 80051650 AFA90064 */ sw $t1, 0x64($sp) -/* 052254 80051654 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052258 80051658 0C0078A7 */ jal get_misc_asset -/* 05225C 8005165C E7B00040 */ swc1 $f16, 0x40($sp) -/* 052260 80051660 3C0F8012 */ lui $t7, %hi(gCurrentPlayerIndex) # $t7, 0x8012 -/* 052264 80051664 8DEFD55C */ lw $t7, %lo(gCurrentPlayerIndex)($t7) -/* 052268 80051668 2403FFFF */ li $v1, -1 -/* 05226C 8005166C 83A80057 */ lb $t0, 0x57($sp) -/* 052270 80051670 8FA90064 */ lw $t1, 0x64($sp) -/* 052274 80051674 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052278 80051678 C7B00040 */ lwc1 $f16, 0x40($sp) -/* 05227C 8005167C 106F0028 */ beq $v1, $t7, .L80051720 -/* 052280 80051680 00000000 */ nop -/* 052284 80051684 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052288 80051688 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 05228C 8005168C 44812800 */ mtc1 $at, $f5 -/* 052290 80051690 44802000 */ mtc1 $zero, $f4 -/* 052294 80051694 460061A1 */ cvt.d.s $f6, $f12 -/* 052298 80051698 4626203C */ c.lt.d $f4, $f6 -/* 05229C 8005169C 00000000 */ nop -/* 0522A0 800516A0 4501001F */ bc1t .L80051720 -/* 0522A4 800516A4 00000000 */ nop -/* 0522A8 800516A8 821801E6 */ lb $t8, 0x1e6($s0) -/* 0522AC 800516AC 00000000 */ nop -/* 0522B0 800516B0 1700001B */ bnez $t8, .L80051720 -/* 0522B4 800516B4 00000000 */ nop -/* 0522B8 800516B8 820A01D8 */ lb $t2, 0x1d8($s0) -/* 0522BC 800516BC 3C0B8012 */ lui $t3, %hi(gCurrentStickX) # $t3, 0x8012 -/* 0522C0 800516C0 15400017 */ bnez $t2, .L80051720 -/* 0522C4 800516C4 00000000 */ nop -/* 0522C8 800516C8 8D6BD534 */ lw $t3, %lo(gCurrentStickX)($t3) -/* 0522CC 800516CC 82190003 */ lb $t9, 3($s0) -/* 0522D0 800516D0 448B9000 */ mtc1 $t3, $f18 -/* 0522D4 800516D4 00196080 */ sll $t4, $t9, 2 -/* 0522D8 800516D8 468092A0 */ cvt.s.w $f10, $f18 -/* 0522DC 800516DC 004C6821 */ addu $t5, $v0, $t4 -/* 0522E0 800516E0 C5A40000 */ lwc1 $f4, ($t5) -/* 0522E4 800516E4 460A6202 */ mul.s $f8, $f12, $f10 -/* 0522E8 800516E8 C6120030 */ lwc1 $f18, 0x30($s0) -/* 0522EC 800516EC 860E0000 */ lh $t6, ($s0) -/* 0522F0 800516F0 3C01800E */ lui $at, %hi(D_800E6668 + 4) # $at, 0x800e -/* 0522F4 800516F4 46044183 */ div.s $f6, $f8, $f4 -/* 0522F8 800516F8 46069280 */ add.s $f10, $f18, $f6 -/* 0522FC 800516FC 146E0008 */ bne $v1, $t6, .L80051720 -/* 052300 80051700 E60A0030 */ swc1 $f10, 0x30($s0) -/* 052304 80051704 C6080030 */ lwc1 $f8, 0x30($s0) -/* 052308 80051708 C4336668 */ lwc1 $f19, %lo(D_800E6668)($at) -/* 05230C 8005170C C432666C */ lwc1 $f18, %lo(D_800E6668 + 4)($at) -/* 052310 80051710 46004121 */ cvt.d.s $f4, $f8 -/* 052314 80051714 46322182 */ mul.d $f6, $f4, $f18 -/* 052318 80051718 462032A0 */ cvt.s.d $f10, $f6 -/* 05231C 8005171C E60A0030 */ swc1 $f10, 0x30($s0) -.L80051720: -/* 052320 80051720 C608002C */ lwc1 $f8, 0x2c($s0) -/* 052324 80051724 3C01C008 */ li $at, 0xC0080000 # -2.125000 -/* 052328 80051728 44812800 */ mtc1 $at, $f5 -/* 05232C 8005172C 44802000 */ mtc1 $zero, $f4 -/* 052330 80051730 460040A1 */ cvt.d.s $f2, $f8 -/* 052334 80051734 4622203C */ c.lt.d $f4, $f2 -/* 052338 80051738 00000000 */ nop -/* 05233C 8005173C 4500002D */ bc1f .L800517F4 -/* 052340 80051740 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 052344 80051744 44819800 */ mtc1 $at, $f19 -/* 052348 80051748 44809000 */ mtc1 $zero, $f18 -/* 05234C 8005174C 44804800 */ mtc1 $zero, $f9 -/* 052350 80051750 46321180 */ add.d $f6, $f2, $f18 -/* 052354 80051754 44804000 */ mtc1 $zero, $f8 -/* 052358 80051758 46203287 */ neg.d $f10, $f6 -/* 05235C 8005175C 46205020 */ cvt.s.d $f0, $f10 -/* 052360 80051760 3C0F8012 */ lui $t7, %hi(gCurrentCarSteerVel) # $t7, 0x8012 -/* 052364 80051764 46000321 */ cvt.d.s $f12, $f0 -/* 052368 80051768 4628603C */ c.lt.d $f12, $f8 -/* 05236C 8005176C 00000000 */ nop -/* 052370 80051770 45000004 */ bc1f .L80051784 -/* 052374 80051774 00000000 */ nop -/* 052378 80051778 44800000 */ mtc1 $zero, $f0 -/* 05237C 8005177C 00000000 */ nop -/* 052380 80051780 46000321 */ cvt.d.s $f12, $f0 -.L80051784: -/* 052384 80051784 8DEFD554 */ lw $t7, %lo(gCurrentCarSteerVel)($t7) -/* 052388 80051788 44804000 */ mtc1 $zero, $f8 -/* 05238C 8005178C 448F2000 */ mtc1 $t7, $f4 -/* 052390 80051790 00000000 */ nop -/* 052394 80051794 468024A0 */ cvt.s.w $f18, $f4 -/* 052398 80051798 46009182 */ mul.s $f6, $f18, $f0 -/* 05239C 8005179C 4458F800 */ cfc1 $t8, $31 -/* 0523A0 800517A0 00000000 */ nop -/* 0523A4 800517A4 37010003 */ ori $at, $t8, 3 -/* 0523A8 800517A8 38210002 */ xori $at, $at, 2 -/* 0523AC 800517AC 44C1F800 */ ctc1 $at, $31 -/* 0523B0 800517B0 3C018012 */ lui $at, %hi(gCurrentCarSteerVel) # $at, 0x8012 -/* 0523B4 800517B4 460032A4 */ cvt.w.s $f10, $f6 -/* 0523B8 800517B8 440A5000 */ mfc1 $t2, $f10 -/* 0523BC 800517BC 44D8F800 */ ctc1 $t8, $31 -/* 0523C0 800517C0 AC2AD554 */ sw $t2, %lo(gCurrentCarSteerVel)($at) -/* 0523C4 800517C4 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 0523C8 800517C8 44814800 */ mtc1 $at, $f9 -/* 0523CC 800517CC 3C01800E */ lui $at, %hi(D_800E6670 + 4) # $at, 0x800e -/* 0523D0 800517D0 C4336670 */ lwc1 $f19, %lo(D_800E6670)($at) -/* 0523D4 800517D4 C4326674 */ lwc1 $f18, %lo(D_800E6670 + 4)($at) -/* 0523D8 800517D8 462C4101 */ sub.d $f4, $f8, $f12 -/* 0523DC 800517DC 46322182 */ mul.d $f6, $f4, $f18 -/* 0523E0 800517E0 00000000 */ nop -/* 0523E4 800517E4 46008282 */ mul.s $f10, $f16, $f0 -/* 0523E8 800517E8 46005221 */ cvt.d.s $f8, $f10 -/* 0523EC 800517EC 46283100 */ add.d $f4, $f6, $f8 -/* 0523F0 800517F0 46202420 */ cvt.s.d $f16, $f4 -.L800517F4: -/* 0523F4 800517F4 C6120030 */ lwc1 $f18, 0x30($s0) -/* 0523F8 800517F8 860401A4 */ lh $a0, 0x1a4($s0) -/* 0523FC 800517FC 46109282 */ mul.s $f10, $f18, $f16 -/* 052400 80051800 E60A0030 */ swc1 $f10, 0x30($s0) -/* 052404 80051804 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052408 80051808 AFA90064 */ sw $t1, 0x64($sp) -/* 05240C 8005180C 0C01C1FE */ jal coss_f -/* 052410 80051810 A3A80057 */ sb $t0, 0x57($sp) -/* 052414 80051814 44803000 */ mtc1 $zero, $f6 -/* 052418 80051818 83A80057 */ lb $t0, 0x57($sp) -/* 05241C 8005181C 4606003C */ c.lt.s $f0, $f6 -/* 052420 80051820 8FA90064 */ lw $t1, 0x64($sp) -/* 052424 80051824 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052428 80051828 45000002 */ bc1f .L80051834 -/* 05242C 8005182C 46000086 */ mov.s $f2, $f0 -/* 052430 80051830 46000087 */ neg.s $f2, $f0 -.L80051834: -/* 052434 80051834 C6080030 */ lwc1 $f8, 0x30($s0) -/* 052438 80051838 3C018012 */ lui $at, %hi(gCurrentSurfaceType) # $at, 0x8012 -/* 05243C 8005183C 46024102 */ mul.s $f4, $f8, $f2 -/* 052440 80051840 E6040030 */ swc1 $f4, 0x30($s0) -/* 052444 80051844 11000013 */ beqz $t0, .L80051894 -/* 052448 80051848 A029D581 */ sb $t1, %lo(gCurrentSurfaceType)($at) -/* 05244C 8005184C 24040020 */ li $a0, 32 -/* 052450 80051850 A3A80057 */ sb $t0, 0x57($sp) -/* 052454 80051854 AFA90064 */ sw $t1, 0x64($sp) -/* 052458 80051858 0C0078A7 */ jal get_misc_asset -/* 05245C 8005185C E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052460 80051860 83A80057 */ lb $t0, 0x57($sp) -/* 052464 80051864 C7B20034 */ lwc1 $f18, 0x34($sp) -/* 052468 80051868 00085880 */ sll $t3, $t0, 2 -/* 05246C 8005186C 004BC821 */ addu $t9, $v0, $t3 -/* 052470 80051870 C72A0000 */ lwc1 $f10, ($t9) -/* 052474 80051874 44804000 */ mtc1 $zero, $f8 -/* 052478 80051878 460A9182 */ mul.s $f6, $f18, $f10 -/* 05247C 8005187C 8FA90064 */ lw $t1, 0x64($sp) -/* 052480 80051880 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052484 80051884 E7A60034 */ swc1 $f6, 0x34($sp) -/* 052488 80051888 A2000175 */ sb $zero, 0x175($s0) -/* 05248C 8005188C 1000000F */ b .L800518CC -/* 052490 80051890 E6080030 */ swc1 $f8, 0x30($s0) -.L80051894: -/* 052494 80051894 2401000A */ li $at, 10 -/* 052498 80051898 1521000C */ bne $t1, $at, .L800518CC -/* 05249C 8005189C 00000000 */ nop -/* 0524A0 800518A0 920C01EF */ lbu $t4, 0x1ef($s0) -/* 0524A4 800518A4 24050138 */ li $a1, 312 -/* 0524A8 800518A8 358D0004 */ ori $t5, $t4, 4 -/* 0524AC 800518AC A20D01EF */ sb $t5, 0x1ef($s0) -/* 0524B0 800518B0 8FA40078 */ lw $a0, 0x78($sp) -/* 0524B4 800518B4 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 0524B8 800518B8 0C015C12 */ jal racer_play_sound -/* 0524BC 800518BC AFA90064 */ sw $t1, 0x64($sp) -/* 0524C0 800518C0 8FA90064 */ lw $t1, 0x64($sp) -/* 0524C4 800518C4 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 0524C8 800518C8 00000000 */ nop -.L800518CC: -/* 0524CC 800518CC 820E01D3 */ lb $t6, 0x1d3($s0) -/* 0524D0 800518D0 00000000 */ nop -/* 0524D4 800518D4 15C0001D */ bnez $t6, .L8005194C -/* 0524D8 800518D8 24010003 */ li $at, 3 -/* 0524DC 800518DC 1521001B */ bne $t1, $at, .L8005194C -/* 0524E0 800518E0 2404002D */ li $a0, 45 -/* 0524E4 800518E4 AFA90064 */ sw $t1, 0x64($sp) -/* 0524E8 800518E8 0C00322D */ jal normalise_time -/* 0524EC 800518EC E7AE0044 */ swc1 $f14, 0x44($sp) -/* 0524F0 800518F0 240F0002 */ li $t7, 2 -/* 0524F4 800518F4 A20201D3 */ sb $v0, 0x1d3($s0) -/* 0524F8 800518F8 A20F0203 */ sb $t7, 0x203($s0) -/* 0524FC 800518FC 8FA40078 */ lw $a0, 0x78($sp) -/* 052500 80051900 0C015C12 */ jal racer_play_sound -/* 052504 80051904 24050107 */ li $a1, 263 -/* 052508 80051908 8FA40078 */ lw $a0, 0x78($sp) -/* 05250C 8005190C 24050162 */ li $a1, 354 -/* 052510 80051910 24060008 */ li $a2, 8 -/* 052514 80051914 0C015C2E */ jal play_random_character_voice -/* 052518 80051918 24070082 */ li $a3, 130 -/* 05251C 8005191C 821801D8 */ lb $t8, 0x1d8($s0) -/* 052520 80051920 8FA90064 */ lw $t1, 0x64($sp) -/* 052524 80051924 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052528 80051928 17000008 */ bnez $t8, .L8005194C -/* 05252C 8005192C 24050008 */ li $a1, 8 -/* 052530 80051930 86040000 */ lh $a0, ($s0) -/* 052534 80051934 E7AE0044 */ swc1 $f14, 0x44($sp) -/* 052538 80051938 0C01C8D2 */ jal rumble_set -/* 05253C 8005193C AFA90064 */ sw $t1, 0x64($sp) -/* 052540 80051940 8FA90064 */ lw $t1, 0x64($sp) -/* 052544 80051944 C7AE0044 */ lwc1 $f14, 0x44($sp) -/* 052548 80051948 00000000 */ nop -.L8005194C: -/* 05254C 8005194C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 052550 80051950 44819000 */ mtc1 $at, $f18 -/* 052554 80051954 C7A40050 */ lwc1 $f4, 0x50($sp) -/* 052558 80051958 00000000 */ nop -/* 05255C 8005195C 4612203C */ c.lt.s $f4, $f18 -/* 052560 80051960 00000000 */ nop -/* 052564 80051964 4500000F */ bc1f .L800519A4 -/* 052568 80051968 3C0A8012 */ lui $t2, %hi(gCurrentRacerInput) # $t2, 0x8012 -/* 05256C 8005196C 8D4AD528 */ lw $t2, %lo(gCurrentRacerInput)($t2) -/* 052570 80051970 00000000 */ nop -/* 052574 80051974 314B8000 */ andi $t3, $t2, 0x8000 -/* 052578 80051978 1560000A */ bnez $t3, .L800519A4 -/* 05257C 8005197C 00000000 */ nop -/* 052580 80051980 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052584 80051984 3C014100 */ li $at, 0x41000000 # 8.000000 -/* 052588 80051988 460E6282 */ mul.s $f10, $f12, $f14 -/* 05258C 8005198C 44813000 */ mtc1 $at, $f6 -/* 052590 80051990 00000000 */ nop -/* 052594 80051994 46065202 */ mul.s $f8, $f10, $f6 -/* 052598 80051998 46086101 */ sub.s $f4, $f12, $f8 -/* 05259C 8005199C 10000006 */ b .L800519B8 -/* 0525A0 800519A0 E604002C */ swc1 $f4, 0x2c($s0) -.L800519A4: -/* 0525A4 800519A4 C7AA0050 */ lwc1 $f10, 0x50($sp) -/* 0525A8 800519A8 C612002C */ lwc1 $f18, 0x2c($s0) -/* 0525AC 800519AC 460E5182 */ mul.s $f6, $f10, $f14 -/* 0525B0 800519B0 46069201 */ sub.s $f8, $f18, $f6 -/* 0525B4 800519B4 E608002C */ swc1 $f8, 0x2c($s0) -.L800519B8: -/* 0525B8 800519B8 8FB90060 */ lw $t9, 0x60($sp) -/* 0525BC 800519BC 00000000 */ nop -/* 0525C0 800519C0 13200008 */ beqz $t9, .L800519E4 -/* 0525C4 800519C4 00000000 */ nop -/* 0525C8 800519C8 920201EE */ lbu $v0, 0x1ee($s0) -/* 0525CC 800519CC 00000000 */ nop -/* 0525D0 800519D0 28410010 */ slti $at, $v0, 0x10 -/* 0525D4 800519D4 10200004 */ beqz $at, .L800519E8 -/* 0525D8 800519D8 244C0001 */ addiu $t4, $v0, 1 -/* 0525DC 800519DC 10000002 */ b .L800519E8 -/* 0525E0 800519E0 A20C01EE */ sb $t4, 0x1ee($s0) -.L800519E4: -/* 0525E4 800519E4 A20001EE */ sb $zero, 0x1ee($s0) -.L800519E8: -/* 0525E8 800519E8 0C019884 */ jal get_viewport_count -/* 0525EC 800519EC AFA90064 */ sw $t1, 0x64($sp) -/* 0525F0 800519F0 8FA90064 */ lw $t1, 0x64($sp) -/* 0525F4 800519F4 28410002 */ slti $at, $v0, 2 -/* 0525F8 800519F8 1020004B */ beqz $at, .L80051B28 -/* 0525FC 800519FC 0009C080 */ sll $t8, $t1, 2 -/* 052600 80051A00 8FAD0060 */ lw $t5, 0x60($sp) -/* 052604 80051A04 8FAE0058 */ lw $t6, 0x58($sp) -/* 052608 80051A08 11A00009 */ beqz $t5, .L80051A30 -/* 05260C 80051A0C 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 052610 80051A10 C604002C */ lwc1 $f4, 0x2c($s0) -/* 052614 80051A14 44819800 */ mtc1 $at, $f19 -/* 052618 80051A18 44809000 */ mtc1 $zero, $f18 -/* 05261C 80051A1C 460022A1 */ cvt.d.s $f10, $f4 -/* 052620 80051A20 4632503C */ c.lt.d $f10, $f18 -/* 052624 80051A24 00000000 */ nop -/* 052628 80051A28 45010007 */ bc1t .L80051A48 -/* 05262C 80051A2C 00000000 */ nop -.L80051A30: -/* 052630 80051A30 15C00005 */ bnez $t6, .L80051A48 -/* 052634 80051A34 00000000 */ nop -/* 052638 80051A38 820F01FB */ lb $t7, 0x1fb($s0) -/* 05263C 80051A3C 00000000 */ nop -/* 052640 80051A40 11E00019 */ beqz $t7, .L80051AA8 -/* 052644 80051A44 00000000 */ nop -.L80051A48: -/* 052648 80051A48 920201DE */ lbu $v0, 0x1de($s0) -/* 05264C 80051A4C 8FA60078 */ lw $a2, 0x78($sp) -/* 052650 80051A50 284100FF */ slti $at, $v0, 0xff -/* 052654 80051A54 10200008 */ beqz $at, .L80051A78 -/* 052658 80051A58 00025080 */ sll $t2, $v0, 2 -/* 05265C 80051A5C 3C0B800E */ lui $t3, %hi(gSurfaceFlagTable) # $t3, 0x800e -/* 052660 80051A60 016A5821 */ addu $t3, $t3, $t2 -/* 052664 80051A64 8D6BCCF4 */ lw $t3, %lo(gSurfaceFlagTable)($t3) -/* 052668 80051A68 8CD80074 */ lw $t8, 0x74($a2) -/* 05266C 80051A6C 00000000 */ nop -/* 052670 80051A70 030BC825 */ or $t9, $t8, $t3 -/* 052674 80051A74 ACD90074 */ sw $t9, 0x74($a2) -.L80051A78: -/* 052678 80051A78 920201DF */ lbu $v0, 0x1df($s0) -/* 05267C 80051A7C 8FA60078 */ lw $a2, 0x78($sp) -/* 052680 80051A80 284100FF */ slti $at, $v0, 0xff -/* 052684 80051A84 10200008 */ beqz $at, .L80051AA8 -/* 052688 80051A88 00026880 */ sll $t5, $v0, 2 -/* 05268C 80051A8C 3C0E800E */ lui $t6, %hi(gSurfaceFlagTable) # $t6, 0x800e -/* 052690 80051A90 01CD7021 */ addu $t6, $t6, $t5 -/* 052694 80051A94 8DCECCF4 */ lw $t6, %lo(gSurfaceFlagTable)($t6) -/* 052698 80051A98 8CCC0074 */ lw $t4, 0x74($a2) -/* 05269C 80051A9C 000E7840 */ sll $t7, $t6, 1 -/* 0526A0 80051AA0 018F5025 */ or $t2, $t4, $t7 -/* 0526A4 80051AA4 ACCA0074 */ sw $t2, 0x74($a2) -.L80051AA8: -/* 0526A8 80051AA8 C606002C */ lwc1 $f6, 0x2c($s0) -/* 0526AC 80051AAC 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 0526B0 80051AB0 44812800 */ mtc1 $at, $f5 -/* 0526B4 80051AB4 44802000 */ mtc1 $zero, $f4 -/* 0526B8 80051AB8 46003221 */ cvt.d.s $f8, $f6 -/* 0526BC 80051ABC 4624403C */ c.lt.d $f8, $f4 -/* 0526C0 80051AC0 8FA60078 */ lw $a2, 0x78($sp) -/* 0526C4 80051AC4 45000018 */ bc1f .L80051B28 -/* 0526C8 80051AC8 0009C080 */ sll $t8, $t1, 2 -/* 0526CC 80051ACC 920201DE */ lbu $v0, 0x1de($s0) -/* 0526D0 80051AD0 3C19800E */ lui $t9, %hi(gSurfaceFlagTable4P) # $t9, 0x800e -/* 0526D4 80051AD4 284100FF */ slti $at, $v0, 0xff -/* 0526D8 80051AD8 10200007 */ beqz $at, .L80051AF8 -/* 0526DC 80051ADC 00025880 */ sll $t3, $v0, 2 -/* 0526E0 80051AE0 032BC821 */ addu $t9, $t9, $t3 -/* 0526E4 80051AE4 8F39CD40 */ lw $t9, %lo(gSurfaceFlagTable4P)($t9) -/* 0526E8 80051AE8 8CD80074 */ lw $t8, 0x74($a2) -/* 0526EC 80051AEC 00000000 */ nop -/* 0526F0 80051AF0 03196825 */ or $t5, $t8, $t9 -/* 0526F4 80051AF4 ACCD0074 */ sw $t5, 0x74($a2) -.L80051AF8: -/* 0526F8 80051AF8 920201DF */ lbu $v0, 0x1df($s0) -/* 0526FC 80051AFC 3C0F800E */ lui $t7, %hi(gSurfaceFlagTable4P) # $t7, 0x800e -/* 052700 80051B00 284100FF */ slti $at, $v0, 0xff -/* 052704 80051B04 10200007 */ beqz $at, .L80051B24 -/* 052708 80051B08 00026080 */ sll $t4, $v0, 2 -/* 05270C 80051B0C 01EC7821 */ addu $t7, $t7, $t4 -/* 052710 80051B10 8DEFCD40 */ lw $t7, %lo(gSurfaceFlagTable4P)($t7) -/* 052714 80051B14 8CCE0074 */ lw $t6, 0x74($a2) -/* 052718 80051B18 000F5040 */ sll $t2, $t7, 1 -/* 05271C 80051B1C 01CA5825 */ or $t3, $t6, $t2 -/* 052720 80051B20 ACCB0074 */ sw $t3, 0x74($a2) -.L80051B24: -/* 052724 80051B24 0009C080 */ sll $t8, $t1, 2 -.L80051B28: -/* 052728 80051B28 3C09800E */ lui $t1, %hi(gSurfaceSoundTable) # $t1, 0x800e -/* 05272C 80051B2C 8E020018 */ lw $v0, 0x18($s0) -/* 052730 80051B30 01384821 */ addu $t1, $t1, $t8 -/* 052734 80051B34 8FA60078 */ lw $a2, 0x78($sp) -/* 052738 80051B38 8D29CC80 */ lw $t1, %lo(gSurfaceSoundTable)($t1) -/* 05273C 80051B3C 14400011 */ bnez $v0, .L80051B84 -/* 052740 80051B40 00000000 */ nop -/* 052744 80051B44 1120000F */ beqz $t1, .L80051B84 -/* 052748 80051B48 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 05274C 80051B4C C60A002C */ lwc1 $f10, 0x2c($s0) -/* 052750 80051B50 44813800 */ mtc1 $at, $f7 -/* 052754 80051B54 44803000 */ mtc1 $zero, $f6 -/* 052758 80051B58 460054A1 */ cvt.d.s $f18, $f10 -/* 05275C 80051B5C 4626903C */ c.lt.d $f18, $f6 -/* 052760 80051B60 3124FFFF */ andi $a0, $t1, 0xffff -/* 052764 80051B64 45000007 */ bc1f .L80051B84 -/* 052768 80051B68 26050018 */ addiu $a1, $s0, 0x18 -/* 05276C 80051B6C 0C000741 */ jal sound_play -/* 052770 80051B70 AFA90064 */ sw $t1, 0x64($sp) -/* 052774 80051B74 8FA90064 */ lw $t1, 0x64($sp) -/* 052778 80051B78 8E020018 */ lw $v0, 0x18($s0) -/* 05277C 80051B7C 8FA60078 */ lw $a2, 0x78($sp) -/* 052780 80051B80 00000000 */ nop -.L80051B84: -/* 052784 80051B84 10400010 */ beqz $v0, .L80051BC8 -/* 052788 80051B88 00000000 */ nop -/* 05278C 80051B8C 11200008 */ beqz $t1, .L80051BB0 -/* 052790 80051B90 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 052794 80051B94 C604002C */ lwc1 $f4, 0x2c($s0) -/* 052798 80051B98 44814800 */ mtc1 $at, $f9 -/* 05279C 80051B9C 44804000 */ mtc1 $zero, $f8 -/* 0527A0 80051BA0 460022A1 */ cvt.d.s $f10, $f4 -/* 0527A4 80051BA4 462A403C */ c.lt.d $f8, $f10 -/* 0527A8 80051BA8 00000000 */ nop -/* 0527AC 80051BAC 45000006 */ bc1f .L80051BC8 -.L80051BB0: -/* 0527B0 80051BB0 00402025 */ move $a0, $v0 -/* 0527B4 80051BB4 0C001223 */ jal sound_stop -/* 0527B8 80051BB8 AFA90064 */ sw $t1, 0x64($sp) -/* 0527BC 80051BBC 8FA90064 */ lw $t1, 0x64($sp) -/* 0527C0 80051BC0 8FA60078 */ lw $a2, 0x78($sp) -/* 0527C4 80051BC4 00000000 */ nop -.L80051BC8: -/* 0527C8 80051BC8 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 0527CC 80051BCC 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 0527D0 80051BD0 44813800 */ mtc1 $at, $f7 -/* 0527D4 80051BD4 44803000 */ mtc1 $zero, $f6 -/* 0527D8 80051BD8 460064A1 */ cvt.d.s $f18, $f12 -/* 0527DC 80051BDC 4626903C */ c.lt.d $f18, $f6 -/* 0527E0 80051BE0 3C0E8012 */ lui $t6, %hi(gCurrentRacerMiscAssetPtr) # $t6, 0x8012 -/* 0527E4 80051BE4 45000020 */ bc1f .L80051C68 -/* 0527E8 80051BE8 00000000 */ nop -/* 0527EC 80051BEC 8FB90068 */ lw $t9, 0x68($sp) -/* 0527F0 80051BF0 00000000 */ nop -/* 0527F4 80051BF4 2B210004 */ slti $at, $t9, 4 -/* 0527F8 80051BF8 1420001B */ bnez $at, .L80051C68 -/* 0527FC 80051BFC 00000000 */ nop -/* 052800 80051C00 820D01E7 */ lb $t5, 0x1e7($s0) -/* 052804 80051C04 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 052808 80051C08 31AC0001 */ andi $t4, $t5, 1 -/* 05280C 80051C0C 448C2000 */ mtc1 $t4, $f4 -/* 052810 80051C10 44819800 */ mtc1 $at, $f19 -/* 052814 80051C14 46802220 */ cvt.s.w $f8, $f4 -/* 052818 80051C18 44809000 */ mtc1 $zero, $f18 -/* 05281C 80051C1C C6040078 */ lwc1 $f4, 0x78($s0) -/* 052820 80051C20 460042A1 */ cvt.d.s $f10, $f8 -/* 052824 80051C24 46325182 */ mul.d $f6, $f10, $f18 -/* 052828 80051C28 C60800A0 */ lwc1 $f8, 0xa0($s0) -/* 05282C 80051C2C C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052830 80051C30 46203020 */ cvt.s.d $f0, $f6 -/* 052834 80051C34 C606007C */ lwc1 $f6, 0x7c($s0) -/* 052838 80051C38 46004282 */ mul.s $f10, $f8, $f0 -/* 05283C 80051C3C C60800A4 */ lwc1 $f8, 0xa4($s0) -/* 052840 80051C40 460A2481 */ sub.s $f18, $f4, $f10 -/* 052844 80051C44 46004102 */ mul.s $f4, $f8, $f0 -/* 052848 80051C48 C608009C */ lwc1 $f8, 0x9c($s0) -/* 05284C 80051C4C E6120078 */ swc1 $f18, 0x78($s0) -/* 052850 80051C50 C6120080 */ lwc1 $f18, 0x80($s0) -/* 052854 80051C54 46043281 */ sub.s $f10, $f6, $f4 -/* 052858 80051C58 46004182 */ mul.s $f6, $f8, $f0 -/* 05285C 80051C5C E60A007C */ swc1 $f10, 0x7c($s0) -/* 052860 80051C60 46069101 */ sub.s $f4, $f18, $f6 -/* 052864 80051C64 E6040080 */ swc1 $f4, 0x80($s0) -.L80051C68: -/* 052868 80051C68 44805000 */ mtc1 $zero, $f10 -/* 05286C 80051C6C 3C014140 */ li $at, 0x41400000 # 12.000000 -/* 052870 80051C70 460A603C */ c.lt.s $f12, $f10 -/* 052874 80051C74 44810000 */ mtc1 $at, $f0 -/* 052878 80051C78 45000002 */ bc1f .L80051C84 -/* 05287C 80051C7C 46006386 */ mov.s $f14, $f12 -/* 052880 80051C80 46007387 */ neg.s $f14, $f14 -.L80051C84: -/* 052884 80051C84 460E003C */ c.lt.s $f0, $f14 -/* 052888 80051C88 00000000 */ nop -/* 05288C 80051C8C 45000002 */ bc1f .L80051C98 -/* 052890 80051C90 00000000 */ nop -/* 052894 80051C94 46000386 */ mov.s $f14, $f0 -.L80051C98: -/* 052898 80051C98 444FF800 */ cfc1 $t7, $31 -/* 05289C 80051C9C 8DCED564 */ lw $t6, %lo(gCurrentRacerMiscAssetPtr)($t6) -/* 0528A0 80051CA0 35E10003 */ ori $at, $t7, 3 -/* 0528A4 80051CA4 38210002 */ xori $at, $at, 2 -/* 0528A8 80051CA8 44C1F800 */ ctc1 $at, $31 -/* 0528AC 80051CAC 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 0528B0 80051CB0 46007224 */ cvt.w.s $f8, $f14 -/* 0528B4 80051CB4 44812800 */ mtc1 $at, $f5 -/* 0528B8 80051CB8 44024000 */ mfc1 $v0, $f8 -/* 0528BC 80051CBC 44CFF800 */ ctc1 $t7, $31 -/* 0528C0 80051CC0 44829000 */ mtc1 $v0, $f18 -/* 0528C4 80051CC4 00025080 */ sll $t2, $v0, 2 -/* 0528C8 80051CC8 468091A0 */ cvt.s.w $f6, $f18 -/* 0528CC 80051CCC 44802000 */ mtc1 $zero, $f4 -/* 0528D0 80051CD0 01CA1821 */ addu $v1, $t6, $t2 -/* 0528D4 80051CD4 46067001 */ sub.s $f0, $f14, $f6 -/* 0528D8 80051CD8 C4720000 */ lwc1 $f18, ($v1) -/* 0528DC 80051CDC 460002A1 */ cvt.d.s $f10, $f0 -/* 0528E0 80051CE0 462A2201 */ sub.d $f8, $f4, $f10 -/* 0528E4 80051CE4 C46A0004 */ lwc1 $f10, 4($v1) -/* 0528E8 80051CE8 460091A1 */ cvt.d.s $f6, $f18 -/* 0528EC 80051CEC 46283102 */ mul.d $f4, $f6, $f8 -/* 0528F0 80051CF0 3C01800E */ lui $at, %hi(D_800E6678 + 4) # $at, 0x800e -/* 0528F4 80051CF4 820B01D3 */ lb $t3, 0x1d3($s0) -/* 0528F8 80051CF8 46005482 */ mul.s $f18, $f10, $f0 -/* 0528FC 80051CFC C4336678 */ lwc1 $f19, %lo(D_800E6678)($at) -/* 052900 80051D00 460091A1 */ cvt.d.s $f6, $f18 -/* 052904 80051D04 46262200 */ add.d $f8, $f4, $f6 -/* 052908 80051D08 C432667C */ lwc1 $f18, %lo(D_800E6678 + 4)($at) -/* 05290C 80051D0C 462043A0 */ cvt.s.d $f14, $f8 -/* 052910 80051D10 C7A60034 */ lwc1 $f6, 0x34($sp) -/* 052914 80051D14 460072A1 */ cvt.d.s $f10, $f14 -/* 052918 80051D18 46325102 */ mul.d $f4, $f10, $f18 -/* 05291C 80051D1C 462023A0 */ cvt.s.d $f14, $f4 -/* 052920 80051D20 44802000 */ mtc1 $zero, $f4 -/* 052924 80051D24 46067382 */ mul.s $f14, $f14, $f6 -/* 052928 80051D28 19600016 */ blez $t3, .L80051D84 -/* 05292C 80051D2C 3C188012 */ lui $t8, %hi(gRaceStartTimer) # $t8, 0x8012 -/* 052930 80051D30 8F18D540 */ lw $t8, %lo(gRaceStartTimer)($t8) -/* 052934 80051D34 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 052938 80051D38 17000010 */ bnez $t8, .L80051D7C -/* 05293C 80051D3C 00000000 */ nop -/* 052940 80051D40 44805800 */ mtc1 $zero, $f11 -/* 052944 80051D44 44805000 */ mtc1 $zero, $f10 -/* 052948 80051D48 460074A1 */ cvt.d.s $f18, $f14 -/* 05294C 80051D4C 44814000 */ mtc1 $at, $f8 -/* 052950 80051D50 46325032 */ c.eq.d $f10, $f18 -/* 052954 80051D54 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 052958 80051D58 45010003 */ bc1t .L80051D68 -/* 05295C 80051D5C E60800B4 */ swc1 $f8, 0xb4($s0) -/* 052960 80051D60 44817000 */ mtc1 $at, $f14 -/* 052964 80051D64 00000000 */ nop -.L80051D68: -/* 052968 80051D68 821901D3 */ lb $t9, 0x1d3($s0) -/* 05296C 80051D6C 8FAD0080 */ lw $t5, 0x80($sp) -/* 052970 80051D70 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052974 80051D74 032D6023 */ subu $t4, $t9, $t5 -/* 052978 80051D78 A20C01D3 */ sb $t4, 0x1d3($s0) -.L80051D7C: -/* 05297C 80051D7C 10000004 */ b .L80051D90 -/* 052980 80051D80 460060A1 */ cvt.d.s $f2, $f12 -.L80051D84: -/* 052984 80051D84 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052988 80051D88 A20001D3 */ sb $zero, 0x1d3($s0) -/* 05298C 80051D8C 460060A1 */ cvt.d.s $f2, $f12 -.L80051D90: -/* 052990 80051D90 3C01C000 */ li $at, 0xC0000000 # -2.000000 -/* 052994 80051D94 44812800 */ mtc1 $at, $f5 -/* 052998 80051D98 00000000 */ nop -/* 05299C 80051D9C 4622203C */ c.lt.d $f4, $f2 -/* 0529A0 80051DA0 00000000 */ nop -/* 0529A4 80051DA4 45000039 */ bc1f .L80051E8C -/* 0529A8 80051DA8 3C014008 */ li $at, 0x40080000 # 2.125000 -/* 0529AC 80051DAC 44818800 */ mtc1 $at, $f17 -/* 0529B0 80051DB0 44808000 */ mtc1 $zero, $f16 -/* 0529B4 80051DB4 00000000 */ nop -/* 0529B8 80051DB8 4630103C */ c.lt.d $f2, $f16 -/* 0529BC 80051DBC 00000000 */ nop -/* 0529C0 80051DC0 45000032 */ bc1f .L80051E8C -/* 0529C4 80051DC4 00000000 */ nop -/* 0529C8 80051DC8 860F0000 */ lh $t7, ($s0) -/* 0529CC 80051DCC 2401FFFF */ li $at, -1 -/* 0529D0 80051DD0 15E10004 */ bne $t7, $at, .L80051DE4 -/* 0529D4 80051DD4 3C0A8012 */ lui $t2, %hi(gCurrentStickY) # $t2, 0x8012 -/* 0529D8 80051DD8 820E0214 */ lb $t6, 0x214($s0) -/* 0529DC 80051DDC 00000000 */ nop -/* 0529E0 80051DE0 11C0002A */ beqz $t6, .L80051E8C -.L80051DE4: -/* 0529E4 80051DE4 3C01800E */ lui $at, %hi(D_800E6680 + 4) # $at, 0x800e -/* 0529E8 80051DE8 C4296680 */ lwc1 $f9, %lo(D_800E6680)($at) -/* 0529EC 80051DEC C4286684 */ lwc1 $f8, %lo(D_800E6680 + 4)($at) -/* 0529F0 80051DF0 46228181 */ sub.d $f6, $f16, $f2 -/* 0529F4 80051DF4 24010004 */ li $at, 4 -/* 0529F8 80051DF8 46283282 */ mul.d $f10, $f6, $f8 -/* 0529FC 80051DFC 3C028012 */ lui $v0, %hi(gCurrentRacerInput) # $v0, 0x8012 -/* 052A00 80051E00 15210007 */ bne $t1, $at, .L80051E20 -/* 052A04 80051E04 46205020 */ cvt.s.d $f0, $f10 -/* 052A08 80051E08 3C013FD0 */ li $at, 0x3FD00000 # 1.625000 -/* 052A0C 80051E0C 44812800 */ mtc1 $at, $f5 -/* 052A10 80051E10 44802000 */ mtc1 $zero, $f4 -/* 052A14 80051E14 460004A1 */ cvt.d.s $f18, $f0 -/* 052A18 80051E18 46249182 */ mul.d $f6, $f18, $f4 -/* 052A1C 80051E1C 46203020 */ cvt.s.d $f0, $f6 -.L80051E20: -/* 052A20 80051E20 8D4AD538 */ lw $t2, %lo(gCurrentStickY)($t2) -/* 052A24 80051E24 00000000 */ nop -/* 052A28 80051E28 2941FFE7 */ slti $at, $t2, -0x19 -/* 052A2C 80051E2C 10200017 */ beqz $at, .L80051E8C -/* 052A30 80051E30 00000000 */ nop -/* 052A34 80051E34 8C42D528 */ lw $v0, %lo(gCurrentRacerInput)($v0) -/* 052A38 80051E38 00000000 */ nop -/* 052A3C 80051E3C 304B8000 */ andi $t3, $v0, 0x8000 -/* 052A40 80051E40 15600012 */ bnez $t3, .L80051E8C -/* 052A44 80051E44 30584000 */ andi $t8, $v0, 0x4000 -/* 052A48 80051E48 13000010 */ beqz $t8, .L80051E8C -/* 052A4C 80051E4C 00000000 */ nop -/* 052A50 80051E50 821901D7 */ lb $t9, 0x1d7($s0) -/* 052A54 80051E54 00000000 */ nop -/* 052A58 80051E58 2B210005 */ slti $at, $t9, 5 -/* 052A5C 80051E5C 14200006 */ bnez $at, .L80051E78 -/* 052A60 80051E60 3C01800E */ lui $at, %hi(D_800E6688 + 4) # $at, 0x800e -/* 052A64 80051E64 C42B6688 */ lwc1 $f11, %lo(D_800E6688)($at) -/* 052A68 80051E68 C42A668C */ lwc1 $f10, %lo(D_800E6688 + 4)($at) -/* 052A6C 80051E6C 46000221 */ cvt.d.s $f8, $f0 -/* 052A70 80051E70 462A4482 */ mul.d $f18, $f8, $f10 -/* 052A74 80051E74 46209020 */ cvt.s.d $f0, $f18 -.L80051E78: -/* 052A78 80051E78 46006100 */ add.s $f4, $f12, $f0 -/* 052A7C 80051E7C 44803000 */ mtc1 $zero, $f6 -/* 052A80 80051E80 E604002C */ swc1 $f4, 0x2c($s0) -/* 052A84 80051E84 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052A88 80051E88 E60600B8 */ swc1 $f6, 0xb8($s0) -.L80051E8C: -/* 052A8C 80051E8C C60800B8 */ lwc1 $f8, 0xb8($s0) -/* 052A90 80051E90 3C01800E */ lui $at, %hi(D_800E6690 + 4) # $at, 0x800e -/* 052A94 80051E94 460E4282 */ mul.s $f10, $f8, $f14 -/* 052A98 80051E98 C4256690 */ lwc1 $f5, %lo(D_800E6690)($at) -/* 052A9C 80051E9C C4246694 */ lwc1 $f4, %lo(D_800E6690 + 4)($at) -/* 052AA0 80051EA0 C60800B4 */ lwc1 $f8, 0xb4($s0) -/* 052AA4 80051EA4 460054A1 */ cvt.d.s $f18, $f10 -/* 052AA8 80051EA8 46249182 */ mul.d $f6, $f18, $f4 -/* 052AAC 80051EAC 3C01800E */ lui $at, %hi(D_800E6698) # $at, 0x800e -/* 052AB0 80051EB0 46087282 */ mul.s $f10, $f14, $f8 -/* 052AB4 80051EB4 46203020 */ cvt.s.d $f0, $f6 -/* 052AB8 80051EB8 460A6481 */ sub.s $f18, $f12, $f10 -/* 052ABC 80051EBC 44805000 */ mtc1 $zero, $f10 -/* 052AC0 80051EC0 E612002C */ swc1 $f18, 0x2c($s0) -/* 052AC4 80051EC4 C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052AC8 80051EC8 C424669C */ lwc1 $f4, %lo(D_800E6698 + 4)($at) -/* 052ACC 80051ECC C4256698 */ lwc1 $f5, %lo(D_800E6698)($at) -/* 052AD0 80051ED0 460060A1 */ cvt.d.s $f2, $f12 -/* 052AD4 80051ED4 4622203C */ c.lt.d $f4, $f2 -/* 052AD8 80051ED8 00000000 */ nop -/* 052ADC 80051EDC 4500000D */ bc1f .L80051F14 -/* 052AE0 80051EE0 3C01800E */ lui $at, %hi(D_800E66A0 + 4) # $at, 0x800e -/* 052AE4 80051EE4 C42766A0 */ lwc1 $f7, %lo(D_800E66A0)($at) -/* 052AE8 80051EE8 C42666A4 */ lwc1 $f6, %lo(D_800E66A0 + 4)($at) -/* 052AEC 80051EEC 00000000 */ nop -/* 052AF0 80051EF0 4626103C */ c.lt.d $f2, $f6 -/* 052AF4 80051EF4 00000000 */ nop -/* 052AF8 80051EF8 45000006 */ bc1f .L80051F14 -/* 052AFC 80051EFC 00000000 */ nop -/* 052B00 80051F00 44804000 */ mtc1 $zero, $f8 -/* 052B04 80051F04 00000000 */ nop -/* 052B08 80051F08 E608002C */ swc1 $f8, 0x2c($s0) -/* 052B0C 80051F0C C60C002C */ lwc1 $f12, 0x2c($s0) -/* 052B10 80051F10 00000000 */ nop -.L80051F14: -/* 052B14 80051F14 460A603C */ c.lt.s $f12, $f10 -/* 052B18 80051F18 3C018012 */ lui $at, %hi(gCurrentRacerWeightStat) # $at, 0x8012 -/* 052B1C 80051F1C 4500000D */ bc1f .L80051F54 -/* 052B20 80051F20 00000000 */ nop -/* 052B24 80051F24 46006480 */ add.s $f18, $f12, $f0 -/* 052B28 80051F28 44802000 */ mtc1 $zero, $f4 -/* 052B2C 80051F2C E612002C */ swc1 $f18, 0x2c($s0) -/* 052B30 80051F30 C606002C */ lwc1 $f6, 0x2c($s0) -/* 052B34 80051F34 00000000 */ nop -/* 052B38 80051F38 4606203C */ c.lt.s $f4, $f6 -/* 052B3C 80051F3C 00000000 */ nop -/* 052B40 80051F40 45000010 */ bc1f .L80051F84 -/* 052B44 80051F44 00000000 */ nop -/* 052B48 80051F48 44804000 */ mtc1 $zero, $f8 -/* 052B4C 80051F4C 1000000D */ b .L80051F84 -/* 052B50 80051F50 E608002C */ swc1 $f8, 0x2c($s0) -.L80051F54: -/* 052B54 80051F54 46006281 */ sub.s $f10, $f12, $f0 -/* 052B58 80051F58 44802000 */ mtc1 $zero, $f4 -/* 052B5C 80051F5C E60A002C */ swc1 $f10, 0x2c($s0) -/* 052B60 80051F60 C612002C */ lwc1 $f18, 0x2c($s0) -/* 052B64 80051F64 00000000 */ nop -/* 052B68 80051F68 4604903C */ c.lt.s $f18, $f4 -/* 052B6C 80051F6C 00000000 */ nop -/* 052B70 80051F70 45000004 */ bc1f .L80051F84 -/* 052B74 80051F74 00000000 */ nop -/* 052B78 80051F78 44803000 */ mtc1 $zero, $f6 -/* 052B7C 80051F7C 00000000 */ nop -/* 052B80 80051F80 E606002C */ swc1 $f6, 0x2c($s0) -.L80051F84: -/* 052B84 80051F84 C42ED56C */ lwc1 $f14, %lo(gCurrentRacerWeightStat)($at) -/* 052B88 80051F88 C7AA0084 */ lwc1 $f10, 0x84($sp) -/* 052B8C 80051F8C C4C80020 */ lwc1 $f8, 0x20($a2) -/* 052B90 80051F90 460A7482 */ mul.s $f18, $f14, $f10 -/* 052B94 80051F94 3C0D8012 */ lui $t5, %hi(gDialogueCameraAngle) # $t5, 0x8012 -/* 052B98 80051F98 3C01800E */ lui $at, %hi(D_800E66A8 + 4) # $at, 0x800e -/* 052B9C 80051F9C 46124101 */ sub.s $f4, $f8, $f18 -/* 052BA0 80051FA0 E4C40020 */ swc1 $f4, 0x20($a2) -/* 052BA4 80051FA4 85ADD586 */ lh $t5, %lo(gDialogueCameraAngle)($t5) -/* 052BA8 80051FA8 00000000 */ nop -/* 052BAC 80051FAC 11A00003 */ beqz $t5, .L80051FBC -/* 052BB0 80051FB0 00000000 */ nop -/* 052BB4 80051FB4 44807000 */ mtc1 $zero, $f14 -/* 052BB8 80051FB8 00000000 */ nop -.L80051FBC: -/* 052BBC 80051FBC C60600B8 */ lwc1 $f6, 0xb8($s0) -/* 052BC0 80051FC0 C42966A8 */ lwc1 $f9, %lo(D_800E66A8)($at) -/* 052BC4 80051FC4 C42866AC */ lwc1 $f8, %lo(D_800E66A8 + 4)($at) -/* 052BC8 80051FC8 460032A1 */ cvt.d.s $f10, $f6 -/* 052BCC 80051FCC 4628503C */ c.lt.d $f10, $f8 -/* 052BD0 80051FD0 00000000 */ nop -/* 052BD4 80051FD4 4500003F */ bc1f .L800520D4 -/* 052BD8 80051FD8 00000000 */ nop -/* 052BDC 80051FDC 820C01D7 */ lb $t4, 0x1d7($s0) -/* 052BE0 80051FE0 3C0F8012 */ lui $t7, %hi(gRaceStartTimer) # $t7, 0x8012 -/* 052BE4 80051FE4 29810005 */ slti $at, $t4, 5 -/* 052BE8 80051FE8 1020003A */ beqz $at, .L800520D4 -/* 052BEC 80051FEC 00000000 */ nop -/* 052BF0 80051FF0 8DEFD540 */ lw $t7, %lo(gRaceStartTimer)($t7) -/* 052BF4 80051FF4 00000000 */ nop -/* 052BF8 80051FF8 15E00036 */ bnez $t7, .L800520D4 -/* 052BFC 80051FFC 00000000 */ nop -/* 052C00 80052000 C60C009C */ lwc1 $f12, 0x9c($s0) -/* 052C04 80052004 44802800 */ mtc1 $zero, $f5 -/* 052C08 80052008 44802000 */ mtc1 $zero, $f4 -/* 052C0C 8005200C 460064A1 */ cvt.d.s $f18, $f12 -/* 052C10 80052010 4624903C */ c.lt.d $f18, $f4 -/* 052C14 80052014 3C01800E */ lui $at, %hi(D_800E66B0 + 4) # $at, 0x800e -/* 052C18 80052018 45000020 */ bc1f .L8005209C -/* 052C1C 8005201C 46006086 */ mov.s $f2, $f12 -/* 052C20 80052020 C42B66B0 */ lwc1 $f11, %lo(D_800E66B0)($at) -/* 052C24 80052024 C42A66B4 */ lwc1 $f10, %lo(D_800E66B0 + 4)($at) -/* 052C28 80052028 46001087 */ neg.s $f2, $f2 -/* 052C2C 8005202C 460011A1 */ cvt.d.s $f6, $f2 -/* 052C30 80052030 462A3201 */ sub.d $f8, $f6, $f10 -/* 052C34 80052034 44809800 */ mtc1 $zero, $f19 -/* 052C38 80052038 462040A0 */ cvt.s.d $f2, $f8 -/* 052C3C 8005203C 44809000 */ mtc1 $zero, $f18 -/* 052C40 80052040 46001021 */ cvt.d.s $f0, $f2 -/* 052C44 80052044 4632003C */ c.lt.d $f0, $f18 -/* 052C48 80052048 3C01800E */ lui $at, %hi(D_800E66B8 + 4) # $at, 0x800e -/* 052C4C 8005204C 45000004 */ bc1f .L80052060 -/* 052C50 80052050 00000000 */ nop -/* 052C54 80052054 44801000 */ mtc1 $zero, $f2 -/* 052C58 80052058 00000000 */ nop -/* 052C5C 8005205C 46001021 */ cvt.d.s $f0, $f2 -.L80052060: -/* 052C60 80052060 C42566B8 */ lwc1 $f5, %lo(D_800E66B8)($at) -/* 052C64 80052064 C42466BC */ lwc1 $f4, %lo(D_800E66B8 + 4)($at) -/* 052C68 80052068 3C01800E */ lui $at, %hi(D_800E66C0) # $at, 0x800e -/* 052C6C 8005206C 4620203C */ c.lt.d $f4, $f0 -/* 052C70 80052070 00000000 */ nop -/* 052C74 80052074 45000003 */ bc1f .L80052084 -/* 052C78 80052078 00000000 */ nop -/* 052C7C 8005207C C42266C0 */ lwc1 $f2, %lo(D_800E66C0)($at) -/* 052C80 80052080 00000000 */ nop -.L80052084: -/* 052C84 80052084 3C01420C */ li $at, 0x420C0000 # 35.000000 -/* 052C88 80052088 44813000 */ mtc1 $at, $f6 -/* 052C8C 8005208C 00000000 */ nop -/* 052C90 80052090 46061082 */ mul.s $f2, $f2, $f6 -/* 052C94 80052094 10000004 */ b .L800520A8 -/* 052C98 80052098 3C014080 */ lui $at, 0x4080 -.L8005209C: -/* 052C9C 8005209C 44801000 */ mtc1 $zero, $f2 -/* 052CA0 800520A0 00000000 */ nop -/* 052CA4 800520A4 3C014080 */ li $at, 0x40800000 # 4.000000 -.L800520A8: -/* 052CA8 800520A8 44815000 */ mtc1 $at, $f10 -/* 052CAC 800520AC C7A60084 */ lwc1 $f6, 0x84($sp) -/* 052CB0 800520B0 46025201 */ sub.s $f8, $f10, $f2 -/* 052CB4 800520B4 00000000 */ nop -/* 052CB8 800520B8 46086483 */ div.s $f18, $f12, $f8 -/* 052CBC 800520BC C608002C */ lwc1 $f8, 0x2c($s0) -/* 052CC0 800520C0 46127102 */ mul.s $f4, $f14, $f18 -/* 052CC4 800520C4 00000000 */ nop -/* 052CC8 800520C8 46062282 */ mul.s $f10, $f4, $f6 -/* 052CCC 800520CC 460A4480 */ add.s $f18, $f8, $f10 -/* 052CD0 800520D0 E612002C */ swc1 $f18, 0x2c($s0) -.L800520D4: -/* 052CD4 800520D4 3C01800E */ lui $at, %hi(D_800E66C8 + 4) # $at, 0x800e -/* 052CD8 800520D8 C606002C */ lwc1 $f6, 0x2c($s0) -/* 052CDC 800520DC C42B66C8 */ lwc1 $f11, %lo(D_800E66C8)($at) -/* 052CE0 800520E0 C42A66CC */ lwc1 $f10, %lo(D_800E66C8 + 4)($at) -/* 052CE4 800520E4 46003221 */ cvt.d.s $f8, $f6 -/* 052CE8 800520E8 462A4482 */ mul.d $f18, $f8, $f10 -/* 052CEC 800520EC C6040008 */ lwc1 $f4, 8($s0) -/* 052CF0 800520F0 3C013FC0 */ li $at, 0x3FC00000 # 1.500000 -/* 052CF4 800520F4 46002021 */ cvt.d.s $f0, $f4 -/* 052CF8 800520F8 44813800 */ mtc1 $at, $f7 -/* 052CFC 800520FC 46320100 */ add.d $f4, $f0, $f18 -/* 052D00 80052100 44803000 */ mtc1 $zero, $f6 -/* 052D04 80052104 820E01E1 */ lb $t6, 0x1e1($s0) -/* 052D08 80052108 46262202 */ mul.d $f8, $f4, $f6 -/* 052D0C 8005210C 3C0A8012 */ lui $t2, %hi(gCurrentCarSteerVel) # $t2, 0x8012 -/* 052D10 80052110 A20E01E8 */ sb $t6, 0x1e8($s0) -/* 052D14 80052114 820B01E0 */ lb $t3, 0x1e0($s0) -/* 052D18 80052118 46280281 */ sub.d $f10, $f0, $f8 -/* 052D1C 8005211C 462054A0 */ cvt.s.d $f18, $f10 -/* 052D20 80052120 E6120008 */ swc1 $f18, 8($s0) -/* 052D24 80052124 8D4AD554 */ lw $t2, %lo(gCurrentCarSteerVel)($t2) -/* 052D28 80052128 11600013 */ beqz $t3, .L80052178 -/* 052D2C 8005212C AE0A0110 */ sw $t2, 0x110($s0) -/* 052D30 80052130 3C188012 */ lui $t8, %hi(gCurrentPlayerIndex) # $t8, 0x8012 -/* 052D34 80052134 8F18D55C */ lw $t8, %lo(gCurrentPlayerIndex)($t8) -/* 052D38 80052138 2401FFFF */ li $at, -1 -/* 052D3C 8005213C 1301000F */ beq $t8, $at, .L8005217C -/* 052D40 80052140 8FBF0024 */ lw $ra, 0x24($sp) -/* 052D44 80052144 920201DC */ lbu $v0, 0x1dc($s0) -/* 052D48 80052148 240100FF */ li $at, 255 -/* 052D4C 8005214C 1041000A */ beq $v0, $at, .L80052178 -/* 052D50 80052150 0002C840 */ sll $t9, $v0, 1 -/* 052D54 80052154 3C0D800E */ lui $t5, %hi(D_800DCCCC) # $t5, 0x800e -/* 052D58 80052158 01B96821 */ addu $t5, $t5, $t9 -/* 052D5C 8005215C 95ADCCCC */ lhu $t5, %lo(D_800DCCCC)($t5) -/* 052D60 80052160 3C018012 */ lui $at, %hi(D_8011D550) # $at, 0x8012 -/* 052D64 80052164 A42DD550 */ sh $t5, %lo(D_8011D550)($at) -/* 052D68 80052168 820C01E0 */ lb $t4, 0x1e0($s0) -/* 052D6C 8005216C 3C018012 */ lui $at, %hi(D_8011D552) # $at, 0x8012 -/* 052D70 80052170 A42CD552 */ sh $t4, %lo(D_8011D552)($at) -/* 052D74 80052174 A20001E0 */ sb $zero, 0x1e0($s0) -.L80052178: -/* 052D78 80052178 8FBF0024 */ lw $ra, 0x24($sp) -.L8005217C: -/* 052D7C 8005217C 8FB00020 */ lw $s0, 0x20($sp) -/* 052D80 80052180 03E00008 */ jr $ra -/* 052D84 80052184 27BD0078 */ addiu $sp, $sp, 0x78 - diff --git a/src/racer.c b/src/racer.c index 910fee0f..ab46c58b 100644 --- a/src/racer.c +++ b/src/racer.c @@ -3117,32 +3117,27 @@ void apply_vehicle_rotation_offset(Object_Racer *obj, s32 max, s16 yRotation, s1 } } -#ifdef NON_MATCHING -typedef struct unk_Object_60 { - s32 count; - ObjectTransform *transforms[1]; // Array of ObjectTransform pointers. -} unk_Object_60; - void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateRateF) { - s32 soundID; - f32 scale; - f32 velocityDiff; - s32 sp68; // 68 + UNUSED s32 pad0; + s32 i; + s32 temp_2; + s32 sp68; s32 surfaceType; - s32 sp60; // 60 - s32 velocityS; - s32 sp58; // 58 + s32 sp60; + f32 tempVel; + s32 sp58; s8 stoneWheels; s8 steerAngle; - f32 velSquare; // 50 - s32 SteeringVel; - f32 *miscAsset; + f32 velSquare; + s32 temp; + f32 velocityDiff; f32 traction; - f32 tempVel; f32 surfaceTraction; + f32 *miscAsset; ObjectTransform *temp_v0; - f32 topSpeed; // 78 - s32 i; + f32 topSpeed; + UNUSED s32 pad1; + UNUSED s32 pad2; sp58 = FALSE; // Set the square value of the current forward velocity @@ -3154,17 +3149,17 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->unk88 = 0.0f; // Apply bobbing if there's no dialogue camera rotation active. if (gDialogueCameraAngle == 0) { - scale = (f32) D_800DCDB0[0][racer->miscAnimCounter & 0x1F] * 0.024999999999999998; - racer->carBobX = -racer->roll * scale; - racer->carBobY = -racer->yaw * scale; - racer->carBobZ = -racer->pitch * scale; + tempVel = (f32) D_800DCDB0[0][racer->miscAnimCounter & 0x1F] * 0.024999999999999998; + racer->carBobX = -racer->roll * tempVel; + racer->carBobY = -racer->yaw * tempVel; + racer->carBobZ = -racer->pitch * tempVel; if (obj->unk60 != NULL) { for (i = 0; i < ((unk_Object_60 *) obj->unk60)->count; i++) { - scale = 1.0f / obj->segment.trans.scale; + tempVel = 1.0f / obj->segment.trans.scale; temp_v0 = ((unk_Object_60 *) obj->unk60)->transforms[i]; - temp_v0->x_position = (f32) (-racer->carBobX * scale); - temp_v0->y_position = (f32) (-racer->carBobY * scale); - temp_v0->z_position = (f32) (-racer->carBobZ * scale); + temp_v0->x_position = (f32) (-racer->carBobX * tempVel); + temp_v0->y_position = (f32) (-racer->carBobY * tempVel); + temp_v0->z_position = (f32) (-racer->carBobZ * tempVel); } } } else { @@ -3232,13 +3227,14 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } else { sp58 = TRUE; } + i = racer->y_rotation_vel; racer->y_rotation_vel += updateRate * 0x600 * racer->drifting; if (racer->drifting > 0) { - if (racer->y_rotation_vel < 0 && racer->y_rotation_vel >= 0) { + if (racer->y_rotation_vel < 0 && i >= 0) { racer->drifting = 0; racer->y_rotation_vel = 0x7FFF; } - } else if (racer->y_rotation_vel > 0 && racer->y_rotation_vel <= 0) { + } else if (racer->y_rotation_vel > 0 && i <= 0) { racer->drifting = 0; racer->y_rotation_vel = -0x8000; } @@ -3280,19 +3276,17 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR // If currently drifting, apply a minor speed multiplier and tilt the natural steering towards the drift direction if (gCurrentRacerInput & R_TRIG && racer->drift_direction != 0) { topSpeed *= 1.1; - SteeringVel = (gCurrentStickX >> 1) + (racer->drift_direction * 30); - if (SteeringVel > 75) { - SteeringVel = 75; + // Unused code? + temp = (gCurrentStickX >> 1) + (racer->drift_direction * 30); + if (temp > 75) { + temp = 75; } - if (SteeringVel < -75) { - SteeringVel = -75; + if (temp < -75) { } } else { racer->drift_direction = 0; } - i = ((racer->unk10C - (racer->drift_direction << 13)) * updateRate) >> 4; - racer->unk10C -= i; - // racer->unk10C -= ((racer->unk10C - (racer->drift_direction << 13)) * updateRate) >> 4; + racer->unk10C -= ((racer->unk10C - (racer->drift_direction << 13)) * updateRate) >> 4; // sounds for drifting and sliding if (!(racer->y_rotation_vel <= 0x1800 && racer->y_rotation_vel >= -0x1800 && racer->drift_direction == 0 && racer->drifting == 0 && racer->unk1FB == 0)) { @@ -3314,69 +3308,73 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR obj->segment.trans.z_position); } if (racer->unk14) { - sound_stop(racer->unk14); + sound_stop((void *) racer->unk14); } } else { if (racer->unk10) { - sound_stop(racer->unk10); + sound_stop((void *) racer->unk10); } } } else { if (racer->unk10) { - sound_stop(racer->unk10); + sound_stop((void *) racer->unk10); } if (racer->unk14) { - sound_stop(racer->unk14); + sound_stop((void *) racer->unk14); } } // Velocity of steering input steerAngle = racer->steerAngle; - velocityS = 6; + i = 6; // Turn twice as fast under braking (because that's totally how cars work) if (gCurrentRacerInput & B_BUTTON) { - velocityS = 12; + i = 12; } // Turn thrice as fast when drifting and braking. if (gCurrentRacerInput & B_BUTTON && racer->drift_direction != 0) { - velocityS = 18; + i = 18; } // Multiply steering velocity with angle - SteeringVel = 0; + temp = 0; if (racer->velocity < -0.3) { - SteeringVel = steerAngle * velocityS; + temp = steerAngle * i; } if (racer->velocity > 0.3) { - SteeringVel = -steerAngle * velocityS; + temp = -steerAngle * i; } // Set final turn velocity by taking the steering velocity and multiplying it by the handling stat of the character. - racer->steerVisualRotation -= (s32) (((SteeringVel * updateRate) >> 1) * gCurrentRacerHandlingStat); + temp = ((temp * updateRate) >> 1); + temp_2 = temp * gCurrentRacerHandlingStat; + racer->steerVisualRotation -= temp_2 & 0xFFFF; // Now steer the car. handle_car_steering(racer); // Set base grip level to 0. - traction = 0.0f; surfaceType = SURFACE_DEFAULT; // If reversing, flip the steering if (racer->velocity < -4.0) { if (gCurrentCarSteerVel > 0x1400 || (racer->drift_direction != 0 && gCurrentCarSteerVel > 0)) { - SteeringVel = racer->miscAnimCounter & 7; - if (SteeringVel >= 4) { - SteeringVel = 7 - SteeringVel; + i = racer->miscAnimCounter & 7; + if (i >= 4) { + i = 7 - i; } - gCurrentCarSteerVel += SteeringVel * 0x190; + gCurrentCarSteerVel += i * 0x190; } else if (gCurrentCarSteerVel < -0x1400 || (racer->drift_direction != 0 && gCurrentCarSteerVel < 0)) { - SteeringVel = racer->miscAnimCounter & 7; - if (SteeringVel >= 4) { - SteeringVel = 7 - SteeringVel; + i = racer->miscAnimCounter & 7; + if (i >= 4) { + i = 7 - i; } - gCurrentCarSteerVel -= SteeringVel * 0x190; + gCurrentCarSteerVel -= i * 0x190; } } + + traction = 0.0f; surfaceTraction = 0.0f; velocityDiff = 0.0f; sp68 = 0; // Number of wheels contacting grass or sand stoneWheels = 0; // Number of wheels contacting the stone surface type // Iterate through each wheel and find which surface they're on. - for (i = 0; i < 4; i++) { + i = 0; + while (i < 4) { if (racer->wheel_surfaces[i] != SURFACE_NONE) { if (get_filtered_cheats() & CHEAT_FOUR_WHEEL_DRIVER) { traction += gSurfaceTractionTable[0]; @@ -3393,10 +3391,14 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } velocityDiff += 1.0f; } - } + i++; + }; + + // Probably fake but required for match + for (i = 0; i < 4; i++) {} + // With multiple contact patches, average the surface properties across. if (velocityDiff > 1.0f) { - i--; // fakematch traction /= velocityDiff; surfaceTraction /= velocityDiff; } @@ -3434,12 +3436,12 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } // Multiply current velocity by the surface grip levels. racer->lateral_velocity *= surfaceTraction; - tempVel = coss_f(racer->x_rotation_vel); - if (tempVel < 0.0f) { - tempVel = -tempVel; + velocityDiff = coss_f(racer->x_rotation_vel); + if (velocityDiff < 0.0f) { + velocityDiff = -velocityDiff; } // Multiply lateral velocity by pitch - racer->lateral_velocity *= tempVel; + racer->lateral_velocity *= velocityDiff; gCurrentSurfaceType = surfaceType; if (stoneWheels != 0) { miscAsset = (f32 *) get_misc_asset(ASSET_MISC_32); @@ -3474,7 +3476,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->unk1EE = 0; } if (get_viewport_count() < THREE_PLAYERS) { - if ((sp60 && racer->velocity < -2.0) || sp58 || racer->unk1FB != 0) { + if ((sp60 != 0 && racer->velocity < -2.0) || sp58 != 0 || racer->unk1FB != 0) { if (racer->wheel_surfaces[2] < SURFACE_NONE) { obj->particleEmitFlags |= gSurfaceFlagTable[racer->wheel_surfaces[2]]; } @@ -3493,42 +3495,40 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } // Play a sound on grass and sand when landing on it surfaceType = gSurfaceSoundTable[surfaceType]; - soundID = surfaceType; - if (racer->unk18 == NULL && soundID != SOUND_NONE && racer->velocity < -2.0) { - sound_play(soundID, &racer->unk18); + if (racer->unk18 == NULL && surfaceType != SOUND_NONE && racer->velocity < -2.0) { + sound_play(surfaceType, &racer->unk18); } - if (racer->unk18 != NULL && (soundID == SOUND_NONE || racer->velocity > -2.0)) { - sound_stop(racer->unk18); + if (racer->unk18 != NULL && (surfaceType == SOUND_NONE || racer->velocity > -2.0)) { + sound_stop((void *) racer->unk18); } // Apply a bobbing effect when on grass and sand. if (racer->velocity < -2.0 && sp68 >= 4) { - scale = (f32) (racer->miscAnimCounter & 1) * 0.5; - racer->carBobX -= racer->roll * scale; - racer->carBobY -= racer->yaw * scale; - racer->carBobZ -= racer->pitch * scale; + tempVel = (f32) (racer->miscAnimCounter & 1) * 0.5; + racer->carBobX -= racer->roll * tempVel; + racer->carBobY -= racer->yaw * tempVel; + racer->carBobZ -= racer->pitch * tempVel; } - tempVel = racer->velocity; + traction = racer->velocity; // Keep velocity positive and keep it below 12 - if (tempVel < 0.0f) { - tempVel = -tempVel; + if (racer->velocity < 0.0f) { + traction = -traction; } - if (tempVel > 12.0f) { - tempVel = 12.0f; + + if (traction > 12.0f) { + traction = 12.0f; } // Convert the velocity value to an int - velocityS = (s32) tempVel; - miscAsset = &gCurrentRacerMiscAssetPtr[velocityS]; - velocityDiff = tempVel - velocityS; + temp = (s32) traction; // Calculate the velocity multiplier based on current velocity - surfaceTraction = (f32) ((miscAsset[1] * velocityDiff) + (miscAsset[0] * (1.0 - velocityDiff))); - surfaceTraction = (surfaceTraction * 1.7); - surfaceTraction *= topSpeed; + traction = ((gCurrentRacerMiscAssetPtr[temp + 1] * (traction - temp)) + (gCurrentRacerMiscAssetPtr[temp] * (1.0 - (traction - temp)))); + traction *= 1.7; + traction *= topSpeed; // Force the throttle wide open if boosting if (racer->boostTimer > 0) { if (gRaceStartTimer == 0) { racer->throttle = 1.0f; - if (surfaceTraction != 0.0) { - surfaceTraction = 2.0f; + if (traction != 0.0) { + traction = 2.0f; } racer->boostTimer -= updateRate; } @@ -3538,7 +3538,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR if (racer->velocity > -2.0 && racer->velocity < 3.0 && (racer->playerIndex != PLAYER_COMPUTER || racer->unk214 != 0)) { tempVel = (3.0 - racer->velocity) * 0.15; - if (soundID == 4) { + if (surfaceType == 4) { tempVel *= 0.25; } if ((gCurrentStickY < -25) && !(gCurrentRacerInput & A_BUTTON) && (gCurrentRacerInput & B_BUTTON)) { @@ -3549,8 +3549,8 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->brake = 0.0f; } } - tempVel = (racer->brake * surfaceTraction) * 0.32; //!@Delta - racer->velocity -= surfaceTraction * racer->throttle; + tempVel = (racer->brake * traction) * 0.32; + racer->velocity -= traction * racer->throttle; if (racer->velocity > -0.04 && racer->velocity < 0.04) { racer->velocity = 0.0f; } @@ -3565,14 +3565,15 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR racer->velocity = 0.0f; } } - surfaceTraction = gCurrentRacerWeightStat; - obj->segment.y_velocity -= surfaceTraction * updateRateF; + traction = gCurrentRacerWeightStat; + obj->segment.y_velocity -= traction * updateRateF; if (gDialogueCameraAngle != 0) { - surfaceTraction = 0.0f; + traction = 0.0f; } if (racer->brake < 0.9 && racer->vehicleIDPrev < VEHICLE_TRICKY && gRaceStartTimer == 0) { - if (racer->pitch < 0.0) { - velocityDiff = -racer->pitch; + velocityDiff = racer->pitch; + if (velocityDiff < 0.0) { + velocityDiff = -velocityDiff; velocityDiff -= 0.3; if (velocityDiff < 0.0) { velocityDiff = 0.0f; @@ -3584,7 +3585,7 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } else { velocityDiff = 0.0f; } - racer->velocity += surfaceTraction * (racer->pitch / (4.0f - velocityDiff)) * updateRateF; + racer->velocity += traction * (racer->pitch / (4.0f - velocityDiff)) * updateRateF; } racer->forwardVel -= (racer->forwardVel + (racer->velocity * 0.05)) * 0.125; //!@Delta racer->unk1E8 = racer->steerAngle; @@ -3599,9 +3600,6 @@ void func_80050A28(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR } } } -#else -GLOBAL_ASM("asm/non_matchings/racer/func_80050A28.s") -#endif /** * Checks if Taj's interaction status is set to try make him teleport and return true. diff --git a/src/racer.h b/src/racer.h index 904ccb24..788b868f 100644 --- a/src/racer.h +++ b/src/racer.h @@ -163,6 +163,11 @@ typedef struct Unknown80046524 { s8 unk3A; } Unknown80046524; +typedef struct unk_Object_60 { + s32 count; + ObjectTransform *transforms[1]; +} unk_Object_60; + s32 roll_percent_chance(s32 chance); void apply_plane_tilt_anim(s32 updateRate, Object *obj, Object_Racer *racer); void racer_attack_handler_plane(Object *obj, Object_Racer *racer);