diff --git a/README.md b/README.md index dec932e5..2e081120 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of September 18, 2023, this is our current score: +As of September 21, 2023, this is our current score: -    Decomp progress: 53.37% +    Decomp progress: 53.85% -    Documentation progress: 27.64% +    Documentation progress: 27.65% --- @@ -128,25 +128,25 @@ s32 is_drumstick_unlocked(void) { ``` -As of September 18th, 2023, this is our current score: +As of September 21st, 2023, this is our current score: ``` ======================================================== ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 53.37% Complete -------------------- - # Decompiled functions: 1532 - # GLOBAL_ASM remaining: 300 + ------------------- 53.85% Complete -------------------- + # Decompiled functions: 1550 + # GLOBAL_ASM remaining: 288 # NON_MATCHING functions: 14 - # NON_EQUIVALENT WIP functions: 70 + # NON_EQUIVALENT WIP functions: 69 --------------------- Game Status ---------------------- Balloons: 26/47, Keys: 3/4, Trophies: 2/5 T.T. Amulets: 2/4, Wizpig Amulets: 2/4 -------------------------------------------------------- - We are battling in Darkwater Beach. (3 opponents remain) + We are battling in Darkwater Beach. (2 opponents remain) ======================================================== ADVENTURE TWO (Cleanup & Documentation) - ------------------- 27.64% Complete -------------------- - # Documented functions: 604 - # Undocumented remaining: 960 + ------------------- 27.65% Complete -------------------- + # Documented functions: 606 + # Undocumented remaining: 964 --------------------- Game Status ---------------------- Balloons: 14/47, Keys: 1/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 diff --git a/asm/non_matchings/game_ui/func_800A1C04.s b/asm/non_matchings/game_ui/func_800A1C04.s deleted file mode 100644 index 374992d6..00000000 --- a/asm/non_matchings/game_ui/func_800A1C04.s +++ /dev/null @@ -1,162 +0,0 @@ -glabel func_800A1C04 -/* 0A2804 800A1C04 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 0A2808 800A1C08 3C0F8012 */ lui $t7, %hi(gNumActivePlayers) # $t7, 0x8012 -/* 0A280C 800A1C0C 91EF6D37 */ lbu $t7, %lo(gNumActivePlayers)($t7) -/* 0A2810 800A1C10 AFBF0014 */ sw $ra, 0x14($sp) -/* 0A2814 800A1C14 AFA40040 */ sw $a0, 0x40($sp) -/* 0A2818 800A1C18 AFA50044 */ sw $a1, 0x44($sp) -/* 0A281C 800A1C1C AFA60048 */ sw $a2, 0x48($sp) -/* 0A2820 800A1C20 8CA70064 */ lw $a3, 0x64($a1) -/* 0A2824 800A1C24 24010001 */ li $at, 1 -/* 0A2828 800A1C28 15E10005 */ bne $t7, $at, .L800A1C40 -/* 0A282C 800A1C2C 24040001 */ li $a0, 1 -/* 0A2830 800A1C30 80F801D8 */ lb $t8, 0x1d8($a3) -/* 0A2834 800A1C34 00000000 */ nop -/* 0A2838 800A1C38 17000080 */ bnez $t8, .L800A1E3C -/* 0A283C 800A1C3C 8FBF0014 */ lw $ra, 0x14($sp) -.L800A1C40: -/* 0A2840 800A1C40 0C01A142 */ jal func_80068508 -/* 0A2844 800A1C44 AFA70038 */ sw $a3, 0x38($sp) -/* 0A2848 800A1C48 8FA40040 */ lw $a0, 0x40($sp) -/* 0A284C 800A1C4C 8FA50048 */ lw $a1, 0x48($sp) -/* 0A2850 800A1C50 0C028F39 */ jal render_race_start -/* 0A2854 800A1C54 00000000 */ nop -/* 0A2858 800A1C58 8FA40044 */ lw $a0, 0x44($sp) -/* 0A285C 800A1C5C 8FA50048 */ lw $a1, 0x48($sp) -/* 0A2860 800A1C60 0C029D48 */ jal render_weapon_hud -/* 0A2864 800A1C64 00000000 */ nop -/* 0A2868 800A1C68 0C006E9D */ jal get_racer_objects -/* 0A286C 800A1C6C 27A40034 */ addiu $a0, $sp, 0x34 -/* 0A2870 800A1C70 3C038012 */ lui $v1, %hi(gNumActivePlayers) # $v1, 0x8012 -/* 0A2874 800A1C74 90636D37 */ lbu $v1, %lo(gNumActivePlayers)($v1) -/* 0A2878 800A1C78 8FA70038 */ lw $a3, 0x38($sp) -/* 0A287C 800A1C7C 24010001 */ li $at, 1 -/* 0A2880 800A1C80 10610005 */ beq $v1, $at, .L800A1C98 -/* 0A2884 800A1C84 240A0002 */ li $t2, 2 -/* 0A2888 800A1C88 106A000A */ beq $v1, $t2, .L800A1CB4 -/* 0A288C 800A1C8C 8FB90034 */ lw $t9, 0x34($sp) -/* 0A2890 800A1C90 10000065 */ b .L800A1E28 -/* 0A2894 800A1C94 8FA50048 */ lw $a1, 0x48($sp) -.L800A1C98: -/* 0A2898 800A1C98 8FA40044 */ lw $a0, 0x44($sp) -/* 0A289C 800A1C9C 8FA50048 */ lw $a1, 0x48($sp) -/* 0A28A0 800A1CA0 0C028792 */ jal func_800A1E48 -/* 0A28A4 800A1CA4 00000000 */ nop -/* 0A28A8 800A1CA8 10000061 */ b .L800A1E30 -/* 0A28AC 800A1CAC 00000000 */ nop -/* 0A28B0 800A1CB0 8FB90034 */ lw $t9, 0x34($sp) -.L800A1CB4: -/* 0A28B4 800A1CB4 00002825 */ move $a1, $zero -/* 0A28B8 800A1CB8 1B200056 */ blez $t9, .L800A1E14 -/* 0A28BC 800A1CBC 00003025 */ move $a2, $zero -/* 0A28C0 800A1CC0 33230003 */ andi $v1, $t9, 3 -/* 0A28C4 800A1CC4 10600017 */ beqz $v1, .L800A1D24 -/* 0A28C8 800A1CC8 00604825 */ move $t1, $v1 -/* 0A28CC 800A1CCC 00005880 */ sll $t3, $zero, 2 -/* 0A28D0 800A1CD0 004B2021 */ addu $a0, $v0, $t3 -/* 0A28D4 800A1CD4 2408FFFF */ li $t0, -1 -.L800A1CD8: -/* 0A28D8 800A1CD8 8C8C0000 */ lw $t4, ($a0) -/* 0A28DC 800A1CDC 24C60001 */ addiu $a2, $a2, 1 -/* 0A28E0 800A1CE0 8D830064 */ lw $v1, 0x64($t4) -/* 0A28E4 800A1CE4 00000000 */ nop -/* 0A28E8 800A1CE8 846D0000 */ lh $t5, ($v1) -/* 0A28EC 800A1CEC 00000000 */ nop -/* 0A28F0 800A1CF0 110D0006 */ beq $t0, $t5, .L800A1D0C -/* 0A28F4 800A1CF4 00000000 */ nop -/* 0A28F8 800A1CF8 806E01D8 */ lb $t6, 0x1d8($v1) -/* 0A28FC 800A1CFC 00000000 */ nop -/* 0A2900 800A1D00 11C00002 */ beqz $t6, .L800A1D0C -/* 0A2904 800A1D04 00000000 */ nop -/* 0A2908 800A1D08 24A50001 */ addiu $a1, $a1, 1 -.L800A1D0C: -/* 0A290C 800A1D0C 1526FFF2 */ bne $t1, $a2, .L800A1CD8 -/* 0A2910 800A1D10 24840004 */ addiu $a0, $a0, 4 -/* 0A2914 800A1D14 8FAF0034 */ lw $t7, 0x34($sp) -/* 0A2918 800A1D18 00000000 */ nop -/* 0A291C 800A1D1C 10CF003D */ beq $a2, $t7, .L800A1E14 -/* 0A2920 800A1D20 00000000 */ nop -.L800A1D24: -/* 0A2924 800A1D24 8FB80034 */ lw $t8, 0x34($sp) -/* 0A2928 800A1D28 00065880 */ sll $t3, $a2, 2 -/* 0A292C 800A1D2C 0018C880 */ sll $t9, $t8, 2 -/* 0A2930 800A1D30 03224821 */ addu $t1, $t9, $v0 -/* 0A2934 800A1D34 004B2021 */ addu $a0, $v0, $t3 -/* 0A2938 800A1D38 2408FFFF */ li $t0, -1 -.L800A1D3C: -/* 0A293C 800A1D3C 8C8C0000 */ lw $t4, ($a0) -/* 0A2940 800A1D40 00000000 */ nop -/* 0A2944 800A1D44 8D830064 */ lw $v1, 0x64($t4) -/* 0A2948 800A1D48 00000000 */ nop -/* 0A294C 800A1D4C 846D0000 */ lh $t5, ($v1) -/* 0A2950 800A1D50 00000000 */ nop -/* 0A2954 800A1D54 110D0006 */ beq $t0, $t5, .L800A1D70 -/* 0A2958 800A1D58 00000000 */ nop -/* 0A295C 800A1D5C 806E01D8 */ lb $t6, 0x1d8($v1) -/* 0A2960 800A1D60 00000000 */ nop -/* 0A2964 800A1D64 11C00002 */ beqz $t6, .L800A1D70 -/* 0A2968 800A1D68 00000000 */ nop -/* 0A296C 800A1D6C 24A50001 */ addiu $a1, $a1, 1 -.L800A1D70: -/* 0A2970 800A1D70 8C8F0004 */ lw $t7, 4($a0) -/* 0A2974 800A1D74 00000000 */ nop -/* 0A2978 800A1D78 8DE70064 */ lw $a3, 0x64($t7) -/* 0A297C 800A1D7C 00000000 */ nop -/* 0A2980 800A1D80 84F80000 */ lh $t8, ($a3) -/* 0A2984 800A1D84 00000000 */ nop -/* 0A2988 800A1D88 11180006 */ beq $t0, $t8, .L800A1DA4 -/* 0A298C 800A1D8C 00000000 */ nop -/* 0A2990 800A1D90 80F901D8 */ lb $t9, 0x1d8($a3) -/* 0A2994 800A1D94 00000000 */ nop -/* 0A2998 800A1D98 13200002 */ beqz $t9, .L800A1DA4 -/* 0A299C 800A1D9C 00000000 */ nop -/* 0A29A0 800A1DA0 24A50001 */ addiu $a1, $a1, 1 -.L800A1DA4: -/* 0A29A4 800A1DA4 8C8B0008 */ lw $t3, 8($a0) -/* 0A29A8 800A1DA8 00000000 */ nop -/* 0A29AC 800A1DAC 8D670064 */ lw $a3, 0x64($t3) -/* 0A29B0 800A1DB0 00000000 */ nop -/* 0A29B4 800A1DB4 84EC0000 */ lh $t4, ($a3) -/* 0A29B8 800A1DB8 00000000 */ nop -/* 0A29BC 800A1DBC 110C0006 */ beq $t0, $t4, .L800A1DD8 -/* 0A29C0 800A1DC0 00000000 */ nop -/* 0A29C4 800A1DC4 80ED01D8 */ lb $t5, 0x1d8($a3) -/* 0A29C8 800A1DC8 00000000 */ nop -/* 0A29CC 800A1DCC 11A00002 */ beqz $t5, .L800A1DD8 -/* 0A29D0 800A1DD0 00000000 */ nop -/* 0A29D4 800A1DD4 24A50001 */ addiu $a1, $a1, 1 -.L800A1DD8: -/* 0A29D8 800A1DD8 8C8E000C */ lw $t6, 0xc($a0) -/* 0A29DC 800A1DDC 24840010 */ addiu $a0, $a0, 0x10 -/* 0A29E0 800A1DE0 8DC70064 */ lw $a3, 0x64($t6) -/* 0A29E4 800A1DE4 00000000 */ nop -/* 0A29E8 800A1DE8 84EF0000 */ lh $t7, ($a3) -/* 0A29EC 800A1DEC 00000000 */ nop -/* 0A29F0 800A1DF0 110F0006 */ beq $t0, $t7, .L800A1E0C -/* 0A29F4 800A1DF4 00000000 */ nop -/* 0A29F8 800A1DF8 80F801D8 */ lb $t8, 0x1d8($a3) -/* 0A29FC 800A1DFC 00000000 */ nop -/* 0A2A00 800A1E00 13000002 */ beqz $t8, .L800A1E0C -/* 0A2A04 800A1E04 00000000 */ nop -/* 0A2A08 800A1E08 24A50001 */ addiu $a1, $a1, 1 -.L800A1E0C: -/* 0A2A0C 800A1E0C 1489FFCB */ bne $a0, $t1, .L800A1D3C -/* 0A2A10 800A1E10 00000000 */ nop -.L800A1E14: -/* 0A2A14 800A1E14 14AA0006 */ bne $a1, $t2, .L800A1E30 -/* 0A2A18 800A1E18 00000000 */ nop -/* 0A2A1C 800A1E1C 10000007 */ b .L800A1E3C -/* 0A2A20 800A1E20 8FBF0014 */ lw $ra, 0x14($sp) -/* 0A2A24 800A1E24 8FA50048 */ lw $a1, 0x48($sp) -.L800A1E28: -/* 0A2A28 800A1E28 0C029055 */ jal render_racer_bananas -/* 0A2A2C 800A1E2C 00E02025 */ move $a0, $a3 -.L800A1E30: -/* 0A2A30 800A1E30 0C01A142 */ jal func_80068508 -/* 0A2A34 800A1E34 00002025 */ move $a0, $zero -/* 0A2A38 800A1E38 8FBF0014 */ lw $ra, 0x14($sp) -.L800A1E3C: -/* 0A2A3C 800A1E3C 27BD0040 */ addiu $sp, $sp, 0x40 -/* 0A2A40 800A1E40 03E00008 */ jr $ra -/* 0A2A44 800A1E44 00000000 */ nop - diff --git a/asm/non_matchings/game_ui/func_800A22F4.s b/asm/non_matchings/game_ui/func_800A22F4.s deleted file mode 100644 index a739b65e..00000000 --- a/asm/non_matchings/game_ui/func_800A22F4.s +++ /dev/null @@ -1,178 +0,0 @@ -glabel func_800A22F4 -/* 0A2EF4 800A22F4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 0A2EF8 800A22F8 AFB00018 */ sw $s0, 0x18($sp) -/* 0A2EFC 800A22FC 3C108012 */ lui $s0, %hi(gCurrentHud) # $s0, 0x8012 -/* 0A2F00 800A2300 AFBF001C */ sw $ra, 0x1c($sp) -/* 0A2F04 800A2304 AFA40020 */ sw $a0, 0x20($sp) -/* 0A2F08 800A2308 AFA50024 */ sw $a1, 0x24($sp) -/* 0A2F0C 800A230C 808F0003 */ lb $t7, 3($a0) -/* 0A2F10 800A2310 26106CDC */ addiu $s0, %lo(gCurrentHud) # addiu $s0, $s0, 0x6cdc -/* 0A2F14 800A2314 8E190000 */ lw $t9, ($s0) -/* 0A2F18 800A2318 25F80038 */ addiu $t8, $t7, 0x38 -/* 0A2F1C 800A231C 3C038012 */ lui $v1, %hi(gNumActivePlayers) # $v1, 0x8012 -/* 0A2F20 800A2320 A7380646 */ sh $t8, 0x646($t9) -/* 0A2F24 800A2324 90636D37 */ lbu $v1, %lo(gNumActivePlayers)($v1) -/* 0A2F28 800A2328 00807025 */ move $t6, $a0 -/* 0A2F2C 800A232C 28610003 */ slti $at, $v1, 3 -/* 0A2F30 800A2330 14200009 */ bnez $at, .L800A2358 -/* 0A2F34 800A2334 24010003 */ li $at, 3 -/* 0A2F38 800A2338 1461001C */ bne $v1, $at, .L800A23AC -/* 0A2F3C 800A233C 8FAB0020 */ lw $t3, 0x20($sp) -/* 0A2F40 800A2340 8FA80020 */ lw $t0, 0x20($sp) -/* 0A2F44 800A2344 2401FFFF */ li $at, -1 -/* 0A2F48 800A2348 85090000 */ lh $t1, ($t0) -/* 0A2F4C 800A234C 00000000 */ nop -/* 0A2F50 800A2350 15210016 */ bne $t1, $at, .L800A23AC -/* 0A2F54 800A2354 8FAB0020 */ lw $t3, 0x20($sp) -.L800A2358: -/* 0A2F58 800A2358 240A0001 */ li $t2, 1 -/* 0A2F5C 800A235C 3C018012 */ lui $at, %hi(D_80126CD5) # $at, 0x8012 -/* 0A2F60 800A2360 A02A6CD5 */ sb $t2, %lo(D_80126CD5)($at) -/* 0A2F64 800A2364 8E070000 */ lw $a3, ($s0) -/* 0A2F68 800A2368 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A2F6C 800A236C 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A2F70 800A2370 3C068012 */ lui $a2, %hi(gHUDCurrVertex) # $a2, 0x8012 -/* 0A2F74 800A2374 24C66D04 */ addiu $a2, %lo(gHUDCurrVertex) # addiu $a2, $a2, 0x6d04 -/* 0A2F78 800A2378 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A2F7C 800A237C 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A2F80 800A2380 0C02A980 */ jal func_800AA600 -/* 0A2F84 800A2384 24E70640 */ addiu $a3, $a3, 0x640 -/* 0A2F88 800A2388 3C018012 */ lui $at, %hi(D_80126CD5) # $at, 0x8012 -/* 0A2F8C 800A238C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A2F90 800A2390 A0206CD5 */ sb $zero, %lo(D_80126CD5)($at) -/* 0A2F94 800A2394 0C01E015 */ jal init_rdp_and_framebuffer -/* 0A2F98 800A2398 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A2F9C 800A239C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A2FA0 800A23A0 0C01ECF4 */ jal reset_render_settings -/* 0A2FA4 800A23A4 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A2FA8 800A23A8 8FAB0020 */ lw $t3, 0x20($sp) -.L800A23AC: -/* 0A2FAC 800A23AC 2403000A */ li $v1, 10 -/* 0A2FB0 800A23B0 81620185 */ lb $v0, 0x185($t3) -/* 0A2FB4 800A23B4 00000000 */ nop -/* 0A2FB8 800A23B8 2841000A */ slti $at, $v0, 0xa -/* 0A2FBC 800A23BC 10200010 */ beqz $at, .L800A2400 -/* 0A2FC0 800A23C0 00000000 */ nop -/* 0A2FC4 800A23C4 8E0C0000 */ lw $t4, ($s0) -/* 0A2FC8 800A23C8 3C0D8012 */ lui $t5, %hi(gNumActivePlayers) # $t5, 0x8012 -/* 0A2FCC 800A23CC A58206D8 */ sh $v0, 0x6d8($t4) -/* 0A2FD0 800A23D0 91AD6D37 */ lbu $t5, %lo(gNumActivePlayers)($t5) -/* 0A2FD4 800A23D4 24010002 */ li $at, 2 -/* 0A2FD8 800A23D8 15A1002F */ bne $t5, $at, .L800A2498 -/* 0A2FDC 800A23DC 00000000 */ nop -/* 0A2FE0 800A23E0 8E020000 */ lw $v0, ($s0) -/* 0A2FE4 800A23E4 3C0140C0 */ li $at, 0x40C00000 # 6.000000 -/* 0A2FE8 800A23E8 44813000 */ mtc1 $at, $f6 -/* 0A2FEC 800A23EC C44406CC */ lwc1 $f4, 0x6cc($v0) -/* 0A2FF0 800A23F0 00000000 */ nop -/* 0A2FF4 800A23F4 46062200 */ add.s $f8, $f4, $f6 -/* 0A2FF8 800A23F8 10000027 */ b .L800A2498 -/* 0A2FFC 800A23FC E44806CC */ swc1 $f8, 0x6cc($v0) -.L800A2400: -/* 0A3000 800A2400 0043001A */ div $zero, $v0, $v1 -/* 0A3004 800A2404 8E0F0000 */ lw $t7, ($s0) -/* 0A3008 800A2408 14600002 */ bnez $v1, .L800A2414 -/* 0A300C 800A240C 00000000 */ nop -/* 0A3010 800A2410 0007000D */ break 7 -.L800A2414: -/* 0A3014 800A2414 2401FFFF */ li $at, -1 -/* 0A3018 800A2418 14610004 */ bne $v1, $at, .L800A242C -/* 0A301C 800A241C 3C018000 */ lui $at, 0x8000 -/* 0A3020 800A2420 14410002 */ bne $v0, $at, .L800A242C -/* 0A3024 800A2424 00000000 */ nop -/* 0A3028 800A2428 0006000D */ break 6 -.L800A242C: -/* 0A302C 800A242C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A3030 800A2430 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A3034 800A2434 3C068012 */ lui $a2, %hi(gHUDCurrVertex) # $a2, 0x8012 -/* 0A3038 800A2438 24C66D04 */ addiu $a2, %lo(gHUDCurrVertex) # addiu $a2, $a2, 0x6d04 -/* 0A303C 800A243C 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A3040 800A2440 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A3044 800A2444 00007012 */ mflo $t6 -/* 0A3048 800A2448 A5EE06D8 */ sh $t6, 0x6d8($t7) -/* 0A304C 800A244C 8FB80020 */ lw $t8, 0x20($sp) -/* 0A3050 800A2450 8E090000 */ lw $t1, ($s0) -/* 0A3054 800A2454 83190185 */ lb $t9, 0x185($t8) -/* 0A3058 800A2458 00000000 */ nop -/* 0A305C 800A245C 0323001A */ div $zero, $t9, $v1 -/* 0A3060 800A2460 14600002 */ bnez $v1, .L800A246C -/* 0A3064 800A2464 00000000 */ nop -/* 0A3068 800A2468 0007000D */ break 7 -.L800A246C: -/* 0A306C 800A246C 2401FFFF */ li $at, -1 -/* 0A3070 800A2470 14610004 */ bne $v1, $at, .L800A2484 -/* 0A3074 800A2474 3C018000 */ lui $at, 0x8000 -/* 0A3078 800A2478 17210002 */ bne $t9, $at, .L800A2484 -/* 0A307C 800A247C 00000000 */ nop -/* 0A3080 800A2480 0006000D */ break 6 -.L800A2484: -/* 0A3084 800A2484 00004010 */ mfhi $t0 -/* 0A3088 800A2488 A52806F8 */ sh $t0, 0x6f8($t1) -/* 0A308C 800A248C 8E070000 */ lw $a3, ($s0) -/* 0A3090 800A2490 0C02A980 */ jal func_800AA600 -/* 0A3094 800A2494 24E706E0 */ addiu $a3, $a3, 0x6e0 -.L800A2498: -/* 0A3098 800A2498 8E070000 */ lw $a3, ($s0) -/* 0A309C 800A249C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A30A0 800A24A0 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A30A4 800A24A4 3C068012 */ lui $a2, %hi(gHUDCurrVertex) # $a2, 0x8012 -/* 0A30A8 800A24A8 24C66D04 */ addiu $a2, %lo(gHUDCurrVertex) # addiu $a2, $a2, 0x6d04 -/* 0A30AC 800A24AC 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A30B0 800A24B0 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A30B4 800A24B4 0C02A980 */ jal func_800AA600 -/* 0A30B8 800A24B8 24E706C0 */ addiu $a3, $a3, 0x6c0 -/* 0A30BC 800A24BC 3C038012 */ lui $v1, %hi(gNumActivePlayers) # $v1, 0x8012 -/* 0A30C0 800A24C0 90636D37 */ lbu $v1, %lo(gNumActivePlayers)($v1) -/* 0A30C4 800A24C4 24040002 */ li $a0, 2 -/* 0A30C8 800A24C8 14830011 */ bne $a0, $v1, .L800A2510 -/* 0A30CC 800A24CC 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A30D0 800A24D0 8FAA0020 */ lw $t2, 0x20($sp) -/* 0A30D4 800A24D4 00000000 */ nop -/* 0A30D8 800A24D8 814B0185 */ lb $t3, 0x185($t2) -/* 0A30DC 800A24DC 00000000 */ nop -/* 0A30E0 800A24E0 2961000A */ slti $at, $t3, 0xa -/* 0A30E4 800A24E4 1020000A */ beqz $at, .L800A2510 -/* 0A30E8 800A24E8 00000000 */ nop -/* 0A30EC 800A24EC 8E020000 */ lw $v0, ($s0) -/* 0A30F0 800A24F0 3C0140C0 */ li $at, 0x40C00000 # 6.000000 -/* 0A30F4 800A24F4 44818000 */ mtc1 $at, $f16 -/* 0A30F8 800A24F8 C44A06CC */ lwc1 $f10, 0x6cc($v0) -/* 0A30FC 800A24FC 3C038012 */ lui $v1, %hi(gNumActivePlayers) # $v1, 0x8012 -/* 0A3100 800A2500 46105481 */ sub.s $f18, $f10, $f16 -/* 0A3104 800A2504 E45206CC */ swc1 $f18, 0x6cc($v0) -/* 0A3108 800A2508 90636D37 */ lbu $v1, %lo(gNumActivePlayers)($v1) -/* 0A310C 800A250C 00000000 */ nop -.L800A2510: -/* 0A3110 800A2510 1083001A */ beq $a0, $v1, .L800A257C -/* 0A3114 800A2514 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A3118 800A2518 8E070000 */ lw $a3, ($s0) -/* 0A311C 800A251C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A3120 800A2520 3C068012 */ lui $a2, %hi(gHUDCurrVertex) # $a2, 0x8012 -/* 0A3124 800A2524 24C66D04 */ addiu $a2, %lo(gHUDCurrVertex) # addiu $a2, $a2, 0x6d04 -/* 0A3128 800A2528 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A312C 800A252C 0C02A980 */ jal func_800AA600 -/* 0A3130 800A2530 24E706A0 */ addiu $a3, $a3, 0x6a0 -/* 0A3134 800A2534 0C01EFC7 */ jal func_8007BF1C -/* 0A3138 800A2538 24040001 */ li $a0, 1 -/* 0A313C 800A253C 240C0001 */ li $t4, 1 -/* 0A3140 800A2540 3C018012 */ lui $at, %hi(D_80126CD5) # $at, 0x8012 -/* 0A3144 800A2544 A02C6CD5 */ sb $t4, %lo(D_80126CD5)($at) -/* 0A3148 800A2548 8E070000 */ lw $a3, ($s0) -/* 0A314C 800A254C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A3150 800A2550 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A3154 800A2554 3C068012 */ lui $a2, %hi(gHUDCurrVertex) # $a2, 0x8012 -/* 0A3158 800A2558 24C66D04 */ addiu $a2, %lo(gHUDCurrVertex) # addiu $a2, $a2, 0x6d04 -/* 0A315C 800A255C 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A3160 800A2560 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A3164 800A2564 0C02A980 */ jal func_800AA600 -/* 0A3168 800A2568 24E70680 */ addiu $a3, $a3, 0x680 -/* 0A316C 800A256C 3C018012 */ lui $at, %hi(D_80126CD5) # $at, 0x8012 -/* 0A3170 800A2570 A0206CD5 */ sb $zero, %lo(D_80126CD5)($at) -/* 0A3174 800A2574 0C01EFC7 */ jal func_8007BF1C -/* 0A3178 800A2578 00002025 */ move $a0, $zero -.L800A257C: -/* 0A317C 800A257C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0A3180 800A2580 8FB00018 */ lw $s0, 0x18($sp) -/* 0A3184 800A2584 03E00008 */ jr $ra -/* 0A3188 800A2588 27BD0020 */ addiu $sp, $sp, 0x20 - diff --git a/asm/non_matchings/objects/func_80011264.s b/asm/non_matchings/objects/func_80011264.s index e2d96f22..613fea8a 100644 --- a/asm/non_matchings/objects/func_80011264.s +++ b/asm/non_matchings/objects/func_80011264.s @@ -69,19 +69,3 @@ glabel func_80011264 .L8001135C: /* 011F5C 8001135C 03E00008 */ jr $ra /* 011F60 80011360 00000000 */ nop - -/* 011F64 80011364 03E00008 */ jr $ra -/* 011F68 80011368 AFA40000 */ sw $a0, ($sp) - -/* 011F6C 8001136C 3C0E8012 */ lui $t6, %hi(D_8011ADAC) # $t6, 0x8012 -/* 011F70 80011370 8DCEADAC */ lw $t6, %lo(D_8011ADAC)($t6) -/* 011F74 80011374 24020001 */ li $v0, 1 -/* 011F78 80011378 11C00003 */ beqz $t6, .L80011388 -/* 011F7C 8001137C 00000000 */ nop -/* 011F80 80011380 03E00008 */ jr $ra -/* 011F84 80011384 00001025 */ move $v0, $zero - -.L80011388: -/* 011F88 80011388 03E00008 */ jr $ra -/* 011F8C 8001138C 00000000 */ nop - diff --git a/asm/non_matchings/particles/func_800B3140.s b/asm/non_matchings/particles/func_800B3140.s deleted file mode 100644 index f4a56fdc..00000000 --- a/asm/non_matchings/particles/func_800B3140.s +++ /dev/null @@ -1,69 +0,0 @@ -glabel func_800B3140 -/* 0B3D40 800B3140 3C028012 */ lui $v0, %hi(D_80127C80) # $v0, 0x8012 -/* 0B3D44 800B3144 8C427C80 */ lw $v0, %lo(D_80127C80)($v0) -/* 0B3D48 800B3148 00000000 */ nop -/* 0B3D4C 800B314C 0002182A */ slt $v1, $zero, $v0 -/* 0B3D50 800B3150 10600023 */ beqz $v1, .L800B31E0 -/* 0B3D54 800B3154 2442FFFF */ addiu $v0, $v0, -1 -.L800B3158: -/* 0B3D58 800B3158 C484004C */ lwc1 $f4, 0x4c($a0) -/* 0B3D5C 800B315C C486001C */ lwc1 $f6, 0x1c($a0) -/* 0B3D60 800B3160 C4800020 */ lwc1 $f0, 0x20($a0) -/* 0B3D64 800B3164 C48A0050 */ lwc1 $f10, 0x50($a0) -/* 0B3D68 800B3168 C4920068 */ lwc1 $f18, 0x68($a0) -/* 0B3D6C 800B316C 46062200 */ add.s $f8, $f4, $f6 -/* 0B3D70 800B3170 C4860054 */ lwc1 $f6, 0x54($a0) -/* 0B3D74 800B3174 46005400 */ add.s $f16, $f10, $f0 -/* 0B3D78 800B3178 E488004C */ swc1 $f8, 0x4c($a0) -/* 0B3D7C 800B317C 46120101 */ sub.s $f4, $f0, $f18 -/* 0B3D80 800B3180 E4900050 */ swc1 $f16, 0x50($a0) -/* 0B3D84 800B3184 C4880024 */ lwc1 $f8, 0x24($a0) -/* 0B3D88 800B3188 848E0000 */ lh $t6, ($a0) -/* 0B3D8C 800B318C 848F0062 */ lh $t7, 0x62($a0) -/* 0B3D90 800B3190 84990002 */ lh $t9, 2($a0) -/* 0B3D94 800B3194 84880064 */ lh $t0, 0x64($a0) -/* 0B3D98 800B3198 848A0004 */ lh $t2, 4($a0) -/* 0B3D9C 800B319C 848B0066 */ lh $t3, 0x66($a0) -/* 0B3DA0 800B31A0 C4900008 */ lwc1 $f16, 8($a0) -/* 0B3DA4 800B31A4 C4920028 */ lwc1 $f18, 0x28($a0) -/* 0B3DA8 800B31A8 E4840020 */ swc1 $f4, 0x20($a0) -/* 0B3DAC 800B31AC 46083280 */ add.s $f10, $f6, $f8 -/* 0B3DB0 800B31B0 0002182A */ slt $v1, $zero, $v0 -/* 0B3DB4 800B31B4 46128100 */ add.s $f4, $f16, $f18 -/* 0B3DB8 800B31B8 01CFC021 */ addu $t8, $t6, $t7 -/* 0B3DBC 800B31BC 03284821 */ addu $t1, $t9, $t0 -/* 0B3DC0 800B31C0 014B6021 */ addu $t4, $t2, $t3 -/* 0B3DC4 800B31C4 E48A0054 */ swc1 $f10, 0x54($a0) -/* 0B3DC8 800B31C8 A4980000 */ sh $t8, ($a0) -/* 0B3DCC 800B31CC A4890002 */ sh $t1, 2($a0) -/* 0B3DD0 800B31D0 A48C0004 */ sh $t4, 4($a0) -/* 0B3DD4 800B31D4 E4840008 */ swc1 $f4, 8($a0) -/* 0B3DD8 800B31D8 1460FFDF */ bnez $v1, .L800B3158 -/* 0B3DDC 800B31DC 2442FFFF */ addiu $v0, $v0, -1 -.L800B31E0: -/* 0B3DE0 800B31E0 C486004C */ lwc1 $f6, 0x4c($a0) -/* 0B3DE4 800B31E4 C4880050 */ lwc1 $f8, 0x50($a0) -/* 0B3DE8 800B31E8 C48A0054 */ lwc1 $f10, 0x54($a0) -/* 0B3DEC 800B31EC 8C82003C */ lw $v0, 0x3c($a0) -/* 0B3DF0 800B31F0 E486000C */ swc1 $f6, 0xc($a0) -/* 0B3DF4 800B31F4 E4880010 */ swc1 $f8, 0x10($a0) -/* 0B3DF8 800B31F8 1040000F */ beqz $v0, .L800B3238 -/* 0B3DFC 800B31FC E48A0014 */ swc1 $f10, 0x14($a0) -/* 0B3E00 800B3200 C490000C */ lwc1 $f16, 0xc($a0) -/* 0B3E04 800B3204 C452000C */ lwc1 $f18, 0xc($v0) -/* 0B3E08 800B3208 C4860010 */ lwc1 $f6, 0x10($a0) -/* 0B3E0C 800B320C 46128100 */ add.s $f4, $f16, $f18 -/* 0B3E10 800B3210 C4900014 */ lwc1 $f16, 0x14($a0) -/* 0B3E14 800B3214 E484000C */ swc1 $f4, 0xc($a0) -/* 0B3E18 800B3218 C4480010 */ lwc1 $f8, 0x10($v0) -/* 0B3E1C 800B321C 00000000 */ nop -/* 0B3E20 800B3220 46083280 */ add.s $f10, $f6, $f8 -/* 0B3E24 800B3224 E48A0010 */ swc1 $f10, 0x10($a0) -/* 0B3E28 800B3228 C4520014 */ lwc1 $f18, 0x14($v0) -/* 0B3E2C 800B322C 00000000 */ nop -/* 0B3E30 800B3230 46128100 */ add.s $f4, $f16, $f18 -/* 0B3E34 800B3234 E4840014 */ swc1 $f4, 0x14($a0) -.L800B3238: -/* 0B3E38 800B3238 03E00008 */ jr $ra -/* 0B3E3C 800B323C 00000000 */ nop - diff --git a/asm/non_matchings/particles/func_800B3240.s b/asm/non_matchings/particles/func_800B3240.s deleted file mode 100644 index 363ccfaf..00000000 --- a/asm/non_matchings/particles/func_800B3240.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_800B3240 -/* 0B3E40 800B3240 3C028012 */ lui $v0, %hi(D_80127C80) # $v0, 0x8012 -/* 0B3E44 800B3244 8C427C80 */ lw $v0, %lo(D_80127C80)($v0) -/* 0B3E48 800B3248 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 0B3E4C 800B324C 0002182A */ slt $v1, $zero, $v0 -/* 0B3E50 800B3250 AFBF0014 */ sw $ra, 0x14($sp) -/* 0B3E54 800B3254 10600015 */ beqz $v1, .L800B32AC -/* 0B3E58 800B3258 2442FFFF */ addiu $v0, $v0, -1 -/* 0B3E5C 800B325C 84850062 */ lh $a1, 0x62($a0) -/* 0B3E60 800B3260 84860064 */ lh $a2, 0x64($a0) -/* 0B3E64 800B3264 84870066 */ lh $a3, 0x66($a0) -/* 0B3E68 800B3268 C4800028 */ lwc1 $f0, 0x28($a0) -/* 0B3E6C 800B326C 00000000 */ nop -.L800B3270: -/* 0B3E70 800B3270 848E0000 */ lh $t6, ($a0) -/* 0B3E74 800B3274 84980002 */ lh $t8, 2($a0) -/* 0B3E78 800B3278 84880004 */ lh $t0, 4($a0) -/* 0B3E7C 800B327C C4840008 */ lwc1 $f4, 8($a0) -/* 0B3E80 800B3280 0002182A */ slt $v1, $zero, $v0 -/* 0B3E84 800B3284 46002180 */ add.s $f6, $f4, $f0 -/* 0B3E88 800B3288 01C57821 */ addu $t7, $t6, $a1 -/* 0B3E8C 800B328C 0306C821 */ addu $t9, $t8, $a2 -/* 0B3E90 800B3290 01074821 */ addu $t1, $t0, $a3 -/* 0B3E94 800B3294 A48F0000 */ sh $t7, ($a0) -/* 0B3E98 800B3298 A4990002 */ sh $t9, 2($a0) -/* 0B3E9C 800B329C A4890004 */ sh $t1, 4($a0) -/* 0B3EA0 800B32A0 E4860008 */ swc1 $f6, 8($a0) -/* 0B3EA4 800B32A4 1460FFF2 */ bnez $v1, .L800B3270 -/* 0B3EA8 800B32A8 2442FFFF */ addiu $v0, $v0, -1 -.L800B32AC: -/* 0B3EAC 800B32AC 44800000 */ mtc1 $zero, $f0 -/* 0B3EB0 800B32B0 C4880058 */ lwc1 $f8, 0x58($a0) -/* 0B3EB4 800B32B4 E480000C */ swc1 $f0, 0xc($a0) -/* 0B3EB8 800B32B8 46004287 */ neg.s $f10, $f8 -/* 0B3EBC 800B32BC E48A0010 */ swc1 $f10, 0x10($a0) -/* 0B3EC0 800B32C0 E4800014 */ swc1 $f0, 0x14($a0) -/* 0B3EC4 800B32C4 AFA40018 */ sw $a0, 0x18($sp) -/* 0B3EC8 800B32C8 0C01C0C8 */ jal f32_vec3_apply_object_rotation -/* 0B3ECC 800B32CC 2485000C */ addiu $a1, $a0, 0xc -/* 0B3ED0 800B32D0 8FA40018 */ lw $a0, 0x18($sp) -/* 0B3ED4 800B32D4 00000000 */ nop -/* 0B3ED8 800B32D8 C490000C */ lwc1 $f16, 0xc($a0) -/* 0B3EDC 800B32DC C492004C */ lwc1 $f18, 0x4c($a0) -/* 0B3EE0 800B32E0 C4860010 */ lwc1 $f6, 0x10($a0) -/* 0B3EE4 800B32E4 46128100 */ add.s $f4, $f16, $f18 -/* 0B3EE8 800B32E8 C4880050 */ lwc1 $f8, 0x50($a0) -/* 0B3EEC 800B32EC C4920054 */ lwc1 $f18, 0x54($a0) -/* 0B3EF0 800B32F0 C4900014 */ lwc1 $f16, 0x14($a0) -/* 0B3EF4 800B32F4 8C82003C */ lw $v0, 0x3c($a0) -/* 0B3EF8 800B32F8 E484000C */ swc1 $f4, 0xc($a0) -/* 0B3EFC 800B32FC 46083280 */ add.s $f10, $f6, $f8 -/* 0B3F00 800B3300 46128100 */ add.s $f4, $f16, $f18 -/* 0B3F04 800B3304 E48A0010 */ swc1 $f10, 0x10($a0) -/* 0B3F08 800B3308 1040000F */ beqz $v0, .L800B3348 -/* 0B3F0C 800B330C E4840014 */ swc1 $f4, 0x14($a0) -/* 0B3F10 800B3310 C486000C */ lwc1 $f6, 0xc($a0) -/* 0B3F14 800B3314 C448000C */ lwc1 $f8, 0xc($v0) -/* 0B3F18 800B3318 C4900010 */ lwc1 $f16, 0x10($a0) -/* 0B3F1C 800B331C 46083280 */ add.s $f10, $f6, $f8 -/* 0B3F20 800B3320 C4860014 */ lwc1 $f6, 0x14($a0) -/* 0B3F24 800B3324 E48A000C */ swc1 $f10, 0xc($a0) -/* 0B3F28 800B3328 C4520010 */ lwc1 $f18, 0x10($v0) -/* 0B3F2C 800B332C 00000000 */ nop -/* 0B3F30 800B3330 46128100 */ add.s $f4, $f16, $f18 -/* 0B3F34 800B3334 E4840010 */ swc1 $f4, 0x10($a0) -/* 0B3F38 800B3338 C4480014 */ lwc1 $f8, 0x14($v0) -/* 0B3F3C 800B333C 00000000 */ nop -/* 0B3F40 800B3340 46083280 */ add.s $f10, $f6, $f8 -/* 0B3F44 800B3344 E48A0014 */ swc1 $f10, 0x14($a0) -.L800B3348: -/* 0B3F48 800B3348 8FBF0014 */ lw $ra, 0x14($sp) -/* 0B3F4C 800B334C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 0B3F50 800B3350 03E00008 */ jr $ra -/* 0B3F54 800B3354 00000000 */ nop - diff --git a/asm/non_matchings/particles/func_800B3358.s b/asm/non_matchings/particles/func_800B3358.s deleted file mode 100644 index 46e4fb28..00000000 --- a/asm/non_matchings/particles/func_800B3358.s +++ /dev/null @@ -1,90 +0,0 @@ -glabel func_800B3358 -/* 0B3F58 800B3358 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 0B3F5C 800B335C AFB20024 */ sw $s2, 0x24($sp) -/* 0B3F60 800B3360 3C128012 */ lui $s2, %hi(D_80127C80) # $s2, 0x8012 -/* 0B3F64 800B3364 26527C80 */ addiu $s2, %lo(D_80127C80) # addiu $s2, $s2, 0x7c80 -/* 0B3F68 800B3368 8E420000 */ lw $v0, ($s2) -/* 0B3F6C 800B336C AFB10020 */ sw $s1, 0x20($sp) -/* 0B3F70 800B3370 AFB0001C */ sw $s0, 0x1c($sp) -/* 0B3F74 800B3374 0002702A */ slt $t6, $zero, $v0 -/* 0B3F78 800B3378 00808025 */ move $s0, $a0 -/* 0B3F7C 800B337C AFBF002C */ sw $ra, 0x2c($sp) -/* 0B3F80 800B3380 AFB30028 */ sw $s3, 0x28($sp) -/* 0B3F84 800B3384 E7B50010 */ swc1 $f21, 0x10($sp) -/* 0B3F88 800B3388 E7B40014 */ swc1 $f20, 0x14($sp) -/* 0B3F8C 800B338C 11C0003F */ beqz $t6, .L800B348C -/* 0B3F90 800B3390 24110001 */ li $s1, 1 -/* 0B3F94 800B3394 4480A000 */ mtc1 $zero, $f20 -/* 0B3F98 800B3398 27B30038 */ addiu $s3, $sp, 0x38 -.L800B339C: -/* 0B3F9C 800B339C C604000C */ lwc1 $f4, 0xc($s0) -/* 0B3FA0 800B33A0 C606001C */ lwc1 $f6, 0x1c($s0) -/* 0B3FA4 800B33A4 C60A0010 */ lwc1 $f10, 0x10($s0) -/* 0B3FA8 800B33A8 C6100020 */ lwc1 $f16, 0x20($s0) -/* 0B3FAC 800B33AC 46062200 */ add.s $f8, $f4, $f6 -/* 0B3FB0 800B33B0 C6060024 */ lwc1 $f6, 0x24($s0) -/* 0B3FB4 800B33B4 46105480 */ add.s $f18, $f10, $f16 -/* 0B3FB8 800B33B8 C6040014 */ lwc1 $f4, 0x14($s0) -/* 0B3FBC 800B33BC C6100028 */ lwc1 $f16, 0x28($s0) -/* 0B3FC0 800B33C0 C60A0008 */ lwc1 $f10, 8($s0) -/* 0B3FC4 800B33C4 860F0000 */ lh $t7, ($s0) -/* 0B3FC8 800B33C8 86180062 */ lh $t8, 0x62($s0) -/* 0B3FCC 800B33CC 86080002 */ lh $t0, 2($s0) -/* 0B3FD0 800B33D0 86090064 */ lh $t1, 0x64($s0) -/* 0B3FD4 800B33D4 860B0004 */ lh $t3, 4($s0) -/* 0B3FD8 800B33D8 860C0066 */ lh $t4, 0x66($s0) -/* 0B3FDC 800B33DC E608000C */ swc1 $f8, 0xc($s0) -/* 0B3FE0 800B33E0 E6120010 */ swc1 $f18, 0x10($s0) -/* 0B3FE4 800B33E4 46062200 */ add.s $f8, $f4, $f6 -/* 0B3FE8 800B33E8 01F8C821 */ addu $t9, $t7, $t8 -/* 0B3FEC 800B33EC 46105480 */ add.s $f18, $f10, $f16 -/* 0B3FF0 800B33F0 01095021 */ addu $t2, $t0, $t1 -/* 0B3FF4 800B33F4 016C6821 */ addu $t5, $t3, $t4 -/* 0B3FF8 800B33F8 E6080014 */ swc1 $f8, 0x14($s0) -/* 0B3FFC 800B33FC E6120008 */ swc1 $f18, 8($s0) -/* 0B4000 800B3400 A6190000 */ sh $t9, ($s0) -/* 0B4004 800B3404 A60A0002 */ sh $t2, 2($s0) -/* 0B4008 800B3408 A60D0004 */ sh $t5, 4($s0) -/* 0B400C 800B340C E7B40038 */ swc1 $f20, 0x38($sp) -/* 0B4010 800B3410 C6040058 */ lwc1 $f4, 0x58($s0) -/* 0B4014 800B3414 E7B40040 */ swc1 $f20, 0x40($sp) -/* 0B4018 800B3418 46002187 */ neg.s $f6, $f4 -/* 0B401C 800B341C E7A6003C */ swc1 $f6, 0x3c($sp) -/* 0B4020 800B3420 02002025 */ move $a0, $s0 -/* 0B4024 800B3424 0C01C0C8 */ jal f32_vec3_apply_object_rotation -/* 0B4028 800B3428 02602825 */ move $a1, $s3 -/* 0B402C 800B342C C608001C */ lwc1 $f8, 0x1c($s0) -/* 0B4030 800B3430 C7AA0038 */ lwc1 $f10, 0x38($sp) -/* 0B4034 800B3434 C6120020 */ lwc1 $f18, 0x20($s0) -/* 0B4038 800B3438 460A4400 */ add.s $f16, $f8, $f10 -/* 0B403C 800B343C C60A0068 */ lwc1 $f10, 0x68($s0) -/* 0B4040 800B3440 E610001C */ swc1 $f16, 0x1c($s0) -/* 0B4044 800B3444 C7A4003C */ lwc1 $f4, 0x3c($sp) -/* 0B4048 800B3448 00000000 */ nop -/* 0B404C 800B344C 46049180 */ add.s $f6, $f18, $f4 -/* 0B4050 800B3450 C6120024 */ lwc1 $f18, 0x24($s0) -/* 0B4054 800B3454 E6060020 */ swc1 $f6, 0x20($s0) -/* 0B4058 800B3458 C6080020 */ lwc1 $f8, 0x20($s0) -/* 0B405C 800B345C 00000000 */ nop -/* 0B4060 800B3460 460A4401 */ sub.s $f16, $f8, $f10 -/* 0B4064 800B3464 E6100020 */ swc1 $f16, 0x20($s0) -/* 0B4068 800B3468 C7A40040 */ lwc1 $f4, 0x40($sp) -/* 0B406C 800B346C 00000000 */ nop -/* 0B4070 800B3470 46049180 */ add.s $f6, $f18, $f4 -/* 0B4074 800B3474 E6060024 */ swc1 $f6, 0x24($s0) -/* 0B4078 800B3478 8E4E0000 */ lw $t6, ($s2) -/* 0B407C 800B347C 00000000 */ nop -/* 0B4080 800B3480 022E102A */ slt $v0, $s1, $t6 -/* 0B4084 800B3484 1440FFC5 */ bnez $v0, .L800B339C -/* 0B4088 800B3488 26310001 */ addiu $s1, $s1, 1 -.L800B348C: -/* 0B408C 800B348C 8FBF002C */ lw $ra, 0x2c($sp) -/* 0B4090 800B3490 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 0B4094 800B3494 C7B40014 */ lwc1 $f20, 0x14($sp) -/* 0B4098 800B3498 8FB0001C */ lw $s0, 0x1c($sp) -/* 0B409C 800B349C 8FB10020 */ lw $s1, 0x20($sp) -/* 0B40A0 800B34A0 8FB20024 */ lw $s2, 0x24($sp) -/* 0B40A4 800B34A4 8FB30028 */ lw $s3, 0x28($sp) -/* 0B40A8 800B34A8 03E00008 */ jr $ra -/* 0B40AC 800B34AC 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/asm/non_matchings/particles/func_800B34B0.s b/asm/non_matchings/particles/func_800B34B0.s deleted file mode 100644 index d0c16a4c..00000000 --- a/asm/non_matchings/particles/func_800B34B0.s +++ /dev/null @@ -1,49 +0,0 @@ -glabel func_800B34B0 -/* 0B40B0 800B34B0 3C058012 */ lui $a1, %hi(D_80127C80) # $a1, 0x8012 -/* 0B40B4 800B34B4 24A57C80 */ addiu $a1, %lo(D_80127C80) # addiu $a1, $a1, 0x7c80 -/* 0B40B8 800B34B8 8CA20000 */ lw $v0, ($a1) -/* 0B40BC 800B34BC 24030001 */ li $v1, 1 -/* 0B40C0 800B34C0 0002702A */ slt $t6, $zero, $v0 -/* 0B40C4 800B34C4 11C00025 */ beqz $t6, .L800B355C -/* 0B40C8 800B34C8 00000000 */ nop -.L800B34CC: -/* 0B40CC 800B34CC C484000C */ lwc1 $f4, 0xc($a0) -/* 0B40D0 800B34D0 C486001C */ lwc1 $f6, 0x1c($a0) -/* 0B40D4 800B34D4 C4800020 */ lwc1 $f0, 0x20($a0) -/* 0B40D8 800B34D8 C48A0010 */ lwc1 $f10, 0x10($a0) -/* 0B40DC 800B34DC C4920068 */ lwc1 $f18, 0x68($a0) -/* 0B40E0 800B34E0 46062200 */ add.s $f8, $f4, $f6 -/* 0B40E4 800B34E4 C4860014 */ lwc1 $f6, 0x14($a0) -/* 0B40E8 800B34E8 46005400 */ add.s $f16, $f10, $f0 -/* 0B40EC 800B34EC E488000C */ swc1 $f8, 0xc($a0) -/* 0B40F0 800B34F0 46120101 */ sub.s $f4, $f0, $f18 -/* 0B40F4 800B34F4 E4900010 */ swc1 $f16, 0x10($a0) -/* 0B40F8 800B34F8 C4880024 */ lwc1 $f8, 0x24($a0) -/* 0B40FC 800B34FC C4900008 */ lwc1 $f16, 8($a0) -/* 0B4100 800B3500 C4920028 */ lwc1 $f18, 0x28($a0) -/* 0B4104 800B3504 848F0000 */ lh $t7, ($a0) -/* 0B4108 800B3508 84980062 */ lh $t8, 0x62($a0) -/* 0B410C 800B350C 84880002 */ lh $t0, 2($a0) -/* 0B4110 800B3510 84890064 */ lh $t1, 0x64($a0) -/* 0B4114 800B3514 848B0004 */ lh $t3, 4($a0) -/* 0B4118 800B3518 848C0066 */ lh $t4, 0x66($a0) -/* 0B411C 800B351C E4840020 */ swc1 $f4, 0x20($a0) -/* 0B4120 800B3520 46083280 */ add.s $f10, $f6, $f8 -/* 0B4124 800B3524 01F8C821 */ addu $t9, $t7, $t8 -/* 0B4128 800B3528 46128100 */ add.s $f4, $f16, $f18 -/* 0B412C 800B352C 01095021 */ addu $t2, $t0, $t1 -/* 0B4130 800B3530 016C6821 */ addu $t5, $t3, $t4 -/* 0B4134 800B3534 E48A0014 */ swc1 $f10, 0x14($a0) -/* 0B4138 800B3538 E4840008 */ swc1 $f4, 8($a0) -/* 0B413C 800B353C A4990000 */ sh $t9, ($a0) -/* 0B4140 800B3540 A48A0002 */ sh $t2, 2($a0) -/* 0B4144 800B3544 A48D0004 */ sh $t5, 4($a0) -/* 0B4148 800B3548 8CAE0000 */ lw $t6, ($a1) -/* 0B414C 800B354C 00000000 */ nop -/* 0B4150 800B3550 006E102A */ slt $v0, $v1, $t6 -/* 0B4154 800B3554 1440FFDD */ bnez $v0, .L800B34CC -/* 0B4158 800B3558 24630001 */ addiu $v1, $v1, 1 -.L800B355C: -/* 0B415C 800B355C 03E00008 */ jr $ra -/* 0B4160 800B3560 00000000 */ nop - diff --git a/asm/non_matchings/particles/func_800B45C4.s b/asm/non_matchings/particles/func_800B45C4.s deleted file mode 100644 index 1058cd63..00000000 --- a/asm/non_matchings/particles/func_800B45C4.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel func_800B45C4 -/* 0B51C4 800B45C4 8C8E0000 */ lw $t6, ($a0) -/* 0B51C8 800B45C8 3C05800E */ lui $a1, %hi(gParticleBehavioursAssetTableCount) # $a1, 0x800e -/* 0B51CC 800B45CC 25C30001 */ addiu $v1, $t6, 1 -/* 0B51D0 800B45D0 24A52CF4 */ addiu $a1, %lo(gParticleBehavioursAssetTableCount) # addiu $a1, $a1, 0x2cf4 -/* 0B51D4 800B45D4 AC830000 */ sw $v1, ($a0) -/* 0B51D8 800B45D8 8CA20000 */ lw $v0, ($a1) -/* 0B51DC 800B45DC 3C19800E */ lui $t9, %hi(gParticleBehavioursAssetTable) # $t9, 0x800e -/* 0B51E0 800B45E0 0062082A */ slt $at, $v1, $v0 -/* 0B51E4 800B45E4 14200007 */ bnez $at, .L800B4604 -/* 0B51E8 800B45E8 0062C023 */ subu $t8, $v1, $v0 -.L800B45EC: -/* 0B51EC 800B45EC AC980000 */ sw $t8, ($a0) -/* 0B51F0 800B45F0 8CA20000 */ lw $v0, ($a1) -/* 0B51F4 800B45F4 03001825 */ move $v1, $t8 -/* 0B51F8 800B45F8 0302082A */ slt $at, $t8, $v0 -/* 0B51FC 800B45FC 1020FFFB */ beqz $at, .L800B45EC -/* 0B5200 800B4600 0062C023 */ subu $t8, $v1, $v0 -.L800B4604: -/* 0B5204 800B4604 8F392CFC */ lw $t9, %lo(gParticleBehavioursAssetTable)($t9) -/* 0B5208 800B4608 00034080 */ sll $t0, $v1, 2 -/* 0B520C 800B460C 03284821 */ addu $t1, $t9, $t0 -/* 0B5210 800B4610 8D220000 */ lw $v0, ($t1) -/* 0B5214 800B4614 03E00008 */ jr $ra -/* 0B5218 800B4618 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/particles/func_800B461C.s b/asm/non_matchings/particles/func_800B461C.s deleted file mode 100644 index b4e024a0..00000000 --- a/asm/non_matchings/particles/func_800B461C.s +++ /dev/null @@ -1,22 +0,0 @@ -glabel func_800B461C -/* 0B521C 800B461C 8C8E0000 */ lw $t6, ($a0) -/* 0B5220 800B4620 3C08800E */ lui $t0, %hi(gParticleBehavioursAssetTable) # $t0, 0x800e -/* 0B5224 800B4624 25C3FFFF */ addiu $v1, $t6, -1 -/* 0B5228 800B4628 04610009 */ bgez $v1, .L800B4650 -/* 0B522C 800B462C AC830000 */ sw $v1, ($a0) -/* 0B5230 800B4630 3C02800E */ lui $v0, %hi(gParticleBehavioursAssetTableCount) # $v0, 0x800e -/* 0B5234 800B4634 24422CF4 */ addiu $v0, %lo(gParticleBehavioursAssetTableCount) # addiu $v0, $v0, 0x2cf4 -.L800B4638: -/* 0B5238 800B4638 8C580000 */ lw $t8, ($v0) -/* 0B523C 800B463C 00000000 */ nop -/* 0B5240 800B4640 0078C821 */ addu $t9, $v1, $t8 -/* 0B5244 800B4644 AC990000 */ sw $t9, ($a0) -/* 0B5248 800B4648 0720FFFB */ bltz $t9, .L800B4638 -/* 0B524C 800B464C 03201825 */ move $v1, $t9 -.L800B4650: -/* 0B5250 800B4650 8D082CFC */ lw $t0, %lo(gParticleBehavioursAssetTable)($t0) -/* 0B5254 800B4654 00034880 */ sll $t1, $v1, 2 -/* 0B5258 800B4658 01095021 */ addu $t2, $t0, $t1 -/* 0B525C 800B465C 8D420000 */ lw $v0, ($t2) -/* 0B5260 800B4660 03E00008 */ jr $ra -/* 0B5264 800B4664 00000000 */ nop \ No newline at end of file diff --git a/asm/non_matchings/particles/func_800B4668.s b/asm/non_matchings/particles/func_800B4668.s deleted file mode 100644 index 1b44ca05..00000000 --- a/asm/non_matchings/particles/func_800B4668.s +++ /dev/null @@ -1,25 +0,0 @@ -glabel func_800B4668 -/* 0B5268 800B4668 8C8F006C */ lw $t7, 0x6c($a0) -/* 0B526C 800B466C 00051940 */ sll $v1, $a1, 5 -/* 0B5270 800B4670 01E34021 */ addu $t0, $t7, $v1 -/* 0B5274 800B4674 8518000A */ lh $t8, 0xa($t0) -/* 0B5278 800B4678 00077200 */ sll $t6, $a3, 8 -/* 0B527C 800B467C 3319FFFF */ andi $t9, $t8, 0xffff -/* 0B5280 800B4680 03261021 */ addu $v0, $t9, $a2 -/* 0B5284 800B4684 01C2082A */ slt $at, $t6, $v0 -/* 0B5288 800B4688 10200003 */ beqz $at, .L800B4698 -/* 0B528C 800B468C 00000000 */ nop -/* 0B5290 800B4690 10000002 */ b .L800B469C -/* 0B5294 800B4694 A50E000A */ sh $t6, 0xa($t0) -.L800B4698: -/* 0B5298 800B4698 A502000A */ sh $v0, 0xa($t0) -.L800B469C: -/* 0B529C 800B469C 8C89006C */ lw $t1, 0x6c($a0) -/* 0B52A0 800B46A0 00000000 */ nop -/* 0B52A4 800B46A4 01234021 */ addu $t0, $t1, $v1 -/* 0B52A8 800B46A8 850A0004 */ lh $t2, 4($t0) -/* 0B52AC 800B46AC 00000000 */ nop -/* 0B52B0 800B46B0 354B0100 */ ori $t3, $t2, 0x100 -/* 0B52B4 800B46B4 03E00008 */ jr $ra -/* 0B52B8 800B46B8 A50B0004 */ sh $t3, 4($t0) - diff --git a/asm/non_matchings/particles/func_800B46BC.s b/asm/non_matchings/particles/func_800B46BC.s deleted file mode 100644 index 36fe19cf..00000000 --- a/asm/non_matchings/particles/func_800B46BC.s +++ /dev/null @@ -1,180 +0,0 @@ -glabel func_800B46BC -/* 0B52BC 800B46BC 8C8F006C */ lw $t7, 0x6c($a0) -/* 0B52C0 800B46C0 00051940 */ sll $v1, $a1, 5 -/* 0B52C4 800B46C4 01E34021 */ addu $t0, $t7, $v1 -/* 0B52C8 800B46C8 8518000A */ lh $t8, 0xa($t0) -/* 0B52CC 800B46CC 00077200 */ sll $t6, $a3, 8 -/* 0B52D0 800B46D0 3319FFFF */ andi $t9, $t8, 0xffff -/* 0B52D4 800B46D4 03261023 */ subu $v0, $t9, $a2 -/* 0B52D8 800B46D8 004E082A */ slt $at, $v0, $t6 -/* 0B52DC 800B46DC 10200003 */ beqz $at, .L800B46EC -/* 0B52E0 800B46E0 00000000 */ nop -/* 0B52E4 800B46E4 10000002 */ b .L800B46F0 -/* 0B52E8 800B46E8 A50E000A */ sh $t6, 0xa($t0) -.L800B46EC: -/* 0B52EC 800B46EC A502000A */ sh $v0, 0xa($t0) -.L800B46F0: -/* 0B52F0 800B46F0 8C89006C */ lw $t1, 0x6c($a0) -/* 0B52F4 800B46F4 00000000 */ nop -/* 0B52F8 800B46F8 01234021 */ addu $t0, $t1, $v1 -/* 0B52FC 800B46FC 850A0004 */ lh $t2, 4($t0) -/* 0B5300 800B4700 00000000 */ nop -/* 0B5304 800B4704 354B0100 */ ori $t3, $t2, 0x100 -/* 0B5308 800B4708 03E00008 */ jr $ra -/* 0B530C 800B470C A50B0004 */ sh $t3, 4($t0) - -/* 0B5310 800B4710 90A20000 */ lbu $v0, ($a1) -/* 0B5314 800B4714 00801825 */ move $v1, $a0 -/* 0B5318 800B4718 24840001 */ addiu $a0, $a0, 1 -/* 0B531C 800B471C 24A50001 */ addiu $a1, $a1, 1 -/* 0B5320 800B4720 10400006 */ beqz $v0, .L800B473C -/* 0B5324 800B4724 A082FFFF */ sb $v0, -1($a0) -.L800B4728: -/* 0B5328 800B4728 90A20000 */ lbu $v0, ($a1) -/* 0B532C 800B472C 24840001 */ addiu $a0, $a0, 1 -/* 0B5330 800B4730 24A50001 */ addiu $a1, $a1, 1 -/* 0B5334 800B4734 1440FFFC */ bnez $v0, .L800B4728 -/* 0B5338 800B4738 A082FFFF */ sb $v0, -1($a0) -.L800B473C: -/* 0B533C 800B473C 03E00008 */ jr $ra -/* 0B5340 800B4740 00601025 */ move $v0, $v1 - -/* 0B5344 800B4744 908E0000 */ lbu $t6, ($a0) -/* 0B5348 800B4748 00801825 */ move $v1, $a0 -/* 0B534C 800B474C 11C00005 */ beqz $t6, .L800B4764 -/* 0B5350 800B4750 00000000 */ nop -.L800B4754: -/* 0B5354 800B4754 908F0001 */ lbu $t7, 1($a0) -/* 0B5358 800B4758 24840001 */ addiu $a0, $a0, 1 -/* 0B535C 800B475C 15E0FFFD */ bnez $t7, .L800B4754 -/* 0B5360 800B4760 00000000 */ nop -.L800B4764: -/* 0B5364 800B4764 90A20000 */ lbu $v0, ($a1) -/* 0B5368 800B4768 24840001 */ addiu $a0, $a0, 1 -/* 0B536C 800B476C 24A50001 */ addiu $a1, $a1, 1 -/* 0B5370 800B4770 10400006 */ beqz $v0, .L800B478C -/* 0B5374 800B4774 A082FFFF */ sb $v0, -1($a0) -.L800B4778: -/* 0B5378 800B4778 90A20000 */ lbu $v0, ($a1) -/* 0B537C 800B477C 24840001 */ addiu $a0, $a0, 1 -/* 0B5380 800B4780 24A50001 */ addiu $a1, $a1, 1 -/* 0B5384 800B4784 1440FFFC */ bnez $v0, .L800B4778 -/* 0B5388 800B4788 A082FFFF */ sb $v0, -1($a0) -.L800B478C: -/* 0B538C 800B478C 03E00008 */ jr $ra -/* 0B5390 800B4790 00601025 */ move $v0, $v1 - -/* 0B5394 800B4794 90820000 */ lbu $v0, ($a0) -/* 0B5398 800B4798 00000000 */ nop -/* 0B539C 800B479C 14400005 */ bnez $v0, .L800B47B4 -/* 0B53A0 800B47A0 304600FF */ andi $a2, $v0, 0xff -/* 0B53A4 800B47A4 90AE0000 */ lbu $t6, ($a1) -/* 0B53A8 800B47A8 00000000 */ nop -/* 0B53AC 800B47AC 11C00023 */ beqz $t6, .L800B483C -.L800B47B0: -/* 0B53B0 800B47B0 304600FF */ andi $a2, $v0, 0xff -.L800B47B4: -/* 0B53B4 800B47B4 28C10061 */ slti $at, $a2, 0x61 -/* 0B53B8 800B47B8 90A30000 */ lbu $v1, ($a1) -/* 0B53BC 800B47BC 14200005 */ bnez $at, .L800B47D4 -/* 0B53C0 800B47C0 00C03825 */ move $a3, $a2 -/* 0B53C4 800B47C4 28C1007B */ slti $at, $a2, 0x7b -/* 0B53C8 800B47C8 10200002 */ beqz $at, .L800B47D4 -/* 0B53CC 800B47CC 24C6FFE0 */ addiu $a2, $a2, -0x20 -/* 0B53D0 800B47D0 30C700FF */ andi $a3, $a2, 0xff -.L800B47D4: -/* 0B53D4 800B47D4 306200FF */ andi $v0, $v1, 0xff -/* 0B53D8 800B47D8 28410061 */ slti $at, $v0, 0x61 -/* 0B53DC 800B47DC 14200005 */ bnez $at, .L800B47F4 -/* 0B53E0 800B47E0 00403025 */ move $a2, $v0 -/* 0B53E4 800B47E4 2841007B */ slti $at, $v0, 0x7b -/* 0B53E8 800B47E8 10200002 */ beqz $at, .L800B47F4 -/* 0B53EC 800B47EC 2442FFE0 */ addiu $v0, $v0, -0x20 -/* 0B53F0 800B47F0 304600FF */ andi $a2, $v0, 0xff -.L800B47F4: -/* 0B53F4 800B47F4 00E6082A */ slt $at, $a3, $a2 -/* 0B53F8 800B47F8 10200004 */ beqz $at, .L800B480C -/* 0B53FC 800B47FC 00C7082A */ slt $at, $a2, $a3 -/* 0B5400 800B4800 03E00008 */ jr $ra -/* 0B5404 800B4804 2402FFFF */ li $v0, -1 - -/* 0B5408 800B4808 00C7082A */ slt $at, $a2, $a3 -.L800B480C: -/* 0B540C 800B480C 10200003 */ beqz $at, .L800B481C -/* 0B5410 800B4810 00000000 */ nop -/* 0B5414 800B4814 03E00008 */ jr $ra -/* 0B5418 800B4818 24020001 */ li $v0, 1 - -.L800B481C: -/* 0B541C 800B481C 90820001 */ lbu $v0, 1($a0) -/* 0B5420 800B4820 24840001 */ addiu $a0, $a0, 1 -/* 0B5424 800B4824 1440FFE2 */ bnez $v0, .L800B47B0 -/* 0B5428 800B4828 24A50001 */ addiu $a1, $a1, 1 -/* 0B542C 800B482C 90B90000 */ lbu $t9, ($a1) -/* 0B5430 800B4830 00000000 */ nop -/* 0B5434 800B4834 1720FFDF */ bnez $t9, .L800B47B4 -/* 0B5438 800B4838 304600FF */ andi $a2, $v0, 0xff -.L800B483C: -/* 0B543C 800B483C 00001025 */ move $v0, $zero -/* 0B5440 800B4840 03E00008 */ jr $ra -/* 0B5444 800B4844 00000000 */ nop - -/* 0B5448 800B4848 90820000 */ lbu $v0, ($a0) -/* 0B544C 800B484C 00000000 */ nop -/* 0B5450 800B4850 14400005 */ bnez $v0, .L800B4868 -/* 0B5454 800B4854 00000000 */ nop -/* 0B5458 800B4858 90AE0000 */ lbu $t6, ($a1) -/* 0B545C 800B485C 00000000 */ nop -/* 0B5460 800B4860 11C00027 */ beqz $t6, .L800B4900 -/* 0B5464 800B4864 00000000 */ nop -.L800B4868: -/* 0B5468 800B4868 10C00025 */ beqz $a2, .L800B4900 -/* 0B546C 800B486C 304700FF */ andi $a3, $v0, 0xff -.L800B4870: -/* 0B5470 800B4870 28E10061 */ slti $at, $a3, 0x61 -/* 0B5474 800B4874 90A30000 */ lbu $v1, ($a1) -/* 0B5478 800B4878 14200005 */ bnez $at, .L800B4890 -/* 0B547C 800B487C 00E04025 */ move $t0, $a3 -/* 0B5480 800B4880 28E1007B */ slti $at, $a3, 0x7b -/* 0B5484 800B4884 10200002 */ beqz $at, .L800B4890 -/* 0B5488 800B4888 24E7FFE0 */ addiu $a3, $a3, -0x20 -/* 0B548C 800B488C 30E800FF */ andi $t0, $a3, 0xff -.L800B4890: -/* 0B5490 800B4890 306200FF */ andi $v0, $v1, 0xff -/* 0B5494 800B4894 28410061 */ slti $at, $v0, 0x61 -/* 0B5498 800B4898 14200005 */ bnez $at, .L800B48B0 -/* 0B549C 800B489C 00403825 */ move $a3, $v0 -/* 0B54A0 800B48A0 2841007B */ slti $at, $v0, 0x7b -/* 0B54A4 800B48A4 10200002 */ beqz $at, .L800B48B0 -/* 0B54A8 800B48A8 2442FFE0 */ addiu $v0, $v0, -0x20 -/* 0B54AC 800B48AC 304700FF */ andi $a3, $v0, 0xff -.L800B48B0: -/* 0B54B0 800B48B0 0107082A */ slt $at, $t0, $a3 -/* 0B54B4 800B48B4 10200003 */ beqz $at, .L800B48C4 -/* 0B54B8 800B48B8 24840001 */ addiu $a0, $a0, 1 -/* 0B54BC 800B48BC 03E00008 */ jr $ra -/* 0B54C0 800B48C0 2402FFFF */ li $v0, -1 - -.L800B48C4: -/* 0B54C4 800B48C4 00E8082A */ slt $at, $a3, $t0 -/* 0B54C8 800B48C8 10200003 */ beqz $at, .L800B48D8 -/* 0B54CC 800B48CC 00000000 */ nop -/* 0B54D0 800B48D0 03E00008 */ jr $ra -/* 0B54D4 800B48D4 24020001 */ li $v0, 1 - -.L800B48D8: -/* 0B54D8 800B48D8 90820000 */ lbu $v0, ($a0) -/* 0B54DC 800B48DC 24A50001 */ addiu $a1, $a1, 1 -/* 0B54E0 800B48E0 14400005 */ bnez $v0, .L800B48F8 -/* 0B54E4 800B48E4 24C6FFFF */ addiu $a2, $a2, -1 -/* 0B54E8 800B48E8 90B90000 */ lbu $t9, ($a1) -/* 0B54EC 800B48EC 00000000 */ nop -/* 0B54F0 800B48F0 13200003 */ beqz $t9, .L800B4900 -/* 0B54F4 800B48F4 00000000 */ nop -.L800B48F8: -/* 0B54F8 800B48F8 14C0FFDD */ bnez $a2, .L800B4870 -/* 0B54FC 800B48FC 304700FF */ andi $a3, $v0, 0xff -.L800B4900: -/* 0B5500 800B4900 00001025 */ move $v0, $zero -/* 0B5504 800B4904 03E00008 */ jr $ra -/* 0B5508 800B4908 00000000 */ nop diff --git a/asm/non_matchings/tracks/func_8002DE30.s b/asm/non_matchings/tracks/func_8002DE30.s deleted file mode 100644 index b5c694a0..00000000 --- a/asm/non_matchings/tracks/func_8002DE30.s +++ /dev/null @@ -1,274 +0,0 @@ -.late_rodata -glabel D_800E5F40 -.double 0.2 - -.text -glabel func_8002DE30 -/* 02EA30 8002DE30 27BDFF68 */ addiu $sp, $sp, -0x98 -/* 02EA34 8002DE34 444EF800 */ cfc1 $t6, $31 -/* 02EA38 8002DE38 AFBF0054 */ sw $ra, 0x54($sp) -/* 02EA3C 8002DE3C 35C10003 */ ori $at, $t6, 3 -/* 02EA40 8002DE40 AFBE0050 */ sw $fp, 0x50($sp) -/* 02EA44 8002DE44 AFB7004C */ sw $s7, 0x4c($sp) -/* 02EA48 8002DE48 AFB60048 */ sw $s6, 0x48($sp) -/* 02EA4C 8002DE4C AFB50044 */ sw $s5, 0x44($sp) -/* 02EA50 8002DE50 AFB40040 */ sw $s4, 0x40($sp) -/* 02EA54 8002DE54 AFB3003C */ sw $s3, 0x3c($sp) -/* 02EA58 8002DE58 AFB20038 */ sw $s2, 0x38($sp) -/* 02EA5C 8002DE5C AFB10034 */ sw $s1, 0x34($sp) -/* 02EA60 8002DE60 AFB00030 */ sw $s0, 0x30($sp) -/* 02EA64 8002DE64 E7B70028 */ swc1 $f23, 0x28($sp) -/* 02EA68 8002DE68 E7B6002C */ swc1 $f22, 0x2c($sp) -/* 02EA6C 8002DE6C E7B50020 */ swc1 $f21, 0x20($sp) -/* 02EA70 8002DE70 E7B40024 */ swc1 $f20, 0x24($sp) -/* 02EA74 8002DE74 38210002 */ xori $at, $at, 2 -/* 02EA78 8002DE78 44C1F800 */ ctc1 $at, $31 -/* 02EA7C 8002DE7C C4840010 */ lwc1 $f4, 0x10($a0) -/* 02EA80 8002DE80 8C850040 */ lw $a1, 0x40($a0) -/* 02EA84 8002DE84 460021A4 */ cvt.w.s $f6, $f4 -/* 02EA88 8002DE88 84AF0044 */ lh $t7, 0x44($a1) -/* 02EA8C 8002DE8C 44023000 */ mfc1 $v0, $f6 -/* 02EA90 8002DE90 2401FFFF */ li $at, -1 -/* 02EA94 8002DE94 004FC021 */ addu $t8, $v0, $t7 -/* 02EA98 8002DE98 AFB80094 */ sw $t8, 0x94($sp) -/* 02EA9C 8002DE9C 84B90042 */ lh $t9, 0x42($a1) -/* 02EAA0 8002DEA0 44CEF800 */ ctc1 $t6, $31 -/* 02EAA4 8002DEA4 00596021 */ addu $t4, $v0, $t9 -/* 02EAA8 8002DEA8 AFAC0090 */ sw $t4, 0x90($sp) -/* 02EAAC 8002DEAC 8483002E */ lh $v1, 0x2e($a0) -/* 02EAB0 8002DEB0 0080B025 */ move $s6, $a0 -/* 02EAB4 8002DEB4 106100CF */ beq $v1, $at, .L8002E1F4 -/* 02EAB8 8002DEB8 0000B825 */ move $s7, $zero -/* 02EABC 8002DEBC 3C014180 */ li $at, 0x41800000 # 16.000000 -/* 02EAC0 8002DEC0 44816000 */ mtc1 $at, $f12 -/* 02EAC4 8002DEC4 C6C0000C */ lwc1 $f0, 0xc($s6) -/* 02EAC8 8002DEC8 C6C20014 */ lwc1 $f2, 0x14($s6) -/* 02EACC 8002DECC 460C0201 */ sub.s $f8, $f0, $f12 -/* 02EAD0 8002DED0 3C10800E */ lui $s0, %hi(gCurrentLevelModel) # $s0, 0x800e -/* 02EAD4 8002DED4 4458F800 */ cfc1 $t8, $31 -/* 02EAD8 8002DED8 2610C918 */ addiu $s0, %lo(gCurrentLevelModel) # addiu $s0, $s0, -0x36e8 -/* 02EADC 8002DEDC 37010003 */ ori $at, $t8, 3 -/* 02EAE0 8002DEE0 38210002 */ xori $at, $at, 2 -/* 02EAE4 8002DEE4 44C1F800 */ ctc1 $at, $31 -/* 02EAE8 8002DEE8 8E0D0000 */ lw $t5, ($s0) -/* 02EAEC 8002DEEC 460042A4 */ cvt.w.s $f10, $f8 -/* 02EAF0 8002DEF0 8DAE0008 */ lw $t6, 8($t5) -/* 02EAF4 8002DEF4 44D8F800 */ ctc1 $t8, $31 -/* 02EAF8 8002DEF8 00037880 */ sll $t7, $v1, 2 -/* 02EAFC 8002DEFC 460C1401 */ sub.s $f16, $f2, $f12 -/* 02EB00 8002DF00 01E37823 */ subu $t7, $t7, $v1 -/* 02EB04 8002DF04 4459F800 */ cfc1 $t9, $31 -/* 02EB08 8002DF08 44055000 */ mfc1 $a1, $f10 -/* 02EB0C 8002DF0C 37210003 */ ori $at, $t9, 3 -/* 02EB10 8002DF10 38210002 */ xori $at, $at, 2 -/* 02EB14 8002DF14 44C1F800 */ ctc1 $at, $31 -/* 02EB18 8002DF18 000F7880 */ sll $t7, $t7, 2 -/* 02EB1C 8002DF1C 460084A4 */ cvt.w.s $f18, $f16 -/* 02EB20 8002DF20 01CF2021 */ addu $a0, $t6, $t7 -/* 02EB24 8002DF24 44D9F800 */ ctc1 $t9, $31 -/* 02EB28 8002DF28 44069000 */ mfc1 $a2, $f18 -/* 02EB2C 8002DF2C 460C0100 */ add.s $f4, $f0, $f12 -/* 02EB30 8002DF30 AFA3008C */ sw $v1, 0x8c($sp) -/* 02EB34 8002DF34 444CF800 */ cfc1 $t4, $31 -/* 02EB38 8002DF38 00000000 */ nop -/* 02EB3C 8002DF3C 35810003 */ ori $at, $t4, 3 -/* 02EB40 8002DF40 38210002 */ xori $at, $at, 2 -/* 02EB44 8002DF44 44C1F800 */ ctc1 $at, $31 -/* 02EB48 8002DF48 00000000 */ nop -/* 02EB4C 8002DF4C 460021A4 */ cvt.w.s $f6, $f4 -/* 02EB50 8002DF50 44CCF800 */ ctc1 $t4, $31 -/* 02EB54 8002DF54 44073000 */ mfc1 $a3, $f6 -/* 02EB58 8002DF58 460C1200 */ add.s $f8, $f2, $f12 -/* 02EB5C 8002DF5C 444DF800 */ cfc1 $t5, $31 -/* 02EB60 8002DF60 00000000 */ nop -/* 02EB64 8002DF64 35A10003 */ ori $at, $t5, 3 -/* 02EB68 8002DF68 38210002 */ xori $at, $at, 2 -/* 02EB6C 8002DF6C 44C1F800 */ ctc1 $at, $31 -/* 02EB70 8002DF70 00000000 */ nop -/* 02EB74 8002DF74 460042A4 */ cvt.w.s $f10, $f8 -/* 02EB78 8002DF78 440E5000 */ mfc1 $t6, $f10 -/* 02EB7C 8002DF7C 44CDF800 */ ctc1 $t5, $31 -/* 02EB80 8002DF80 0C00C537 */ jal func_800314DC -/* 02EB84 8002DF84 AFAE0010 */ sw $t6, 0x10($sp) -/* 02EB88 8002DF88 8FA3008C */ lw $v1, 0x8c($sp) -/* 02EB8C 8002DF8C 8E0F0000 */ lw $t7, ($s0) -/* 02EB90 8002DF90 0003C900 */ sll $t9, $v1, 4 -/* 02EB94 8002DF94 8DF80004 */ lw $t8, 4($t7) -/* 02EB98 8002DF98 0323C821 */ addu $t9, $t9, $v1 -/* 02EB9C 8002DF9C 0019C880 */ sll $t9, $t9, 2 -/* 02EBA0 8002DFA0 AFA00078 */ sw $zero, 0x78($sp) -/* 02EBA4 8002DFA4 0319A821 */ addu $s5, $t8, $t9 -/* 02EBA8 8002DFA8 86AC0020 */ lh $t4, 0x20($s5) -/* 02EBAC 8002DFAC 00405825 */ move $t3, $v0 -/* 02EBB0 8002DFB0 19800090 */ blez $t4, .L8002E1F4 -/* 02EBB4 8002DFB4 00005025 */ move $t2, $zero -/* 02EBB8 8002DFB8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 02EBBC 8002DFBC 4481B000 */ mtc1 $at, $f22 -/* 02EBC0 8002DFC0 3C01800E */ lui $at, %hi(D_800E5F40 + 4) # $at, 0x800e -/* 02EBC4 8002DFC4 C4355F40 */ lwc1 $f21, %lo(D_800E5F40)($at) -/* 02EBC8 8002DFC8 C4345F44 */ lwc1 $f20, %lo(D_800E5F40 + 4)($at) -/* 02EBCC 8002DFCC 8EA2000C */ lw $v0, 0xc($s5) -/* 02EBD0 8002DFD0 24120003 */ li $s2, 3 -/* 02EBD4 8002DFD4 2411000A */ li $s1, 10 -.L8002DFD8: -/* 02EBD8 8002DFD8 8C430008 */ lw $v1, 8($v0) -/* 02EBDC 8002DFDC 00000000 */ nop -/* 02EBE0 8002DFE0 306E6900 */ andi $t6, $v1, 0x6900 -/* 02EBE4 8002DFE4 15C00078 */ bnez $t6, .L8002E1C8 -/* 02EBE8 8002DFE8 0003F4C2 */ srl $fp, $v1, 0x13 -/* 02EBEC 8002DFEC 84580002 */ lh $t8, 2($v0) -/* 02EBF0 8002DFF0 84530004 */ lh $s3, 4($v0) -/* 02EBF4 8002DFF4 844D0010 */ lh $t5, 0x10($v0) -/* 02EBF8 8002DFF8 0018C880 */ sll $t9, $t8, 2 -/* 02EBFC 8002DFFC 8EAC0000 */ lw $t4, ($s5) -/* 02EC00 8002E000 0338C821 */ addu $t9, $t9, $t8 -/* 02EC04 8002E004 33CF0007 */ andi $t7, $fp, 7 -/* 02EC08 8002E008 0019C840 */ sll $t9, $t9, 1 -/* 02EC0C 8002E00C 026D082A */ slt $at, $s3, $t5 -/* 02EC10 8002E010 01E0F025 */ move $fp, $t7 -/* 02EC14 8002E014 1020006C */ beqz $at, .L8002E1C8 -/* 02EC18 8002E018 032C8021 */ addu $s0, $t9, $t4 -/* 02EC1C 8002E01C 16E0006A */ bnez $s7, .L8002E1C8 -/* 02EC20 8002E020 0013A040 */ sll $s4, $s3, 1 -.L8002E024: -/* 02EC24 8002E024 8EAE0010 */ lw $t6, 0x10($s5) -/* 02EC28 8002E028 00000000 */ nop -/* 02EC2C 8002E02C 01D47821 */ addu $t7, $t6, $s4 -/* 02EC30 8002E030 85F80000 */ lh $t8, ($t7) -/* 02EC34 8002E034 00000000 */ nop -/* 02EC38 8002E038 030B1024 */ and $v0, $t8, $t3 -/* 02EC3C 8002E03C 305900FF */ andi $t9, $v0, 0xff -/* 02EC40 8002E040 13200057 */ beqz $t9, .L8002E1A0 -/* 02EC44 8002E044 304CFF00 */ andi $t4, $v0, 0xff00 -/* 02EC48 8002E048 11800055 */ beqz $t4, .L8002E1A0 -/* 02EC4C 8002E04C 00000000 */ nop -/* 02EC50 8002E050 8EAD0004 */ lw $t5, 4($s5) -/* 02EC54 8002E054 00137100 */ sll $t6, $s3, 4 -/* 02EC58 8002E058 01AE4021 */ addu $t0, $t5, $t6 -/* 02EC5C 8002E05C 910F0001 */ lbu $t7, 1($t0) -/* 02EC60 8002E060 8FAE0090 */ lw $t6, 0x90($sp) -/* 02EC64 8002E064 01F10019 */ multu $t7, $s1 -/* 02EC68 8002E068 8FAF0094 */ lw $t7, 0x94($sp) -/* 02EC6C 8002E06C 25040001 */ addiu $a0, $t0, 1 -/* 02EC70 8002E070 24030001 */ li $v1, 1 -/* 02EC74 8002E074 00004812 */ mflo $t1 -/* 02EC78 8002E078 0209C021 */ addu $t8, $s0, $t1 -/* 02EC7C 8002E07C 87050002 */ lh $a1, 2($t8) -/* 02EC80 8002E080 00000000 */ nop -/* 02EC84 8002E084 00A03025 */ move $a2, $a1 -.L8002E088: -/* 02EC88 8002E088 90990001 */ lbu $t9, 1($a0) -/* 02EC8C 8002E08C 24630001 */ addiu $v1, $v1, 1 -/* 02EC90 8002E090 03310019 */ multu $t9, $s1 -/* 02EC94 8002E094 00006012 */ mflo $t4 -/* 02EC98 8002E098 020C6821 */ addu $t5, $s0, $t4 -/* 02EC9C 8002E09C 85A20002 */ lh $v0, 2($t5) -/* 02ECA0 8002E0A0 00000000 */ nop -/* 02ECA4 8002E0A4 0045082A */ slt $at, $v0, $a1 -/* 02ECA8 8002E0A8 10200004 */ beqz $at, .L8002E0BC -/* 02ECAC 8002E0AC 00C2082A */ slt $at, $a2, $v0 -/* 02ECB0 8002E0B0 10000005 */ b .L8002E0C8 -/* 02ECB4 8002E0B4 00402825 */ move $a1, $v0 -/* 02ECB8 8002E0B8 00C2082A */ slt $at, $a2, $v0 -.L8002E0BC: -/* 02ECBC 8002E0BC 10200002 */ beqz $at, .L8002E0C8 -/* 02ECC0 8002E0C0 00000000 */ nop -/* 02ECC4 8002E0C4 00403025 */ move $a2, $v0 -.L8002E0C8: -/* 02ECC8 8002E0C8 1472FFEF */ bne $v1, $s2, .L8002E088 -/* 02ECCC 8002E0CC 24840001 */ addiu $a0, $a0, 1 -/* 02ECD0 8002E0D0 00CE082A */ slt $at, $a2, $t6 -/* 02ECD4 8002E0D4 14200032 */ bnez $at, .L8002E1A0 -/* 02ECD8 8002E0D8 01E5082A */ slt $at, $t7, $a1 -/* 02ECDC 8002E0DC 14200030 */ bnez $at, .L8002E1A0 -/* 02ECE0 8002E0E0 00000000 */ nop -/* 02ECE4 8002E0E4 910C0002 */ lbu $t4, 2($t0) -/* 02ECE8 8002E0E8 4458F800 */ cfc1 $t8, $31 -/* 02ECEC 8002E0EC 01910019 */ multu $t4, $s1 -/* 02ECF0 8002E0F0 37010003 */ ori $at, $t8, 3 -/* 02ECF4 8002E0F4 38210002 */ xori $at, $at, 2 -/* 02ECF8 8002E0F8 44C1F800 */ ctc1 $at, $31 -/* 02ECFC 8002E0FC C6D0000C */ lwc1 $f16, 0xc($s6) -/* 02ED00 8002E100 910E0003 */ lbu $t6, 3($t0) -/* 02ED04 8002E104 460084A4 */ cvt.w.s $f18, $f16 -/* 02ED08 8002E108 C6C40014 */ lwc1 $f4, 0x14($s6) -/* 02ED0C 8002E10C 44D8F800 */ ctc1 $t8, $31 -/* 02ED10 8002E110 44049000 */ mfc1 $a0, $f18 -/* 02ED14 8002E114 AFAB0088 */ sw $t3, 0x88($sp) -/* 02ED18 8002E118 4459F800 */ cfc1 $t9, $31 -/* 02ED1C 8002E11C 00006812 */ mflo $t5 -/* 02ED20 8002E120 37210003 */ ori $at, $t9, 3 -/* 02ED24 8002E124 38210002 */ xori $at, $at, 2 -/* 02ED28 8002E128 01D10019 */ multu $t6, $s1 -/* 02ED2C 8002E12C 44C1F800 */ ctc1 $at, $31 -/* 02ED30 8002E130 01B03821 */ addu $a3, $t5, $s0 -/* 02ED34 8002E134 460021A4 */ cvt.w.s $f6, $f4 -/* 02ED38 8002E138 AFAA005C */ sw $t2, 0x5c($sp) -/* 02ED3C 8002E13C 44053000 */ mfc1 $a1, $f6 -/* 02ED40 8002E140 44D9F800 */ ctc1 $t9, $31 -/* 02ED44 8002E144 01303021 */ addu $a2, $t1, $s0 -/* 02ED48 8002E148 00007812 */ mflo $t7 -/* 02ED4C 8002E14C 01F0C021 */ addu $t8, $t7, $s0 -/* 02ED50 8002E150 0C01C13C */ jal point_triangle_2d_xz_intersection -/* 02ED54 8002E154 AFB80010 */ sw $t8, 0x10($sp) -/* 02ED58 8002E158 8FAA005C */ lw $t2, 0x5c($sp) -/* 02ED5C 8002E15C 8FAB0088 */ lw $t3, 0x88($sp) -/* 02ED60 8002E160 1040000F */ beqz $v0, .L8002E1A0 -/* 02ED64 8002E164 001EC880 */ sll $t9, $fp, 2 -/* 02ED68 8002E168 3C01800E */ lui $at, %hi(D_800DC884) # $at, 0x800e -/* 02ED6C 8002E16C 00390821 */ addu $at, $at, $t9 -/* 02ED70 8002E170 C42AC884 */ lwc1 $f10, %lo(D_800DC884)($at) -/* 02ED74 8002E174 8EC20054 */ lw $v0, 0x54($s6) -/* 02ED78 8002E178 460AB401 */ sub.s $f16, $f22, $f10 -/* 02ED7C 8002E17C C4400000 */ lwc1 $f0, ($v0) -/* 02ED80 8002E180 24170001 */ li $s7, 1 -/* 02ED84 8002E184 46008481 */ sub.s $f18, $f16, $f0 -/* 02ED88 8002E188 46009121 */ cvt.d.s $f4, $f18 -/* 02ED8C 8002E18C 46342182 */ mul.d $f6, $f4, $f20 -/* 02ED90 8002E190 46000221 */ cvt.d.s $f8, $f0 -/* 02ED94 8002E194 46264280 */ add.d $f10, $f8, $f6 -/* 02ED98 8002E198 46205420 */ cvt.s.d $f16, $f10 -/* 02ED9C 8002E19C E4500000 */ swc1 $f16, ($v0) -.L8002E1A0: -/* 02EDA0 8002E1A0 8EAC000C */ lw $t4, 0xc($s5) -/* 02EDA4 8002E1A4 26730001 */ addiu $s3, $s3, 1 -/* 02EDA8 8002E1A8 018A1021 */ addu $v0, $t4, $t2 -/* 02EDAC 8002E1AC 844D0010 */ lh $t5, 0x10($v0) -/* 02EDB0 8002E1B0 26940002 */ addiu $s4, $s4, 2 -/* 02EDB4 8002E1B4 026D082A */ slt $at, $s3, $t5 -/* 02EDB8 8002E1B8 10200004 */ beqz $at, .L8002E1CC -/* 02EDBC 8002E1BC 8FAE0078 */ lw $t6, 0x78($sp) -/* 02EDC0 8002E1C0 12E0FF98 */ beqz $s7, .L8002E024 -/* 02EDC4 8002E1C4 00000000 */ nop -.L8002E1C8: -/* 02EDC8 8002E1C8 8FAE0078 */ lw $t6, 0x78($sp) -.L8002E1CC: -/* 02EDCC 8002E1CC 254A000C */ addiu $t2, $t2, 0xc -/* 02EDD0 8002E1D0 25CF0001 */ addiu $t7, $t6, 1 -/* 02EDD4 8002E1D4 AFAF0078 */ sw $t7, 0x78($sp) -/* 02EDD8 8002E1D8 86B80020 */ lh $t8, 0x20($s5) -/* 02EDDC 8002E1DC 2442000C */ addiu $v0, $v0, 0xc -/* 02EDE0 8002E1E0 01F8082A */ slt $at, $t7, $t8 -/* 02EDE4 8002E1E4 10200004 */ beqz $at, .L8002E1F8 -/* 02EDE8 8002E1E8 8FBF0054 */ lw $ra, 0x54($sp) -/* 02EDEC 8002E1EC 12E0FF7A */ beqz $s7, .L8002DFD8 -/* 02EDF0 8002E1F0 00000000 */ nop -.L8002E1F4: -/* 02EDF4 8002E1F4 8FBF0054 */ lw $ra, 0x54($sp) -.L8002E1F8: -/* 02EDF8 8002E1F8 C7B50020 */ lwc1 $f21, 0x20($sp) -/* 02EDFC 8002E1FC C7B40024 */ lwc1 $f20, 0x24($sp) -/* 02EE00 8002E200 C7B70028 */ lwc1 $f23, 0x28($sp) -/* 02EE04 8002E204 C7B6002C */ lwc1 $f22, 0x2c($sp) -/* 02EE08 8002E208 8FB00030 */ lw $s0, 0x30($sp) -/* 02EE0C 8002E20C 8FB10034 */ lw $s1, 0x34($sp) -/* 02EE10 8002E210 8FB20038 */ lw $s2, 0x38($sp) -/* 02EE14 8002E214 8FB3003C */ lw $s3, 0x3c($sp) -/* 02EE18 8002E218 8FB40040 */ lw $s4, 0x40($sp) -/* 02EE1C 8002E21C 8FB50044 */ lw $s5, 0x44($sp) -/* 02EE20 8002E220 8FB60048 */ lw $s6, 0x48($sp) -/* 02EE24 8002E224 8FB7004C */ lw $s7, 0x4c($sp) -/* 02EE28 8002E228 8FBE0050 */ lw $fp, 0x50($sp) -/* 02EE2C 8002E22C 03E00008 */ jr $ra -/* 02EE30 8002E230 27BD0098 */ addiu $sp, $sp, 0x98 - diff --git a/asm/non_matchings/unknown_008C40/update_spatial_audio_position.s b/asm/non_matchings/unknown_008C40/update_spatial_audio_position.s deleted file mode 100644 index 9c1c679a..00000000 --- a/asm/non_matchings/unknown_008C40/update_spatial_audio_position.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel update_spatial_audio_position -/* 00A2D8 800096D8 44856000 */ mtc1 $a1, $f12 -/* 00A2DC 800096DC 44867000 */ mtc1 $a2, $f14 -/* 00A2E0 800096E0 AFA7000C */ sw $a3, 0xc($sp) -/* 00A2E4 800096E4 E48C0000 */ swc1 $f12, ($a0) -/* 00A2E8 800096E8 E48E0004 */ swc1 $f14, 4($a0) -/* 00A2EC 800096EC C7A4000C */ lwc1 $f4, 0xc($sp) -/* 00A2F0 800096F0 03E00008 */ jr $ra -/* 00A2F4 800096F4 E4840008 */ swc1 $f4, 8($a0) - diff --git a/include/sound_ids.h b/include/sound_ids.h index 5635c235..2e667bd3 100644 --- a/include/sound_ids.h +++ b/include/sound_ids.h @@ -6,6 +6,7 @@ #define SOUND_VOICE_CHARACTER_POSITIVE SOUND_VOICE_KRUNCH_POSITIVE1 #define SOUND_VOICE_CHARACTER_NEGATIVE SOUND_VOICE_KRUNCH_NEGATIVE1 #define SOUND_HORN_CHARACTER SOUND_HORN_KRUNCH +#define SOUND_NUMBER_OF_RACERS 8 /// Cannot stress enough that these names are very temporary, preliminary, expendable and other words that imply that they are not final. // Also might be worth thinking of a better way of laying this out, because scrolling through hundreds of sound ID's isn't particularly pleasant. @@ -652,7 +653,7 @@ enum SoundID { /* 0x027D */ SOUND_UNK_27D, /* 0x027E */ SOUND_UNK_27E, // Trying to play 27F onwards will incur a crash. -/* 0x027F */ NUM_SOUND_IDS +/* 0x027F */ NUM_SOUND_IDS }; #endif diff --git a/include/structs.h b/include/structs.h index 5257d51c..dbb099ec 100644 --- a/include/structs.h +++ b/include/structs.h @@ -63,6 +63,23 @@ typedef struct Vec4f { }; } Vec4f; +/* Size: 0x24 / 36 bytes */ +typedef struct SoundMask { + /* 0x00 */ Vec3f pos; + /* 0x0C */ u16 soundId; + /* 0x0E */ u8 unkE; + /* 0x0F */ u8 unkF; + /* 0x10 */ u8 unk10; + /* 0x11 */ u8 unk11; + /* 0x12 */ u8 unk12; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ struct SoundMask **soundMask; + /* 0x20 */ u8 unk20; + /* 0x21 */ u8 unk21; + /* 0x22 */ u8 unk22; +} SoundMask; + /* Size: 0x20 bytes */ typedef struct TextureHeader { /* 0x00 */ u8 width; @@ -903,7 +920,7 @@ typedef struct Object_Weapon { /* 0x18 */ u8 weaponID; /* 0x19 */ s8 checkpoint; /* 0x19 */ s16 unk1A; - /* 0x19 */ s32 soundMask; + /* 0x19 */ SoundMask *soundMask; } Object_Weapon; typedef struct Object_Butterfly { @@ -991,7 +1008,7 @@ typedef struct Object_InfoPoint { typedef struct Object_TTDoor { /* 0x00 */ f32 homeY; - /* 0x04 */ s32 *soundMask; + /* 0x04 */ SoundMask *soundMask; /* 0x08 */ s32 unk8; /* 0x0C */ s16 unkC; /* 0x0C */ s8 unkE; @@ -1082,7 +1099,6 @@ typedef struct Object_Exit { /* 0x10 */ s32 radius; // Activation radius. /* 0x14 */ s8 bossFlag; // Dictates boss level version. 0 is first encounter, 1 is rematch. -1 means no boss. } Object_Exit; - /* Size: 0x224 - 548 bytes */ typedef struct Object_Racer { /* 0x000 */ s16 playerIndex; // -1 = AI Controlled, 0 to 3 = Object controlled @@ -1096,7 +1112,7 @@ typedef struct Object_Racer { /* 0x018 */ s32 unk18; /* 0x01C */ s32 unk1C; /* 0x020 */ s32 unk20; - /* 0x024 */ s32 soundMask; + /* 0x024 */ SoundMask *soundMask; /* 0x028 */ u16 lastSoundID; /* 0x02A */ u16 unk2A; /* 0x02C */ f32 velocity; @@ -1181,8 +1197,8 @@ typedef struct Object_Racer { /* 0x175 */ s8 magnetTimer; /* 0x176 */ s16 unk176; /* 0x178 */ void *magnetSoundMask; - /* 0x17C */ s32 shieldSoundMask; - /* 0x180 */ s32 bananaSoundMask; + /* 0x17C */ SoundMask *shieldSoundMask; + /* 0x180 */ SoundMask *bananaSoundMask; /* 0x184 */ s8 magnetModelID; /* 0x185 */ s8 bananas; /* 0x186 */ u8 unk186; @@ -1333,7 +1349,7 @@ typedef struct Object_Audio { /* 0x05 */ u8 unk5; /* 0x06 */ u8 unk6; /* 0x07 */ u8 unk7; - /* 0x08 */ s32 soundMask; + /* 0x08 */ SoundMask *soundMask; /* 0x0C */ u8 unkC; /* 0x0D */ u8 unkD; } Object_Audio; @@ -1418,7 +1434,7 @@ typedef struct Object_TT { typedef struct Object_Bridge_WhaleRamp { /* 0x0 */ f32 unk0; - /* 0x4 */ s32 unk4; + /* 0x4 */ SoundMask *unk4; } Object_Bridge_WhaleRamp; typedef struct Object_8001B7A8 { @@ -1564,9 +1580,11 @@ typedef struct Object_68 { /* Size: 0x20 bytes */ typedef struct Object_6C { - u8 pad0[0x4]; - s16 unk4; - u8 pad6[0x1A]; + /* 0x00 */ u8 pad0[0x4]; + /* 0x04 */ s16 unk4; + /* 0x05 */ u8 pad6[0x4]; + /* 0x0A */ s16 unkA; + /* 0x0C */ u8 padC[0x14]; } Object_6C; /* Size: 0xA0 bytes */ diff --git a/src/game_ui.c b/src/game_ui.c index 053131ad..908015df 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -251,7 +251,7 @@ u8 D_80126D35; u8 gHideRaceTimer; u8 gNumActivePlayers; u8 gWrongWayNagPrefix; -s32 D_80126D3C; +SoundMask *D_80126D3C; s32 gHUDVoiceSoundMask; s32 D_80126D44; s16 D_80126D48; @@ -342,7 +342,7 @@ void init_hud(UNUSED s32 viewportCount) { D_80126D70 = 0; D_80126D7C = 0; D_80126D74 = 0; - D_80126D3C = 0; + D_80126D3C = NULL; D_80126D44 = 0; D_80126CD3 = 0; D_80127194 = (LevelHeader_70 *) get_misc_asset(ASSET_MISC_58); @@ -717,9 +717,78 @@ void render_hud_challenge_eggs(s32 arg0, Object *arg1, s32 updateRate) { GLOBAL_ASM("asm/non_matchings/game_ui/func_800A14F0.s") GLOBAL_ASM("asm/non_matchings/game_ui/func_800A19A4.s") -GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1C04.s") + +void func_800A1C04(s32 arg0, Object *obj, s32 updateRate) { + Object **racerObjs; + Object_Racer *racer; + s32 numRacers; + s32 racersFinished; + s32 i; + + racer = (Object_Racer *) obj->unk64; + if (gNumActivePlayers != 1 || racer->raceFinished == FALSE) { + func_80068508(1); + render_race_start(arg0, updateRate); + render_weapon_hud(obj, updateRate); + racerObjs = get_racer_objects(&numRacers); + switch (gNumActivePlayers) { + case 1: + func_800A1E48(obj, updateRate); + break; + case 2: + racersFinished = 0; + for (i = 0; i < numRacers; i++) { + racer = &racerObjs[i]->unk64->racer; + if (racer->playerIndex != PLAYER_COMPUTER && racer->raceFinished) { + racersFinished++; + } + } + if (racersFinished == 2) { + return; + } + break; + default: + render_racer_bananas(racer, updateRate); + break; + } + func_80068508(0); + } +} + GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1E48.s") -GLOBAL_ASM("asm/non_matchings/game_ui/func_800A22F4.s") + +void func_800A22F4(Object_Racer *racer, UNUSED void *unused) { + gCurrentHud->unk646 = racer->characterId + 56; + if (gNumActivePlayers < 3 || (gNumActivePlayers == 3 && racer->playerIndex == PLAYER_COMPUTER)) { + D_80126CD5 = TRUE; + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk640); + D_80126CD5 = FALSE; + init_rdp_and_framebuffer(&gHUDCurrDisplayList); + reset_render_settings(&gHUDCurrDisplayList); + } + if (racer->bananas < 10) { + gCurrentHud->unk6D8 = racer->bananas; + if (gNumActivePlayers == 2) { + gCurrentHud->unk6CC += 6.0f; + } + } else { + gCurrentHud->unk6D8 = racer->bananas / 10; + gCurrentHud->unk6F8 = racer->bananas % 10; + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk6E0); + } + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk6C0); + if (gNumActivePlayers == 2 && racer->bananas < 10) { + gCurrentHud->unk6CC -= 6.0f; + } + if (gNumActivePlayers != 2) { + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk6A0); + func_8007BF1C(1); + D_80126CD5 = TRUE; + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk680); + D_80126CD5 = FALSE; + func_8007BF1C(0); + } +} /** * When racing the boss, render the essentials, but skip the bananas. @@ -1131,7 +1200,7 @@ void render_race_start(s32 arg0, s32 updateRate) { gRaceStartShowHudStep++; } } - if (D_80126D3C == 0 && func_80023568() == 0) { + if (D_80126D3C == NULL && func_80023568() == 0) { f32 sp4C; UNUSED s32 pad; Object** racerGroup; diff --git a/src/game_ui.h b/src/game_ui.h index 84f7a998..a2b31819 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -282,7 +282,21 @@ typedef struct unk80126CDC { f32 unk670; u8 unk674[0x6]; s8 unk67A; - s8 unk67B[0x85]; + s8 unk67B[0x5]; + struct unk80126CDC *unk680; + s8 unk684[0x1C]; + struct unk80126CDC *unk6A0; + s8 unk6A4[0x1C]; + struct unk80126CDC *unk6C0; + s8 unk6C4[0x8]; + f32 unk6CC; + u8 unk6D0[0x8]; + s16 unk6D8; + s8 unk6DA[0x6]; + struct unk80126CDC *unk6E0; + s8 unk6E4[0x14]; + s16 unk6F8; + s8 unk6FA[0x6]; struct unk80126CDC *unk700; s8 unk704[0x1C]; struct unk80126CDC *unk720; @@ -366,6 +380,8 @@ void render_speedometer(Object *obj, s32 updateRate); void render_lap_count(Object_Racer *racer, s32 updateRate); void render_minimap_and_misc_hud(Gfx **dList, MatrixS **mtx, Vertex **vtxList, s32 updateRate); void init_hud(s32 viewportCount); +void func_800A1C04(s32 arg0, Object *obj, s32 updateRate); +void func_800A22F4(Object_Racer *racer, void *unused); // Non Matching void func_800A14F0(Object *, s32); @@ -376,14 +392,13 @@ void func_800AA600(Gfx **dList, MatrixS **mtx, Vertex **vtxList, unk80126CDC **a void func_800A003C(void); void func_800A7FBC(s32, s32, s32 minutes, s32 seconds, s32 hundredths, s32); void func_800A1248(s32, Object*, s32); -void func_800A1C04(s32, Object*, s32); void func_800A277C(s32, Object*, s32); void func_800A6254(Object_64* obj, s32 updateRate); void func_800A6E30(Object_64* obj, s32 updateRate); void func_800A7A60(Object*, Gfx**); void func_800A0BD4(s32); void func_800A19A4(Object_Racer* racer, s32 updateRate); -void func_800A1E48(s32, s32); +void func_800A1E48(Object*, s32); void render_treasure_hud(Object_Racer*); void func_800AA3EC(f32, f32, f32, f32, f32); void func_800A36CC(u8, u8, u8, u8, u8); diff --git a/src/object_functions.c b/src/object_functions.c index 0cea5f80..803f8b73 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -1776,10 +1776,10 @@ void obj_loop_snowball(Object *obj, s32 updateRate) { } } if (obj64->unk24 != 0) { - if (obj64->soundMask == 0) { - play_sound_at_position(obj64->unk24, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, (s32 *) &obj64->soundMask); + if (obj64->soundMask == NULL) { + play_sound_at_position(obj64->unk24, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, (SoundMask **) &obj64->soundMask); } else { - update_spatial_audio_position(obj64->soundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); + update_spatial_audio_position((SoundMask *) obj64->soundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } } func_8001F460(obj, updateRate, obj); @@ -3222,13 +3222,11 @@ void obj_loop_ttdoor(Object *obj, s32 updateRate) { } if (openDoor) { if (ttDoor->soundMask == NULL) { - play_sound_at_position(SOUND_DOOR_OPEN, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, (s32 *) &ttDoor->soundMask); - } - } else { - if (ttDoor->soundMask) { - func_800096F8((s32) ttDoor->soundMask); - ttDoor->soundMask = NULL; + play_sound_at_position(SOUND_DOOR_OPEN, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 1, &ttDoor->soundMask); } + } else if (ttDoor->soundMask != NULL) { + func_800096F8((SoundMask *)((s32)ttDoor->soundMask)); + ttDoor->soundMask = NULL; } obj->interactObj->distance = 0xFF; obj->interactObj->obj = NULL; @@ -3411,7 +3409,7 @@ void obj_loop_bridge_whaleramp(Object *obj, s32 updateRate) { } } else { obj->segment.trans.x_rotation = 0; - if (whaleRamp->unk4 != 0) { + if (whaleRamp->unk4 != NULL) { func_800096F8(whaleRamp->unk4); } } @@ -3459,7 +3457,7 @@ void obj_loop_bridge_whaleramp(Object *obj, s32 updateRate) { obj->interactObj->distance = 255; obj->interactObj->obj = NULL; - obj->interactObj->flags &= 0xFFF7; + obj->interactObj->flags &= ~INTERACT_FLAGS_PUSHING; } void obj_init_rampswitch(Object *obj, LevelObjectEntry_RampSwitch *entry) { @@ -3689,7 +3687,7 @@ void obj_loop_banana(Object *obj, s32 updateRate) { s8 sp43; Object_Banana *banana; ObjPropertyBanana *properties; - s32 prevSoundMask; + SoundMask *prevSoundMask; updateRateF = updateRate; if (osTvType == TV_TYPE_PAL) { @@ -4513,11 +4511,11 @@ void obj_init_audio(Object *obj, LevelObjectEntry_Audio *entry) { if (ALBankFile_80115D14_GetSoundDecayTime(obj64->soundId)) { func_8000974C(obj64->soundId, entry->common.x, entry->common.y, entry->common.z, 9, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, - obj64->unk6, obj64->unkD, (s32 *) &obj64->soundMask); + obj64->unk6, obj64->unkD, &obj64->soundMask); } else { func_8000974C(obj64->soundId, entry->common.x, entry->common.y, entry->common.z, 10, obj64->unk5, obj64->unk4, obj64->unk2, obj64->unkC, - obj64->unk6, obj64->unkD, (s32 *) &obj64->soundMask); + obj64->unk6, obj64->unkD, &obj64->soundMask); } gParticlePtrList_addObject(obj); } diff --git a/src/objects.c b/src/objects.c index 9d235396..15b2e086 100644 --- a/src/objects.c +++ b/src/objects.c @@ -1654,26 +1654,32 @@ GLOBAL_ASM("asm/non_matchings/objects/func_80011134.s") #endif #ifdef NON_EQUIVALENT +//Probably NON_MATCHING, but not sure. //This is a function for doors void func_80011264(ObjectModel *model, Object *obj) { - s32 temp_a2; + s32 current; + s32 remaining; s32 i; - u8 textureIndex; Object_Door *door; + TriangleBatchInfo *batch; if (model->unk50 > 0) { + batch = &model->batches[0]; door = &obj->unk64->door; - temp_a2 = (door->unk10 / 10) - 1; - for (i = 0; i < model->numberOfBatches; i++) { - if (model->batches[i].flags & 0x10000) { - textureIndex = model->batches[i].textureIndex; - if (textureIndex != 0xFF) { // 0xFF = No Texture - if (model->textures[textureIndex].texture->numOfTextures > 0x900) { - model->batches[i].unk7 = (door->unk10 % 10) * 4; - } - if (!(temp_a2 & 0x20000000)) { - model->batches[i].unk7 = temp_a2 * 4; + current = ((door->unk10 / 10) - 1) << 2; + if (model->textures[batch->textureIndex].texture){} //fakematch + if (1) { //fakematch + remaining = ((door->unk10 % 10) << 2); + } + for (i = 0; i < model->numberOfBatches; i++, batch++) { + if (batch->flags & 0x10000) { + if (batch->textureIndex != 0xFF) { // 0xFF = No Texture + if (model->textures[batch->textureIndex].texture->numOfTextures > 0x900) { + batch->unk7 = remaining; + } else if (current >= 0) { + batch->unk7 = current; } + if (door){} //fakematch } } } @@ -1683,6 +1689,21 @@ void func_80011264(ObjectModel *model, Object *obj) { GLOBAL_ASM("asm/non_matchings/objects/func_80011264.s") #endif +/** + * Do nothing. Unused. +*/ +UNUSED void do_nothing_func_80011364(UNUSED s32 unused) { +} + +/** + * Return the opposite of D_8011ADAC's value + */ +UNUSED s32 is_not_D_8011ADAC(void) { + //Ever hear of return !D_8011ADAC? + if (D_8011ADAC) return FALSE; + else return TRUE; +} + void func_80011390(void) { D_8011ADAC = 0; } @@ -4914,15 +4935,15 @@ void run_object_loop_func(Object *obj, s32 updateRate) { UNUSED void func_8002458C(UNUSED s32 arg0) { } -s16 *func_80024594(s32 *arg0, s32 *arg1) { - *arg0 = D_800DC700; - *arg1 = 0x80; +s16 *func_80024594(s32 *currentCount, s32 *maxCount) { + *currentCount = D_800DC700; + *maxCount = ARRAY_COUNT(D_8011AC20); return D_8011AC20; } void func_800245B4(s16 arg0) { D_8011AC20[D_800DC700++] = arg0; - if (D_800DC700 >= 0x80) { + if (D_800DC700 >= ARRAY_COUNT(D_8011AC20)) { D_800DC700 = 0; } } diff --git a/src/objects.h b/src/objects.h index f1783e0f..91897748 100644 --- a/src/objects.h +++ b/src/objects.h @@ -339,7 +339,6 @@ s32 func_80010028(s32 arg0); void func_80011390(void); s32 func_8001139C(void); s32 get_race_start_timer(void); -s32 func_800113BC(void); s32 ignore_bounds_check(void); void func_80012C30(void); void func_80012C3C(Gfx** dList); @@ -404,7 +403,7 @@ s8 func_800235C0(void); void func_800235D0(s32 arg0); void run_object_init_func(Object *arg0, void *arg1, s32 arg2); void run_object_loop_func(Object *obj, s32 arg1); -s16 *func_80024594(s32 *arg0, s32 *arg1); +s16 *func_80024594(s32 *currentCount, s32 *maxCount); void func_800245B4(s16 arg0); void object_do_player_tumble(Object *this); f32 catmull_rom_interpolation(f32*, s32, f32); diff --git a/src/particles.c b/src/particles.c index d62b938e..7d2730ab 100644 --- a/src/particles.c +++ b/src/particles.c @@ -1403,10 +1403,98 @@ void func_800B2FBC(Particle *arg0) { } } -GLOBAL_ASM("asm/non_matchings/particles/func_800B3140.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B3240.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B3358.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B34B0.s") +void func_800B3140(Particle *arg0) { + s32 i; + Object *temp_v0; + + i = D_80127C80; + while ( i-- > 0) { + arg0->somePosX += arg0->segment.x_velocity; + arg0->somePosY += arg0->segment.y_velocity; + arg0->segment.y_velocity -= arg0->unk68f; + arg0->somePosZ += arg0->segment.z_velocity; + arg0->segment.trans.y_rotation += arg0->unk62; + arg0->segment.trans.x_rotation += arg0->unk64; + arg0->segment.trans.z_rotation += arg0->unk66; + arg0->segment.trans.scale += arg0->segment.unk28; + } + arg0->segment.trans.x_position = arg0->somePosX; + arg0->segment.trans.y_position = arg0->somePosY; + arg0->segment.trans.z_position = arg0->somePosZ; + temp_v0 = arg0->segment.unk3C; + if (temp_v0 != NULL) { + arg0->segment.trans.x_position += temp_v0->segment.trans.x_position; + arg0->segment.trans.y_position += temp_v0->segment.trans.y_position; + arg0->segment.trans.z_position += temp_v0->segment.trans.z_position; + } +} + +void func_800B3240(Particle *arg0) { + s32 i; + Object *temp_v0; + + i = D_80127C80; + while ( i-- > 0) { + arg0->segment.trans.y_rotation += arg0->unk62; + arg0->segment.trans.x_rotation += arg0->unk64; + arg0->segment.trans.z_rotation += arg0->unk66; + arg0->segment.trans.scale += arg0->segment.unk28; + } + arg0->segment.trans.x_position = 0.0f; + arg0->segment.trans.y_position = -arg0->forwardVel; + arg0->segment.trans.z_position = 0.0f; + f32_vec3_apply_object_rotation(&arg0->segment.trans, &arg0->segment.trans.x_position); + arg0->segment.trans.x_position += arg0->somePosX; + arg0->segment.trans.y_position += arg0->somePosY; + arg0->segment.trans.z_position += arg0->somePosZ; + temp_v0 = arg0->segment.unk3C; + if (temp_v0 != NULL) { + arg0->segment.trans.x_position += temp_v0->segment.trans.x_position; + arg0->segment.trans.y_position += temp_v0->segment.trans.y_position; + arg0->segment.trans.z_position += temp_v0->segment.trans.z_position; + } +} + +void func_800B3358(Particle *arg0) { + s32 i; + Vec3f sp38; + i = 0; + while (i++ < D_80127C80) { + arg0->segment.trans.x_position += arg0->segment.x_velocity; + arg0->segment.trans.y_position += arg0->segment.y_velocity; + arg0->segment.trans.z_position += arg0->segment.z_velocity; + arg0->segment.trans.scale += arg0->segment.unk28; + arg0->segment.trans.y_rotation += arg0->unk62; + arg0->segment.trans.x_rotation += arg0->unk64; + arg0->segment.trans.z_rotation += arg0->unk66; + sp38.x = 0.0f; + sp38.y = -arg0->forwardVel; + sp38.z = 0.0f; + f32_vec3_apply_object_rotation(&arg0->segment.trans, sp38.f); + arg0->segment.x_velocity += sp38.x; + arg0->segment.y_velocity += sp38.y; + arg0->segment.y_velocity -= arg0->unk68f; + arg0->segment.z_velocity += sp38.z; + } +} + +void func_800B34B0(Particle *arg0) { + f32 temp_f0; + s32 i; + + i = 0; + while (i++ < D_80127C80) { + temp_f0 = arg0->segment.y_velocity; + arg0->segment.trans.x_position += arg0->segment.x_velocity; + arg0->segment.trans.y_position += temp_f0; + arg0->segment.y_velocity = temp_f0 - arg0->unk68f; + arg0->segment.trans.z_position += arg0->segment.z_velocity; + arg0->segment.trans.scale += arg0->segment.unk28; + arg0->segment.trans.y_rotation += arg0->unk62; + arg0->segment.trans.x_rotation += arg0->unk64; + arg0->segment.trans.z_rotation += arg0->unk66; + } +} void func_800B3564(Particle *arg0) { s32 var_s1; @@ -1529,7 +1617,6 @@ void func_800B3740(Particle *particle, Gfx **dlist, MatrixS **mtx, Vertex **vtx, } } - GLOBAL_ASM("asm/non_matchings/particles/func_800B3E64.s") UNUSED unk800E2CF0 *func_800B4488(s32 idx) { @@ -1559,23 +1646,44 @@ UNUSED ParticleBehavior *func_800B4578(s32 idx) { return gParticleBehavioursAssetTable[gParticleBehavioursAssetTableCount - 1]; } -GLOBAL_ASM("asm/non_matchings/particles/func_800B45C4.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B461C.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B4668.s") -GLOBAL_ASM("asm/non_matchings/particles/func_800B46BC.s") - -/** - * memset(void *s, int c, size_t n) - * - * s: start of area to clear - * c: char to fill with - * n: size of area to clear - */ -void *memset(void *s, int c, size_t n) { - u8 *var_v0 = s; - - while (n-- > 0) { - *var_v0++ = c; +UNUSED ParticleBehavior *func_800B45C4(s32 *idx) { + *idx += 1; + while (*idx >= gParticleBehavioursAssetTableCount) { + *idx -= gParticleBehavioursAssetTableCount; } - return s; + return gParticleBehavioursAssetTable[*idx]; +} + +UNUSED ParticleBehavior *func_800B461C(s32 *idx) { + *idx -= 1; + while (*idx < 0) { + *idx += gParticleBehavioursAssetTableCount; + } + return gParticleBehavioursAssetTable[*idx]; +} + +void func_800B4668(Object *obj, s32 idx, s32 arg2, s32 arg3) { + s32 temp_v0; + + arg3 <<= 8; + temp_v0 = (obj->unk6C[idx].unkA & 0xFFFF) + arg2; + if (arg3 < temp_v0) { + obj->unk6C[idx].unkA = arg3; + } else { + obj->unk6C[idx].unkA = temp_v0; + } + obj->unk6C[idx].unk4 |= 0x100; +} + +void func_800B46BC(Object *obj, s32 idx, s32 arg2, s32 arg3) { + s32 temp_v0; + + arg3 <<= 8; + temp_v0 = (obj->unk6C[idx].unkA & 0xFFFF) - arg2; + if (temp_v0 < arg3) { + obj->unk6C[idx].unkA = arg3; + } else { + obj->unk6C[idx].unkA = temp_v0; + } + obj->unk6C[idx].unk4 |= 0x100; } diff --git a/src/particles.h b/src/particles.h index c1cfb1dd..574bf4b1 100644 --- a/src/particles.h +++ b/src/particles.h @@ -200,6 +200,8 @@ Particle *func_800B1130(Particle *arg0, Particle *arg1); void func_800AF52C(Object *obj, s32 arg1); void func_800AF134(Particle *arg0, s32 arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5); void func_800B3740(Particle *particle, Gfx **dlist, MatrixS **mtx, Vertex **vtx, s32 flags); +void func_800B4668(Object *obj, s32 idx, s32 arg2, s32 arg3); +void func_800B46BC(Object *obj, s32 idx, s32 arg2, s32 arg3); void func_800AF404(s32 arg0); // Non Matching void func_800AFC3C(Object *, s32); // Non Matching @@ -212,8 +214,6 @@ void func_800B3240(Particle *); void func_800B3358(Particle *); void func_800B34B0(Particle *); void func_800B3564(Particle *); -void func_800B4668(Object*, s32, s32, s32); -void func_800B46BC(Object*, s32, s32, s32); void func_800B3E64(Object *); // Non Matching #endif diff --git a/src/racer.c b/src/racer.c index a66f538f..0dea6ea7 100644 --- a/src/racer.c +++ b/src/racer.c @@ -29,7 +29,6 @@ #include "controller.h" #include "particles.h" - #define MAX_NUMBER_OF_GHOST_NODES 360 /** @@ -754,16 +753,17 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r s8 sp67; UNUSED s32 prevUnk1D2; UNUSED s32 var_t0_3; - float new_var; - if (func_8000E138() != 0) { + f32 new_var; + + if (func_8000E138()) { updateRateF *= 1.15; } + sp67 = 0; - if (racer->playerIndex >= 0) { - if (gNumViewports < 2) { + if (racer->playerIndex >= PLAYER_ONE && gNumViewports < 2) { obj->unk74 |= 0x100; - } } + D_8011D550 = 0; gCurrentCarSteerVel = 0; D_8011D558 = 0; @@ -774,79 +774,86 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r spE4 = ((-racer->ox1) * 10) * spC8; spE8 = ((-racer->oz1) * 10) * spC8; var_f2 = 8.0f; - if ((gCurrentPlayerIndex == (-1)) || (racer->raceFinished != 0)) { + + if (gCurrentPlayerIndex == PLAYER_COMPUTER || racer->raceFinished) { var_f2 = 32.0f; } + var_v1 = gCurrentStickX - racer->steerAngle; var_a3 = (var_v1 * updateRateF) / var_f2; - if (var_v1 != 0) { - if (var_a3 == 0) { + + if (var_v1 != 0 && var_a3 == 0) { if (var_v1 > 0) { var_a3 = 1; } if (var_v1 < 0) { var_a3 = -1; } - } } + racer->steerAngle += var_a3; handle_racer_items(obj, racer, updateRate); func_800535C4(obj, racer); racer_attack_handler_hovercraft(obj, racer); + if (gCurrentPlayerIndex != PLAYER_COMPUTER) { handle_racer_head_turning(obj, racer, updateRate); } else { slowly_reset_head_angle(racer); } - if (gCurrentRacerInput & 0x8000) { + + if (gCurrentRacerInput & A_BUTTON) { racer->throttle += updateRateF * 0.016; if (racer->throttle > 1.0) { - racer->throttle = 1.0; + racer->throttle = 1.0; } } else { racer->throttle -= updateRateF * 0.016; if (racer->throttle < 0.0f) { - racer->throttle = 0.0f; + racer->throttle = 0.0f; } } + sp11C = racer->throttle; - if ((racer->velocity > 0.0f) && (gCurrentRacerInput & 0x8000)) { + if ((racer->velocity > 0.0f) && (gCurrentRacerInput & A_BUTTON)) { sp11C = 1.0f; } + sp11C = sp11C * 3.0f; spF4 = (sp11C * sp11C) / 9.0f; if (racer->exitObj != 0) { racer->throttle = 0.5f; } + if (racer->velocity > 0.0) { spF4 *= 1.2; } - if ((gCurrentRacerInput & 0x4000) && ((gCurrentStickY < (-40)) || (racer->velocity < 0.0f))) { + + if ((gCurrentRacerInput & B_BUTTON) && ((gCurrentStickY < (-40)) || (racer->velocity < 0.0f))) { racer->brake += updateRateF * 0.046; if (racer->brake > 1.2) { - racer->brake = 1.2f; + racer->brake = 1.2f; } if (racer->velocity < (-2.0)) { - func_80072348(racer->playerIndex, 5); + func_80072348(racer->playerIndex, 5); } } else { racer->brake -= updateRateF * 0.046; if (racer->brake < 0.0f) { - racer->brake = 0.0f; + racer->brake = 0.0f; } } + sp11C = racer->brake * 3.0f; spF0 = (sp11C * sp11C) / 9.0f; if (racer->velocity > 0.0) { spF0 *= 0.3; } + // Fake, fixes f12 & f14 swap. + if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } - // Fake, fixes f12 & f14 swap. - if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } - - - if (racer->zipperDirCorrection != 0) { + if (!racer->zipperDirCorrection) { gCurrentStickX = 0; racer->magnetTimer = 0; racer->steerAngle = 0; @@ -854,28 +861,28 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r racer->unk1E0 = 0; var_v1 = racer->zipperObj->segment.trans.y_rotation - (racer->steerVisualRotation & 0xFFFF); if (var_v1 > 0x8000) { - var_v1 -= 0xFFFF; + var_v1 -= 0xFFFF; } if (var_v1 < (-0x8000)) { - var_v1 += 0xFFFF; + var_v1 += 0xFFFF; } racer->steerVisualRotation += (var_v1 * updateRate) >> 3; - if (((var_v1 < 0x400) && (var_v1 > (-0x400))) || (racer->playerIndex == PLAYER_COMPUTER)) { - if (racer->playerIndex != PLAYER_COMPUTER) { - play_sound_spatial(0x107U, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 0); - play_random_character_voice(obj, 0x162, 8, 0x82); - } - racer->boostTimer = normalise_time(45); - racer->boostType = BOOST_LARGE; - if (racer->throttleReleased) { - racer->boostType |= BOOST_SMALL_FAST; - } - racer->zipperDirCorrection = 0; - func_80072348(racer->playerIndex, 8U); + if ((var_v1 < 0x400 && var_v1 > -0x400) || (racer->playerIndex == PLAYER_COMPUTER)) { + if (racer->playerIndex != PLAYER_COMPUTER) { + play_sound_spatial(SOUND_ZIP_PAD_BOOST, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, NULL); + play_random_character_voice(obj, SOUND_VOICE_CHARACTER_POSITIVE, 8, (0x80 | 0x2)); + } + racer->boostTimer = normalise_time(45); + racer->boostType = BOOST_LARGE; + if (racer->throttleReleased) { + racer->boostType |= BOOST_SMALL_FAST; + } + racer->zipperDirCorrection = 0; + func_80072348(racer->playerIndex, 8); } else { - obj->segment.x_velocity = ((f64) obj->segment.x_velocity) * 0.75f; - obj->segment.y_velocity = ((f64) obj->segment.y_velocity) * 0.75f; - obj->segment.z_velocity = ((f64) obj->segment.z_velocity) * 0.75f; + obj->segment.x_velocity = (obj->segment.x_velocity * 1.0) * 0.75f; + obj->segment.y_velocity = (obj->segment.y_velocity * 1.0) * 0.75f; + obj->segment.z_velocity = (obj->segment.z_velocity * 1.0) * 0.75f; } } var_f2 = -racer->velocity; @@ -886,7 +893,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r var_f2 = 14.0f; } var_f2 /= 14.0f; - if ((racer->unk1D4 != 0) || (racer->unk1D5 != 0)) { + if (racer->unk1D4 != 0 || racer->unk1D5 != 0) { apply_vehicle_rotation_offset(racer, updateRate, racer->y_rotation_offset, 0, 0); } else { apply_vehicle_rotation_offset(racer, updateRate, 0, (spF0 * 4096.0f) * var_f2, 0); @@ -894,37 +901,34 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r if (racer->unk1D5 != 0) { racer->y_rotation_offset -= racer->y_rotation_offset >> 3; if ((racer->y_rotation_offset < 16) && (racer->y_rotation_offset > (-16))) { - racer->unk1D5 = 0; + racer->unk1D5 = 0; } gCurrentStickX = 0; } if (racer->spinout_timer > 0) { racer->unk1D4 += updateRate; if (racer->unk1D4 > 10) { - racer->unk1D4 = 10; + racer->unk1D4 = 10; } } - else - if (racer->spinout_timer < 0) { + else if (racer->spinout_timer < 0) { racer->unk1D4 -= updateRate; if (racer->unk1D4 < (-10)) { - racer->unk1D4 = -10; + racer->unk1D4 = -10; } } - else - if (racer->unk1D4 < 0) { + else if (racer->unk1D4 < 0) { racer->unk1D4 += updateRate; if (racer->unk1D4 > 0) { - racer->unk1D4 = 0; - racer->unk1D5 = 1; + racer->unk1D4 = 0; + racer->unk1D5 = 1; } } - else - if (racer->unk1D4 > 0) { + else if (racer->unk1D4 > 0) { racer->unk1D4 -= updateRate; if (racer->unk1D4 < 0) { - racer->unk1D4 = 0; - racer->unk1D5 = 1; + racer->unk1D4 = 0; + racer->unk1D5 = 1; } } if ((racer->groundedWheels) && (racer->groundedWheels < 3)) { @@ -936,18 +940,18 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r i = racer->y_rotation_offset; racer->unk1D5 = 0; if (racer->unk1D4 > 0) { - racer->y_rotation_offset += (racer->unk1D4 * 0xB3) * updateRate; - if ((i < (-0x1000)) && (racer->y_rotation_offset >= (-0x1000))) { - racer->spinout_timer--; - } + racer->y_rotation_offset += (racer->unk1D4 * 0xB3) * updateRate; + if (i < -0x1000 && racer->y_rotation_offset >= -0x1000) { + racer->spinout_timer--; + } } if (racer->unk1D4 < 0) { - racer->y_rotation_offset -= (racer->unk1D4 * 0xB3) * updateRate; - if ((i > 0x1000) && (racer->y_rotation_offset <= 0x1000)) { - racer->spinout_timer++; + racer->y_rotation_offset -= (racer->unk1D4 * 0xB3) * updateRate; + if (i > 0x1000 && racer->y_rotation_offset <= 0x1000) { + racer->spinout_timer++; + } } - } - gCurrentRacerInput &= 0xFFFF3FFF; + gCurrentRacerInput &= ~(A_BUTTON | B_BUTTON); gCurrentStickX = 0; racer->steerAngle = 0; gCurrentStickY = 0; @@ -963,7 +967,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r gCurrentRacerTransform.y_position = 0.0f; gCurrentRacerTransform.z_position = 0.0f; gCurrentRacerTransform.scale = 1.0f; - object_transform_to_matrix((f32 (*)[4]) sp68, &gCurrentRacerTransform); + object_transform_to_matrix(sp68, &gCurrentRacerTransform); guMtxXFMF(sp68, 0.0f, 0.0f, 1.0f, &racer->ox1, &racer->oy1, &racer->oz1); guMtxXFMF(sp68, 0.0f, 1.0f, 0.0f, &racer->ox2, &racer->oy2, &racer->oz2); guMtxXFMF(sp68, 1.0f, 0.0f, 0.0f, &racer->ox3, &racer->oy3, &racer->oz3); @@ -973,10 +977,10 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r var_v0 >>= 1; var_v0 = 40 - var_v0; if (var_v0 < 0) { - var_v0 = 0; + var_v0 = 0; } if (var_v0 > 73) { - var_v0 = 73; + var_v0 = 73; } obj->segment.animFrame = var_v0; } @@ -1001,7 +1005,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r i = ((gCurrentPlayerIndex != PLAYER_COMPUTER) && (!racer->raceFinished)) ? racer->steerAngle : gCurrentStickX; spFC = 0.004f; obj->segment.y_velocity -= (obj->segment.y_velocity * 0.004) * updateRateF; - if ((gCurrentRacerInput & 0x4000) && (gCurrentStickY >= (-40)) && (racer->velocity >= (-0.5))) { + if ((gCurrentRacerInput & B_BUTTON) && (gCurrentStickY >= (-40)) && (racer->velocity >= (-0.5))) { spFC *= 16.0f; } var_f14 = (i * 8) * updateRate; @@ -1014,56 +1018,55 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r racer->steerVisualRotation -= (s32) (var_f14 * gCurrentRacerHandlingStat); if ((racer->groundedWheels == 0) && (racer->buoyancy == 0.0)) { if (obj->segment.y_velocity < 0.0f) { - racer->unk1E0 += updateRate; + racer->unk1E0 += updateRate; } if (racer->unk1E0 > 25) { - racer->unk1E0 = 25; + racer->unk1E0 = 25; } } for (i = 0; i < 4; i++) { if (racer->wheel_surfaces[i] == 0xFF) { - continue; + continue; } if (var_t1 < racer->wheel_surfaces[i]) { - var_t1 = racer->wheel_surfaces[i]; + var_t1 = racer->wheel_surfaces[i]; } if (racer->wheel_surfaces[i] == 4) { - var_a3_2 += 1; + var_a3_2 += 1; } } - if ((((racer->playerIndex == PLAYER_ONE) && (racer->groundedWheels)) && (var_t1 == 12)) && (gCurrentButtonsPressed & 0x2000)) { + if (racer->playerIndex == PLAYER_ONE && racer->groundedWheels && var_t1 == 12 && gCurrentButtonsPressed & Z_TRIG) { D_8011D582 = 2; } if ((racer->groundedWheels) || (racer->buoyancy > 0.0f)) { if (racer->unk1E0 != 0) { - if (racer->groundedWheels) { - if (((gRaceStartTimer != 100) && (racer->playerIndex != PLAYER_COMPUTER)) && (racer->unk1E0 >= 6)) { - play_sound_global(0xAEU, &racer->unk21C); - func_80001FB8(0xAEU, (void *) racer->unk21C, (racer->unk1E0 * 2) + 0x32); + if (racer->groundedWheels) { + if (((gRaceStartTimer != 100) && (racer->playerIndex != PLAYER_COMPUTER)) && (racer->unk1E0 >= 6)) { + play_sound_global(SOUND_BOUNCE, &racer->unk21C); + func_80001FB8(SOUND_BOUNCE, (void *) racer->unk21C, (racer->unk1E0 * 2) + 0x32); + } } - } - else - if (racer->approachTarget == 0) { - racer_play_sound(obj, 0xAF); - obj->unk74 |= 0x30; - } - temp_f2 = racer->unk1E0 - 5.0f; - if ((temp_f2 > 0.0f) && (racer->approachTarget == 0)) { - racer->stretch_height_cap = 1.0 - (temp_f2 * 0.02); - } - racer->unk1E0 = 0; + else if (racer->approachTarget == 0) { + racer_play_sound(obj, SOUND_UNK_AF); + obj->unk74 |= 0x30; + } + temp_f2 = racer->unk1E0 - 5.0f; + if ((temp_f2 > 0.0f) && (racer->approachTarget == 0)) { + racer->stretch_height_cap = 1.0 - (temp_f2 * 0.02); + } + racer->unk1E0 = 0; } } var_f18 = var_f18 * (handle_racer_top_speed(obj, racer) * 1.7); if (racer->boostTimer > 0) { if (gRaceStartTimer == 0) { - spF4 = 1.0f; - spF0 = 0.0f; - if (var_f18 != 0.0) { - var_f18 = 2.0f; - } - racer->boostTimer -= updateRate; + spF4 = 1.0f; + spF0 = 0.0f; + if (var_f18 != 0.0) { + var_f18 = 2.0f; + } + racer->boostTimer -= updateRate; } } else { racer->boostTimer = 0; @@ -1072,7 +1075,7 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r var_f18 = 0.0f; } if (var_a3_2 != 0) { - temp_f0 = ((f32 *) get_misc_asset(0x20))[var_a3_2]; + temp_f0 = ((f32 *) get_misc_asset(MISC_ASSET_UNK20))[var_a3_2]; var_f18 *= temp_f0; spFC /= temp_f0; racer->magnetTimer = 0; @@ -1082,41 +1085,41 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r racer->boostTimer = normalise_time(45); racer->boostType = BOOST_LARGE; if (racer->throttleReleased) { - racer->boostType |= BOOST_SMALL_FAST; + racer->boostType |= BOOST_SMALL_FAST; } - racer_play_sound(obj, 0x107); - play_random_character_voice(obj, 0x162, 8, 0x82); - func_80072348(racer->playerIndex, 8U); + racer_play_sound(obj, SOUND_ZIP_PAD_BOOST); + play_random_character_voice(obj, SOUND_VOICE_CHARACTER_POSITIVE, SOUND_NUMBER_OF_RACERS, (0x80 | 0x2)); + func_80072348(racer->playerIndex, 8); } temp_f0 = sqrtf((obj->segment.z_velocity * obj->segment.z_velocity) + (obj->segment.x_velocity * obj->segment.x_velocity)); if (temp_f0 > 0.25) { racer->unk168 = arctan2_f(obj->segment.x_velocity, obj->segment.z_velocity) + 0x8000; var_v1 = ((0x8000 - racer->unk168) & 0xFFFF) - (racer->unk196 & 0xFFFF); if (var_v1 > 0x8000) { - var_v1 -= 0xFFFF; + var_v1 -= 0xFFFF; } if (var_v1 < (-0x8000)) { - var_v1 += 0xFFFF; + var_v1 += 0xFFFF; } sp11C = temp_f0 - 0.25; if (sp11C > 8.0) { - sp11C = 8.0f; + sp11C = 8.0f; } sp11C *= 0.125; racer->unk196 += (((s32) ((var_v1 * ((f32) sp11C)) * 0.75)) * updateRate) >> 4; var_v1 = (0x8000 - racer->unk196) - (racer->steerVisualRotation & 0xFFFF); if (var_v1 > 0x8000) { - var_v1 -= 0xFFFF; + var_v1 -= 0xFFFF; } if (var_v1 < (-0x8000)) { - var_v1 += 0xFFFF; + var_v1 += 0xFFFF; } if (temp_f0 > 10.0) { - temp_f0 = 10.0; + temp_f0 = 10.0; } var_v1 = var_v1 * ((f32) (temp_f0 / 10.0)); - if ((gCurrentRacerInput & 0x8000) || (gCurrentRacerInput & 0x0010)) { - var_v1 *= 2; + if ((gCurrentRacerInput & A_BUTTON) || (gCurrentRacerInput & R_TRIG)) { + var_v1 *= 2; } racer->steerVisualRotation += ((s32) (var_v1 * updateRate)) >> 7; } @@ -1129,35 +1132,34 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r } temp = 1.0f; racer->unk196 += (((s32) ((((f32) var_v1) * 1.75) * temp)) * updateRate) >> 6; - if (racer->zipperDirCorrection == 0) { - if ((gCurrentPlayerIndex == PLAYER_COMPUTER) && (racer->raceFinished == 0)) { - var_f16 = racer->lateral_velocity * 0.25; - temp_f0 = var_f16 * 0.35; - if (temp_f0 < 0.0) { - temp_f0 = -temp_f0; - } - if (0.2 < temp_f0) { - gCurrentRacerInput |= 0x0010; - } - obj->segment.x_velocity += racer->ox1 * temp_f0; - obj->segment.y_velocity += racer->oy1 * temp_f0; - obj->segment.z_velocity += racer->oz1 * temp_f0; + if (!racer->zipperDirCorrection) { + if ((gCurrentPlayerIndex == PLAYER_COMPUTER) && (!racer->raceFinished)) { + var_f16 = racer->lateral_velocity * 0.25; + temp_f0 = var_f16 * 0.35; + if (temp_f0 < 0.0) { + temp_f0 = -temp_f0; + } + if (0.2 < temp_f0) { + gCurrentRacerInput |= R_TRIG; + } + obj->segment.x_velocity += racer->ox1 * temp_f0; + obj->segment.y_velocity += racer->oy1 * temp_f0; + obj->segment.z_velocity += racer->oz1 * temp_f0; } else { - var_f16 = racer->lateral_velocity * 0.07; - if (gCurrentRacerInput & 0x0010) { - var_f16 *= 2; - if ((gCurrentStickX > (-40)) && (gCurrentStickX < 40)) { - spF4 *= 0.8; + var_f16 = racer->lateral_velocity * 0.07; + if (gCurrentRacerInput & R_TRIG) { + var_f16 *= 2; + if (gCurrentStickX > -40 && gCurrentStickX < 40) { + spF4 *= 0.8; + } else if (racer->lateral_velocity > 2.5 || racer->lateral_velocity < -2.5) { + spF4 *= 1.5; + } + + if (gCurrentRacerInput & B_BUTTON) { + var_f16 *= 2; + } } - else - if ((racer->lateral_velocity > 2.5) || (racer->lateral_velocity < (-2.5))) { - spF4 *= 1.5; - } - if (gCurrentRacerInput & 0x4000) { - var_f16 *= 2; - } - } - if (gCurrentRacerInput & 0x4000) {} + if (gCurrentRacerInput & B_BUTTON) {} } obj->segment.x_velocity -= racer->ox3 * var_f16; obj->segment.y_velocity -= racer->oy3 * var_f16; @@ -1170,29 +1172,29 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r obj->segment.x_velocity += racer->ox1 * spF0; obj->segment.y_velocity += racer->oy1 * spF0; obj->segment.z_velocity += racer->oz1 * spF0; - if (((racer->groundedWheels) && (gRacerInputBlocked == 0)) && (gRaceStartTimer == 0)) { - temp_f2 = (gCurrentRacerWeightStat * updateRateF) * 0.25; - sp11C = racer->pitch * temp_f2; - temp_f2 = temp_f2 * racer->roll; - obj->segment.x_velocity += (racer->ox1 * sp11C) + (racer->ox3 * temp_f2); - obj->segment.y_velocity += (racer->oy1 * sp11C) + (racer->oy3 * temp_f2); - obj->segment.z_velocity += (racer->oz1 * sp11C) + (racer->oz3 * temp_f2); + if (racer->groundedWheels && !gRacerInputBlocked && gRaceStartTimer == 0) { + temp_f2 = (gCurrentRacerWeightStat * updateRateF) * 0.25; + sp11C = racer->pitch * temp_f2; + temp_f2 = temp_f2 * racer->roll; + obj->segment.x_velocity += (racer->ox1 * sp11C) + (racer->ox3 * temp_f2); + obj->segment.y_velocity += (racer->oy1 * sp11C) + (racer->oy3 * temp_f2); + obj->segment.z_velocity += (racer->oz1 * sp11C) + (racer->oz3 * temp_f2); } var_f12 = racer->velocity * racer->velocity; if (racer->velocity < 0.0f) { - var_f12 = -var_f12; + var_f12 = -var_f12; } - if ((var_f12 < 1.0f) && (!(gCurrentRacerInput & 0x8000))) { - var_f16 = (racer->velocity * spFC) * 8.0f; + if (var_f12 < 1.0f && !(gCurrentRacerInput & A_BUTTON)) { + var_f16 = (racer->velocity * spFC) * 8.0f; } else { - var_f16 = var_f12 * spFC; + var_f16 = var_f12 * spFC; } obj->segment.x_velocity -= racer->ox1 * var_f16; obj->segment.y_velocity -= racer->oy1 * var_f16; obj->segment.z_velocity -= racer->oz1 * var_f16; if (racer->magnetTimer != 0) { - obj->segment.x_velocity = gRacerMagnetVelX; - obj->segment.z_velocity = gRacerMagnetVelZ; + obj->segment.x_velocity = gRacerMagnetVelX; + obj->segment.z_velocity = gRacerMagnetVelZ; } } racer->unk10C = 0; @@ -1212,25 +1214,27 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r var_f16 = obj->segment.x_velocity; var_f12 = obj->segment.z_velocity; if (racer->unk1D2 != 0) { - var_f16 += racer->unk11C; - var_f12 += racer->unk120; + var_f16 += racer->unk11C; + var_f12 += racer->unk120; } - if (gRacerInputBlocked != 0) { - if ((var_f16 > 0.5) || (var_f16 < (-0.5))) { - var_f16 *= 0.65; + if (gRacerInputBlocked) { + if ((var_f16 > 0.5) || (var_f16 < (-0.5))) { + var_f16 *= 0.65; + } else { + var_f16 = 0.0f; + } + if ((var_f12 > 0.5) || (var_f12 < (-0.5))) { + var_f12 *= 0.65; + } else { + var_f12 = 0.0f; + } } else { - var_f16 = 0.0f; + spE8 += racer->unk84 * updateRateF; + spE4 += racer->unk88 * updateRateF; } - if ((var_f12 > 0.5) || (var_f12 < (-0.5))) { - var_f12 *= 0.65; - } else { - var_f12 = 0.0f; - } - } else { - spE8 += racer->unk84 * updateRateF; - spE4 += racer->unk88 * updateRateF; - } - if (move_object(obj, (var_f16 * updateRateF) + spE8, obj->segment.y_velocity * updateRateF, (var_f12 * updateRateF) + spE4) && (gCurrentPlayerIndex != (-1))) { + if (move_object(obj, (var_f16 * updateRateF) + spE8, obj->segment.y_velocity * updateRateF, (var_f12 * updateRateF) + spE4) + && gCurrentPlayerIndex != PLAYER_COMPUTER) + { sp67 = 1; } } else { @@ -1248,14 +1252,14 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r } var_f14 = 5.0f; sp118 = -10000.0f; - temp_v0_10 = get_wave_properties(obj->segment.trans.y_position, &sp118, spD4); + temp_v0_10 = get_wave_properties(obj->segment.trans.y_position, &sp118, &spD4); /* Linebreak skip for better codegen. Thanks IDO. */ \ if (temp_v0_10) { var_f14 = racer->velocity; if (var_f14 < 0.0f) { - var_f14 = -var_f14; + var_f14 = -var_f14; } if (var_f14 > 4.0) { - var_f14 = 4.0; + var_f14 = 4.0; } var_f14 = var_f14 * 0.8; if ((obj->segment.trans.y_position - var_f14) < sp118) { @@ -1271,17 +1275,17 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r racer->buoyancy = 0.0f; } if ((racer->waterTimer > 0) && (obj->segment.trans.y_position < (sp118 + var_f14))) { - obj->interactObj->flags |= 0x10; + obj->interactObj->flags |= INTERACT_FLAGS_UNK_0010; } else { - obj->interactObj->flags &= 0xFFEF; + obj->interactObj->flags &= ~INTERACT_FLAGS_UNK_0010; } sp118 = obj->segment.trans.y_position - (sp118 + var_f14); if (racer->buoyancy > 0.0) { i = 0; - if (gCurrentRacerInput & 0x0010) { + if (gCurrentRacerInput & R_TRIG) { i = gCurrentStickX * 2; } - rotate_racer_in_water(obj, racer, spD4, temp_v0_10, updateRate, i, 1.0f); + rotate_racer_in_water(obj, racer, &spD4, temp_v0_10, updateRate, i, 1.0f); } if (racer->buoyancy > 0.0) { obj->segment.trans.y_position += racer->buoyancy * racer->unkC4; @@ -1289,11 +1293,11 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r } i = racer->unk1D2; if (gCurrentPlayerIndex == PLAYER_COMPUTER && !func_80023568()) { - onscreen_ai_racer_physics(obj, racer, updateRate); - } else { + onscreen_ai_racer_physics(obj, racer, updateRate); + } else { func_80054FD0(obj, racer, updateRate); } - if ((!i) && racer->unk1D2) { + if (!i && racer->unk1D2) { i = 1; } racer->unk1D2 = i; @@ -1304,51 +1308,51 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r obj->segment.x_velocity = temp; obj->segment.y_velocity = (obj->segment.trans.y_position - sp10C) * temp_f2; racer->forwardVel -= (racer->forwardVel + (racer->velocity * 0.05)) * 0.125; - if (((racer->buoyancy > 0.0) && (racer->unk1FB == 0)) && (obj->segment.y_velocity > 4.0)) { + if (racer->buoyancy > 0.0 && racer->unk1FB == 0 && obj->segment.y_velocity > 4.0) { obj->segment.y_velocity = 4.0f; } - if ((gNumViewports < 2) && (obj->segment.header->unk57 >= 9)) { - if (((gCurrentRacerInput & (0x8000 | 0x0010)) == (0x8000 | 0x0010)) && ((gCurrentStickX < (-30)) || (gCurrentStickX > 30))) { - func_800B4668(obj, 8, updateRate << 10, 0x80); + if (gNumViewports < 2 && obj->segment.header->unk57 >= 9) { + if ((gCurrentRacerInput & (A_BUTTON | R_TRIG)) == (A_BUTTON | R_TRIG) && (gCurrentStickX < -30 || gCurrentStickX > 30)) { + func_800B4668(obj, 8, updateRate << 10, 0x80); } else { - func_800B46BC(obj, 8, updateRate << 9, 0x20); + func_800B46BC(obj, 8, updateRate << 9, 0x20); } } - if ((gCurrentPlayerIndex >= PLAYER_ONE) && (racer->buoyancy > 0.0)) { + if (gCurrentPlayerIndex >= PLAYER_ONE && racer->buoyancy > 0.0) { if (gNumViewports < 3) { - temp_f2 = ((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.y_velocity * obj->segment.y_velocity)) + (obj->segment.z_velocity * obj->segment.z_velocity); - if (temp_f2 > 16.0f) { - if (temp_f2 < 80.0f) { - obj->unk74 |= 0x8 | 0x4; + temp_f2 = ((obj->segment.x_velocity * obj->segment.x_velocity) + (obj->segment.y_velocity * obj->segment.y_velocity)) + (obj->segment.z_velocity * obj->segment.z_velocity); + if (temp_f2 > 16.0f) { + if (temp_f2 < 80.0f) { + obj->unk74 |= 0x8 | 0x4; + } + if (temp_f2 > 28.0f) { + obj->unk74 |= 3; + } + if ((gNumViewports == 1) && (temp_f2 > 10.25f)) { + obj->unk74 |= 0x40; + } } - if (temp_f2 > 28.0f) { - obj->unk74 |= 3; - } - if ((gNumViewports == 1) && (temp_f2 > 10.25f)) { - obj->unk74 |= 0x40; - } - } } else { - if (racer->velocity < 0.0f) { - var_f2 = -racer->velocity; - } else { - var_f2 = racer->velocity; - } - if (var_f2 > 4.0f) { - obj->unk74 |= 0xC; - } + if (racer->velocity < 0.0f) { + var_f2 = -racer->velocity; + } else { + var_f2 = racer->velocity; + } + if (var_f2 > 4.0f) { + obj->unk74 |= 0xC; + } } } - if (((gCurrentPlayerIndex != PLAYER_COMPUTER) && (racer->boostTimer == 0)) && (gNumViewports < 2)) { - asset20 = &((Asset20 *) get_misc_asset(20))[racer->unk2]; + if (gCurrentPlayerIndex != PLAYER_COMPUTER && racer->boostTimer == 0 && gNumViewports < 2) { + asset20 = &((Asset20 *) get_misc_asset(MISC_ASSET_UNK14))[racer->unk2]; i = ((racer->boostType & EMPOWER_BOOST) >> 2) + 10; if (i > 10) { - if ((asset20->unk70 > 0) || (asset20->unk74 > 0.0)) { + if (asset20->unk70 > 0 || asset20->unk74 > 0.0) { obj->unk74 |= 1 << i; } - } else if ((asset20->unk70 == 2) && (asset20->unk74 < 0.5)) { + } else if (asset20->unk70 == 2 && asset20->unk74 < 0.5) { obj->unk74 |= 1 << i; - } else if ((asset20->unk70 < 2) && (asset20->unk74 > 0.0f)) { + } else if (asset20->unk70 < 2 && asset20->unk74 > 0.0f) { obj->unk74 |= 1 << i; } } @@ -1366,14 +1370,14 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r gCurrentRacerTransform.x_position = 0.0f; gCurrentRacerTransform.y_position = 0.0f; gCurrentRacerTransform.z_position = 0.0f; - object_transform_to_matrix_2((f32 (*)[4]) sp68, &gCurrentRacerTransform); + object_transform_to_matrix_2(sp68, &gCurrentRacerTransform); guMtxXFMF(sp68, obj->segment.x_velocity, obj->segment.y_velocity, obj->segment.z_velocity, &racer->lateral_velocity, (f32 *) (&racer->unk34), &racer->velocity); - if ((racer->groundedWheels == 0) && (racer->waterTimer == 0)) { - var_v1 = (((-gCurrentStickY) * 0x40) & 0xFFFF) - (obj->segment.trans.x_rotation & 0xFFFF); + if (racer->groundedWheels == 0 && racer->waterTimer == 0) { + var_v1 = ((-gCurrentStickY * 0x40) & 0xFFFF) - (obj->segment.trans.x_rotation & 0xFFFF); if (var_v1 > 0x8000) { var_v1 -= 0xFFFF; } - if (var_v1 < (-0x8000)) { + if (var_v1 < -0x8000) { var_v1 += 0xFFFF; } obj->segment.trans.x_rotation += var_v1 >> 2; @@ -1381,26 +1385,26 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r if (var_v0 > 0x8000) { var_v0 -= 0xFFFF; } - if (var_v0 < (-0x8000)) { + if (var_v0 < -0x8000) { var_v0 += 0xFFFF; } var_v0 *= updateRate; racer->x_rotation_vel += var_v0 >> 4; } if (gRaceStartTimer != 0) { - gCurrentButtonsPressed &= ~0x0010; + gCurrentButtonsPressed &= ~R_TRIG; } - if ((racer->buoyancy != 0.0f) || (racer->groundedWheels == 4)) { + if (racer->buoyancy != 0.0f || racer->groundedWheels == 4) { racer->unk1FB = 0; } - if (((gCurrentButtonsPressed & 0x0010) && ((racer->buoyancy > 0.0f) || (racer->groundedWheels >= 2))) && (racer->unk1FB == 0)) { + if (((gCurrentButtonsPressed & R_TRIG) && ((racer->buoyancy > 0.0f) || (racer->groundedWheels >= 2))) && (racer->unk1FB == 0)) { if (racer->buoyancy != 0.0f) { - obj->segment.y_velocity += 4.5; - if (obj->segment.y_velocity > 5.5) { - obj->segment.y_velocity = 5.5f; - } + obj->segment.y_velocity += 4.5; + if (obj->segment.y_velocity > 5.5) { + obj->segment.y_velocity = 5.5f; + } } else { - obj->segment.y_velocity += 3.5; + obj->segment.y_velocity += 3.5; } racer->unk1FB = ((s32) ((f32) ((2.0 * obj->segment.y_velocity) / gCurrentRacerWeightStat))) + 1; } @@ -1413,12 +1417,12 @@ void func_80046524(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r racer->unkC4 = 0.11f; } if (obj->unk60->unk0 == 1) { - temp_v0_16 = (Unknown80046524 *) obj->unk60->unk4; - temp_v0_16->unk0 = (gCurrentStickX * 0x14) + 0x4000; + temp_v0_16 = (Unknown80046524 *) obj->unk60->unk4[0]; + temp_v0_16->unk0 = (gCurrentStickX * 20) + 0x4000; temp_v0_16->unk3A++; temp_v0_16->unk3A &= 1; } - second_racer_camera_update(obj, racer, 4, updateRateF); + second_racer_camera_update(obj, racer, CAMERA_HOVERCRAFT, updateRateF); if (sp67) { func_800230D0(obj, racer); } @@ -2628,7 +2632,7 @@ void update_player_racer(Object *obj, s32 updateRate) { } } else if (tempRacer->shieldSoundMask) { func_800096F8(tempRacer->shieldSoundMask); - tempRacer->shieldSoundMask = 0; + tempRacer->shieldSoundMask = NULL; } tempRacer->shieldTimer -= updateRate; if (tempRacer->shieldTimer <= 0) { @@ -6057,7 +6061,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat } else { if (racer->shieldSoundMask) { func_800096F8(racer->shieldSoundMask); - racer->shieldSoundMask = 0; + racer->shieldSoundMask = NULL; } } racer->shieldTimer -= updateRate; @@ -6065,7 +6069,7 @@ void update_AI_racer(Object *obj, Object_Racer *racer, s32 updateRate, f32 updat racer->shieldType = 0; } } - if (racer->soundMask != 0) { + if (racer->soundMask != NULL) { update_spatial_audio_position(racer->soundMask, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); } gRacerInputBlocked = FALSE; diff --git a/src/tracks.c b/src/tracks.c index 563b27df..b7e64a92 100644 --- a/src/tracks.c +++ b/src/tracks.c @@ -2120,134 +2120,70 @@ void func_8002D8DC(s32 arg0, s32 arg1, s32 updateRate) { D_8011D360[D_8011D364].yOffset = D_8011D36C; } -#ifdef NON_EQUIVALENT void func_8002DE30(Object *obj) { s32 sp94; s32 sp90; - s32 sp8C; - s32 sp88; + s32 blockId; + s32 var_t3; + s32 k; + u32 batchFlags; + s32 foundResult; s32 i; - s32 sp5C; - LevelModelSegment *segment; - ObjectHeader *objHeader; - Triangle *temp_t0; - TriangleBatchInfo *batches; - Vertex *vert; - f32 temp_f0_2; - s16 temp_v0_3; - s16 segmentIndex; - s16 var_a1; - s16 var_a2; - s16 facesOffset; - s32 obj_yPos; - s32 temp_v0; - s32 temp_v0_2; - s32 var_s4; - s32 var_s7; - s32 var_t2; - s32 var_v1; - u32 temp_v1_2; - u8 *var_a0; - u8 temp_t7; - s32 vertsOffset; + LevelModelSegment *block; + Triangle *triangle; + Vertex *vertices; + s32 minYPos; + s32 maxYPos; + s32 j; - objHeader = obj->segment.header; - obj_yPos = obj->segment.trans.y_position; - sp94 = obj_yPos + objHeader->unk44; - sp90 = obj_yPos + objHeader->unk42; - segmentIndex = obj->segment.object.segmentID; - var_s7 = 0; - if (segmentIndex != -1) { - //func_800314DC = collision - temp_v0 = func_800314DC(&gCurrentLevelModel->segmentsBoundingBoxes[segmentIndex], - (obj->segment.trans.x_position - 16.0f), - (obj->segment.trans.z_position - 16.0f), - (obj->segment.trans.x_position + 16.0f), - (obj->segment.trans.z_position + 16.0f)); - - segment = &gCurrentLevelModel->segments[segmentIndex]; - for (i = 0; i < segment->numberOfBatches; i++) { - vertsOffset = segment->batches[i].verticesOffset; - - } - - i = 0; - segment = &gCurrentLevelModel->segments[segmentIndex]; - var_t2 = 0; - if (segment->numberOfBatches > 0) { - batches = segment->batches; - vertsOffset = batches->verticesOffset; -loop_3: - temp_v1_2 = batches->flags; - if (!(temp_v1_2 & 0x6900)) { - facesOffset = batches->facesOffset; - vert = &segment->vertices[vertsOffset]; - if ((facesOffset < batches[1].textureIndex) != 0) { - var_s4 = facesOffset * 2; - if (var_s7 == 0) { -loop_6: - temp_v0_2 = *(segment->unk10 + var_s4) & temp_v0; - if ((temp_v0_2 & 0xFF) && (temp_v0_2 & 0xFF00)) { - temp_t0 = &segment->triangles[facesOffset]; - temp_t7 = temp_t0->verticesArray[1]; - var_a0 = &temp_t0->verticesArray[1]; - var_v1 = 1; - var_a1 = vert[temp_t7].y; - var_a2 = var_a1; - do { - var_v1 += 1; - temp_v0_3 = vert[var_a0[1]].y; - if (temp_v0_3 < var_a1) { - var_a1 = temp_v0_3; - } else if (var_a2 < temp_v0_3) { - var_a2 = temp_v0_3; - } - var_a0 += 1; - } while (var_v1 != 3); - if ((var_a2 >= sp90) && (sp94 >= var_a1)) { - sp88 = temp_v0; - sp5C = var_t2; - if (point_triangle_2d_xz_intersection( - obj->segment.trans.x_position, - obj->segment.trans.z_position, - &vert[temp_t7].x, - &vert[temp_t0->verticesArray[2]].x, - &vert[temp_t0->verticesArray[3]].x - ) != 0) { - var_s7 = 1; - obj->shading->unk0 += (((1.0f - D_800DC884[temp_v1_2]) - obj->shading->unk0) * 0.2); - } + sp94 = (s32) obj->segment.trans.y_position + obj->segment.header->unk44; + sp90 = (s32) obj->segment.trans.y_position + obj->segment.header->unk42; + blockId = obj->segment.object.segmentID; + foundResult = FALSE; + if (blockId != -1) { + var_t3 = func_800314DC( + &gCurrentLevelModel->segmentsBoundingBoxes[blockId], + obj->segment.trans.x_position - 16.0f, obj->segment.trans.z_position - 16.0f, + obj->segment.trans.x_position + 16.0f, obj->segment.trans.z_position + 16.0f + ); + block = &gCurrentLevelModel->segments[blockId]; + for(i = 0; i < block->numberOfBatches && !foundResult; i++) { + if (!(block->batches[i].flags & (BATCH_FLAGS_HIDDEN | BATCH_FLAGS_UNK00000800 | BATCH_FLAGS_WATER | BATCH_FLAGS_FORCE_NO_SHADOWS))) { + batchFlags = (block->batches[i].flags >> 0x13) & 7; + vertices = &block->vertices[block->batches[i].verticesOffset]; + for(j = block->batches[i].facesOffset; j < block->batches[i+1].facesOffset && !foundResult; j++) { + blockId = block->unk10[j] & var_t3; + if(blockId){} + if (((block->unk10[j] & var_t3) & 0xFF) && ((block->unk10[j] & var_t3) & 0xFF00)) { + triangle = &block->triangles[j]; + minYPos = vertices[triangle->verticesArray[1]].y; + maxYPos = minYPos; + for(k = 1; k < 3; k++) { + if (vertices[triangle->verticesArray[k + 1]].y < minYPos) { + minYPos = vertices[triangle->verticesArray[k + 1]].y; + } else if (maxYPos < vertices[triangle->verticesArray[k + 1]].y) { + maxYPos = vertices[triangle->verticesArray[k + 1]].y; } } - facesOffset += 1; - batches = &segment->batches[var_t2]; - var_s4 += 2; - if (facesOffset < batches[1].textureIndex) { - if (var_s7 != 0) { - - } else { - goto loop_6; + if (maxYPos >= sp90 && sp94 >= minYPos) { + if (point_triangle_2d_xz_intersection( + obj->segment.trans.x_position, + obj->segment.trans.z_position, + &vertices[triangle->verticesArray[1]].x, + &vertices[triangle->verticesArray[2]].x, + &vertices[triangle->verticesArray[3]].x) + ) { + foundResult = TRUE; + obj->shading->unk0 += (((1.0f - D_800DC884[batchFlags]) - obj->shading->unk0) * 0.2); } } } } } - var_t2 += 0xC; - i++; - batches += 0xC; - if (i < segment->numberOfBatches) { - if (var_s7 != 0) { - - } else { - goto loop_3; - } - } + } } } -#else -GLOBAL_ASM("asm/non_matchings/tracks/func_8002DE30.s") -#endif #ifdef NON_EQUIVALENT void func_8002E234(Object *obj, s32 bool) { diff --git a/src/unknown_005740.c b/src/unknown_005740.c index 376d4f40..77b09d40 100644 --- a/src/unknown_005740.c +++ b/src/unknown_005740.c @@ -27,10 +27,10 @@ unk80119C38 *D_80119C30[2]; unk80119C38 *D_80119C38; Object_Racer *D_80119C3C; unk80115D18 *D_80119C40; // This should be in unknown_008C40? -unk80119C50 **D_80119C44; +SoundMask **D_80119C44; unk80119C48 **D_80119C48; //0x24 struct size - 0x5A0 total size - should be 40 elements u8 D_80119C4C; -unk80119C50 **D_80119C50; +SoundMask **D_80119C50; s32 D_80119C54; //Padding? unk80119C58 **D_80119C58; //Struct of size in func_8000A184 = 0x180 = 384 bytes unk80119C58 **D_80119C5C; //Struct of size in func_8000A184 = 0x180 = 384 bytes Likely the same as above diff --git a/src/unknown_005740.h b/src/unknown_005740.h index cff57380..20fecf42 100644 --- a/src/unknown_005740.h +++ b/src/unknown_005740.h @@ -5,23 +5,6 @@ #include "structs.h" #include "audio.h" -/* Size: 0x24 / 36 bytes */ -typedef struct unk80119C50 { - /* 0x00 */ f32 x, y, z; - /* 0x0C */ u16 soundId; - /* 0x0E */ u8 unkE; - /* 0x0F */ u8 unkF; - /* 0x10 */ u8 unk10; - /* 0x11 */ u8 unk11; - /* 0x12 */ u8 unk12; - /* 0x14 */ s32 unk14; - /* 0x18 */ s32 unk18; - /* 0x1C */ s32 *soundMask; - /* 0x20 */ u8 unk20; - /* 0x21 */ u8 unk21; - /* 0x22 */ u8 unk22; -} unk80119C50; - /* Size: 0x90 / 144 bytes */ typedef struct unk80119C48 { s32 unk18; @@ -153,8 +136,8 @@ extern s32 D_800DC6D8; extern s32 D_800DC6DC; extern u16 D_800DC6E0; extern unk80119C48 **D_80119C48; -extern unk80119C50 **D_80119C44; -extern unk80119C50 **D_80119C50; +extern SoundMask **D_80119C44; +extern SoundMask **D_80119C50; extern u8 D_80119C4C; diff --git a/src/unknown_008C40.c b/src/unknown_008C40.c index 0788ea1b..6d5046c7 100644 --- a/src/unknown_008C40.c +++ b/src/unknown_008C40.c @@ -217,57 +217,50 @@ s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, /** * Play Sound at position */ -void play_sound_at_position(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, s32 *soundMask) { +void play_sound_at_position(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, SoundMask **soundMask) { func_8000974C(D_80119C40[soundId].unk0, x, y, z, arg4, D_80119C40[soundId].unk3, D_80119C40[soundId].unk2, D_80119C40[soundId].unk6, 0, D_80119C40[soundId].unk4, D_80119C40[soundId].unk8, soundMask); } -void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 arg6, s32 *soundMask) { +void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 arg6, SoundMask **soundMask) { func_8000974C(soundId, x, y, z, arg4, 100, arg5, 15000, 0, arg6, 0x3F, soundMask); } -#if 0 // I think this function is used to update the world position of any sound associated with the given soundmask. -//This matches, but it breaks update_player_racer -void update_spatial_audio_position(s32 arg0, f32 arg1, f32 arg2, f32 arg3) { - arg0->x = arg1; - arg0->y = arg2; - arg0->z = arg3; +void update_spatial_audio_position(SoundMask *arg0, f32 x, f32 y, f32 z) { + arg0->pos.x = x; + arg0->pos.y = y; + arg0->pos.z = z; } -#else -GLOBAL_ASM("asm/non_matchings/unknown_008C40/update_spatial_audio_position.s") -#endif -void func_800096F8(s32 arg0) { +void func_800096F8(SoundMask *arg0) { s32 i; - s32 *v0 = (s32 *) D_80119C44; for (i = 0; i < 40; i++) { - if (arg0 == *v0) { + if (arg0 == D_80119C44[i]) { func_8000A2E8(i); break; } - v0++; } } -void func_8000974C(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u8 arg8, u8 arg9, u8 argA, s32 *soundMask) { - unk80119C50 *temp_v0; +void func_8000974C(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u8 arg8, u8 arg9, u8 argA, SoundMask **soundMask) { + SoundMask *temp_v0; - if (soundMask != 0) { + if (soundMask != NULL) { func_800245B4(soundId | 0xE000); } if (D_800DC6E0 == 40) { - if (soundMask != 0) { + if (soundMask != NULL) { *soundMask = 0; } - func_800245B4(-0x55AB); + func_800245B4(0xAA55); return; } temp_v0 = D_80119C50[D_80119C4C--]; - temp_v0->x = x; - temp_v0->y = y; - temp_v0->z = z; + temp_v0->pos.x = x; + temp_v0->pos.y = y; + temp_v0->pos.z = z; temp_v0->soundId = soundId; temp_v0->unk11 = arg4; temp_v0->unk10 = arg5; @@ -279,8 +272,8 @@ void func_8000974C(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 arg6, temp_v0->unk22 = 0; temp_v0->soundMask = soundMask; D_80119C44[D_800DC6E0++] = temp_v0; - if (soundMask != 0) { - *soundMask = (u32) temp_v0; + if (soundMask != NULL) { + *soundMask = temp_v0; } } @@ -468,8 +461,8 @@ void func_8000A2E8(s32 arg0) { if (D_80119C44[arg0]->unk18 != 0) { func_8000488C(D_80119C44[arg0]->unk18); } - if (D_80119C44[arg0]->soundMask != 0) { - *D_80119C44[arg0]->soundMask = 0; + if (D_80119C44[arg0]->soundMask != NULL) { + *D_80119C44[arg0]->soundMask = NULL; func_800245B4(D_80119C44[arg0]->soundId | 0x5000); } D_80119C4C++; diff --git a/src/unknown_008C40.h b/src/unknown_008C40.h index 028d1751..92545bcf 100644 --- a/src/unknown_008C40.h +++ b/src/unknown_008C40.h @@ -50,23 +50,22 @@ typedef struct unk800A414_arg3 { } unk800A414_arg3; void func_80008168(void); -void func_800096F8(s32); +void func_800096F8(SoundMask *); void func_80008140(void); -void func_8000974C(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u8 arg8, u8 arg9, u8 argA, s32 *soundMask); -void play_sound_at_position(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, s32 *soundMask); +void func_8000974C(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, u8 arg6, u16 arg7, u8 arg8, u8 arg9, u8 argA, SoundMask **soundMask); +void play_sound_at_position(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, SoundMask **soundMask); void func_8000A2E8(s32 arg0); s32 func_800090C0(f32, f32, s32); -void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 arg6, s32 *soundMask); +void func_800095E8(u16 soundId, f32 x, f32 y, f32 z, u8 arg4, u8 arg5, f32 arg6, SoundMask **soundMask); void func_800098A4(u8 arg0, u16 soundId, f32 x, f32 y, f32 z, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u16 arg9, u8 argA, u8 argB, u8 argC); -//void update_spatial_audio_position(Vec3f *arg0, f32 arg1, f32 arg2, f32 arg3); s32 func_800099EC(u8 arg0); void func_8000A414(Gfx **dlist, Vertex **verts, Triangle **tris, floatXYZVals *arg3, u8 red, u8 green, u8 blue); void func_80006BFC(Object *obj, ObjectSegment *segment, Object *obj2, s32 updateRate); +void update_spatial_audio_position(SoundMask *arg0, f32 x, f32 y, f32 z); s32 func_800092A8(f32 inX, f32 inY, f32 inZ, floatXYZVals *floatXYZ, f32 *outX, f32 *outY, f32 *outZ); void func_80009968(f32, f32, f32, u8, u8, u8); // Non Matching -void update_spatial_audio_position(s32, f32, f32, f32); //Not accurate, the real one is above but it breaks update_player_racer void func_80008174(void); // Non Matching void func_80008040(void); // Non Matching void func_80008438(Object **arg0, s32 numRacers, s32 updateRate); // Non Matching diff --git a/src/unused_string.c b/src/unused_string.c new file mode 100644 index 00000000..5d88332d --- /dev/null +++ b/src/unused_string.c @@ -0,0 +1,102 @@ +/* The comment below is needed for this file to be picked up by generate_ld */ +/* RAM_POS: 0x800B4710 */ + +#include "types.h" +#include "macros.h" + +UNUSED char *strcpy(char *src, const char *dest) { + char *ret = src; + + while ((*src++ = *dest++) != '\0'); + return ret; +} + +UNUSED char *strcat(char *dest, const char *src) { + char *ret = dest; + + while (*dest != '\0') dest++; + while ((*dest++ = *src++) != '\0'); + + return ret; +} + +UNUSED int strcasecmp(const char *s1, const char *s2) { + unsigned char c1; + unsigned char c2; + + while (*s1 || *s2) { + c1 = *s1; + + if (c1 >= 'a' && c1 <= 'z') { + c1 -= 0x20; + } + + c2 = *s2; + + if (c2 >= 'a' && c2 <= 'z') { + c2 -= 0x20; + } + + if (c1 < c2) { + return -1; + } + + if (c2 < c1) { + return 1; + } + + s1++; + s2++; + } + + return 0; +} + +UNUSED int strncasecmp(const char *s1, const char *s2, size_t n) { + unsigned char c1; + unsigned char c2; + + while ((*s1 || *s2) && n) { + c1 = *s1; + + if (c1 >= 'a' && c1 <= 'z') { + c1 -= 0x20; + } + + c2 = *s2; + + if (c2 >= 'a' && c2 <= 'z') { + c2 -= 0x20; + } + + if (c1 < c2) { + return -1; + } + + if (c2 < c1) { + return 1; + } + + s1++; + s2++; + n--; + } + + return 0; +} + +/** + * memset(void *s, int c, size_t n) + * + * s: start of area to clear + * c: char to fill with + * n: size of area to clear + */ +UNUSED void *memset(void *s, int c, size_t n) { + unsigned char *ret = s; + + while (n-- > 0) { + *ret++ = c; + } + return s; +} diff --git a/src/vehicle_smokey.c b/src/vehicle_smokey.c index cf12c657..361814ed 100644 --- a/src/vehicle_smokey.c +++ b/src/vehicle_smokey.c @@ -230,7 +230,7 @@ void update_smokey(s32 updateRate, f32 updateRateF, Object *obj, Object_Racer *r stepFrame = 3; } if (animFrame == stepFrame && stepFrame + 1 == obj->segment.animFrame >> 4) { - play_sound_at_position(SOUND_UNK_223, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, 0); + play_sound_at_position(SOUND_UNK_223, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); } } if (racer->vehicleIDPrev == VEHICLE_SMOKEY && racer->playerIndex == PLAYER_COMPUTER && func_80023568()) { diff --git a/src/weather.c b/src/weather.c index 7bfedab3..706625bc 100644 --- a/src/weather.c +++ b/src/weather.c @@ -140,10 +140,10 @@ s32 D_800E2C78 = 0; s32 gLightningTimer = 0; s32 gThunderTimer = 0; s32 D_800E2C84 = 0; -s32 gRainOverlayUnusedValue = 0; // Set, but never read. +TextureHeader *gRainOverlayUnusedValue = NULL; // Set, but never read. Sprite *gRainSplashGfx = 0; s32 D_800E2C90 = 0; -s32 gWeatherSoundMask = 0; +SoundMask *gWeatherSoundMask = NULL; FadeTransition D_800E2C98 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_UNK1, FADE_COLOR_WHITE, 5, 2); @@ -458,22 +458,22 @@ void func_800AD144(s32 arg0, s32 arg1) { void free_rain_memory(void) { if (gRainGfx[0].tex != NULL) { free_texture(gRainGfx[0].tex); - gRainOverlayUnusedValue = 0; + gRainOverlayUnusedValue = NULL; } if (gRainGfx[1].tex != NULL) { free_texture(gRainGfx[1].tex); - gRainOverlayUnusedValue = 0; + gRainOverlayUnusedValue = NULL; } if (gRainSplashGfx != NULL) { free_sprite(gRainSplashGfx); - gRainSplashGfx = 0; + gRainSplashGfx = NULL; } - if (gWeatherSoundMask) { + if (gWeatherSoundMask != NULL) { func_800096F8(gWeatherSoundMask); - gWeatherSoundMask = 0; + gWeatherSoundMask = NULL; } gWeatherType = WEATHER_SNOW;