diff --git a/asm/non_matchings/code_80005FD0/func_8000BA14.s b/asm/non_matchings/code_80005FD0/func_8000BA14.s deleted file mode 100644 index 078b8c76f..000000000 --- a/asm/non_matchings/code_80005FD0/func_8000BA14.s +++ /dev/null @@ -1,125 +0,0 @@ -.section .late_rodata - -glabel D_800ECFE4 -.float 0.01 - -.section .text - -glabel func_8000BA14 -/* 00C614 8000BA14 3C0C8016 */ lui $t4, %hi(D_80164430) # $t4, 0x8016 -/* 00C618 8000BA18 958C4430 */ lhu $t4, %lo(D_80164430)($t4) -/* 00C61C 8000BA1C 308EFFFF */ andi $t6, $a0, 0xffff -/* 00C620 8000BA20 25CB0001 */ addiu $t3, $t6, 1 -/* 00C624 8000BA24 016C001A */ div $zero, $t3, $t4 -/* 00C628 8000BA28 00077C00 */ sll $t7, $a3, 0x10 -/* 00C62C 8000BA2C 000FC403 */ sra $t8, $t7, 0x10 -/* 00C630 8000BA30 27BDFF98 */ addiu $sp, $sp, -0x68 -/* 00C634 8000BA34 0018C880 */ sll $t9, $t8, 2 -/* 00C638 8000BA38 3C038016 */ lui $v1, %hi(D_80164550) # 0x8016 -/* 00C63C 8000BA3C 00791821 */ addu $v1, $v1, $t9 -/* 00C640 8000BA40 8C634550 */ lw $v1, %lo(D_80164550)($v1) # 0x4550($v1) -/* 00C644 8000BA44 AFA40068 */ sw $a0, 0x68($sp) -/* 00C648 8000BA48 000E40C0 */ sll $t0, $t6, 3 -/* 00C64C 8000BA4C 01C02025 */ move $a0, $t6 -/* 00C650 8000BA50 AFA5006C */ sw $a1, 0x6c($sp) -/* 00C654 8000BA54 AFA70074 */ sw $a3, 0x74($sp) -/* 00C658 8000BA58 00006810 */ mfhi $t5 -/* 00C65C 8000BA5C AFBF0014 */ sw $ra, 0x14($sp) -/* 00C660 8000BA60 AFA60070 */ sw $a2, 0x70($sp) -/* 00C664 8000BA64 000D70C0 */ sll $t6, $t5, 3 -/* 00C668 8000BA68 00681021 */ addu $v0, $v1, $t0 -/* 00C66C 8000BA6C 84490000 */ lh $t1, ($v0) -/* 00C670 8000BA70 03003825 */ move $a3, $t8 -/* 00C674 8000BA74 006E2821 */ addu $a1, $v1, $t6 -/* 00C678 8000BA78 84B80004 */ lh $t8, 4($a1) -/* 00C67C 8000BA7C 84AF0000 */ lh $t7, ($a1) -/* 00C680 8000BA80 44892000 */ mtc1 $t1, $f4 -/* 00C684 8000BA84 44985000 */ mtc1 $t8, $f10 -/* 00C688 8000BA88 844A0004 */ lh $t2, 4($v0) -/* 00C68C 8000BA8C 448F4000 */ mtc1 $t7, $f8 -/* 00C690 8000BA90 468024A0 */ cvt.s.w $f18, $f4 -/* 00C694 8000BA94 448A3000 */ mtc1 $t2, $f6 -/* 00C698 8000BA98 46805120 */ cvt.s.w $f4, $f10 -/* 00C69C 8000BA9C E7B20054 */ swc1 $f18, 0x54($sp) -/* 00C6A0 8000BAA0 468040A0 */ cvt.s.w $f2, $f8 -/* 00C6A4 8000BAA4 E7A40048 */ swc1 $f4, 0x48($sp) -/* 00C6A8 8000BAA8 46803020 */ cvt.s.w $f0, $f6 -/* 00C6AC 8000BAAC C7A60048 */ lwc1 $f6, 0x48($sp) -/* 00C6B0 8000BAB0 15800002 */ bnez $t4, .L8000BABC -/* 00C6B4 8000BAB4 00000000 */ nop -/* 00C6B8 8000BAB8 0007000D */ break 7 -.L8000BABC: -/* 00C6BC 8000BABC 2401FFFF */ li $at, -1 -/* 00C6C0 8000BAC0 15810004 */ bne $t4, $at, .L8000BAD4 -/* 00C6C4 8000BAC4 3C018000 */ lui $at, 0x8000 -/* 00C6C8 8000BAC8 15610002 */ bne $t3, $at, .L8000BAD4 -/* 00C6CC 8000BACC 00000000 */ nop -/* 00C6D0 8000BAD0 0006000D */ break 6 -.L8000BAD4: -/* 00C6D4 8000BAD4 46121401 */ sub.s $f16, $f2, $f18 -/* 00C6D8 8000BAD8 E7A00050 */ swc1 $f0, 0x50($sp) -/* 00C6DC 8000BADC E7A2004C */ swc1 $f2, 0x4c($sp) -/* 00C6E0 8000BAE0 46003381 */ sub.s $f14, $f6, $f0 -/* 00C6E4 8000BAE4 46108202 */ mul.s $f8, $f16, $f16 -/* 00C6E8 8000BAE8 E7B0001C */ swc1 $f16, 0x1c($sp) -/* 00C6EC 8000BAEC 460E7282 */ mul.s $f10, $f14, $f14 -/* 00C6F0 8000BAF0 E7AE0020 */ swc1 $f14, 0x20($sp) -/* 00C6F4 8000BAF4 0C033850 */ jal sqrtf -/* 00C6F8 8000BAF8 460A4300 */ add.s $f12, $f8, $f10 -/* 00C6FC 8000BAFC 3C01800F */ lui $at, %hi(D_800ECFE4) # 0x800F0000 # -0.000000 -/* 00C700 8000BB00 C424CFE4 */ lwc1 $f4, %lo(D_800ECFE4)($at) -/* 00C704 8000BB04 3C028016 */ lui $v0, %hi(D_80162FA0) # $v0, 0x8016 -/* 00C708 8000BB08 C7A2004C */ lwc1 $f2, 0x4c($sp) -/* 00C70C 8000BB0C 4604003C */ c.lt.s $f0, $f4 -/* 00C710 8000BB10 C7AE0020 */ lwc1 $f14, 0x20($sp) -/* 00C714 8000BB14 C7B0001C */ lwc1 $f16, 0x1c($sp) -/* 00C718 8000BB18 C7B20054 */ lwc1 $f18, 0x54($sp) -/* 00C71C 8000BB1C 45000005 */ bc1f .L8000BB34 -/* 00C720 8000BB20 24422FA0 */ addiu $v0, %lo(D_80162FA0) # addiu $v0, $v0, 0x2fa0 -/* 00C724 8000BB24 C7A60048 */ lwc1 $f6, 0x48($sp) -/* 00C728 8000BB28 E4420000 */ swc1 $f2, ($v0) -/* 00C72C 8000BB2C 10000026 */ b .L8000BBC8 -/* 00C730 8000BB30 E4460008 */ swc1 $f6, 8($v0) -.L8000BB34: -/* 00C734 8000BB34 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 00C738 8000BB38 44815000 */ mtc1 $at, $f10 -/* 00C73C 8000BB3C C7A8006C */ lwc1 $f8, 0x6c($sp) -/* 00C740 8000BB40 44813000 */ mtc1 $at, $f6 -/* 00C744 8000BB44 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00C748 8000BB48 460A4102 */ mul.s $f4, $f8, $f10 -/* 00C74C 8000BB4C C7AA0070 */ lwc1 $f10, 0x70($sp) -/* 00C750 8000BB50 44814000 */ mtc1 $at, $f8 -/* 00C754 8000BB54 3C018016 */ lui $at, %hi(D_80162FA0) # $at, 0x8016 -/* 00C758 8000BB58 46043081 */ sub.s $f2, $f6, $f4 -/* 00C75C 8000BB5C 46007187 */ neg.s $f6, $f14 -/* 00C760 8000BB60 46024301 */ sub.s $f12, $f8, $f2 -/* 00C764 8000BB64 46065102 */ mul.s $f4, $f10, $f6 -/* 00C768 8000BB68 46002203 */ div.s $f8, $f4, $f0 -/* 00C76C 8000BB6C 46124180 */ add.s $f6, $f8, $f18 -/* 00C770 8000BB70 46066102 */ mul.s $f4, $f12, $f6 -/* 00C774 8000BB74 00000000 */ nop -/* 00C778 8000BB78 460E5202 */ mul.s $f8, $f10, $f14 -/* 00C77C 8000BB7C 46004183 */ div.s $f6, $f8, $f0 -/* 00C780 8000BB80 46123200 */ add.s $f8, $f6, $f18 -/* 00C784 8000BB84 46081182 */ mul.s $f6, $f2, $f8 -/* 00C788 8000BB88 46043200 */ add.s $f8, $f6, $f4 -/* 00C78C 8000BB8C 46008187 */ neg.s $f6, $f16 -/* 00C790 8000BB90 E4282FA0 */ swc1 $f8, %lo(D_80162FA0)($at) -/* 00C794 8000BB94 46065102 */ mul.s $f4, $f10, $f6 -/* 00C798 8000BB98 C7A60050 */ lwc1 $f6, 0x50($sp) -/* 00C79C 8000BB9C 3C018016 */ lui $at, %hi(D_80162FA8) # $at, 0x8016 -/* 00C7A0 8000BBA0 46002203 */ div.s $f8, $f4, $f0 -/* 00C7A4 8000BBA4 46064100 */ add.s $f4, $f8, $f6 -/* 00C7A8 8000BBA8 46041202 */ mul.s $f8, $f2, $f4 -/* 00C7AC 8000BBAC 00000000 */ nop -/* 00C7B0 8000BBB0 46105102 */ mul.s $f4, $f10, $f16 -/* 00C7B4 8000BBB4 46002283 */ div.s $f10, $f4, $f0 -/* 00C7B8 8000BBB8 46065100 */ add.s $f4, $f10, $f6 -/* 00C7BC 8000BBBC 46046282 */ mul.s $f10, $f12, $f4 -/* 00C7C0 8000BBC0 460A4180 */ add.s $f6, $f8, $f10 -/* 00C7C4 8000BBC4 E4262FA8 */ swc1 $f6, %lo(D_80162FA8)($at) -.L8000BBC8: -/* 00C7C8 8000BBC8 8FBF0014 */ lw $ra, 0x14($sp) -/* 00C7CC 8000BBCC 27BD0068 */ addiu $sp, $sp, 0x68 -/* 00C7D0 8000BBD0 03E00008 */ jr $ra -/* 00C7D4 8000BBD4 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8000D3B8.s b/asm/non_matchings/code_80005FD0/func_8000D3B8.s deleted file mode 100644 index 0ccd99bbb..000000000 --- a/asm/non_matchings/code_80005FD0/func_8000D3B8.s +++ /dev/null @@ -1,36 +0,0 @@ -glabel func_8000D3B8 -/* 00DFB8 8000D3B8 3C0F8016 */ lui $t7, %hi(D_801634F8) # $t7, 0x8016 -/* 00DFBC 8000D3BC 25EF34F8 */ addiu $t7, %lo(D_801634F8) # addiu $t7, $t7, 0x34f8 -/* 00DFC0 8000D3C0 00047100 */ sll $t6, $a0, 4 -/* 00DFC4 8000D3C4 01CF1021 */ addu $v0, $t6, $t7 -/* 00DFC8 8000D3C8 C4420000 */ lwc1 $f2, ($v0) -/* 00DFCC 8000D3CC C4400004 */ lwc1 $f0, 4($v0) -/* 00DFD0 8000D3D0 4600103C */ c.lt.s $f2, $f0 -/* 00DFD4 8000D3D4 00000000 */ nop -/* 00DFD8 8000D3D8 4502000A */ bc1fl .L8000D404 -/* 00DFDC 8000D3DC 4602003C */ c.lt.s $f0, $f2 -/* 00DFE0 8000D3E0 C4440008 */ lwc1 $f4, 8($v0) -/* 00DFE4 8000D3E4 46041080 */ add.s $f2, $f2, $f4 -/* 00DFE8 8000D3E8 4602003C */ c.lt.s $f0, $f2 -/* 00DFEC 8000D3EC 00000000 */ nop -/* 00DFF0 8000D3F0 4502000F */ bc1fl .L8000D430 -/* 00DFF4 8000D3F4 E4420000 */ swc1 $f2, ($v0) -/* 00DFF8 8000D3F8 1000000C */ b .L8000D42C -/* 00DFFC 8000D3FC 46000086 */ mov.s $f2, $f0 -/* 00E000 8000D400 4602003C */ c.lt.s $f0, $f2 -.L8000D404: -/* 00E004 8000D404 00000000 */ nop -/* 00E008 8000D408 45020009 */ bc1fl .L8000D430 -/* 00E00C 8000D40C E4420000 */ swc1 $f2, ($v0) -/* 00E010 8000D410 C4460008 */ lwc1 $f6, 8($v0) -/* 00E014 8000D414 46061081 */ sub.s $f2, $f2, $f6 -/* 00E018 8000D418 4600103C */ c.lt.s $f2, $f0 -/* 00E01C 8000D41C 00000000 */ nop -/* 00E020 8000D420 45020003 */ bc1fl .L8000D430 -/* 00E024 8000D424 E4420000 */ swc1 $f2, ($v0) -/* 00E028 8000D428 46000086 */ mov.s $f2, $f0 -.L8000D42C: -/* 00E02C 8000D42C E4420000 */ swc1 $f2, ($v0) -.L8000D430: -/* 00E030 8000D430 03E00008 */ jr $ra -/* 00E034 8000D434 46001006 */ mov.s $f0, $f2 diff --git a/asm/non_matchings/code_80005FD0/func_80014EE4.s b/asm/non_matchings/code_80005FD0/func_80014EE4.s deleted file mode 100644 index 56bb6c027..000000000 --- a/asm/non_matchings/code_80005FD0/func_80014EE4.s +++ /dev/null @@ -1,190 +0,0 @@ -glabel func_80014EE4 -/* 015AE4 80014EE4 00057840 */ sll $t7, $a1, 1 -/* 015AE8 80014EE8 3C028016 */ lui $v0, %hi(D_80164678) # 0x8016 -/* 015AEC 80014EEC 004F1021 */ addu $v0, $v0, $t7 -/* 015AF0 80014EF0 84424678 */ lh $v0, %lo(D_80164678)($v0) # 0x4678($v0) -/* 015AF4 80014EF4 00057080 */ sll $t6, $a1, 2 -/* 015AF8 80014EF8 3C018016 */ lui $at, %hi(D_80164498) -/* 015AFC 80014EFC 002E0821 */ addu $at, $at, $t6 -/* 015B00 80014F00 1040000B */ beqz $v0, .L80014F30 -/* 015B04 80014F04 C4204498 */ lwc1 $f0, %lo(D_80164498)($at) -/* 015B08 80014F08 24010001 */ li $at, 1 -/* 015B0C 80014F0C 1041002F */ beq $v0, $at, .L80014FCC -/* 015B10 80014F10 24010002 */ li $at, 2 -/* 015B14 80014F14 1041007B */ beq $v0, $at, .L80015104 -/* 015B18 80014F18 24010003 */ li $at, 3 -/* 015B1C 80014F1C 10410052 */ beq $v0, $at, .L80015068 -/* 015B20 80014F20 3C014220 */ li $at, 0x42200000 # 40.000000 -/* 015B24 80014F24 44810000 */ mtc1 $at, $f0 -/* 015B28 80014F28 03E00008 */ jr $ra -/* 015B2C 80014F2C 00000000 */ nop - -.L80014F30: -/* 015B30 80014F30 3C014044 */ li $at, 0x40440000 # 3.062500 -/* 015B34 80014F34 44812800 */ mtc1 $at, $f5 -/* 015B38 80014F38 44802000 */ mtc1 $zero, $f4 -/* 015B3C 80014F3C 460001A1 */ cvt.d.s $f6, $f0 -/* 015B40 80014F40 460063A1 */ cvt.d.s $f14, $f12 -/* 015B44 80014F44 46262080 */ add.d $f2, $f4, $f6 -/* 015B48 80014F48 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 015B4C 80014F4C 462E103C */ c.lt.d $f2, $f14 -/* 015B50 80014F50 00000000 */ nop -/* 015B54 80014F54 4502000E */ bc1fl .L80014F90 -/* 015B58 80014F58 4622703C */ c.lt.d $f14, $f2 -/* 015B5C 80014F5C 44814800 */ mtc1 $at, $f9 -/* 015B60 80014F60 44804000 */ mtc1 $zero, $f8 -/* 015B64 80014F64 00000000 */ nop -/* 015B68 80014F68 46287281 */ sub.d $f10, $f14, $f8 -/* 015B6C 80014F6C 46205320 */ cvt.s.d $f12, $f10 -/* 015B70 80014F70 460063A1 */ cvt.d.s $f14, $f12 -/* 015B74 80014F74 4622703C */ c.lt.d $f14, $f2 -/* 015B78 80014F78 00000000 */ nop -/* 015B7C 80014F7C 45020004 */ bc1fl .L80014F90 -/* 015B80 80014F80 4622703C */ c.lt.d $f14, $f2 -/* 015B84 80014F84 46201320 */ cvt.s.d $f12, $f2 -/* 015B88 80014F88 460063A1 */ cvt.d.s $f14, $f12 -/* 015B8C 80014F8C 4622703C */ c.lt.d $f14, $f2 -.L80014F90: -/* 015B90 80014F90 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 015B94 80014F94 45000081 */ bc1f .L8001519C -/* 015B98 80014F98 00000000 */ nop -/* 015B9C 80014F9C 44818800 */ mtc1 $at, $f17 -/* 015BA0 80014FA0 44808000 */ mtc1 $zero, $f16 -/* 015BA4 80014FA4 00000000 */ nop -/* 015BA8 80014FA8 46307480 */ add.d $f18, $f14, $f16 -/* 015BAC 80014FAC 46209320 */ cvt.s.d $f12, $f18 -/* 015BB0 80014FB0 46006121 */ cvt.d.s $f4, $f12 -/* 015BB4 80014FB4 4624103C */ c.lt.d $f2, $f4 -/* 015BB8 80014FB8 00000000 */ nop -/* 015BBC 80014FBC 45000077 */ bc1f .L8001519C -/* 015BC0 80014FC0 00000000 */ nop -/* 015BC4 80014FC4 03E00008 */ jr $ra -/* 015BC8 80014FC8 46201020 */ cvt.s.d $f0, $f2 - -.L80014FCC: -/* 015BCC 80014FCC 3C01404E */ li $at, 0x404E0000 # 3.218750 -/* 015BD0 80014FD0 44813800 */ mtc1 $at, $f7 -/* 015BD4 80014FD4 44803000 */ mtc1 $zero, $f6 -/* 015BD8 80014FD8 46000221 */ cvt.d.s $f8, $f0 -/* 015BDC 80014FDC 460063A1 */ cvt.d.s $f14, $f12 -/* 015BE0 80014FE0 46283080 */ add.d $f2, $f6, $f8 -/* 015BE4 80014FE4 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 015BE8 80014FE8 4622703C */ c.lt.d $f14, $f2 -/* 015BEC 80014FEC 00000000 */ nop -/* 015BF0 80014FF0 4502000E */ bc1fl .L8001502C -/* 015BF4 80014FF4 462E103C */ c.lt.d $f2, $f14 -/* 015BF8 80014FF8 44815800 */ mtc1 $at, $f11 -/* 015BFC 80014FFC 44805000 */ mtc1 $zero, $f10 -/* 015C00 80015000 00000000 */ nop -/* 015C04 80015004 462A7400 */ add.d $f16, $f14, $f10 -/* 015C08 80015008 46208320 */ cvt.s.d $f12, $f16 -/* 015C0C 8001500C 460063A1 */ cvt.d.s $f14, $f12 -/* 015C10 80015010 462E103C */ c.lt.d $f2, $f14 -/* 015C14 80015014 00000000 */ nop -/* 015C18 80015018 45020004 */ bc1fl .L8001502C -/* 015C1C 8001501C 462E103C */ c.lt.d $f2, $f14 -/* 015C20 80015020 46201320 */ cvt.s.d $f12, $f2 -/* 015C24 80015024 460063A1 */ cvt.d.s $f14, $f12 -/* 015C28 80015028 462E103C */ c.lt.d $f2, $f14 -.L8001502C: -/* 015C2C 8001502C 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 015C30 80015030 4500005A */ bc1f .L8001519C -/* 015C34 80015034 00000000 */ nop -/* 015C38 80015038 44819800 */ mtc1 $at, $f19 -/* 015C3C 8001503C 44809000 */ mtc1 $zero, $f18 -/* 015C40 80015040 00000000 */ nop -/* 015C44 80015044 46327101 */ sub.d $f4, $f14, $f18 -/* 015C48 80015048 46202320 */ cvt.s.d $f12, $f4 -/* 015C4C 8001504C 460061A1 */ cvt.d.s $f6, $f12 -/* 015C50 80015050 4622303C */ c.lt.d $f6, $f2 -/* 015C54 80015054 00000000 */ nop -/* 015C58 80015058 45000050 */ bc1f .L8001519C -/* 015C5C 8001505C 00000000 */ nop -/* 015C60 80015060 03E00008 */ jr $ra -/* 015C64 80015064 46201020 */ cvt.s.d $f0, $f2 - -.L80015068: -/* 015C68 80015068 3C01404E */ li $at, 0x404E0000 # 3.218750 -/* 015C6C 8001506C 44814800 */ mtc1 $at, $f9 -/* 015C70 80015070 44804000 */ mtc1 $zero, $f8 -/* 015C74 80015074 460002A1 */ cvt.d.s $f10, $f0 -/* 015C78 80015078 460063A1 */ cvt.d.s $f14, $f12 -/* 015C7C 8001507C 462A4080 */ add.d $f2, $f8, $f10 -/* 015C80 80015080 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 015C84 80015084 4622703C */ c.lt.d $f14, $f2 -/* 015C88 80015088 00000000 */ nop -/* 015C8C 8001508C 4502000E */ bc1fl .L800150C8 -/* 015C90 80015090 462E103C */ c.lt.d $f2, $f14 -/* 015C94 80015094 44818800 */ mtc1 $at, $f17 -/* 015C98 80015098 44808000 */ mtc1 $zero, $f16 -/* 015C9C 8001509C 00000000 */ nop -/* 015CA0 800150A0 46307480 */ add.d $f18, $f14, $f16 -/* 015CA4 800150A4 46209320 */ cvt.s.d $f12, $f18 -/* 015CA8 800150A8 460063A1 */ cvt.d.s $f14, $f12 -/* 015CAC 800150AC 462E103C */ c.lt.d $f2, $f14 -/* 015CB0 800150B0 00000000 */ nop -/* 015CB4 800150B4 45020004 */ bc1fl .L800150C8 -/* 015CB8 800150B8 462E103C */ c.lt.d $f2, $f14 -/* 015CBC 800150BC 46201320 */ cvt.s.d $f12, $f2 -/* 015CC0 800150C0 460063A1 */ cvt.d.s $f14, $f12 -/* 015CC4 800150C4 462E103C */ c.lt.d $f2, $f14 -.L800150C8: -/* 015CC8 800150C8 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 015CCC 800150CC 45000033 */ bc1f .L8001519C -/* 015CD0 800150D0 00000000 */ nop -/* 015CD4 800150D4 44812800 */ mtc1 $at, $f5 -/* 015CD8 800150D8 44802000 */ mtc1 $zero, $f4 -/* 015CDC 800150DC 00000000 */ nop -/* 015CE0 800150E0 46247181 */ sub.d $f6, $f14, $f4 -/* 015CE4 800150E4 46203320 */ cvt.s.d $f12, $f6 -/* 015CE8 800150E8 46006221 */ cvt.d.s $f8, $f12 -/* 015CEC 800150EC 4622403C */ c.lt.d $f8, $f2 -/* 015CF0 800150F0 00000000 */ nop -/* 015CF4 800150F4 45000029 */ bc1f .L8001519C -/* 015CF8 800150F8 00000000 */ nop -/* 015CFC 800150FC 03E00008 */ jr $ra -/* 015D00 80015100 46201020 */ cvt.s.d $f0, $f2 - -.L80015104: -/* 015D04 80015104 3C01404E */ li $at, 0x404E0000 # 3.218750 -/* 015D08 80015108 44815800 */ mtc1 $at, $f11 -/* 015D0C 8001510C 44805000 */ mtc1 $zero, $f10 -/* 015D10 80015110 46000421 */ cvt.d.s $f16, $f0 -/* 015D14 80015114 460063A1 */ cvt.d.s $f14, $f12 -/* 015D18 80015118 46305080 */ add.d $f2, $f10, $f16 -/* 015D1C 8001511C 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 015D20 80015120 4622703C */ c.lt.d $f14, $f2 -/* 015D24 80015124 00000000 */ nop -/* 015D28 80015128 4502000E */ bc1fl .L80015164 -/* 015D2C 8001512C 462E103C */ c.lt.d $f2, $f14 -/* 015D30 80015130 44819800 */ mtc1 $at, $f19 -/* 015D34 80015134 44809000 */ mtc1 $zero, $f18 -/* 015D38 80015138 00000000 */ nop -/* 015D3C 8001513C 46327100 */ add.d $f4, $f14, $f18 -/* 015D40 80015140 46202320 */ cvt.s.d $f12, $f4 -/* 015D44 80015144 460063A1 */ cvt.d.s $f14, $f12 -/* 015D48 80015148 462E103C */ c.lt.d $f2, $f14 -/* 015D4C 8001514C 00000000 */ nop -/* 015D50 80015150 45020004 */ bc1fl .L80015164 -/* 015D54 80015154 462E103C */ c.lt.d $f2, $f14 -/* 015D58 80015158 46201320 */ cvt.s.d $f12, $f2 -/* 015D5C 8001515C 460063A1 */ cvt.d.s $f14, $f12 -/* 015D60 80015160 462E103C */ c.lt.d $f2, $f14 -.L80015164: -/* 015D64 80015164 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 015D68 80015168 4500000C */ bc1f .L8001519C -/* 015D6C 8001516C 00000000 */ nop -/* 015D70 80015170 44813800 */ mtc1 $at, $f7 -/* 015D74 80015174 44803000 */ mtc1 $zero, $f6 -/* 015D78 80015178 00000000 */ nop -/* 015D7C 8001517C 46267201 */ sub.d $f8, $f14, $f6 -/* 015D80 80015180 46204320 */ cvt.s.d $f12, $f8 -/* 015D84 80015184 460062A1 */ cvt.d.s $f10, $f12 -/* 015D88 80015188 4622503C */ c.lt.d $f10, $f2 -/* 015D8C 8001518C 00000000 */ nop -/* 015D90 80015190 45000002 */ bc1f .L8001519C -/* 015D94 80015194 00000000 */ nop -/* 015D98 80015198 46201320 */ cvt.s.d $f12, $f2 -.L8001519C: -/* 015D9C 8001519C 03E00008 */ jr $ra -/* 015DA0 800151A0 46006006 */ mov.s $f0, $f12 diff --git a/asm/non_matchings/code_80005FD0/func_800151A4.s b/asm/non_matchings/code_80005FD0/func_800151A4.s deleted file mode 100644 index 12b4bc099..000000000 --- a/asm/non_matchings/code_80005FD0/func_800151A4.s +++ /dev/null @@ -1,93 +0,0 @@ -glabel func_800151A4 -/* 015DA4 800151A4 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 015DA8 800151A8 AFB10018 */ sw $s1, 0x18($sp) -/* 015DAC 800151AC 3C118016 */ lui $s1, %hi(D_801646C0) # 0x8016 -/* 015DB0 800151B0 00057040 */ sll $t6, $a1, 1 -/* 015DB4 800151B4 022E8821 */ addu $s1, $s1, $t6 -/* 015DB8 800151B8 963146C0 */ lhu $s1, %lo(D_801646C0)($s1) # 0x46c0($s1) -/* 015DBC 800151BC AFB00014 */ sw $s0, 0x14($sp) -/* 015DC0 800151C0 00808025 */ move $s0, $a0 -/* 015DC4 800151C4 16200008 */ bnez $s1, .L800151E8 -/* 015DC8 800151C8 AFBF001C */ sw $ra, 0x1c($sp) -/* 015DCC 800151CC 44800000 */ mtc1 $zero, $f0 -/* 015DD0 800151D0 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 015DD4 800151D4 44812000 */ mtc1 $at, $f4 -/* 015DD8 800151D8 E4800018 */ swc1 $f0, 0x18($a0) -/* 015DDC 800151DC E4800020 */ swc1 $f0, 0x20($a0) -/* 015DE0 800151E0 10000045 */ b .L800152F8 -/* 015DE4 800151E4 E484001C */ swc1 $f4, 0x1c($a0) -.L800151E8: -/* 015DE8 800151E8 C606000C */ lwc1 $f6, 0xc($s0) -/* 015DEC 800151EC C6080000 */ lwc1 $f8, ($s0) -/* 015DF0 800151F0 C60A0010 */ lwc1 $f10, 0x10($s0) -/* 015DF4 800151F4 C6120004 */ lwc1 $f18, 4($s0) -/* 015DF8 800151F8 46083081 */ sub.s $f2, $f6, $f8 -/* 015DFC 800151FC C6060008 */ lwc1 $f6, 8($s0) -/* 015E00 80015200 C6040014 */ lwc1 $f4, 0x14($s0) -/* 015E04 80015204 46125381 */ sub.s $f14, $f10, $f18 -/* 015E08 80015208 46021202 */ mul.s $f8, $f2, $f2 -/* 015E0C 8001520C E7A20038 */ swc1 $f2, 0x38($sp) -/* 015E10 80015210 46062401 */ sub.s $f16, $f4, $f6 -/* 015E14 80015214 460E7282 */ mul.s $f10, $f14, $f14 -/* 015E18 80015218 E7AE0034 */ swc1 $f14, 0x34($sp) -/* 015E1C 8001521C 46108102 */ mul.s $f4, $f16, $f16 -/* 015E20 80015220 E7B00030 */ swc1 $f16, 0x30($sp) -/* 015E24 80015224 460A4480 */ add.s $f18, $f8, $f10 -/* 015E28 80015228 0C033850 */ jal sqrtf -/* 015E2C 8001522C 46049300 */ add.s $f12, $f18, $f4 -/* 015E30 80015230 C7A20038 */ lwc1 $f2, 0x38($sp) -/* 015E34 80015234 C7AE0034 */ lwc1 $f14, 0x34($sp) -/* 015E38 80015238 C7B00030 */ lwc1 $f16, 0x30($sp) -/* 015E3C 8001523C 46001183 */ div.s $f6, $f2, $f0 -/* 015E40 80015240 3224FFFF */ andi $a0, $s1, 0xffff -/* 015E44 80015244 46007203 */ div.s $f8, $f14, $f0 -/* 015E48 80015248 E7A60044 */ swc1 $f6, 0x44($sp) -/* 015E4C 8001524C 46008283 */ div.s $f10, $f16, $f0 -/* 015E50 80015250 E7A80040 */ swc1 $f8, 0x40($sp) -/* 015E54 80015254 0C0AE00E */ jal coss -/* 015E58 80015258 E7AA003C */ swc1 $f10, 0x3c($sp) -/* 015E5C 8001525C 3C013FF0 */ li $at, 0x3FF00000 # 1.875000 -/* 015E60 80015260 44819800 */ mtc1 $at, $f19 -/* 015E64 80015264 44809000 */ mtc1 $zero, $f18 -/* 015E68 80015268 46000121 */ cvt.d.s $f4, $f0 -/* 015E6C 8001526C 3224FFFF */ andi $a0, $s1, 0xffff -/* 015E70 80015270 46249181 */ sub.d $f6, $f18, $f4 -/* 015E74 80015274 46203220 */ cvt.s.d $f8, $f6 -/* 015E78 80015278 0C0AE006 */ jal sins -/* 015E7C 8001527C E7A80028 */ swc1 $f8, 0x28($sp) -/* 015E80 80015280 C7AA0028 */ lwc1 $f10, 0x28($sp) -/* 015E84 80015284 C7B20044 */ lwc1 $f18, 0x44($sp) -/* 015E88 80015288 C7A60040 */ lwc1 $f6, 0x40($sp) -/* 015E8C 8001528C 3224FFFF */ andi $a0, $s1, 0xffff -/* 015E90 80015290 46125102 */ mul.s $f4, $f10, $f18 -/* 015E94 80015294 C7AA003C */ lwc1 $f10, 0x3c($sp) -/* 015E98 80015298 46062202 */ mul.s $f8, $f4, $f6 -/* 015E9C 8001529C 00000000 */ nop -/* 015EA0 800152A0 460A0482 */ mul.s $f18, $f0, $f10 -/* 015EA4 800152A4 46124101 */ sub.s $f4, $f8, $f18 -/* 015EA8 800152A8 0C0AE00E */ jal coss -/* 015EAC 800152AC E6040018 */ swc1 $f4, 0x18($s0) -/* 015EB0 800152B0 C7A60028 */ lwc1 $f6, 0x28($sp) -/* 015EB4 800152B4 C7AA0040 */ lwc1 $f10, 0x40($sp) -/* 015EB8 800152B8 3224FFFF */ andi $a0, $s1, 0xffff -/* 015EBC 800152BC 460A3082 */ mul.s $f2, $f6, $f10 -/* 015EC0 800152C0 00000000 */ nop -/* 015EC4 800152C4 460A1202 */ mul.s $f8, $f2, $f10 -/* 015EC8 800152C8 46080480 */ add.s $f18, $f0, $f8 -/* 015ECC 800152CC E612001C */ swc1 $f18, 0x1c($s0) -/* 015ED0 800152D0 0C0AE006 */ jal sins -/* 015ED4 800152D4 E7A20020 */ swc1 $f2, 0x20($sp) -/* 015ED8 800152D8 C7A40044 */ lwc1 $f4, 0x44($sp) -/* 015EDC 800152DC C7A20020 */ lwc1 $f2, 0x20($sp) -/* 015EE0 800152E0 C7AA003C */ lwc1 $f10, 0x3c($sp) -/* 015EE4 800152E4 46040182 */ mul.s $f6, $f0, $f4 -/* 015EE8 800152E8 00000000 */ nop -/* 015EEC 800152EC 460A1202 */ mul.s $f8, $f2, $f10 -/* 015EF0 800152F0 46083480 */ add.s $f18, $f6, $f8 -/* 015EF4 800152F4 E6120020 */ swc1 $f18, 0x20($s0) -.L800152F8: -/* 015EF8 800152F8 8FBF001C */ lw $ra, 0x1c($sp) -/* 015EFC 800152FC 8FB00014 */ lw $s0, 0x14($sp) -/* 015F00 80015300 8FB10018 */ lw $s1, 0x18($sp) -/* 015F04 80015304 03E00008 */ jr $ra -/* 015F08 80015308 27BD0048 */ addiu $sp, $sp, 0x48 diff --git a/asm/non_matchings/code_80005FD0/func_8001577C.s b/asm/non_matchings/code_80005FD0/func_8001577C.s deleted file mode 100644 index 432154657..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001577C.s +++ /dev/null @@ -1,214 +0,0 @@ -.section .late_rodata - -glabel D_800ED220 -.double -0.7 - -glabel D_800ED228 -.double 0.7 - -.section .text - -glabel func_8001577C -/* 01637C 8001577C 27BDFF70 */ addiu $sp, $sp, -0x90 -/* 016380 80015780 AFBF002C */ sw $ra, 0x2c($sp) -/* 016384 80015784 AFB20028 */ sw $s2, 0x28($sp) -/* 016388 80015788 AFB10024 */ sw $s1, 0x24($sp) -/* 01638C 8001578C AFB00020 */ sw $s0, 0x20($sp) -/* 016390 80015790 AFA50094 */ sw $a1, 0x94($sp) -/* 016394 80015794 AFA60098 */ sw $a2, 0x98($sp) -/* 016398 80015798 848300AE */ lh $v1, 0xae($a0) -/* 01639C 8001579C 3C058016 */ lui $a1, %hi(gPathIndexByPlayerId) # 0x8016 -/* 0163A0 800157A0 8C860008 */ lw $a2, 8($a0) -/* 0163A4 800157A4 000370C0 */ sll $t6, $v1, 3 -/* 0163A8 800157A8 01C37023 */ subu $t6, $t6, $v1 -/* 0163AC 800157AC 000E7100 */ sll $t6, $t6, 4 -/* 0163B0 800157B0 C48E0004 */ lwc1 $f14, 4($a0) -/* 0163B4 800157B4 C48C0000 */ lwc1 $f12, ($a0) -/* 0163B8 800157B8 00034840 */ sll $t1, $v1, 1 -/* 0163BC 800157BC 00A92821 */ addu $a1, $a1, $t1 -/* 0163C0 800157C0 01C37023 */ subu $t6, $t6, $v1 -/* 0163C4 800157C4 94A545B0 */ lhu $a1, %lo(gPathIndexByPlayerId)($a1) # 0x45b0($a1) -/* 0163C8 800157C8 3C12800E */ lui $s2, %hi(gPlayerOne) -/* 0163CC 800157CC 000E7080 */ sll $t6, $t6, 2 -/* 0163D0 800157D0 3C0F8016 */ lui $t7, %hi(gNearestWaypointByCameraId) # $t7, 0x8016 -/* 0163D4 800157D4 8E52C4DC */ lw $s2, %lo(gPlayerOne)($s2) -/* 0163D8 800157D8 25EF4668 */ addiu $t7, %lo(gNearestWaypointByCameraId) # addiu $t7, $t7, 0x4668 -/* 0163DC 800157DC 00071040 */ sll $v0, $a3, 1 -/* 0163E0 800157E0 01C37023 */ subu $t6, $t6, $v1 -/* 0163E4 800157E4 00E08825 */ move $s1, $a3 -/* 0163E8 800157E8 000E70C0 */ sll $t6, $t6, 3 -/* 0163EC 800157EC 004F4021 */ addu $t0, $v0, $t7 -/* 0163F0 800157F0 00808025 */ move $s0, $a0 -/* 0163F4 800157F4 85070000 */ lh $a3, ($t0) -/* 0163F8 800157F8 AFA80034 */ sw $t0, 0x34($sp) -/* 0163FC 800157FC AFA20038 */ sw $v0, 0x38($sp) -/* 016400 80015800 AFA9003C */ sw $t1, 0x3c($sp) -/* 016404 80015804 AFA30074 */ sw $v1, 0x74($sp) -/* 016408 80015808 AFA50010 */ sw $a1, 0x10($sp) -/* 01640C 8001580C AFA50044 */ sw $a1, 0x44($sp) -/* 016410 80015810 0C0034CF */ jal func_8000D33C -/* 016414 80015814 024E9021 */ addu $s2, $s2, $t6 -/* 016418 80015818 8FA80034 */ lw $t0, 0x34($sp) -/* 01641C 8001581C 8FA9003C */ lw $t1, 0x3c($sp) -/* 016420 80015820 8FB80044 */ lw $t8, 0x44($sp) -/* 016424 80015824 3C0A8016 */ lui $t2, %hi(gNearestWaypointByPlayerId) # 0x8016 -/* 016428 80015828 A5020000 */ sh $v0, ($t0) -/* 01642C 8001582C 3C0C8016 */ lui $t4, %hi(gWaypointCountByPathIndex) # 0x8016 -/* 016430 80015830 01495021 */ addu $t2, $t2, $t1 -/* 016434 80015834 0018C840 */ sll $t9, $t8, 1 -/* 016438 80015838 854A4438 */ lh $t2, %lo(gNearestWaypointByPlayerId)($t2) # 0x4438($t2) -/* 01643C 8001583C 850B0000 */ lh $t3, ($t0) -/* 016440 80015840 01996021 */ addu $t4, $t4, $t9 -/* 016444 80015844 958C45C8 */ lhu $t4, %lo(gWaypointCountByPathIndex)($t4) # 0x45c8($t4) -/* 016448 80015848 24060032 */ li $a2, 50 -/* 01644C 8001584C 2407000F */ li $a3, 15 -/* 016450 80015850 3144FFFF */ andi $a0, $t2, 0xffff -/* 016454 80015854 A7AA008C */ sh $t2, 0x8c($sp) -/* 016458 80015858 3165FFFF */ andi $a1, $t3, 0xffff -/* 01645C 8001585C A7AB008E */ sh $t3, 0x8e($sp) -/* 016460 80015860 0C001EFE */ jal func_80007BF8 -/* 016464 80015864 AFAC0010 */ sw $t4, 0x10($sp) -/* 016468 80015868 8FA30074 */ lw $v1, 0x74($sp) -/* 01646C 8001586C 87AA008C */ lh $t2, 0x8c($sp) -/* 016470 80015870 1C40000E */ bgtz $v0, .L800158AC -/* 016474 80015874 87AB008E */ lh $t3, 0x8e($sp) -/* 016478 80015878 8FAD0038 */ lw $t5, 0x38($sp) -/* 01647C 8001587C 00111880 */ sll $v1, $s1, 2 -/* 016480 80015880 3C058016 */ lui $a1, %hi(D_80164680) # 0x8016 -/* 016484 80015884 3C068016 */ lui $a2, %hi(D_80164688) # 0x8016 -/* 016488 80015888 00A32821 */ addu $a1, $a1, $v1 -/* 01648C 8001588C 00CD3021 */ addu $a2, $a2, $t5 -/* 016490 80015890 84C64680 */ lh $a2, %lo(D_80164680)($a2) # 0x4680($a2) -/* 016494 80015894 8CA54688 */ lw $a1, %lo(D_80164688)($a1) # 0x4688($a1) -/* 016498 80015898 AFA3003C */ sw $v1, 0x3c($sp) -/* 01649C 8001589C 0C0068D2 */ jal func_8001A348 -/* 0164A0 800158A0 02202025 */ move $a0, $s1 -/* 0164A4 800158A4 10000042 */ b .L800159B0 -/* 0164A8 800158A8 8FA3003C */ lw $v1, 0x3c($sp) -.L800158AC: -/* 0164AC 800158AC 00037080 */ sll $t6, $v1, 2 -/* 0164B0 800158B0 3C018016 */ lui $at, %hi(D_80163068) -/* 0164B4 800158B4 002E0821 */ addu $at, $at, $t6 -/* 0164B8 800158B8 C4243068 */ lwc1 $f4, %lo(D_80163068)($at) -/* 0164BC 800158BC 3C01800F */ lui $at, %hi(D_800ED220) -/* 0164C0 800158C0 D426D220 */ ldc1 $f6, %lo(D_800ED220)($at) -/* 0164C4 800158C4 46002021 */ cvt.d.s $f0, $f4 -/* 0164C8 800158C8 3C018016 */ lui $at, %hi(D_80164688) -/* 0164CC 800158CC 4626003C */ c.lt.d $f0, $f6 -/* 0164D0 800158D0 00111880 */ sll $v1, $s1, 2 -/* 0164D4 800158D4 00230821 */ addu $at, $at, $v1 -/* 0164D8 800158D8 45000017 */ bc1f .L80015938 -/* 0164DC 800158DC 00000000 */ nop -/* 0164E0 800158E0 C4284688 */ lwc1 $f8, %lo(D_80164688)($at) -/* 0164E4 800158E4 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 -/* 0164E8 800158E8 44818800 */ mtc1 $at, $f17 -/* 0164EC 800158EC 44808000 */ mtc1 $zero, $f16 -/* 0164F0 800158F0 460042A1 */ cvt.d.s $f10, $f8 -/* 0164F4 800158F4 014B1023 */ subu $v0, $t2, $t3 -/* 0164F8 800158F8 4630503C */ c.lt.d $f10, $f16 -/* 0164FC 800158FC 00000000 */ nop -/* 016500 80015900 4500000D */ bc1f .L80015938 -/* 016504 80015904 00000000 */ nop -/* 016508 80015908 00420019 */ multu $v0, $v0 -/* 01650C 8001590C 02202025 */ move $a0, $s1 -/* 016510 80015910 3C053F80 */ lui $a1, 0x3f80 -/* 016514 80015914 24060003 */ li $a2, 3 -/* 016518 80015918 00007812 */ mflo $t7 -/* 01651C 8001591C 29E10005 */ slti $at, $t7, 5 -/* 016520 80015920 10200005 */ beqz $at, .L80015938 -/* 016524 80015924 00000000 */ nop -/* 016528 80015928 0C0068D2 */ jal func_8001A348 -/* 01652C 8001592C AFA3003C */ sw $v1, 0x3c($sp) -/* 016530 80015930 1000001F */ b .L800159B0 -/* 016534 80015934 8FA3003C */ lw $v1, 0x3c($sp) -.L80015938: -/* 016538 80015938 3C01800F */ lui $at, %hi(D_800ED228) -/* 01653C 8001593C D432D228 */ ldc1 $f18, %lo(D_800ED228)($at) -/* 016540 80015940 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 016544 80015944 00111880 */ sll $v1, $s1, 2 -/* 016548 80015948 4620903C */ c.lt.d $f18, $f0 -/* 01654C 8001594C 00000000 */ nop -/* 016550 80015950 45000017 */ bc1f .L800159B0 -/* 016554 80015954 00000000 */ nop -/* 016558 80015958 44812800 */ mtc1 $at, $f5 -/* 01655C 8001595C 3C018016 */ lui $at, %hi(D_80164688) -/* 016560 80015960 00230821 */ addu $at, $at, $v1 -/* 016564 80015964 C4264688 */ lwc1 $f6, %lo(D_80164688)($at) -/* 016568 80015968 44802000 */ mtc1 $zero, $f4 -/* 01656C 8001596C 014B1023 */ subu $v0, $t2, $t3 -/* 016570 80015970 46003221 */ cvt.d.s $f8, $f6 -/* 016574 80015974 4628203C */ c.lt.d $f4, $f8 -/* 016578 80015978 00000000 */ nop -/* 01657C 8001597C 4500000C */ bc1f .L800159B0 -/* 016580 80015980 00000000 */ nop -/* 016584 80015984 00420019 */ multu $v0, $v0 -/* 016588 80015988 02202025 */ move $a0, $s1 -/* 01658C 8001598C 3C05BF80 */ lui $a1, 0xbf80 -/* 016590 80015990 24060002 */ li $a2, 2 -/* 016594 80015994 0000C012 */ mflo $t8 -/* 016598 80015998 2B010005 */ slti $at, $t8, 5 -/* 01659C 8001599C 10200004 */ beqz $at, .L800159B0 -/* 0165A0 800159A0 00000000 */ nop -/* 0165A4 800159A4 0C0068D2 */ jal func_8001A348 -/* 0165A8 800159A8 AFA3003C */ sw $v1, 0x3c($sp) -/* 0165AC 800159AC 8FA3003C */ lw $v1, 0x3c($sp) -.L800159B0: -/* 0165B0 800159B0 3C018016 */ lui $at, %hi(D_801645F8) -/* 0165B4 800159B4 00230821 */ addu $at, $at, $v1 -/* 0165B8 800159B8 C42A45F8 */ lwc1 $f10, %lo(D_801645F8)($at) -/* 0165BC 800159BC 3C018016 */ lui $at, %hi(D_80164618) -/* 0165C0 800159C0 00230821 */ addu $at, $at, $v1 -/* 0165C4 800159C4 E60A0000 */ swc1 $f10, ($s0) -/* 0165C8 800159C8 C4304618 */ lwc1 $f16, %lo(D_80164618)($at) -/* 0165CC 800159CC 3C018016 */ lui $at, %hi(D_80164638) -/* 0165D0 800159D0 00230821 */ addu $at, $at, $v1 -/* 0165D4 800159D4 E6100004 */ swc1 $f16, 4($s0) -/* 0165D8 800159D8 C4324638 */ lwc1 $f18, %lo(D_80164638)($at) -/* 0165DC 800159DC 3C014018 */ li $at, 0x40180000 # 2.375000 -/* 0165E0 800159E0 44815800 */ mtc1 $at, $f11 -/* 0165E4 800159E4 E6120008 */ swc1 $f18, 8($s0) -/* 0165E8 800159E8 C6460014 */ lwc1 $f6, 0x14($s2) -/* 0165EC 800159EC 44805000 */ mtc1 $zero, $f10 -/* 0165F0 800159F0 02202025 */ move $a0, $s1 -/* 0165F4 800159F4 E606000C */ swc1 $f6, 0xc($s0) -/* 0165F8 800159F8 C6440018 */ lwc1 $f4, 0x18($s2) -/* 0165FC 800159FC 46002221 */ cvt.d.s $f8, $f4 -/* 016600 80015A00 462A4400 */ add.d $f16, $f8, $f10 -/* 016604 80015A04 462084A0 */ cvt.s.d $f18, $f16 -/* 016608 80015A08 E6120010 */ swc1 $f18, 0x10($s0) -/* 01660C 80015A0C C646001C */ lwc1 $f6, 0x1c($s2) -/* 016610 80015A10 E6060014 */ swc1 $f6, 0x14($s0) -/* 016614 80015A14 0C00534C */ jal func_80014D30 -/* 016618 80015A18 8FA50044 */ lw $a1, 0x44($sp) -/* 01661C 80015A1C C60A0010 */ lwc1 $f10, 0x10($s0) -/* 016620 80015A20 C6100004 */ lwc1 $f16, 4($s0) -/* 016624 80015A24 C604000C */ lwc1 $f4, 0xc($s0) -/* 016628 80015A28 C6080000 */ lwc1 $f8, ($s0) -/* 01662C 80015A2C 46105481 */ sub.s $f18, $f10, $f16 -/* 016630 80015A30 46082301 */ sub.s $f12, $f4, $f8 -/* 016634 80015A34 E7B20080 */ swc1 $f18, 0x80($sp) -/* 016638 80015A38 C6040008 */ lwc1 $f4, 8($s0) -/* 01663C 80015A3C C6060014 */ lwc1 $f6, 0x14($s0) -/* 016640 80015A40 E7AC0084 */ swc1 $f12, 0x84($sp) -/* 016644 80015A44 46043381 */ sub.s $f14, $f6, $f4 -/* 016648 80015A48 0C0ADE0C */ jal atan2s -/* 01664C 80015A4C E7AE007C */ swc1 $f14, 0x7c($sp) -/* 016650 80015A50 C7A00084 */ lwc1 $f0, 0x84($sp) -/* 016654 80015A54 C7AE007C */ lwc1 $f14, 0x7c($sp) -/* 016658 80015A58 A6020026 */ sh $v0, 0x26($s0) -/* 01665C 80015A5C 46000202 */ mul.s $f8, $f0, $f0 -/* 016660 80015A60 00000000 */ nop -/* 016664 80015A64 460E7282 */ mul.s $f10, $f14, $f14 -/* 016668 80015A68 0C033850 */ jal sqrtf -/* 01666C 80015A6C 460A4300 */ add.s $f12, $f8, $f10 -/* 016670 80015A70 46000306 */ mov.s $f12, $f0 -/* 016674 80015A74 0C0ADE0C */ jal atan2s -/* 016678 80015A78 C7AE0080 */ lwc1 $f14, 0x80($sp) -/* 01667C 80015A7C A6020024 */ sh $v0, 0x24($s0) -/* 016680 80015A80 A6000028 */ sh $zero, 0x28($s0) -/* 016684 80015A84 8FBF002C */ lw $ra, 0x2c($sp) -/* 016688 80015A88 8FB20028 */ lw $s2, 0x28($sp) -/* 01668C 80015A8C 8FB10024 */ lw $s1, 0x24($sp) -/* 016690 80015A90 8FB00020 */ lw $s0, 0x20($sp) -/* 016694 80015A94 03E00008 */ jr $ra -/* 016698 80015A98 27BD0090 */ addiu $sp, $sp, 0x90 diff --git a/asm/non_matchings/code_80005FD0/func_8001933C.s b/asm/non_matchings/code_80005FD0/func_8001933C.s deleted file mode 100644 index 0b007ff56..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001933C.s +++ /dev/null @@ -1,226 +0,0 @@ -.section .late_rodata - -glabel D_800ED318 -.double 0.8 - -glabel D_800ED320 -.double 0.2 - -.section .text - -glabel func_8001933C -/* 019F3C 8001933C 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 019F40 80019340 AFBF002C */ sw $ra, 0x2c($sp) -/* 019F44 80019344 AFB20028 */ sw $s2, 0x28($sp) -/* 019F48 80019348 AFB10024 */ sw $s1, 0x24($sp) -/* 019F4C 8001934C AFB00020 */ sw $s0, 0x20($sp) -/* 019F50 80019350 AFA5009C */ sw $a1, 0x9c($sp) -/* 019F54 80019354 AFA600A0 */ sw $a2, 0xa0($sp) -/* 019F58 80019358 848300AE */ lh $v1, 0xae($a0) -/* 019F5C 8001935C 3C058016 */ lui $a1, %hi(gPathIndexByPlayerId) # 0x8016 -/* 019F60 80019360 3C188016 */ lui $t8, %hi(gWaypointCountByPathIndex) # 0x8016 -/* 019F64 80019364 00035040 */ sll $t2, $v1, 1 -/* 019F68 80019368 00AA2821 */ addu $a1, $a1, $t2 -/* 019F6C 8001936C 94A545B0 */ lhu $a1, %lo(gPathIndexByPlayerId)($a1) # 0x45b0($a1) -/* 019F70 80019370 000370C0 */ sll $t6, $v1, 3 -/* 019F74 80019374 01C37023 */ subu $t6, $t6, $v1 -/* 019F78 80019378 00057840 */ sll $t7, $a1, 1 -/* 019F7C 8001937C 030FC021 */ addu $t8, $t8, $t7 -/* 019F80 80019380 971845C8 */ lhu $t8, %lo(gWaypointCountByPathIndex)($t8) # 0x45c8($t8) -/* 019F84 80019384 000E7100 */ sll $t6, $t6, 4 -/* 019F88 80019388 01C37023 */ subu $t6, $t6, $v1 -/* 019F8C 8001938C AFB80044 */ sw $t8, 0x44($sp) -/* 019F90 80019390 8C860008 */ lw $a2, 8($a0) -/* 019F94 80019394 C48E0004 */ lwc1 $f14, 4($a0) -/* 019F98 80019398 C48C0000 */ lwc1 $f12, ($a0) -/* 019F9C 8001939C 3C12800E */ lui $s2, %hi(gPlayerOne) -/* 019FA0 800193A0 000E7080 */ sll $t6, $t6, 2 -/* 019FA4 800193A4 3C198016 */ lui $t9, %hi(gNearestWaypointByCameraId) # $t9, 0x8016 -/* 019FA8 800193A8 8E52C4DC */ lw $s2, %lo(gPlayerOne)($s2) -/* 019FAC 800193AC 27394668 */ addiu $t9, %lo(gNearestWaypointByCameraId) # addiu $t9, $t9, 0x4668 -/* 019FB0 800193B0 00071040 */ sll $v0, $a3, 1 -/* 019FB4 800193B4 01C37023 */ subu $t6, $t6, $v1 -/* 019FB8 800193B8 00E08825 */ move $s1, $a3 -/* 019FBC 800193BC 000E70C0 */ sll $t6, $t6, 3 -/* 019FC0 800193C0 00594021 */ addu $t0, $v0, $t9 -/* 019FC4 800193C4 00808025 */ move $s0, $a0 -/* 019FC8 800193C8 85070000 */ lh $a3, ($t0) -/* 019FCC 800193CC AFA80034 */ sw $t0, 0x34($sp) -/* 019FD0 800193D0 AFA20038 */ sw $v0, 0x38($sp) -/* 019FD4 800193D4 AFAA003C */ sw $t2, 0x3c($sp) -/* 019FD8 800193D8 AFA00010 */ sw $zero, 0x10($sp) -/* 019FDC 800193DC AFA3007C */ sw $v1, 0x7c($sp) -/* 019FE0 800193E0 AFA50048 */ sw $a1, 0x48($sp) -/* 019FE4 800193E4 0C0034CF */ jal func_8000D33C -/* 019FE8 800193E8 024E9021 */ addu $s2, $s2, $t6 -/* 019FEC 800193EC 8FA80034 */ lw $t0, 0x34($sp) -/* 019FF0 800193F0 8FAA003C */ lw $t2, 0x3c($sp) -/* 019FF4 800193F4 3C098016 */ lui $t1, %hi(gNearestWaypointByPlayerId) # 0x8016 -/* 019FF8 800193F8 A5020000 */ sh $v0, ($t0) -/* 019FFC 800193FC 850B0000 */ lh $t3, ($t0) -/* 01A000 80019400 012A4821 */ addu $t1, $t1, $t2 -/* 01A004 80019404 85294438 */ lh $t1, %lo(gNearestWaypointByPlayerId)($t1) # 0x4438($t1) -/* 01A008 80019408 8FAC0044 */ lw $t4, 0x44($sp) -/* 01A00C 8001940C 24060032 */ li $a2, 50 -/* 01A010 80019410 24070014 */ li $a3, 20 -/* 01A014 80019414 3165FFFF */ andi $a1, $t3, 0xffff -/* 01A018 80019418 A7AB0096 */ sh $t3, 0x96($sp) -/* 01A01C 8001941C 3124FFFF */ andi $a0, $t1, 0xffff -/* 01A020 80019420 0C001EFE */ jal func_80007BF8 -/* 01A024 80019424 AFAC0010 */ sw $t4, 0x10($sp) -/* 01A028 80019428 1C40000E */ bgtz $v0, .L80019464 -/* 01A02C 8001942C 8FA3007C */ lw $v1, 0x7c($sp) -/* 01A030 80019430 8FAD0038 */ lw $t5, 0x38($sp) -/* 01A034 80019434 00111880 */ sll $v1, $s1, 2 -/* 01A038 80019438 3C058016 */ lui $a1, %hi(D_80164688) # 0x8016 -/* 01A03C 8001943C 3C068016 */ lui $a2, %hi(D_80164680) # 0x8016 -/* 01A040 80019440 00A32821 */ addu $a1, $a1, $v1 -/* 01A044 80019444 00CD3021 */ addu $a2, $a2, $t5 -/* 01A048 80019448 84C64680 */ lh $a2, %lo(D_80164680)($a2) # 0x4680($a2) -/* 01A04C 8001944C 8CA54688 */ lw $a1, %lo(D_80164688)($a1) # 0x4688($a1) -/* 01A050 80019450 AFA3003C */ sw $v1, 0x3c($sp) -/* 01A054 80019454 0C0068D2 */ jal func_8001A348 -/* 01A058 80019458 02202025 */ move $a0, $s1 -/* 01A05C 8001945C 10000031 */ b .L80019524 -/* 01A060 80019460 8FA3003C */ lw $v1, 0x3c($sp) -.L80019464: -/* 01A064 80019464 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 -/* 01A068 80019468 44811800 */ mtc1 $at, $f3 -/* 01A06C 8001946C 3C018016 */ lui $at, %hi(D_80163068) -/* 01A070 80019470 00037080 */ sll $t6, $v1, 2 -/* 01A074 80019474 002E0821 */ addu $at, $at, $t6 -/* 01A078 80019478 C4243068 */ lwc1 $f4, %lo(D_80163068)($at) -/* 01A07C 8001947C 44801000 */ mtc1 $zero, $f2 -/* 01A080 80019480 3C018016 */ lui $at, %hi(D_80164688) -/* 01A084 80019484 46002021 */ cvt.d.s $f0, $f4 -/* 01A088 80019488 00111880 */ sll $v1, $s1, 2 -/* 01A08C 8001948C 4622003C */ c.lt.d $f0, $f2 -/* 01A090 80019490 00230821 */ addu $at, $at, $v1 -/* 01A094 80019494 4502000F */ bc1fl .L800194D4 -/* 01A098 80019498 3C013FE0 */ lui $at, 0x3fe0 # 1.75 -/* 01A09C 8001949C C4264688 */ lwc1 $f6, %lo(D_80164688)($at) -/* 01A0A0 800194A0 02202025 */ move $a0, $s1 -/* 01A0A4 800194A4 3C053F80 */ li $a1, 0x3f800000 # 1.0 -/* 01A0A8 800194A8 46003221 */ cvt.d.s $f8, $f6 -/* 01A0AC 800194AC 2406000D */ li $a2, 13 -/* 01A0B0 800194B0 4622403C */ c.lt.d $f8, $f2 -/* 01A0B4 800194B4 00000000 */ nop -/* 01A0B8 800194B8 45020006 */ bc1fl .L800194D4 -/* 01A0BC 800194BC 3C013FE0 */ lui $at, 0x3fe0 # 1.75 -/* 01A0C0 800194C0 0C0068D2 */ jal func_8001A348 -/* 01A0C4 800194C4 AFA3003C */ sw $v1, 0x3c($sp) -/* 01A0C8 800194C8 10000016 */ b .L80019524 -/* 01A0CC 800194CC 8FA3003C */ lw $v1, 0x3c($sp) -/* 01A0D0 800194D0 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -.L800194D4: -/* 01A0D4 800194D4 44811800 */ mtc1 $at, $f3 -/* 01A0D8 800194D8 44801000 */ mtc1 $zero, $f2 -/* 01A0DC 800194DC 3C018016 */ lui $at, %hi(D_80164688) -/* 01A0E0 800194E0 00111880 */ sll $v1, $s1, 2 -/* 01A0E4 800194E4 4620103C */ c.lt.d $f2, $f0 -/* 01A0E8 800194E8 00230821 */ addu $at, $at, $v1 -/* 01A0EC 800194EC 4500000D */ bc1f .L80019524 -/* 01A0F0 800194F0 00000000 */ nop -/* 01A0F4 800194F4 C42A4688 */ lwc1 $f10, %lo(D_80164688)($at) -/* 01A0F8 800194F8 02202025 */ move $a0, $s1 -/* 01A0FC 800194FC 3C05BF80 */ lui $a1, 0xbf80 -/* 01A100 80019500 46005421 */ cvt.d.s $f16, $f10 -/* 01A104 80019504 2406000C */ li $a2, 12 -/* 01A108 80019508 4630103C */ c.lt.d $f2, $f16 -/* 01A10C 8001950C 00000000 */ nop -/* 01A110 80019510 45000004 */ bc1f .L80019524 -/* 01A114 80019514 00000000 */ nop -/* 01A118 80019518 0C0068D2 */ jal func_8001A348 -/* 01A11C 8001951C AFA3003C */ sw $v1, 0x3c($sp) -/* 01A120 80019520 8FA3003C */ lw $v1, 0x3c($sp) -.L80019524: -/* 01A124 80019524 3C01800F */ lui $at, %hi(D_800ED318) -/* 01A128 80019528 D420D318 */ ldc1 $f0, %lo(D_800ED318)($at) -/* 01A12C 8001952C 3C01800F */ lui $at, %hi(D_800ED320) -/* 01A130 80019530 D422D320 */ ldc1 $f2, %lo(D_800ED320)($at) -/* 01A134 80019534 3C018016 */ lui $at, %hi(D_801645F8) -/* 01A138 80019538 00230821 */ addu $at, $at, $v1 -/* 01A13C 8001953C C43245F8 */ lwc1 $f18, %lo(D_801645F8)($at) -/* 01A140 80019540 8FA50048 */ lw $a1, 0x48($sp) -/* 01A144 80019544 3C018016 */ lui $at, %hi(D_80164618) -/* 01A148 80019548 00230821 */ addu $at, $at, $v1 -/* 01A14C 8001954C E6120000 */ swc1 $f18, ($s0) -/* 01A150 80019550 C4244618 */ lwc1 $f4, %lo(D_80164618)($at) -/* 01A154 80019554 3C018016 */ lui $at, %hi(D_80164638) -/* 01A158 80019558 00230821 */ addu $at, $at, $v1 -/* 01A15C 8001955C E6040004 */ swc1 $f4, 4($s0) -/* 01A160 80019560 C4264638 */ lwc1 $f6, %lo(D_80164638)($at) -/* 01A164 80019564 3C188016 */ lui $t8, %hi(D_80164550) -/* 01A168 80019568 00057880 */ sll $t7, $a1, 2 -/* 01A16C 8001956C E6060008 */ swc1 $f6, 8($s0) -/* 01A170 80019570 87B90096 */ lh $t9, 0x96($sp) -/* 01A174 80019574 030FC021 */ addu $t8, $t8, $t7 -/* 01A178 80019578 8F184550 */ lw $t8, %lo(D_80164550)($t8) -/* 01A17C 8001957C 001960C0 */ sll $t4, $t9, 3 -/* 01A180 80019580 C6480014 */ lwc1 $f8, 0x14($s2) -/* 01A184 80019584 030C1021 */ addu $v0, $t8, $t4 -/* 01A188 80019588 844D0000 */ lh $t5, ($v0) -/* 01A18C 8001958C 460042A1 */ cvt.d.s $f10, $f8 -/* 01A190 80019590 02202025 */ move $a0, $s1 -/* 01A194 80019594 448D9000 */ mtc1 $t5, $f18 -/* 01A198 80019598 46205402 */ mul.d $f16, $f10, $f0 -/* 01A19C 8001959C 46809121 */ cvt.d.w $f4, $f18 -/* 01A1A0 800195A0 46241182 */ mul.d $f6, $f2, $f4 -/* 01A1A4 800195A4 46268200 */ add.d $f8, $f16, $f6 -/* 01A1A8 800195A8 462042A0 */ cvt.s.d $f10, $f8 -/* 01A1AC 800195AC E60A000C */ swc1 $f10, 0xc($s0) -/* 01A1B0 800195B0 844E0002 */ lh $t6, 2($v0) -/* 01A1B4 800195B4 C6520018 */ lwc1 $f18, 0x18($s2) -/* 01A1B8 800195B8 448E3000 */ mtc1 $t6, $f6 -/* 01A1BC 800195BC 46009121 */ cvt.d.s $f4, $f18 -/* 01A1C0 800195C0 46803221 */ cvt.d.w $f8, $f6 -/* 01A1C4 800195C4 46202402 */ mul.d $f16, $f4, $f0 -/* 01A1C8 800195C8 00000000 */ nop -/* 01A1CC 800195CC 46281282 */ mul.d $f10, $f2, $f8 -/* 01A1D0 800195D0 462A8480 */ add.d $f18, $f16, $f10 -/* 01A1D4 800195D4 46209120 */ cvt.s.d $f4, $f18 -/* 01A1D8 800195D8 E6040010 */ swc1 $f4, 0x10($s0) -/* 01A1DC 800195DC 844F0004 */ lh $t7, 4($v0) -/* 01A1E0 800195E0 C646001C */ lwc1 $f6, 0x1c($s2) -/* 01A1E4 800195E4 448F5000 */ mtc1 $t7, $f10 -/* 01A1E8 800195E8 46003221 */ cvt.d.s $f8, $f6 -/* 01A1EC 800195EC 468054A1 */ cvt.d.w $f18, $f10 -/* 01A1F0 800195F0 46204402 */ mul.d $f16, $f8, $f0 -/* 01A1F4 800195F4 00000000 */ nop -/* 01A1F8 800195F8 46321102 */ mul.d $f4, $f2, $f18 -/* 01A1FC 800195FC 46248180 */ add.d $f6, $f16, $f4 -/* 01A200 80019600 46203220 */ cvt.s.d $f8, $f6 -/* 01A204 80019604 0C00534C */ jal func_80014D30 -/* 01A208 80019608 E6080014 */ swc1 $f8, 0x14($s0) -/* 01A20C 8001960C C6100010 */ lwc1 $f16, 0x10($s0) -/* 01A210 80019610 C6040004 */ lwc1 $f4, 4($s0) -/* 01A214 80019614 C60A000C */ lwc1 $f10, 0xc($s0) -/* 01A218 80019618 C6120000 */ lwc1 $f18, ($s0) -/* 01A21C 8001961C 46048181 */ sub.s $f6, $f16, $f4 -/* 01A220 80019620 46125301 */ sub.s $f12, $f10, $f18 -/* 01A224 80019624 E7A60088 */ swc1 $f6, 0x88($sp) -/* 01A228 80019628 C60A0008 */ lwc1 $f10, 8($s0) -/* 01A22C 8001962C C6080014 */ lwc1 $f8, 0x14($s0) -/* 01A230 80019630 E7AC008C */ swc1 $f12, 0x8c($sp) -/* 01A234 80019634 460A4381 */ sub.s $f14, $f8, $f10 -/* 01A238 80019638 0C0ADE0C */ jal atan2s -/* 01A23C 8001963C E7AE0084 */ swc1 $f14, 0x84($sp) -/* 01A240 80019640 C7A0008C */ lwc1 $f0, 0x8c($sp) -/* 01A244 80019644 C7AE0084 */ lwc1 $f14, 0x84($sp) -/* 01A248 80019648 A6020026 */ sh $v0, 0x26($s0) -/* 01A24C 8001964C 46000482 */ mul.s $f18, $f0, $f0 -/* 01A250 80019650 00000000 */ nop -/* 01A254 80019654 460E7402 */ mul.s $f16, $f14, $f14 -/* 01A258 80019658 0C033850 */ jal sqrtf -/* 01A25C 8001965C 46109300 */ add.s $f12, $f18, $f16 -/* 01A260 80019660 46000306 */ mov.s $f12, $f0 -/* 01A264 80019664 0C0ADE0C */ jal atan2s -/* 01A268 80019668 C7AE0088 */ lwc1 $f14, 0x88($sp) -/* 01A26C 8001966C A6020024 */ sh $v0, 0x24($s0) -/* 01A270 80019670 A6000028 */ sh $zero, 0x28($s0) -/* 01A274 80019674 8FBF002C */ lw $ra, 0x2c($sp) -/* 01A278 80019678 8FB20028 */ lw $s2, 0x28($sp) -/* 01A27C 8001967C 8FB10024 */ lw $s1, 0x24($sp) -/* 01A280 80019680 8FB00020 */ lw $s0, 0x20($sp) -/* 01A284 80019684 03E00008 */ jr $ra -/* 01A288 80019688 27BD0098 */ addiu $sp, $sp, 0x98 diff --git a/asm/non_matchings/code_80005FD0/func_80019760.s b/asm/non_matchings/code_80005FD0/func_80019760.s deleted file mode 100644 index 26095203d..000000000 --- a/asm/non_matchings/code_80005FD0/func_80019760.s +++ /dev/null @@ -1,77 +0,0 @@ -glabel func_80019760 -/* 01A360 80019760 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 01A364 80019764 00071080 */ sll $v0, $a3, 2 -/* 01A368 80019768 3C018016 */ lui $at, %hi(D_801645F8) -/* 01A36C 8001976C 00220821 */ addu $at, $at, $v0 -/* 01A370 80019770 C42445F8 */ lwc1 $f4, %lo(D_801645F8)($at) -/* 01A374 80019774 AFBF001C */ sw $ra, 0x1c($sp) -/* 01A378 80019778 AFB00018 */ sw $s0, 0x18($sp) -/* 01A37C 8001977C AFA5003C */ sw $a1, 0x3c($sp) -/* 01A380 80019780 AFA60040 */ sw $a2, 0x40($sp) -/* 01A384 80019784 3C018016 */ lui $at, %hi(D_80164618) -/* 01A388 80019788 00220821 */ addu $at, $at, $v0 -/* 01A38C 8001978C E4840000 */ swc1 $f4, ($a0) -/* 01A390 80019790 C4264618 */ lwc1 $f6, %lo(D_80164618)($at) -/* 01A394 80019794 3C018016 */ lui $at, %hi(D_80164638) -/* 01A398 80019798 00220821 */ addu $at, $at, $v0 -/* 01A39C 8001979C E4860004 */ swc1 $f6, 4($a0) -/* 01A3A0 800197A0 C4284638 */ lwc1 $f8, %lo(D_80164638)($at) -/* 01A3A4 800197A4 00077040 */ sll $t6, $a3, 1 -/* 01A3A8 800197A8 3C0F8016 */ lui $t7, %hi(gNearestWaypointByCameraId) # 0x8016 -/* 01A3AC 800197AC 01EE7821 */ addu $t7, $t7, $t6 -/* 01A3B0 800197B0 E4880008 */ swc1 $f8, 8($a0) -/* 01A3B4 800197B4 85EF4668 */ lh $t7, %lo(gNearestWaypointByCameraId)($t7) # 0x4668($t7) -/* 01A3B8 800197B8 3C198016 */ lui $t9, %hi(D_80164550) # $t9, 0x8016 -/* 01A3BC 800197BC 8F394550 */ lw $t9, %lo(D_80164550)($t9) -/* 01A3C0 800197C0 000FC0C0 */ sll $t8, $t7, 3 -/* 01A3C4 800197C4 00808025 */ move $s0, $a0 -/* 01A3C8 800197C8 03191821 */ addu $v1, $t8, $t9 -/* 01A3CC 800197CC 84680000 */ lh $t0, ($v1) -/* 01A3D0 800197D0 00002825 */ move $a1, $zero -/* 01A3D4 800197D4 44885000 */ mtc1 $t0, $f10 -/* 01A3D8 800197D8 00000000 */ nop -/* 01A3DC 800197DC 46805420 */ cvt.s.w $f16, $f10 -/* 01A3E0 800197E0 E490000C */ swc1 $f16, 0xc($a0) -/* 01A3E4 800197E4 84690002 */ lh $t1, 2($v1) -/* 01A3E8 800197E8 44899000 */ mtc1 $t1, $f18 -/* 01A3EC 800197EC 00000000 */ nop -/* 01A3F0 800197F0 46809120 */ cvt.s.w $f4, $f18 -/* 01A3F4 800197F4 E4840010 */ swc1 $f4, 0x10($a0) -/* 01A3F8 800197F8 846A0004 */ lh $t2, 4($v1) -/* 01A3FC 800197FC 448A3000 */ mtc1 $t2, $f6 -/* 01A400 80019800 00000000 */ nop -/* 01A404 80019804 46803220 */ cvt.s.w $f8, $f6 -/* 01A408 80019808 E4880014 */ swc1 $f8, 0x14($a0) -/* 01A40C 8001980C 0C00534C */ jal func_80014D30 -/* 01A410 80019810 00E02025 */ move $a0, $a3 -/* 01A414 80019814 C6120010 */ lwc1 $f18, 0x10($s0) -/* 01A418 80019818 C6040004 */ lwc1 $f4, 4($s0) -/* 01A41C 8001981C C60A000C */ lwc1 $f10, 0xc($s0) -/* 01A420 80019820 C6100000 */ lwc1 $f16, ($s0) -/* 01A424 80019824 46049181 */ sub.s $f6, $f18, $f4 -/* 01A428 80019828 46105301 */ sub.s $f12, $f10, $f16 -/* 01A42C 8001982C E7A60028 */ swc1 $f6, 0x28($sp) -/* 01A430 80019830 C60A0008 */ lwc1 $f10, 8($s0) -/* 01A434 80019834 C6080014 */ lwc1 $f8, 0x14($s0) -/* 01A438 80019838 E7AC002C */ swc1 $f12, 0x2c($sp) -/* 01A43C 8001983C 460A4381 */ sub.s $f14, $f8, $f10 -/* 01A440 80019840 0C0ADE0C */ jal atan2s -/* 01A444 80019844 E7AE0024 */ swc1 $f14, 0x24($sp) -/* 01A448 80019848 C7A0002C */ lwc1 $f0, 0x2c($sp) -/* 01A44C 8001984C C7AE0024 */ lwc1 $f14, 0x24($sp) -/* 01A450 80019850 A6020026 */ sh $v0, 0x26($s0) -/* 01A454 80019854 46000402 */ mul.s $f16, $f0, $f0 -/* 01A458 80019858 00000000 */ nop -/* 01A45C 8001985C 460E7482 */ mul.s $f18, $f14, $f14 -/* 01A460 80019860 0C033850 */ jal sqrtf -/* 01A464 80019864 46128300 */ add.s $f12, $f16, $f18 -/* 01A468 80019868 46000306 */ mov.s $f12, $f0 -/* 01A46C 8001986C 0C0ADE0C */ jal atan2s -/* 01A470 80019870 C7AE0028 */ lwc1 $f14, 0x28($sp) -/* 01A474 80019874 A6020024 */ sh $v0, 0x24($s0) -/* 01A478 80019878 A6000028 */ sh $zero, 0x28($s0) -/* 01A47C 8001987C 8FBF001C */ lw $ra, 0x1c($sp) -/* 01A480 80019880 8FB00018 */ lw $s0, 0x18($sp) -/* 01A484 80019884 27BD0038 */ addiu $sp, $sp, 0x38 -/* 01A488 80019888 03E00008 */ jr $ra -/* 01A48C 8001988C 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_80019B50.s b/asm/non_matchings/code_80005FD0/func_80019B50.s deleted file mode 100644 index b065ab0cf..000000000 --- a/asm/non_matchings/code_80005FD0/func_80019B50.s +++ /dev/null @@ -1,71 +0,0 @@ -glabel func_80019B50 -/* 01A750 80019B50 3C188016 */ lui $t8, %hi(D_801646C0) # $t8, 0x8016 -/* 01A754 80019B54 271846C0 */ addiu $t8, %lo(D_801646C0) # addiu $t8, $t8, 0x46c0 -/* 01A758 80019B58 00047840 */ sll $t7, $a0, 1 -/* 01A75C 80019B5C 01F81821 */ addu $v1, $t7, $t8 -/* 01A760 80019B60 94620000 */ lhu $v0, ($v1) -/* 01A764 80019B64 30AEFFFF */ andi $t6, $a1, 0xffff -/* 01A768 80019B68 AFA50004 */ sw $a1, 4($sp) -/* 01A76C 80019B6C 004E082A */ slt $at, $v0, $t6 -/* 01A770 80019B70 01C02825 */ move $a1, $t6 -/* 01A774 80019B74 01C03825 */ move $a3, $t6 -/* 01A778 80019B78 10200019 */ beqz $at, .L80019BE0 -/* 01A77C 80019B7C 00403025 */ move $a2, $v0 -/* 01A780 80019B80 34088000 */ li $t0, 32768 -/* 01A784 80019B84 01C62023 */ subu $a0, $t6, $a2 -/* 01A788 80019B88 0088082A */ slt $at, $a0, $t0 -/* 01A78C 80019B8C 5020000E */ beql $at, $zero, .L80019BC8 -/* 01A790 80019B90 0088082A */ slt $at, $a0, $t0 -/* 01A794 80019B94 24C2005A */ addiu $v0, $a2, 0x5a -/* 01A798 80019B98 3046FFFF */ andi $a2, $v0, 0xffff -/* 01A79C 80019B9C 01C6082A */ slt $at, $t6, $a2 -/* 01A7A0 80019BA0 10200003 */ beqz $at, .L80019BB0 -/* 01A7A4 80019BA4 00C01025 */ move $v0, $a2 -/* 01A7A8 80019BA8 31C2FFFF */ andi $v0, $t6, 0xffff -/* 01A7AC 80019BAC 00403025 */ move $a2, $v0 -.L80019BB0: -/* 01A7B0 80019BB0 28C1005A */ slti $at, $a2, 0x5a -/* 01A7B4 80019BB4 10200024 */ beqz $at, .L80019C48 -/* 01A7B8 80019BB8 00000000 */ nop -/* 01A7BC 80019BBC 10000022 */ b .L80019C48 -/* 01A7C0 80019BC0 00001025 */ move $v0, $zero -/* 01A7C4 80019BC4 0088082A */ slt $at, $a0, $t0 -.L80019BC8: -/* 01A7C8 80019BC8 1420001F */ bnez $at, .L80019C48 -/* 01A7CC 80019BCC 00000000 */ nop -/* 01A7D0 80019BD0 24C2FFA6 */ addiu $v0, $a2, -0x5a -/* 01A7D4 80019BD4 3049FFFF */ andi $t1, $v0, 0xffff -/* 01A7D8 80019BD8 1000001B */ b .L80019C48 -/* 01A7DC 80019BDC 01201025 */ move $v0, $t1 -.L80019BE0: -/* 01A7E0 80019BE0 00E6082A */ slt $at, $a3, $a2 -/* 01A7E4 80019BE4 10200018 */ beqz $at, .L80019C48 -/* 01A7E8 80019BE8 34088000 */ li $t0, 32768 -/* 01A7EC 80019BEC 00C72023 */ subu $a0, $a2, $a3 -/* 01A7F0 80019BF0 0088082A */ slt $at, $a0, $t0 -/* 01A7F4 80019BF4 5020000F */ beql $at, $zero, .L80019C34 -/* 01A7F8 80019BF8 0088082A */ slt $at, $a0, $t0 -/* 01A7FC 80019BFC 24C2FFA6 */ addiu $v0, $a2, -0x5a -/* 01A800 80019C00 3046FFFF */ andi $a2, $v0, 0xffff -/* 01A804 80019C04 00C7082A */ slt $at, $a2, $a3 -/* 01A808 80019C08 10200003 */ beqz $at, .L80019C18 -/* 01A80C 80019C0C 00C01025 */ move $v0, $a2 -/* 01A810 80019C10 30A2FFFF */ andi $v0, $a1, 0xffff -/* 01A814 80019C14 00403025 */ move $a2, $v0 -.L80019C18: -/* 01A818 80019C18 3401FFA6 */ li $at, 65446 -/* 01A81C 80019C1C 00C1082A */ slt $at, $a2, $at -/* 01A820 80019C20 14200009 */ bnez $at, .L80019C48 -/* 01A824 80019C24 00000000 */ nop -/* 01A828 80019C28 10000007 */ b .L80019C48 -/* 01A82C 80019C2C 00001025 */ move $v0, $zero -/* 01A830 80019C30 0088082A */ slt $at, $a0, $t0 -.L80019C34: -/* 01A834 80019C34 14200004 */ bnez $at, .L80019C48 -/* 01A838 80019C38 00000000 */ nop -/* 01A83C 80019C3C 24C2005A */ addiu $v0, $a2, 0x5a -/* 01A840 80019C40 304BFFFF */ andi $t3, $v0, 0xffff -/* 01A844 80019C44 01601025 */ move $v0, $t3 -.L80019C48: -/* 01A848 80019C48 03E00008 */ jr $ra -/* 01A84C 80019C4C A4620000 */ sh $v0, ($v1) diff --git a/asm/non_matchings/code_80005FD0/func_80019C50.s b/asm/non_matchings/code_80005FD0/func_80019C50.s deleted file mode 100644 index 999dfb51f..000000000 --- a/asm/non_matchings/code_80005FD0/func_80019C50.s +++ /dev/null @@ -1,60 +0,0 @@ -glabel func_80019C50 -/* 01A850 80019C50 3C0E8016 */ lui $t6, %hi(D_80164678) # $t6, 0x8016 -/* 01A854 80019C54 25CE4678 */ addiu $t6, %lo(D_80164678) # addiu $t6, $t6, 0x4678 -/* 01A858 80019C58 00043840 */ sll $a3, $a0, 1 -/* 01A85C 80019C5C 00EE1021 */ addu $v0, $a3, $t6 -/* 01A860 80019C60 84430000 */ lh $v1, ($v0) -/* 01A864 80019C64 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 01A868 80019C68 AFBF0014 */ sw $ra, 0x14($sp) -/* 01A86C 80019C6C 10600006 */ beqz $v1, .L80019C88 -/* 01A870 80019C70 00803025 */ move $a2, $a0 -/* 01A874 80019C74 24080001 */ li $t0, 1 -/* 01A878 80019C78 10680017 */ beq $v1, $t0, .L80019CD8 -/* 01A87C 80019C7C 00064880 */ sll $t1, $a2, 2 -/* 01A880 80019C80 10000027 */ b .L80019D20 -/* 01A884 80019C84 8FBF0014 */ lw $ra, 0x14($sp) -.L80019C88: -/* 01A888 80019C88 00067880 */ sll $t7, $a2, 2 -/* 01A88C 80019C8C 3C188016 */ lui $t8, %hi(D_80164608) # 0x8016 -/* 01A890 80019C90 030FC021 */ addu $t8, $t8, $t7 -/* 01A894 80019C94 8F184608 */ lw $t8, %lo(D_80164608)($t8) # 0x4608($t8) -/* 01A898 80019C98 24080001 */ li $t0, 1 -/* 01A89C 80019C9C 30C400FF */ andi $a0, $a2, 0xff -/* 01A8A0 80019CA0 1518001E */ bne $t0, $t8, .L80019D1C -/* 01A8A4 80019CA4 3C051900 */ lui $a1, (0x1900904F >> 16) # lui $a1, 0x1900 -/* 01A8A8 80019CA8 A4480000 */ sh $t0, ($v0) -/* 01A8AC 80019CAC 34A5904F */ ori $a1, (0x1900904F & 0xFFFF) # ori $a1, $a1, 0x904f -/* 01A8B0 80019CB0 AFA2001C */ sw $v0, 0x1c($sp) -/* 01A8B4 80019CB4 0C032418 */ jal func_800C9060 -/* 01A8B8 80019CB8 AFA70020 */ sw $a3, 0x20($sp) -/* 01A8BC 80019CBC 8FA2001C */ lw $v0, 0x1c($sp) -/* 01A8C0 80019CC0 8FA70020 */ lw $a3, 0x20($sp) -/* 01A8C4 80019CC4 3C018016 */ lui $at, %hi(D_80164670) # 0x8016 -/* 01A8C8 80019CC8 84590000 */ lh $t9, ($v0) -/* 01A8CC 80019CCC 00270821 */ addu $at, $at, $a3 -/* 01A8D0 80019CD0 10000012 */ b .L80019D1C -/* 01A8D4 80019CD4 A4394670 */ sh $t9, %lo(D_80164670)($at) # 0x4670($at) -.L80019CD8: -/* 01A8D8 80019CD8 3C0A8016 */ lui $t2, %hi(D_80164608) # 0x8016 -/* 01A8DC 80019CDC 01495021 */ addu $t2, $t2, $t1 -/* 01A8E0 80019CE0 8D4A4608 */ lw $t2, %lo(D_80164608)($t2) # 0x4608($t2) -/* 01A8E4 80019CE4 3C051900 */ lui $a1, (0x19009050 >> 16) # lui $a1, 0x1900 -/* 01A8E8 80019CE8 34A59050 */ ori $a1, (0x19009050 & 0xFFFF) # ori $a1, $a1, 0x9050 -/* 01A8EC 80019CEC 150A000B */ bne $t0, $t2, .L80019D1C -/* 01A8F0 80019CF0 30C400FF */ andi $a0, $a2, 0xff -/* 01A8F4 80019CF4 A4400000 */ sh $zero, ($v0) -/* 01A8F8 80019CF8 AFA2001C */ sw $v0, 0x1c($sp) -/* 01A8FC 80019CFC 0C032418 */ jal func_800C9060 -/* 01A900 80019D00 AFA70020 */ sw $a3, 0x20($sp) -/* 01A904 80019D04 8FA2001C */ lw $v0, 0x1c($sp) -/* 01A908 80019D08 8FA70020 */ lw $a3, 0x20($sp) -/* 01A90C 80019D0C 3C018016 */ lui $at, %hi(D_80164670) # 0x8016 -/* 01A910 80019D10 844B0000 */ lh $t3, ($v0) -/* 01A914 80019D14 00270821 */ addu $at, $at, $a3 -/* 01A918 80019D18 A42B4670 */ sh $t3, %lo(D_80164670)($at) # 0x4670($at) -.L80019D1C: -/* 01A91C 80019D1C 8FBF0014 */ lw $ra, 0x14($sp) -.L80019D20: -/* 01A920 80019D20 27BD0028 */ addiu $sp, $sp, 0x28 -/* 01A924 80019D24 03E00008 */ jr $ra -/* 01A928 80019D28 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8001A124.s b/asm/non_matchings/code_80005FD0/func_8001A124.s deleted file mode 100644 index 3a6718898..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001A124.s +++ /dev/null @@ -1,72 +0,0 @@ -glabel func_8001A124 -/* 01AD24 8001A124 00047080 */ sll $t6, $a0, 2 -/* 01AD28 8001A128 3C028016 */ lui $v0, %hi(gGPCurrentRaceRankByPlayerId) -/* 01AD2C 8001A12C 004E1021 */ addu $v0, $v0, $t6 -/* 01AD30 8001A130 8C4243B8 */ lw $v0, %lo(gGPCurrentRaceRankByPlayerId)($v0) -/* 01AD34 8001A134 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 01AD38 8001A138 AFBF0014 */ sw $ra, 0x14($sp) -/* 01AD3C 8001A13C 1040000B */ beqz $v0, .L8001A16C -/* 01AD40 8001A140 24040064 */ li $a0, 100 -/* 01AD44 8001A144 24010001 */ li $at, 1 -/* 01AD48 8001A148 1041001C */ beq $v0, $at, .L8001A1BC -/* 01AD4C 8001A14C 24090008 */ li $t1, 8 -/* 01AD50 8001A150 24010002 */ li $at, 2 -/* 01AD54 8001A154 10410019 */ beq $v0, $at, .L8001A1BC -/* 01AD58 8001A158 24010003 */ li $at, 3 -/* 01AD5C 8001A15C 10410017 */ beq $v0, $at, .L8001A1BC -/* 01AD60 8001A160 24040064 */ li $a0, 100 -/* 01AD64 8001A164 1000001A */ b .L8001A1D0 -/* 01AD68 8001A168 00000000 */ nop -.L8001A16C: -/* 01AD6C 8001A16C 0C0ADF8D */ jal random_int -/* 01AD70 8001A170 AFA5001C */ sw $a1, 0x1c($sp) -/* 01AD74 8001A174 28410032 */ slti $at, $v0, 0x32 -/* 01AD78 8001A178 10200007 */ beqz $at, .L8001A198 -/* 01AD7C 8001A17C 8FA5001C */ lw $a1, 0x1c($sp) -/* 01AD80 8001A180 0005C040 */ sll $t8, $a1, 1 -/* 01AD84 8001A184 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01AD88 8001A188 00380821 */ addu $at, $at, $t8 -/* 01AD8C 8001A18C 240F000C */ li $t7, 12 -/* 01AD90 8001A190 10000006 */ b .L8001A1AC -/* 01AD94 8001A194 A42F4680 */ sh $t7, %lo(D_80164680)($at) # 0x4680($at) -.L8001A198: -/* 01AD98 8001A198 00054040 */ sll $t0, $a1, 1 -/* 01AD9C 8001A19C 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01ADA0 8001A1A0 00280821 */ addu $at, $at, $t0 -/* 01ADA4 8001A1A4 2419000D */ li $t9, 13 -/* 01ADA8 8001A1A8 A4394680 */ sh $t9, %lo(D_80164680)($at) # 0x4680($at) -.L8001A1AC: -/* 01ADAC 8001A1AC 0C03289C */ jal func_800CA270 -/* 01ADB0 8001A1B0 00000000 */ nop -/* 01ADB4 8001A1B4 10000017 */ b .L8001A214 -/* 01ADB8 8001A1B8 8FBF0014 */ lw $ra, 0x14($sp) -.L8001A1BC: -/* 01ADBC 8001A1BC 00055040 */ sll $t2, $a1, 1 -/* 01ADC0 8001A1C0 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01ADC4 8001A1C4 002A0821 */ addu $at, $at, $t2 -/* 01ADC8 8001A1C8 10000011 */ b .L8001A210 -/* 01ADCC 8001A1CC A4294680 */ sh $t1, %lo(D_80164680)($at) # 0x4680($at) -.L8001A1D0: -/* 01ADD0 8001A1D0 0C0ADF8D */ jal random_int -/* 01ADD4 8001A1D4 AFA5001C */ sw $a1, 0x1c($sp) -/* 01ADD8 8001A1D8 28410032 */ slti $at, $v0, 0x32 -/* 01ADDC 8001A1DC 10200007 */ beqz $at, .L8001A1FC -/* 01ADE0 8001A1E0 8FA5001C */ lw $a1, 0x1c($sp) -/* 01ADE4 8001A1E4 00056040 */ sll $t4, $a1, 1 -/* 01ADE8 8001A1E8 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01ADEC 8001A1EC 002C0821 */ addu $at, $at, $t4 -/* 01ADF0 8001A1F0 240B000F */ li $t3, 15 -/* 01ADF4 8001A1F4 10000006 */ b .L8001A210 -/* 01ADF8 8001A1F8 A42B4680 */ sh $t3, %lo(D_80164680)($at) # 0x4680($at) -.L8001A1FC: -/* 01ADFC 8001A1FC 00057040 */ sll $t6, $a1, 1 -/* 01AE00 8001A200 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01AE04 8001A204 002E0821 */ addu $at, $at, $t6 -/* 01AE08 8001A208 240D0010 */ li $t5, 16 -/* 01AE0C 8001A20C A42D4680 */ sh $t5, %lo(D_80164680)($at) # 0x4680($at) -.L8001A210: -/* 01AE10 8001A210 8FBF0014 */ lw $ra, 0x14($sp) -.L8001A214: -/* 01AE14 8001A214 27BD0018 */ addiu $sp, $sp, 0x18 -/* 01AE18 8001A218 03E00008 */ jr $ra -/* 01AE1C 8001A21C 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8001A348.s b/asm/non_matchings/code_80005FD0/func_8001A348.s deleted file mode 100644 index e9f135e55..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001A348.s +++ /dev/null @@ -1,37 +0,0 @@ -glabel func_8001A348 -/* 01AF48 8001A348 00047080 */ sll $t6, $a0, 2 -/* 01AF4C 8001A34C 01C47023 */ subu $t6, $t6, $a0 -/* 01AF50 8001A350 000E70C0 */ sll $t6, $t6, 3 -/* 01AF54 8001A354 01C47023 */ subu $t6, $t6, $a0 -/* 01AF58 8001A358 000E70C0 */ sll $t6, $t6, 3 -/* 01AF5C 8001A35C 3C0F8016 */ lui $t7, %hi(cameras+0xAE) # 0x8016 -/* 01AF60 8001A360 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 01AF64 8001A364 00803825 */ move $a3, $a0 -/* 01AF68 8001A368 01EE7821 */ addu $t7, $t7, $t6 -/* 01AF6C 8001A36C 0004C080 */ sll $t8, $a0, 2 -/* 01AF70 8001A370 00041840 */ sll $v1, $a0, 1 -/* 01AF74 8001A374 44856000 */ mtc1 $a1, $f12 -/* 01AF78 8001A378 85EF479E */ lh $t7, %lo(cameras+0xAE)($t7) # 0x479e($t7) -/* 01AF7C 8001A37C 3C018016 */ lui $at, %hi(D_80164688) -/* 01AF80 8001A380 3C048016 */ lui $a0, %hi(gNearestWaypointByCameraId) # 0x8016 -/* 01AF84 8001A384 AFBF0014 */ sw $ra, 0x14($sp) -/* 01AF88 8001A388 00380821 */ addu $at, $at, $t8 -/* 01AF8C 8001A38C 00832021 */ addu $a0, $a0, $v1 -/* 01AF90 8001A390 84844668 */ lh $a0, %lo(gNearestWaypointByCameraId)($a0) # 0x4668($a0) -/* 01AF94 8001A394 00C02825 */ move $a1, $a2 -/* 01AF98 8001A398 AFA3001C */ sw $v1, 0x1c($sp) -/* 01AF9C 8001A39C AFA70028 */ sw $a3, 0x28($sp) -/* 01AFA0 8001A3A0 AFAF0020 */ sw $t7, 0x20($sp) -/* 01AFA4 8001A3A4 0C0068C4 */ jal func_8001A310 -/* 01AFA8 8001A3A8 E42C4688 */ swc1 $f12, %lo(D_80164688)($at) -/* 01AFAC 8001A3AC 8FA3001C */ lw $v1, 0x1c($sp) -/* 01AFB0 8001A3B0 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01AFB4 8001A3B4 8FA50028 */ lw $a1, 0x28($sp) -/* 01AFB8 8001A3B8 00230821 */ addu $at, $at, $v1 -/* 01AFBC 8001A3BC A4224680 */ sh $v0, %lo(D_80164680)($at) # 0x4680($at) -/* 01AFC0 8001A3C0 0C006624 */ jal func_80019890 -/* 01AFC4 8001A3C4 8FA40020 */ lw $a0, 0x20($sp) -/* 01AFC8 8001A3C8 8FBF0014 */ lw $ra, 0x14($sp) -/* 01AFCC 8001A3CC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 01AFD0 8001A3D0 03E00008 */ jr $ra -/* 01AFD4 8001A3D4 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8001A3D8.s b/asm/non_matchings/code_80005FD0/func_8001A3D8.s deleted file mode 100644 index cc8245377..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001A3D8.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_8001A3D8 -/* 01AFD8 8001A3D8 44856000 */ mtc1 $a1, $f12 -/* 01AFDC 8001A3DC 00047080 */ sll $t6, $a0, 2 -/* 01AFE0 8001A3E0 00047880 */ sll $t7, $a0, 2 -/* 01AFE4 8001A3E4 3C018016 */ lui $at, %hi(D_80164688) -/* 01AFE8 8001A3E8 3C198016 */ lui $t9, %hi(D_80164680) # $t9, 0x8016 -/* 01AFEC 8001A3EC 01C47023 */ subu $t6, $t6, $a0 -/* 01AFF0 8001A3F0 002F0821 */ addu $at, $at, $t7 -/* 01AFF4 8001A3F4 27394680 */ addiu $t9, %lo(D_80164680) # addiu $t9, $t9, 0x4680 -/* 01AFF8 8001A3F8 0004C040 */ sll $t8, $a0, 1 -/* 01AFFC 8001A3FC 000E70C0 */ sll $t6, $t6, 3 -/* 01B000 8001A400 03191021 */ addu $v0, $t8, $t9 -/* 01B004 8001A404 E42C4688 */ swc1 $f12, %lo(D_80164688)($at) -/* 01B008 8001A408 84480000 */ lh $t0, ($v0) -/* 01B00C 8001A40C 01C47023 */ subu $t6, $t6, $a0 -/* 01B010 8001A410 000E70C0 */ sll $t6, $t6, 3 -/* 01B014 8001A414 3C078016 */ lui $a3, %hi(cameras+0xAE) # 0x8016 -/* 01B018 8001A418 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 01B01C 8001A41C 00EE3821 */ addu $a3, $a3, $t6 -/* 01B020 8001A420 AFBF0014 */ sw $ra, 0x14($sp) -/* 01B024 8001A424 AFA40018 */ sw $a0, 0x18($sp) -/* 01B028 8001A428 00802825 */ move $a1, $a0 -/* 01B02C 8001A42C 10C80004 */ beq $a2, $t0, .L8001A440 -/* 01B030 8001A430 84E7479E */ lh $a3, %lo(cameras+0xAE)($a3) # 0x479e($a3) -/* 01B034 8001A434 A4460000 */ sh $a2, ($v0) -/* 01B038 8001A438 0C006624 */ jal func_80019890 -/* 01B03C 8001A43C 00E02025 */ move $a0, $a3 -.L8001A440: -/* 01B040 8001A440 8FBF0014 */ lw $ra, 0x14($sp) -/* 01B044 8001A444 27BD0018 */ addiu $sp, $sp, 0x18 -/* 01B048 8001A448 03E00008 */ jr $ra -/* 01B04C 8001A44C 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8001A450.s b/asm/non_matchings/code_80005FD0/func_8001A450.s deleted file mode 100644 index 61ef0e98a..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001A450.s +++ /dev/null @@ -1,54 +0,0 @@ -glabel func_8001A450 -/* 01B050 8001A450 000470C0 */ sll $t6, $a0, 3 -/* 01B054 8001A454 01C47023 */ subu $t6, $t6, $a0 -/* 01B058 8001A458 000E7100 */ sll $t6, $t6, 4 -/* 01B05C 8001A45C 01C47023 */ subu $t6, $t6, $a0 -/* 01B060 8001A460 000E7080 */ sll $t6, $t6, 2 -/* 01B064 8001A464 01C47023 */ subu $t6, $t6, $a0 -/* 01B068 8001A468 000E70C0 */ sll $t6, $t6, 3 -/* 01B06C 8001A46C 3C0F800F */ lui $t7, %hi(gPlayers+0xBC) # 0x800f -/* 01B070 8001A470 01EE7821 */ addu $t7, $t7, $t6 -/* 01B074 8001A474 8DEF6A4C */ lw $t7, %lo(gPlayers+0xBC)($t7) # 0x6a4c($t7) -/* 01B078 8001A478 3C011000 */ lui $at, (0x1000000C >> 16) # lui $at, 0x1000 -/* 01B07C 8001A47C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 01B080 8001A480 3421000C */ ori $at, (0x1000000C & 0xFFFF) # ori $at, $at, 0xc -/* 01B084 8001A484 01E1C024 */ and $t8, $t7, $at -/* 01B088 8001A488 AFBF0014 */ sw $ra, 0x14($sp) -/* 01B08C 8001A48C AFA5002C */ sw $a1, 0x2c($sp) -/* 01B090 8001A490 AFA60030 */ sw $a2, 0x30($sp) -/* 01B094 8001A494 1700001C */ bnez $t8, .L8001A508 -/* 01B098 8001A498 00803825 */ move $a3, $a0 -/* 01B09C 8001A49C 3C098016 */ lui $t1, %hi(D_80164680) # $t1, 0x8016 -/* 01B0A0 8001A4A0 25294680 */ addiu $t1, %lo(D_80164680) # addiu $t1, $t1, 0x4680 -/* 01B0A4 8001A4A4 0005C840 */ sll $t9, $a1, 1 -/* 01B0A8 8001A4A8 03293021 */ addu $a2, $t9, $t1 -/* 01B0AC 8001A4AC 84C30000 */ lh $v1, ($a2) -/* 01B0B0 8001A4B0 2401000A */ li $at, 10 -/* 01B0B4 8001A4B4 3C048016 */ lui $a0, %hi(gNearestWaypointByCameraId) # 0x8016 -/* 01B0B8 8001A4B8 24650001 */ addiu $a1, $v1, 1 -/* 01B0BC 8001A4BC 00A1001A */ div $zero, $a1, $at -/* 01B0C0 8001A4C0 00992021 */ addu $a0, $a0, $t9 -/* 01B0C4 8001A4C4 00002810 */ mfhi $a1 -/* 01B0C8 8001A4C8 84844668 */ lh $a0, %lo(gNearestWaypointByCameraId)($a0) # 0x4668($a0) -/* 01B0CC 8001A4CC AFA60018 */ sw $a2, 0x18($sp) -/* 01B0D0 8001A4D0 AFA70028 */ sw $a3, 0x28($sp) -/* 01B0D4 8001A4D4 0C0068C4 */ jal func_8001A310 -/* 01B0D8 8001A4D8 AFA30024 */ sw $v1, 0x24($sp) -/* 01B0DC 8001A4DC 8FA30024 */ lw $v1, 0x24($sp) -/* 01B0E0 8001A4E0 8FA40030 */ lw $a0, 0x30($sp) -/* 01B0E4 8001A4E4 8FA60018 */ lw $a2, 0x18($sp) -/* 01B0E8 8001A4E8 8FA70028 */ lw $a3, 0x28($sp) -/* 01B0EC 8001A4EC 14430003 */ bne $v0, $v1, .L8001A4FC -/* 01B0F0 8001A4F0 00404025 */ move $t0, $v0 -/* 01B0F4 8001A4F4 50870005 */ beql $a0, $a3, .L8001A50C -/* 01B0F8 8001A4F8 8FBF0014 */ lw $ra, 0x14($sp) -.L8001A4FC: -/* 01B0FC 8001A4FC A4C80000 */ sh $t0, ($a2) -/* 01B100 8001A500 0C006624 */ jal func_80019890 -/* 01B104 8001A504 8FA5002C */ lw $a1, 0x2c($sp) -.L8001A508: -/* 01B108 8001A508 8FBF0014 */ lw $ra, 0x14($sp) -.L8001A50C: -/* 01B10C 8001A50C 27BD0028 */ addiu $sp, $sp, 0x28 -/* 01B110 8001A510 03E00008 */ jr $ra -/* 01B114 8001A514 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8001A518.s b/asm/non_matchings/code_80005FD0/func_8001A518.s deleted file mode 100644 index ce3c1ad57..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001A518.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_8001A518 -/* 01B118 8001A518 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 01B11C 8001A51C AFBF0014 */ sw $ra, 0x14($sp) -/* 01B120 8001A520 10A0000C */ beqz $a1, .L8001A554 -/* 01B124 8001A524 00C03825 */ move $a3, $a2 -/* 01B128 8001A528 24010001 */ li $at, 1 -/* 01B12C 8001A52C 10A1000F */ beq $a1, $at, .L8001A56C -/* 01B130 8001A530 24010002 */ li $at, 2 -/* 01B134 8001A534 10A1000D */ beq $a1, $at, .L8001A56C -/* 01B138 8001A538 24010003 */ li $at, 3 -/* 01B13C 8001A53C 10A1000B */ beq $a1, $at, .L8001A56C -/* 01B140 8001A540 00067040 */ sll $t6, $a2, 1 -/* 01B144 8001A544 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01B148 8001A548 002E0821 */ addu $at, $at, $t6 -/* 01B14C 8001A54C 1000000A */ b .L8001A578 -/* 01B150 8001A550 A4204680 */ sh $zero, %lo(D_80164680)($at) # 0x4680($at) -.L8001A554: -/* 01B154 8001A554 0007C040 */ sll $t8, $a3, 1 -/* 01B158 8001A558 3C018016 */ lui $at, %hi(D_80164680) # 0x8016 -/* 01B15C 8001A55C 00380821 */ addu $at, $at, $t8 -/* 01B160 8001A560 240F0001 */ li $t7, 1 -/* 01B164 8001A564 10000004 */ b .L8001A578 -/* 01B168 8001A568 A42F4680 */ sh $t7, %lo(D_80164680)($at) # 0x4680($at) -.L8001A56C: -/* 01B16C 8001A56C 00E02825 */ move $a1, $a3 -/* 01B170 8001A570 0C006914 */ jal func_8001A450 -/* 01B174 8001A574 00803025 */ move $a2, $a0 -.L8001A578: -/* 01B178 8001A578 8FBF0014 */ lw $ra, 0x14($sp) -/* 01B17C 8001A57C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 01B180 8001A580 03E00008 */ jr $ra -/* 01B184 8001A584 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_8001AB00.s b/asm/non_matchings/code_80005FD0/func_8001AB00.s deleted file mode 100644 index cf54fb817..000000000 --- a/asm/non_matchings/code_80005FD0/func_8001AB00.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_8001AB00 -/* 01B700 8001AB00 3C038016 */ lui $v1, %hi(D_801642D8) # $v1, 0x8016 -/* 01B704 8001AB04 3C048016 */ lui $a0, %hi(D_80164358) # $a0, 0x8016 -/* 01B708 8001AB08 24844358 */ addiu $a0, %lo(D_80164358) # addiu $a0, $a0, 0x4358 -/* 01B70C 8001AB0C 246342D8 */ addiu $v1, %lo(D_801642D8) # addiu $v1, $v1, 0x42d8 -/* 01B710 8001AB10 2402FFFF */ li $v0, -1 -.L8001AB14: -/* 01B714 8001AB14 24630040 */ addiu $v1, $v1, 0x40 -/* 01B718 8001AB18 A460FFD0 */ sh $zero, -0x30($v1) -/* 01B71C 8001AB1C A460FFD4 */ sh $zero, -0x2c($v1) -/* 01B720 8001AB20 A462FFD2 */ sh $v0, -0x2e($v1) -/* 01B724 8001AB24 A460FFD6 */ sh $zero, -0x2a($v1) -/* 01B728 8001AB28 A460FFD8 */ sh $zero, -0x28($v1) -/* 01B72C 8001AB2C A460FFE0 */ sh $zero, -0x20($v1) -/* 01B730 8001AB30 A460FFE4 */ sh $zero, -0x1c($v1) -/* 01B734 8001AB34 A462FFE2 */ sh $v0, -0x1e($v1) -/* 01B738 8001AB38 A460FFE6 */ sh $zero, -0x1a($v1) -/* 01B73C 8001AB3C A460FFE8 */ sh $zero, -0x18($v1) -/* 01B740 8001AB40 A460FFF0 */ sh $zero, -0x10($v1) -/* 01B744 8001AB44 A460FFF4 */ sh $zero, -0xc($v1) -/* 01B748 8001AB48 A462FFF2 */ sh $v0, -0xe($v1) -/* 01B74C 8001AB4C A460FFF6 */ sh $zero, -0xa($v1) -/* 01B750 8001AB50 A460FFF8 */ sh $zero, -8($v1) -/* 01B754 8001AB54 A460FFC0 */ sh $zero, -0x40($v1) -/* 01B758 8001AB58 A460FFC4 */ sh $zero, -0x3c($v1) -/* 01B75C 8001AB5C A462FFC2 */ sh $v0, -0x3e($v1) -/* 01B760 8001AB60 A460FFC6 */ sh $zero, -0x3a($v1) -/* 01B764 8001AB64 1464FFEB */ bne $v1, $a0, .L8001AB14 -/* 01B768 8001AB68 A460FFC8 */ sh $zero, -0x38($v1) -/* 01B76C 8001AB6C 03E00008 */ jr $ra -/* 01B770 8001AB70 00000000 */ nop diff --git a/asm/non_matchings/code_8006E9C0/init_hud_three_four_player.s b/asm/non_matchings/code_8006E9C0/init_hud_three_four_player.s deleted file mode 100644 index d6313a3d7..000000000 --- a/asm/non_matchings/code_8006E9C0/init_hud_three_four_player.s +++ /dev/null @@ -1,184 +0,0 @@ -glabel init_hud_three_four_player -/* 072828 80071C28 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 07282C 80071C2C AFBF001C */ sw $ra, 0x1c($sp) -/* 072830 80071C30 3C048018 */ lui $a0, %hi(D_80183DA0) # $a0, 0x8018 -/* 072834 80071C34 AFB00018 */ sw $s0, 0x18($sp) -/* 072838 80071C38 0C01C7C0 */ jal find_unused_obj_index -/* 07283C 80071C3C 24843DA0 */ addiu $a0, %lo(D_80183DA0) # addiu $a0, $a0, 0x3da0 -/* 072840 80071C40 3C048018 */ lui $a0, %hi(D_80183DB8) # $a0, 0x8018 -/* 072844 80071C44 0C01C7C0 */ jal find_unused_obj_index -/* 072848 80071C48 24843DB8 */ addiu $a0, %lo(D_80183DB8) # addiu $a0, $a0, 0x3db8 -/* 07284C 80071C4C 3C048018 */ lui $a0, %hi(D_80183DBC) # $a0, 0x8018 -/* 072850 80071C50 0C01C7C0 */ jal find_unused_obj_index -/* 072854 80071C54 24843DBC */ addiu $a0, %lo(D_80183DBC) # addiu $a0, $a0, 0x3dbc -/* 072858 80071C58 3C048018 */ lui $a0, %hi(D_80183DC0) # $a0, 0x8018 -/* 07285C 80071C5C 0C01C7C0 */ jal find_unused_obj_index -/* 072860 80071C60 24843DC0 */ addiu $a0, %lo(D_80183DC0) # addiu $a0, $a0, 0x3dc0 -/* 072864 80071C64 3C048018 */ lui $a0, %hi(D_80183DC4) # $a0, 0x8018 -/* 072868 80071C68 0C01C7C0 */ jal find_unused_obj_index -/* 07286C 80071C6C 24843DC4 */ addiu $a0, %lo(D_80183DC4) # addiu $a0, $a0, 0x3dc4 -/* 072870 80071C70 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId) # $a0, 0x8018 -/* 072874 80071C74 0C01C7C0 */ jal find_unused_obj_index -/* 072878 80071C78 24843E88 */ addiu $a0, %lo(gItemWindowObjectByPlayerId) # addiu $a0, $a0, 0x3e88 -/* 07287C 80071C7C 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId + 4) # $a0, 0x8018 -/* 072880 80071C80 0C01C7C0 */ jal find_unused_obj_index -/* 072884 80071C84 24843E8C */ addiu $a0, %lo(gItemWindowObjectByPlayerId + 4) # addiu $a0, $a0, 0x3e8c -/* 072888 80071C88 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId + 8) # $a0, 0x8018 -/* 07288C 80071C8C 0C01C7C0 */ jal find_unused_obj_index -/* 072890 80071C90 24843E90 */ addiu $a0, %lo(gItemWindowObjectByPlayerId + 8) # addiu $a0, $a0, 0x3e90 -/* 072894 80071C94 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId + 12) # $a0, 0x8018 -/* 072898 80071C98 0C01C7C0 */ jal find_unused_obj_index -/* 07289C 80071C9C 24843E94 */ addiu $a0, %lo(gItemWindowObjectByPlayerId + 12) # addiu $a0, $a0, 0x3e94 -/* 0728A0 80071CA0 0C01C064 */ jal func_80070190 -/* 0728A4 80071CA4 00000000 */ nop -/* 0728A8 80071CA8 0C01C1E0 */ jal func_80070780 -/* 0728AC 80071CAC 00000000 */ nop -/* 0728B0 80071CB0 3C108019 */ lui $s0, %hi(D_8018CA70) # $s0, 0x8019 -/* 0728B4 80071CB4 2610CA70 */ addiu $s0, %lo(D_8018CA70) # addiu $s0, $s0, -0x3590 -/* 0728B8 80071CB8 240E011A */ li $t6, 282 -/* 0728BC 80071CBC 240200B4 */ li $v0, 180 -/* 0728C0 80071CC0 240300C8 */ li $v1, 200 -/* 0728C4 80071CC4 A60E00E6 */ sh $t6, 0xe6($s0) -/* 0728C8 80071CC8 240F002D */ li $t7, 45 -/* 0728CC 80071CCC 241800D2 */ li $t8, 210 -/* 0728D0 80071CD0 A618016C */ sh $t8, 0x16c($s0) -/* 0728D4 80071CD4 241900D4 */ li $t9, 212 -/* 0728D8 80071CD8 240E00C0 */ li $t6, 192 -/* 0728DC 80071CDC 2404FFCA */ li $a0, -54 -/* 0728E0 80071CE0 24050036 */ li $a1, 54 -/* 0728E4 80071CE4 24060050 */ li $a2, 80 -/* 0728E8 80071CE8 2407003C */ li $a3, 60 -/* 0728EC 80071CEC 24080025 */ li $t0, 37 -/* 0728F0 80071CF0 24090064 */ li $t1, 100 -/* 0728F4 80071CF4 240A008C */ li $t2, 140 -/* 0728F8 80071CF8 240B0060 */ li $t3, 96 -/* 0728FC 80071CFC 240C00DE */ li $t4, 222 -/* 072900 80071D00 240D0175 */ li $t5, 373 -/* 072904 80071D04 241F00F0 */ li $ra, 240 -/* 072908 80071D08 A60F014C */ sh $t7, 0x14c($s0) -/* 07290C 80071D0C A6190168 */ sh $t9, 0x168($s0) -/* 072910 80071D10 A60E0176 */ sh $t6, 0x176($s0) -/* 072914 80071D14 A60F01D0 */ sh $t7, 0x1d0($s0) -/* 072918 80071D18 2418011A */ li $t8, 282 -/* 07291C 80071D1C A61801EE */ sh $t8, 0x1ee($s0) -/* 072920 80071D20 241900D2 */ li $t9, 210 -/* 072924 80071D24 240E00D4 */ li $t6, 212 -/* 072928 80071D28 240F00C0 */ li $t7, 192 -/* 07292C 80071D2C A6040042 */ sh $a0, 0x42($s0) -/* 072930 80071D30 A6050044 */ sh $a1, 0x44($s0) -/* 072934 80071D34 A6000046 */ sh $zero, 0x46($s0) -/* 072938 80071D38 A6000048 */ sh $zero, 0x48($s0) -/* 07293C 80071D3C A606004A */ sh $a2, 0x4a($s0) -/* 072940 80071D40 A607004C */ sh $a3, 0x4c($s0) -/* 072944 80071D44 A6080062 */ sh $t0, 0x62($s0) -/* 072948 80071D48 A6090064 */ sh $t1, 0x64($s0) -/* 07294C 80071D4C A6000066 */ sh $zero, 0x66($s0) -/* 072950 80071D50 A6000068 */ sh $zero, 0x68($s0) -/* 072954 80071D54 A60A005A */ sh $t2, 0x5a($s0) -/* 072958 80071D58 A60B0060 */ sh $t3, 0x60($s0) -/* 07295C 80071D5C A60C006C */ sh $t4, 0x6c($s0) -/* 072960 80071D60 A603006E */ sh $v1, 0x6e($s0) -/* 072964 80071D64 A60D00C6 */ sh $t5, 0xc6($s0) -/* 072968 80071D68 A60500C8 */ sh $a1, 0xc8($s0) -/* 07296C 80071D6C A60000CA */ sh $zero, 0xca($s0) -/* 072970 80071D70 A60000CC */ sh $zero, 0xcc($s0) -/* 072974 80071D74 A61F00CE */ sh $ra, 0xce($s0) -/* 072978 80071D78 A60700D0 */ sh $a3, 0xd0($s0) -/* 07297C 80071D7C A60900E8 */ sh $t1, 0xe8($s0) -/* 072980 80071D80 A60000EA */ sh $zero, 0xea($s0) -/* 072984 80071D84 A60000EC */ sh $zero, 0xec($s0) -/* 072988 80071D88 A60200DE */ sh $v0, 0xde($s0) -/* 07298C 80071D8C A60B00E4 */ sh $t3, 0xe4($s0) -/* 072990 80071D90 A60300F0 */ sh $v1, 0xf0($s0) -/* 072994 80071D94 A60300F2 */ sh $v1, 0xf2($s0) -/* 072998 80071D98 A604014A */ sh $a0, 0x14a($s0) -/* 07299C 80071D9C A600014E */ sh $zero, 0x14e($s0) -/* 0729A0 80071DA0 A6000150 */ sh $zero, 0x150($s0) -/* 0729A4 80071DA4 A6060152 */ sh $a2, 0x152($s0) -/* 0729A8 80071DA8 A6020154 */ sh $v0, 0x154($s0) -/* 0729AC 80071DAC A608016A */ sh $t0, 0x16a($s0) -/* 0729B0 80071DB0 A600016E */ sh $zero, 0x16e($s0) -/* 0729B4 80071DB4 A6000170 */ sh $zero, 0x170($s0) -/* 0729B8 80071DB8 A60A0162 */ sh $t2, 0x162($s0) -/* 0729BC 80071DBC A60C0174 */ sh $t4, 0x174($s0) -/* 0729C0 80071DC0 A60D01CE */ sh $t5, 0x1ce($s0) -/* 0729C4 80071DC4 A60001D2 */ sh $zero, 0x1d2($s0) -/* 0729C8 80071DC8 A60001D4 */ sh $zero, 0x1d4($s0) -/* 0729CC 80071DCC A61F01D6 */ sh $ra, 0x1d6($s0) -/* 0729D0 80071DD0 A60201D8 */ sh $v0, 0x1d8($s0) -/* 0729D4 80071DD4 A61901F0 */ sh $t9, 0x1f0($s0) -/* 0729D8 80071DD8 A60001F2 */ sh $zero, 0x1f2($s0) -/* 0729DC 80071DDC A60001F4 */ sh $zero, 0x1f4($s0) -/* 0729E0 80071DE0 A60201E6 */ sh $v0, 0x1e6($s0) -/* 0729E4 80071DE4 A60E01EC */ sh $t6, 0x1ec($s0) -/* 0729E8 80071DE8 A60301F8 */ sh $v1, 0x1f8($s0) -/* 0729EC 80071DEC A60F01FA */ sh $t7, 0x1fa($s0) -/* 0729F0 80071DF0 3C18800E */ lui $t8, %hi(gModeSelection) # $t8, 0x800e -/* 0729F4 80071DF4 8F18C53C */ lw $t8, %lo(gModeSelection)($t8) -/* 0729F8 80071DF8 24010003 */ li $at, 3 -/* 0729FC 80071DFC 240200B8 */ li $v0, 184 -/* 072A00 80071E00 17010005 */ bne $t8, $at, .L80071E18 -/* 072A04 80071E04 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId) # $a0, 0x8018 -/* 072A08 80071E08 A6030044 */ sh $v1, 0x44($s0) -/* 072A0C 80071E0C A60300C8 */ sh $v1, 0xc8($s0) -/* 072A10 80071E10 A602014C */ sh $v0, 0x14c($s0) -/* 072A14 80071E14 A60201D0 */ sh $v0, 0x1d0($s0) -.L80071E18: -/* 072A18 80071E18 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 072A1C 80071E1C 44812000 */ mtc1 $at, $f4 -/* 072A20 80071E20 3C028016 */ lui $v0, %hi(gGPCurrentRaceRankByPlayerId) # $v0, 0x8016 -/* 072A24 80071E24 244243B8 */ addiu $v0, %lo(gGPCurrentRaceRankByPlayerId) # addiu $v0, $v0, 0x43b8 -/* 072A28 80071E28 E6040190 */ swc1 $f4, 0x190($s0) -/* 072A2C 80071E2C C6000190 */ lwc1 $f0, 0x190($s0) -/* 072A30 80071E30 8C590000 */ lw $t9, ($v0) -/* 072A34 80071E34 8C4E0004 */ lw $t6, 4($v0) -/* 072A38 80071E38 8C4F0008 */ lw $t7, 8($v0) -/* 072A3C 80071E3C 8C58000C */ lw $t8, 0xc($v0) -/* 072A40 80071E40 E600010C */ swc1 $f0, 0x10c($s0) -/* 072A44 80071E44 E6000088 */ swc1 $f0, 0x88($s0) -/* 072A48 80071E48 E6000004 */ swc1 $f0, 4($s0) -/* 072A4C 80071E4C A619006A */ sh $t9, 0x6a($s0) -/* 072A50 80071E50 A60E00EE */ sh $t6, 0xee($s0) -/* 072A54 80071E54 A60F0172 */ sh $t7, 0x172($s0) -/* 072A58 80071E58 A61801F6 */ sh $t8, 0x1f6($s0) -/* 072A5C 80071E5C 0C01BB9F */ jal init_item_window -/* 072A60 80071E60 8C843E88 */ lw $a0, %lo(gItemWindowObjectByPlayerId)($a0) -/* 072A64 80071E64 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId + 4) # $a0, 0x8018 -/* 072A68 80071E68 0C01BB9F */ jal init_item_window -/* 072A6C 80071E6C 8C843E8C */ lw $a0, %lo(gItemWindowObjectByPlayerId + 4)($a0) -/* 072A70 80071E70 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId + 8) # $a0, 0x8018 -/* 072A74 80071E74 0C01BB9F */ jal init_item_window -/* 072A78 80071E78 8C843E90 */ lw $a0, %lo(gItemWindowObjectByPlayerId + 8)($a0) -/* 072A7C 80071E7C 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId + 12) # $a0, 0x8018 -/* 072A80 80071E80 0C01BB9F */ jal init_item_window -/* 072A84 80071E84 8C843E94 */ lw $a0, %lo(gItemWindowObjectByPlayerId + 12)($a0) -/* 072A88 80071E88 3C013FC0 */ li $at, 0x3FC00000 # 1.500000 -/* 072A8C 80071E8C 44813000 */ mtc1 $at, $f6 -/* 072A90 80071E90 3C198019 */ lui $t9, %hi(gPlayerCount) # $t9, 0x8019 -/* 072A94 80071E94 3C018019 */ lui $at, %hi(D_8018D158) # $at, 0x8019 -/* 072A98 80071E98 E606018C */ swc1 $f6, 0x18c($s0) -/* 072A9C 80071E9C C600018C */ lwc1 $f0, 0x18c($s0) -/* 072AA0 80071EA0 240E0014 */ li $t6, 20 -/* 072AA4 80071EA4 240F0010 */ li $t7, 16 -/* 072AA8 80071EA8 E6000108 */ swc1 $f0, 0x108($s0) -/* 072AAC 80071EAC E6000084 */ swc1 $f0, 0x84($s0) -/* 072AB0 80071EB0 E6000000 */ swc1 $f0, ($s0) -/* 072AB4 80071EB4 8339EDF3 */ lb $t9, %lo(gPlayerCount)($t9) -/* 072AB8 80071EB8 8FBF001C */ lw $ra, 0x1c($sp) -/* 072ABC 80071EBC 2418001E */ li $t8, 30 -/* 072AC0 80071EC0 AC39D158 */ sw $t9, %lo(D_8018D158)($at) -/* 072AC4 80071EC4 3C018019 */ lui $at, %hi(D_8018D3C4) # $at, 0x8019 -/* 072AC8 80071EC8 AC2ED3C4 */ sw $t6, %lo(D_8018D3C4)($at) -/* 072ACC 80071ECC 3C018019 */ lui $at, %hi(D_8018D3BC) # $at, 0x8019 -/* 072AD0 80071ED0 AC2FD3BC */ sw $t7, %lo(D_8018D3BC)($at) -/* 072AD4 80071ED4 3C018019 */ lui $at, %hi(D_8018D3C0) # $at, 0x8019 -/* 072AD8 80071ED8 AC38D3C0 */ sw $t8, %lo(D_8018D3C0)($at) -/* 072ADC 80071EDC 3C018016 */ lui $at, %hi(D_801657A2) # $at, 0x8016 -/* 072AE0 80071EE0 24190888 */ li $t9, 2184 -/* 072AE4 80071EE4 8FB00018 */ lw $s0, 0x18($sp) -/* 072AE8 80071EE8 A43957A2 */ sh $t9, %lo(D_801657A2)($at) -/* 072AEC 80071EEC 03E00008 */ jr $ra -/* 072AF0 80071EF0 27BD0020 */ addiu $sp, $sp, 0x20 - -/* 072AF4 80071EF4 00000000 */ nop -/* 072AF8 80071EF8 00000000 */ nop diff --git a/asm/non_matchings/code_800B45E0/func_800B6178.s b/asm/non_matchings/code_800B45E0/func_800B6178.s deleted file mode 100644 index 3cced391f..000000000 --- a/asm/non_matchings/code_800B45E0/func_800B6178.s +++ /dev/null @@ -1,127 +0,0 @@ -glabel func_800B6178 -/* 0B6D78 800B6178 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0B6D7C 800B617C AFBF002C */ sw $ra, 0x2c($sp) -/* 0B6D80 800B6180 AFB30028 */ sw $s3, 0x28($sp) -/* 0B6D84 800B6184 AFB20024 */ sw $s2, 0x24($sp) -/* 0B6D88 800B6188 AFB10020 */ sw $s1, 0x20($sp) -/* 0B6D8C 800B618C 10800006 */ beqz $a0, .L800B61A8 -/* 0B6D90 800B6190 AFB0001C */ sw $s0, 0x1c($sp) -/* 0B6D94 800B6194 24010001 */ li $at, 1 -/* 0B6D98 800B6198 10810003 */ beq $a0, $at, .L800B61A8 -/* 0B6D9C 800B619C 00000000 */ nop -/* 0B6DA0 800B61A0 10000062 */ b .L800B632C -/* 0B6DA4 800B61A4 2402FFFF */ li $v0, -1 -.L800B61A8: -/* 0B6DA8 800B61A8 3C11800E */ lui $s1, %hi(gGamestate) # $s1, 0x800e -/* 0B6DAC 800B61AC 2631C50C */ addiu $s1, %lo(gGamestate) # addiu $s1, $s1, -0x3af4 -/* 0B6DB0 800B61B0 8E2E0000 */ lw $t6, ($s1) -/* 0B6DB4 800B61B4 24100004 */ li $s0, 4 -/* 0B6DB8 800B61B8 AFA40030 */ sw $a0, 0x30($sp) -/* 0B6DBC 800B61BC 560E0004 */ bnel $s0, $t6, .L800B61D0 -/* 0B6DC0 800B61C0 8FA40030 */ lw $a0, 0x30($sp) -/* 0B6DC4 800B61C4 0C001471 */ jal func_800051C4 -/* 0B6DC8 800B61C8 AFA40030 */ sw $a0, 0x30($sp) -/* 0B6DCC 800B61CC 8FA40030 */ lw $a0, 0x30($sp) -.L800B61D0: -/* 0B6DD0 800B61D0 3C188019 */ lui $t8, %hi(D_8018EE10) # $t8, 0x8019 -/* 0B6DD4 800B61D4 2718EE10 */ addiu $t8, %lo(D_8018EE10) # addiu $t8, $t8, -0x11f0 -/* 0B6DD8 800B61D8 000479C0 */ sll $t7, $a0, 7 -/* 0B6DDC 800B61DC 01F89821 */ addu $s3, $t7, $t8 -/* 0B6DE0 800B61E0 0C02D822 */ jal func_800B6088 -/* 0B6DE4 800B61E4 A2600004 */ sb $zero, 4($s3) -/* 0B6DE8 800B61E8 10400011 */ beqz $v0, .L800B6230 -/* 0B6DEC 800B61EC 00401825 */ move $v1, $v0 -/* 0B6DF0 800B61F0 A2600004 */ sb $zero, 4($s3) -/* 0B6DF4 800B61F4 00008025 */ move $s0, $zero -/* 0B6DF8 800B61F8 02608825 */ move $s1, $s3 -/* 0B6DFC 800B61FC 2412003C */ li $s2, 60 -.L800B6200: -/* 0B6E00 800B6200 26190001 */ addiu $t9, $s0, 1 -/* 0B6E04 800B6204 26080002 */ addiu $t0, $s0, 2 -/* 0B6E08 800B6208 26090003 */ addiu $t1, $s0, 3 -/* 0B6E0C 800B620C A2300007 */ sb $s0, 7($s1) -/* 0B6E10 800B6210 26100004 */ addiu $s0, $s0, 4 -/* 0B6E14 800B6214 A229000A */ sb $t1, 0xa($s1) -/* 0B6E18 800B6218 A2280009 */ sb $t0, 9($s1) -/* 0B6E1C 800B621C A2390008 */ sb $t9, 8($s1) -/* 0B6E20 800B6220 1612FFF7 */ bne $s0, $s2, .L800B6200 -/* 0B6E24 800B6224 26310004 */ addiu $s1, $s1, 4 -/* 0B6E28 800B6228 10000040 */ b .L800B632C -/* 0B6E2C 800B622C 00601025 */ move $v0, $v1 -.L800B6230: -/* 0B6E30 800B6230 8FA70030 */ lw $a3, 0x30($sp) -/* 0B6E34 800B6234 3C0C800E */ lui $t4, %hi(D_800DC714) # $t4, 0x800e -/* 0B6E38 800B6238 8D8CC714 */ lw $t4, %lo(D_800DC714)($t4) -/* 0B6E3C 800B623C 00075100 */ sll $t2, $a3, 4 -/* 0B6E40 800B6240 01475023 */ subu $t2, $t2, $a3 -/* 0B6E44 800B6244 000A5280 */ sll $t2, $t2, 0xa -/* 0B6E48 800B6248 3C048019 */ lui $a0, %hi(gControllerPak1FileHandle) # $a0, 0x8019 -/* 0B6E4C 800B624C 3C058019 */ lui $a1, %hi(gControllerPak1FileNote) # $a1, 0x8019 -/* 0B6E50 800B6250 240B3C00 */ li $t3, 15360 -/* 0B6E54 800B6254 AFAB0010 */ sw $t3, 0x10($sp) -/* 0B6E58 800B6258 8CA5EB84 */ lw $a1, %lo(gControllerPak1FileNote)($a1) -/* 0B6E5C 800B625C 2484E868 */ addiu $a0, %lo(gControllerPak1FileHandle) # addiu $a0, $a0, -0x1798 -/* 0B6E60 800B6260 25470100 */ addiu $a3, $t2, 0x100 -/* 0B6E64 800B6264 24060001 */ li $a2, 1 -/* 0B6E68 800B6268 0C0340F3 */ jal osPfsReadWriteFile -/* 0B6E6C 800B626C AFAC0014 */ sw $t4, 0x14($sp) -/* 0B6E70 800B6270 1440001E */ bnez $v0, .L800B62EC -/* 0B6E74 800B6274 00401825 */ move $v1, $v0 -/* 0B6E78 800B6278 240D0001 */ li $t5, 1 -/* 0B6E7C 800B627C A26D0004 */ sb $t5, 4($s3) -/* 0B6E80 800B6280 8E2E0000 */ lw $t6, ($s1) -/* 0B6E84 800B6284 3C0F8019 */ lui $t7, %hi(gCupSelection) # $t7, 0x8019 -/* 0B6E88 800B6288 3C198019 */ lui $t9, %hi(gCupCourseSelection) # $t9, 0x8019 -/* 0B6E8C 800B628C 160E0006 */ bne $s0, $t6, .L800B62A8 -/* 0B6E90 800B6290 3C098016 */ lui $t1, %hi(D_80162DFC) # $t1, 0x8016 -/* 0B6E94 800B6294 81EFEE09 */ lb $t7, %lo(gCupSelection)($t7) -/* 0B6E98 800B6298 8339EE0B */ lb $t9, %lo(gCupCourseSelection)($t9) -/* 0B6E9C 800B629C 000FC080 */ sll $t8, $t7, 2 -/* 0B6EA0 800B62A0 03194021 */ addu $t0, $t8, $t9 -/* 0B6EA4 800B62A4 A2680005 */ sb $t0, 5($s3) -.L800B62A8: -/* 0B6EA8 800B62A8 8D292DFC */ lw $t1, %lo(D_80162DFC)($t1) -/* 0B6EAC 800B62AC 3C0A8016 */ lui $t2, %hi(D_80162DE0) # $t2, 0x8016 -/* 0B6EB0 800B62B0 00008025 */ move $s0, $zero -/* 0B6EB4 800B62B4 AE690000 */ sw $t1, ($s3) -/* 0B6EB8 800B62B8 8D4A2DE0 */ lw $t2, %lo(D_80162DE0)($t2) -/* 0B6EBC 800B62BC 02608825 */ move $s1, $s3 -/* 0B6EC0 800B62C0 2412003C */ li $s2, 60 -/* 0B6EC4 800B62C4 A26A0006 */ sb $t2, 6($s3) -.L800B62C8: -/* 0B6EC8 800B62C8 0C02D83A */ jal func_800B60E8 -/* 0B6ECC 800B62CC 02002025 */ move $a0, $s0 -/* 0B6ED0 800B62D0 26100001 */ addiu $s0, $s0, 1 -/* 0B6ED4 800B62D4 26310001 */ addiu $s1, $s1, 1 -/* 0B6ED8 800B62D8 1612FFFB */ bne $s0, $s2, .L800B62C8 -/* 0B6EDC 800B62DC A2220006 */ sb $v0, 6($s1) -/* 0B6EE0 800B62E0 0C02D822 */ jal func_800B6088 -/* 0B6EE4 800B62E4 8FA40030 */ lw $a0, 0x30($sp) -/* 0B6EE8 800B62E8 00401825 */ move $v1, $v0 -.L800B62EC: -/* 0B6EEC 800B62EC 1040000E */ beqz $v0, .L800B6328 -/* 0B6EF0 800B62F0 2412003C */ li $s2, 60 -/* 0B6EF4 800B62F4 A2600004 */ sb $zero, 4($s3) -/* 0B6EF8 800B62F8 00008025 */ move $s0, $zero -/* 0B6EFC 800B62FC 02608825 */ move $s1, $s3 -.L800B6300: -/* 0B6F00 800B6300 260B0001 */ addiu $t3, $s0, 1 -/* 0B6F04 800B6304 260C0002 */ addiu $t4, $s0, 2 -/* 0B6F08 800B6308 260D0003 */ addiu $t5, $s0, 3 -/* 0B6F0C 800B630C A2300007 */ sb $s0, 7($s1) -/* 0B6F10 800B6310 26100004 */ addiu $s0, $s0, 4 -/* 0B6F14 800B6314 A22D000A */ sb $t5, 0xa($s1) -/* 0B6F18 800B6318 A22C0009 */ sb $t4, 9($s1) -/* 0B6F1C 800B631C A22B0008 */ sb $t3, 8($s1) -/* 0B6F20 800B6320 1612FFF7 */ bne $s0, $s2, .L800B6300 -/* 0B6F24 800B6324 26310004 */ addiu $s1, $s1, 4 -.L800B6328: -/* 0B6F28 800B6328 00601025 */ move $v0, $v1 -.L800B632C: -/* 0B6F2C 800B632C 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B6F30 800B6330 8FB0001C */ lw $s0, 0x1c($sp) -/* 0B6F34 800B6334 8FB10020 */ lw $s1, 0x20($sp) -/* 0B6F38 800B6338 8FB20024 */ lw $s2, 0x24($sp) -/* 0B6F3C 800B633C 8FB30028 */ lw $s3, 0x28($sp) -/* 0B6F40 800B6340 03E00008 */ jr $ra -/* 0B6F44 800B6344 27BD0030 */ addiu $sp, $sp, 0x30 diff --git a/include/common_structs.h b/include/common_structs.h index 69f43d713..0dddea098 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -403,7 +403,7 @@ typedef struct /* 0x04 */ u8 ghostDataSaved; /* 0x05 */ s8 courseIndex; /* 0x06 */ u8 characterId; - /* 0x07 */ s8 unk_07[0x3C]; + /* 0x07 */ u8 unk_07[0x3C]; /* 0x43 */ u8 pad_43[0x7F-0x43]; /* 0x7F */ u8 checksum; } struct_8018EE10_entry; // size = 0x80 diff --git a/include/functions.h b/include/functions.h index 2a856ab88..6c5c2f597 100644 --- a/include/functions.h +++ b/include/functions.h @@ -8,7 +8,6 @@ void mio0decode(u8* arg0, u8* arg1); // Unused mio0decode function. void func_80040030(u8* arg0, u8* arg1); -void func_8000F2DC(void); void func_8000F628(void); void func_8006B7E4(Player* player, s8 arg1); void func_8005D290(void); diff --git a/include/objects.h b/include/objects.h index 145327d6b..55f14e5ce 100644 --- a/include/objects.h +++ b/include/objects.h @@ -158,6 +158,13 @@ typedef struct } ItemWindowObjects; // size = 0xE0 // This are other lists of indices in gObjectList. + +/** + * Use unknown. An object is reserved and its index is saved to + * this variable, but it appears to go unreferenced + **/ +extern s32 D_80183DA0; + /** * Lakitu? **/ diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 6ec8ee1b8..99e8cc0b4 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -9,6 +9,7 @@ #include "waypoints.h" #include "camera.h" #include "actors.h" +#include "actors_extended.h" #include "code_8001F980.h" #include "player_controller.h" #include "code_80071F00.h" @@ -24,7 +25,6 @@ #include "common_structs.h" #include "main.h" #include "menus.h" -#include extern UnkCommonTextureStruct0 *D_800DC720[]; @@ -1426,22 +1426,17 @@ f32 func_80009258(UNUSED s32 playerId, f32 arg1, f32 arg2) { } #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -void func_800065D0(s32, Player *, s32 *); /* extern */ +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 +? func_800065D0(s32, Player *, s32 *); /* extern */ f32 func_80009258(s32, f32, f32, u16 *); /* extern */ -void func_80011AE4(s32); /* extern */ extern s16 D_801630E0; extern s16 D_801630E2; extern ? D_80163240; -extern f32 D_80163450; -extern s16 D_80163478; -extern s16 D_8016348C; +extern ? D_80163450; extern s16 D_801634EC; extern ? D_801642DE; extern ? D_801643B0; -extern s32 D_80164408; extern s32 D_8016440C; -extern s8 gPlayerCount; s16 gCurrentCourseId; /* unable to generate initializer */ void func_8000929C(s32 playerId, Player *player) { @@ -1453,15 +1448,12 @@ void func_8000929C(s32 playerId, Player *player) { s16 *sp2C; f32 temp_f0; f32 temp_f0_2; - f32 temp_f0_3; - f32 temp_f0_4; f32 temp_f12; s16 *temp_v1; s16 temp_a3; - s16 temp_v0; s16 var_t0; + s32 *temp_v0; s32 *temp_v0_2; - s32 *temp_v0_3; s32 *var_v0; s32 temp_t1; s32 temp_t2; @@ -1471,8 +1463,8 @@ void func_8000929C(s32 playerId, Player *player) { s32 var_a3; s32 var_v1; u16 *temp_t0; + u16 temp_v0_3; u16 temp_v0_4; - u16 temp_v0_5; temp_f0 = player->pos[2]; temp_f12 = player->pos[0]; @@ -1493,17 +1485,16 @@ void func_8000929C(s32 playerId, Player *player) { sp4C = temp_f12; func_80008F38(playerId); } - temp_v0 = gCurrentCourseId; - if (temp_v0 == 0x0014) { - func_8000B95C(playerId, D_80162FCE & 0xFFFF, D_80163448); + if (gCurrentCourseId == 0x0014) { + func_8000B95C(playerId, temp_a3 & 0xFFFF, D_80163448); return; } - if ((D_80162FCE < 0x14) || ((gWaypointCountByPathIndex[D_80163448] - 0x14) < D_80162FCE) || (temp_v0 == 0x000B)) { + if ((temp_a3 < 0x14) || ((gWaypointCountByPathIndex[D_80163448] - 0x14) < temp_a3) || (gCurrentCourseId == 0x000B)) { var_v1 = 0; var_t0 = 0; - if (temp_v0 == 0x000B) { + if (gCurrentCourseId == 0x000B) { D_801634EC = 0; - if ((player->effects & 0x200) != 0) { + if (player->effects & 0x200) { D_801634EC = 1; } if (gIsMirrorMode != 0) { @@ -1538,64 +1529,58 @@ block_25: var_a3 = playerId * 4; } sp38 = *(&D_80163450 + var_a3); - if (var_v1 != 0) { - temp_f0_2 = D_8016344C; - if (sp44 <= temp_f0_2) { - temp_v0_2 = var_a3 + gLapCountByPlayerId; - if (temp_f0_2 < sp38) { - temp_t1 = *temp_v0_2 + 1; - *temp_v0_2 = temp_t1; - if ((gModeSelection == GRAND_PRIX) && (temp_t1 == 5)) { - var_v0 = gLapCountByPlayerId; - if (*(&D_80164408 + var_a3) == 7) { - do { - temp_t5 = var_v0->unk0; - temp_t7 = var_v0->unk4; - temp_t9 = var_v0->unk8; - temp_t2 = var_v0->unkC; - var_v0 += 0x10; - var_v0->unk-4 = (s32) (temp_t2 - 1); - var_v0->unk-8 = (s32) (temp_t9 - 1); - var_v0->unk-C = (s32) (temp_t7 - 1); - var_v0->unk-10 = (s32) (temp_t5 - 1); - } while (var_v0 != &D_801643B0); - } + if ((var_v1 != 0) && (sp44 <= D_8016344C)) { + temp_v0 = var_a3 + gLapCountByPlayerId; + if (D_8016344C < sp38) { + temp_t1 = *temp_v0 + 1; + *temp_v0 = temp_t1; + if ((gModeSelection == 0) && (temp_t1 == 5)) { + var_v0 = gLapCountByPlayerId; + if (*(D_80164408 + var_a3) == 7) { + do { + temp_t5 = var_v0->unk0; + temp_t7 = var_v0->unk4; + temp_t9 = var_v0->unk8; + temp_t2 = var_v0->unkC; + var_v0 += 0x10; + var_v0->unk-4 = (s32) (temp_t2 - 1); + var_v0->unk-8 = (s32) (temp_t9 - 1); + var_v0->unk-C = (s32) (temp_t7 - 1); + var_v0->unk-10 = (s32) (temp_t5 - 1); + } while (var_v0 != &D_801643B0); } - *sp2C = 1; - sp34 = var_t0; + } + *sp2C = 1; + sp34 = var_t0; + sp30 = var_a3; + func_80008F38(playerId); + func_80011AE4(playerId); + *(&D_801642DE + (playerId * 0x10)) = 0; + if ((D_8016348C == 0) && !(player->type & 0x800)) { sp30 = var_a3; - func_80008F38(playerId); - func_80011AE4(playerId); - *(&D_801642DE + (playerId * 0x10)) = 0; - if ((D_8016348C == 0) && ((player->type & PLAYER_CINEMATIC_MODE) == 0)) { - sp30 = var_a3; - sp34 = var_t0; - temp_f0_3 = func_80009258(playerId, sp38, sp44, (u16 *) var_a3); - *(gTimePlayerLastTouchedFinishLine + var_a3) = temp_f0_3; - } + sp34 = var_t0; + temp_f0_2 = func_80009258(playerId, sp38, sp44, (u16 *) var_a3); + *(gTimePlayerLastTouchedFinishLine + var_a3) = temp_f0_2; } } } - if (var_t0 != 0) { - temp_f0_4 = D_8016344C; - if (sp38 <= temp_f0_4) { - temp_v0_3 = var_a3 + gLapCountByPlayerId; - if (temp_f0_4 < sp44) { - *temp_v0_3 -= 1; - func_80008F38(playerId); - } + if ((var_t0 != 0) && (sp38 <= D_8016344C)) { + temp_v0_2 = var_a3 + gLapCountByPlayerId; + if (D_8016344C < sp44) { + *temp_v0_2 -= 1; + func_80008F38(playerId); } } } *(&D_80163450 + (playerId * 4)) = sp44; - if ((gCurrentCourseId == 4) && (D_801630E2 == 1) && ((func_80009000(playerId), temp_v0_4 = player->type, ((temp_v0_4 & 0x4000) == 0)) || ((temp_v0_4 & 0x1000) != 0))) { + if ((gCurrentCourseId == 4) && (D_801630E2 == 1) && ((func_80009000(playerId), temp_v0_3 = player->type, ((temp_v0_3 & 0x4000) == 0)) || (temp_v0_3 & 0x1000))) { func_800090F0(playerId, player); } - temp_v0_5 = player->type; - if (((temp_v0_5 & 0x4000) != 0) && ((temp_v0_5 & 0x1000) == 0)) { + temp_v0_4 = player->type; + if ((temp_v0_4 & 0x4000) && !(temp_v0_4 & 0x1000)) { func_800065D0(playerId, player, &D_80163448); - if ((gModeSelection == GRAND_PRIX) && (gPlayerCount == 2) && (playerId == 0)) { - if (D_80164408 < D_8016440C) { + if ((gModeSelection == 0) && (gPlayerCount == 2) && (playerId == 0)) { + if (*D_80164408 < D_8016440C) { D_80163478 = 0; } else { D_80163478 = 1; @@ -1645,32 +1630,47 @@ void func_800097E0(void) { } #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -void func_800C92CC(u8, ?, s16 *, Player *); /* extern */ -extern s16 D_80163398; -extern s16 D_801633B0; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 +extern ? D_80163398; +extern ? D_801633B0; -void func_800098FC(u8 arg0, Player *player) { +void func_800098FC(u32 arg0, Player *player) { s32 sp1C; s16 *sp18; s16 *temp_a2; s16 *temp_a2_2; - s32 temp_v0; s32 temp_v0_2; s32 temp_v1; + u32 temp_v0; temp_v1 = arg0 * 2; temp_a2 = temp_v1 + &D_80163398; - if ((*temp_a2 >= 0xB) && ((temp_v0 = player->effects, ((temp_v0 & 0x80) != 0)) || ((temp_v0 & 0x40) != 0) || (temp_v0 & 0x20000))) { - sp1C = temp_v1; - sp18 = temp_a2; - func_800C92CC(arg0, 0x2900800A, temp_a2, player); - *temp_a2 = 0; + if (*temp_a2 >= 0xB) { + temp_v0 = player->effects; + if (!(temp_v0 & 0x80) && !(temp_v0 & 0x40)) { + if (temp_v0 & 0x20000) { + goto block_6; + } + } else { +block_6: + sp1C = temp_v1; + sp18 = temp_a2; + func_800C92CC((u8) arg0, 0x2900800AU); + *temp_a2 = 0; + } } temp_a2_2 = temp_v1 + &D_801633B0; - if ((*temp_a2_2 >= 0xB) && ((temp_v0_2 = player->statusEffects, ((temp_v0_2 << 9) < 0)) || ((temp_v0_2 << 7) < 0) || ((temp_v0_2 & 2) != 0) || ((temp_v0_2 & 4) != 0) || (player->effects & 0x04000000))) { + if (*temp_a2_2 >= 0xB) { + temp_v0_2 = player->statusEffects; + if (!(temp_v0_2 & 0x400000) && !(temp_v0_2 & 0x01000000) && !(temp_v0_2 & 2) && !(temp_v0_2 & 4)) { + if (player->effects & 0x04000000) { + goto block_15; + } + return; + } +block_15: sp18 = temp_a2_2; - func_800C92CC(arg0, 0x2900800B, temp_a2_2, player); + func_800C92CC((u8) arg0, 0x2900800BU); *temp_a2_2 = 0; } } @@ -1679,57 +1679,48 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800098FC.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800C92CC(s32, ?); // extern -extern s16 D_80163398; -extern s16 D_801633B0; -extern s16 D_801633C8; -extern s32 D_801643E0; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 +extern ? D_80163398; +extern ? D_801633B0; +extern ? D_801633C8; -void func_800099EC(s32 arg0, ? arg1) { +void func_800099EC(s32 arg0, s32 arg1) { s32 sp40; s16 *temp_s7; s16 *temp_v0_2; s16 *temp_v0_3; s16 temp_v1_2; s16 temp_v1_3; - s32 temp_s0; + s32 *var_s2; s32 temp_t6; s32 temp_v0; s32 temp_v1; - s8 temp_a0; - s32 *phi_s2; - s32 phi_s1; - s32 phi_s0; - s32 phi_a0; + s32 var_s0; + s32 var_s1; temp_t6 = arg0 * 2; temp_s7 = temp_t6 + &D_801633C8; sp40 = temp_t6; if (*temp_s7 >= 0x65) { - temp_a0 = gPlayerCount; - phi_s0 = 0; - phi_a0 = temp_a0; - if (temp_a0 > ZERO_PLAYERS_SELECTED) { - phi_s2 = gGPCurrentRaceRankByPlayerId; - phi_s1 = 0; + var_s0 = 0; + if (gPlayerCount > 0) { + var_s2 = gGPCurrentRaceRankByPlayerId; + var_s1 = 0; do { temp_v0 = gGPCurrentRaceRankByPlayerId[arg0]; - temp_v1 = *phi_s2; - if ((temp_v0 < temp_v1) && (temp_v0 == *(&D_801643E0 + phi_s1)) && (temp_v1 == *(&D_801643E0 + (arg0 * 4)))) { - func_800C92CC(arg0 & 0xFF, 0x2900800D); + temp_v1 = *var_s2; + if ((temp_v0 < temp_v1) && (temp_v0 == *(D_801643E0 + var_s1)) && (temp_v1 == D_801643E0[arg0])) { + func_800C92CC(arg0 & 0xFF, 0x2900800DU); *temp_s7 = 0; - phi_a0 = gPlayerCount; } - temp_s0 = phi_s0 + 1; - phi_s2 += 4; - phi_s1 += 4; - phi_s0 = temp_s0; - } while (temp_s0 < phi_a0); + var_s0 += 1; + var_s1 += 4; + var_s2 += 4; + } while (var_s0 < gPlayerCount); } } if (*temp_s7 < 0x3E8) { - *temp_s7 = *temp_s7 + 1; + *temp_s7 += 1; } temp_v0_2 = sp40 + &D_80163398; temp_v1_2 = *temp_v0_2; @@ -1747,62 +1738,40 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800099EC.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_80008424(s32, ?32, Player *); /* extern */ -void func_8000929C(s32, Player *); /* extern */ -void func_800099EC(s32, Player *); /* extern */ -void func_8000B140(s32); /* extern */ -void func_8000BBD8(s32, ?32, s16, f32 *); /* extern */ -f32 func_8000D3B8(s32); /* extern */ -void func_8000D438(s32, u16); /* extern */ -void func_80011E38(s32); /* extern */ -void func_80012DC0(s32, Player *); /* extern */ -void func_80013054(); /* extern */ -void func_800131DC(s32); /* extern */ -void func_80013854(Player *); /* extern */ -void func_8001AC10(s32); /* extern */ -void func_8003680C(Player *, s16, Player *, s16, Player *); /* extern */ -void set_places(); /* extern */ -extern f32 D_0D009418; -extern f32 D_0D009568; -extern f32 D_0D0096B8; -extern f32 D_0D009808; -extern f32 D_80162FA0; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 +? func_80008424(s32, ?32, Player *); /* extern */ +? func_8000929C(s32, Player *); /* extern */ +? func_800099EC(s32, Player *); /* extern */ +? func_8000B140(s32); /* extern */ +? func_8000D438(s32, u16); /* extern */ extern s16 D_80162FD0; -extern s16 D_80162FF8; -extern f32 D_80163028; -extern s16 D_80163050; -extern f32 D_80163090; +extern ? D_80162FF8; +extern ? D_80163028; +extern ? D_80163050; +extern ? D_80163090; extern ? D_801630B8; extern u16 D_801630E0; extern s16 D_801630E2; -extern s16 D_801630E8; -extern s32 D_80163100; -extern f32 D_80163178; -extern f32 D_801631A0; -extern s16 D_801631E0; -extern s16 D_801631F8; +extern ? D_801630E8; +extern ? D_80163100; +extern ? D_80163178; +extern ? D_801631A0; +extern ? D_801631F8; extern ?32 D_8016320C; -extern f32 D_80163210; +extern ? D_80163210; extern ? D_80163240; -extern s16 D_801632E8; extern ? D_80163300; -extern u16 D_80163330; +extern ? D_80163330; extern ? D_8016334C; extern s32 D_80163378; extern ? D_801633E0; -extern ? D_80163410; extern ? D_80163418; extern ? D_80163438; extern s16 D_8016344A; -extern s32 D_80163488; -//extern ? D_801634F8; extern ? D_801634FC; extern ? D_80163504; -extern u16 D_801646CC; +s16 gCurrentCourseId; /* unable to generate initializer */ static s16 D_800DCA20[0]; /* unable to generate initializer */ -static ?32 D_800ECFB4 = 0x41055555; /* const */ -static ?32 D_800ECFC8 = 0x40555555; /* const */ f32 D_800DCA4C[0x15] = { 50.0f, 35.0f, @@ -1826,7 +1795,8 @@ f32 D_800DCA4C[0x15] = { -1.0f, 40.0f, }; -s16 gCurrentCourseId; /* unable to generate initializer */ +static ?32 D_800ECFB4 = 0x41055555; /* const */ +static ?32 D_800ECFC8 = 0x40555555; /* const */ void func_80009B60(s32 playerId) { s16 sp94; @@ -1845,8 +1815,11 @@ void func_80009B60(s32 playerId) { ?32 *var_v0_2; ?32 *var_v1_3; Player *temp_v1; + Test *temp_v1_2; + Test *temp_v1_3; + Test *temp_v1_6; f32 *temp_a2_2; - f32 *temp_v0_16; + f32 *temp_v0_9; f32 *temp_v1_5; f32 *temp_v1_7; f32 temp_f0; @@ -1858,18 +1831,14 @@ void func_80009B60(s32 playerId) { f32 temp_f2_2; s16 *temp_v0_2; s16 *temp_v1_4; - s16 temp_v0_11; + s16 temp_v0_10; s16 temp_v0_12; s16 temp_v0_13; s16 temp_v0_14; - s16 temp_v0_17; - s16 temp_v0_19; - s16 temp_v0_20; - s16 temp_v0_21; s16 temp_v0_3; - s16 temp_v0_4; + s16 temp_v0_5; s16 temp_v0_6; - s16 temp_v0_8; + s16 temp_v0_7; s16 temp_v1_8; s16 var_a0_2; s16 var_a1; @@ -1886,11 +1855,6 @@ void func_80009B60(s32 playerId) { s32 temp_f6; s32 temp_t5; s32 temp_t6; - s32 temp_v0_10; - s32 temp_v0_18; - s32 temp_v0_5; - s32 temp_v0_7; - s8 temp_v0_9; u16 *temp_a1; u16 *temp_a3_2; u16 *temp_t0; @@ -1898,12 +1862,10 @@ void func_80009B60(s32 playerId) { u16 *temp_t6_2; u16 *temp_t8; u16 temp_a0; - u16 temp_a0_2; u16 var_a0; - void *temp_v0_15; - void *temp_v1_2; - void *temp_v1_3; - void *temp_v1_6; + u32 temp_v0_11; + u32 temp_v0_4; + void *temp_v0_8; temp_a3 = playerId * 4; temp_v0 = temp_a3 + &D_80163100; @@ -1946,8 +1908,7 @@ void func_80009B60(s32 playerId) { sp38 = temp_a3; D_80163448 = (s32) temp_a0; func_80008DC0((s32) temp_a0); - temp_v0_4 = gCurrentCourseId; - switch (temp_v0_4) { /* irregular */ + switch (gCurrentCourseId) { /* irregular */ case 11: func_80012DC0(playerId, sp40); if (playerId == 0) { @@ -1982,31 +1943,28 @@ void func_80009B60(s32 playerId) { func_8001AC10(playerId); } func_800099EC(playerId, sp40); - temp_v0_5 = gModeSelection; D_80162FD0 = 0; - switch (temp_v0_5) { /* switch 1; irregular */ - case TIME_TRIALS: /* switch 1 */ - case VERSUS: /* switch 1 */ - case BATTLE: /* switch 1 */ + switch (gModeSelection) { /* switch 1; irregular */ + case 1: /* switch 1 */ + case 2: /* switch 1 */ + case 3: /* switch 1 */ break; - case GRAND_PRIX: /* switch 1 */ + case 0: /* switch 1 */ break; } - temp_a1 = sp34 + &D_801631E0; + temp_a1 = sp34 + D_801631E0; *temp_a1 = 0; if ((sp40->effects & 0x1000) && (gCurrentCourseId != 0x0014)) { *temp_a1 = 1; } - temp_v0_6 = gCurrentCourseId; - if ((D_801646CC == 1) || (sp40->type & 0x800) || (temp_v0_6 == 0x0014)) { - if (temp_v0_6 != 0x000A) { + if (((u16) D_801646CC == 1) || (sp40->type & 0x800) || (gCurrentCourseId == 0x0014)) { + if (gCurrentCourseId != 0x000A) { *(&D_801634FC + (playerId * 0x10)) = 0.0f; } *(&D_80163504 + (playerId * 0x10)) = 0.0f; } - temp_v0_7 = D_80163448; - if (temp_v0_7 > 0) { - temp_v1_2 = (playerId * 0x10) + &D_801634F8; + if (D_80163448 > 0) { + temp_v1_2 = &D_801634F8[playerId]; temp_v1_2->unk4 = 0.0f; temp_v1_2->unkC = 0.0f; } @@ -2014,7 +1972,7 @@ void func_80009B60(s32 playerId) { sp24 = temp_t6_2; temp_a2_2 = sp38 + D_80164510; temp_a3_2 = sp34 + &D_801631F8; - *temp_a2_2 = (f32) D_80164550[temp_v0_7][*temp_t6_2].posY + 4.3f; + *temp_a2_2 = (f32) D_80164550[D_80163448][*temp_t6_2].posY + 4.3f; if ((*temp_a3_2 == 1) && (*temp_a1 == 0)) { sp2C = temp_a1; sp28 = temp_a2_2; @@ -2025,11 +1983,10 @@ void func_80009B60(s32 playerId) { sp40->pos[1] = *temp_a2_2; } *temp_a3_2 = *temp_a1; - temp_v0_8 = gCurrentCourseId; - if (temp_v0_8 != 4) { - if (temp_v0_8 != 0x000A) { + if (gCurrentCourseId != 4) { + if (gCurrentCourseId != 0x000A) { var_a0 = *temp_a1; - if (temp_v0_8 != 0x0014) { + if (gCurrentCourseId != 0x0014) { } else { goto block_63; @@ -2055,49 +2012,48 @@ block_63: func_80008424(playerId, *(&D_80163210 + sp38), sp40); return; } - temp_v0_9 = gPlayerCount; - if ((temp_v0_9 > 0) && (temp_v0_9 < 3) && (*(&D_80163330 + sp34) == 1) && ((s32) *(&D_8016334C + sp34) < *(gGPCurrentRaceRankByPlayerId + sp38))) { + if ((gPlayerCount > 0) && (gPlayerCount < 3) && (*(&D_80163330 + sp34) == 1) && ((s32) *(&D_8016334C + sp34) < *(gGPCurrentRaceRankByPlayerId + sp38))) { var_t0 = sp38 + &D_80163210; *var_t0 = 0x41055555; } else if (D_80162FD0 == (s16) 1U) { - temp_v1_3 = (playerId * 0x10) + &D_801634F8; + temp_v1_3 = &D_801634F8[playerId]; sp30 = temp_v1_3; var_t0 = sp38 + &D_80163210; - *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D0096B8); + *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D0096B8); temp_v1_3->unk4 = -0.5f; } else if (D_801645E0[D_80162FCE] > 0) { var_t0 = sp38 + &D_80163210; - *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D009418); + *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009418); } else { var_t0 = sp38 + &D_80163210; - *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D009568); + *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009568); } sp3C = var_t0; func_800131DC(playerId); func_8000D3B8(playerId); func_8000D438(playerId, D_801630E0); - temp_v0_10 = sp40->effects; - temp_f0 = D_80162FA0.unk0 - sp40->pos[0]; + temp_v0_4 = sp40->effects; + temp_f0 = D_80162FA0->unk0 - sp40->pos[0]; var_t0_2 = var_t0; - temp_f2 = D_80162FA0.unk8 - sp40->pos[2]; - if (!(temp_v0_10 & 0x80) && !(temp_v0_10 & 0x40) && !(temp_v0_10 & 0x800)) { + temp_f2 = D_80162FA0->unk8 - sp40->pos[2]; + if (!(temp_v0_4 & 0x80) && !(temp_v0_4 & 0x40) && !(temp_v0_4 & 0x800)) { if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) > 6400.0f) { if (D_80163448 == 0) { sp3C = var_t0_2; func_8000B140(playerId); if (*(&D_80162FF8 + sp34) > 0) { sp3C = var_t0_2; - func_8000BBD8(((s32) ((D_801630E0 + 5) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, *(&D_80163090 + sp38), D_8016344A, &D_80162FA0); + func_8000BBD8(((s32) ((D_801630E0 + 5) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, *(&D_80163090 + sp38), D_8016344A); } } sp3C = var_t0_2; - sp40->unk_02E = -get_angle_between_points(sp40->pos, &D_80162FA0); + sp40->unk_02C[1] = -get_angle_between_points(sp40->pos, D_80162FA0); } else { - sp40->unk_02E = (s16) D_80164590[D_80163448][(s32) (D_801630E0 + 4) % (s32) D_80164430]; + sp40->unk_02C[1] = D_80164590[D_80163448][(s32) (D_801630E0 + 4) % (s32) D_80164430]; } } sp3C = var_t0_2; - func_8003680C(sp40, 0, sp40); + func_8003680C(sp40, 0); func_80008424(playerId, *var_t0_2, sp40); return; } @@ -2125,16 +2081,16 @@ block_63: if (var_a1 >= 0xB5) { var_a1 -= 0x168; } - temp_v0_11 = var_a0_2 - var_a1; - var_v1 = temp_v0_11; - if (temp_v0_11 < -0xB4) { - var_v1 = temp_v0_11 + 0x168; + temp_v0_5 = var_a0_2 - var_a1; + var_v1 = temp_v0_5; + if (temp_v0_5 < -0xB4) { + var_v1 = temp_v0_5 + 0x168; } if (var_v1 >= 0xB5) { var_v1 -= 0x168; } - temp_v0_12 = (s16) *sp2C; - switch (temp_v0_12) { /* switch 2; irregular */ + temp_v0_6 = (s16) *sp2C; + switch (temp_v0_6) { /* switch 2; irregular */ case -1: /* switch 2 */ if (var_v1 >= 6) { *sp2C = 0; @@ -2159,26 +2115,24 @@ block_63: *temp_v1_5 = func_8000B7E4(playerId, (u16) D_80162FCE); sp28 = temp_v1_5; func_8000D438(playerId, (u16) D_80162FCE); - temp_v0_13 = gCurrentCourseId; - if (temp_v0_13 != 0x0014) { + if (gCurrentCourseId != 0x0014) { temp_a1_2 = *(D_80164450 + sp38); if (temp_a1_2 < 0xB) { - temp_a0_2 = D_801630E0; - temp_v1_6 = (playerId * 0x10) + &D_801634F8; - if ((temp_a1_2 > 0) && (temp_v0_13 == 0x000A)) { + temp_v1_6 = &D_801634F8[playerId]; + if ((temp_a1_2 > 0) && (gCurrentCourseId == 0x000A)) { sp30 = temp_v1_6; - func_8000BBD8(((s32) ((temp_a0_2 + 0x14) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, 0, 0); + func_8000BBD8(((s32) ((D_801630E0 + 0x14) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, 0.0f, 0); temp_v1_6->unk4 = 0.0f; } else { temp_t0 = sp38 + D_80163068; sp20 = temp_t0; sp30 = temp_v1_6; - func_8000BBD8(((s32) ((temp_a0_2 + 8) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, *temp_t0, D_8016344A); - temp_v1_6->unk0 = (?32) *temp_t0; + func_8000BBD8(((s32) ((D_801630E0 + 8) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, *temp_t0, D_8016344A); + temp_v1_6->unk0 = *temp_t0; } } if ((D_80162FD0 == 1) && (*(&D_80162FF8 + sp34) == 0)) { - func_8000BBD8(((s32) ((D_801630E0 + 7) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, 0xBF333333, D_8016344A); + func_8000BBD8(((s32) ((D_801630E0 + 7) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, -0.7f, D_8016344A); } if (D_80163448 == 0) { sp3C = sp34 + &D_80162FF8; @@ -2190,28 +2144,28 @@ block_63: } temp_t0_2 = sp38 + D_80163068; if (gCurrentCourseId == 0x0014) { - temp_v0_14 = *(&D_80163410 + sp34); - switch (temp_v0_14) { /* switch 3; irregular */ + temp_v0_7 = *(D_80163410 + sp34); + switch (temp_v0_7) { /* switch 3; irregular */ case 3: /* switch 3 */ - D_80162FA0.unk0 = *(&D_80163418 + sp38); - D_80162FA0.unk8 = (f32) *(&D_80163438 + sp38); + D_80162FA0->unk0 = *(&D_80163418 + sp38); + D_80162FA0->unk8 = (f32) *(&D_80163438 + sp38); break; case 4: /* switch 3 */ - temp_v0_15 = (((s32) (*sp24 + 0xA) % (s32) *(gWaypointCountByPathIndex + sp34)) * 8) + *(D_80164550 + sp38); - D_80162FA0.unk0 = (f32) temp_v0_15->unk0; - D_80162FA0.unk8 = (f32) temp_v0_15->unk4; + temp_v0_8 = (((s32) (*sp24 + 0xA) % (s32) *(gWaypointCountByPathIndex + sp34)) * 8) + *(D_80164550 + sp38); + D_80162FA0->unk0 = (f32) temp_v0_8->unk0; + D_80162FA0->unk8 = (f32) temp_v0_8->unk4; break; } } - temp_v0_16 = sp38 + &D_80163178; + temp_v0_9 = sp38 + &D_80163178; temp_v1_7 = sp38 + &D_801631A0; - D_80162FA0.unk0 = (D_80162FA0.unk0 + *temp_v0_16) * 0.5f; - D_80162FA0.unk8 = (f32) ((D_80162FA0.unk8 + *temp_v1_7) * 0.5f); - *temp_v0_16 = D_80162FA0.unk0; + D_80162FA0->unk0 = (D_80162FA0->unk0 + *temp_v0_9) * 0.5f; + D_80162FA0->unk8 = (f32) ((D_80162FA0->unk8 + *temp_v1_7) * 0.5f); + *temp_v0_9 = D_80162FA0->unk0; sp20 = temp_t0_2; - *temp_v1_7 = D_80162FA0.unk8; + *temp_v1_7 = D_80162FA0->unk8; temp_f2_2 = 1.5f * 182.0f; - temp_v1_8 = -get_angle_between_points(sp1C, &D_80162FA0) - sp40->unk_02E; + temp_v1_8 = -get_angle_between_points(sp1C, D_80162FA0) - sp40->unk_02C[1]; temp_f10 = (s32) temp_f2_2; var_a2 = temp_v1_8; temp_f6 = (s32) (-1.5f * 182.0f); @@ -2221,9 +2175,9 @@ block_63: if (var_a2 < (s16) temp_f6) { var_a2 = (s16) temp_f6; } - temp_v0_17 = *(D_801631D8 + sp34); + temp_v0_10 = *(D_801631D8 + sp34); var_v1_2 = D_800DCA20[gCurrentCourseId]; - switch (temp_v0_17) { /* switch 4; irregular */ + switch (temp_v0_10) { /* switch 4; irregular */ case 2: /* switch 4 */ temp_f0_2 = *temp_t0_2; if (temp_f0_2 > 0.5f) { @@ -2243,17 +2197,17 @@ block_63: } break; } - if ((*(&D_801632E8 + sp34) == 2) && ((temp_f0_4 = *temp_t0_2, (temp_f0_4 > 0.9f)) || (temp_f0_4 < -0.9f))) { + if ((*(D_801632E8 + sp34) == 2) && ((temp_f0_4 = *temp_t0_2, (temp_f0_4 > 0.9f)) || (temp_f0_4 < -0.9f))) { *sp2C = 0; sp40->effects &= ~0x10; } - temp_v0_18 = sp40->effects; - if (temp_v0_18 & 2) { - temp_v0_19 = (s16) *sp2C; + temp_v0_11 = sp40->effects; + if (temp_v0_11 & 2) { + temp_v0_12 = (s16) *sp2C; var_a1_2 = -0x0035; - if (temp_v0_19 != -1) { + if (temp_v0_12 != -1) { var_a1_2 = 0x0035; - if (temp_v0_19 != 1) { + if (temp_v0_12 != 1) { var_v0_2 = sp34 + &D_80163050; var_a1_2 = (s16) (s32) (((f32) *var_v0_2 + ((f32) (var_a2 * var_v1_2) / temp_f2_2)) / 2.0f); } else { @@ -2262,7 +2216,7 @@ block_63: } else { var_v0_2 = sp34 + &D_80163050; } - } else if (temp_v0_18 & 0x1000000C) { + } else if (temp_v0_11 & 0x1000000C) { var_a1_2 = 0; var_v0_2 = sp34 + &D_80163050; } else { @@ -2272,28 +2226,28 @@ block_63: sp3C = var_v0_2; sp94 = var_a1_2; sp20 = temp_t0_2; - func_8003680C((bitwise Player *) 182.0f, (s16) sp40, (Player *) var_a1_2, var_a2, sp40); + func_8003680C(sp40, var_a1_2); *var_v0_2 = var_a1_2; - if (((bitwise s32) *sp28 == 1) || (temp_v0_20 = (s16) *sp2C, (temp_v0_20 == 1)) || (temp_v0_20 == -1) || (sp40->effects & 0x1000000C)) { + if (((bitwise s32) *sp28 == 1) || (temp_v0_13 = (s16) *sp2C, (temp_v0_13 == 1)) || (temp_v0_13 == -1) || (sp40->effects & 0x1000000C)) { sp20 = temp_t0_2; var_v1_3 = sp38 + &D_80163028; - *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D009418); + *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009418); } else { sp20 = temp_t0_2; var_v1_3 = sp38 + &D_80163028; - *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D009568); + *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009568); } temp_f0_5 = *temp_t0_2; if ((temp_f0_5 > 0.9f) || (temp_f0_5 < -0.9f)) { sp34 = var_v1_3; - *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D009808); + *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009808); } if (D_80162FD0 == 1) { sp34 = var_v1_3; - *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D0096B8); + *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D0096B8); } - temp_v0_21 = (s16) *sp2C; - if ((temp_v0_21 == 2) || (temp_v0_21 == -2) || (temp_v0_21 == 3)) { + temp_v0_14 = (s16) *sp2C; + if ((temp_v0_14 == 2) || (temp_v0_14 == -2) || (temp_v0_14 == 3)) { *var_v1_3 = 0x40555555; } D_8016320C = *var_v1_3; @@ -2310,11 +2264,11 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80009B60.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -extern s16 D_80162FF8; -extern s16 D_80163010; -extern f32 D_80163090; -extern s16 D_801630E8; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 +extern ? D_80162FF8; +extern ? D_80163010; +extern ? D_80163090; +extern ? D_801630E8; void func_8000B140(s32 playerId) { s32 spFC; @@ -2345,6 +2299,7 @@ void func_8000B140(s32 playerId) { f32 temp_f14_2; f32 temp_f14_3; f32 temp_f16; + f32 temp_f22; f32 temp_f2; f32 temp_f2_2; f32 temp_f2_3; @@ -2364,7 +2319,6 @@ void func_8000B140(s32 playerId) { s16 temp_v0_3; s16 temp_v1_2; s16 var_t1; - s32 temp_a1; s32 temp_t5; s32 temp_v0_5; s32 var_t0; @@ -2372,14 +2326,16 @@ void func_8000B140(s32 playerId) { s32 var_t2; s32 var_v0_2; u16 temp_v0_2; + u32 temp_a1; temp_v1 = &gPlayers[playerId]; temp_a1 = temp_v1->effects; - if (((temp_a1 & 0x10) == 0) && (temp_t5 = playerId * 2, temp_v0 = *(&D_801630E8 + temp_t5), sp5C = temp_t5, (temp_v0 != 1)) && (temp_v0 != -1) && (temp_t8 = &D_80163068[playerId], sp54 = temp_t8, sp58 = playerId * 4, temp_f0 = *temp_t8, !(temp_f0 < -1.0f)) && !(temp_f0 > 1.0f) && (temp_v0_2 = temp_v1->characterId, (temp_v0_2 != 5)) && (temp_v0_2 != 7) && (temp_v0_2 != 4) && ((temp_a1 & 0x200) == 0)) { + if (!(temp_a1 & 0x10) && (temp_t5 = playerId * 2, temp_v0 = *(&D_801630E8 + temp_t5), sp5C = temp_t5, (temp_v0 != 1)) && (temp_v0 != -1) && (temp_t8 = &D_80163068[playerId], sp54 = temp_t8, sp58 = playerId * 4, temp_f0 = *temp_t8, !(temp_f0 < -1.0f)) && !(temp_f0 > 1.0f) && (temp_v0_2 = temp_v1->characterId, (temp_v0_2 != 5)) && (temp_v0_2 != 7) && (temp_v0_2 != 4) && !(temp_a1 & 0x200)) { var_t1 = (s16) gNearestWaypointByPlayerId[playerId]; var_a1 = &sp9C; var_v0 = &spB0[0]; var_t2 = 0; + temp_f22 = (temp_v1->unk_094 / 18.0f) * 216.0f; do { var_v0 += 2; var_a1 += 2; @@ -2400,8 +2356,8 @@ void func_8000B140(s32 playerId) { loop_15: if (var_t0 != playerId) { temp_v0_4 = &gPlayers[var_t0]; - if ((temp_v0_4->type & 0x8000) != 0) { - temp_f2 = ((temp_v1->unk_094 / 18.0f) * 216.0f) - 5.0f; + if (temp_v0_4->type & 0x8000) { + temp_f2 = temp_f22 - 5.0f; temp_v1_2 = (s16) gNearestWaypointByPlayerId[var_t0]; temp_f0_2 = (temp_v0_4->unk_094 / 18.0f) * 216.0f; if (temp_f0_2 < temp_f2) { @@ -2437,8 +2393,8 @@ loop_15: var_f18 = 1.0f; var_f20 = -1.0f; if (var_t2 > 0) { - if ((var_t2 & 1) != 0) { - temp_f2_2 = D_80163068[sp9C]; + if (var_t2 & 1) { + temp_f2_2 = *(D_80163068 + (sp9C * 4)); var_t0_2 = 1; if ((temp_f2_2 > -1.0f) && (temp_f2_2 < 1.0f)) { temp_f12 = ((sp74[0] + 10.0f) * (0.2f * (20.0f / ((f32) spB0[0] + 20.0f)))) / 20.0f; @@ -2464,7 +2420,7 @@ block_40: var_v0_2 = var_t0_2 * 2; var_a1_2 = &(&sp9C)[var_t0_2]; do { - temp_f2_3 = D_80163068[var_a1_2->unk0]; + temp_f2_3 = *(D_80163068 + (var_a1_2->unk0 * 4)); if ((temp_f2_3 > -1.0f) && (temp_f2_3 < 1.0f)) { temp_f0_3 = (((&sp74[0])[var_t0_2].unk0 + 10.0f) * (0.2f * (20.0f / ((f32) *(&spB0[0] + var_v0_2) + 20.0f)))) / 20.0f; if ((var_f18 == 1.0f) && (var_f20 == -1.0f)) { @@ -2483,7 +2439,7 @@ block_40: } temp_t4 = var_a1_2->unk2; var_a1_2 += 4; - temp_f0_4 = D_80163068[temp_t4]; + temp_f0_4 = *(D_80163068 + (temp_t4 * 4)); if ((temp_f0_4 > -1.0f) && (temp_f0_4 < 1.0f)) { temp_f2_4 = (((&sp74[0])[var_t0_2].unk4 + 10.0f) * (0.2f * (20.0f / ((f32) (&spB0[0] + var_v0_2)->unk2 + 20.0f)))) / 20.0f; if ((var_f18 == 1.0f) && (var_f20 == -1.0f)) { @@ -2582,73 +2538,60 @@ void func_8000B95C(s32 playerId, u16 waypointIndex, s32 pathIndex) { } } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 D_800ECFE4; -extern f32 D_80162FA0; -extern f32 D_80162FA8; -extern u16 D_80164430; - -void func_8000BA14(u16 arg0, f32 arg1, f32 arg2, s16 arg3) { - f32 sp54; - f32 sp50; - f32 sp4C; - f32 sp48; - f32 sp20; - f32 sp1C; - f32 temp_f0; - f32 temp_f0_2; +void func_8000BA14(u16 waypointIndex, f32 arg1, f32 arg2, s16 pathIndex) { + s32 stackPadding0; + s32 stackPadding1; + s32 stackPadding2; + s32 stackPadding3; + f32 waypointOneX; + f32 waypointOneZ; + f32 waypointTwoX; + f32 waypointTwoZ; + s32 stackPadding4; + f32 xdiff; + f32 zdiff; + f32 distance; f32 temp_f12; - f32 temp_f14; - f32 temp_f16; - f32 temp_f18; - f32 temp_f2; f32 temp_f2_2; - s16 *temp_v1; - s32 temp_t6; - void *temp_a1; - void *temp_v0; + TrackWaypoint *path; + TrackWaypoint *waypointTwo; + TrackWaypoint *waypointOne; - temp_t6 = arg0 & 0xFFFF; - temp_v1 = (&D_80164550)[arg3]; - temp_v0 = temp_v1 + (temp_t6 * 8); - temp_a1 = temp_v1 + (((temp_t6 + 1) % D_80164430) * 8); - temp_f18 = temp_v0->unk0; - sp54 = temp_f18; - temp_f2 = temp_a1->unk0; - sp48 = temp_a1->unk4; - temp_f0 = temp_v0->unk4; - temp_f16 = temp_f2 - temp_f18; - sp50 = temp_f0; - sp4C = temp_f2; - temp_f14 = sp48 - temp_f0; - sp1C = temp_f16; - sp20 = temp_f14; - temp_f0_2 = sqrtf((temp_f16 * temp_f16) + (temp_f14 * temp_f14)); - if (temp_f0_2 < D_800ECFE4) { - D_80162FA0.unk0 = temp_f2; - D_80162FA0.unk8 = sp48; - return; + waypointOne = &D_80164550[pathIndex][waypointIndex]; + waypointOneX = waypointOne->posX; + waypointOneZ = waypointOne->posZ; + waypointTwo = &D_80164550[pathIndex][(waypointIndex + 1) % D_80164430]; + waypointTwoX = waypointTwo->posX; + waypointTwoZ = waypointTwo->posZ; + zdiff = waypointTwoZ - waypointOneZ; + xdiff = waypointTwoX - waypointOneX; + if (xdiff && xdiff) {} + distance = sqrtf((xdiff * xdiff) + (zdiff * zdiff)); + if (distance < 0.01f) { + D_80162FA0[0] = waypointTwoX; + D_80162FA0[2] = waypointTwoZ; + } else { + D_80162FA0[0] = ((0.5f - (arg1 * 0.5f)) * (((arg2 * zdiff) / distance) + waypointOneX)) + ((1.0f - (0.5f - (arg1 * 0.5f))) * (((arg2 * -zdiff) / distance) + waypointOneX)); + D_80162FA0[2] = ((0.5f - (arg1 * 0.5f)) * (((arg2 * -xdiff) / distance) + waypointOneZ)) + ((1.0f - (0.5f - (arg1 * 0.5f))) * (((arg2 * xdiff) / distance) + waypointOneZ)); } - temp_f2_2 = 0.5f - (arg1 * 0.5f); - temp_f12 = 1.0f - temp_f2_2; - D_80162FA0.unk0 = (temp_f2_2 * (((arg2 * temp_f14) / temp_f0_2) + temp_f18)) + (temp_f12 * (((arg2 * -temp_f14) / temp_f0_2) + temp_f18)); - D_80162FA8 = (temp_f2_2 * (((arg2 * -temp_f16) / temp_f0_2) + sp50)) + (temp_f12 * (((arg2 * temp_f16) / temp_f0_2) + sp50)); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000BA14.s") -#endif #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 extern f32 D_80162FA8; -void func_8000BBD8(s32 waypointIndex, f32 arg1, s16 pathIndex) { +void func_8000BBD8(u16 waypointIndex, f32 arg1, s16 pathIndex) { f32 sp14; f32 sp10; f32 sp8; f32 sp4; f32 sp0; + TrackWaypoint *temp_a1; + TrackWaypoint *temp_t0; + TrackWaypoint *temp_t0_2; + TrackWaypoint *temp_t1; + TrackWaypoint *temp_v0; + TrackWaypoint *temp_v0_2; f32 temp_f0; f32 temp_f12; f32 temp_f4; @@ -2657,12 +2600,6 @@ void func_8000BBD8(s32 waypointIndex, f32 arg1, s16 pathIndex) { f32 temp_f8_2; s32 temp_t6; s32 temp_t8; - TrackWaypoint *temp_a1; - TrackWaypoint *temp_t0; - TrackWaypoint *temp_t0_2; - TrackWaypoint *temp_t1; - TrackWaypoint *temp_v0; - TrackWaypoint *temp_v0_2; temp_t6 = waypointIndex & 0xFFFF; temp_a1 = D_80164560[pathIndex]; @@ -3048,8 +2985,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000CD24.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern f32 D_800ECFF8; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 extern s32 D_80163598; extern s32 D_8016359C; @@ -3057,51 +2993,44 @@ s16 func_8000D100(f32 arg0, f32 arg1, f32 arg2, s16 arg3) { f32 temp_f14; f32 temp_f16; f32 temp_f2; + f32 var_f0; s16 temp_a0; s16 temp_v0; + s16 var_a0; + s16 var_v0; + s16 var_v1; s32 temp_a1; - s32 temp_a2; s32 temp_hi; void *temp_t0; - s16 phi_v0; - s32 phi_a0; - f32 phi_f0; - s16 phi_v1; - s16 phi_v1_2; - s16 phi_v1_3; temp_a0 = arg3 - 2; + var_f0 = 250000.0f; temp_a1 = arg3 + 7; - phi_v0 = temp_a0; - phi_f0 = D_800ECFF8; - phi_v1 = -1; - phi_v1_3 = -1; + var_v1 = -1; + var_v0 = temp_a0; if (temp_a0 < temp_a1) { - temp_a2 = D_8016359C; do { - phi_a0 = phi_v0; - if (phi_v0 < 0) { - phi_a0 = phi_v0 + temp_a2; + var_a0 = var_v0; + if (var_v0 < 0) { + var_a0 = var_v0 + D_8016359C; } - temp_hi = phi_a0 % temp_a2; - temp_t0 = (temp_hi * 4) + D_80163598; - temp_v0 = phi_v0 + 1; - temp_f2 = temp_t0->unk0 - arg0; - temp_f14 = temp_t0->unk2 - arg2; + temp_hi = var_a0 % (s32) D_8016359C; + temp_t0 = ((s16) temp_hi * 4) + D_80163598; + temp_v0 = var_v0 + 1; + temp_f2 = (f32) temp_t0->unk0 - arg0; + temp_f14 = (f32) temp_t0->unk2 - arg2; temp_f16 = (temp_f2 * temp_f2) + (temp_f14 * temp_f14); - if (temp_f16 < phi_f0) { - phi_f0 = temp_f16; - phi_v1_3 = temp_hi; + if (temp_f16 < var_f0) { + var_f0 = temp_f16; + var_v1 = (s16) temp_hi; } - phi_v0 = temp_v0; - phi_v1 = phi_v1_3; + var_v0 = temp_v0; } while (temp_v0 < temp_a1); } - phi_v1_2 = phi_v1; - if (phi_v1 == -1) { - phi_v1_2 = arg3; + if (var_v1 == -1) { + var_v1 = arg3; } - return phi_v1_2; + return var_v1; } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D100.s") @@ -3136,49 +3065,34 @@ s16 func_8000D33C(f32 posX, f32 posY, f32 posZ, s16 waypointIndex, s32 pathIndex return var_v1; } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -//extern ? D_801634F8; - -f32 func_8000D3B8(s32 arg0) { +f32 func_8000D3B8(s32 playerId) { + Test *temp_v0; f32 temp_f0; - f32 temp_f2; - f32 temp_f2_2; - f32 temp_f2_3; - void *temp_v0; - f32 phi_f2; + f32 var_f2; - temp_v0 = (arg0 * 0x10) + &D_801634F8; - temp_f2 = temp_v0->unk0; + temp_v0 = &D_801634F8[playerId]; + var_f2 = temp_v0->unk0; temp_f0 = temp_v0->unk4; - phi_f2 = temp_f2; - if (temp_f2 < temp_f0) { - temp_f2_2 = temp_f2 + temp_v0->unk8; - phi_f2 = temp_f2_2; - if (temp_f0 < temp_f2_2) { - goto block_5; + if (var_f2 < temp_f0) { + var_f2 += temp_v0->unk8; + if (temp_f0 < var_f2) { + var_f2 = temp_f0; } - } else if (temp_f0 < temp_f2) { - temp_f2_3 = temp_f2 - temp_v0->unk8; - phi_f2 = temp_f2_3; - if (temp_f2_3 < temp_f0) { -block_5: - phi_f2 = temp_f0; + } else if (temp_f0 < var_f2) { + var_f2 -= temp_v0->unk8; + if (var_f2 < temp_f0) { + var_f2 = temp_f0; } } - temp_v0->unk0 = phi_f2; - return phi_f2; + temp_v0->unk0 = var_f2; + return var_f2; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D3B8.s") -#endif #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(s32, f32, s16, u16); /* extern */ -f32 func_8000D3B8(s32, u16); /* extern */ -extern f32 D_80162FA0; -extern s16 D_80163380; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 +? func_8000BBD8(s32, f32, s16, u16); /* extern */ +extern ? D_80162FA0; +extern ? D_80163380; extern s16 D_8016344A; s16 gCurrentCourseId; /* unable to generate initializer */ @@ -3192,9 +3106,7 @@ void func_8000D438(s32 arg0, u16 arg1) { f32 temp_f0; s16 *temp_v1_2; s16 temp_v0; - s16 temp_v0_2; s16 temp_v1; - s32 temp_a0; s32 temp_hi; s32 var_a2; s32 var_a2_2; @@ -3207,12 +3119,11 @@ void func_8000D438(s32 arg0, u16 arg1) { sp1C = temp_a3 * 2; arg1 = temp_a3; sp26 = temp_v1; - temp_v0 = gCurrentCourseId; var_a2 = 6; - sp2C = func_8000D3B8(6, temp_a3); - if (temp_v0 != 4) { - if (temp_v0 != 0x000A) { - if (temp_v0 == 0x0014) { + sp2C = func_8000D3B8(arg0); + if (gCurrentCourseId != 4) { + if (gCurrentCourseId != 0x000A) { + if (gCurrentCourseId == 0x0014) { var_a2 = 1; } else if (temp_v1 < 6) { var_a2 = 8; @@ -3233,24 +3144,22 @@ void func_8000D438(s32 arg0, u16 arg1) { } } sp28 = var_a2; - arg1 = arg1; var_a2_2 = var_a2; temp_a3_2 = arg1; if (func_8000B820(arg0) == 1) { var_a2_2 = 5; } temp_v1_2 = (arg0 * 2) + &D_80163380; - temp_v0_2 = *temp_v1_2; - if (temp_v0_2 < var_a2_2) { - *temp_v1_2 = temp_v0_2 + 1; + temp_v0 = *temp_v1_2; + if (temp_v0 < var_a2_2) { + *temp_v1_2 = temp_v0 + 1; } if (var_a2_2 < *temp_v1_2) { *temp_v1_2 -= 1; } temp_hi = (s32) (*temp_v1_2 + temp_a3_2) % (s32) D_80164430; - temp_a0 = temp_hi & 0xFFFF; arg1 = (u16) temp_hi; - func_8000BBD8(temp_a0, sp2C, D_8016344A, temp_a3_2); + func_8000BBD8(temp_hi & 0xFFFF, sp2C, D_8016344A, temp_a3_2); sp48 = D_80162FA0.unk0; sp44 = D_80162FA0.unk8; func_8000BBD8(((s32) (arg1 + 1) % (s32) D_80164430) & 0xFFFF, sp2C, D_8016344A, arg1); @@ -3261,165 +3170,135 @@ void func_8000D438(s32 arg0, u16 arg1) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D438.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -void func_8000BBD8(u16, s32, s16, u16); /* extern */ -extern f32 D_80162FA0; - -void func_8000D6D0(Vec3f arg0, s16 *waypointIndex, f32 arg2, s32 arg3, s16 pathIndex, s16 arg5) { - s16 spA0; - u16 sp9E; - f32 sp98; - f32 sp90; - f32 sp58; - f32 sp54; - f32 sp50; - TrackWaypoint *sp4C; - f32 sp48; - f32 sp44; - f32 sp40; - f32 temp_f0; - f32 temp_f16; - f32 temp_f18; +#ifdef NON_MATCHING +// Something about the handling of D_80162FA0 is really off, can't figure out what +s16 func_8000D6D0(Vec3f arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIndex, s16 arg5) { + s32 stackPadding0; + s32 stackPadding1; + s32 stackPadding2; + s32 stackPadding3; + s16 waypoint2; + s16 waypoint1; + s32 stackPadding4; + s32 stackPadding5; + s32 stackPadding6; + s32 stackPadding7; + f32 distance; f32 temp_f20; f32 temp_f22; f32 temp_f24; - f32 temp_f4; - f32 temp_f4_2; + f32 var_f2; f32 var_f12; f32 var_f14; - f32 var_f2; s16 temp_v0; - s32 temp_hi; s32 temp_v1; - u16 temp_a3; + f32 xdiff; + f32 ydiff; + f32 zdiff; + Vec3f sp50; + TrackWaypoint *path; - sp4C = D_80164550[pathIndex]; - sp50 = arg0->unk0; - sp54 = arg0->unk4; - sp58 = arg0->unk8; - temp_f24 = arg0->unk8; - temp_f20 = arg0->unk0; - temp_f22 = arg0->unk4; + path = D_80164550[pathIndex]; + sp50[0] = arg0[0]; + sp50[1] = arg0[1]; + sp50[2] = arg0[2]; + temp_f20 = arg0[0]; + temp_f22 = arg0[1]; + temp_f24 = arg0[2]; temp_v0 = func_8000D2B4(temp_f20, temp_f22, temp_f24, *waypointIndex, (s32) pathIndex); *waypointIndex = temp_v0; - temp_a3 = gWaypointCountByPathIndex[pathIndex]; temp_v1 = temp_v0 + arg5; - temp_hi = temp_v1 % (s32) temp_a3; - sp9E = (u16) ((s32) (temp_v1 + 1) % (s32) temp_a3); - spA0 = (s16) temp_hi; - func_8000BBD8((s16) temp_hi & 0xFFFF, arg3, pathIndex, temp_a3); - temp_f4 = D_80162FA0.unk8; - sp98 = D_80162FA0.unk0; - sp90 = temp_f4; - func_8000BBD8(sp9E, arg3, pathIndex); - temp_f18 = ((f32) (sp4C[(s16) sp9E].posY + sp4C[spA0].posY) * 0.5f) - temp_f22; - temp_f16 = ((sp98 + D_80162FA0.unk0) * 0.5f) - temp_f20; - sp44 = temp_f18; - sp48 = temp_f16; - temp_f4_2 = ((temp_f4 + D_80162FA0.unk8) * 0.5f) - temp_f24; - sp40 = temp_f4_2; - temp_f0 = sqrtf((temp_f16 * temp_f16) + (temp_f18 * temp_f18) + (temp_f4_2 * temp_f4_2)); - if (temp_f0 > 0.01f) { - var_f2 = ((temp_f16 * arg2) / temp_f0) + temp_f20; - var_f12 = ((temp_f18 * arg2) / temp_f0) + temp_f22; - var_f14 = ((sp40 * arg2) / temp_f0) + temp_f24; + waypoint1 = temp_v1 % gWaypointCountByPathIndex[pathIndex]; + waypoint2 = (temp_v1 + 1) % gWaypointCountByPathIndex[pathIndex]; + func_8000BBD8(waypoint1, arg3, pathIndex); + func_8000BBD8(waypoint2, arg3, pathIndex); + ydiff = ((path[waypoint2].posY + path[waypoint1].posY) * 0.5f) - temp_f22; + xdiff = ((D_80162FA0[0] + D_80162FA0[0]) * 0.5f) - temp_f20; + zdiff = ((D_80162FA0[2] + D_80162FA0[2]) * 0.5f) - temp_f24; + distance = sqrtf((xdiff * xdiff) + (ydiff * ydiff) + (zdiff * zdiff)); + if (distance > 0.01f) { + var_f2 = ((xdiff * arg2) / distance) + temp_f20; + var_f12 = ((ydiff * arg2) / distance) + temp_f22; + var_f14 = ((zdiff * arg2) / distance) + temp_f24; } else { - var_f2 = temp_f20; + var_f2 = temp_f20; var_f12 = temp_f22; var_f14 = temp_f24; } - arg0->unk0 = var_f2; - arg0->unk4 = var_f12; - arg0->unk8 = var_f14; - func_80005FD0(&sp50, arg0); + arg0[0] = var_f2; + arg0[1] = var_f12; + arg0[2] = var_f14; + return func_80005FD0(sp50, arg0); } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D6D0.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(u16, s32, s16, s32); /* extern */ -extern f32 D_80162FA0; - -void func_8000D940(Vec3f arg0, s16 *arg1, f32 arg2, s32 arg3, s16 pathIndex) { - s16 spA8; - u16 spA6; - f32 spA0; - f32 sp98; - s32 sp60; - f32 sp5C; - f32 sp58; - f32 sp54; - f32 sp50; - f32 sp4C; - f32 sp48; - f32 temp_f0; - f32 temp_f16; - f32 temp_f18; +#ifdef NON_MATCHING +// Something about the handling of D_80162FA0 is really off, can't figure out what +s16 func_8000D940(f32 *arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIndex) { + s32 stackPadding0; + s32 stackPadding1; + s32 stackPadding2; + s32 stackPadding3; + s16 waypoint2; + s16 waypoint1; + s32 stackPadding4; + s32 stackPadding5; + s32 stackPadding6; + s32 stackPadding7; + s32 stackPadding8; + f32 distance; f32 temp_f20; f32 temp_f22; f32 temp_f24; - f32 temp_f4; - f32 temp_f4_2; + f32 var_f2; f32 var_f12; f32 var_f14; - f32 var_f2; s16 temp_v0; - s32 temp_a3; - s32 temp_t2; - s32 temp_v1; - TrackWaypoint *temp_v0_2; - u16 temp_t0; + s32 waypointCount; + f32 xdiff; + f32 ydiff; + f32 zdiff; + Vec3f sp54; + s32 stackPadding9; + TrackWaypoint *path; - sp54 = arg0->unk0; - sp58 = arg0->unk4; - temp_t0 = gWaypointCountByPathIndex[pathIndex]; - sp5C = arg0->unk8; - temp_f24 = arg0->unk8; - temp_f20 = arg0->unk0; - temp_f22 = arg0->unk4; - sp60 = (s32) temp_t0; - temp_v0 = func_8000D2B4(temp_f20, temp_f22, temp_f24, *arg1, (s32) pathIndex); - temp_v1 = temp_v0 + temp_t0; - temp_t2 = temp_v1 - 4; - temp_a3 = (s32) (temp_v1 - 3) % (s32) temp_t0; - *arg1 = temp_v0; - spA8 = (s16) temp_a3; - spA6 = (u16) (temp_t2 % (s32) temp_t0); - func_8000BBD8(temp_a3 & 0xFFFF, arg3, pathIndex, temp_a3); - temp_f4 = D_80162FA0.unk8; - spA0 = D_80162FA0.unk0; - sp98 = temp_f4; - func_8000BBD8(spA6, arg3, pathIndex); - temp_v0_2 = D_80164550[pathIndex]; - temp_f18 = ((f32) (temp_v0_2[(s16) spA6].posY + temp_v0_2[spA8].posY) * 0.5f) - temp_f22; - temp_f16 = ((spA0 + D_80162FA0.unk0) * 0.5f) - temp_f20; - sp4C = temp_f18; - sp50 = temp_f16; - temp_f4_2 = ((temp_f4 + D_80162FA0.unk8) * 0.5f) - temp_f24; - sp48 = temp_f4_2; - temp_f0 = sqrtf((temp_f16 * temp_f16) + (temp_f18 * temp_f18) + (temp_f4_2 * temp_f4_2)); - if (temp_f0 > 0.01f) { - var_f2 = ((temp_f16 * arg2) / temp_f0) + temp_f20; - var_f12 = ((temp_f18 * arg2) / temp_f0) + temp_f22; - var_f14 = ((sp48 * arg2) / temp_f0) + temp_f24; + sp54[0] = arg0[0]; + sp54[1] = arg0[1]; + sp54[2] = arg0[2]; + waypointCount = gWaypointCountByPathIndex[pathIndex]; + temp_f20 = arg0[0]; + temp_f22 = arg0[1]; + temp_f24 = arg0[2]; + temp_v0 = func_8000D2B4(temp_f20, temp_f22, temp_f24, *waypointIndex, (s32) pathIndex); + *waypointIndex = temp_v0; + waypoint1 = ((temp_v0 + waypointCount) - 3) % waypointCount; + waypoint2 = ((temp_v0 + waypointCount) - 4) % waypointCount; + func_8000BBD8(waypoint1, arg3, pathIndex); + func_8000BBD8(waypoint2, arg3, pathIndex); + ydiff = ((D_80164550[pathIndex][waypoint2].posY + D_80164550[pathIndex][waypoint1].posY) * 0.5f) - temp_f22; + xdiff = ((D_80162FA0[0] + D_80162FA0[0]) * 0.5f) - temp_f20; + zdiff = ((D_80162FA0[2] + D_80162FA0[2]) * 0.5f) - temp_f24; + distance = sqrtf((xdiff * xdiff) + (ydiff * ydiff) + (zdiff * zdiff)); + if (distance > 0.01f) { + var_f2 = ((xdiff * arg2) / distance) + temp_f20; + var_f12 = ((ydiff * arg2) / distance) + temp_f22; + var_f14 = ((zdiff * arg2) / distance) + temp_f24; } else { - var_f2 = temp_f20; + var_f2 = temp_f20; var_f12 = temp_f22; var_f14 = temp_f24; } - arg0->unk0 = var_f2; - arg0->unk4 = var_f12; - arg0->unk8 = var_f14; - func_80005FD0(&sp54, arg0); + arg0[0] = var_f2; + arg0[1] = var_f12; + arg0[2] = var_f14; + return func_80005FD0(sp54, arg0); } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D940.s") #endif -extern s32 D_8016359C; #ifdef MIPS_TO_C //generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de s16 func_8000D100(f32, f32, f32, s16); /* extern */ @@ -4014,117 +3893,95 @@ void func_8000F0E0(void) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 extern u16 D_80163348; extern ? D_8016334C; void func_8000F124(void) { - s32 temp_a0; s32 temp_a3; - s32 temp_s0; - s8 *temp_v0_2; - s8 temp_a2; - u16 *temp_v0; + s32 var_a0; + s32 var_a1; + s32 var_s0; + s8 *var_v0_2; + s8 temp_t9; + u16 *var_s1; + u16 *var_v0; + u16 *var_v0_3; + u16 *var_v0_4; + u16 temp_t9_2; u16 temp_v1; - void *temp_v0_3; - u16 *phi_v0; - u16 *phi_s1; - s8 *phi_v0_2; - s32 phi_s0; - u16 *phi_v0_3; - s32 phi_a0; - void *phi_v0_4; - s32 phi_a1; - s32 phi_a0_2; - s32 phi_a1_2; - s32 phi_a1_3; - s32 phi_a1_4; - s32 phi_a1_5; - phi_v0 = &D_80163348; + var_v0 = &D_80163348; do { - temp_v0 = phi_v0 + 2; - temp_v0->unk-2 = 0; - phi_v0 = temp_v0; - } while (temp_v0 != &D_8016334C); - if (!gDemoMode) { - phi_s1 = &D_80163348; - phi_s0 = 0; - if (gModeSelection == GRAND_PRIX) { + var_v0 += 2; + var_v0->unk-2 = 0; + } while (var_v0 != &D_8016334C); + if (gDemoMode != 1) { + var_s1 = &D_80163348; + var_s0 = 0; + if (gModeSelection == 0) { do { loop_5: - temp_a2 = gPlayerCount; - *phi_s1 = random_int(8); - phi_a1_2 = 0; - phi_a1_5 = 0; - if (temp_a2 < THREE_PLAYERS_SELECTED) { - phi_v0_2 = gCharacterSelections; - if (temp_a2 > ZERO_PLAYERS_SELECTED) { - if (temp_a2 > ZERO_PLAYERS_SELECTED) { + *var_s1 = random_int(8U); + var_a1 = 0; + if (gPlayerCount < 3) { + var_v0_2 = gCharacterSelections; + if (gPlayerCount > 0) { + var_a0 = 0; + if (gPlayerCount > 0) { do { - temp_v0_2 = phi_v0_2 + 1; - phi_v0_2 = temp_v0_2; - if (*phi_v0_2 == *phi_s1) { - phi_a1_5 = 1; + temp_t9 = *var_v0_2; + var_v0_2 += 1; + if (temp_t9 == *var_s1) { + var_a1 = 1; } - phi_a1_2 = phi_a1_5; - } while (temp_v0_2 < &gCharacterSelections[temp_a2]); + } while ((u32) var_v0_2 < (u32) &gCharacterSelections[gPlayerCount]); + var_a0 = 0; } - temp_a3 = phi_s0 & 3; - phi_a0 = 0; - phi_a1 = phi_a1_2; - phi_a0_2 = 0; - phi_a1_3 = phi_a1_2; - phi_a1_4 = phi_a1_2; - if (phi_s0 > 0) { - temp_v1 = *phi_s1; + temp_a3 = var_s0 & 3; + if (var_s0 > 0) { + temp_v1 = *var_s1; if (temp_a3 != 0) { - phi_v0_3 = (0 * 2) + &D_80163348; + var_v0_3 = &(&D_80163348)[0]; do { - temp_a0 = phi_a0 + 1; - phi_a0 = temp_a0; - phi_a0_2 = temp_a0; - if (*phi_v0_3 == temp_v1) { - phi_a1_3 = 1; + var_a0 += 1; + if (*var_v0_3 == temp_v1) { + var_a1 = 1; } - phi_v0_3 += 2; - phi_a1 = phi_a1_3; - phi_a1_4 = phi_a1_3; - } while (temp_a3 != temp_a0); - if (temp_a0 != phi_s0) { + var_v0_3 += 2; + } while (temp_a3 != var_a0); + if (var_a0 != var_s0) { goto block_20; } } else { block_20: - phi_v0_4 = (phi_a0_2 * 2) + &D_80163348; + var_v0_4 = &(&D_80163348)[var_a0]; do { - if (phi_v0_4->unk0 == temp_v1) { - phi_a1_4 = 1; + if (var_v0_4->unk0 == temp_v1) { + var_a1 = 1; } - if (phi_v0_4->unk2 == temp_v1) { - phi_a1_4 = 1; + if (var_v0_4->unk2 == temp_v1) { + var_a1 = 1; } - if (phi_v0_4->unk4 == temp_v1) { - phi_a1_4 = 1; + if (var_v0_4->unk4 == temp_v1) { + var_a1 = 1; } - temp_v0_3 = phi_v0_4 + 8; - phi_v0_4 = temp_v0_3; - if (phi_v0_4->unk6 == temp_v1) { - phi_a1_4 = 1; + temp_t9_2 = var_v0_4->unk6; + var_v0_4 += 8; + if (temp_t9_2 == temp_v1) { + var_a1 = 1; } - phi_a1 = phi_a1_4; - } while (temp_v0_3 != ((phi_s0 * 2) + &D_80163348)); + } while (var_v0_4 != &(&D_80163348)[var_s0]); } } - if (phi_a1 != 0) { + if (var_a1 != 0) { goto loop_5; } } } - temp_s0 = phi_s0 + 1; - phi_s1 += 2; - phi_s0 = temp_s0; - } while (temp_s0 != 2); + var_s0 += 1; + var_s1 += 2; + } while (var_s0 != 2); } } } @@ -4134,7 +3991,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000F124.s") // Delete track waypoints void func_8000F2BC(TrackWaypoint *arg0, size_t size) { - bzero((void *) arg0, size << 3); + bzero((void *) arg0, size * sizeof(TrackWaypoint)); } struct _struct_D_800DD9D0_0x10 { @@ -4225,11 +4082,8 @@ void func_8000F2DC(void) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80011A5C(); /* extern */ -void func_80011AB8(s32, s32); /* extern */ -void func_8001AB00(? *, s16, u16 *, u16); /* extern */ -extern f32 D_0D009418; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-13-2023 +? func_80011A5C(); /* extern */ extern ? D_80162F10; extern ? D_80162F50; extern ? D_80162F8C; @@ -4246,7 +4100,6 @@ extern s32 D_80163150; extern f32 D_80163178; extern f32 D_801631A0; extern s32 D_801631CC; -extern s16 D_801631E0; extern s16 D_801631F8; extern f32 D_80163210; extern s16 D_80163258; @@ -4260,37 +4113,25 @@ extern u16 D_80163348; extern ? D_8016334C; extern s16 D_80163350; extern s32 D_80163378; -extern s32 D_8016337C; extern s16 D_80163380; extern s16 D_80163398; extern s16 D_801633B0; extern s16 D_801633C8; extern s16 D_801633F8; extern f32 D_80163450; -extern s16 D_80163478; -extern u16 D_8016347A; -extern s32 D_80163488; -extern s16 D_8016348C; extern ? D_801634C0; -extern ? D_801634D8; extern s16 D_801634EC; extern s32 D_801634F0; extern s32 D_801634F4; -//extern ? D_801634F8; -extern u16 D_801637BC; extern s16 D_80164358; -extern u16 D_8016435A; -extern u16 D_8016435C; -extern ? D_80164378; -extern s32 D_801643E0; -extern s32 D_80164408; +extern s16 D_8016435A; +extern s16 D_8016435C; extern ? D_80164448; -extern ? D_80164478; extern ? D_80164538; extern f32 D_80164698; extern f32 D_8016469C; extern f32 D_801646A0; -extern s8 D_8018EE08; +s16 gCurrentCourseId; /* unable to generate initializer */ static f32 D_800DCAA0[0x15] = { 0.3f, 0.3f, @@ -4314,7 +4155,6 @@ static f32 D_800DCAA0[0x15] = { 0.5f, 0.5f, }; -s16 gCurrentCourseId; /* unable to generate initializer */ void func_8000F628(void) { void *sp104; @@ -4333,7 +4173,7 @@ void func_8000F628(void) { s32 *spBC; s16 *spB8; s16 *spB4; - s16 *spB0; + u16 *spB0; s16 *spAC; s32 *spA8; s32 *spA4; @@ -4354,13 +4194,11 @@ void func_8000F628(void) { s32 *sp5C; ? *sp58; ? *sp54; - ? *sp50; + s16 *sp50; ? *sp4C; - ? *temp_a0; ? *temp_a1; ? *temp_a2; ? *temp_v1; - ? *var_s5; ? *var_v0_2; ? *var_v0_4; ? *var_v1_2; @@ -4370,10 +4208,12 @@ void func_8000F628(void) { Player *temp_s1_3; Player *temp_s1_4; Player *var_s1; + Test *var_s5; f32 *var_ra; f32 *var_t2; f32 *var_t5; f32 temp_f0; + s16 *temp_a0; s16 *var_a3; s16 *var_t0; s16 *var_t1; @@ -4384,13 +4224,15 @@ void func_8000F628(void) { s16 temp_t9; s16 temp_t9_2; s16 temp_v0; + s16 temp_v0_2; s16 var_s0_2; + s16 var_s0_3; s32 *var_s4; s32 *var_s4_2; s32 *var_s6; s32 *var_t4; s32 temp_s3; - s32 temp_v0_2; + s32 temp_v0_3; s32 temp_v1_2; s32 temp_v1_3; s32 temp_v1_4; @@ -4405,15 +4247,14 @@ void func_8000F628(void) { u16 *var_v0_3; u16 *var_v1; u16 temp_t7; - u16 var_s0_3; spD4 = &D_80163210; spD0 = gLapCountByPlayerId; spB8 = &D_80163258; - spBC = &D_80164408; + spBC = D_80164408; spCC = gCourseCompletionPercentByPlayerId; spC8 = gTimePlayerLastTouchedFinishLine; - spB0 = &D_801631E0; + spB0 = D_801631E0; spB4 = &D_80163270; spAC = &D_801631F8; spA8 = D_80164450; @@ -4441,13 +4282,13 @@ void func_8000F628(void) { var_t0 = &D_80162FF8; var_a3 = &D_80163050; var_ra = &D_801631A0; - var_s6 = &D_801643E0; - var_s5 = &D_801634F8; + var_s6 = D_801643E0; + var_s5 = D_801634F8; var_s4 = gGPCurrentRaceRankByPlayerId; var_s2 = &D_80163330; var_s1 = gPlayers; sp4C = &D_801630B8; - sp50 = &D_801634D8; + sp50 = D_801634D8; sp58 = &D_80164538; sp54 = &D_801634C0; var_s0 = 0; @@ -4457,8 +4298,9 @@ void func_8000F628(void) { *var_a3 = 0; *var_t0 = 0; *var_t1 = 0; + temp_v0 = gCurrentCourseId; sp104 = var_s7 + gPlayerOne; - if (gCurrentCourseId < 0x14) { + if (temp_v0 < 0x14) { spD8 = var_ra; spF8 = var_a3; spF4 = var_t0; @@ -4477,7 +4319,7 @@ void func_8000F628(void) { spE4 = var_t3; spE0 = var_t4; spDC = var_t5; - *var_t2 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + &D_0D009418); + *var_t2 = *segmented_to_virtual_dupe_2((temp_v0 * 0x10) + (gCCSelection * 4) + D_0D009418); *var_t3 = 0; *var_t4 = 0; *var_t5 = 0.0f; @@ -4486,18 +4328,18 @@ void func_8000F628(void) { *spD0 = -1; *spCC = 0.0f; *spC8 = 0.0f; - if (gModeSelection == GRAND_PRIX) { - temp_v0 = *(var_fp + D_80165270); - *var_s4 = (s32) temp_v0; - *var_s6 = (s32) temp_v0; + if (gModeSelection == 0) { + temp_v0_2 = *(var_fp + D_80165270); + *var_s4 = (s32) temp_v0_2; + *var_s6 = (s32) temp_v0_2; } else { *var_s4 = var_s0; *var_s6 = var_s0; } - temp_v0_2 = *var_s4; - gGPCurrentRacePlayerIdByRank[temp_v0_2] = (s16) var_s0; - *(&D_80164378 + (temp_v0_2 * 2)) = (s16) var_s0; - *spBC = temp_v0_2; + temp_v0_3 = *var_s4; + gGPCurrentRacePlayerIdByRank[temp_v0_3] = (s16) var_s0; + D_80164378[temp_v0_3] = (s16) var_s0; + *spBC = temp_v0_3; *spB8 = 0; temp_s3 = var_s0 + 1; *spB4 = 0; @@ -4505,7 +4347,7 @@ void func_8000F628(void) { *spAC = 0; *spA8 = -0x00000014; *spA4 = -0x00000014; - *(&D_80164478 + (var_s1->characterId * 2)) = (s16) var_s0; + D_80164478[var_s1->characterId] = (s16) var_s0; *sp9C = 0.0f; *sp98 = 0.0f; spD8 = var_ra; @@ -4521,7 +4363,7 @@ void func_8000F628(void) { var_s5->unkC = temp_f0; var_s5->unk4 = temp_f0; var_s5->unk8 = 0.015f; - func_80011AB8(var_s0, -0x00000014); + func_80011AB8(var_s0); *sp90 = 0; var_s0 = temp_s3; *sp8C = 0; @@ -4595,18 +4437,18 @@ void func_8000F628(void) { temp_a1->unk-2 = 0; temp_a2->unk-2 = (s16) -1; } while (temp_s3 < 8); - D_801637BC.unk0 = 0; - D_801637BC.unk2 = 0; - if (!gDemoMode) { + D_801637BC->unk0 = 0; + D_801637BC->unk2 = 0; + if (gDemoMode == 0) { var_v0 = &D_80163344; var_s0_2 = 0; - if (gModeSelection == GRAND_PRIX) { + if (gModeSelection == 0) { var_a0 = &D_80163348; do { temp_t7 = *var_a0; var_v0 += 2; var_a0 += 2; - temp_t9 = *(&D_80164478 + (temp_t7 * 2)); + temp_t9 = D_80164478[temp_t7]; temp_v1_2 = temp_t9 & 0xFFFF; (&D_80163330)[temp_v1_2] = 1; *(&D_8016334C + (temp_v1_2 * 2)) = var_s0_2; @@ -4615,13 +4457,13 @@ void func_8000F628(void) { } while (var_s0_2 != 2); } } - if ((D_8018EE08 == (s8) 1U) && (gCurrentCourseId != 0x0014)) { + if ((D_8018EE08 == (s8) 1) && (gCurrentCourseId != 0x0014)) { var_s2_2 = &D_80163330; do { var_s2_2 += 2; var_s2_2->unk-2 = 0; } while ((u32) var_s2_2 < (u32) &D_80163340); - if (gModeSelection == VERSUS) { + if (gModeSelection == 2) { temp_t6 = cameras->playerId; temp_v1_3 = temp_t6 & 0xFFFF; (&D_80163330)[temp_v1_3] = 1; @@ -4639,7 +4481,7 @@ void func_8000F628(void) { *(&D_8016334C + (temp_v1_4 * 2)) = var_s0_3; var_s0_3 += 1; var_v0_2->unk-2 = temp_t6_2; - } while (var_s0_3 != (u16) 2); + } while (var_s0_3 != (s16) 2); } } var_v1 = gNearestWaypointByPlayerId; @@ -4655,7 +4497,7 @@ void func_8000F628(void) { } while ((u32) var_v1 < (u32) &D_80164448); D_8016347A = 0; var_v1_2 = &D_80162F10; - if (gCCSelection == CC_EXTRA) { + if (gCCSelection == 3) { D_8016347A = 1; } var_v0_4 = &D_80162F50; @@ -4681,25 +4523,25 @@ void func_8000F628(void) { D_80163488 = 0; D_8016348C = 0; D_801634EC = 0; - func_8001AB00(&D_80162F8C, -1, &D_80163330, 1U); - if (D_8018EE08 == (s8) 1U) { + func_8001AB00(); + if (D_8018EE08 == (s8) 1) { var_s2_3 = &D_80163330; var_s0_4 = 0; - if (gDemoMode) { + if (gDemoMode == (u16) 1) { do { - if (var_s2_3->unk0 == 1) { + if (var_s2_3->unk0 == (u16) 1) { temp_s1 = &gPlayers[var_s0_4]; temp_s1->statusEffects |= 0x02000000; } - if (var_s2_3->unk2 == 1) { + if (var_s2_3->unk2 == (u16) 1) { temp_s1_2 = &gPlayers[var_s0_4]; temp_s1_2->unkDE4 = (s32) (temp_s1_2->unkDE4 | 0x02000000); } - if (var_s2_3->unk4 == 1) { + if (var_s2_3->unk4 == (u16) 1) { temp_s1_3 = &gPlayers[var_s0_4]; temp_s1_3->unk1BBC = (s32) (temp_s1_3->unk1BBC | 0x02000000); } - if (var_s2_3->unk6 == 1) { + if (var_s2_3->unk6 == (u16) 1) { temp_s1_4 = &gPlayers[var_s0_4]; temp_s1_4->unk2994 = (s32) (temp_s1_4->unk2994 | 0x02000000); } @@ -4714,9 +4556,6 @@ void func_8000F628(void) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000F628.s") #endif -// dest src size pathIndex -u16 func_80011014(TrackWaypoint *, TrackWaypoint *, s32, s32); /* extern */ - extern uintptr_t gCoursePathTable[20][4]; extern uintptr_t D_800DC8D0[20][4]; @@ -4956,7 +4795,7 @@ void func_80010DBC(s32 pathIndex) { } #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 s16 gCurrentCourseId; /* unable to generate initializer */ void func_80010E6C(s32 pathIndex) { @@ -5378,19 +5217,13 @@ void func_80011AE4(s32 index) { } #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -void func_80011AB8(u16, u16 *); /* extern */ -void func_80011EC0(s32, u16); /* extern */ -void func_8002AA50(Player *, u16, u16 *); /* extern */ +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 +? func_80011EC0(s32, u16); /* extern */ extern ? D_80162EB8; -extern s16 D_801630E8; -extern s16 D_801631E0; +extern ? D_801630E8; extern void *D_801632B0; -extern s16 D_801632B8; -extern s16 D_801632D0; -extern s16 D_801632E8; -extern s16 D_80163350; -extern s16 D_801633F8; +extern ? D_80163350; +extern ? D_801633F8; extern ? D_801634FC; s16 gCurrentCourseId; /* unable to generate initializer */ @@ -5398,17 +5231,17 @@ void func_80011B14(s32 playerId, Player *player) { u16 sp2E; s32 sp1C; Player *temp_v0; + s16 *temp_a3; s16 temp_t1; s32 temp_t3; s32 temp_v1; - u16 *temp_a3; u16 temp_a2; void *temp_t0; void *temp_t6; temp_v1 = playerId * 2; - temp_a3 = temp_v1 + &D_801632B8; - temp_a2 = *temp_a3; + temp_a3 = &D_801632B8[playerId]; + temp_a2 = (u16) *temp_a3; temp_t0 = *(&D_80162EB8 + (gCurrentCourseId * 4)); temp_t6 = (temp_a2 * 8) + temp_t0; D_801632B0 = temp_t6; @@ -5417,12 +5250,12 @@ void func_80011B14(s32 playerId, Player *player) { temp_t3 = temp_t6->unk4; if ((temp_t1 == -1) && (temp_t6->unk2 == -1)) { D_801632B0 = temp_t0; - func_80011AB8(temp_a2, temp_a3); + func_80011AB8(playerId); return; } if (sp2E == temp_t1) { - *(&D_801632E8 + temp_v1) = 2; - *(&D_801632D0 + temp_v1) = temp_a2; + D_801632E8[playerId] = 2; + D_801632D0[playerId] = (s16) temp_a2; *temp_a3 = temp_a2 + 1; switch (temp_t3) { case 1: @@ -5430,7 +5263,7 @@ void func_80011B14(s32 playerId, Player *player) { return; case 2: sp1C = temp_v1; - func_8002AA50(player, temp_a2, temp_a3); + func_8002AA50(player); player->effects &= ~0x10; *(&D_801630E8 + temp_v1) = 0; return; @@ -5457,7 +5290,7 @@ void func_80011B14(s32 playerId, Player *player) { return; case 9: *(&D_801633F8 + temp_v1) = 1; - *(&D_801631E0 + temp_v1) = 0; + D_801631E0[playerId] = 0; temp_v0 = &gPlayers[playerId]; temp_v0->effects &= ~0x1000; return; @@ -5541,10 +5374,9 @@ void func_80011E38(s32 playerIndex) { } #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -void func_8002AA50(Player *, s16 *, s32); /* extern */ -extern s16 D_80162FF8; -extern s16 D_801630E8; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 +extern ? D_80162FF8; +extern ? D_801630E8; void func_80011EC0(s32 arg0, Player *player, s32 arg2, s32 arg3) { s16 *sp1C; @@ -5565,7 +5397,7 @@ void func_80011EC0(s32 arg0, Player *player, s32 arg2, s32 arg3) { temp_f0 = (f64) D_80163068[arg0]; if ((temp_f0 > -0.8) && (temp_f0 < 0.5)) { sp1C = temp_a2; - func_8002AA50(player, temp_a2, arg2); + func_8002AA50(player); player->effects |= 0x10; *temp_a2 = 1; return; @@ -5579,7 +5411,7 @@ void func_80011EC0(s32 arg0, Player *player, s32 arg2, s32 arg3) { temp_f0_2 = (f64) D_80163068[arg0]; if ((temp_f0_2 > -0.5) && (temp_f0_2 < 0.8)) { sp1C = temp_a2; - func_8002AA50(player, temp_a2, arg2); + func_8002AA50(player); player->effects |= 0x10; *temp_a2 = -1; return; @@ -5596,12 +5428,6 @@ void func_80011EC0(s32 arg0, Player *player, s32 arg2, s32 arg3) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80011EC0.s") #endif -extern s16 D_80162EB0; -f32 func_802AE1C0(f32, f32, f32); - -s32 func_8001168C(void *, void *, s32); - - void func_800120C8(void) { s32 i; s16 *temp; @@ -5751,8 +5577,6 @@ void init_course_vehicles(void) { } } -extern s16 D_80162EB0; - void func_80012780(TrainCarStuff *trainCar, s16 *arg1, u16 arg2) { trainCar->position[0] = (f32) arg1[0]; trainCar->position[1] = (f32) D_80162EB0; @@ -5765,12 +5589,6 @@ void func_80012780(TrainCarStuff *trainCar, s16 *arg1, u16 arg2) { trainCar->velocity[2] = 0.0f; } - -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -//void func_80012780(TrainStuff *, s32, s32); /* extern */ -extern s16 D_80162FCC; -//extern s32 D_80163598 - // This is really Vec2s D_80163598[465] but that does not match. // Likely because this is a shared pointer between courses. //extern uintptr_t *D_80163598; @@ -5860,11 +5678,6 @@ void func_80012A48(TrainCarStuff *trainCar, s16 arg1) { trainCarActor->velocity[2] = trainCar->velocity[2]; } -s32 func_800755FC(s32, Vec3f, f32); -s16 func_800DBAC(Vec3f, Vec3s, f32); -extern s16 D_80162FCC; - - void func_80012AC0(void) { s32 pad[3]; f32 temp_f20; @@ -5984,8 +5797,6 @@ void func_80012DC0(s32 playerId, Player *player) { } } -extern u16 D_801637BC[2]; - /** * Appears to check if the train is close to the crossing. * Implements D_801637BC as a counter @@ -6024,9 +5835,6 @@ void func_80013054(void) { } } -extern s16 D_801634D8[8]; -extern u16 D_801637BE; - void func_800131DC(s32 playerId) { D_801634D8[playerId] = 0; if (gCurrentCourseId == COURSE_KALAMARI_DESERT) { @@ -6049,8 +5857,6 @@ void func_800131DC(s32 playerId) { } } -extern s16 D_801630FC; -extern s8 gPlayerCount; void func_800132F4(void) { PaddleWheelBoatStuff *var_a1; s32 i; @@ -6086,9 +5892,7 @@ void func_800132F4(void) { } #ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s16 D_80162EB0; -extern s16 D_801630FC; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 extern s32 D_80163598; extern s32 D_8016359C; @@ -6135,12 +5939,12 @@ void func_800133C4(void) { sp7C = (f32) ((f64) var_s0->position[1] + 180.0); sp80 = (f32) ((f64) var_s0->position[2] + 45.0); func_80006114(&sp78, temp_s2, var_s0->yRotation); - func_80075A6C(var_s3, (s32) &sp78, 1.1f); + func_80075A6C(var_s3, &sp78, 1.1f); sp78 = (f32) ((f64) var_s0->position[0] + 30.0); sp7C = (f32) ((f64) var_s0->position[1] + 180.0); sp80 = (f32) ((f64) var_s0->position[2] + 45.0); func_80006114(&sp78, temp_s2, var_s0->yRotation); - func_80075A6C(var_s3, (s32) &sp78, 1.1f); + func_80075A6C(var_s3, &sp78, 1.1f); } if (random_int(0x0064U) == 0) { temp_s1 = var_s0->velocity; @@ -6245,9 +6049,6 @@ void func_80013854(Player *player) { } } -extern s16 D_801631C8; -extern s16 D_8016347A; - void func_800139E4(f32 arg0, f32 arg1, s32 arg2, s32 arg3, VehicleStuff *vehicle, TrackWaypoint *waypointList) { VehicleStuff *veh; TrackWaypoint *temp_v0; @@ -6389,12 +6190,8 @@ void func_80013D20(VehicleStuff *vehicle) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_800C9EF4(f32 *, u32); /* extern */ -extern s16 D_801631C8; -extern s16 D_801631E0; -extern s16 D_80163270; -extern s16 D_8016347A; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 +extern ? D_80163270; void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3, f32 arg4, s32 arg5, u32 arg6) { f32 spC4; @@ -6415,25 +6212,22 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 f64 temp_f0_5; f64 temp_f0_6; f64 temp_f20; - s16 temp_v0_3; - s16 temp_v1; s32 temp_s2; s32 temp_s7; - s32 temp_v0_6; + s32 temp_v0_4; s32 var_fp; - s8 temp_v0_4; - s8 temp_v0_7; + s8 temp_v0_3; + s8 temp_v0_5; u16 temp_v0; u16 temp_v0_2; - u16 temp_v0_5; + u16 temp_v1; u16 temp_v1_2; - u16 temp_v1_3; u16 var_s1; u32 var_a2; temp_s7 = playerId * 2; var_s0 = vehicle; - if (((*(&D_801631E0 + temp_s7) != 1) || ((temp_v0 = player->type, ((temp_v0 & 0x4000) != 0)) && !(temp_v0 & 0x1000))) && ((player->effects << 7) >= 0)) { + if (((D_801631E0[playerId] != 1) || ((temp_v0 = player->type, ((temp_v0 & 0x4000) != 0)) && !(temp_v0 & 0x1000))) && !(player->effects & 0x01000000)) { spC4 = player->pos[0]; var_fp = 0; spC0 = player->pos[1]; @@ -6450,7 +6244,7 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 if ((temp_f0 > -20.0) && (temp_f0 < 20.0)) { temp_f0_2 = (f64) temp_f24; if ((temp_f0_2 > -100.0) && (temp_f0_2 < 100.0) && (func_80006018(temp_f12, temp_f14, var_s0->velocity[0], var_s0->velocity[2], arg3, arg4, spC4, spBC) == (s32) 1U)) { - player->statusEffects |= REVERSE_EFFECT; + player->statusEffects |= 0x400000; } } } @@ -6458,16 +6252,15 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 if ((temp_v0_2 & 0x4000) && !(temp_v0_2 & 0x1000)) { temp_s2 = 1 << playerId; if ((temp_f20 > -300.0) && (temp_f20 < 300.0) && (temp_f0_3 = (f64) temp_f22, (temp_f0_3 > -20.0)) && (temp_f0_3 < 20.0) && (temp_f0_4 = (f64) temp_f24, (temp_f0_4 > -300.0)) && (temp_f0_4 < 300.0)) { - temp_v0_3 = D_801631C8; - if ((temp_v0_3 > 0) && (var_s0->someFlags == 0)) { - D_801631C8 = temp_v0_3 - 1; + if ((D_801631C8 > 0) && (var_s0->someFlags == 0)) { + D_801631C8 -= 1; var_s0->someFlags |= temp_s2; - func_800C9D80((f32 (*)[3]) var_s0->position, (f32 (*)[3]) var_s0->velocity, arg6); + func_800C9D80(var_s0->position, var_s0->velocity, arg6); } } else { - temp_v0_4 = var_s0->someFlags; - if (temp_v0_4 != 0) { - var_s0->someFlags = temp_v0_4 & ~temp_s2; + temp_v0_3 = var_s0->someFlags; + if (temp_v0_3 != 0) { + var_s0->someFlags = temp_v0_3 & ~temp_s2; if (var_s0->someFlags == 0) { D_801631C8 += 1; func_800C9EF4(var_s0->position, arg6); @@ -6476,29 +6269,27 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 } if ((temp_f20 > -200.0) && (temp_f20 < 200.0) && (temp_f0_5 = (f64) temp_f22, (temp_f0_5 > -20.0)) && (temp_f0_5 < 20.0) && (temp_f0_6 = (f64) temp_f24, (temp_f0_6 > -200.0)) && (temp_f0_6 < 200.0)) { if (!(var_s0->someFlagsTheSequel & temp_s2)) { - temp_v1 = D_8016347A; var_s1 = 0; - temp_v0_5 = *gWaypointCountByPathIndex; - switch (temp_v1) { /* irregular */ + switch (D_8016347A) { /* irregular */ case 0: sp9C = temp_s7 + &D_80163270; - temp_v0_6 = func_80007BF8((u16) var_s0->waypointIndex, gNearestWaypointByPlayerId[playerId], 0x000AU, 0U, (u16) (s32) temp_v0_5); - temp_v1_2 = *sp9C; - if ((temp_v1_2 == 0) && (temp_v0_6 > 0) && (player->unk_094 < var_s0->someMultiplier)) { + temp_v0_4 = func_80007BF8(var_s0->waypointIndex, gNearestWaypointByPlayerId[playerId], 0x000AU, 0U, (u16) (s32) *gWaypointCountByPathIndex); + temp_v1 = *sp9C; + if ((temp_v1 == 0) && (temp_v0_4 > 0) && (player->unk_094 < var_s0->someMultiplier)) { var_s1 = 1; } - if ((temp_v1_2 == 1) && (temp_v0_6 > 0)) { + if ((temp_v1 == 1) && (temp_v0_4 > 0)) { var_s1 = 1; } break; case 1: - if (func_80007BF8((u16) var_s0->waypointIndex, gNearestWaypointByPlayerId[playerId], 0U, 0x000AU, (u16) (s32) temp_v0_5) > 0) { + if (func_80007BF8(var_s0->waypointIndex, gNearestWaypointByPlayerId[playerId], 0U, 0x000AU, (u16) (s32) *gWaypointCountByPathIndex) > 0) { if (random_int(2U) == 0) { - temp_v1_3 = *(&D_80163270 + temp_s7); - if (temp_v1_3 == 0) { + temp_v1_2 = *(&D_80163270 + temp_s7); + if (temp_v1_2 == 0) { var_s1 = 1; } - if ((temp_v1_3 == 1) && (player->unk_094 < var_s0->someMultiplier)) { + if ((temp_v1_2 == 1) && (player->unk_094 < var_s0->someMultiplier)) { var_s1 = 1; } } else { @@ -6545,9 +6336,9 @@ void func_80013F7C(s32 playerId, Player *player, VehicleStuff *vehicle, f32 arg3 } } } else { - temp_v0_7 = var_s0->someFlagsTheSequel; - if (temp_v0_7 & temp_s2) { - var_s0->someFlagsTheSequel = temp_v0_7 & ~temp_s2; + temp_v0_5 = var_s0->someFlagsTheSequel; + if (temp_v0_5 & temp_s2) { + var_s0->someFlagsTheSequel = temp_v0_5 & ~temp_s2; } } } @@ -6600,40 +6391,28 @@ f32 func_800145A8(s16 arg0, f32 arg1, s16 arg2) { return arg1; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -extern ? D_801634FC; - +#ifdef NON_MATCHING +extern f32 D_801634FC[][4]; +// Something about the handling of `vehicle` is the source of +// mismatch. Not sure how to fix it. void func_800146B8(s32 playerId, s32 arg1, VehicleStuff *vehicle) { - VehicleStuff *var_s0; - s16 var_v1; - s32 var_a2; + s32 var_v1; s32 var_v0; + s32 var_s2; + s32 waypointCount; u16 temp_a1; + VehicleStuff *tempVehicle; - var_s0 = vehicle; - if (!((f64) *(&gPlayers->unk_094 + (playerId * 0xDD8)) < 1.6666666666666667) && (var_a2 = 0, (arg1 > 0))) { -loop_3: - temp_a1 = (u16) var_s0->waypointIndex; - var_v0 = 0; - var_v1 = D_80162FCE; -loop_4: - var_v0 += 3; - if (temp_a1 == (var_v1 % (s32) *gWaypointCountByPathIndex)) { - *(&D_801634FC + (playerId * 0x10)) = func_800145A8(var_s0->someType, D_80163068[playerId], (s16) temp_a1); - return; - } - var_v1 += 3; - if (var_v0 == 0x18) { - var_a2 += 1; - var_s0 += 0x34; - if (var_a2 == arg1) { - - } else { - goto loop_3; + waypointCount = gWaypointCountByPathIndex[0]; + if (!(gPlayers[playerId].unk_094 < 1.6666666666666667)) { + for (var_s2 = 0; var_s2 < arg1; var_s2++) { + temp_a1 = vehicle[var_s2].waypointIndex; + for (var_v0 = 0, var_v1 = D_80162FCE; var_v0 < 0x18; var_v0 += 3, var_v1 += 3) { + if ((var_v1 % waypointCount) == temp_a1) { + D_801634FC[playerId][0] = func_800145A8(vehicle[var_s2].someType, D_80163068[playerId], temp_a1); + return; + } } - } else { - goto loop_4; } } } @@ -6757,35 +6536,28 @@ void func_80014D30(s32 cameraId, s32 pathIndex) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 extern s32 D_80163238; -extern s16 gNearestWaypointByCameraId; -extern s16 D_80164670[]; - -extern s16 D_80164680; +extern ? D_80164680; extern ? D_801646C0; extern s32 D_801646C8; -extern s16 D_801646CC; extern ? D_801646D0; -extern s8 D_8018EDFC; void func_80014DE4(s32 arg0) { s16 *temp_v1; s16 temp_a2; - s32 temp_a1; s32 temp_v0; void *temp_a2_2; temp_v0 = arg0 * 2; D_801646CC = 0; - temp_v1 = D_80164678[temp_v0]; - *temp_v1 = D_80164670[temp_v0]; - temp_a1 = gModeSelection; - if ((temp_a1 != TIME_TRIALS) && ((gCupCourseSelection == CUP_COURSE_ONE) || (gDemoMode))) { + temp_v1 = &D_80164678[arg0]; + *temp_v1 = D_80164670[arg0]; + if ((gModeSelection != 1) && ((gCupCourseSelection == 0) || (gDemoMode == (u16) 1))) { goto block_8; } temp_a2 = *temp_v1; - if ((temp_a2 != 0) && (temp_a2 != 1) && (temp_a2 != 2) && (temp_a2 != 3)) { + if ((temp_a2 != 0) && (temp_a2 != (s16) 1) && (temp_a2 != 2) && (temp_a2 != 3)) { block_8: *temp_v1 = 0; } @@ -6797,171 +6569,125 @@ block_8: temp_a2_2->unk0 = 0; temp_a2_2->unk2 = 0; temp_a2_2->unk4 = 0; - if ((temp_a1 == TIME_TRIALS) && (D_8018EDFC == 0)) { + if ((gModeSelection == 1) && (D_8018EDFC == 0)) { *temp_v1 = 0; } - gNearestWaypointByCameraId = 0; - gNearestWaypointByCameraId = 0; - gNearestWaypointByCameraId = 0; - gNearestWaypointByCameraId = 0; + *gNearestWaypointByCameraId = 0; + *gNearestWaypointByCameraId = 0; + *gNearestWaypointByCameraId = 0; + *gNearestWaypointByCameraId = 0; } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014DE4.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -extern ? D_80164498; - f32 func_80014EE4(f32 arg0, s32 arg1) { f32 temp_f0; - f32 var_f12; f64 temp_f2; - f64 temp_f2_2; - f64 temp_f2_3; - f64 temp_f2_4; - f64 var_f14; - f64 var_f14_2; - f64 var_f14_3; - f64 var_f14_4; - s16 temp_v0; - var_f12 = arg0; - temp_v0 = *(&D_80164678 + (arg1 * 2)); - temp_f0 = *(&D_80164498 + (arg1 * 4)); - switch (temp_v0) { /* irregular */ + temp_f0 = D_80164498[arg1]; + switch (D_80164678[arg1]) { /* irregular */ default: - return 40.0f; + arg0 = 40.0f; + break; case 0: - var_f14 = (f64) var_f12; - temp_f2 = 40.0 + (f64) temp_f0; - if (temp_f2 < var_f14) { - var_f12 = (f32) (var_f14 - 1.0); - var_f14 = (f64) var_f12; - if (var_f14 < temp_f2) { - var_f12 = (f32) temp_f2; - var_f14 = (f64) var_f12; + temp_f2 = 40.0; + temp_f2 += temp_f0; + if (temp_f2 < arg0) { + arg0 -= 1.0; + if (arg0 < temp_f2) { + arg0 = temp_f2; } } - if (var_f14 < temp_f2) { - var_f12 = (f32) (var_f14 + 1.0); - if (temp_f2 < (f64) var_f12) { - return (f32) temp_f2; + if (arg0 < temp_f2) { + arg0 += 1.0; + if (temp_f2 < arg0) { + arg0 = temp_f2;; } } - return var_f12; + break; case 1: - var_f14_2 = (f64) var_f12; - temp_f2_2 = 60.0 + (f64) temp_f0; - if (var_f14_2 < temp_f2_2) { - var_f12 = (f32) (var_f14_2 + 1.0); - var_f14_2 = (f64) var_f12; - if (temp_f2_2 < var_f14_2) { - var_f12 = (f32) temp_f2_2; - var_f14_2 = (f64) var_f12; + temp_f2 = 60.0; + temp_f2 += temp_f0; + if (arg0 < temp_f2) { + arg0 += 1.0; + if (temp_f2 < arg0) { + arg0 = temp_f2; } } - if (temp_f2_2 < var_f14_2) { - var_f12 = (f32) (var_f14_2 - 1.0); - if ((f64) var_f12 < temp_f2_2) { - return (f32) temp_f2_2; + if (temp_f2 < arg0) { + arg0 -= 1.0; + if (arg0 < temp_f2) { + arg0 = temp_f2;; } } - /* Duplicate return node #29. Try simplifying control flow for better match */ - return var_f12; + break; case 3: - var_f14_3 = (f64) var_f12; - temp_f2_3 = 60.0 + (f64) temp_f0; - if (var_f14_3 < temp_f2_3) { - var_f12 = (f32) (var_f14_3 + 0.5); - var_f14_3 = (f64) var_f12; - if (temp_f2_3 < var_f14_3) { - var_f12 = (f32) temp_f2_3; - var_f14_3 = (f64) var_f12; + temp_f2 = 60.0; + temp_f2 += temp_f0; + if (arg0 < temp_f2) { + arg0 += 0.5; + if (temp_f2 < arg0) { + arg0 = temp_f2; } } - if (temp_f2_3 < var_f14_3) { - var_f12 = (f32) (var_f14_3 - 0.5); - if ((f64) var_f12 < temp_f2_3) { - return (f32) temp_f2_3; + if (temp_f2 < arg0) { + arg0 -= 0.5; + if (arg0 < temp_f2) { + arg0 = temp_f2; } } - /* Duplicate return node #29. Try simplifying control flow for better match */ - return var_f12; + break; case 2: - var_f14_4 = (f64) var_f12; - temp_f2_4 = 60.0 + (f64) temp_f0; - if (var_f14_4 < temp_f2_4) { - var_f12 = (f32) (var_f14_4 + 1.0); - var_f14_4 = (f64) var_f12; - if (temp_f2_4 < var_f14_4) { - var_f12 = (f32) temp_f2_4; - var_f14_4 = (f64) var_f12; + temp_f2 = 60.0; + temp_f2 += temp_f0; + if (arg0 < temp_f2) { + arg0 += 1.0; + if (temp_f2 < arg0) { + arg0 = temp_f2; } } - if (temp_f2_4 < var_f14_4) { - var_f12 = (f32) (var_f14_4 - 1.0); - if ((f64) var_f12 < temp_f2_4) { - var_f12 = (f32) temp_f2_4; + if (temp_f2 < arg0) { + arg0 -= 1.0; + if (arg0 < temp_f2) { + arg0 = temp_f2; } } - /* Duplicate return node #29. Try simplifying control flow for better match */ - return var_f12; + break; } + return arg0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80014EE4.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern ? D_801646C0; void func_800151A4(Camera *camera, s32 arg1) { - f32 sp44; - f32 sp40; - f32 sp3C; - f32 sp38; - f32 sp34; - f32 sp30; + f32 xnorm; + f32 ynorm; + f32 znorm; + f32 xdiff; + f32 ydiff; + f32 zdiff; + f32 distance; f32 sp28; - f32 sp20; - f32 temp_f0; - f32 temp_f10; - f32 temp_f14; - f32 temp_f16; - f32 temp_f2; - f32 temp_f2_2; - u16 temp_s1; + u16 thing; - temp_s1 = *(&D_801646C0 + (arg1 * 2)); - if (temp_s1 == 0) { + thing = D_801646C0[arg1]; + if (thing == 0) { camera->up[0] = 0.0f; camera->up[2] = 0.0f; camera->up[1] = 1.0f; - return; + } else { + xdiff = camera->lookAt[0] - camera->pos[0]; + ydiff = camera->lookAt[1] - camera->pos[1]; + zdiff = camera->lookAt[2] - camera->pos[2]; + distance = sqrtf((xdiff * xdiff) + (ydiff * ydiff) + (zdiff * zdiff)); + xnorm = xdiff / distance; + ynorm = ydiff / distance; + znorm = zdiff / distance; + sp28 = 1.0 - coss(thing); + camera->up[0] = (sp28 * xnorm * ynorm) - (sins(thing) * znorm); + camera->up[1] = coss(thing) + (sp28 * ynorm * ynorm); + camera->up[2] = (sins(thing) * xnorm) + (sp28 * ynorm * znorm); } - temp_f2 = camera->lookAt[0] - camera->pos[0]; - temp_f14 = camera->lookAt[1] - camera->pos[1]; - sp38 = temp_f2; - temp_f16 = camera->lookAt[2] - camera->pos[2]; - sp34 = temp_f14; - sp30 = temp_f16; - temp_f0 = sqrtf((temp_f2 * temp_f2) + (temp_f14 * temp_f14) + (temp_f16 * temp_f16)); - sp44 = temp_f2 / temp_f0; - temp_f10 = temp_f16 / temp_f0; - sp40 = temp_f14 / temp_f0; - sp3C = temp_f10; - sp28 = (f32) (1.0 - (f64) coss(temp_s1 & 0xFFFF)); - camera->up[0] = (sp28 * sp44 * sp40) - (sins(temp_s1 & 0xFFFF) * temp_f10); - temp_f2_2 = sp28 * sp40; - camera->up[1] = coss(temp_s1 & 0xFFFF) + (temp_f2_2 * sp40); - sp20 = temp_f2_2; - camera->up[2] = (sins(temp_s1 & 0xFFFF) * sp44) + (temp_f2_2 * temp_f10); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800151A4.s") -#endif UNUSED void func_8001530C(void) { @@ -7028,14 +6754,6 @@ void func_80015390(Camera *camera, UNUSED Player *player, UNUSED s32 arg2) { camera->rot[2] = 0; } -void func_8000BBD8(u16, f32, s16); /* extern */ -f32 func_802AE1C0(f32,f32,f32); -extern f32 D_80162FA0[]; -extern f32 D_801645F8[]; -extern f32 D_80164618[]; -extern f32 D_80164638[]; -extern f32 D_80164648[]; -extern f32 D_80164688[]; void func_80015544(s32 playerId, f32 arg1, s32 cameraId, s32 pathIndex) { Camera* camera; @@ -7067,103 +6785,66 @@ void func_80015544(s32 playerId, f32 arg1, s32 cameraId, s32 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } +void func_8001577C(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { + s16 cameraWaypoint; + s16 playerWaypoint; + s32 stackPadding0; + f32 xdiff; + f32 ydiff; + f32 zdiff; + s32 stackPadding1; + s32 playerId; + s32 stackPadding2; + s32 stackPadding3; + s32 stackPadding4; + s32 stackPadding5; + s32 stackPadding6; + s32 stackPadding7; + s32 stackPadding8; + s32 stackPadding9; + s32 stackPaddingA; + Player *player; + s32 waypointDiff; + s32 pathIndex; - -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80014D30(s32, s32); /* extern */ -void func_8001A348(s32, s32, s16); /* extern */ -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern s16 D_80164680; -extern ? D_80164688; - -void func_8001577C(Camera *camera, s32 arg1, s32 arg2, s32 arg3) { - s16 sp8E; - s16 sp8C; - f32 sp84; - f32 sp80; - f32 sp7C; - s32 sp74; - s32 sp44; - s32 sp3C; - s32 sp38; - s16 *sp34; - Player *temp_s2; - f32 temp_f12; - f32 temp_f14; - f64 temp_f0; - s16 *temp_t0; - s16 temp_t2; - s16 temp_t3; - s16 temp_v1; - s32 temp_v0; - s32 temp_v0_2; - s32 temp_v1_2; - s32 temp_v1_3; - s32 var_v1; - u16 temp_a1; - - temp_v1 = camera->playerId; - temp_a1 = gPathIndexByPlayerId[temp_v1]; - temp_t0 = &gNearestWaypointByCameraId[arg3]; - sp34 = temp_t0; - sp38 = arg3 * 2; - sp3C = temp_v1 * 2; - sp74 = (s32) temp_v1; - sp44 = (s32) temp_a1; - temp_s2 = &gPlayerOne[temp_v1]; - *temp_t0 = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], *temp_t0, (s32) temp_a1); - temp_t2 = (s16) gNearestWaypointByPlayerId[temp_v1]; - temp_t3 = *temp_t0; - sp8C = temp_t2; - sp8E = temp_t3; - if (func_80007BF8(temp_t2 & 0xFFFF, temp_t3 & 0xFFFF, 0x0032U, 0x000FU, (u16) (s32) gWaypointCountByPathIndex[sp44]) <= 0) { - temp_v1_2 = arg3 * 4; - sp3C = temp_v1_2; - func_8001A348(arg3, *(&D_80164680 + temp_v1_2), *(&D_80164688 + sp38)); - goto block_10; - } - temp_f0 = (f64) D_80163068[temp_v1]; - temp_v1_3 = arg3 * 4; - if (temp_f0 < -0.7) { - temp_v0 = temp_t2 - temp_t3; - if (((f64) *(&D_80164688 + temp_v1_3) < -0.5) && ((temp_v0 * temp_v0) < 5)) { - sp3C = temp_v1_3; - func_8001A348(arg3, 0x3F800000, 3); - goto block_10; + playerId = camera->playerId; + pathIndex = gPathIndexByPlayerId[playerId]; + player = gPlayerOne; + player += playerId; + gNearestWaypointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestWaypointByCameraId[cameraId], pathIndex); + playerWaypoint = gNearestWaypointByPlayerId[playerId]; + cameraWaypoint = gNearestWaypointByCameraId[cameraId]; + if (func_80007BF8(playerWaypoint, cameraWaypoint, 0x0032U, 0x000FU, gWaypointCountByPathIndex[pathIndex]) <= 0) { + func_8001A348(cameraId, D_80164688[cameraId], D_80164680[cameraId]); + } else { + if (D_80163068[playerId] < (-0.7)) { + waypointDiff = playerWaypoint - cameraWaypoint; + if ((D_80164688[cameraId] < (-0.5)) && ((waypointDiff * waypointDiff) < 5)) { + func_8001A348(cameraId, 1.0f, 3); + goto alable; + } + } + // I hate this, but a fakematch is a fakematch + if (D_80163068[playerId] > 0.7) { waypointDiff = playerWaypoint - cameraWaypoint; if ((D_80164688[cameraId] > 0.5) && ((waypointDiff * waypointDiff) < 5)) { + func_8001A348(cameraId, -1.0f, 2); + } } } - var_v1 = arg3 * 4; - if (temp_f0 > 0.7) { - temp_v0_2 = temp_t2 - temp_t3; - if (((f64) *(&D_80164688 + var_v1) > 0.5) && ((temp_v0_2 * temp_v0_2) < 5)) { - sp3C = var_v1; - func_8001A348(arg3, 0xBF800000, 2); -block_10: - var_v1 = sp3C; - } - } - camera->pos[0] = *(&D_801645F8 + var_v1); - camera->pos[1] = *(&D_80164618 + var_v1); - camera->pos[2] = *(&D_80164638 + var_v1); - camera->lookAt[0] = temp_s2->pos[0]; - camera->lookAt[1] = (f32) ((f64) temp_s2->pos[1] + 6.0); - camera->lookAt[2] = temp_s2->pos[2]; - func_80014D30(arg3, sp44); - temp_f12 = camera->lookAt[0] - camera->pos[0]; - sp80 = camera->lookAt[1] - camera->pos[1]; - sp84 = temp_f12; - temp_f14 = camera->lookAt[2] - camera->pos[2]; - sp7C = temp_f14; - camera->rot[1] = atan2s(temp_f12, temp_f14); - camera->rot[0] = atan2s(sqrtf((sp84 * sp84) + (temp_f14 * temp_f14)), sp80); +alable: + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; + camera->lookAt[0] = player->pos[0]; + camera->lookAt[1] = player->pos[1] + 6.0; + camera->lookAt[2] = player->pos[2]; + func_80014D30(cameraId, pathIndex); + xdiff = camera->lookAt[0] - camera->pos[0]; + ydiff = camera->lookAt[1] - camera->pos[1]; + zdiff = camera->lookAt[2] - camera->pos[2]; + camera->rot[1] = atan2s(xdiff, zdiff); + camera->rot[0] = atan2s(sqrtf((xdiff * xdiff) + (zdiff * zdiff)), ydiff); camera->rot[2] = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001577C.s") -#endif void func_80015A9C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { Camera* camera = cameras + cameraId; @@ -7189,19 +6870,7 @@ void func_80015A9C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(u16, s32, u16, s16, s32 *); /* extern */ -void func_80014D30(s32, s32); /* extern */ -void func_8001A348(s32, s32, s16, s32 *, s32 *); /* extern */ -extern f32 D_80162FA0; -extern s32 D_80163238; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern s16 D_80164680; -extern ? D_80164688; - +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 spA8; f32 spA4; @@ -7218,10 +6887,14 @@ void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 sp5C; /* compiler-managed */ s16 *sp58; u16 *sp54; - s32 *sp50; + f32 *sp50; s32 sp44; f64 sp38; + TrackWaypoint *temp_v0_2; + f32 *temp_a3; + f32 *temp_a3_2; f32 *temp_a3_3; + f32 *temp_a3_4; f32 temp_f0_2; f32 temp_f0_3; f32 temp_f14; @@ -7232,6 +6905,7 @@ void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 temp_f20_2; f32 temp_f2; f32 temp_f6; + f32 var_f12; f32 var_f18; f32 var_f20; f64 temp_f0; @@ -7241,13 +6915,8 @@ void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s16 *temp_t0; s16 temp_v0; s16 temp_v1; - s32 *temp_a3; - s32 *temp_a3_2; - s32 *var_a3; s32 temp_hi; - s32 var_f12; s32 var_s1; - TrackWaypoint *temp_v0_2; u16 *temp_t1_2; u16 *temp_t2; u16 temp_t1; @@ -7267,67 +6936,65 @@ void func_80015C94(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp54 = temp_t2; if (func_80007BF8((s16) gNearestWaypointByPlayerId[temp_v1] & 0xFFFF, *sp58 & 0xFFFF, 0x0032U, 0x000FU, (u16) (s32) *temp_t2) <= 0) { var_s1 = cameraId * 4; - temp_a3 = var_s1 + &D_80164688; + temp_a3 = &D_80164688[cameraId]; sp50 = temp_a3; - func_8001A348(cameraId, *temp_a3, *(&D_80164680 + sp5C), temp_a3); - var_a3 = temp_a3; + func_8001A348(cameraId, *temp_a3, (s32) *(D_80164680 + sp5C)); goto block_8; } temp_f0 = (f64) D_80163068[temp_v1]; if (temp_f0 < -0.5) { var_s1 = cameraId * 4; - temp_a3_2 = var_s1 + &D_80164688; + temp_a3_2 = &D_80164688[cameraId]; if ((f64) *temp_a3_2 < -0.5) { sp50 = temp_a3_2; - func_8001A348(cameraId, 0x3F800000, 7, temp_a3_2); - var_a3 = temp_a3_2; + func_8001A348(cameraId, 1.0f, 7); goto block_8; } } var_s1 = cameraId * 4; - var_a3 = var_s1 + &D_80164688; - var_f12 = *var_a3; + temp_a3_3 = &D_80164688[cameraId]; + var_f12 = *temp_a3_3; if ((temp_f0 > 0.5) && ((f64) var_f12 > 0.5)) { - sp50 = var_a3; - func_8001A348(var_f12, cameraId, 0xBF800000, (s32 *)6, var_a3); + sp50 = temp_a3_3; + func_8001A348(cameraId, -1.0f, 6); block_8: - var_f12 = *var_a3; + var_f12 = D_80164688[cameraId]; } temp_v1_2 = *sp54; temp_v0 = *sp58; - sp50 = var_a3; + sp50 = &D_80164688[cameraId]; temp_hi = (s32) (temp_v0 + 1) % (s32) temp_v1_2; sp78 = (u16) ((s32) (temp_v0 + 2) % (s32) temp_v1_2); sp7A = (s16) temp_hi; sp44 = (s32) unksp6A; - func_8000BBD8((u16) var_f12, (s16) temp_hi & 0xFFFF, (u16) var_f12, unksp6A, var_a3); - temp_f20 = (f32) ((f64) D_80162FA0.unk0 * 0.5); - temp_f18 = (f32) ((f64) D_80162FA0.unk8 * 0.5); + func_8000BBD8((s16) temp_hi & 0xFFFF, var_f12, unksp6A); + temp_f20 = (f32) ((f64) D_80162FA0->unk0 * 0.5); + temp_f18 = (f32) ((f64) D_80162FA0->unk8 * 0.5); sp90 = temp_f18; - func_8000BBD8(sp78, *var_a3, (u16) unksp6A, (s16) var_a3); + func_8000BBD8(sp78, D_80164688[cameraId], unksp6A); temp_v0_2 = D_80164550[sp68]; - temp_a3_3 = var_s1 + &D_801645F8; - temp_t0 = var_s1 + &D_80164618; - temp_f14 = (f32) ((f64) temp_f20 + ((f64) D_80162FA0.unk0 * 0.5)) - *temp_a3_3; - temp_t1_2 = var_s1 + &D_80164638; + temp_a3_4 = var_s1 + D_801645F8; + temp_t0 = var_s1 + D_80164618; + temp_f14 = (f32) ((f64) temp_f20 + ((f64) D_80162FA0->unk0 * 0.5)) - *temp_a3_4; + temp_t1_2 = var_s1 + D_80164638; temp_f6 = (f32) ((f64) (temp_v0_2[(s16) sp78].posY + temp_v0_2[sp7A].posY) * 0.5); sp54 = temp_t1_2; sp94 = temp_f6; sp8C = temp_f14; temp_f16 = temp_f6 - *temp_t0; sp58 = temp_t0; - sp5C = temp_a3_3; - temp_f0_2 = (f32) ((f64) temp_f18 + ((f64) D_80162FA0.unk8 * 0.5)) - *temp_t1_2; + sp5C = temp_a3_4; + temp_f0_2 = (f32) ((f64) temp_f18 + ((f64) D_80162FA0->unk8 * 0.5)) - *temp_t1_2; sp88 = temp_f16; sp84 = temp_f0_2; temp_f0_3 = sqrtf((temp_f14 * temp_f14) + (temp_f16 * temp_f16) + (temp_f0_2 * temp_f0_2)); if ((f64) temp_f0_3 != 0.0) { - temp_f2 = *(&D_80164648 + var_s1); - var_f20 = ((temp_f2 * temp_f14) / temp_f0_3) + *temp_a3_3; + temp_f2 = *(D_80164648 + var_s1); + var_f20 = ((temp_f2 * temp_f14) / temp_f0_3) + *temp_a3_4; sp94 = ((temp_f2 * temp_f16) / temp_f0_3) + *temp_t0; var_f18 = ((temp_f2 * sp84) / temp_f0_3) + *temp_t1_2; } else { - var_f20 = *temp_a3_3; + var_f20 = *temp_a3_4; var_f18 = *temp_t1_2; sp94 = *temp_t0; } @@ -7338,14 +7005,14 @@ block_8: sp90 = var_f18; sp54 = temp_t1_2; sp58 = temp_t0; - sp5C = temp_a3_3; + sp5C = temp_a3_4; temp_f2_2 = (f64) func_802AE1C0(var_f20, (f32) (temp_f16_2 + 30.0), var_f18); if ((temp_f2_2 < (temp_f16_2 - 20.0)) || (temp_f2_2 >= 3000.0)) { camera->pos[1] = (f32) (temp_f16_2 + 10.0); } else { camera->pos[1] = (f32) (temp_f2_2 + 8.0); } - *temp_a3_3 = var_f20; + *temp_a3_4 = var_f20; *temp_t1_2 = var_f18; *temp_t0 = sp94; camera->lookAt[0] = spA0->pos[0]; @@ -7364,8 +7031,6 @@ block_8: GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80015C94.s") #endif -extern f32 D_80164658[]; - void func_800162CC(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { Camera* camera = cameras + cameraId; @@ -7388,20 +7053,7 @@ void func_800162CC(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(u16, f32, s16, u16, s16, s16); /* extern */ -void func_80014D30(s32, s32); /* extern */ -void func_8001A348(s32, f32, s16, ?, ?); /* extern */ -extern f32 D_80162FA0; -extern s32 D_80163238; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern s16 D_80164680; -extern ? D_80164688; - +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s16 spB6; s16 spB4; @@ -7431,6 +7083,7 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 *sp3C; u16 *sp38; f64 sp28; + TrackWaypoint *temp_v0_2; f32 *temp_a3; f32 *temp_t0; f32 *temp_t1_2; @@ -7463,17 +7116,14 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s16 temp_t3_2; s16 temp_v0; s16 temp_v1; - s32 temp_a1; s32 temp_hi; s32 temp_ra; - TrackWaypoint *temp_v0_2; u16 *temp_t7; u16 temp_t3; u16 temp_v1_2; - temp_a1 = cameraId * 4; - temp_t5 = temp_a1 + &D_80164648; - temp_t4 = temp_a1 + &D_80164658; + temp_t5 = &D_80164648[cameraId]; + temp_t4 = &D_80164658[cameraId]; temp_f2 = *temp_t5; temp_v1 = camera->playerId; *temp_t5 = temp_f2 + ((*temp_t4 - temp_f2) * 0.5f); @@ -7488,12 +7138,12 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp50 = temp_v1 * 2; sp58 = temp_t5; sp54 = temp_t4; - sp5C = temp_a1; + sp5C = cameraId * 4; sp9C = (s32) temp_v1; sp68 = (s32) temp_t3; *sp44 = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], *temp_t1, (s32) temp_t3); temp_t1_2 = &D_80163068[temp_v1]; - temp_t5_2 = sp5C + &D_80164688; + temp_t5_2 = sp5C + D_80164688; temp_f2_2 = *temp_t1_2 - *temp_t5_2; temp_t3_2 = *sp44; temp_t7 = &gWaypointCountByPathIndex[sp68]; @@ -7507,7 +7157,7 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { spB4 = temp_t2; if (func_80007BF8(temp_t2 & 0xFFFF, temp_t3_2 & 0xFFFF, 0x000FU, 0x000FU, (u16) (s32) *temp_t7) <= 0) { sp3C = temp_t5_2; - func_8001A348(cameraId, *temp_t5_2, *(&D_80164680 + sp48)); + func_8001A348(cameraId, *temp_t5_2, (s32) *(D_80164680 + sp48)); var_f12 = *temp_t5_2; } else { temp_f0 = (f64) *temp_t1_2; @@ -7519,7 +7169,7 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { var_f12 = *temp_t5_2; if ((temp_f0 > 0.0) && ((f64) var_f12 > 0.0) && ((f64) temp_f2_3 < 0.01)) { sp3C = temp_t5_2; - func_8001A348((bitwise s32) var_f12, 0.0f, (s16) cameraId, 0xBF800000, 4); + func_8001A348(cameraId, -1.0f, 4); var_f12 = *temp_t5_2; } else { if ((temp_t3_2 < temp_t2) && ((temp_t2 - temp_t3_2) < 0xA)) { @@ -7546,24 +7196,24 @@ void func_80016494(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp78 = (u16) ((s32) (temp_v0 + 2) % (s32) temp_v1_2); sp7A = (s16) temp_hi; sp54 = (f32 *) unksp6A; - func_8000BBD8((bitwise u16) var_f12, 0.0f, (s16) temp_hi & 0xFFFF, (bitwise u16) var_f12, unksp6A, (s16) temp_hi); - temp_f6 = (f32) ((f64) D_80162FA0.unk0 * 0.5); + func_8000BBD8((s16) temp_hi & 0xFFFF, var_f12, unksp6A); + temp_f6 = (f32) ((f64) D_80162FA0->unk0 * 0.5); sp98 = temp_f6; - temp_f18 = (f32) ((f64) D_80162FA0.unk8 * 0.5); + temp_f18 = (f32) ((f64) D_80162FA0->unk8 * 0.5); sp90 = temp_f18; func_8000BBD8(sp78, *temp_t5_2, unksp6A); temp_v0_2 = D_80164550[sp68]; - temp_f4 = (f32) ((f64) temp_f6 + ((f64) D_80162FA0.unk0 * 0.5)); + temp_f4 = (f32) ((f64) temp_f6 + ((f64) D_80162FA0->unk0 * 0.5)); sp98 = temp_f4; - temp_a3 = sp5C + &D_801645F8; - temp_t0 = sp5C + &D_80164618; - temp_t1_3 = sp5C + &D_80164638; + temp_a3 = sp5C + D_801645F8; + temp_t0 = sp5C + D_80164618; + temp_t1_3 = sp5C + D_80164638; sp4C = temp_t1_3; sp50 = temp_t0; sp54 = temp_a3; temp_f14 = temp_f4 - *temp_a3; temp_f6_2 = (f32) ((f64) (temp_v0_2[(s16) sp78].posY + temp_v0_2[sp7A].posY) * 0.5); - temp_f2_4 = (f32) ((f64) temp_f18 + ((f64) D_80162FA0.unk8 * 0.5)) - *temp_t1_3; + temp_f2_4 = (f32) ((f64) temp_f18 + ((f64) D_80162FA0->unk8 * 0.5)) - *temp_t1_3; sp94 = temp_f6_2; sp8C = temp_f14; temp_f16 = temp_f6_2 - *temp_t0; @@ -7615,18 +7265,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80016494.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(s32, ?32, ?32, s32); /* extern */ -extern f32 D_80162FA0; -extern ? D_80163DD8; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern ? D_80164688; -static ?32 D_800ED260 = 0x3DCCCCCD; /* const */ -static ?32 D_800ED264 = 0xBDCCCCCD; /* const */ +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 s16 gCurrentCourseId; /* unable to generate initializer */ void func_80016C3C(s32 arg0, s32 arg1, s32 cameraId) { @@ -7637,10 +7276,10 @@ void func_80016C3C(s32 arg0, s32 arg1, s32 cameraId) { s32 *sp34; f32 *sp2C; f32 *sp28; - ?32 *var_s2; Camera *temp_v0_2; f32 *temp_t2; f32 *temp_t3; + f32 *var_s2; f32 temp_f12; f32 temp_f2; s16 *temp_s1; @@ -7648,63 +7287,57 @@ void func_80016C3C(s32 arg0, s32 arg1, s32 cameraId) { s16 temp_v1_3; s32 *temp_v0; s32 *temp_v1; - s32 temp_t6; - s32 temp_t6_2; - s32 temp_t8; + s32 temp_hi; s32 var_a3; - TrackWaypoint *temp_t7; u16 temp_s0; if (random_int(0x0064U) < 0x32) { - temp_t6 = cameraId * 4; - var_s2 = temp_t6 + &D_80164688; - var_a3 = temp_t6; - *var_s2 = 0x3DCCCCCD; + var_s2 = &D_80164688[cameraId]; + var_a3 = cameraId * 4; + *var_s2 = 0.1f; } else { - temp_t8 = cameraId * 4; - var_s2 = temp_t8 + &D_80164688; - var_a3 = temp_t8; - *var_s2 = 0xBDCCCCCD; + var_s2 = &D_80164688[cameraId]; + var_a3 = cameraId * 4; + *var_s2 = -0.1f; } - temp_v1 = var_a3 + &D_80163DD8; + 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; + *var_s2 = 0.0f; } temp_s1 = &gNearestWaypointByCameraId[cameraId]; temp_s0 = gWaypointCountByPathIndex[*temp_v1]; - temp_t6_2 = (s16) *temp_s1 % (s32) temp_s0; - *temp_s1 = (s16) temp_t6_2; + temp_hi = (s16) *temp_s1 % (s32) temp_s0; + *temp_s1 = (s16) temp_hi; sp3C = var_a3; - func_8000BBD8(temp_t6_2 & 0xFFFF, *var_s2, 0, var_a3); + func_8000BBD8(temp_hi & 0xFFFF, *var_s2, 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 = 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 = (f32) (*D_80164550)[temp_v1_2].posY; - *(&D_80164658 + var_a3) = 16.666666f; - *(&D_80164648 + var_a3) = 0.0f; + *(D_80164658 + var_a3) = 16.666666f; + *(D_80164648 + var_a3) = 0.0f; sp44 = (u16) ((s32) (temp_v1_2 + 0xB) % (s32) temp_s0); sp28 = temp_t3; sp2C = temp_t2; sp34 = temp_v0; - func_8000BBD8((s16) ((s32) (temp_v1_2 + 0xA) % (s32) temp_s0) & 0xFFFF, *var_s2, 0, var_a3); - 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, *var_s2, 0); + temp_f2 = (f32) ((f64) D_80162FA0->unk0 * 0.5); + temp_f12 = (f32) ((f64) D_80162FA0->unk8 * 0.5); sp5C = temp_f2; sp54 = temp_f12; - func_8000BBD8((bitwise s32) temp_f12, (?32) sp44, *var_s2, 0); + func_8000BBD8(sp44, *var_s2, 0); temp_v1_3 = *temp_s1; - temp_t7 = *D_80164550; 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[1] = (f32) ((f64) ((f32) (temp_t7[(s16) ((s32) (temp_v1_3 + 6) % (s32) temp_s0)].posY + temp_t7[(s16) ((s32) (temp_v1_3 + 5) % (s32) temp_s0)].posY) * 0.5f) + 8.0); + 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[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; temp_v0_2->pos[2] = *sp28; @@ -7714,18 +7347,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80016C3C.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(u16, s32, s16, s16); /* extern */ -void func_80014D30(s32, s32, f32 *); /* extern */ -extern f32 D_80162FA0; -extern s32 D_80163238; -extern ? D_80163DD8; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern ? D_80164688; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 s16 gCurrentCourseId; /* unable to generate initializer */ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { @@ -7752,6 +7374,9 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { 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_f0; @@ -7779,18 +7404,13 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 *temp_v1; s32 temp_hi; s32 temp_t2; - s32 temp_t6; s32 temp_v0; - TrackWaypoint **temp_t2_2; - TrackWaypoint *temp_t0_2; - TrackWaypoint *temp_t0_3; - temp_t6 = cameraId * 4; - temp_t1 = temp_t6 + &D_80164648; + temp_t1 = &D_80164648[cameraId]; temp_f2 = *temp_t1; - temp_a1 = temp_t6 + &D_80163DD8; + temp_a1 = &D_80163DD8[cameraId]; temp_t2 = *temp_a1; - *temp_t1 = temp_f2 + ((*(&D_80164658 + temp_t6) - temp_f2) * 0.5f); + *temp_t1 = temp_f2 + ((D_80164658[cameraId] - temp_f2) * 0.5f); temp_t0 = &gNearestWaypointByCameraId[cameraId]; D_80163238 = (s32) camera->playerId; temp_a3 = *temp_t0; @@ -7799,7 +7419,7 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp48 = temp_t1; sp40 = temp_t0; sp44 = temp_a1; - sp4C = temp_t6; + sp4C = cameraId * 4; sp5C = temp_t2; *sp40 = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], temp_a3, temp_t2); if (gCurrentCourseId == 4) { @@ -7812,16 +7432,16 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { } } temp_a3_3 = *sp40; - temp_v1 = sp4C + &D_80164688; + 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); - sp8C = (f32) ((f64) D_80162FA0.unk0 * 0.5); - sp84 = (f32) ((f64) D_80162FA0.unk8 * 0.5); - func_8000BBD8(sp6C, *sp44, unksp3E); - sp8C = (f32) ((f64) sp8C + ((f64) D_80162FA0.unk0 * 0.5)); - sp84 = (f32) ((f64) sp84 + ((f64) D_80162FA0.unk8 * 0.5)); + func_8000BBD8((s16) ((s32) (temp_a3_3 + 0xA) % sp58) & 0xFFFF, *temp_v1, unksp5E); + sp8C = (f32) ((f64) D_80162FA0->unk0 * 0.5); + sp84 = (f32) ((f64) D_80162FA0->unk8 * 0.5); + func_8000BBD8(sp6C, (bitwise f32) *sp44, unksp3E); + 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_t2_2 = &D_80164550[sp5C]; temp_t0_2 = *temp_t2_2; @@ -7830,23 +7450,23 @@ 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, *sp44, unksp3E, temp_a3_4); - temp_f14 = (f32) ((f64) D_80162FA0.unk0 * 0.5); - temp_f16 = (f32) ((f64) D_80162FA0.unk8 * 0.5); + func_8000BBD8((s16) temp_hi & 0xFFFF, (bitwise f32) *sp44, unksp3E); + 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, *sp44, unksp3E); + func_8000BBD8(sp6C, (bitwise f32) *sp44, unksp3E); temp_t0_3 = *sp2C; - temp_a0 = sp4C + &D_801645F8; + temp_a0 = sp4C + D_801645F8; 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_f18 = (f32) ((f64) temp_f14 + ((f64) D_80162FA0.unk0 * 0.5)) - *temp_a0; + temp_a1_2 = sp4C + D_80164618; + 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 = sp4C + D_80164638; sp3C = temp_a2; sp7C = temp_f2_2; - temp_f8 = (f32) ((f64) temp_f16 + ((f64) D_80162FA0.unk8 * 0.5)) - *temp_a2; + temp_f8 = (f32) ((f64) temp_f16 + ((f64) D_80162FA0->unk8 * 0.5)) - *temp_a2; sp80 = temp_f18; sp40 = temp_a1_2; sp44 = temp_a0; @@ -7875,7 +7495,7 @@ void func_80017054(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->lookAt[0] = sp8C; camera->lookAt[2] = sp84; camera->lookAt[1] = (f32) ((f64) sp88 + 8.0); - func_80014D30(cameraId, sp5C, temp_a2); + func_80014D30(cameraId, sp5C); temp_f12 = camera->lookAt[0] - camera->pos[0]; spA8 = camera->lookAt[1] - camera->pos[1]; spAC = temp_f12; @@ -7912,20 +7532,7 @@ void func_80017720(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(u16, f32, s16, s32); /* extern */ -void func_80014D30(s32, s32, f32 *, f32 *); /* extern */ -void func_8001A348(s32, f32, s16); /* extern */ -extern f32 D_80162FA0; -extern s32 D_80163238; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern s16 D_80164680; -extern ? D_80164688; - +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s16 sp9E; s16 sp9C; @@ -7950,6 +7557,7 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 sp30; s32 sp2C; s16 *sp28; + TrackWaypoint *temp_v0_3; f32 *temp_a1; f32 *temp_a2; f32 *temp_a3; @@ -7976,15 +7584,14 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 temp_hi_2; s32 temp_t3; s32 temp_t4; - TrackWaypoint *temp_v0_3; u16 temp_ra; temp_v0 = camera->playerId; temp_t4 = cameraId * 4; - temp_a1 = temp_t4 + &D_80164688; - temp_t6 = temp_t4 + &D_80164648; + temp_a1 = &D_80164688[cameraId]; + temp_t6 = &D_80164648[cameraId]; sp3C = temp_t6; - temp_v1 = temp_t4 + &D_80164658; + temp_v1 = &D_80164658[cameraId]; *temp_a1 = D_80163068[temp_v0]; temp_f16 = *temp_t6; temp_t3 = temp_v0 * 0xDD8; @@ -8009,7 +7616,7 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp9E = temp_t1_2; if (func_80007BF8(temp_hi & 0xFFFF, temp_t1_2 & 0xFFFF, 0x000DU, 1U, (u16) sp4C) <= 0) { sp44 = temp_t4; - func_8001A348(cameraId, *sp40, *(&D_80164680 + sp2C)); + func_8001A348(cameraId, *sp40, (s32) *(D_80164680 + sp2C)); } else { if ((temp_t1_2 < sp9C) && ((sp9C - temp_t1_2) < 3)) { *temp_v1 = (f32) ((f64) *(&gPlayers->unk_094 + temp_t3) + 0.1); @@ -8032,23 +7639,23 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp62 = (s16) temp_hi_2; sp44 = temp_t4; sp38 = (f32 *) unksp52; - func_8000BBD8((s16) temp_hi_2 & 0xFFFF, *sp40, unksp52, sp4C); - temp_f2 = (f32) ((f64) D_80162FA0.unk0 * 0.5); - temp_f14 = (f32) ((f64) D_80162FA0.unk8 * 0.5); + func_8000BBD8((s16) temp_hi_2 & 0xFFFF, *sp40, unksp52); + temp_f2 = (f32) ((f64) D_80162FA0->unk0 * 0.5); + temp_f14 = (f32) ((f64) D_80162FA0->unk8 * 0.5); sp80 = temp_f2; sp78 = temp_f14; func_8000BBD8(sp60, *sp40, unksp52); temp_v0_3 = D_80164550[sp50]; - temp_a2 = temp_t4 + &D_80164618; - temp_v1_2 = temp_t4 + &D_801645F8; - temp_a3 = temp_t4 + &D_80164638; - temp_f16_2 = (f32) ((f64) temp_f2 + ((f64) D_80162FA0.unk0 * 0.5)) - *temp_v1_2; + temp_a2 = &D_80164618[cameraId]; + temp_v1_2 = &D_801645F8[cameraId]; + temp_a3 = &D_80164638[cameraId]; + temp_f16_2 = (f32) ((f64) temp_f2 + ((f64) D_80162FA0->unk0 * 0.5)) - *temp_v1_2; sp34 = temp_a3; sp40 = temp_v1_2; sp74 = temp_f16_2; sp38 = temp_a2; sp70 = (f32) ((f64) (temp_v0_3[(s16) sp60].posY + temp_v0_3[sp62].posY) * 0.5) - *temp_a2; - sp6C = (f32) ((f64) temp_f14 + ((f64) D_80162FA0.unk8 * 0.5)) - *temp_a3; + sp6C = (f32) ((f64) temp_f14 + ((f64) D_80162FA0->unk8 * 0.5)) - *temp_a3; temp_f0 = sqrtf((temp_f16_2 * temp_f16_2) + (sp70 * sp70) + (sp6C * sp6C)); if ((f64) temp_f0 != 0.0) { temp_f16_3 = *sp3C; @@ -8069,7 +7676,7 @@ void func_800178F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->lookAt[0] = sp88->pos[0]; camera->lookAt[1] = (f32) ((f64) sp88->pos[1] + 6.0); camera->lookAt[2] = sp88->pos[2]; - func_80014D30(cameraId, sp50, temp_a2, temp_a3); + func_80014D30(cameraId, sp50); temp_f12 = camera->lookAt[0] - camera->pos[0]; sp90 = camera->lookAt[1] - camera->pos[1]; sp94 = temp_f12; @@ -8106,20 +7713,7 @@ void func_80017F10(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BBD8(u16, f32, s16); /* extern */ -void func_80014D30(s32, s32, f32 *, f32 *); /* extern */ -void func_8001A348(s32, f32, s16); /* extern */ -extern f32 D_80162FA0; -extern s32 D_80163238; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern ? D_80164658; -extern s16 D_80164680; -extern ? D_80164688; - +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s16 sp9E; s16 sp9C; @@ -8144,6 +7738,7 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 sp2C; s16 *sp28; Player *temp_s1; + TrackWaypoint *temp_v0_3; f32 *temp_a1; f32 *temp_a2; f32 *temp_a3; @@ -8170,16 +7765,15 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 temp_hi_2; s32 temp_t3; s32 temp_t5; - TrackWaypoint *temp_v0_3; u16 temp_ra; u16 temp_t4; temp_v0 = camera->playerId; temp_t5 = cameraId * 4; - temp_a1 = temp_t5 + &D_80164688; - temp_t6 = temp_t5 + &D_80164648; + temp_a1 = &D_80164688[cameraId]; + temp_t6 = &D_80164648[cameraId]; sp3C = temp_t6; - temp_v1 = temp_t5 + &D_80164658; + temp_v1 = &D_80164658[cameraId]; *temp_a1 = D_80163068[temp_v0]; temp_f16 = *temp_t6; *temp_t6 = temp_f16 + ((*temp_v1 - temp_f16) * 0.5f); @@ -8206,7 +7800,7 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { if (func_80007BF8(temp_hi & 0xFFFF, temp_t1_2 & 0xFFFF, 1U, 0x000AU, (u16) (s32) temp_t4) <= 0) { sp44 = temp_t5; sp4C = (s32) temp_t4; - func_8001A348(cameraId, *sp40, *(&D_80164680 + sp2C)); + func_8001A348(cameraId, *sp40, (s32) *(D_80164680 + sp2C)); } else { if ((temp_t1_2 < sp9C) && ((sp9C - temp_t1_2) < 3)) { *temp_v1 = (f32) ((f64) *(&gPlayers->unk_094 + temp_t3) + 0.1); @@ -8230,22 +7824,22 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp44 = temp_t5; sp38 = (f32 *) unksp52; func_8000BBD8((s16) temp_hi_2 & 0xFFFF, *sp40, unksp52); - temp_f2 = (f32) ((f64) D_80162FA0.unk0 * 0.5); - temp_f14 = (f32) ((f64) D_80162FA0.unk8 * 0.5); + temp_f2 = (f32) ((f64) D_80162FA0->unk0 * 0.5); + temp_f14 = (f32) ((f64) D_80162FA0->unk8 * 0.5); sp80 = temp_f2; sp78 = temp_f14; func_8000BBD8(sp60, *sp40, unksp52); temp_v0_3 = D_80164550[sp50]; - temp_a2 = temp_t5 + &D_80164618; - temp_v1_2 = temp_t5 + &D_801645F8; - temp_a3 = temp_t5 + &D_80164638; - temp_f16_2 = (f32) ((f64) temp_f2 + ((f64) D_80162FA0.unk0 * 0.5)) - *temp_v1_2; + temp_a2 = &D_80164618[cameraId]; + temp_v1_2 = &D_801645F8[cameraId]; + temp_a3 = &D_80164638[cameraId]; + temp_f16_2 = (f32) ((f64) temp_f2 + ((f64) D_80162FA0->unk0 * 0.5)) - *temp_v1_2; sp34 = temp_a3; sp40 = temp_v1_2; sp74 = temp_f16_2; sp38 = temp_a2; sp70 = (f32) ((f64) (temp_v0_3[(s16) sp60].posY + temp_v0_3[sp62].posY) * 0.5) - *temp_a2; - sp6C = (f32) ((f64) temp_f14 + ((f64) D_80162FA0.unk8 * 0.5)) - *temp_a3; + sp6C = (f32) ((f64) temp_f14 + ((f64) D_80162FA0->unk8 * 0.5)) - *temp_a3; temp_f0 = sqrtf((temp_f16_2 * temp_f16_2) + (sp70 * sp70) + (sp6C * sp6C)); if ((f64) temp_f0 != 0.0) { temp_f16_3 = *sp3C; @@ -8266,7 +7860,7 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->lookAt[0] = temp_s1->pos[0]; camera->lookAt[1] = (f32) ((f64) temp_s1->pos[1] + 6.0); camera->lookAt[2] = temp_s1->pos[2]; - func_80014D30(cameraId, sp50, temp_a2, temp_a3); + func_80014D30(cameraId, sp50); temp_f12 = camera->lookAt[0] - camera->pos[0]; sp90 = camera->lookAt[1] - camera->pos[1]; sp94 = temp_f12; @@ -8280,8 +7874,6 @@ void func_800180F0(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800180F0.s") #endif -extern s32 D_8016448C; - void func_80018718(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { Camera* camera = cameras + cameraId; s32 test = gWaypointCountByPathIndex[pathIndex]; @@ -8304,19 +7896,8 @@ void func_80018718(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8000BA14(u16, f32, ?, s16); /* extern */ -void func_80014D30(s32, s32); /* extern */ -void func_8001A348(s32, f32, s16); /* extern */ -extern f32 D_80162FA0; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 extern s32 D_80163238; -extern s32 D_8016448C; -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern ? D_80164648; -extern s16 D_80164680; -extern ? D_80164688; void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { f32 spAC; @@ -8343,11 +7924,13 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 sp40; u16 *sp3C; f64 sp28; + TrackWaypoint *temp_v0; f32 *temp_a3_2; f32 *temp_t1; f32 *temp_t5; f32 *temp_v1; - f32 *var_v1; + f32 *temp_v1_2; + f32 *temp_v1_3; f32 temp_f0; f32 temp_f0_2; f32 temp_f10; @@ -8374,7 +7957,6 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { s32 temp_hi; s32 temp_t4; s32 var_ra; - TrackWaypoint *temp_v0; u16 *temp_t8; u16 *temp_t8_2; u16 temp_t2; @@ -8387,7 +7969,7 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { temp_f12 = *(&gPlayers->unk_094 + (temp_a1 * 0xDD8)); temp_t4 = cameraId * 4; temp_t2 = gWaypointCountByPathIndex[temp_t7]; - temp_t5 = temp_t4 + &D_80164648; + temp_t5 = &D_80164648[cameraId]; *temp_t5 = temp_f12; if (D_8016448C == 0) { temp_t8 = &gNearestWaypointByPlayerId[temp_a1]; @@ -8399,17 +7981,17 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { D_8016448C = 1; } temp_f2 = (f64) D_80163068[temp_a1]; - var_v1 = temp_t4 + &D_80164688; - var_f0 = (f64) *var_v1; + temp_v1 = &D_80164688[cameraId]; + var_f0 = (f64) *temp_v1; if (var_f0 < (temp_f2 - 0.2)) { *temp_t5 = (f32) ((f64) temp_f12 * 0.7); } if ((temp_f2 - 0.5) < var_f0) { - *var_v1 = (f32) (var_f0 - 0.01); - var_f0 = (f64) *var_v1; + *temp_v1 = (f32) (var_f0 - 0.01); + var_f0 = (f64) *temp_v1; } if (var_f0 < -0.9) { - *var_v1 = -0.9f; + *temp_v1 = -0.9f; *temp_t5 = (f32) ((f64) temp_f12 * 0.8); } sp40 = (s32) temp_a3; @@ -8423,18 +8005,18 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { D_8016448C = 0; } temp_f2_2 = (f64) D_80163068[temp_a1]; - var_v1 = temp_t4 + &D_80164688; - var_f0_2 = (f64) *var_v1; + temp_v1_2 = &D_80164688[cameraId]; + var_f0_2 = (f64) *temp_v1_2; if ((temp_f2_2 + 0.2) < var_f0_2) { *temp_t5 = (f32) ((f64) temp_f12 * 1.3); } if (var_f0_2 < (temp_f2_2 + 0.5)) { - *var_v1 = (f32) (var_f0_2 + 0.01); - var_f0_2 = (f64) *var_v1; + *temp_v1_2 = (f32) (var_f0_2 + 0.01); + var_f0_2 = (f64) *temp_v1_2; } sp40 = (s32) temp_t0; if (var_f0_2 > 0.9) { - *var_v1 = 0.9f; + *temp_v1_2 = 0.9f; sp40 = (s32) temp_t0; *temp_t5 = (f32) ((f64) temp_f12 * 1.2); } @@ -8446,54 +8028,54 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp58 = temp_t4; sp44 = var_t3; sp64 = (s32) temp_t2; - sp5C = var_v1; + sp5C = &D_80164688[cameraId]; *var_t3 = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], (s16) sp40, sp68); if (func_80007BF8((s16) *sp3C & 0xFFFF, *var_t3 & 0xFFFF, 0x000FU, 0x000FU, (u16) (s32) temp_t2) <= 0) { - sp5C = var_v1; + sp5C = &D_80164688[cameraId]; sp64 = (s32) temp_t2; sp44 = var_t3; sp58 = temp_t4; sp54 = temp_t5; - func_8001A348(cameraId, *var_v1, *(&D_80164680 + var_ra)); + func_8001A348(cameraId, D_80164688[cameraId], (s32) *(D_80164680 + var_ra)); } temp_t0_2 = *var_t3; temp_hi = (s32) (temp_t0_2 + 1) % (s32) temp_t2; sp78 = (u16) ((s32) (temp_t0_2 + 2) % (s32) temp_t2); sp7A = (s16) temp_hi; - sp5C = var_v1; + sp5C = &D_80164688[cameraId]; sp58 = temp_t4; sp54 = temp_t5; sp50 = (f32 *) unksp6A; - func_8000BA14((s16) temp_hi & 0xFFFF, *var_v1, 0x42700000, unksp6A); - temp_f10 = (f32) ((f64) D_80162FA0.unk0 * 0.5); + func_8000BA14((s16) temp_hi & 0xFFFF, D_80164688[cameraId], 60.0f, unksp6A); + temp_f10 = (f32) ((f64) D_80162FA0->unk0 * 0.5); sp98 = temp_f10; - temp_f18 = (f32) ((f64) D_80162FA0.unk8 * 0.5); + temp_f18 = (f32) ((f64) D_80162FA0->unk8 * 0.5); sp90 = temp_f18; - func_8000BA14(sp78, *var_v1, 0x42700000, unksp6A); + func_8000BA14(sp78, D_80164688[cameraId], 60.0f, unksp6A); temp_v0 = D_80164550[sp68]; - temp_f10_2 = (f32) ((f64) temp_f10 + ((f64) D_80162FA0.unk0 * 0.5)); + temp_f10_2 = (f32) ((f64) temp_f10 + ((f64) D_80162FA0->unk0 * 0.5)); sp98 = temp_f10_2; - temp_v1 = temp_t4 + &D_801645F8; - temp_a3_2 = temp_t4 + &D_80164618; - temp_f14 = temp_f10_2 - *temp_v1; - temp_t1 = temp_t4 + &D_80164638; + temp_v1_3 = &D_801645F8[cameraId]; + temp_a3_2 = &D_80164618[cameraId]; + temp_f14 = temp_f10_2 - *temp_v1_3; + temp_t1 = &D_80164638[cameraId]; sp4C = temp_t1; sp8C = temp_f14; sp50 = temp_a3_2; - sp5C = temp_v1; + sp5C = temp_v1_3; temp_f16 = (f32) ((f64) (temp_v0[(s16) sp78].posY + temp_v0[sp7A].posY) * 0.5) - *temp_a3_2; - temp_f0 = (f32) ((f64) temp_f18 + ((f64) D_80162FA0.unk8 * 0.5)) - *temp_t1; + temp_f0 = (f32) ((f64) temp_f18 + ((f64) D_80162FA0->unk8 * 0.5)) - *temp_t1; sp88 = temp_f16; sp84 = temp_f0; temp_f0_2 = sqrtf((temp_f14 * temp_f14) + (temp_f16 * temp_f16) + (temp_f0 * temp_f0)); if ((f64) temp_f0_2 != 0.0) { temp_f2_3 = *temp_t5; - sp98 = ((temp_f2_3 * temp_f14) / temp_f0_2) + *temp_v1; + sp98 = ((temp_f2_3 * temp_f14) / temp_f0_2) + *temp_v1_3; sp94 = ((temp_f2_3 * temp_f16) / temp_f0_2) + *temp_a3_2; var_f18 = ((temp_f2_3 * sp84) / temp_f0_2) + *temp_t1; } else { var_f18 = *temp_t1; - sp98 = *temp_v1; + sp98 = *temp_v1_3; sp94 = *temp_a3_2; } camera->pos[2] = var_f18; @@ -8503,7 +8085,7 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { sp90 = var_f18; sp4C = temp_t1; sp50 = temp_a3_2; - sp5C = temp_v1; + sp5C = temp_v1_3; temp_f2_4 = (f64) func_802AE1C0(sp98, (f32) (temp_f16_2 + 30.0), var_f18); if ((temp_f2_4 < (temp_f16_2 - 20.0)) || (temp_f2_4 >= 3000.0)) { camera->pos[1] = (f32) (temp_f16_2 + 10.0); @@ -8511,7 +8093,7 @@ void func_800188F4(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { camera->pos[1] = (f32) (temp_f2_4 + 8.0); } *temp_t1 = var_f18; - *temp_v1 = sp98; + *temp_v1_3 = sp98; *temp_a3_2 = sp94; camera->lookAt[0] = spA0->pos[0]; camera->lookAt[1] = (f32) ((f64) spA0->pos[1] + 6.0); @@ -8559,93 +8141,62 @@ void func_80019118(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { camera->pos[2] = D_80164638[cameraId]; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80014D30(s32, s32); /* extern */ -void func_8001A348(s32, s32, s16); /* extern */ -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; -extern s16 D_80164680; -extern ? D_80164688; - void func_8001933C(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { - s16 sp96; - f32 sp8C; - f32 sp88; - f32 sp84; - s32 sp7C; - s32 sp48; - s32 sp44; - s32 sp3C; - s32 sp38; - s16 *sp34; - Player *temp_s2; - f32 temp_f12; - f32 temp_f14; - f64 temp_f0; - s16 *temp_t0; - s16 temp_t3; - s16 temp_v1; - s32 temp_v1_2; - s32 temp_v1_3; - s32 var_v1; - TrackWaypoint *temp_v0; - u16 temp_a1; + s16 cameraWaypoint; + s16 playerWaypoint; + s32 stackPadding0; + f32 xdiff; + f32 ydiff; + f32 zdiff; + s32 stackPadding1; + s32 playerId; + s32 stackPadding4; + s32 stackPadding5; + s32 stackPadding6; + s32 stackPadding7; + s32 stackPadding8; + s32 stackPadding9; + s32 stackPaddingA; + s32 stackPaddingB; + s32 stackPaddingC; + s32 stackPaddingD; + Player *player; + TrackWaypoint *waypoint; + s32 pathIndex; + s32 waypointCount; - temp_v1 = camera->playerId; - temp_a1 = gPathIndexByPlayerId[temp_v1]; - sp44 = (s32) gWaypointCountByPathIndex[temp_a1]; - temp_t0 = &gNearestWaypointByCameraId[cameraId]; - sp34 = temp_t0; - sp38 = cameraId * 2; - sp3C = temp_v1 * 2; - sp7C = (s32) temp_v1; - sp48 = (s32) temp_a1; - temp_s2 = &gPlayerOne[temp_v1]; - *temp_t0 = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], *temp_t0, 0); - temp_t3 = *temp_t0; - sp96 = temp_t3; - if (func_80007BF8((s16) gNearestWaypointByPlayerId[temp_v1] & 0xFFFF, temp_t3 & 0xFFFF, 0x0032U, 0x0014U, (u16) sp44) <= 0) { - temp_v1_2 = cameraId * 4; - sp3C = temp_v1_2; - func_8001A348(cameraId, *(&D_80164688 + temp_v1_2), *(&D_80164680 + sp38)); - goto block_8; + playerId = camera->playerId; + pathIndex = gPathIndexByPlayerId[playerId]; + player = gPlayerOne; + player += playerId; + waypointCount = gWaypointCountByPathIndex[pathIndex]; + gNearestWaypointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestWaypointByCameraId[cameraId], 0); + playerWaypoint = gNearestWaypointByPlayerId[playerId]; + cameraWaypoint = gNearestWaypointByCameraId[cameraId]; + if (func_80007BF8(playerWaypoint, cameraWaypoint, 0x0032U, 0x0014U, waypointCount) <= 0) { + func_8001A348(cameraId, D_80164688[cameraId], D_80164680[cameraId]); + } else { + if ((D_80163068[playerId] < -0.5) && ((f64) D_80164688[cameraId] < -0.5)) { + func_8001A348(cameraId, 1.0f, 0x0000000D); + } else if ((D_80163068[playerId] > 0.5) && ((f64) D_80164688[cameraId] > 0.5)) { + func_8001A348(cameraId, -1.0f, 0x0000000C); + } } - temp_f0 = (f64) D_80163068[temp_v1]; - temp_v1_3 = cameraId * 4; - if ((temp_f0 < -0.5) && ((f64) *(&D_80164688 + temp_v1_3) < -0.5)) { - sp3C = temp_v1_3; - func_8001A348(cameraId, 0x3F800000, 0x000D); - goto block_8; - } - var_v1 = cameraId * 4; - if ((temp_f0 > 0.5) && ((f64) *(&D_80164688 + var_v1) > 0.5)) { - sp3C = var_v1; - func_8001A348(cameraId, 0xBF800000, 0x000C); -block_8: - var_v1 = sp3C; - } - camera->pos[0] = *(&D_801645F8 + var_v1); - camera->pos[1] = *(&D_80164618 + var_v1); - camera->pos[2] = *(&D_80164638 + var_v1); - temp_v0 = &D_80164550[sp48][sp96]; - camera->lookAt[0] = (f32) (((f64) temp_s2->pos[0] * 0.8) + (0.2 * (f64) temp_v0->posX)); - camera->lookAt[1] = (f32) (((f64) temp_s2->pos[1] * 0.8) + (0.2 * (f64) temp_v0->posY)); - camera->lookAt[2] = (f32) (((f64) temp_s2->pos[2] * 0.8) + (0.2 * (f64) temp_v0->posZ)); - func_80014D30(cameraId, sp48); - temp_f12 = camera->lookAt[0] - camera->pos[0]; - sp88 = camera->lookAt[1] - camera->pos[1]; - sp8C = temp_f12; - temp_f14 = camera->lookAt[2] - camera->pos[2]; - sp84 = temp_f14; - camera->rot[1] = atan2s(temp_f12, temp_f14); - camera->rot[0] = atan2s(sqrtf((sp8C * sp8C) + (temp_f14 * temp_f14)), sp88); + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; + waypoint = &D_80164550[pathIndex][cameraWaypoint]; + camera->lookAt[0] = (player->pos[0] * 0.8) + (0.2 * waypoint->posX); + camera->lookAt[1] = (player->pos[1] * 0.8) + (0.2 * waypoint->posY); + camera->lookAt[2] = (player->pos[2] * 0.8) + (0.2 * waypoint->posZ); + func_80014D30(cameraId, pathIndex); + xdiff = camera->lookAt[0] - camera->pos[0]; + ydiff = camera->lookAt[1] - camera->pos[1]; + zdiff = camera->lookAt[2] - camera->pos[2]; + camera->rot[1] = atan2s(xdiff, zdiff); + camera->rot[0] = atan2s(sqrtf((xdiff * xdiff) + (zdiff * zdiff)), ydiff); camera->rot[2] = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001933C.s") -#endif void func_8001968C(void) { D_80164678[0] = 3; @@ -8666,56 +8217,28 @@ void func_8001969C(s32 playerId, f32 arg1, s32 cameraId, s16 pathIndex) { D_80164678[cameraId] = 0; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80014D30(s32, ?); /* extern */ -extern ? D_801645F8; -extern ? D_80164618; -extern ? D_80164638; - void func_80019760(Camera *camera, s32 arg1, s32 arg2, s32 cameraId) { - f32 sp2C; - f32 sp28; - f32 sp24; - f32 temp_f12; - f32 temp_f14; - s32 temp_v0; + s32 stackPadding[2]; + f32 xdiff; + f32 ydiff; + f32 zdiff; TrackWaypoint *temp_v1; - temp_v0 = cameraId * 4; - camera->pos[0] = *(&D_801645F8 + temp_v0); - camera->pos[1] = *(&D_80164618 + temp_v0); - camera->pos[2] = *(&D_80164638 + temp_v0); + camera->pos[0] = D_801645F8[cameraId]; + camera->pos[1] = D_80164618[cameraId]; + camera->pos[2] = D_80164638[cameraId]; temp_v1 = &(*D_80164550)[gNearestWaypointByCameraId[cameraId]]; camera->lookAt[0] = (f32) temp_v1->posX; camera->lookAt[1] = (f32) temp_v1->posY; camera->lookAt[2] = (f32) temp_v1->posZ; func_80014D30(cameraId, 0); - temp_f12 = camera->lookAt[0] - camera->pos[0]; - sp28 = camera->lookAt[1] - camera->pos[1]; - sp2C = temp_f12; - temp_f14 = camera->lookAt[2] - camera->pos[2]; - sp24 = temp_f14; - camera->rot[1] = atan2s(temp_f12, temp_f14); - camera->rot[0] = atan2s(sqrtf((sp2C * sp2C) + (temp_f14 * temp_f14)), sp28); + xdiff = camera->lookAt[0] - camera->pos[0]; + ydiff = camera->lookAt[1] - camera->pos[1]; + zdiff = camera->lookAt[2] - camera->pos[2]; + camera->rot[1] = atan2s(xdiff, zdiff); + camera->rot[0] = atan2s(sqrtf((xdiff * xdiff) + (zdiff * zdiff)), ydiff); camera->rot[2] = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019760.s") -#endif - -void func_80016C3C(s32, f32, s32); -void func_80015314(s32, f32, s32); -void func_80017720(s32, f32, s32, s16); -void func_80017F10(s32, f32, s32, s16); -void func_80018718(s32, f32, s32, s16); -void func_80015544(s32, f32, s32, s32); -void func_80019118(s32, f32, s32, s16); -void func_800162CC(s32, f32, s32, s16); -void func_80015A9C(s32, f32, s32, s16); -extern s32 D_80163DD8[]; -extern s16 D_80164680[]; -extern s16 D_801646C0[]; void func_80019890(s32 playerId, s32 cameraId) { s32 pathIndex; @@ -8782,134 +8305,78 @@ void func_80019890(s32 playerId, s32 cameraId) { } } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_801646C0; +void func_80019B50(s32 arg0, u16 arg1) { + u16 var_v0; -void func_80019B50(s32 arg0, s32 arg1) { - s32 temp_a0; - s32 temp_a0_2; - s32 temp_a2; - s32 temp_a2_2; - s32 temp_t6; - s32 temp_v0_2; - s32 temp_v0_3; - u16 *temp_v1; - u16 temp_v0; - s32 phi_a2; - s32 phi_a2_2; - u16 phi_v0; - - temp_v1 = (arg0 * 2) + &D_801646C0; - temp_v0 = *temp_v1; - temp_t6 = arg1 & 0xFFFF; - phi_v0 = temp_v0; - if (temp_v0 < temp_t6) { - temp_a0 = temp_t6 - temp_v0; - if (temp_a0 < 0x8000) { - temp_a2 = (temp_v0 + 0x5A) & 0xFFFF; - phi_a2 = temp_a2; - phi_v0 = temp_a2; - if (temp_t6 < temp_a2) { - temp_v0_2 = temp_t6 & 0xFFFF; - phi_a2 = temp_v0_2; - phi_v0 = temp_v0_2; + var_v0 = D_801646C0[arg0]; + if (var_v0 < arg1) { + if ((arg1 - var_v0) < 0x8000) { + var_v0 += 0x5A; + if (arg1 < var_v0) { + var_v0 = arg1; } - if (phi_a2 < 0x5A) { - phi_v0 = 0; + if (var_v0 < 0x5A) { + var_v0 = 0; } - } else if (temp_a0 >= 0x8000) { - phi_v0 = (temp_v0 - 0x5A) & 0xFFFF; + } else if ((arg1 - var_v0) >= 0x8000) { + var_v0 -= 0x5A; } - } else if (temp_t6 < temp_v0) { - temp_a0_2 = temp_v0 - temp_t6; - if (temp_a0_2 < 0x8000) { - temp_a2_2 = (temp_v0 - 0x5A) & 0xFFFF; - phi_a2_2 = temp_a2_2; - phi_v0 = temp_a2_2; - if (temp_a2_2 < temp_t6) { - temp_v0_3 = temp_t6 & 0xFFFF; - phi_a2_2 = temp_v0_3; - phi_v0 = temp_v0_3; + } else if (arg1 < var_v0) { + if ((var_v0 - arg1) < 0x8000) { + var_v0 -= 0x5A; + if (var_v0 < arg1) { + var_v0 = arg1; } - if (phi_a2_2 >= 0xFFA6) { - phi_v0 = 0; + if (var_v0 >= 0xFFA6) { + var_v0 = 0; } - } else if (temp_a0_2 >= 0x8000) { - phi_v0 = (temp_v0 + 0x5A) & 0xFFFF; + } else if ((var_v0 - arg1) >= 0x8000) { + var_v0 += 0x5A; + if (!arg0) {} // wtf? } } - *temp_v1 = phi_v0; + D_801646C0[arg0] = (s16) var_v0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019B50.s") -#endif - -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800C9060(s32, ?, s32, s32); // extern -extern ? D_80164608; -extern s16 D_80164670; void func_80019C50(s32 arg0) { - s32 sp20; - s16 *sp1C; - s16 *temp_v0; - s16 temp_v1; - s32 temp_a3; - - temp_a3 = arg0 * 2; - temp_v0 = temp_a3 + &D_80164678; - temp_v1 = *temp_v0; - if (temp_v1 != 0) { - if (temp_v1 != 1) { - return; + switch (D_80164678[arg0]) { /* irregular */ + case 0: + if (D_80164608[arg0] == (s32) 1) { + D_80164678[arg0] = 1; + func_800C9060(arg0 & 0xFF, 0x1900904FU); + D_80164670[arg0] = D_80164678[arg0]; } - if (*(&D_80164608 + (arg0 * 4)) == 1) { - *temp_v0 = 0; - sp1C = temp_v0; - sp20 = temp_a3; - func_800C9060(arg0 & 0xFF, 0x19009050, arg0, temp_a3); - *(&D_80164670 + temp_a3) = *temp_v0; + break; + case 1: + if (D_80164608[arg0] == 1) { + D_80164678[arg0] = 0; + func_800C9060(arg0 & 0xFF, 0x19009050U); + D_80164670[arg0] = D_80164678[arg0]; } - // Duplicate return node #7. Try simplifying control flow for better match - return; - } - if (*(&D_80164608 + (arg0 * 4)) == 1) { - *temp_v0 = 1; - sp1C = temp_v0; - sp20 = temp_a3; - func_800C9060(arg0 & 0xFF, 0x1900904F, arg0, temp_a3); - *(&D_80164670 + temp_a3) = *temp_v0; + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019C50.s") -#endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_800151A4(s32); // extern -void func_80019B50(s32, s32, s32); // extern +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 extern s32 D_80163378; -extern u16 gNearestWaypointByPlayerId; +s16 gCurrentCourseId; /* unable to generate initializer */ -void func_80019D2C(void *arg0, void *arg1, s32 arg2) { +void func_80019D2C(Camera *camera, Player *player, s32 arg2) { s32 sp1C; s16 temp_v1; u16 temp_v0; - temp_v1 = arg0->unkAE; + temp_v1 = camera->playerId; if ((D_80163378 != 0) && (gCurrentCourseId == 8)) { - sp1C = temp_v1; - func_800151A4(arg2); - temp_v0 = *(&gNearestWaypointByPlayerId + (temp_v1 * 2)); - if (((temp_v0 >= 0x65) && (temp_v0 < 0xFA)) || ((temp_v0 >= 0x1AF) && (temp_v0 < 0x226))) { - func_80019B50(arg2, (arg1->unk206 * 2) & 0xFFFF, arg2); + sp1C = (s32) temp_v1; + func_800151A4(camera, arg2); + temp_v0 = gNearestWaypointByPlayerId[temp_v1]; + if ((((s32) temp_v0 >= 0x65) && ((s32) temp_v0 < 0xFA)) || (((s32) temp_v0 >= 0x1AF) && ((s32) temp_v0 < 0x226))) { + func_80019B50(arg2, (player->unk_206 * 2) & 0xFFFF); return; } - func_80019B50(arg2, 0, arg2); - // Duplicate return node #8. Try simplifying control flow for better match + func_80019B50(arg2, 0U); } } #else @@ -8920,21 +8387,15 @@ void func_80019DE4(void) { D_801646CC = 1; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -//extern s16 D_80164670; -//extern s16 D_8016467A; -//extern s16 D_8016467C; -//extern s16 D_8016467E; -//extern s16 D_801646CC; - +#ifdef NON_MATCHING +// It really seems like this should be it, +// its unclear what about that for-loop is wrong void func_80019DF4(void) { - // unrolled loop? - D_80164670 = D_80164678[3]; - D_80164670 = D_80164678[2]; - D_80164670 = D_80164678[1]; - D_80164670 = D_80164678[0]; - camera1->playerId = *gGPCurrentRacePlayerIdByRank; + s32 i; + for (i = 0; i < 4; i++) { + D_80164670[i] = D_80164678[i]; + } + camera1->playerId = gGPCurrentRacePlayerIdByRank[0]; D_80164678[0] = 1; D_801646CC = 2; } @@ -8942,8 +8403,6 @@ void func_80019DF4(void) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019DF4.s") #endif -extern s16 D_80164682; - void func_80019E58(void) { D_80164680[0] = 1; func_80019890(0, 0); @@ -8974,7 +8433,7 @@ void func_80019ED0(void) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 extern ? D_801645D0; extern ? D_801645E8; extern ? D_80164608; @@ -8985,40 +8444,36 @@ void func_80019FB4(s32 arg0) { s32 *temp_a0_2; s32 *temp_a1; s32 *temp_v0_2; - s32 temp_v1; - s32 temp_v1_2; + s32 var_v1; struct Controller *temp_v0; - s32 phi_v1; temp_v0 = &gControllerOne[arg0]; - temp_v1 = arg0 * 4; - temp_a1 = temp_v1 + &D_801645D0; - phi_v1 = temp_v1; - if ((temp_v0->buttonPressed & 2) != 0) { - *temp_a1 = *temp_a1 + 1; + var_v1 = arg0 * 4; + temp_a1 = var_v1 + &D_801645D0; + if (temp_v0->buttonPressed & 2) { + *temp_a1 += 1; } else { - temp_v1_2 = arg0 * 4; - *(&D_801645D0 + temp_v1_2) = 0; - phi_v1 = temp_v1_2; + var_v1 = arg0 * 4; + *(&D_801645D0 + var_v1) = 0; } - temp_a0 = phi_v1 + &D_801645E8; - if ((temp_v0->buttonPressed & 4) != 0) { - *temp_a0 = *temp_a0 + 1; + temp_a0 = var_v1 + &D_801645E8; + if (temp_v0->buttonPressed & 4) { + *temp_a0 += 1; } else { - *(&D_801645E8 + phi_v1) = 0; + *(&D_801645E8 + var_v1) = 0; } - temp_a0_2 = phi_v1 + &D_80164608; - if ((temp_v0->buttonPressed & 8) != 0) { - *temp_a0_2 = *temp_a0_2 + 1; + temp_a0_2 = var_v1 + &D_80164608; + if (temp_v0->buttonPressed & 8) { + *temp_a0_2 += 1; } else { - *(&D_80164608 + phi_v1) = 0; + *(&D_80164608 + var_v1) = 0; } - temp_v0_2 = phi_v1 + &D_80164628; - if ((temp_v0->buttonPressed & 1) != 0) { - *temp_v0_2 = *temp_v0_2 + 1; + temp_v0_2 = var_v1 + &D_80164628; + if (temp_v0->buttonPressed & 1) { + *temp_v0_2 += 1; return; } - *(&D_80164628 + phi_v1) = 0; + *(&D_80164628 + var_v1) = 0; } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019FB4.s") @@ -9034,43 +8489,30 @@ void func_8001A0DC(u16 *arg0, Camera *arg1, Player *arg2, s8 arg3, s32 arg4) { func_80019D2C(arg1, arg2, arg4); } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_800CA270(); /* extern */ -extern s16 D_80164680; - void func_8001A124(s32 arg0, s32 arg1) { - s32 temp_v0; - - temp_v0 = gGPCurrentRaceRankByPlayerId[arg0]; - switch (temp_v0) { /* irregular */ + switch (gGPCurrentRaceRankByPlayerId[arg0]) { /* irregular */ case 0: if (random_int(0x0064U) < 0x32) { - *(&D_80164680 + (arg1 * 2)) = 0x000C; + D_80164680[arg1] = 0x000C; } else { - *(&D_80164680 + (arg1 * 2)) = 0x000D; + D_80164680[arg1] = 0x000D; } func_800CA270(); - return; + break; case 1: case 2: case 3: - *(&D_80164680 + (arg1 * 2)) = 8; - return; + D_80164680[arg1] = 8; + break; default: if (random_int(0x0064U) < 0x32) { - *(&D_80164680 + (arg1 * 2)) = 0x000F; - return; + D_80164680[arg1] = 0x000F; + } else { + D_80164680[arg1] = 0x0010; } - *(&D_80164680 + (arg1 * 2)) = 0x0010; - return; + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A124.s") -#endif - -extern s16 D_80164680[]; void func_8001A220(s32 arg0, s32 arg1) { switch (random_int(6)) { @@ -9105,121 +8547,69 @@ s32 func_8001A310(s32 arg0, s32 arg1) { return arg1; } -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -//extern f32 D_80164688[]; - void func_8001A348(s32 cameraId, f32 arg1, s32 arg2) { - //s32 sp20; - //s32 sp1C; - //s32 temp_v1; + s32 stackPadding; + s32 playerId; - //temp_v1 = cameraId * 2; - //sp1C = temp_v1; - //sp20 = (s32) cameras[1].playerId; // + (cameraId * 0xB8)); + playerId = cameras[cameraId].playerId; D_80164688[cameraId] = arg1; - D_80164680[cameraId] = func_8001A310(arg1, gNearestWaypointByCameraId[cameraId]); - func_80019890(cameras[0].playerId, cameraId); + D_80164680[cameraId] = func_8001A310((s32) gNearestWaypointByCameraId[cameraId], arg2); + func_80019890(playerId, cameraId); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A348.s") -#endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_80019890(f32, s16, s32, s16); // extern -extern s16 D_80164680; -extern ? D_80164688; -extern ? D_8016479E; +void func_8001A3D8(s32 arg0, f32 arg1, s32 arg2) { + s32 playerId; -void func_8001A3D8(s32 arg0, f32 arg1, s16 arg2) { - s16 *temp_v0; - s16 temp_a3; - - temp_v0 = (arg0 * 2) + &D_80164680; - *(&D_80164688 + (arg0 * 4)) = arg1; - temp_a3 = *(&D_8016479E + (arg0 * 0xB8)); - if (arg2 != *temp_v0) { - *temp_v0 = arg2; - func_80019890(arg1, temp_a3, arg0, temp_a3); + playerId = cameras[arg0].playerId; + D_80164688[arg0] = arg1; + if (arg2 != D_80164680[arg0]) { + D_80164680[arg0] = arg2; + func_80019890(playerId, arg0); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A3D8.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80019890(s32, s32, s16 *, s32); /* extern */ -s16 func_8001A310(s16, s32, s16 *, s32); /* extern */ -extern s16 D_80164680; void func_8001A450(s32 playerId, s32 arg1, s32 arg2) { - s32 sp24; - s16 *sp18; - s16 *temp_a2; - s16 temp_v0; - s16 temp_v1; + s32 temp_v1; + s16 waypoint; + s32 temp_v0; - if (!(*(&gPlayers->effects + (playerId * 0xDD8)) & 0x1000000C) && ((temp_a2 = (arg1 * 2) + &D_80164680, temp_v1 = *temp_a2, sp18 = temp_a2, sp24 = (s32) temp_v1, temp_v0 = func_8001A310(gNearestWaypointByCameraId[arg1], (s32) (temp_v1 + 1) % 10, temp_a2, playerId), (temp_v0 != temp_v1)) || (arg2 != playerId))) { - *temp_a2 = temp_v0; - func_80019890(arg2, arg1, temp_a2, playerId); + if (!(gPlayers[playerId].effects & 0x1000000C)) { + temp_v1 = D_80164680[arg1]; + waypoint = gNearestWaypointByCameraId[arg1]; + temp_v0 = func_8001A310(waypoint, (temp_v1 + 1) % 10); + if ((temp_v0 != temp_v1) || (arg2 != playerId)) { + D_80164680[arg1] = temp_v0; + func_80019890(arg2, arg1); + } } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A450.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_8001A450(s32, s32, s32); /* extern */ -extern s16 D_80164680; void func_8001A518(s32 arg0, s32 arg1, s32 arg2) { switch (arg1) { /* irregular */ - default: - *(&D_80164680 + (arg2 * 2)) = 0; - return; case 0: - *(&D_80164680 + (arg2 * 2)) = 1; - return; + D_80164680[arg2] = 1; + break; case 1: case 2: case 3: - func_8001A450(arg2, arg0, arg2); - return; + func_8001A450(arg0, arg2, arg0); + break; + default: + D_80164680[arg2] = 0; + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A518.s") -#endif #ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_800151A4(Camera *, s32); /* extern */ -void func_80015390(Camera *, u16 *, s8, s32); /* extern */ -void func_8001577C(Camera *, u16 *, s8, s32); /* extern */ -void func_80015C94(Camera *, u16 *, s8, s32); /* extern */ -void func_80016494(Camera *, u16 *, s8, s32); /* extern */ -void func_80017054(Camera *, u16 *, s8, s32); /* extern */ -void func_800178F4(Camera *, u16 *, s8, s32); /* extern */ -void func_800180F0(Camera *, u16 *, s8, s32); /* extern */ -void func_800188F4(Camera *, u16 *, s8, s32); /* extern */ -void func_8001933C(Camera *, u16 *, s8, s32); /* extern */ -void func_80019760(Camera *, u16 *, s8, s32); /* extern */ -void func_80019890(s32, s32); /* extern */ -void func_80019C50(s32); /* extern */ -void func_80019D2C(Camera *, u16 *, s32, s32); /* extern */ -void func_80019FB4(s32); /* extern */ -void func_8001A124(?, s32, s32); /* extern */ -void func_8001A220(?, s32, s32); /* extern */ -void func_8001A3D8(s32, ?, s16, s32); /* extern */ -void func_8001A450(s32, s32, s32, s32); /* extern */ -void func_8001A518(s32, s32, ?, s32); /* extern */ -extern s16 D_80164680; -extern ? D_801646C0; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 +? func_80015C94(Camera *, Player *, s8, s32); /* extern */ +? func_80016494(Camera *, Player *, s8, s32); /* extern */ +? func_80017054(Camera *, Player *, s8, s32); /* extern */ +? func_800178F4(Camera *, Player *, s8, s32); /* extern */ +? func_800180F0(Camera *, Player *, s8, s32); /* extern */ +? func_800188F4(Camera *, Player *, s8, s32); /* extern */ +? func_8001A220(?, s32, s32); /* extern */ extern u32 D_801646C8; -extern u16 D_801646CC; extern ? D_801646D0; void func_8001A588(u16 *arg0, Camera *camera, Player *arg2, s8 arg3, s32 arg4) { @@ -9228,22 +8618,19 @@ void func_8001A588(u16 *arg0, Camera *camera, Player *arg2, s8 arg3, s32 arg4) { f64 temp_f0; f64 temp_f2; s16 *temp_t8; - s16 temp_v0_6; + s16 temp_v0_3; s16 temp_v1; s16 var_s0; - s32 temp_v0; - s32 temp_v0_2; s32 var_v1; u16 temp_t3; - u16 temp_v0_3; u32 temp_t1; u32 temp_t4; - u32 temp_v0_4; - u32 temp_v0_5; - void *temp_v0_7; + u32 temp_v0; + u32 temp_v0_2; + void *temp_v0_4; var_s0 = camera->playerId; - if (gModeSelection == TIME_TRIALS) { + if (gModeSelection == 1) { var_s0 = 0; } func_80019FB4(arg4); @@ -9255,40 +8642,37 @@ void func_8001A588(u16 *arg0, Camera *camera, Player *arg2, s8 arg3, s32 arg4) { camera->pos[2] = (f32) (temp_f2 + 100.0); } } - temp_v0 = gModeSelection; - if ((temp_v0 != BATTLE) && (*(&D_80164680 + (arg4 * 2)) == -1) && (*arg2 & 0x800) && (D_801646CC == 0) && (D_801646C8 == 0)) { - if (temp_v0 == VERSUS) { + if ((gModeSelection != 3) && (D_80164680[arg4] == -1) && (arg2->type & 0x800) && ((u16) D_801646CC == 0) && (D_801646C8 == 0)) { + if (gModeSelection == 2) { func_8001A220(0, (s32) var_s0, arg4); } else { - func_8001A124(0, (s32) var_s0, arg4); + func_8001A124((s32) var_s0, arg4); } func_80019890((s32) var_s0, arg4); } - temp_v0_2 = arg4 * 2; - temp_t8 = temp_v0_2 + &D_80164680; + temp_t8 = &D_80164680[arg4]; sp24 = temp_t8; temp_v1 = *temp_t8; if ((temp_v1 == 0x000E) || (temp_v1 == 0)) { - func_80019D2C(camera, arg2, arg4, arg4); + func_80019D2C(camera, arg2, arg4); } else { - *(&D_801646C0 + temp_v0_2) = 0; + D_801646C0[arg4] = 0; func_800151A4(camera, arg4); } - temp_v0_3 = D_801646CC; - switch (temp_v0_3) { /* switch 1; irregular */ + switch ((u16) D_801646CC) { /* switch 1; irregular */ case 1: /* switch 1 */ temp_t1 = D_801646C8 + 1; D_801646C8 = temp_t1; if (temp_t1 >= 0x1F5U) { D_801646C8 = 0; } - if ((arg4 == 0) && ((temp_v0_4 = D_801646C8, (temp_v0_4 == 0x0000000A)) || (temp_v0_4 == 0x0000000B))) { - func_8001A518((s32) var_s0, gGPCurrentRaceRankByPlayerId[var_s0], 0, arg4); + if ((arg4 == 0) && ((temp_v0 = D_801646C8, (temp_v0 == 0x0000000A)) || (temp_v0 == 0x0000000B))) { + func_8001A518((s32) var_s0, gGPCurrentRaceRankByPlayerId[var_s0], 0); } - if ((gModeSelection != TIME_TRIALS) && (arg4 == 1) && ((temp_v0_5 = D_801646C8, (temp_v0_5 == 0x00000104)) || (temp_v0_5 == 0x00000105))) { + if ((gModeSelection != 1) && (arg4 == 1) && ((temp_v0_2 = D_801646C8, (temp_v0_2 == 0x00000104)) || (temp_v0_2 == 0x00000105))) { var_v1 = 0; if (gPlayerCount == 2) { - func_8001A518((s32) var_s0, gGPCurrentRaceRankByPlayerId[var_s0], 1, arg4); + func_8001A518((s32) var_s0, gGPCurrentRaceRankByPlayerId[var_s0], 1); } else { sp44 = (s32) var_s0; loop_34: @@ -9297,11 +8681,11 @@ loop_34: if (var_s0 >= 8) { var_s0 = 1; } - temp_v0_6 = gPlayers[var_s0].unk_0CA; - if (((temp_v0_6 & 2) || (temp_v0_6 & 8)) && (var_v1 != 8)) { + temp_v0_3 = gPlayers[var_s0].unk_0CA; + if (((temp_v0_3 & 2) || (temp_v0_3 & 8)) && (var_v1 != 8)) { goto loop_34; } - func_8001A450(sp44, arg4, (s32) var_s0, arg4); + func_8001A450(sp44, arg4, (s32) var_s0); } } break; @@ -9312,15 +8696,15 @@ loop_34: D_801646C8 = 0; } if ((arg4 == 0) && (D_801646C8 == 0x0000000A)) { - func_8001A450((s32) var_s0, arg4, (s32) var_s0, arg4); + func_8001A450((s32) var_s0, arg4, (s32) var_s0); } break; default: /* switch 1 */ - temp_v0_7 = (arg4 * 8) + &D_801646D0; - if (temp_v0_7->unk0 == (s16) 1) { - temp_v0_7->unk0 = 0; - *(&cameras->playerId + (arg4 * 0xB8)) = temp_v0_7->unk4; - func_8001A3D8(arg4, 0, temp_v0_7->unk2, arg4); + temp_v0_4 = (arg4 * 8) + &D_801646D0; + if (temp_v0_4->unk0 == (s16) 1) { + temp_v0_4->unk0 = 0; + *(&cameras->playerId + (arg4 * 0xB8)) = temp_v0_4->unk4; + func_8001A3D8(arg4, 0.0f, (s32) temp_v0_4->unk2); } break; } @@ -9328,11 +8712,11 @@ loop_34: temp_t3 = (u16) *sp24; switch (temp_t3) { case 0: - func_80015390(camera, arg2, arg3, arg4); + func_80015390(camera, arg2, (s32) arg3); return; case 2: case 3: - func_8001577C(camera, arg2, arg3, arg4); + func_8001577C(camera, (s32) arg2, (s32) arg3, arg4); return; case 6: case 7: @@ -9356,14 +8740,14 @@ loop_34: return; case 12: case 13: - func_8001933C(camera, arg2, arg3, arg4); + func_8001933C(camera, (s32) arg2, (s32) arg3, arg4); return; case 15: case 16: - func_80019760(camera, arg2, arg3, arg4); + func_80019760(camera, (s32) arg2, (s32) arg3, arg4); return; default: - func_80015390(camera, arg2, arg3, arg4); + func_80015390(camera, arg2, (s32) arg3); return; } } @@ -9372,7 +8756,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001A588.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 extern ? D_801646D0; void func_8001AAAC(s16 arg0, s16 arg1, s16 arg2) { @@ -9389,71 +8773,44 @@ void func_8001AAAC(s16 arg0, s16 arg1, s16 arg2) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001AAAC.s") #endif -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern ? D_801642D8; -extern s16 D_80164358; - void func_8001AB00(void) { - ? *temp_v1; - ? *phi_v1; + s32 var_v1; - phi_v1 = &D_801642D8; - do { - temp_v1 = phi_v1 + 0x40; - temp_v1->unk-30 = 0; - temp_v1->unk-2C = 0; - temp_v1->unk-2E = -1; - temp_v1->unk-2A = 0; - temp_v1->unk-28 = 0; - temp_v1->unk-20 = 0; - temp_v1->unk-1C = 0; - temp_v1->unk-1E = -1; - temp_v1->unk-1A = 0; - temp_v1->unk-18 = 0; - temp_v1->unk-10 = 0; - temp_v1->unk-C = 0; - temp_v1->unk-E = -1; - temp_v1->unk-A = 0; - temp_v1->unk-8 = 0; - temp_v1->unk-40 = 0; - temp_v1->unk-3C = 0; - temp_v1->unk-3E = -1; - temp_v1->unk-3A = 0; - temp_v1->unk-38 = 0; - phi_v1 = temp_v1; - } while (temp_v1 != &D_80164358); + for (var_v1 = 0; var_v1 < 8; var_v1++) { + D_801642D8[var_v1].unk_00 = 0; + D_801642D8[var_v1].unk_04 = 0; + D_801642D8[var_v1].actorIndex = -1; + D_801642D8[var_v1].unk_06 = 0; + D_801642D8[var_v1].unk_08 = 0; + } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001AB00.s") -#endif void func_8001AB74(s32 arg0, s16 *arg1, s32 arg2) { s32 value = -1; switch (arg2) { - case 9: + case ITEM_FAKE_ITEM_BOX: value = 0xD; break; - case 11: + case ITEM_BOO: value = 0x1B; break; - case 1: + case ITEM_BANANA: value = 1; break; - case 8: + case ITEM_THUNDERBOLT: value = 0x16; break; - case 10: + case ITEM_STAR: value = 0x19; break; - case 12: + case ITEM_MUSHROOM: value = 0x1D; break; - case 13: + case ITEM_DOUBLE_MUSHROOM: break; - case 14: + case ITEM_TRIPLE_MUSHROOM: break; - case 15: + case ITEM_SUPER_MUSHROOM: break; } if (value >= 0) { @@ -9461,7 +8818,7 @@ void func_8001AB74(s32 arg0, s16 *arg1, s32 arg2) { } } -void func_8001ABE0(UNUSED s32 arg0, UNUSED s32 arg1) { +void func_8001ABE0(UNUSED s32 arg0, UNUSED D_801642D8_entry *arg1) { } @@ -9472,474 +8829,456 @@ void func_8001ABEC(struct struct_801642D8 *arg0) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 0927f17aac197848d4ebdf0c6bbad74b01f0851c -? func_8001AB74(s32, struct struct_801642D8 *, u8); /* extern */ -? func_800C92CC(s32, ?, s32, struct Actor *); /* extern */ -? func_800CAC60(s32); /* extern */ -? func_800CAD40(u8, s16); /* extern */ -extern ? D_801631E0; -extern s16 D_80163478; -extern ? D_801642D8; -extern u16 D_801646CC; - +#ifdef NON_MATCHING +// By the looks of this function is probably something like `cpu_player_use_item` +// The use of several different actor types might make getting a match hard(er), +// might have to get creative/ugly with just a single generic `Actor` variable. +// https://decomp.me/scratch/FOlbG void func_8001AC10(s32 playerId) { - Player *sp2C; - struct Actor *sp28; - Player *temp_t9; - s16 temp_a1; - s16 temp_a2; - s16 temp_v1_2; - s16 temp_v1_3; - s16 temp_v1_4; - s16 temp_v1_5; - s16 temp_v1_6; - s16 temp_v1_7; - s16 temp_v1_8; - s16 temp_v1_9; - s16 var_v0; - s32 temp_a0; - s32 temp_v1; - s32 var_v1; - struct Actor *temp_a3; - struct Actor *temp_a3_10; - struct Actor *temp_a3_11; - struct Actor *temp_a3_12; - struct Actor *temp_a3_13; - struct Actor *temp_a3_2; - struct Actor *temp_a3_3; - struct Actor *temp_a3_4; - struct Actor *temp_a3_5; - struct Actor *temp_a3_6; - struct Actor *temp_a3_7; - struct Actor *temp_a3_8; - struct Actor *temp_a3_9; - TrackWaypoint *temp_v0_2; - struct struct_801642D8 *temp_s0; - u16 temp_v0; + s32 var_v0; + Player *player; + TrackWaypoint *waypoint; + D_801642D8_entry *temp_s0; + struct Actor *actor; + struct ShellActor *shell; + struct BananaActor *banana; + struct FakeItemBox *fakeItemBox; + struct BananaBunchParent *bananaBunchParent; - temp_t9 = &gPlayerOne[playerId]; - sp2C = temp_t9; - if ((gModeSelection != (s32) 1) && (D_801646CC != (u16) 1) && !(temp_t9->type & 0x800)) { - temp_s0 = (playerId * 0x10) + &D_801642D8; - temp_a1 = temp_s0->unk0; - switch (temp_a1) { /* switch 1 */ - case 0: /* switch 1 */ - temp_s0->ffff = -1; - if ((((playerId * 0x14) + 0x64) < D_80164450[playerId]) && (temp_s0->timer >= 0x259) && (temp_s0->laps < 3) && (temp_v1 = gLapCountByPlayerId[playerId], ((temp_v1 < 3) != 0))) { - func_8001AB74(playerId, temp_s0, gen_random_item_cpu((s32) (s16) temp_v1, gGPCurrentRaceRankByPlayerId[playerId].unk2)); + player = &gPlayerOne[playerId]; + if (((gModeSelection != ((s32) 1)) && (((u16) D_801646CC) != ((u16) 1))) && (!(player->type & 0x800))) { + temp_s0 = &D_801642D8[playerId]; + switch (temp_s0->unk_00) { + case 0: + temp_s0->actorIndex = -1; + if ((((playerId * 0x14) + 0x64) < D_80164450[playerId]) && (temp_s0->unk_04 >= 0x259) && (temp_s0->unk_06 < 3) && (gLapCountByPlayerId[playerId] < 3)) { + func_8001AB74(playerId, &temp_s0->unk_00, gen_random_item_cpu((s16)gLapCountByPlayerId[playerId], gGPCurrentRaceRankByPlayerId[playerId])); } else { - func_8001ABE0(playerId, (s32) temp_s0); + func_8001ABE0(playerId, temp_s0); } - default: /* switch 1 */ break; - case 1: /* switch 1 */ - if ((gLapCountByPlayerId[playerId] > 0) && (temp_v1_2 = D_80163478, temp_a0 = gGPCurrentRaceRankByPlayerId[temp_v1_2], ((temp_a0 < gGPCurrentRaceRankByPlayerId[playerId]) != 0)) && (temp_a0 == 0)) { - temp_v0 = sp2C->characterId; - switch (temp_v0) { /* switch 3; irregular */ - case 4: /* switch 3 */ - if (func_80007BF8(gNearestWaypointByPlayerId[playerId], gNearestWaypointByPlayerId[temp_v1_2], 0x0028U, 2U, (u16) (s32) D_80164430) > 0) { - temp_s0->unk0 = 0x0022; + + case 1: + if ((gLapCountByPlayerId[playerId] > 0) && (gGPCurrentRaceRankByPlayerId[D_80163478] > gGPCurrentRaceRankByPlayerId[playerId]) && (gGPCurrentRaceRankByPlayerId[D_80163478] == 0)) { + switch (player->characterId) { + case 4: + if (func_80007BF8(gNearestWaypointByPlayerId[playerId], gNearestWaypointByPlayerId[D_80163478], 0x0028U, 2U, (u16) ((s32) D_80164430)) > 0) { + temp_s0->unk_00 = 0x0022; } break; - case 6: /* switch 3 */ - if (func_80007BF8(gNearestWaypointByPlayerId[playerId], gNearestWaypointByPlayerId[temp_v1_2], 4U, 2U, (u16) (s32) D_80164430) > 0) { - temp_s0->unk0 = 0x0022; + + case 6: + if (func_80007BF8(gNearestWaypointByPlayerId[playerId], gNearestWaypointByPlayerId[D_80163478], 4U, 2U, (u16) ((s32) D_80164430)) > 0) { + temp_s0->unk_00 = 0x0022; } break; - default: /* switch 3 */ - if (func_80007BF8(gNearestWaypointByPlayerId[playerId], gNearestWaypointByPlayerId[temp_v1_2], 0x000AU, 2U, (u16) (s32) D_80164430) > 0) { - temp_s0->unk0 = 0x0022; + + default: + if (func_80007BF8(gNearestWaypointByPlayerId[playerId], gNearestWaypointByPlayerId[D_80163478], 0x000AU, 2U, (u16) ((s32) D_80164430)) > 0) { + temp_s0->unk_00 = 0x0022; } break; } - } else if (temp_a1 == 1) { - temp_s0->ffff = use_banana_item(sp2C); - temp_v1_3 = temp_s0->ffff; - if ((temp_v1_3 >= 0) && (temp_v1_3 < 0x64)) { - sp2C->statusEffects |= 0x40000; - temp_s0->unk0 = 2; - temp_s0->timer = 0; - temp_s0->laps += 1; - temp_s0->unkE = (s16) ((random_int(3U) * 0x14) + 0xA); + } else if (temp_s0->unk_00 == 1) { + temp_s0->actorIndex = use_banana_item(player); + if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) { + player->statusEffects |= 0x40000; + temp_s0->unk_00 = 2; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; + temp_s0->unk_0E = (random_int(3U) * 0x14) + 0xA; } else { - temp_s0->unk0 = 0; - temp_s0->timer = 0; + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; } } break; - case 2: /* switch 1 */ - temp_a3 = &gActorList[temp_s0->ffff]; - if (!(temp_a3->flags & 0x8000) || (temp_a3->type != 6) || (temp_a3->state != 0) || (playerId != temp_a3->rot[0])) { - temp_s0->unk0 = 0; - temp_s0->timer = 0; - sp2C->statusEffects &= 0xFFFBFFFF; - } else if (temp_s0->unkE < temp_s0->timer) { - temp_s0->unk0 = 3; - } - break; - case 3: /* switch 1 */ - temp_a3_2 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_2->flags & 0x8000) || (temp_a3_2->type != 6) || (temp_a3_2->state != 0) || (playerId != temp_a3_2->rot[0])) { - if (playerId != temp_a3_2->rot[0]) { - } - } else { - temp_a3_2->state = 1; - temp_a3_2->velocity[0] = 0.0f; - temp_a3_2->velocity[1] = 0.0f; - temp_a3_2->velocity[2] = 0.0f; - if (*(&D_801631E0 + (playerId * 2)) == (u16) 1) { - sp28 = temp_a3_2; - temp_a3_2->pos[1] = func_802AE1C0(sp2C->pos[0], (f32) ((f64) sp2C->pos[1] + 30.0), sp2C->pos[2]) + (temp_a3_2->boundingBoxSize + 1.0f); - } - } - sp2C->statusEffects &= 0xFFFBFFFF; - temp_s0->timer = 0; - temp_s0->unk0 = 0; - break; - case 34: /* switch 1 */ - temp_s0->ffff = use_banana_item(sp2C); - temp_v1_4 = temp_s0->ffff; - if ((temp_v1_4 >= 0) && (temp_v1_4 < 0x64)) { - temp_a3_3 = &gActorList[temp_v1_4]; - temp_a3_3->state = 4; - sp2C->statusEffects |= 0x40000; - temp_s0->unk0 = 0x0023; - temp_s0->timer = 0; - temp_s0->laps += 1; - temp_a2 = D_80163478; - temp_v0_2 = &D_80164550[*gPathIndexByPlayerId][(s32) (gNearestWaypointByPlayerId[temp_a2] + 0x1E) % (s32) gWaypointCountByPathIndex[gPathIndexByPlayerId[temp_a2]]]; - temp_a3_3->velocity[0] = (f32) ((f64) ((f32) temp_v0_2->posX - sp2C->pos[0]) / 20.0); - temp_a3_3->velocity[1] = (f32) (((f64) ((f32) temp_v0_2->posY - sp2C->pos[1]) / 20.0) + 4.0); - temp_a3_3->velocity[2] = (f32) ((f64) ((f32) temp_v0_2->posZ - sp2C->pos[2]) / 20.0); - temp_a3_3->pos[1] = sp2C->pos[1]; - func_800C92CC(playerId & 0xFF, 0x29008009, temp_a2 * 2, temp_a3_3); - func_800C98B8(sp2C->pos, sp2C->velocity, 0x19018014U); - } else { - temp_s0->timer = 0; - temp_s0->unk0 = 0; + case 2: + banana = (struct BananaActor*)&gActorList[temp_s0->actorIndex]; + if ((!(banana->flags & 0x8000)) || (banana->type != 6) || (banana->state != 0) || (playerId != banana->playerId)) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + player->statusEffects &= ~0x00040000; + } else if (temp_s0->unk_0E < temp_s0->unk_04) { + temp_s0->unk_00 = 3; } break; - case 35: /* switch 1 */ - temp_a3_4 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_4->flags & 0x8000) || (temp_a3_4->type != 6) || (temp_a3_4->state != 4) || (playerId != temp_a3_4->rot[0])) { - temp_s0->timer = 0; - temp_s0->unk0 = 0; - sp2C->statusEffects &= 0xFFFBFFFF; - } else { - temp_a3_4->pos[0] += temp_a3_4->velocity[0]; - temp_a3_4->velocity[1] = (f32) ((f64) temp_a3_4->velocity[1] - 0.4); - temp_a3_4->pos[2] += temp_a3_4->velocity[2]; - temp_a3_4->pos[1] += temp_a3_4->velocity[1]; - if (temp_s0->timer >= 0x15) { - temp_s0->unk0 = 0x0024; - } - } - break; - case 36: /* switch 1 */ - temp_a3_5 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_5->flags & 0x8000) || (temp_a3_5->type != 6) || (temp_a3_5->state != 4) || (playerId != temp_a3_5->rot[0])) { - if (playerId != temp_a3_5->rot[0]) { - } + case 3: + banana = (struct BananaActor*)&gActorList[temp_s0->actorIndex]; + if ((((!(banana->flags & 0x8000)) || (banana->type != 6)) || (banana->state != 0)) || (playerId != banana->playerId)) { + if (playerId != banana->playerId) {} } else { - temp_a3_5->state = 1; - temp_a3_5->velocity[0] = 0.0f; - temp_a3_5->velocity[1] = 0.0f; - temp_a3_5->velocity[2] = 0.0f; - sp28 = temp_a3_5; - temp_a3_5->pos[1] = func_802AE1C0(temp_a3_5->pos[0], (f32) ((f64) temp_a3_5->pos[1] + 30.0), temp_a3_5->pos[2]) + (temp_a3_5->boundingBoxSize + 1.0f); + banana->state = 1; + banana->velocity[0] = 0.0f; + banana->velocity[1] = 0.0f; + banana->velocity[2] = 0.0f; + if (D_801631E0[playerId] == ((u16) 1)) { + banana->pos[1] = func_802AE1C0(player->pos[0], (f32) (((f64) player->pos[1]) + 30.0), player->pos[2]) + (banana->boundingBoxSize + 1.0f); + } } - sp2C->statusEffects &= 0xFFFBFFFF; - temp_s0->timer = 0; - temp_s0->unk0 = 0; + player->statusEffects &= ~0x00040000; + temp_s0->unk_04 = 0; + temp_s0->unk_00 = 0; break; - case 4: /* switch 1 */ - if ((s32) gNumActors < 0x50) { - temp_s0->ffff = use_green_shell_item(sp2C); - temp_v1_5 = temp_s0->ffff; - if ((temp_v1_5 >= 0) && (temp_v1_5 < 0x64)) { - temp_s0->unk0 = 5; - temp_s0->timer = 0; - temp_s0->laps += 1; - temp_s0->unkE = (s16) ((random_int(3U) * 0x14) + 0xA); + + case 34: + temp_s0->actorIndex = use_banana_item(player); + if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) { + banana = (struct BananaActor*)&gActorList[temp_s0->actorIndex]; + banana->state = 4; + player->statusEffects |= 0x40000; + temp_s0->unk_00 = 0x0023; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; + waypoint = &D_80164550[gPathIndexByPlayerId[0]][(gNearestWaypointByPlayerId[D_80163478] + 0x1E) % gWaypointCountByPathIndex[gPathIndexByPlayerId[D_80163478]]]; + banana->velocity[0] = (waypoint->posX - player->pos[0]) / 20.0; + banana->velocity[1] = ((waypoint->posY - player->pos[1]) / 20.0) + 4.0; + banana->velocity[2] = (waypoint->posZ - player->pos[2]) / 20.0; + banana->pos[1] = player->pos[1]; + func_800C92CC(playerId, 0x29008009U); + func_800C98B8(player->pos, player->velocity, 0x19018014U); + } else { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + } + break; + + case 35: + banana = (struct BananaActor*)&gActorList[temp_s0->actorIndex]; + if ((((!(banana->flags & 0x8000)) || (banana->type != 6)) || (banana->state != 4)) || (playerId != banana->playerId)) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + player->statusEffects &= ~0x00040000; + } else { + banana->velocity[1] -= 0.4; + banana->pos[0] += banana->velocity[0]; + banana->pos[1] += banana->velocity[1]; + banana->pos[2] += banana->velocity[2]; + if (temp_s0->unk_04 >= 0x15) { + temp_s0->unk_00 = 0x0024; + } + } + break; + + case 36: + banana = (struct BananaActor*)&gActorList[temp_s0->actorIndex]; + if ((((!(banana->flags & 0x8000)) || (banana->type != 6)) || (banana->state != 4)) || (playerId != banana->playerId)) { + if (playerId != banana->playerId) {} + } else { + banana->state = 1; + banana->velocity[0] = 0.0f; + banana->velocity[1] = 0.0f; + banana->velocity[2] = 0.0f; + banana->pos[1] = func_802AE1C0(banana->pos[0], (f32) (((f64) banana->pos[1]) + 30.0), banana->pos[2]) + (banana->boundingBoxSize + 1.0f); + } + player->statusEffects &= ~0x00040000; + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + break; + + case 4: + if (((s32) gNumActors) < 0x50) { + temp_s0->actorIndex = use_green_shell_item(player); + if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) { + temp_s0->unk_00 = 5; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; + temp_s0->unk_0E = (random_int(3U) * 0x14) + 0xA; } else { - goto block_71; + temp_s0->unk_00 = 0; } } else { -block_71: - temp_s0->unk0 = 0; + temp_s0->unk_00 = 0; } break; - case 5: /* switch 1 */ - temp_a3_6 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_6->flags & 0x8000) || (temp_a3_6->type != 7) || (temp_a3_6->state != 0) || (playerId != temp_a3_6->rot[2])) { - temp_s0->timer = 0; - temp_s0->unk0 = 0; - } else if (temp_s0->unkE < temp_s0->timer) { - temp_s0->timer = 0; - temp_s0->unk0 = 6; + + case 5: + actor = &gActorList[temp_s0->actorIndex]; + if ((((!(actor->flags & 0x8000)) || (actor->type != 7)) || (actor->state != 0)) || (playerId != actor->rot[2])) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + } else if (temp_s0->unk_0E < temp_s0->unk_04) { + temp_s0->unk_00 = 6; + temp_s0->unk_04 = 0; } break; - case 6: /* switch 1 */ - temp_a3_7 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_7->flags & 0x8000) || (temp_a3_7->type != 7) || (temp_a3_7->state != 0) || (playerId != temp_a3_7->rot[2])) { - temp_s0->unk0 = 0; - temp_s0->timer = 0; + + case 6: + actor = &gActorList[temp_s0->actorIndex]; + if ((((!(actor->flags & 0x8000)) || (actor->type != 7)) || (actor->state != 0)) || (playerId != actor->rot[2])) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; } else { - temp_a3_7->state = 1; - temp_s0->timer = 0; - temp_s0->unk0 = 0; + actor->state = 1; + temp_s0->unk_04 = 0; + temp_s0->unk_00 = 0; } break; - case 7: /* switch 1 */ - if ((s32) gNumActors < 0x50) { - temp_s0->ffff = use_red_shell_item(sp2C); - temp_v1_6 = temp_s0->ffff; - if ((temp_v1_6 >= 0) && (temp_v1_6 < 0x64)) { - temp_s0->unk0 = 8; - temp_s0->timer = 0; - temp_s0->laps += 1; - temp_s0->unkE = (s16) ((random_int(3U) * 0x14) + 0xA); + + case 7: + if (((s32) gNumActors) < 0x50) { + temp_s0->actorIndex = use_red_shell_item(player); + if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) { + temp_s0->unk_00 = 8; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; + temp_s0->unk_0E = (random_int(3U) * 0x14) + 0xA; } else { - goto block_92; + temp_s0->unk_00 = 0; } } else { -block_92: - temp_s0->unk0 = 0; + temp_s0->unk_00 = 0; } break; - case 8: /* switch 1 */ - temp_a3_8 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_8->flags & 0x8000) || (temp_a3_8->type != 8) || (temp_a3_8->state != 0) || (playerId != temp_a3_8->rot[2])) { - temp_s0->timer = 0; - temp_s0->unk0 = 0; - } else if (temp_s0->unkE < temp_s0->timer) { - temp_s0->unk0 = 9; + + case 8: + shell = (struct ShellActor*) &gActorList[temp_s0->actorIndex]; + if ((((!(shell->flags & 0x8000)) || (shell->type != 8)) || (shell->state != 0)) || (playerId != shell->playerId)) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + } else if (temp_s0->unk_0E < temp_s0->unk_04) { + temp_s0->unk_00 = 9; } break; - case 9: /* switch 1 */ - func_8001ABEC(temp_s0); - temp_a3_9 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_9->flags & 0x8000) || (temp_a3_9->type != 8) || (temp_a3_9->state != 0) || (playerId != temp_a3_9->rot[2])) { - temp_s0->unk0 = 0; - temp_s0->timer = 0; + + case 9: + func_8001ABEC((struct struct_801642D8 *) temp_s0); + shell = (struct ShellActor*) &gActorList[temp_s0->actorIndex]; + if ((((!(shell->flags & 0x8000)) || (shell->type != 8)) || (shell->state != 0)) || (playerId != shell->playerId)) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; } else { - temp_a3_9->state = 1; - temp_s0->timer = 0; - temp_s0->unk0 = 0; + shell->state = 1; + temp_s0->unk_04 = 0; + temp_s0->unk_00 = 0; } break; - case 10: /* switch 1 */ - if ((s32) gNumActors < 0x50) { - temp_s0->ffff = use_banana_bunch_item(sp2C); - temp_v1_7 = temp_s0->ffff; - if ((temp_v1_7 >= 0) && (temp_v1_7 < 0x64)) { - temp_s0->unk0 = 0x000B; - temp_s0->timer = 0; - temp_s0->laps += 1; - temp_s0->unkE = (s16) ((random_int(3U) * 0x14) + 0x3C); + + case 10: + if (((s32) gNumActors) < 0x50) { + temp_s0->actorIndex = use_banana_bunch_item(player); + if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) { + temp_s0->unk_00 = 0x000B; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; + temp_s0->unk_0E = (random_int(3U) * 0x14) + 0x3C; } else { - goto block_113; + temp_s0->unk_00 = 0; } } else { -block_113: - temp_s0->unk0 = 0; + temp_s0->unk_00 = 0; } break; - case 11: /* switch 1 */ - temp_a3_10 = &gActorList[temp_s0->ffff]; - if (temp_a3_10->state == 6) { - var_v1 = 0; - if (temp_a3_10->unk1A != -1) { - var_v1 = 1; + + case 11: + bananaBunchParent = (struct BananaBunchParent*)&gActorList[temp_s0->actorIndex]; + if (bananaBunchParent->state == 6) { + var_v0 = 0; + if (bananaBunchParent->bananaIndices[4] != (-1)) { + var_v0 = 1; } - if (temp_a3_10->unk18 != -1) { - var_v1 = 1; + if (bananaBunchParent->bananaIndices[3] != (-1)) { + var_v0 = 1; } - if (temp_a3_10->unk_16 != -1) { - var_v1 = 1; + if (bananaBunchParent->bananaIndices[2] != (-1)) { + var_v0 = 1; } - if (temp_a3_10->rot[2] != -1) { - var_v1 = 1; + if (bananaBunchParent->bananaIndices[1] != (-1)) { + var_v0 = 1; } - if (temp_a3_10->rot[1] != -1) { - var_v1 = 1; + if (bananaBunchParent->bananaIndices[0] != (-1)) { + var_v0 = 1; } - if ((temp_a3_10->type != 0x000E) || (var_v1 == 0)) { - temp_s0->unk0 = 0; - goto block_131; - } - if (temp_s0->unkE < temp_s0->timer) { - temp_s0->unk0 = 0x000C; - temp_s0->unk8 = 0; -block_131: - temp_s0->timer = 0; + if ((bananaBunchParent->type != 0x000E) || (var_v0 == 0)) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + } else if (temp_s0->unk_0E < temp_s0->unk_04) { + temp_s0->unk_00 = 0x000C; + temp_s0->unk_08 = 0; + temp_s0->unk_04 = 0; } } break; - case 12: /* switch 1 */ - if (((s16) temp_s0->timer % 10) == 0) { - temp_v1_8 = temp_s0->unk8; - if (temp_v1_8 < 5) { + + case 12: + if ((((s16) temp_s0->unk_04) % 10) == 0) { + if (temp_s0->unk_08 < 5) { + bananaBunchParent = (struct BananaBunchParent*)&gActorList[temp_s0->actorIndex]; var_v0 = 0; - temp_a3_11 = &gActorList[temp_s0->ffff]; - switch (temp_v1_8) { /* switch 2 */ - case 0: /* switch 2 */ - if (temp_a3_11->unk1A != -1) { -block_146: + switch (temp_s0->unk_08) { + case 0: + if (bananaBunchParent->bananaIndices[4] != (-1)) { var_v0 = 1; } break; - case 1: /* switch 2 */ - if (temp_a3_11->unk18 != -1) { - goto block_146; - } - break; - case 2: /* switch 2 */ - if (temp_a3_11->unk_16 != -1) { - goto block_146; - } - break; - case 3: /* switch 2 */ - if (temp_a3_11->rot[2] != -1) { - goto block_146; - } - break; - case 4: /* switch 2 */ - if (temp_a3_11->rot[1] != -1) { - goto block_146; - } - break; - } - if ((temp_a3_11->type == 0x000E) && (temp_a3_11->state == 6) && (var_v0 == 1)) { - func_802B0648((struct BananaBunchParent *) temp_a3_11); - } - temp_s0->unk8 = (s16) (temp_s0->unk8 + 1); - } else { - temp_s0->timer = 0; - temp_s0->unk0 = 0; - } - } - break; - case 13: /* switch 1 */ - temp_s0->ffff = use_fake_itembox_item(sp2C); - temp_v1_9 = temp_s0->ffff; - if ((temp_v1_9 >= 0) && (temp_v1_9 < 0x64)) { - temp_s0->unk0 = 0x000E; - temp_s0->timer = 0; - temp_s0->laps += 1; - temp_s0->unkE = (s16) ((random_int(3U) * 0x14) + 0xA); - } else { - temp_s0->unk0 = 0; - } - break; - case 14: /* switch 1 */ - temp_a3_12 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_12->flags & 0x8000) || (temp_a3_12->type != 0x000D) || (temp_a3_12->state != 0) || (playerId != (s32) temp_a3_12->velocity[0])) { - temp_s0->timer = 0; - temp_s0->unk0 = 0; - } else if (temp_s0->unkE < temp_s0->timer) { - temp_s0->unk0 = 0x000F; - } - break; - case 15: /* switch 1 */ - temp_a3_13 = &gActorList[temp_s0->ffff]; - if (!(temp_a3_13->flags & 0x8000) || (temp_a3_13->type != 0x000D) || (temp_a3_13->state != 0) || (playerId != (s32) temp_a3_13->velocity[0])) { - if (playerId != temp_a3_13->rot[0]) { + case 1: + if (bananaBunchParent->bananaIndices[3] != (-1)) { + var_v0 = 1; + } + break; + + case 2: + if (bananaBunchParent->bananaIndices[2] != (-1)) { + var_v0 = 1; + } + break; + + case 3: + if (bananaBunchParent->bananaIndices[1] != (-1)) { + var_v0 = 1; + } + break; + + case 4: + if (bananaBunchParent->bananaIndices[0] != (-1)) { + var_v0 = 1; + } + break; + } + + if (((bananaBunchParent->type == 0x000E) && (bananaBunchParent->state == 6)) && (var_v0 == 1)) { + func_802B0648(bananaBunchParent); + } + temp_s0->unk_08 += 1; + } else { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; } + } + break; + + case 13: + temp_s0->actorIndex = use_fake_itembox_item(player); + if ((temp_s0->actorIndex >= 0) && (temp_s0->actorIndex < 0x64)) { + temp_s0->unk_00 = 0x000E; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; + temp_s0->unk_0E = (random_int(3U) * 0x14) + 0xA; } else { - sp28 = temp_a3_13; - func_802A1064((struct FakeItemBox *) temp_a3_13); - if (*(&D_801631E0 + (playerId * 2)) == 1) { - sp28 = temp_a3_13; - temp_a3_13->pos[1] = func_802AE1C0(temp_a3_13->pos[0], (f32) ((f64) temp_a3_13->pos[1] + 30.0), temp_a3_13->pos[2]) + temp_a3_13->boundingBoxSize; + temp_s0->unk_00 = 0; + } + break; + + case 14: + fakeItemBox = (struct FakeItemBox*)&gActorList[temp_s0->actorIndex]; + if ((((!(fakeItemBox->flags & 0x8000)) || (fakeItemBox->type != 0x000D)) || (fakeItemBox->state != 0)) || (playerId != ((s32) fakeItemBox->playerId))) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + } else if (temp_s0->unk_0E < temp_s0->unk_04) { + temp_s0->unk_00 = 0x000F; + } + break; + + case 15: + fakeItemBox = (struct FakeItemBox*)&gActorList[temp_s0->actorIndex]; + if ((((!(fakeItemBox->flags & 0x8000)) || (fakeItemBox->type != 0x000D)) || (fakeItemBox->state != 0)) || (playerId != ((s32) fakeItemBox->playerId))) { + if (playerId != fakeItemBox->rot[0]) {} + } else { + func_802A1064(fakeItemBox); + if (D_801631E0[playerId] == 1) { + fakeItemBox->pos[1] = func_802AE1C0(fakeItemBox->pos[0], fakeItemBox->pos[1] + 30.0, fakeItemBox->pos[2]) + fakeItemBox->boundingBoxSize; } } - temp_s0->timer = 0; - temp_s0->unk0 = 0; + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; break; - case 22: /* switch 1 */ - use_thunder_item(sp2C); - func_800CAC60(playerId & 0xFF); + + case 22: + use_thunder_item(player); + func_800CAC60(playerId); func_8009E5BC(); - temp_s0->timer = 0; - temp_s0->unk0 = 0x0017; - temp_s0->laps += 1; + temp_s0->unk_00 = 0x0017; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; break; - case 23: /* switch 1 */ - if (temp_s0->timer >= 0xF1) { - func_800CAD40((u8) playerId, temp_a1); - temp_s0->timer = 0; - temp_s0->unk0 = 0; + + case 23: + if (temp_s0->unk_04 >= 0xF1) { + func_800CAD40((s32) ((u8) playerId)); + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; } break; - case 25: /* switch 1 */ - sp2C->statusEffects |= 0x2000; - temp_s0->timer = 0; - temp_s0->unk0 = 0x001A; - temp_s0->laps += 1; + + case 25: + player->statusEffects |= 0x2000; + temp_s0->unk_00 = 0x001A; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; break; - case 26: /* switch 1 */ - if (!(sp2C->effects & 0x200)) { - temp_s0->unk0 = 0; + + case 26: + if (!(player->effects & 0x200)) { + temp_s0->unk_00 = 0; } - temp_s0->timer = 0; + temp_s0->unk_04 = 0; break; - case 27: /* switch 1 */ - sp2C->statusEffects |= 0x800; - temp_s0->timer = 0; - temp_s0->unk0 = 0x001C; - temp_s0->laps += 1; + + case 27: + player->statusEffects |= 0x800; + temp_s0->unk_00 = 0x001C; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; break; - case 28: /* switch 1 */ - if (!(sp2C->effects & 0x80000000)) { - temp_s0->unk0 = 0; + + case 28: + if (!(player->effects & 0x80000000)) { + temp_s0->unk_00 = 0; } - temp_s0->timer = 0; + temp_s0->unk_04 = 0; break; - case 29: /* switch 1 */ - sp2C->statusEffects |= 0x200; - temp_s0->timer = 0; - temp_s0->unk0 = 0; - temp_s0->laps += 1; + + case 29: + player->statusEffects |= 0x200; + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; + temp_s0->unk_06 += 1; break; - case 30: /* switch 1 */ - if (temp_s0->timer >= 0x3D) { - sp2C->statusEffects |= 0x200; - temp_s0->timer = 0; - temp_s0->unk0 = 0x001D; + + case 30: + if (temp_s0->unk_04 >= 0x3D) { + player->statusEffects |= 0x200; + temp_s0->unk_00 = 0x001D; + temp_s0->unk_04 = 0; } break; - case 31: /* switch 1 */ - if (temp_s0->timer >= 0x3D) { - sp2C->statusEffects |= 0x200; - temp_s0->timer = 0; - temp_s0->unk0 = 0x001E; + + case 31: + if (temp_s0->unk_04 >= 0x3D) { + player->statusEffects |= 0x200; + temp_s0->unk_00 = 0x001E; + temp_s0->unk_04 = 0; } break; - case 32: /* switch 1 */ - temp_s0->timer = 0; - temp_s0->unk0 = 0x0021; - temp_s0->unkE = 0x0258; + + case 32: + temp_s0->unk_00 = 0x0021; + temp_s0->unk_04 = 0; + temp_s0->unk_0E = 0x0258; break; - case 33: /* switch 1 */ - if (((s16) temp_s0->timer % 60) == 0) { - sp2C->statusEffects |= 0x200; - if (temp_s0->unkE < temp_s0->timer) { - temp_s0->timer = 0; - temp_s0->unk0 = 0; + + case 33: + if ((((s16) temp_s0->unk_04) % 60) == 0) { + player->statusEffects |= 0x200; + if (temp_s0->unk_0E < temp_s0->unk_04) { + temp_s0->unk_00 = 0; + temp_s0->unk_04 = 0; } } break; + + default: + break; } - if (temp_s0->timer < 0x2710) { - temp_s0->timer += 1; + + if (temp_s0->unk_04 < 0x2710) { + temp_s0->unk_04 += 1; } - if (sp2C->effects & 0x80002200) { - temp_s0->timer = 0; + if (player->effects & 0x80002200) { + temp_s0->unk_04 = 0; } } } @@ -9947,8 +9286,6 @@ block_146: GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001AC10.s") #endif -extern u16 D_80163410[]; // One per player? - void func_8001BE78(void) { Player* temp_s1; TrackWaypoint* temp_s0; @@ -10026,15 +9363,14 @@ void func_8001C05C(void) { } #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -void func_80009B60(s32); /* extern */ +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-11-2023 extern ? D_80163418; extern ? D_80163438; extern s16 D_8016347C; extern s16 D_8016347E; extern s32 D_80163480; extern s32 D_80163484; -extern u16 D_80163E2C; // This is really D_80163DE8.state +extern u16 D_80163E2C; void func_8001C14C(void) { Player *temp_s0; @@ -10059,41 +9395,47 @@ void func_8001C14C(void) { } var_s1 = 0; loop_8: - if ((var_s1 != 3) || (D_8016347C != 0)) { - temp_s0 = &gPlayerOne[var_s1]; - func_80009B60(var_s1); - temp_v1 = temp_s0->type; - temp_v0 = var_s1 * 4; - if ((temp_v1 & 0x2000) == 0) { - temp_f0 = *(&D_80163418 + temp_v0) - temp_s0->pos[0]; - temp_f2 = *(&D_80163438 + temp_v0) - temp_s0->pos[2]; - if ((f64) ((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 1.0) { - if (var_s1 != 3) { - if (D_8016347C == 0) { - temp_s0->type = temp_v1 | 0x2000; - } else { - temp_s0->type = temp_v1 & 0xDFFF; - } - if (((gPlayerOne->type & 0x2000) != 0) && ((gPlayerTwo->type & 0x2000) != 0) && ((gPlayerThree->type & 0x2000) != 0)) { - D_8016347C = 1; - D_80163480 = 0; - } - } else if (D_8016347E == 0) { - if ((temp_s0->effects & 0x01000000) == 0) { - temp_s0->type = temp_v1 | 0x2000; - } - D_8016347E = 1; - D_80163484 = 0; - } else if ((temp_s0->effects & 0x01000000) == 0) { + if (var_s1 == 3) { + if (D_8016347C != 0) { + goto block_12; + } + return; + } +block_12: + temp_s0 = &gPlayerOne[var_s1]; + func_80009B60(var_s1); + temp_v1 = temp_s0->type; + temp_v0 = var_s1 * 4; + if (!(temp_v1 & 0x2000)) { + temp_f0 = *(&D_80163418 + temp_v0) - temp_s0->pos[0]; + temp_f2 = *(&D_80163438 + temp_v0) - temp_s0->pos[2]; + if ((f64) ((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 1.0) { + if (var_s1 != 3) { + if (D_8016347C == 0) { + temp_s0->type = temp_v1 | 0x2000; + } else { + temp_s0->type = temp_v1 & 0xDFFF; + } + if ((gPlayerOne->type & 0x2000) && (gPlayerTwo->type & 0x2000) && (gPlayerThree->type & 0x2000)) { + D_8016347C = 1; + D_80163480 = 0; + } + } else if (D_8016347E == 0) { + if (!(temp_s0->effects & 0x01000000)) { temp_s0->type = temp_v1 | 0x2000; } + D_8016347E = 1; + D_80163484 = 0; + } else if (!(temp_s0->effects & 0x01000000)) { + temp_s0->type = temp_v1 | 0x2000; } } - var_s1 += 1; - if (var_s1 != 4) { - goto loop_8; - } } + var_s1 += 1; + if (var_s1 == 4) { + return; + } + goto loop_8; } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8001C14C.s") diff --git a/src/code_80005FD0.h b/src/code_80005FD0.h index a8bad64d3..4e96ee64d 100644 --- a/src/code_80005FD0.h +++ b/src/code_80005FD0.h @@ -3,6 +3,7 @@ #include "vehicles.h" #include "camera.h" +#include "waypoints.h" struct struct_801642D8 { /* 0x0 */ u16 unk0; @@ -34,6 +35,20 @@ typedef struct { extern Test D_801634F8[]; +// Something related to CPU item usage +typedef struct { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 actorIndex; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ s16 unk_08; + /* 0x0A */ s16 unk_0A; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; +} D_801642D8_entry; // size = 0x10 + +extern D_801642D8_entry D_801642D8[]; + /* Function Prototypes */ void func_80012190(void); void func_8000BA14(u16, f32, f32, s16); @@ -44,7 +59,9 @@ void func_800147E0(void); void func_800132F4(void); s16 func_80005FD0(Vec3f, Vec3f); void func_800100F0(s32); +void func_80011E38(s32); void func_800120C8(void); +void func_80012780(TrainCarStuff*, s16*, u16); void func_800127E0(void); s32 func_80006018(f32, f32, f32, f32, f32, f32, f32, f32); void func_80006114(Vec3f, Vec3f, s16); @@ -61,6 +78,7 @@ void func_80008F38(s32); void func_80009000(s32); void func_800090F0(s32, Player*); +f32 func_80009258(s32, f32, f32); void func_800097E0(void); void func_80009B60(s32); @@ -68,6 +86,7 @@ s32 func_8000B7E4(s32, u16); s32 func_8000B820(s32); f32 func_8000B874(f32, f32, u16, s32); void func_8000B95C(s32, u16, s32); +void func_8000BBD8(u16, f32, s16); s16 func_8000BD94(f32, f32, f32, s32); s16 func_8000C0BC(f32, f32, f32, u16, s32*); @@ -81,8 +100,9 @@ s16 func_8000CD24(f32, f32, f32, s16, Player*, s32, s32); s16 func_8000D24C(f32, f32, f32, s32*); s16 func_8000D2B4(f32, f32, f32, s16, s32); s16 func_8000D33C(f32, f32, f32, s16, s32); -s16 func_8000D6D0(Vec3f, s16*, f32, f32, s32, s32); -s16 func_8000D940(Vec3f, s16*, f32, f32, s32); +f32 func_8000D3B8(s32); +s16 func_8000D6D0(Vec3f, s16*, f32, f32, s16, s16); +s16 func_8000D940(Vec3f, s16*, f32, f32, s16); s16 func_8000DBAC(Vec3f, s16*, f32); void func_8000DD78(void); void func_8000DF8C(s32); @@ -94,19 +114,25 @@ s32 func_8000EE10(s32); void func_8000EE58(s32); void func_8000EEDC(void); void func_8000EF20(void); -void func_8000EF20(void); void func_8000F0E0(void); void func_8000F124(void); +void func_8000F2BC(TrackWaypoint*, size_t); +void func_8000F2DC(void); void func_80010218(s32); f32 func_80010480(s32, u16); void func_800107C4(s32); s16 func_80010CB0(s32, s32); void func_80010DBC(s32); +void func_80010E6C(s32); f32 func_80010F40(f32, f32, f32, s32); f32 func_80010FA0(f32, f32, f32, s32); +u16 func_80011014(TrackWaypoint *, TrackWaypoint *, s32, s32); +s32 process_path_data(TrackWaypoint*, TrackWaypoint*); +s32 func_8001168C(void*, void*, s32); +void func_80011A5C(void); void func_80011AB8(s32); void func_80011AE4(s32); @@ -116,8 +142,11 @@ void func_80012A48(TrainCarStuff*, s16); void func_80012AC0(void); void func_80012DC0(s32, Player*); +void func_80013054(void); +void func_800131DC(s32); void func_800133C4(void); void func_80013854(Player*); +void func_800139E4(f32, f32, s32, s32, VehicleStuff*, TrackWaypoint*); f32 func_80013C74(s16, s16); void func_80013D20(VehicleStuff*); void func_80013F7C(s32, Player*, VehicleStuff*, f32, f32, s32, u32); @@ -137,13 +166,31 @@ void func_80014C78(void); void func_80014CC0(s32, Player*); void func_80014D08(s32); void func_80014D30(s32, s32); -f32 func_80014EE4(f32 arg0, s32 arg1); +f32 func_80014EE4(f32, s32); +void func_800151A4(Camera*, s32); void func_8001530C(void); void func_80015314(s32, f32, s32); void func_80015390(Camera*, Player*, s32); +void func_80015544(s32, f32, s32, s32); +void func_8001577C(Camera*, s32, s32, s32); +void func_80015A9C(s32, f32, s32, s16); +void func_800162CC(s32, f32, s32, s16); +void func_80016C3C(s32, f32, s32); + +void func_80017720(s32, f32, s32, s16); +void func_80017F10(s32, f32, s32, s16); + +void func_80018718(s32, f32, s32, s16); + +void func_80019118(s32, f32, s32, s16); +void func_8001933C(Camera*, s32, s32, s32); void func_8001968C(void); +void func_8001969C(s32, f32, s32, s16); +void func_80019760(Camera*, s32, s32, s32); +void func_80019890(s32, s32); +void func_80019B50(s32, u16); void func_80019C50(s32); void func_80019D2C(Camera*, Player*, s32); void func_80019DE4(void); @@ -154,10 +201,20 @@ void func_80019FB4(s32); void func_8001A0A4(u16*, Camera*, Player*, s8, s32); void func_8001A0DC(u16*, Camera*, Player*, s8, s32); +void func_8001A124(s32, s32); s32 func_8001A310(s32, s32); +void func_8001A348(s32, f32, s32); +void func_8001A3D8(s32, f32, s32); +void func_8001A450(s32, s32, s32); +void func_8001A518(s32, s32, s32); void func_8001A588(u16*, Camera*, Player*, s8, s32); -void func_8001ABE0(s32, s32); +void func_8001AB00(void); +void func_8001AB74(s32, s16*, s32); +void func_8001ABE0(s32, D_801642D8_entry*); void func_8001ABEC(struct struct_801642D8*); +void func_8001AC10(s32); + +void func_8001BE78(void); void func_8001C05C(void); void func_8001C14C(void); @@ -174,17 +231,22 @@ extern f32 D_800DCA4C[]; // See bss_80005FD0.s extern Collision D_80162E70; extern s16 D_80162EB0; -extern u16 D_801631E0[8]; -extern s32 D_80163488; +extern s16 D_80162FCC; +extern f32 D_80162FA0[]; - -extern s32 D_8016337C; extern s16 D_80164378[]; extern s32 D_801643E0[]; extern struct unexpiredActors gUnexpiredActorsList[]; -extern s16 D_8016348C; extern s32 D_801643E0[]; extern s32 D_80164408[]; +extern s32 D_8016448C; +extern f32 D_80164498[]; +extern f32 D_801645F8[]; +extern s32 D_80164608[]; +extern f32 D_80164618[]; +extern f32 D_80164638[]; +extern f32 D_80164648[]; +extern f32 D_80164658[]; extern s16 D_80164670[]; extern s16 D_80164672; extern s16 D_80164674; @@ -193,11 +255,30 @@ extern s16 D_80164678[]; // Size 4? Is the three below this fake? extern s16 D_8016467A; extern s16 D_8016467C; extern s16 D_8016467E; +extern s16 D_80164680[]; +extern s16 D_80164682; +extern f32 D_80164688[]; +extern s16 D_801646C0[]; +extern s16 D_801646CC; +extern s16 D_801630FC; +extern s16 D_801631C8; +extern u16 D_801631E0[8]; +extern s32 D_80163238; extern s16 D_801632B8[]; extern s16 D_801632D0[]; extern u16 D_801632E8[]; -extern s16 D_801646CC; +extern s32 D_8016337C; +extern u16 D_80163410[]; // One per player? +extern s16 D_80163478; +extern s32 D_80163488; +extern s16 D_8016348C; +extern s16 D_801634D8[8]; +extern s32 D_8016359C; +extern u16 D_801637BC[2]; +extern u16 D_801637BE; +extern s32 D_80163DD8[]; extern u16 D_80163E2A; + extern Gfx D_0D0076F8[]; extern s32 D_800DDB20; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 28cef0b0d..470eac200 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -4783,40 +4783,11 @@ GLOBAL_ASM("asm/non_matchings/code_80057C60/func_80065AB0.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b -? func_800652D4(f32 *, s16 *, f32); /* extern */ +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 extern ? D_05FF8DB8; -extern u32 D_8018D494; -extern u32 D_8018D498; -static s32 D_800E47DC[0xC] = { - 0x00FBFFFB, - 0x00A06011, - 0x00E0C090, - 0x00D0B080, - 0x00907040, - 0x00C07010, - 0x00D0F0FF, - 0x00E09030, - 0x00C09030, - 0x00604020, - 0x00F0D0B0, - 0x00A08030, -}; -static s32 D_800E480C[0xC] = { - 0x00B0B0B0, - 0x00804011, - 0x00B08050, - 0x00A07040, - 0x00603011, - 0x00804010, - 0x007090A0, - 0x00A06030, - 0x00A07010, - 0x00301011, - 0x00B0A080, - 0x00806010, -}; -static ? D_800E8C00; /* unable to generate initializer */ +extern ? D_800E47DC; +extern ? D_800E480C; +extern ? D_800E8C00; void func_80065F0C(Player *player, s32 arg1, s16 arg2, s8 arg3) { f32 spE4; @@ -4862,11 +4833,11 @@ void func_80065F0C(Player *player, s32 arg1, s16 arg2, s8 arg3) { Gfx *temp_s0_8; Gfx *temp_s0_9; s16 temp_a0; - s16 temp_a1; s16 temp_ra; s16 temp_s2; s16 temp_s3; s32 temp_a2; + s32 temp_t6; s32 temp_v1; void *temp_v0; @@ -4881,11 +4852,11 @@ void func_80065F0C(Player *player, s32 arg1, s16 arg2, s8 arg3) { sp44 = temp_v0; func_800652D4(&spDC, &spD4, temp_v0->unk534 * player->size); if ((s32) sp44->unk53C != 8) { - temp_a1 = sp44->unk560; temp_a0 = sp44->unk562; - temp_v1 = D_800E47DC[temp_a1]; + temp_t6 = sp44->unk560 * 4; + temp_v1 = *(&D_800E47DC + temp_t6); temp_ra = ((temp_v1 >> 0x10) & 0xFF) - temp_a0; - temp_a2 = D_800E480C[temp_a1]; + temp_a2 = *(&D_800E480C + temp_t6); temp_s2 = ((temp_v1 >> 8) & 0xFF) - temp_a0; temp_s3 = (temp_v1 & 0xFF) - temp_a0; spCA = ((temp_a2 >> 0x10) & 0xFF) - temp_a0; @@ -4900,7 +4871,7 @@ void func_80065F0C(Player *player, s32 arg1, s16 arg2, s8 arg3) { temp_s0_2 = gDisplayListHead; gDisplayListHead = temp_s0_2 + 8; temp_s0_2->words.w0 = 0xFD900000; - temp_s0_2->words.w1 = D_8018D494; + temp_s0_2->words.w1 = (u32) D_8018D494; temp_s0_3 = gDisplayListHead; gDisplayListHead = temp_s0_3 + 8; temp_s0_3->words.w1 = 0x07000000; @@ -4938,7 +4909,7 @@ void func_80065F0C(Player *player, s32 arg1, s16 arg2, s8 arg3) { temp_s0_11 = gDisplayListHead; gDisplayListHead = temp_s0_11 + 8; temp_s0_11->words.w0 = 0xFD900000; - temp_s0_11->words.w1 = D_8018D494; + temp_s0_11->words.w1 = (u32) D_8018D494; temp_s0_12 = gDisplayListHead; gDisplayListHead = temp_s0_12 + 8; temp_s0_12->words.w1 = 0x07000000; @@ -4985,7 +4956,7 @@ void func_80065F0C(Player *player, s32 arg1, s16 arg2, s8 arg3) { temp_s0_22 = gDisplayListHead; gDisplayListHead = temp_s0_22 + 8; temp_s0_22->words.w0 = 0xFD100000; - temp_s0_22->words.w1 = D_8018D498; + temp_s0_22->words.w1 = (u32) D_8018D498; temp_s0_23 = gDisplayListHead; gDisplayListHead = temp_s0_23 + 8; temp_s0_23->words.w1 = 0x07080200; diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index 82b67dda9..1f7764a58 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -233,153 +233,40 @@ void init_item_window(s32 objectIndex) { temp_v0->sizeScaling = 1.0f; } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s32 D_8018D240; -extern s16 D_8018D2B0; -extern s16 D_8018D2B8; -static s32 gCourseOutlineTextures[0x14] = { - (s32) &gTextureCourseOutlineMarioRaceway, - (s32) &gTextureCourseOutlineChocoMountain, - (s32) &gTextureCourseOutlineBowsersCastle, - (s32) &gTextureCourseOutlineBansheeBoardwalk, - (s32) &gTextureCourseOutlineYoshiValley, - (s32) &gTextureCourseOutlineFrappeSnowland, - (s32) &gTextureCourseOutlineKoopaTroopaBeach, - (s32) &gTextureCourseOutlineRoyalRaceway, - (s32) &gTextureCourseOutlineLuigiRaceway, - (s32) &gTextureCourseOutlineMooMooFarm, - (s32) &gTextureCourseOutlineToadsTurnpike, - (s32) &gTextureCourseOutlineKalimariDesert, - (s32) &gTextureCourseOutlineSherbetLand, - (s32) &gTextureCourseOutlineRainbowRoad, - (s32) &gTextureCourseOutlineWarioStadium, - (s32) &gTextureCourseOutlineBlockFort, - (s32) &gTextureCourseOutlineSkyscraper, - (s32) &gTextureCourseOutlineDoubleDeck, - (s32) &gTextureCourseOutlineDksJungleParkway, - (s32) &gTextureCourseOutlineBigDonut, -}; -static s16 D_800E5520[0]; /* unable to generate initializer */ -static s16 D_800E5548[0]; /* unable to generate initializer */ -static s32 gTextureCourseOutlineBansheeBoardwalk; /* unable to generate initializer */ -static s32 gTextureCourseOutlineBigDonut; /* unable to generate initializer */ -static s32 gTextureCourseOutlineBlockFort; /* unable to generate initializer */ -static s32 gTextureCourseOutlineBowsersCastle; /* unable to generate initializer */ -static s32 gTextureCourseOutlineChocoMountain; /* unable to generate initializer */ -static s32 gTextureCourseOutlineDksJungleParkway; /* unable to generate initializer */ -static s32 gTextureCourseOutlineDoubleDeck; /* unable to generate initializer */ -static s32 gTextureCourseOutlineFrappeSnowland; /* unable to generate initializer */ -static s32 gTextureCourseOutlineKalimariDesert; /* unable to generate initializer */ -static s32 gTextureCourseOutlineKoopaTroopaBeach; /* unable to generate initializer */ -static s32 gTextureCourseOutlineLuigiRaceway; /* unable to generate initializer */ -static s32 gTextureCourseOutlineMarioRaceway; /* unable to generate initializer */ -static s32 gTextureCourseOutlineMooMooFarm; /* unable to generate initializer */ -static s32 gTextureCourseOutlineRainbowRoad; /* unable to generate initializer */ -static s32 gTextureCourseOutlineRoyalRaceway; /* unable to generate initializer */ -static s32 gTextureCourseOutlineSherbetLand; /* unable to generate initializer */ -static s32 gTextureCourseOutlineSkyscraper; /* unable to generate initializer */ -static s32 gTextureCourseOutlineToadsTurnpike; /* unable to generate initializer */ -static s32 gTextureCourseOutlineWarioStadium; /* unable to generate initializer */ -static s32 gTextureCourseOutlineYoshiValley; /* unable to generate initializer */ -#endif - void func_8006EEE8(s32 courseId) { D_8018D240 = dma_textures(gCourseOutlineTextures[courseId], D_800E5520[courseId], D_800E5520[courseId]); + // This is incredibly dumb. D_800E5548 ought to be something more like + // `u16 D_800E5548[][2]` but that doesn't match for some insane reason D_8018D2B0 = D_800E5548[courseId * 2]; D_8018D2B8 = D_800E5548[courseId * 2 + 1]; } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -extern s32 D_8018D248; -extern s32 D_8018D9B4; -static s32 *gCourseOutlineTextures[0x14] = { - gTextureCourseOutlineMarioRaceway, - gTextureCourseOutlineChocoMountain, - gTextureCourseOutlineBowsersCastle, - gTextureCourseOutlineBansheeBoardwalk, - gTextureCourseOutlineYoshiValley, - gTextureCourseOutlineFrappeSnowland, - gTextureCourseOutlineKoopaTroopaBeach, - gTextureCourseOutlineRoyalRaceway, - gTextureCourseOutlineLuigiRaceway, - gTextureCourseOutlineMooMooFarm, - gTextureCourseOutlineToadsTurnpike, - gTextureCourseOutlineKalimariDesert, - gTextureCourseOutlineSherbetLand, - gTextureCourseOutlineRainbowRoad, - gTextureCourseOutlineWarioStadium, - gTextureCourseOutlineBlockFort, - gTextureCourseOutlineSkyscraper, - gTextureCourseOutlineDoubleDeck, - gTextureCourseOutlineDksJungleParkway, - gTextureCourseOutlineBigDonut, -}; -static s16 D_800E5520; /* unable to generate initializer */ -static s32 gTextureCourseOutlineBansheeBoardwalk[]; -static s32 gTextureCourseOutlineBigDonut[]; -static s32 gTextureCourseOutlineBlockFort[]; -static s32 gTextureCourseOutlineBowsersCastle[]; -static s32 gTextureCourseOutlineChocoMountain[]; -static s32 gTextureCourseOutlineDksJungleParkway[]; -static s32 gTextureCourseOutlineDoubleDeck[]; -static s32 gTextureCourseOutlineFrappeSnowland[]; -static s32 gTextureCourseOutlineKalimariDesert[]; -static s32 gTextureCourseOutlineKoopaTroopaBeach[]; -static s32 gTextureCourseOutlineLuigiRaceway[]; -static s32 gTextureCourseOutlineMarioRaceway[]; -static s32 gTextureCourseOutlineMooMooFarm[]; -static s32 gTextureCourseOutlineRainbowRoad[]; -static s32 gTextureCourseOutlineRoyalRaceway[]; -static s32 gTextureCourseOutlineSherbetLand[]; -static s32 gTextureCourseOutlineSkyscraper[]; -static s32 gTextureCourseOutlineToadsTurnpike[]; -static s32 gTextureCourseOutlineWarioStadium[]; -static s32 gTextureCourseOutlineYoshiValley[]; +#ifdef NON_MATCHING +// I really really don't know what D_8018D9B4 is supposed to be +// Its value is a pointer that seems to point to compressesed data +// of some variety (sometimes TKMK, sometimes MIO0) +extern u8 *D_8018D9B4; void func_8006EF60(void) { - s16 *var_s0; - s16 temp_a2; - s16 temp_t6; - s32 **var_s3; - s32 *var_s4; - s32 var_s1; s32 var_s2; - var_s4 = &D_8018D248; - var_s3 = gCourseOutlineTextures; - var_s0 = &D_800E5520; - var_s2 = 0; - var_s1 = D_8018D9B4 + 0xFFFF0000; - do { - temp_a2 = *var_s0; - temp_t6 = *var_s0; - var_s2 += 1; - *var_s4 = func_8006ED94(*var_s3, var_s1, (s32) temp_a2, (s32) temp_a2); - var_s3 += 4; - var_s0 += 2; - var_s4 += 4; - var_s1 += temp_t6; - } while (var_s2 != 0x14); + 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]; + } } #else GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006EF60.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8006EEE8(s16); /* extern */ -extern s32 D_0F0D0E50; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 extern s32 D_801655C8; extern s16 D_80165718; extern s16 D_80165720; extern s16 D_80165728; -extern s32 D_80165880; -extern f32 D_8018D01C; -extern s32 D_8018D220; +extern u8 *D_80165880; extern f32 D_8018D2A0; -extern s16 D_8018D2B0; extern s16 D_8018D2C0; extern s16 D_8018D2D8; extern s16 D_8018D2E0; @@ -388,18 +275,17 @@ extern s16 D_8018D300; extern s16 D_8018D308; extern s16 D_8018D310; extern s16 D_8018D318; -static ? gTextureExhaust0; /* unable to generate initializer */ -static ? gTextureExhaust1; /* unable to generate initializer */ -static ? gTextureExhaust2; /* unable to generate initializer */ -static ? gTextureExhaust3; /* unable to generate initializer */ -static ? gTextureExhaust4; /* unable to generate initializer */ -static ? gTextureExhaust5; /* unable to generate initializer */ s16 gCurrentCourseId; /* unable to generate initializer */ +static u8 gTextureExhaust0[0x479]; +static u8 gTextureExhaust1[0x485]; +static u8 gTextureExhaust2[0x4F4]; +static u8 gTextureExhaust3[0x3C8]; +static u8 gTextureExhaust4[0x3F8]; +static u8 gTextureExhaust5[0x443]; void func_8006F008(void) { s16 temp_a0; s16 var_t9; - s8 temp_v0; D_801655C8 = 0; D_8018D01C = 1.0f; @@ -414,11 +300,11 @@ void func_8006F008(void) { D_8018D310 = 0x00FF; D_8018D318 = 0x00FF; if (temp_a0 < 0x14) { - func_8006EEE8(temp_a0); + func_8006EEE8((s32) temp_a0); } - switch ((u32) gCurrentCourseId) { + switch (temp_a0) { case 0: - D_8018D220 = dma_textures((s32) &gTextureExhaust5, 0x00000443U, 0x00001000U); + D_8018D220 = dma_textures(gTextureExhaust5, 0x00000443U, 0x00001000U); D_8018D2A0 = 0.022f; D_8018D2E0 = 6; D_8018D2E8 = 0x001C; @@ -443,14 +329,14 @@ block_26: D_8018D2E8 = 0x0030; break; case 3: - D_80165880 = dma_textures((s32) &D_0F0D0E50, 0x00004CC2U, 0x0000D980U); + D_80165880 = dma_textures(D_0F0D0E50, 0x00004CC2U, 0x0000D980U); D_8018D2A0 = 0.016f; D_8018D2C0.unk0 = 0x0106; D_8018D2E0 = 0x0037; D_8018D2E8 = 0x0027; break; case 4: - D_8018D220 = dma_textures((s32) &gTextureExhaust0, 0x00000479U, 0x00000C00U); + D_8018D220 = dma_textures(gTextureExhaust0, 0x00000479U, 0x00000C00U); D_8018D2A0 = 0.018f; D_8018D2E0 = 0x003D; D_8018D2E8 = 0x0026; @@ -465,14 +351,14 @@ block_26: D_8018D310 = 0x00FF; break; case 6: - D_8018D220 = dma_textures((s32) &gTextureExhaust3, 0x000003C8U, 0x00001000U); + D_8018D220 = dma_textures(gTextureExhaust3, 0x000003C8U, 0x00001000U); D_8018D2A0 = 0.014f; D_8018D2C0.unk0 = 0x010C; D_8018D2E0 = 0x0028; D_8018D2E8 = 0x0015; break; case 7: - D_8018D220 = dma_textures((s32) &gTextureExhaust4, 0x000003F8U, 0x00001000U); + D_8018D220 = dma_textures(gTextureExhaust4, 0x000003F8U, 0x00001000U); D_8018D2C0.unk0 = 0x0106; D_8018D2A0 = 0.014f; D_8018D2E0 = 0x0025; @@ -482,7 +368,7 @@ block_26: D_80165728 = -0x014A; break; case 8: - D_8018D220 = dma_textures((s32) &gTextureExhaust2, 0x000004F4U, 0x00000C00U); + D_8018D220 = dma_textures(gTextureExhaust2, 0x000004F4U, 0x00000C00U); D_8018D2A0 = 0.0155f; D_8018D2C0.unk0 = 0x010F; D_8018D2E0 = 0x002D; @@ -492,7 +378,7 @@ block_26: D_80165728 = -0x00D7; break; case 9: - D_8018D220 = dma_textures((s32) &gTextureExhaust0, 0x00000479U, 0x00000C00U); + D_8018D220 = dma_textures(gTextureExhaust0, 0x00000479U, 0x00000C00U); D_8018D2A0 = 0.0155f; D_8018D2C0.unk0 = 0x010F; D_8018D2E0 = 0x0012; @@ -507,13 +393,13 @@ block_26: case 11: D_8018D2C0.unk0 = 0x0107; D_8018D2D8.unk0 = 0x00A5; - D_8018D220 = dma_textures((s32) &gTextureExhaust5, 0x00000443U, 0x00001000U); + D_8018D220 = dma_textures(gTextureExhaust5, 0x00000443U, 0x00001000U); D_8018D2A0 = 0.015f; D_8018D2E0 = 0x0037; D_8018D2E8 = 0x001B; break; case 12: - D_8018D220 = dma_textures((s32) &gTextureExhaust1, 0x00000485U, 0x00000C00U); + D_8018D220 = dma_textures(gTextureExhaust1, 0x00000485U, 0x00000C00U); D_8018D2A0 = 0.015f; D_8018D2C0.unk0 = 0x0106; D_8018D2E0 = 0x0034; @@ -565,18 +451,17 @@ block_26: if (gIsMirrorMode != 0) { D_8018D2E0 = D_8018D2B0 - D_8018D2E0; } - temp_v0 = gPlayerCount; - if (temp_v0 == 4) { + if (gPlayerCount == 4) { D_8018D2C0.unk0 = 0x00A0; D_8018D2D8.unk0 = 0x0078; return; } - if (temp_v0 == 3) { + if (gPlayerCount == 3) { D_8018D2C0.unk0 = 0x00EB; D_8018D2D8.unk0 = 0x00AF; return; } - if (temp_v0 == 2) { + if (gPlayerCount == 2) { if (gCurrentCourseId != 0x000A) { D_8018D2C0.unk2 = 0x0109; D_8018D2C0.unk0 = D_8018D2C0.unk2; @@ -626,70 +511,60 @@ void func_8006F824(s32 arg0) { } #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -void func_8006F824(?, s8 *, s8 *, s32); // extern -extern s8 D_801657E4; -extern bool8 D_801657E6; -extern bool8 D_801657E8; -extern bool8 D_801657F0; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 extern s8 D_801657F8; -extern s8 D_80165800; extern s8 D_80165808; -extern bool8 D_80165810; -extern bool8 D_80165818; +extern s8 D_80165810; +extern s8 D_80165818; extern s8 D_80165820; extern s8 D_80165828; extern ? D_80165832; -extern s16 D_8018D2D8; -extern s8 D_8018EDFC; +extern ? D_8018D2D8; void func_8006F8CC(void) { - s8 temp_a0; - if (D_8018EDFC == 0) { D_8018EDFC = 1; D_801657E4 = 0; - D_801657E6 = FALSE; - D_80165800.unk1 = 1; + D_801657E6 = 0; + D_80165800->unk1 = 1; D_801657F0 = 0; - D_801657E8 = TRUE; - D_80165800.unk0 = D_80165800.unk1; - temp_a0 = gPlayerCount; - if (temp_a0 == FOUR_PLAYERS_SELECTED) { - if (gModeSelection != BATTLE) { + D_801657E8 = 1; + D_80165800->unk0 = D_80165800->unk1; + if (gPlayerCount == 4) { + if (gModeSelection != 3) { D_801657E4 = 1; D_801657F0 = 1; D_801657F8 = 1; - D_80165800.unk1 = 0; - D_80165800.unk0 = D_80165800.unk1; + D_80165800->unk1 = 0; + D_80165800->unk0 = D_80165800->unk1; } else { D_801657F8 = 0; - D_80165800.unk0 = D_80165800.unk1; + D_80165800->unk0 = D_80165800->unk1; } - } else if (temp_a0 == THREE_PLAYERS_SELECTED) { - D_801657E8 = FALSE; + } else if (gPlayerCount == 3) { + D_801657E8 = 0; D_801657F8 = 1; - } else if (temp_a0 == TWO_PLAYERS_SELECTED) { - if (gModeSelection != BATTLE) { - D_80165800.unk1 = 0; + } else if (gPlayerCount == 2) { + if (gModeSelection != (s32) 3) { + D_80165800->unk1 = 0; D_801657E4 = 1; D_801657F0 = 1; - D_80165800.unk0 = D_80165800.unk1; + D_80165800->unk0 = D_80165800->unk1; } - D_8018D2D8.unk0 = 0x41; - D_8018D2D8.unk2 = 0xB4; + D_8018D2D8.unk0 = 0x0041; + D_8018D2D8.unk2 = 0x00B4; } - func_8006F824(0, &D_801657E4, &D_801657F0, 3); + func_8006F824(0); } else { D_801657E4 = D_80165808; D_801657E6 = D_80165810; D_801657F0 = D_80165820; D_801657E8 = D_80165818; D_801657F8 = D_80165828; - D_80165800.unk0 = D_80165832.unk0; - D_80165800.unk1 = D_80165832.unk1; + D_80165800->unk0 = D_80165832.unk0; + D_80165800->unk1 = (s8) D_80165832.unk1; } - if (gDemoMode) { + if (gDemoMode != 0) { D_801657F0 = 0; } } @@ -698,31 +573,12 @@ GLOBAL_ASM("asm/non_matchings/code_8006E9C0/func_8006F8CC.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit b7eac665cffd02361f73cec283ef16d0a35a0e5b -typedef struct { - /* 0x00 */ char pad0[4]; - /* 0x04 */ f32 unk_04; - /* 0x08 */ f32 unk8; /* inferred */ - /* 0x0C */ f32 unk_0C; - /* 0x10 */ char pad10[0x10]; /* maybe part of unk_0C[5]? */ -} struct_D_8018CE10; /* size = 0x20 */ - +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 ? func_8006F008(); /* extern */ ? func_8006F8CC(); /* extern */ -extern s32 D_801655D8; -extern s32 D_801655E8; -extern s32 D_801655F8; -extern s32 D_80165608; -extern s32 D_80165618; -extern s32 D_80165628; extern ? D_80165658; -extern s16 D_801656F0; extern s8 D_8016576A; extern s8 D_8016579C; -extern s8 D_801657AE; -extern s8 D_801657B0; -extern s8 D_801657B2; -extern s8 D_801657D8; extern s8 D_801657E1; extern s8 D_801657E2; extern s8 D_801657E3; @@ -732,14 +588,11 @@ extern s32 D_80165804; extern s32 D_8016580C; extern s32 D_80165814; extern s32 D_8016581C; -extern s8 D_801658BC; extern s8 D_801658C6; -extern s8 D_801658CE; extern s8 D_801658D6; extern s8 D_801658DC; extern s8 D_801658E4; extern s8 D_801658EC; -extern s8 D_801658F4; extern ? D_8018CF28; extern ? D_8018CF50; extern ? D_8018CFAC; @@ -752,33 +605,15 @@ extern s32 D_8018D114; extern s32 D_8018D160; extern s32 D_8018D168; extern s16 D_8018D16C; -extern s32 D_8018D170; -extern s16 D_8018D174; -extern s32 D_8018D178; extern s16 D_8018D17C; extern s32 D_8018D180; extern s16 D_8018D184; -extern s32 gIsHUDVisible; extern s16 D_8018D18C; -extern s32 D_8018D190; -extern s32 D_8018D1A0; -extern s32 D_8018D1B4; extern s32 D_8018D1C4; -extern s32 D_8018D1CC; extern s32 D_8018D1DC; -extern s32 D_8018D1F0; -extern s32 D_8018D1F8; -extern s32 D_8018D1FC; -extern s32 D_8018D204; extern s32 D_8018D20C; -extern bool D_8018D214; -extern s32 D_8018D224; extern s8 D_8018D228; -extern s32 D_8018D2A4; -extern s32 D_8018D2AC; extern s32 D_8018D2B4; -extern s32 D_8018D2BC; -extern ? D_8018D2C8; extern s16 D_8018D2F0; extern s16 D_8018D2F8; extern s32 D_8018D320; @@ -792,16 +627,11 @@ void func_8006FA94(void) { ? *var_a3; ? *var_t0; ? *var_v1; + Player *temp_v0; + Player *temp_v0_2; Player *temp_v0_3; - Player *temp_v0_4; - Player *temp_v0_5; Player *var_v0; - s16 temp_t7; s16 var_a0; - s32 temp_t6; - s32 temp_v0; - s32 temp_v0_2; - s8 temp_ra; struct_D_8018CE10 *var_v1_2; func_8006F8CC(); @@ -828,9 +658,8 @@ void func_8006FA94(void) { D_80165658.unk8 = 0; D_80165658.unk4 = 0; D_80165658.unk0 = 0; - temp_ra = gPlayerCount; D_801658BC = D_801658C6; - switch (temp_ra) { /* irregular */ + switch (gPlayerCount) { /* irregular */ case 1: if (gModeSelection == 0) { D_8018D114 = 0; @@ -844,13 +673,12 @@ void func_8006FA94(void) { break; case 2: if (gScreenModeSelection == 1) { - temp_v0 = gModeSelection; - if (temp_v0 == 0) { + if (gModeSelection == 0) { D_8018D114 = 2; D_8018D178 = 0x00000096; D_8018D180 = 0x000000F0; D_8018D2AC = 0x0000003C; - } else if (temp_v0 == 2) { + } else if (gModeSelection == 2) { D_8018D114 = 3; D_8018D178 = 0x0000001E; D_8018D180 = 0x0000001E; @@ -861,15 +689,12 @@ void func_8006FA94(void) { D_8018D180 = 0x00000028; D_8018D2AC = 0x0000003C; } + } else if (gModeSelection == 0) { + D_8018D114 = 5; + } else if (gModeSelection == 2) { + D_8018D114 = 6; } else { - temp_v0_2 = gModeSelection; - if (temp_v0_2 == 0) { - D_8018D114 = 5; - } else if (temp_v0_2 == 2) { - D_8018D114 = 6; - } else { - D_8018D114 = 7; - } + D_8018D114 = 7; } break; case 3: @@ -903,7 +728,7 @@ void func_8006FA94(void) { D_8016579C = 0; } var_a0 = 0; - if (temp_ra > 0) { + if (gPlayerCount > 0) { var_a0_2 = &D_8018CFB4; var_a2 = &D_8018CFC4; var_a1 = &D_8018CFAC; @@ -917,7 +742,7 @@ void func_8006FA94(void) { var_a1->unk-1 = 0; var_a2->unk-1 = 0; var_a0_2->unk-1 = 0; - } while ((u32) var_a0_2 < (u32) (temp_ra + &D_8018CFB4)); + } while ((u32) var_a0_2 < (u32) (gPlayerCount + &D_8018CFB4)); var_a0 = 0; } D_8018D204 = 1; @@ -928,11 +753,10 @@ void func_8006FA94(void) { D_8018D228 = 0xFF; D_80165628 = 0; D_80165618 = 0; - temp_t6 = D_80165618; - D_80165608 = temp_t6; - D_801655F8 = temp_t6; - D_801655E8 = temp_t6; - D_801655D8 = temp_t6; + D_80165608 = D_80165618; + D_801655F8 = D_80165618; + D_801655E8 = D_80165618; + D_801655D8 = D_80165618; D_8018D160 = 0; D_8018D1DC = 0; D_8018D1C4 = 0; @@ -941,9 +765,9 @@ void func_8006FA94(void) { D_8018D168 = 0; D_801656F0 = 0; D_801657B2 = 0; - D_801657D8 = D_801657B2; // put all to 0 - D_8018D214 = (s32) D_801657D8; // put all to 0 - D_801657B0 = (s8) D_8018D214; // put all to 0 + D_801657D8 = D_801657B2; + D_8018D214 = (s32) D_801657D8; + D_801657B0 = (s8) D_8018D214; D_801657AE = D_801657B0; D_8018D20C = 0; D_8018D2F8 = 0; @@ -953,21 +777,20 @@ void func_8006FA94(void) { D_8018D2BC = 0; D_8018D2B4 = D_8018D2BC; D_8018D2A4 = D_8018D2B4; - D_8018D2C8.unk0 = 0; - D_8018D2C8.unk4 = 0; - D_8018D2C8.unk8 = 0; - D_8018D2C8.unkC = 0; + D_8018D2C8->unk0 = 0; + D_8018D2C8->unk4 = 0; + D_8018D2C8->unk8 = 0; + D_8018D2C8->unkC = 0; D_8016581C = 0; D_8016580C = 0; D_80165814 = 0; D_80165804 = 0; D_801657FC = 0; D_8018D18C = -1; - temp_t7 = D_8018D18C; - D_8018D184 = temp_t7; - D_8018D16C = temp_t7; - D_8018D17C = temp_t7; - D_8018D174 = temp_t7; + D_8018D184 = D_8018D18C; + D_8018D16C = D_8018D18C; + D_8018D17C = D_8018D18C; + D_8018D174 = D_8018D18C; var_v0 = gPlayerOne; var_t0 = &D_8018CF28; var_a3 = &D_8018CF50; @@ -977,32 +800,32 @@ void func_8006FA94(void) { do { var_a1_2->unk0 = -32.0f; var_a2_2->unk0 = -32.0f; - var_v1_2->unk_0C = 0.0f; - var_v1_2->unk8 = 0.0f; - var_v1_2->unk_04 = 0.0f; + var_v1_2->unk_04[2] = 0.0f; + var_v1_2->unk_04[1] = 0.0f; + var_v1_2->unk_04[0] = 0.0f; var_a3->unk0 = var_a0; var_t0->unk0 = var_v0; var_v0->unk_040 = -1; - temp_v0_3 = var_v0 + 0xDD8; - var_t0->unk4 = temp_v0_3; + temp_v0 = var_v0 + 0xDD8; + var_t0->unk4 = temp_v0; var_a3->unk2 = (s16) (var_a0 + 1); var_v1_2->unk24 = 0.0f; var_v1_2->unk28 = 0.0f; var_v1_2->unk2C = 0.0f; var_a2_2->unk4 = -32.0f; var_a1_2->unk4 = -32.0f; - temp_v0_3->unk_040 = -1; - temp_v0_4 = temp_v0_3 + 0xDD8; + temp_v0->unk_040 = -1; + temp_v0_2 = temp_v0 + 0xDD8; var_a3->unk4 = (s16) (var_a0 + 2); - var_t0->unk8 = temp_v0_4; + var_t0->unk8 = temp_v0_2; var_v1_2->unk44 = 0.0f; var_v1_2->unk48 = 0.0f; var_v1_2->unk4C = 0.0f; var_a2_2->unk8 = -32.0f; var_a1_2->unk8 = -32.0f; - temp_v0_4->unk_040 = -1; - temp_v0_5 = temp_v0_4 + 0xDD8; - var_t0->unkC = temp_v0_5; + temp_v0_2->unk_040 = -1; + temp_v0_3 = temp_v0_2 + 0xDD8; + var_t0->unkC = temp_v0_3; var_a3->unk6 = (s16) (var_a0 + 3); var_a0 += 4; var_v1_2->unk64 = 0.0f; @@ -1010,8 +833,8 @@ void func_8006FA94(void) { var_v1_2->unk6C = 0.0f; var_a2_2->unkC = -32.0f; var_a1_2->unkC = -32.0f; - temp_v0_5->unk_040 = -1; - var_v0 = temp_v0_5 + 0xDD8; + temp_v0_3->unk_040 = -1; + var_v0 = temp_v0_3 + 0xDD8; var_a1_2 += 0x10; var_a2_2 += 0x10; var_v1_2 += 0x80; @@ -1185,8 +1008,7 @@ void func_80070714(void) { } #ifdef MIPS_TO_C -//generated by m2c commit b52d92c2340f6f4ba1aafb464188bb698752fbb0 on Jul-28-2023 -extern u8 d_course_banshee_boardwalk_bat; +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 extern ? *D_80165758; extern ? D_80183EB0; extern ? D_80183EC8; @@ -1204,10 +1026,6 @@ extern s8 D_8018D1A8; extern ? D_8018D1B3; extern s8 D_8018D1B8; extern ? D_8018D1C4; -extern s32 D_8018D1C8; -extern s32 D_8018D1D0; -extern s32 D_8018D1D8; -extern u8 d_course_banshee_boardwalk_bat_tlut; s16 gCurrentCourseId; /* unable to generate initializer */ static ? D_800E5728; /* unable to generate initializer */ static ? D_800E5854; /* unable to generate initializer */ @@ -1232,6 +1050,15 @@ void func_80070780(void) { ? *var_v1; ? *var_v1_2; ? *var_v1_3; + Objects *temp_v0; + Objects *temp_v0_2; + Objects *temp_v0_3; + Objects *temp_v0_4; + Objects *temp_v0_5; + Objects *temp_v0_6; + Objects *temp_v0_7; + Objects *temp_v0_8; + Objects *temp_v0_9; f32 temp_f0; f32 temp_f0_2; f32 temp_f0_3; @@ -1294,15 +1121,6 @@ void func_80070780(void) { s8 *var_s0_5; s8 *var_s0_6; s8 *var_s0_7; - Objects *temp_v0; - Objects *temp_v0_2; - Objects *temp_v0_3; - Objects *temp_v0_4; - Objects *temp_v0_5; - Objects *temp_v0_6; - Objects *temp_v0_7; - Objects *temp_v0_8; - Objects *temp_v0_9; switch ((u16) gCurrentCourseId) { case 0: @@ -1395,7 +1213,7 @@ void func_80070780(void) { case 3: if (gGamestate != 9) { temp_s0_4 = D_80183EA0->unk0; - init_texture_object(temp_s0_4, &d_course_banshee_boardwalk_bat_tlut, &d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040); + init_texture_object(temp_s0_4, d_course_banshee_boardwalk_bat_tlut, *d_course_banshee_boardwalk_bat, 0x20U, (u16) 0x00000040); temp_v0_4 = &gObjectList[temp_s0_4]; temp_v0_4->unk_0B2[0] = 0; temp_v0_4->unk_0B2[1] = 0; @@ -1855,22 +1673,20 @@ void init_hud_one_player(void) { GLOBAL_ASM("asm/non_matchings/code_8006E9C0/init_hud_one_player.s") #endif -extern void func_80070190(); /* extern */ -extern void func_8007055C(); /* extern */ -extern void func_80070780(); /* extern */ -extern s32 D_80183DA0; -extern s32 D_80183DBC; - void init_hud_two_player_vertical(void) { find_unused_obj_index(&D_80183DA0); - find_unused_obj_index(D_80183DB8); - find_unused_obj_index(&D_80183DBC); + + find_unused_obj_index(&D_80183DB8[0]); + find_unused_obj_index(&D_80183DB8[1]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[0]); find_unused_obj_index(&gItemWindowObjectByPlayerId[1]); + func_80070190(); func_8007055C(); func_8007055C(); func_80070780(); + D_8018CA70[0].itemBoxX = -0x52; D_8018CA70[0].itemBoxY = 0x32; D_8018CA70[0].slideItemBoxX = 0; @@ -1886,6 +1702,7 @@ void init_hud_two_player_vertical(void) { D_8018CA70[0].lapX = 0x67; D_8018CA70[0].lapY = 0x28; init_item_window(gItemWindowObjectByPlayerId[0]); + D_8018CA70[1].itemBoxX = 0x43; D_8018CA70[1].itemBoxY = 0x32; D_8018CA70[1].slideItemBoxX = 0; @@ -1901,10 +1718,12 @@ void init_hud_two_player_vertical(void) { D_8018CA70[1].lapX = 0xF7; D_8018CA70[1].lapY = 0x28; init_item_window(gItemWindowObjectByPlayerId[1]); - D_8018CA70[1].rankScaling = 0.5f; + D_8018CA70[0].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[0]; D_8018CA70[1].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[1]; - D_8018CA70[0].rankScaling = D_8018CA70[1].rankScaling; + + D_8018CA70[0].rankScaling = D_8018CA70[1].rankScaling = 0.5f; + D_8018D3C4 = 0x1E; D_8018D3BC = 0x18; D_8018D3C0 = 0x28; @@ -1926,10 +1745,13 @@ void init_hud_two_player_vertical(void) { void init_hud_two_player_horizontal() { find_unused_obj_index(&D_80183DA0); - find_unused_obj_index(D_80183DB8); - find_unused_obj_index(&D_80183DBC); + + find_unused_obj_index(&D_80183DB8[0]); + find_unused_obj_index(&D_80183DB8[1]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[0]); find_unused_obj_index(&gItemWindowObjectByPlayerId[1]); + func_80070190(); func_8007055C(); func_8007055C(); @@ -1950,6 +1772,7 @@ void init_hud_two_player_horizontal() { D_8018CA70[0].timerY = 0x10; D_8018CA70[0].lapX = 0x101; D_8018CA70[0].lapY = 0x6A; + D_8018CA70[1].itemBoxX = -0x53; D_8018CA70[1].itemBoxY = 0x8F; D_8018CA70[1].slideItemBoxX = 0; @@ -1964,16 +1787,20 @@ void init_hud_two_player_horizontal() { D_8018CA70[1].timerY = 0x7F; D_8018CA70[1].lapX = 0x101; D_8018CA70[1].lapY = 0xDA; + if (gModeSelection == 3) { D_8018CA70[0].itemBoxY = 0x5E; D_8018CA70[1].itemBoxY = 0xD0; } - D_8018CA70[1].rankScaling = 0.5f; + + D_8018CA70[0].rankScaling = D_8018CA70[1].rankScaling = 0.5f; + D_8018CA70[0].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[0]; D_8018CA70[1].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[1]; - D_8018CA70[0].rankScaling = D_8018CA70[1].rankScaling; + init_item_window(gItemWindowObjectByPlayerId[0]); init_item_window((gItemWindowObjectByPlayerId[1])); + D_8018D3C4 = 0x1E; D_8018D3BC = 0x18; D_8018D3C0 = 0x28; @@ -1992,115 +1819,106 @@ void init_hud_two_player_horizontal() { } -#ifdef MIPS_TO_C -//generated by m2c commit 44f261a363c51a295be8efe3d7ca7f4d2c967e9b on Dec-31-2022 -? func_80070780(); /* extern */ -extern s16 D_801657A2; -extern s32 D_80183DA0; -extern s32 D_80183DBC; -extern s32 D_80183DC0; -extern s32 D_80183DC4; -extern s32 D_8018D158; -extern s32 D_8018D3BC; -extern s32 D_8018D3C0; -extern s32 D_8018D3C4; - void init_hud_three_four_player(void) { find_unused_obj_index(&D_80183DA0); - find_unused_obj_index(D_80183DB8); - find_unused_obj_index(&D_80183DBC); - find_unused_obj_index(&D_80183DC0); - find_unused_obj_index(&D_80183DC4); - find_unused_obj_index(gItemWindowObjectByPlayerId); - find_unused_obj_index(gItemWindowObjectByPlayerId + 4); - find_unused_obj_index(gItemWindowObjectByPlayerId + 8); - find_unused_obj_index(gItemWindowObjectByPlayerId + 0xC); + + find_unused_obj_index(&D_80183DB8[0]); + find_unused_obj_index(&D_80183DB8[1]); + find_unused_obj_index(&D_80183DB8[2]); + find_unused_obj_index(&D_80183DB8[3]); + + find_unused_obj_index(&gItemWindowObjectByPlayerId[0]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[1]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[2]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[3]); + func_80070190(); func_80070780(); - D_8018CA70->unkE6 = 0x011A; - D_8018CA70->unk16C = 0x00D2; - D_8018CA70->unk14C = 0x002D; - D_8018CA70->unk168 = 0x00D4; - D_8018CA70->unk176 = 0x00C0; - D_8018CA70->unk1D0 = 0x002D; - D_8018CA70->unk1EE = 0x011A; - D_8018CA70->itemBoxX = -0x0036; - D_8018CA70->itemBoxY = 0x0036; - D_8018CA70->slideItemBoxX = 0; - D_8018CA70->slideItemBoxY = 0; - D_8018CA70->unk_4A = 0x0050; - D_8018CA70->unk_4C = 0x003C; - D_8018CA70->rankX = 0x0025; - D_8018CA70->rankY = 0x0064; - D_8018CA70->slideRankX = 0; - D_8018CA70->slideRankY = 0; - D_8018CA70->lapX = 0x008C; - D_8018CA70->lapY = 0x0060; - D_8018CA70->unk_6C = 0x00DE; - D_8018CA70->unk_6E = 0x00C8; - D_8018CA70->unkC6 = 0x0175; - D_8018CA70->unkC8 = 0x0036; - D_8018CA70->unkCA = 0; - D_8018CA70->unkCC = 0; - D_8018CA70->unkCE = 0x00F0; - D_8018CA70->unkD0 = 0x003C; - D_8018CA70->unkE8 = 0x0064; - D_8018CA70->unkEA = 0; - D_8018CA70->unkEC = 0; - D_8018CA70->unkDE = 0x00B4; - D_8018CA70->unkE4 = 0x0060; - D_8018CA70->unkF0 = 0x00C8; - D_8018CA70->unkF2 = 0x00C8; - D_8018CA70->unk14A = -0x0036; - D_8018CA70->unk14E = 0; - D_8018CA70->unk150 = 0; - D_8018CA70->unk152 = 0x0050; - D_8018CA70->unk154 = 0x00B4; - D_8018CA70->unk16A = 0x0025; - D_8018CA70->unk16E = 0; - D_8018CA70->unk170 = 0; - D_8018CA70->unk162 = 0x008C; - D_8018CA70->unk174 = 0x00DE; - D_8018CA70->unk1CE = 0x0175; - D_8018CA70->unk1D2 = 0; - D_8018CA70->unk1D4 = 0; - D_8018CA70->unk1D6 = 0x00F0; - D_8018CA70->unk1D8 = 0x00B4; - D_8018CA70->unk1F0 = 0x00D2; - D_8018CA70->unk1F2 = 0; - D_8018CA70->unk1F4 = 0; - D_8018CA70->unk1E6 = 0x00B4; - D_8018CA70->unk1EC = 0x00D4; - D_8018CA70->unk1F8 = 0x00C8; - D_8018CA70->unk1FA = 0x00C0; + + D_8018CA70[0].itemBoxX = -0x36; + D_8018CA70[0].itemBoxY = 0x36; + D_8018CA70[0].slideItemBoxX = 0; + D_8018CA70[0].slideItemBoxY = 0; + D_8018CA70[0].unk_4A = 0x50; + D_8018CA70[0].unk_4C = 0x3C; + D_8018CA70[0].rankX = 0x25; + D_8018CA70[0].rankY = 0x64; + D_8018CA70[0].slideRankX = 0; + D_8018CA70[0].slideRankY = 0; + D_8018CA70[0].lapX = 0x8C; + D_8018CA70[0].lapY = 0x60; + D_8018CA70[0].unk_6C = 0xDE; + D_8018CA70[0].unk_6E = 0xC8; + + D_8018CA70[1].itemBoxX = 0x175; + D_8018CA70[1].itemBoxY = 0x36; + D_8018CA70[1].slideItemBoxX = 0; + D_8018CA70[1].slideItemBoxY = 0; + D_8018CA70[1].unk_4A = 0xF0; + D_8018CA70[1].unk_4C = 0x3C; + D_8018CA70[1].rankX = 0x11A; + D_8018CA70[1].rankY = 0x64; + D_8018CA70[1].slideRankX = 0; + D_8018CA70[1].slideRankY = 0; + D_8018CA70[1].lapX = 0xB4; + D_8018CA70[1].lapY = 0x60; + D_8018CA70[1].unk_6C = 0xC8; + D_8018CA70[1].unk_6E = 0xC8; + + D_8018CA70[2].itemBoxX = -0x36; + D_8018CA70[2].itemBoxY = 0x2D; + D_8018CA70[2].slideItemBoxX = 0; + D_8018CA70[2].slideItemBoxY = 0; + D_8018CA70[2].unk_4A = 0x50; + D_8018CA70[2].unk_4C = 0xB4; + D_8018CA70[2].rankX = 0x25; + D_8018CA70[2].rankY = 0xD2; + D_8018CA70[2].slideRankX = 0; + D_8018CA70[2].slideRankY = 0; + D_8018CA70[2].lapX = 0x8C; + D_8018CA70[2].lapY = 0xD4; + D_8018CA70[2].unk_6C = 0xDE; + D_8018CA70[2].unk_6E = 0xC0; + + D_8018CA70[3].itemBoxX = 0x175; + D_8018CA70[3].itemBoxY = 0x2D; + D_8018CA70[3].slideItemBoxX = 0; + D_8018CA70[3].slideItemBoxY = 0; + D_8018CA70[3].unk_4A = 0xF0; + D_8018CA70[3].unk_4C = 0xB4; + D_8018CA70[3].rankX = 0x11A; + D_8018CA70[3].rankY = 0xD2; + D_8018CA70[3].slideRankX = 0; + D_8018CA70[3].slideRankY = 0; + D_8018CA70[3].lapX = 0xB4; + D_8018CA70[3].lapY = 0xD4; + D_8018CA70[3].unk_6C = 0xC8; + D_8018CA70[3].unk_6E = 0xC0; + if (gModeSelection == 3) { - D_8018CA70->itemBoxY = 0x00C8; - D_8018CA70->unkC8 = 0x00C8; - D_8018CA70->unk14C = 0x00B8; - D_8018CA70->unk1D0 = 0x00B8; + D_8018CA70[0].itemBoxY = 0xC8; + D_8018CA70[1].itemBoxY = 0xC8; + D_8018CA70[2].itemBoxY = 0xB8; + D_8018CA70[3].itemBoxY = 0xB8; } - D_8018CA70->unk190 = 0.5f; - D_8018CA70->unk10C = (f32) D_8018CA70->unk190; - D_8018CA70->unk88 = (f32) D_8018CA70->unk190; - D_8018CA70->rankScaling = D_8018CA70->unk190; - D_8018CA70->stagingPosition = (s16) gGPCurrentRaceRankByPlayerId->unk0; - D_8018CA70->unkEE = (s16) gGPCurrentRaceRankByPlayerId->unk4; - D_8018CA70->unk172 = (s16) gGPCurrentRaceRankByPlayerId->unk8; - D_8018CA70->unk1F6 = (s16) gGPCurrentRaceRankByPlayerId->unkC; - init_item_window(*gItemWindowObjectByPlayerId); - init_item_window(*(gItemWindowObjectByPlayerId + 4)); - init_item_window(*(gItemWindowObjectByPlayerId + 8)); - init_item_window(*(gItemWindowObjectByPlayerId + 0xC)); - D_8018CA70->unk18C = 1.5f; - D_8018CA70->unk108 = (f32) D_8018CA70->unk18C; - D_8018CA70->unk84 = (f32) D_8018CA70->unk18C; - D_8018CA70->unknownScaling = D_8018CA70->unk18C; + + D_8018CA70[0].rankScaling = D_8018CA70[1].rankScaling = D_8018CA70[2].rankScaling = D_8018CA70[3].rankScaling = 0.5f; + + D_8018CA70[0].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[0]; + D_8018CA70[1].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[1]; + D_8018CA70[2].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[2]; + D_8018CA70[3].stagingPosition = (s16) gGPCurrentRaceRankByPlayerId[3]; + + init_item_window(gItemWindowObjectByPlayerId[0]); + init_item_window(gItemWindowObjectByPlayerId[1]); + init_item_window(gItemWindowObjectByPlayerId[2]); + init_item_window(gItemWindowObjectByPlayerId[3]); + + D_8018CA70[0].unknownScaling = D_8018CA70[1].unknownScaling = D_8018CA70[2].unknownScaling = D_8018CA70[3].unknownScaling = 1.5f; + D_8018D158 = (s32) gPlayerCount; D_8018D3C4 = 0x00000014; D_8018D3BC = 0x00000010; D_8018D3C0 = 0x0000001E; D_801657A2 = 0x0888; } -#else -GLOBAL_ASM("asm/non_matchings/code_8006E9C0/init_hud_three_four_player.s") -#endif diff --git a/src/code_8006E9C0.h b/src/code_8006E9C0.h index df0984335..0a08563ea 100644 --- a/src/code_8006E9C0.h +++ b/src/code_8006E9C0.h @@ -11,6 +11,8 @@ void func_8006ED60(void); u8 *func_8006ED94(u8*, u8*, u32, u32); void func_8006EE44(void); void init_item_window(s32); +void func_8006EEE8(s32); +void func_8006F824(s32); void func_8006FA94(void); void func_80070148(void); void func_80070190(void); @@ -20,6 +22,7 @@ void func_800703E0(s32, s32, StarSpawn*); void func_800704A0(StarSpawn*); void func_8007055C(void); void func_80070714(void); +void func_80070780(); void init_hud_one_player(void); void init_hud_two_player_vertical(void); void init_hud_three_four_player(void); @@ -27,7 +30,7 @@ void init_hud_two_player_horizontal(void); extern s16 D_800E5520[]; extern s16 D_800E5548[]; -extern s32 gCourseOutlineTextures[0x14]; +extern u8 *gCourseOutlineTextures[0x14]; extern s8 *gTextureLogoMarioKart64; extern s16 D_80165730; @@ -42,6 +45,7 @@ extern intptr_t D_8018D9B0; extern u8 (*D_8018D220)[1024]; extern s32 D_8018D240; +extern u8 *D_8018D248[]; extern s16 D_8018D2B0; extern s16 D_8018D2B8; extern s32 D_80183DA0; diff --git a/src/code_800B45E0.c b/src/code_800B45E0.c index d238f18db..acb30d57c 100644 --- a/src/code_800B45E0.c +++ b/src/code_800B45E0.c @@ -840,95 +840,52 @@ u8 func_800B60E8(s32 arg0) GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B60E8.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit d9d3d6575355663122de59f6b2882d8f174e2355 on Dec-11-2022 s32 func_800B6178(s32 arg0) { - s32 temp_v0; - s32 var_s0_2; s32 var_v0; - s32 var_v1; - s8 temp_t0; - s8 temp_t1; - s8 temp_t3; - s8 temp_t4; - s8 temp_t5; - s8 temp_t9; - s8 var_s0; - s8 var_s0_3; + s32 var_s0; struct_8018EE10_entry *temp_s3; - struct_8018EE10_entry *var_s1; - struct_8018EE10_entry *var_s1_2; - struct_8018EE10_entry *var_s1_3; - u8 temp_v0_2; - if ((arg0 != 0) && (arg0 != 1)) { - return -1; + switch (arg0) { + case 0: + case 1: + break; + default: + return -1; } if (gGamestate == 4) { func_800051C4(); } temp_s3 = &D_8018EE10[arg0]; temp_s3->ghostDataSaved = 0; - temp_v0 = func_800B6088(arg0); - var_v1 = temp_v0; - if (temp_v0 != 0) { + var_v0 = func_800B6088(arg0); + if (var_v0 != 0) { temp_s3->ghostDataSaved = 0; - var_s0 = 0; - var_s1 = temp_s3; - do { - temp_t9 = var_s0 + 1; - temp_t0 = var_s0 + 2; - temp_t1 = var_s0 + 3; - var_s1->unk_07[0] = var_s0; - var_s0 += 4; - var_s1->unk_07[3] = temp_t1; - var_s1->unk_07[2] = temp_t0; - var_s1->unk_07[1] = temp_t9; - var_s1 += 4; - } while (var_s0 != 0x3C); + for (var_s0 = 0; var_s0 < 0x3C; var_s0++) { + temp_s3->unk_07[var_s0] = var_s0; + } } else { var_v0 = osPfsReadWriteFile(&gControllerPak1FileHandle, gControllerPak1FileNote, 1U, (arg0 * 0x3C00) + 0x100, 0x00003C00, (u8 *) D_800DC714); - var_v1 = var_v0; if (var_v0 == 0) { temp_s3->ghostDataSaved = 1; if (gGamestate == 4) { temp_s3->courseIndex = (gCupSelection * 4) + gCupCourseSelection; } - var_s0_2 = 0; temp_s3->unk_00 = D_80162DFC; - var_s1_2 = temp_s3; temp_s3->characterId = (u8) D_80162DE0; - do { - temp_v0_2 = func_800B60E8(var_s0_2); - var_s0_2 += 1; - var_s1_2 += 1; - var_s1_2->characterId = temp_v0_2; - } while (var_s0_2 != 0x0000003C); + for (var_s0 = 0; var_s0 < 0x3C; var_s0++) { + temp_s3->unk_07[var_s0] = func_800B60E8(var_s0); + } var_v0 = func_800B6088(arg0); - var_v1 = var_v0; } if (var_v0 != 0) { temp_s3->ghostDataSaved = 0; - var_s0_3 = 0; - var_s1_3 = temp_s3; - do { - temp_t3 = var_s0_3 + 1; - temp_t4 = var_s0_3 + 2; - temp_t5 = var_s0_3 + 3; - var_s1_3->unk_07[0] = var_s0_3; - var_s0_3 += 4; - var_s1_3->unk_07[3] = temp_t5; - var_s1_3->unk_07[2] = temp_t4; - var_s1_3->unk_07[1] = temp_t3; - var_s1_3 += 4; - } while (var_s0_3 != 0x3C); + for (var_s0 = 0; var_s0 < 0x3C; var_s0++) { + temp_s3->unk_07[var_s0] = var_s0; + } } } - return var_v1; + return var_v0; } -#else -GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B6178.s") -#endif s32 func_800B6348(s32 arg0) { if ((D_8018EE10[0].ghostDataSaved != 0) && (arg0 == D_8018EE10[0].courseIndex)) { @@ -1022,43 +979,36 @@ s32 func_800B64EC(s32 arg0) { return temp_v0; } -#ifdef MIPS_TO_C -//generated by m2c commit d9d3d6575355663122de59f6b2882d8f174e2355 on Dec-11-2022 +#ifdef NON_MATCHING +// Matching decomp courstesy of Vetri, leaving it as this becasue I'm lazy +// https://decomp.me/scratch/qrC3l s32 func_800B65F4(s32 arg0, s32 arg1) { - s32 sp34; - s32 temp_v0; + s32 stackPadding; s32 var_s0; + s32 temp_v0; struct_8018EE10_entry *temp_s3; - struct_8018EE10_entry *var_s1; - u8 temp_v0_2; - if ((arg0 != 0) && (arg0 != 1)) { - return -1; + switch (arg0) { + case 0: + case 1: + break; + default: + return -1; } temp_v0 = osPfsReadWriteFile(&gControllerPak2FileHandle, gControllerPak2FileNote, 0U, (arg0 * 0x3C00) + 0x100, 0x00003C00, (u8 *) D_800DC714); - sp34 = temp_v0; if (temp_v0 == 0) { temp_s3 = &D_8018D9C0[arg0]; - var_s1 = temp_s3; - var_s0 = 0; -loop_5: - temp_v0_2 = func_800B60E8(var_s0); - var_s0 += 1; - if ((u8) var_s1->unk_07[0] != temp_v0_2) { - temp_s3->ghostDataSaved = 0; - return -2; + for (var_s0 = 0; var_s0 < 0x3C; var_s0++) { + if (temp_s3->unk_07[var_s0] != func_800B60E8(var_s0)) { + temp_s3->ghostDataSaved = 0; + return -2; + } } - var_s1 += 1; - if (var_s0 == 0x0000003C) { - D_80162DE0 = (s32) temp_s3->characterId; - D_80162DFC = temp_s3->unk_00; - *(&D_8018EE10->courseIndex + (arg1 << 7)) = temp_s3->courseIndex; - goto block_9; - } - goto loop_5; + D_80162DE0 = temp_s3->characterId; + D_80162DFC = temp_s3->unk_00; + D_8018EE10[arg1].courseIndex = temp_s3->courseIndex; } -block_9: - return sp34; + return temp_v0; } #else GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B65F4.s") @@ -1095,7 +1045,7 @@ void func_800B6798(void) { } #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-08-2023 u8 func_800B6828(s32 arg0) { s32 temp_a2; s32 temp_lo; @@ -1130,30 +1080,26 @@ GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B6828.s") #endif #ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern s32 D_8018D9C0; - -s32 func_800B68F4(s32 arg0) { +//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-08-2023 +u8 func_800B68F4(s32 arg0) { s32 temp_a1; - s32 temp_a2; s32 temp_a3; + s32 var_a1; + s32 var_a2; + struct_8018EE10_entry *temp_v1; void *temp_v0; - void *temp_v1; - s32 phi_a2; - s32 phi_a1; temp_a3 = arg0 + 1; - temp_v1 = (arg0 << 7) + D_8018D9C0; - phi_a2 = 3; - phi_a1 = (temp_v1->unk0 * temp_a3) + (temp_v1->unk1 * temp_a3) + 1 + (temp_v1->unk2 * temp_a3) + 2; + temp_v1 = &D_8018D9C0[arg0]; + var_a2 = 3; + var_a1 = (temp_v1->unk0 * temp_a3) + (temp_v1->unk1 * temp_a3) + 1 + (temp_v1->unk2 * temp_a3) + 2; do { - temp_v0 = temp_v1 + phi_a2; - temp_a2 = phi_a2 + 4; - temp_a1 = phi_a1 + ((temp_v0->unk0 * temp_a3) + phi_a2) + ((temp_v0->unk1 * temp_a3) + phi_a2) + 1 + ((temp_v0->unk2 * temp_a3) + phi_a2) + 2 + ((temp_v0->unk3 * temp_a3) + phi_a2) + 3; - phi_a2 = temp_a2; - phi_a1 = temp_a1; - } while (temp_a2 != 0x43); - return temp_a1 & 0xFF; + temp_v0 = temp_v1 + var_a2; + temp_a1 = var_a1 + ((temp_v0->unk0 * temp_a3) + var_a2) + ((temp_v0->unk1 * temp_a3) + var_a2) + 1 + ((temp_v0->unk2 * temp_a3) + var_a2) + 2 + ((temp_v0->unk3 * temp_a3) + var_a2); + var_a2 += 4; + var_a1 = temp_a1 + 3; + } while (var_a2 != 0x43); + return var_a1 & 0xFF; } #else GLOBAL_ASM("asm/non_matchings/code_800B45E0/func_800B68F4.s") diff --git a/src/racing/actors.h b/src/racing/actors.h index 9591ec27b..b73dca1b8 100644 --- a/src/racing/actors.h +++ b/src/racing/actors.h @@ -120,8 +120,6 @@ extern u16 D_802BA260; // Box Truck sub-type? // end of definition of actor.c variables -extern u16 gNearestWaypointByPlayerId[]; - extern s16 gCurrentCourseId; extern u16 isCrossingTriggeredByIndex[]; extern Lights1 D_800DC610[];