From c2d7f1077c7ba2dd84f7afe816e0ae4b6f5e1597 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Mon, 5 Feb 2024 17:07:30 -0700 Subject: [PATCH] Match (#562) --- .../code_80005FD0/func_8000DF8C.s | 944 ------------------ .../code_80005FD0/func_80011B14.s | 172 ---- src/code_80005FD0.c | 497 +++++---- src/code_80005FD0.h | 4 +- src/code_8006E9C0.c | 8 +- src/main.c | 4 +- src/main.h | 8 +- src/menus.c | 28 +- tools/doxygen_syms.md | 10 - 9 files changed, 267 insertions(+), 1408 deletions(-) delete mode 100644 asm/non_matchings/code_80005FD0/func_8000DF8C.s delete mode 100644 asm/non_matchings/code_80005FD0/func_80011B14.s diff --git a/asm/non_matchings/code_80005FD0/func_8000DF8C.s b/asm/non_matchings/code_80005FD0/func_8000DF8C.s deleted file mode 100644 index 4070f7edd..000000000 --- a/asm/non_matchings/code_80005FD0/func_8000DF8C.s +++ /dev/null @@ -1,944 +0,0 @@ -.section .late_rodata - -glabel jpt_800ED008 -.word L8000E1F4, L8000E45C, L8000E618, L8000E968 -.word L8000E634 - -glabel D_800ED01C -.float -2409.197021 - -glabel D_800ED020 -.float -355.253998 - -glabel D_800ED024 -.float 0.01 - -glabel D_800ED028 -.double -1000.0 - -glabel D_800ED030 -.float 0.3 - -glabel D_800ED034 -.float 2.3 - -glabel D_800ED038 -.float 2.3 - -glabel D_800ED03C -.float 0.15 - -.section .text - -glabel func_8000DF8C -/* 00EB8C 8000DF8C 00047880 */ sll $t7, $a0, 2 -/* 00EB90 8000DF90 01E47821 */ addu $t7, $t7, $a0 -/* 00EB94 8000DF94 27BDFEE0 */ addiu $sp, $sp, -0x120 -/* 00EB98 8000DF98 000F7880 */ sll $t7, $t7, 2 -/* 00EB9C 8000DF9C 01E47821 */ addu $t7, $t7, $a0 -/* 00EBA0 8000DFA0 3C188016 */ lui $t8, %hi(gBombKarts) # $t8, 0x8016 -/* 00EBA4 8000DFA4 AFB00034 */ sw $s0, 0x34($sp) -/* 00EBA8 8000DFA8 27183DE8 */ addiu $t8, %lo(gBombKarts) # addiu $t8, $t8, 0x3de8 -/* 00EBAC 8000DFAC 000F7880 */ sll $t7, $t7, 2 -/* 00EBB0 8000DFB0 01F88021 */ addu $s0, $t7, $t8 -/* 00EBB4 8000DFB4 96190044 */ lhu $t9, 0x44($s0) -/* 00EBB8 8000DFB8 AFBF003C */ sw $ra, 0x3c($sp) -/* 00EBBC 8000DFBC AFB10038 */ sw $s1, 0x38($sp) -/* 00EBC0 8000DFC0 332AFFFF */ andi $t2, $t9, 0xffff -/* 00EBC4 8000DFC4 F7B80028 */ sdc1 $f24, 0x28($sp) -/* 00EBC8 8000DFC8 F7B60020 */ sdc1 $f22, 0x20($sp) -/* 00EBCC 8000DFCC F7B40018 */ sdc1 $f20, 0x18($sp) -/* 00EBD0 8000DFD0 AFA40120 */ sw $a0, 0x120($sp) -/* 00EBD4 8000DFD4 AFAA004C */ sw $t2, 0x4c($sp) -/* 00EBD8 8000DFD8 11400346 */ beqz $t2, .L8000ECF4 -/* 00EBDC 8000DFDC A7B9007E */ sh $t9, 0x7e($sp) -/* 00EBE0 8000DFE0 960B004A */ lhu $t3, 0x4a($s0) -/* 00EBE4 8000DFE4 24030001 */ li $v1, 1 -/* 00EBE8 8000DFE8 3C09800E */ lui $t1, %hi(gCurrentCourseId) -/* 00EBEC 8000DFEC 146B0005 */ bne $v1, $t3, .L8000E004 -/* 00EBF0 8000DFF0 2529C5A0 */ addiu $t1, %lo(gCurrentCourseId) # addiu $t1, $t1, -0x3a60 -/* 00EBF4 8000DFF4 852C0000 */ lh $t4, ($t1) -/* 00EBF8 8000DFF8 24010014 */ li $at, 20 -/* 00EBFC 8000DFFC 5581033E */ bnel $t4, $at, .L8000ECF8 -/* 00EC00 8000E000 8FBF003C */ lw $ra, 0x3c($sp) -.L8000E004: -/* 00EC04 8000E004 960D0042 */ lhu $t5, 0x42($s0) -/* 00EC08 8000E008 C6160000 */ lwc1 $f22, ($s0) -/* 00EC0C 8000E00C C6140004 */ lwc1 $f20, 4($s0) -/* 00EC10 8000E010 C6180008 */ lwc1 $f24, 8($s0) -/* 00EC14 8000E014 A7AD00CA */ sh $t5, 0xca($sp) -/* 00EC18 8000E018 C604003C */ lwc1 $f4, 0x3c($s0) -/* 00EC1C 8000E01C 8FB8004C */ lw $t8, 0x4c($sp) -/* 00EC20 8000E020 3C09800E */ lui $t1, %hi(gCurrentCourseId) -/* 00EC24 8000E024 E7A400C4 */ swc1 $f4, 0xc4($sp) -/* 00EC28 8000E028 960E0040 */ lhu $t6, 0x40($s0) -/* 00EC2C 8000E02C 2529C5A0 */ addiu $t1, %lo(gCurrentCourseId) # addiu $t1, $t1, -0x3a60 -/* 00EC30 8000E030 24010004 */ li $at, 4 -/* 00EC34 8000E034 A7AE00C2 */ sh $t6, 0xc2($sp) -/* 00EC38 8000E038 960F0046 */ lhu $t7, 0x46($s0) -/* 00EC3C 8000E03C A7AF007C */ sh $t7, 0x7c($sp) -/* 00EC40 8000E040 13000062 */ beqz $t8, .L8000E1CC -/* 00EC44 8000E044 96110048 */ lhu $s1, 0x48($s0) -/* 00EC48 8000E048 53010061 */ beql $t8, $at, .L8000E1D0 -/* 00EC4C 8000E04C 8FB9004C */ lw $t9, 0x4c($sp) -/* 00EC50 8000E050 85220000 */ lh $v0, ($t1) -/* 00EC54 8000E054 24010014 */ li $at, 20 -/* 00EC58 8000E058 3C198016 */ lui $t9, %hi(D_8016347E) # $t9, 0x8016 -/* 00EC5C 8000E05C 14410025 */ bne $v0, $at, .L8000E0F4 -/* 00EC60 8000E060 00000000 */ nop -/* 00EC64 8000E064 8739347E */ lh $t9, %lo(D_8016347E)($t9) -/* 00EC68 8000E068 54790059 */ bnel $v1, $t9, .L8000E1D0 -/* 00EC6C 8000E06C 8FB9004C */ lw $t9, 0x4c($sp) -/* 00EC70 8000E070 3C02800E */ lui $v0, %hi(gPlayerFour) -/* 00EC74 8000E074 8C42C4E8 */ lw $v0, %lo(gPlayerFour)($v0) -/* 00EC78 8000E078 3C0141C8 */ li $at, 0x41C80000 # 25.000000 -/* 00EC7C 8000E07C 44817000 */ mtc1 $at, $f14 -/* 00EC80 8000E080 C4460014 */ lwc1 $f6, 0x14($v0) -/* 00EC84 8000E084 C4480018 */ lwc1 $f8, 0x18($v0) -/* 00EC88 8000E088 C44A001C */ lwc1 $f10, 0x1c($v0) -/* 00EC8C 8000E08C 4606B001 */ sub.s $f0, $f22, $f6 -/* 00EC90 8000E090 240A0004 */ li $t2, 4 -/* 00EC94 8000E094 2401DFFF */ li $at, -8193 -/* 00EC98 8000E098 4608A081 */ sub.s $f2, $f20, $f8 -/* 00EC9C 8000E09C 46000102 */ mul.s $f4, $f0, $f0 -/* 00ECA0 8000E0A0 460AC301 */ sub.s $f12, $f24, $f10 -/* 00ECA4 8000E0A4 46021182 */ mul.s $f6, $f2, $f2 -/* 00ECA8 8000E0A8 46062200 */ add.s $f8, $f4, $f6 -/* 00ECAC 8000E0AC 460C6282 */ mul.s $f10, $f12, $f12 -/* 00ECB0 8000E0B0 460A4100 */ add.s $f4, $f8, $f10 -/* 00ECB4 8000E0B4 460E203C */ c.lt.s $f4, $f14 -/* 00ECB8 8000E0B8 00000000 */ nop -/* 00ECBC 8000E0BC 45020044 */ bc1fl .L8000E1D0 -/* 00ECC0 8000E0C0 8FB9004C */ lw $t9, 0x4c($sp) -/* 00ECC4 8000E0C4 A7AA007E */ sh $t2, 0x7e($sp) -/* 00ECC8 8000E0C8 8C4B000C */ lw $t3, 0xc($v0) -/* 00ECCC 8000E0CC 944D0000 */ lhu $t5, ($v0) -/* 00ECD0 8000E0D0 3C050040 */ lui $a1, 0x40 -/* 00ECD4 8000E0D4 01656025 */ or $t4, $t3, $a1 -/* 00ECD8 8000E0D8 01A17024 */ and $t6, $t5, $at -/* 00ECDC 8000E0DC AC4C000C */ sw $t4, 0xc($v0) -/* 00ECE0 8000E0E0 A44E0000 */ sh $t6, ($v0) -/* 00ECE4 8000E0E4 240F0004 */ li $t7, 4 -/* 00ECE8 8000E0E8 00008825 */ move $s1, $zero -/* 00ECEC 8000E0EC 10000037 */ b .L8000E1CC -/* 00ECF0 8000E0F0 AFAF004C */ sw $t7, 0x4c($sp) -.L8000E0F4: -/* 00ECF4 8000E0F4 3C038019 */ lui $v1, %hi(gPlayerCount) # $v1, 0x8019 -/* 00ECF8 8000E0F8 8063EDF3 */ lb $v1, %lo(gPlayerCount)($v1) -/* 00ECFC 8000E0FC 00002025 */ move $a0, $zero -/* 00ED00 8000E100 3C0141C8 */ li $at, 0x41C80000 # 25.000000 -/* 00ED04 8000E104 58600032 */ blezl $v1, .L8000E1D0 -/* 00ED08 8000E108 8FB9004C */ lw $t9, 0x4c($sp) -/* 00ED0C 8000E10C 3C02800F */ lui $v0, %hi(gPlayers) # $v0, 0x800f -/* 00ED10 8000E110 44817000 */ mtc1 $at, $f14 -/* 00ED14 8000E114 24426990 */ addiu $v0, %lo(gPlayers) # addiu $v0, $v0, 0x6990 -/* 00ED18 8000E118 3C080100 */ lui $t0, 0x100 -/* 00ED1C 8000E11C 24070005 */ li $a3, 5 -/* 00ED20 8000E120 3C068000 */ lui $a2, 0x8000 -/* 00ED24 8000E124 3C050040 */ lui $a1, 0x40 -.L8000E128: -/* 00ED28 8000E128 8C5800BC */ lw $t8, 0xbc($v0) -/* 00ED2C 8000E12C 24840001 */ addiu $a0, $a0, 1 -/* 00ED30 8000E130 0306C824 */ and $t9, $t8, $a2 -/* 00ED34 8000E134 57200021 */ bnel $t9, $zero, .L8000E1BC -/* 00ED38 8000E138 0083082A */ slt $at, $a0, $v1 -/* 00ED3C 8000E13C C4460014 */ lwc1 $f6, 0x14($v0) -/* 00ED40 8000E140 C4480018 */ lwc1 $f8, 0x18($v0) -/* 00ED44 8000E144 C44A001C */ lwc1 $f10, 0x1c($v0) -/* 00ED48 8000E148 4606B001 */ sub.s $f0, $f22, $f6 -/* 00ED4C 8000E14C 4608A081 */ sub.s $f2, $f20, $f8 -/* 00ED50 8000E150 46000102 */ mul.s $f4, $f0, $f0 -/* 00ED54 8000E154 460AC301 */ sub.s $f12, $f24, $f10 -/* 00ED58 8000E158 46021182 */ mul.s $f6, $f2, $f2 -/* 00ED5C 8000E15C 46062200 */ add.s $f8, $f4, $f6 -/* 00ED60 8000E160 460C6282 */ mul.s $f10, $f12, $f12 -/* 00ED64 8000E164 460A4100 */ add.s $f4, $f8, $f10 -/* 00ED68 8000E168 460E203C */ c.lt.s $f4, $f14 -/* 00ED6C 8000E16C 00000000 */ nop -/* 00ED70 8000E170 45020012 */ bc1fl .L8000E1BC -/* 00ED74 8000E174 0083082A */ slt $at, $a0, $v1 -/* 00ED78 8000E178 852B0000 */ lh $t3, ($t1) -/* 00ED7C 8000E17C 240A0004 */ li $t2, 4 -/* 00ED80 8000E180 A7AA007E */ sh $t2, 0x7e($sp) -/* 00ED84 8000E184 14EB0007 */ bne $a3, $t3, .L8000E1A4 -/* 00ED88 8000E188 00008825 */ move $s1, $zero -/* 00ED8C 8000E18C 8C4C000C */ lw $t4, 0xc($v0) -/* 00ED90 8000E190 3C038019 */ lui $v1, %hi(gPlayerCount) # $v1, 0x8019 -/* 00ED94 8000E194 01886825 */ or $t5, $t4, $t0 -/* 00ED98 8000E198 AC4D000C */ sw $t5, 0xc($v0) -/* 00ED9C 8000E19C 10000006 */ b .L8000E1B8 -/* 00EDA0 8000E1A0 8063EDF3 */ lb $v1, %lo(gPlayerCount)($v1) -.L8000E1A4: -/* 00EDA4 8000E1A4 8C4E000C */ lw $t6, 0xc($v0) -/* 00EDA8 8000E1A8 3C038019 */ lui $v1, %hi(gPlayerCount) # $v1, 0x8019 -/* 00EDAC 8000E1AC 01C57825 */ or $t7, $t6, $a1 -/* 00EDB0 8000E1B0 AC4F000C */ sw $t7, 0xc($v0) -/* 00EDB4 8000E1B4 8063EDF3 */ lb $v1, %lo(gPlayerCount)($v1) -.L8000E1B8: -/* 00EDB8 8000E1B8 0083082A */ slt $at, $a0, $v1 -.L8000E1BC: -/* 00EDBC 8000E1BC 1420FFDA */ bnez $at, .L8000E128 -/* 00EDC0 8000E1C0 24420DD8 */ addiu $v0, $v0, 0xdd8 -/* 00EDC4 8000E1C4 97B8007E */ lhu $t8, 0x7e($sp) -/* 00EDC8 8000E1C8 AFB8004C */ sw $t8, 0x4c($sp) -.L8000E1CC: -/* 00EDCC 8000E1CC 8FB9004C */ lw $t9, 0x4c($sp) -.L8000E1D0: -/* 00EDD0 8000E1D0 272AFFFF */ addiu $t2, $t9, -1 -/* 00EDD4 8000E1D4 2D410005 */ sltiu $at, $t2, 5 -/* 00EDD8 8000E1D8 10200231 */ beqz $at, .L8000EAA0 -/* 00EDDC 8000E1DC 000A5080 */ sll $t2, $t2, 2 -/* 00EDE0 8000E1E0 3C01800F */ lui $at, %hi(jpt_800ED008) -/* 00EDE4 8000E1E4 002A0821 */ addu $at, $at, $t2 -/* 00EDE8 8000E1E8 8C2AD008 */ lw $t2, %lo(jpt_800ED008)($at) -/* 00EDEC 8000E1EC 01400008 */ jr $t2 -/* 00EDF0 8000E1F0 00000000 */ nop -glabel L8000E1F4 -/* 00EDF4 8000E1F4 24030168 */ li $v1, 360 -/* 00EDF8 8000E1F8 262B0164 */ addiu $t3, $s1, 0x164 -/* 00EDFC 8000E1FC 0163001A */ div $zero, $t3, $v1 -/* 00EE00 8000E200 00008810 */ mfhi $s1 -/* 00EE04 8000E204 322CFFFF */ andi $t4, $s1, 0xffff -/* 00EE08 8000E208 000C6C00 */ sll $t5, $t4, 0x10 -/* 00EE0C 8000E20C 01AC6823 */ subu $t5, $t5, $t4 -/* 00EE10 8000E210 01A3001A */ div $zero, $t5, $v1 -/* 00EE14 8000E214 14600002 */ bnez $v1, .L8000E220 -/* 00EE18 8000E218 00000000 */ nop -/* 00EE1C 8000E21C 0007000D */ break 7 -.L8000E220: -/* 00EE20 8000E220 2401FFFF */ li $at, -1 -/* 00EE24 8000E224 14610004 */ bne $v1, $at, .L8000E238 -/* 00EE28 8000E228 3C018000 */ lui $at, 0x8000 -/* 00EE2C 8000E22C 15610002 */ bne $t3, $at, .L8000E238 -/* 00EE30 8000E230 00000000 */ nop -/* 00EE34 8000E234 0006000D */ break 6 -.L8000E238: -/* 00EE38 8000E238 00002012 */ mflo $a0 -/* 00EE3C 8000E23C 308EFFFF */ andi $t6, $a0, 0xffff -/* 00EE40 8000E240 01801025 */ move $v0, $t4 -/* 00EE44 8000E244 01808825 */ move $s1, $t4 -/* 00EE48 8000E248 14600002 */ bnez $v1, .L8000E254 -/* 00EE4C 8000E24C 00000000 */ nop -/* 00EE50 8000E250 0007000D */ break 7 -.L8000E254: -/* 00EE54 8000E254 2401FFFF */ li $at, -1 -/* 00EE58 8000E258 14610004 */ bne $v1, $at, .L8000E26C -/* 00EE5C 8000E25C 3C018000 */ lui $at, 0x8000 -/* 00EE60 8000E260 15A10002 */ bne $t5, $at, .L8000E26C -/* 00EE64 8000E264 00000000 */ nop -/* 00EE68 8000E268 0006000D */ break 6 -.L8000E26C: -/* 00EE6C 8000E26C AFA20048 */ sw $v0, 0x48($sp) -/* 00EE70 8000E270 01C02025 */ move $a0, $t6 -/* 00EE74 8000E274 0C0AE00E */ jal coss -/* 00EE78 8000E278 AFAE0044 */ sw $t6, 0x44($sp) -/* 00EE7C 8000E27C 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00EE80 8000E280 44814800 */ mtc1 $at, $f9 -/* 00EE84 8000E284 44804000 */ mtc1 $zero, $f8 -/* 00EE88 8000E288 460001A1 */ cvt.d.s $f6, $f0 -/* 00EE8C 8000E28C 8FA40044 */ lw $a0, 0x44($sp) -/* 00EE90 8000E290 46283282 */ mul.d $f10, $f6, $f8 -/* 00EE94 8000E294 46205120 */ cvt.s.d $f4, $f10 -/* 00EE98 8000E298 0C0AE006 */ jal sins -/* 00EE9C 8000E29C E7A40118 */ swc1 $f4, 0x118($sp) -/* 00EEA0 8000E2A0 24030168 */ li $v1, 360 -/* 00EEA4 8000E2A4 8FAC0048 */ lw $t4, 0x48($sp) -/* 00EEA8 8000E2A8 97B800CA */ lhu $t8, 0xca($sp) -/* 00EEAC 8000E2AC 3C0F8016 */ lui $t7, %hi(D_80164550) # $t7, 0x8016 -/* 00EEB0 8000E2B0 258D0001 */ addiu $t5, $t4, 1 -/* 00EEB4 8000E2B4 01A3001A */ div $zero, $t5, $v1 -/* 00EEB8 8000E2B8 00007010 */ mfhi $t6 -/* 00EEBC 8000E2BC 0018C8C0 */ sll $t9, $t8, 3 -/* 00EEC0 8000E2C0 000EC400 */ sll $t8, $t6, 0x10 -/* 00EEC4 8000E2C4 030EC023 */ subu $t8, $t8, $t6 -/* 00EEC8 8000E2C8 0303001A */ div $zero, $t8, $v1 -/* 00EECC 8000E2CC 8DEF4550 */ lw $t7, %lo(D_80164550)($t7) -/* 00EED0 8000E2D0 3C014060 */ li $at, 0x40600000 # 3.500000 -/* 00EED4 8000E2D4 C7AA0118 */ lwc1 $f10, 0x118($sp) -/* 00EED8 8000E2D8 01F91021 */ addu $v0, $t7, $t9 -/* 00EEDC 8000E2DC 844A0000 */ lh $t2, ($v0) -/* 00EEE0 8000E2E0 C6040050 */ lwc1 $f4, 0x50($s0) -/* 00EEE4 8000E2E4 844B0004 */ lh $t3, 4($v0) -/* 00EEE8 8000E2E8 448A3000 */ mtc1 $t2, $f6 -/* 00EEEC 8000E2EC 3C068016 */ lui $a2, %hi(D_80162FB0) # $a2, 0x8016 -/* 00EEF0 8000E2F0 24C62FB0 */ addiu $a2, %lo(D_80162FB0) # addiu $a2, $a2, 0x2fb0 -/* 00EEF4 8000E2F4 46803220 */ cvt.s.w $f8, $f6 -/* 00EEF8 8000E2F8 44813000 */ mtc1 $at, $f6 -/* 00EEFC 8000E2FC 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00EF00 8000E300 44815800 */ mtc1 $at, $f11 -/* 00EF04 8000E304 00002012 */ mflo $a0 -/* 00EF08 8000E308 46062500 */ add.s $f20, $f4, $f6 -/* 00EF0C 8000E30C 308FFFFF */ andi $t7, $a0, 0xffff -/* 00EF10 8000E310 01E02025 */ move $a0, $t7 -/* 00EF14 8000E314 460A4580 */ add.s $f22, $f8, $f10 -/* 00EF18 8000E318 44805000 */ mtc1 $zero, $f10 -/* 00EF1C 8000E31C E4D40004 */ swc1 $f20, 4($a2) -/* 00EF20 8000E320 46000221 */ cvt.d.s $f8, $f0 -/* 00EF24 8000E324 E4D60000 */ swc1 $f22, ($a2) -/* 00EF28 8000E328 462A4102 */ mul.d $f4, $f8, $f10 -/* 00EF2C 8000E32C 448B4000 */ mtc1 $t3, $f8 -/* 00EF30 8000E330 AFAF0044 */ sw $t7, 0x44($sp) -/* 00EF34 8000E334 AFA20110 */ sw $v0, 0x110($sp) -/* 00EF38 8000E338 468042A0 */ cvt.s.w $f10, $f8 -/* 00EF3C 8000E33C 462021A0 */ cvt.s.d $f6, $f4 -/* 00EF40 8000E340 46065600 */ add.s $f24, $f10, $f6 -/* 00EF44 8000E344 E4D80008 */ swc1 $f24, 8($a2) -/* 00EF48 8000E348 14600002 */ bnez $v1, .L8000E354 -/* 00EF4C 8000E34C 00000000 */ nop -/* 00EF50 8000E350 0007000D */ break 7 -.L8000E354: -/* 00EF54 8000E354 2401FFFF */ li $at, -1 -/* 00EF58 8000E358 14610004 */ bne $v1, $at, .L8000E36C -/* 00EF5C 8000E35C 3C018000 */ lui $at, 0x8000 -/* 00EF60 8000E360 15A10002 */ bne $t5, $at, .L8000E36C -/* 00EF64 8000E364 00000000 */ nop -/* 00EF68 8000E368 0006000D */ break 6 -.L8000E36C: -/* 00EF6C 8000E36C 14600002 */ bnez $v1, .L8000E378 -/* 00EF70 8000E370 00000000 */ nop -/* 00EF74 8000E374 0007000D */ break 7 -.L8000E378: -/* 00EF78 8000E378 2401FFFF */ li $at, -1 -/* 00EF7C 8000E37C 14610004 */ bne $v1, $at, .L8000E390 -/* 00EF80 8000E380 3C018000 */ lui $at, 0x8000 -/* 00EF84 8000E384 17010002 */ bne $t8, $at, .L8000E390 -/* 00EF88 8000E388 00000000 */ nop -/* 00EF8C 8000E38C 0006000D */ break 6 -.L8000E390: -/* 00EF90 8000E390 0C0AE00E */ jal coss -/* 00EF94 8000E394 00000000 */ nop -/* 00EF98 8000E398 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00EF9C 8000E39C 44814800 */ mtc1 $at, $f9 -/* 00EFA0 8000E3A0 44804000 */ mtc1 $zero, $f8 -/* 00EFA4 8000E3A4 46000121 */ cvt.d.s $f4, $f0 -/* 00EFA8 8000E3A8 8FA40044 */ lw $a0, 0x44($sp) -/* 00EFAC 8000E3AC 46282282 */ mul.d $f10, $f4, $f8 -/* 00EFB0 8000E3B0 462051A0 */ cvt.s.d $f6, $f10 -/* 00EFB4 8000E3B4 0C0AE006 */ jal sins -/* 00EFB8 8000E3B8 E7A60118 */ swc1 $f6, 0x118($sp) -/* 00EFBC 8000E3BC 8FA20110 */ lw $v0, 0x110($sp) -/* 00EFC0 8000E3C0 C7AA0118 */ lwc1 $f10, 0x118($sp) -/* 00EFC4 8000E3C4 3C058016 */ lui $a1, %hi(D_80162FC0) # $a1, 0x8016 -/* 00EFC8 8000E3C8 84590000 */ lh $t9, ($v0) -/* 00EFCC 8000E3CC 24A52FC0 */ addiu $a1, %lo(D_80162FC0) # addiu $a1, $a1, 0x2fc0 -/* 00EFD0 8000E3D0 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00EFD4 8000E3D4 44992000 */ mtc1 $t9, $f4 -/* 00EFD8 8000E3D8 3C068016 */ lui $a2, %hi(D_80162FB0) # 0x8016 -/* 00EFDC 8000E3DC 24C42FB0 */ addiu $a0, $a2, %lo(D_80162FB0) # 0x2fb0 -/* 00EFE0 8000E3E0 46802220 */ cvt.s.w $f8, $f4 -/* 00EFE4 8000E3E4 460A4180 */ add.s $f6, $f8, $f10 -/* 00EFE8 8000E3E8 44813800 */ mtc1 $at, $f7 -/* 00EFEC 8000E3EC 460002A1 */ cvt.d.s $f10, $f0 -/* 00EFF0 8000E3F0 E4A60000 */ swc1 $f6, ($a1) -/* 00EFF4 8000E3F4 844A0002 */ lh $t2, 2($v0) -/* 00EFF8 8000E3F8 44803000 */ mtc1 $zero, $f6 -/* 00EFFC 8000E3FC 448A2000 */ mtc1 $t2, $f4 -/* 00F000 8000E400 00000000 */ nop -/* 00F004 8000E404 46802220 */ cvt.s.w $f8, $f4 -/* 00F008 8000E408 46265102 */ mul.d $f4, $f10, $f6 -/* 00F00C 8000E40C E4A80004 */ swc1 $f8, 4($a1) -/* 00F010 8000E410 844B0004 */ lh $t3, 4($v0) -/* 00F014 8000E414 46202220 */ cvt.s.d $f8, $f4 -/* 00F018 8000E418 448B5000 */ mtc1 $t3, $f10 -/* 00F01C 8000E41C 00000000 */ nop -/* 00F020 8000E420 468051A0 */ cvt.s.w $f6, $f10 -/* 00F024 8000E424 46083100 */ add.s $f4, $f6, $f8 -/* 00F028 8000E428 0C0AD489 */ jal get_angle_between_points -/* 00F02C 8000E42C E4A40008 */ swc1 $f4, 8($a1) -/* 00F030 8000E430 3403FFFF */ li $v1, 65535 -/* 00F034 8000E434 00430019 */ multu $v0, $v1 -/* 00F038 8000E438 3401FFF0 */ li $at, 65520 -/* 00F03C 8000E43C 00006012 */ mflo $t4 -/* 00F040 8000E440 00000000 */ nop -/* 00F044 8000E444 00000000 */ nop -/* 00F048 8000E448 0181001A */ div $zero, $t4, $at -/* 00F04C 8000E44C 00006812 */ mflo $t5 -/* 00F050 8000E450 A7AD00C2 */ sh $t5, 0xc2($sp) -/* 00F054 8000E454 10000194 */ b .L8000EAA8 -/* 00F058 8000E458 8FAE004C */ lw $t6, 0x4c($sp) -glabel L8000E45C -/* 00F05C 8000E45C 26310004 */ addiu $s1, $s1, 4 -/* 00F060 8000E460 24010168 */ li $at, 360 -/* 00F064 8000E464 0221001A */ div $zero, $s1, $at -/* 00F068 8000E468 00007010 */ mfhi $t6 -/* 00F06C 8000E46C 31C2FFFF */ andi $v0, $t6, 0xffff -/* 00F070 8000E470 00022400 */ sll $a0, $v0, 0x10 -/* 00F074 8000E474 00822023 */ subu $a0, $a0, $v0 -/* 00F078 8000E478 0081001A */ div $zero, $a0, $at -/* 00F07C 8000E47C 00007812 */ mflo $t7 -/* 00F080 8000E480 31E4FFFF */ andi $a0, $t7, 0xffff -/* 00F084 8000E484 00408825 */ move $s1, $v0 -/* 00F088 8000E488 AFA40044 */ sw $a0, 0x44($sp) -/* 00F08C 8000E48C 0C0AE00E */ jal coss -/* 00F090 8000E490 AFA20048 */ sw $v0, 0x48($sp) -/* 00F094 8000E494 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00F098 8000E498 44813800 */ mtc1 $at, $f7 -/* 00F09C 8000E49C 44803000 */ mtc1 $zero, $f6 -/* 00F0A0 8000E4A0 460002A1 */ cvt.d.s $f10, $f0 -/* 00F0A4 8000E4A4 8FA40044 */ lw $a0, 0x44($sp) -/* 00F0A8 8000E4A8 46265202 */ mul.d $f8, $f10, $f6 -/* 00F0AC 8000E4AC 46204120 */ cvt.s.d $f4, $f8 -/* 00F0B0 8000E4B0 0C0AE006 */ jal sins -/* 00F0B4 8000E4B4 E7A40118 */ swc1 $f4, 0x118($sp) -/* 00F0B8 8000E4B8 97AB00CA */ lhu $t3, 0xca($sp) -/* 00F0BC 8000E4BC 3C0A8016 */ lui $t2, %hi(D_80164550) # $t2, 0x8016 -/* 00F0C0 8000E4C0 8D4A4550 */ lw $t2, %lo(D_80164550)($t2) -/* 00F0C4 8000E4C4 000B60C0 */ sll $t4, $t3, 3 -/* 00F0C8 8000E4C8 3C014060 */ li $at, 0x40600000 # 3.500000 -/* 00F0CC 8000E4CC 014C1021 */ addu $v0, $t2, $t4 -/* 00F0D0 8000E4D0 844D0000 */ lh $t5, ($v0) -/* 00F0D4 8000E4D4 8FA40048 */ lw $a0, 0x48($sp) -/* 00F0D8 8000E4D8 C7A80118 */ lwc1 $f8, 0x118($sp) -/* 00F0DC 8000E4DC 448D5000 */ mtc1 $t5, $f10 -/* 00F0E0 8000E4E0 24840001 */ addiu $a0, $a0, 1 -/* 00F0E4 8000E4E4 C6040050 */ lwc1 $f4, 0x50($s0) -/* 00F0E8 8000E4E8 468051A0 */ cvt.s.w $f6, $f10 -/* 00F0EC 8000E4EC 44815000 */ mtc1 $at, $f10 -/* 00F0F0 8000E4F0 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00F0F4 8000E4F4 44814800 */ mtc1 $at, $f9 -/* 00F0F8 8000E4F8 24010168 */ li $at, 360 -/* 00F0FC 8000E4FC 0081001A */ div $zero, $a0, $at -/* 00F100 8000E500 0000C010 */ mfhi $t8 -/* 00F104 8000E504 00187C00 */ sll $t7, $t8, 0x10 -/* 00F108 8000E508 01F87823 */ subu $t7, $t7, $t8 -/* 00F10C 8000E50C 01E1001A */ div $zero, $t7, $at -/* 00F110 8000E510 46083580 */ add.s $f22, $f6, $f8 -/* 00F114 8000E514 44804000 */ mtc1 $zero, $f8 -/* 00F118 8000E518 844E0004 */ lh $t6, 4($v0) -/* 00F11C 8000E51C 460001A1 */ cvt.d.s $f6, $f0 -/* 00F120 8000E520 460A2500 */ add.s $f20, $f4, $f10 -/* 00F124 8000E524 46283102 */ mul.d $f4, $f6, $f8 -/* 00F128 8000E528 448E3000 */ mtc1 $t6, $f6 -/* 00F12C 8000E52C 3C068016 */ lui $a2, %hi(D_80162FB0) # $a2, 0x8016 -/* 00F130 8000E530 24C62FB0 */ addiu $a2, %lo(D_80162FB0) # addiu $a2, $a2, 0x2fb0 -/* 00F134 8000E534 0000C812 */ mflo $t9 -/* 00F138 8000E538 3324FFFF */ andi $a0, $t9, 0xffff -/* 00F13C 8000E53C E4D60000 */ swc1 $f22, ($a2) -/* 00F140 8000E540 46803220 */ cvt.s.w $f8, $f6 -/* 00F144 8000E544 E4D40004 */ swc1 $f20, 4($a2) -/* 00F148 8000E548 AFA40044 */ sw $a0, 0x44($sp) -/* 00F14C 8000E54C AFA20110 */ sw $v0, 0x110($sp) -/* 00F150 8000E550 462022A0 */ cvt.s.d $f10, $f4 -/* 00F154 8000E554 460A4600 */ add.s $f24, $f8, $f10 -/* 00F158 8000E558 0C0AE00E */ jal coss -/* 00F15C 8000E55C E4D80008 */ swc1 $f24, 8($a2) -/* 00F160 8000E560 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00F164 8000E564 44813800 */ mtc1 $at, $f7 -/* 00F168 8000E568 44803000 */ mtc1 $zero, $f6 -/* 00F16C 8000E56C 46000121 */ cvt.d.s $f4, $f0 -/* 00F170 8000E570 8FA40044 */ lw $a0, 0x44($sp) -/* 00F174 8000E574 46262202 */ mul.d $f8, $f4, $f6 -/* 00F178 8000E578 462042A0 */ cvt.s.d $f10, $f8 -/* 00F17C 8000E57C 0C0AE006 */ jal sins -/* 00F180 8000E580 E7AA0118 */ swc1 $f10, 0x118($sp) -/* 00F184 8000E584 8FA20110 */ lw $v0, 0x110($sp) -/* 00F188 8000E588 C7A80118 */ lwc1 $f8, 0x118($sp) -/* 00F18C 8000E58C 3C058016 */ lui $a1, %hi(D_80162FC0) # $a1, 0x8016 -/* 00F190 8000E590 844A0000 */ lh $t2, ($v0) -/* 00F194 8000E594 24A52FC0 */ addiu $a1, %lo(D_80162FC0) # addiu $a1, $a1, 0x2fc0 -/* 00F198 8000E598 3C014039 */ li $at, 0x40390000 # 2.890625 -/* 00F19C 8000E59C 448A2000 */ mtc1 $t2, $f4 -/* 00F1A0 8000E5A0 3C068016 */ lui $a2, %hi(D_80162FB0) # 0x8016 -/* 00F1A4 8000E5A4 24C42FB0 */ addiu $a0, $a2, %lo(D_80162FB0) # 0x2fb0 -/* 00F1A8 8000E5A8 468021A0 */ cvt.s.w $f6, $f4 -/* 00F1AC 8000E5AC 46083280 */ add.s $f10, $f6, $f8 -/* 00F1B0 8000E5B0 44815800 */ mtc1 $at, $f11 -/* 00F1B4 8000E5B4 46000221 */ cvt.d.s $f8, $f0 -/* 00F1B8 8000E5B8 E4AA0000 */ swc1 $f10, ($a1) -/* 00F1BC 8000E5BC 844C0002 */ lh $t4, 2($v0) -/* 00F1C0 8000E5C0 44805000 */ mtc1 $zero, $f10 -/* 00F1C4 8000E5C4 448C2000 */ mtc1 $t4, $f4 -/* 00F1C8 8000E5C8 00000000 */ nop -/* 00F1CC 8000E5CC 468021A0 */ cvt.s.w $f6, $f4 -/* 00F1D0 8000E5D0 462A4102 */ mul.d $f4, $f8, $f10 -/* 00F1D4 8000E5D4 E4A60004 */ swc1 $f6, 4($a1) -/* 00F1D8 8000E5D8 844D0004 */ lh $t5, 4($v0) -/* 00F1DC 8000E5DC 462021A0 */ cvt.s.d $f6, $f4 -/* 00F1E0 8000E5E0 448D4000 */ mtc1 $t5, $f8 -/* 00F1E4 8000E5E4 00000000 */ nop -/* 00F1E8 8000E5E8 468042A0 */ cvt.s.w $f10, $f8 -/* 00F1EC 8000E5EC 46065100 */ add.s $f4, $f10, $f6 -/* 00F1F0 8000E5F0 0C0AD489 */ jal get_angle_between_points -/* 00F1F4 8000E5F4 E4A40008 */ swc1 $f4, 8($a1) -/* 00F1F8 8000E5F8 00027400 */ sll $t6, $v0, 0x10 -/* 00F1FC 8000E5FC 01C27023 */ subu $t6, $t6, $v0 -/* 00F200 8000E600 3401FFF0 */ li $at, 65520 -/* 00F204 8000E604 01C1001A */ div $zero, $t6, $at -/* 00F208 8000E608 0000C012 */ mflo $t8 -/* 00F20C 8000E60C A7B800C2 */ sh $t8, 0xc2($sp) -/* 00F210 8000E610 10000124 */ b .L8000EAA4 -/* 00F214 8000E614 3403FFFF */ li $v1, 65535 -glabel L8000E618 -/* 00F218 8000E618 3C014060 */ li $at, 0x40600000 # 3.500000 -/* 00F21C 8000E61C 44815000 */ mtc1 $at, $f10 -/* 00F220 8000E620 C6080050 */ lwc1 $f8, 0x50($s0) -/* 00F224 8000E624 A7A000C2 */ sh $zero, 0xc2($sp) -/* 00F228 8000E628 3403FFFF */ li $v1, 65535 -/* 00F22C 8000E62C 1000011D */ b .L8000EAA4 -/* 00F230 8000E630 460A4500 */ add.s $f20, $f8, $f10 -glabel L8000E634 -/* 00F234 8000E634 3C0F8016 */ lui $t7, %hi(D_8016347C) # $t7, 0x8016 -/* 00F238 8000E638 85EF347C */ lh $t7, %lo(D_8016347C)($t7) -/* 00F23C 8000E63C 3C198016 */ lui $t9, %hi(gNearestWaypointByPlayerId + 0x6) # $t9, 0x8016 -/* 00F240 8000E640 11E00007 */ beqz $t7, .L8000E660 -/* 00F244 8000E644 00000000 */ nop -/* 00F248 8000E648 9739443E */ lhu $t9, %lo(gNearestWaypointByPlayerId + 0x6)($t9) -/* 00F24C 8000E64C 87A700CA */ lh $a3, 0xca($sp) -/* 00F250 8000E650 240B0003 */ li $t3, 3 -/* 00F254 8000E654 2B210005 */ slti $at, $t9, 5 -/* 00F258 8000E658 50200004 */ beql $at, $zero, .L8000E66C -/* 00F25C 8000E65C 4406C000 */ mfc1 $a2, $f24 -.L8000E660: -/* 00F260 8000E660 10000110 */ b .L8000EAA4 -/* 00F264 8000E664 3403FFFF */ li $v1, 65535 -/* 00F268 8000E668 4406C000 */ mfc1 $a2, $f24 -.L8000E66C: -/* 00F26C 8000E66C 4600B306 */ mov.s $f12, $f22 -/* 00F270 8000E670 4600A386 */ mov.s $f14, $f20 -/* 00F274 8000E674 0C0034AD */ jal func_8000D2B4 -/* 00F278 8000E678 AFAB0010 */ sw $t3, 0x10($sp) -/* 00F27C 8000E67C 3044FFFF */ andi $a0, $v0, 0xffff -/* 00F280 8000E680 00401825 */ move $v1, $v0 -/* 00F284 8000E684 04800006 */ bltz $a0, .L8000E6A0 -/* 00F288 8000E688 A7A200CA */ sh $v0, 0xca($sp) -/* 00F28C 8000E68C 3C0A8016 */ lui $t2, %hi(gWaypointCountByPathIndex + 0x6) # $t2, 0x8016 -/* 00F290 8000E690 954A45CE */ lhu $t2, %lo(gWaypointCountByPathIndex + 0x6)($t2) -/* 00F294 8000E694 0144082A */ slt $at, $t2, $a0 -/* 00F298 8000E698 50200003 */ beql $at, $zero, .L8000E6A8 -/* 00F29C 8000E69C 97A900CA */ lhu $t1, 0xca($sp) -.L8000E6A0: -/* 00F2A0 8000E6A0 A7A000CA */ sh $zero, 0xca($sp) -/* 00F2A4 8000E6A4 97A900CA */ lhu $t1, 0xca($sp) -.L8000E6A8: -/* 00F2A8 8000E6A8 3C058016 */ lui $a1, %hi(D_80162FC0) # $a1, 0x8016 -/* 00F2AC 8000E6AC 24A52FC0 */ addiu $a1, %lo(D_80162FC0) # addiu $a1, $a1, 0x2fc0 -/* 00F2B0 8000E6B0 2921001A */ slti $at, $t1, 0x1a -/* 00F2B4 8000E6B4 1020004E */ beqz $at, .L8000E7F0 -/* 00F2B8 8000E6B8 3C068016 */ lui $a2, %hi(D_80162FB0) # 0x8016 -/* 00F2BC 8000E6BC 3C078016 */ lui $a3, %hi(gWaypointCountByPathIndex + 0x6) # $a3, 0x8016 -/* 00F2C0 8000E6C0 94E745CE */ lhu $a3, %lo(gWaypointCountByPathIndex + 0x6)($a3) -/* 00F2C4 8000E6C4 252C0001 */ addiu $t4, $t1, 1 -/* 00F2C8 8000E6C8 252B0002 */ addiu $t3, $t1, 2 -/* 00F2CC 8000E6CC 0187001A */ div $zero, $t4, $a3 -/* 00F2D0 8000E6D0 00006810 */ mfhi $t5 -/* 00F2D4 8000E6D4 3C088016 */ lui $t0, %hi(D_80164550 + 0xC) # $t0, 0x8016 -/* 00F2D8 8000E6D8 8D08455C */ lw $t0, %lo(D_80164550 + 0xC)($t0) -/* 00F2DC 8000E6DC 0167001A */ div $zero, $t3, $a3 -/* 00F2E0 8000E6E0 000D70C0 */ sll $t6, $t5, 3 -/* 00F2E4 8000E6E4 01C81021 */ addu $v0, $t6, $t0 -/* 00F2E8 8000E6E8 84580000 */ lh $t8, ($v0) -/* 00F2EC 8000E6EC 3C068016 */ lui $a2, %hi(D_80162FB0) # $a2, 0x8016 -/* 00F2F0 8000E6F0 24C62FB0 */ addiu $a2, %lo(D_80162FB0) # addiu $a2, $a2, 0x2fb0 -/* 00F2F4 8000E6F4 44983000 */ mtc1 $t8, $f6 -/* 00F2F8 8000E6F8 00005010 */ mfhi $t2 -/* 00F2FC 8000E6FC 3C058016 */ lui $a1, %hi(D_80162FC0) # $a1, 0x8016 -/* 00F300 8000E700 46803120 */ cvt.s.w $f4, $f6 -/* 00F304 8000E704 24A52FC0 */ addiu $a1, %lo(D_80162FC0) # addiu $a1, $a1, 0x2fc0 -/* 00F308 8000E708 14E00002 */ bnez $a3, .L8000E714 -/* 00F30C 8000E70C 00000000 */ nop -/* 00F310 8000E710 0007000D */ break 7 -.L8000E714: -/* 00F314 8000E714 2401FFFF */ li $at, -1 -/* 00F318 8000E718 14E10004 */ bne $a3, $at, .L8000E72C -/* 00F31C 8000E71C 3C018000 */ lui $at, 0x8000 -/* 00F320 8000E720 15810002 */ bne $t4, $at, .L8000E72C -/* 00F324 8000E724 00000000 */ nop -/* 00F328 8000E728 0006000D */ break 6 -.L8000E72C: -/* 00F32C 8000E72C E4C40000 */ swc1 $f4, ($a2) -/* 00F330 8000E730 844F0002 */ lh $t7, 2($v0) -/* 00F334 8000E734 000A60C0 */ sll $t4, $t2, 3 -/* 00F338 8000E738 01881821 */ addu $v1, $t4, $t0 -/* 00F33C 8000E73C 448F4000 */ mtc1 $t7, $f8 -/* 00F340 8000E740 00C02025 */ move $a0, $a2 -/* 00F344 8000E744 468042A0 */ cvt.s.w $f10, $f8 -/* 00F348 8000E748 E4CA0004 */ swc1 $f10, 4($a2) -/* 00F34C 8000E74C 84590004 */ lh $t9, 4($v0) -/* 00F350 8000E750 44993000 */ mtc1 $t9, $f6 -/* 00F354 8000E754 00000000 */ nop -/* 00F358 8000E758 46803120 */ cvt.s.w $f4, $f6 -/* 00F35C 8000E75C E4C40008 */ swc1 $f4, 8($a2) -/* 00F360 8000E760 846D0000 */ lh $t5, ($v1) -/* 00F364 8000E764 14E00002 */ bnez $a3, .L8000E770 -/* 00F368 8000E768 00000000 */ nop -/* 00F36C 8000E76C 0007000D */ break 7 -.L8000E770: -/* 00F370 8000E770 2401FFFF */ li $at, -1 -/* 00F374 8000E774 14E10004 */ bne $a3, $at, .L8000E788 -/* 00F378 8000E778 3C018000 */ lui $at, 0x8000 -/* 00F37C 8000E77C 15610002 */ bne $t3, $at, .L8000E788 -/* 00F380 8000E780 00000000 */ nop -/* 00F384 8000E784 0006000D */ break 6 -.L8000E788: -/* 00F388 8000E788 448D4000 */ mtc1 $t5, $f8 -/* 00F38C 8000E78C 00000000 */ nop -/* 00F390 8000E790 468042A0 */ cvt.s.w $f10, $f8 -/* 00F394 8000E794 E4AA0000 */ swc1 $f10, ($a1) -/* 00F398 8000E798 846E0002 */ lh $t6, 2($v1) -/* 00F39C 8000E79C 448E3000 */ mtc1 $t6, $f6 -/* 00F3A0 8000E7A0 00000000 */ nop -/* 00F3A4 8000E7A4 46803120 */ cvt.s.w $f4, $f6 -/* 00F3A8 8000E7A8 E4A40004 */ swc1 $f4, 4($a1) -/* 00F3AC 8000E7AC 84780004 */ lh $t8, 4($v1) -/* 00F3B0 8000E7B0 44984000 */ mtc1 $t8, $f8 -/* 00F3B4 8000E7B4 00000000 */ nop -/* 00F3B8 8000E7B8 468042A0 */ cvt.s.w $f10, $f8 -/* 00F3BC 8000E7BC 0C0AD489 */ jal get_angle_between_points -/* 00F3C0 8000E7C0 E4AA0008 */ swc1 $f10, 8($a1) -/* 00F3C4 8000E7C4 00027C00 */ sll $t7, $v0, 0x10 -/* 00F3C8 8000E7C8 01E27823 */ subu $t7, $t7, $v0 -/* 00F3CC 8000E7CC 3401FFF0 */ li $at, 65520 -/* 00F3D0 8000E7D0 01E1001A */ div $zero, $t7, $at -/* 00F3D4 8000E7D4 0000C812 */ mflo $t9 -/* 00F3D8 8000E7D8 3C058016 */ lui $a1, %hi(D_80162FC0) # $a1, 0x8016 -/* 00F3DC 8000E7DC 3C068016 */ lui $a2, %hi(D_80162FB0) # $a2, 0x8016 -/* 00F3E0 8000E7E0 24C62FB0 */ addiu $a2, %lo(D_80162FB0) # addiu $a2, $a2, 0x2fb0 -/* 00F3E4 8000E7E4 24A52FC0 */ addiu $a1, %lo(D_80162FC0) # addiu $a1, $a1, 0x2fc0 -/* 00F3E8 8000E7E8 10000018 */ b .L8000E84C -/* 00F3EC 8000E7EC A7B900C2 */ sh $t9, 0xc2($sp) -.L8000E7F0: -/* 00F3F0 8000E7F0 24C42FB0 */ addiu $a0, $a2, %lo(D_80162FB0) # 0x2fb0 -/* 00F3F4 8000E7F4 E4960000 */ swc1 $f22, ($a0) -/* 00F3F8 8000E7F8 E4940004 */ swc1 $f20, 4($a0) -/* 00F3FC 8000E7FC E4980008 */ swc1 $f24, 8($a0) -/* 00F400 8000E800 3C01800F */ lui $at, %hi(D_800ED01C) # $at, 0x800f -/* 00F404 8000E804 C426D01C */ lwc1 $f6, %lo(D_800ED01C)($at) -/* 00F408 8000E808 44802000 */ mtc1 $zero, $f4 -/* 00F40C 8000E80C 3C01800F */ lui $at, %hi(D_800ED020) # $at, 0x800f -/* 00F410 8000E810 E4A60000 */ swc1 $f6, ($a1) -/* 00F414 8000E814 E4A40004 */ swc1 $f4, 4($a1) -/* 00F418 8000E818 C428D020 */ lwc1 $f8, %lo(D_800ED020)($at) -/* 00F41C 8000E81C 0C0AD489 */ jal get_angle_between_points -/* 00F420 8000E820 E4A80008 */ swc1 $f8, 8($a1) -/* 00F424 8000E824 00025C00 */ sll $t3, $v0, 0x10 -/* 00F428 8000E828 01625823 */ subu $t3, $t3, $v0 -/* 00F42C 8000E82C 3401FFF0 */ li $at, 65520 -/* 00F430 8000E830 0161001A */ div $zero, $t3, $at -/* 00F434 8000E834 00005012 */ mflo $t2 -/* 00F438 8000E838 3C058016 */ lui $a1, %hi(D_80162FC0) # $a1, 0x8016 -/* 00F43C 8000E83C 3C068016 */ lui $a2, %hi(D_80162FB0) # $a2, 0x8016 -/* 00F440 8000E840 24C62FB0 */ addiu $a2, %lo(D_80162FB0) # addiu $a2, $a2, 0x2fb0 -/* 00F444 8000E844 24A52FC0 */ addiu $a1, %lo(D_80162FC0) # addiu $a1, $a1, 0x2fc0 -/* 00F448 8000E848 A7AA00C2 */ sh $t2, 0xc2($sp) -.L8000E84C: -/* 00F44C 8000E84C C4AA0000 */ lwc1 $f10, ($a1) -/* 00F450 8000E850 C4C60000 */ lwc1 $f6, ($a2) -/* 00F454 8000E854 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 00F458 8000E858 44810000 */ mtc1 $at, $f0 -/* 00F45C 8000E85C 46065100 */ add.s $f4, $f10, $f6 -/* 00F460 8000E860 C4C60008 */ lwc1 $f6, 8($a2) -/* 00F464 8000E864 C4AA0008 */ lwc1 $f10, 8($a1) -/* 00F468 8000E868 46002202 */ mul.s $f8, $f4, $f0 -/* 00F46C 8000E86C 46065100 */ add.s $f4, $f10, $f6 -/* 00F470 8000E870 46164381 */ sub.s $f14, $f8, $f22 -/* 00F474 8000E874 46002202 */ mul.s $f8, $f4, $f0 -/* 00F478 8000E878 E7AE00F8 */ swc1 $f14, 0xf8($sp) -/* 00F47C 8000E87C 460E7282 */ mul.s $f10, $f14, $f14 -/* 00F480 8000E880 46184401 */ sub.s $f16, $f8, $f24 -/* 00F484 8000E884 46108182 */ mul.s $f6, $f16, $f16 -/* 00F488 8000E888 E7B000F0 */ swc1 $f16, 0xf0($sp) -/* 00F48C 8000E88C 0C033850 */ jal sqrtf -/* 00F490 8000E890 46065300 */ add.s $f12, $f10, $f6 -/* 00F494 8000E894 3C01800F */ lui $at, %hi(D_800ED024) # $at, 0x800f -/* 00F498 8000E898 C424D024 */ lwc1 $f4, %lo(D_800ED024)($at) -/* 00F49C 8000E89C 8FAC0120 */ lw $t4, 0x120($sp) -/* 00F4A0 8000E8A0 3C0E8016 */ lui $t6, %hi(D_80164038) # $t6, 0x8016 -/* 00F4A4 8000E8A4 4600203C */ c.lt.s $f4, $f0 -/* 00F4A8 8000E8A8 C7AE00F8 */ lwc1 $f14, 0xf8($sp) -/* 00F4AC 8000E8AC C7B000F0 */ lwc1 $f16, 0xf0($sp) -/* 00F4B0 8000E8B0 25CE4038 */ addiu $t6, %lo(D_80164038) # addiu $t6, $t6, 0x4038 -/* 00F4B4 8000E8B4 4500000A */ bc1f .L8000E8E0 -/* 00F4B8 8000E8B8 000C6980 */ sll $t5, $t4, 6 -/* 00F4BC 8000E8BC C602003C */ lwc1 $f2, 0x3c($s0) -/* 00F4C0 8000E8C0 460E1202 */ mul.s $f8, $f2, $f14 -/* 00F4C4 8000E8C4 00000000 */ nop -/* 00F4C8 8000E8C8 46101182 */ mul.s $f6, $f2, $f16 -/* 00F4CC 8000E8CC 46004283 */ div.s $f10, $f8, $f0 -/* 00F4D0 8000E8D0 46003103 */ div.s $f4, $f6, $f0 -/* 00F4D4 8000E8D4 460AB580 */ add.s $f22, $f22, $f10 -/* 00F4D8 8000E8D8 10000008 */ b .L8000E8FC -/* 00F4DC 8000E8DC 4604C600 */ add.s $f24, $f24, $f4 -.L8000E8E0: -/* 00F4E0 8000E8E0 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 00F4E4 8000E8E4 44810000 */ mtc1 $at, $f0 -/* 00F4E8 8000E8E8 00000000 */ nop -/* 00F4EC 8000E8EC 46007203 */ div.s $f8, $f14, $f0 -/* 00F4F0 8000E8F0 46008283 */ div.s $f10, $f16, $f0 -/* 00F4F4 8000E8F4 4608B580 */ add.s $f22, $f22, $f8 -/* 00F4F8 8000E8F8 460AC600 */ add.s $f24, $f24, $f10 -.L8000E8FC: -/* 00F4FC 8000E8FC 3C0144FA */ li $at, 0x44FA0000 # 2000.000000 -/* 00F500 8000E900 44817000 */ mtc1 $at, $f14 -/* 00F504 8000E904 4406C000 */ mfc1 $a2, $f24 -/* 00F508 8000E908 01AE2021 */ addu $a0, $t5, $t6 -/* 00F50C 8000E90C 9487000A */ lhu $a3, 0xa($a0) -/* 00F510 8000E910 AFA40048 */ sw $a0, 0x48($sp) -/* 00F514 8000E914 0C0AAF8C */ jal func_802ABE30 -/* 00F518 8000E918 4600B306 */ mov.s $f12, $f22 -/* 00F51C 8000E91C 3C014060 */ li $at, 0x40600000 # 3.500000 -/* 00F520 8000E920 44813000 */ mtc1 $at, $f6 -/* 00F524 8000E924 3C01800F */ lui $at, %hi(D_800ED028) -/* 00F528 8000E928 D428D028 */ ldc1 $f8, %lo(D_800ED028)($at) -/* 00F52C 8000E92C 46060500 */ add.s $f20, $f0, $f6 -/* 00F530 8000E930 4406B000 */ mfc1 $a2, $f22 -/* 00F534 8000E934 8FA40048 */ lw $a0, 0x48($sp) -/* 00F538 8000E938 3C054120 */ lui $a1, 0x4120 -/* 00F53C 8000E93C 4600A121 */ cvt.d.s $f4, $f20 -/* 00F540 8000E940 4628203C */ c.lt.d $f4, $f8 -/* 00F544 8000E944 00000000 */ nop -/* 00F548 8000E948 45020003 */ bc1fl .L8000E958 -/* 00F54C 8000E94C 4407A000 */ mfc1 $a3, $f20 -/* 00F550 8000E950 C6140004 */ lwc1 $f20, 4($s0) -/* 00F554 8000E954 4407A000 */ mfc1 $a3, $f20 -.L8000E958: -/* 00F558 8000E958 0C0AB772 */ jal func_802ADDC8 -/* 00F55C 8000E95C E7B80010 */ swc1 $f24, 0x10($sp) -/* 00F560 8000E960 10000050 */ b .L8000EAA4 -/* 00F564 8000E964 3403FFFF */ li $v1, 65535 -glabel L8000E968 -/* 00F568 8000E968 97B800CA */ lhu $t8, 0xca($sp) -/* 00F56C 8000E96C 3C078016 */ lui $a3, %hi(D_80164550) # $a3, 0x8016 -/* 00F570 8000E970 8CE74550 */ lw $a3, %lo(D_80164550)($a3) -/* 00F574 8000E974 001878C0 */ sll $t7, $t8, 3 -/* 00F578 8000E978 3C068016 */ lui $a2, %hi(D_80162FB0) # $a2, 0x8016 -/* 00F57C 8000E97C 00EF1021 */ addu $v0, $a3, $t7 -/* 00F580 8000E980 84590000 */ lh $t9, ($v0) -/* 00F584 8000E984 24C62FB0 */ addiu $a2, %lo(D_80162FB0) # addiu $a2, $a2, 0x2fb0 -/* 00F588 8000E988 97AC00CA */ lhu $t4, 0xca($sp) -/* 00F58C 8000E98C 44995000 */ mtc1 $t9, $f10 -/* 00F590 8000E990 3C0E8016 */ lui $t6, %hi(gWaypointCountByPathIndex) # $t6, 0x8016 -/* 00F594 8000E994 258D0001 */ addiu $t5, $t4, 1 -/* 00F598 8000E998 468051A0 */ cvt.s.w $f6, $f10 -/* 00F59C 8000E99C 3C058016 */ lui $a1, %hi(D_80162FC0) # $a1, 0x8016 -/* 00F5A0 8000E9A0 24A52FC0 */ addiu $a1, %lo(D_80162FC0) # addiu $a1, $a1, 0x2fc0 -/* 00F5A4 8000E9A4 E4C60000 */ swc1 $f6, ($a2) -/* 00F5A8 8000E9A8 844B0002 */ lh $t3, 2($v0) -/* 00F5AC 8000E9AC 448B2000 */ mtc1 $t3, $f4 -/* 00F5B0 8000E9B0 00000000 */ nop -/* 00F5B4 8000E9B4 46802220 */ cvt.s.w $f8, $f4 -/* 00F5B8 8000E9B8 E4C80004 */ swc1 $f8, 4($a2) -/* 00F5BC 8000E9BC 844A0004 */ lh $t2, 4($v0) -/* 00F5C0 8000E9C0 448A5000 */ mtc1 $t2, $f10 -/* 00F5C4 8000E9C4 00000000 */ nop -/* 00F5C8 8000E9C8 468051A0 */ cvt.s.w $f6, $f10 -/* 00F5CC 8000E9CC E4C60008 */ swc1 $f6, 8($a2) -/* 00F5D0 8000E9D0 95CE45C8 */ lhu $t6, %lo(gWaypointCountByPathIndex)($t6) -/* 00F5D4 8000E9D4 01AE001A */ div $zero, $t5, $t6 -/* 00F5D8 8000E9D8 0000C010 */ mfhi $t8 -/* 00F5DC 8000E9DC 001878C0 */ sll $t7, $t8, 3 -/* 00F5E0 8000E9E0 01E71821 */ addu $v1, $t7, $a3 -/* 00F5E4 8000E9E4 84790000 */ lh $t9, ($v1) -/* 00F5E8 8000E9E8 15C00002 */ bnez $t6, .L8000E9F4 -/* 00F5EC 8000E9EC 00000000 */ nop -/* 00F5F0 8000E9F0 0007000D */ break 7 -.L8000E9F4: -/* 00F5F4 8000E9F4 2401FFFF */ li $at, -1 -/* 00F5F8 8000E9F8 15C10004 */ bne $t6, $at, .L8000EA0C -/* 00F5FC 8000E9FC 3C018000 */ lui $at, 0x8000 -/* 00F600 8000EA00 15A10002 */ bne $t5, $at, .L8000EA0C -/* 00F604 8000EA04 00000000 */ nop -/* 00F608 8000EA08 0006000D */ break 6 -.L8000EA0C: -/* 00F60C 8000EA0C 44992000 */ mtc1 $t9, $f4 -/* 00F610 8000EA10 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 00F614 8000EA14 46802220 */ cvt.s.w $f8, $f4 -/* 00F618 8000EA18 E4A80000 */ swc1 $f8, ($a1) -/* 00F61C 8000EA1C 846B0002 */ lh $t3, 2($v1) -/* 00F620 8000EA20 448B5000 */ mtc1 $t3, $f10 -/* 00F624 8000EA24 00000000 */ nop -/* 00F628 8000EA28 468051A0 */ cvt.s.w $f6, $f10 -/* 00F62C 8000EA2C 44915000 */ mtc1 $s1, $f10 -/* 00F630 8000EA30 E4A60004 */ swc1 $f6, 4($a1) -/* 00F634 8000EA34 846A0004 */ lh $t2, 4($v1) -/* 00F638 8000EA38 468051A0 */ cvt.s.w $f6, $f10 -/* 00F63C 8000EA3C 448A2000 */ mtc1 $t2, $f4 -/* 00F640 8000EA40 00000000 */ nop -/* 00F644 8000EA44 46802220 */ cvt.s.w $f8, $f4 -/* 00F648 8000EA48 06210004 */ bgez $s1, .L8000EA5C -/* 00F64C 8000EA4C E4A80008 */ swc1 $f8, 8($a1) -/* 00F650 8000EA50 44812000 */ mtc1 $at, $f4 -/* 00F654 8000EA54 00000000 */ nop -/* 00F658 8000EA58 46043180 */ add.s $f6, $f6, $f4 -.L8000EA5C: -/* 00F65C 8000EA5C 3C01800F */ lui $at, %hi(D_800ED030) # $at, 0x800f -/* 00F660 8000EA60 C428D030 */ lwc1 $f8, %lo(D_800ED030)($at) -/* 00F664 8000EA64 3C014040 */ li $at, 0x40400000 # 3.000000 -/* 00F668 8000EA68 44812000 */ mtc1 $at, $f4 -/* 00F66C 8000EA6C 46083282 */ mul.s $f10, $f6, $f8 -/* 00F670 8000EA70 00C02025 */ move $a0, $a2 -/* 00F674 8000EA74 460A2181 */ sub.s $f6, $f4, $f10 -/* 00F678 8000EA78 0C0AD489 */ jal get_angle_between_points -/* 00F67C 8000EA7C 4606A500 */ add.s $f20, $f20, $f6 -/* 00F680 8000EA80 00026400 */ sll $t4, $v0, 0x10 -/* 00F684 8000EA84 01826023 */ subu $t4, $t4, $v0 -/* 00F688 8000EA88 3401FFF0 */ li $at, 65520 -/* 00F68C 8000EA8C 0181001A */ div $zero, $t4, $at -/* 00F690 8000EA90 00006812 */ mflo $t5 -/* 00F694 8000EA94 A7AD00C2 */ sh $t5, 0xc2($sp) -/* 00F698 8000EA98 10000002 */ b .L8000EAA4 -/* 00F69C 8000EA9C 3403FFFF */ li $v1, 65535 -.L8000EAA0: -/* 00F6A0 8000EAA0 3403FFFF */ li $v1, 65535 -.L8000EAA4: -/* 00F6A4 8000EAA4 8FAE004C */ lw $t6, 0x4c($sp) -.L8000EAA8: -/* 00F6A8 8000EAA8 97AB00C2 */ lhu $t3, 0xc2($sp) -/* 00F6AC 8000EAAC 24010004 */ li $at, 4 -/* 00F6B0 8000EAB0 15C1002B */ bne $t6, $at, .L8000EB60 -/* 00F6B4 8000EAB4 006B2023 */ subu $a0, $v1, $t3 -/* 00F6B8 8000EAB8 44914000 */ mtc1 $s1, $f8 -/* 00F6BC 8000EABC 3C014F80 */ li $at, 0x4F800000 # 4294967296.000000 -/* 00F6C0 8000EAC0 06210004 */ bgez $s1, .L8000EAD4 -/* 00F6C4 8000EAC4 46804320 */ cvt.s.w $f12, $f8 -/* 00F6C8 8000EAC8 44812000 */ mtc1 $at, $f4 -/* 00F6CC 8000EACC 00000000 */ nop -/* 00F6D0 8000EAD0 46046300 */ add.s $f12, $f12, $f4 -.L8000EAD4: -/* 00F6D4 8000EAD4 97B800C2 */ lhu $t8, 0xc2($sp) -/* 00F6D8 8000EAD8 460C6280 */ add.s $f10, $f12, $f12 -/* 00F6DC 8000EADC E7AC004C */ swc1 $f12, 0x4c($sp) -/* 00F6E0 8000EAE0 00782023 */ subu $a0, $v1, $t8 -/* 00F6E4 8000EAE4 308FFFFF */ andi $t7, $a0, 0xffff -/* 00F6E8 8000EAE8 E7AA0108 */ swc1 $f10, 0x108($sp) -/* 00F6EC 8000EAEC 01E02025 */ move $a0, $t7 -/* 00F6F0 8000EAF0 0C0AE00E */ jal coss -/* 00F6F4 8000EAF4 AFAF0048 */ sw $t7, 0x48($sp) -/* 00F6F8 8000EAF8 C7AC004C */ lwc1 $f12, 0x4c($sp) -/* 00F6FC 8000EAFC 8FA40048 */ lw $a0, 0x48($sp) -/* 00F700 8000EB00 460C0182 */ mul.s $f6, $f0, $f12 -/* 00F704 8000EB04 0C0AE006 */ jal sins -/* 00F708 8000EB08 E7A60118 */ swc1 $f6, 0x118($sp) -/* 00F70C 8000EB0C 3C014040 */ li $at, 0x40400000 # 3.000000 -/* 00F710 8000EB10 44812000 */ mtc1 $at, $f4 -/* 00F714 8000EB14 C7A80108 */ lwc1 $f8, 0x108($sp) -/* 00F718 8000EB18 3C01800F */ lui $at, %hi(D_800ED034) # $at, 0x800f -/* 00F71C 8000EB1C C426D034 */ lwc1 $f6, %lo(D_800ED034)($at) -/* 00F720 8000EB20 46044283 */ div.s $f10, $f8, $f4 -/* 00F724 8000EB24 C7AC004C */ lwc1 $f12, 0x4c($sp) -/* 00F728 8000EB28 26310001 */ addiu $s1, $s1, 1 -/* 00F72C 8000EB2C 3239FFFF */ andi $t9, $s1, 0xffff -/* 00F730 8000EB30 4606A201 */ sub.s $f8, $f20, $f6 -/* 00F734 8000EB34 2B21001F */ slti $at, $t9, 0x1f -/* 00F738 8000EB38 460C0482 */ mul.s $f18, $f0, $f12 -/* 00F73C 8000EB3C 03208825 */ move $s1, $t9 -/* 00F740 8000EB40 460A4080 */ add.s $f2, $f8, $f10 -/* 00F744 8000EB44 E7A200AC */ swc1 $f2, 0xac($sp) -/* 00F748 8000EB48 E7A200A0 */ swc1 $f2, 0xa0($sp) -/* 00F74C 8000EB4C E7A20094 */ swc1 $f2, 0x94($sp) -/* 00F750 8000EB50 14200038 */ bnez $at, .L8000EC34 -/* 00F754 8000EB54 E7A20088 */ swc1 $f2, 0x88($sp) -/* 00F758 8000EB58 10000036 */ b .L8000EC34 -/* 00F75C 8000EB5C A7A0007E */ sh $zero, 0x7e($sp) -.L8000EB60: -/* 00F760 8000EB60 308AFFFF */ andi $t2, $a0, 0xffff -/* 00F764 8000EB64 01402025 */ move $a0, $t2 -/* 00F768 8000EB68 0C0AE00E */ jal coss -/* 00F76C 8000EB6C AFAA0048 */ sw $t2, 0x48($sp) -/* 00F770 8000EB70 3C013FC0 */ li $at, 0x3FC00000 # 1.500000 -/* 00F774 8000EB74 44812000 */ mtc1 $at, $f4 -/* 00F778 8000EB78 8FA40048 */ lw $a0, 0x48($sp) -/* 00F77C 8000EB7C 46040182 */ mul.s $f6, $f0, $f4 -/* 00F780 8000EB80 0C0AE006 */ jal sins -/* 00F784 8000EB84 E7A60118 */ swc1 $f6, 0x118($sp) -/* 00F788 8000EB88 97A2007C */ lhu $v0, 0x7c($sp) -/* 00F78C 8000EB8C 3C013FC0 */ li $at, 0x3FC00000 # 1.500000 -/* 00F790 8000EB90 44819000 */ mtc1 $at, $f18 -/* 00F794 8000EB94 3C01800F */ lui $at, %hi(D_800ED038) # $at, 0x800f -/* 00F798 8000EB98 C430D038 */ lwc1 $f16, %lo(D_800ED038)($at) -/* 00F79C 8000EB9C 46120482 */ mul.s $f18, $f0, $f18 -/* 00F7A0 8000EBA0 24010003 */ li $at, 3 -/* 00F7A4 8000EBA4 0041001A */ div $zero, $v0, $at -/* 00F7A8 8000EBA8 00006010 */ mfhi $t4 -/* 00F7AC 8000EBAC 4610A401 */ sub.s $f16, $f20, $f16 -/* 00F7B0 8000EBB0 448C7000 */ mtc1 $t4, $f14 -/* 00F7B4 8000EBB4 3C01800F */ lui $at, %hi(D_800ED03C) # $at, 0x800f -/* 00F7B8 8000EBB8 C42CD03C */ lwc1 $f12, %lo(D_800ED03C)($at) -/* 00F7BC 8000EBBC 468073A0 */ cvt.s.w $f14, $f14 -/* 00F7C0 8000EBC0 00022080 */ sll $a0, $v0, 2 -/* 00F7C4 8000EBC4 00822021 */ addu $a0, $a0, $v0 -/* 00F7C8 8000EBC8 00042380 */ sll $a0, $a0, 0xe -/* 00F7CC 8000EBCC 00822023 */ subu $a0, $a0, $v0 -/* 00F7D0 8000EBD0 00042080 */ sll $a0, $a0, 2 -/* 00F7D4 8000EBD4 460C7302 */ mul.s $f12, $f14, $f12 -/* 00F7D8 8000EBD8 00822023 */ subu $a0, $a0, $v0 -/* 00F7DC 8000EBDC 00042080 */ sll $a0, $a0, 2 -/* 00F7E0 8000EBE0 24010168 */ li $at, 360 -/* 00F7E4 8000EBE4 0081001A */ div $zero, $a0, $at -/* 00F7E8 8000EBE8 460C8381 */ sub.s $f14, $f16, $f12 -/* 00F7EC 8000EBEC 00006812 */ mflo $t5 -/* 00F7F0 8000EBF0 E7B20114 */ swc1 $f18, 0x114($sp) -/* 00F7F4 8000EBF4 460C8300 */ add.s $f12, $f16, $f12 -/* 00F7F8 8000EBF8 E7AE00AC */ swc1 $f14, 0xac($sp) -/* 00F7FC 8000EBFC E7AE0094 */ swc1 $f14, 0x94($sp) -/* 00F800 8000EC00 31A4FFFF */ andi $a0, $t5, 0xffff -/* 00F804 8000EC04 E7AC00A0 */ swc1 $f12, 0xa0($sp) -/* 00F808 8000EC08 E7AC0088 */ swc1 $f12, 0x88($sp) -/* 00F80C 8000EC0C 0C0AE006 */ jal sins -/* 00F810 8000EC10 AFA2004C */ sw $v0, 0x4c($sp) -/* 00F814 8000EC14 8FA2004C */ lw $v0, 0x4c($sp) -/* 00F818 8000EC18 24010012 */ li $at, 18 -/* 00F81C 8000EC1C C7B20114 */ lwc1 $f18, 0x114($sp) -/* 00F820 8000EC20 24580001 */ addiu $t8, $v0, 1 -/* 00F824 8000EC24 0301001A */ div $zero, $t8, $at -/* 00F828 8000EC28 00007810 */ mfhi $t7 -/* 00F82C 8000EC2C 4600A500 */ add.s $f20, $f20, $f0 -/* 00F830 8000EC30 A7AF007C */ sh $t7, 0x7c($sp) -.L8000EC34: -/* 00F834 8000EC34 C7AE0118 */ lwc1 $f14, 0x118($sp) -/* 00F838 8000EC38 46009307 */ neg.s $f12, $f18 -/* 00F83C 8000EC3C 46127281 */ sub.s $f10, $f14, $f18 -/* 00F840 8000EC40 460E9000 */ add.s $f0, $f18, $f14 -/* 00F844 8000EC44 46165100 */ add.s $f4, $f10, $f22 -/* 00F848 8000EC48 46160280 */ add.s $f10, $f0, $f22 -/* 00F84C 8000EC4C E604000C */ swc1 $f4, 0xc($s0) -/* 00F850 8000EC50 C7A600AC */ lwc1 $f6, 0xac($sp) -/* 00F854 8000EC54 46180200 */ add.s $f8, $f0, $f24 -/* 00F858 8000EC58 E60A0018 */ swc1 $f10, 0x18($s0) -/* 00F85C 8000EC5C E6060010 */ swc1 $f6, 0x10($s0) -/* 00F860 8000EC60 460E9181 */ sub.s $f6, $f18, $f14 -/* 00F864 8000EC64 E6080014 */ swc1 $f8, 0x14($s0) -/* 00F868 8000EC68 C7A400A0 */ lwc1 $f4, 0xa0($sp) -/* 00F86C 8000EC6C 46007087 */ neg.s $f2, $f14 -/* 00F870 8000EC70 46183200 */ add.s $f8, $f6, $f24 -/* 00F874 8000EC74 E604001C */ swc1 $f4, 0x1c($s0) -/* 00F878 8000EC78 46121281 */ sub.s $f10, $f2, $f18 -/* 00F87C 8000EC7C E6080020 */ swc1 $f8, 0x20($s0) -/* 00F880 8000EC80 460E6200 */ add.s $f8, $f12, $f14 -/* 00F884 8000EC84 46165100 */ add.s $f4, $f10, $f22 -/* 00F888 8000EC88 46184280 */ add.s $f10, $f8, $f24 -/* 00F88C 8000EC8C E6040024 */ swc1 $f4, 0x24($s0) -/* 00F890 8000EC90 C7A60094 */ lwc1 $f6, 0x94($sp) -/* 00F894 8000EC94 46121100 */ add.s $f4, $f2, $f18 -/* 00F898 8000EC98 E60A002C */ swc1 $f10, 0x2c($s0) -/* 00F89C 8000EC9C E6060028 */ swc1 $f6, 0x28($s0) -/* 00F8A0 8000ECA0 460E6281 */ sub.s $f10, $f12, $f14 -/* 00F8A4 8000ECA4 46162180 */ add.s $f6, $f4, $f22 -/* 00F8A8 8000ECA8 46185100 */ add.s $f4, $f10, $f24 -/* 00F8AC 8000ECAC E6060030 */ swc1 $f6, 0x30($s0) -/* 00F8B0 8000ECB0 C7A80088 */ lwc1 $f8, 0x88($sp) -/* 00F8B4 8000ECB4 E6160000 */ swc1 $f22, ($s0) -/* 00F8B8 8000ECB8 E6040038 */ swc1 $f4, 0x38($s0) -/* 00F8BC 8000ECBC E6140004 */ swc1 $f20, 4($s0) -/* 00F8C0 8000ECC0 E6180008 */ swc1 $f24, 8($s0) -/* 00F8C4 8000ECC4 E6080034 */ swc1 $f8, 0x34($s0) -/* 00F8C8 8000ECC8 97B900CA */ lhu $t9, 0xca($sp) -/* 00F8CC 8000ECCC A6190042 */ sh $t9, 0x42($s0) -/* 00F8D0 8000ECD0 C7A600C4 */ lwc1 $f6, 0xc4($sp) -/* 00F8D4 8000ECD4 E606003C */ swc1 $f6, 0x3c($s0) -/* 00F8D8 8000ECD8 97AB00C2 */ lhu $t3, 0xc2($sp) -/* 00F8DC 8000ECDC A60B0040 */ sh $t3, 0x40($s0) -/* 00F8E0 8000ECE0 97AA007E */ lhu $t2, 0x7e($sp) -/* 00F8E4 8000ECE4 A60A0044 */ sh $t2, 0x44($s0) -/* 00F8E8 8000ECE8 97AC007C */ lhu $t4, 0x7c($sp) -/* 00F8EC 8000ECEC A6110048 */ sh $s1, 0x48($s0) -/* 00F8F0 8000ECF0 A60C0046 */ sh $t4, 0x46($s0) -.L8000ECF4: -/* 00F8F4 8000ECF4 8FBF003C */ lw $ra, 0x3c($sp) -.L8000ECF8: -/* 00F8F8 8000ECF8 D7B40018 */ ldc1 $f20, 0x18($sp) -/* 00F8FC 8000ECFC D7B60020 */ ldc1 $f22, 0x20($sp) -/* 00F900 8000ED00 D7B80028 */ ldc1 $f24, 0x28($sp) -/* 00F904 8000ED04 8FB00034 */ lw $s0, 0x34($sp) -/* 00F908 8000ED08 8FB10038 */ lw $s1, 0x38($sp) -/* 00F90C 8000ED0C 03E00008 */ jr $ra -/* 00F910 8000ED10 27BD0120 */ addiu $sp, $sp, 0x120 diff --git a/asm/non_matchings/code_80005FD0/func_80011B14.s b/asm/non_matchings/code_80005FD0/func_80011B14.s deleted file mode 100644 index 54b0b40c9..000000000 --- a/asm/non_matchings/code_80005FD0/func_80011B14.s +++ /dev/null @@ -1,172 +0,0 @@ -.section .late_rodata - -glabel jpt_800ED080 -.word L80011BE8, L80011C04, L80011C3C, L80011C54 -.word L80011C70, L80011C8C, L80011C9C, L80011CB0 -.word L80011CD4, L80011D2C, L80011CC0 - -glabel D_800ED0AC -.float -0.6 - -glabel D_800ED0B0 -.float 0.6 - -.section .text - -glabel func_80011B14 -/* 012714 80011B14 3C0F800E */ lui $t7, %hi(gCurrentCourseId) -/* 012718 80011B18 85EFC5A0 */ lh $t7, %lo(gCurrentCourseId)($t7) -/* 01271C 80011B1C 3C0E8016 */ lui $t6, %hi(D_801632B8) # $t6, 0x8016 -/* 012720 80011B20 25CE32B8 */ addiu $t6, %lo(D_801632B8) # addiu $t6, $t6, 0x32b8 -/* 012724 80011B24 00041840 */ sll $v1, $a0, 1 -/* 012728 80011B28 006E3821 */ addu $a3, $v1, $t6 -/* 01272C 80011B2C 3C088016 */ lui $t0, %hi(D_80162EB8) # 0x8016 -/* 012730 80011B30 000FC080 */ sll $t8, $t7, 2 -/* 012734 80011B34 94E60000 */ lhu $a2, ($a3) -/* 012738 80011B38 01184021 */ addu $t0, $t0, $t8 -/* 01273C 80011B3C 8D082EB8 */ lw $t0, %lo(D_80162EB8)($t0) # 0x2eb8($t0) -/* 012740 80011B40 3C0C8016 */ lui $t4, %hi(D_801632B0) # $t4, 0x8016 -/* 012744 80011B44 0006C8C0 */ sll $t9, $a2, 3 -/* 012748 80011B48 258C32B0 */ addiu $t4, %lo(D_801632B0) # addiu $t4, $t4, 0x32b0 -/* 01274C 80011B4C 3C0F8016 */ lui $t7, %hi(gNearestWaypointByPlayerId) # 0x8016 -/* 012750 80011B50 03287021 */ addu $t6, $t9, $t0 -/* 012754 80011B54 AD8E0000 */ sw $t6, ($t4) -/* 012758 80011B58 01E37821 */ addu $t7, $t7, $v1 -/* 01275C 80011B5C 95EF4438 */ lhu $t7, %lo(gNearestWaypointByPlayerId)($t7) # 0x4438($t7) -/* 012760 80011B60 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 012764 80011B64 AFBF0014 */ sw $ra, 0x14($sp) -/* 012768 80011B68 A7AF002E */ sh $t7, 0x2e($sp) -/* 01276C 80011B6C 85C90000 */ lh $t1, ($t6) -/* 012770 80011B70 240DFFFF */ li $t5, -1 -/* 012774 80011B74 85CA0002 */ lh $t2, 2($t6) -/* 012778 80011B78 152D0007 */ bne $t1, $t5, .L80011B98 -/* 01277C 80011B7C 8DCB0004 */ lw $t3, 4($t6) -/* 012780 80011B80 554D0006 */ bnel $t2, $t5, .L80011B9C -/* 012784 80011B84 97B8002E */ lhu $t8, 0x2e($sp) -/* 012788 80011B88 0C0046AE */ jal func_80011AB8 -/* 01278C 80011B8C AD880000 */ sw $t0, ($t4) -/* 012790 80011B90 1000006A */ b .L80011D3C -/* 012794 80011B94 8FBF0014 */ lw $ra, 0x14($sp) -.L80011B98: -/* 012798 80011B98 97B8002E */ lhu $t8, 0x2e($sp) -.L80011B9C: -/* 01279C 80011B9C 3C018016 */ lui $at, %hi(D_801632E8) # 0x8016 -/* 0127A0 80011BA0 24020002 */ li $v0, 2 -/* 0127A4 80011BA4 17090064 */ bne $t8, $t1, .L80011D38 -/* 0127A8 80011BA8 00230821 */ addu $at, $at, $v1 -/* 0127AC 80011BAC A42232E8 */ sh $v0, %lo(D_801632E8)($at) # 0x32e8($at) -/* 0127B0 80011BB0 3C018016 */ lui $at, %hi(D_801632D0) # 0x8016 -/* 0127B4 80011BB4 00230821 */ addu $at, $at, $v1 -/* 0127B8 80011BB8 A42632D0 */ sh $a2, %lo(D_801632D0)($at) # 0x32d0($at) -/* 0127BC 80011BBC 256EFFFF */ addiu $t6, $t3, -1 -/* 0127C0 80011BC0 24D90001 */ addiu $t9, $a2, 1 -/* 0127C4 80011BC4 2DC1000B */ sltiu $at, $t6, 0xb -/* 0127C8 80011BC8 1020005B */ beqz $at, .L80011D38 -/* 0127CC 80011BCC A4F90000 */ sh $t9, ($a3) -/* 0127D0 80011BD0 000E7080 */ sll $t6, $t6, 2 -/* 0127D4 80011BD4 3C01800F */ lui $at, %hi(jpt_800ED080) -/* 0127D8 80011BD8 002E0821 */ addu $at, $at, $t6 -/* 0127DC 80011BDC 8C2ED080 */ lw $t6, %lo(jpt_800ED080)($at) -/* 0127E0 80011BE0 01C00008 */ jr $t6 -/* 0127E4 80011BE4 00000000 */ nop -glabel L80011BE8 -/* 0127E8 80011BE8 8CA6007C */ lw $a2, 0x7c($a1) -/* 0127EC 80011BEC 97A7002E */ lhu $a3, 0x2e($sp) -/* 0127F0 80011BF0 00067C03 */ sra $t7, $a2, 0x10 -/* 0127F4 80011BF4 0C0047B0 */ jal func_80011EC0 -/* 0127F8 80011BF8 01E03025 */ move $a2, $t7 -/* 0127FC 80011BFC 1000004F */ b .L80011D3C -/* 012800 80011C00 8FBF0014 */ lw $ra, 0x14($sp) -glabel L80011C04 -/* 012804 80011C04 00A02025 */ move $a0, $a1 -/* 012808 80011C08 AFA3001C */ sw $v1, 0x1c($sp) -/* 01280C 80011C0C 0C00AA94 */ jal func_8002AA50 -/* 012810 80011C10 AFA50034 */ sw $a1, 0x34($sp) -/* 012814 80011C14 8FA50034 */ lw $a1, 0x34($sp) -/* 012818 80011C18 8FA3001C */ lw $v1, 0x1c($sp) -/* 01281C 80011C1C 2401FFEF */ li $at, -17 -/* 012820 80011C20 8CB800BC */ lw $t8, 0xbc($a1) -/* 012824 80011C24 0301C824 */ and $t9, $t8, $at -/* 012828 80011C28 3C018016 */ lui $at, %hi(D_801630E8) # 0x8016 -/* 01282C 80011C2C ACB900BC */ sw $t9, 0xbc($a1) -/* 012830 80011C30 00230821 */ addu $at, $at, $v1 -/* 012834 80011C34 10000040 */ b .L80011D38 -/* 012838 80011C38 A42030E8 */ sh $zero, %lo(D_801630E8)($at) # 0x30e8($at) -glabel L80011C3C -/* 01283C 80011C3C 44802000 */ mtc1 $zero, $f4 -/* 012840 80011C40 00047100 */ sll $t6, $a0, 4 -/* 012844 80011C44 3C018016 */ lui $at, %hi(D_801634F8 + 4) -/* 012848 80011C48 002E0821 */ addu $at, $at, $t6 -/* 01284C 80011C4C 1000003A */ b .L80011D38 -/* 012850 80011C50 E42434FC */ swc1 $f4, %lo(D_801634F8 + 4)($at) -glabel L80011C54 -/* 012854 80011C54 3C01800F */ lui $at, %hi(D_800ED0AC) -/* 012858 80011C58 C426D0AC */ lwc1 $f6, %lo(D_800ED0AC)($at) -/* 01285C 80011C5C 3C018016 */ lui $at, %hi(D_801634F8 + 4) -/* 012860 80011C60 00047900 */ sll $t7, $a0, 4 -/* 012864 80011C64 002F0821 */ addu $at, $at, $t7 -/* 012868 80011C68 10000033 */ b .L80011D38 -/* 01286C 80011C6C E42634FC */ swc1 $f6, %lo(D_801634F8 + 4)($at) -glabel L80011C70 -/* 012870 80011C70 3C01800F */ lui $at, %hi(D_800ED0B0) -/* 012874 80011C74 C428D0B0 */ lwc1 $f8, %lo(D_800ED0B0)($at) -/* 012878 80011C78 3C018016 */ lui $at, %hi(D_801634F8 + 4) -/* 01287C 80011C7C 0004C100 */ sll $t8, $a0, 4 -/* 012880 80011C80 00380821 */ addu $at, $at, $t8 -/* 012884 80011C84 1000002C */ b .L80011D38 -/* 012888 80011C88 E42834FC */ swc1 $f8, %lo(D_801634F8 + 4)($at) -glabel L80011C8C -/* 01288C 80011C8C 3C018016 */ lui $at, %hi(D_80163350) # 0x8016 -/* 012890 80011C90 00230821 */ addu $at, $at, $v1 -/* 012894 80011C94 10000028 */ b .L80011D38 -/* 012898 80011C98 A4203350 */ sh $zero, %lo(D_80163350)($at) # 0x3350($at) -glabel L80011C9C -/* 01289C 80011C9C 3C018016 */ lui $at, %hi(D_80163350) # 0x8016 -/* 0128A0 80011CA0 00230821 */ addu $at, $at, $v1 -/* 0128A4 80011CA4 24190001 */ li $t9, 1 -/* 0128A8 80011CA8 10000023 */ b .L80011D38 -/* 0128AC 80011CAC A4393350 */ sh $t9, %lo(D_80163350)($at) # 0x3350($at) -glabel L80011CB0 -/* 0128B0 80011CB0 3C018016 */ lui $at, %hi(D_80163350) # 0x8016 -/* 0128B4 80011CB4 00230821 */ addu $at, $at, $v1 -/* 0128B8 80011CB8 1000001F */ b .L80011D38 -/* 0128BC 80011CBC A4223350 */ sh $v0, %lo(D_80163350)($at) # 0x3350($at) -glabel L80011CC0 -/* 0128C0 80011CC0 3C018016 */ lui $at, %hi(D_80163350) # 0x8016 -/* 0128C4 80011CC4 00230821 */ addu $at, $at, $v1 -/* 0128C8 80011CC8 240E0003 */ li $t6, 3 -/* 0128CC 80011CCC 1000001A */ b .L80011D38 -/* 0128D0 80011CD0 A42E3350 */ sh $t6, %lo(D_80163350)($at) # 0x3350($at) -glabel L80011CD4 -/* 0128D4 80011CD4 0004C0C0 */ sll $t8, $a0, 3 -/* 0128D8 80011CD8 0304C023 */ subu $t8, $t8, $a0 -/* 0128DC 80011CDC 3C018016 */ lui $at, %hi(D_801633F8) # 0x8016 -/* 0128E0 80011CE0 0018C100 */ sll $t8, $t8, 4 -/* 0128E4 80011CE4 00230821 */ addu $at, $at, $v1 -/* 0128E8 80011CE8 240F0001 */ li $t7, 1 -/* 0128EC 80011CEC 0304C023 */ subu $t8, $t8, $a0 -/* 0128F0 80011CF0 A42F33F8 */ sh $t7, %lo(D_801633F8)($at) # 0x33f8($at) -/* 0128F4 80011CF4 0018C080 */ sll $t8, $t8, 2 -/* 0128F8 80011CF8 3C018016 */ lui $at, %hi(D_801631E0) # 0x8016 -/* 0128FC 80011CFC 0304C023 */ subu $t8, $t8, $a0 -/* 012900 80011D00 3C19800F */ lui $t9, %hi(gPlayers) # $t9, 0x800f -/* 012904 80011D04 00230821 */ addu $at, $at, $v1 -/* 012908 80011D08 27396990 */ addiu $t9, %lo(gPlayers) # addiu $t9, $t9, 0x6990 -/* 01290C 80011D0C 0018C0C0 */ sll $t8, $t8, 3 -/* 012910 80011D10 A42031E0 */ sh $zero, %lo(D_801631E0)($at) # 0x31e0($at) -/* 012914 80011D14 03191021 */ addu $v0, $t8, $t9 -/* 012918 80011D18 8C4E00BC */ lw $t6, 0xbc($v0) -/* 01291C 80011D1C 2401EFFF */ li $at, -4097 -/* 012920 80011D20 01C17824 */ and $t7, $t6, $at -/* 012924 80011D24 10000004 */ b .L80011D38 -/* 012928 80011D28 AC4F00BC */ sw $t7, 0xbc($v0) -glabel L80011D2C -/* 01292C 80011D2C 3C018016 */ lui $at, %hi(D_801633F8) # 0x8016 -/* 012930 80011D30 00230821 */ addu $at, $at, $v1 -/* 012934 80011D34 A42033F8 */ sh $zero, %lo(D_801633F8)($at) # 0x33f8($at) -.L80011D38: -/* 012938 80011D38 8FBF0014 */ lw $ra, 0x14($sp) -.L80011D3C: -/* 01293C 80011D3C 27BD0030 */ addiu $sp, $sp, 0x30 -/* 012940 80011D40 03E00008 */ jr $ra -/* 012944 80011D44 00000000 */ nop diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 4764ba635..7befd174d 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -51,7 +51,7 @@ Vec3f D_80162FC0; s16 D_80162FCC; s16 D_80162FCE; s16 D_80162FD0; -f32 gCourseCompletionPercentByRank[8]; +f32 gCourseCompletionPercentByRank[NUM_PLAYERS]; /* The size of many of these arrays is weird. Based on their usage, they would only need to be 8 entries long (enough for each player). But some are 10 or even 12 long. @@ -3042,11 +3042,6 @@ void set_bomb_kart_spawn_positions(void) { } } -#ifdef NON_MATCHING -// https://decomp.me/scratch/H61yp -// Really really close, functinally matching as it stands -// There's an ordering issue concerning the handling of `sp7E` at the top of the function. -// Removing the first `if(1)` fakematch fixes the misordering but introduces other, large mismatches void func_8000DF8C(s32 bombKartId) { s32 stackPadding0; f32 sp118; @@ -3103,9 +3098,14 @@ void func_8000DF8C(s32 bombKartId) { Player *var_v0; bombKart = &gBombKarts[bombKartId]; - if (1) {} + sp7E = bombKart->state; - if ((sp7E != 0) && ((bombKart->unk_4A != 1) || (gCurrentCourseId == COURSE_AWARD_CEREMONY))) { + + if (sp7E == 0) { + return; + } + + if (((bombKart->unk_4A != 1) || (gCurrentCourseId == COURSE_AWARD_CEREMONY))) { var_f22 = bombKart->bombPos[0]; var_f20 = bombKart->bombPos[1]; var_f24 = bombKart->bombPos[2]; @@ -3117,144 +3117,149 @@ void func_8000DF8C(s32 bombKartId) { if ((sp7E != 0) && (sp7E != 4)) { if (1) {} if (gCurrentCourseId == COURSE_AWARD_CEREMONY) { - if (D_8016347E == 1) { - var_v0 = gPlayerFour; - temp_f0 = var_f22 - var_v0->pos[0]; - temp_f2 = var_f20 - var_v0->pos[1]; - temp_f12 = var_f24 - var_v0->pos[2]; - if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f12 * temp_f12)) < 25.0f) { - var_s1 = 0; - sp7E = 4; - var_v0->soundEffects |= 0x400000; - var_v0->type &= ~0x2000; - } + if (D_8016347E == 1) + { + var_v0 = gPlayerFour; + temp_f0 = var_f22 - var_v0->pos[0]; + temp_f2 = var_f20 - var_v0->pos[1]; + temp_f12 = var_f24 - var_v0->pos[2]; + if ((((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f12 * temp_f12)) < 25.0f) + { + var_s1 = 0; + sp7E = 4; + var_v0->soundEffects |= 0x400000; + var_v0->type &= ~0x2000; + } } } else { + for (var_a0 = 0; var_a0 < gPlayerCount; var_a0++) { var_v0 = &gPlayers[var_a0]; if (!(var_v0->effects & 0x80000000)) { temp_f0 = var_f22 - var_v0->pos[0]; temp_f2 = var_f20 - var_v0->pos[1]; temp_f12 = var_f24 - var_v0->pos[2]; - if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f12 * temp_f12)) < 25.0f) { - sp7E = 4; - var_s1 = 0; - if (gCurrentCourseId == COURSE_FRAPPE_SNOWLAND) { - var_v0->soundEffects |= 0x01000000; - } else { - var_v0->soundEffects |= 0x400000; - } + if ((((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) + (temp_f12 * temp_f12)) < 25.0f) { + sp7E = 4; + var_s1 = 0; + if (gCurrentCourseId == COURSE_FRAPPE_SNOWLAND) { + var_v0->soundEffects |= 0x01000000; + } else { + var_v0->soundEffects |= 0x400000; + } } } } + } } switch (sp7E) { - case 1: - var_s1 = ((var_s1 + 356) % 360); - temp_t6 = ((var_s1 * 0xFFFF) / 360); - sp118 = coss(temp_t6) * 25.0; - temp_f0_3 = sins(temp_t6) * 25.0; - temp_v0_2 = &D_80164550[0][spCA]; - var_f22 = temp_v0_2->posX + sp118; - var_f20 = bombKart->yPos + 3.5f; - var_f24 = temp_v0_2->posZ + temp_f0_3; - D_80162FB0[0] = var_f22; - D_80162FB0[1] = var_f20; - D_80162FB0[2] = var_f24; - temp_t7 = ((((var_s1 + 1) % 360) * 0xFFFF) / 360); - sp118 = coss(temp_t7) * 25.0; - temp_f0_3 = sins(temp_t7) * 25.0; - D_80162FC0[0] = temp_v0_2->posX + sp118; - D_80162FC0[1] = temp_v0_2->posY; - D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3; - spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; - break; - case 2: - var_s1 = ((var_s1 + 4) % 360); - temp_t6 = ((var_s1 * 0xFFFF) / 360); - sp118 = coss(temp_t6) * 25.0; - temp_f0_3 = sins(temp_t6) * 25.0; - temp_v0_2 = &D_80164550[0][spCA]; - var_f22 = temp_v0_2->posX + sp118; - var_f20 = bombKart->yPos + 3.5f; - var_f24 = temp_v0_2->posZ + temp_f0_3; - D_80162FB0[0] = var_f22; - D_80162FB0[1] = var_f20; - D_80162FB0[2] = var_f24; - temp_t7 = ((((var_s1 + 1) % 360) * 0xFFFF) / 360); - sp118 = coss(temp_t7) * 25.0; - temp_f0_3 = sins(temp_t7) * 25.0; - D_80162FC0[0] = temp_v0_2->posX + sp118; - D_80162FC0[1] = temp_v0_2->posY; - D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3; - spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; - break; - case 3: - var_f20 = bombKart->yPos + 3.5f; - spC2 = 0; - break; - case 5: - if ((D_8016347C == 0) || (gNearestWaypointByPlayerId[3] < 5)) { - // wtf? + case 1: + var_s1 = (var_s1 + 356) % 360; + temp_t6 = (var_s1 * 0xFFFF) / 360; + sp118 = coss(temp_t6) * 25.0; + temp_f0_3 = sins(temp_t6) * 25.0; + temp_v0_2 = &D_80164550[0][spCA]; + var_f22 = temp_v0_2->posX + sp118; + var_f20 = bombKart->yPos + 3.5f; + var_f24 = temp_v0_2->posZ + temp_f0_3; + D_80162FB0[0] = var_f22; + D_80162FB0[1] = var_f20; + D_80162FB0[2] = var_f24; + temp_t7 = (((var_s1 + 1) % 360) * 0xFFFF) / 360; + sp118 = coss(temp_t7) * 25.0; + temp_f0_3 = sins(temp_t7) * 25.0; + D_80162FC0[0] = temp_v0_2->posX + sp118; + D_80162FC0[1] = temp_v0_2->posY; + D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; break; - } else { - spCA = func_8000D2B4(var_f22, var_f20, var_f24, spCA, 3); - if ((spCA < 0) || (gWaypointCountByPathIndex[3] < spCA)) { - spCA = 0; - } - if ((s32) spCA < 0x1A) { - temp_v0_2 = &D_80164550[3][(spCA + 1) % gWaypointCountByPathIndex[3]]; - D_80162FB0[0] = temp_v0_2->posX; - D_80162FB0[1] = temp_v0_2->posY; - D_80162FB0[2] = temp_v0_2->posZ; - temp_v0_4 = &D_80164550[3][(spCA + 2) % gWaypointCountByPathIndex[3]]; - D_80162FC0[0] = temp_v0_4->posX; - D_80162FC0[1] = temp_v0_4->posY; - D_80162FC0[2] = temp_v0_4->posZ; - spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; + case 2: + var_s1 = (var_s1 + 4) % 360; + temp_t6 = (var_s1 * 0xFFFF) / 360; + sp118 = coss(temp_t6) * 25.0; + temp_f0_3 = sins(temp_t6) * 25.0; + temp_v0_2 = &D_80164550[0][spCA]; + var_f22 = temp_v0_2->posX + sp118; + var_f20 = bombKart->yPos + 3.5f; + var_f24 = temp_v0_2->posZ + temp_f0_3; + D_80162FB0[0] = var_f22; + D_80162FB0[1] = var_f20; + D_80162FB0[2] = var_f24; + temp_t7 = (((var_s1 + 1) % 360) * 0xFFFF) / 360; + sp118 = coss(temp_t7) * 25.0; + temp_f0_3 = sins(temp_t7) * 25.0; + D_80162FC0[0] = temp_v0_2->posX + sp118; + D_80162FC0[1] = temp_v0_2->posY; + D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; + break; + case 3: + var_f20 = bombKart->yPos + 3.5f; + spC2 = 0; + break; + + case 5: + if ((D_8016347C == 0) || (gNearestWaypointByPlayerId[3] < 5)) { + break; } else { - D_80162FB0[0] = var_f22; - D_80162FB0[1] = var_f20; - D_80162FB0[2] = var_f24; - D_80162FC0[0] = -2409.197f; - D_80162FC0[1] = 0.0f; - D_80162FC0[2] = -355.254f; - spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; + spCA = func_8000D2B4(var_f22, var_f20, var_f24, spCA, 3); + if ((spCA < 0) || (gWaypointCountByPathIndex[3] < spCA)) { + spCA = 0; + } + if (((s32) spCA) < 0x1A) { + temp_v0_2 = &D_80164550[3][(spCA + 1) % gWaypointCountByPathIndex[3]]; + D_80162FB0[0] = temp_v0_2->posX; + D_80162FB0[1] = temp_v0_2->posY; + D_80162FB0[2] = temp_v0_2->posZ; + temp_v0_4 = &D_80164550[3][(spCA + 2) % gWaypointCountByPathIndex[3]]; + D_80162FC0[0] = temp_v0_4->posX; + D_80162FC0[1] = temp_v0_4->posY; + D_80162FC0[2] = temp_v0_4->posZ; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; + } else { + D_80162FB0[0] = var_f22; + D_80162FB0[1] = var_f20; + D_80162FB0[2] = var_f24; + D_80162FC0[0] = -2409.197f; + D_80162FC0[1] = 0.0f; + D_80162FC0[2] = -355.254f; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; + } + temp_f14 = ((D_80162FB0[0] + D_80162FC0[0]) * 0.5f) - var_f22; + temp_f16 = ((D_80162FB0[2] + D_80162FC0[2]) * 0.5f) - var_f24; + temp_f0_4 = sqrtf((temp_f14 * temp_f14) + (temp_f16 * temp_f16)); + if (temp_f0_4 > 0.01f) { + var_f22 += (bombKart->unk_3C * temp_f14) / temp_f0_4; + var_f24 += (bombKart->unk_3C * temp_f16) / temp_f0_4; + } else { + var_f22 += temp_f14 / 5.0f; + var_f24 += temp_f16 / 5.0f; + } + temp_a0_4 = &D_80164038[bombKartId]; + var_f20 = func_802ABE30(var_f22, 2000.0f, var_f24, temp_a0_4->unk3A) + 3.5f; + if (var_f20 < (-1000.0)) { + var_f20 = bombKart->bombPos[1]; + } + func_802ADDC8(temp_a0_4, 10.0f, var_f22, var_f20, var_f24); } - temp_f14 = ((D_80162FB0[0] + D_80162FC0[0]) * 0.5f) - var_f22; - temp_f16 = ((D_80162FB0[2] + D_80162FC0[2]) * 0.5f) - var_f24; - temp_f0_4 = sqrtf((temp_f14 * temp_f14) + (temp_f16 * temp_f16)); - if (temp_f0_4 > 0.01f) { - var_f22 += (bombKart->unk_3C * temp_f14) / temp_f0_4; - var_f24 += (bombKart->unk_3C * temp_f16) / temp_f0_4; - } else { - var_f22 += temp_f14 / 5.0f; - var_f24 += temp_f16 / 5.0f; - } - temp_a0_4 = &D_80164038[bombKartId]; - var_f20 = func_802ABE30(var_f22, 2000.0f, var_f24, temp_a0_4->unk3A) + 3.5f; - if (var_f20 < -1000.0) { - var_f20 = bombKart->bombPos[1]; - } - func_802ADDC8(temp_a0_4, 10.0f, var_f22, var_f20, var_f24); - } - break; - case 4: - temp_v0_2 = &D_80164550[0][spCA]; - D_80162FB0[0] = temp_v0_2->posX; - D_80162FB0[1] = temp_v0_2->posY; - D_80162FB0[2] = temp_v0_2->posZ; - temp_v0_4 = &D_80164550[0][(spCA + 1) % gWaypointCountByPathIndex[0]]; - D_80162FC0[0] = temp_v0_4->posX; - D_80162FC0[1] = temp_v0_4->posY; - D_80162FC0[2] = temp_v0_4->posZ; - var_f20 += 3.0f - (var_s1 * 0.3f); - spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; - break; - default: - break; + break; + case 4: + temp_v0_2 = &D_80164550[0][spCA]; + D_80162FB0[0] = temp_v0_2->posX; + D_80162FB0[1] = temp_v0_2->posY; + D_80162FB0[2] = temp_v0_2->posZ; + temp_v0_4 = &D_80164550[0][(spCA + 1) % gWaypointCountByPathIndex[0]]; + D_80162FC0[0] = temp_v0_4->posX; + D_80162FC0[1] = temp_v0_4->posY; + D_80162FC0[2] = temp_v0_4->posZ; + var_f20 += 3.0f - (var_s1 * 0.3f); + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; + break; + default: + break; } + if (sp7E == 4) { sp108 = 2.0f * var_s1; sp118 = coss(0xFFFF - spC2) * var_s1; @@ -3279,31 +3284,25 @@ void func_8000DF8C(s32 bombKartId) { sp94 = temp_f14_2; spA0 = temp_f12_4; sp88 = temp_f12_4; - var_f20 += sins(((sp7C * 0x13FFEC) / 360)); + var_f20 += sins((sp7C * 0x13FFEC) / 360); sp7C = (sp7C + 1) % 18; } - bombKart2 = bombKart; bombKart2->wheel1Pos[0] = (sp118 - var_f18) + var_f22; bombKart2->wheel1Pos[1] = spAC; - bombKart2->wheel1Pos[2] = var_f18 + sp118 + var_f24; - - bombKart2->wheel2Pos[0] = var_f18 + sp118 + var_f22; + bombKart2->wheel1Pos[2] = (var_f18 + sp118) + var_f24; + bombKart2->wheel2Pos[0] = (var_f18 + sp118) + var_f22; bombKart2->wheel2Pos[1] = spA0; bombKart2->wheel2Pos[2] = (var_f18 - sp118) + var_f24; - - bombKart2->wheel3Pos[0] = (-sp118 - var_f18) + var_f22; + bombKart2->wheel3Pos[0] = ((-sp118) - var_f18) + var_f22; bombKart2->wheel3Pos[1] = sp94; - bombKart2->wheel3Pos[2] = -var_f18 + sp118 + var_f24; - - bombKart2->wheel4Pos[0] = -sp118 + var_f18 + var_f22; + bombKart2->wheel3Pos[2] = ((-var_f18) + sp118) + var_f24; + bombKart2->wheel4Pos[0] = ((-sp118) + var_f18) + var_f22; bombKart2->wheel4Pos[1] = sp88; - bombKart2->wheel4Pos[2] = (-var_f18 - sp118) + var_f24; - + bombKart2->wheel4Pos[2] = ((-var_f18) - sp118) + var_f24; bombKart2->bombPos[0] = var_f22; bombKart2->bombPos[1] = var_f20; bombKart2->bombPos[2] = var_f24; - bombKart2->waypointIndex = spCA; bombKart2->unk_3C = spC4; bombKart2->someRot = spC2; @@ -3312,9 +3311,6 @@ void func_8000DF8C(s32 bombKartId) { bombKart2->circleTimer = var_s1; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000DF8C.s") -#endif s32 func_8000ED14(s32 actorIndex, s16 arg1) { s32 i; @@ -4237,84 +4233,71 @@ void func_80011AE4(s32 index) { D_801632E8[index] = 1; } -#ifdef MIPS_TO_C -//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Dec-27-2023 void func_80011B14(s32 playerId, Player *player) { u16 sp2E; - s32 sp1C; - Player *temp_v0; - UnkCommonTextureStruct0 *temp_t0; - UnkCommonTextureStruct0 *temp_t6; - s16 *temp_a3; s16 temp_t1; + s16 temp_t2; s32 temp_t3; - u16 temp_a2; + s32 test; + + D_801632B0 = D_80162EB8[gCurrentCourseId] + D_801632B8[playerId]; - temp_a3 = &D_801632B8[playerId]; - temp_a2 = (u16) *temp_a3; - temp_t0 = D_80162EB8[gCurrentCourseId]; - temp_t6 = &temp_t0[temp_a2]; - D_801632B0 = temp_t6; sp2E = gNearestWaypointByPlayerId[playerId]; - temp_t1 = temp_t6->waypointId1; - temp_t3 = temp_t6->unk4; - if ((temp_t1 == -1) && (temp_t6->waypointId2 == -1)) { - D_801632B0 = temp_t0; + + temp_t1 = D_801632B0->waypointId1; + temp_t2 = D_801632B0->waypointId2; + temp_t3 = D_801632B0->unk4; + + if ((temp_t1 == -1) && (temp_t2 == -1)) { + D_801632B0 = D_80162EB8[gCurrentCourseId]; func_80011AB8(playerId); return; } - if (sp2E == temp_t1) { + if ((u32)sp2E == temp_t1) { D_801632E8[playerId] = 2; - D_801632D0[playerId] = (s16) temp_a2; - *temp_a3 = temp_a2 + 1; + D_801632D0[playerId] = D_801632B8[playerId]; + D_801632B8[playerId] += 1; switch (temp_t3) { case 1: - func_80011EC0(playerId, player, (s32) player->unk_07C >> 0x10, (s32) sp2E); - return; + func_80011EC0(playerId, player, player->unk_07C >> 0x10, sp2E); + break; case 2: - sp1C = playerId * 2; func_8002AA50(player); player->effects &= ~0x10; D_801630E8[playerId] = 0; - return; + break; case 3: - *(&D_801634F8->unk4 + (playerId * 0x10)) = 0.0f; - return; + D_801634F8[playerId].unk4 = 0.0f; + break; case 4: - *(&D_801634F8->unk4 + (playerId * 0x10)) = -0.6f; - return; + D_801634F8[playerId].unk4 = -0.6f; + break; case 5: - *(&D_801634F8->unk4 + (playerId * 0x10)) = 0.6f; - return; + D_801634F8[playerId].unk4 = 0.6f; + break; case 6: D_80163350[playerId] = 0; - return; + break; case 7: D_80163350[playerId] = 1; - return; + break; case 8: D_80163350[playerId] = 2; - return; + break; case 11: D_80163350[playerId] = 3; - return; + break; case 9: D_801633F8[playerId] = 1; D_801631E0[playerId] = 0; - temp_v0 = &gPlayers[playerId]; - temp_v0->effects &= ~0x1000; - return; + gPlayers[playerId].effects &= ~0x1000; + break; case 10: D_801633F8[playerId] = 0; break; } - } else { - default: } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80011B14.s") -#endif void func_80011D48(s32 playerIndex, Player *player) { u16 nearestWaypoint; @@ -4368,7 +4351,7 @@ void func_80011E38(s32 playerIndex) { } } -void func_80011EC0(s32 arg0, Player *player, s32 arg2, s32 arg3) { +void func_80011EC0(s32 arg0, Player *player, s32 arg2, u16 arg3) { if ((((player->unk_094 / 18.0f) * 216.0f) >= 45.0f) && (D_801630E8[arg0] == 0)) { switch (D_801631D8[D_80162FCE]) { case 0: @@ -6140,6 +6123,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80016494.s") #endif #ifdef MIPS_TO_C +// https://decomp.me/scratch/WDOs5 lots of diffs //generated by m2c commit a39b70e85329b0bcaeb4350510ddb23dc9840dce on Jan-03-2024 void func_80016C3C(s32 arg0, f32 arg1, s32 cameraId) { f32 sp5C; @@ -6152,7 +6136,7 @@ void func_80016C3C(s32 arg0, f32 arg1, s32 cameraId) { Camera *temp_v0_2; f32 *temp_t2; f32 *temp_t3; - f32 *var_s2; + //f32 *var_s2; f32 temp_f12; f32 temp_f2; s16 *temp_s1; @@ -6160,39 +6144,40 @@ void func_80016C3C(s32 arg0, f32 arg1, s32 cameraId) { s16 temp_v1_3; s32 *temp_v0; s32 *temp_v1; - s32 temp_hi; + u16 temp_hi; s32 var_a3; u16 temp_s0; - if (random_int(0x0064U) < 0x32) { - var_s2 = &D_80164688[cameraId]; - var_a3 = cameraId * 4; - *var_s2 = 0.1f; + if (random_int(100) < 50) { + //var_s2 = &D_80164688[cameraId]; + //var_a3 = cameraId * 4; + D_80164688[cameraId] = 0.1f; } else { - var_s2 = &D_80164688[cameraId]; - var_a3 = cameraId * 4; - *var_s2 = -0.1f; + //var_s2 = &D_80164688[cameraId]; + //var_a3 = cameraId * 4; + D_80164688[cameraId] = -0.1f; } - temp_v1 = var_a3 + D_80163DD8; - *temp_v1 = 0; - if (gCurrentCourseId == 4) { - sp34 = temp_v1; - sp3C = var_a3; - *temp_v1 = random_int(4U); - *var_s2 = 0.0f; + //temp_v1 = D_80163DD8[cameraId]; + D_80163DD8[cameraId] = 0; + + if (gCurrentCourseId == COURSE_YOSHI_VALLEY) { + sp34 = &D_80163DD8[cameraId]; + sp3C = cameraId; + D_80163DD8[cameraId] = random_int(4U); + D_80164688[cameraId] = 0.0f; } temp_s1 = &gNearestWaypointByCameraId[cameraId]; - temp_s0 = gWaypointCountByPathIndex[*temp_v1]; + temp_s0 = gWaypointCountByPathIndex[D_80163DD8[cameraId]]; temp_hi = (s16) *temp_s1 % (s32) temp_s0; *temp_s1 = (s16) temp_hi; sp3C = var_a3; - func_8000BBD8(temp_hi & 0xFFFF, *var_s2, 0); + func_8000BBD8(temp_hi & 0xFFFF, D_80164688[cameraId], 0); temp_v1_2 = *temp_s1; - temp_t2 = var_a3 + D_80164618; - temp_v0 = var_a3 + D_801645F8; - *temp_v0 = D_80162FA0->unk0; - temp_t3 = var_a3 + D_80164638; - *temp_t3 = D_80162FA0->unk8; + temp_t2 = D_80164618[cameraId]; + temp_v0 = D_801645F8[cameraId]; + *temp_v0 = D_80162FA0[0]; + temp_t3 = D_80164638[cameraId]; + *temp_t3 = D_80162FA0[2]; *temp_t2 = (f32) (*D_80164550)[temp_v1_2].posY; *(D_80164658 + var_a3) = 16.666666f; *(D_80164648 + var_a3) = 0.0f; @@ -6200,16 +6185,16 @@ void func_80016C3C(s32 arg0, f32 arg1, s32 cameraId) { sp28 = temp_t3; sp2C = temp_t2; sp34 = temp_v0; - func_8000BBD8((s16) ((s32) (temp_v1_2 + 0xA) % (s32) temp_s0) & 0xFFFF, *var_s2, 0); - temp_f2 = (f32) ((f64) D_80162FA0->unk0 * 0.5); - temp_f12 = (f32) ((f64) D_80162FA0->unk8 * 0.5); + func_8000BBD8((s16) ((s32) (temp_v1_2 + 0xA) % (s32) temp_s0) & 0xFFFF, D_80164688[cameraId], 0); + temp_f2 = (f32) ((f64) D_80162FA0[0] * 0.5); + temp_f12 = (f32) ((f64) D_80162FA0[2] * 0.5); sp5C = temp_f2; sp54 = temp_f12; - func_8000BBD8(sp44, *var_s2, 0); + func_8000BBD8(sp44, D_80164688[cameraId], 0); temp_v1_3 = *temp_s1; temp_v0_2 = &cameras[cameraId]; - temp_v0_2->lookAt[0] = (f32) ((f64) temp_f2 + ((f64) D_80162FA0->unk0 * 0.5)); - temp_v0_2->lookAt[2] = (f32) ((f64) temp_f12 + ((f64) D_80162FA0->unk8 * 0.5)); + temp_v0_2->lookAt[0] = (f32) ((f64) temp_f2 + ((f64) D_80162FA0[0] * 0.5)); + temp_v0_2->lookAt[2] = (f32) ((f64) temp_f12 + ((f64) D_80162FA0[2] * 0.5)); temp_v0_2->lookAt[1] = (f32) ((f64) ((f32) ((*D_80164550)[(s16) ((s32) (temp_v1_3 + 6) % (s32) temp_s0)].posY + (*D_80164550)[(s16) ((s32) (temp_v1_3 + 5) % (s32) temp_s0)].posY) * 0.5f) + 8.0); temp_v0_2->pos[0] = (bitwise f32) *sp34; temp_v0_2->pos[1] = *sp2C; @@ -6221,9 +6206,9 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80016C3C.s") #ifdef MIPS_TO_C //generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 -s16 gCurrentCourseId; /* unable to generate initializer */ +//s16 gCurrentCourseId; /* unable to generate initializer */ -void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { +void func_80017054(Camera *camera, Player *player, s8 index, s32 cameraId) { f32 spAC; f32 spA8; f32 spA4; @@ -6241,17 +6226,17 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 sp5C; s32 sp58; s16 sp56; - s32 sp4C; + //s32 sp4C; f32 *sp48; - s32 *sp44; - s16 *sp40; + //s32 *sp44; + //s16 *sp40; f32 *sp3C; TrackWaypoint **sp2C; TrackWaypoint **temp_t2_2; TrackWaypoint *temp_t0_2; TrackWaypoint *temp_t0_3; f32 *temp_a2; - f32 *temp_t1; + //f32 *temp_t1; f32 temp_f0; f32 temp_f10; f32 temp_f12; @@ -6273,49 +6258,49 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s16 temp_a3_3; s16 temp_a3_4; s32 *temp_a0; - s32 *temp_a1; - s32 *temp_v1; + //s32 *temp_a1; + //s32 *temp_v1; s32 temp_hi; s32 temp_t2; s32 temp_v0; - temp_t1 = &D_80164648[cameraId]; - temp_f2 = *temp_t1; - temp_a1 = &D_80163DD8[cameraId]; - temp_t2 = *temp_a1; - *temp_t1 = temp_f2 + ((D_80164658[cameraId] - temp_f2) * 0.5f); + //temp_t1 = &D_80164648[cameraId]; + temp_f2 = D_80164648[cameraId]; + //temp_a1 = &D_80163DD8[cameraId]; + temp_t2 = D_80163DD8[cameraId]; + D_80164648[cameraId] = temp_f2 + ((D_80164658[cameraId] - temp_f2) * 0.5f); temp_t0 = &gNearestWaypointByCameraId[cameraId]; D_80163238 = (s32) camera->playerId; temp_a3 = *temp_t0; sp58 = (s32) gWaypointCountByPathIndex[temp_t2]; sp56 = temp_a3; - sp48 = temp_t1; - sp40 = temp_t0; - sp44 = temp_a1; - sp4C = cameraId * 4; + sp48 = D_80164648[cameraId]; + //sp40 = temp_t0; + //sp44 = D_80163DD8[cameraId]; + //sp4C = cameraId * 4; sp5C = temp_t2; - *sp40 = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], temp_a3, temp_t2); + gNearestWaypointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], temp_a3, temp_t2); if (gCurrentCourseId == 4) { - temp_a3_2 = *sp40; - if ((sp56 != temp_a3_2) && (temp_a3_2 == 1)) { - temp_v0 = random_int(4U); - *sp44 = temp_v0; - sp5C = temp_v0; - *sp40 = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], *sp40, temp_v0); + //temp_a3_2 = //*sp40; + if ((sp56 != gNearestWaypointByCameraId[cameraId]) && (gNearestWaypointByCameraId[cameraId] == 1)) { + D_80163DD8[cameraId] = random_int(4); + //D_80163DD8[cameraId] = temp_v0; + sp5C = D_80163DD8[cameraId]; + gNearestWaypointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestWaypointByCameraId[cameraId], sp5C); } } - temp_a3_3 = *sp40; - temp_v1 = sp4C + D_80164688; - sp6C = (u16) ((s32) (temp_a3_3 + 0xB) % sp58); - sp44 = temp_v1; - sp3C = (f32 *) unksp5E; - func_8000BBD8((s16) ((s32) (temp_a3_3 + 0xA) % sp58) & 0xFFFF, *temp_v1, unksp5E); + temp_a3_3 = gNearestWaypointByCameraId[cameraId]; + //temp_v1 = D_80164688[cameraId]; + sp6C = (u16) ((s32) (temp_a3_3 + 11) % sp58); + D_80163DD8[cameraId] = D_80164688[cameraId]; + //sp3C = (f32 *) unksp5E; + func_8000BBD8((s16) ((s32) (temp_a3_3 + 10) % sp58) & 0xFFFF, D_80164688[cameraId], sp5C); sp8C = (f32) ((f64) D_80162FA0->unk0 * 0.5); sp84 = (f32) ((f64) D_80162FA0->unk8 * 0.5); - func_8000BBD8(sp6C, (bitwise f32) *sp44, unksp3E); + func_8000BBD8(sp6C, D_80163DD8[cameraId], sp5C); sp8C = (f32) ((f64) sp8C + ((f64) D_80162FA0->unk0 * 0.5)); sp84 = (f32) ((f64) sp84 + ((f64) D_80162FA0->unk8 * 0.5)); - temp_a3_4 = *sp40; + temp_a3_4 = gNearestWaypointByCameraId[cameraId]; temp_t2_2 = &D_80164550[sp5C]; temp_t0_2 = *temp_t2_2; temp_hi = (s32) (temp_a3_4 + 1) % sp58; @@ -6323,26 +6308,26 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp2C = temp_t2_2; sp6C = (u16) ((s32) (temp_a3_4 + 2) % sp58); sp6E = (s16) temp_hi; - func_8000BBD8((s16) temp_hi & 0xFFFF, (bitwise f32) *sp44, unksp3E); + func_8000BBD8((s16) temp_hi & 0xFFFF, D_80163DD8[cameraId], sp5C); temp_f14 = (f32) ((f64) D_80162FA0->unk0 * 0.5); temp_f16 = (f32) ((f64) D_80162FA0->unk8 * 0.5); sp98 = temp_f14; sp90 = temp_f16; - func_8000BBD8(sp6C, (bitwise f32) *sp44, unksp3E); + func_8000BBD8(sp6C, D_80163DD8[cameraId], sp5C); temp_t0_3 = *sp2C; - temp_a0 = sp4C + D_801645F8; + temp_a0 = D_801645F8[cameraId]; temp_f10 = (f32) (temp_t0_3[(s16) sp6C].posY + temp_t0_3[(s16) temp_hi].posY) * 0.5f; - temp_a1_2 = sp4C + D_80164618; + temp_a1_2 = D_80164618[cameraId]; temp_f18 = (f32) ((f64) temp_f14 + ((f64) D_80162FA0->unk0 * 0.5)) - *temp_a0; sp94 = temp_f10; temp_f2_2 = temp_f10 - *temp_a1_2; - temp_a2 = sp4C + D_80164638; + temp_a2 = D_80164638[cameraId]; sp3C = temp_a2; sp7C = temp_f2_2; temp_f8 = (f32) ((f64) temp_f16 + ((f64) D_80162FA0->unk8 * 0.5)) - *temp_a2; sp80 = temp_f18; - sp40 = temp_a1_2; - sp44 = temp_a0; + gNearestWaypointByCameraId[cameraId] = temp_a1_2; + D_80163DD8[cameraId] = temp_a0; sp78 = temp_f8; temp_f0 = sqrtf((temp_f18 * temp_f18) + (temp_f2_2 * temp_f2_2) + (temp_f8 * temp_f8)); if ((f64) temp_f0 != 0.0) { @@ -7565,7 +7550,7 @@ void func_8001AAAC(s16 arg0, s16 arg1, s16 arg2) { void func_8001AB00(void) { s32 var_v1; - for (var_v1 = 0; var_v1 < 8; var_v1++) { + for (var_v1 = 0; var_v1 < NUM_PLAYERS; var_v1++) { D_801642D8[var_v1].unk_00 = 0; D_801642D8[var_v1].unk_04 = 0; D_801642D8[var_v1].actorIndex = -1; diff --git a/src/code_80005FD0.h b/src/code_80005FD0.h index bfc073fc4..4c80303f6 100644 --- a/src/code_80005FD0.h +++ b/src/code_80005FD0.h @@ -150,7 +150,7 @@ void func_80011AE4(s32); void func_80011B14(s32, Player*); void func_80011D48(s32, Player*); void func_80011E38(s32); -void func_80011EC0(s32, Player*, s32, s32); +void func_80011EC0(s32, Player*, s32, u16); void func_800120C8(void); void func_80012190(void); @@ -409,7 +409,7 @@ extern f32 D_800DCAA0[]; // See bss_80005FD0.s -extern f32 gCourseCompletionPercentByRank[8]; +extern f32 gCourseCompletionPercentByRank[NUM_PLAYERS]; extern s32 D_801643E0[]; extern s32 D_8016448C; extern u16 D_801637BE; diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 8bb4a5d3a..98e4a497f 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -175,11 +175,11 @@ void func_8006EEE8(s32 courseId) { extern u8 *D_8018D9B4; void func_8006EF60(void) { - s32 var_s2; + s32 i; - for (var_s2 = 0; var_s2 < 0x14; var_s2++) { - D_8018D248[var_s2] = func_8006ED94(gCourseOutlineTextures[var_s2], D_8018D9B4, D_800E5520[var_s2], D_800E5520[var_s2]); - D_8018D9B4 += D_800E5520[var_s2]; + for (i = 0; i < 0x14; i++) { + D_8018D248[i] = func_8006ED94(gCourseOutlineTextures[i], D_8018D9B4, D_800E5520[i], D_800E5520[i]); + D_8018D9B4 += D_800E5520[i]; } } #else diff --git a/src/main.c b/src/main.c index f62fb7394..3a5956db4 100644 --- a/src/main.c +++ b/src/main.c @@ -58,7 +58,7 @@ struct SPTask* sNextAudioSPTask = NULL; struct SPTask* sNextDisplaySPTask = NULL; -struct Controller gControllers[8]; +struct Controller gControllers[NUM_PLAYERS]; struct Controller *gControllerOne = &gControllers[0]; struct Controller *gControllerTwo = &gControllers[1]; struct Controller *gControllerThree = &gControllers[2]; @@ -68,7 +68,7 @@ struct Controller *gControllerSix = &gControllers[5]; struct Controller *gControllerSeven = &gControllers[6]; struct Controller *gControllerEight = &gControllers[7]; -Player gPlayers[8]; +Player gPlayers[NUM_PLAYERS]; Player *gPlayerOne = &gPlayers[0]; Player *gPlayerTwo = &gPlayers[1]; Player *gPlayerThree = &gPlayers[2]; diff --git a/src/main.h b/src/main.h index 6c715d9dd..95049e5f8 100644 --- a/src/main.h +++ b/src/main.h @@ -191,13 +191,13 @@ extern u16 D_80152300[]; extern u16 D_80152308; extern OSThread gIdleThread; -extern ALIGNED8 u8 gIdleThreadStack[]; +extern u8 gIdleThreadStack[]; extern OSThread gVideoThread; -extern ALIGNED8 u8 gVideoThreadStack[]; +extern u8 gVideoThreadStack[]; extern OSThread gGameLoopThread; -extern ALIGNED8 u8 gGameLoopThreadStack[]; +extern u8 gGameLoopThreadStack[]; extern OSThread gAudioThread; -extern ALIGNED8 u8 gAudioThreadStack[]; +extern u8 gAudioThreadStack[]; extern u8 gGfxSPTaskYieldBuffer[]; extern u32 gGfxSPTaskStack[]; diff --git a/src/menus.c b/src/menus.c index 082faa79d..d06377121 100644 --- a/src/menus.c +++ b/src/menus.c @@ -1191,7 +1191,7 @@ void splash_menu_act(struct Controller *controller, u16 arg1) { func_800CA330(0x19); gDebugMenuSelection = DEBUG_MENU_EXITED; - if (controller->button & L_TRIG) { + if (controller->button & CONT_L) { gDemoMode = DEMO_MODE_ACTIVE; } else { gDemoMode = DEMO_MODE_INACTIVE; @@ -1211,7 +1211,7 @@ void splash_menu_act(struct Controller *controller, u16 arg1) { gDebugMenuSelection = DEBUG_MENU_EXITED; gDebugGotoScene = DEBUG_GOTO_CREDITS_SEQUENCE_CC_50; play_sound2(SOUND_MENU_OK_CLICKED); - } else if (btnAndStick & R_TRIG) { + } else if (btnAndStick & CONT_R) { gDebugMenuSelection = DEBUG_MENU_DISABLED; play_sound2(SOUND_MENU_SELECT); } @@ -1682,14 +1682,14 @@ GLOBAL_ASM("asm/non_matchings/menus/player_select_menu_act.s") void course_select_menu_act(struct Controller *arg0, u16 arg1) { u16 buttonAndStickPress = (arg0->buttonPressed | arg0->stickPressed); - if ((!gEnableDebugMode) && ((buttonAndStickPress & 0x1000) != 0)) { - buttonAndStickPress |= 0x8000; + if ((!gEnableDebugMode) && ((buttonAndStickPress & START_BUTTON) != 0)) { + buttonAndStickPress |= A_BUTTON; } if (func_800B4520() == 0) { switch (D_8018EDEC) { case 1: - if ((buttonAndStickPress & 0x100) != 0) { + if ((buttonAndStickPress & R_JPAD) != 0) { if (gCupSelection < SPECIAL_CUP) { D_8018EE0A = gCupSelection; ++gCupSelection; @@ -1697,7 +1697,7 @@ void course_select_menu_act(struct Controller *arg0, u16 arg1) { play_sound2(SOUND_MENU_CURSOR_MOVE); } } - if (((buttonAndStickPress & 0x200) != 0) && (gCupSelection > MUSHROOM_CUP)) { + if (((buttonAndStickPress & L_JPAD) != 0) && (gCupSelection > MUSHROOM_CUP)) { D_8018EE0A = gCupSelection; --gCupSelection; func_800B44AC(); @@ -1706,11 +1706,11 @@ void course_select_menu_act(struct Controller *arg0, u16 arg1) { D_800DC540 = gCupSelection; gCurrentCourseId = gCupCourseOrder[gCupSelection][gCupCourseSelection]; - if ((buttonAndStickPress & 0x4000) != 0) { + if ((buttonAndStickPress & B_BUTTON) != 0) { func_8009E208(); play_sound2(SOUND_MENU_GO_BACK); } - else if ((buttonAndStickPress & 0x8000) != 0) { + else if ((buttonAndStickPress & A_BUTTON) != 0) { if (gModeSelection != GRAND_PRIX) { D_8018EDEC = 2; play_sound2(SOUND_MENU_SELECT); @@ -1725,19 +1725,19 @@ void course_select_menu_act(struct Controller *arg0, u16 arg1) { break; case 2: case 4: - if (((buttonAndStickPress & 0x400) != 0) && (gCupCourseSelection < CUP_COURSE_FOUR)) { + if (((buttonAndStickPress & D_JPAD) != 0) && (gCupCourseSelection < CUP_COURSE_FOUR)) { ++gCupCourseSelection; func_800B44AC(); play_sound2(SOUND_MENU_CURSOR_MOVE); } - if (((buttonAndStickPress & 0x800) != 0) && (gCupCourseSelection > CUP_COURSE_ONE)) { + if (((buttonAndStickPress & U_JPAD) != 0) && (gCupCourseSelection > CUP_COURSE_ONE)) { --gCupCourseSelection; func_800B44AC(); play_sound2(SOUND_MENU_CURSOR_MOVE); } gCurrentCourseId = gCupCourseOrder[gCupSelection][gCupCourseSelection]; - if ((buttonAndStickPress & 0x4000) != 0) { + if ((buttonAndStickPress & B_BUTTON) != 0) { if (D_8018EDEC == 2) { D_8018EDEC = 1; } else { @@ -1747,7 +1747,7 @@ void course_select_menu_act(struct Controller *arg0, u16 arg1) { play_sound2(SOUND_MENU_GO_BACK); return; } - if ((buttonAndStickPress & 0x8000) != 0) { + if ((buttonAndStickPress & A_BUTTON) != 0) { D_8018EDEC = 3; play_sound2(SOUND_MENU_SELECT); func_800B44AC(); @@ -1759,7 +1759,7 @@ void course_select_menu_act(struct Controller *arg0, u16 arg1) { play_sound2(SOUND_MENU_OK); } - if ((buttonAndStickPress & 0x4000) != 0) { + if ((buttonAndStickPress & B_BUTTON) != 0) { switch(gModeSelection) { case GRAND_PRIX: @@ -1777,7 +1777,7 @@ void course_select_menu_act(struct Controller *arg0, u16 arg1) { play_sound2(SOUND_MENU_GO_BACK); return; } - if ((buttonAndStickPress & 0x8000) != 0) { + if ((buttonAndStickPress & A_BUTTON) != 0) { func_8009E1C0(); func_800CA330(0x19); play_sound2(SOUND_MENU_OK_CLICKED); diff --git a/tools/doxygen_syms.md b/tools/doxygen_syms.md index 23039f3ce..a8cb9d9bc 100644 --- a/tools/doxygen_syms.md +++ b/tools/doxygen_syms.md @@ -3625,16 +3625,6 @@ Variable Name | Memory Address [D_800ECFCC](@ref D_800ECFCC) | 0x800ECFCC [D_800ECFD0](@ref D_800ECFD0) | 0x800ECFD0 [D_800ECFD4](@ref D_800ECFD4) | 0x800ECFD4 -[D_800ED01C](@ref D_800ED01C) | 0x800ED01C -[D_800ED020](@ref D_800ED020) | 0x800ED020 -[D_800ED024](@ref D_800ED024) | 0x800ED024 -[D_800ED028](@ref D_800ED028) | 0x800ED028 -[D_800ED030](@ref D_800ED030) | 0x800ED030 -[D_800ED034](@ref D_800ED034) | 0x800ED034 -[D_800ED038](@ref D_800ED038) | 0x800ED038 -[D_800ED03C](@ref D_800ED03C) | 0x800ED03C -[D_800ED0AC](@ref D_800ED0AC) | 0x800ED0AC -[D_800ED0B0](@ref D_800ED0B0) | 0x800ED0B0 [D_800ED230](@ref D_800ED230) | 0x800ED230 [D_800ED238](@ref D_800ED238) | 0x800ED238 [D_800ED240](@ref D_800ED240) | 0x800ED240