From 7225b49da07f85011f35c074ebf3800890d45d7e Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Sun, 19 Nov 2023 11:03:39 -0500 Subject: [PATCH] We are racing in Windmill Plains. (Lap 2/3) (#435) * Match func_80022948 * Match func_8002277C and func_8000BADC * Match func_8005CB68 and finish vehicle_tricky * Match func_800C1EE8 * Match func_8001A8F4 * Add some NON_EQUIVALENTS that are really close. * func_800A6254 WIP update * Update score readme --- README.md | 18 +- .../fade_transition/func_800C15D4.s | 16 +- .../fade_transition/func_800C1EE8.s | 241 ------------ asm/non_matchings/objects/func_8000BADC.s | 318 --------------- asm/non_matchings/objects/func_8001A8F4.s | 367 ------------------ asm/non_matchings/objects/func_8002277C.s | 69 ---- asm/non_matchings/objects/func_80022948.s | 246 ------------ .../vehicle_tricky/func_8005CB68.s | 340 ---------------- include/structs.h | 4 +- src/camera.h | 2 +- src/fade_transition.c | 186 ++++++++- src/fade_transition.h | 4 +- src/game_ui.c | 346 ++++++++++++++++- src/game_ui.h | 46 ++- src/object_functions.c | 2 +- src/objects.c | 357 +++++++++++++++-- src/objects.h | 33 +- src/racer.h | 8 - src/textures_sprites.h | 3 +- src/thread3_main.c | 2 +- src/tracks.h | 4 +- src/vehicle_misc.h | 3 +- src/vehicle_tricky.c | 96 +++-- src/waves.c | 280 +------------ src/waves.h | 9 +- 25 files changed, 973 insertions(+), 2027 deletions(-) delete mode 100644 asm/non_matchings/fade_transition/func_800C1EE8.s delete mode 100644 asm/non_matchings/objects/func_8000BADC.s delete mode 100644 asm/non_matchings/objects/func_8001A8F4.s delete mode 100644 asm/non_matchings/objects/func_8002277C.s delete mode 100644 asm/non_matchings/objects/func_80022948.s delete mode 100644 asm/non_matchings/vehicle_tricky/func_8005CB68.s diff --git a/README.md b/README.md index 0e9e664d..3ddf09ab 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of November 10, 2023, this is our current score: +As of November 18, 2023, this is our current score: -    Decomp progress: 65.01% +    Decomp progress: 65.67%     Documentation progress: 35.21% @@ -128,20 +128,20 @@ s32 is_drumstick_unlocked(void) { ``` -As of November 10, 2023, this is our current score: +As of November 18, 2023, this is our current score: ``` ==================================================================== ADVENTURE ONE (ASM -> C Decompilation) - -------------- 65.01% Complete (67.79% NON_MATCHING) --------------- - # Decompiled functions: 1670 - # GLOBAL_ASM remaining: 175 + -------------- 65.67% Complete (68.46% NON_MATCHING) --------------- + # Decompiled functions: 1676 + # GLOBAL_ASM remaining: 169 # NON_MATCHING functions: 15 - # NON_EQUIVALENT WIP functions: 51 + # NON_EQUIVALENT WIP functions: 52 --------------------------- Game Status ---------------------------- - Balloons: 30/47, Keys: 3/4, Trophies: 3/5 + Balloons: 31/47, Keys: 3/4, Trophies: 3/5 T.T. Amulets: 3/4, Wizpig Amulets: 3/4 -------------------------------------------------------------------- - We are racing Taj in the Plane Challenge. (Lap 3/3) + We are racing in Windmill Plains. (Lap 2/3) ==================================================================== ADVENTURE TWO (Cleanup & Documentation) ------------------------- 35.21% Complete -------------------------- diff --git a/asm/non_matchings/fade_transition/func_800C15D4.s b/asm/non_matchings/fade_transition/func_800C15D4.s index d314ff60..0efa3b75 100644 --- a/asm/non_matchings/fade_transition/func_800C15D4.s +++ b/asm/non_matchings/fade_transition/func_800C15D4.s @@ -28,10 +28,10 @@ glabel func_800C15D4 /* 0C223C 800C163C 3C058013 */ lui $a1, %hi(gCurFadeGreen) # $a1, 0x8013 /* 0C2240 800C1640 3C048013 */ lui $a0, %hi(gCurFadeRed) # $a0, 0x8013 /* 0C2244 800C1644 3C03800E */ lui $v1, %hi(sTransitionVtx) # $v1, 0x800e -/* 0C2248 800C1648 3C0A800E */ lui $t2, %hi(sTransitionTris) # $t2, 0x800e +/* 0C2248 800C1648 3C0A800E */ lui $t2, %hi(sTransitionVtx) # $t2, 0x800e /* 0C224C 800C164C 3C068013 */ lui $a2, %hi(gCurFadeBlue) # $a2, 0x8013 /* 0C2250 800C1650 24C6A736 */ addiu $a2, %lo(gCurFadeBlue) # addiu $a2, $a2, -0x58ca -/* 0C2254 800C1654 254A31C8 */ addiu $t2, %lo(sTransitionTris) # addiu $t2, $t2, 0x31c8 +/* 0C2254 800C1654 254A31C8 */ addiu $t2, %lo(sTransitionVtx+0x8) # addiu $t2, $t2, 0x31c8 /* 0C2258 800C1658 246331C0 */ addiu $v1, %lo(sTransitionVtx) # addiu $v1, $v1, 0x31c0 /* 0C225C 800C165C 2484A734 */ addiu $a0, %lo(gCurFadeRed) # addiu $a0, $a0, -0x58cc /* 0C2260 800C1660 24A5A735 */ addiu $a1, %lo(gCurFadeGreen) # addiu $a1, $a1, -0x58cb @@ -110,8 +110,8 @@ glabel func_800C15D4 /* 0C2380 800C1780 1420FFBB */ bnez $at, .L800C1670 /* 0C2384 800C1784 00001025 */ move $v0, $zero /* 0C2388 800C1788 3C03800E */ lui $v1, %hi(sTransitionVtx) # $v1, 0x800e -/* 0C238C 800C178C 3C0A800E */ lui $t2, %hi(sTransitionTris) # $t2, 0x800e -/* 0C2390 800C1790 254A31C8 */ addiu $t2, %lo(sTransitionTris) # addiu $t2, $t2, 0x31c8 +/* 0C238C 800C178C 3C0A800E */ lui $t2, %hi(sTransitionVtx) # $t2, 0x800e +/* 0C2390 800C1790 254A31C8 */ addiu $t2, %lo(sTransitionVtx+0x8) # addiu $t2, $t2, 0x31c8 /* 0C2394 800C1794 246331C0 */ addiu $v1, %lo(sTransitionVtx) # addiu $v1, $v1, 0x31c0 /* 0C2398 800C1798 24090009 */ li $t1, 9 /* 0C239C 800C179C 2408000A */ li $t0, 10 @@ -280,7 +280,7 @@ glabel func_800C15D4 /* 0C2618 800C1A18 246331C8 */ addiu $v1, %lo(sTransitionTris) # addiu $v1, $v1, 0x31c8 /* 0C261C 800C1A1C 31F80080 */ andi $t8, $t7, 0x80 /* 0C2620 800C1A20 1300001D */ beqz $t8, .L800C1A98 -/* 0C2624 800C1A24 3C06800E */ lui $a2, %hi(sTransitionTaskNum) # $a2, 0x800e +/* 0C2624 800C1A24 3C06800E */ lui $a2, %hi(sTransitionTris) # $a2, 0x800e /* 0C2628 800C1A28 3C014334 */ li $at, 0x43340000 # 180.000000 /* 0C262C 800C1A2C 3C19800E */ lui $t9, %hi(sTransitionFadeTimer) # $t9, 0x800e /* 0C2630 800C1A30 44801000 */ mtc1 $zero, $f2 @@ -342,7 +342,7 @@ glabel func_800C15D4 /* 0C2704 800C1B04 3C018013 */ lui $at, %hi(D_8012A76C) # $at, 0x8013 /* 0C2708 800C1B08 E422A76C */ swc1 $f2, %lo(D_8012A76C)($at) .L800C1B0C: -/* 0C270C 800C1B0C 24C631D0 */ addiu $a2, %lo(sTransitionTaskNum) # addiu $a2, $a2, 0x31d0 +/* 0C270C 800C1B0C 24C631D0 */ addiu $a2, %lo(sTransitionTris+0x8) # addiu $a2, $a2, 0x31d0 /* 0C2710 800C1B10 24050400 */ li $a1, 1024 /* 0C2714 800C1B14 24040040 */ li $a0, 64 /* 0C2718 800C1B18 00001025 */ move $v0, $zero @@ -465,8 +465,8 @@ glabel func_800C15D4 /* 0C28E8 800C1CE8 0066082B */ sltu $at, $v1, $a2 /* 0C28EC 800C1CEC 1420FF8B */ bnez $at, .L800C1B1C /* 0C28F0 800C1CF0 00001025 */ move $v0, $zero -/* 0C28F4 800C1CF4 3C0A800E */ lui $t2, %hi(sTransitionTaskNum) # $t2, 0x800e -/* 0C28F8 800C1CF8 254A31D0 */ addiu $t2, %lo(sTransitionTaskNum) # addiu $t2, $t2, 0x31d0 +/* 0C28F4 800C1CF4 3C0A800E */ lui $t2, %hi(sTransitionTris) # $t2, 0x800e +/* 0C28F8 800C1CF8 254A31D0 */ addiu $t2, %lo(sTransitionTris+0x8) # addiu $t2, $t2, 0x31d0 /* 0C28FC 800C1CFC 0000A025 */ move $s4, $zero /* 0C2900 800C1D00 240B0008 */ li $t3, 8 /* 0C2904 800C1D04 00142040 */ sll $a0, $s4, 1 diff --git a/asm/non_matchings/fade_transition/func_800C1EE8.s b/asm/non_matchings/fade_transition/func_800C1EE8.s deleted file mode 100644 index 1a91d327..00000000 --- a/asm/non_matchings/fade_transition/func_800C1EE8.s +++ /dev/null @@ -1,241 +0,0 @@ -.late_rodata -glabel D_800E932C -.float 1.2 - -.text -glabel func_800C1EE8 -/* 0C2AE8 800C1EE8 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 0C2AEC 800C1EEC 3C03800E */ lui $v1, %hi(sTransitionFadeTimer) # $v1, 0x800e -/* 0C2AF0 800C1EF0 246331B0 */ addiu $v1, %lo(sTransitionFadeTimer) # addiu $v1, $v1, 0x31b0 -/* 0C2AF4 800C1EF4 44842000 */ mtc1 $a0, $f4 -/* 0C2AF8 800C1EF8 94620000 */ lhu $v0, ($v1) -/* 0C2AFC 800C1EFC AFBF004C */ sw $ra, 0x4c($sp) -/* 0C2B00 800C1F00 AFBE0048 */ sw $fp, 0x48($sp) -/* 0C2B04 800C1F04 AFB70044 */ sw $s7, 0x44($sp) -/* 0C2B08 800C1F08 AFB60040 */ sw $s6, 0x40($sp) -/* 0C2B0C 800C1F0C AFB5003C */ sw $s5, 0x3c($sp) -/* 0C2B10 800C1F10 AFB40038 */ sw $s4, 0x38($sp) -/* 0C2B14 800C1F14 AFB30034 */ sw $s3, 0x34($sp) -/* 0C2B18 800C1F18 AFB20030 */ sw $s2, 0x30($sp) -/* 0C2B1C 800C1F1C AFB1002C */ sw $s1, 0x2c($sp) -/* 0C2B20 800C1F20 AFB00028 */ sw $s0, 0x28($sp) -/* 0C2B24 800C1F24 E7B70020 */ swc1 $f23, 0x20($sp) -/* 0C2B28 800C1F28 E7B60024 */ swc1 $f22, 0x24($sp) -/* 0C2B2C 800C1F2C E7B50018 */ swc1 $f21, 0x18($sp) -/* 0C2B30 800C1F30 E7B4001C */ swc1 $f20, 0x1c($sp) -/* 0C2B34 800C1F34 184000B4 */ blez $v0, .L800C2208 -/* 0C2B38 800C1F38 46802020 */ cvt.s.w $f0, $f4 -/* 0C2B3C 800C1F3C 0082082A */ slt $at, $a0, $v0 -/* 0C2B40 800C1F40 10200014 */ beqz $at, .L800C1F94 -/* 0C2B44 800C1F44 00009825 */ move $s3, $zero -/* 0C2B48 800C1F48 3C018013 */ lui $at, %hi(D_8012A760) # $at, 0x8013 -/* 0C2B4C 800C1F4C C428A760 */ lwc1 $f8, %lo(D_8012A760)($at) -/* 0C2B50 800C1F50 3C178013 */ lui $s7, %hi(D_8012A758) # $s7, 0x8013 -/* 0C2B54 800C1F54 46080282 */ mul.s $f10, $f0, $f8 -/* 0C2B58 800C1F58 26F7A758 */ addiu $s7, %lo(D_8012A758) # addiu $s7, $s7, -0x58a8 -/* 0C2B5C 800C1F5C C6E60000 */ lwc1 $f6, ($s7) -/* 0C2B60 800C1F60 3C018013 */ lui $at, %hi(D_8012A764) # $at, 0x8013 -/* 0C2B64 800C1F64 460A3400 */ add.s $f16, $f6, $f10 -/* 0C2B68 800C1F68 3C1E8013 */ lui $fp, %hi(D_8012A75C) # $fp, 0x8013 -/* 0C2B6C 800C1F6C E6F00000 */ swc1 $f16, ($s7) -/* 0C2B70 800C1F70 C424A764 */ lwc1 $f4, %lo(D_8012A764)($at) -/* 0C2B74 800C1F74 27DEA75C */ addiu $fp, %lo(D_8012A75C) # addiu $fp, $fp, -0x58a4 -/* 0C2B78 800C1F78 46040202 */ mul.s $f8, $f0, $f4 -/* 0C2B7C 800C1F7C C7D20000 */ lwc1 $f18, ($fp) -/* 0C2B80 800C1F80 00447023 */ subu $t6, $v0, $a0 -/* 0C2B84 800C1F84 A46E0000 */ sh $t6, ($v1) -/* 0C2B88 800C1F88 46089180 */ add.s $f6, $f18, $f8 -/* 0C2B8C 800C1F8C 1000000C */ b .L800C1FC0 -/* 0C2B90 800C1F90 E7C60000 */ swc1 $f6, ($fp) -.L800C1F94: -/* 0C2B94 800C1F94 3C018013 */ lui $at, %hi(D_8012A768) # $at, 0x8013 -/* 0C2B98 800C1F98 C42AA768 */ lwc1 $f10, %lo(D_8012A768)($at) -/* 0C2B9C 800C1F9C 3C178013 */ lui $s7, %hi(D_8012A758) # $s7, 0x8013 -/* 0C2BA0 800C1FA0 26F7A758 */ addiu $s7, %lo(D_8012A758) # addiu $s7, $s7, -0x58a8 -/* 0C2BA4 800C1FA4 3C018013 */ lui $at, %hi(D_8012A76C) # $at, 0x8013 -/* 0C2BA8 800C1FA8 E6EA0000 */ swc1 $f10, ($s7) -/* 0C2BAC 800C1FAC C430A76C */ lwc1 $f16, %lo(D_8012A76C)($at) -/* 0C2BB0 800C1FB0 3C1E8013 */ lui $fp, %hi(D_8012A75C) # $fp, 0x8013 -/* 0C2BB4 800C1FB4 27DEA75C */ addiu $fp, %lo(D_8012A75C) # addiu $fp, $fp, -0x58a4 -/* 0C2BB8 800C1FB8 A4600000 */ sh $zero, ($v1) -/* 0C2BBC 800C1FBC E7D00000 */ swc1 $f16, ($fp) -.L800C1FC0: -/* 0C2BC0 800C1FC0 3C01800F */ lui $at, %hi(D_800E932C) # $at, 0x800f -/* 0C2BC4 800C1FC4 3C11800E */ lui $s1, %hi(sTransitionTaskNum) # $s1, 0x800e -/* 0C2BC8 800C1FC8 3C10800E */ lui $s0, %hi(sTransitionVtx) # $s0, 0x800e -/* 0C2BCC 800C1FCC C436932C */ lwc1 $f22, %lo(D_800E932C)($at) -/* 0C2BD0 800C1FD0 261031C0 */ addiu $s0, %lo(sTransitionVtx) # addiu $s0, $s0, 0x31c0 -/* 0C2BD4 800C1FD4 263131D0 */ addiu $s1, %lo(sTransitionTaskNum) # addiu $s1, $s1, 0x31d0 -/* 0C2BD8 800C1FD8 00009025 */ move $s2, $zero -/* 0C2BDC 800C1FDC 24160009 */ li $s6, 9 -/* 0C2BE0 800C1FE0 2415000A */ li $s5, 10 -.L800C1FE4: -/* 0C2BE4 800C1FE4 0013A400 */ sll $s4, $s3, 0x10 -/* 0C2BE8 800C1FE8 00147C03 */ sra $t7, $s4, 0x10 -/* 0C2BEC 800C1FEC 000F2400 */ sll $a0, $t7, 0x10 -/* 0C2BF0 800C1FF0 0004C403 */ sra $t8, $a0, 0x10 -/* 0C2BF4 800C1FF4 03002025 */ move $a0, $t8 -/* 0C2BF8 800C1FF8 0C01C1F1 */ jal sins_f -/* 0C2BFC 800C1FFC 01E0A025 */ move $s4, $t7 -/* 0C2C00 800C2000 C6E40000 */ lwc1 $f4, ($s7) -/* 0C2C04 800C2004 00142400 */ sll $a0, $s4, 0x10 -/* 0C2C08 800C2008 0004CC03 */ sra $t9, $a0, 0x10 -/* 0C2C0C 800C200C 46040502 */ mul.s $f20, $f0, $f4 -/* 0C2C10 800C2010 0C01C1FE */ jal coss_f -/* 0C2C14 800C2014 03202025 */ move $a0, $t9 -/* 0C2C18 800C2018 C7D20000 */ lwc1 $f18, ($fp) -/* 0C2C1C 800C201C 00124040 */ sll $t0, $s2, 1 -/* 0C2C20 800C2020 46120082 */ mul.s $f2, $f0, $f18 -/* 0C2C24 800C2024 8E2A0000 */ lw $t2, ($s1) -/* 0C2C28 800C2028 01150019 */ multu $t0, $s5 -/* 0C2C2C 800C202C 000A5880 */ sll $t3, $t2, 2 -/* 0C2C30 800C2030 4616A202 */ mul.s $f8, $f20, $f22 -/* 0C2C34 800C2034 020B6021 */ addu $t4, $s0, $t3 -/* 0C2C38 800C2038 8D8D0000 */ lw $t5, ($t4) -/* 0C2C3C 800C203C 26520001 */ addiu $s2, $s2, 1 -/* 0C2C40 800C2040 4449F800 */ cfc1 $t1, $31 -/* 0C2C44 800C2044 26731000 */ addiu $s3, $s3, 0x1000 -/* 0C2C48 800C2048 35210003 */ ori $at, $t1, 3 -/* 0C2C4C 800C204C 38210002 */ xori $at, $at, 2 -/* 0C2C50 800C2050 44C1F800 */ ctc1 $at, $31 -/* 0C2C54 800C2054 00000000 */ nop -/* 0C2C58 800C2058 460041A4 */ cvt.w.s $f6, $f8 -/* 0C2C5C 800C205C 00001012 */ mflo $v0 -/* 0C2C60 800C2060 44C9F800 */ ctc1 $t1, $31 -/* 0C2C64 800C2064 44043000 */ mfc1 $a0, $f6 -/* 0C2C68 800C2068 46161282 */ mul.s $f10, $f2, $f22 -/* 0C2C6C 800C206C 01A27021 */ addu $t6, $t5, $v0 -/* 0C2C70 800C2070 A5C4000A */ sh $a0, 0xa($t6) -/* 0C2C74 800C2074 8E380000 */ lw $t8, ($s1) -/* 0C2C78 800C2078 444FF800 */ cfc1 $t7, $31 -/* 0C2C7C 800C207C 0018C880 */ sll $t9, $t8, 2 -/* 0C2C80 800C2080 35E10003 */ ori $at, $t7, 3 -/* 0C2C84 800C2084 38210002 */ xori $at, $at, 2 -/* 0C2C88 800C2088 44C1F800 */ ctc1 $at, $31 -/* 0C2C8C 800C208C 02194021 */ addu $t0, $s0, $t9 -/* 0C2C90 800C2090 46005424 */ cvt.w.s $f16, $f10 -/* 0C2C94 800C2094 8D090000 */ lw $t1, ($t0) -/* 0C2C98 800C2098 44038000 */ mfc1 $v1, $f16 -/* 0C2C9C 800C209C 01225021 */ addu $t2, $t1, $v0 -/* 0C2CA0 800C20A0 A543000C */ sh $v1, 0xc($t2) -/* 0C2CA4 800C20A4 8E2C0000 */ lw $t4, ($s1) -/* 0C2CA8 800C20A8 44CFF800 */ ctc1 $t7, $31 -/* 0C2CAC 800C20AC 000C6880 */ sll $t5, $t4, 2 -/* 0C2CB0 800C20B0 020D7021 */ addu $t6, $s0, $t5 -/* 0C2CB4 800C20B4 8DCF0000 */ lw $t7, ($t6) -/* 0C2CB8 800C20B8 00043823 */ negu $a3, $a0 -/* 0C2CBC 800C20BC 01E2C021 */ addu $t8, $t7, $v0 -/* 0C2CC0 800C20C0 A7070172 */ sh $a3, 0x172($t8) -/* 0C2CC4 800C20C4 8E390000 */ lw $t9, ($s1) -/* 0C2CC8 800C20C8 00000000 */ nop -/* 0C2CCC 800C20CC 00194080 */ sll $t0, $t9, 2 -/* 0C2CD0 800C20D0 02084821 */ addu $t1, $s0, $t0 -/* 0C2CD4 800C20D4 8D2A0000 */ lw $t2, ($t1) -/* 0C2CD8 800C20D8 00000000 */ nop -/* 0C2CDC 800C20DC 01425821 */ addu $t3, $t2, $v0 -/* 0C2CE0 800C20E0 A5630174 */ sh $v1, 0x174($t3) -/* 0C2CE4 800C20E4 8E2C0000 */ lw $t4, ($s1) -/* 0C2CE8 800C20E8 00000000 */ nop -/* 0C2CEC 800C20EC 000C6880 */ sll $t5, $t4, 2 -/* 0C2CF0 800C20F0 020D7021 */ addu $t6, $s0, $t5 -/* 0C2CF4 800C20F4 8DCF0000 */ lw $t7, ($t6) -/* 0C2CF8 800C20F8 00000000 */ nop -/* 0C2CFC 800C20FC 01E2C021 */ addu $t8, $t7, $v0 -/* 0C2D00 800C2100 A70400B4 */ sh $a0, 0xb4($t8) -/* 0C2D04 800C2104 8E390000 */ lw $t9, ($s1) -/* 0C2D08 800C2108 00000000 */ nop -/* 0C2D0C 800C210C 00194080 */ sll $t0, $t9, 2 -/* 0C2D10 800C2110 02084821 */ addu $t1, $s0, $t0 -/* 0C2D14 800C2114 8D2A0000 */ lw $t2, ($t1) -/* 0C2D18 800C2118 00000000 */ nop -/* 0C2D1C 800C211C 01425821 */ addu $t3, $t2, $v0 -/* 0C2D20 800C2120 A56300B6 */ sh $v1, 0xb6($t3) -/* 0C2D24 800C2124 8E2C0000 */ lw $t4, ($s1) -/* 0C2D28 800C2128 00000000 */ nop -/* 0C2D2C 800C212C 000C6880 */ sll $t5, $t4, 2 -/* 0C2D30 800C2130 020D7021 */ addu $t6, $s0, $t5 -/* 0C2D34 800C2134 8DCF0000 */ lw $t7, ($t6) -/* 0C2D38 800C2138 444CF800 */ cfc1 $t4, $31 -/* 0C2D3C 800C213C 01E2C021 */ addu $t8, $t7, $v0 -/* 0C2D40 800C2140 A707021C */ sh $a3, 0x21c($t8) -/* 0C2D44 800C2144 8E390000 */ lw $t9, ($s1) -/* 0C2D48 800C2148 35810003 */ ori $at, $t4, 3 -/* 0C2D4C 800C214C 00194080 */ sll $t0, $t9, 2 -/* 0C2D50 800C2150 02084821 */ addu $t1, $s0, $t0 -/* 0C2D54 800C2154 8D2A0000 */ lw $t2, ($t1) -/* 0C2D58 800C2158 38210002 */ xori $at, $at, 2 -/* 0C2D5C 800C215C 44C1F800 */ ctc1 $at, $31 -/* 0C2D60 800C2160 01425821 */ addu $t3, $t2, $v0 -/* 0C2D64 800C2164 A563021E */ sh $v1, 0x21e($t3) -/* 0C2D68 800C2168 8E2D0000 */ lw $t5, ($s1) -/* 0C2D6C 800C216C 4600A124 */ cvt.w.s $f4, $f20 -/* 0C2D70 800C2170 000D7080 */ sll $t6, $t5, 2 -/* 0C2D74 800C2174 44CCF800 */ ctc1 $t4, $31 -/* 0C2D78 800C2178 020E7821 */ addu $t7, $s0, $t6 -/* 0C2D7C 800C217C 8DF80000 */ lw $t8, ($t7) -/* 0C2D80 800C2180 44052000 */ mfc1 $a1, $f4 -/* 0C2D84 800C2184 4448F800 */ cfc1 $t0, $31 -/* 0C2D88 800C2188 0302C821 */ addu $t9, $t8, $v0 -/* 0C2D8C 800C218C A72500BE */ sh $a1, 0xbe($t9) -/* 0C2D90 800C2190 35010003 */ ori $at, $t0, 3 -/* 0C2D94 800C2194 8E290000 */ lw $t1, ($s1) -/* 0C2D98 800C2198 38210002 */ xori $at, $at, 2 -/* 0C2D9C 800C219C 44C1F800 */ ctc1 $at, $31 -/* 0C2DA0 800C21A0 00095080 */ sll $t2, $t1, 2 -/* 0C2DA4 800C21A4 460014A4 */ cvt.w.s $f18, $f2 -/* 0C2DA8 800C21A8 020A5821 */ addu $t3, $s0, $t2 -/* 0C2DAC 800C21AC 8D6C0000 */ lw $t4, ($t3) -/* 0C2DB0 800C21B0 44069000 */ mfc1 $a2, $f18 -/* 0C2DB4 800C21B4 01826821 */ addu $t5, $t4, $v0 -/* 0C2DB8 800C21B8 A5A600C0 */ sh $a2, 0xc0($t5) -/* 0C2DBC 800C21BC 8E390000 */ lw $t9, ($s1) -/* 0C2DC0 800C21C0 44C8F800 */ ctc1 $t0, $31 -/* 0C2DC4 800C21C4 00194080 */ sll $t0, $t9, 2 -/* 0C2DC8 800C21C8 02084821 */ addu $t1, $s0, $t0 -/* 0C2DCC 800C21CC 8D2A0000 */ lw $t2, ($t1) -/* 0C2DD0 800C21D0 0005C023 */ negu $t8, $a1 -/* 0C2DD4 800C21D4 01425821 */ addu $t3, $t2, $v0 -/* 0C2DD8 800C21D8 A5780226 */ sh $t8, 0x226($t3) -/* 0C2DDC 800C21DC 8E2C0000 */ lw $t4, ($s1) -/* 0C2DE0 800C21E0 00000000 */ nop -/* 0C2DE4 800C21E4 000C6880 */ sll $t5, $t4, 2 -/* 0C2DE8 800C21E8 020D7021 */ addu $t6, $s0, $t5 -/* 0C2DEC 800C21EC 8DCF0000 */ lw $t7, ($t6) -/* 0C2DF0 800C21F0 00000000 */ nop -/* 0C2DF4 800C21F4 01E2C821 */ addu $t9, $t7, $v0 -/* 0C2DF8 800C21F8 1656FF7A */ bne $s2, $s6, .L800C1FE4 -/* 0C2DFC 800C21FC A7260228 */ sh $a2, 0x228($t9) -/* 0C2E00 800C2200 1000000D */ b .L800C2238 -/* 0C2E04 800C2204 8FBF004C */ lw $ra, 0x4c($sp) -.L800C2208: -/* 0C2E08 800C2208 3C03800E */ lui $v1, %hi(gTransitionEndTimer) # $v1, 0x800e -/* 0C2E0C 800C220C 246331B4 */ addiu $v1, %lo(gTransitionEndTimer) # addiu $v1, $v1, 0x31b4 -/* 0C2E10 800C2210 94620000 */ lhu $v0, ($v1) -/* 0C2E14 800C2214 3401FFFF */ li $at, 65535 -/* 0C2E18 800C2218 10410006 */ beq $v0, $at, .L800C2234 -/* 0C2E1C 800C221C 0082082A */ slt $at, $a0, $v0 -/* 0C2E20 800C2220 10200003 */ beqz $at, .L800C2230 -/* 0C2E24 800C2224 00444023 */ subu $t0, $v0, $a0 -/* 0C2E28 800C2228 10000002 */ b .L800C2234 -/* 0C2E2C 800C222C A4680000 */ sh $t0, ($v1) -.L800C2230: -/* 0C2E30 800C2230 A4600000 */ sh $zero, ($v1) -.L800C2234: -/* 0C2E34 800C2234 8FBF004C */ lw $ra, 0x4c($sp) -.L800C2238: -/* 0C2E38 800C2238 C7B50018 */ lwc1 $f21, 0x18($sp) -/* 0C2E3C 800C223C C7B4001C */ lwc1 $f20, 0x1c($sp) -/* 0C2E40 800C2240 C7B70020 */ lwc1 $f23, 0x20($sp) -/* 0C2E44 800C2244 C7B60024 */ lwc1 $f22, 0x24($sp) -/* 0C2E48 800C2248 8FB00028 */ lw $s0, 0x28($sp) -/* 0C2E4C 800C224C 8FB1002C */ lw $s1, 0x2c($sp) -/* 0C2E50 800C2250 8FB20030 */ lw $s2, 0x30($sp) -/* 0C2E54 800C2254 8FB30034 */ lw $s3, 0x34($sp) -/* 0C2E58 800C2258 8FB40038 */ lw $s4, 0x38($sp) -/* 0C2E5C 800C225C 8FB5003C */ lw $s5, 0x3c($sp) -/* 0C2E60 800C2260 8FB60040 */ lw $s6, 0x40($sp) -/* 0C2E64 800C2264 8FB70044 */ lw $s7, 0x44($sp) -/* 0C2E68 800C2268 8FBE0048 */ lw $fp, 0x48($sp) -/* 0C2E6C 800C226C 03E00008 */ jr $ra -/* 0C2E70 800C2270 27BD0050 */ addiu $sp, $sp, 0x50 - diff --git a/asm/non_matchings/objects/func_8000BADC.s b/asm/non_matchings/objects/func_8000BADC.s deleted file mode 100644 index c4f61af4..00000000 --- a/asm/non_matchings/objects/func_8000BADC.s +++ /dev/null @@ -1,318 +0,0 @@ -.late_rodata -glabel D_800E5138 -.float 1.2 -glabel D_800E513C -.float 2.4 -glabel D_800E5140 -.float 4.8 -glabel D_800E5144 -.float 0.05 -glabel D_800E5148 -.float 0.1 - -.text -glabel func_8000BADC -/* 00C6DC 8000BADC 3C028012 */ lui $v0, %hi(D_8011B008) # $v0, 0x8012 -/* 00C6E0 8000BAE0 2442B008 */ addiu $v0, %lo(D_8011B008) # addiu $v0, $v0, -0x4ff8 -/* 00C6E4 8000BAE4 8C4E0000 */ lw $t6, ($v0) -/* 00C6E8 8000BAE8 240F0001 */ li $t7, 1 -/* 00C6EC 8000BAEC 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 00C6F0 8000BAF0 01EEC023 */ subu $t8, $t7, $t6 -/* 00C6F4 8000BAF4 AC580000 */ sw $t8, ($v0) -/* 00C6F8 8000BAF8 3C018012 */ lui $at, %hi(D_8011AFFC) # $at, 0x8012 -/* 00C6FC 8000BAFC AFB10020 */ sw $s1, 0x20($sp) -/* 00C700 8000BB00 AC20AFFC */ sw $zero, %lo(D_8011AFFC)($at) -/* 00C704 8000BB04 00808825 */ move $s1, $a0 -/* 00C708 8000BB08 AFBF002C */ sw $ra, 0x2c($sp) -/* 00C70C 8000BB0C 3C018012 */ lui $at, %hi(D_8011B004) # $at, 0x8012 -/* 00C710 8000BB10 AFB30028 */ sw $s3, 0x28($sp) -/* 00C714 8000BB14 AFB20024 */ sw $s2, 0x24($sp) -/* 00C718 8000BB18 AFB0001C */ sw $s0, 0x1c($sp) -/* 00C71C 8000BB1C AC20B004 */ sw $zero, %lo(D_8011B004)($at) -/* 00C720 8000BB20 0C0078A7 */ jal get_misc_asset -/* 00C724 8000BB24 24040014 */ li $a0, 20 -/* 00C728 8000BB28 24190009 */ li $t9, 9 -/* 00C72C 8000BB2C 3C01800E */ lui $at, %hi(D_800DC760) # $at, 0x800e -/* 00C730 8000BB30 3C038012 */ lui $v1, %hi(D_8011B068) # $v1, 0x8012 -/* 00C734 8000BB34 3C048012 */ lui $a0, %hi(D_8011B020) # $a0, 0x8012 -/* 00C738 8000BB38 00405825 */ move $t3, $v0 -/* 00C73C 8000BB3C AC39C760 */ sw $t9, %lo(D_800DC760)($at) -/* 00C740 8000BB40 2484B020 */ addiu $a0, %lo(D_8011B020) # addiu $a0, $a0, -0x4fe0 -/* 00C744 8000BB44 2463B068 */ addiu $v1, %lo(D_8011B068) # addiu $v1, $v1, -0x4f98 -/* 00C748 8000BB48 00004025 */ move $t0, $zero -/* 00C74C 8000BB4C 240A0001 */ li $t2, 1 -.L8000BB50: -/* 00C750 8000BB50 906C0000 */ lbu $t4, ($v1) -/* 00C754 8000BB54 00086880 */ sll $t5, $t0, 2 -/* 00C758 8000BB58 11800006 */ beqz $t4, .L8000BB74 -/* 00C75C 8000BB5C 008D7821 */ addu $t7, $a0, $t5 -/* 00C760 8000BB60 8DE20000 */ lw $v0, ($t7) -/* 00C764 8000BB64 00000000 */ nop -/* 00C768 8000BB68 10400002 */ beqz $v0, .L8000BB74 -/* 00C76C 8000BB6C 00000000 */ nop -/* 00C770 8000BB70 AC400078 */ sw $zero, 0x78($v0) -.L8000BB74: -/* 00C774 8000BB74 25080001 */ addiu $t0, $t0, 1 -/* 00C778 8000BB78 2901000A */ slti $at, $t0, 0xa -/* 00C77C 8000BB7C 24630001 */ addiu $v1, $v1, 1 -/* 00C780 8000BB80 1420FFF3 */ bnez $at, .L8000BB50 -/* 00C784 8000BB84 A06AFFFF */ sb $t2, -1($v1) -/* 00C788 8000BB88 3C0E8012 */ lui $t6, %hi(gNumRacers) # $t6, 0x8012 -/* 00C78C 8000BB8C 8DCEAEF0 */ lw $t6, %lo(gNumRacers)($t6) -/* 00C790 8000BB90 00004025 */ move $t0, $zero -/* 00C794 8000BB94 19C000DD */ blez $t6, .L8000BF0C -/* 00C798 8000BB98 00009025 */ move $s2, $zero -/* 00C79C 8000BB9C 3C013E80 */ li $at, 0x3E800000 # 0.250000 -/* 00C7A0 8000BBA0 44819000 */ mtc1 $at, $f18 -/* 00C7A4 8000BBA4 44912000 */ mtc1 $s1, $f4 -/* 00C7A8 8000BBA8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00C7AC 8000BBAC 3C138012 */ lui $s3, %hi(gRacers) # $s3, 0x8012 -/* 00C7B0 8000BBB0 44817000 */ mtc1 $at, $f14 -/* 00C7B4 8000BBB4 44806000 */ mtc1 $zero, $f12 -/* 00C7B8 8000BBB8 2673AEE4 */ addiu $s3, %lo(gRacers) # addiu $s3, $s3, -0x511c -/* 00C7BC 8000BBBC 24090002 */ li $t1, 2 -/* 00C7C0 8000BBC0 46802420 */ cvt.s.w $f16, $f4 -.L8000BBC4: -/* 00C7C4 8000BBC4 3C188000 */ lui $t8, %hi(osTvType) # $t8, 0x8000 -/* 00C7C8 8000BBC8 8F180300 */ lw $t8, %lo(osTvType)($t8) -/* 00C7CC 8000BBCC 46008086 */ mov.s $f2, $f16 -/* 00C7D0 8000BBD0 17000005 */ bnez $t8, .L8000BBE8 -/* 00C7D4 8000BBD4 3C01800E */ lui $at, %hi(D_800E5138) # $at, 0x800e -/* 00C7D8 8000BBD8 C4265138 */ lwc1 $f6, %lo(D_800E5138)($at) -/* 00C7DC 8000BBDC 00000000 */ nop -/* 00C7E0 8000BBE0 46068082 */ mul.s $f2, $f16, $f6 -/* 00C7E4 8000BBE4 00000000 */ nop -.L8000BBE8: -/* 00C7E8 8000BBE8 8E790000 */ lw $t9, ($s3) -/* 00C7EC 8000BBEC 3C188012 */ lui $t8, %hi(D_8011B010) # $t8, 0x8012 -/* 00C7F0 8000BBF0 03326021 */ addu $t4, $t9, $s2 -/* 00C7F4 8000BBF4 8D8D0000 */ lw $t5, ($t4) -/* 00C7F8 8000BBF8 2718B010 */ addiu $t8, %lo(D_8011B010) # addiu $t8, $t8, -0x4ff0 -/* 00C7FC 8000BBFC 8DB00064 */ lw $s0, 0x64($t5) -/* 00C800 8000BC00 00000000 */ nop -/* 00C804 8000BC04 82040002 */ lb $a0, 2($s0) -/* 00C808 8000BC08 860E018E */ lh $t6, 0x18e($s0) -/* 00C80C 8000BC0C 000479C0 */ sll $t7, $a0, 7 -/* 00C810 8000BC10 11C00006 */ beqz $t6, .L8000BC2C -/* 00C814 8000BC14 01EB1021 */ addu $v0, $t7, $t3 -/* 00C818 8000BC18 00981821 */ addu $v1, $a0, $t8 -/* 00C81C 8000BC1C 90790000 */ lbu $t9, ($v1) -/* 00C820 8000BC20 00000000 */ nop -/* 00C824 8000BC24 03316021 */ addu $t4, $t9, $s1 -/* 00C828 8000BC28 A06C0000 */ sb $t4, ($v1) -.L8000BC2C: -/* 00C82C 8000BC2C 904D0072 */ lbu $t5, 0x72($v0) -/* 00C830 8000BC30 00000000 */ nop -/* 00C834 8000BC34 01B17821 */ addu $t7, $t5, $s1 -/* 00C838 8000BC38 A04F0072 */ sb $t7, 0x72($v0) -/* 00C83C 8000BC3C 820E01D3 */ lb $t6, 0x1d3($s0) -/* 00C840 8000BC40 00000000 */ nop -/* 00C844 8000BC44 11C00041 */ beqz $t6, .L8000BD4C -/* 00C848 8000BC48 00000000 */ nop -/* 00C84C 8000BC4C 90590070 */ lbu $t9, 0x70($v0) -/* 00C850 8000BC50 24180014 */ li $t8, 20 -/* 00C854 8000BC54 17200011 */ bnez $t9, .L8000BC9C -/* 00C858 8000BC58 A0580073 */ sb $t8, 0x73($v0) -/* 00C85C 8000BC5C 46121282 */ mul.s $f10, $f2, $f18 -/* 00C860 8000BC60 C4480074 */ lwc1 $f8, 0x74($v0) -/* 00C864 8000BC64 3C01800E */ lui $at, %hi(D_800E513C) # $at, 0x800e -/* 00C868 8000BC68 460A4100 */ add.s $f4, $f8, $f10 -/* 00C86C 8000BC6C E4440074 */ swc1 $f4, 0x74($v0) -/* 00C870 8000BC70 C426513C */ lwc1 $f6, %lo(D_800E513C)($at) -/* 00C874 8000BC74 C4400074 */ lwc1 $f0, 0x74($v0) -/* 00C878 8000BC78 46006086 */ mov.s $f2, $f12 -/* 00C87C 8000BC7C 4600303C */ c.lt.s $f6, $f0 -/* 00C880 8000BC80 3C01800E */ lui $at, %hi(D_800E5140) # $at, 0x800e -/* 00C884 8000BC84 45000005 */ bc1f .L8000BC9C -/* 00C888 8000BC88 00000000 */ nop -/* 00C88C 8000BC8C C4285140 */ lwc1 $f8, %lo(D_800E5140)($at) -/* 00C890 8000BC90 A04A0070 */ sb $t2, 0x70($v0) -/* 00C894 8000BC94 46004281 */ sub.s $f10, $f8, $f0 -/* 00C898 8000BC98 E44A0074 */ swc1 $f10, 0x74($v0) -.L8000BC9C: -/* 00C89C 8000BC9C 904C0070 */ lbu $t4, 0x70($v0) -/* 00C8A0 8000BCA0 24010001 */ li $at, 1 -/* 00C8A4 8000BCA4 15810010 */ bne $t4, $at, .L8000BCE8 -/* 00C8A8 8000BCA8 00000000 */ nop -/* 00C8AC 8000BCAC 46121182 */ mul.s $f6, $f2, $f18 -/* 00C8B0 8000BCB0 C4440074 */ lwc1 $f4, 0x74($v0) -/* 00C8B4 8000BCB4 46006086 */ mov.s $f2, $f12 -/* 00C8B8 8000BCB8 240D0002 */ li $t5, 2 -/* 00C8BC 8000BCBC 46062201 */ sub.s $f8, $f4, $f6 -/* 00C8C0 8000BCC0 E4480074 */ swc1 $f8, 0x74($v0) -/* 00C8C4 8000BCC4 C4400074 */ lwc1 $f0, 0x74($v0) -/* 00C8C8 8000BCC8 00000000 */ nop -/* 00C8CC 8000BCCC 460E003C */ c.lt.s $f0, $f14 -/* 00C8D0 8000BCD0 00000000 */ nop -/* 00C8D4 8000BCD4 45000004 */ bc1f .L8000BCE8 -/* 00C8D8 8000BCD8 00000000 */ nop -/* 00C8DC 8000BCDC 46007281 */ sub.s $f10, $f14, $f0 -/* 00C8E0 8000BCE0 A04D0070 */ sb $t5, 0x70($v0) -/* 00C8E4 8000BCE4 E44A0074 */ swc1 $f10, 0x74($v0) -.L8000BCE8: -/* 00C8E8 8000BCE8 904F0070 */ lbu $t7, 0x70($v0) -/* 00C8EC 8000BCEC 00000000 */ nop -/* 00C8F0 8000BCF0 152F0013 */ bne $t1, $t7, .L8000BD40 -/* 00C8F4 8000BCF4 00000000 */ nop -/* 00C8F8 8000BCF8 C4400074 */ lwc1 $f0, 0x74($v0) -/* 00C8FC 8000BCFC 3C013E00 */ li $at, 0x3E000000 # 0.125000 -/* 00C900 8000BD00 460E003C */ c.lt.s $f0, $f14 -/* 00C904 8000BD04 00000000 */ nop -/* 00C908 8000BD08 4500000D */ bc1f .L8000BD40 -/* 00C90C 8000BD0C 00000000 */ nop -/* 00C910 8000BD10 44812000 */ mtc1 $at, $f4 -/* 00C914 8000BD14 00000000 */ nop -/* 00C918 8000BD18 46041182 */ mul.s $f6, $f2, $f4 -/* 00C91C 8000BD1C 46060200 */ add.s $f8, $f0, $f6 -/* 00C920 8000BD20 E4480074 */ swc1 $f8, 0x74($v0) -/* 00C924 8000BD24 C44A0074 */ lwc1 $f10, 0x74($v0) -/* 00C928 8000BD28 00000000 */ nop -/* 00C92C 8000BD2C 460A703C */ c.lt.s $f14, $f10 -/* 00C930 8000BD30 00000000 */ nop -/* 00C934 8000BD34 45000002 */ bc1f .L8000BD40 -/* 00C938 8000BD38 00000000 */ nop -/* 00C93C 8000BD3C E44E0074 */ swc1 $f14, 0x74($v0) -.L8000BD40: -/* 00C940 8000BD40 90430070 */ lbu $v1, 0x70($v0) -/* 00C944 8000BD44 1000002E */ b .L8000BE00 -/* 00C948 8000BD48 00000000 */ nop -.L8000BD4C: -/* 00C94C 8000BD4C 80440073 */ lb $a0, 0x73($v0) -/* 00C950 8000BD50 00000000 */ nop -/* 00C954 8000BD54 18800004 */ blez $a0, .L8000BD68 -/* 00C958 8000BD58 00917023 */ subu $t6, $a0, $s1 -/* 00C95C 8000BD5C 90430070 */ lbu $v1, 0x70($v0) -/* 00C960 8000BD60 10000027 */ b .L8000BE00 -/* 00C964 8000BD64 A04E0073 */ sb $t6, 0x73($v0) -.L8000BD68: -/* 00C968 8000BD68 90580070 */ lbu $t8, 0x70($v0) -/* 00C96C 8000BD6C 3C01800E */ lui $at, %hi(D_800E5144) # $at, 0x800e -/* 00C970 8000BD70 15380010 */ bne $t1, $t8, .L8000BDB4 -/* 00C974 8000BD74 00000000 */ nop -/* 00C978 8000BD78 C4265144 */ lwc1 $f6, %lo(D_800E5144)($at) -/* 00C97C 8000BD7C C4440074 */ lwc1 $f4, 0x74($v0) -/* 00C980 8000BD80 46061202 */ mul.s $f8, $f2, $f6 -/* 00C984 8000BD84 46006086 */ mov.s $f2, $f12 -/* 00C988 8000BD88 46082281 */ sub.s $f10, $f4, $f8 -/* 00C98C 8000BD8C E44A0074 */ swc1 $f10, 0x74($v0) -/* 00C990 8000BD90 C4400074 */ lwc1 $f0, 0x74($v0) -/* 00C994 8000BD94 00000000 */ nop -/* 00C998 8000BD98 460C003C */ c.lt.s $f0, $f12 -/* 00C99C 8000BD9C 00000000 */ nop -/* 00C9A0 8000BDA0 45000004 */ bc1f .L8000BDB4 -/* 00C9A4 8000BDA4 00000000 */ nop -/* 00C9A8 8000BDA8 460E0180 */ add.s $f6, $f0, $f14 -/* 00C9AC 8000BDAC A0400070 */ sb $zero, 0x70($v0) -/* 00C9B0 8000BDB0 E4460074 */ swc1 $f6, 0x74($v0) -.L8000BDB4: -/* 00C9B4 8000BDB4 90430070 */ lbu $v1, 0x70($v0) -/* 00C9B8 8000BDB8 00000000 */ nop -/* 00C9BC 8000BDBC 28610002 */ slti $at, $v1, 2 -/* 00C9C0 8000BDC0 1020000F */ beqz $at, .L8000BE00 -/* 00C9C4 8000BDC4 3C01800E */ lui $at, %hi(D_800E5148) # $at, 0x800e -/* 00C9C8 8000BDC8 C4285148 */ lwc1 $f8, %lo(D_800E5148)($at) -/* 00C9CC 8000BDCC C4440074 */ lwc1 $f4, 0x74($v0) -/* 00C9D0 8000BDD0 46081282 */ mul.s $f10, $f2, $f8 -/* 00C9D4 8000BDD4 300300FF */ andi $v1, $zero, 0xff -/* 00C9D8 8000BDD8 460A2181 */ sub.s $f6, $f4, $f10 -/* 00C9DC 8000BDDC E4460074 */ swc1 $f6, 0x74($v0) -/* 00C9E0 8000BDE0 C4480074 */ lwc1 $f8, 0x74($v0) -/* 00C9E4 8000BDE4 00000000 */ nop -/* 00C9E8 8000BDE8 460C403C */ c.lt.s $f8, $f12 -/* 00C9EC 8000BDEC 00000000 */ nop -/* 00C9F0 8000BDF0 45000002 */ bc1f .L8000BDFC -/* 00C9F4 8000BDF4 00000000 */ nop -/* 00C9F8 8000BDF8 E44C0074 */ swc1 $f12, 0x74($v0) -.L8000BDFC: -/* 00C9FC 8000BDFC A0400070 */ sb $zero, 0x70($v0) -.L8000BE00: -/* 00CA00 8000BE00 1C600007 */ bgtz $v1, .L8000BE20 -/* 00CA04 8000BE04 00000000 */ nop -/* 00CA08 8000BE08 C4440074 */ lwc1 $f4, 0x74($v0) -/* 00CA0C 8000BE0C 00000000 */ nop -/* 00CA10 8000BE10 4604603C */ c.lt.s $f12, $f4 -/* 00CA14 8000BE14 00000000 */ nop -/* 00CA18 8000BE18 45000016 */ bc1f .L8000BE74 -/* 00CA1C 8000BE1C 00000000 */ nop -.L8000BE20: -/* 00CA20 8000BE20 8E790000 */ lw $t9, ($s3) -/* 00CA24 8000BE24 82050002 */ lb $a1, 2($s0) -/* 00CA28 8000BE28 03326021 */ addu $t4, $t9, $s2 -/* 00CA2C 8000BE2C 8D840000 */ lw $a0, ($t4) -/* 00CA30 8000BE30 820601D7 */ lb $a2, 0x1d7($s0) -/* 00CA34 8000BE34 82070203 */ lb $a3, 0x203($s0) -/* 00CA38 8000BE38 E7B00030 */ swc1 $f16, 0x30($sp) -/* 00CA3C 8000BE3C AFAB0040 */ sw $t3, 0x40($sp) -/* 00CA40 8000BE40 AFA8004C */ sw $t0, 0x4c($sp) -/* 00CA44 8000BE44 0C002DD4 */ jal func_8000B750 -/* 00CA48 8000BE48 AFA00010 */ sw $zero, 0x10($sp) -/* 00CA4C 8000BE4C 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 00CA50 8000BE50 44817000 */ mtc1 $at, $f14 -/* 00CA54 8000BE54 3C013E80 */ li $at, 0x3E800000 # 0.250000 -/* 00CA58 8000BE58 44819000 */ mtc1 $at, $f18 -/* 00CA5C 8000BE5C 8FA8004C */ lw $t0, 0x4c($sp) -/* 00CA60 8000BE60 8FAB0040 */ lw $t3, 0x40($sp) -/* 00CA64 8000BE64 44806000 */ mtc1 $zero, $f12 -/* 00CA68 8000BE68 C7B00030 */ lwc1 $f16, 0x30($sp) -/* 00CA6C 8000BE6C 24090002 */ li $t1, 2 -/* 00CA70 8000BE70 240A0001 */ li $t2, 1 -.L8000BE74: -/* 00CA74 8000BE74 82030002 */ lb $v1, 2($s0) -/* 00CA78 8000BE78 3C0F8012 */ lui $t7, %hi(D_8011B078) # $t7, 0x8012 -/* 00CA7C 8000BE7C 25EFB078 */ addiu $t7, %lo(D_8011B078) # addiu $t7, $t7, -0x4f88 -/* 00CA80 8000BE80 00036880 */ sll $t5, $v1, 2 -/* 00CA84 8000BE84 01AF1021 */ addu $v0, $t5, $t7 -/* 00CA88 8000BE88 904E0001 */ lbu $t6, 1($v0) -/* 00CA8C 8000BE8C 90590002 */ lbu $t9, 2($v0) -/* 00CA90 8000BE90 01D1C021 */ addu $t8, $t6, $s1 -/* 00CA94 8000BE94 03316021 */ addu $t4, $t9, $s1 -/* 00CA98 8000BE98 A0580001 */ sb $t8, 1($v0) -/* 00CA9C 8000BE9C A04C0002 */ sb $t4, 2($v0) -/* 00CAA0 8000BEA0 820D0175 */ lb $t5, 0x175($s0) -/* 00CAA4 8000BEA4 3C0C8012 */ lui $t4, %hi(gNumRacers) # $t4, 0x8012 -/* 00CAA8 8000BEA8 11A0000B */ beqz $t5, .L8000BED8 -/* 00CAAC 8000BEAC 00000000 */ nop -/* 00CAB0 8000BEB0 904F0003 */ lbu $t7, 3($v0) -/* 00CAB4 8000BEB4 00117080 */ sll $t6, $s1, 2 -/* 00CAB8 8000BEB8 01EE1821 */ addu $v1, $t7, $t6 -/* 00CABC 8000BEBC 28610020 */ slti $at, $v1, 0x20 -/* 00CAC0 8000BEC0 10200003 */ beqz $at, .L8000BED0 -/* 00CAC4 8000BEC4 24180020 */ li $t8, 32 -/* 00CAC8 8000BEC8 1000000B */ b .L8000BEF8 -/* 00CACC 8000BECC A0430003 */ sb $v1, 3($v0) -.L8000BED0: -/* 00CAD0 8000BED0 10000009 */ b .L8000BEF8 -/* 00CAD4 8000BED4 A0580003 */ sb $t8, 3($v0) -.L8000BED8: -/* 00CAD8 8000BED8 90590003 */ lbu $t9, 3($v0) -/* 00CADC 8000BEDC 00000000 */ nop -/* 00CAE0 8000BEE0 03311823 */ subu $v1, $t9, $s1 -/* 00CAE4 8000BEE4 18600003 */ blez $v1, .L8000BEF4 -/* 00CAE8 8000BEE8 00000000 */ nop -/* 00CAEC 8000BEEC 10000002 */ b .L8000BEF8 -/* 00CAF0 8000BEF0 A0430003 */ sb $v1, 3($v0) -.L8000BEF4: -/* 00CAF4 8000BEF4 A0400003 */ sb $zero, 3($v0) -.L8000BEF8: -/* 00CAF8 8000BEF8 8D8CAEF0 */ lw $t4, %lo(gNumRacers)($t4) -/* 00CAFC 8000BEFC 25080001 */ addiu $t0, $t0, 1 -/* 00CB00 8000BF00 010C082A */ slt $at, $t0, $t4 -/* 00CB04 8000BF04 1420FF2F */ bnez $at, .L8000BBC4 -/* 00CB08 8000BF08 26520004 */ addiu $s2, $s2, 4 -.L8000BF0C: -/* 00CB0C 8000BF0C 3C04800E */ lui $a0, %hi(gMagnetEffectObject) # $a0, 0x800e -/* 00CB10 8000BF10 8C84C764 */ lw $a0, %lo(gMagnetEffectObject)($a0) -/* 00CB14 8000BF14 00000000 */ nop -/* 00CB18 8000BF18 10800004 */ beqz $a0, .L8000BF2C -/* 00CB1C 8000BF1C 8FBF002C */ lw $ra, 0x2c($sp) -/* 00CB20 8000BF20 0C00444D */ jal func_80011134 -/* 00CB24 8000BF24 02202825 */ move $a1, $s1 -/* 00CB28 8000BF28 8FBF002C */ lw $ra, 0x2c($sp) -.L8000BF2C: -/* 00CB2C 8000BF2C 8FB0001C */ lw $s0, 0x1c($sp) -/* 00CB30 8000BF30 8FB10020 */ lw $s1, 0x20($sp) -/* 00CB34 8000BF34 8FB20024 */ lw $s2, 0x24($sp) -/* 00CB38 8000BF38 8FB30028 */ lw $s3, 0x28($sp) -/* 00CB3C 8000BF3C 03E00008 */ jr $ra -/* 00CB40 8000BF40 27BD0050 */ addiu $sp, $sp, 0x50 - diff --git a/asm/non_matchings/objects/func_8001A8F4.s b/asm/non_matchings/objects/func_8001A8F4.s deleted file mode 100644 index 4d23bd8f..00000000 --- a/asm/non_matchings/objects/func_8001A8F4.s +++ /dev/null @@ -1,367 +0,0 @@ -glabel func_8001A8F4 -/* 01B4F4 8001A8F4 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 01B4F8 8001A8F8 AFBF001C */ sw $ra, 0x1c($sp) -/* 01B4FC 8001A8FC AFA40040 */ sw $a0, 0x40($sp) -/* 01B500 8001A900 AFB10018 */ sw $s1, 0x18($sp) -/* 01B504 8001A904 AFB00014 */ sw $s0, 0x14($sp) -/* 01B508 8001A908 0C01BCE2 */ jal set_pause_lockout_timer -/* 01B50C 8001A90C 24040001 */ li $a0, 1 -/* 01B510 8001A910 3C108012 */ lui $s0, %hi(D_8011AD4E) # $s0, 0x8012 -/* 01B514 8001A914 2610AD4E */ addiu $s0, %lo(D_8011AD4E) # addiu $s0, $s0, -0x52b2 -/* 01B518 8001A918 86030000 */ lh $v1, ($s0) -/* 01B51C 8001A91C 8FAE0040 */ lw $t6, 0x40($sp) -/* 01B520 8001A920 2419FFFF */ li $t9, -1 -/* 01B524 8001A924 006E7823 */ subu $t7, $v1, $t6 -/* 01B528 8001A928 A60F0000 */ sh $t7, ($s0) -/* 01B52C 8001A92C 86180000 */ lh $t8, ($s0) -/* 01B530 8001A930 28610033 */ slti $at, $v1, 0x33 -/* 01B534 8001A934 1F000002 */ bgtz $t8, .L8001A940 -/* 01B538 8001A938 00000000 */ nop -/* 01B53C 8001A93C A6190000 */ sh $t9, ($s0) -.L8001A940: -/* 01B540 8001A940 14200008 */ bnez $at, .L8001A964 -/* 01B544 8001A944 00000000 */ nop -/* 01B548 8001A948 86090000 */ lh $t1, ($s0) -/* 01B54C 8001A94C 3C04800E */ lui $a0, %hi(D_800DC858) # $a0, 0x800e -/* 01B550 8001A950 29210033 */ slti $at, $t1, 0x33 -/* 01B554 8001A954 10200003 */ beqz $at, .L8001A964 -/* 01B558 8001A958 00000000 */ nop -/* 01B55C 8001A95C 0C030076 */ jal transition_begin -/* 01B560 8001A960 2484C858 */ addiu $a0, %lo(D_800DC858) # addiu $a0, $a0, -0x37a8 -.L8001A964: -/* 01B564 8001A964 3C028012 */ lui $v0, %hi(D_8011AD50) # $v0, 0x8012 -/* 01B568 8001A968 8042AD50 */ lb $v0, %lo(D_8011AD50)($v0) -/* 01B56C 8001A96C AFA00030 */ sw $zero, 0x30($sp) -/* 01B570 8001A970 14400071 */ bnez $v0, .L8001AB38 -/* 01B574 8001A974 00000000 */ nop -/* 01B578 8001A978 860A0000 */ lh $t2, ($s0) -/* 01B57C 8001A97C 2401FFFF */ li $at, -1 -/* 01B580 8001A980 1541006D */ bne $t2, $at, .L8001AB38 -/* 01B584 8001A984 3C118012 */ lui $s1, %hi(gNumRacers) # $s1, 0x8012 -/* 01B588 8001A988 2631AEF0 */ addiu $s1, %lo(gNumRacers) # addiu $s1, $s1, -0x5110 -/* 01B58C 8001A98C 8E2B0000 */ lw $t3, ($s1) -/* 01B590 8001A990 00008025 */ move $s0, $zero -/* 01B594 8001A994 19600029 */ blez $t3, .L8001AA3C -/* 01B598 8001A998 00001825 */ move $v1, $zero -.L8001A99C: -/* 01B59C 8001A99C 3C0C8012 */ lui $t4, %hi(gRacers) # $t4, 0x8012 -/* 01B5A0 8001A9A0 8D8CAEE4 */ lw $t4, %lo(gRacers)($t4) -/* 01B5A4 8001A9A4 2401FFFF */ li $at, -1 -/* 01B5A8 8001A9A8 01836821 */ addu $t5, $t4, $v1 -/* 01B5AC 8001A9AC 8DAE0000 */ lw $t6, ($t5) -/* 01B5B0 8001A9B0 00000000 */ nop -/* 01B5B4 8001A9B4 8DC50064 */ lw $a1, 0x64($t6) -/* 01B5B8 8001A9B8 00000000 */ nop -/* 01B5BC 8001A9BC 84AF0000 */ lh $t7, ($a1) -/* 01B5C0 8001A9C0 ACA00140 */ sw $zero, 0x140($a1) -/* 01B5C4 8001A9C4 11E10006 */ beq $t7, $at, .L8001A9E0 -/* 01B5C8 8001A9C8 00000000 */ nop -/* 01B5CC 8001A9CC 84B801AC */ lh $t8, 0x1ac($a1) -/* 01B5D0 8001A9D0 24010001 */ li $at, 1 -/* 01B5D4 8001A9D4 17010002 */ bne $t8, $at, .L8001A9E0 -/* 01B5D8 8001A9D8 00000000 */ nop -/* 01B5DC 8001A9DC AFB00030 */ sw $s0, 0x30($sp) -.L8001A9E0: -/* 01B5E0 8001A9E0 8CA40178 */ lw $a0, 0x178($a1) -/* 01B5E4 8001A9E4 00000000 */ nop -/* 01B5E8 8001A9E8 10800007 */ beqz $a0, .L8001AA08 -/* 01B5EC 8001A9EC 00000000 */ nop -/* 01B5F0 8001A9F0 AFA30020 */ sw $v1, 0x20($sp) -/* 01B5F4 8001A9F4 0C001223 */ jal func_8000488C -/* 01B5F8 8001A9F8 AFA50038 */ sw $a1, 0x38($sp) -/* 01B5FC 8001A9FC 8FA30020 */ lw $v1, 0x20($sp) -/* 01B600 8001AA00 8FA50038 */ lw $a1, 0x38($sp) -/* 01B604 8001AA04 00000000 */ nop -.L8001AA08: -/* 01B608 8001AA08 8CA4017C */ lw $a0, 0x17c($a1) -/* 01B60C 8001AA0C 00000000 */ nop -/* 01B610 8001AA10 10800005 */ beqz $a0, .L8001AA28 -/* 01B614 8001AA14 00000000 */ nop -/* 01B618 8001AA18 0C0025BE */ jal func_800096F8 -/* 01B61C 8001AA1C AFA30020 */ sw $v1, 0x20($sp) -/* 01B620 8001AA20 8FA30020 */ lw $v1, 0x20($sp) -/* 01B624 8001AA24 00000000 */ nop -.L8001AA28: -/* 01B628 8001AA28 8E390000 */ lw $t9, ($s1) -/* 01B62C 8001AA2C 26100001 */ addiu $s0, $s0, 1 -/* 01B630 8001AA30 0219082A */ slt $at, $s0, $t9 -/* 01B634 8001AA34 1420FFD9 */ bnez $at, .L8001A99C -/* 01B638 8001AA38 24630004 */ addiu $v1, $v1, 4 -.L8001AA3C: -/* 01B63C 8001AA3C 8FA30030 */ lw $v1, 0x30($sp) -/* 01B640 8001AA40 3C028012 */ lui $v0, %hi(gRacers) # $v0, 0x8012 -/* 01B644 8001AA44 8C42AEE4 */ lw $v0, %lo(gRacers)($v0) -/* 01B648 8001AA48 00034880 */ sll $t1, $v1, 2 -/* 01B64C 8001AA4C 00495021 */ addu $t2, $v0, $t1 -/* 01B650 8001AA50 8D4B0000 */ lw $t3, ($t2) -/* 01B654 8001AA54 8C460000 */ lw $a2, ($v0) -/* 01B658 8001AA58 3C0C8012 */ lui $t4, %hi(gRacers) # $t4, 0x8012 -/* 01B65C 8001AA5C AC4B0000 */ sw $t3, ($v0) -/* 01B660 8001AA60 8D8CAEE4 */ lw $t4, %lo(gRacers)($t4) -/* 01B664 8001AA64 3C0E8012 */ lui $t6, %hi(gRacers) # $t6, 0x8012 -/* 01B668 8001AA68 01896821 */ addu $t5, $t4, $t1 -/* 01B66C 8001AA6C ADA60000 */ sw $a2, ($t5) -/* 01B670 8001AA70 8DCEAEE4 */ lw $t6, %lo(gRacers)($t6) -/* 01B674 8001AA74 00000000 */ nop -/* 01B678 8001AA78 8DC40000 */ lw $a0, ($t6) -/* 01B67C 8001AA7C 0C001AB2 */ jal racer_sound_free -/* 01B680 8001AA80 00000000 */ nop -/* 01B684 8001AA84 0C0282DD */ jal func_800A0B74 -/* 01B688 8001AA88 00000000 */ nop -/* 01B68C 8001AA8C 0C00FC34 */ jal reset_rocket_sound_timer -/* 01B690 8001AA90 00000000 */ nop -/* 01B694 8001AA94 0C001276 */ jal sound_stop_all -/* 01B698 8001AA98 00000000 */ nop -/* 01B69C 8001AA9C 0C027B20 */ jal is_in_two_player_adventure -/* 01B6A0 8001AAA0 00000000 */ nop -/* 01B6A4 8001AAA4 1040001C */ beqz $v0, .L8001AB18 -/* 01B6A8 8001AAA8 00000000 */ nop -/* 01B6AC 8001AAAC 0C009278 */ jal set_scene_viewport_num -/* 01B6B0 8001AAB0 00002025 */ move $a0, $zero -/* 01B6B4 8001AAB4 0C01994B */ jal set_active_viewports_and_max -/* 01B6B8 8001AAB8 00002025 */ move $a0, $zero -/* 01B6BC 8001AABC 3C0F8012 */ lui $t7, %hi(gRacers) # $t7, 0x8012 -/* 01B6C0 8001AAC0 8DEFAEE4 */ lw $t7, %lo(gRacers)($t7) -/* 01B6C4 8001AAC4 3C078012 */ lui $a3, %hi(gRacersByPort) # $a3, 0x8012 -/* 01B6C8 8001AAC8 24E7AEEC */ addiu $a3, %lo(gRacersByPort) # addiu $a3, $a3, -0x5114 -/* 01B6CC 8001AACC 8CE40000 */ lw $a0, ($a3) -/* 01B6D0 8001AAD0 8DE30000 */ lw $v1, ($t7) -/* 01B6D4 8001AAD4 8C860000 */ lw $a2, ($a0) -/* 01B6D8 8001AAD8 8C650064 */ lw $a1, 0x64($v1) -/* 01B6DC 8001AADC AC830000 */ sw $v1, ($a0) -/* 01B6E0 8001AAE0 8CF80000 */ lw $t8, ($a3) -/* 01B6E4 8001AAE4 3C08800E */ lui $t0, %hi(gSwapLeadPlayer) # $t0, 0x800e -/* 01B6E8 8001AAE8 2508C744 */ addiu $t0, %lo(gSwapLeadPlayer) # addiu $t0, $t0, -0x38bc -/* 01B6EC 8001AAEC AF060004 */ sw $a2, 4($t8) -/* 01B6F0 8001AAF0 81190000 */ lb $t9, ($t0) -/* 01B6F4 8001AAF4 00000000 */ nop -/* 01B6F8 8001AAF8 13200007 */ beqz $t9, .L8001AB18 -/* 01B6FC 8001AAFC 00000000 */ nop -/* 01B700 8001AB00 A1000000 */ sb $zero, ($t0) -/* 01B704 8001AB04 0C01BCE6 */ jal swap_lead_player -/* 01B708 8001AB08 AFA50038 */ sw $a1, 0x38($sp) -/* 01B70C 8001AB0C 8FA50038 */ lw $a1, 0x38($sp) -/* 01B710 8001AB10 00000000 */ nop -/* 01B714 8001AB14 A4A00000 */ sh $zero, ($a1) -.L8001AB18: -/* 01B718 8001AB18 8E290000 */ lw $t1, ($s1) -/* 01B71C 8001AB1C 3C078012 */ lui $a3, %hi(D_8011AD51) # $a3, 0x8012 -/* 01B720 8001AB20 24E7AD51 */ addiu $a3, %lo(D_8011AD51) # addiu $a3, $a3, -0x52af -/* 01B724 8001AB24 240A0001 */ li $t2, 1 -/* 01B728 8001AB28 3C018012 */ lui $at, %hi(D_8011AD50) # $at, 0x8012 -/* 01B72C 8001AB2C A0E90000 */ sb $t1, ($a3) -/* 01B730 8001AB30 A02AAD50 */ sb $t2, %lo(D_8011AD50)($at) -/* 01B734 8001AB34 24020001 */ li $v0, 1 -.L8001AB38: -/* 01B738 8001AB38 3C118012 */ lui $s1, %hi(gNumRacers) # $s1, 0x8012 -/* 01B73C 8001AB3C 24010001 */ li $at, 1 -/* 01B740 8001AB40 14410055 */ bne $v0, $at, .L8001AC98 -/* 01B744 8001AB44 2631AEF0 */ addiu $s1, %lo(gNumRacers) # addiu $s1, $s1, -0x5110 -/* 01B748 8001AB48 0C02AC75 */ jal set_hud_visibility -/* 01B74C 8001AB4C 00002025 */ move $a0, $zero -/* 01B750 8001AB50 3C078012 */ lui $a3, %hi(D_8011AD51) # $a3, 0x8012 -/* 01B754 8001AB54 24E7AD51 */ addiu $a3, %lo(D_8011AD51) # addiu $a3, $a3, -0x52af -/* 01B758 8001AB58 80EB0000 */ lb $t3, ($a3) -/* 01B75C 8001AB5C 00000000 */ nop -/* 01B760 8001AB60 256CFFFF */ addiu $t4, $t3, -1 -/* 01B764 8001AB64 A0EC0000 */ sb $t4, ($a3) -/* 01B768 8001AB68 80E60000 */ lb $a2, ($a3) -/* 01B76C 8001AB6C 00000000 */ nop -/* 01B770 8001AB70 18C00046 */ blez $a2, .L8001AC8C -/* 01B774 8001AB74 24180002 */ li $t8, 2 -/* 01B778 8001AB78 8E240000 */ lw $a0, ($s1) -/* 01B77C 8001AB7C 00008025 */ move $s0, $zero -/* 01B780 8001AB80 18800015 */ blez $a0, .L8001ABD8 -/* 01B784 8001AB84 3C058012 */ lui $a1, %hi(gRacersByPosition) # $a1, 0x8012 -/* 01B788 8001AB88 3C0D8012 */ lui $t5, %hi(gRacers) # $t5, 0x8012 -/* 01B78C 8001AB8C 8DADAEE4 */ lw $t5, %lo(gRacers)($t5) -/* 01B790 8001AB90 24A5AEE8 */ addiu $a1, %lo(gRacersByPosition) # addiu $a1, $a1, -0x5118 -/* 01B794 8001AB94 8CA20000 */ lw $v0, ($a1) -/* 01B798 8001AB98 00067080 */ sll $t6, $a2, 2 -/* 01B79C 8001AB9C 01AE7821 */ addu $t7, $t5, $t6 -/* 01B7A0 8001ABA0 8DE30000 */ lw $v1, ($t7) -/* 01B7A4 8001ABA4 8C580000 */ lw $t8, ($v0) -/* 01B7A8 8001ABA8 00000000 */ nop -/* 01B7AC 8001ABAC 1303000A */ beq $t8, $v1, .L8001ABD8 -/* 01B7B0 8001ABB0 00000000 */ nop -.L8001ABB4: -/* 01B7B4 8001ABB4 26100001 */ addiu $s0, $s0, 1 -/* 01B7B8 8001ABB8 0204082A */ slt $at, $s0, $a0 -/* 01B7BC 8001ABBC 10200006 */ beqz $at, .L8001ABD8 -/* 01B7C0 8001ABC0 0010C880 */ sll $t9, $s0, 2 -/* 01B7C4 8001ABC4 00594821 */ addu $t1, $v0, $t9 -/* 01B7C8 8001ABC8 8D2A0000 */ lw $t2, ($t1) -/* 01B7CC 8001ABCC 00000000 */ nop -/* 01B7D0 8001ABD0 1543FFF8 */ bne $t2, $v1, .L8001ABB4 -/* 01B7D4 8001ABD4 00000000 */ nop -.L8001ABD8: -/* 01B7D8 8001ABD8 3C058012 */ lui $a1, %hi(gRacersByPosition) # $a1, 0x8012 -/* 01B7DC 8001ABDC 0204082A */ slt $at, $s0, $a0 -/* 01B7E0 8001ABE0 10200013 */ beqz $at, .L8001AC30 -/* 01B7E4 8001ABE4 24A5AEE8 */ addiu $a1, %lo(gRacersByPosition) # addiu $a1, $a1, -0x5118 -/* 01B7E8 8001ABE8 248BFFFF */ addiu $t3, $a0, -1 -/* 01B7EC 8001ABEC 020B082A */ slt $at, $s0, $t3 -/* 01B7F0 8001ABF0 1020000F */ beqz $at, .L8001AC30 -/* 01B7F4 8001ABF4 00101880 */ sll $v1, $s0, 2 -.L8001ABF8: -/* 01B7F8 8001ABF8 8CAC0000 */ lw $t4, ($a1) -/* 01B7FC 8001ABFC 26100001 */ addiu $s0, $s0, 1 -/* 01B800 8001AC00 01831021 */ addu $v0, $t4, $v1 -/* 01B804 8001AC04 8C4D0004 */ lw $t5, 4($v0) -/* 01B808 8001AC08 24630004 */ addiu $v1, $v1, 4 -/* 01B80C 8001AC0C AC4D0000 */ sw $t5, ($v0) -/* 01B810 8001AC10 8E2E0000 */ lw $t6, ($s1) -/* 01B814 8001AC14 00000000 */ nop -/* 01B818 8001AC18 25CFFFFF */ addiu $t7, $t6, -1 -/* 01B81C 8001AC1C 020F082A */ slt $at, $s0, $t7 -/* 01B820 8001AC20 1420FFF5 */ bnez $at, .L8001ABF8 -/* 01B824 8001AC24 00000000 */ nop -/* 01B828 8001AC28 80E60000 */ lb $a2, ($a3) -/* 01B82C 8001AC2C 00000000 */ nop -.L8001AC30: -/* 01B830 8001AC30 3C188012 */ lui $t8, %hi(gRacers) # $t8, 0x8012 -/* 01B834 8001AC34 8F18AEE4 */ lw $t8, %lo(gRacers)($t8) -/* 01B838 8001AC38 0006C880 */ sll $t9, $a2, 2 -/* 01B83C 8001AC3C 03194821 */ addu $t1, $t8, $t9 -/* 01B840 8001AC40 8D240000 */ lw $a0, ($t1) -/* 01B844 8001AC44 0C003FEE */ jal free_object -/* 01B848 8001AC48 00000000 */ nop -/* 01B84C 8001AC4C 3C078012 */ lui $a3, %hi(D_8011AD51) # $a3, 0x8012 -/* 01B850 8001AC50 24E7AD51 */ addiu $a3, %lo(D_8011AD51) # addiu $a3, $a3, -0x52af -/* 01B854 8001AC54 80EB0000 */ lb $t3, ($a3) -/* 01B858 8001AC58 3C0A8012 */ lui $t2, %hi(gRacers) # $t2, 0x8012 -/* 01B85C 8001AC5C 8D4AAEE4 */ lw $t2, %lo(gRacers)($t2) -/* 01B860 8001AC60 000B6080 */ sll $t4, $t3, 2 -/* 01B864 8001AC64 014C6821 */ addu $t5, $t2, $t4 -/* 01B868 8001AC68 ADA00000 */ sw $zero, ($t5) -/* 01B86C 8001AC6C 8E2E0000 */ lw $t6, ($s1) -/* 01B870 8001AC70 3C028012 */ lui $v0, %hi(D_8011AD50) # $v0, 0x8012 -/* 01B874 8001AC74 25CFFFFF */ addiu $t7, $t6, -1 -/* 01B878 8001AC78 AE2F0000 */ sw $t7, ($s1) -/* 01B87C 8001AC7C 8042AD50 */ lb $v0, %lo(D_8011AD50)($v0) -/* 01B880 8001AC80 10000006 */ b .L8001AC9C -/* 01B884 8001AC84 24010002 */ li $at, 2 -/* 01B888 8001AC88 24180002 */ li $t8, 2 -.L8001AC8C: -/* 01B88C 8001AC8C 3C018012 */ lui $at, %hi(D_8011AD50) # $at, 0x8012 -/* 01B890 8001AC90 A038AD50 */ sb $t8, %lo(D_8011AD50)($at) -/* 01B894 8001AC94 24020002 */ li $v0, 2 -.L8001AC98: -/* 01B898 8001AC98 24010002 */ li $at, 2 -.L8001AC9C: -/* 01B89C 8001AC9C 14410016 */ bne $v0, $at, .L8001ACF8 -/* 01B8A0 8001ACA0 3C198012 */ lui $t9, %hi(gRacers) # $t9, 0x8012 -/* 01B8A4 8001ACA4 8F39AEE4 */ lw $t9, %lo(gRacers)($t9) -/* 01B8A8 8001ACA8 00000000 */ nop -/* 01B8AC 8001ACAC 8F240000 */ lw $a0, ($t9) -/* 01B8B0 8001ACB0 00000000 */ nop -/* 01B8B4 8001ACB4 8C850064 */ lw $a1, 0x64($a0) -/* 01B8B8 8001ACB8 0C008C34 */ jal func_800230D0 -/* 01B8BC 8001ACBC AFA50038 */ sw $a1, 0x38($sp) -/* 01B8C0 8001ACC0 8FA50038 */ lw $a1, 0x38($sp) -/* 01B8C4 8001ACC4 24090003 */ li $t1, 3 -/* 01B8C8 8001ACC8 3C018012 */ lui $at, %hi(D_8011AD50) # $at, 0x8012 -/* 01B8CC 8001ACCC A0A001D8 */ sb $zero, 0x1d8($a1) -/* 01B8D0 8001ACD0 A029AD50 */ sb $t1, %lo(D_8011AD50)($at) -/* 01B8D4 8001ACD4 0C007917 */ jal func_8001E45C -/* 01B8D8 8001ACD8 2404000A */ li $a0, 10 -/* 01B8DC 8001ACDC 3C108012 */ lui $s0, %hi(gBalloonCutsceneTimer) # $s0, 0x8012 -/* 01B8E0 8001ACE0 2610ADC8 */ addiu $s0, %lo(gBalloonCutsceneTimer) # addiu $s0, $s0, -0x5238 -/* 01B8E4 8001ACE4 0C007A4F */ jal func_8001E93C -/* 01B8E8 8001ACE8 AE000000 */ sw $zero, ($s0) -/* 01B8EC 8001ACEC 3C028012 */ lui $v0, %hi(D_8011AD50) # $v0, 0x8012 -/* 01B8F0 8001ACF0 8042AD50 */ lb $v0, %lo(D_8011AD50)($v0) -/* 01B8F4 8001ACF4 00000000 */ nop -.L8001ACF8: -/* 01B8F8 8001ACF8 3C108012 */ lui $s0, %hi(gBalloonCutsceneTimer) # $s0, 0x8012 -/* 01B8FC 8001ACFC 24010003 */ li $at, 3 -/* 01B900 8001AD00 1441000C */ bne $v0, $at, .L8001AD34 -/* 01B904 8001AD04 2610ADC8 */ addiu $s0, %lo(gBalloonCutsceneTimer) # addiu $s0, $s0, -0x5238 -/* 01B908 8001AD08 3C04800E */ lui $a0, %hi(D_800DC860) # $a0, 0x800e -/* 01B90C 8001AD0C 0C030076 */ jal transition_begin -/* 01B910 8001AD10 2484C860 */ addiu $a0, %lo(D_800DC860) # addiu $a0, $a0, -0x37a0 -/* 01B914 8001AD14 240B0004 */ li $t3, 4 -/* 01B918 8001AD18 3C018012 */ lui $at, %hi(D_8011AD50) # $at, 0x8012 -/* 01B91C 8001AD1C A02BAD50 */ sb $t3, %lo(D_8011AD50)($at) -/* 01B920 8001AD20 0C00A3E8 */ jal set_anti_aliasing -/* 01B924 8001AD24 24040001 */ li $a0, 1 -/* 01B928 8001AD28 3C028012 */ lui $v0, %hi(D_8011AD50) # $v0, 0x8012 -/* 01B92C 8001AD2C 8042AD50 */ lb $v0, %lo(D_8011AD50)($v0) -/* 01B930 8001AD30 00000000 */ nop -.L8001AD34: -/* 01B934 8001AD34 24010004 */ li $at, 4 -/* 01B938 8001AD38 1441003E */ bne $v0, $at, .L8001AE34 -/* 01B93C 8001AD3C 8FBF001C */ lw $ra, 0x1c($sp) -/* 01B940 8001AD40 0C00A3E8 */ jal set_anti_aliasing -/* 01B944 8001AD44 24040001 */ li $a0, 1 -/* 01B948 8001AD48 0C0168EC */ jal disable_racer_input -/* 01B94C 8001AD4C 00000000 */ nop -/* 01B950 8001AD50 0C01AF66 */ jal get_current_level_race_type -/* 01B954 8001AD54 00000000 */ nop -/* 01B958 8001AD58 304A0040 */ andi $t2, $v0, 0x40 -/* 01B95C 8001AD5C 15400013 */ bnez $t2, .L8001ADAC -/* 01B960 8001AD60 3C0C8000 */ lui $t4, %hi(osTvType) # $t4, 0x8000 -/* 01B964 8001AD64 8D8C0300 */ lw $t4, %lo(osTvType)($t4) -/* 01B968 8001AD68 8FAE0040 */ lw $t6, 0x40($sp) -/* 01B96C 8001AD6C 15800003 */ bnez $t4, .L8001AD7C -/* 01B970 8001AD70 2402021C */ li $v0, 540 -/* 01B974 8001AD74 10000001 */ b .L8001AD7C -/* 01B978 8001AD78 2402019F */ li $v0, 415 -.L8001AD7C: -/* 01B97C 8001AD7C 8E0D0000 */ lw $t5, ($s0) -/* 01B980 8001AD80 00000000 */ nop -/* 01B984 8001AD84 01AE7821 */ addu $t7, $t5, $t6 -/* 01B988 8001AD88 01E2082B */ sltu $at, $t7, $v0 -/* 01B98C 8001AD8C 10200005 */ beqz $at, .L8001ADA4 -/* 01B990 8001AD90 AE0F0000 */ sw $t7, ($s0) -/* 01B994 8001AD94 0C02AC65 */ jal func_800AB194 -/* 01B998 8001AD98 24040001 */ li $a0, 1 -/* 01B99C 8001AD9C 10000003 */ b .L8001ADAC -/* 01B9A0 8001ADA0 00000000 */ nop -.L8001ADA4: -/* 01B9A4 8001ADA4 0C02AC75 */ jal set_hud_visibility -/* 01B9A8 8001ADA8 24040001 */ li $a0, 1 -.L8001ADAC: -/* 01B9AC 8001ADAC 0C01A955 */ jal get_buttons_pressed_from_player -/* 01B9B0 8001ADB0 00002025 */ move $a0, $zero -/* 01B9B4 8001ADB4 0C01BAA4 */ jal get_settings -/* 01B9B8 8001ADB8 30508000 */ andi $s0, $v0, 0x8000 -/* 01B9BC 8001ADBC 8C590010 */ lw $t9, 0x10($v0) -/* 01B9C0 8001ADC0 00408825 */ move $s1, $v0 -/* 01B9C4 8001ADC4 00194B40 */ sll $t1, $t9, 0xd -/* 01B9C8 8001ADC8 05200002 */ bltz $t1, .L8001ADD4 -/* 01B9CC 8001ADCC 00000000 */ nop -/* 01B9D0 8001ADD0 00008025 */ move $s0, $zero -.L8001ADD4: -/* 01B9D4 8001ADD4 0C008531 */ jal func_800214C4 -/* 01B9D8 8001ADD8 00000000 */ nop -/* 01B9DC 8001ADDC 14400007 */ bnez $v0, .L8001ADFC -/* 01B9E0 8001ADE0 00000000 */ nop -/* 01B9E4 8001ADE4 12000013 */ beqz $s0, .L8001AE34 -/* 01B9E8 8001ADE8 8FBF001C */ lw $ra, 0x1c($sp) -/* 01B9EC 8001ADEC 0C030063 */ jal check_fadeout_transition -/* 01B9F0 8001ADF0 00000000 */ nop -/* 01B9F4 8001ADF4 1440000F */ bnez $v0, .L8001AE34 -/* 01B9F8 8001ADF8 8FBF001C */ lw $ra, 0x1c($sp) -.L8001ADFC: -/* 01B9FC 8001ADFC 12000003 */ beqz $s0, .L8001AE0C -/* 01BA00 8001AE00 3C04800E */ lui $a0, %hi(D_800DC6F8) # $a0, 0x800e -/* 01BA04 8001AE04 0C030076 */ jal transition_begin -/* 01BA08 8001AE08 2484C6F8 */ addiu $a0, %lo(D_800DC6F8) # addiu $a0, $a0, -0x3908 -.L8001AE0C: -/* 01BA0C 8001AE0C 0C01BC50 */ jal func_8006F140 -/* 01BA10 8001AE10 24040002 */ li $a0, 2 -/* 01BA14 8001AE14 240B0005 */ li $t3, 5 -/* 01BA18 8001AE18 3C018012 */ lui $at, %hi(D_8011AD50) # $at, 0x8012 -/* 01BA1C 8001AE1C A02BAD50 */ sb $t3, %lo(D_8011AD50)($at) -/* 01BA20 8001AE20 8E2A0010 */ lw $t2, 0x10($s1) -/* 01BA24 8001AE24 3C010004 */ lui $at, 4 -/* 01BA28 8001AE28 01416025 */ or $t4, $t2, $at -/* 01BA2C 8001AE2C AE2C0010 */ sw $t4, 0x10($s1) -/* 01BA30 8001AE30 8FBF001C */ lw $ra, 0x1c($sp) -.L8001AE34: -/* 01BA34 8001AE34 8FB00014 */ lw $s0, 0x14($sp) -/* 01BA38 8001AE38 8FB10018 */ lw $s1, 0x18($sp) -/* 01BA3C 8001AE3C 03E00008 */ jr $ra -/* 01BA40 8001AE40 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/objects/func_8002277C.s b/asm/non_matchings/objects/func_8002277C.s deleted file mode 100644 index 1d957454..00000000 --- a/asm/non_matchings/objects/func_8002277C.s +++ /dev/null @@ -1,69 +0,0 @@ -glabel func_8002277C -/* 02337C 8002277C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 023380 80022780 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 023384 80022784 00057880 */ sll $t7, $a1, 2 -/* 023388 80022788 44819800 */ mtc1 $at, $f19 -/* 02338C 8002278C AFA60020 */ sw $a2, 0x20($sp) -/* 023390 80022790 008F1021 */ addu $v0, $a0, $t7 -/* 023394 80022794 C44A0000 */ lwc1 $f10, ($v0) -/* 023398 80022798 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 -/* 02339C 8002279C 44813800 */ mtc1 $at, $f7 -/* 0233A0 800227A0 C444000C */ lwc1 $f4, 0xc($v0) -/* 0233A4 800227A4 44803000 */ mtc1 $zero, $f6 -/* 0233A8 800227A8 46005321 */ cvt.d.s $f12, $f10 -/* 0233AC 800227AC 462C3382 */ mul.d $f14, $f6, $f12 -/* 0233B0 800227B0 C4480004 */ lwc1 $f8, 4($v0) -/* 0233B4 800227B4 3C013FF8 */ li $at, 0x3FF80000 # 1.937500 -/* 0233B8 800227B8 460020A1 */ cvt.d.s $f2, $f4 -/* 0233BC 800227BC C4440008 */ lwc1 $f4, 8($v0) -/* 0233C0 800227C0 44815800 */ mtc1 $at, $f11 -/* 0233C4 800227C4 44805000 */ mtc1 $zero, $f10 -/* 0233C8 800227C8 46004421 */ cvt.d.s $f16, $f8 -/* 0233CC 800227CC 46305182 */ mul.d $f6, $f10, $f16 -/* 0233D0 800227D0 3C01BFF8 */ li $at, 0xBFF80000 # -1.937500 -/* 0233D4 800227D4 46002021 */ cvt.d.s $f0, $f4 -/* 0233D8 800227D8 44802000 */ mtc1 $zero, $f4 -/* 0233DC 800227DC 44812800 */ mtc1 $at, $f5 -/* 0233E0 800227E0 44809000 */ mtc1 $zero, $f18 -/* 0233E4 800227E4 46202282 */ mul.d $f10, $f4, $f0 -/* 0233E8 800227E8 46267200 */ add.d $f8, $f14, $f6 -/* 0233EC 800227EC 3C01C004 */ li $at, 0xC0040000 # -2.062500 -/* 0233F0 800227F0 46321102 */ mul.d $f4, $f2, $f18 -/* 0233F4 800227F4 462A4180 */ add.d $f6, $f8, $f10 -/* 0233F8 800227F8 46262200 */ add.d $f8, $f4, $f6 -/* 0233FC 800227FC 44802000 */ mtc1 $zero, $f4 -/* 023400 80022800 44812800 */ mtc1 $at, $f5 -/* 023404 80022804 462042A0 */ cvt.s.d $f10, $f8 -/* 023408 80022808 3C01BFE0 */ li $at, 0xBFE00000 # -1.750000 -/* 02340C 8002280C 46302182 */ mul.d $f6, $f4, $f16 -/* 023410 80022810 46200100 */ add.d $f4, $f0, $f0 -/* 023414 80022814 E7AA0008 */ swc1 $f10, 8($sp) -/* 023418 80022818 46266200 */ add.d $f8, $f12, $f6 -/* 02341C 8002281C 46244180 */ add.d $f6, $f8, $f4 -/* 023420 80022820 44804000 */ mtc1 $zero, $f8 -/* 023424 80022824 44814800 */ mtc1 $at, $f9 -/* 023428 80022828 3C014040 */ li $at, 0x40400000 # 3.000000 -/* 02342C 8002282C 46281102 */ mul.d $f4, $f2, $f8 -/* 023430 80022830 46262200 */ add.d $f8, $f4, $f6 -/* 023434 80022834 46320182 */ mul.d $f6, $f0, $f18 -/* 023438 80022838 46204120 */ cvt.s.d $f4, $f8 -/* 02343C 8002283C E7A4000C */ swc1 $f4, 0xc($sp) -/* 023440 80022840 462E3200 */ add.d $f8, $f6, $f14 -/* 023444 80022844 462041A0 */ cvt.s.d $f6, $f8 -/* 023448 80022848 44814000 */ mtc1 $at, $f8 -/* 02344C 8002284C E7A60010 */ swc1 $f6, 0x10($sp) -/* 023450 80022850 46085282 */ mul.s $f10, $f10, $f8 -/* 023454 80022854 C7A80020 */ lwc1 $f8, 0x20($sp) -/* 023458 80022858 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 02345C 8002285C E7A60000 */ swc1 $f6, ($sp) -/* 023460 80022860 46085282 */ mul.s $f10, $f10, $f8 -/* 023464 80022864 44813000 */ mtc1 $at, $f6 -/* 023468 80022868 00000000 */ nop -/* 02346C 8002286C 46043182 */ mul.s $f6, $f6, $f4 -/* 023470 80022870 46065100 */ add.s $f4, $f10, $f6 -/* 023474 80022874 C7A60000 */ lwc1 $f6, ($sp) -/* 023478 80022878 46082282 */ mul.s $f10, $f4, $f8 -/* 02347C 8002287C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 023480 80022880 03E00008 */ jr $ra -/* 023484 80022884 46065000 */ add.s $f0, $f10, $f6 - diff --git a/asm/non_matchings/objects/func_80022948.s b/asm/non_matchings/objects/func_80022948.s deleted file mode 100644 index 84539cb0..00000000 --- a/asm/non_matchings/objects/func_80022948.s +++ /dev/null @@ -1,246 +0,0 @@ -glabel func_80022948 -/* 023548 80022948 3C028012 */ lui $v0, %hi(D_8011AEF7) # $v0, 0x8012 -/* 02354C 8002294C 2442AEF7 */ addiu $v0, %lo(D_8011AEF7) # addiu $v0, $v0, -0x5109 -/* 023550 80022950 804E0000 */ lb $t6, ($v0) -/* 023554 80022954 27BDFF80 */ addiu $sp, $sp, -0x80 -/* 023558 80022958 25CFFFFF */ addiu $t7, $t6, -1 -/* 02355C 8002295C A04F0000 */ sb $t7, ($v0) -/* 023560 80022960 80580000 */ lb $t8, ($v0) -/* 023564 80022964 AFBF001C */ sw $ra, 0x1c($sp) -/* 023568 80022968 170000E0 */ bnez $t8, .L80022CEC -/* 02356C 8002296C AFB00018 */ sw $s0, 0x18($sp) -/* 023570 80022970 0C01AF6C */ jal get_current_level_header -/* 023574 80022974 00000000 */ nop -/* 023578 80022978 AFA20068 */ sw $v0, 0x68($sp) -/* 02357C 8002297C 90590052 */ lbu $t9, 0x52($v0) -/* 023580 80022980 3C018012 */ lui $at, %hi(D_8011AEF8) # $at, 0x8012 -/* 023584 80022984 A039AEF8 */ sb $t9, %lo(D_8011AEF8)($at) -/* 023588 80022988 94490054 */ lhu $t1, 0x54($v0) -/* 02358C 8002298C 3C018012 */ lui $at, %hi(D_8011AEFC) # $at, 0x8012 -/* 023590 80022990 240A001D */ li $t2, 29 -/* 023594 80022994 340BFFFF */ li $t3, 65535 -/* 023598 80022998 AC29AEFC */ sw $t1, %lo(D_8011AEFC)($at) -/* 02359C 8002299C A04A0052 */ sb $t2, 0x52($v0) -/* 0235A0 800229A0 A44B0054 */ sh $t3, 0x54($v0) -/* 0235A4 800229A4 0C006EB2 */ jal get_racer_object -/* 0235A8 800229A8 00002025 */ move $a0, $zero -/* 0235AC 800229AC 8C500064 */ lw $s0, 0x64($v0) -/* 0235B0 800229B0 3C018012 */ lui $at, %hi(gIsTajChallenge) # $at, 0x8012 -/* 0235B4 800229B4 820C01D6 */ lb $t4, 0x1d6($s0) -/* 0235B8 800229B8 00402025 */ move $a0, $v0 -/* 0235BC 800229BC 258D0001 */ addiu $t5, $t4, 1 -/* 0235C0 800229C0 A02DAEF6 */ sb $t5, %lo(gIsTajChallenge)($at) -/* 0235C4 800229C4 0C008C34 */ jal func_800230D0 -/* 0235C8 800229C8 02002825 */ move $a1, $s0 -/* 0235CC 800229CC 860E01A0 */ lh $t6, 0x1a0($s0) -/* 0235D0 800229D0 340F8000 */ li $t7, 32768 -/* 0235D4 800229D4 01EEC023 */ subu $t8, $t7, $t6 -/* 0235D8 800229D8 A6180196 */ sh $t8, 0x196($s0) -/* 0235DC 800229DC A20001FC */ sb $zero, 0x1fc($s0) -/* 0235E0 800229E0 A20001F4 */ sb $zero, 0x1f4($s0) -/* 0235E4 800229E4 A6000190 */ sh $zero, 0x190($s0) -/* 0235E8 800229E8 A2000192 */ sb $zero, 0x192($s0) -/* 0235EC 800229EC A2000193 */ sb $zero, 0x193($s0) -/* 0235F0 800229F0 A2000194 */ sb $zero, 0x194($s0) -/* 0235F4 800229F4 AE000128 */ sw $zero, 0x128($s0) -/* 0235F8 800229F8 AE00012C */ sw $zero, 0x12c($s0) -/* 0235FC 800229FC AE000130 */ sw $zero, 0x130($s0) -/* 023600 80022A00 A60001BA */ sh $zero, 0x1ba($s0) -/* 023604 80022A04 0C01BAA4 */ jal get_settings -/* 023608 80022A08 AFA2007C */ sw $v0, 0x7c($sp) -/* 02360C 80022A0C 24190050 */ li $t9, 80 -/* 023610 80022A10 3C018012 */ lui $at, %hi(gEventCountdown) # $at, 0x8012 -/* 023614 80022A14 AC39ADB0 */ sw $t9, %lo(gEventCountdown)($at) -/* 023618 80022A18 3C018012 */ lui $at, %hi(D_8011ADB4) # $at, 0x8012 -/* 02361C 80022A1C 8FA30068 */ lw $v1, 0x68($sp) -/* 023620 80022A20 AC20ADB4 */ sw $zero, %lo(D_8011ADB4)($at) -/* 023624 80022A24 3C018012 */ lui $at, %hi(D_8011ADC0) # $at, 0x8012 -/* 023628 80022A28 24090001 */ li $t1, 1 -/* 02362C 80022A2C AFA20054 */ sw $v0, 0x54($sp) -/* 023630 80022A30 AC29ADC0 */ sw $t1, %lo(D_8011ADC0)($at) -/* 023634 80022A34 240A0003 */ li $t2, 3 -/* 023638 80022A38 A06A004B */ sb $t2, 0x4b($v1) -/* 02363C 80022A3C 0C027C0D */ jal func_8009F034 -/* 023640 80022A40 A060004C */ sb $zero, 0x4c($v1) -/* 023644 80022A44 8FA8007C */ lw $t0, 0x7c($sp) -/* 023648 80022A48 00001025 */ move $v0, $zero -/* 02364C 80022A4C 02001825 */ move $v1, $s0 -.L80022A50: -/* 023650 80022A50 24420001 */ addiu $v0, $v0, 1 -/* 023654 80022A54 28410005 */ slti $at, $v0, 5 -/* 023658 80022A58 AC600128 */ sw $zero, 0x128($v1) -/* 02365C 80022A5C 1420FFFC */ bnez $at, .L80022A50 -/* 023660 80022A60 24630004 */ addiu $v1, $v1, 4 -/* 023664 80022A64 3C01420C */ li $at, 0x420C0000 # 35.000000 -/* 023668 80022A68 44810000 */ mtc1 $at, $f0 -/* 02366C 80022A6C C5060008 */ lwc1 $f6, 8($t0) -/* 023670 80022A70 C5040010 */ lwc1 $f4, 0x10($t0) -/* 023674 80022A74 46003202 */ mul.s $f8, $f6, $f0 -/* 023678 80022A78 46082280 */ add.s $f10, $f4, $f8 -/* 02367C 80022A7C 444BF800 */ cfc1 $t3, $31 -/* 023680 80022A80 00000000 */ nop -/* 023684 80022A84 35610003 */ ori $at, $t3, 3 -/* 023688 80022A88 38210002 */ xori $at, $at, 2 -/* 02368C 80022A8C 44C1F800 */ ctc1 $at, $31 -/* 023690 80022A90 00000000 */ nop -/* 023694 80022A94 46005424 */ cvt.w.s $f16, $f10 -/* 023698 80022A98 440C8000 */ mfc1 $t4, $f16 -/* 02369C 80022A9C 44CBF800 */ ctc1 $t3, $31 -/* 0236A0 80022AA0 A7AC005A */ sh $t4, 0x5a($sp) -/* 0236A4 80022AA4 C5060000 */ lwc1 $f6, ($t0) -/* 0236A8 80022AA8 C5120018 */ lwc1 $f18, 0x18($t0) -/* 0236AC 80022AAC 46003102 */ mul.s $f4, $f6, $f0 -/* 0236B0 80022AB0 000C7400 */ sll $t6, $t4, 0x10 -/* 0236B4 80022AB4 000EC403 */ sra $t8, $t6, 0x10 -/* 0236B8 80022AB8 44988000 */ mtc1 $t8, $f16 -/* 0236BC 80022ABC 46049201 */ sub.s $f8, $f18, $f4 -/* 0236C0 80022AC0 444DF800 */ cfc1 $t5, $31 -/* 0236C4 80022AC4 00000000 */ nop -/* 0236C8 80022AC8 35A10003 */ ori $at, $t5, 3 -/* 0236CC 80022ACC 38210002 */ xori $at, $at, 2 -/* 0236D0 80022AD0 44C1F800 */ ctc1 $at, $31 -/* 0236D4 80022AD4 00000000 */ nop -/* 0236D8 80022AD8 460042A4 */ cvt.w.s $f10, $f8 -/* 0236DC 80022ADC 440F5000 */ mfc1 $t7, $f10 -/* 0236E0 80022AE0 44CDF800 */ ctc1 $t5, $31 -/* 0236E4 80022AE4 000FCC00 */ sll $t9, $t7, 0x10 -/* 0236E8 80022AE8 00194C03 */ sra $t1, $t9, 0x10 -/* 0236EC 80022AEC 44893000 */ mtc1 $t1, $f6 -/* 0236F0 80022AF0 A7AF005E */ sh $t7, 0x5e($sp) -/* 0236F4 80022AF4 468031A0 */ cvt.s.w $f6, $f6 -/* 0236F8 80022AF8 C50E0014 */ lwc1 $f14, 0x14($t0) -/* 0236FC 80022AFC AFA8007C */ sw $t0, 0x7c($sp) -/* 023700 80022B00 44063000 */ mfc1 $a2, $f6 -/* 023704 80022B04 0C00A7C6 */ jal get_level_segment_index_from_position -/* 023708 80022B08 46808320 */ cvt.s.w $f12, $f16 -/* 02370C 80022B0C 87AA005A */ lh $t2, 0x5a($sp) -/* 023710 80022B10 87AB005E */ lh $t3, 0x5e($sp) -/* 023714 80022B14 448A9000 */ mtc1 $t2, $f18 -/* 023718 80022B18 448B2000 */ mtc1 $t3, $f4 -/* 02371C 80022B1C 468094A0 */ cvt.s.w $f18, $f18 -/* 023720 80022B20 00402025 */ move $a0, $v0 -/* 023724 80022B24 27A7002C */ addiu $a3, $sp, 0x2c -/* 023728 80022B28 46802120 */ cvt.s.w $f4, $f4 -/* 02372C 80022B2C 44059000 */ mfc1 $a1, $f18 -/* 023730 80022B30 44062000 */ mfc1 $a2, $f4 -/* 023734 80022B34 0C00AEAC */ jal func_8002BAB0 -/* 023738 80022B38 00000000 */ nop -/* 02373C 80022B3C 8FA8007C */ lw $t0, 0x7c($sp) -/* 023740 80022B40 1040000C */ beqz $v0, .L80022B74 -/* 023744 80022B44 240F0010 */ li $t7, 16 -/* 023748 80022B48 444DF800 */ cfc1 $t5, $31 -/* 02374C 80022B4C C7A8002C */ lwc1 $f8, 0x2c($sp) -/* 023750 80022B50 35A10003 */ ori $at, $t5, 3 -/* 023754 80022B54 38210002 */ xori $at, $at, 2 -/* 023758 80022B58 44C1F800 */ ctc1 $at, $31 -/* 02375C 80022B5C 00000000 */ nop -/* 023760 80022B60 460042A4 */ cvt.w.s $f10, $f8 -/* 023764 80022B64 440C5000 */ mfc1 $t4, $f10 -/* 023768 80022B68 44CDF800 */ ctc1 $t5, $31 -/* 02376C 80022B6C 1000000C */ b .L80022BA0 -/* 023770 80022B70 A7AC005C */ sh $t4, 0x5c($sp) -.L80022B74: -/* 023774 80022B74 444EF800 */ cfc1 $t6, $31 -/* 023778 80022B78 C5100014 */ lwc1 $f16, 0x14($t0) -/* 02377C 80022B7C 35C10003 */ ori $at, $t6, 3 -/* 023780 80022B80 38210002 */ xori $at, $at, 2 -/* 023784 80022B84 44C1F800 */ ctc1 $at, $31 -/* 023788 80022B88 00000000 */ nop -/* 02378C 80022B8C 460081A4 */ cvt.w.s $f6, $f16 -/* 023790 80022B90 44183000 */ mfc1 $t8, $f6 -/* 023794 80022B94 44CEF800 */ ctc1 $t6, $31 -/* 023798 80022B98 A7B8005C */ sh $t8, 0x5c($sp) -/* 02379C 80022B9C 00000000 */ nop -.L80022BA0: -/* 0237A0 80022BA0 A3AF0059 */ sb $t7, 0x59($sp) -/* 0237A4 80022BA4 861901A0 */ lh $t9, 0x1a0($s0) -/* 0237A8 80022BA8 24090004 */ li $t1, 4 -/* 0237AC 80022BAC 240A00DA */ li $t2, 218 -/* 0237B0 80022BB0 A7A00062 */ sh $zero, 0x62($sp) -/* 0237B4 80022BB4 A7A00060 */ sh $zero, 0x60($sp) -/* 0237B8 80022BB8 A7A90066 */ sh $t1, 0x66($sp) -/* 0237BC 80022BBC A3AA0058 */ sb $t2, 0x58($sp) -/* 0237C0 80022BC0 00002025 */ move $a0, $zero -/* 0237C4 80022BC4 0C01867D */ jal func_800619F4 -/* 0237C8 80022BC8 A7B90064 */ sh $t9, 0x64($sp) -/* 0237CC 80022BCC 27A40058 */ addiu $a0, $sp, 0x58 -/* 0237D0 80022BD0 0C003A95 */ jal spawn_object -/* 0237D4 80022BD4 24050001 */ li $a1, 1 -/* 0237D8 80022BD8 3C0B8012 */ lui $t3, %hi(gRacers) # $t3, 0x8012 -/* 0237DC 80022BDC 8D6BAEE4 */ lw $t3, %lo(gRacers)($t3) -/* 0237E0 80022BE0 3C0D8012 */ lui $t5, %hi(gRacersByPosition) # $t5, 0x8012 -/* 0237E4 80022BE4 AD620004 */ sw $v0, 4($t3) -/* 0237E8 80022BE8 8DADAEE8 */ lw $t5, %lo(gRacersByPosition)($t5) -/* 0237EC 80022BEC 3C0C8012 */ lui $t4, %hi(gRacersByPort) # $t4, 0x8012 -/* 0237F0 80022BF0 ADA20004 */ sw $v0, 4($t5) -/* 0237F4 80022BF4 8D8CAEEC */ lw $t4, %lo(gRacersByPort)($t4) -/* 0237F8 80022BF8 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 0237FC 80022BFC 44810000 */ mtc1 $at, $f0 -/* 023800 80022C00 AD820004 */ sw $v0, 4($t4) -/* 023804 80022C04 AC40003C */ sw $zero, 0x3c($v0) -/* 023808 80022C08 3C018012 */ lui $at, %hi(gNumRacers) # $at, 0x8012 -/* 02380C 80022C0C 240E0002 */ li $t6, 2 -/* 023810 80022C10 AC2EAEF0 */ sw $t6, %lo(gNumRacers)($at) -/* 023814 80022C14 8C500064 */ lw $s0, 0x64($v0) -/* 023818 80022C18 2418000A */ li $t8, 10 -/* 02381C 80022C1C A21801D6 */ sb $t8, 0x1d6($s0) -/* 023820 80022C20 820F01D6 */ lb $t7, 0x1d6($s0) -/* 023824 80022C24 24190001 */ li $t9, 1 -/* 023828 80022C28 A2190002 */ sb $t9, 2($s0) -/* 02382C 80022C2C A20F01D7 */ sb $t7, 0x1d7($s0) -/* 023830 80022C30 8FA90054 */ lw $t1, 0x54($sp) -/* 023834 80022C34 240B00FF */ li $t3, 255 -/* 023838 80022C38 812A0059 */ lb $t2, 0x59($t1) -/* 02383C 80022C3C E6000090 */ swc1 $f0, 0x90($s0) -/* 023840 80022C40 E600008C */ swc1 $f0, 0x8c($s0) -/* 023844 80022C44 A20B01F7 */ sb $t3, 0x1f7($s0) -/* 023848 80022C48 AE000118 */ sw $zero, 0x118($s0) -/* 02384C 80022C4C A20A0003 */ sb $t2, 3($s0) -/* 023850 80022C50 8C4C004C */ lw $t4, 0x4c($v0) -/* 023854 80022C54 240D0002 */ li $t5, 2 -/* 023858 80022C58 A18D0012 */ sb $t5, 0x12($t4) -/* 02385C 80022C5C 3C048012 */ lui $a0, %hi(gObjectListStart) # $a0, 0x8012 -/* 023860 80022C60 3C058012 */ lui $a1, %hi(gObjectCount) # $a1, 0x8012 -/* 023864 80022C64 8CA5AE5C */ lw $a1, %lo(gObjectCount)($a1) -/* 023868 80022C68 8C84AE60 */ lw $a0, %lo(gObjectListStart)($a0) -/* 02386C 80022C6C 2407003E */ li $a3, 62 -/* 023870 80022C70 0085082A */ slt $at, $a0, $a1 -/* 023874 80022C74 10200018 */ beqz $at, .L80022CD8 -/* 023878 80022C78 00041880 */ sll $v1, $a0, 2 -/* 02387C 80022C7C 3C068012 */ lui $a2, %hi(gObjPtrList) # $a2, 0x8012 -/* 023880 80022C80 24C6AE58 */ addiu $a2, %lo(gObjPtrList) # addiu $a2, $a2, -0x51a8 -.L80022C84: -/* 023884 80022C84 8CCE0000 */ lw $t6, ($a2) -/* 023888 80022C88 24840001 */ addiu $a0, $a0, 1 -/* 02388C 80022C8C 01C3C021 */ addu $t8, $t6, $v1 -/* 023890 80022C90 8F020000 */ lw $v0, ($t8) -/* 023894 80022C94 00000000 */ nop -/* 023898 80022C98 844F0006 */ lh $t7, 6($v0) -/* 02389C 80022C9C 00000000 */ nop -/* 0238A0 80022CA0 31F98000 */ andi $t9, $t7, 0x8000 -/* 0238A4 80022CA4 1720000A */ bnez $t9, .L80022CD0 -/* 0238A8 80022CA8 0085082A */ slt $at, $a0, $a1 -/* 0238AC 80022CAC 84490048 */ lh $t1, 0x48($v0) -/* 0238B0 80022CB0 00000000 */ nop -/* 0238B4 80022CB4 14E90006 */ bne $a3, $t1, .L80022CD0 -/* 0238B8 80022CB8 0085082A */ slt $at, $a0, $a1 -/* 0238BC 80022CBC AE020154 */ sw $v0, 0x154($s0) -/* 0238C0 80022CC0 3C058012 */ lui $a1, %hi(gObjectCount) # $a1, 0x8012 -/* 0238C4 80022CC4 8CA5AE5C */ lw $a1, %lo(gObjectCount)($a1) -/* 0238C8 80022CC8 00000000 */ nop -/* 0238CC 80022CCC 0085082A */ slt $at, $a0, $a1 -.L80022CD0: -/* 0238D0 80022CD0 1420FFEC */ bnez $at, .L80022C84 -/* 0238D4 80022CD4 24630004 */ addiu $v1, $v1, 4 -.L80022CD8: -/* 0238D8 80022CD8 0C01BCE2 */ jal set_pause_lockout_timer -/* 0238DC 80022CDC 24040014 */ li $a0, 20 -/* 0238E0 80022CE0 3C04800E */ lui $a0, %hi(D_800DC6F0) # $a0, 0x800e -/* 0238E4 80022CE4 0C030076 */ jal transition_begin -/* 0238E8 80022CE8 2484C6F0 */ addiu $a0, %lo(D_800DC6F0) # addiu $a0, $a0, -0x3910 -.L80022CEC: -/* 0238EC 80022CEC 8FBF001C */ lw $ra, 0x1c($sp) -/* 0238F0 80022CF0 8FB00018 */ lw $s0, 0x18($sp) -/* 0238F4 80022CF4 03E00008 */ jr $ra -/* 0238F8 80022CF8 27BD0080 */ addiu $sp, $sp, 0x80 - diff --git a/asm/non_matchings/vehicle_tricky/func_8005CB68.s b/asm/non_matchings/vehicle_tricky/func_8005CB68.s deleted file mode 100644 index bb803256..00000000 --- a/asm/non_matchings/vehicle_tricky/func_8005CB68.s +++ /dev/null @@ -1,340 +0,0 @@ -glabel func_8005CB68 -/* 05D768 8005CB68 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* 05D76C 8005CB6C AFBF001C */ sw $ra, 0x1c($sp) -/* 05D770 8005CB70 AFB00018 */ sw $s0, 0x18($sp) -/* 05D774 8005CB74 AFA40048 */ sw $a0, 0x48($sp) -/* 05D778 8005CB78 AFA5004C */ sw $a1, 0x4c($sp) -/* 05D77C 8005CB7C 80AF0000 */ lb $t7, ($a1) -/* 05D780 8005CB80 0C01BAA4 */ jal get_settings -/* 05D784 8005CB84 A3AF0043 */ sb $t7, 0x43($sp) -/* 05D788 8005CB88 90580048 */ lbu $t8, 0x48($v0) -/* 05D78C 8005CB8C 24190001 */ li $t9, 1 -/* 05D790 8005CB90 03194804 */ sllv $t1, $t9, $t8 -/* 05D794 8005CB94 AFA90038 */ sw $t1, 0x38($sp) -/* 05D798 8005CB98 AFA20044 */ sw $v0, 0x44($sp) -/* 05D79C 8005CB9C 0C0078A7 */ jal get_misc_asset -/* 05D7A0 8005CBA0 24040044 */ li $a0, 68 -/* 05D7A4 8005CBA4 804C0005 */ lb $t4, 5($v0) -/* 05D7A8 8005CBA8 24040043 */ li $a0, 67 -/* 05D7AC 8005CBAC AFAC002C */ sw $t4, 0x2c($sp) -/* 05D7B0 8005CBB0 804D0006 */ lb $t5, 6($v0) -/* 05D7B4 8005CBB4 00000000 */ nop -/* 05D7B8 8005CBB8 AFAD0028 */ sw $t5, 0x28($sp) -/* 05D7BC 8005CBBC 804E0007 */ lb $t6, 7($v0) -/* 05D7C0 8005CBC0 0C0078A7 */ jal get_misc_asset -/* 05D7C4 8005CBC4 AFAE0024 */ sw $t6, 0x24($sp) -/* 05D7C8 8005CBC8 8FAA0044 */ lw $t2, 0x44($sp) -/* 05D7CC 8005CBCC 804F0000 */ lb $t7, ($v0) -/* 05D7D0 8005CBD0 91440049 */ lbu $a0, 0x49($t2) -/* 05D7D4 8005CBD4 8FA90038 */ lw $t1, 0x38($sp) -/* 05D7D8 8005CBD8 00402825 */ move $a1, $v0 -/* 05D7DC 8005CBDC 108F0006 */ beq $a0, $t7, .L8005CBF8 -/* 05D7E0 8005CBE0 00008025 */ move $s0, $zero -/* 05D7E4 8005CBE4 00A01825 */ move $v1, $a1 -.L8005CBE8: -/* 05D7E8 8005CBE8 80790002 */ lb $t9, 2($v1) -/* 05D7EC 8005CBEC 26100002 */ addiu $s0, $s0, 2 -/* 05D7F0 8005CBF0 1499FFFD */ bne $a0, $t9, .L8005CBE8 -/* 05D7F4 8005CBF4 24630002 */ addiu $v1, $v1, 2 -.L8005CBF8: -/* 05D7F8 8005CBF8 8FAC0048 */ lw $t4, 0x48($sp) -/* 05D7FC 8005CBFC 83AE0043 */ lb $t6, 0x43($sp) -/* 05D800 8005CC00 858D01AC */ lh $t5, 0x1ac($t4) -/* 05D804 8005CC04 0202C021 */ addu $t8, $s0, $v0 -/* 05D808 8005CC08 24030001 */ li $v1, 1 -/* 05D80C 8005CC0C 83100001 */ lb $s0, 1($t8) -/* 05D810 8005CC10 15C30105 */ bne $t6, $v1, .L8005D028 -/* 05D814 8005CC14 AFAD0034 */ sw $t5, 0x34($sp) -/* 05D818 8005CC18 15A30009 */ bne $t5, $v1, .L8005CC40 -/* 05D81C 8005CC1C 2404003E */ li $a0, 62 -/* 05D820 8005CC20 2404003D */ li $a0, 61 -/* 05D824 8005CC24 AFA90038 */ sw $t1, 0x38($sp) -/* 05D828 8005CC28 0C0002CD */ jal music_play -/* 05D82C 8005CC2C AFAA0044 */ sw $t2, 0x44($sp) -/* 05D830 8005CC30 8FA90038 */ lw $t1, 0x38($sp) -/* 05D834 8005CC34 8FAA0044 */ lw $t2, 0x44($sp) -/* 05D838 8005CC38 10000008 */ b .L8005CC5C -/* 05D83C 8005CC3C 91430048 */ lbu $v1, 0x48($t2) -.L8005CC40: -/* 05D840 8005CC40 AFA90038 */ sw $t1, 0x38($sp) -/* 05D844 8005CC44 0C0002CD */ jal music_play -/* 05D848 8005CC48 AFAA0044 */ sw $t2, 0x44($sp) -/* 05D84C 8005CC4C 8FA90038 */ lw $t1, 0x38($sp) -/* 05D850 8005CC50 8FAA0044 */ lw $t2, 0x44($sp) -/* 05D854 8005CC54 00000000 */ nop -/* 05D858 8005CC58 91430048 */ lbu $v1, 0x48($t2) -.L8005CC5C: -/* 05D85C 8005CC5C 8FA80034 */ lw $t0, 0x34($sp) -/* 05D860 8005CC60 10600002 */ beqz $v1, .L8005CC6C -/* 05D864 8005CC64 24010005 */ li $at, 5 -/* 05D868 8005CC68 14610063 */ bne $v1, $at, .L8005CDF8 -.L8005CC6C: -/* 05D86C 8005CC6C 240B0001 */ li $t3, 1 -/* 05D870 8005CC70 150B000E */ bne $t0, $t3, .L8005CCAC -/* 05D874 8005CC74 00000000 */ nop -/* 05D878 8005CC78 954F000C */ lhu $t7, 0xc($t2) -/* 05D87C 8005CC7C 914C0049 */ lbu $t4, 0x49($t2) -/* 05D880 8005CC80 8D580004 */ lw $t8, 4($t2) -/* 05D884 8005CC84 01E9C825 */ or $t9, $t7, $t1 -/* 05D888 8005CC88 000C7080 */ sll $t6, $t4, 2 -/* 05D88C 8005CC8C A559000C */ sh $t9, 0xc($t2) -/* 05D890 8005CC90 030E1021 */ addu $v0, $t8, $t6 -/* 05D894 8005CC94 8C4D0000 */ lw $t5, ($v0) -/* 05D898 8005CC98 00000000 */ nop -/* 05D89C 8005CC9C 35AF0002 */ ori $t7, $t5, 2 -/* 05D8A0 8005CCA0 AC4F0000 */ sw $t7, ($v0) -/* 05D8A4 8005CCA4 91430048 */ lbu $v1, 0x48($t2) -/* 05D8A8 8005CCA8 00000000 */ nop -.L8005CCAC: -/* 05D8AC 8005CCAC 1460001F */ bnez $v1, .L8005CD2C -/* 05D8B0 8005CCB0 00000000 */ nop -/* 05D8B4 8005CCB4 150B0012 */ bne $t0, $t3, .L8005CD00 -/* 05D8B8 8005CCB8 2404FFF6 */ li $a0, -10 -/* 05D8BC 8005CCBC 2404FFFE */ li $a0, -2 -/* 05D8C0 8005CCC0 00002825 */ move $a1, $zero -/* 05D8C4 8005CCC4 00003025 */ move $a2, $zero -/* 05D8C8 8005CCC8 0C01B06B */ jal push_level_property_stack -/* 05D8CC 8005CCCC 00003825 */ move $a3, $zero -/* 05D8D0 8005CCD0 8FA4002C */ lw $a0, 0x2c($sp) -/* 05D8D4 8005CCD4 00002825 */ move $a1, $zero -/* 05D8D8 8005CCD8 2406FFFF */ li $a2, -1 -/* 05D8DC 8005CCDC 0C01B06B */ jal push_level_property_stack -/* 05D8E0 8005CCE0 00003825 */ move $a3, $zero -/* 05D8E4 8005CCE4 02002025 */ move $a0, $s0 -/* 05D8E8 8005CCE8 00002825 */ move $a1, $zero -/* 05D8EC 8005CCEC 2406FFFF */ li $a2, -1 -/* 05D8F0 8005CCF0 0C01B06B */ jal push_level_property_stack -/* 05D8F4 8005CCF4 24070001 */ li $a3, 1 -/* 05D8F8 8005CCF8 10000031 */ b .L8005CDC0 -/* 05D8FC 8005CCFC 8FB90034 */ lw $t9, 0x34($sp) -.L8005CD00: -/* 05D900 8005CD00 00002825 */ move $a1, $zero -/* 05D904 8005CD04 00003025 */ move $a2, $zero -/* 05D908 8005CD08 0C01B06B */ jal push_level_property_stack -/* 05D90C 8005CD0C 00003825 */ move $a3, $zero -/* 05D910 8005CD10 02002025 */ move $a0, $s0 -/* 05D914 8005CD14 00002825 */ move $a1, $zero -/* 05D918 8005CD18 2406FFFF */ li $a2, -1 -/* 05D91C 8005CD1C 0C01B06B */ jal push_level_property_stack -/* 05D920 8005CD20 24070002 */ li $a3, 2 -/* 05D924 8005CD24 10000026 */ b .L8005CDC0 -/* 05D928 8005CD28 8FB90034 */ lw $t9, 0x34($sp) -.L8005CD2C: -/* 05D92C 8005CD2C 150B001A */ bne $t0, $t3, .L8005CD98 -/* 05D930 8005CD30 2404FFF6 */ li $a0, -10 -/* 05D934 8005CD34 24040000 */ li $a0, 0 -/* 05D938 8005CD38 0C027A9E */ jal set_eeprom_settings_value -/* 05D93C 8005CD3C 24050001 */ li $a1, 1 -/* 05D940 8005CD40 2404FFFE */ li $a0, -2 -/* 05D944 8005CD44 00002825 */ move $a1, $zero -/* 05D948 8005CD48 00003025 */ move $a2, $zero -/* 05D94C 8005CD4C 0C01B06B */ jal push_level_property_stack -/* 05D950 8005CD50 00003825 */ move $a3, $zero -/* 05D954 8005CD54 8FA40024 */ lw $a0, 0x24($sp) -/* 05D958 8005CD58 00002825 */ move $a1, $zero -/* 05D95C 8005CD5C 2406FFFF */ li $a2, -1 -/* 05D960 8005CD60 0C01B06B */ jal push_level_property_stack -/* 05D964 8005CD64 00003825 */ move $a3, $zero -/* 05D968 8005CD68 8FA40028 */ lw $a0, 0x28($sp) -/* 05D96C 8005CD6C 00002825 */ move $a1, $zero -/* 05D970 8005CD70 2406FFFF */ li $a2, -1 -/* 05D974 8005CD74 0C01B06B */ jal push_level_property_stack -/* 05D978 8005CD78 00003825 */ move $a3, $zero -/* 05D97C 8005CD7C 02002025 */ move $a0, $s0 -/* 05D980 8005CD80 00002825 */ move $a1, $zero -/* 05D984 8005CD84 2406FFFF */ li $a2, -1 -/* 05D988 8005CD88 0C01B06B */ jal push_level_property_stack -/* 05D98C 8005CD8C 24070001 */ li $a3, 1 -/* 05D990 8005CD90 1000000B */ b .L8005CDC0 -/* 05D994 8005CD94 8FB90034 */ lw $t9, 0x34($sp) -.L8005CD98: -/* 05D998 8005CD98 00002825 */ move $a1, $zero -/* 05D99C 8005CD9C 00003025 */ move $a2, $zero -/* 05D9A0 8005CDA0 0C01B06B */ jal push_level_property_stack -/* 05D9A4 8005CDA4 00003825 */ move $a3, $zero -/* 05D9A8 8005CDA8 02002025 */ move $a0, $s0 -/* 05D9AC 8005CDAC 00002825 */ move $a1, $zero -/* 05D9B0 8005CDB0 2406FFFF */ li $a2, -1 -/* 05D9B4 8005CDB4 0C01B06B */ jal push_level_property_stack -/* 05D9B8 8005CDB8 24070002 */ li $a3, 2 -/* 05D9BC 8005CDBC 8FB90034 */ lw $t9, 0x34($sp) -.L8005CDC0: -/* 05D9C0 8005CDC0 24010001 */ li $at, 1 -/* 05D9C4 8005CDC4 17210005 */ bne $t9, $at, .L8005CDDC -/* 05D9C8 8005CDC8 00000000 */ nop -/* 05D9CC 8005CDCC 0C01BC50 */ jal func_8006F140 -/* 05D9D0 8005CDD0 24040004 */ li $a0, 4 -/* 05D9D4 8005CDD4 10000004 */ b .L8005CDE8 -/* 05D9D8 8005CDD8 83A20043 */ lb $v0, 0x43($sp) -.L8005CDDC: -/* 05D9DC 8005CDDC 0C01BC50 */ jal func_8006F140 -/* 05D9E0 8005CDE0 24040003 */ li $a0, 3 -/* 05D9E4 8005CDE4 83A20043 */ lb $v0, 0x43($sp) -.L8005CDE8: -/* 05D9E8 8005CDE8 8FAE004C */ lw $t6, 0x4c($sp) -/* 05D9EC 8005CDEC 24580001 */ addiu $t8, $v0, 1 -/* 05D9F0 8005CDF0 10000091 */ b .L8005D038 -/* 05D9F4 8005CDF4 A1D80000 */ sb $t8, ($t6) -.L8005CDF8: -/* 05D9F8 8005CDF8 914F0049 */ lbu $t7, 0x49($t2) -/* 05D9FC 8005CDFC 8D4D0004 */ lw $t5, 4($t2) -/* 05DA00 8005CE00 000FC880 */ sll $t9, $t7, 2 -/* 05DA04 8005CE04 01B91021 */ addu $v0, $t5, $t9 -/* 05DA08 8005CE08 8C430000 */ lw $v1, ($v0) -/* 05DA0C 8005CE0C 8FB80034 */ lw $t8, 0x34($sp) -/* 05DA10 8005CE10 306C0002 */ andi $t4, $v1, 2 -/* 05DA14 8005CE14 11800019 */ beqz $t4, .L8005CE7C -/* 05DA18 8005CE18 24010001 */ li $at, 1 -/* 05DA1C 8005CE1C 8FB80034 */ lw $t8, 0x34($sp) -/* 05DA20 8005CE20 24010001 */ li $at, 1 -/* 05DA24 8005CE24 17010007 */ bne $t8, $at, .L8005CE44 -/* 05DA28 8005CE28 00000000 */ nop -/* 05DA2C 8005CE2C 0C01BC50 */ jal func_8006F140 -/* 05DA30 8005CE30 24040004 */ li $a0, 4 -/* 05DA34 8005CE34 0C00384A */ jal instShowBearBar -/* 05DA38 8005CE38 00000000 */ nop -/* 05DA3C 8005CE3C 1000000A */ b .L8005CE68 -/* 05DA40 8005CE40 83AE0043 */ lb $t6, 0x43($sp) -.L8005CE44: -/* 05DA44 8005CE44 0C01BC50 */ jal func_8006F140 -/* 05DA48 8005CE48 24040003 */ li $a0, 3 -/* 05DA4C 8005CE4C 0C027B20 */ jal is_in_two_player_adventure -/* 05DA50 8005CE50 00000000 */ nop -/* 05DA54 8005CE54 10400004 */ beqz $v0, .L8005CE68 -/* 05DA58 8005CE58 83AE0043 */ lb $t6, 0x43($sp) -/* 05DA5C 8005CE5C 0C01BCE6 */ jal swap_lead_player -/* 05DA60 8005CE60 00000000 */ nop -/* 05DA64 8005CE64 83AE0043 */ lb $t6, 0x43($sp) -.L8005CE68: -/* 05DA68 8005CE68 8FAC004C */ lw $t4, 0x4c($sp) -/* 05DA6C 8005CE6C 25D90001 */ addiu $t9, $t6, 1 -/* 05DA70 8005CE70 A3B90043 */ sb $t9, 0x43($sp) -/* 05DA74 8005CE74 10000070 */ b .L8005D038 -/* 05DA78 8005CE78 A1990000 */ sb $t9, ($t4) -.L8005CE7C: -/* 05DA7C 8005CE7C 17010058 */ bne $t8, $at, .L8005CFE0 -/* 05DA80 8005CE80 2404FFF6 */ li $a0, -10 -/* 05DA84 8005CE84 346E0002 */ ori $t6, $v1, 2 -/* 05DA88 8005CE88 AC4E0000 */ sw $t6, ($v0) -/* 05DA8C 8005CE8C 9548000C */ lhu $t0, 0xc($t2) -/* 05DA90 8005CE90 0009C980 */ sll $t9, $t1, 6 -/* 05DA94 8005CE94 01097824 */ and $t7, $t0, $t1 -/* 05DA98 8005CE98 15E0000F */ bnez $t7, .L8005CED8 -/* 05DA9C 8005CE9C 01196024 */ and $t4, $t0, $t9 -/* 05DAA0 8005CEA0 01096825 */ or $t5, $t0, $t1 -/* 05DAA4 8005CEA4 A54D000C */ sh $t5, 0xc($t2) -/* 05DAA8 8005CEA8 2404FFFF */ li $a0, -1 -/* 05DAAC 8005CEAC 00002825 */ move $a1, $zero -/* 05DAB0 8005CEB0 00003025 */ move $a2, $zero -/* 05DAB4 8005CEB4 0C01B06B */ jal push_level_property_stack -/* 05DAB8 8005CEB8 00003825 */ move $a3, $zero -/* 05DABC 8005CEBC 02002025 */ move $a0, $s0 -/* 05DAC0 8005CEC0 24050004 */ li $a1, 4 -/* 05DAC4 8005CEC4 2406FFFF */ li $a2, -1 -/* 05DAC8 8005CEC8 0C01B06B */ jal push_level_property_stack -/* 05DACC 8005CECC 24070004 */ li $a3, 4 -/* 05DAD0 8005CED0 1000003D */ b .L8005CFC8 -/* 05DAD4 8005CED4 00000000 */ nop -.L8005CED8: -/* 05DAD8 8005CED8 15800032 */ bnez $t4, .L8005CFA4 -/* 05DADC 8005CEDC 2404FFFF */ li $a0, -1 -/* 05DAE0 8005CEE0 91430048 */ lbu $v1, 0x48($t2) -/* 05DAE4 8005CEE4 0119C025 */ or $t8, $t0, $t9 -/* 05DAE8 8005CEE8 A558000C */ sh $t8, 0xc($t2) -/* 05DAEC 8005CEEC 1860000C */ blez $v1, .L8005CF20 -/* 05DAF0 8005CEF0 00004825 */ move $t1, $zero -/* 05DAF4 8005CEF4 28610005 */ slti $at, $v1, 5 -/* 05DAF8 8005CEF8 10200009 */ beqz $at, .L8005CF20 -/* 05DAFC 8005CEFC 00000000 */ nop -/* 05DB00 8005CF00 91490017 */ lbu $t1, 0x17($t2) -/* 05DB04 8005CF04 00000000 */ nop -/* 05DB08 8005CF08 25290001 */ addiu $t1, $t1, 1 -/* 05DB0C 8005CF0C 29210005 */ slti $at, $t1, 5 -/* 05DB10 8005CF10 14200002 */ bnez $at, .L8005CF1C -/* 05DB14 8005CF14 00000000 */ nop -/* 05DB18 8005CF18 24090004 */ li $t1, 4 -.L8005CF1C: -/* 05DB1C 8005CF1C A1490017 */ sb $t1, 0x17($t2) -.L8005CF20: -/* 05DB20 8005CF20 11200015 */ beqz $t1, .L8005CF78 -/* 05DB24 8005CF24 2404FFFF */ li $a0, -1 -/* 05DB28 8005CF28 2404FFFF */ li $a0, -1 -/* 05DB2C 8005CF2C 00002825 */ move $a1, $zero -/* 05DB30 8005CF30 00003025 */ move $a2, $zero -/* 05DB34 8005CF34 00003825 */ move $a3, $zero -/* 05DB38 8005CF38 0C01B06B */ jal push_level_property_stack -/* 05DB3C 8005CF3C AFAA0044 */ sw $t2, 0x44($sp) -/* 05DB40 8005CF40 8FAA0044 */ lw $t2, 0x44($sp) -/* 05DB44 8005CF44 2404002B */ li $a0, 43 -/* 05DB48 8005CF48 91470017 */ lbu $a3, 0x17($t2) -/* 05DB4C 8005CF4C 00002825 */ move $a1, $zero -/* 05DB50 8005CF50 2406FFFF */ li $a2, -1 -/* 05DB54 8005CF54 0C01B06B */ jal push_level_property_stack -/* 05DB58 8005CF58 24E7FFFF */ addiu $a3, $a3, -1 -/* 05DB5C 8005CF5C 02002025 */ move $a0, $s0 -/* 05DB60 8005CF60 24050006 */ li $a1, 6 -/* 05DB64 8005CF64 2406FFFF */ li $a2, -1 -/* 05DB68 8005CF68 0C01B06B */ jal push_level_property_stack -/* 05DB6C 8005CF6C 24070006 */ li $a3, 6 -/* 05DB70 8005CF70 10000015 */ b .L8005CFC8 -/* 05DB74 8005CF74 00000000 */ nop -.L8005CF78: -/* 05DB78 8005CF78 00002825 */ move $a1, $zero -/* 05DB7C 8005CF7C 00003025 */ move $a2, $zero -/* 05DB80 8005CF80 0C01B06B */ jal push_level_property_stack -/* 05DB84 8005CF84 00003825 */ move $a3, $zero -/* 05DB88 8005CF88 02002025 */ move $a0, $s0 -/* 05DB8C 8005CF8C 24050004 */ li $a1, 4 -/* 05DB90 8005CF90 2406FFFF */ li $a2, -1 -/* 05DB94 8005CF94 0C01B06B */ jal push_level_property_stack -/* 05DB98 8005CF98 24070004 */ li $a3, 4 -/* 05DB9C 8005CF9C 1000000A */ b .L8005CFC8 -/* 05DBA0 8005CFA0 00000000 */ nop -.L8005CFA4: -/* 05DBA4 8005CFA4 00002825 */ move $a1, $zero -/* 05DBA8 8005CFA8 00003025 */ move $a2, $zero -/* 05DBAC 8005CFAC 0C01B06B */ jal push_level_property_stack -/* 05DBB0 8005CFB0 00003825 */ move $a3, $zero -/* 05DBB4 8005CFB4 02002025 */ move $a0, $s0 -/* 05DBB8 8005CFB8 24050004 */ li $a1, 4 -/* 05DBBC 8005CFBC 2406FFFF */ li $a2, -1 -/* 05DBC0 8005CFC0 0C01B06B */ jal push_level_property_stack -/* 05DBC4 8005CFC4 24070004 */ li $a3, 4 -.L8005CFC8: -/* 05DBC8 8005CFC8 0C01BC50 */ jal func_8006F140 -/* 05DBCC 8005CFCC 24040004 */ li $a0, 4 -/* 05DBD0 8005CFD0 0C00384A */ jal instShowBearBar -/* 05DBD4 8005CFD4 00000000 */ nop -/* 05DBD8 8005CFD8 1000000D */ b .L8005D010 -/* 05DBDC 8005CFDC 83AE0043 */ lb $t6, 0x43($sp) -.L8005CFE0: -/* 05DBE0 8005CFE0 00002825 */ move $a1, $zero -/* 05DBE4 8005CFE4 00003025 */ move $a2, $zero -/* 05DBE8 8005CFE8 0C01B06B */ jal push_level_property_stack -/* 05DBEC 8005CFEC 00003825 */ move $a3, $zero -/* 05DBF0 8005CFF0 02002025 */ move $a0, $s0 -/* 05DBF4 8005CFF4 24050005 */ li $a1, 5 -/* 05DBF8 8005CFF8 2406FFFF */ li $a2, -1 -/* 05DBFC 8005CFFC 0C01B06B */ jal push_level_property_stack -/* 05DC00 8005D000 24070005 */ li $a3, 5 -/* 05DC04 8005D004 0C01BC50 */ jal func_8006F140 -/* 05DC08 8005D008 24040003 */ li $a0, 3 -/* 05DC0C 8005D00C 83AE0043 */ lb $t6, 0x43($sp) -.L8005D010: -/* 05DC10 8005D010 00000000 */ nop -/* 05DC14 8005D014 25CF0001 */ addiu $t7, $t6, 1 -/* 05DC18 8005D018 0C027068 */ jal get_save_file_index -/* 05DC1C 8005D01C A3AF0043 */ sb $t7, 0x43($sp) -/* 05DC20 8005D020 0C01BB12 */ jal safe_mark_write_save_file -/* 05DC24 8005D024 00402025 */ move $a0, $v0 -.L8005D028: -/* 05DC28 8005D028 83AD0043 */ lb $t5, 0x43($sp) -/* 05DC2C 8005D02C 8FB9004C */ lw $t9, 0x4c($sp) -/* 05DC30 8005D030 00000000 */ nop -/* 05DC34 8005D034 A32D0000 */ sb $t5, ($t9) -.L8005D038: -/* 05DC38 8005D038 8FBF001C */ lw $ra, 0x1c($sp) -/* 05DC3C 8005D03C 8FB00018 */ lw $s0, 0x18($sp) -/* 05DC40 8005D040 03E00008 */ jr $ra -/* 05DC44 8005D044 27BD0048 */ addiu $sp, $sp, 0x48 - diff --git a/include/structs.h b/include/structs.h index 869106ca..91836f1c 100644 --- a/include/structs.h +++ b/include/structs.h @@ -1266,9 +1266,7 @@ typedef struct Object_Racer { /* 0x11C */ f32 unk11C; /* 0x120 */ f32 unk120; /* 0x124 */ f32 unk124; - /* 0x128 */ s32 lap_times[3]; - /* 0x134 */ s32 unk134; - /* 0x138 */ s32 unk138; + /* 0x128 */ s32 lap_times[5]; //func_80022948 implies there should be at least 5 lap times. /* 0x13C */ s32 unk13C; /* 0x140 */ struct Object *magnetTargetObj; /* 0x144 */ struct Object *held_obj; diff --git a/src/camera.h b/src/camera.h index c8e49f51..1577152c 100644 --- a/src/camera.h +++ b/src/camera.h @@ -94,7 +94,7 @@ void camera_reset(s32 xPos, s32 yPos, s32 zPos, s32 arg3, s32 arg4, s32 arg5); void write_to_object_render_stack(s32 arg0, f32 xPos, f32 yPos, f32 zPos, s16 arg4, s16 arg5, s16 arg6); void disable_cutscene_camera(void); s8 check_if_showing_cutscene_camera(void); -s32 set_active_viewports_and_max(s32 arg0); +s32 set_active_viewports_and_max(s32 num); void set_active_camera(s32 arg0); void camEnableUserView(s32 viewPortIndex, s32 arg1); void camDisableUserView(s32 viewPortIndex, s32 arg1); diff --git a/src/fade_transition.c b/src/fade_transition.c index 2685203c..5f3de28c 100644 --- a/src/fade_transition.c +++ b/src/fade_transition.c @@ -11,6 +11,7 @@ #include "PR/libultra.h" #include "video.h" #include "textures_sprites.h" +#include "math_util.h" /************ .data ************/ @@ -198,12 +199,12 @@ s32 gLastFadeGreenStep; s32 gLastFadeBlueStep; f32 sTransitionOpacity; f32 gTransitionOpacityVel; -s32 D_8012A758; -s32 D_8012A75C; -s32 D_8012A760; -s32 D_8012A764; -s32 D_8012A768; -s32 D_8012A76C; +f32 D_8012A758; +f32 D_8012A75C; +f32 D_8012A760; +f32 D_8012A764; +f32 D_8012A768; +f32 D_8012A76C; f32 *gTransitionNextVtx; f32 *gTransitionVtxStep; f32 *gTransitionVertexTarget; @@ -484,8 +485,8 @@ void init_transition_shape(FadeTransition *transition, s32 numVerts, s32 numTris sTransitionVtx[0] = allocate_from_main_pool_safe(((sizeVerts + sizeTris) * 2) + (i * 3), COLOUR_TAG_YELLOW); sTransitionVtx[1] = sTransitionVtx[0] + j; - sTransitionTris[0] = (Triangle*) (sTransitionVtx[1] + j); - sTransitionTris[1] = (Triangle*) (((u8 *) sTransitionTris[0]) + sizeTris); + sTransitionTris[0] = (Triangle *) (sTransitionVtx[1] + j); + sTransitionTris[1] = (Triangle *) (((u8 *) sTransitionTris[0]) + sizeTris); gTransitionNextVtx = (f32 *) (((u8 *) sTransitionTris[1]) + sizeTris); gTransitionVtxStep = (f32 *) (((u8 *) gTransitionNextVtx) + i); gTransitionVertexTarget = (f32 *) (((u8 *) gTransitionVtxStep) + i); @@ -534,7 +535,7 @@ void init_transition_shape(FadeTransition *transition, s32 numVerts, s32 numTris } } - sTransitionStatus = 1; + sTransitionStatus = TRANSITION_ACTIVE; gTransitionVertexCount = numVerts; } @@ -600,8 +601,153 @@ void render_fade_barndoor_vertical(Gfx **dList, UNUSED MatrixS **mats, UNUSED Ve reset_render_settings(dList); } +#ifdef NON_EQUIVALENT +void func_800C15D4(FadeTransition *transition) { + s32 i; + s32 j; + s32 sizeVerts; + s32 sizeTris; + s32 numVerts = 72; + s32 numTris = 64; + + sizeVerts = numVerts * sizeof(Vertex); + sizeTris = numTris * sizeof(Triangle); + + sTransitionVtx[0] = (Vertex *) allocate_from_main_pool_safe(((sizeVerts + sizeTris) * 2), COLOUR_TAG_YELLOW); + sTransitionVtx[1] = (Vertex *) ((uintptr_t) sTransitionVtx[0] + sizeVerts); + sTransitionTris[0] = (Triangle *) ((uintptr_t) sTransitionVtx[1] + sizeVerts); + sTransitionTris[1] = (Triangle *) ((uintptr_t) sTransitionTris[0] + sizeTris); + + // This first one should be correct? + for(i = 0; i < 2; i++) { + for(j = 0; j < 72; j++) { + sTransitionVtx[i][j].r = gCurFadeRed; + sTransitionVtx[i][j].g = gCurFadeGreen; + sTransitionVtx[i][j].b = gCurFadeBlue; + sTransitionVtx[i][j].a = 255; + } + } + + // ??? + for(i = 0; i < 2; i++) { + for(j = 0; j < 9; j++) { + sTransitionVtx[i][j+19].a = 0; + sTransitionVtx[i][j+55].a = 0; + } + } + + for(i = 0; i < 2; i++) { + s16 xSins = sins_f(i * 0x1000) * 240.0f; + s16 yCoss = coss_f(i * 0x1000) * 180.0f; + for(j = 0; j < 9; j++) { + sTransitionVtx[i][j].x = xSins; + sTransitionVtx[i][j].y = yCoss; + sTransitionVtx[i][j].z = -16; + sTransitionVtx[i][j + 1].z = -16; + sTransitionVtx[i][j + 17].z = -16; + sTransitionVtx[i][j + 18].z = -16; + sTransitionVtx[i][j + 34].x = -xSins; + sTransitionVtx[i][j + 36].x = yCoss; + sTransitionVtx[i][j + 36].y = -16; + sTransitionVtx[i][j + 54].z = -16; + sTransitionVtx[i][j + 55].z = -16; + } + } + + if (transition->type & FADE_FLAG_OUT) { + D_8012A758 = 0.0f; + D_8012A75C = 0.0f; + D_8012A760 = (240.0f / sTransitionFadeTimer); + D_8012A764 = (180.0f / sTransitionFadeTimer); + D_8012A768 = 240.0f; + D_8012A76C = 180.0f; + } else { + D_8012A758 = 240.0f; + D_8012A75C = 180.0f; + D_8012A760 = (-240.0f / sTransitionFadeTimer); + D_8012A764 = (-180.0f / sTransitionFadeTimer); + D_8012A768 = 0.0f; + D_8012A76C = 0.0f; + } + + for (i = 0; i < 2; i++) { + for (j = 0; j < 64; j++) { + sTransitionTris[i][j].flags = 0x40; + sTransitionTris[i][j].uv0.u = 0; + sTransitionTris[i][j].uv0.v = 0; + sTransitionTris[i][j].uv1.u = 0; + sTransitionTris[i][j].uv1.v = 0; + sTransitionTris[i][j].uv2.u = 0; + sTransitionTris[i][j].uv2.v = 0; + } + } + for (i = 0; i < 8; i++) { + for (j = 0; j < 8; j++) { + sTransitionTris[i][j * sizeof(Triangle)].vi0 = (i) + 1; + sTransitionTris[i][j * sizeof(Triangle)].vi1 = (i) + 2; + sTransitionTris[i][j * sizeof(Triangle)].vi2 = (i) + 3; + sTransitionTris[i][j * sizeof(Triangle) + 1].vi0 = (i) + 1; + sTransitionTris[i][j * sizeof(Triangle) + 1].vi1 = (i) + 2; + sTransitionTris[i][j * sizeof(Triangle) + 1].vi2 = (i) + 3; + } + } + + sTransitionStatus = TRANSITION_ACTIVE; +} +#else GLOBAL_ASM("asm/non_matchings/fade_transition/func_800C15D4.s") -GLOBAL_ASM("asm/non_matchings/fade_transition/func_800C1EE8.s") +#endif + +void func_800C1EE8(s32 updateRate) { + f32 temp_f20; + f32 temp_f2; + f32 temp_f16; + s16 temp_f6; + s32 i; + f32 arg0F; + f32 new_var; + s32 j; + + arg0F = updateRate; + if (sTransitionFadeTimer > 0) { + if (updateRate < sTransitionFadeTimer) { + D_8012A758 += (arg0F * D_8012A760); + D_8012A75C += (arg0F * D_8012A764); + sTransitionFadeTimer -= updateRate; + } else { + D_8012A758 = D_8012A768; + D_8012A75C = D_8012A76C; + sTransitionFadeTimer = 0; + } + + for (j = 0, i = 0; i < 9; i++, j += 0x1000) { + new_var = 1.2f; + temp_f20 = sins_f(j) * D_8012A758; + temp_f2 = coss_f(j) * D_8012A75C; + temp_f6 = (temp_f20 * new_var); + temp_f16 = (temp_f2 * new_var); + sTransitionVtx[sTransitionTaskNum][(i << 1) + 1].x = temp_f6; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 1].y = temp_f16; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 37].x = -temp_f6; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 37].y = temp_f16; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 18].x = temp_f6; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 18].y = temp_f16; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 54].x = -temp_f6; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 54].y = temp_f16; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 19].x = temp_f20; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 19].y = temp_f2; + temp_f6 = temp_f20; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 55].x = -temp_f6; + sTransitionVtx[sTransitionTaskNum][(i << 1) + 55].y = temp_f2; + } + } else if (gTransitionEndTimer != 0xFFFF) { + if (updateRate < gTransitionEndTimer) { + gTransitionEndTimer -= updateRate; + } else { + gTransitionEndTimer = 0; + } + } +} #define NUM_OF_VERTS 18 #define NUM_OF_TRIS 16 @@ -685,16 +831,16 @@ void render_fade_barndoor_diagonal(Gfx **dList, UNUSED MatrixS **mats, UNUSED Ve * Set the transition colour target, then set the velocity for the colour to fade to. */ void init_transition_blank(UNUSED FadeTransition *transition) { - gLastFadeRed <<= 0x10; - gLastFadeGreen <<= 0x10; - gLastFadeBlue <<= 0x10; + gLastFadeRed <<= 16; + gLastFadeGreen <<= 16; + gLastFadeBlue <<= 16; gCurFadeAlpha = 255; sTransitionOpacity = 255.0f; gTransitionOpacityVel = 0.0f; - gLastFadeRedStep = ((gCurFadeRed << 0x10) - gLastFadeRed) / sTransitionFadeTimer; - gLastFadeGreenStep = ((gCurFadeGreen << 0x10) - gLastFadeGreen) / sTransitionFadeTimer; - gLastFadeBlueStep = ((gCurFadeBlue << 0x10) - gLastFadeBlue) / sTransitionFadeTimer; - sTransitionStatus = 1; + gLastFadeRedStep = ((gCurFadeRed << 16) - gLastFadeRed) / sTransitionFadeTimer; + gLastFadeGreenStep = ((gCurFadeGreen << 16) - gLastFadeGreen) / sTransitionFadeTimer; + gLastFadeBlueStep = ((gCurFadeBlue << 16) - gLastFadeBlue) / sTransitionFadeTimer; + sTransitionStatus = TRANSITION_ACTIVE; } /** @@ -709,9 +855,9 @@ void process_transition_disabled(s32 updateRate) { gLastFadeGreen += gLastFadeGreenStep * updateRate; gLastFadeBlue += gLastFadeBlueStep * updateRate; if (updateRate >= sTransitionFadeTimer) { - gLastFadeRed = gCurFadeRed << 0x10; - gLastFadeGreen = gCurFadeGreen << 0x10; - gLastFadeBlue = gCurFadeBlue << 0x10; + gLastFadeRed = gCurFadeRed << 16; + gLastFadeGreen = gCurFadeGreen << 16; + gLastFadeBlue = gCurFadeBlue << 16; updateRate -= sTransitionFadeTimer; sTransitionFadeTimer = 0; } else { diff --git a/src/fade_transition.h b/src/fade_transition.h index 077da414..ff52c354 100644 --- a/src/fade_transition.h +++ b/src/fade_transition.h @@ -66,9 +66,9 @@ s32 transition_begin(FadeTransition *transition); void render_fade_circle(Gfx **dList, MatrixS **mats, Vertex **verts); void process_transition_shape(s32 updateRate); void init_transition_shape(FadeTransition *transition, s32 numVerts, s32 numTris, s16 *arg3, u8 *arg4, u8 *arg5, u8 *arg6, u8 *arg7, u8 *arg8); +void func_800C1EE8(s32 updateRate); +void render_fade_waves(Gfx **dlist, UNUSED MatrixS **mats, UNUSED Vertex **verts); -void render_fade_waves(Gfx **dlist, UNUSED MatrixS **mats, UNUSED Vertex **verts); //Non Matching -void func_800C1EE8(s32); //Non Matching void func_800C15D4(FadeTransition *transition); //Non Matching #endif diff --git a/src/game_ui.c b/src/game_ui.c index 57353f22..00fb8f6f 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -477,7 +477,7 @@ void render_hud(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *arg3, s gDPPipeSync(gHUDCurrDisplayList++); init_rsp(&gHUDCurrDisplayList); init_rdp_and_framebuffer(&gHUDCurrDisplayList); - tex_enable_modes(0xFFFFFFFF); + tex_enable_modes(RENDER_ALL); tex_disable_modes(RENDER_Z_COMPARE); sprite_opaque(FALSE); if (check_if_showing_cutscene_camera() == FALSE && D_80126D34 == FALSE && racer->playerIndex == PLAYER_ONE) { @@ -551,7 +551,7 @@ void render_hud(Gfx **dList, MatrixS **mtx, Vertex **vertexList, Object *arg3, s if (racer->raceFinished == TRUE) { func_80068508(TRUE); if (is_in_time_trial()) { - render_time_trial_finish((Object_Racer *) racer, updateRate); + render_time_trial_finish(racer, updateRate); } else if (get_viewport_count() == VIEWPORTS_COUNT_1_PLAYER && racer->unk1AC == 1) { if (is_in_two_player_adventure()) { if (get_current_level_race_type() == RACETYPE_BOSS) { @@ -571,12 +571,12 @@ block_95: sprite_opaque(TRUE); if (D_80127180) { gHudSprites[D_80127180].texture = NULL; - render_textured_rectangle(&gHUDCurrDisplayList, (DrawTexture *) &gHudSprites, 0, 0, 255, 255, 255, 255); + render_textured_rectangle(&gHUDCurrDisplayList, gHudSprites, 0, 0, 255, 255, 255, 255); } *dList = gHUDCurrDisplayList; *mtx = gHUDCurrMatrix; *vertexList = gHUDCurrVertex; - tex_enable_modes(0xFFFFFFFF); + tex_enable_modes(RENDER_ALL); } } } @@ -977,9 +977,89 @@ void render_hud_battle(s32 arg0, Object *obj, s32 updateRate) { } } -GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1E48.s") +#ifdef NON_EQUIVALENT +void func_800A1E48(Object *racerObj, s32 updateRate) { + f32 temp; + s32 i; + Object_Racer *racer; + s32 numRacers; + Object **racers; + s32 prevCurrHudUnk64C; + s32 prevCurrHudUnk650; + f32 temp2; + Object_Racer *curRacer; + s32 offset; + s32 temp3; + s32 temp4; + + racers = get_racer_objects(&numRacers); + if (racerObj != NULL) { + racer = &racerObj->unk64->racer; + } else { + racer = &racers[PLAYER_ONE]->unk64->racer; + } -void func_800A22F4(Object_Racer *racer, UNUSED void *unused) { + func_80068508(TRUE); + if (numRacers == 4) { + offset = 0; + prevCurrHudUnk64C = gCurrentHud->unk64C; + prevCurrHudUnk650 = gCurrentHud->unk650; + for (i = 0; i < 4; i++) { + curRacer = &racers[i]->unk64->racer; + temp = prevCurrHudUnk64C ^ 0; + temp3 = temp - gCurrentHud->unk64C; + temp = temp3; + temp2 = offset + prevCurrHudUnk650; + temp4 = temp2 - gCurrentHud->unk650; + temp2 = temp4; + gCurrentHud->unk64C += temp; + gCurrentHud->unk650 += temp2; + gCurrentHud->unk68C += temp; + gCurrentHud->unk690 -= temp2; + gCurrentHud->unk6AC += temp; + gCurrentHud->unk6B0 += temp2; + gCurrentHud->unk6CC += temp; + gCurrentHud->unk6D0 += temp2; + gCurrentHud->unk6EC += temp; + gCurrentHud->unk6F0 += temp2; + if (gNumActivePlayers < 3 || racer->playerIndex == curRacer->playerIndex) { + func_800A22F4(curRacer, updateRate); + } + if (gNumActivePlayers == 1) { + prevCurrHudUnk64C += 68; + } else if (gNumActivePlayers == 2) { + if (osTvType == TV_TYPE_PAL) { + offset += 66.0; + } else { + offset += 55; + } + } + } + + temp = prevCurrHudUnk64C; + temp3 = temp - gCurrentHud->unk64C; + temp = temp3; + temp2 = prevCurrHudUnk650; + temp4 = temp2 - gCurrentHud->unk650; + temp2 = temp4; + gCurrentHud->unk64C += temp; + gCurrentHud->unk650 += temp2; + gCurrentHud->unk68C += temp; + gCurrentHud->unk690 -= temp2; + gCurrentHud->unk6AC += temp; + gCurrentHud->unk6B0 += temp2; + gCurrentHud->unk6CC += temp; + gCurrentHud->unk6D0 += temp2; + gCurrentHud->unk6EC += temp; + gCurrentHud->unk6F0 += temp2; + } + func_80068508(FALSE); +} +#else +GLOBAL_ASM("asm/non_matchings/game_ui/func_800A1E48.s") +#endif + +void func_800A22F4(Object_Racer *racer, UNUSED s32 updateRate) { gCurrentHud->unk646 = racer->characterId + 56; if (gNumActivePlayers < 3 || (gNumActivePlayers == 3 && racer->playerIndex == PLAYER_COMPUTER)) { D_80126CD5 = TRUE; @@ -2051,7 +2131,7 @@ void func_800A5F18(Object_Racer *racer) { func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk5E0); func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrVertex, &gCurrentHud->unk600); - if (!(get_current_level_race_type() & 0x40) && (is_in_two_player_adventure() == 0)) { + if (!(get_current_level_race_type() & RACETYPE_CHALLENGE_BATTLE) && (is_in_two_player_adventure() == 0)) { get_racer_objects(&sp24); if (gNumActivePlayers >= 2 && (is_in_two_player_adventure() == FALSE || is_postrace_viewport_active() == FALSE)) { set_text_font(FONT_COLOURFUL); @@ -2068,7 +2148,259 @@ void func_800A5F18(Object_Racer *racer) { } } +#ifdef NON_EQUIVALENT +void func_800A6254(Object_Racer *racer, s32 updateRate) { + s32 *var_a0; + s32 var_t0; + s32 var_a2; + s32 var_v1; + s32 raceType; + f32 var_f0; + f32 var_f12; + f32 var_f14; + f32 var_f2; + s32 totalRaceTime; + s32 fastestLapTime; + s32 minutes; + s32 seconds; + s32 hundredths; + LevelHeader *curLevelHeader; + s32 temp_v0_4; + + raceType = get_current_level_race_type(); + if (is_in_two_player_adventure() && is_postrace_viewport_active() && D_80127189 == 0) { + if (func_8000E184()) { + gCurrentHud->unk5F0 -= 108.0f; + gCurrentHud->unk610 -= 108.0f; + gCurrentHud->unk170 -= 108.0f; + gCurrentHud->unk2F0 -= 108.0f; + } + gCurrentHud->unk5F0 += 35.0f; + gCurrentHud->unk610 += 35.0f; + gCurrentHud->unk170 += 35.0f; + gCurrentHud->unk2F0 += 35.0f; + D_800E2770[0].playerIndex = racer->playerIndex; + D_80127189 = 1; + } + + switch (gCurrentHud->unk5FA) { + case 0: + if (!(raceType & RACETYPE_CHALLENGE_BATTLE)) { + D_800E2770[0].volume = 127; + D_800E2770[0].unk3 = 0; + D_800E2770[0].playerIndex = racer->playerIndex; + sound_play(SOUND_WHOOSH1, NULL); + } + switch (gHUDNumPlayers) { + case 0: + case 1: + gCurrentHud->unk5FD = -20; + gCurrentHud->unk17D = -15; + gCurrentHud->unk2FD = -15; + break; + default: + if (racer->playerIndex == PLAYER_ONE || racer->playerIndex == PLAYER_THREE) { + gCurrentHud->unk5FD = -90; + gCurrentHud->unk17D = -85; + gCurrentHud->unk2FD = -85; + } else { + gCurrentHud->unk5FD = 55; + gCurrentHud->unk17D = 60; + gCurrentHud->unk2FD = 60; + } + break; + } + if (osTvType == TV_TYPE_PAL) { + gCurrentHud->unk5FD -= 4; + gCurrentHud->unk17D -= 4; + gCurrentHud->unk2FD -= 4; + } + if (racer->unk1AC < 4) { + gCurrentHud->unk618 = racer->unk1AC - 1; + } else { + gCurrentHud->unk618 = 3; + } + gCurrentHud->unk5F8 = racer->unk1AC - 1; + gCurrentHud->unk5FA = 1; + switch (gNumActivePlayers) { + case 2: + var_f12 = 360.0f; + var_f14 = -40.0f; + if (racer->playerIndex == PLAYER_ONE) { + var_f0 = 75.0f; + var_f2 = 90.0f; + } else { + var_f0 = 183.0f; + var_f2 = 198.0f; + } + if (osTvType == TV_TYPE_PAL) { + var_f0 *= 1.1; + var_f2 *= 1.1; + var_f12 -= 4.0f; + var_f14 -= 4.0f; + var_f0 = (s32) var_f0; + var_f2 = (s32) var_f2; + if (racer->playerIndex == 0) { + var_f0 -= 9.0f; + var_f2 -= 9.0f; + } + } + gCurrentHud->unk16C = var_f12; + gCurrentHud->unk170 = var_f0; + gCurrentHud->unk2EC = var_f14; + gCurrentHud->unk2F0 = var_f2; + break; + case 3: + case 4: + if (racer->playerIndex < 2) { + var_f0 = 75.0f; + var_f2 = 90.0f; + } else { + var_f0 = 183.0f; + var_f2 = 198.0f; + } + if (racer->playerIndex == PLAYER_ONE || racer->playerIndex == PLAYER_THREE) { + var_f12 = 70.0f; + var_f14 = -230.0f; + } else { + var_f12 = 230.0f; + var_f14 = -70.0f; + } + if (osTvType == TV_TYPE_PAL) { + var_f0 *= 1.1; + var_f2 *= 1.1; + var_f12 -= 4.0f; + var_f14 -= 4.0f; + var_f0 = (s32) var_f0; + var_f2 = (s32) var_f2; + if (racer->playerIndex < 2) { + var_f0 -= 9.0f; + var_f2 -= 9.0f; + } + } + gCurrentHud->unk16C = var_f12; + gCurrentHud->unk170 = var_f0; + gCurrentHud->unk2EC = var_f14; + gCurrentHud->unk2F0 = var_f2; + break; + } + if (gNumActivePlayers != 1) { + curLevelHeader = get_current_level_header(); + totalRaceTime = 0; + fastestLapTime = racer->lap_times[0]; + for (var_v1 = 0; var_v1 < (var_a2 = curLevelHeader->laps); var_v1++) { + totalRaceTime += racer->lap_times[var_v1]; + if (racer->lap_times[var_v1] < fastestLapTime) { + fastestLapTime = racer->lap_times[var_v1]; + } + } + get_timestamp_from_frames(fastestLapTime, &minutes, &seconds, &hundredths); + gCurrentHud->unk2FA = minutes; + gCurrentHud->unk2FB = seconds; + gCurrentHud->unk2FC = hundredths; + get_timestamp_from_frames(totalRaceTime, &minutes, &seconds, &hundredths); + gCurrentHud->unk17A = minutes; + gCurrentHud->unk17B = seconds; + gCurrentHud->unk17C = hundredths; + } + break; + case 1: + var_a2 = TRUE; + if (gCurrentHud->unk5EC < (gCurrentHud->unk5FD - (updateRate * 13)) + 160) { + var_v1 = (updateRate * 13); + var_a2 = FALSE; + } else { + var_v1 = (gCurrentHud->unk5FD + 160) - gCurrentHud->unk5EC; + } + gCurrentHud->unk5EC += var_v1; + gCurrentHud->unk60C += var_v1; + if (gNumActivePlayers != 1) { + if ((gCurrentHud->unk17D + (updateRate * 13) + 160) < gCurrentHud->unk16C) { + var_a2 = FALSE; + } else { + var_v1 = gCurrentHud->unk16C - (gCurrentHud->unk17D + 160); + } + gCurrentHud->unk16C -= var_v1; + if (gCurrentHud->unk2EC < (gCurrentHud->unk2FD - var_v1) + 160) { + var_a2 = FALSE; + } else { + var_v1 = (gCurrentHud->unk2FD + 160) - gCurrentHud->unk2EC; + } + gCurrentHud->unk2EC += var_v1; + } + temp_v0_4 = 2; //fakematch? + if (var_a2) { + gCurrentHud->unk5FA = temp_v0_4; //fakematch? Why not just set directly to 2? + gCurrentHud->unk5FB = -120; + gCurrentHud->unk5FC = 0; + if (gHUDVoiceSoundMask == NULL) { + if (raceType == RACETYPE_CHALLENGE_BATTLE) { + switch (racer->unk1AC) { + case 1: + case 2: + sound_play(SOUND_UNK_146, &gHUDVoiceSoundMask); + break; + case 3: + sound_play(SOUND_VOICE_TT_TOO_BAD, &gHUDVoiceSoundMask); + break; + default: + sound_play(SOUND_VOICE_TT_UNLUCKY, &gHUDVoiceSoundMask); + break; + } + } else if (get_time_trial_ghost() == NULL) { + play_time_trial_end_message(&racer->playerIndex); + } + } + } + func_800A5F18(racer); + break; + case 2: + gCurrentHud->unk5FB += updateRate; + + if (gCurrentHud->unk5FB >= 120) { + gCurrentHud->unk5FB = -120; + gCurrentHud->unk5FC++; + } + if (gCurrentHud->unk5FC == 2) { + if (gNumActivePlayers == 1 || is_in_two_player_adventure()) { + gCurrentHud->unk5FA = 3; + sound_play(SOUND_WHOOSH1, NULL); + } else { + gCurrentHud->unk5FA = 4; + } + } + func_800A5F18(racer); + break; + case 3: + if (raceType == RACETYPE_CHALLENGE_BATTLE) { + gCurrentHud->unk5FA = 4; + } else { + gCurrentHud->unk5EC -= (updateRate * 13); + gCurrentHud->unk60C -= (updateRate * 13); + if (gCurrentHud->unk5EC < -200.0f) { + gCurrentHud->unk5FA = 4; + } + gCurrentHud->unk16C += (updateRate * 13); + gCurrentHud->unk2EC += (updateRate * 13); + } + func_800A5F18(racer); + break; + case 4: + if (racer->playerIndex == D_800E2770[0].playerIndex) { + D_800E2770[0].unk3 = -1; + } + gCurrentHud->unk5FA = 5; + gCurrentHud->unk5FB = 0; + func_800A5F18(racer); + break; + default: + func_800A5F18(racer); + break; + } +} +#else GLOBAL_ASM("asm/non_matchings/game_ui/func_800A6254.s") +#endif /** * Play the normal race finish message, unless you beat your time record, diff --git a/src/game_ui.h b/src/game_ui.h index 774237ca..471d5df8 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -164,7 +164,8 @@ typedef struct unk80126CDC { s8 unk17A; s8 unk17B; s8 unk17C; - u8 pad17D[3]; + s8 unk17D; + u8 pad17E[2]; struct unk80126CDC *unk180; u8 unk184[0x8]; f32 unk18C; @@ -230,7 +231,8 @@ typedef struct unk80126CDC { s8 unk2FA; s8 unk2FB; s8 unk2FC; - u8 pad2FD[3]; + s8 unk2FD; + u8 pad2FE[2]; s16 unk300; u8 unk302[0xC]; u8 pad30E[0x2]; @@ -349,9 +351,23 @@ typedef struct unk80126CDC { s8 unk5DC; u8 unk5DD[0x3]; struct unk80126CDC *unk5E0; - u8 unk5E4[0x1C]; + u8 unk5E4[8]; + f32 unk5EC; + f32 unk5F0; + u8 unk5F4[4]; + s16 unk5F8; + u8 unk5FA; + s8 unk5FB; + s8 unk5FC; + s8 unk5FD; + u8 unk5FE[2]; struct unk80126CDC *unk600; - u8 unk604[0x1C]; + u8 unk604[8]; + f32 unk60C; + f32 unk610; + u8 unk614[4]; + s16 unk618; + u8 unk61A[6]; struct unk80126CDC *unk620; u8 unk624[0x14]; s16 unk638; @@ -373,17 +389,27 @@ typedef struct unk80126CDC { s8 unk67A; s8 unk67B[0x5]; struct unk80126CDC *unk680; - s8 unk684[0x1C]; + u8 pad684[8]; + f32 unk68C; + f32 unk690; + u8 pad694[0xC]; struct unk80126CDC *unk6A0; - s8 unk6A4[0x1C]; + u8 pad6A4[8]; + f32 unk6AC; + f32 unk6B0; + u8 pad6B4[0xC]; struct unk80126CDC *unk6C0; s8 unk6C4[0x8]; f32 unk6CC; - u8 unk6D0[0x8]; + f32 unk6D0; + u8 unk6D4[4]; s16 unk6D8; s8 unk6DA[0x6]; struct unk80126CDC *unk6E0; - s8 unk6E4[0x14]; + s8 unk6E4[8]; + f32 unk6EC; + f32 unk6F0; + u8 unk6F4[4]; s16 unk6F8; s8 unk6FA[0x6]; struct unk80126CDC *unk700; @@ -469,7 +495,7 @@ 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 render_hud_battle(s32 arg0, Object *obj, s32 updateRate); -void func_800A22F4(Object_Racer *racer, void *unused); +void func_800A22F4(Object_Racer *racer, s32 updateRate); void free_hud(void); void set_stopwatch_face(u8, u8, u8, u8, u8); void func_800A0BD4(s32 updateRate); @@ -489,7 +515,7 @@ void render_timer(s32 arg0, s32 arg1, s32 minutes, s32 seconds, s32 hundredths, void func_800AA600(Gfx **dList, MatrixS **mtx, Vertex **vtxList, unk80126CDC **arg3); void func_800A277C(s32, Object*, s32); void func_800A6254(Object_Racer *racer, s32 updateRate); -void func_800A1E48(Object*, s32); +void func_800A1E48(Object*, s32 updateRate); void func_8009F034(void); #endif diff --git a/src/object_functions.c b/src/object_functions.c index feac1b49..1b697967 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -696,7 +696,7 @@ void obj_loop_trophycab(Object *obj, s32 updateRate) { } if (obj->properties.trophyCabinet.action == 1) { func_800AB1AC(3); - set_hud_visibility(0U); + set_hud_visibility(0); dialogueID = npc_dialogue_loop(DIALOGUE_TROPHY); if (dialogueID) { obj->properties.trophyCabinet.action = 0; diff --git a/src/objects.c b/src/objects.c index dc999f7e..9fcb5a8c 100644 --- a/src/objects.c +++ b/src/objects.c @@ -39,8 +39,8 @@ /************ .data ************/ -unknown800DC6F0 D_800DC6F0 = { { -128 }, 0x1E, 0x0F }; -unknown800DC6F0 D_800DC6F8 = { { 3 }, 0x1E, 0x0F }; +FadeTransition D_800DC6F0 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_OUT, FADE_COLOR_BLACK, 30, 15); +FadeTransition D_800DC6F8 = FADE_TRANSITION(FADE_CIRCLE, FADE_FLAG_NONE, FADE_COLOR_BLACK, 30, 15); s32 D_800DC700 = 0; s32 D_800DC704 = 0; // Currently unknown, might be a different type. @@ -68,7 +68,7 @@ s32 D_800DC760 = 9; // Currently unknown, might be a different type. Object *gMagnetEffectObject = NULL; s32 D_800DC768 = 0; // Currently unknown, might be a different type. -f32 D_800DC76C[15] = { +UNUSED f32 D_800DC76C[15] = { 1.0f, 0.70711f, 0.70711f, 1.0f, 0.0f, 0.70711f, -0.70711f, 0.0f, -1.0f, -0.70711f, -0.70711f, -1.0f, @@ -121,11 +121,8 @@ u32 gMagnetColours[3] = { COLOUR_RGBA32(16, 64, 255, 0), // Level 2 COLOUR_RGBA32(16, 255, 64, 0), // Level 3 }; -s32 D_800DC858 = 0; // Currently unknown, might be a different type. -s32 D_800DC85C = 0x0028FFFF; // Currently unknown, might be a different type. - -u8 D_800DC860 = 0x80; -u16 D_800DC864 = 0x0028; +FadeTransition D_800DC858 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_NONE, FADE_COLOR_BLACK, 40, 0xFFFF); +FadeTransition D_800DC860 = FADE_TRANSITION(FADE_FULLSCREEN, FADE_FLAG_OUT, FADE_COLOR_BLACK, 40, 0); /*******************************/ @@ -174,7 +171,7 @@ s16 gTransformPosZ; s16 gTransformAngleY; s16 D_8011AD4E; s8 D_8011AD50; -s8 D_8011AD51; +s8 gNumRacersSaved; s8 D_8011AD52; s8 D_8011AD53; s32 D_8011AD54; @@ -284,7 +281,7 @@ u8 D_8011B010[16]; Object *D_8011B020[10]; s32 D_8011B048[4]; s32 D_8011B058[4]; -s32 D_8011B068[4]; +u8 D_8011B068[16]; u8 D_8011B078[3]; u8 D_8011B07B[1]; s32 D_8011B080[7]; @@ -341,7 +338,108 @@ void func_8000B290(void) { GLOBAL_ASM("asm/non_matchings/objects/func_8000B38C.s") GLOBAL_ASM("asm/non_matchings/objects/func_8000B750.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8000BADC.s") + +void func_8000BADC(s32 updateRate) { + s32 i; + Asset20 *asset20Part; + s32 temp; + Asset20 *asset20; + f32 updateRateF; + Object_Racer *racer; + + D_8011B008 = 1 - D_8011B008; + D_8011AFFC = 0; + D_8011B004 = 0; + asset20 = (Asset20 *) get_misc_asset(ASSET_MISC_20); + D_800DC760 = 9; + for (i = 0; i < 10; i++) { + if (D_8011B068[i] && D_8011B020[i] != NULL) { + D_8011B020[i]->properties.common.unk0 = 0; + } + D_8011B068[i] = 1; + } + for (i = 0; i < gNumRacers; i++) { + updateRateF = (f32) updateRate; + if (osTvType == TV_TYPE_PAL) { + updateRateF *= 1.2f; + } + racer = &(*gRacers)[i]->unk64->racer; + asset20Part = &asset20[racer->unk2]; + if (racer->shieldTimer != 0) { + D_8011B010[racer->unk2] += updateRate; + } + asset20Part->unk72 += updateRate; + if (racer->boostTimer != 0) { + asset20Part->unk73 = 20; + if (asset20Part->unk70 == 0) { + asset20Part->unk74 += updateRateF * 0.25f; + updateRateF = 0.0f; + if (asset20Part->unk74 > 2.4f) { + asset20Part->unk74 = (f32) (4.8f - asset20Part->unk74); + asset20Part->unk70 = 1; + } + } + if (asset20Part->unk70 == 1) { + asset20Part->unk74 -= updateRateF * 0.25f; + updateRateF = 0.0f; + if (asset20Part->unk74 < 1.0f) { + asset20Part->unk70 = 2; + asset20Part->unk74 = 1.0f - asset20Part->unk74; + } + } + if (asset20Part->unk70 == 2) { + if (asset20Part->unk74 < 1.0f) { + asset20Part->unk74 += updateRateF * 0.125f; + if (asset20Part->unk74 > 1.0f) { + asset20Part->unk74 = 1.0f; + } + } + } + } else { + if (asset20Part->unk73 > 0) { + asset20Part->unk73 -= updateRate; + } else { + if (asset20Part->unk70 == 2) { + asset20Part->unk74 -= updateRateF * 0.05f; + updateRateF = 0.0f; + if (asset20Part->unk74 < 0.0f) { + asset20Part->unk70 = 0U; + asset20Part->unk74 += 1.0f; + } + } + if (asset20Part->unk70 < 2) { + asset20Part->unk74 -= (updateRateF * 0.1f); + if (asset20Part->unk74 < 0.0f) { + asset20Part->unk74 = 0.0f; + } + asset20Part->unk70 = 0U; + } + } + } + if ((asset20Part->unk70 > 0) || (asset20Part->unk74 > 0.0f)) { + func_8000B750((*gRacers)[i], racer->unk2, racer->vehicleIDPrev, racer->boostType, 0); + } + temp = racer->unk2 << 2; + D_8011B078[temp + 1] += updateRate; + D_8011B078[temp + 2] += updateRate; + if (racer->magnetTimer != 0) { + if (D_8011B078[temp + 3] + (updateRate << 2) < 32) { + D_8011B078[temp + 3] += (updateRate << 2); + } else { + D_8011B078[temp + 3] = 32; + } + } else { + if (D_8011B078[temp + 3] - updateRate > 0) { + D_8011B078[temp + 3] -= updateRate; + } else { + D_8011B078[temp + 3] = 0; + } + } + } + if (gMagnetEffectObject != NULL) { + func_80011134(gMagnetEffectObject, updateRate); + } +} Object *func_8000BF44(s32 arg0) { if (arg0 == -1) { @@ -2121,14 +2219,14 @@ void func_80010994(s32 updateRate) { func_8000BADC(updateRate); for (i = gObjectListStart; i < tempVal; i++) { obj = gObjPtrList[i]; - if ((!(obj->segment.trans.flags & 0x8000) && (obj->behaviorId == BHV_WEAPON)) || (obj->behaviorId == BHV_FOG_CHANGER)) { + if ((!(obj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) && (obj->behaviorId == BHV_WEAPON)) || (obj->behaviorId == BHV_FOG_CHANGER)) { run_object_loop_func(obj, updateRate); } } if (gParticleCount > 0) { for (i = gObjectListStart; i < tempVal; i++) { obj = gObjPtrList[i]; - if (obj->segment.trans.flags & 0x8000) { + if (obj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) { //Why is this object being treated as a Particle? handle_particle_movement((Particle *) obj, updateRate); } @@ -2139,7 +2237,7 @@ void func_80010994(s32 updateRate) { if (get_light_count() > 0) { for (i = gObjectListStart; i < gObjectCount; i++) { obj = gObjPtrList[i]; - if (!(obj->segment.trans.flags & 0x8000) && (obj->shading != NULL)) { + if (!(obj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) && (obj->shading != NULL)) { func_80032C7C(obj); } } @@ -2179,7 +2277,7 @@ void func_80010994(s32 updateRate) { } if (sp54 & A_BUTTON) { - func_8001E45C(100); + func_8001E45C(CUTSCENE_ID_UNK_64); } else if ((sp54 & B_BUTTON) && (get_trophy_race_world_id() == 0) && (is_in_tracks_mode() == 0)) { func_8006F140(1); //FADE_BARNDOOR_HORIZONTAL? } @@ -3391,7 +3489,7 @@ s32 func_80014814(s32 *retObjCount) { maxObjCount = gObjectCount - 1; while (maxObjCount >= curObjCount) { for (i = 0; maxObjCount >= curObjCount && i == 0; i++) { - if (!(gObjPtrList[curObjCount]->segment.trans.flags & 0x8000)) { + if (!(gObjPtrList[curObjCount]->segment.trans.flags & OBJ_FLAGS_DEACTIVATED)) { if (gObjPtrList[curObjCount]->segment.header->flags & 1) { curObjCount++; } @@ -3401,7 +3499,7 @@ s32 func_80014814(s32 *retObjCount) { } } for (i = 0; maxObjCount >= curObjCount && i == 0; i++) { - if (gObjPtrList[maxObjCount]->segment.trans.flags & 0x8000) { + if (gObjPtrList[maxObjCount]->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) { i = -1; } else if (!(gObjPtrList[maxObjCount]->segment.header->flags & 1)) { maxObjCount--; @@ -4019,12 +4117,135 @@ s8 set_course_finish_flags(Settings *settings) { } void func_8001A8D4(s32 arg0) { - D_8011AD4E = 0x12C; + D_8011AD4E = 300; D_8011AD50 = 0; D_8011AD52 = arg0; } -GLOBAL_ASM("asm/non_matchings/objects/func_8001A8F4.s") +void func_8001A8F4(s32 updateRate) { + s32 i; + Object_Racer *racer; + Object *prevPort0Racer; + s32 sp30; + Object *prevRacer0Obj; + Settings *settings; + u32 cutsceneTimerLimit; + + set_pause_lockout_timer(1); + sp30 = D_8011AD4E; + D_8011AD4E -= updateRate; + if (D_8011AD4E <= 0) { + D_8011AD4E = -1; + } + if (sp30 > 50 && D_8011AD4E <= 50) { + transition_begin(&D_800DC858); + } + sp30 = 0; + if (D_8011AD50 == 0 && D_8011AD4E == -1) { + for (i = 0; i < gNumRacers; i++) { + racer = &(*gRacers)[i]->unk64->racer; + racer->magnetTargetObj = NULL; + if (racer->playerIndex != PLAYER_COMPUTER && racer->unk1AC == 1) { + sp30 = i; + } + if (racer->magnetSoundMask != NULL) { + func_8000488C(racer->magnetSoundMask); + } + if (racer->shieldSoundMask != NULL) { + func_800096F8(racer->shieldSoundMask); + } + } + prevPort0Racer = (*gRacers)[0]; + (*gRacers)[0] = (*gRacers)[sp30]; + (*gRacers)[sp30] = prevPort0Racer; + racer_sound_free((*gRacers)[0]); + func_800A0B74(); + reset_rocket_sound_timer(); + sound_stop_all(); + if (is_in_two_player_adventure()) { + set_scene_viewport_num(0); + set_active_viewports_and_max(0); + prevRacer0Obj = (*gRacers)[0]; + prevPort0Racer = gRacersByPort[0]; + racer = &prevRacer0Obj->unk64->racer; + gRacersByPort[0] = prevRacer0Obj; + gRacersByPort[1] = prevPort0Racer; + if (gSwapLeadPlayer != 0) { + gSwapLeadPlayer = 0; + swap_lead_player(); + racer->playerIndex = 0; + } + } + gNumRacersSaved = gNumRacers; + D_8011AD50 = 1; + } + if (D_8011AD50 == 1) { + set_hud_visibility(0); + gNumRacersSaved--; + if (gNumRacersSaved > 0) { + i = 0; + while (i < gNumRacers && gRacersByPosition[i] != (*gRacers)[gNumRacersSaved]) { + i++; + } + if (i < gNumRacers) { + for (; i < (gNumRacers - 1); i++) { + gRacersByPosition[i] = gRacersByPosition[i + 1]; + } + } + free_object((*gRacers)[gNumRacersSaved]); + (*gRacers)[gNumRacersSaved] = NULL; + gNumRacers--; + + } else { + D_8011AD50 = 2; + } + } + if (D_8011AD50 == 2) { + prevPort0Racer = (*gRacers)[0]; + racer = &prevPort0Racer->unk64->racer; + func_800230D0(prevPort0Racer, racer); + racer->raceFinished = FALSE; + D_8011AD50 = 3; + func_8001E45C(CUTSCENE_ID_UNK_A); + gBalloonCutsceneTimer = 0; + func_8001E93C(); + } + if (D_8011AD50 == 3) { + transition_begin(&D_800DC860); + D_8011AD50 = 4; + set_anti_aliasing(TRUE); + } + if (D_8011AD50 == 4) { + set_anti_aliasing(TRUE); + disable_racer_input(); + if (!(get_current_level_race_type() & RACETYPE_CHALLENGE_BATTLE)) { + if (osTvType == TV_TYPE_PAL) { + cutsceneTimerLimit = 415; + } else { + cutsceneTimerLimit = 540; + } + gBalloonCutsceneTimer += updateRate; + if (gBalloonCutsceneTimer < cutsceneTimerLimit) { + func_800AB194(1); + } else { + set_hud_visibility(1); + } + } + i = get_buttons_pressed_from_player(PLAYER_ONE) & A_BUTTON; + settings = get_settings(); + if (!(settings->cutsceneFlags & 0x40000)) { + i = 0; + } + if (func_800214C4() != 0 || (i != 0 && check_fadeout_transition() == 0)) { + if (i != 0) { + transition_begin(&D_800DC6F8); + } + func_8006F140(2); + D_8011AD50 = 5; + settings->cutsceneFlags |= 0x40000; + } + } +} s16 func_8001AE44(void) { return D_8011AD4E; @@ -5587,7 +5808,18 @@ f32 cubic_spline_interpolation(f32 *data, s32 index, f32 x, f32 *derivative) { return ret; } -GLOBAL_ASM("asm/non_matchings/objects/func_8002277C.s") +f32 func_8002277C(f32 *data, s32 index, f32 x) { + f32 derivative; + f32 temp3, temp2, temp; + + temp = (-0.5 * data[index]) + ( 1.5 * data[index + 1]) + (-1.5 * data[index + 2]) + ( 0.5 * data[index + 3]); + temp2 = ( 1.0 * data[index]) + (-2.5 * data[index + 1]) + ( 2.0 * data[index + 2]) + (-0.5 * data[index + 3]); + temp3 = (data[index + 2] * 0.5) + ( 0.0 * data[index + 1]) + (-0.5 * data[index]) + ( 0.0 * data[index + 3]); + + derivative = (((temp * 3 * x) + (2 * temp2)) * x) + temp3; + + return derivative; +} UNUSED f32 lerp(f32 *arg0, u32 arg1, f32 arg2) { f32 result = arg0[arg1 + 1] + ((arg0[arg1 + 2] - arg0[arg1 + 1]) * arg2); @@ -5627,7 +5859,88 @@ void init_racer_for_challenge(s32 vehicleID) { set_pause_lockout_timer(10); } -GLOBAL_ASM("asm/non_matchings/objects/func_80022948.s") +void func_80022948(void) { + CheckpointNode *checkpointNode; + UNUSED s32 pad; + s32 j; + s32 i; + s32 lvlSeg; + LevelHeader *levelHeader; + LevelObjectEntry_Racer newRacerEntry; + Settings *settings; + Object *racerObj; + Object_Racer *racer; + UNUSED s32 pad2[7]; + f32 sp2C; + + D_8011AEF7 -= 1; + if (D_8011AEF7 == 0) { + levelHeader = get_current_level_header(); + D_8011AEF8 = levelHeader->music; + D_8011AEFC = levelHeader->instruments; + levelHeader->music = 0x1D; + levelHeader->instruments = 0xFFFF; + racerObj = get_racer_object(PLAYER_ONE); + racer = &racerObj->unk64->racer; + gIsTajChallenge = racer->vehicleID + 1; + checkpointNode = func_800230D0(racerObj, racer); + racer->cameraYaw = 0x8000 - racer->steerVisualRotation; + racer->unk1FC = 0; + racer->startInput = 0; + racer->courseCheckpoint = 0; + racer->checkpoint = 0; + racer->lap = 0; + racer->countLap = 0; + racer->lap_times[0] = 0; + racer->lap_times[1] = 0; + racer->lap_times[2] = 0; + racer->unk1BA = 0; + settings = get_settings(); + gEventCountdown = 80; + D_8011ADB4 = 0; + D_8011ADC0 = 1; + levelHeader->laps = 3; + levelHeader->race_type = 0; + func_8009F034(); + for (i = 0; i < ARRAY_COUNT(racer->lap_times); i++) racer->lap_times[i] = 0; // Must be a single line. + newRacerEntry.common.x = (checkpointNode->x + (checkpointNode->rotationZFrac * 35.0f)); + newRacerEntry.common.z = (checkpointNode->z - (checkpointNode->rotationXFrac * 35.0f)); + lvlSeg = get_level_segment_index_from_position(newRacerEntry.common.x, checkpointNode->y, newRacerEntry.common.z); + newRacerEntry.common.y = func_8002BAB0(lvlSeg, newRacerEntry.common.x, newRacerEntry.common.z, &sp2C) ? sp2C : checkpointNode->y; + newRacerEntry.common.size = 16; + newRacerEntry.angleY = racer->steerVisualRotation; + newRacerEntry.angleX = 0; + newRacerEntry.angleZ = 0; + newRacerEntry.playerIndex = 4; + newRacerEntry.common.objectID = 0xDA; + func_800619F4(0); + racerObj = spawn_object(&newRacerEntry.common, 1); + (*gRacers)[1] = racerObj; + gRacersByPosition[1] = racerObj; + gRacersByPort[1] = racerObj; + racerObj->segment.level_entry = NULL; + gNumRacers = 2; + racer = &racerObj->unk64->racer; + i = 0; // Fakematch + racer->vehicleID = VEHICLE_CARPET; + racer->vehicleIDPrev = racer->vehicleID; + racer->unk2 = 1; + racer->characterId = settings->racers[0].character; + racer->stretch_height_cap = 1.0f; + racer->stretch_height = 1.0f; + racer->transparency = 0xFF; + racer->vehicleSound = NULL; + racerObj->interactObj->pushForce = 2; + + for (j = gObjectListStart; j < gObjectCount; j++) { + if (!(gObjPtrList[j]->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) && gObjPtrList[j]->behaviorId == BHV_PARK_WARDEN) { + racer->unk154 = gObjPtrList[j]; + } + } + set_pause_lockout_timer(20); + transition_begin(&D_800DC6F0); + } +} void func_80022CFC(s32 arg0, f32 x, f32 y, f32 z) { s32 index; @@ -5714,7 +6027,7 @@ void func_80022E18(s32 arg0) { set_next_taj_challenge_menu(0); func_80008168(); if (arg0 == 2) { - set_current_text(0); + set_current_text(ASSET_GAME_TEXT_0); } gEventCountdown = 0; gEventStartTimer = 0; diff --git a/src/objects.h b/src/objects.h index d2d52436..2d6e1b81 100644 --- a/src/objects.h +++ b/src/objects.h @@ -214,16 +214,6 @@ typedef struct AssetObjectHeaders { s32 unk24; } AssetObjectHeaders; -/* Size: 0x8 bytes */ -typedef struct unknown800DC6F0 { - union { - s8 unk00; - s32 dummy_force_alignment; // Not sure of a better way to do this. - } unk00_a; - u16 unk04; - u16 unk06; -} unknown800DC6F0; - /* Size: 0x3C bytes */ typedef struct CheckpointNode { /* 0x00 */ f32 rotationXFrac; @@ -321,6 +311,18 @@ typedef struct unk800149C0 { s16 unk6; } unk800149C0; +// Size: 0x80 bytes. +typedef struct Asset20 { + f32 unk0; + s32 pad4[27]; + u8 unk70; + u8 unk71; + u8 unk72; + s8 unk73; + f32 unk74; + u8 pad78[0x8]; +} Asset20; + #define CIC_ID 6103 extern s32 osCicId; // Used for an Anti-Piracy check in render_3d_model @@ -404,7 +406,7 @@ void func_8001E344(s32 arg0); void func_8001E36C(s32 arg0, f32 *arg1, f32 *arg2, f32 *arg3); s16 get_cutscene_id(void); void set_cutscene_id(s32 arg0); -void func_8001E45C(s32 arg0); +void func_8001E45C(s32 cutsceneID); s32 get_object_list_index(void); s8 func_8001F3B8(void); void func_8001F3C8(s32 arg0); @@ -482,6 +484,10 @@ void sort_objects_by_dist(s32 startIndex, s32 lastIndex); void func_80016748(Object *obj0, Object *obj1); void func_8001AE64(void); s32 func_80016DE8(f32 x, f32 y, f32 z, f32 radius, s32 is2dCheck, Object **arg5); +void func_80022948(void); +void func_8000BADC(s32 updateRate); +f32 func_8002277C(f32 *data, s32 index, f32 x); +void func_8001A8F4(s32 updateRate); //Non Matching void calc_dynamic_lighting_for_object_1(Object *, ObjectModel *, s16, Object *, f32, f32); @@ -501,17 +507,14 @@ void func_800101AC(Object *, s32); void func_800135B8(Object *); void func_8000CC7C(Vehicle, u32, s32); void func_8000B020(s32, s32); -void func_8000BADC(s32); -void func_80022948(void); void func_80017E98(void); void func_8001BC54(void); void func_8001E93C(void); void func_80019808(s32 updateRate); -void func_8001A8F4(s32 updateRate); void func_80014090(Object*, s32, ObjectHeader*); void func_80008438(Object**, s32, s32); void func_8001E89C(void); -void func_800230D0(Object*, Object_Racer*); +CheckpointNode *func_800230D0(Object*, Object_Racer*); void func_80010994(s32 updateRate); void func_800159C8(Object *, Object *); void func_80011264(ObjectModel *, Object *); diff --git a/src/racer.h b/src/racer.h index 581ebefc..cc33a5d9 100644 --- a/src/racer.h +++ b/src/racer.h @@ -149,14 +149,6 @@ typedef struct AIBehaviourTable { s8 percentages[4][4]; } AIBehaviourTable; -typedef struct Asset20 { - f32 unk0; - u8 pad4[0x6C]; - u8 unk70; - f32 unk74; - u8 pad78[0x8]; -} Asset20; - typedef struct Unknown80046524 { s16 unk0; u8 pad2[0x38]; diff --git a/src/textures_sprites.h b/src/textures_sprites.h index a8c063c2..a7f4b5ab 100644 --- a/src/textures_sprites.h +++ b/src/textures_sprites.h @@ -64,7 +64,8 @@ enum RenderFlags { RENDER_UNK_1000000 = (1 << 24), RENDER_UNK_2000000 = (1 << 25), RENDER_UNK_4000000 = (1 << 26), - RENDER_VTX_ALPHA = (1 << 27) // Allows use of vertex alpha, disabling fog if necessary. + RENDER_VTX_ALPHA = (1 << 27), // Allows use of vertex alpha, disabling fog if necessary. + RENDER_ALL = 0xFFFFFFFF }; typedef enum TransFlags { diff --git a/src/thread3_main.c b/src/thread3_main.c index 7845bfe6..32721553 100644 --- a/src/thread3_main.c +++ b/src/thread3_main.c @@ -1510,7 +1510,7 @@ void begin_level_teleport(s32 levelID) { } /** - * Set the nunber of frames to disallow pausing for. + * Set the number of frames to disallow pausing for. */ void set_pause_lockout_timer(u8 time) { gPauseLockTimer = time; diff --git a/src/tracks.h b/src/tracks.h index ea5c9b8e..d8e47316 100644 --- a/src/tracks.h +++ b/src/tracks.h @@ -143,7 +143,7 @@ enum WaveTypes { WATER_UNK_F = 15 }; -s32 set_scene_viewport_num(s32 arg0); +s32 set_scene_viewport_num(s32 numPorts); void func_800257D0(void); void spawn_skydome(s32 arg0); void set_skydome_visbility(s32 renderSky); @@ -205,7 +205,7 @@ void func_8002EEEC(void); void func_8002F2AC(void); void func_8002F440(void); f32 func_8002FA64(void); -s32 func_8002BAB0(s16, f32, f32, f32*); +s32 func_8002BAB0(s32, f32, f32, f32*); void init_track(u32 geometry, u32 skybox, s32 numberOfPlayers, Vehicle vehicle, u32 entranceId, u32 collectables, u32 arg6); void func_800B82B4(LevelModel *, LevelHeader *, s32); void func_80025510(s32); diff --git a/src/vehicle_misc.h b/src/vehicle_misc.h index 49a35e24..c65d8b9f 100644 --- a/src/vehicle_misc.h +++ b/src/vehicle_misc.h @@ -19,7 +19,6 @@ void set_boss_voice_clip_offset(u16 *soundID); void func_8005CA84(f32 x, f32 y, f32 z, s32 arg3); void play_random_boss_sound(s32 arg0); void fade_when_near_camera(Object *object, Object_Racer *racer, s32 distance); - -void func_8005CB68(Object_Racer *racer, s8 *arg1); // Non Matching +void func_8005CB68(Object_Racer *racer, s8 *arg1); #endif diff --git a/src/vehicle_tricky.c b/src/vehicle_tricky.c index 6b39fe97..bd651862 100644 --- a/src/vehicle_tricky.c +++ b/src/vehicle_tricky.c @@ -250,27 +250,21 @@ void play_random_boss_sound(s32 offset) { } // boss_race_finish -#ifdef NON_EQUIVALENT -// This looks like it's just some stack and regalloc differences, but I can't be certain it's NON_MATCHING yet. -// This function looks like it sets up the animation sequences void func_8005CB68(Object_Racer *racer, s8 *arg1) { - s32 bossId; - s8 arg1_ret; - s8 *miscAsset68; Settings *settings; + s8 arg1_ret; + s8 *asset; + s32 worldBit; s32 racerUnk1AC; - s8 *miscAsset67; + UNUSED s32 pad; s32 miscAsset68Byte5; s32 miscAsset68Byte6; s32 miscAsset68Byte7; - s8 miscAsset67CourseByte; - s32 var_t1; s32 i; arg1_ret = *arg1; settings = get_settings(); - bossId = (1 << settings->worldId); - if (!miscAsset67CourseByte){} + worldBit = (1 << settings->worldId); /* ASSET_MISC_68[] = ASSET_LEVELNAME_DINODOMAINTROPHYANIM, @@ -282,15 +276,13 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { ASSET_LEVELNAME_LASTBIT, ASSET_LEVELNAME_LASTBITB */ - miscAsset68 = (s8 *)get_misc_asset(ASSET_MISC_68); //8 bytes - 2F 31 30 32 2A 38 3F 40 - LevelIds for the world animations? - miscAsset68Byte5 = miscAsset68[5]; //0x38 - 56 - ASSET_LEVELNAME_PARTYSEQUENCE? - miscAsset68Byte6 = miscAsset68[6]; //0x3F - 63 - ASSET_LEVELNAME_LASTBIT? - miscAsset68Byte7 = miscAsset68[7]; //0x40 - 64 - ASSET_LEVELNAME_LASTBITB? - miscAsset67 = (s8 *)get_misc_asset(ASSET_MISC_67); //20 bytes - course id's array with world id index? - for (i = 0; settings->courseId != miscAsset67[i]; i += 2) { - if ((miscAsset67CourseByte && miscAsset67CourseByte) && miscAsset67CourseByte) {} - } - miscAsset67CourseByte = miscAsset67[i + 1]; + asset = (s8 *) get_misc_asset(ASSET_MISC_68); //8 bytes - 2F 31 30 32 2A 38 3F 40 - LevelIds for the world animations? + miscAsset68Byte5 = asset[5]; //0x38 - 56 - ASSET_LEVELNAME_PARTYSEQUENCE? + miscAsset68Byte6 = asset[6]; //0x3F - 63 - ASSET_LEVELNAME_LASTBIT? + miscAsset68Byte7 = asset[7]; //0x40 - 64 - ASSET_LEVELNAME_LASTBITB? + asset = (s8 *) get_misc_asset(ASSET_MISC_67); //20 bytes - course id's array with world id index? + for (i = 0; settings->courseId != asset[i]; i += 2) {} + i = asset[i + 1]; racerUnk1AC = racer->unk1AC; if (arg1_ret == 1) { if (racerUnk1AC == 1) { @@ -298,29 +290,29 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { } else { music_play(SEQUENCE_BATTLE_LOSE); } - if ((settings->worldId == WORLD_CENTRAL_AREA) || (settings->worldId == WORLD_FUTURE_FUN_LAND)) { + if (settings->worldId == WORLD_CENTRAL_AREA || settings->worldId == WORLD_FUTURE_FUN_LAND) { if (racerUnk1AC == 1) { - settings->bosses |= bossId; + settings->bosses |= worldBit; settings->courseFlagsPtr[settings->courseId] |= 2; } if (settings->worldId == WORLD_CENTRAL_AREA) { if (racerUnk1AC == 1) { push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG2, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset68Byte5, 0, -1, 0); - push_level_property_stack(miscAsset67CourseByte, 0, -1, 1); + push_level_property_stack(i, 0, -1, 1); } else { push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); - push_level_property_stack(miscAsset67CourseByte, 0, -1, 2); + push_level_property_stack(i, 0, -1, 2); } } else if (racerUnk1AC == 1) { set_eeprom_settings_value(1); //Set Adventure Two Unlocked push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG2, 0, VEHICLE_CAR, 0); push_level_property_stack(miscAsset68Byte7, 0, -1, 0); push_level_property_stack(miscAsset68Byte6, 0, -1, 0); - push_level_property_stack(miscAsset67CourseByte, 0, -1, 1); + push_level_property_stack(i, 0, -1, 1); } else { push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); - push_level_property_stack(miscAsset67CourseByte, 0, -1, 2); + push_level_property_stack(i, 0, -1, 2); } if (racerUnk1AC == 1) { func_8006F140(4); @@ -347,38 +339,41 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { } if (racerUnk1AC == 1) { settings->courseFlagsPtr[settings->courseId] |= 2; - if (!(settings->bosses & bossId)) { - settings->bosses |= bossId; - push_level_property_stack((s32)SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); - push_level_property_stack(miscAsset67CourseByte, 4, -1, 4); - } else if (!(settings->bosses & (bossId << 6))) { - settings->bosses |= (bossId << 6) & 0xFFFF; - var_t1 = 0; - if ((settings->worldId > 0) && (settings->worldId < 5)) { - if (settings->worldId){ } - var_t1 = settings->wizpigAmulet + 1; - if (var_t1 >= 5) { - var_t1 = 4; + if (!(settings->bosses & worldBit)) { + settings->bosses |= worldBit; + push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); + push_level_property_stack(i, 4, -1, 4); + } else { + worldBit <<= 6; + if (!(settings->bosses & worldBit)) { + settings->bosses |= worldBit; + worldBit = 0; + if (settings->worldId > 0 && settings->worldId < 5) { + worldBit = settings->wizpigAmulet; + worldBit++; + if (worldBit >= 5) { + worldBit = 4; + } + settings->wizpigAmulet = worldBit; + } + if (worldBit != 0) { + push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); + push_level_property_stack(ASSET_LEVELNAME_WIZPIGAMULETSEQUENCE, 0, -1, settings->wizpigAmulet - 1); + push_level_property_stack(i, 6, -1, 6); + } else { + push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); + push_level_property_stack(i, 4, -1, 4); } - settings->wizpigAmulet = var_t1; - } - if (var_t1 != 0) { - push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); - push_level_property_stack(ASSET_LEVELNAME_WIZPIGAMULETSEQUENCE, 0, -1, settings->wizpigAmulet - 1); - push_level_property_stack(miscAsset67CourseByte, 6, -1, 6); } else { push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); - push_level_property_stack(miscAsset67CourseByte, 4, -1, 4); + push_level_property_stack(i, 4, -1, 4); } - } else { - push_level_property_stack(SPECIAL_MAP_ID_NO_LEVEL, 0, VEHICLE_CAR, 0); - push_level_property_stack(miscAsset67CourseByte, 4, -1, 4); } func_8006F140(4); instShowBearBar(); } else { push_level_property_stack(SPECIAL_MAP_ID_UNK_NEG10, 0, VEHICLE_CAR, 0); - push_level_property_stack(miscAsset67CourseByte, 5, -1, 5); + push_level_property_stack(i, 5, -1, 5); func_8006F140(3); } arg1_ret++; @@ -386,9 +381,6 @@ void func_8005CB68(Object_Racer *racer, s8 *arg1) { } *arg1 = arg1_ret; } -#else -GLOBAL_ASM("asm/non_matchings/vehicle_tricky/func_8005CB68.s") -#endif /** * When close to the camera, fade the object so it doesn't block the screen. diff --git a/src/waves.c b/src/waves.c index d2cac611..ec1a2a08 100644 --- a/src/waves.c +++ b/src/waves.c @@ -13,7 +13,7 @@ /************ .data ************/ -s32 *D_800E3040 = NULL; +f32 *D_800E3040 = NULL; s32 *D_800E3044 = NULL; s32 *D_800E3048 = NULL; s32 *D_800E304C = NULL; @@ -23,7 +23,7 @@ s32 D_800E3050[8] = { 0, 0, 0, 0, 0, 0, 0, 0, }; -Vertex **D_800E3070[2] = { NULL, NULL }; +Vertex *D_800E3070[2] = { NULL, NULL }; s32 *D_800E3078[2] = { NULL, NULL }; // This could also be D_800E3080[2] + D_800E3088[2] @@ -260,283 +260,7 @@ void func_800B8134(LevelHeader *arg0) { D_80129FC8->unk4C = arg0->unk70_u8; } -#ifdef NON_EQUIVALENT -void func_800B82B4(LevelModel *arg0, LevelHeader *arg1, s32 arg2) { - s32 sp54; - s32 sp4C; - Vertex **var_a3; - Vertex **var_v0; - Vertex *temp_a1_2; - Vertex *temp_a2; - Vertex *temp_t2; - Vertex *temp_v0_4; - Vertex *temp_v0_5; - f32 *temp_v0; - f32 *temp_v0_2; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f20; - s32 **var_v1; - s32 *temp_t6; - s32 temp_lo; - s32 temp_v0_3; - s32 temp_v1; - s32 var_a0; - s32 var_a0_2; - s32 var_a2; - s32 var_fp; - s32 var_s0; - s32 var_s0_2; - s32 var_s0_3; - s32 var_s3; - s32 var_s5; - s32 var_s5_2; - s32 var_s6; - s32 var_s6_2; - s32 var_s7; - s32 var_v0_2; - s8 temp_a1; - s8 var_s0_4; - unk8012A028 **var_a0_3; - f32 phi_f0; - s32 i; - - D_8012A078 = arg2; - func_800B8134(arg1); - func_800B7EB4(); - func_800BBDDC(arg0, arg1); - D_8012A0A0 = (f32) gWaveBoundingBoxDiffX; - temp_f0 = (f32) D_80129FC8->unk0; - D_8012A0A4 = (f32) gWaveBoundingBoxDiffZ; - var_s7 = 0; - D_8012A0B8 = D_8012A0A0 / temp_f0; - D_8012A0BC = D_8012A0A4 / temp_f0; - D_8012A084 = 0; - D_8012A088 = 0; - D_8012A08C = (s32) ((gWaveTexture->width * D_80129FC8->unk30) << 5) / (s32) D_80129FC8->unk0; - D_8012A090 = (s32) ((gWaveTexture->height * D_80129FC8->unk34) << 5) / (s32) D_80129FC8->unk0; - D_8012A094 = (gWaveTexture->width << 5) - 1; - D_8012A098 = (gWaveTexture->height << 5) - 1; - D_8012A09C = 0; - var_s6 = D_80129FC8->unk10; - var_fp = D_80129FC8->unk1C; - sp54 = (s32) (D_80129FC8->unk8 << 0x10) / (s32) D_80129FC8->unk20; - D_8012A01C = 10000.0f; - *D_8012A020 = -10000.0f; - sp4C = (s32) (D_80129FC8->unk14 << 0x10) / (s32) D_80129FC8->unk20; - if (D_80129FC8->unk20 > 0) { - var_s0 = 0; - do { - temp_f20 = sins_f((s16) var_s6); - var_s7 += 1; - *(D_800E3040 + var_s0) = (sins_f((s16) var_fp) * D_80129FC8->unk18) + (temp_f20 * D_80129FC8->unkC); - if (D_80129FC8->unk28 != 0) { - temp_v0 = D_800E3040 + var_s0; - *temp_v0 *= 2.0f; - } - temp_v0_2 = D_800E3040 + var_s0; - temp_f0_2 = *temp_v0_2; - var_s0 += 4; - phi_f0 = temp_f0_2; - if (temp_f0_2 < D_8012A01C) { - D_8012A01C = temp_f0_2; - phi_f0 = *temp_v0_2; - } - if (*D_8012A020 < phi_f0) { - *D_8012A020 = phi_f0; - } - var_s6 += sp54; - var_fp += sp4C; - } while (var_s7 < D_80129FC8->unk20); - var_s7 = 0; - } - save_rng_seed(); - set_rng_seed(0x57415646); - temp_v1 = D_80129FC8->unk4; - var_s5 = 0; - if (temp_v1 > 0) { - do { - var_s0_2 = 0; - if (temp_v1 > 0) { - var_s6_2 = var_s5 * 4; - do { - *(D_800E3044 + var_s6_2) = get_random_number_from_range(0, D_80129FC8->unk20 - 1); - var_s0_2 += 1; - //(D_800E3044 + var_s6_2)->unk2 = get_random_number_from_range(0, D_80129FC8->unk20 - 1); - var_s6_2 += 4; - var_s5 += 1; - } while (var_s0_2 < D_80129FC8->unk4); - } - var_s7 += 1; - } while (var_s7 < temp_v1); - var_s7 = 0; - var_s5 = 0; - } - load_rng_seed(); - var_a2 = 0; - if (arg2 != 2) { - var_s3 = 2; - } else { - var_s3 = 4; - } - do { - var_a2 += 1; - if (D_80129FC8->unk0 >= 0) { - do { - var_s0_3 = 0; - if (D_80129FC8->unk0 >= 0) { - do { - var_a0 = 0; - if (var_s3 > 0) { - var_v0 = D_800E3070; - do { - var_a0 += 1; - (*var_v0)[var_s5].x = (s16) (s32) ((f64) ((f32) var_s0_3 * D_8012A0B8) + 0.5); - (*var_v0)[var_s5].z = (s16) (s32) ((f64) ((f32) var_s7 * D_8012A0BC) + 0.5); - if (D_80129FC8->unk4C == 0) { - (*var_v0)[var_s5].r = 0xFF; - (*var_v0)[var_s5].g = 0xFF; - (*var_v0)[var_s5].b = 0xFF; - } else { - (*var_v0)[var_s5].r = 0; - (*var_v0)[var_s5].g = 0; - (*var_v0)[var_s5].b = 0; - } - temp_t2 = *var_v0; - var_v0 += 4; - temp_t2[var_s5].a = 0xFF; - } while (var_a0 != var_s3); - } - var_s0_3 += 1; - var_s5 += 1; - } while (D_80129FC8->unk0 >= var_s0_3); - } - var_s7 += 1; - } while (D_80129FC8->unk0 >= var_s7); - var_s7 = 0; - } - } while (var_a2 < 0x19); - var_s5_2 = 0; - // if (D_80129FC8->unk0 > 0) { - // do { - // var_s0_4 = 0; - // if (D_80129FC8->unk0 > 0) { - // do { - // var_a0_2 = 0; - // if (var_s3 > 0) { - // var_v1 = D_800E3080; - // temp_a1 = var_s0_4 + 1; - // var_v0_2 = var_s5_2 * 0x10; - // do { - // var_a0_2 += 1; - // *(*var_v1 + var_v0_2) = 0x40; - // temp_t6 = *var_v1; - // var_v1 += 4; - // (temp_t6 + var_v0_2)->unk1 = var_s0_4; - // (var_v1->unk-4 + var_v0_2)->unk2 = (s8) (var_s0_4 + D_80129FC8->unk0 + 1); - // (var_v1->unk-4 + var_v0_2)->unk3 = temp_a1; - // temp_v0_3 = var_v0_2 + 0x10; - // *(var_v1->unk-4 + temp_v0_3) = 0x40; - // (var_v1->unk-4 + temp_v0_3)->unk1 = temp_a1; - // (var_v1->unk-4 + temp_v0_3)->unk2 = (s8) (var_s0_4 + D_80129FC8->unk0 + 1); - // (var_v1->unk-4 + temp_v0_3)->unk3 = (s8) (var_s0_4 + D_80129FC8->unk0 + 2); - // var_v0_2 = temp_v0_3 - 0x10; - // } while (var_a0_2 != var_s3); - // } - // var_s0_4 += 1; - // var_s5_2 += 2; - // } while (var_s0_4 < D_80129FC8->unk0); - // } - // var_s7 += 1; - // } while (var_s7 < D_80129FC8->unk0); - // } - func_800BC6C8(); - temp_lo = (D_80129FC8->unk0 + 1) * D_80129FC8->unk0; - var_a3 = D_800E3070; - var_a0_3 = D_8012A028; - for (i = 0; i < 2; i++) { - D_8012A028[i]->vertexA.y = 0; - D_8012A028[i]->vertexA.x = D_800E3070[i][0]->x; - D_8012A028[i]->vertexA.z = D_800E3070[i][0]->z; - D_8012A028[i]->vertexA.r = D_800E3070[i][0]->r; - D_8012A028[i]->vertexA.g = D_800E3070[i][0]->g; - D_8012A028[i]->vertexA.b = D_800E3070[i][0]->b; - D_8012A028[i]->vertexA.a = D_800E3070[i][0]->a; - D_8012A028[i]->vertexB.y = 0; - D_8012A028[i]->vertexB.x = D_800E3070[i][1]->x; - D_8012A028[i]->vertexB.z = D_800E3070[i][1]->z; - D_8012A028[i]->vertexB.r = D_800E3070[i][1]->r; - D_8012A028[i]->vertexB.g = D_800E3070[i][1]->g; - D_8012A028[i]->vertexB.b = D_800E3070[i][1]->b; - D_8012A028[i]->vertexB.a = D_800E3070[i][1]->a; - D_8012A028[i]->vertexC.y = 0; - D_8012A028[i]->vertexC.x = D_800E3070[i][2]->x; - D_8012A028[i]->vertexC.z = D_800E3070[i][2]->z; - D_8012A028[i]->vertexC.r = D_800E3070[i][2]->r; - D_8012A028[i]->vertexC.g = D_800E3070[i][2]->g; - D_8012A028[i]->vertexC.b = D_800E3070[i][2]->b; - D_8012A028[i]->vertexC.a = D_800E3070[i][2]->a; - D_8012A028[i]->vertexD.y = 0; - D_8012A028[i]->vertexD.x = D_800E3070[i][3]->x; - D_8012A028[i]->vertexD.z = D_800E3070[i][3]->z; - D_8012A028[i]->vertexD.r = D_800E3070[i][3]->r; - D_8012A028[i]->vertexD.g = D_800E3070[i][3]->g; - D_8012A028[i]->vertexD.b = D_800E3070[i][3]->b; - D_8012A028[i]->vertexD.a = D_800E3070[i][3]->a; - } - // do { - // temp_a1_2 = *var_a3; - // var_a3 += 4; - // var_a0_3->unk2 = 0; - // var_a0_3->unk0 = (s16) temp_a1_2->x; - // temp_v0_4 = &temp_a1_2[D_80129FC8->unk0]; - // var_a0_3->unk4 = (s16) temp_a1_2->z; - // temp_a2 = &temp_a1_2[temp_lo]; - // var_a0_3->unk6 = (u8) temp_a1_2->r; - // var_a0_3 += 0x28; - // var_a0_3->unk-21 = (u8) temp_a1_2->g; - // var_a0_3->unk-20 = (u8) temp_a1_2->b; - // var_a0_3->unk-1F = (u8) temp_a1_2->a; - // var_a0_3->unk-1C = 0; - // var_a0_3->unk-1E = (s16) temp_v0_4->x; - // var_a0_3->unk-1A = (s16) temp_v0_4->z; - // var_a0_3->unk-18 = (u8) temp_v0_4->r; - // var_a0_3->unk-17 = (u8) temp_v0_4->g; - // var_a0_3->unk-16 = (u8) temp_v0_4->b; - // var_a0_3->unk-15 = (u8) temp_v0_4->a; - // var_a0_3->unk-12 = 0; - // var_a0_3->unk-14 = (s16) temp_a2->x; - // var_a0_3->unk-10 = (s16) temp_a2->z; - // var_a0_3->unk-E = (u8) temp_a2->r; - // var_a0_3->unk-D = (u8) temp_a2->g; - // temp_v0_5 = &(&temp_a1_2[temp_lo])[D_80129FC8->unk0]; - // var_a0_3->unk-C = (u8) temp_a2->b; - // var_a0_3->unk-B = (u8) temp_a2->a; - // var_a0_3->unk-8 = 0; - // var_a0_3->unk-A = (s16) temp_v0_5->x; - // var_a0_3->unk-6 = (s16) temp_v0_5->z; - // var_a0_3->unk-4 = (u8) temp_v0_5->r; - // var_a0_3->unk-3 = (u8) temp_v0_5->g; - // var_a0_3->unk-2 = (u8) temp_v0_5->b; - // var_a0_3->unk-1 = (u8) temp_v0_5->a; - // } while (var_a3 != D_800E3078); - func_800BCC70(arg0); - if (D_80129FC8->unk24 == 3) { - D_800E30E0 = D_800E30E8; - D_800E30E4 = D_800E30FC; - } else { - D_80129FC8->unk24 = 5; - D_800E30E0 = D_800E3110; - D_800E30E4 = D_800E3144; - } - D_800E3188 = 0; - D_8012A728 = 0; - gWaveGeneratorObj = NULL; - D_8012A018 = 0; -} -#else GLOBAL_ASM("asm/non_matchings/waves/func_800B82B4.s") -#endif void func_800B8B8C(void) { s32 temp_v0; diff --git a/src/waves.h b/src/waves.h index 31df1175..4e593b18 100644 --- a/src/waves.h +++ b/src/waves.h @@ -95,10 +95,11 @@ typedef struct unk800BF9F8 { // 4 Vertexes // Size: 0x28 - 40 bytes/ typedef struct unk8012A028 { - Vertex vertexA; - Vertex vertexB; - Vertex vertexC; - Vertex vertexD; + Vertex vert[4]; + // Vertex vertexA; + // Vertex vertexB; + // Vertex vertexC; + // Vertex vertexD; } unk8012A028; // /* Size: 10 bytes */