diff --git a/asm/non_matchings/game_ui/func_800A1248.s b/asm/non_matchings/game_ui/func_800A1248.s index 92adc71d..131c59df 100644 --- a/asm/non_matchings/game_ui/func_800A1248.s +++ b/asm/non_matchings/game_ui/func_800A1248.s @@ -17,13 +17,13 @@ glabel func_800A1248 /* 0A1E70 800A1270 8CA70064 */ lw $a3, 0x64($a1) /* 0A1E74 800A1274 00808025 */ move $s0, $a0 /* 0A1E78 800A1278 27A4003C */ addiu $a0, $sp, 0x3c -/* 0A1E7C 800A127C 0C006E9D */ jal get_object_struct_array +/* 0A1E7C 800A127C 0C006E9D */ jal get_racer_objects /* 0A1E80 800A1280 AFA70044 */ sw $a3, 0x44($sp) /* 0A1E84 800A1284 00409025 */ move $s2, $v0 /* 0A1E88 800A1288 0C01A142 */ jal func_80068508 /* 0A1E8C 800A128C 24040001 */ li $a0, 1 /* 0A1E90 800A1290 8FA50050 */ lw $a1, 0x50($sp) -/* 0A1E94 800A1294 0C028F39 */ jal func_800A3CE4 +/* 0A1E94 800A1294 0C028F39 */ jal render_race_start /* 0A1E98 800A1298 02002025 */ move $a0, $s0 /* 0A1E9C 800A129C 3C028012 */ lui $v0, %hi(D_80126D37) # $v0, 0x8012 /* 0A1EA0 800A12A0 90426D37 */ lbu $v0, %lo(D_80126D37)($v0) diff --git a/asm/non_matchings/game_ui/func_800A14F0.s b/asm/non_matchings/game_ui/func_800A14F0.s index e341908b..e0356028 100644 --- a/asm/non_matchings/game_ui/func_800A14F0.s +++ b/asm/non_matchings/game_ui/func_800A14F0.s @@ -10,7 +10,7 @@ glabel func_800A14F0 /* 0A20F4 800A14F4 AFBF0014 */ sw $ra, 0x14($sp) /* 0A20F8 800A14F8 AFA40060 */ sw $a0, 0x60($sp) /* 0A20FC 800A14FC AFA50064 */ sw $a1, 0x64($sp) -/* 0A2100 800A1500 0C006E9D */ jal get_object_struct_array +/* 0A2100 800A1500 0C006E9D */ jal get_racer_objects /* 0A2104 800A1504 27A40050 */ addiu $a0, $sp, 0x50 /* 0A2108 800A1508 3C0E8012 */ lui $t6, %hi(D_80126D37) # $t6, 0x8012 /* 0A210C 800A150C 91CE6D37 */ lbu $t6, %lo(D_80126D37)($t6) diff --git a/asm/non_matchings/game_ui/func_800A1C04.s b/asm/non_matchings/game_ui/func_800A1C04.s index e1eecc10..de0f4299 100644 --- a/asm/non_matchings/game_ui/func_800A1C04.s +++ b/asm/non_matchings/game_ui/func_800A1C04.s @@ -19,13 +19,13 @@ glabel func_800A1C04 /* 0A2844 800A1C44 AFA70038 */ sw $a3, 0x38($sp) /* 0A2848 800A1C48 8FA40040 */ lw $a0, 0x40($sp) /* 0A284C 800A1C4C 8FA50048 */ lw $a1, 0x48($sp) -/* 0A2850 800A1C50 0C028F39 */ jal func_800A3CE4 +/* 0A2850 800A1C50 0C028F39 */ jal render_race_start /* 0A2854 800A1C54 00000000 */ nop /* 0A2858 800A1C58 8FA40044 */ lw $a0, 0x44($sp) /* 0A285C 800A1C5C 8FA50048 */ lw $a1, 0x48($sp) /* 0A2860 800A1C60 0C029D48 */ jal render_weapon_hud /* 0A2864 800A1C64 00000000 */ nop -/* 0A2868 800A1C68 0C006E9D */ jal get_object_struct_array +/* 0A2868 800A1C68 0C006E9D */ jal get_racer_objects /* 0A286C 800A1C6C 27A40034 */ addiu $a0, $sp, 0x34 /* 0A2870 800A1C70 3C038012 */ lui $v1, %hi(D_80126D37) # $v1, 0x8012 /* 0A2874 800A1C74 90636D37 */ lbu $v1, %lo(D_80126D37)($v1) diff --git a/asm/non_matchings/game_ui/func_800A1E48.s b/asm/non_matchings/game_ui/func_800A1E48.s index 39e7f297..c2809062 100644 --- a/asm/non_matchings/game_ui/func_800A1E48.s +++ b/asm/non_matchings/game_ui/func_800A1E48.s @@ -19,7 +19,7 @@ glabel func_800A1E48 /* 0A2A78 800A1E78 E7B50018 */ swc1 $f21, 0x18($sp) /* 0A2A7C 800A1E7C E7B4001C */ swc1 $f20, 0x1c($sp) /* 0A2A80 800A1E80 AFA5008C */ sw $a1, 0x8c($sp) -/* 0A2A84 800A1E84 0C006E9D */ jal get_object_struct_array +/* 0A2A84 800A1E84 0C006E9D */ jal get_racer_objects /* 0A2A88 800A1E88 27A40078 */ addiu $a0, $sp, 0x78 /* 0A2A8C 800A1E8C 12000004 */ beqz $s0, .L800A1EA0 /* 0A2A90 800A1E90 0040A825 */ move $s5, $v0 diff --git a/asm/non_matchings/game_ui/func_800A277C.s b/asm/non_matchings/game_ui/func_800A277C.s index 58c06001..858f0ad6 100644 --- a/asm/non_matchings/game_ui/func_800A277C.s +++ b/asm/non_matchings/game_ui/func_800A277C.s @@ -878,7 +878,7 @@ glabel func_800A277C /* 0A4008 800A3408 00000000 */ nop /* 0A400C 800A340C 8FA400C0 */ lw $a0, 0xc0($sp) /* 0A4010 800A3410 8FA500C8 */ lw $a1, 0xc8($sp) -/* 0A4014 800A3414 0C028F39 */ jal func_800A3CE4 +/* 0A4014 800A3414 0C028F39 */ jal render_race_start /* 0A4018 800A3418 00000000 */ nop /* 0A401C 800A341C 8FA400C4 */ lw $a0, 0xc4($sp) /* 0A4020 800A3420 8FA500C8 */ lw $a1, 0xc8($sp) diff --git a/asm/non_matchings/game_ui/func_800A3CE4.s b/asm/non_matchings/game_ui/func_800A3CE4.s deleted file mode 100644 index 43b12385..00000000 --- a/asm/non_matchings/game_ui/func_800A3CE4.s +++ /dev/null @@ -1,297 +0,0 @@ -glabel func_800A3CE4 -/* 0A48E4 800A3CE4 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0A48E8 800A3CE8 AFBF0024 */ sw $ra, 0x24($sp) -/* 0A48EC 800A3CEC AFA40058 */ sw $a0, 0x58($sp) -/* 0A48F0 800A3CF0 0C01BAA8 */ jal is_game_paused -/* 0A48F4 800A3CF4 AFA5005C */ sw $a1, 0x5c($sp) -/* 0A48F8 800A3CF8 8FA90058 */ lw $t1, 0x58($sp) -/* 0A48FC 800A3CFC 14400111 */ bnez $v0, .L800A4144 -/* 0A4900 800A3D00 3C0F8012 */ lui $t7, %hi(gHUDNumPlayers) # $t7, 0x8012 -/* 0A4904 800A3D04 15200008 */ bnez $t1, .L800A3D28 -/* 0A4908 800A3D08 3C03800E */ lui $v1, %hi(D_800E2770) # $v1, 0x800e -/* 0A490C 800A3D0C 24632770 */ addiu $v1, %lo(D_800E2770) # addiu $v1, $v1, 0x2770 -/* 0A4910 800A3D10 806E000C */ lb $t6, 0xc($v1) -/* 0A4914 800A3D14 2402FFFF */ li $v0, -1 -/* 0A4918 800A3D18 144E0003 */ bne $v0, $t6, .L800A3D28 -/* 0A491C 800A3D1C 00000000 */ nop -/* 0A4920 800A3D20 A0620003 */ sb $v0, 3($v1) -/* 0A4924 800A3D24 A0620013 */ sb $v0, 0x13($v1) -.L800A3D28: -/* 0A4928 800A3D28 8DEF6D0C */ lw $t7, %lo(gHUDNumPlayers)($t7) -/* 0A492C 800A3D2C 24010001 */ li $at, 1 -/* 0A4930 800A3D30 15E10005 */ bne $t7, $at, .L800A3D48 -/* 0A4934 800A3D34 00000000 */ nop -/* 0A4938 800A3D38 0C01EFC7 */ jal func_8007BF1C -/* 0A493C 800A3D3C 24040001 */ li $a0, 1 -/* 0A4940 800A3D40 8FA90058 */ lw $t1, 0x58($sp) -/* 0A4944 800A3D44 00000000 */ nop -.L800A3D48: -/* 0A4948 800A3D48 19200083 */ blez $t1, .L800A3F58 -/* 0A494C 800A3D4C 3C088012 */ lui $t0, %hi(D_80126CDC) # $t0, 0x8012 -/* 0A4950 800A3D50 3C188012 */ lui $t8, %hi(D_80126D34) # $t8, 0x8012 -/* 0A4954 800A3D54 93186D34 */ lbu $t8, %lo(D_80126D34)($t8) -/* 0A4958 800A3D58 00095A00 */ sll $t3, $t1, 8 -/* 0A495C 800A3D5C 1300002F */ beqz $t8, .L800A3E1C -/* 0A4960 800A3D60 01695823 */ subu $t3, $t3, $t1 -/* 0A4964 800A3D64 24010028 */ li $at, 40 -/* 0A4968 800A3D68 0161001A */ div $zero, $t3, $at -/* 0A496C 800A3D6C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A4970 800A3D70 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A4974 800A3D74 8C820000 */ lw $v0, ($a0) -/* 0A4978 800A3D78 2401FF00 */ li $at, -256 -/* 0A497C 800A3D7C 24590008 */ addiu $t9, $v0, 8 -/* 0A4980 800A3D80 AC990000 */ sw $t9, ($a0) -/* 0A4984 800A3D84 3C088012 */ lui $t0, %hi(D_80126CDC) # $t0, 0x8012 -/* 0A4988 800A3D88 3C0AFA00 */ lui $t2, 0xfa00 -/* 0A498C 800A3D8C 25086CDC */ addiu $t0, %lo(D_80126CDC) # addiu $t0, $t0, 0x6cdc -/* 0A4990 800A3D90 AC4A0000 */ sw $t2, ($v0) -/* 0A4994 800A3D94 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A4998 800A3D98 3C068012 */ lui $a2, %hi(gHUDCurrTriList) # $a2, 0x8012 -/* 0A499C 800A3D9C 24C66D04 */ addiu $a2, %lo(gHUDCurrTriList) # addiu $a2, $a2, 0x6d04 -/* 0A49A0 800A3DA0 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A49A4 800A3DA4 00006012 */ mflo $t4 -/* 0A49A8 800A3DA8 318D00FF */ andi $t5, $t4, 0xff -/* 0A49AC 800A3DAC 01A17025 */ or $t6, $t5, $at -/* 0A49B0 800A3DB0 AC4E0004 */ sw $t6, 4($v0) -/* 0A49B4 800A3DB4 8D070000 */ lw $a3, ($t0) -/* 0A49B8 800A3DB8 0C02A980 */ jal func_800AA600 -/* 0A49BC 800A3DBC 24E701A0 */ addiu $a3, $a3, 0x1a0 -/* 0A49C0 800A3DC0 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A49C4 800A3DC4 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A49C8 800A3DC8 8C820000 */ lw $v0, ($a0) -/* 0A49CC 800A3DCC 3C18FA00 */ lui $t8, 0xfa00 -/* 0A49D0 800A3DD0 244F0008 */ addiu $t7, $v0, 8 -/* 0A49D4 800A3DD4 AC8F0000 */ sw $t7, ($a0) -/* 0A49D8 800A3DD8 2419FFFF */ li $t9, -1 -/* 0A49DC 800A3DDC 3C0A8012 */ lui $t2, %hi(gRaceStartShowHudStep) # $t2, 0x8012 -/* 0A49E0 800A3DE0 AC590004 */ sw $t9, 4($v0) -/* 0A49E4 800A3DE4 AC580000 */ sw $t8, ($v0) -/* 0A49E8 800A3DE8 814A6CD4 */ lb $t2, %lo(gRaceStartShowHudStep)($t2) -/* 0A49EC 800A3DEC 24010002 */ li $at, 2 -/* 0A49F0 800A3DF0 1541000A */ bne $t2, $at, .L800A3E1C -/* 0A49F4 800A3DF4 24040018 */ li $a0, 24 -/* 0A49F8 800A3DF8 3C058012 */ lui $a1, %hi(gHUDVoiceSoundMask) # $a1, 0x8012 -/* 0A49FC 800A3DFC 0C000741 */ jal play_sound_global -/* 0A4A00 800A3E00 24A56D40 */ addiu $a1, %lo(gHUDVoiceSoundMask) # addiu $a1, $a1, 0x6d40 -/* 0A4A04 800A3E04 3C028012 */ lui $v0, %hi(gRaceStartShowHudStep) # $v0, 0x8012 -/* 0A4A08 800A3E08 24426CD4 */ addiu $v0, %lo(gRaceStartShowHudStep) # addiu $v0, $v0, 0x6cd4 -/* 0A4A0C 800A3E0C 804B0000 */ lb $t3, ($v0) -/* 0A4A10 800A3E10 00000000 */ nop -/* 0A4A14 800A3E14 256C0001 */ addiu $t4, $t3, 1 -/* 0A4A18 800A3E18 A04C0000 */ sb $t4, ($v0) -.L800A3E1C: -/* 0A4A1C 800A3E1C 3C0D8012 */ lui $t5, %hi(D_80126D3C) # $t5, 0x8012 -/* 0A4A20 800A3E20 8DAD6D3C */ lw $t5, %lo(D_80126D3C)($t5) -/* 0A4A24 800A3E24 00000000 */ nop -/* 0A4A28 800A3E28 15A000C4 */ bnez $t5, .L800A413C -/* 0A4A2C 800A3E2C 00000000 */ nop -/* 0A4A30 800A3E30 0C008D5A */ jal func_80023568 -/* 0A4A34 800A3E34 00000000 */ nop -/* 0A4A38 800A3E38 144000C0 */ bnez $v0, .L800A413C -/* 0A4A3C 800A3E3C 00000000 */ nop -/* 0A4A40 800A3E40 0C006E9D */ jal get_object_struct_array -/* 0A4A44 800A3E44 27A40038 */ addiu $a0, $sp, 0x38 -/* 0A4A48 800A3E48 8FA50038 */ lw $a1, 0x38($sp) -/* 0A4A4C 800A3E4C AFA20044 */ sw $v0, 0x44($sp) -/* 0A4A50 800A3E50 0C01BE53 */ jal get_random_number_from_range -/* 0A4A54 800A3E54 24040001 */ li $a0, 1 -/* 0A4A58 800A3E58 8FAE0044 */ lw $t6, 0x44($sp) -/* 0A4A5C 800A3E5C 00027880 */ sll $t7, $v0, 2 -/* 0A4A60 800A3E60 01CFC021 */ addu $t8, $t6, $t7 -/* 0A4A64 800A3E64 8F08FFFC */ lw $t0, -4($t8) -/* 0A4A68 800A3E68 00002025 */ move $a0, $zero -/* 0A4A6C 800A3E6C 8D030064 */ lw $v1, 0x64($t0) -/* 0A4A70 800A3E70 24050064 */ li $a1, 100 -/* 0A4A74 800A3E74 807901D6 */ lb $t9, 0x1d6($v1) -/* 0A4A78 800A3E78 00000000 */ nop -/* 0A4A7C 800A3E7C 172000AF */ bnez $t9, .L800A413C -/* 0A4A80 800A3E80 00000000 */ nop -/* 0A4A84 800A3E84 0C01BE53 */ jal get_random_number_from_range -/* 0A4A88 800A3E88 AFA80040 */ sw $t0, 0x40($sp) -/* 0A4A8C 800A3E8C 8FA80040 */ lw $t0, 0x40($sp) -/* 0A4A90 800A3E90 28410060 */ slti $at, $v0, 0x60 -/* 0A4A94 800A3E94 142000A9 */ bnez $at, .L800A413C -/* 0A4A98 800A3E98 00002025 */ move $a0, $zero -/* 0A4A9C 800A3E9C 24050007 */ li $a1, 7 -/* 0A4AA0 800A3EA0 0C01BE53 */ jal get_random_number_from_range -/* 0A4AA4 800A3EA4 AFA80040 */ sw $t0, 0x40($sp) -/* 0A4AA8 800A3EA8 44822000 */ mtc1 $v0, $f4 -/* 0A4AAC 800A3EAC 3C013FE0 */ li $at, 0x3FE00000 # 1.750000 -/* 0A4AB0 800A3EB0 468021A1 */ cvt.d.w $f6, $f4 -/* 0A4AB4 800A3EB4 44814800 */ mtc1 $at, $f9 -/* 0A4AB8 800A3EB8 44804000 */ mtc1 $zero, $f8 -/* 0A4ABC 800A3EBC 3C01401C */ li $at, 0x401C0000 # 2.437500 -/* 0A4AC0 800A3EC0 46283282 */ mul.d $f10, $f6, $f8 -/* 0A4AC4 800A3EC4 44818800 */ mtc1 $at, $f17 -/* 0A4AC8 800A3EC8 44808000 */ mtc1 $zero, $f16 -/* 0A4ACC 800A3ECC 3C013FF4 */ li $at, 0x3FF40000 # 1.906250 -/* 0A4AD0 800A3ED0 44812800 */ mtc1 $at, $f5 -/* 0A4AD4 800A3ED4 46305483 */ div.d $f18, $f10, $f16 -/* 0A4AD8 800A3ED8 44802000 */ mtc1 $zero, $f4 -/* 0A4ADC 800A3EDC 00002025 */ move $a0, $zero -/* 0A4AE0 800A3EE0 24050007 */ li $a1, 7 -/* 0A4AE4 800A3EE4 46322181 */ sub.d $f6, $f4, $f18 -/* 0A4AE8 800A3EE8 46203220 */ cvt.s.d $f8, $f6 -/* 0A4AEC 800A3EEC 0C01BE53 */ jal get_random_number_from_range -/* 0A4AF0 800A3EF0 E7A8004C */ swc1 $f8, 0x4c($sp) -/* 0A4AF4 800A3EF4 00025980 */ sll $t3, $v0, 6 -/* 0A4AF8 800A3EF8 01625823 */ subu $t3, $t3, $v0 -/* 0A4AFC 800A3EFC 24010007 */ li $at, 7 -/* 0A4B00 800A3F00 0161001A */ div $zero, $t3, $at -/* 0A4B04 800A3F04 8FA80040 */ lw $t0, 0x40($sp) -/* 0A4B08 800A3F08 3C0142C8 */ li $at, 0x42C80000 # 100.000000 -/* 0A4B0C 800A3F0C 44818000 */ mtc1 $at, $f16 -/* 0A4B10 800A3F10 C7AA004C */ lwc1 $f10, 0x4c($sp) -/* 0A4B14 800A3F14 8D05000C */ lw $a1, 0xc($t0) -/* 0A4B18 800A3F18 8D060010 */ lw $a2, 0x10($t0) -/* 0A4B1C 800A3F1C 8D070014 */ lw $a3, 0x14($t0) -/* 0A4B20 800A3F20 46105102 */ mul.s $f4, $f10, $f16 -/* 0A4B24 800A3F24 3C0E8012 */ lui $t6, %hi(D_80126D3C) # $t6, 0x8012 -/* 0A4B28 800A3F28 25CE6D3C */ addiu $t6, %lo(D_80126D3C) # addiu $t6, $t6, 0x6d3c -/* 0A4B2C 800A3F2C 240A0004 */ li $t2, 4 -/* 0A4B30 800A3F30 AFAA0010 */ sw $t2, 0x10($sp) -/* 0A4B34 800A3F34 AFAE001C */ sw $t6, 0x1c($sp) -/* 0A4B38 800A3F38 E7A40018 */ swc1 $f4, 0x18($sp) -/* 0A4B3C 800A3F3C 2404004C */ li $a0, 76 -/* 0A4B40 800A3F40 00006012 */ mflo $t4 -/* 0A4B44 800A3F44 258D0018 */ addiu $t5, $t4, 0x18 -/* 0A4B48 800A3F48 0C00257A */ jal func_800095E8 -/* 0A4B4C 800A3F4C AFAD0014 */ sw $t5, 0x14($sp) -/* 0A4B50 800A3F50 1000007A */ b .L800A413C -/* 0A4B54 800A3F54 00000000 */ nop -.L800A3F58: -/* 0A4B58 800A3F58 25086CDC */ addiu $t0, %lo(D_80126CDC) # addiu $t0, $t0, 0x6cdc -/* 0A4B5C 800A3F5C 8D0F0000 */ lw $t7, ($t0) -/* 0A4B60 800A3F60 3C01C348 */ li $at, 0xC3480000 # -200.000000 -/* 0A4B64 800A3F64 44819000 */ mtc1 $at, $f18 -/* 0A4B68 800A3F68 C5E6018C */ lwc1 $f6, 0x18c($t7) -/* 0A4B6C 800A3F6C 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A4B70 800A3F70 4606903C */ c.lt.s $f18, $f6 -/* 0A4B74 800A3F74 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A4B78 800A3F78 45000070 */ bc1f .L800A413C -/* 0A4B7C 800A3F7C 3C19FA00 */ lui $t9, 0xfa00 -/* 0A4B80 800A3F80 8C820000 */ lw $v0, ($a0) -/* 0A4B84 800A3F84 240AFFA0 */ li $t2, -96 -/* 0A4B88 800A3F88 24580008 */ addiu $t8, $v0, 8 -/* 0A4B8C 800A3F8C AC980000 */ sw $t8, ($a0) -/* 0A4B90 800A3F90 AC4A0004 */ sw $t2, 4($v0) -/* 0A4B94 800A3F94 AC590000 */ sw $t9, ($v0) -/* 0A4B98 800A3F98 8D070000 */ lw $a3, ($t0) -/* 0A4B9C 800A3F9C 3C058012 */ lui $a1, %hi(gHUDCurrMatrix) # $a1, 0x8012 -/* 0A4BA0 800A3FA0 3C068012 */ lui $a2, %hi(gHUDCurrTriList) # $a2, 0x8012 -/* 0A4BA4 800A3FA4 24C66D04 */ addiu $a2, %lo(gHUDCurrTriList) # addiu $a2, $a2, 0x6d04 -/* 0A4BA8 800A3FA8 24A56D00 */ addiu $a1, %lo(gHUDCurrMatrix) # addiu $a1, $a1, 0x6d00 -/* 0A4BAC 800A3FAC 0C02A980 */ jal func_800AA600 -/* 0A4BB0 800A3FB0 24E70180 */ addiu $a3, $a3, 0x180 -/* 0A4BB4 800A3FB4 3C048012 */ lui $a0, %hi(gHUDCurrDisplayList) # $a0, 0x8012 -/* 0A4BB8 800A3FB8 24846CFC */ addiu $a0, %lo(gHUDCurrDisplayList) # addiu $a0, $a0, 0x6cfc -/* 0A4BBC 800A3FBC 8C820000 */ lw $v0, ($a0) -/* 0A4BC0 800A3FC0 3C0CFA00 */ lui $t4, 0xfa00 -/* 0A4BC4 800A3FC4 244B0008 */ addiu $t3, $v0, 8 -/* 0A4BC8 800A3FC8 AC8B0000 */ sw $t3, ($a0) -/* 0A4BCC 800A3FCC 240DFFFF */ li $t5, -1 -/* 0A4BD0 800A3FD0 3C078012 */ lui $a3, %hi(D_80126D08) # $a3, 0x8012 -/* 0A4BD4 800A3FD4 3C088012 */ lui $t0, %hi(D_80126CDC) # $t0, 0x8012 -/* 0A4BD8 800A3FD8 AC4D0004 */ sw $t5, 4($v0) -/* 0A4BDC 800A3FDC AC4C0000 */ sw $t4, ($v0) -/* 0A4BE0 800A3FE0 25086CDC */ addiu $t0, %lo(D_80126CDC) # addiu $t0, $t0, 0x6cdc -/* 0A4BE4 800A3FE4 24E76D08 */ addiu $a3, %lo(D_80126D08) # addiu $a3, $a3, 0x6d08 -/* 0A4BE8 800A3FE8 8CEF0000 */ lw $t7, ($a3) -/* 0A4BEC 800A3FEC 8D0E0000 */ lw $t6, ($t0) -/* 0A4BF0 800A3FF0 8FB9005C */ lw $t9, 0x5c($sp) -/* 0A4BF4 800A3FF4 01CF2821 */ addu $a1, $t6, $t7 -/* 0A4BF8 800A3FF8 80B8019A */ lb $t8, 0x19a($a1) -/* 0A4BFC 800A3FFC 3C0E8012 */ lui $t6, %hi(gRaceStartShowHudStep) # $t6, 0x8012 -/* 0A4C00 800A4000 03195021 */ addu $t2, $t8, $t9 -/* 0A4C04 800A4004 A0AA019A */ sb $t2, 0x19a($a1) -/* 0A4C08 800A4008 8CEB0000 */ lw $t3, ($a3) -/* 0A4C0C 800A400C 8D060000 */ lw $a2, ($t0) -/* 0A4C10 800A4010 00000000 */ nop -/* 0A4C14 800A4014 00CB6021 */ addu $t4, $a2, $t3 -/* 0A4C18 800A4018 818D019A */ lb $t5, 0x19a($t4) -/* 0A4C1C 800A401C 00000000 */ nop -/* 0A4C20 800A4020 29A1003C */ slti $at, $t5, 0x3c -/* 0A4C24 800A4024 14200025 */ bnez $at, .L800A40BC -/* 0A4C28 800A4028 00000000 */ nop -/* 0A4C2C 800A402C 81CE6CD4 */ lb $t6, %lo(gRaceStartShowHudStep)($t6) -/* 0A4C30 800A4030 24010004 */ li $at, 4 -/* 0A4C34 800A4034 15C1001A */ bne $t6, $at, .L800A40A0 -/* 0A4C38 800A4038 8FB9005C */ lw $t9, 0x5c($sp) -/* 0A4C3C 800A403C 0C019884 */ jal get_viewport_count -/* 0A4C40 800A4040 00000000 */ nop -/* 0A4C44 800A4044 28410002 */ slti $at, $v0, 2 -/* 0A4C48 800A4048 14200006 */ bnez $at, .L800A4064 -/* 0A4C4C 800A404C 3C013F80 */ lui $at, 0x3f80 -/* 0A4C50 800A4050 0C0002CD */ jal play_music -/* 0A4C54 800A4054 00002025 */ move $a0, $zero -/* 0A4C58 800A4058 10000006 */ b .L800A4074 -/* 0A4C5C 800A405C 24040016 */ li $a0, 22 -/* 0A4C60 800A4060 3C013F80 */ li $at, 0x3F800000 # 1.000000 -.L800A4064: -/* 0A4C64 800A4064 44816000 */ mtc1 $at, $f12 -/* 0A4C68 800A4068 0C01AF44 */ jal func_8006BD10 -/* 0A4C6C 800A406C 00000000 */ nop -/* 0A4C70 800A4070 24040016 */ li $a0, 22 -.L800A4074: -/* 0A4C74 800A4074 0C000741 */ jal play_sound_global -/* 0A4C78 800A4078 00002825 */ move $a1, $zero -/* 0A4C7C 800A407C 3C028012 */ lui $v0, %hi(gRaceStartShowHudStep) # $v0, 0x8012 -/* 0A4C80 800A4080 24426CD4 */ addiu $v0, %lo(gRaceStartShowHudStep) # addiu $v0, $v0, 0x6cd4 -/* 0A4C84 800A4084 804F0000 */ lb $t7, ($v0) -/* 0A4C88 800A4088 3C068012 */ lui $a2, %hi(D_80126CDC) # $a2, 0x8012 -/* 0A4C8C 800A408C 25F80001 */ addiu $t8, $t7, 1 -/* 0A4C90 800A4090 A0580000 */ sb $t8, ($v0) -/* 0A4C94 800A4094 8CC66CDC */ lw $a2, %lo(D_80126CDC)($a2) -/* 0A4C98 800A4098 00000000 */ nop -/* 0A4C9C 800A409C 8FB9005C */ lw $t9, 0x5c($sp) -.L800A40A0: -/* 0A4CA0 800A40A0 C4C8018C */ lwc1 $f8, 0x18c($a2) -/* 0A4CA4 800A40A4 001950C0 */ sll $t2, $t9, 3 -/* 0A4CA8 800A40A8 448A5000 */ mtc1 $t2, $f10 -/* 0A4CAC 800A40AC 00000000 */ nop -/* 0A4CB0 800A40B0 46805420 */ cvt.s.w $f16, $f10 -/* 0A4CB4 800A40B4 46104101 */ sub.s $f4, $f8, $f16 -/* 0A4CB8 800A40B8 E4C4018C */ swc1 $f4, 0x18c($a2) -.L800A40BC: -/* 0A4CBC 800A40BC 3C0B8012 */ lui $t3, %hi(gRaceStartShowHudStep) # $t3, 0x8012 -/* 0A4CC0 800A40C0 816B6CD4 */ lb $t3, %lo(gRaceStartShowHudStep)($t3) -/* 0A4CC4 800A40C4 24010003 */ li $at, 3 -/* 0A4CC8 800A40C8 1561001C */ bne $t3, $at, .L800A413C -/* 0A4CCC 800A40CC 24040019 */ li $a0, 25 -/* 0A4CD0 800A40D0 3C058012 */ lui $a1, %hi(gHUDVoiceSoundMask) # $a1, 0x8012 -/* 0A4CD4 800A40D4 0C000741 */ jal play_sound_global -/* 0A4CD8 800A40D8 24A56D40 */ addiu $a1, %lo(gHUDVoiceSoundMask) # addiu $a1, $a1, 0x6d40 -/* 0A4CDC 800A40DC 0C006D90 */ jal func_8001B640 -/* 0A4CE0 800A40E0 00000000 */ nop -/* 0A4CE4 800A40E4 1040000D */ beqz $v0, .L800A411C -/* 0A4CE8 800A40E8 00000000 */ nop -/* 0A4CEC 800A40EC 0C006D94 */ jal func_8001B650 -/* 0A4CF0 800A40F0 00000000 */ nop -/* 0A4CF4 800A40F4 14400009 */ bnez $v0, .L800A411C -/* 0A4CF8 800A40F8 2404024B */ li $a0, 587 -/* 0A4CFC 800A40FC 3C053FD9 */ lui $a1, (0x3FD9999A >> 16) # lui $a1, 0x3fd9 -/* 0A4D00 800A4100 34A5999A */ ori $a1, (0x3FD9999A & 0xFFFF) # ori $a1, $a1, 0x999a -/* 0A4D04 800A4104 0C029D21 */ jal func_800A7484 -/* 0A4D08 800A4108 00003025 */ move $a2, $zero -/* 0A4D0C 800A410C 3C053FD9 */ lui $a1, (0x3FD9999A >> 16) # lui $a1, 0x3fd9 -/* 0A4D10 800A4110 34A5999A */ ori $a1, (0x3FD9999A & 0xFFFF) # ori $a1, $a1, 0x999a -/* 0A4D14 800A4114 0C030C56 */ jal func_800C3158 -/* 0A4D18 800A4118 24040052 */ li $a0, 82 -.L800A411C: -/* 0A4D1C 800A411C 3C0D8012 */ lui $t5, %hi(gRaceStartShowHudStep) # $t5, 0x8012 -/* 0A4D20 800A4120 81AD6CD4 */ lb $t5, %lo(gRaceStartShowHudStep)($t5) -/* 0A4D24 800A4124 240C0001 */ li $t4, 1 -/* 0A4D28 800A4128 3C018012 */ lui $at, %hi(D_80126D70) # $at, 0x8012 -/* 0A4D2C 800A412C A02C6D70 */ sb $t4, %lo(D_80126D70)($at) -/* 0A4D30 800A4130 3C018012 */ lui $at, %hi(gRaceStartShowHudStep) # $at, 0x8012 -/* 0A4D34 800A4134 25AE0001 */ addiu $t6, $t5, 1 -/* 0A4D38 800A4138 A02E6CD4 */ sb $t6, %lo(gRaceStartShowHudStep)($at) -.L800A413C: -/* 0A4D3C 800A413C 0C01EFC7 */ jal func_8007BF1C -/* 0A4D40 800A4140 00002025 */ move $a0, $zero -.L800A4144: -/* 0A4D44 800A4144 8FBF0024 */ lw $ra, 0x24($sp) -/* 0A4D48 800A4148 27BD0058 */ addiu $sp, $sp, 0x58 -/* 0A4D4C 800A414C 03E00008 */ jr $ra -/* 0A4D50 800A4150 00000000 */ nop - diff --git a/asm/non_matchings/game_ui/func_800A5F18.s b/asm/non_matchings/game_ui/func_800A5F18.s index 53a6db5a..820b0530 100644 --- a/asm/non_matchings/game_ui/func_800A5F18.s +++ b/asm/non_matchings/game_ui/func_800A5F18.s @@ -42,7 +42,7 @@ glabel func_800A5F18 /* 0A6B8C 800A5F8C 00000000 */ nop /* 0A6B90 800A5F90 144000AD */ bnez $v0, .L800A6248 /* 0A6B94 800A5F94 8FBF001C */ lw $ra, 0x1c($sp) -/* 0A6B98 800A5F98 0C006E9D */ jal get_object_struct_array +/* 0A6B98 800A5F98 0C006E9D */ jal get_racer_objects /* 0A6B9C 800A5F9C 27A40024 */ addiu $a0, $sp, 0x24 /* 0A6BA0 800A5FA0 3C0F8012 */ lui $t7, %hi(D_80126D37) # $t7, 0x8012 /* 0A6BA4 800A5FA4 91EF6D37 */ lbu $t7, %lo(D_80126D37)($t7) diff --git a/asm/non_matchings/game_ui/func_800A8474.s b/asm/non_matchings/game_ui/func_800A8474.s index df64c668..bf5acbc2 100644 --- a/asm/non_matchings/game_ui/func_800A8474.s +++ b/asm/non_matchings/game_ui/func_800A8474.s @@ -943,7 +943,7 @@ glabel func_800A8474 /* 0A9E24 800A9224 460021A4 */ cvt.w.s $f6, $f4 /* 0A9E28 800A9228 440B3000 */ mfc1 $t3, $f6 /* 0A9E2C 800A922C 44CAF800 */ ctc1 $t2, $31 -/* 0A9E30 800A9230 0C006E9D */ jal get_object_struct_array +/* 0A9E30 800A9230 0C006E9D */ jal get_racer_objects /* 0A9E34 800A9234 AFAB00BC */ sw $t3, 0xbc($sp) /* 0A9E38 800A9238 8FAC00CC */ lw $t4, 0xcc($sp) /* 0A9E3C 800A923C 00001825 */ move $v1, $zero diff --git a/asm/non_matchings/objects/func_80013DCC.s b/asm/non_matchings/objects/func_80013DCC.s deleted file mode 100644 index da7f4ed6..00000000 --- a/asm/non_matchings/objects/func_80013DCC.s +++ /dev/null @@ -1,191 +0,0 @@ -.late_rodata -glabel D_800E5580 -.float 0.02 -glabel D_800E5584 -.float 0.98 - -.text -glabel func_80013DCC -/* 0149CC 80013DCC 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0149D0 80013DD0 AFBF0024 */ sw $ra, 0x24($sp) -/* 0149D4 80013DD4 AFB10020 */ sw $s1, 0x20($sp) -/* 0149D8 80013DD8 AFB0001C */ sw $s0, 0x1c($sp) -/* 0149DC 80013DDC AFA40058 */ sw $a0, 0x58($sp) -/* 0149E0 80013DE0 AFA5005C */ sw $a1, 0x5c($sp) -/* 0149E4 80013DE4 AFA60060 */ sw $a2, 0x60($sp) -/* 0149E8 80013DE8 AFA70064 */ sw $a3, 0x64($sp) -/* 0149EC 80013DEC 8CEB0064 */ lw $t3, 0x64($a3) -/* 0149F0 80013DF0 3C188012 */ lui $t8, %hi(D_8011B07B) # $t8, 0x8012 -/* 0149F4 80013DF4 81680002 */ lb $t0, 2($t3) -/* 0149F8 80013DF8 3C10800E */ lui $s0, %hi(D_800DC764) # $s0, 0x800e -/* 0149FC 80013DFC 00087880 */ sll $t7, $t0, 2 -/* 014A00 80013E00 030FC021 */ addu $t8, $t8, $t7 -/* 014A04 80013E04 9318B07B */ lbu $t8, %lo(D_8011B07B)($t8) -/* 014A08 80013E08 2610C764 */ addiu $s0, %lo(D_800DC764) # addiu $s0, $s0, -0x389c -/* 014A0C 80013E0C 1300009C */ beqz $t8, .L80014080 -/* 014A10 80013E10 8FBF0024 */ lw $ra, 0x24($sp) -/* 014A14 80013E14 8E190000 */ lw $t9, ($s0) -/* 014A18 80013E18 3C118012 */ lui $s1, %hi(gObjectCurrDisplayList) # $s1, 0x8012 -/* 014A1C 80013E1C 13200097 */ beqz $t9, .L8001407C -/* 014A20 80013E20 2631AE8C */ addiu $s1, %lo(gObjectCurrDisplayList) # addiu $s1, $s1, -0x5174 -/* 014A24 80013E24 8C8D0000 */ lw $t5, ($a0) -/* 014A28 80013E28 3C018012 */ lui $at, %hi(gObjectCurrMatrix) # $at, 0x8012 -/* 014A2C 80013E2C AE2D0000 */ sw $t5, ($s1) -/* 014A30 80013E30 8CAF0000 */ lw $t7, ($a1) -/* 014A34 80013E34 24040016 */ li $a0, 22 -/* 014A38 80013E38 AC2FAE90 */ sw $t7, %lo(gObjectCurrMatrix)($at) -/* 014A3C 80013E3C 8CD90000 */ lw $t9, ($a2) -/* 014A40 80013E40 3C018012 */ lui $at, %hi(gObjectCurrVertexList) # $at, 0x8012 -/* 014A44 80013E44 AFAB0054 */ sw $t3, 0x54($sp) -/* 014A48 80013E48 0C0078A7 */ jal get_misc_asset -/* 014A4C 80013E4C AC39AE94 */ sw $t9, %lo(gObjectCurrVertexList)($at) -/* 014A50 80013E50 8FAB0054 */ lw $t3, 0x54($sp) -/* 014A54 80013E54 00000000 */ nop -/* 014A58 80013E58 816401D6 */ lb $a0, 0x1d6($t3) -/* 014A5C 80013E5C 00000000 */ nop -/* 014A60 80013E60 04800003 */ bltz $a0, .L80013E70 -/* 014A64 80013E64 28810003 */ slti $at, $a0, 3 -/* 014A68 80013E68 14200002 */ bnez $at, .L80013E74 -/* 014A6C 80013E6C 00000000 */ nop -.L80013E70: -/* 014A70 80013E70 00002025 */ move $a0, $zero -.L80013E74: -/* 014A74 80013E74 81680002 */ lb $t0, 2($t3) -/* 014A78 80013E78 00046080 */ sll $t4, $a0, 2 -/* 014A7C 80013E7C 01846021 */ addu $t4, $t4, $a0 -/* 014A80 80013E80 000C6880 */ sll $t5, $t4, 2 -/* 014A84 80013E84 2901000B */ slti $at, $t0, 0xb -/* 014A88 80013E88 14200002 */ bnez $at, .L80013E94 -/* 014A8C 80013E8C 01A21821 */ addu $v1, $t5, $v0 -/* 014A90 80013E90 00004025 */ move $t0, $zero -.L80013E94: -/* 014A94 80013E94 C4640000 */ lwc1 $f4, ($v1) -/* 014A98 80013E98 8E0E0000 */ lw $t6, ($s0) -/* 014A9C 80013E9C 3C0C8012 */ lui $t4, %hi(D_8011B078) # $t4, 0x8012 -/* 014AA0 80013EA0 E5C4000C */ swc1 $f4, 0xc($t6) -/* 014AA4 80013EA4 8E0F0000 */ lw $t7, ($s0) -/* 014AA8 80013EA8 C4660004 */ lwc1 $f6, 4($v1) -/* 014AAC 80013EAC 258CB078 */ addiu $t4, %lo(D_8011B078) # addiu $t4, $t4, -0x4f88 -/* 014AB0 80013EB0 E5E60010 */ swc1 $f6, 0x10($t7) -/* 014AB4 80013EB4 8E180000 */ lw $t8, ($s0) -/* 014AB8 80013EB8 C4680008 */ lwc1 $f8, 8($v1) -/* 014ABC 80013EBC 0008C880 */ sll $t9, $t0, 2 -/* 014AC0 80013EC0 032C4821 */ addu $t1, $t9, $t4 -/* 014AC4 80013EC4 E7080014 */ swc1 $f8, 0x14($t8) -/* 014AC8 80013EC8 912D0001 */ lbu $t5, 1($t1) -/* 014ACC 80013ECC 2463000C */ addiu $v1, $v1, 0xc -/* 014AD0 80013ED0 000D7680 */ sll $t6, $t5, 0x1a -/* 014AD4 80013ED4 000E2403 */ sra $a0, $t6, 0x10 -/* 014AD8 80013ED8 AFA30048 */ sw $v1, 0x48($sp) -/* 014ADC 80013EDC AFAB0054 */ sw $t3, 0x54($sp) -/* 014AE0 80013EE0 0C01C1FE */ jal sine_s -/* 014AE4 80013EE4 AFA90028 */ sw $t1, 0x28($sp) -/* 014AE8 80013EE8 3C01800E */ lui $at, %hi(D_800E5580) # $at, 0x800e -/* 014AEC 80013EEC C42A5580 */ lwc1 $f10, %lo(D_800E5580)($at) -/* 014AF0 80013EF0 3C01800E */ lui $at, %hi(D_800E5584) # $at, 0x800e -/* 014AF4 80013EF4 460A0402 */ mul.s $f16, $f0, $f10 -/* 014AF8 80013EF8 8FA30048 */ lw $v1, 0x48($sp) -/* 014AFC 80013EFC C4325584 */ lwc1 $f18, %lo(D_800E5584)($at) -/* 014B00 80013F00 C4640000 */ lwc1 $f4, ($v1) -/* 014B04 80013F04 46128080 */ add.s $f2, $f16, $f18 -/* 014B08 80013F08 8E180000 */ lw $t8, ($s0) -/* 014B0C 80013F0C 46022182 */ mul.s $f6, $f4, $f2 -/* 014B10 80013F10 8FA90028 */ lw $t1, 0x28($sp) -/* 014B14 80013F14 8FAB0054 */ lw $t3, 0x54($sp) -/* 014B18 80013F18 3C07800E */ lui $a3, %hi(D_800DC84C) # $a3, 0x800e -/* 014B1C 80013F1C E7060008 */ swc1 $f6, 8($t8) -/* 014B20 80013F20 C4680004 */ lwc1 $f8, 4($v1) -/* 014B24 80013F24 91390002 */ lbu $t9, 2($t1) -/* 014B28 80013F28 46024282 */ mul.s $f10, $f8, $f2 -/* 014B2C 80013F2C 8E0D0000 */ lw $t5, ($s0) -/* 014B30 80013F30 00196300 */ sll $t4, $t9, 0xc -/* 014B34 80013F34 2401FF00 */ li $at, -256 -/* 014B38 80013F38 E7AA0038 */ swc1 $f10, 0x38($sp) -/* 014B3C 80013F3C A5AC0000 */ sh $t4, ($t5) -/* 014B40 80013F40 8E0E0000 */ lw $t6, ($s0) -/* 014B44 80013F44 02202025 */ move $a0, $s1 -/* 014B48 80013F48 A5C00002 */ sh $zero, 2($t6) -/* 014B4C 80013F4C 8E0F0000 */ lw $t7, ($s0) -/* 014B50 80013F50 24050002 */ li $a1, 2 -/* 014B54 80013F54 A5E00004 */ sh $zero, 4($t7) -/* 014B58 80013F58 8E080000 */ lw $t0, ($s0) -/* 014B5C 80013F5C 24630004 */ addiu $v1, $v1, 4 -/* 014B60 80013F60 8D180068 */ lw $t8, 0x68($t0) -/* 014B64 80013F64 00000000 */ nop -/* 014B68 80013F68 8F020000 */ lw $v0, ($t8) -/* 014B6C 80013F6C 00000000 */ nop -/* 014B70 80013F70 8C590000 */ lw $t9, ($v0) -/* 014B74 80013F74 00000000 */ nop -/* 014B78 80013F78 AFB9004C */ sw $t9, 0x4c($sp) -/* 014B7C 80013F7C 804C001F */ lb $t4, 0x1f($v0) -/* 014B80 80013F80 00000000 */ nop -/* 014B84 80013F84 000C6880 */ sll $t5, $t4, 2 -/* 014B88 80013F88 004D7021 */ addu $t6, $v0, $t5 -/* 014B8C 80013F8C 8DCF0004 */ lw $t7, 4($t6) -/* 014B90 80013F90 00000000 */ nop -/* 014B94 80013F94 AD0F0044 */ sw $t7, 0x44($t0) -/* 014B98 80013F98 912A0001 */ lbu $t2, 1($t1) -/* 014B9C 80013F9C 816C0184 */ lb $t4, 0x184($t3) -/* 014BA0 80013FA0 000AC0C0 */ sll $t8, $t2, 3 -/* 014BA4 80013FA4 000C6880 */ sll $t5, $t4, 2 -/* 014BA8 80013FA8 3319007F */ andi $t9, $t8, 0x7f -/* 014BAC 80013FAC 00ED3821 */ addu $a3, $a3, $t5 -/* 014BB0 80013FB0 272A0080 */ addiu $t2, $t9, 0x80 -/* 014BB4 80013FB4 8CE7C84C */ lw $a3, %lo(D_800DC84C)($a3) -/* 014BB8 80013FB8 0C01FD65 */ jal func_8007F594 -/* 014BBC 80013FBC 01413025 */ or $a2, $t2, $at -/* 014BC0 80013FC0 C7B00038 */ lwc1 $f16, 0x38($sp) -/* 014BC4 80013FC4 3C058012 */ lui $a1, %hi(gObjectCurrMatrix) # $a1, 0x8012 -/* 014BC8 80013FC8 8E060000 */ lw $a2, ($s0) -/* 014BCC 80013FCC 8FA70064 */ lw $a3, 0x64($sp) -/* 014BD0 80013FD0 24A5AE90 */ addiu $a1, %lo(gObjectCurrMatrix) # addiu $a1, $a1, -0x5170 -/* 014BD4 80013FD4 02202025 */ move $a0, $s1 -/* 014BD8 80013FD8 0C01A3EA */ jal func_80068FA8 -/* 014BDC 80013FDC E7B00010 */ swc1 $f16, 0x10($sp) -/* 014BE0 80013FE0 240E0001 */ li $t6, 1 -/* 014BE4 80013FE4 3C01800E */ lui $at, %hi(D_800DC720) # $at, 0x800e -/* 014BE8 80013FE8 AC2EC720 */ sw $t6, %lo(D_800DC720)($at) -/* 014BEC 80013FEC 8E050000 */ lw $a1, ($s0) -/* 014BF0 80013FF0 8FA4004C */ lw $a0, 0x4c($sp) -/* 014BF4 80013FF4 00003025 */ move $a2, $zero -/* 014BF8 80013FF8 24070004 */ li $a3, 4 -/* 014BFC 80013FFC 0C0050EA */ jal func_800143A8 -/* 014C00 80014000 AFA00010 */ sw $zero, 0x10($sp) -/* 014C04 80014004 3C01800E */ lui $at, %hi(D_800DC720) # $at, 0x800e -/* 014C08 80014008 AC20C720 */ sw $zero, %lo(D_800DC720)($at) -/* 014C0C 8001400C 8E230000 */ lw $v1, ($s1) -/* 014C10 80014010 3C18BC00 */ lui $t8, (0xBC00000A >> 16) # lui $t8, 0xbc00 -/* 014C14 80014014 246F0008 */ addiu $t7, $v1, 8 -/* 014C18 80014018 AE2F0000 */ sw $t7, ($s1) -/* 014C1C 8001401C 3718000A */ ori $t8, (0xBC00000A & 0xFFFF) # ori $t8, $t8, 0xa -/* 014C20 80014020 AC780000 */ sw $t8, ($v1) -/* 014C24 80014024 AC600004 */ sw $zero, 4($v1) -/* 014C28 80014028 8E230000 */ lw $v1, ($s1) -/* 014C2C 8001402C 3C0CFA00 */ lui $t4, 0xfa00 -/* 014C30 80014030 24790008 */ addiu $t9, $v1, 8 -/* 014C34 80014034 AE390000 */ sw $t9, ($s1) -/* 014C38 80014038 240DFFFF */ li $t5, -1 -/* 014C3C 8001403C 02202025 */ move $a0, $s1 -/* 014C40 80014040 AC6D0004 */ sw $t5, 4($v1) -/* 014C44 80014044 0C01ECF4 */ jal func_8007B3D0 -/* 014C48 80014048 AC6C0000 */ sw $t4, ($v1) -/* 014C4C 8001404C 8E2E0000 */ lw $t6, ($s1) -/* 014C50 80014050 8FAF0058 */ lw $t7, 0x58($sp) -/* 014C54 80014054 3C188012 */ lui $t8, %hi(gObjectCurrMatrix) # $t8, 0x8012 -/* 014C58 80014058 ADEE0000 */ sw $t6, ($t7) -/* 014C5C 8001405C 8FB9005C */ lw $t9, 0x5c($sp) -/* 014C60 80014060 8F18AE90 */ lw $t8, %lo(gObjectCurrMatrix)($t8) -/* 014C64 80014064 3C0C8012 */ lui $t4, %hi(gObjectCurrVertexList) # $t4, 0x8012 -/* 014C68 80014068 AF380000 */ sw $t8, ($t9) -/* 014C6C 8001406C 8FAD0060 */ lw $t5, 0x60($sp) -/* 014C70 80014070 8D8CAE94 */ lw $t4, %lo(gObjectCurrVertexList)($t4) -/* 014C74 80014074 00000000 */ nop -/* 014C78 80014078 ADAC0000 */ sw $t4, ($t5) -.L8001407C: -/* 014C7C 8001407C 8FBF0024 */ lw $ra, 0x24($sp) -.L80014080: -/* 014C80 80014080 8FB0001C */ lw $s0, 0x1c($sp) -/* 014C84 80014084 8FB10020 */ lw $s1, 0x20($sp) -/* 014C88 80014088 03E00008 */ jr $ra -/* 014C8C 8001408C 27BD0058 */ addiu $sp, $sp, 0x58 - diff --git a/asm/non_matchings/racer/func_8004447C.s b/asm/non_matchings/racer/func_8004447C.s index 5b0a7668..b5fdc63e 100644 --- a/asm/non_matchings/racer/func_8004447C.s +++ b/asm/non_matchings/racer/func_8004447C.s @@ -25,7 +25,7 @@ glabel func_8004447C /* 0450B0 800444B0 00A08025 */ move $s0, $a1 /* 0450B4 800444B4 AFA60080 */ sw $a2, 0x80($sp) /* 0450B8 800444B8 AC20D538 */ sw $zero, %lo(gCurrentStickY)($at) -/* 0450BC 800444BC 0C006E9D */ jal get_object_struct_array +/* 0450BC 800444BC 0C006E9D */ jal get_racer_objects /* 0450C0 800444C0 27A40058 */ addiu $a0, $sp, 0x58 /* 0450C4 800444C4 8FAE0058 */ lw $t6, 0x58($sp) /* 0450C8 800444C8 24010004 */ li $at, 4 diff --git a/asm/non_matchings/racer/func_800452A0.s b/asm/non_matchings/racer/func_800452A0.s index 1e374b9f..40e60118 100644 --- a/asm/non_matchings/racer/func_800452A0.s +++ b/asm/non_matchings/racer/func_800452A0.s @@ -42,7 +42,7 @@ glabel func_800452A0 /* 045F10 80045310 E7B50018 */ swc1 $f21, 0x18($sp) /* 045F14 80045314 E7B4001C */ swc1 $f20, 0x1c($sp) /* 045F18 80045318 AC20D538 */ sw $zero, %lo(gCurrentStickY)($at) -/* 045F1C 8004531C 0C006E9D */ jal get_object_struct_array +/* 045F1C 8004531C 0C006E9D */ jal get_racer_objects /* 045F20 80045320 27A4009C */ addiu $a0, $sp, 0x9c /* 045F24 80045324 8FAF009C */ lw $t7, 0x9c($sp) /* 045F28 80045328 24010004 */ li $at, 4 diff --git a/asm/non_matchings/racer/func_8005698C.s b/asm/non_matchings/racer/func_8005698C.s index 279cd936..5a070760 100644 --- a/asm/non_matchings/racer/func_8005698C.s +++ b/asm/non_matchings/racer/func_8005698C.s @@ -68,7 +68,7 @@ glabel func_8005698C /* 057674 80056A74 E7B000A8 */ swc1 $f16, 0xa8($sp) /* 057678 80056A78 460A4780 */ add.s $f30, $f8, $f10 /* 05767C 80056A7C 4600D687 */ neg.s $f26, $f26 -/* 057680 80056A80 0C006E9D */ jal get_object_struct_array +/* 057680 80056A80 0C006E9D */ jal get_racer_objects /* 057684 80056A84 4600F787 */ neg.s $f30, $f30 /* 057688 80056A88 3C01800E */ lui $at, %hi(D_800E68C4) # $at, 0x800e /* 05768C 80056A8C C42C68C4 */ lwc1 $f12, %lo(D_800E68C4)($at) diff --git a/asm/non_matchings/unknown_0255E0/func_80027568.s b/asm/non_matchings/unknown_0255E0/func_80027568.s index ee1cbc0b..d34196df 100644 --- a/asm/non_matchings/unknown_0255E0/func_80027568.s +++ b/asm/non_matchings/unknown_0255E0/func_80027568.s @@ -20,7 +20,7 @@ glabel func_80027568 /* 028194 80027594 E7B6001C */ swc1 $f22, 0x1c($sp) /* 028198 80027598 E7B50010 */ swc1 $f21, 0x10($sp) /* 02819C 8002759C E7B40014 */ swc1 $f20, 0x14($sp) -/* 0281A0 800275A0 0C006E9D */ jal get_object_struct_array +/* 0281A0 800275A0 0C006E9D */ jal get_racer_objects /* 0281A4 800275A4 27A400C4 */ addiu $a0, $sp, 0xc4 /* 0281A8 800275A8 8FAE00C4 */ lw $t6, 0xc4($sp) /* 0281AC 800275AC 00403025 */ move $a2, $v0 diff --git a/asm/non_matchings/unknown_0255E0/func_800278E8.s b/asm/non_matchings/unknown_0255E0/func_800278E8.s index 96a37d13..50dc254b 100644 --- a/asm/non_matchings/unknown_0255E0/func_800278E8.s +++ b/asm/non_matchings/unknown_0255E0/func_800278E8.s @@ -4,7 +4,7 @@ glabel func_800278E8 /* 0284F0 800278F0 AFA40070 */ sw $a0, 0x70($sp) /* 0284F4 800278F4 AFB10018 */ sw $s1, 0x18($sp) /* 0284F8 800278F8 AFB00014 */ sw $s0, 0x14($sp) -/* 0284FC 800278FC 0C006E9D */ jal get_object_struct_array +/* 0284FC 800278FC 0C006E9D */ jal get_racer_objects /* 028500 80027900 27A40038 */ addiu $a0, $sp, 0x38 /* 028504 80027904 8FAE0038 */ lw $t6, 0x38($sp) /* 028508 80027908 00001825 */ move $v1, $zero diff --git a/asm/non_matchings/unknown_0255E0/func_80028CD0.s b/asm/non_matchings/unknown_0255E0/func_80028CD0.s index 4bba963b..a38a2f3a 100644 --- a/asm/non_matchings/unknown_0255E0/func_80028CD0.s +++ b/asm/non_matchings/unknown_0255E0/func_80028CD0.s @@ -65,7 +65,7 @@ glabel func_80028CD0 /* 0299C4 80028DC4 E42AD31C */ swc1 $f10, %lo(D_8011D31C)($at) /* 0299C8 80028DC8 0C02E2E3 */ jal func_800B8B8C /* 0299CC 80028DCC AFA7003C */ sw $a3, 0x3c($sp) -/* 0299D0 80028DD0 0C006E9D */ jal get_object_struct_array +/* 0299D0 80028DD0 0C006E9D */ jal get_racer_objects /* 0299D4 80028DD4 27A40040 */ addiu $a0, $sp, 0x40 /* 0299D8 80028DD8 3C0F8012 */ lui $t7, %hi(D_8011B0B0) # $t7, 0x8012 /* 0299DC 80028DDC 8DEFB0B0 */ lw $t7, %lo(D_8011B0B0)($t7) diff --git a/asm/non_matchings/unknown_0255E0/obj_loop_fogchanger.s b/asm/non_matchings/unknown_0255E0/obj_loop_fogchanger.s index 457f5473..32a37ec2 100644 --- a/asm/non_matchings/unknown_0255E0/obj_loop_fogchanger.s +++ b/asm/non_matchings/unknown_0255E0/obj_loop_fogchanger.s @@ -26,7 +26,7 @@ glabel obj_loop_fogchanger /* 0316D4 80030AD4 10000005 */ b .L80030AEC /* 0316D8 80030AD8 AFAE0074 */ sw $t6, 0x74($sp) .L80030ADC: -/* 0316DC 80030ADC 0C006E9D */ jal get_object_struct_array +/* 0316DC 80030ADC 0C006E9D */ jal get_racer_objects /* 0316E0 80030AE0 AFAB0044 */ sw $t3, 0x44($sp) /* 0316E4 80030AE4 8FAB0044 */ lw $t3, 0x44($sp) /* 0316E8 80030AE8 0040F825 */ move $ra, $v0 diff --git a/asm/non_matchings/unknown_032760/obj_loop_effectbox.s b/asm/non_matchings/unknown_032760/obj_loop_effectbox.s index 99aae354..6c6c568d 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_effectbox.s +++ b/asm/non_matchings/unknown_032760/obj_loop_effectbox.s @@ -18,7 +18,7 @@ glabel obj_loop_effectbox /* 0357B4 80034BB4 8C90003C */ lw $s0, 0x3c($a0) /* 0357B8 80034BB8 00803025 */ move $a2, $a0 /* 0357BC 80034BBC AFA60098 */ sw $a2, 0x98($sp) -/* 0357C0 80034BC0 0C006E9D */ jal get_object_struct_array +/* 0357C0 80034BC0 0C006E9D */ jal get_racer_objects /* 0357C4 80034BC4 27A4008C */ addiu $a0, $sp, 0x8c /* 0357C8 80034BC8 AFA20094 */ sw $v0, 0x94($sp) /* 0357CC 80034BCC 9204000B */ lbu $a0, 0xb($s0) diff --git a/asm/non_matchings/unknown_032760/obj_loop_modechange.s b/asm/non_matchings/unknown_032760/obj_loop_modechange.s index b444a17f..5ffaa87c 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_modechange.s +++ b/asm/non_matchings/unknown_032760/obj_loop_modechange.s @@ -23,7 +23,7 @@ glabel obj_loop_modechange /* 03BAA4 8003AEA4 1020005D */ beqz $at, .L8003B01C /* 03BAA8 8003AEA8 27A40074 */ addiu $a0, $sp, 0x74 /* 03BAAC 8003AEAC 44822000 */ mtc1 $v0, $f4 -/* 03BAB0 8003AEB0 0C006E9D */ jal get_object_struct_array +/* 03BAB0 8003AEB0 0C006E9D */ jal get_racer_objects /* 03BAB4 8003AEB4 468025A0 */ cvt.s.w $f22, $f4 /* 03BAB8 8003AEB8 8FB80074 */ lw $t8, 0x74($sp) /* 03BABC 8003AEBC 0000A025 */ move $s4, $zero diff --git a/asm/non_matchings/unknown_032760/obj_loop_parkwarden.s b/asm/non_matchings/unknown_032760/obj_loop_parkwarden.s index cfef002f..607636b6 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_parkwarden.s +++ b/asm/non_matchings/unknown_032760/obj_loop_parkwarden.s @@ -1445,7 +1445,7 @@ glabel L8003A5AC /* 03B3D8 8003A7D8 46204120 */ cvt.s.d $f4, $f8 /* 03B3DC 8003A7DC E6240004 */ swc1 $f4, 4($s1) .L8003A7E0: -/* 03B3E0 8003A7E0 0C006E9D */ jal get_object_struct_array +/* 03B3E0 8003A7E0 0C006E9D */ jal get_racer_objects /* 03B3E4 8003A7E4 27A40078 */ addiu $a0, $sp, 0x78 /* 03B3E8 8003A7E8 8C480000 */ lw $t0, ($v0) /* 03B3EC 8003A7EC 00000000 */ nop diff --git a/asm/non_matchings/unknown_032760/obj_loop_trigger.s b/asm/non_matchings/unknown_032760/obj_loop_trigger.s index c744bf5f..e87aa730 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_trigger.s +++ b/asm/non_matchings/unknown_032760/obj_loop_trigger.s @@ -47,7 +47,7 @@ glabel obj_loop_trigger /* 03D454 8003C854 44852000 */ mtc1 $a1, $f4 /* 03D458 8003C858 27A4008C */ addiu $a0, $sp, 0x8c /* 03D45C 8003C85C AFA60060 */ sw $a2, 0x60($sp) -/* 03D460 8003C860 0C006E9D */ jal get_object_struct_array +/* 03D460 8003C860 0C006E9D */ jal get_racer_objects /* 03D464 8003C864 468025A0 */ cvt.s.w $f22, $f4 /* 03D468 8003C868 8FAD008C */ lw $t5, 0x8c($sp) /* 03D46C 8003C86C 00009825 */ move $s3, $zero diff --git a/asm/non_matchings/unknown_032760/obj_loop_weather.s b/asm/non_matchings/unknown_032760/obj_loop_weather.s index 6e9d80da..6e47a6e6 100644 --- a/asm/non_matchings/unknown_032760/obj_loop_weather.s +++ b/asm/non_matchings/unknown_032760/obj_loop_weather.s @@ -5,7 +5,7 @@ glabel obj_loop_weather /* 04142C 8004082C 0C019888 */ jal get_object_render_stack_pos /* 041430 80040830 AFA5005C */ sw $a1, 0x5c($sp) /* 041434 80040834 27A40050 */ addiu $a0, $sp, 0x50 -/* 041438 80040838 0C006E9D */ jal get_object_struct_array +/* 041438 80040838 0C006E9D */ jal get_racer_objects /* 04143C 8004083C AFA20054 */ sw $v0, 0x54($sp) /* 041440 80040840 8FA50050 */ lw $a1, 0x50($sp) /* 041444 80040844 8FA60054 */ lw $a2, 0x54($sp) diff --git a/asm/non_matchings/waves/obj_loop_wavepower.s b/asm/non_matchings/waves/obj_loop_wavepower.s index eec7976d..ed88bb77 100644 --- a/asm/non_matchings/waves/obj_loop_wavepower.s +++ b/asm/non_matchings/waves/obj_loop_wavepower.s @@ -6,7 +6,7 @@ glabel obj_loop_wavepower /* 0C0BEC 800BFFEC 00808025 */ move $s0, $a0 /* 0C0BF0 800BFFF0 108E005B */ beq $a0, $t6, .L800C0160 /* 0C0BF4 800BFFF4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0C0BF8 800BFFF8 0C006E9D */ jal get_object_struct_array +/* 0C0BF8 800BFFF8 0C006E9D */ jal get_racer_objects /* 0C0BFC 800BFFFC 27A40050 */ addiu $a0, $sp, 0x50 /* 0C0C00 800C0000 8FA50050 */ lw $a1, 0x50($sp) /* 0C0C04 800C0004 00000000 */ nop diff --git a/include/enums.h b/include/enums.h index d3abd23c..5dafdc14 100644 --- a/include/enums.h +++ b/include/enums.h @@ -101,8 +101,8 @@ typedef enum MiscAsset { MISC_ASSET_UNK12, MISC_ASSET_UNK13, MISC_ASSET_UNK14, - MISC_ASSET_UNK15, - MISC_ASSET_UNK16, + MISC_ASSET_SHIELD_DATA, + MISC_ASSET_MAGNET_DATA, MISC_ASSET_UNK17, MISC_ASSET_UNK18, MISC_ASSET_UNK19, diff --git a/src/game_ui.c b/src/game_ui.c index 4ae22940..53d72dc5 100644 --- a/src/game_ui.c +++ b/src/game_ui.c @@ -12,6 +12,8 @@ #include "textures_sprites.h" #include "racer.h" #include "math_util.h" +#include "objects.h" +#include "game_text.h" extern u32 osTvType; @@ -479,7 +481,7 @@ void func_800A0DC0(s32 arg0, Object *arg1, s32 updateRate) { func_80068508(1); render_course_indicator_arrows(racer, updateRate); render_wrong_way_text(racer, updateRate); - func_800A3CE4(arg0, updateRate); + render_race_start(arg0, updateRate); if (D_80126D60->race_type == RACETYPE_DEFAULT) { func_800A4F50(racer, updateRate); @@ -603,7 +605,7 @@ void render_hud_challenge_eggs(s32 arg0, Object *arg1, s32 updateRate) { Object_Racer *racer = &arg1->unk64->racer; if (racer->raceFinished == FALSE) { func_80068508(1); - func_800A3CE4(arg0, updateRate); + render_race_start(arg0, updateRate); render_weapon_hud(arg1, updateRate); if ((127 - (updateRate * 2)) >= D_80126CDC->unk67A) { D_80126CDC->unk67A += updateRate * 2; @@ -632,7 +634,7 @@ void render_hud_race_boss(s32 arg0, Object *arg1, s32 updateRate) { func_80068508(1); render_wrong_way_text(temp, updateRate); - func_800A3CE4(arg0, updateRate); + render_race_start(arg0, updateRate); render_race_time(temp, updateRate); render_weapon_hud(arg1, updateRate); @@ -654,7 +656,7 @@ void func_800A263C(s32 arg0, Object *arg1, s32 updateRate) { func_800A4F50(temp, updateRate); func_800A4C44(temp, updateRate); render_race_time(temp, updateRate); - func_800A3CE4(arg0, updateRate); + render_race_start(arg0, updateRate); func_800A3884(arg1, updateRate); func_80068508(0); } @@ -689,7 +691,80 @@ void func_800A3870(void) { } GLOBAL_ASM("asm/non_matchings/game_ui/func_800A3884.s") -GLOBAL_ASM("asm/non_matchings/game_ui/func_800A3CE4.s") + +/** + * Call the functions that render the "Get Ready" and "GO!" as well as their countdowns to control fade. + * This function will also call to begin the background music for 1 and 2 player. 3 and 4 are treated with silence. +*/ +void render_race_start(s32 arg0, s32 updateRate) { + + if (!is_game_paused()) { + if (arg0 == 0 && D_800E2770[0].unkC == -1) { + D_800E2770[0].unk3 = -1; + D_800E2770[1].unk3 = -1; + } + if (gHUDNumPlayers == 1) { + func_8007BF1C(1); + } + if (arg0 > 0) { + if (D_80126D34) { + gDPSetPrimColor(gHUDCurrDisplayList++, 0, 0, 255, 255, 255, (arg0 * 255) / 40); + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrTriList, (unk80126CDC* ) &D_80126CDC->unk174[0x2C]); + gDPSetPrimColor(gHUDCurrDisplayList++, 0, 0, 255, 255, 255, 255); + if (gRaceStartShowHudStep == 2) { + play_sound_global(SOUND_VOICE_TT_GET_READY, &gHUDVoiceSoundMask); + gRaceStartShowHudStep++; + } + } + if (D_80126D3C == 0 && func_80023568() == 0) { + f32 sp4C; + UNUSED s32 pad; + Object** racerGroup; + Object* randomRacer; + Object_Racer* racer; + s32 numRacerObjects; + racerGroup = get_racer_objects(&numRacerObjects); + randomRacer = racerGroup[get_random_number_from_range(1, numRacerObjects) - 1]; + racer = (Object_Racer*)randomRacer->unk64; + if (racer->unk1D6 == 0) { + if (get_random_number_from_range(0, 100) >= 96) { + sp4C = 1.25 - ((get_random_number_from_range(0, 7) * 0.5) / 7.0); + func_800095E8(76, randomRacer->segment.trans.x_position, randomRacer->segment.trans.y_position, randomRacer->segment.trans.z_position, 4, ((get_random_number_from_range(0, 7) * 63) / 7) + 24, sp4C * 100.0f, &D_80126D3C); + } + } + } + } else if (D_80126CDC->unk18C > -200.0f) { + gDPSetPrimColor(gHUDCurrDisplayList++, 0, 0, 255, 255, 255, 160); + func_800AA600(&gHUDCurrDisplayList, &gHUDCurrMatrix, &gHUDCurrTriList, (unk80126CDC* ) &D_80126CDC->unk174[0xC]); + gDPSetPrimColor(gHUDCurrDisplayList++, 0, 0, 255, 255, 255, 255); + D_80126CDC->unk19A[D_80126D08] += updateRate; + if (D_80126CDC->unk19A[D_80126D08] >= 60) { + if (gRaceStartShowHudStep == 4) { + // Mute background music in 3/4 player. + if (get_viewport_count() > 1) { + play_music(SEQUENCE_NONE); + } else { + func_8006BD10(1.0f); + } + play_sound_global(SOUND_WHOOSH1, NULL); + gRaceStartShowHudStep++; + } + D_80126CDC->unk18C -= (updateRate * 8); + } + if (gRaceStartShowHudStep == 3) { + play_sound_global(SOUND_VOICE_TT_GO, &gHUDVoiceSoundMask); + if ((func_8001B640() != 0) && (func_8001B650() == 0)) { + func_800A7484(0x24B, 1.7f, 0); + func_800C3158(0x52, 1.7f); + } + D_80126D70 = 1; + gRaceStartShowHudStep++; + } + } + func_8007BF1C(0); + } +} + GLOBAL_ASM("asm/non_matchings/game_ui/func_800A4154.s") GLOBAL_ASM("asm/non_matchings/game_ui/func_800A45F0.s") GLOBAL_ASM("asm/non_matchings/game_ui/func_800A47A0.s") diff --git a/src/game_ui.h b/src/game_ui.h index 5d6c7aa1..775f428e 100644 --- a/src/game_ui.h +++ b/src/game_ui.h @@ -29,7 +29,8 @@ typedef struct { } IndicatorArrow; typedef struct unk80126CDC { - u8 unk0[0x6]; + struct unk80126CDC *unk0; + u8 unk4[0x2]; s16 unk6; u8 unk8[0x38]; struct unk80126CDC *unk40; @@ -57,7 +58,11 @@ typedef struct unk80126CDC { u8 pad[0x10]; f32 unk16C; f32 unk170; - u8 unk174[0x8C]; + u8 unk174[0x18]; + f32 unk18C; + u8 pad190[0xA]; + s8 unk19A[1]; + u8 pad19C[0x65]; struct unk80126CDC *unk200; // Not sure if this is correct. u8 unk204[0x14]; s16 unk218; @@ -115,7 +120,6 @@ typedef struct unk80126CDC { u8 unk63C[0x3E]; s8 unk67A; s8 unk67B[0xA4]; - s8 unk720; } unk80126CDC; typedef struct { @@ -137,13 +141,16 @@ typedef struct unk800E1E64 { /* Size: 0x10 bytes */ typedef struct unk800E2770 { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; + s8 unk0; + s8 unk1; + s8 unk2; + s8 unk3; s32 unk4; s32 unk8; - s32 unkC; + s8 unkC; + s8 unkD; + s8 unkE; + s8 unkF; } unk800E2770; extern unk80126CDC *D_80126CDC; @@ -176,10 +183,10 @@ void render_course_indicator_arrows(Object_64 *obj, s32 updateRate); void render_hud_hubworld(Object *obj, s32 updateRate); void render_hud(Gfx **dList, Matrix **mtx, TriangleList **tris, Object *arg3, s32 updateRate); void render_weapon_hud(Object *obj, s32 updateRate); +void render_race_start(s32 arg0, s32 updateRate); // Non Matching void func_800A14F0(Object *, s32); -void func_800A3CE4(s32, s32); void func_800A4F50(Object_64 *arg0, s32 arg1); void func_800A4154(Object_64 *arg0, s32 arg1); void func_800A4C44(Object_64 *arg0, s32 arg1); @@ -198,5 +205,6 @@ void func_800A497C(Object_64*, s32); void func_800A6254(Object_64*, s32); void func_800A6E30(Object_64*, s32); void func_800A7A60(Object*, Gfx**); +void func_800095E8(s32, f32, f32, f32, s32, s32, f32, s32*); #endif diff --git a/src/object_functions.c b/src/object_functions.c index 830867db..b68698f7 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -459,7 +459,7 @@ void obj_loop_effectbox(Object *obj, s32 speed) { f32 temp5; obj3C = obj->segment.unk3C_a.unk3C; - objList = get_object_struct_array(&numberOfObjects); + objList = get_racer_objects(&numberOfObjects); temp0 = sine_s((obj3C->unkB << 8) * -1); temp1 = cosine_s((obj3C->unkB << 8) * -1); temp2 = obj3C->unk8 * 3; @@ -766,7 +766,7 @@ void obj_loop_airzippers_waterzippers(Object *obj, UNUSED s32 speed) { obj->segment.trans.unk6 &= 0xBFFF; } if ((obj->unk4C->unk13 < 100) && !(obj->segment.trans.unk6 & 0x4000)) { - racerObjs = get_object_struct_array(&numObjects); + racerObjs = get_racer_objects(&numObjects); for (i = 0; i < numObjects; i++) { curRacerObj = racerObjs[i]; racer = &curRacerObj->unk64->racer; @@ -831,7 +831,7 @@ void obj_loop_groundzipper(Object *obj, UNUSED s32 speed) { obj->segment.trans.unk6 |= 0x1000; get_object_struct(0); // Unused. I guess the developers forgot to remove this? if ((s32) obj->unk4C->unk13 < obj->unk78) { - racerObjs = get_object_struct_array(&numObjects); + racerObjs = get_racer_objects(&numObjects); for (i = 0; i < numObjects; i++) { curRacerObj = racerObjs[i]; racer = &curRacerObj->unk64->racer; @@ -1501,7 +1501,7 @@ void obj_loop_exit(Object *obj, UNUSED s32 speed) { if (someBool) { if (obj->unk4C->unk13 < obj64->unk10) { dist = obj64->unk10; - racerObjects = get_object_struct_array(&numberOfRacers); + racerObjects = get_racer_objects(&numberOfRacers); for (i = 0; i < numberOfRacers; i++) { racerObj = racerObjects[i]; racer = &racerObj->unk64->racer; @@ -1691,7 +1691,7 @@ void obj_loop_bonus(Object *obj, UNUSED s32 speed) { if (obj->unk4C->unk13 < obj64->unk10) { dist = obj64->unk10; halfDist = dist * 0.5; - racerObjects = get_object_struct_array(&numberOfRacers); + racerObjects = get_racer_objects(&numberOfRacers); for (i = 0; i < numberOfRacers; i++) { racerObj = racerObjects[i]; racer = &racerObj->unk64->racer; @@ -2443,7 +2443,7 @@ void obj_loop_weather(Object *obj, s32 speed) { s32 i; s32 temp[3]; sp54 = get_object_render_stack_pos(); - objects = get_object_struct_array(&numberOfObjects); + objects = get_racer_objects(&numberOfObjects); if (numberOfObjects != 0) { lastObj = &objects[numberOfObjects - 1]; objects--; diff --git a/src/objects.c b/src/objects.c index a5c82ba3..7c435d19 100644 --- a/src/objects.c +++ b/src/objects.c @@ -90,7 +90,7 @@ s16 D_800DC820[16] = { s8 D_800DC840[8] = { 9, 1, 2, 3, 4, 5, 7, 0 }; s8 D_800DC848 = 0; -s32 D_800DC84C[3] = { // Currently unknown, might be a different type. +u32 D_800DC84C[3] = { 0xFF401000, 0x1040FF00, 0x10FF4000, @@ -259,9 +259,8 @@ Object *D_8011B020[10]; s32 D_8011B048[4]; s32 D_8011B058[4]; s32 D_8011B068[4]; -s8 D_8011B078[3]; -s8 D_8011B07B; -s32 D_8011B07C; +u8 D_8011B078[3]; +u8 D_8011B07B[1]; s32 D_8011B080[7]; extern s16 D_8011D5AC; @@ -1199,25 +1198,25 @@ void render_racer_shield(Gfx **dList, Mtx **mtx, VertexList **vtxList, Object *o if (var_a1 > 2) { var_a1 = 0; } - shield = ((struct RacerShieldGfx *) get_misc_asset(MISC_ASSET_UNK15)); + shield = ((struct RacerShieldGfx *) get_misc_asset(MISC_ASSET_SHIELD_DATA)); var_a1 = (var_a1 * 10) + var_a2; shield = shield + var_a1; D_800DC75C->segment.trans.x_position = shield->x_position; D_800DC75C->segment.trans.y_position = shield->y_position; D_800DC75C->segment.trans.z_position = shield->z_position; D_800DC75C->segment.trans.y_position += shield->y_offset * cosine_s(D_8011B010[var_a2] * 0x200); - shear = (sine_s(D_8011B010[var_a2] * 1024) * 0.05f) + 0.95f; + shear = (sine_s(D_8011B010[var_a2] * 0x400) * 0.05f) + 0.95f; D_800DC75C->segment.trans.scale = shield->scale * shear; shear = shear * shield->turnSpeed; D_800DC75C->segment.trans.y_rotation = D_8011B010[var_a2] * 0x800; D_800DC75C->segment.trans.x_rotation = 0x800; D_800DC75C->segment.trans.z_rotation = 0; shieldType = racer->shieldType; - if (shieldType) { + if (shieldType != SHIELD_NONE) { shieldType--; } - if (shieldType > 2) { - shieldType = 2; + if (shieldType > SHIELD_LEVEL3 - 1) { + shieldType = SHIELD_LEVEL3 - 1; } scale = ((f32) shieldType * 0.1) + 1.0f; D_800DC75C->segment.trans.scale *= scale; @@ -1243,7 +1242,68 @@ void render_racer_shield(Gfx **dList, Mtx **mtx, VertexList **vtxList, Object *o } } -GLOBAL_ASM("asm/non_matchings/objects/func_80013DCC.s") +/** + * Get the racer object data, and fetch set visual magnet properties based on that racer. + * Afterwards, render the graphics with opacity set by the properties. + */ +void render_racer_magnet(Gfx **dList, Mtx **mtx, VertexList **vtxList, Object *obj) { + Object_Racer *racer; + Object_68 *gfxData; + ObjectModel *mdl; + f32* magnet; + s32 var_a0; + s32 var_t0; + s32 opacity; + f32 shear; + s32 pad; + + racer = (Object_Racer *) obj->unk64; + var_t0 = racer->unk2 * 4; + if (D_8011B07B[var_t0]) { + if (D_800DC764 != NULL) { + gObjectCurrDisplayList = *dList; + gObjectCurrMatrix = *mtx; + gObjectCurrVertexList = *vtxList; + magnet = (f32 *) get_misc_asset(MISC_ASSET_MAGNET_DATA); + var_a0 = racer->unk1D6; + if (var_a0 < 0 || var_a0 > 2) { + var_a0 = 0; + } + magnet = &magnet[var_a0 * 5]; + var_t0 = racer->unk2; + if (var_t0 > 10) { + var_t0 = 0; + } + D_800DC764->segment.trans.x_position = magnet[0]; + D_800DC764->segment.trans.y_position = magnet[1]; + D_800DC764->segment.trans.z_position = magnet[2]; + magnet += 3; + shear = (sine_s((D_8011B078[(var_t0 * 4) + 1] * 0x400)) * 0.02f) + 0.98f; + D_800DC764->segment.trans.scale = magnet[0] * shear; + magnet += 1; + shear = magnet[0] * shear; + D_800DC764->segment.trans.y_rotation = D_8011B078[(var_t0 * 4) + 2] * 0x1000; + D_800DC764->segment.trans.x_rotation = 0; + D_800DC764->segment.trans.z_rotation = 0; + gfxData = *D_800DC764->unk68; + mdl = gfxData->objModel; + D_800DC764->unk44 = gfxData->unk4[gfxData->unk1F]; + opacity = (((D_8011B078[(var_t0 * 4) + 1] * 8) & 0x7F) + 0x80); + func_8007F594(&gObjectCurrDisplayList, 2, 0xFFFFFF00 | opacity, D_800DC84C[racer->unk184]); + func_80068FA8(&gObjectCurrDisplayList, &gObjectCurrMatrix, D_800DC764, obj, shear); + D_800DC720 = TRUE; + func_800143A8(mdl, D_800DC764, 0, 4, 0); + D_800DC720 = FALSE; + gDkrInsertMatrix(gObjectCurrDisplayList++, 0, G_MTX_DKR_INDEX_0); + gDPSetPrimColor(gObjectCurrDisplayList++, 0, 0, 255, 255, 255, 255); + func_8007B3D0(&gObjectCurrDisplayList); + *dList = gObjectCurrDisplayList; + *mtx = gObjectCurrMatrix; + *vtxList = gObjectCurrVertexList; + } + } +} + GLOBAL_ASM("asm/non_matchings/objects/func_80014090.s") void func_800142B8(void) { @@ -1468,7 +1528,7 @@ s32 func_8001BA64() { return D_8011AED0; } -Object **get_object_struct_array(s32 *cnt) { +Object **get_racer_objects(s32 *cnt) { *cnt = gObjectCount; return *gObjectStructArrayPtr; } diff --git a/src/objects.h b/src/objects.h index 304f9de6..9a7f5f02 100644 --- a/src/objects.h +++ b/src/objects.h @@ -261,7 +261,6 @@ extern s16 D_800DC820[16]; extern s8 D_800DC840[8]; extern s8 D_800DC848; -extern s32 D_800DC84C[3]; extern s32 D_800DC858; extern s32 D_800DC85C; @@ -332,7 +331,7 @@ f32 func_8001B834(Object *arg0, s32); unknown8011AECC *func_8001BA00(s32 arg0); unknown8011AECC *func_8001BA1C(s32 arg0, s32 arg1); s32 func_8001BA64(); -Object **get_object_struct_array(s32 *cnt); +Object **get_racer_objects(s32 *cnt); s32 *func_8001BA90(s32 *arg0); Object **func_8001BAAC(s32 *numberOfObjects); Object *get_object_struct(s32 indx); @@ -381,6 +380,7 @@ s32 func_8001B668(s32 arg0); s32 func_80011570(Object *obj, f32 xPos, f32 yPos, f32 zPos); s32 func_8001BB18(s32 arg0); void render_racer_shield(Gfx **dList, Mtx **mtx, VertexList **vtxList, Object *obj); +void render_racer_magnet(Gfx **dList, Mtx **mtx, VertexList **vtxList, Object *obj); void set_and_normalize_D_8011AFE8(f32 arg0, f32 arg1, f32 arg2); //Non Matching diff --git a/src/racer.c b/src/racer.c index b579e023..7c9854d4 100644 --- a/src/racer.c +++ b/src/racer.c @@ -3699,7 +3699,7 @@ void func_8005A6F0(Object *obj, Object_Racer *racer, s32 updateRate, f32 updateR var_fv1 = 1000000; if (racer->unk201 == 0) { - objects = get_object_struct_array(&countOfObjects); + objects = get_racer_objects(&countOfObjects); playerOneObj = playerTwoObj = NULL; for (var_t2 = 0; var_t2 < countOfObjects; var_t2++) { tempRacer = &objects[var_t2]->unk64->racer; diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index 91aaccdd..c8c5abc2 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -678,7 +678,7 @@ void render_level_geometry_and_objects(void) { skip: if (obj->behaviorId == BHV_RACER) { render_racer_shield(&gSceneCurrDisplayList, &gSceneCurrMatrix, &gSceneCurrVertexList, obj); - func_80013DCC(&gSceneCurrDisplayList, &gSceneCurrMatrix, &gSceneCurrVertexList, obj); + render_racer_magnet(&gSceneCurrDisplayList, &gSceneCurrMatrix, &gSceneCurrVertexList, obj); } } } @@ -1386,7 +1386,7 @@ void obj_loop_fogchanger(Object* obj) { phi_s3 = func_80069D7C(); sp74 = get_viewport_count() + 1; } else { - sp40 = get_object_struct_array(&sp74); + sp40 = get_racer_objects(&sp74); } for(i = 0; i < sp74; i++) { diff --git a/src/unknown_0255E0.h b/src/unknown_0255E0.h index c5d2eeb8..0126bcab 100644 --- a/src/unknown_0255E0.h +++ b/src/unknown_0255E0.h @@ -128,7 +128,7 @@ s32 func_80027568(void); void func_8002C954(LevelModelSegment*, LevelModelSegmentBoundingBox*, s32); s32 func_8002CC30(LevelModelSegment*); s8 func_8002B0F4(s16, f32 xPos, f32 zPos, struct TempStruct8**); -void func_80013DCC(Gfx **arg0, Vertex **arg1, Vertex **arg2, Object *arg3); +void render_racer_magnet(Gfx **dList, Mtx **mtx, VertexList **vtxList, Object* obj); s8 func_8002AD08(f32 yPos, f32* waterHeight, s32*); void func_800278E8(s32); void func_80028050(void);