diff --git a/asm/non_matchings/code_80005FD0/func_80007FA4.s b/asm/non_matchings/code_80005FD0/func_80007FA4.s deleted file mode 100644 index 4e4f134a8..000000000 --- a/asm/non_matchings/code_80005FD0/func_80007FA4.s +++ /dev/null @@ -1,328 +0,0 @@ -.section .late_rodata - -glabel D_800ECF78 -.double 0.16666666666666666 - -glabel D_800ECF80 -.double 0.41666666666666669 - -glabel D_800ECF88 -.double 1.6666666666666667 - -glabel D_800ECF90 -.float 4900.0 - -glabel D_800ECF94 -.float 22500.0 - -glabel D_800ECF98 -.float 90000.0 - -.section .text - -glabel func_80007FA4 -/* 008BA4 80007FA4 00041080 */ sll $v0, $a0, 2 -/* 008BA8 80007FA8 3C018016 */ lui $at, %hi(D_80163418) -/* 008BAC 80007FAC 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 008BB0 80007FB0 00220821 */ addu $at, $at, $v0 -/* 008BB4 80007FB4 C4243418 */ lwc1 $f4, %lo(D_80163418)($at) -/* 008BB8 80007FB8 AFBF0014 */ sw $ra, 0x14($sp) -/* 008BBC 80007FBC AFA5001C */ sw $a1, 0x1c($sp) -/* 008BC0 80007FC0 3C018016 */ lui $at, %hi(D_80163438) -/* 008BC4 80007FC4 00220821 */ addu $at, $at, $v0 -/* 008BC8 80007FC8 C4A60014 */ lwc1 $f6, 0x14($a1) -/* 008BCC 80007FCC C4283438 */ lwc1 $f8, %lo(D_80163438)($at) -/* 008BD0 80007FD0 C4AA001C */ lwc1 $f10, 0x1c($a1) -/* 008BD4 80007FD4 44867000 */ mtc1 $a2, $f14 -/* 008BD8 80007FD8 24070003 */ li $a3, 3 -/* 008BDC 80007FDC 00A03025 */ move $a2, $a1 -/* 008BE0 80007FE0 46062001 */ sub.s $f0, $f4, $f6 -/* 008BE4 80007FE4 14870053 */ bne $a0, $a3, .L80008134 -/* 008BE8 80007FE8 460A4081 */ sub.s $f2, $f8, $f10 -/* 008BEC 80007FEC 46000402 */ mul.s $f16, $f0, $f0 -/* 008BF0 80007FF0 3C0141C8 */ li $at, 0x41C80000 # 25.000000 -/* 008BF4 80007FF4 44812000 */ mtc1 $at, $f4 -/* 008BF8 80007FF8 46021482 */ mul.s $f18, $f2, $f2 -/* 008BFC 80007FFC 3C0F8016 */ lui $t7, %hi(D_80163410) # $t7, 0x8016 -/* 008C00 80008000 25EF3410 */ addiu $t7, %lo(D_80163410) # addiu $t7, $t7, 0x3410 -/* 008C04 80008004 00047040 */ sll $t6, $a0, 1 -/* 008C08 80008008 01CF1021 */ addu $v0, $t6, $t7 -/* 008C0C 8000800C 46128300 */ add.s $f12, $f16, $f18 -/* 008C10 80008010 4604603C */ c.lt.s $f12, $f4 -/* 008C14 80008014 00000000 */ nop -/* 008C18 80008018 45020019 */ bc1fl .L80008080 -/* 008C1C 8000801C 3C014561 */ lui $at, 0x4561 # 3600.0 -/* 008C20 80008020 84580000 */ lh $t8, ($v0) -/* 008C24 80008024 24190004 */ li $t9, 4 -/* 008C28 80008028 2B010005 */ slti $at, $t8, 5 -/* 008C2C 8000802C 50200014 */ beql $at, $zero, .L80008080 -/* 008C30 80008030 3C014561 */ lui $at, 0x4561 # 3600.0 -/* 008C34 80008034 A4590000 */ sh $t9, ($v0) -/* 008C38 80008038 3C01800F */ lui $at, %hi(D_800ECF78) -/* 008C3C 8000803C D428CF78 */ ldc1 $f8, %lo(D_800ECF78)($at) -/* 008C40 80008040 460071A1 */ cvt.d.s $f6, $f14 -/* 008C44 80008044 00C02025 */ move $a0, $a2 -/* 008C48 80008048 4628303C */ c.lt.d $f6, $f8 -/* 008C4C 8000804C 00000000 */ nop -/* 008C50 80008050 45000006 */ bc1f .L8000806C -/* 008C54 80008054 00000000 */ nop -/* 008C58 80008058 00A02025 */ move $a0, $a1 -/* 008C5C 8000805C 0C00E2F9 */ jal func_80038BE4 -/* 008C60 80008060 24050001 */ li $a1, 1 -/* 008C64 80008064 100000EC */ b .L80008418 -/* 008C68 80008068 8FBF0014 */ lw $ra, 0x14($sp) -.L8000806C: -/* 008C6C 8000806C 0C00C7D2 */ jal func_80031F48 -/* 008C70 80008070 3C053F80 */ lui $a1, 0x3f80 -/* 008C74 80008074 100000E8 */ b .L80008418 -/* 008C78 80008078 8FBF0014 */ lw $ra, 0x14($sp) -/* 008C7C 8000807C 3C014561 */ li $at, 0x45610000 # 3600.000000 -.L80008080: -/* 008C80 80008080 44815000 */ mtc1 $at, $f10 -/* 008C84 80008084 3C098016 */ lui $t1, %hi(D_80163410) # $t1, 0x8016 -/* 008C88 80008088 25293410 */ addiu $t1, %lo(D_80163410) # addiu $t1, $t1, 0x3410 -/* 008C8C 8000808C 460A603C */ c.lt.s $f12, $f10 -/* 008C90 80008090 00044040 */ sll $t0, $a0, 1 -/* 008C94 80008094 01091021 */ addu $v0, $t0, $t1 -/* 008C98 80008098 45000016 */ bc1f .L800080F4 -/* 008C9C 8000809C 00000000 */ nop -/* 008CA0 800080A0 844A0000 */ lh $t2, ($v0) -/* 008CA4 800080A4 29410004 */ slti $at, $t2, 4 -/* 008CA8 800080A8 10200012 */ beqz $at, .L800080F4 -/* 008CAC 800080AC 00000000 */ nop -/* 008CB0 800080B0 A4470000 */ sh $a3, ($v0) -/* 008CB4 800080B4 3C01800F */ lui $at, %hi(D_800ECF80) -/* 008CB8 800080B8 D432CF80 */ ldc1 $f18, %lo(D_800ECF80)($at) -/* 008CBC 800080BC 46007421 */ cvt.d.s $f16, $f14 -/* 008CC0 800080C0 00C02025 */ move $a0, $a2 -/* 008CC4 800080C4 4632803C */ c.lt.d $f16, $f18 -/* 008CC8 800080C8 24050001 */ li $a1, 1 -/* 008CCC 800080CC 45000005 */ bc1f .L800080E4 -/* 008CD0 800080D0 00000000 */ nop -/* 008CD4 800080D4 0C00E2F9 */ jal func_80038BE4 -/* 008CD8 800080D8 00C02025 */ move $a0, $a2 -/* 008CDC 800080DC 100000CE */ b .L80008418 -/* 008CE0 800080E0 8FBF0014 */ lw $ra, 0x14($sp) -.L800080E4: -/* 008CE4 800080E4 0C00C7D2 */ jal func_80031F48 -/* 008CE8 800080E8 3C0540A0 */ lui $a1, 0x40a0 -/* 008CEC 800080EC 100000CA */ b .L80008418 -/* 008CF0 800080F0 8FBF0014 */ lw $ra, 0x14($sp) -.L800080F4: -/* 008CF4 800080F4 3C01800F */ lui $at, %hi(D_800ECF88) -/* 008CF8 800080F8 D426CF88 */ ldc1 $f6, %lo(D_800ECF88)($at) -/* 008CFC 800080FC 46007121 */ cvt.d.s $f4, $f14 -/* 008D00 80008100 00C02025 */ move $a0, $a2 -/* 008D04 80008104 4626203C */ c.lt.d $f4, $f6 -/* 008D08 80008108 2405000A */ li $a1, 10 -/* 008D0C 8000810C 45000005 */ bc1f .L80008124 -/* 008D10 80008110 00000000 */ nop -/* 008D14 80008114 0C00E2F9 */ jal func_80038BE4 -/* 008D18 80008118 00C02025 */ move $a0, $a2 -/* 008D1C 8000811C 100000BE */ b .L80008418 -/* 008D20 80008120 8FBF0014 */ lw $ra, 0x14($sp) -.L80008124: -/* 008D24 80008124 0C00C7D2 */ jal func_80031F48 -/* 008D28 80008128 3C053F80 */ lui $a1, 0x3f80 -/* 008D2C 8000812C 100000BA */ b .L80008418 -/* 008D30 80008130 8FBF0014 */ lw $ra, 0x14($sp) -.L80008134: -/* 008D34 80008134 46000202 */ mul.s $f8, $f0, $f0 -/* 008D38 80008138 3C0141C8 */ li $at, 0x41C80000 # 25.000000 -/* 008D3C 8000813C 44818000 */ mtc1 $at, $f16 -/* 008D40 80008140 46021282 */ mul.s $f10, $f2, $f2 -/* 008D44 80008144 3C0C8016 */ lui $t4, %hi(D_80163410) # $t4, 0x8016 -/* 008D48 80008148 258C3410 */ addiu $t4, %lo(D_80163410) # addiu $t4, $t4, 0x3410 -/* 008D4C 8000814C 00045840 */ sll $t3, $a0, 1 -/* 008D50 80008150 016C1021 */ addu $v0, $t3, $t4 -/* 008D54 80008154 460A4300 */ add.s $f12, $f8, $f10 -/* 008D58 80008158 4610603C */ c.lt.s $f12, $f16 -/* 008D5C 8000815C 00000000 */ nop -/* 008D60 80008160 45000020 */ bc1f .L800081E4 -/* 008D64 80008164 00000000 */ nop -/* 008D68 80008168 844D0000 */ lh $t5, ($v0) -/* 008D6C 8000816C 29A10005 */ slti $at, $t5, 5 -/* 008D70 80008170 1020001C */ beqz $at, .L800081E4 -/* 008D74 80008174 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 008D78 80008178 44812800 */ mtc1 $at, $f5 -/* 008D7C 8000817C 3C014032 */ li $at, 0x40320000 # 2.781250 -/* 008D80 80008180 44813800 */ mtc1 $at, $f7 -/* 008D84 80008184 44802000 */ mtc1 $zero, $f4 -/* 008D88 80008188 44803000 */ mtc1 $zero, $f6 -/* 008D8C 8000818C 3C01406B */ li $at, 0x406B0000 # 3.671875 -/* 008D90 80008190 44815800 */ mtc1 $at, $f11 -/* 008D94 80008194 46262202 */ mul.d $f8, $f4, $f6 -/* 008D98 80008198 44805000 */ mtc1 $zero, $f10 -/* 008D9C 8000819C 460074A1 */ cvt.d.s $f18, $f14 -/* 008DA0 800081A0 240E0004 */ li $t6, 4 -/* 008DA4 800081A4 A44E0000 */ sh $t6, ($v0) -/* 008DA8 800081A8 00C02025 */ move $a0, $a2 -/* 008DAC 800081AC 24050001 */ li $a1, 1 -/* 008DB0 800081B0 462A4403 */ div.d $f16, $f8, $f10 -/* 008DB4 800081B4 4630903C */ c.lt.d $f18, $f16 -/* 008DB8 800081B8 00000000 */ nop -/* 008DBC 800081BC 45000005 */ bc1f .L800081D4 -/* 008DC0 800081C0 00000000 */ nop -/* 008DC4 800081C4 0C00E2F9 */ jal func_80038BE4 -/* 008DC8 800081C8 00C02025 */ move $a0, $a2 -/* 008DCC 800081CC 10000092 */ b .L80008418 -/* 008DD0 800081D0 8FBF0014 */ lw $ra, 0x14($sp) -.L800081D4: -/* 008DD4 800081D4 0C00C7D2 */ jal func_80031F48 -/* 008DD8 800081D8 3C053F80 */ lui $a1, 0x3f80 -/* 008DDC 800081DC 1000008E */ b .L80008418 -/* 008DE0 800081E0 8FBF0014 */ lw $ra, 0x14($sp) -.L800081E4: -/* 008DE4 800081E4 3C01800F */ lui $at, %hi(D_800ECF90) # $at, 0x800f -/* 008DE8 800081E8 C424CF90 */ lwc1 $f4, %lo(D_800ECF90)($at) -/* 008DEC 800081EC 3C188016 */ lui $t8, %hi(D_80163410) # $t8, 0x8016 -/* 008DF0 800081F0 27183410 */ addiu $t8, %lo(D_80163410) # addiu $t8, $t8, 0x3410 -/* 008DF4 800081F4 4604603C */ c.lt.s $f12, $f4 -/* 008DF8 800081F8 00047840 */ sll $t7, $a0, 1 -/* 008DFC 800081FC 01F81021 */ addu $v0, $t7, $t8 -/* 008E00 80008200 84430000 */ lh $v1, ($v0) -/* 008E04 80008204 4500001D */ bc1f .L8000827C -/* 008E08 80008208 28610004 */ slti $at, $v1, 4 -/* 008E0C 8000820C 1020001B */ beqz $at, .L8000827C -/* 008E10 80008210 3C014014 */ li $at, 0x40140000 # 2.312500 -/* 008E14 80008214 44814800 */ mtc1 $at, $f9 -/* 008E18 80008218 3C014032 */ li $at, 0x40320000 # 2.781250 -/* 008E1C 8000821C 44815800 */ mtc1 $at, $f11 -/* 008E20 80008220 44804000 */ mtc1 $zero, $f8 -/* 008E24 80008224 44805000 */ mtc1 $zero, $f10 -/* 008E28 80008228 3C01406B */ li $at, 0x406B0000 # 3.671875 -/* 008E2C 8000822C 44818800 */ mtc1 $at, $f17 -/* 008E30 80008230 462A4482 */ mul.d $f18, $f8, $f10 -/* 008E34 80008234 44808000 */ mtc1 $zero, $f16 -/* 008E38 80008238 460071A1 */ cvt.d.s $f6, $f14 -/* 008E3C 8000823C A4470000 */ sh $a3, ($v0) -/* 008E40 80008240 00C02025 */ move $a0, $a2 -/* 008E44 80008244 24050001 */ li $a1, 1 -/* 008E48 80008248 46309103 */ div.d $f4, $f18, $f16 -/* 008E4C 8000824C 4624303C */ c.lt.d $f6, $f4 -/* 008E50 80008250 00000000 */ nop -/* 008E54 80008254 45000005 */ bc1f .L8000826C -/* 008E58 80008258 00000000 */ nop -/* 008E5C 8000825C 0C00E2F9 */ jal func_80038BE4 -/* 008E60 80008260 00C02025 */ move $a0, $a2 -/* 008E64 80008264 1000006C */ b .L80008418 -/* 008E68 80008268 8FBF0014 */ lw $ra, 0x14($sp) -.L8000826C: -/* 008E6C 8000826C 0C00C7D2 */ jal func_80031F48 -/* 008E70 80008270 3C054170 */ lui $a1, 0x4170 -/* 008E74 80008274 10000068 */ b .L80008418 -/* 008E78 80008278 8FBF0014 */ lw $ra, 0x14($sp) -.L8000827C: -/* 008E7C 8000827C 3C01800F */ lui $at, %hi(D_800ECF94) # $at, 0x800f -/* 008E80 80008280 C428CF94 */ lwc1 $f8, %lo(D_800ECF94)($at) -/* 008E84 80008284 28610003 */ slti $at, $v1, 3 -/* 008E88 80008288 4608603C */ c.lt.s $f12, $f8 -/* 008E8C 8000828C 00000000 */ nop -/* 008E90 80008290 4500001E */ bc1f .L8000830C -/* 008E94 80008294 00000000 */ nop -/* 008E98 80008298 1020001C */ beqz $at, .L8000830C -/* 008E9C 8000829C 3C014034 */ li $at, 0x40340000 # 2.812500 -/* 008EA0 800082A0 44819800 */ mtc1 $at, $f19 -/* 008EA4 800082A4 3C014032 */ li $at, 0x40320000 # 2.781250 -/* 008EA8 800082A8 44818800 */ mtc1 $at, $f17 -/* 008EAC 800082AC 44809000 */ mtc1 $zero, $f18 -/* 008EB0 800082B0 44808000 */ mtc1 $zero, $f16 -/* 008EB4 800082B4 3C01406B */ li $at, 0x406B0000 # 3.671875 -/* 008EB8 800082B8 44812800 */ mtc1 $at, $f5 -/* 008EBC 800082BC 46309182 */ mul.d $f6, $f18, $f16 -/* 008EC0 800082C0 44802000 */ mtc1 $zero, $f4 -/* 008EC4 800082C4 460072A1 */ cvt.d.s $f10, $f14 -/* 008EC8 800082C8 24190002 */ li $t9, 2 -/* 008ECC 800082CC A4590000 */ sh $t9, ($v0) -/* 008ED0 800082D0 00C02025 */ move $a0, $a2 -/* 008ED4 800082D4 24050005 */ li $a1, 5 -/* 008ED8 800082D8 46243203 */ div.d $f8, $f6, $f4 -/* 008EDC 800082DC 4628503C */ c.lt.d $f10, $f8 -/* 008EE0 800082E0 00000000 */ nop -/* 008EE4 800082E4 45000005 */ bc1f .L800082FC -/* 008EE8 800082E8 00000000 */ nop -/* 008EEC 800082EC 0C00E2F9 */ jal func_80038BE4 -/* 008EF0 800082F0 00C02025 */ move $a0, $a2 -/* 008EF4 800082F4 10000048 */ b .L80008418 -/* 008EF8 800082F8 8FBF0014 */ lw $ra, 0x14($sp) -.L800082FC: -/* 008EFC 800082FC 0C00C7D2 */ jal func_80031F48 -/* 008F00 80008300 3C053F80 */ lui $a1, 0x3f80 -/* 008F04 80008304 10000044 */ b .L80008418 -/* 008F08 80008308 8FBF0014 */ lw $ra, 0x14($sp) -.L8000830C: -/* 008F0C 8000830C 3C01800F */ lui $at, %hi(D_800ECF98) # $at, 0x800f -/* 008F10 80008310 C432CF98 */ lwc1 $f18, %lo(D_800ECF98)($at) -/* 008F14 80008314 28610002 */ slti $at, $v1, 2 -/* 008F18 80008318 4612603C */ c.lt.s $f12, $f18 -/* 008F1C 8000831C 00000000 */ nop -/* 008F20 80008320 4500001E */ bc1f .L8000839C -/* 008F24 80008324 00000000 */ nop -/* 008F28 80008328 1020001C */ beqz $at, .L8000839C -/* 008F2C 8000832C 3C01403E */ li $at, 0x403E0000 # 2.968750 -/* 008F30 80008330 44813800 */ mtc1 $at, $f7 -/* 008F34 80008334 3C014032 */ li $at, 0x40320000 # 2.781250 -/* 008F38 80008338 44812800 */ mtc1 $at, $f5 -/* 008F3C 8000833C 44803000 */ mtc1 $zero, $f6 -/* 008F40 80008340 44802000 */ mtc1 $zero, $f4 -/* 008F44 80008344 3C01406B */ li $at, 0x406B0000 # 3.671875 -/* 008F48 80008348 44814800 */ mtc1 $at, $f9 -/* 008F4C 8000834C 46243282 */ mul.d $f10, $f6, $f4 -/* 008F50 80008350 44804000 */ mtc1 $zero, $f8 -/* 008F54 80008354 46007421 */ cvt.d.s $f16, $f14 -/* 008F58 80008358 24080001 */ li $t0, 1 -/* 008F5C 8000835C A4480000 */ sh $t0, ($v0) -/* 008F60 80008360 00C02025 */ move $a0, $a2 -/* 008F64 80008364 24050006 */ li $a1, 6 -/* 008F68 80008368 46285483 */ div.d $f18, $f10, $f8 -/* 008F6C 8000836C 4632803C */ c.lt.d $f16, $f18 -/* 008F70 80008370 00000000 */ nop -/* 008F74 80008374 45000005 */ bc1f .L8000838C -/* 008F78 80008378 00000000 */ nop -/* 008F7C 8000837C 0C00E2F9 */ jal func_80038BE4 -/* 008F80 80008380 00C02025 */ move $a0, $a2 -/* 008F84 80008384 10000024 */ b .L80008418 -/* 008F88 80008388 8FBF0014 */ lw $ra, 0x14($sp) -.L8000838C: -/* 008F8C 8000838C 0C00C7D2 */ jal func_80031F48 -/* 008F90 80008390 3C053F80 */ lui $a1, 0x3f80 -/* 008F94 80008394 10000020 */ b .L80008418 -/* 008F98 80008398 8FBF0014 */ lw $ra, 0x14($sp) -.L8000839C: -/* 008F9C 8000839C 1460001B */ bnez $v1, .L8000840C -/* 008FA0 800083A0 00C02025 */ move $a0, $a2 -/* 008FA4 800083A4 24090023 */ li $t1, 35 -/* 008FA8 800083A8 44892000 */ mtc1 $t1, $f4 -/* 008FAC 800083AC 3C014032 */ li $at, 0x40320000 # 2.781250 -/* 008FB0 800083B0 44814800 */ mtc1 $at, $f9 -/* 008FB4 800083B4 468022A1 */ cvt.d.w $f10, $f4 -/* 008FB8 800083B8 44804000 */ mtc1 $zero, $f8 -/* 008FBC 800083BC 3C01406B */ li $at, 0x406B0000 # 3.671875 -/* 008FC0 800083C0 44819800 */ mtc1 $at, $f19 -/* 008FC4 800083C4 44809000 */ mtc1 $zero, $f18 -/* 008FC8 800083C8 46285402 */ mul.d $f16, $f10, $f8 -/* 008FCC 800083CC 460071A1 */ cvt.d.s $f6, $f14 -/* 008FD0 800083D0 00C02025 */ move $a0, $a2 -/* 008FD4 800083D4 24050002 */ li $a1, 2 -/* 008FD8 800083D8 46328103 */ div.d $f4, $f16, $f18 -/* 008FDC 800083DC 4624303C */ c.lt.d $f6, $f4 -/* 008FE0 800083E0 00000000 */ nop -/* 008FE4 800083E4 45000005 */ bc1f .L800083FC -/* 008FE8 800083E8 00000000 */ nop -/* 008FEC 800083EC 0C00E2F9 */ jal func_80038BE4 -/* 008FF0 800083F0 00C02025 */ move $a0, $a2 -/* 008FF4 800083F4 10000008 */ b .L80008418 -/* 008FF8 800083F8 8FBF0014 */ lw $ra, 0x14($sp) -.L800083FC: -/* 008FFC 800083FC 0C00C7D2 */ jal func_80031F48 -/* 009000 80008400 3C053F80 */ lui $a1, 0x3f80 -/* 009004 80008404 10000004 */ b .L80008418 -/* 009008 80008408 8FBF0014 */ lw $ra, 0x14($sp) -.L8000840C: -/* 00900C 8000840C 0C00C7D2 */ jal func_80031F48 -/* 009010 80008410 3C053F80 */ lui $a1, 0x3f80 -/* 009014 80008414 8FBF0014 */ lw $ra, 0x14($sp) -.L80008418: -/* 009018 80008418 27BD0018 */ addiu $sp, $sp, 0x18 -/* 00901C 8000841C 03E00008 */ jr $ra -/* 009020 80008420 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_800099EC.s b/asm/non_matchings/code_80005FD0/func_800099EC.s deleted file mode 100644 index c56385b21..000000000 --- a/asm/non_matchings/code_80005FD0/func_800099EC.s +++ /dev/null @@ -1,100 +0,0 @@ -glabel func_800099EC -/* 00A5EC 800099EC 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 00A5F0 800099F0 3C188016 */ lui $t8, %hi(D_801633C8) # $t8, 0x8016 -/* 00A5F4 800099F4 AFB70034 */ sw $s7, 0x34($sp) -/* 00A5F8 800099F8 271833C8 */ addiu $t8, %lo(D_801633C8) # addiu $t8, $t8, 0x33c8 -/* 00A5FC 800099FC 00047040 */ sll $t6, $a0, 1 -/* 00A600 80009A00 01D8B821 */ addu $s7, $t6, $t8 -/* 00A604 80009A04 86E20000 */ lh $v0, ($s7) -/* 00A608 80009A08 AFB40028 */ sw $s4, 0x28($sp) -/* 00A60C 80009A0C 0080A025 */ move $s4, $a0 -/* 00A610 80009A10 28410065 */ slti $at, $v0, 0x65 -/* 00A614 80009A14 AFBF003C */ sw $ra, 0x3c($sp) -/* 00A618 80009A18 AFBE0038 */ sw $fp, 0x38($sp) -/* 00A61C 80009A1C AFB60030 */ sw $s6, 0x30($sp) -/* 00A620 80009A20 AFB5002C */ sw $s5, 0x2c($sp) -/* 00A624 80009A24 AFB30024 */ sw $s3, 0x24($sp) -/* 00A628 80009A28 AFB20020 */ sw $s2, 0x20($sp) -/* 00A62C 80009A2C AFB1001C */ sw $s1, 0x1c($sp) -/* 00A630 80009A30 AFB00018 */ sw $s0, 0x18($sp) -/* 00A634 80009A34 AFA5004C */ sw $a1, 0x4c($sp) -/* 00A638 80009A38 14200027 */ bnez $at, .L80009AD8 -/* 00A63C 80009A3C AFAE0040 */ sw $t6, 0x40($sp) -/* 00A640 80009A40 3C048019 */ lui $a0, %hi(gPlayerCount) # $a0, 0x8019 -/* 00A644 80009A44 8084EDF3 */ lb $a0, %lo(gPlayerCount)($a0) -/* 00A648 80009A48 00008025 */ move $s0, $zero -/* 00A64C 80009A4C 0014A880 */ sll $s5, $s4, 2 -/* 00A650 80009A50 18800021 */ blez $a0, .L80009AD8 -/* 00A654 80009A54 3C198016 */ lui $t9, %hi(gGPCurrentRaceRankByPlayerId) -/* 00A658 80009A58 273243B8 */ addiu $s2, $t9, %lo(gGPCurrentRaceRankByPlayerId) -/* 00A65C 80009A5C 3C1E2900 */ lui $fp, (0x2900800D >> 16) # lui $fp, 0x2900 -/* 00A660 80009A60 3C138016 */ lui $s3, %hi(D_801643E0) # $s3, 0x8016 -/* 00A664 80009A64 267343E0 */ addiu $s3, %lo(D_801643E0) # addiu $s3, $s3, 0x43e0 -/* 00A668 80009A68 37DE800D */ ori $fp, (0x2900800D & 0xFFFF) # ori $fp, $fp, 0x800d -/* 00A66C 80009A6C 02B2B021 */ addu $s6, $s5, $s2 -/* 00A670 80009A70 00008825 */ move $s1, $zero -.L80009A74: -/* 00A674 80009A74 8EC20000 */ lw $v0, ($s6) -/* 00A678 80009A78 8E430000 */ lw $v1, ($s2) -/* 00A67C 80009A7C 02714021 */ addu $t0, $s3, $s1 -/* 00A680 80009A80 0043082A */ slt $at, $v0, $v1 -/* 00A684 80009A84 5020000F */ beql $at, $zero, .L80009AC4 -/* 00A688 80009A88 26100001 */ addiu $s0, $s0, 1 -/* 00A68C 80009A8C 8D090000 */ lw $t1, ($t0) -/* 00A690 80009A90 02755021 */ addu $t2, $s3, $s5 -/* 00A694 80009A94 5449000B */ bnel $v0, $t1, .L80009AC4 -/* 00A698 80009A98 26100001 */ addiu $s0, $s0, 1 -/* 00A69C 80009A9C 8D4B0000 */ lw $t3, ($t2) -/* 00A6A0 80009AA0 03C02825 */ move $a1, $fp -/* 00A6A4 80009AA4 546B0007 */ bnel $v1, $t3, .L80009AC4 -/* 00A6A8 80009AA8 26100001 */ addiu $s0, $s0, 1 -/* 00A6AC 80009AAC 0C0324B3 */ jal func_800C92CC -/* 00A6B0 80009AB0 328400FF */ andi $a0, $s4, 0xff -/* 00A6B4 80009AB4 A6E00000 */ sh $zero, ($s7) -/* 00A6B8 80009AB8 3C048019 */ lui $a0, %hi(gPlayerCount) # $a0, 0x8019 -/* 00A6BC 80009ABC 8084EDF3 */ lb $a0, %lo(gPlayerCount)($a0) -/* 00A6C0 80009AC0 26100001 */ addiu $s0, $s0, 1 -.L80009AC4: -/* 00A6C4 80009AC4 0204082A */ slt $at, $s0, $a0 -/* 00A6C8 80009AC8 26310004 */ addiu $s1, $s1, 4 -/* 00A6CC 80009ACC 1420FFE9 */ bnez $at, .L80009A74 -/* 00A6D0 80009AD0 26520004 */ addiu $s2, $s2, 4 -/* 00A6D4 80009AD4 86E20000 */ lh $v0, ($s7) -.L80009AD8: -/* 00A6D8 80009AD8 284103E8 */ slti $at, $v0, 0x3e8 -/* 00A6DC 80009ADC 10200002 */ beqz $at, .L80009AE8 -/* 00A6E0 80009AE0 244C0001 */ addiu $t4, $v0, 1 -/* 00A6E4 80009AE4 A6EC0000 */ sh $t4, ($s7) -.L80009AE8: -/* 00A6E8 80009AE8 8FAD0040 */ lw $t5, 0x40($sp) -/* 00A6EC 80009AEC 3C0E8016 */ lui $t6, %hi(D_80163398) # $t6, 0x8016 -/* 00A6F0 80009AF0 25CE3398 */ addiu $t6, %lo(D_80163398) # addiu $t6, $t6, 0x3398 -/* 00A6F4 80009AF4 01AE1021 */ addu $v0, $t5, $t6 -/* 00A6F8 80009AF8 84430000 */ lh $v1, ($v0) -/* 00A6FC 80009AFC 286100C8 */ slti $at, $v1, 0xc8 -/* 00A700 80009B00 10200002 */ beqz $at, .L80009B0C -/* 00A704 80009B04 246F0001 */ addiu $t7, $v1, 1 -/* 00A708 80009B08 A44F0000 */ sh $t7, ($v0) -.L80009B0C: -/* 00A70C 80009B0C 8FB80040 */ lw $t8, 0x40($sp) -/* 00A710 80009B10 3C198016 */ lui $t9, %hi(D_801633B0) # $t9, 0x8016 -/* 00A714 80009B14 273933B0 */ addiu $t9, %lo(D_801633B0) # addiu $t9, $t9, 0x33b0 -/* 00A718 80009B18 03191021 */ addu $v0, $t8, $t9 -/* 00A71C 80009B1C 84430000 */ lh $v1, ($v0) -/* 00A720 80009B20 286100C8 */ slti $at, $v1, 0xc8 -/* 00A724 80009B24 10200002 */ beqz $at, .L80009B30 -/* 00A728 80009B28 24680001 */ addiu $t0, $v1, 1 -/* 00A72C 80009B2C A4480000 */ sh $t0, ($v0) -.L80009B30: -/* 00A730 80009B30 8FBF003C */ lw $ra, 0x3c($sp) -/* 00A734 80009B34 8FB00018 */ lw $s0, 0x18($sp) -/* 00A738 80009B38 8FB1001C */ lw $s1, 0x1c($sp) -/* 00A73C 80009B3C 8FB20020 */ lw $s2, 0x20($sp) -/* 00A740 80009B40 8FB30024 */ lw $s3, 0x24($sp) -/* 00A744 80009B44 8FB40028 */ lw $s4, 0x28($sp) -/* 00A748 80009B48 8FB5002C */ lw $s5, 0x2c($sp) -/* 00A74C 80009B4C 8FB60030 */ lw $s6, 0x30($sp) -/* 00A750 80009B50 8FB70034 */ lw $s7, 0x34($sp) -/* 00A754 80009B54 8FBE0038 */ lw $fp, 0x38($sp) -/* 00A758 80009B58 03E00008 */ jr $ra -/* 00A75C 80009B5C 27BD0048 */ addiu $sp, $sp, 0x48 diff --git a/asm/non_matchings/code_80005FD0/func_80011EC0.s b/asm/non_matchings/code_80005FD0/func_80011EC0.s deleted file mode 100644 index 42fff30d0..000000000 --- a/asm/non_matchings/code_80005FD0/func_80011EC0.s +++ /dev/null @@ -1,152 +0,0 @@ -.section .late_rodata - -glabel D_800ED0E0 -.double -0.8 - -glabel D_800ED0E8 -.double 0.8 - -.section .text - -glabel func_80011EC0 -/* 012AC0 80011EC0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 012AC4 80011EC4 AFBF0014 */ sw $ra, 0x14($sp) -/* 012AC8 80011EC8 AFA60030 */ sw $a2, 0x30($sp) -/* 012ACC 80011ECC AFA70034 */ sw $a3, 0x34($sp) -/* 012AD0 80011ED0 3C014190 */ li $at, 0x41900000 # 18.000000 -/* 012AD4 80011ED4 44813000 */ mtc1 $at, $f6 -/* 012AD8 80011ED8 C4A40094 */ lwc1 $f4, 0x94($a1) -/* 012ADC 80011EDC 3C014358 */ li $at, 0x43580000 # 216.000000 -/* 012AE0 80011EE0 44815000 */ mtc1 $at, $f10 -/* 012AE4 80011EE4 46062203 */ div.s $f8, $f4, $f6 -/* 012AE8 80011EE8 3C014234 */ li $at, 0x42340000 # 45.000000 -/* 012AEC 80011EEC 44819000 */ mtc1 $at, $f18 -/* 012AF0 80011EF0 3C0E8016 */ lui $t6, %hi(D_801630E8) # $t6, 0x8016 -/* 012AF4 80011EF4 00C03825 */ move $a3, $a2 -/* 012AF8 80011EF8 25CE30E8 */ addiu $t6, %lo(D_801630E8) # addiu $t6, $t6, 0x30e8 -/* 012AFC 80011EFC 00041840 */ sll $v1, $a0, 1 -/* 012B00 80011F00 3C018016 */ lui $at, %hi(D_801630E8) -/* 012B04 80011F04 00046840 */ sll $t5, $a0, 1 -/* 012B08 80011F08 006E3021 */ addu $a2, $v1, $t6 -/* 012B0C 80011F0C 002D0821 */ addu $at, $at, $t5 -/* 012B10 80011F10 240C0003 */ li $t4, 3 -/* 012B14 80011F14 460A4402 */ mul.s $f16, $f8, $f10 -/* 012B18 80011F18 4610903E */ c.le.s $f18, $f16 -/* 012B1C 80011F1C 00000000 */ nop -/* 012B20 80011F20 45000064 */ bc1f .L800120B4 -/* 012B24 80011F24 00000000 */ nop -/* 012B28 80011F28 84CF0000 */ lh $t7, ($a2) -/* 012B2C 80011F2C 3C188016 */ lui $t8, %hi(D_801631D8) # $t8, 0x8016 -/* 012B30 80011F30 3C198016 */ lui $t9, %hi(D_80162FCE) # $t9, 0x8016 -/* 012B34 80011F34 15E0005F */ bnez $t7, .L800120B4 -/* 012B38 80011F38 00000000 */ nop -/* 012B3C 80011F3C 87392FCE */ lh $t9, %lo(D_80162FCE)($t9) -/* 012B40 80011F40 8F1831D8 */ lw $t8, %lo(D_801631D8)($t8) -/* 012B44 80011F44 24010001 */ li $at, 1 -/* 012B48 80011F48 00194040 */ sll $t0, $t9, 1 -/* 012B4C 80011F4C 03084821 */ addu $t1, $t8, $t0 -/* 012B50 80011F50 85220000 */ lh $v0, ($t1) -/* 012B54 80011F54 5040000A */ beql $v0, $zero, .L80011F80 -/* 012B58 80011F58 28E1FFF7 */ slti $at, $a3, -9 -/* 012B5C 80011F5C 1041002E */ beq $v0, $at, .L80012018 -/* 012B60 80011F60 24010002 */ li $at, 2 -/* 012B64 80011F64 10410005 */ beq $v0, $at, .L80011F7C -/* 012B68 80011F68 24010003 */ li $at, 3 -/* 012B6C 80011F6C 5041002B */ beql $v0, $at, .L8001201C -/* 012B70 80011F70 28E1000A */ slti $at, $a3, 0xa -/* 012B74 80011F74 10000051 */ b .L800120BC -/* 012B78 80011F78 8FBF0014 */ lw $ra, 0x14($sp) -.L80011F7C: -/* 012B7C 80011F7C 28E1FFF7 */ slti $at, $a3, -9 -.L80011F80: -/* 012B80 80011F80 14200022 */ bnez $at, .L8001200C -/* 012B84 80011F84 3C0A8016 */ lui $t2, %hi(D_80162FF8) # 0x8016 -/* 012B88 80011F88 01435021 */ addu $t2, $t2, $v1 -/* 012B8C 80011F8C 854A2FF8 */ lh $t2, %lo(D_80162FF8)($t2) # 0x2ff8($t2) -/* 012B90 80011F90 00045880 */ sll $t3, $a0, 2 -/* 012B94 80011F94 3C018016 */ lui $at, %hi(D_80163068) -/* 012B98 80011F98 1540001C */ bnez $t2, .L8001200C -/* 012B9C 80011F9C 002B0821 */ addu $at, $at, $t3 -/* 012BA0 80011FA0 C4243068 */ lwc1 $f4, %lo(D_80163068)($at) -/* 012BA4 80011FA4 3C01800F */ lui $at, %hi(D_800ED0E0) -/* 012BA8 80011FA8 D426D0E0 */ ldc1 $f6, %lo(D_800ED0E0)($at) -/* 012BAC 80011FAC 46002021 */ cvt.d.s $f0, $f4 -/* 012BB0 80011FB0 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 012BB4 80011FB4 4620303C */ c.lt.d $f6, $f0 -/* 012BB8 80011FB8 00000000 */ nop -/* 012BBC 80011FBC 45020014 */ bc1fl .L80012010 -/* 012BC0 80011FC0 240F0002 */ li $t7, 2 -/* 012BC4 80011FC4 44814800 */ mtc1 $at, $f9 -/* 012BC8 80011FC8 44804000 */ mtc1 $zero, $f8 -/* 012BCC 80011FCC 00A02025 */ move $a0, $a1 -/* 012BD0 80011FD0 4628003C */ c.lt.d $f0, $f8 -/* 012BD4 80011FD4 00000000 */ nop -/* 012BD8 80011FD8 4502000D */ bc1fl .L80012010 -/* 012BDC 80011FDC 240F0002 */ li $t7, 2 -/* 012BE0 80011FE0 AFA5002C */ sw $a1, 0x2c($sp) -/* 012BE4 80011FE4 0C00AA94 */ jal func_8002AA50 -/* 012BE8 80011FE8 AFA6001C */ sw $a2, 0x1c($sp) -/* 012BEC 80011FEC 8FA5002C */ lw $a1, 0x2c($sp) -/* 012BF0 80011FF0 8FA6001C */ lw $a2, 0x1c($sp) -/* 012BF4 80011FF4 240E0001 */ li $t6, 1 -/* 012BF8 80011FF8 8CAC00BC */ lw $t4, 0xbc($a1) -/* 012BFC 80011FFC 358D0010 */ ori $t5, $t4, 0x10 -/* 012C00 80012000 ACAD00BC */ sw $t5, 0xbc($a1) -/* 012C04 80012004 1000002C */ b .L800120B8 -/* 012C08 80012008 A4CE0000 */ sh $t6, ($a2) -.L8001200C: -/* 012C0C 8001200C 240F0002 */ li $t7, 2 -.L80012010: -/* 012C10 80012010 10000029 */ b .L800120B8 -/* 012C14 80012014 A4CF0000 */ sh $t7, ($a2) -.L80012018: -/* 012C18 80012018 28E1000A */ slti $at, $a3, 0xa -.L8001201C: -/* 012C1C 8001201C 10200022 */ beqz $at, .L800120A8 -/* 012C20 80012020 3C198016 */ lui $t9, %hi(D_80162FF8) # 0x8016 -/* 012C24 80012024 0323C821 */ addu $t9, $t9, $v1 -/* 012C28 80012028 87392FF8 */ lh $t9, %lo(D_80162FF8)($t9) # 0x2ff8($t9) -/* 012C2C 8001202C 0004C080 */ sll $t8, $a0, 2 -/* 012C30 80012030 3C018016 */ lui $at, %hi(D_80163068) -/* 012C34 80012034 1720001C */ bnez $t9, .L800120A8 -/* 012C38 80012038 00380821 */ addu $at, $at, $t8 -/* 012C3C 8001203C C42A3068 */ lwc1 $f10, %lo(D_80163068)($at) -/* 012C40 80012040 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 -/* 012C44 80012044 44818800 */ mtc1 $at, $f17 -/* 012C48 80012048 44808000 */ mtc1 $zero, $f16 -/* 012C4C 8001204C 46005021 */ cvt.d.s $f0, $f10 -/* 012C50 80012050 3C01800F */ lui $at, %hi(D_800ED0E8) # $at, 0x800f -/* 012C54 80012054 4620803C */ c.lt.d $f16, $f0 -/* 012C58 80012058 00000000 */ nop -/* 012C5C 8001205C 45020013 */ bc1fl .L800120AC -/* 012C60 80012060 240BFFFE */ li $t3, -2 -/* 012C64 80012064 D432D0E8 */ ldc1 $f18, %lo(D_800ED0E8)($at) -/* 012C68 80012068 00A02025 */ move $a0, $a1 -/* 012C6C 8001206C 4632003C */ c.lt.d $f0, $f18 -/* 012C70 80012070 00000000 */ nop -/* 012C74 80012074 4502000D */ bc1fl .L800120AC -/* 012C78 80012078 240BFFFE */ li $t3, -2 -/* 012C7C 8001207C AFA5002C */ sw $a1, 0x2c($sp) -/* 012C80 80012080 0C00AA94 */ jal func_8002AA50 -/* 012C84 80012084 AFA6001C */ sw $a2, 0x1c($sp) -/* 012C88 80012088 8FA5002C */ lw $a1, 0x2c($sp) -/* 012C8C 8001208C 8FA6001C */ lw $a2, 0x1c($sp) -/* 012C90 80012090 240AFFFF */ li $t2, -1 -/* 012C94 80012094 8CA800BC */ lw $t0, 0xbc($a1) -/* 012C98 80012098 35090010 */ ori $t1, $t0, 0x10 -/* 012C9C 8001209C ACA900BC */ sw $t1, 0xbc($a1) -/* 012CA0 800120A0 10000005 */ b .L800120B8 -/* 012CA4 800120A4 A4CA0000 */ sh $t2, ($a2) -.L800120A8: -/* 012CA8 800120A8 240BFFFE */ li $t3, -2 -.L800120AC: -/* 012CAC 800120AC 10000002 */ b .L800120B8 -/* 012CB0 800120B0 A4CB0000 */ sh $t3, ($a2) -.L800120B4: -/* 012CB4 800120B4 A42C30E8 */ sh $t4, %lo(D_801630E8)($at) -.L800120B8: -/* 012CB8 800120B8 8FBF0014 */ lw $ra, 0x14($sp) -.L800120BC: -/* 012CBC 800120BC 27BD0028 */ addiu $sp, $sp, 0x28 -/* 012CC0 800120C0 03E00008 */ jr $ra -/* 012CC4 800120C4 00000000 */ nop diff --git a/asm/non_matchings/code_80005FD0/func_80019D2C.s b/asm/non_matchings/code_80005FD0/func_80019D2C.s deleted file mode 100644 index 8fc7fd0fa..000000000 --- a/asm/non_matchings/code_80005FD0/func_80019D2C.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_80019D2C -/* 01A92C 80019D2C 3C0E8016 */ lui $t6, %hi(D_80163378) # $t6, 0x8016 -/* 01A930 80019D30 8DCE3378 */ lw $t6, %lo(D_80163378)($t6) -/* 01A934 80019D34 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 01A938 80019D38 AFBF0014 */ sw $ra, 0x14($sp) -/* 01A93C 80019D3C AFA50024 */ sw $a1, 0x24($sp) -/* 01A940 80019D40 11C00024 */ beqz $t6, .L80019DD4 -/* 01A944 80019D44 848300AE */ lh $v1, 0xae($a0) -/* 01A948 80019D48 3C0F800E */ lui $t7, %hi(gCurrentCourseId) -/* 01A94C 80019D4C 85EFC5A0 */ lh $t7, %lo(gCurrentCourseId)($t7) -/* 01A950 80019D50 24010008 */ li $at, 8 -/* 01A954 80019D54 00C02825 */ move $a1, $a2 -/* 01A958 80019D58 55E1001F */ bnel $t7, $at, .L80019DD8 -/* 01A95C 80019D5C 8FBF0014 */ lw $ra, 0x14($sp) -/* 01A960 80019D60 AFA3001C */ sw $v1, 0x1c($sp) -/* 01A964 80019D64 0C005469 */ jal func_800151A4 -/* 01A968 80019D68 AFA60028 */ sw $a2, 0x28($sp) -/* 01A96C 80019D6C 8FA3001C */ lw $v1, 0x1c($sp) -/* 01A970 80019D70 3C028016 */ lui $v0, %hi(gNearestWaypointByPlayerId) # 0x8016 -/* 01A974 80019D74 8FA60028 */ lw $a2, 0x28($sp) -/* 01A978 80019D78 0003C040 */ sll $t8, $v1, 1 -/* 01A97C 80019D7C 00581021 */ addu $v0, $v0, $t8 -/* 01A980 80019D80 94424438 */ lhu $v0, %lo(gNearestWaypointByPlayerId)($v0) # 0x4438($v0) -/* 01A984 80019D84 28410065 */ slti $at, $v0, 0x65 -/* 01A988 80019D88 14200002 */ bnez $at, .L80019D94 -/* 01A98C 80019D8C 284100FA */ slti $at, $v0, 0xfa -/* 01A990 80019D90 14200006 */ bnez $at, .L80019DAC -.L80019D94: -/* 01A994 80019D94 284101AF */ slti $at, $v0, 0x1af -/* 01A998 80019D98 1420000C */ bnez $at, .L80019DCC -/* 01A99C 80019D9C 00C02025 */ move $a0, $a2 -/* 01A9A0 80019DA0 28410226 */ slti $at, $v0, 0x226 -/* 01A9A4 80019DA4 10200009 */ beqz $at, .L80019DCC -/* 01A9A8 80019DA8 00000000 */ nop -.L80019DAC: -/* 01A9AC 80019DAC 8FB90024 */ lw $t9, 0x24($sp) -/* 01A9B0 80019DB0 00C02025 */ move $a0, $a2 -/* 01A9B4 80019DB4 87250206 */ lh $a1, 0x206($t9) -/* 01A9B8 80019DB8 00054040 */ sll $t0, $a1, 1 -/* 01A9BC 80019DBC 0C0066D4 */ jal func_80019B50 -/* 01A9C0 80019DC0 3105FFFF */ andi $a1, $t0, 0xffff -/* 01A9C4 80019DC4 10000004 */ b .L80019DD8 -/* 01A9C8 80019DC8 8FBF0014 */ lw $ra, 0x14($sp) -.L80019DCC: -/* 01A9CC 80019DCC 0C0066D4 */ jal func_80019B50 -/* 01A9D0 80019DD0 00002825 */ move $a1, $zero -.L80019DD4: -/* 01A9D4 80019DD4 8FBF0014 */ lw $ra, 0x14($sp) -.L80019DD8: -/* 01A9D8 80019DD8 27BD0020 */ addiu $sp, $sp, 0x20 -/* 01A9DC 80019DDC 03E00008 */ jr $ra -/* 01A9E0 80019DE0 00000000 */ nop diff --git a/include/bomb_kart.h b/include/bomb_kart.h index 40a7bc7d0..fe865a707 100644 --- a/include/bomb_kart.h +++ b/include/bomb_kart.h @@ -40,12 +40,12 @@ typedef struct { /* 0x24 */ Vec3f wheel3Pos; /* 0x30 */ Vec3f wheel4Pos; /* 0x3C */ f32 unk_3C; - /* 0x40 */ s16 someRot; // seems like an angle of some variety, can't figure out its purpose + /* 0x40 */ u16 someRot; // seems like an angle of some variety, can't figure out its purpose /* 0x42 */ u16 waypointIndex; // probably the waypoint that the bomb circles /* 0x44 */ u16 state; - /* 0x46 */ s16 bounceTimer; // timer? state? height? - /* 0x48 */ s16 circleTimer; // timer? state? Somehow controls how it circles around - /* 0x4A */ s16 unk_4A; + /* 0x46 */ u16 bounceTimer; // timer? state? height? + /* 0x48 */ u16 circleTimer; // timer? state? Somehow controls how it circles around + /* 0x4A */ u16 unk_4A; /* 0x4C */ s16 unk_4C; /* 0x4E */ // s16 compilerPadding; /* 0x50 */ f32 yPos; // Y position of the center of the circle diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 4fe3b73bb..a52e0675e 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -26,6 +26,7 @@ #include "main.h" #include "menus.h" #include "code_80091750.h" +#include "audio/external.h" extern UnkCommonTextureStruct0 *D_800DC720[]; @@ -886,122 +887,57 @@ void func_80007D04(s32 playerId, Player *player) { GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80007D04.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -extern ? D_80163410; -extern ? D_80163418; -extern ? D_80163438; - -void func_80007FA4(s16 arg0, Player *player, f32 arg2) { +void func_80007FA4(s32 arg0, Player *player, f32 arg2) { f32 temp_f0; f32 temp_f12; - f32 temp_f12_2; f32 temp_f2; - s16 *temp_v0_2; - s16 *temp_v0_3; - s16 *temp_v0_4; - s16 *temp_v0_5; - s16 temp_v1; - s32 temp_v0; + s32 test; - temp_v0 = arg0 * 4; - temp_f0 = *(&D_80163418 + temp_v0) - player->pos[0]; - temp_f2 = *(&D_80163438 + temp_v0) - player->pos[2]; + temp_f0 = D_80163418[arg0] - player->pos[0]; + temp_f2 = D_80163438[arg0] - player->pos[2]; + temp_f12 = (temp_f0 * temp_f0) + (temp_f2 * temp_f2); if (arg0 == 3) { - temp_v0_2 = (arg0 * 2) + &D_80163410; - temp_f12 = (temp_f0 * temp_f0) + (temp_f2 * temp_f2); - if ((temp_f12 < 25.0f) && (*temp_v0_2 < 5)) { - *temp_v0_2 = 4; - if ((f64) arg2 < 0.16666666666666666) { - func_80038BE4(player, 1); - return; - } + if ((temp_f12 < 25.0f) && (D_80163410[arg0] < 5)) { + D_80163410[arg0] = 4; + (arg2 < ((2.0 * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 1.0f); + } else if ((temp_f12 < 3600.0f) && (D_80163410[arg0] < 4)) { + D_80163410[arg0] = 3; + (arg2 < ((5.0 * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 5.0f); + } else { + (arg2 < ((20.0 * 18.0) / 216.0)) ? func_80038BE4(player, 10) : func_80031F48(player, 1.0f); + } + } else { + if ((temp_f12 < 25.0f) && (D_80163410[arg0] < 5)) { + D_80163410[arg0] = 4; + test = 2; + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 1.0f); + } else if ((temp_f12 < 4900.0f) && (D_80163410[arg0] < 4)) { + D_80163410[arg0] = 3; + test = 5; + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 1) : func_80031F48(player, 15.0f); + } else if ((temp_f12 < 22500.0f) && (D_80163410[arg0] < 3)) { + D_80163410[arg0] = 2; + test = 20; + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 5) : func_80031F48(player, 1.0f); + } else if ((temp_f12 < 90000.0f) && (D_80163410[arg0] < 2)) { + D_80163410[arg0] = 1; + test = 30; + (arg2 < ((test * 18.0) / 216.0)) ? func_80038BE4(player, 6) : func_80031F48(player, 1.0f); + } else if (D_80163410[arg0] == 0) { + test = 35; + (arg2 < (((test^0) * 18.0) / 216.0)) ? func_80038BE4(player, 2) : func_80031F48(player, 1.0f); + } else { func_80031F48(player, 1.0f); - return; } - temp_v0_3 = (arg0 * 2) + &D_80163410; - if ((temp_f12 < 3600.0f) && (*temp_v0_3 < 4)) { - *temp_v0_3 = 3; - if ((f64) arg2 < 0.4166666666666667) { - func_80038BE4(player, 1); - return; - } - func_80031F48(player, 5.0f); - return; - } - if ((f64) arg2 < 1.6666666666666667) { - func_80038BE4(player, 0x000A); - return; - } - func_80031F48(player, 1.0f); - return; } - temp_v0_4 = (arg0 * 2) + &D_80163410; - temp_f12_2 = (temp_f0 * temp_f0) + (temp_f2 * temp_f2); - if ((temp_f12_2 < 25.0f) && (*temp_v0_4 < 5)) { - *temp_v0_4 = 4; - if ((f64) arg2 < ((2.0 * 18.0) / 216.0)) { - func_80038BE4(player, 1); - return; - } - func_80031F48(player, 1.0f); - return; - } - temp_v0_5 = (arg0 * 2) + &D_80163410; - temp_v1 = *temp_v0_5; - if ((temp_f12_2 < 4900.0f) && (temp_v1 < 4)) { - *temp_v0_5 = 3; - if ((f64) arg2 < ((5.0 * 18.0) / 216.0)) { - func_80038BE4(player, 1); - return; - } - func_80031F48(player, 15.0f); - return; - } - if ((temp_f12_2 < 22500.0f) && (temp_v1 < 3)) { - *temp_v0_5 = 2; - if ((f64) arg2 < ((20.0 * 18.0) / 216.0)) { - func_80038BE4(player, 5); - return; - } - func_80031F48(player, 1.0f); - return; - } - if ((temp_f12_2 < 90000.0f) && (temp_v1 < 2)) { - *temp_v0_5 = 1; - if ((f64) arg2 < ((30.0 * 18.0) / 216.0)) { - func_80038BE4(player, 6); - return; - } - func_80031F48(player, 1.0f); - return; - } - if (temp_v1 == 0) { - if ((f64) arg2 < (((f64) 0x23 * 18.0) / 216.0)) { - func_80038BE4(player, 2); - return; - } - func_80031F48(player, 1.0f); - return; - } - func_80031F48(player, 1.0f); } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80007FA4.s") -#endif #ifdef MIPS_TO_C -//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de -void func_80007D04(f32, s32, Player *, s32, Player *); /* extern */ -void func_80007FA4(f32, Player *, f32, Player *); /* extern */ +//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-26-2023 +? func_80007D04(f32, s32, Player *, s32, Player *); /* extern */ s32 func_800088D8(f32, s32, s16, s16, Player *); /* extern */ -extern s16 D_801631E0; -extern u16 D_80163330; -extern s16 D_80163350; -extern ? D_801634D8; extern ? D_80164392; extern ? D_8016440A; -s16 gCurrentCourseId; /* unable to generate initializer */ void func_80008424(s32 arg0, f32 arg1, Player *player) { f32 sp34; @@ -1013,38 +949,36 @@ void func_80008424(s32 arg0, f32 arg1, Player *player) { s32 temp_t5; s32 temp_v0; s32 temp_v0_2; - s32 temp_v0_3; - s32 temp_v0_5; - s32 temp_v1; + s32 temp_v0_4; s32 var_a1; - u16 temp_v0_4; + u16 temp_v0_3; + u32 temp_v1; temp_v1 = player->effects; var_f12 = arg1; temp_f2 = player->unk_094; - if (!(temp_v1 & 0x80) && !(temp_v1 & 0x40) && ((temp_v1 << 0xE) >= 0) && (temp_v0 = player->statusEffects, ((temp_v0 << 9) >= 0)) && ((temp_v0 << 7) >= 0) && !(temp_v0 & 2) && !(temp_v0 & 4)) { + if (!(temp_v1 & 0x80) && !(temp_v1 & 0x40) && !(temp_v1 & 0x20000) && (temp_v0 = player->statusEffects, !(temp_v0 & 0x400000)) && !(temp_v0 & 0x01000000) && !(temp_v0 & 2) && !(temp_v0 & 4)) { if (gCurrentCourseId == 0x0014) { - func_80007FA4(var_f12, player, temp_f2, player); + func_80007FA4(arg0, player, temp_f2); return; } temp_t5 = arg0 * 2; - if ((*(&D_801634D8 + temp_t5) == (s16) 1) && !(temp_v1 & 0x80000200)) { + if ((D_801634D8[arg0] == (s16) 1) && !(temp_v1 & 0x80000200)) { func_80031F48(player, 10.0f); if ((f64) player->currentSpeed == 0.0) { player->velocity[0] = 0.0f; player->velocity[2] = 0.0f; } } else { - temp_v0_2 = gCCSelection; var_f0 = 3.3333333f; - switch (temp_v0_2) { /* irregular */ - case CC_100: - case CC_EXTRA: + switch (gCCSelection) { /* irregular */ + case 1: + case 3: break; - case CC_50: + case 0: var_f0 = 2.5f; break; - case CC_150: + case 2: var_f0 = 3.75f; break; } @@ -1053,7 +987,7 @@ void func_80008424(s32 arg0, f32 arg1, Player *player) { player_speed(player); return; } - if (player->type & PLAYER_CINEMATIC_MODE) { + if (player->type & 0x800) { if (temp_f2 < var_f12) { player->effects = temp_v1 & 0xFFDFFFFF; player_speed(player); @@ -1063,9 +997,9 @@ void func_80008424(s32 arg0, f32 arg1, Player *player) { func_80031F48(player, 1.0f); return; } - if ((*(&D_801631E0 + temp_t5) == (u16) 1) && (*(&D_80163330 + temp_t5) != (u16) 1)) { - temp_v0_3 = arg0 * 4; - if (func_800088D8(var_f12, arg0, *(&D_80164392 + temp_v0_3), *(&D_8016440A + temp_v0_3), player) == 1) { + if ((D_801631E0[arg0] == (u16) 1) && (D_80163330[arg0] != (u16) 1)) { + temp_v0_2 = arg0 * 4; + if (func_800088D8(var_f12, arg0, *(&D_80164392 + temp_v0_2), *(&D_8016440A + temp_v0_2), player) == 1) { player->effects |= 0x200000; player_speed(player); return; @@ -1074,8 +1008,8 @@ void func_80008424(s32 arg0, f32 arg1, Player *player) { func_80031F48(player, 1.0f); return; } - temp_v0_4 = *(&D_80163350 + temp_t5); - switch (temp_v0_4) { /* switch 1; irregular */ + temp_v0_3 = (u16) D_80163350[arg0]; + switch (temp_v0_3) { /* switch 1; irregular */ case 1: /* switch 1 */ player->effects = temp_v1 & 0xFFDFFFFF; sp34 = temp_f2; @@ -1106,16 +1040,16 @@ void func_80008424(s32 arg0, f32 arg1, Player *player) { } if (var_a1 != 1) { if (temp_f2 < var_f12) { - if ((gDemoMode) && (gCurrentCourseId != 0x0014)) { + if ((gDemoMode == (u16) 1) && (gCurrentCourseId != 0x0014)) { player_speed(player); return; } - temp_v0_5 = arg0 * 4; - if (*(&D_80163330 + temp_t5) == (u16) 1) { + temp_v0_4 = arg0 * 4; + if (D_80163330[arg0] == (u16) 1) { func_80007D04(var_f12, arg0, player, temp_t5, player); return; } - if (func_800088D8(var_f12, arg0, *(&D_80164392 + temp_v0_5), *(&D_8016440A + temp_v0_5), player) == 1) { + if (func_800088D8(var_f12, arg0, *(&D_80164392 + temp_v0_4), *(&D_8016440A + temp_v0_4), player) == 1) { player->effects |= 0x200000; player_speed(player); return; @@ -1139,18 +1073,10 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80008424.s") #endif #ifdef MIPS_TO_C -//generated by m2c commit bece1d6db17040749f77dbbd090363cc6fb926f9 -extern s32 D_80163128; -extern s32 D_80163150; -extern u16 D_80163330; -extern s16 D_80163344; -extern u16 D_80163348; -extern s16 D_80163478; +//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-26-2023 extern ? D_80164376; extern s16 D_80164386; extern ? D_801643BA; -extern ? D_80164538; -extern s8 gPlayerCount; static ? D_800DCAF4; /* unable to generate initializer */ static ? D_800DCB34; /* unable to generate initializer */ static ? *D_800DCBB4[0x15] = { @@ -1176,7 +1102,6 @@ static ? *D_800DCBB4[0x15] = { &D_800DCAF4, &D_800DCAF4, }; -s16 gCurrentCourseId; /* unable to generate initializer */ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { s32 sp10; @@ -1185,8 +1110,6 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { f32 temp_f0; f32 temp_f0_2; f32 temp_f0_3; - s16 *var_a0_3; - s16 temp_t3_2; s16 temp_t5_2; s16 temp_v0; s16 var_a0_4; @@ -1198,9 +1121,7 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { s32 *var_v1; s32 temp_a2; s32 temp_lo; - s32 temp_t0; s32 temp_t2; - s32 temp_t3; s32 temp_t8; s32 var_a0; s32 var_a0_2; @@ -1208,38 +1129,36 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { s32 var_a1_2; s32 var_a1_3; s32 var_a1_4; - s8 temp_t1_2; + u16 *var_a0_3; u16 temp_t7; void *temp_a2_2; void *temp_a3; var_a1 = arg1; - temp_t0 = arg0 * 4; - temp_t5 = temp_t0 + &D_80163128; - temp_t4 = temp_t0 + &D_80163150; + temp_t5 = &D_80163128[arg0]; + temp_t4 = &D_80163150[arg0]; *temp_t5 = -1; *temp_t4 = -1; - if (gModeSelection == TIME_TRIALS) { + if (gModeSelection == 1) { return 1; } if (var_a1 < 0) { return 1; } - temp_t3 = arg0 * 2; if (var_a1 >= 4) { var_a1 = 3; } - if (*(&D_80163330 + temp_t3) == (u16) 1) { + if (D_80163330[arg0] == (u16) 1) { return 1; } temp_t1 = &gPlayers[arg0]; - if ((temp_t1->type & 0x4000) != 0) { + if (temp_t1->type & 0x4000) { return 1; } temp_t2 = var_a1 * 8; temp_a3 = D_800DCBB4[gCurrentCourseId] + (temp_t2 * 2); if (arg2 == 0) { - if (gDemoMode) { + if (gDemoMode == (u16) 1) { temp_a2 = D_80164450[arg0].unk2 - D_80164450[D_80164386].unk2; var_a1_2 = temp_a2; if (temp_a2 < 0) { @@ -1258,9 +1177,8 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { return 1; } temp_v0 = D_80164450[arg0].unk2; - temp_t3_2 = D_80163478; - var_a1_3 = temp_v0 - D_80164450[temp_t3_2].unk2; - temp_t5_2 = *(&D_801643BA + (temp_t3_2 * 4)); + var_a1_3 = temp_v0 - D_80164450[D_80163478].unk2; + temp_t5_2 = *(&D_801643BA + (D_80163478 * 4)); if ((((s32) (*gWaypointCountByPathIndex * 2) / 3) < var_a1_3) && (temp_t5_2 >= 6)) { var_a1_3 = temp_v0 - D_80164450[*(&D_80164376 + (temp_t5_2 * 2))].unk2; } @@ -1280,8 +1198,8 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { } return 1; } - var_a0_3 = &D_80163344; - temp_t8 = D_80164450[D_80163344].unk2 - D_80164450[arg0].unk2; + var_a0_3 = D_80163344; + temp_t8 = D_80164450[(s16) *D_80163344].unk2 - D_80164450[arg0].unk2; sp10 = temp_t8; var_a1_4 = temp_t8; if (temp_t8 < 0) { @@ -1289,17 +1207,16 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { } var_v0 = 0; do { - temp_t7 = (u16) *var_a0_3; + temp_t7 = *var_a0_3; var_a0_3 += 2; if (gGPCurrentRaceRankByPlayerId[temp_t7] < arg2) { var_v0 += 1; } - } while ((u32) var_a0_3 < (u32) &D_80163348); - temp_t1_2 = gPlayerCount; + } while ((u32) var_a0_3 < (u32) D_80163348); var_a0_4 = 0; var_v1 = gGPCurrentRaceRankByPlayerId; - if (temp_t1_2 > 0) { - sp4 = &gGPCurrentRaceRankByPlayerId[temp_t1_2]; + if (gPlayerCount > 0) { + sp4 = &gGPCurrentRaceRankByPlayerId[gPlayerCount]; do { if (*var_v1 < arg2) { var_a0_4 += 1; @@ -1311,7 +1228,7 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) { if ((var_v0 > 0) || (var_a0_4 > 0)) { var_t1 += 1; } - *(&D_80164538 + temp_t3) = var_t1; + D_80164538[arg0] = var_t1; if ((var_t1 < 0) || (var_t1 >= 8)) { goto block_55; } @@ -1451,18 +1368,14 @@ f32 func_80009258(UNUSED s32 playerId, f32 arg1, f32 arg2) { } #ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 +//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-27-2023 ? func_800065D0(s32, Player *, s32 *); /* extern */ -f32 func_80009258(s32, f32, f32, u16 *); /* extern */ extern s16 D_801630E0; extern s16 D_801630E2; extern ? D_80163240; -extern ? D_80163450; -extern s16 D_801634EC; extern ? D_801642DE; extern ? D_801643B0; extern s32 D_8016440C; -s16 gCurrentCourseId; /* unable to generate initializer */ void func_8000929C(s32 playerId, Player *player) { f32 sp4C; @@ -1472,7 +1385,6 @@ void func_8000929C(s32 playerId, Player *player) { u16 *sp30; /* compiler-managed */ s16 *sp2C; f32 temp_f0; - f32 temp_f0_2; f32 temp_f12; s16 *temp_v1; s16 temp_a3; @@ -1553,7 +1465,7 @@ block_23: block_25: var_a3 = playerId * 4; } - sp38 = *(&D_80163450 + var_a3); + sp38 = *(D_80163450 + var_a3); if ((var_v1 != 0) && (sp44 <= D_8016344C)) { temp_v0 = var_a3 + gLapCountByPlayerId; if (D_8016344C < sp38) { @@ -1581,11 +1493,10 @@ block_25: func_80008F38(playerId); func_80011AE4(playerId); *(&D_801642DE + (playerId * 0x10)) = 0; - if ((D_8016348C == 0) && !(player->type & PLAYER_CINEMATIC_MODE)) { + if ((D_8016348C == 0) && !(player->type & 0x800)) { sp30 = var_a3; sp34 = var_t0; - temp_f0_2 = func_80009258(playerId, sp38, sp44, (u16 *) var_a3); - *(gTimePlayerLastTouchedFinishLine + var_a3) = temp_f0_2; + *(gTimePlayerLastTouchedFinishLine + var_a3) = func_80009258(playerId, sp38, sp44); } } } @@ -1597,7 +1508,7 @@ block_25: } } } - *(&D_80163450 + (playerId * 4)) = sp44; + D_80163450[playerId] = sp44; 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); } @@ -1655,21 +1566,16 @@ void func_800097E0(void) { } #ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 -extern ? D_80163398; -extern ? D_801633B0; - +//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-27-2023 void func_800098FC(u32 arg0, Player *player) { s32 sp1C; s16 *sp18; s16 *temp_a2; s16 *temp_a2_2; s32 temp_v0_2; - s32 temp_v1; u32 temp_v0; - temp_v1 = arg0 * 2; - temp_a2 = temp_v1 + &D_80163398; + temp_a2 = &D_80163398[arg0]; if (*temp_a2 >= 0xB) { temp_v0 = player->effects; if (!(temp_v0 & 0x80) && !(temp_v0 & 0x40)) { @@ -1678,13 +1584,13 @@ void func_800098FC(u32 arg0, Player *player) { } } else { block_6: - sp1C = temp_v1; + sp1C = arg0 * 2; sp18 = temp_a2; func_800C92CC((u8) arg0, 0x2900800AU); *temp_a2 = 0; } } - temp_a2_2 = temp_v1 + &D_801633B0; + temp_a2_2 = &D_801633B0[arg0]; 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)) { @@ -1703,99 +1609,45 @@ block_15: GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800098FC.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 -extern ? D_80163398; -extern ? D_801633B0; -extern ? D_801633C8; - -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 *var_s2; - s32 temp_t6; - s32 temp_v0; - s32 temp_v1; +void func_800099EC(s32 playerId, s32 unused) { s32 var_s0; - s32 var_s1; - temp_t6 = arg0 * 2; - temp_s7 = temp_t6 + &D_801633C8; - sp40 = temp_t6; - if (*temp_s7 >= 0x65) { - var_s0 = 0; - if (gPlayerCount > 0) { - var_s2 = gGPCurrentRaceRankByPlayerId; - var_s1 = 0; - do { - temp_v0 = gGPCurrentRaceRankByPlayerId[arg0]; - 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; - } - var_s0 += 1; - var_s1 += 4; - var_s2 += 4; - } while (var_s0 < gPlayerCount); + if (D_801633C8[playerId] >= 0x65) { + for (var_s0 = 0; var_s0 < gPlayerCount; var_s0++) { + if ((gGPCurrentRaceRankByPlayerId[playerId] < gGPCurrentRaceRankByPlayerId[var_s0]) && + (gGPCurrentRaceRankByPlayerId[playerId] == D_801643E0[var_s0]) && + (gGPCurrentRaceRankByPlayerId[var_s0] == D_801643E0[playerId])) { + func_800C92CC(playerId, 0x2900800DU); + D_801633C8[playerId] = 0; + } } } - if (*temp_s7 < 0x3E8) { - *temp_s7 += 1; + if (D_801633C8[playerId] < 0x3E8) { + D_801633C8[playerId]++; } - temp_v0_2 = sp40 + &D_80163398; - temp_v1_2 = *temp_v0_2; - if (temp_v1_2 < 0xC8) { - *temp_v0_2 = temp_v1_2 + 1; + if (D_80163398[playerId] < 0xC8) { + D_80163398[playerId]++; } - temp_v0_3 = sp40 + &D_801633B0; - temp_v1_3 = *temp_v0_3; - if (temp_v1_3 < 0xC8) { - *temp_v0_3 = temp_v1_3 + 1; + if (D_801633B0[playerId] < 0xC8) { + D_801633B0[playerId]++; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_800099EC.s") -#endif #ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 -? func_80008424(s32, ?32, Player *); /* extern */ +//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-28-2023 +? func_80008424(s32, f32, 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 ? D_80162FF8; -extern ? D_80163028; -extern ? D_80163050; -extern ? D_80163090; -extern ? D_801630B8; extern u16 D_801630E0; extern s16 D_801630E2; -extern ? D_801630E8; -extern ? D_80163100; -extern ? D_80163178; -extern ? D_801631A0; -extern ? D_801631F8; -extern ?32 D_8016320C; -extern ? D_80163210; +extern f32 D_8016320C; extern ? D_80163240; extern ? D_80163300; -extern ? D_80163330; -extern ? D_8016334C; -extern s32 D_80163378; extern ? D_801633E0; -extern ? D_80163418; -extern ? D_80163438; extern s16 D_8016344A; extern ? D_801634FC; extern ? D_80163504; -s16 gCurrentCourseId; /* unable to generate initializer */ static s16 D_800DCA20[0]; /* unable to generate initializer */ f32 D_800DCA4C[0x15] = { 50.0f, @@ -1820,13 +1672,11 @@ f32 D_800DCA4C[0x15] = { -1.0f, 40.0f, }; -static ?32 D_800ECFB4 = 0x41055555; /* const */ -static ?32 D_800ECFC8 = 0x40555555; /* const */ void func_80009B60(s32 playerId) { s16 sp94; Player *sp40; - ?32 *sp3C; + f32 *sp3C; s32 sp38; s32 sp34; /* compiler-managed */ s32 sp30; /* compiler-managed */ @@ -1835,10 +1685,6 @@ void func_80009B60(s32 playerId) { u16 *sp24; u16 *sp20; f32 *sp1C; - ?32 *var_t0; - ?32 *var_t0_2; - ?32 *var_v0_2; - ?32 *var_v1_3; Player *temp_v1; Test *temp_v1_2; Test *temp_v1_3; @@ -1847,6 +1693,10 @@ void func_80009B60(s32 playerId) { f32 *temp_v0_9; f32 *temp_v1_5; f32 *temp_v1_7; + f32 *var_t0; + f32 *var_t0_2; + f32 *var_v0_2; + f32 *var_v1_3; f32 temp_f0; f32 temp_f0_2; f32 temp_f0_3; @@ -1875,13 +1725,12 @@ void func_80009B60(s32 playerId) { s32 *temp_v0; s32 temp_a1_2; s32 temp_a2; - s32 temp_a3; s32 temp_f10; s32 temp_f6; s32 temp_t5; s32 temp_t6; u16 *temp_a1; - u16 *temp_a3_2; + u16 *temp_a3; u16 *temp_t0; u16 *temp_t0_2; u16 *temp_t6_2; @@ -1892,8 +1741,7 @@ void func_80009B60(s32 playerId) { u32 temp_v0_4; void *temp_v0_8; - temp_a3 = playerId * 4; - temp_v0 = temp_a3 + &D_80163100; + temp_v0 = &D_80163100[playerId]; if ((s32) D_800DCA4C[gCurrentCourseId] >= 0) { *temp_v0 += 1; if (playerId == 0) { @@ -1930,7 +1778,7 @@ void func_80009B60(s32 playerId) { temp_a0 = gPathIndexByPlayerId[playerId]; sp40 = temp_v1; sp34 = temp_a2; - sp38 = temp_a3; + sp38 = playerId * 4; D_80163448 = (s32) temp_a0; func_80008DC0((s32) temp_a0); switch (gCurrentCourseId) { /* irregular */ @@ -1967,7 +1815,7 @@ void func_80009B60(s32 playerId) { if ((D_80163378 & 1) != temp_t5) { func_8001AC10(playerId); } - func_800099EC(playerId, sp40); + func_800099EC(playerId, (s32) sp40); D_80162FD0 = 0; switch (gModeSelection) { /* switch 1; irregular */ case 1: /* switch 1 */ @@ -1996,18 +1844,18 @@ void func_80009B60(s32 playerId) { temp_t6_2 = sp34 + gNearestWaypointByPlayerId; sp24 = temp_t6_2; temp_a2_2 = sp38 + D_80164510; - temp_a3_2 = sp34 + &D_801631F8; + temp_a3 = sp34 + D_801631F8; *temp_a2_2 = (f32) D_80164550[D_80163448][*temp_t6_2].posY + 4.3f; - if ((*temp_a3_2 == 1) && (*temp_a1 == 0)) { + if ((*temp_a3 == 1) && (*temp_a1 == 0)) { sp2C = temp_a1; sp28 = temp_a2_2; - sp20 = temp_a3_2; + sp20 = temp_a3; func_8002E4C4(sp40); } if (*temp_a1 == 1) { sp40->pos[1] = *temp_a2_2; } - *temp_a3_2 = *temp_a1; + *temp_a3 = *temp_a1; if (gCurrentCourseId != 4) { if (gCurrentCourseId != 0x000A) { var_a0 = *temp_a1; @@ -2030,27 +1878,27 @@ block_63: *(&D_801634FC + (playerId * 0x10)) = 0.0f; } if (var_a0 == 1) { - *(&D_801630E8 + sp34) = 0; + *(D_801630E8 + sp34) = 0; sp40->effects &= ~0x10; if ((D_80163378 & 1) != sp30) { func_8003680C(sp40, 0); - func_80008424(playerId, *(&D_80163210 + sp38), sp40); + func_80008424(playerId, *(D_80163210 + sp38), sp40); return; } - if ((gPlayerCount > 0) && (gPlayerCount < 3) && (*(&D_80163330 + sp34) == 1) && ((s32) *(&D_8016334C + sp34) < *(gGPCurrentRaceRankByPlayerId + sp38))) { - var_t0 = sp38 + &D_80163210; - *var_t0 = 0x41055555; + if ((gPlayerCount > 0) && (gPlayerCount < 3) && (*(D_80163330 + sp34) == 1) && ((s32) *(D_8016334C + sp34) < *(gGPCurrentRaceRankByPlayerId + sp38))) { + var_t0 = sp38 + D_80163210; + *var_t0 = 8.333333f; } else if (D_80162FD0 == (s16) 1U) { temp_v1_3 = &D_801634F8[playerId]; sp30 = temp_v1_3; - var_t0 = sp38 + &D_80163210; + var_t0 = sp38 + D_80163210; *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 = sp38 + D_80163210; *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009418); } else { - var_t0 = sp38 + &D_80163210; + var_t0 = sp38 + D_80163210; *var_t0 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009568); } sp3C = var_t0; @@ -2066,9 +1914,9 @@ block_63: if (D_80163448 == 0) { sp3C = var_t0_2; func_8000B140(playerId); - if (*(&D_80162FF8 + sp34) > 0) { + 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); + func_8000BBD8(((s32) ((D_801630E0 + 5) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, *(D_80163090 + sp38), D_8016344A); } } sp3C = var_t0_2; @@ -2082,7 +1930,7 @@ block_63: func_80008424(playerId, *var_t0_2, sp40); return; } - temp_t8 = sp34 + &D_801630E8; + temp_t8 = sp34 + D_801630E8; sp2C = temp_t8; var_v0 = *temp_t8; if ((var_v0 == (s16) 1U) || (var_v0 == -1)) { @@ -2131,12 +1979,12 @@ block_63: } } if ((D_80163378 & 1) != sp30) { - func_8003680C(sp40, *(&D_80163050 + sp34)); - func_80008424(playerId, *(&D_80163210 + sp38), sp40); + func_8003680C(sp40, *(D_80163050 + sp34)); + func_80008424(playerId, *(D_80163210 + sp38), sp40); return; } sp1C = sp40->pos; - temp_v1_5 = sp38 + &D_801630B8; + temp_v1_5 = sp38 + D_801630B8; *temp_v1_5 = func_8000B7E4(playerId, (u16) D_80162FCE); sp28 = temp_v1_5; func_8000D438(playerId, (u16) D_80162FCE); @@ -2156,14 +2004,14 @@ block_63: temp_v1_6->unk0 = *temp_t0; } } - if ((D_80162FD0 == 1) && (*(&D_80162FF8 + sp34) == 0)) { + if ((D_80162FD0 == 1) && (*(D_80162FF8 + sp34) == 0)) { func_8000BBD8(((s32) ((D_801630E0 + 7) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, -0.7f, D_8016344A); } if (D_80163448 == 0) { - sp3C = sp34 + &D_80162FF8; + sp3C = sp34 + D_80162FF8; func_8000B140(playerId); if (*sp3C > 0) { - func_8000BBD8(((s32) ((D_801630E0 + 5) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, *(&D_80163090 + sp38), D_8016344A); + func_8000BBD8(((s32) ((D_801630E0 + 5) & 0xFFFF) % (s32) D_80164430) & 0xFFFF, *(D_80163090 + sp38), D_8016344A); } } } @@ -2172,8 +2020,8 @@ block_63: 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_8 = (((s32) (*sp24 + 0xA) % (s32) *(gWaypointCountByPathIndex + sp34)) * 8) + *(D_80164550 + sp38); @@ -2182,8 +2030,8 @@ block_63: break; } } - temp_v0_9 = sp38 + &D_80163178; - temp_v1_7 = sp38 + &D_801631A0; + temp_v0_9 = sp38 + D_80163178; + temp_v1_7 = sp38 + D_801631A0; 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; @@ -2233,19 +2081,19 @@ block_63: if (temp_v0_12 != -1) { var_a1_2 = 0x0035; if (temp_v0_12 != 1) { - var_v0_2 = sp34 + &D_80163050; + 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 { - var_v0_2 = sp34 + &D_80163050; + var_v0_2 = sp34 + D_80163050; } } else { - var_v0_2 = sp34 + &D_80163050; + var_v0_2 = sp34 + D_80163050; } } else if (temp_v0_11 & 0x1000000C) { var_a1_2 = 0; - var_v0_2 = sp34 + &D_80163050; + var_v0_2 = sp34 + D_80163050; } else { - var_v0_2 = sp34 + &D_80163050; + 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); } sp3C = var_v0_2; @@ -2255,11 +2103,11 @@ block_63: *var_v0_2 = var_a1_2; 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 = sp38 + D_80163028; *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 = sp38 + D_80163028; *var_v1_3 = *segmented_to_virtual_dupe_2((gCurrentCourseId * 0x10) + (gCCSelection * 4) + D_0D009568); } temp_f0_5 = *temp_t0_2; @@ -2273,11 +2121,11 @@ block_63: } temp_v0_14 = (s16) *sp2C; if ((temp_v0_14 == 2) || (temp_v0_14 == -2) || (temp_v0_14 == 3)) { - *var_v1_3 = 0x40555555; + *var_v1_3 = 3.3333333f; } D_8016320C = *var_v1_3; sp40->effects &= 0xFFDFFFFF; - *(&D_80163210 + sp38) = D_8016320C; + *(D_80163210 + sp38) = D_8016320C; func_800131DC(playerId); func_80008424(playerId, D_8016320C, sp40); } @@ -2288,206 +2136,106 @@ block_63: GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80009B60.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 -extern ? D_80162FF8; -extern ? D_80163010; -extern ? D_80163090; -extern ? D_801630E8; - +#ifdef NON_MATCHING +// Lots of work left to do, might be funtionally accurate? void func_8000B140(s32 playerId) { - s32 spFC; - s32 spF0; - s16 spE6; - s16 spE4; - f32 spDC; - ? spC0; - s16 sp9C; - f32 sp60; - s32 sp5C; - s32 sp58; - f32 *sp54; - s16 *sp4C; - Player *temp_v0_4; - Player *temp_v1; - f32 *temp_a0; - f32 *temp_t8; - f32 temp_f0; + f32 stackPadding0; + f32 stackPadding1; + f32 stackPadding2; + f32 stackPadding3; + f32 stackPadding4; + f32 stackPadding5; + f32 stackPadding6; + f32 stackPadding7; f32 temp_f0_2; - f32 temp_f0_3; - f32 temp_f0_4; - f32 temp_f0_5; f32 temp_f12; - f32 temp_f12_2; - f32 temp_f12_3; f32 temp_f14; - 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; - f32 temp_f2_4; f32 var_f18; f32 var_f20; - s16 *temp_a2; - s16 *temp_t8_2; - s16 *temp_v0_6; - s16 *var_a1; - s16 *var_a1_2; - s16 *var_v0; - s16 temp_a1_2; - s16 temp_t4; - s16 temp_t9; - s16 temp_v0; - s16 temp_v0_3; + s16 spB0[8]; + f32 stackPadding8; + s16 sp9C[8]; + f32 stackPadding9; + f32 sp74[8]; + s32 temp_a1_2; s16 temp_v1_2; s16 var_t1; - s32 temp_t5; - s32 temp_v0_5; - s32 var_t0; - s32 var_t0_2; s32 var_t2; - s32 var_v0_2; - u16 temp_v0_2; - u32 temp_a1; + s32 someIndex; + Player *player; - temp_v1 = &gPlayers[playerId]; - temp_a1 = temp_v1->effects; - 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; - var_a1->unk-2 = -1; - var_v0->unk-2 = 0x03E8; - } while ((u32) var_v0 < (u32) &spC0); - temp_t8_2 = sp5C + &D_80163010; - sp4C = temp_t8_2; - temp_v0_3 = *temp_t8_2; - temp_t9 = temp_v0_3 - 1; - if (temp_v0_3 > 0) { - *temp_t8_2 = temp_t9; - if (temp_t9 <= 0) { - *(&D_80162FF8 + sp5C) = 0; + player = &gPlayers[playerId]; + if (!(player->effects & 0x10) && + (D_801630E8[playerId] != 1) && + (D_801630E8[playerId] != -1) && + !(D_80163068[playerId] < -1.0f) && + !(D_80163068[playerId] > 1.0f) && + (player->characterId != 5) && + (player->characterId != 7) && + (player->characterId != 4) && + !(player->effects & 0x200)) { + var_t1 = gNearestWaypointByPlayerId[playerId]; + temp_f22 = (player->unk_094 / 18.0f) * 216.0f; + for (someIndex = 0; someIndex < 8; someIndex++) { + sp9C[someIndex] = -1; + spB0[someIndex] = 0x03E8; + } + if (D_80163010[playerId] > 0) { + D_80163010[playerId]--; + if (D_80163010[playerId] <= 0) { + D_80162FF8[playerId] = 0; } } - var_t0 = 0; -loop_15: - if (var_t0 != playerId) { - temp_v0_4 = &gPlayers[var_t0]; - 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) { - spE4 = temp_v1_2; - spFC = var_t0; - spE6 = var_t1; - spF0 = var_t2; - spDC = temp_f0_2; - sp60 = temp_f2; - temp_v0_5 = func_80007BF8(temp_v1_2 & 0xFFFF, var_t1 & 0xFFFF, 0U, 0x0014U, (u16) (s32) D_80164430); - if (temp_v0_5 > 0) { - temp_a1_2 = temp_v1_2 - var_t1; - (sp + (var_t2 * 2))->unk9C = (s16) var_t0; - temp_a0 = &(&sp74[0])[var_t2]; - temp_a2 = &(&spB0[0])[var_t2]; - if (temp_a1_2 > 0) { - *temp_a2 = temp_a1_2; - } else { - *temp_a2 = (temp_v1_2 + D_80164430) - var_t1; - } - var_t2 += 1; - *temp_a0 = temp_f2 - temp_f0_2; + var_t2 = 0; + for (someIndex = 0; (var_t2 < 2) && (someIndex < 8); someIndex++) { + if (someIndex == playerId) continue; + player = &gPlayers[someIndex]; + if (!(player->type & 0x8000)) continue; + temp_f2 = (temp_f22) - 5.0f; + temp_v1_2 = gNearestWaypointByPlayerId[someIndex]; + temp_f0_2 = (player->unk_094 / 18.0f) * 216.0f; + if (temp_f0_2 < temp_f2) { + if (func_80007BF8(temp_v1_2, var_t1, 0U, 0x0014U, D_80164430) > 0) { + temp_a1_2 = temp_v1_2 - var_t1; + sp9C[var_t2] = someIndex; + if (temp_a1_2 > 0) { + spB0[var_t2] = temp_a1_2; + } else { + spB0[var_t2] = (temp_v1_2 + D_80164430) - var_t1; } + sp74[var_t2] = temp_f2 - temp_f0_2; + var_t2 += 1; } } } - var_t0 += 1; - if ((var_t2 < 2) && (var_t0 < 8)) { - goto loop_15; - } - var_t0_2 = 0; if (var_t2 != 0) { var_f18 = 1.0f; var_f20 = -1.0f; - if (var_t2 > 0) { - 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; - if ((1.0f == 1.0f) && (-1.0f == -1.0f)) { - var_f18 = temp_f2_2 - temp_f12; - var_f20 = temp_f2_2 + temp_f12; - } else { - temp_f14 = temp_f2_2 - temp_f12; - temp_f16 = temp_f2_2 + temp_f12; - if ((temp_f14 < 1.0f) && ((temp_f2_2 + temp_f12) > 1.0f)) { - var_f18 = temp_f14; - } - if ((temp_f16 > -1.0f) && (temp_f14 < -1.0f)) { - var_f20 = temp_f16; - } + for (someIndex = 0; someIndex < var_t2; someIndex++) { + temp_f2 = D_80163068[sp9C[someIndex]]; + if ((temp_f2 > -1.0f) && (temp_f2 < 1.0f)) { + temp_f12 = sp74[someIndex] + 10.0f; + temp_f12 *= 0.2f * (20.0f / (spB0[someIndex] + 20.0f)); + temp_f12 /= 20.0f; + if ((var_f18 == 1.0f) && (var_f20 == -1.0f)) { + var_f18 = temp_f2 - temp_f12; + var_f20 = temp_f2 + temp_f12; + } else { + temp_f14 = temp_f2 - temp_f12; + temp_f16 = temp_f2 + temp_f12; + if ((temp_f14 < 1.0f) && (temp_f16 > 1.0f)) { + var_f18 = temp_f14; + } + if ((temp_f16 > -1.0f) && (temp_f14 < -1.0f)) { + var_f20 = temp_f16; } } - if (var_t2 != 1) { - goto block_40; - } - } else { -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 * 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)) { - var_f18 = temp_f2_3 - temp_f0_3; - var_f20 = temp_f2_3 + temp_f0_3; - } else { - temp_f12_2 = temp_f2_3 - temp_f0_3; - temp_f14_2 = temp_f2_3 + temp_f0_3; - if ((temp_f12_2 < var_f18) && (var_f18 < (temp_f2_3 + temp_f0_3))) { - var_f18 = temp_f12_2; - } - if ((var_f20 < temp_f14_2) && (temp_f12_2 < var_f20)) { - var_f20 = temp_f14_2; - } - } - } - temp_t4 = var_a1_2->unk2; - var_a1_2 += 4; - 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)) { - var_f18 = temp_f0_4 - temp_f2_4; - var_f20 = temp_f0_4 + temp_f2_4; - } else { - temp_f12_3 = temp_f0_4 - temp_f2_4; - temp_f14_3 = temp_f0_4 + temp_f2_4; - if ((temp_f12_3 < var_f18) && (var_f18 < (temp_f0_4 + temp_f2_4))) { - var_f18 = temp_f12_3; - } - if ((var_f20 < temp_f14_3) && (temp_f12_3 < var_f20)) { - var_f20 = temp_f14_3; - } - } - } - var_t0_2 += 2; - var_v0_2 += 4; - } while (var_t0_2 != var_t2); } } - if (!(var_f20 < var_f18) && (temp_f0_5 = *sp54, !(temp_f0_5 < var_f18)) && !(var_f20 < temp_f0_5)) { - temp_v0_6 = sp5C + &D_80162FF8; + if (!(var_f20 < var_f18) && !(D_80163068[playerId] < var_f18) && !(var_f20 < D_80163068[playerId])) { if (var_f20 > 1.0f) { var_f20 = 1.0f; } @@ -2495,14 +2243,14 @@ block_40: var_f18 = -1.0f; } if ((var_f18 + 1.0f) < (1.0f - var_f20)) { - *sp4C = 0x003C; - *temp_v0_6 = 1; - *(&D_80163090 + sp58) = var_f20; - return; + D_80163010[playerId] = 0x003C; + D_80162FF8[playerId] = 1; + D_80163090[playerId] = var_f20; + } else { + D_80163010[playerId] = 0x003C; + D_80162FF8[playerId] = 2; + D_80163090[playerId] = var_f18; } - *sp4C = 0x003C; - *temp_v0_6 = 2; - *(&D_80163090 + sp58) = var_f18; } } } @@ -3111,12 +2859,8 @@ f32 func_8000D3B8(s32 playerId) { } #ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-09-2023 -? func_8000BBD8(s32, f32, s16, u16); /* extern */ -extern ? D_80162FA0; -extern ? D_80163380; +//generated by m2c commit beb457dabfc7a01ec6540a5404a6a05097a13602 on Nov-26-2023 extern s16 D_8016344A; -s16 gCurrentCourseId; /* unable to generate initializer */ void func_8000D438(s32 arg0, u16 arg1) { f32 sp48; @@ -3133,7 +2877,6 @@ void func_8000D438(s32 arg0, u16 arg1) { s32 var_a2; s32 var_a2_2; u16 temp_a3; - u16 temp_a3_2; temp_a3 = arg1 & 0xFFFF; temp_v1 = D_801645E0[temp_a3]; @@ -3167,11 +2910,10 @@ void func_8000D438(s32 arg0, u16 arg1) { } sp28 = var_a2; 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_v1_2 = &D_80163380[arg0]; temp_v0 = *temp_v1_2; if (temp_v0 < var_a2_2) { *temp_v1_2 = temp_v0 + 1; @@ -3179,14 +2921,14 @@ void func_8000D438(s32 arg0, u16 arg1) { if (var_a2_2 < *temp_v1_2) { *temp_v1_2 -= 1; } - temp_hi = (s32) (*temp_v1_2 + temp_a3_2) % (s32) D_80164430; + temp_hi = (s32) (*temp_v1_2 + arg1) % (s32) D_80164430; arg1 = (u16) temp_hi; - 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); - D_80162FA0.unk0 = (f32) ((sp48 + D_80162FA0.unk0) * 0.5f); - D_80162FA0.unk8 = (f32) ((sp44 + D_80162FA0.unk8) * 0.5f); + func_8000BBD8(temp_hi & 0xFFFF, sp2C, D_8016344A); + sp48 = D_80162FA0->unk0; + sp44 = D_80162FA0->unk8; + func_8000BBD8(((s32) (arg1 + 1) % (s32) D_80164430) & 0xFFFF, sp2C, D_8016344A); + D_80162FA0->unk0 = (sp48 + D_80162FA0->unk0) * 0.5f; + D_80162FA0->unk8 = (f32) ((sp44 + D_80162FA0->unk8) * 0.5f); } #else GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_8000D438.s") @@ -3198,7 +2940,9 @@ s16 func_8000D6D0(Vec3f arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIn UNUSED s32 pad[4]; s16 waypoint2; s16 waypoint1; - UNUSED s32 pad2[4]; + UNUSED s32 pad2[2]; + f32 pad3; + f32 pad4; f32 distance; f32 temp_f20; f32 temp_f22; @@ -3227,11 +2971,14 @@ s16 func_8000D6D0(Vec3f arg0, s16 *waypointIndex, f32 arg2, f32 arg3, s16 pathIn waypoint1 = temp_v1 % gWaypointCountByPathIndex[pathIndex]; waypoint2 = (temp_v1 + 1) % gWaypointCountByPathIndex[pathIndex]; func_8000BBD8(waypoint1, arg3, pathIndex); + pad3 = D_80162FA0[0]; + pad4 = D_80162FA0[2]; 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; + xdiff = ((pad3 + D_80162FA0[0]) * 0.5f) - temp_f20; + zdiff = ((pad4 + D_80162FA0[2]) * 0.5f) - temp_f24; distance = sqrtf((xdiff * xdiff) + (ydiff * ydiff) + (zdiff * zdiff)); + if (distance && distance) {} if (distance > 0.01f) { var_f2 = ((xdiff * arg2) / distance) + temp_f20; var_f12 = ((ydiff * arg2) / distance) + temp_f22; @@ -3437,340 +3184,274 @@ void set_bomb_kart_spawn_positions(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-17-2023 -extern f32 D_80162FB0; -extern f32 D_80162FC0; -extern s16 D_8016347C; -extern s16 D_8016347E; -extern Collision D_80164038; -extern u16 D_8016443E; -extern s32 D_8016455C; -extern u16 D_801645CE; -s16 gCurrentCourseId; /* unable to generate initializer */ - -void func_8000DF8C(s32 arg0) { +#ifdef NON_MATCHING +// https://decomp.me/scratch/H61yp +// Really really close, functinally matching as it stands +// There's an ordering issue concerning the handling of `sp7E` at the top of the function. +// Removing the first `if(1)` fakematch fixes the misordering but introduces other, large mismatches +void func_8000DF8C(s32 bombKartId) { + s32 stackPadding0; f32 sp118; - f32 sp114; - TrackWaypoint *sp110; + f32 var_f18; + TrackWaypoint *temp_v0_2; + f32 temp_f0_3; f32 sp108; - f32 spF8; - f32 spF0; - u16 spCA; /* compiler-managed */ + s32 stackPadding1; + s32 stackPadding2; + s32 stackPadding3; + f32 temp_f14; + s32 stackPadding4; + f32 temp_f16; + s32 stackPadding5; + s32 stackPadding6; + s32 stackPadding7; + s32 stackPadding8; + s32 stackPadding9; + s32 stackPaddingA; + s32 stackPaddingB; + f32 temp_f0; + f32 temp_f0_4; + u16 spCA; f32 spC4; u16 spC2; - f32 spAC; - f32 spA0; - f32 sp94; - f32 sp88; - u16 sp7E; - u16 sp7C; - s32 sp4C; /* compiler-managed */ - s32 sp48; /* compiler-managed */ - s32 sp44; - Player *var_v0; - Collision *temp_a0_4; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_3; - f32 temp_f0_4; - f32 temp_f0_5; f32 temp_f12; - f32 temp_f12_2; f32 temp_f12_3; f32 temp_f12_4; - f32 temp_f12_5; - f32 temp_f14; f32 temp_f14_2; - f32 temp_f16; + f32 spAC; + s32 stackPaddingC; f32 temp_f16_2; - f32 temp_f18; + f32 spA0; f32 temp_f2; - f32 temp_f2_2; - f32 temp_f2_3; f32 temp_f2_4; - f32 temp_f2_5; - f32 var_f12; - f32 var_f18; + f32 sp94; + s32 stackPaddingD; f32 var_f20; + f32 sp88; f32 var_f22; f32 var_f24; - f32 var_f6; - f64 temp_f10; - f64 temp_f4; - f64 temp_f8; - s16 temp_v0_5; - s32 temp_a0; - s32 temp_a0_2; - s32 temp_a0_3; - s32 temp_at; - s32 temp_t2; - s32 temp_t2_2; - s32 temp_t6; - s32 temp_t7; - s32 temp_t7_2; - s32 temp_t9_2; - s32 var_a0; - s8 var_v1; - TrackWaypoint *temp_v0_2; - TrackWaypoint *temp_v0_4; - TrackWaypoint *temp_v0_7; - TrackWaypoint *temp_v1_2; - BombKart *temp_s0; - u16 temp_t4; - u16 temp_t9; - u16 temp_v0; - u16 temp_v0_3; + u16 sp7E; + u16 sp7C; + u16 sp4C; + u16 temp_t6; + u16 temp_t7; u16 var_s1; - void *temp_v0_6; - void *temp_v1; + s32 var_a0; + s32 stackPaddingE; + TrackWaypoint *temp_v0_4; + BombKart *bombKart; + BombKart *bombKart2; + Collision *temp_a0_4; + Player *var_v0; - temp_s0 = &gBombKarts[arg0]; - temp_t9 = (u16) temp_s0->state; - temp_t2 = temp_t9 & 0xFFFF; - sp4C = temp_t2; - sp7E = temp_t9; - if ((temp_t2 != 0) && (((u16) temp_s0->unk_4A != 1) || (gCurrentCourseId == COURSE_AWARD_CEREMONY))) { - var_f22 = temp_s0->bombPos[0]; - var_f20 = temp_s0->bombPos[1]; - var_f24 = temp_s0->bombPos[2]; - spCA = (u16) temp_s0->waypointIndex; - spC4 = temp_s0->unk_3C; - spC2 = (u16) temp_s0->someRot; - sp7C = (u16) temp_s0->bounceTimer; - var_s1 = (u16) temp_s0->circleTimer; - if ((sp4C != 0) && (sp4C != 4)) { - if (gCurrentCourseId == 0x0014) { - if (D_8016347E == (s16) 1U) { - temp_f0 = var_f22 - gPlayerFour->pos[0]; - temp_f2 = var_f20 - gPlayerFour->pos[1]; - temp_f12 = var_f24 - gPlayerFour->pos[2]; + bombKart = &gBombKarts[bombKartId]; + if (1) {} + sp7E = bombKart->state; + if ((sp7E != 0) && ((bombKart->unk_4A != 1) || (gCurrentCourseId == COURSE_AWARD_CEREMONY))) { + var_f22 = bombKart->bombPos[0]; + var_f20 = bombKart->bombPos[1]; + var_f24 = bombKart->bombPos[2]; + spCA = bombKart->waypointIndex; + spC4 = bombKart->unk_3C; + spC2 = bombKart->someRot; + sp7C = bombKart->bounceTimer; + var_s1 = bombKart->circleTimer; + if ((sp7E != 0) && (sp7E != 4)) { + if (1) {} + if (gCurrentCourseId == COURSE_AWARD_CEREMONY) { + if (D_8016347E == 1) { + var_v0 = gPlayerFour; + temp_f0 = var_f22 - var_v0->pos[0]; + temp_f2 = var_f20 - var_v0->pos[1]; + temp_f12 = var_f24 - var_v0->pos[2]; if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f12 * temp_f12)) < 25.0f) { - sp7E = 4; - gPlayerFour->statusEffects |= REVERSE_EFFECT; - gPlayerFour->type &= ~0x2000; var_s1 = 0; - sp4C = 4; + sp7E = 4; + var_v0->statusEffects |= 0x400000; + var_v0->type &= ~0x2000; } } } else { - var_v1 = gPlayerCount; - var_a0 = 0; - if (var_v1 > 0) { - var_v0 = gPlayers; - do { - var_a0 += 1; - if (!(var_v0->effects & 0x80000000)) { - temp_f0_2 = var_f22 - var_v0->pos[0]; - temp_f2_2 = var_f20 - var_v0->pos[1]; - temp_f12_2 = var_f24 - var_v0->pos[2]; - if (((temp_f0_2 * temp_f0_2) + (temp_f2_2 * temp_f2_2) + (temp_f12_2 * temp_f12_2)) < 25.0f) { - sp7E = 4; - var_s1 = 0; - if (gCurrentCourseId == 5) { - var_v0->statusEffects |= HIT_BY_ITEM_EFFECT; - } else { - var_v0->statusEffects |= REVERSE_EFFECT; - } - var_v1 = gPlayerCount; + for (var_a0 = 0; var_a0 < gPlayerCount; var_a0++) { + var_v0 = &gPlayers[var_a0]; + if (!(var_v0->effects & 0x80000000)) { + temp_f0 = var_f22 - var_v0->pos[0]; + temp_f2 = var_f20 - var_v0->pos[1]; + temp_f12 = var_f24 - var_v0->pos[2]; + if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2) + (temp_f12 * temp_f12)) < 25.0f) { + sp7E = 4; + var_s1 = 0; + if (gCurrentCourseId == COURSE_FRAPPE_SNOWLAND) { + var_v0->statusEffects |= 0x01000000; + } else { + var_v0->statusEffects |= 0x400000; } } - var_v0 += 0xDD8; - } while (var_a0 < var_v1); - sp4C = (s32) sp7E; + } } } } - switch (sp4C) { + switch (sp7E) { case 1: - temp_t4 = ((s32) (var_s1 + 0x164) % 360) & 0xFFFF; - temp_t6 = ((s32) (temp_t4 * 0xFFFF) / 360) & 0xFFFF; - temp_v0 = temp_t4; - var_s1 = temp_t4; - sp48 = (s32) temp_v0; - sp44 = temp_t6; - sp118 = (f32) ((f64) coss((u16) temp_t6) * 25.0); - temp_f0_3 = sins((u16) sp44); - temp_v0_2 = &(*D_80164550)[spCA]; - var_f20 = temp_s0->yPos + 3.5f; - temp_t7 = ((s32) (((s32) (sp48 + 1) % 360) * 0xFFFF) / 360) & 0xFFFF; - var_f22 = (f32) temp_v0_2->posX + sp118; - D_80162FB0.unk4 = var_f20; - D_80162FB0.unk0 = var_f22; - sp44 = temp_t7; - sp110 = temp_v0_2; - var_f24 = (f32) temp_v0_2->posZ + (f32) ((f64) temp_f0_3 * 25.0); - D_80162FB0.unk8 = var_f24; - sp118 = (f32) ((f64) coss((u16) temp_t7) * 25.0); - temp_f10 = (f64) sins((u16) sp44); - D_80162FC0.unk0 = (f32) temp_v0_2->posX + sp118; - D_80162FC0.unk4 = (f32) temp_v0_2->posY; - D_80162FC0.unk8 = (f32) ((f32) temp_v0_2->posZ + (f32) (temp_f10 * 25.0)); - spC2 = (u16) ((s32) (get_angle_between_points(&D_80162FB0, &D_80162FC0) * 0xFFFF) / 65520); + var_s1 = ((var_s1 + 356) % 360); + temp_t6 = ((var_s1 * 0xFFFF) / 360); + sp118 = coss(temp_t6) * 25.0; + temp_f0_3 = sins(temp_t6) * 25.0; + temp_v0_2 = &D_80164550[0][spCA]; + var_f22 = temp_v0_2->posX + sp118; + var_f20 = bombKart->yPos + 3.5f; + var_f24 = temp_v0_2->posZ + temp_f0_3; + D_80162FB0[0] = var_f22; + D_80162FB0[1] = var_f20; + D_80162FB0[2] = var_f24; + temp_t7 = ((((var_s1 + 1) % 360) * 0xFFFF) / 360); + sp118 = coss(temp_t7) * 25.0; + temp_f0_3 = sins(temp_t7) * 25.0; + D_80162FC0[0] = temp_v0_2->posX + sp118; + D_80162FC0[1] = temp_v0_2->posY; + D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; break; case 2: - temp_v0_3 = ((s32) (var_s1 + 4) % 360) & 0xFFFF; - temp_a0 = ((s32) (temp_v0_3 * 0xFFFF) / 360) & 0xFFFF; - var_s1 = temp_v0_3; - sp44 = temp_a0; - sp48 = (s32) temp_v0_3; - sp118 = (f32) ((f64) coss((u16) temp_a0) * 25.0); - temp_v0_4 = &(*D_80164550)[spCA]; - var_f22 = (f32) temp_v0_4->posX + sp118; - var_f20 = temp_s0->yPos + 3.5f; - temp_f4 = (f64) sins((u16) temp_a0) * 25.0; - temp_a0_2 = ((s32) (((s32) (sp48 + 1) % 360) * 0xFFFF) / 360) & 0xFFFF; - D_80162FB0.unk0 = var_f22; - D_80162FB0.unk4 = var_f20; - sp44 = temp_a0_2; - sp110 = temp_v0_4; - var_f24 = (f32) temp_v0_4->posZ + (f32) temp_f4; - D_80162FB0.unk8 = var_f24; - sp118 = (f32) ((f64) coss((u16) temp_a0_2) * 25.0); - temp_f8 = (f64) sins((u16) temp_a0_2); - D_80162FC0.unk0 = (f32) temp_v0_4->posX + sp118; - D_80162FC0.unk4 = (f32) temp_v0_4->posY; - D_80162FC0.unk8 = (f32) ((f32) temp_v0_4->posZ + (f32) (temp_f8 * 25.0)); - spC2 = (u16) ((s32) (get_angle_between_points(&D_80162FB0, &D_80162FC0) * 0xFFFF) / 65520); - default: + var_s1 = ((var_s1 + 4) % 360); + temp_t6 = ((var_s1 * 0xFFFF) / 360); + sp118 = coss(temp_t6) * 25.0; + temp_f0_3 = sins(temp_t6) * 25.0; + temp_v0_2 = &D_80164550[0][spCA]; + var_f22 = temp_v0_2->posX + sp118; + var_f20 = bombKart->yPos + 3.5f; + var_f24 = temp_v0_2->posZ + temp_f0_3; + D_80162FB0[0] = var_f22; + D_80162FB0[1] = var_f20; + D_80162FB0[2] = var_f24; + temp_t7 = ((((var_s1 + 1) % 360) * 0xFFFF) / 360); + sp118 = coss(temp_t7) * 25.0; + temp_f0_3 = sins(temp_t7) * 25.0; + D_80162FC0[0] = temp_v0_2->posX + sp118; + D_80162FC0[1] = temp_v0_2->posY; + D_80162FC0[2] = temp_v0_2->posZ + temp_f0_3; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; break; case 3: + var_f20 = bombKart->yPos + 3.5f; spC2 = 0; - var_f20 = temp_s0->yPos + 3.5f; break; case 5: - if ((D_8016347C == 0) || ((s32) D_8016443E < 5)) { - + if ((D_8016347C == 0) || (gNearestWaypointByPlayerId[3] < 5)) { + // wtf? + break; } else { - temp_v0_5 = func_8000D2B4(var_f22, var_f20, var_f24, (s16) spCA, 3); - temp_a0_3 = temp_v0_5 & 0xFFFF; - spCA = temp_v0_5; - if ((temp_a0_3 < 0) || ((s32) D_801645CE < temp_a0_3)) { + spCA = func_8000D2B4(var_f22, var_f20, var_f24, spCA, 3); + if ((spCA < 0) || (gWaypointCountByPathIndex[3] < spCA)) { spCA = 0; } if ((s32) spCA < 0x1A) { - temp_v0_6 = (((s32) (spCA + 1) % (s32) D_801645CE) * 8) + D_8016455C; - D_80162FB0.unk0 = (f32) temp_v0_6->unk0; - temp_v1 = (((s32) (spCA + 2) % (s32) D_801645CE) * 8) + D_8016455C; - D_80162FB0.unk4 = (f32) temp_v0_6->unk2; - D_80162FB0.unk8 = (f32) temp_v0_6->unk4; - D_80162FC0.unk0 = (f32) temp_v1->unk0; - D_80162FC0.unk4 = (f32) temp_v1->unk2; - D_80162FC0.unk8 = (f32) temp_v1->unk4; - spC2 = (u16) ((s32) (get_angle_between_points(&D_80162FB0, &D_80162FC0) * 0xFFFF) / 65520); + temp_v0_2 = &D_80164550[3][(spCA + 1) % gWaypointCountByPathIndex[3]]; + D_80162FB0[0] = temp_v0_2->posX; + D_80162FB0[1] = temp_v0_2->posY; + D_80162FB0[2] = temp_v0_2->posZ; + temp_v0_4 = &D_80164550[3][(spCA + 2) % gWaypointCountByPathIndex[3]]; + D_80162FC0[0] = temp_v0_4->posX; + D_80162FC0[1] = temp_v0_4->posY; + D_80162FC0[2] = temp_v0_4->posZ; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; } else { - D_80162FB0.unk0 = var_f22; - D_80162FB0.unk4 = var_f20; - D_80162FB0.unk8 = var_f24; - D_80162FC0.unk0 = -2409.197f; - D_80162FC0.unk4 = 0.0f; - D_80162FC0.unk8 = -355.254f; - spC2 = (u16) ((s32) (get_angle_between_points(&D_80162FB0, &D_80162FC0) * 0xFFFF) / 65520); + D_80162FB0[0] = var_f22; + D_80162FB0[1] = var_f20; + D_80162FB0[2] = var_f24; + D_80162FC0[0] = -2409.197f; + D_80162FC0[1] = 0.0f; + D_80162FC0[2] = -355.254f; + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; } - temp_f14 = ((D_80162FC0.unk0 + D_80162FB0.unk0) * 0.5f) - var_f22; - spF8 = temp_f14; - temp_f16 = ((D_80162FC0.unk8 + D_80162FB0.unk8) * 0.5f) - var_f24; - spF0 = temp_f16; + temp_f14 = ((D_80162FB0[0] + D_80162FC0[0]) * 0.5f) - var_f22; + temp_f16 = ((D_80162FB0[2] + D_80162FC0[2]) * 0.5f) - var_f24; temp_f0_4 = sqrtf((temp_f14 * temp_f14) + (temp_f16 * temp_f16)); if (temp_f0_4 > 0.01f) { - temp_f2_3 = temp_s0->unk_3C; - var_f22 += (temp_f2_3 * temp_f14) / temp_f0_4; - var_f24 += (temp_f2_3 * temp_f16) / temp_f0_4; + var_f22 += (bombKart->unk_3C * temp_f14) / temp_f0_4; + var_f24 += (bombKart->unk_3C * temp_f16) / temp_f0_4; } else { var_f22 += temp_f14 / 5.0f; var_f24 += temp_f16 / 5.0f; } - temp_a0_4 = (arg0 << 6) + &D_80164038; - sp48 = temp_a0_4; + temp_a0_4 = &D_80164038[bombKartId]; var_f20 = func_802ABE30(var_f22, 2000.0f, var_f24, temp_a0_4->unk3A) + 3.5f; - if ((f64) var_f20 < -1000.0) { - var_f20 = temp_s0->bombPos[1]; + if (var_f20 < -1000.0) { + var_f20 = bombKart->bombPos[1]; } func_802ADDC8(temp_a0_4, 10.0f, var_f22, var_f20, var_f24); } break; case 4: - temp_v0_7 = &(*D_80164550)[spCA]; - D_80162FB0.unk0 = (f32) temp_v0_7->posX; - D_80162FB0.unk4 = (f32) temp_v0_7->posY; - D_80162FB0.unk8 = (f32) temp_v0_7->posZ; - temp_v1_2 = &(*D_80164550)[(s32) (spCA + 1) % (s32) *gWaypointCountByPathIndex]; - D_80162FC0.unk0 = (f32) temp_v1_2->posX; - D_80162FC0.unk4 = (f32) temp_v1_2->posY; - var_f6 = (f32) var_s1; - D_80162FC0.unk8 = (f32) temp_v1_2->posZ; - if ((s32) var_s1 < 0) { - var_f6 += 4294967296.0f; - } - var_f20 += 3.0f - (var_f6 * 0.3f); - spC2 = (u16) ((s32) (get_angle_between_points(&D_80162FB0, &D_80162FC0) * 0xFFFF) / 65520); + temp_v0_2 = &D_80164550[0][spCA]; + D_80162FB0[0] = temp_v0_2->posX; + D_80162FB0[1] = temp_v0_2->posY; + D_80162FB0[2] = temp_v0_2->posZ; + temp_v0_4 = &D_80164550[0][(spCA + 1) % gWaypointCountByPathIndex[0]]; + D_80162FC0[0] = temp_v0_4->posX; + D_80162FC0[1] = temp_v0_4->posY; + D_80162FC0[2] = temp_v0_4->posZ; + var_f20 += 3.0f - (var_s1 * 0.3f); + spC2 = (get_angle_between_points(D_80162FB0, D_80162FC0) * 0xFFFF) / 65520; + break; + default: break; } - if (sp4C == 4) { - var_f12 = (f32) var_s1; - if ((s32) var_s1 < 0) { - var_f12 += 4294967296.0f; - } - sp4C = var_f12; - temp_t7_2 = (0xFFFF - spC2) & 0xFFFF; - sp108 = 2.0f * var_f12; - sp48 = temp_t7_2; - sp118 = coss((u16) temp_t7_2) * var_f12; - temp_t9_2 = (var_s1 + 1) & 0xFFFF; - temp_at = temp_t9_2 < 0x1F; - var_f18 = sins((u16) sp48) * var_f12; - var_s1 = (u16) temp_t9_2; + if (sp7E == 4) { + sp108 = 2.0f * var_s1; + sp118 = coss(0xFFFF - spC2) * var_s1; + var_f18 = sins(0xFFFF - spC2) * var_s1; + var_s1++; temp_f2_4 = (var_f20 - 2.3f) + (sp108 / 3.0f); spAC = temp_f2_4; spA0 = temp_f2_4; sp94 = temp_f2_4; sp88 = temp_f2_4; - if (temp_at == 0) { + if (var_s1 >= 31) { sp7E = 0; } } else { - temp_t2_2 = (0xFFFF - spC2) & 0xFFFF; - sp48 = temp_t2_2; - sp118 = coss((u16) temp_t2_2) * 1.5f; - temp_f18 = sins((u16) sp48) * 1.5f; + sp118 = coss(0xFFFF - spC2) * 1.5f; + var_f18 = sins(0xFFFF - spC2) * 1.5f; temp_f16_2 = var_f20 - 2.3f; - temp_f12_3 = (f32) ((s32) sp7C % 3) * 0.15f; + temp_f12_3 = (sp7C % 3) * 0.15f; temp_f14_2 = temp_f16_2 - temp_f12_3; - sp114 = temp_f18; temp_f12_4 = temp_f16_2 + temp_f12_3; spAC = temp_f14_2; sp94 = temp_f14_2; spA0 = temp_f12_4; sp88 = temp_f12_4; - sp4C = (s32) sp7C; - var_f18 = temp_f18; - var_f20 += sins(((s32) (sp7C * 0x13FFEC) / 360) & 0xFFFF); - sp7C = (u16) ((s32) (sp7C + 1) % 18); + var_f20 += sins(((sp7C * 0x13FFEC) / 360)); + sp7C = (sp7C + 1) % 18; } - temp_f12_5 = -var_f18; - temp_f0_5 = var_f18 + sp118; - temp_s0->wheel1Pos[0] = (sp118 - var_f18) + var_f22; - temp_s0->wheel2Pos[0] = temp_f0_5 + var_f22; - temp_s0->wheel1Pos[1] = spAC; - temp_s0->wheel1Pos[2] = temp_f0_5 + var_f24; - temp_f2_5 = -sp118; - temp_s0->wheel2Pos[1] = spA0; - temp_s0->wheel2Pos[2] = (var_f18 - sp118) + var_f24; - temp_s0->wheel3Pos[0] = (temp_f2_5 - var_f18) + var_f22; - temp_s0->wheel3Pos[2] = temp_f12_5 + sp118 + var_f24; - temp_s0->wheel3Pos[1] = sp94; - temp_s0->wheel4Pos[0] = temp_f2_5 + var_f18 + var_f22; - temp_s0->bombPos[0] = var_f22; - temp_s0->wheel4Pos[2] = (temp_f12_5 - sp118) + var_f24; - temp_s0->bombPos[1] = var_f20; - temp_s0->bombPos[2] = var_f24; - temp_s0->wheel4Pos[1] = sp88; - temp_s0->waypointIndex = (s16) spCA; - temp_s0->unk_3C = spC4; - temp_s0->someRot = (s16) spC2; - temp_s0->state = (s16) sp7E; - temp_s0->circleTimer = (s16) var_s1; - temp_s0->bounceTimer = (s16) sp7C; + + bombKart2 = bombKart; + bombKart2->wheel1Pos[0] = (sp118 - var_f18) + var_f22; + bombKart2->wheel1Pos[1] = spAC; + bombKart2->wheel1Pos[2] = var_f18 + sp118 + var_f24; + + bombKart2->wheel2Pos[0] = var_f18 + sp118 + var_f22; + bombKart2->wheel2Pos[1] = spA0; + bombKart2->wheel2Pos[2] = (var_f18 - sp118) + var_f24; + + bombKart2->wheel3Pos[0] = (-sp118 - var_f18) + var_f22; + bombKart2->wheel3Pos[1] = sp94; + bombKart2->wheel3Pos[2] = -var_f18 + sp118 + var_f24; + + bombKart2->wheel4Pos[0] = -sp118 + var_f18 + var_f22; + bombKart2->wheel4Pos[1] = sp88; + bombKart2->wheel4Pos[2] = (-var_f18 - sp118) + var_f24; + + bombKart2->bombPos[0] = var_f22; + bombKart2->bombPos[1] = var_f20; + bombKart2->bombPos[2] = var_f24; + + bombKart2->waypointIndex = spCA; + bombKart2->unk_3C = spC4; + bombKart2->someRot = spC2; + bombKart2->state = sp7E; + bombKart2->bounceTimer = sp7C; + bombKart2->circleTimer = var_s1; } } #else @@ -4880,60 +4561,38 @@ void func_80011E38(s32 playerIndex) { } } -#ifdef MIPS_TO_C -//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; - f64 temp_f0; - f64 temp_f0_2; - s16 *temp_a2; - s16 temp_v0; - s32 temp_v1; - - temp_v1 = arg0 * 2; - temp_a2 = temp_v1 + &D_801630E8; - if ((((player->unk_094 / 18.0f) * 216.0f) >= 45.0f) && (*temp_a2 == 0)) { - temp_v0 = D_801631D8[D_80162FCE]; - switch (temp_v0) { /* irregular */ + if ((((player->unk_094 / 18.0f) * 216.0f) >= 45.0f) && (D_801630E8[arg0] == 0)) { + switch (D_801631D8[D_80162FCE]) { case 0: case 2: - if ((arg2 >= -9) && (*(&D_80162FF8 + temp_v1) == 0)) { - temp_f0 = (f64) D_80163068[arg0]; - if ((temp_f0 > -0.8) && (temp_f0 < 0.5)) { - sp1C = temp_a2; + if ((arg2 >= -9) && (D_80162FF8[arg0] == 0)) { + if ((D_80163068[arg0] > -0.8) && (D_80163068[arg0] < 0.5)) { func_8002AA50(player); player->effects |= 0x10; - *temp_a2 = 1; - return; + D_801630E8[arg0] = 1; + break; } } - *temp_a2 = 2; - return; + D_801630E8[arg0] = 2; + break; case 1: case 3: - if ((arg2 < 0xA) && (*(&D_80162FF8 + temp_v1) == 0)) { - temp_f0_2 = (f64) D_80163068[arg0]; - if ((temp_f0_2 > -0.5) && (temp_f0_2 < 0.8)) { - sp1C = temp_a2; + if ((arg2 < 0xA) && (D_80162FF8[arg0] == 0)) { + if ((D_80163068[arg0] > -0.5) && (D_80163068[arg0] < 0.8)) { func_8002AA50(player); player->effects |= 0x10; - *temp_a2 = -1; - return; + D_801630E8[arg0] = -1; + break; } } - *temp_a2 = -2; - return; + D_801630E8[arg0] = -2; + break; } } else { - *(&D_801630E8 + (arg0 * 2)) = 3; + D_801630E8[arg0] = 3; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80011EC0.s") -#endif void func_800120C8(void) { s32 i; @@ -7771,49 +7430,40 @@ void func_80019B50(s32 arg0, u16 arg1) { } void func_80019C50(s32 arg0) { - switch (D_80164678[arg0]) { /* irregular */ + switch (D_80164678[arg0]) { case 0: - if (D_80164608[arg0] == (s32) 1) { + if (D_80164608[arg0] == 1) { D_80164678[arg0] = 1; - func_800C9060(arg0 & 0xFF, 0x1900904FU); + func_800C9060(arg0, 0x1900904FU); D_80164670[arg0] = D_80164678[arg0]; } break; case 1: if (D_80164608[arg0] == 1) { D_80164678[arg0] = 0; - func_800C9060(arg0 & 0xFF, 0x19009050U); + func_800C9060(arg0, 0x19009050U); D_80164670[arg0] = D_80164678[arg0]; } break; } } -#ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-12-2023 -extern s32 D_80163378; -s16 gCurrentCourseId; /* unable to generate initializer */ - void func_80019D2C(Camera *camera, Player *player, s32 arg2) { - s32 sp1C; - s16 temp_v1; - u16 temp_v0; + s32 playerId; + s32 nearestWaypoint; - temp_v1 = camera->playerId; + playerId = camera->playerId; if ((D_80163378 != 0) && (gCurrentCourseId == 8)) { - 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; + nearestWaypoint = gNearestWaypointByPlayerId[playerId]; + if (((nearestWaypoint >= 0x65) && (nearestWaypoint < 0xFA)) || + ((nearestWaypoint >= 0x1AF) && (nearestWaypoint < 0x226))) { + func_80019B50(arg2, (player->unk_206 * 2)); + } else { + func_80019B50(arg2, 0U); } - func_80019B50(arg2, 0U); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019D2C.s") -#endif void func_80019DE4(void) { D_801646CC = 1; @@ -7864,52 +7514,31 @@ void func_80019ED0(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit 08138748803d75e73e4a94bb0c619a273754ee9c on Oct-10-2023 -extern ? D_801645D0; -extern ? D_801645E8; -extern ? D_80164608; -extern ? D_80164628; +void func_80019FB4(s32 cameraId) { + struct Controller *controller; -void func_80019FB4(s32 arg0) { - s32 *temp_a0; - s32 *temp_a0_2; - s32 *temp_a1; - s32 *temp_v0_2; - s32 var_v1; - struct Controller *temp_v0; - - temp_v0 = &gControllerOne[arg0]; - var_v1 = arg0 * 4; - temp_a1 = var_v1 + &D_801645D0; - if (temp_v0->buttonPressed & 2) { - *temp_a1 += 1; + controller = &gControllerOne[cameraId]; + if (controller->buttonPressed & 2) { + D_801645D0[cameraId] += 1; } else { - var_v1 = arg0 * 4; - *(&D_801645D0 + var_v1) = 0; + D_801645D0[cameraId] = 0; } - temp_a0 = var_v1 + &D_801645E8; - if (temp_v0->buttonPressed & 4) { - *temp_a0 += 1; + if (controller->buttonPressed & 4) { + D_801645E8[cameraId] += 1; } else { - *(&D_801645E8 + var_v1) = 0; + D_801645E8[cameraId] = 0; } - temp_a0_2 = var_v1 + &D_80164608; - if (temp_v0->buttonPressed & 8) { - *temp_a0_2 += 1; + if (controller->buttonPressed & 8) { + D_80164608[cameraId] += 1; } else { - *(&D_80164608 + var_v1) = 0; + D_80164608[cameraId] = 0; } - temp_v0_2 = var_v1 + &D_80164628; - if (temp_v0->buttonPressed & 1) { - *temp_v0_2 += 1; - return; + if (controller->buttonPressed & 1) { + D_80164628[cameraId] += 1; + } else { + D_80164628[cameraId] = 0; } - *(&D_80164628 + var_v1) = 0; } -#else -GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80019FB4.s") -#endif void func_8001A0A4(UNUSED u16 *arg0, UNUSED Camera *arg1, UNUSED Player *arg2, UNUSED s8 arg3, s32 arg4) { func_80019FB4(arg4); @@ -8756,20 +8385,6 @@ void func_8001BE78(void) { } } -extern s16 D_8016347C; -extern s16 D_8016347E; -extern s32 D_80163480; -extern s32 D_80163484; -typedef struct { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; -} Struct80163418; -extern Struct80163418 D_80163418; -extern Struct80163418 D_80163428; -extern Struct80163418 D_80163438; - void func_8001C05C(void) { init_segment_racing(); gCurrentCourseId = COURSE_AWARD_CEREMONY; @@ -8780,18 +8395,18 @@ void func_8001C05C(void) { func_8000F2DC(); func_80014DE4(0); func_8001BE78(); - D_80163418.unk0 = -3202.475097656f; - D_80163428.unk0 = 19.166999817f; - D_80163438.unk0 = -477.623992920f; - D_80163418.unk4 = -3205.080078125f; - D_80163428.unk4 = 19.166999817f; - D_80163438.unk4 = -462.851989746f; - D_80163418.unk8 = -3199.870117188f; - D_80163428.unk8 = 19.166999817f; - D_80163438.unk8 = -492.395996094f; - D_80163418.unkC = -2409.197021484f; - D_80163428.unkC = 0.0f; - D_80163438.unkC = -355.253997803; + D_80163418[0] = -3202.475097656f; + D_80163428[0] = 19.166999817f; + D_80163438[0] = -477.623992920f; + D_80163418[1] = -3205.080078125f; + D_80163428[1] = 19.166999817f; + D_80163438[1] = -462.851989746f; + D_80163418[2] = -3199.870117188f; + D_80163428[2] = 19.166999817f; + D_80163438[2] = -492.395996094f; + D_80163418[3] = -2409.197021484f; + D_80163428[3] = 0.0f; + D_80163438[3] = -355.253997803; } #ifdef MIPS_TO_C diff --git a/src/code_80005FD0.h b/src/code_80005FD0.h index a7e6f1a89..9bcb8fa1c 100644 --- a/src/code_80005FD0.h +++ b/src/code_80005FD0.h @@ -56,30 +56,23 @@ typedef struct { u16 unk6; } UnkStruct_46D0; +typedef struct { + s16 x; + s16 z; +} PathNoY; /* Function Prototypes */ -void func_80012190(void); -void func_8000BA14(u16, f32, f32, s16); -void func_80014BDC(void); -void func_80014A88(void); -void func_80014934(void); -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); s32 func_800061DC(Vec3f, f32, s32); void set_places(void); -void func_80010E6C(s32 pathIndex); -void set_bomb_kart_spawn_positions(void); + void func_800070F4(void); void func_800074D4(void); s32 func_80007BF8(u16, u16, u16, u16, u16); +void func_80007FA4(s32, Player*, f32); void func_80008DC0(s32); s32 func_80008E58(s32, s32); @@ -89,12 +82,15 @@ void func_80009000(s32); void func_800090F0(s32, Player*); f32 func_80009258(s32, f32, f32); void func_800097E0(void); +void func_800099EC(s32, s32); void func_80009B60(s32); +void func_8000B140(s32); s32 func_8000B7E4(s32, u16); s32 func_8000B820(s32); f32 func_8000B874(f32, f32, u16, s32); void func_8000B95C(s32, u16, s32); +void func_8000BA14(u16, f32, f32, s16); void func_8000BBD8(u16, f32, s16); s16 func_8000BD94(f32, f32, f32, s32); @@ -130,6 +126,7 @@ void func_8000F2BC(TrackWaypoint*, size_t); void func_8000F2DC(void); void func_8000F628(void); +void func_800100F0(s32); void func_80010218(s32); f32 func_80010480(s32, u16); void func_800107C4(s32); @@ -139,25 +136,28 @@ void func_80010E6C(s32); f32 func_80010F40(f32, f32, f32, s32, s32); f32 func_80010FA0(f32, f32, f32, s32, s32); -s32 func_80011014(TrackWaypoint *, TrackWaypoint *, s32, s32); +s32 func_80011014(TrackWaypoint *, TrackWaypoint *, s32, s32); s32 process_path_data(TrackWaypoint*, TrackWaypoint*); -typedef struct { - s16 x; - s16 z; -} PathNoY; s32 func_8001168C(PathNoY*, TrackWaypoint*, s32); void func_80011A5C(void); void func_80011AB8(s32); void func_80011AE4(s32); +void func_80011E38(s32); +void func_80011EC0(s32, Player*, s32, s32); +void func_800120C8(void); +void func_80012190(void); void func_80012220(VehicleStuff*); void init_course_vehicles(void); +void func_80012780(TrainCarStuff*, s16*, u16); +void func_800127E0(void); void func_80012A48(TrainCarStuff*, s16); void func_80012AC0(void); void func_80012DC0(s32, Player*); void func_80013054(void); void func_800131DC(s32); +void func_800132F4(void); void func_800133C4(void); void func_80013854(Player*); void func_800139E4(f32, f32, s32, s32, VehicleStuff*, TrackWaypoint*); @@ -167,15 +167,19 @@ void func_80013F7C(s32, Player*, VehicleStuff*, f32, f32, s32, u32); f32 func_800145A8(s16, f32, s16); void func_800146B8(s32, s32, VehicleStuff*); +void func_800147E0(void); void func_8001487C(void); void func_800148C4(s32, Player*); void func_8001490C(s32); +void func_80014934(void); void func_800149D0(void); void func_80014A18(s32, Player*); void func_80014A60(s32); +void func_80014A88(void); void func_80014B24(void); void func_80014B6C(s32, Player*); void func_80014BB4(s32); +void func_80014BDC(void); void func_80014C78(void); void func_80014CC0(s32, Player*); void func_80014D08(s32); @@ -260,14 +264,13 @@ extern uintptr_t D_800DC8D0[20][4]; extern struct _struct_D_800DD9D0_0x10 D_800DD9D0[]; extern s16 D_80162F10[]; extern s16 D_80162F50[]; +extern Vec3f D_80162FB0; +extern Vec3f D_80162FC0; extern s16 D_80162FF8[]; extern s16 D_80163010[]; extern f32 D_80163028[]; extern s16 D_80163050[]; extern f32 D_80163090[]; -extern u16 D_80163258[]; -extern u16 D_80163270[]; -extern s16 D_80163346[]; extern s32 D_801630B8[]; extern s16 D_801630E8[]; extern s32 D_80163100[]; @@ -277,6 +280,8 @@ extern f32 D_80163178[]; extern f32 D_801631A0[]; extern s32 D_801631CC; extern s16 D_801631F8[]; +extern u16 D_80163258[]; +extern u16 D_80163270[]; extern f32 D_80163210[]; extern s32 D_80163288[]; extern u16 D_80163330[]; // static? @@ -290,6 +295,10 @@ extern s16 D_801633B0[]; extern s16 D_801633C8[]; extern s16 D_801633F8[]; extern f32 D_80163450[]; +extern s16 D_8016347C; +extern s16 D_8016347E; +extern s32 D_80163480; +extern s32 D_80163484; extern s16 D_801634C0[]; extern s16 D_801634EC; extern s32 D_801634F0; @@ -298,6 +307,10 @@ extern s16 D_80164358; extern s16 D_8016435A; extern s16 D_8016435C; extern s16 D_80164538[]; +extern s32 D_801645D0[]; +extern s32 D_801645E8[]; +extern s32 D_80164608[]; +extern s32 D_80164628[]; extern f32 D_80164698; extern f32 D_8016469C; extern f32 D_801646A0; @@ -342,7 +355,10 @@ extern s16 D_801632B8[]; extern s16 D_801632D0[]; extern u16 D_801632E8[]; extern s32 D_8016337C; -extern u16 D_80163410[]; // One per player? +extern s16 D_80163410[]; // One per player? +extern f32 D_80163418[]; +extern f32 D_80163428[]; +extern f32 D_80163438[]; extern s16 D_80163478; extern s32 D_80163488; extern s16 D_8016348C; diff --git a/src/racing/math_util.c b/src/racing/math_util.c index f17a52617..205106f9d 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -79,7 +79,7 @@ f32 func_802B51E8(Vec3f arg0, Vec3f arg1) { return (sub_x * sub_x) + (sub_y * sub_y) + sub_z + sub_z; } -u32 get_angle_between_points(Vec3f arg0, Vec3f arg1) { +s32 get_angle_between_points(Vec3f arg0, Vec3f arg1) { f32 temp_v1; f32 temp_v2; temp_v1 = arg1[0] - arg0[0]; diff --git a/src/racing/math_util.h b/src/racing/math_util.h index 87dd2cd40..cdc27d5ad 100644 --- a/src/racing/math_util.h +++ b/src/racing/math_util.h @@ -19,7 +19,7 @@ double fabs(double x); s32 func_802B4F60(s32, Vec3f, s32, f32, f32); s32 render_set_position(Mat4, s32); f32 func_802B51E8(Vec3f, Vec3f); -u32 get_angle_between_points(Vec3f, Vec3f); +s32 get_angle_between_points(Vec3f, Vec3f); u32 func_802B5258(Vec3f, Vec3s); void vec3f_set(Vec3f, f32, f32, f32); void vec3s_set(Vec3s, s16, s16, s16);