From f8e3c755a3016a5b8dc10ad778db9332456ff41b Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Fri, 20 Oct 2023 08:12:50 -0400 Subject: [PATCH] 60% Matched! (#423) * Match func_8005F99C * unk8005FCD0 to Object_68 * Match func_800B7460 * epc cleanup * Match func_8001EE74 * Match func_8001E6EC * Match func_8000FD54 * Match func_80015348 * Match func_80016748 * Match func_8001AE64 * Match func_80016DE8 * Updated score * Fix score * Update src/object_models.h Co-authored-by: David Benepe --------- Co-authored-by: David Benepe --- README.md | 20 +- .../object_models/func_8005F99C.s | 223 ---------- asm/non_matchings/objects/func_8000FD54.s | 171 ------- asm/non_matchings/objects/func_80015348.s | 172 -------- asm/non_matchings/objects/func_80016748.s | 302 ------------- asm/non_matchings/objects/func_80016DE8.s | 189 -------- asm/non_matchings/objects/func_8001AE64.s | 288 ------------ asm/non_matchings/objects/func_8001E6EC.s | 118 ----- asm/non_matchings/objects/func_8001EE74.s | 83 ---- asm/non_matchings/thread0_epc/func_800B71B0.s | 187 -------- asm/non_matchings/thread0_epc/func_800B7460.s | 8 +- include/level_object_entries.h | 2 + include/structs.h | 42 +- src/object_functions.c | 10 +- src/object_functions.h | 2 +- src/object_models.c | 128 +++++- src/object_models.h | 20 +- src/objects.c | 416 +++++++++++++++++- src/objects.h | 11 +- src/thread0_epc.c | 107 +++-- src/thread0_epc.h | 4 +- src/tracks.c | 42 +- src/tracks.h | 1 + tools/python/score.py | 2 +- 24 files changed, 678 insertions(+), 1870 deletions(-) delete mode 100644 asm/non_matchings/object_models/func_8005F99C.s delete mode 100644 asm/non_matchings/objects/func_8000FD54.s delete mode 100644 asm/non_matchings/objects/func_80015348.s delete mode 100644 asm/non_matchings/objects/func_80016748.s delete mode 100644 asm/non_matchings/objects/func_80016DE8.s delete mode 100644 asm/non_matchings/objects/func_8001AE64.s delete mode 100644 asm/non_matchings/objects/func_8001E6EC.s delete mode 100644 asm/non_matchings/objects/func_8001EE74.s delete mode 100644 asm/non_matchings/thread0_epc/func_800B71B0.s diff --git a/README.md b/README.md index 73497f61..5041dfdf 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ This repo contains a work-in-progress decompilation of Diddy Kong Racing for the Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU 1.1, and JP are not supported at this time. -As of October 15, 2023, this is our current score: +As of October 19, 2023, this is our current score: -    Decomp progress: 59.35% +    Decomp progress: 60.22% -    Documentation progress: 33.38% +    Documentation progress: 33.39% --- @@ -128,25 +128,25 @@ s32 is_drumstick_unlocked(void) { ``` -As of October 15th, 2023, this is our current score: +As of October 19th, 2023, this is our current score: ``` ==================================================================== ADVENTURE ONE (ASM -> C Decompilation) - ------------------------- 59.35% Complete -------------------------- - # Decompiled functions: 1630 - # GLOBAL_ASM remaining: 212 + ------------------------- 60.22% Complete -------------------------- + # Decompiled functions: 1643 + # GLOBAL_ASM remaining: 203 # NON_MATCHING functions: 10 # NON_EQUIVALENT WIP functions: 57 --------------------------- Game Status ---------------------------- Balloons: 29/47, Keys: 3/4, Trophies: 2/5 T.T. Amulets: 3/4, Wizpig Amulets: 2/4 -------------------------------------------------------------------- - We are collecting silver coins in Treasure Caves. (1/8 silver coins) + We are collecting silver coins in Treasure Caves. (6/8 silver coins) ==================================================================== ADVENTURE TWO (Cleanup & Documentation) - ------------------------- 33.38% Complete -------------------------- + ------------------------- 33.39% Complete -------------------------- # Documented functions: 740 - # Undocumented remaining: 827 + # Undocumented remaining: 829 --------------------------- Game Status ---------------------------- Balloons: 17/47, Keys: 2/4, Trophies: 1/5 T.T. Amulets: 1/4, Wizpig Amulets: 1/4 diff --git a/asm/non_matchings/object_models/func_8005F99C.s b/asm/non_matchings/object_models/func_8005F99C.s deleted file mode 100644 index 567955d6..00000000 --- a/asm/non_matchings/object_models/func_8005F99C.s +++ /dev/null @@ -1,223 +0,0 @@ -glabel func_8005F99C -/* 06059C 8005F99C 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 0605A0 8005F9A0 3C0E8012 */ lui $t6, %hi(D_8011D630) # $t6, 0x8012 -/* 0605A4 8005F9A4 8DCED630 */ lw $t6, %lo(D_8011D630)($t6) -/* 0605A8 8005F9A8 AFB30020 */ sw $s3, 0x20($sp) -/* 0605AC 8005F9AC 008E082A */ slt $at, $a0, $t6 -/* 0605B0 8005F9B0 00809825 */ move $s3, $a0 -/* 0605B4 8005F9B4 AFBF0024 */ sw $ra, 0x24($sp) -/* 0605B8 8005F9B8 AFB2001C */ sw $s2, 0x1c($sp) -/* 0605BC 8005F9BC AFB10018 */ sw $s1, 0x18($sp) -/* 0605C0 8005F9C0 AFB00014 */ sw $s0, 0x14($sp) -/* 0605C4 8005F9C4 14200002 */ bnez $at, .L8005F9D0 -/* 0605C8 8005F9C8 AFA5005C */ sw $a1, 0x5c($sp) -/* 0605CC 8005F9CC 00009825 */ move $s3, $zero -.L8005F9D0: -/* 0605D0 8005F9D0 3C068012 */ lui $a2, %hi(D_8011D62C) # $a2, 0x8012 -/* 0605D4 8005F9D4 24C6D62C */ addiu $a2, %lo(D_8011D62C) # addiu $a2, $a2, -0x29d4 -/* 0605D8 8005F9D8 8CC40000 */ lw $a0, ($a2) -/* 0605DC 8005F9DC 00008825 */ move $s1, $zero -/* 0605E0 8005F9E0 18800017 */ blez $a0, .L8005FA40 -/* 0605E4 8005F9E4 3C038012 */ lui $v1, %hi(D_8011D624) # $v1, 0x8012 -/* 0605E8 8005F9E8 8C63D624 */ lw $v1, %lo(D_8011D624)($v1) -/* 0605EC 8005F9EC 00000000 */ nop -/* 0605F0 8005F9F0 0011C0C0 */ sll $t8, $s1, 3 -.L8005F9F4: -/* 0605F4 8005F9F4 00781021 */ addu $v0, $v1, $t8 -/* 0605F8 8005F9F8 8C590000 */ lw $t9, ($v0) -/* 0605FC 8005F9FC 26310001 */ addiu $s1, $s1, 1 -/* 060600 8005FA00 1679000D */ bne $s3, $t9, .L8005FA38 -/* 060604 8005FA04 0224082A */ slt $at, $s1, $a0 -/* 060608 8005FA08 8C520004 */ lw $s2, 4($v0) -/* 06060C 8005FA0C 8FA5005C */ lw $a1, 0x5c($sp) -/* 060610 8005FA10 0C017F34 */ jal func_8005FCD0 -/* 060614 8005FA14 02402025 */ move $a0, $s2 -/* 060618 8005FA18 10400005 */ beqz $v0, .L8005FA30 -/* 06061C 8005FA1C 00401825 */ move $v1, $v0 -/* 060620 8005FA20 86480030 */ lh $t0, 0x30($s2) -/* 060624 8005FA24 00000000 */ nop -/* 060628 8005FA28 25090001 */ addiu $t1, $t0, 1 -/* 06062C 8005FA2C A6490030 */ sh $t1, 0x30($s2) -.L8005FA30: -/* 060630 8005FA30 100000A0 */ b .L8005FCB4 -/* 060634 8005FA34 00601025 */ move $v0, $v1 -.L8005FA38: -/* 060638 8005FA38 1420FFEE */ bnez $at, .L8005F9F4 -/* 06063C 8005FA3C 0011C0C0 */ sll $t8, $s1, 3 -.L8005FA40: -/* 060640 8005FA40 3C038012 */ lui $v1, %hi(D_8011D634) # $v1, 0x8012 -/* 060644 8005FA44 2463D634 */ addiu $v1, %lo(D_8011D634) # addiu $v1, $v1, -0x29cc -/* 060648 8005FA48 8C620000 */ lw $v0, ($v1) -/* 06064C 8005FA4C 3C0B8012 */ lui $t3, %hi(D_8011D628) # $t3, 0x8012 -/* 060650 8005FA50 18400008 */ blez $v0, .L8005FA74 -/* 060654 8005FA54 244AFFFF */ addiu $t2, $v0, -1 -/* 060658 8005FA58 AC6A0000 */ sw $t2, ($v1) -/* 06065C 8005FA5C 8D6BD628 */ lw $t3, %lo(D_8011D628)($t3) -/* 060660 8005FA60 000A6880 */ sll $t5, $t2, 2 -/* 060664 8005FA64 016D7021 */ addu $t6, $t3, $t5 -/* 060668 8005FA68 8DCF0000 */ lw $t7, ($t6) -/* 06066C 8005FA6C 10000004 */ b .L8005FA80 -/* 060670 8005FA70 AFAF0050 */ sw $t7, 0x50($sp) -.L8005FA74: -/* 060674 8005FA74 24980001 */ addiu $t8, $a0, 1 -/* 060678 8005FA78 AFA40050 */ sw $a0, 0x50($sp) -/* 06067C 8005FA7C ACD80000 */ sw $t8, ($a2) -.L8005FA80: -/* 060680 8005FA80 3C198012 */ lui $t9, %hi(gObjectModelTable) # $t9, 0x8012 -/* 060684 8005FA84 8F39D620 */ lw $t9, %lo(gObjectModelTable)($t9) -/* 060688 8005FA88 00134080 */ sll $t0, $s3, 2 -/* 06068C 8005FA8C 03281021 */ addu $v0, $t9, $t0 -/* 060690 8005FA90 8C500000 */ lw $s0, ($v0) -/* 060694 8005FA94 8C490004 */ lw $t1, 4($v0) -/* 060698 8005FA98 2404001D */ li $a0, 29 -/* 06069C 8005FA9C 01305023 */ subu $t2, $t1, $s0 -/* 0606A0 8005FAA0 AFAA0048 */ sw $t2, 0x48($sp) -/* 0606A4 8005FAA4 0C031877 */ jal get_asset_uncompressed_size -/* 0606A8 8005FAA8 02002825 */ move $a1, $s0 -/* 0606AC 8005FAAC 24440080 */ addiu $a0, $v0, 0x80 -/* 0606B0 8005FAB0 3C05FF00 */ lui $a1, (0xFF0000FF >> 16) # lui $a1, 0xff00 -/* 0606B4 8005FAB4 AFA40034 */ sw $a0, 0x34($sp) -/* 0606B8 8005FAB8 0C01C344 */ jal allocate_from_main_pool -/* 0606BC 8005FABC 34A500FF */ ori $a1, (0xFF0000FF & 0xFFFF) # ori $a1, $a1, 0xff -/* 0606C0 8005FAC0 14400003 */ bnez $v0, .L8005FAD0 -/* 0606C4 8005FAC4 00409025 */ move $s2, $v0 -/* 0606C8 8005FAC8 1000007A */ b .L8005FCB4 -/* 0606CC 8005FACC 00001025 */ move $v0, $zero -.L8005FAD0: -/* 0606D0 8005FAD0 8FAC0034 */ lw $t4, 0x34($sp) -/* 0606D4 8005FAD4 8FA70048 */ lw $a3, 0x48($sp) -/* 0606D8 8005FAD8 024C5821 */ addu $t3, $s2, $t4 -/* 0606DC 8005FADC 01672823 */ subu $a1, $t3, $a3 -/* 0606E0 8005FAE0 AFA50030 */ sw $a1, 0x30($sp) -/* 0606E4 8005FAE4 2404001D */ li $a0, 29 -/* 0606E8 8005FAE8 02003025 */ move $a2, $s0 -/* 0606EC 8005FAEC 0C01DB9A */ jal load_asset_to_address -/* 0606F0 8005FAF0 00008825 */ move $s1, $zero -/* 0606F4 8005FAF4 8FA40030 */ lw $a0, 0x30($sp) -/* 0606F8 8005FAF8 0C031886 */ jal gzip_inflate -/* 0606FC 8005FAFC 02402825 */ move $a1, $s2 -/* 060700 8005FB00 8E4D0000 */ lw $t5, ($s2) -/* 060704 8005FB04 8E4F0004 */ lw $t7, 4($s2) -/* 060708 8005FB08 8E590008 */ lw $t9, 8($s2) -/* 06070C 8005FB0C 01B27021 */ addu $t6, $t5, $s2 -/* 060710 8005FB10 01F2C021 */ addu $t8, $t7, $s2 -/* 060714 8005FB14 8E490038 */ lw $t1, 0x38($s2) -/* 060718 8005FB18 8E4C0014 */ lw $t4, 0x14($s2) -/* 06071C 8005FB1C 8E4D001C */ lw $t5, 0x1c($s2) -/* 060720 8005FB20 8E4F004C */ lw $t7, 0x4c($s2) -/* 060724 8005FB24 86440022 */ lh $a0, 0x22($s2) -/* 060728 8005FB28 AE4E0000 */ sw $t6, ($s2) -/* 06072C 8005FB2C AE580004 */ sw $t8, 4($s2) -/* 060730 8005FB30 03324021 */ addu $t0, $t9, $s2 -/* 060734 8005FB34 24190001 */ li $t9, 1 -/* 060738 8005FB38 01325021 */ addu $t2, $t1, $s2 -/* 06073C 8005FB3C 01925821 */ addu $t3, $t4, $s2 -/* 060740 8005FB40 01B27021 */ addu $t6, $t5, $s2 -/* 060744 8005FB44 01F2C021 */ addu $t8, $t7, $s2 -/* 060748 8005FB48 AE480008 */ sw $t0, 8($s2) -/* 06074C 8005FB4C AE4A0038 */ sw $t2, 0x38($s2) -/* 060750 8005FB50 AE4B0014 */ sw $t3, 0x14($s2) -/* 060754 8005FB54 AE4E001C */ sw $t6, 0x1c($s2) -/* 060758 8005FB58 AE58004C */ sw $t8, 0x4c($s2) -/* 06075C 8005FB5C A6590030 */ sh $t9, 0x30($s2) -/* 060760 8005FB60 AE40000C */ sw $zero, 0xc($s2) -/* 060764 8005FB64 AE400010 */ sw $zero, 0x10($s2) -/* 060768 8005FB68 A6400032 */ sh $zero, 0x32($s2) -/* 06076C 8005FB6C A6400052 */ sh $zero, 0x52($s2) -/* 060770 8005FB70 AE400040 */ sw $zero, 0x40($s2) -/* 060774 8005FB74 A6400048 */ sh $zero, 0x48($s2) -/* 060778 8005FB78 AE400044 */ sw $zero, 0x44($s2) -/* 06077C 8005FB7C 1880001B */ blez $a0, .L8005FBEC -/* 060780 8005FB80 00002825 */ move $a1, $zero -/* 060784 8005FB84 8E500000 */ lw $s0, ($s2) -/* 060788 8005FB88 00001825 */ move $v1, $zero -.L8005FB8C: -/* 06078C 8005FB8C 8E040000 */ lw $a0, ($s0) -/* 060790 8005FB90 A3A5003F */ sb $a1, 0x3f($sp) -/* 060794 8005FB94 34888000 */ ori $t0, $a0, 0x8000 -/* 060798 8005FB98 01002025 */ move $a0, $t0 -/* 06079C 8005FB9C 0C01EB9D */ jal load_texture -/* 0607A0 8005FBA0 AFA3002C */ sw $v1, 0x2c($sp) -/* 0607A4 8005FBA4 8FA3002C */ lw $v1, 0x2c($sp) -/* 0607A8 8005FBA8 8E490000 */ lw $t1, ($s2) -/* 0607AC 8005FBAC 83A5003F */ lb $a1, 0x3f($sp) -/* 0607B0 8005FBB0 01235021 */ addu $t2, $t1, $v1 -/* 0607B4 8005FBB4 AD420000 */ sw $v0, ($t2) -/* 0607B8 8005FBB8 8E4C0000 */ lw $t4, ($s2) -/* 0607BC 8005FBBC 26310001 */ addiu $s1, $s1, 1 -/* 0607C0 8005FBC0 01838021 */ addu $s0, $t4, $v1 -/* 0607C4 8005FBC4 8E0B0000 */ lw $t3, ($s0) -/* 0607C8 8005FBC8 00000000 */ nop -/* 0607CC 8005FBCC 15600002 */ bnez $t3, .L8005FBD8 -/* 0607D0 8005FBD0 00000000 */ nop -/* 0607D4 8005FBD4 24050001 */ li $a1, 1 -.L8005FBD8: -/* 0607D8 8005FBD8 86440022 */ lh $a0, 0x22($s2) -/* 0607DC 8005FBDC 24630008 */ addiu $v1, $v1, 8 -/* 0607E0 8005FBE0 0224082A */ slt $at, $s1, $a0 -/* 0607E4 8005FBE4 1420FFE9 */ bnez $at, .L8005FB8C -/* 0607E8 8005FBE8 26100008 */ addiu $s0, $s0, 8 -.L8005FBEC: -/* 0607EC 8005FBEC 14A0002E */ bnez $a1, .L8005FCA8 -/* 0607F0 8005FBF0 00000000 */ nop -/* 0607F4 8005FBF4 86450028 */ lh $a1, 0x28($s2) -/* 0607F8 8005FBF8 00008825 */ move $s1, $zero -/* 0607FC 8005FBFC 18A0000B */ blez $a1, .L8005FC2C -/* 060800 8005FC00 00000000 */ nop -/* 060804 8005FC04 8E420038 */ lw $v0, 0x38($s2) -/* 060808 8005FC08 240600FF */ li $a2, 255 -.L8005FC0C: -/* 06080C 8005FC0C 90430000 */ lbu $v1, ($v0) -/* 060810 8005FC10 26310001 */ addiu $s1, $s1, 1 -/* 060814 8005FC14 10C30002 */ beq $a2, $v1, .L8005FC20 -/* 060818 8005FC18 0064082A */ slt $at, $v1, $a0 -/* 06081C 8005FC1C 10200022 */ beqz $at, .L8005FCA8 -.L8005FC20: -/* 060820 8005FC20 0225082A */ slt $at, $s1, $a1 -/* 060824 8005FC24 1420FFF9 */ bnez $at, .L8005FC0C -/* 060828 8005FC28 2442000C */ addiu $v0, $v0, 0xc -.L8005FC2C: -/* 06082C 8005FC2C 0C0183AA */ jal func_80060EA8 -/* 060830 8005FC30 02402025 */ move $a0, $s2 -/* 060834 8005FC34 1440001C */ bnez $v0, .L8005FCA8 -/* 060838 8005FC38 02402025 */ move $a0, $s2 -/* 06083C 8005FC3C 0C018680 */ jal func_80061A00 -/* 060840 8005FC40 02602825 */ move $a1, $s3 -/* 060844 8005FC44 14400018 */ bnez $v0, .L8005FCA8 -/* 060848 8005FC48 00000000 */ nop -/* 06084C 8005FC4C 8FA5005C */ lw $a1, 0x5c($sp) -/* 060850 8005FC50 0C017F34 */ jal func_8005FCD0 -/* 060854 8005FC54 02402025 */ move $a0, $s2 -/* 060858 8005FC58 10400013 */ beqz $v0, .L8005FCA8 -/* 06085C 8005FC5C 00401825 */ move $v1, $v0 -/* 060860 8005FC60 3C048012 */ lui $a0, %hi(D_8011D624) # $a0, 0x8012 -/* 060864 8005FC64 8FAD0050 */ lw $t5, 0x50($sp) -/* 060868 8005FC68 2484D624 */ addiu $a0, %lo(D_8011D624) # addiu $a0, $a0, -0x29dc -/* 06086C 8005FC6C 8C8F0000 */ lw $t7, ($a0) -/* 060870 8005FC70 000D70C0 */ sll $t6, $t5, 3 -/* 060874 8005FC74 01EEC021 */ addu $t8, $t7, $t6 -/* 060878 8005FC78 AF130000 */ sw $s3, ($t8) -/* 06087C 8005FC7C 8C990000 */ lw $t9, ($a0) -/* 060880 8005FC80 3C098012 */ lui $t1, %hi(D_8011D62C) # $t1, 0x8012 -/* 060884 8005FC84 032E4021 */ addu $t0, $t9, $t6 -/* 060888 8005FC88 AD120004 */ sw $s2, 4($t0) -/* 06088C 8005FC8C 8D29D62C */ lw $t1, %lo(D_8011D62C)($t1) -/* 060890 8005FC90 00601025 */ move $v0, $v1 -/* 060894 8005FC94 29210046 */ slti $at, $t1, 0x46 -/* 060898 8005FC98 10200003 */ beqz $at, .L8005FCA8 -/* 06089C 8005FC9C 00000000 */ nop -/* 0608A0 8005FCA0 10000004 */ b .L8005FCB4 -/* 0608A4 8005FCA4 A0600020 */ sb $zero, 0x20($v1) -.L8005FCA8: -/* 0608A8 8005FCA8 0C018016 */ jal free_object_model -/* 0608AC 8005FCAC 02402025 */ move $a0, $s2 -/* 0608B0 8005FCB0 00001025 */ move $v0, $zero -.L8005FCB4: -/* 0608B4 8005FCB4 8FBF0024 */ lw $ra, 0x24($sp) -/* 0608B8 8005FCB8 8FB00014 */ lw $s0, 0x14($sp) -/* 0608BC 8005FCBC 8FB10018 */ lw $s1, 0x18($sp) -/* 0608C0 8005FCC0 8FB2001C */ lw $s2, 0x1c($sp) -/* 0608C4 8005FCC4 8FB30020 */ lw $s3, 0x20($sp) -/* 0608C8 8005FCC8 03E00008 */ jr $ra -/* 0608CC 8005FCCC 27BD0058 */ addiu $sp, $sp, 0x58 - diff --git a/asm/non_matchings/objects/func_8000FD54.s b/asm/non_matchings/objects/func_8000FD54.s deleted file mode 100644 index d416d448..00000000 --- a/asm/non_matchings/objects/func_8000FD54.s +++ /dev/null @@ -1,171 +0,0 @@ -glabel func_8000FD54 -/* 010954 8000FD54 27BDFFC8 */ addiu $sp, $sp, -0x38 -/* 010958 8000FD58 3C0E8012 */ lui $t6, %hi(gAssetsObjectHeadersTableLength) # $t6, 0x8012 -/* 01095C 8000FD5C 8DCEAD68 */ lw $t6, %lo(gAssetsObjectHeadersTableLength)($t6) -/* 010960 8000FD60 AFBF002C */ sw $ra, 0x2c($sp) -/* 010964 8000FD64 008E082A */ slt $at, $a0, $t6 -/* 010968 8000FD68 AFB40028 */ sw $s4, 0x28($sp) -/* 01096C 8000FD6C AFB30024 */ sw $s3, 0x24($sp) -/* 010970 8000FD70 AFB20020 */ sw $s2, 0x20($sp) -/* 010974 8000FD74 AFB1001C */ sw $s1, 0x1c($sp) -/* 010978 8000FD78 14200002 */ bnez $at, .L8000FD84 -/* 01097C 8000FD7C AFB00018 */ sw $s0, 0x18($sp) -/* 010980 8000FD80 00002025 */ move $a0, $zero -.L8000FD84: -/* 010984 8000FD84 0C0031C6 */ jal load_object_header -/* 010988 8000FD88 AFA40038 */ sw $a0, 0x38($sp) -/* 01098C 8000FD8C 14400003 */ bnez $v0, .L8000FD9C -/* 010990 8000FD90 00409825 */ move $s3, $v0 -/* 010994 8000FD94 10000080 */ b .L8000FF98 -/* 010998 8000FD98 00001025 */ move $v0, $zero -.L8000FD9C: -/* 01099C 8000FD9C 82700055 */ lb $s0, 0x55($s3) -/* 0109A0 8000FDA0 3405FFFF */ li $a1, 65535 -/* 0109A4 8000FDA4 00107880 */ sll $t7, $s0, 2 -/* 0109A8 8000FDA8 25F00080 */ addiu $s0, $t7, 0x80 -/* 0109AC 8000FDAC 0C01C344 */ jal allocate_from_main_pool -/* 0109B0 8000FDB0 02002025 */ move $a0, $s0 -/* 0109B4 8000FDB4 14400006 */ bnez $v0, .L8000FDD0 -/* 0109B8 8000FDB8 00409025 */ move $s2, $v0 -/* 0109BC 8000FDBC 8FA40038 */ lw $a0, 0x38($sp) -/* 0109C0 8000FDC0 0C003211 */ jal try_free_object_header -/* 0109C4 8000FDC4 00000000 */ nop -/* 0109C8 8000FDC8 10000073 */ b .L8000FF98 -/* 0109CC 8000FDCC 00001025 */ move $v0, $zero -.L8000FDD0: -/* 0109D0 8000FDD0 1A000013 */ blez $s0, .L8000FE20 -/* 0109D4 8000FDD4 00008825 */ move $s1, $zero -/* 0109D8 8000FDD8 32050003 */ andi $a1, $s0, 3 -/* 0109DC 8000FDDC 10A00007 */ beqz $a1, .L8000FDFC -/* 0109E0 8000FDE0 00A02025 */ move $a0, $a1 -/* 0109E4 8000FDE4 00401821 */ addu $v1, $v0, $zero -.L8000FDE8: -/* 0109E8 8000FDE8 26310001 */ addiu $s1, $s1, 1 -/* 0109EC 8000FDEC A0600000 */ sb $zero, ($v1) -/* 0109F0 8000FDF0 1491FFFD */ bne $a0, $s1, .L8000FDE8 -/* 0109F4 8000FDF4 24630001 */ addiu $v1, $v1, 1 -/* 0109F8 8000FDF8 12300008 */ beq $s1, $s0, .L8000FE1C -.L8000FDFC: -/* 0109FC 8000FDFC 00511821 */ addu $v1, $v0, $s1 -.L8000FE00: -/* 010A00 8000FE00 26310004 */ addiu $s1, $s1, 4 -/* 010A04 8000FE04 A0600000 */ sb $zero, ($v1) -/* 010A08 8000FE08 A0600001 */ sb $zero, 1($v1) -/* 010A0C 8000FE0C A0600002 */ sb $zero, 2($v1) -/* 010A10 8000FE10 A0600003 */ sb $zero, 3($v1) -/* 010A14 8000FE14 1630FFFA */ bne $s1, $s0, .L8000FE00 -/* 010A18 8000FE18 24630004 */ addiu $v1, $v1, 4 -.L8000FE1C: -/* 010A1C 8000FE1C 00008825 */ move $s1, $zero -.L8000FE20: -/* 010A20 8000FE20 24180002 */ li $t8, 2 -/* 010A24 8000FE24 A4580006 */ sh $t8, 6($v0) -/* 010A28 8000FE28 AC530040 */ sw $s3, 0x40($v0) -/* 010A2C 8000FE2C 8FB90038 */ lw $t9, 0x38($sp) -/* 010A30 8000FE30 00000000 */ nop -/* 010A34 8000FE34 A459002C */ sh $t9, 0x2c($v0) -/* 010A38 8000FE38 8FA80038 */ lw $t0, 0x38($sp) -/* 010A3C 8000FE3C 00000000 */ nop -/* 010A40 8000FE40 A448004A */ sh $t0, 0x4a($v0) -/* 010A44 8000FE44 C664000C */ lwc1 $f4, 0xc($s3) -/* 010A48 8000FE48 00000000 */ nop -/* 010A4C 8000FE4C E4440008 */ swc1 $f4, 8($v0) -/* 010A50 8000FE50 96690030 */ lhu $t1, 0x30($s3) -/* 010A54 8000FE54 00000000 */ nop -/* 010A58 8000FE58 312A0080 */ andi $t2, $t1, 0x80 -/* 010A5C 8000FE5C 11400005 */ beqz $t2, .L8000FE74 -/* 010A60 8000FE60 00000000 */ nop -/* 010A64 8000FE64 844B0006 */ lh $t3, 6($v0) -/* 010A68 8000FE68 00000000 */ nop -/* 010A6C 8000FE6C 356C0080 */ ori $t4, $t3, 0x80 -/* 010A70 8000FE70 A44C0006 */ sh $t4, 6($v0) -.L8000FE74: -/* 010A74 8000FE74 8C430040 */ lw $v1, 0x40($v0) -/* 010A78 8000FE78 244E0080 */ addiu $t6, $v0, 0x80 -/* 010A7C 8000FE7C 806D0053 */ lb $t5, 0x53($v1) -/* 010A80 8000FE80 80740055 */ lb $s4, 0x55($v1) -/* 010A84 8000FE84 AFAD0034 */ sw $t5, 0x34($sp) -/* 010A88 8000FE88 AC4E0068 */ sw $t6, 0x68($v0) -/* 010A8C 8000FE8C 8FAF0034 */ lw $t7, 0x34($sp) -/* 010A90 8000FE90 00009825 */ move $s3, $zero -/* 010A94 8000FE94 15E0001B */ bnez $t7, .L8000FF04 -/* 010A98 8000FE98 00000000 */ nop -/* 010A9C 8000FE9C 1A800031 */ blez $s4, .L8000FF64 -/* 010AA0 8000FEA0 00008025 */ move $s0, $zero -.L8000FEA4: -/* 010AA4 8000FEA4 8E580040 */ lw $t8, 0x40($s2) -/* 010AA8 8000FEA8 00002825 */ move $a1, $zero -/* 010AAC 8000FEAC 8F190010 */ lw $t9, 0x10($t8) -/* 010AB0 8000FEB0 00000000 */ nop -/* 010AB4 8000FEB4 03304021 */ addu $t0, $t9, $s0 -/* 010AB8 8000FEB8 8D040000 */ lw $a0, ($t0) -/* 010ABC 8000FEBC 0C017E67 */ jal func_8005F99C -/* 010AC0 8000FEC0 00000000 */ nop -/* 010AC4 8000FEC4 8E490068 */ lw $t1, 0x68($s2) -/* 010AC8 8000FEC8 26310001 */ addiu $s1, $s1, 1 -/* 010ACC 8000FECC 01305021 */ addu $t2, $t1, $s0 -/* 010AD0 8000FED0 AD420000 */ sw $v0, ($t2) -/* 010AD4 8000FED4 8E4B0068 */ lw $t3, 0x68($s2) -/* 010AD8 8000FED8 00000000 */ nop -/* 010ADC 8000FEDC 01706021 */ addu $t4, $t3, $s0 -/* 010AE0 8000FEE0 8D8D0000 */ lw $t5, ($t4) -/* 010AE4 8000FEE4 00000000 */ nop -/* 010AE8 8000FEE8 15A00002 */ bnez $t5, .L8000FEF4 -/* 010AEC 8000FEEC 00000000 */ nop -/* 010AF0 8000FEF0 24130001 */ li $s3, 1 -.L8000FEF4: -/* 010AF4 8000FEF4 1634FFEB */ bne $s1, $s4, .L8000FEA4 -/* 010AF8 8000FEF8 26100004 */ addiu $s0, $s0, 4 -/* 010AFC 8000FEFC 10000019 */ b .L8000FF64 -/* 010B00 8000FF00 00000000 */ nop -.L8000FF04: -/* 010B04 8000FF04 1A800017 */ blez $s4, .L8000FF64 -/* 010B08 8000FF08 00008025 */ move $s0, $zero -.L8000FF0C: -/* 010B0C 8000FF0C 8E4E0040 */ lw $t6, 0x40($s2) -/* 010B10 8000FF10 2405000A */ li $a1, 10 -/* 010B14 8000FF14 8DCF0010 */ lw $t7, 0x10($t6) -/* 010B18 8000FF18 00000000 */ nop -/* 010B1C 8000FF1C 01F0C021 */ addu $t8, $t7, $s0 -/* 010B20 8000FF20 8F040000 */ lw $a0, ($t8) -/* 010B24 8000FF24 0C01F04B */ jal func_8007C12C -/* 010B28 8000FF28 00000000 */ nop -/* 010B2C 8000FF2C 8E590068 */ lw $t9, 0x68($s2) -/* 010B30 8000FF30 26310001 */ addiu $s1, $s1, 1 -/* 010B34 8000FF34 03304021 */ addu $t0, $t9, $s0 -/* 010B38 8000FF38 AD020000 */ sw $v0, ($t0) -/* 010B3C 8000FF3C 8E490068 */ lw $t1, 0x68($s2) -/* 010B40 8000FF40 00000000 */ nop -/* 010B44 8000FF44 01305021 */ addu $t2, $t1, $s0 -/* 010B48 8000FF48 8D4B0000 */ lw $t3, ($t2) -/* 010B4C 8000FF4C 00000000 */ nop -/* 010B50 8000FF50 15600002 */ bnez $t3, .L8000FF5C -/* 010B54 8000FF54 00000000 */ nop -/* 010B58 8000FF58 24130001 */ li $s3, 1 -.L8000FF5C: -/* 010B5C 8000FF5C 1634FFEB */ bne $s1, $s4, .L8000FF0C -/* 010B60 8000FF60 26100004 */ addiu $s0, $s0, 4 -.L8000FF64: -/* 010B64 8000FF64 1260000C */ beqz $s3, .L8000FF98 -/* 010B68 8000FF68 02401025 */ move $v0, $s2 -/* 010B6C 8000FF6C 8FA60034 */ lw $a2, 0x34($sp) -/* 010B70 8000FF70 02402025 */ move $a0, $s2 -/* 010B74 8000FF74 0C003D92 */ jal objFreeAssets -/* 010B78 8000FF78 02802825 */ move $a1, $s4 -/* 010B7C 8000FF7C 8FA40038 */ lw $a0, 0x38($sp) -/* 010B80 8000FF80 0C003211 */ jal try_free_object_header -/* 010B84 8000FF84 00000000 */ nop -/* 010B88 8000FF88 0C01C450 */ jal free_from_memory_pool -/* 010B8C 8000FF8C 02402025 */ move $a0, $s2 -/* 010B90 8000FF90 10000001 */ b .L8000FF98 -/* 010B94 8000FF94 00001025 */ move $v0, $zero -.L8000FF98: -/* 010B98 8000FF98 8FBF002C */ lw $ra, 0x2c($sp) -/* 010B9C 8000FF9C 8FB00018 */ lw $s0, 0x18($sp) -/* 010BA0 8000FFA0 8FB1001C */ lw $s1, 0x1c($sp) -/* 010BA4 8000FFA4 8FB20020 */ lw $s2, 0x20($sp) -/* 010BA8 8000FFA8 8FB30024 */ lw $s3, 0x24($sp) -/* 010BAC 8000FFAC 8FB40028 */ lw $s4, 0x28($sp) -/* 010BB0 8000FFB0 03E00008 */ jr $ra -/* 010BB4 8000FFB4 27BD0038 */ addiu $sp, $sp, 0x38 - diff --git a/asm/non_matchings/objects/func_80015348.s b/asm/non_matchings/objects/func_80015348.s deleted file mode 100644 index 1259a28c..00000000 --- a/asm/non_matchings/objects/func_80015348.s +++ /dev/null @@ -1,172 +0,0 @@ -glabel func_80015348 -/* 015F48 80015348 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 015F4C 8001534C AFB40034 */ sw $s4, 0x34($sp) -/* 015F50 80015350 AFB30030 */ sw $s3, 0x30($sp) -/* 015F54 80015354 00A4082A */ slt $at, $a1, $a0 -/* 015F58 80015358 00809825 */ move $s3, $a0 -/* 015F5C 8001535C 00A0A025 */ move $s4, $a1 -/* 015F60 80015360 AFBF003C */ sw $ra, 0x3c($sp) -/* 015F64 80015364 AFB50038 */ sw $s5, 0x38($sp) -/* 015F68 80015368 AFB2002C */ sw $s2, 0x2c($sp) -/* 015F6C 8001536C AFB10028 */ sw $s1, 0x28($sp) -/* 015F70 80015370 AFB00024 */ sw $s0, 0x24($sp) -/* 015F74 80015374 E7B70018 */ swc1 $f23, 0x18($sp) -/* 015F78 80015378 E7B6001C */ swc1 $f22, 0x1c($sp) -/* 015F7C 8001537C E7B50010 */ swc1 $f21, 0x10($sp) -/* 015F80 80015380 14200080 */ bnez $at, .L80015584 -/* 015F84 80015384 E7B40014 */ swc1 $f20, 0x14($sp) -/* 015F88 80015388 00A4082A */ slt $at, $a1, $a0 -/* 015F8C 8001538C 14200034 */ bnez $at, .L80015460 -/* 015F90 80015390 00048880 */ sll $s1, $a0, 2 -/* 015F94 80015394 3C01C67A */ li $at, 0xC67A0000 # -16000.000000 -/* 015F98 80015398 0005A880 */ sll $s5, $a1, 2 -/* 015F9C 8001539C 3C128012 */ lui $s2, %hi(gObjPtrList) # $s2, 0x8012 -/* 015FA0 800153A0 4481A000 */ mtc1 $at, $f20 -/* 015FA4 800153A4 4480B000 */ mtc1 $zero, $f22 -/* 015FA8 800153A8 2652AE58 */ addiu $s2, %lo(gObjPtrList) # addiu $s2, $s2, -0x51a8 -/* 015FAC 800153AC 26B50004 */ addiu $s5, $s5, 4 -.L800153B0: -/* 015FB0 800153B0 8E4E0000 */ lw $t6, ($s2) -/* 015FB4 800153B4 00000000 */ nop -/* 015FB8 800153B8 01D17821 */ addu $t7, $t6, $s1 -/* 015FBC 800153BC 8DE40000 */ lw $a0, ($t7) -/* 015FC0 800153C0 00000000 */ nop -/* 015FC4 800153C4 10800022 */ beqz $a0, .L80015450 -/* 015FC8 800153C8 00808025 */ move $s0, $a0 -/* 015FCC 800153CC 84980006 */ lh $t8, 6($a0) -/* 015FD0 800153D0 00000000 */ nop -/* 015FD4 800153D4 33198000 */ andi $t9, $t8, 0x8000 -/* 015FD8 800153D8 13200009 */ beqz $t9, .L80015400 -/* 015FDC 800153DC 00000000 */ nop -/* 015FE0 800153E0 C60C000C */ lwc1 $f12, 0xc($s0) -/* 015FE4 800153E4 C60E0010 */ lwc1 $f14, 0x10($s0) -/* 015FE8 800153E8 8E060014 */ lw $a2, 0x14($s0) -/* 015FEC 800153EC 0C01A772 */ jal func_80069DC8 -/* 015FF0 800153F0 00000000 */ nop -/* 015FF4 800153F4 46000107 */ neg.s $f4, $f0 -/* 015FF8 800153F8 10000016 */ b .L80015454 -/* 015FFC 800153FC E6040030 */ swc1 $f4, 0x30($s0) -.L80015400: -/* 016000 80015400 8C880040 */ lw $t0, 0x40($a0) -/* 016004 80015404 00000000 */ nop -/* 016008 80015408 95090030 */ lhu $t1, 0x30($t0) -/* 01600C 8001540C 00000000 */ nop -/* 016010 80015410 312A0080 */ andi $t2, $t1, 0x80 -/* 016014 80015414 11400006 */ beqz $t2, .L80015430 -/* 016018 80015418 00000000 */ nop -/* 01601C 8001541C C6060030 */ lwc1 $f6, 0x30($s0) -/* 016020 80015420 00000000 */ nop -/* 016024 80015424 46143200 */ add.s $f8, $f6, $f20 -/* 016028 80015428 1000000A */ b .L80015454 -/* 01602C 8001542C E6080030 */ swc1 $f8, 0x30($s0) -.L80015430: -/* 016030 80015430 C60C000C */ lwc1 $f12, 0xc($s0) -/* 016034 80015434 C60E0010 */ lwc1 $f14, 0x10($s0) -/* 016038 80015438 8E060014 */ lw $a2, 0x14($s0) -/* 01603C 8001543C 0C01A772 */ jal func_80069DC8 -/* 016040 80015440 00000000 */ nop -/* 016044 80015444 46000287 */ neg.s $f10, $f0 -/* 016048 80015448 10000002 */ b .L80015454 -/* 01604C 8001544C E60A0030 */ swc1 $f10, 0x30($s0) -.L80015450: -/* 016050 80015450 E6160030 */ swc1 $f22, 0x30($s0) -.L80015454: -/* 016054 80015454 26310004 */ addiu $s1, $s1, 4 -/* 016058 80015458 16B1FFD5 */ bne $s5, $s1, .L800153B0 -/* 01605C 8001545C 00000000 */ nop -.L80015460: -/* 016060 80015460 3C128012 */ lui $s2, %hi(gObjPtrList) # $s2, 0x8012 -/* 016064 80015464 2652AE58 */ addiu $s2, %lo(gObjPtrList) # addiu $s2, $s2, -0x51a8 -/* 016068 80015468 0274082A */ slt $at, $s3, $s4 -.L8001546C: -/* 01606C 8001546C 24050001 */ li $a1, 1 -/* 016070 80015470 10200042 */ beqz $at, .L8001557C -/* 016074 80015474 02601025 */ move $v0, $s3 -/* 016078 80015478 02931823 */ subu $v1, $s4, $s3 -/* 01607C 8001547C 306B0001 */ andi $t3, $v1, 1 -/* 016080 80015480 11600015 */ beqz $t3, .L800154D8 -/* 016084 80015484 00028880 */ sll $s1, $v0, 2 -/* 016088 80015488 8E4C0000 */ lw $t4, ($s2) -/* 01608C 8001548C 00131880 */ sll $v1, $s3, 2 -/* 016090 80015490 01831021 */ addu $v0, $t4, $v1 -/* 016094 80015494 8C440000 */ lw $a0, ($v0) -/* 016098 80015498 8C460004 */ lw $a2, 4($v0) -/* 01609C 8001549C C4800030 */ lwc1 $f0, 0x30($a0) -/* 0160A0 800154A0 C4C20030 */ lwc1 $f2, 0x30($a2) -/* 0160A4 800154A4 26670001 */ addiu $a3, $s3, 1 -/* 0160A8 800154A8 4602003C */ c.lt.s $f0, $f2 -/* 0160AC 800154AC 00000000 */ nop -/* 0160B0 800154B0 45000006 */ bc1f .L800154CC -/* 0160B4 800154B4 00000000 */ nop -/* 0160B8 800154B8 AC460000 */ sw $a2, ($v0) -/* 0160BC 800154BC 8E4D0000 */ lw $t5, ($s2) -/* 0160C0 800154C0 00002825 */ move $a1, $zero -/* 0160C4 800154C4 01A37021 */ addu $t6, $t5, $v1 -/* 0160C8 800154C8 ADC40004 */ sw $a0, 4($t6) -.L800154CC: -/* 0160CC 800154CC 10F4002B */ beq $a3, $s4, .L8001557C -/* 0160D0 800154D0 00E01025 */ move $v0, $a3 -/* 0160D4 800154D4 00028880 */ sll $s1, $v0, 2 -.L800154D8: -/* 0160D8 800154D8 00143080 */ sll $a2, $s4, 2 -.L800154DC: -/* 0160DC 800154DC 8E4F0000 */ lw $t7, ($s2) -/* 0160E0 800154E0 00000000 */ nop -/* 0160E4 800154E4 01F11021 */ addu $v0, $t7, $s1 -/* 0160E8 800154E8 8C440000 */ lw $a0, ($v0) -/* 0160EC 800154EC 8C430004 */ lw $v1, 4($v0) -/* 0160F0 800154F0 C4900030 */ lwc1 $f16, 0x30($a0) -/* 0160F4 800154F4 C4600030 */ lwc1 $f0, 0x30($v1) -/* 0160F8 800154F8 00000000 */ nop -/* 0160FC 800154FC 4600803C */ c.lt.s $f16, $f0 -/* 016100 80015500 00000000 */ nop -/* 016104 80015504 4500000D */ bc1f .L8001553C -/* 016108 80015508 00000000 */ nop -/* 01610C 8001550C AC430000 */ sw $v1, ($v0) -/* 016110 80015510 8E580000 */ lw $t8, ($s2) -/* 016114 80015514 00002825 */ move $a1, $zero -/* 016118 80015518 0311C821 */ addu $t9, $t8, $s1 -/* 01611C 8001551C AF240004 */ sw $a0, 4($t9) -/* 016120 80015520 8E480000 */ lw $t0, ($s2) -/* 016124 80015524 00000000 */ nop -/* 016128 80015528 01111021 */ addu $v0, $t0, $s1 -/* 01612C 8001552C 8C430004 */ lw $v1, 4($v0) -/* 016130 80015530 00000000 */ nop -/* 016134 80015534 C4600030 */ lwc1 $f0, 0x30($v1) -/* 016138 80015538 00000000 */ nop -.L8001553C: -/* 01613C 8001553C 8C440008 */ lw $a0, 8($v0) -/* 016140 80015540 00000000 */ nop -/* 016144 80015544 C4920030 */ lwc1 $f18, 0x30($a0) -/* 016148 80015548 00000000 */ nop -/* 01614C 8001554C 4612003C */ c.lt.s $f0, $f18 -/* 016150 80015550 00000000 */ nop -/* 016154 80015554 45000006 */ bc1f .L80015570 -/* 016158 80015558 00000000 */ nop -/* 01615C 8001555C AC440004 */ sw $a0, 4($v0) -/* 016160 80015560 8E490000 */ lw $t1, ($s2) -/* 016164 80015564 00002825 */ move $a1, $zero -/* 016168 80015568 01315021 */ addu $t2, $t1, $s1 -/* 01616C 8001556C AD430008 */ sw $v1, 8($t2) -.L80015570: -/* 016170 80015570 26310008 */ addiu $s1, $s1, 8 -/* 016174 80015574 1626FFD9 */ bne $s1, $a2, .L800154DC -/* 016178 80015578 00000000 */ nop -.L8001557C: -/* 01617C 8001557C 10A0FFBB */ beqz $a1, .L8001546C -/* 016180 80015580 0274082A */ slt $at, $s3, $s4 -.L80015584: -/* 016184 80015584 8FBF003C */ lw $ra, 0x3c($sp) -/* 016188 80015588 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 01618C 8001558C C7B40014 */ lwc1 $f20, 0x14($sp) -/* 016190 80015590 C7B70018 */ lwc1 $f23, 0x18($sp) -/* 016194 80015594 C7B6001C */ lwc1 $f22, 0x1c($sp) -/* 016198 80015598 8FB00024 */ lw $s0, 0x24($sp) -/* 01619C 8001559C 8FB10028 */ lw $s1, 0x28($sp) -/* 0161A0 800155A0 8FB2002C */ lw $s2, 0x2c($sp) -/* 0161A4 800155A4 8FB30030 */ lw $s3, 0x30($sp) -/* 0161A8 800155A8 8FB40034 */ lw $s4, 0x34($sp) -/* 0161AC 800155AC 8FB50038 */ lw $s5, 0x38($sp) -/* 0161B0 800155B0 03E00008 */ jr $ra -/* 0161B4 800155B4 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/objects/func_80016748.s b/asm/non_matchings/objects/func_80016748.s deleted file mode 100644 index 45846e92..00000000 --- a/asm/non_matchings/objects/func_80016748.s +++ /dev/null @@ -1,302 +0,0 @@ -.late_rodata -glabel D_800E55F8 -.double 0.3 -glabel D_800E5600 -.double 0.1 - -.text -glabel func_80016748 -/* 017348 80016748 27BDFF10 */ addiu $sp, $sp, -0xf0 -/* 01734C 8001674C AFBF007C */ sw $ra, 0x7c($sp) -/* 017350 80016750 AFBE0078 */ sw $fp, 0x78($sp) -/* 017354 80016754 AFB70074 */ sw $s7, 0x74($sp) -/* 017358 80016758 AFB60070 */ sw $s6, 0x70($sp) -/* 01735C 8001675C AFB5006C */ sw $s5, 0x6c($sp) -/* 017360 80016760 AFB40068 */ sw $s4, 0x68($sp) -/* 017364 80016764 AFB30064 */ sw $s3, 0x64($sp) -/* 017368 80016768 AFB20060 */ sw $s2, 0x60($sp) -/* 01736C 8001676C AFB1005C */ sw $s1, 0x5c($sp) -/* 017370 80016770 AFB00058 */ sw $s0, 0x58($sp) -/* 017374 80016774 E7BF0050 */ swc1 $f31, 0x50($sp) -/* 017378 80016778 E7BE0054 */ swc1 $f30, 0x54($sp) -/* 01737C 8001677C E7BD0048 */ swc1 $f29, 0x48($sp) -/* 017380 80016780 E7BC004C */ swc1 $f28, 0x4c($sp) -/* 017384 80016784 E7BB0040 */ swc1 $f27, 0x40($sp) -/* 017388 80016788 E7BA0044 */ swc1 $f26, 0x44($sp) -/* 01738C 8001678C E7B90038 */ swc1 $f25, 0x38($sp) -/* 017390 80016790 E7B8003C */ swc1 $f24, 0x3c($sp) -/* 017394 80016794 E7B70030 */ swc1 $f23, 0x30($sp) -/* 017398 80016798 E7B60034 */ swc1 $f22, 0x34($sp) -/* 01739C 8001679C E7B50028 */ swc1 $f21, 0x28($sp) -/* 0173A0 800167A0 E7B4002C */ swc1 $f20, 0x2c($sp) -/* 0173A4 800167A4 8CAE0044 */ lw $t6, 0x44($a1) -/* 0173A8 800167A8 00808025 */ move $s0, $a0 -/* 0173AC 800167AC 11C000ED */ beqz $t6, .L80016B64 -/* 0173B0 800167B0 00A0A825 */ move $s5, $a1 -/* 0173B4 800167B4 8CAF0068 */ lw $t7, 0x68($a1) -/* 0173B8 800167B8 C484000C */ lwc1 $f4, 0xc($a0) -/* 0173BC 800167BC C4A6000C */ lwc1 $f6, 0xc($a1) -/* 0173C0 800167C0 8DE20000 */ lw $v0, ($t7) -/* 0173C4 800167C4 46062201 */ sub.s $f8, $f4, $f6 -/* 0173C8 800167C8 8C530000 */ lw $s3, ($v0) -/* 0173CC 800167CC E7A800A8 */ swc1 $f8, 0xa8($sp) -/* 0173D0 800167D0 C4B00010 */ lwc1 $f16, 0x10($a1) -/* 0173D4 800167D4 C48A0010 */ lwc1 $f10, 0x10($a0) -/* 0173D8 800167D8 00000000 */ nop -/* 0173DC 800167DC 46105481 */ sub.s $f18, $f10, $f16 -/* 0173E0 800167E0 C7AA00A8 */ lwc1 $f10, 0xa8($sp) -/* 0173E4 800167E4 E7B200A4 */ swc1 $f18, 0xa4($sp) -/* 0173E8 800167E8 C4A60014 */ lwc1 $f6, 0x14($a1) -/* 0173EC 800167EC C4840014 */ lwc1 $f4, 0x14($a0) -/* 0173F0 800167F0 460A5402 */ mul.s $f16, $f10, $f10 -/* 0173F4 800167F4 C7B200A4 */ lwc1 $f18, 0xa4($sp) -/* 0173F8 800167F8 46062201 */ sub.s $f8, $f4, $f6 -/* 0173FC 800167FC 46129102 */ mul.s $f4, $f18, $f18 -/* 017400 80016800 E7A800A0 */ swc1 $f8, 0xa0($sp) -/* 017404 80016804 C7A800A0 */ lwc1 $f8, 0xa0($sp) -/* 017408 80016808 00000000 */ nop -/* 01740C 8001680C 46084282 */ mul.s $f10, $f8, $f8 -/* 017410 80016810 46048180 */ add.s $f6, $f16, $f4 -/* 017414 80016814 0C0326B4 */ jal sqrtf -/* 017418 80016818 460A3300 */ add.s $f12, $f6, $f10 -/* 01741C 8001681C C672003C */ lwc1 $f18, 0x3c($s3) -/* 017420 80016820 3C014049 */ li $at, 0x40490000 # 3.140625 -/* 017424 80016824 4481F800 */ mtc1 $at, $f31 -/* 017428 80016828 4480F000 */ mtc1 $zero, $f30 -/* 01742C 8001682C 46009421 */ cvt.d.s $f16, $f18 -/* 017430 80016830 463E8100 */ add.d $f4, $f16, $f30 -/* 017434 80016834 27A400AC */ addiu $a0, $sp, 0xac -/* 017438 80016838 46000221 */ cvt.d.s $f8, $f0 -/* 01743C 8001683C 4628203C */ c.lt.d $f4, $f8 -/* 017440 80016840 00000000 */ nop -/* 017444 80016844 450100C8 */ bc1t .L80016B68 -/* 017448 80016848 8FBF007C */ lw $ra, 0x7c($sp) -/* 01744C 8001684C 8E16004C */ lw $s6, 0x4c($s0) -/* 017450 80016850 8EB4004C */ lw $s4, 0x4c($s5) -/* 017454 80016854 0C01BF0C */ jal object_transform_to_matrix -/* 017458 80016858 02A02825 */ move $a1, $s5 -/* 01745C 8001685C 86780020 */ lh $t8, 0x20($s3) -/* 017460 80016860 0000F025 */ move $fp, $zero -/* 017464 80016864 1B0000BF */ blez $t8, .L80016B64 -/* 017468 80016868 00009025 */ move $s2, $zero -/* 01746C 8001686C 3C01800E */ lui $at, %hi(D_800E55F8 + 4) # $at, 0x800e -/* 017470 80016870 C43D55F8 */ lwc1 $f29, %lo(D_800E55F8)($at) -/* 017474 80016874 C43C55FC */ lwc1 $f28, %lo(D_800E55F8 + 4)($at) -/* 017478 80016878 3C01800E */ lui $at, %hi(D_800E5600 + 4) # $at, 0x800e -/* 01747C 8001687C C43B5600 */ lwc1 $f27, %lo(D_800E5600)($at) -/* 017480 80016880 C43A5604 */ lwc1 $f26, %lo(D_800E5600 + 4)($at) -/* 017484 80016884 4480C000 */ mtc1 $zero, $f24 -/* 017488 80016888 2417000A */ li $s7, 10 -.L8001688C: -/* 01748C 8001688C 8E68001C */ lw $t0, 0x1c($s3) -/* 017490 80016890 8EB90044 */ lw $t9, 0x44($s5) -/* 017494 80016894 01124821 */ addu $t1, $t0, $s2 -/* 017498 80016898 852A0000 */ lh $t2, ($t1) -/* 01749C 8001689C 27A400AC */ addiu $a0, $sp, 0xac -/* 0174A0 800168A0 01570019 */ multu $t2, $s7 -/* 0174A4 800168A4 00005812 */ mflo $t3 -/* 0174A8 800168A8 032B6021 */ addu $t4, $t9, $t3 -/* 0174AC 800168AC 858D0000 */ lh $t5, ($t4) -/* 0174B0 800168B0 00000000 */ nop -/* 0174B4 800168B4 448D3000 */ mtc1 $t5, $f6 -/* 0174B8 800168B8 00000000 */ nop -/* 0174BC 800168BC 468032A0 */ cvt.s.w $f10, $f6 -/* 0174C0 800168C0 E7AA00A8 */ swc1 $f10, 0xa8($sp) -/* 0174C4 800168C4 8E6F001C */ lw $t7, 0x1c($s3) -/* 0174C8 800168C8 8EAE0044 */ lw $t6, 0x44($s5) -/* 0174CC 800168CC 01F2C021 */ addu $t8, $t7, $s2 -/* 0174D0 800168D0 87080000 */ lh $t0, ($t8) -/* 0174D4 800168D4 8FA500A8 */ lw $a1, 0xa8($sp) -/* 0174D8 800168D8 01170019 */ multu $t0, $s7 -/* 0174DC 800168DC 00004812 */ mflo $t1 -/* 0174E0 800168E0 01C95021 */ addu $t2, $t6, $t1 -/* 0174E4 800168E4 85590002 */ lh $t9, 2($t2) -/* 0174E8 800168E8 27AA00A4 */ addiu $t2, $sp, 0xa4 -/* 0174EC 800168EC 44999000 */ mtc1 $t9, $f18 -/* 0174F0 800168F0 27B900A0 */ addiu $t9, $sp, 0xa0 -/* 0174F4 800168F4 46809420 */ cvt.s.w $f16, $f18 -/* 0174F8 800168F8 27A900A8 */ addiu $t1, $sp, 0xa8 -/* 0174FC 800168FC E7B000A4 */ swc1 $f16, 0xa4($sp) -/* 017500 80016900 8E6C001C */ lw $t4, 0x1c($s3) -/* 017504 80016904 8EAB0044 */ lw $t3, 0x44($s5) -/* 017508 80016908 01926821 */ addu $t5, $t4, $s2 -/* 01750C 8001690C 85AF0000 */ lh $t7, ($t5) -/* 017510 80016910 8FA600A4 */ lw $a2, 0xa4($sp) -/* 017514 80016914 01F70019 */ multu $t7, $s7 -/* 017518 80016918 0000C012 */ mflo $t8 -/* 01751C 8001691C 01784021 */ addu $t0, $t3, $t8 -/* 017520 80016920 850E0004 */ lh $t6, 4($t0) -/* 017524 80016924 AFB90018 */ sw $t9, 0x18($sp) -/* 017528 80016928 448E2000 */ mtc1 $t6, $f4 -/* 01752C 8001692C AFAA0014 */ sw $t2, 0x14($sp) -/* 017530 80016930 46802220 */ cvt.s.w $f8, $f4 -/* 017534 80016934 AFA90010 */ sw $t1, 0x10($sp) -/* 017538 80016938 E7A800A0 */ swc1 $f8, 0xa0($sp) -/* 01753C 8001693C 8FA700A0 */ lw $a3, 0xa0($sp) -/* 017540 80016940 0C01BD93 */ jal guMtxXFMF -/* 017544 80016944 00000000 */ nop -/* 017548 80016948 8E6C001C */ lw $t4, 0x1c($s3) -/* 01754C 8001694C 3C014280 */ li $at, 0x42800000 # 64.000000 -/* 017550 80016950 01926821 */ addu $t5, $t4, $s2 -/* 017554 80016954 85AF0002 */ lh $t7, 2($t5) -/* 017558 80016958 44819000 */ mtc1 $at, $f18 -/* 01755C 8001695C 448F3000 */ mtc1 $t7, $f6 -/* 017560 80016960 C6A40008 */ lwc1 $f4, 8($s5) -/* 017564 80016964 468032A0 */ cvt.s.w $f10, $f6 -/* 017568 80016968 00000000 */ nop -/* 01756C 8001696C 46125403 */ div.s $f16, $f10, $f18 -/* 017570 80016970 C7B200A8 */ lwc1 $f18, 0xa8($sp) -/* 017574 80016974 46048202 */ mul.s $f8, $f16, $f4 -/* 017578 80016978 C610000C */ lwc1 $f16, 0xc($s0) -/* 01757C 8001697C 460041A1 */ cvt.d.s $f6, $f8 -/* 017580 80016980 463E3282 */ mul.d $f10, $f6, $f30 -/* 017584 80016984 46109101 */ sub.s $f4, $f18, $f16 -/* 017588 80016988 C7A800A4 */ lwc1 $f8, 0xa4($sp) -/* 01758C 8001698C E7A400A8 */ swc1 $f4, 0xa8($sp) -/* 017590 80016990 C6060010 */ lwc1 $f6, 0x10($s0) -/* 017594 80016994 462055A0 */ cvt.s.d $f22, $f10 -/* 017598 80016998 C7B200A0 */ lwc1 $f18, 0xa0($sp) -/* 01759C 8001699C 46064281 */ sub.s $f10, $f8, $f6 -/* 0175A0 800169A0 E7AA00A4 */ swc1 $f10, 0xa4($sp) -/* 0175A4 800169A4 46042182 */ mul.s $f6, $f4, $f4 -/* 0175A8 800169A8 C6100014 */ lwc1 $f16, 0x14($s0) -/* 0175AC 800169AC 00000000 */ nop -/* 0175B0 800169B0 46109201 */ sub.s $f8, $f18, $f16 -/* 0175B4 800169B4 460A5482 */ mul.s $f18, $f10, $f10 -/* 0175B8 800169B8 E7A800A0 */ swc1 $f8, 0xa0($sp) -/* 0175BC 800169BC 46084102 */ mul.s $f4, $f8, $f8 -/* 0175C0 800169C0 46123400 */ add.s $f16, $f6, $f18 -/* 0175C4 800169C4 0C0326B4 */ jal sqrtf -/* 0175C8 800169C8 46048300 */ add.s $f12, $f16, $f4 -/* 0175CC 800169CC 828B0010 */ lb $t3, 0x10($s4) -/* 0175D0 800169D0 00000000 */ nop -/* 0175D4 800169D4 448B5000 */ mtc1 $t3, $f10 -/* 0175D8 800169D8 00000000 */ nop -/* 0175DC 800169DC 468051A0 */ cvt.s.w $f6, $f10 -/* 0175E0 800169E0 4606B580 */ add.s $f22, $f22, $f6 -/* 0175E4 800169E4 4616003C */ c.lt.s $f0, $f22 -/* 0175E8 800169E8 00000000 */ nop -/* 0175EC 800169EC 45000058 */ bc1f .L80016B50 -/* 0175F0 800169F0 00000000 */ nop -/* 0175F4 800169F4 4600C03C */ c.lt.s $f24, $f0 -/* 0175F8 800169F8 00000000 */ nop -/* 0175FC 800169FC 45000054 */ bc1f .L80016B50 -/* 017600 80016A00 00000000 */ nop -/* 017604 80016A04 4600B481 */ sub.s $f18, $f22, $f0 -/* 017608 80016A08 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 01760C 80016A0C 46009503 */ div.s $f20, $f18, $f0 -/* 017610 80016A10 86D80014 */ lh $t8, 0x14($s6) -/* 017614 80016A14 44814000 */ mtc1 $at, $f8 -/* 017618 80016A18 37080008 */ ori $t0, $t8, 8 -/* 01761C 80016A1C A6C80014 */ sh $t0, 0x14($s6) -/* 017620 80016A20 868E0014 */ lh $t6, 0x14($s4) -/* 017624 80016A24 24010001 */ li $at, 1 -/* 017628 80016A28 35C90008 */ ori $t1, $t6, 8 -/* 01762C 80016A2C A6890014 */ sh $t1, 0x14($s4) -/* 017630 80016A30 AED50000 */ sw $s5, ($s6) -/* 017634 80016A34 AE900000 */ sw $s0, ($s4) -/* 017638 80016A38 A2C00013 */ sb $zero, 0x13($s6) -/* 01763C 80016A3C 4608A503 */ div.s $f20, $f20, $f8 -/* 017640 80016A40 A2800013 */ sb $zero, 0x13($s4) -/* 017644 80016A44 C7B000A8 */ lwc1 $f16, 0xa8($sp) -/* 017648 80016A48 C7AA00A4 */ lwc1 $f10, 0xa4($sp) -/* 01764C 80016A4C C7B200A0 */ lwc1 $f18, 0xa0($sp) -/* 017650 80016A50 46148102 */ mul.s $f4, $f16, $f20 -/* 017654 80016A54 00000000 */ nop -/* 017658 80016A58 46145182 */ mul.s $f6, $f10, $f20 -/* 01765C 80016A5C E7A400A8 */ swc1 $f4, 0xa8($sp) -/* 017660 80016A60 46149202 */ mul.s $f8, $f18, $f20 -/* 017664 80016A64 E7A600A4 */ swc1 $f6, 0xa4($sp) -/* 017668 80016A68 E7A800A0 */ swc1 $f8, 0xa0($sp) -/* 01766C 80016A6C C610000C */ lwc1 $f16, 0xc($s0) -/* 017670 80016A70 C6060010 */ lwc1 $f6, 0x10($s0) -/* 017674 80016A74 46048281 */ sub.s $f10, $f16, $f4 -/* 017678 80016A78 C6100014 */ lwc1 $f16, 0x14($s0) -/* 01767C 80016A7C E60A000C */ swc1 $f10, 0xc($s0) -/* 017680 80016A80 C7B200A4 */ lwc1 $f18, 0xa4($sp) -/* 017684 80016A84 860A0048 */ lh $t2, 0x48($s0) -/* 017688 80016A88 46123201 */ sub.s $f8, $f6, $f18 -/* 01768C 80016A8C E6080010 */ swc1 $f8, 0x10($s0) -/* 017690 80016A90 C7A400A0 */ lwc1 $f4, 0xa0($sp) -/* 017694 80016A94 00000000 */ nop -/* 017698 80016A98 46048281 */ sub.s $f10, $f16, $f4 -/* 01769C 80016A9C 1541002C */ bne $t2, $at, .L80016B50 -/* 0176A0 80016AA0 E60A0014 */ swc1 $f10, 0x14($s0) -/* 0176A4 80016AA4 8E110064 */ lw $s1, 0x64($s0) -/* 0176A8 80016AA8 00000000 */ nop -/* 0176AC 80016AAC 823901D8 */ lb $t9, 0x1d8($s1) -/* 0176B0 80016AB0 00000000 */ nop -/* 0176B4 80016AB4 17200004 */ bnez $t9, .L80016AC8 -/* 0176B8 80016AB8 00000000 */ nop -/* 0176BC 80016ABC 86240000 */ lh $a0, ($s1) -/* 0176C0 80016AC0 0C01C8D2 */ jal func_80072348 -/* 0176C4 80016AC4 24050012 */ li $a1, 18 -.L80016AC8: -/* 0176C8 80016AC8 822C01D6 */ lb $t4, 0x1d6($s1) -/* 0176CC 80016ACC 24010001 */ li $at, 1 -/* 0176D0 80016AD0 1581000F */ bne $t4, $at, .L80016B10 -/* 0176D4 80016AD4 00000000 */ nop -/* 0176D8 80016AD8 4600A1A1 */ cvt.d.s $f6, $f20 -/* 0176DC 80016ADC 4626D03C */ c.lt.d $f26, $f6 -/* 0176E0 80016AE0 C7A800A8 */ lwc1 $f8, 0xa8($sp) -/* 0176E4 80016AE4 4500001A */ bc1f .L80016B50 -/* 0176E8 80016AE8 00000000 */ nop -/* 0176EC 80016AEC C612001C */ lwc1 $f18, 0x1c($s0) -/* 0176F0 80016AF0 C6040024 */ lwc1 $f4, 0x24($s0) -/* 0176F4 80016AF4 46089401 */ sub.s $f16, $f18, $f8 -/* 0176F8 80016AF8 E610001C */ swc1 $f16, 0x1c($s0) -/* 0176FC 80016AFC C7AA00A0 */ lwc1 $f10, 0xa0($sp) -/* 017700 80016B00 00000000 */ nop -/* 017704 80016B04 460A2181 */ sub.s $f6, $f4, $f10 -/* 017708 80016B08 10000011 */ b .L80016B50 -/* 01770C 80016B0C E6060024 */ swc1 $f6, 0x24($s0) -.L80016B10: -/* 017710 80016B10 4600A4A1 */ cvt.d.s $f18, $f20 -/* 017714 80016B14 4632E03C */ c.lt.d $f28, $f18 -/* 017718 80016B18 C7B000A8 */ lwc1 $f16, 0xa8($sp) -/* 01771C 80016B1C 4500000C */ bc1f .L80016B50 -/* 017720 80016B20 3C014080 */ li $at, 0x40800000 # 4.000000 -/* 017724 80016B24 C608001C */ lwc1 $f8, 0x1c($s0) -/* 017728 80016B28 C60A0024 */ lwc1 $f10, 0x24($s0) -/* 01772C 80016B2C 46104101 */ sub.s $f4, $f8, $f16 -/* 017730 80016B30 44814000 */ mtc1 $at, $f8 -/* 017734 80016B34 E604001C */ swc1 $f4, 0x1c($s0) -/* 017738 80016B38 C7A600A0 */ lwc1 $f6, 0xa0($sp) -/* 01773C 80016B3C 4608A402 */ mul.s $f16, $f20, $f8 -/* 017740 80016B40 46065481 */ sub.s $f18, $f10, $f6 -/* 017744 80016B44 E6120024 */ swc1 $f18, 0x24($s0) -/* 017748 80016B48 E630002C */ swc1 $f16, 0x2c($s1) -/* 01774C 80016B4C E6380030 */ swc1 $f24, 0x30($s1) -.L80016B50: -/* 017750 80016B50 866D0020 */ lh $t5, 0x20($s3) -/* 017754 80016B54 27DE0002 */ addiu $fp, $fp, 2 -/* 017758 80016B58 03CD082A */ slt $at, $fp, $t5 -/* 01775C 80016B5C 1420FF4B */ bnez $at, .L8001688C -/* 017760 80016B60 26520004 */ addiu $s2, $s2, 4 -.L80016B64: -/* 017764 80016B64 8FBF007C */ lw $ra, 0x7c($sp) -.L80016B68: -/* 017768 80016B68 C7B50028 */ lwc1 $f21, 0x28($sp) -/* 01776C 80016B6C C7B4002C */ lwc1 $f20, 0x2c($sp) -/* 017770 80016B70 C7B70030 */ lwc1 $f23, 0x30($sp) -/* 017774 80016B74 C7B60034 */ lwc1 $f22, 0x34($sp) -/* 017778 80016B78 C7B90038 */ lwc1 $f25, 0x38($sp) -/* 01777C 80016B7C C7B8003C */ lwc1 $f24, 0x3c($sp) -/* 017780 80016B80 C7BB0040 */ lwc1 $f27, 0x40($sp) -/* 017784 80016B84 C7BA0044 */ lwc1 $f26, 0x44($sp) -/* 017788 80016B88 C7BD0048 */ lwc1 $f29, 0x48($sp) -/* 01778C 80016B8C C7BC004C */ lwc1 $f28, 0x4c($sp) -/* 017790 80016B90 C7BF0050 */ lwc1 $f31, 0x50($sp) -/* 017794 80016B94 C7BE0054 */ lwc1 $f30, 0x54($sp) -/* 017798 80016B98 8FB00058 */ lw $s0, 0x58($sp) -/* 01779C 80016B9C 8FB1005C */ lw $s1, 0x5c($sp) -/* 0177A0 80016BA0 8FB20060 */ lw $s2, 0x60($sp) -/* 0177A4 80016BA4 8FB30064 */ lw $s3, 0x64($sp) -/* 0177A8 80016BA8 8FB40068 */ lw $s4, 0x68($sp) -/* 0177AC 80016BAC 8FB5006C */ lw $s5, 0x6c($sp) -/* 0177B0 80016BB0 8FB60070 */ lw $s6, 0x70($sp) -/* 0177B4 80016BB4 8FB70074 */ lw $s7, 0x74($sp) -/* 0177B8 80016BB8 8FBE0078 */ lw $fp, 0x78($sp) -/* 0177BC 80016BBC 03E00008 */ jr $ra -/* 0177C0 80016BC0 27BD00F0 */ addiu $sp, $sp, 0xf0 - diff --git a/asm/non_matchings/objects/func_80016DE8.s b/asm/non_matchings/objects/func_80016DE8.s deleted file mode 100644 index 6d0e1efd..00000000 --- a/asm/non_matchings/objects/func_80016DE8.s +++ /dev/null @@ -1,189 +0,0 @@ -glabel func_80016DE8 -/* 0179E8 80016DE8 27BDFF48 */ addiu $sp, $sp, -0xb8 -/* 0179EC 80016DEC AFB6004C */ sw $s6, 0x4c($sp) -/* 0179F0 80016DF0 3C168012 */ lui $s6, %hi(gNumRacers) # $s6, 0x8012 -/* 0179F4 80016DF4 26D6AEF0 */ addiu $s6, %lo(gNumRacers) # addiu $s6, $s6, -0x5110 -/* 0179F8 80016DF8 8EC20000 */ lw $v0, ($s6) -/* 0179FC 80016DFC E7BA002C */ swc1 $f26, 0x2c($sp) -/* 017A00 80016E00 E7B6001C */ swc1 $f22, 0x1c($sp) -/* 017A04 80016E04 4486B000 */ mtc1 $a2, $f22 -/* 017A08 80016E08 4487D000 */ mtc1 $a3, $f26 -/* 017A0C 80016E0C AFB40044 */ sw $s4, 0x44($sp) -/* 017A10 80016E10 E7B90020 */ swc1 $f25, 0x20($sp) -/* 017A14 80016E14 E7B80024 */ swc1 $f24, 0x24($sp) -/* 017A18 80016E18 E7B50010 */ swc1 $f21, 0x10($sp) -/* 017A1C 80016E1C E7B40014 */ swc1 $f20, 0x14($sp) -/* 017A20 80016E20 46006506 */ mov.s $f20, $f12 -/* 017A24 80016E24 46007606 */ mov.s $f24, $f14 -/* 017A28 80016E28 AFBF0054 */ sw $ra, 0x54($sp) -/* 017A2C 80016E2C AFB70050 */ sw $s7, 0x50($sp) -/* 017A30 80016E30 AFB50048 */ sw $s5, 0x48($sp) -/* 017A34 80016E34 AFB30040 */ sw $s3, 0x40($sp) -/* 017A38 80016E38 AFB2003C */ sw $s2, 0x3c($sp) -/* 017A3C 80016E3C AFB10038 */ sw $s1, 0x38($sp) -/* 017A40 80016E40 AFB00034 */ sw $s0, 0x34($sp) -/* 017A44 80016E44 E7BB0028 */ swc1 $f27, 0x28($sp) -/* 017A48 80016E48 E7B70018 */ swc1 $f23, 0x18($sp) -/* 017A4C 80016E4C 1840007F */ blez $v0, .L8001704C -/* 017A50 80016E50 0000A025 */ move $s4, $zero -/* 017A54 80016E54 1840003C */ blez $v0, .L80016F48 -/* 017A58 80016E58 00008825 */ move $s1, $zero -/* 017A5C 80016E5C 3C138012 */ lui $s3, %hi(gRacers) # $s3, 0x8012 -/* 017A60 80016E60 8FB500C8 */ lw $s5, 0xc8($sp) -/* 017A64 80016E64 8FB000CC */ lw $s0, 0xcc($sp) -/* 017A68 80016E68 2673AEE4 */ addiu $s3, %lo(gRacers) # addiu $s3, $s3, -0x511c -/* 017A6C 80016E6C 00009025 */ move $s2, $zero -/* 017A70 80016E70 27B70098 */ addiu $s7, $sp, 0x98 -.L80016E74: -/* 017A74 80016E74 8E6E0000 */ lw $t6, ($s3) -/* 017A78 80016E78 00000000 */ nop -/* 017A7C 80016E7C 01D27821 */ addu $t7, $t6, $s2 -/* 017A80 80016E80 8DE20000 */ lw $v0, ($t7) -/* 017A84 80016E84 00000000 */ nop -/* 017A88 80016E88 8C430064 */ lw $v1, 0x64($v0) -/* 017A8C 80016E8C 00000000 */ nop -/* 017A90 80016E90 84640000 */ lh $a0, ($v1) -/* 017A94 80016E94 00000000 */ nop -/* 017A98 80016E98 04800026 */ bltz $a0, .L80016F34 -/* 017A9C 80016E9C 28810004 */ slti $at, $a0, 4 -/* 017AA0 80016EA0 10200024 */ beqz $at, .L80016F34 -/* 017AA4 80016EA4 00000000 */ nop -/* 017AA8 80016EA8 12A0000B */ beqz $s5, .L80016ED8 -/* 017AAC 80016EAC 00000000 */ nop -/* 017AB0 80016EB0 C444000C */ lwc1 $f4, 0xc($v0) -/* 017AB4 80016EB4 C4460014 */ lwc1 $f6, 0x14($v0) -/* 017AB8 80016EB8 46142001 */ sub.s $f0, $f4, $f20 -/* 017ABC 80016EBC 46000202 */ mul.s $f8, $f0, $f0 -/* 017AC0 80016EC0 46163081 */ sub.s $f2, $f6, $f22 -/* 017AC4 80016EC4 46021282 */ mul.s $f10, $f2, $f2 -/* 017AC8 80016EC8 0C0326B4 */ jal sqrtf -/* 017ACC 80016ECC 460A4300 */ add.s $f12, $f8, $f10 -/* 017AD0 80016ED0 1000000E */ b .L80016F0C -/* 017AD4 80016ED4 461A003C */ c.lt.s $f0, $f26 -.L80016ED8: -/* 017AD8 80016ED8 C450000C */ lwc1 $f16, 0xc($v0) -/* 017ADC 80016EDC C4520010 */ lwc1 $f18, 0x10($v0) -/* 017AE0 80016EE0 46148001 */ sub.s $f0, $f16, $f20 -/* 017AE4 80016EE4 C4440014 */ lwc1 $f4, 0x14($v0) -/* 017AE8 80016EE8 46000182 */ mul.s $f6, $f0, $f0 -/* 017AEC 80016EEC 46189381 */ sub.s $f14, $f18, $f24 -/* 017AF0 80016EF0 460E7202 */ mul.s $f8, $f14, $f14 -/* 017AF4 80016EF4 46162081 */ sub.s $f2, $f4, $f22 -/* 017AF8 80016EF8 46021402 */ mul.s $f16, $f2, $f2 -/* 017AFC 80016EFC 46083280 */ add.s $f10, $f6, $f8 -/* 017B00 80016F00 0C0326B4 */ jal sqrtf -/* 017B04 80016F04 46105300 */ add.s $f12, $f10, $f16 -/* 017B08 80016F08 461A003C */ c.lt.s $f0, $f26 -.L80016F0C: -/* 017B0C 80016F0C 00141080 */ sll $v0, $s4, 2 -/* 017B10 80016F10 45000008 */ bc1f .L80016F34 -/* 017B14 80016F14 02E2C021 */ addu $t8, $s7, $v0 -/* 017B18 80016F18 E7000000 */ swc1 $f0, ($t8) -/* 017B1C 80016F1C 8E790000 */ lw $t9, ($s3) -/* 017B20 80016F20 02025021 */ addu $t2, $s0, $v0 -/* 017B24 80016F24 03324021 */ addu $t0, $t9, $s2 -/* 017B28 80016F28 8D090000 */ lw $t1, ($t0) -/* 017B2C 80016F2C 26940001 */ addiu $s4, $s4, 1 -/* 017B30 80016F30 AD490000 */ sw $t1, ($t2) -.L80016F34: -/* 017B34 80016F34 8ECB0000 */ lw $t3, ($s6) -/* 017B38 80016F38 26310001 */ addiu $s1, $s1, 1 -/* 017B3C 80016F3C 022B082A */ slt $at, $s1, $t3 -/* 017B40 80016F40 1420FFCC */ bnez $at, .L80016E74 -/* 017B44 80016F44 26520004 */ addiu $s2, $s2, 4 -.L80016F48: -/* 017B48 80016F48 8FB000CC */ lw $s0, 0xcc($sp) -/* 017B4C 80016F4C 2A810002 */ slti $at, $s4, 2 -/* 017B50 80016F50 1420003E */ bnez $at, .L8001704C -/* 017B54 80016F54 2691FFFF */ addiu $s1, $s4, -1 -/* 017B58 80016F58 1A20003D */ blez $s1, .L80017050 -/* 017B5C 80016F5C 8FBF0054 */ lw $ra, 0x54($sp) -.L80016F60: -/* 017B60 80016F60 1A200037 */ blez $s1, .L80017040 -/* 017B64 80016F64 00001025 */ move $v0, $zero -/* 017B68 80016F68 32230001 */ andi $v1, $s1, 1 -/* 017B6C 80016F6C 10600010 */ beqz $v1, .L80016FB0 -/* 017B70 80016F70 27AD0098 */ addiu $t5, $sp, 0x98 -/* 017B74 80016F74 C7B2009C */ lwc1 $f18, 0x9c($sp) -/* 017B78 80016F78 C7A40098 */ lwc1 $f4, 0x98($sp) -/* 017B7C 80016F7C 24020001 */ li $v0, 1 -/* 017B80 80016F80 4604903C */ c.lt.s $f18, $f4 -/* 017B84 80016F84 00000000 */ nop -/* 017B88 80016F88 45000008 */ bc1f .L80016FAC -/* 017B8C 80016F8C 00000000 */ nop -/* 017B90 80016F90 8E040000 */ lw $a0, ($s0) -/* 017B94 80016F94 E7B20098 */ swc1 $f18, 0x98($sp) -/* 017B98 80016F98 8E0C0004 */ lw $t4, 4($s0) -/* 017B9C 80016F9C 00000000 */ nop -/* 017BA0 80016FA0 AE0C0000 */ sw $t4, ($s0) -/* 017BA4 80016FA4 E7A4009C */ swc1 $f4, 0x9c($sp) -/* 017BA8 80016FA8 AE040004 */ sw $a0, 4($s0) -.L80016FAC: -/* 017BAC 80016FAC 10510024 */ beq $v0, $s1, .L80017040 -.L80016FB0: -/* 017BB0 80016FB0 00022880 */ sll $a1, $v0, 2 -/* 017BB4 80016FB4 00117080 */ sll $t6, $s1, 2 -/* 017BB8 80016FB8 01CD3021 */ addu $a2, $t6, $t5 -/* 017BBC 80016FBC 00AD1821 */ addu $v1, $a1, $t5 -.L80016FC0: -/* 017BC0 80016FC0 C4600004 */ lwc1 $f0, 4($v1) -/* 017BC4 80016FC4 C46C0000 */ lwc1 $f12, ($v1) -/* 017BC8 80016FC8 02051021 */ addu $v0, $s0, $a1 -/* 017BCC 80016FCC 460C003C */ c.lt.s $f0, $f12 -/* 017BD0 80016FD0 00000000 */ nop -/* 017BD4 80016FD4 4500000A */ bc1f .L80017000 -/* 017BD8 80016FD8 00000000 */ nop -/* 017BDC 80016FDC 8C440000 */ lw $a0, ($v0) -/* 017BE0 80016FE0 E4600000 */ swc1 $f0, ($v1) -/* 017BE4 80016FE4 8C4F0004 */ lw $t7, 4($v0) -/* 017BE8 80016FE8 00000000 */ nop -/* 017BEC 80016FEC AC4F0000 */ sw $t7, ($v0) -/* 017BF0 80016FF0 E46C0004 */ swc1 $f12, 4($v1) -/* 017BF4 80016FF4 AC440004 */ sw $a0, 4($v0) -/* 017BF8 80016FF8 C4600004 */ lwc1 $f0, 4($v1) -/* 017BFC 80016FFC 00000000 */ nop -.L80017000: -/* 017C00 80017000 C46C0008 */ lwc1 $f12, 8($v1) -/* 017C04 80017004 02051021 */ addu $v0, $s0, $a1 -/* 017C08 80017008 4600603C */ c.lt.s $f12, $f0 -/* 017C0C 8001700C 00000000 */ nop -/* 017C10 80017010 45000008 */ bc1f .L80017034 -/* 017C14 80017014 00000000 */ nop -/* 017C18 80017018 8C440004 */ lw $a0, 4($v0) -/* 017C1C 8001701C E46C0004 */ swc1 $f12, 4($v1) -/* 017C20 80017020 8C580008 */ lw $t8, 8($v0) -/* 017C24 80017024 00000000 */ nop -/* 017C28 80017028 AC580004 */ sw $t8, 4($v0) -/* 017C2C 8001702C E4600008 */ swc1 $f0, 8($v1) -/* 017C30 80017030 AC440008 */ sw $a0, 8($v0) -.L80017034: -/* 017C34 80017034 24630008 */ addiu $v1, $v1, 8 -/* 017C38 80017038 1466FFE1 */ bne $v1, $a2, .L80016FC0 -/* 017C3C 8001703C 24A50008 */ addiu $a1, $a1, 8 -.L80017040: -/* 017C40 80017040 2631FFFF */ addiu $s1, $s1, -1 -/* 017C44 80017044 1620FFC6 */ bnez $s1, .L80016F60 -/* 017C48 80017048 00000000 */ nop -.L8001704C: -/* 017C4C 8001704C 8FBF0054 */ lw $ra, 0x54($sp) -.L80017050: -/* 017C50 80017050 02801025 */ move $v0, $s4 -/* 017C54 80017054 8FB40044 */ lw $s4, 0x44($sp) -/* 017C58 80017058 C7B50010 */ lwc1 $f21, 0x10($sp) -/* 017C5C 8001705C C7B40014 */ lwc1 $f20, 0x14($sp) -/* 017C60 80017060 C7B70018 */ lwc1 $f23, 0x18($sp) -/* 017C64 80017064 C7B6001C */ lwc1 $f22, 0x1c($sp) -/* 017C68 80017068 C7B90020 */ lwc1 $f25, 0x20($sp) -/* 017C6C 8001706C C7B80024 */ lwc1 $f24, 0x24($sp) -/* 017C70 80017070 C7BB0028 */ lwc1 $f27, 0x28($sp) -/* 017C74 80017074 C7BA002C */ lwc1 $f26, 0x2c($sp) -/* 017C78 80017078 8FB00034 */ lw $s0, 0x34($sp) -/* 017C7C 8001707C 8FB10038 */ lw $s1, 0x38($sp) -/* 017C80 80017080 8FB2003C */ lw $s2, 0x3c($sp) -/* 017C84 80017084 8FB30040 */ lw $s3, 0x40($sp) -/* 017C88 80017088 8FB50048 */ lw $s5, 0x48($sp) -/* 017C8C 8001708C 8FB6004C */ lw $s6, 0x4c($sp) -/* 017C90 80017090 8FB70050 */ lw $s7, 0x50($sp) -/* 017C94 80017094 03E00008 */ jr $ra -/* 017C98 80017098 27BD00B8 */ addiu $sp, $sp, 0xb8 - diff --git a/asm/non_matchings/objects/func_8001AE64.s b/asm/non_matchings/objects/func_8001AE64.s deleted file mode 100644 index e111127e..00000000 --- a/asm/non_matchings/objects/func_8001AE64.s +++ /dev/null @@ -1,288 +0,0 @@ -glabel func_8001AE64 -/* 01BA64 8001AE64 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 01BA68 8001AE68 AFBF001C */ sw $ra, 0x1c($sp) -/* 01BA6C 8001AE6C 0C01AF6C */ jal get_current_level_header -/* 01BA70 8001AE70 AFB00018 */ sw $s0, 0x18($sp) -/* 01BA74 8001AE74 0C01BAA4 */ jal get_settings -/* 01BA78 8001AE78 AFA2002C */ sw $v0, 0x2c($sp) -/* 01BA7C 8001AE7C 8FAA002C */ lw $t2, 0x2c($sp) -/* 01BA80 8001AE80 A0400114 */ sb $zero, 0x114($v0) -/* 01BA84 8001AE84 A0400116 */ sb $zero, 0x116($v0) -/* 01BA88 8001AE88 A0400115 */ sb $zero, 0x115($v0) -/* 01BA8C 8001AE8C 3C0E8012 */ lui $t6, %hi(gRacersByPosition) # $t6, 0x8012 -/* 01BA90 8001AE90 8DCEAEE8 */ lw $t6, %lo(gRacersByPosition)($t6) -/* 01BA94 8001AE94 3C198012 */ lui $t9, %hi(gNumRacers) # $t9, 0x8012 -/* 01BA98 8001AE98 8DCF0000 */ lw $t7, ($t6) -/* 01BA9C 8001AE9C 8F39AEF0 */ lw $t9, %lo(gNumRacers)($t9) -/* 01BAA0 8001AEA0 8DF80064 */ lw $t8, 0x64($t7) -/* 01BAA4 8001AEA4 00404025 */ move $t0, $v0 -/* 01BAA8 8001AEA8 34108CA1 */ li $s0, 36001 -/* 01BAAC 8001AEAC 34098CA1 */ li $t1, 36001 -/* 01BAB0 8001AEB0 00006825 */ move $t5, $zero -/* 01BAB4 8001AEB4 1B20005A */ blez $t9, .L8001B020 -/* 01BAB8 8001AEB8 AFB80034 */ sw $t8, 0x34($sp) -/* 01BABC 8001AEBC 00006025 */ move $t4, $zero -.L8001AEC0: -/* 01BAC0 8001AEC0 3C0E8012 */ lui $t6, %hi(gRacersByPosition) # $t6, 0x8012 -/* 01BAC4 8001AEC4 8DCEAEE8 */ lw $t6, %lo(gRacersByPosition)($t6) -/* 01BAC8 8001AEC8 00000000 */ nop -/* 01BACC 8001AECC 01CC7821 */ addu $t7, $t6, $t4 -/* 01BAD0 8001AED0 8DF80000 */ lw $t8, ($t7) -/* 01BAD4 8001AED4 00000000 */ nop -/* 01BAD8 8001AED8 8F070064 */ lw $a3, 0x64($t8) -/* 01BADC 8001AEDC 00000000 */ nop -/* 01BAE0 8001AEE0 80F90002 */ lb $t9, 2($a3) -/* 01BAE4 8001AEE4 00000000 */ nop -/* 01BAE8 8001AEE8 07200047 */ bltz $t9, .L8001B008 -/* 01BAEC 8001AEEC 00000000 */ nop -/* 01BAF0 8001AEF0 AFA70038 */ sw $a3, 0x38($sp) -/* 01BAF4 8001AEF4 AFA80030 */ sw $t0, 0x30($sp) -/* 01BAF8 8001AEF8 AFA90050 */ sw $t1, 0x50($sp) -/* 01BAFC 8001AEFC AFAA002C */ sw $t2, 0x2c($sp) -/* 01BB00 8001AF00 AFAC0024 */ sw $t4, 0x24($sp) -/* 01BB04 8001AF04 0C0270F2 */ jal get_number_of_active_players -/* 01BB08 8001AF08 AFAD004C */ sw $t5, 0x4c($sp) -/* 01BB0C 8001AF0C 8FA70038 */ lw $a3, 0x38($sp) -/* 01BB10 8001AF10 8FA80030 */ lw $t0, 0x30($sp) -/* 01BB14 8001AF14 80E30002 */ lb $v1, 2($a3) -/* 01BB18 8001AF18 8FA90050 */ lw $t1, 0x50($sp) -/* 01BB1C 8001AF1C 8FAA002C */ lw $t2, 0x2c($sp) -/* 01BB20 8001AF20 8FAC0024 */ lw $t4, 0x24($sp) -/* 01BB24 8001AF24 8FAD004C */ lw $t5, 0x4c($sp) -/* 01BB28 8001AF28 0062082A */ slt $at, $v1, $v0 -/* 01BB2C 8001AF2C 240B0005 */ li $t3, 5 -/* 01BB30 8001AF30 10200035 */ beqz $at, .L8001B008 -/* 01BB34 8001AF34 241F0018 */ li $ra, 24 -/* 01BB38 8001AF38 007F0019 */ multu $v1, $ra -/* 01BB3C 8001AF3C 00007012 */ mflo $t6 -/* 01BB40 8001AF40 010E7821 */ addu $t7, $t0, $t6 -/* 01BB44 8001AF44 A1E00058 */ sb $zero, 0x58($t7) -/* 01BB48 8001AF48 80E201D7 */ lb $v0, 0x1d7($a3) -/* 01BB4C 8001AF4C 00000000 */ nop -/* 01BB50 8001AF50 0440002D */ bltz $v0, .L8001B008 -/* 01BB54 8001AF54 28410003 */ slti $at, $v0, 3 -/* 01BB58 8001AF58 1020002B */ beqz $at, .L8001B008 -/* 01BB5C 8001AF5C 00000000 */ nop -/* 01BB60 8001AF60 8158004B */ lb $t8, 0x4b($t2) -/* 01BB64 8001AF64 00003025 */ move $a2, $zero -/* 01BB68 8001AF68 1B00001C */ blez $t8, .L8001AFDC -/* 01BB6C 8001AF6C 00002025 */ move $a0, $zero -/* 01BB70 8001AF70 0004C880 */ sll $t9, $a0, 2 -/* 01BB74 8001AF74 00F91021 */ addu $v0, $a3, $t9 -/* 01BB78 8001AF78 00042840 */ sll $a1, $a0, 1 -.L8001AF7C: -/* 01BB7C 8001AF7C 80EF0002 */ lb $t7, 2($a3) -/* 01BB80 8001AF80 8C4E0128 */ lw $t6, 0x128($v0) -/* 01BB84 8001AF84 000FC080 */ sll $t8, $t7, 2 -/* 01BB88 8001AF88 030FC023 */ subu $t8, $t8, $t7 -/* 01BB8C 8001AF8C 0018C0C0 */ sll $t8, $t8, 3 -/* 01BB90 8001AF90 0118C821 */ addu $t9, $t0, $t8 -/* 01BB94 8001AF94 03257821 */ addu $t7, $t9, $a1 -/* 01BB98 8001AF98 A5EE0066 */ sh $t6, 0x66($t7) -/* 01BB9C 8001AF9C 8C430128 */ lw $v1, 0x128($v0) -/* 01BBA0 8001AFA0 24A50002 */ addiu $a1, $a1, 2 -/* 01BBA4 8001AFA4 0069082A */ slt $at, $v1, $t1 -/* 01BBA8 8001AFA8 10200005 */ beqz $at, .L8001AFC0 -/* 01BBAC 8001AFAC 00C33021 */ addu $a2, $a2, $v1 -/* 01BBB0 8001AFB0 A1040116 */ sb $a0, 0x116($t0) -/* 01BBB4 8001AFB4 80F80002 */ lb $t8, 2($a3) -/* 01BBB8 8001AFB8 00604825 */ move $t1, $v1 -/* 01BBBC 8001AFBC A1180115 */ sb $t8, 0x115($t0) -.L8001AFC0: -/* 01BBC0 8001AFC0 8159004B */ lb $t9, 0x4b($t2) -/* 01BBC4 8001AFC4 24840001 */ addiu $a0, $a0, 1 -/* 01BBC8 8001AFC8 0099082A */ slt $at, $a0, $t9 -/* 01BBCC 8001AFCC 10200003 */ beqz $at, .L8001AFDC -/* 01BBD0 8001AFD0 24420004 */ addiu $v0, $v0, 4 -/* 01BBD4 8001AFD4 148BFFE9 */ bne $a0, $t3, .L8001AF7C -/* 01BBD8 8001AFD8 00000000 */ nop -.L8001AFDC: -/* 01BBDC 8001AFDC 80EE0002 */ lb $t6, 2($a3) -/* 01BBE0 8001AFE0 00D0082A */ slt $at, $a2, $s0 -/* 01BBE4 8001AFE4 01DF0019 */ multu $t6, $ra -/* 01BBE8 8001AFE8 00007812 */ mflo $t7 -/* 01BBEC 8001AFEC 010FC021 */ addu $t8, $t0, $t7 -/* 01BBF0 8001AFF0 10200005 */ beqz $at, .L8001B008 -/* 01BBF4 8001AFF4 A7060064 */ sh $a2, 0x64($t8) -/* 01BBF8 8001AFF8 80F90002 */ lb $t9, 2($a3) -/* 01BBFC 8001AFFC 00C08025 */ move $s0, $a2 -/* 01BC00 8001B000 A1190114 */ sb $t9, 0x114($t0) -/* 01BC04 8001B004 AFA70034 */ sw $a3, 0x34($sp) -.L8001B008: -/* 01BC08 8001B008 3C0E8012 */ lui $t6, %hi(gNumRacers) # $t6, 0x8012 -/* 01BC0C 8001B00C 8DCEAEF0 */ lw $t6, %lo(gNumRacers)($t6) -/* 01BC10 8001B010 25AD0001 */ addiu $t5, $t5, 1 -/* 01BC14 8001B014 01AE082A */ slt $at, $t5, $t6 -/* 01BC18 8001B018 1420FFA9 */ bnez $at, .L8001AEC0 -/* 01BC1C 8001B01C 258C0004 */ addiu $t4, $t4, 4 -.L8001B020: -/* 01BC20 8001B020 A1000117 */ sb $zero, 0x117($t0) -/* 01BC24 8001B024 3C0F8012 */ lui $t7, %hi(gIsTimeTrial) # $t7, 0x8012 -/* 01BC28 8001B028 91EFAEF5 */ lbu $t7, %lo(gIsTimeTrial)($t7) -/* 01BC2C 8001B02C 240B0005 */ li $t3, 5 -/* 01BC30 8001B030 11E00091 */ beqz $t7, .L8001B278 -/* 01BC34 8001B034 241F0018 */ li $ra, 24 -/* 01BC38 8001B038 3C028012 */ lui $v0, %hi(D_8011AE82) # $v0, 0x8012 -/* 01BC3C 8001B03C 8442AE82 */ lh $v0, %lo(D_8011AE82)($v0) -/* 01BC40 8001B040 00000000 */ nop -/* 01BC44 8001B044 28410003 */ slti $at, $v0, 3 -/* 01BC48 8001B048 10200003 */ beqz $at, .L8001B058 -/* 01BC4C 8001B04C 00000000 */ nop -/* 01BC50 8001B050 04410002 */ bgez $v0, .L8001B05C -/* 01BC54 8001B054 00000000 */ nop -.L8001B058: -/* 01BC58 8001B058 00001025 */ move $v0, $zero -.L8001B05C: -/* 01BC5C 8001B05C 81190115 */ lb $t9, 0x115($t0) -/* 01BC60 8001B060 24180001 */ li $t8, 1 -/* 01BC64 8001B064 17200018 */ bnez $t9, .L8001B0C8 -/* 01BC68 8001B068 A1180117 */ sb $t8, 0x117($t0) -/* 01BC6C 8001B06C 00027080 */ sll $t6, $v0, 2 -/* 01BC70 8001B070 91190049 */ lbu $t9, 0x49($t0) -/* 01BC74 8001B074 010E7821 */ addu $t7, $t0, $t6 -/* 01BC78 8001B078 8DF80024 */ lw $t8, 0x24($t7) -/* 01BC7C 8001B07C 00197040 */ sll $t6, $t9, 1 -/* 01BC80 8001B080 030E2021 */ addu $a0, $t8, $t6 -/* 01BC84 8001B084 94830000 */ lhu $v1, ($a0) -/* 01BC88 8001B088 00000000 */ nop -/* 01BC8C 8001B08C 10600003 */ beqz $v1, .L8001B09C -/* 01BC90 8001B090 0123082A */ slt $at, $t1, $v1 -/* 01BC94 8001B094 1020000C */ beqz $at, .L8001B0C8 -/* 01BC98 8001B098 00000000 */ nop -.L8001B09C: -/* 01BC9C 8001B09C A4890000 */ sh $t1, ($a0) -/* 01BCA0 8001B0A0 810F0115 */ lb $t7, 0x115($t0) -/* 01BCA4 8001B0A4 810E0116 */ lb $t6, 0x116($t0) -/* 01BCA8 8001B0A8 01FF0019 */ multu $t7, $ra -/* 01BCAC 8001B0AC 240F0001 */ li $t7, 1 -/* 01BCB0 8001B0B0 0000C812 */ mflo $t9 -/* 01BCB4 8001B0B4 01191821 */ addu $v1, $t0, $t9 -/* 01BCB8 8001B0B8 80780058 */ lb $t8, 0x58($v1) -/* 01BCBC 8001B0BC 01CFC804 */ sllv $t9, $t7, $t6 -/* 01BCC0 8001B0C0 03197825 */ or $t7, $t8, $t9 -/* 01BCC4 8001B0C4 A06F0058 */ sb $t7, 0x58($v1) -.L8001B0C8: -/* 01BCC8 8001B0C8 81050114 */ lb $a1, 0x114($t0) -/* 01BCCC 8001B0CC 00027080 */ sll $t6, $v0, 2 -/* 01BCD0 8001B0D0 14A00018 */ bnez $a1, .L8001B134 -/* 01BCD4 8001B0D4 00000000 */ nop -/* 01BCD8 8001B0D8 910F0049 */ lbu $t7, 0x49($t0) -/* 01BCDC 8001B0DC 010EC021 */ addu $t8, $t0, $t6 -/* 01BCE0 8001B0E0 8F19003C */ lw $t9, 0x3c($t8) -/* 01BCE4 8001B0E4 000F7040 */ sll $t6, $t7, 1 -/* 01BCE8 8001B0E8 032E2021 */ addu $a0, $t9, $t6 -/* 01BCEC 8001B0EC 94830000 */ lhu $v1, ($a0) -/* 01BCF0 8001B0F0 00000000 */ nop -/* 01BCF4 8001B0F4 10600003 */ beqz $v1, .L8001B104 -/* 01BCF8 8001B0F8 0203082A */ slt $at, $s0, $v1 -/* 01BCFC 8001B0FC 1020000D */ beqz $at, .L8001B134 -/* 01BD00 8001B100 00000000 */ nop -.L8001B104: -/* 01BD04 8001B104 A4900000 */ sh $s0, ($a0) -/* 01BD08 8001B108 81180114 */ lb $t8, 0x114($t0) -/* 01BD0C 8001B10C 00000000 */ nop -/* 01BD10 8001B110 031F0019 */ multu $t8, $ra -/* 01BD14 8001B114 00007812 */ mflo $t7 -/* 01BD18 8001B118 010F1821 */ addu $v1, $t0, $t7 -/* 01BD1C 8001B11C 80790058 */ lb $t9, 0x58($v1) -/* 01BD20 8001B120 00000000 */ nop -/* 01BD24 8001B124 372E0080 */ ori $t6, $t9, 0x80 -/* 01BD28 8001B128 A06E0058 */ sb $t6, 0x58($v1) -/* 01BD2C 8001B12C 81050114 */ lb $a1, 0x114($t0) -/* 01BD30 8001B130 00000000 */ nop -.L8001B134: -/* 01BD34 8001B134 14A00050 */ bnez $a1, .L8001B278 -/* 01BD38 8001B138 2A012A30 */ slti $at, $s0, 0x2a30 -/* 01BD3C 8001B13C 10200024 */ beqz $at, .L8001B1D0 -/* 01BD40 8001B140 00000000 */ nop -/* 01BD44 8001B144 3C18800E */ lui $t8, %hi(D_800DC728) # $t8, 0x800e -/* 01BD48 8001B148 8718C728 */ lh $t8, %lo(D_800DC728)($t8) -/* 01BD4C 8001B14C 00000000 */ nop -/* 01BD50 8001B150 1458000F */ bne $v0, $t8, .L8001B190 -/* 01BD54 8001B154 00000000 */ nop -/* 01BD58 8001B158 0C01666A */ jal func_800599A8 -/* 01BD5C 8001B15C AFA80030 */ sw $t0, 0x30($sp) -/* 01BD60 8001B160 0C01AF62 */ jal get_current_map_id -/* 01BD64 8001B164 AFA20028 */ sw $v0, 0x28($sp) -/* 01BD68 8001B168 8FAF0028 */ lw $t7, 0x28($sp) -/* 01BD6C 8001B16C 8FA80030 */ lw $t0, 0x30($sp) -/* 01BD70 8001B170 144F0007 */ bne $v0, $t7, .L8001B190 -/* 01BD74 8001B174 240B0005 */ li $t3, 5 -/* 01BD78 8001B178 3C19800E */ lui $t9, %hi(D_800DC724) # $t9, 0x800e -/* 01BD7C 8001B17C 8739C724 */ lh $t9, %lo(D_800DC724)($t9) -/* 01BD80 8001B180 00000000 */ nop -/* 01BD84 8001B184 0219082A */ slt $at, $s0, $t9 -/* 01BD88 8001B188 10200011 */ beqz $at, .L8001B1D0 -/* 01BD8C 8001B18C 00000000 */ nop -.L8001B190: -/* 01BD90 8001B190 3C01800E */ lui $at, %hi(D_800DC724) # $at, 0x800e -/* 01BD94 8001B194 3C0E8012 */ lui $t6, %hi(D_8011AE82) # $t6, 0x8012 -/* 01BD98 8001B198 85CEAE82 */ lh $t6, %lo(D_8011AE82)($t6) -/* 01BD9C 8001B19C A430C724 */ sh $s0, %lo(D_800DC724)($at) -/* 01BDA0 8001B1A0 3C01800E */ lui $at, %hi(D_800DC728) # $at, 0x800e -/* 01BDA4 8001B1A4 A42EC728 */ sh $t6, %lo(D_800DC728)($at) -/* 01BDA8 8001B1A8 81180059 */ lb $t8, 0x59($t0) -/* 01BDAC 8001B1AC 3C01800E */ lui $at, %hi(D_800DC72C) # $at, 0x800e -/* 01BDB0 8001B1B0 0C01AF62 */ jal get_current_map_id -/* 01BDB4 8001B1B4 A438C72C */ sh $t8, %lo(D_800DC72C)($at) -/* 01BDB8 8001B1B8 0C016661 */ jal func_80059984 -/* 01BDBC 8001B1BC 00402025 */ move $a0, $v0 -/* 01BDC0 8001B1C0 240F0001 */ li $t7, 1 -/* 01BDC4 8001B1C4 3C01800E */ lui $at, %hi(gHasGhostToSave) # $at, 0x800e -/* 01BDC8 8001B1C8 240B0005 */ li $t3, 5 -/* 01BDCC 8001B1CC A02FC730 */ sb $t7, %lo(gHasGhostToSave)($at) -.L8001B1D0: -/* 01BDD0 8001B1D0 3C198000 */ lui $t9, %hi(osTvType) # $t9, 0x8000 -/* 01BDD4 8001B1D4 8F390300 */ lw $t9, %lo(osTvType)($t9) -/* 01BDD8 8001B1D8 00107080 */ sll $t6, $s0, 2 -/* 01BDDC 8001B1DC 17200010 */ bnez $t9, .L8001B220 -/* 01BDE0 8001B1E0 3C188012 */ lui $t8, %hi(gTTGhostTimeToBeat) # $t8, 0x8012 -/* 01BDE4 8001B1E4 01D07023 */ subu $t6, $t6, $s0 -/* 01BDE8 8001B1E8 000E7040 */ sll $t6, $t6, 1 -/* 01BDEC 8001B1EC 01CB001A */ div $zero, $t6, $t3 -/* 01BDF0 8001B1F0 15600002 */ bnez $t3, .L8001B1FC -/* 01BDF4 8001B1F4 00000000 */ nop -/* 01BDF8 8001B1F8 0007000D */ break 7 -.L8001B1FC: -/* 01BDFC 8001B1FC 2401FFFF */ li $at, -1 -/* 01BE00 8001B200 15610004 */ bne $t3, $at, .L8001B214 -/* 01BE04 8001B204 3C018000 */ lui $at, 0x8000 -/* 01BE08 8001B208 15C10002 */ bne $t6, $at, .L8001B214 -/* 01BE0C 8001B20C 00000000 */ nop -/* 01BE10 8001B210 0006000D */ break 6 -.L8001B214: -/* 01BE14 8001B214 00008012 */ mflo $s0 -/* 01BE18 8001B218 00000000 */ nop -/* 01BE1C 8001B21C 00000000 */ nop -.L8001B220: -/* 01BE20 8001B220 8718AE80 */ lh $t8, %lo(gTTGhostTimeToBeat)($t8) -/* 01BE24 8001B224 8FA40034 */ lw $a0, 0x34($sp) -/* 01BE28 8001B228 0218082A */ slt $at, $s0, $t8 -/* 01BE2C 8001B22C 10200010 */ beqz $at, .L8001B270 -/* 01BE30 8001B230 3C0F800E */ lui $t7, %hi(gTimeTrialStaffGhost) # $t7, 0x800e -/* 01BE34 8001B234 91EFC734 */ lbu $t7, %lo(gTimeTrialStaffGhost)($t7) -/* 01BE38 8001B238 8FA40034 */ lw $a0, 0x34($sp) -/* 01BE3C 8001B23C 11E00008 */ beqz $t7, .L8001B260 -/* 01BE40 8001B240 00000000 */ nop -/* 01BE44 8001B244 0C01AF62 */ jal get_current_map_id -/* 01BE48 8001B248 00000000 */ nop -/* 01BE4C 8001B24C 8FA50034 */ lw $a1, 0x34($sp) -/* 01BE50 8001B250 0C006CF1 */ jal tt_ghost_beaten -/* 01BE54 8001B254 00402025 */ move $a0, $v0 -/* 01BE58 8001B258 10000008 */ b .L8001B27C -/* 01BE5C 8001B25C 8FBF001C */ lw $ra, 0x1c($sp) -.L8001B260: -/* 01BE60 8001B260 0C029B6D */ jal play_time_trial_end_message -/* 01BE64 8001B264 00000000 */ nop -/* 01BE68 8001B268 10000004 */ b .L8001B27C -/* 01BE6C 8001B26C 8FBF001C */ lw $ra, 0x1c($sp) -.L8001B270: -/* 01BE70 8001B270 0C029B6D */ jal play_time_trial_end_message -/* 01BE74 8001B274 00000000 */ nop -.L8001B278: -/* 01BE78 8001B278 8FBF001C */ lw $ra, 0x1c($sp) -.L8001B27C: -/* 01BE7C 8001B27C 8FB00018 */ lw $s0, 0x18($sp) -/* 01BE80 8001B280 03E00008 */ jr $ra -/* 01BE84 8001B284 27BD0058 */ addiu $sp, $sp, 0x58 - diff --git a/asm/non_matchings/objects/func_8001E6EC.s b/asm/non_matchings/objects/func_8001E6EC.s deleted file mode 100644 index 7ce319bb..00000000 --- a/asm/non_matchings/objects/func_8001E6EC.s +++ /dev/null @@ -1,118 +0,0 @@ -glabel func_8001E6EC -/* 01F2EC 8001E6EC 27BDFFF0 */ addiu $sp, $sp, -0x10 -/* 01F2F0 8001E6F0 AFB00004 */ sw $s0, 4($sp) -/* 01F2F4 8001E6F4 3C038012 */ lui $v1, %hi(D_8011AE00) # $v1, 0x8012 -/* 01F2F8 8001E6F8 8063AE00 */ lb $v1, %lo(D_8011AE00)($v1) -/* 01F2FC 8001E6FC 00048600 */ sll $s0, $a0, 0x18 -/* 01F300 8001E700 00107603 */ sra $t6, $s0, 0x18 -/* 01F304 8001E704 01C08025 */ move $s0, $t6 -/* 01F308 8001E708 AFB2000C */ sw $s2, 0xc($sp) -/* 01F30C 8001E70C AFB10008 */ sw $s1, 8($sp) -/* 01F310 8001E710 AFA40010 */ sw $a0, 0x10($sp) -/* 01F314 8001E714 1860005A */ blez $v1, .L8001E880 -/* 01F318 8001E718 00001025 */ move $v0, $zero -/* 01F31C 8001E71C 3C058012 */ lui $a1, %hi(D_8011ADD8) # $a1, 0x8012 -/* 01F320 8001E720 3C128012 */ lui $s2, %hi(D_8011AE74) # $s2, 0x8012 -/* 01F324 8001E724 3C118012 */ lui $s1, %hi(D_8011AE78) # $s1, 0x8012 -/* 01F328 8001E728 3C0C8012 */ lui $t4, %hi(gCutsceneID) # $t4, 0x8012 -/* 01F32C 8001E72C 258CAE7A */ addiu $t4, %lo(gCutsceneID) # addiu $t4, $t4, -0x5186 -/* 01F330 8001E730 2631AE78 */ addiu $s1, %lo(D_8011AE78) # addiu $s1, $s1, -0x5188 -/* 01F334 8001E734 2652AE74 */ addiu $s2, %lo(D_8011AE74) # addiu $s2, $s2, -0x518c -/* 01F338 8001E738 24A5ADD8 */ addiu $a1, %lo(D_8011ADD8) # addiu $a1, $a1, -0x5228 -/* 01F33C 8001E73C 240D0014 */ li $t5, 20 -.L8001E740: -/* 01F340 8001E740 8CA40000 */ lw $a0, ($a1) -/* 01F344 8001E744 858F0000 */ lh $t7, ($t4) -/* 01F348 8001E748 8C86003C */ lw $a2, 0x3c($a0) -/* 01F34C 8001E74C 8C870064 */ lw $a3, 0x64($a0) -/* 01F350 8001E750 80C80009 */ lb $t0, 9($a2) -/* 01F354 8001E754 24420001 */ addiu $v0, $v0, 1 -/* 01F358 8001E758 11E80003 */ beq $t7, $t0, .L8001E768 -/* 01F35C 8001E75C 00000000 */ nop -/* 01F360 8001E760 15A80045 */ bne $t5, $t0, .L8001E878 -/* 01F364 8001E764 0043082A */ slt $at, $v0, $v1 -.L8001E768: -/* 01F368 8001E768 86290000 */ lh $t1, ($s1) -/* 01F36C 8001E76C 00004025 */ move $t0, $zero -/* 01F370 8001E770 19200014 */ blez $t1, .L8001E7C4 -/* 01F374 8001E774 00000000 */ nop -/* 01F378 8001E778 8E4B0000 */ lw $t3, ($s2) -/* 01F37C 8001E77C 80CA0008 */ lb $t2, 8($a2) -/* 01F380 8001E780 8D780000 */ lw $t8, ($t3) -/* 01F384 8001E784 00000000 */ nop -/* 01F388 8001E788 8F19007C */ lw $t9, 0x7c($t8) -/* 01F38C 8001E78C 00000000 */ nop -/* 01F390 8001E790 1159000C */ beq $t2, $t9, .L8001E7C4 -/* 01F394 8001E794 00000000 */ nop -.L8001E798: -/* 01F398 8001E798 25080001 */ addiu $t0, $t0, 1 -/* 01F39C 8001E79C 0109082A */ slt $at, $t0, $t1 -/* 01F3A0 8001E7A0 10200008 */ beqz $at, .L8001E7C4 -/* 01F3A4 8001E7A4 00087080 */ sll $t6, $t0, 2 -/* 01F3A8 8001E7A8 016E7821 */ addu $t7, $t3, $t6 -/* 01F3AC 8001E7AC 8DF80000 */ lw $t8, ($t7) -/* 01F3B0 8001E7B0 00000000 */ nop -/* 01F3B4 8001E7B4 8F19007C */ lw $t9, 0x7c($t8) -/* 01F3B8 8001E7B8 00000000 */ nop -/* 01F3BC 8001E7BC 1559FFF6 */ bne $t2, $t9, .L8001E798 -/* 01F3C0 8001E7C0 00000000 */ nop -.L8001E7C4: -/* 01F3C4 8001E7C4 11090027 */ beq $t0, $t1, .L8001E864 -/* 01F3C8 8001E7C8 00000000 */ nop -/* 01F3CC 8001E7CC 8E4E0000 */ lw $t6, ($s2) -/* 01F3D0 8001E7D0 00087880 */ sll $t7, $t0, 2 -/* 01F3D4 8001E7D4 01CFC021 */ addu $t8, $t6, $t7 -/* 01F3D8 8001E7D8 8F190000 */ lw $t9, ($t8) -/* 01F3DC 8001E7DC 00000000 */ nop -/* 01F3E0 8001E7E0 8F260064 */ lw $a2, 0x64($t9) -/* 01F3E4 8001E7E4 00000000 */ nop -/* 01F3E8 8001E7E8 10C0001E */ beqz $a2, .L8001E864 -/* 01F3EC 8001E7EC 00000000 */ nop -/* 01F3F0 8001E7F0 8CCE005C */ lw $t6, 0x5c($a2) -/* 01F3F4 8001E7F4 24080001 */ li $t0, 1 -/* 01F3F8 8001E7F8 11C00003 */ beqz $t6, .L8001E808 -/* 01F3FC 8001E7FC 00000000 */ nop -/* 01F400 8001E800 10000001 */ b .L8001E808 -/* 01F404 8001E804 00004025 */ move $t0, $zero -.L8001E808: -/* 01F408 8001E808 1208001B */ beq $s0, $t0, .L8001E878 -/* 01F40C 8001E80C 0043082A */ slt $at, $v0, $v1 -/* 01F410 8001E810 C4C4000C */ lwc1 $f4, 0xc($a2) -/* 01F414 8001E814 3C038012 */ lui $v1, %hi(D_8011AE00) # $v1, 0x8012 -/* 01F418 8001E818 E4E40000 */ swc1 $f4, ($a3) -/* 01F41C 8001E81C C4C60010 */ lwc1 $f6, 0x10($a2) -/* 01F420 8001E820 00000000 */ nop -/* 01F424 8001E824 E4E60004 */ swc1 $f6, 4($a3) -/* 01F428 8001E828 C4C80014 */ lwc1 $f8, 0x14($a2) -/* 01F42C 8001E82C ACE6000C */ sw $a2, 0xc($a3) -/* 01F430 8001E830 E4E80008 */ swc1 $f8, 8($a3) -/* 01F434 8001E834 C48A000C */ lwc1 $f10, 0xc($a0) -/* 01F438 8001E838 00000000 */ nop -/* 01F43C 8001E83C E4CA000C */ swc1 $f10, 0xc($a2) -/* 01F440 8001E840 C4900010 */ lwc1 $f16, 0x10($a0) -/* 01F444 8001E844 00000000 */ nop -/* 01F448 8001E848 E4D00010 */ swc1 $f16, 0x10($a2) -/* 01F44C 8001E84C C4920014 */ lwc1 $f18, 0x14($a0) -/* 01F450 8001E850 00000000 */ nop -/* 01F454 8001E854 E4D20014 */ swc1 $f18, 0x14($a2) -/* 01F458 8001E858 8063AE00 */ lb $v1, %lo(D_8011AE00)($v1) -/* 01F45C 8001E85C 10000006 */ b .L8001E878 -/* 01F460 8001E860 0043082A */ slt $at, $v0, $v1 -.L8001E864: -/* 01F464 8001E864 ACE0000C */ sw $zero, 0xc($a3) -/* 01F468 8001E868 3C038012 */ lui $v1, %hi(D_8011AE00) # $v1, 0x8012 -/* 01F46C 8001E86C 8063AE00 */ lb $v1, %lo(D_8011AE00)($v1) -/* 01F470 8001E870 00000000 */ nop -/* 01F474 8001E874 0043082A */ slt $at, $v0, $v1 -.L8001E878: -/* 01F478 8001E878 1420FFB1 */ bnez $at, .L8001E740 -/* 01F47C 8001E87C 24A50004 */ addiu $a1, $a1, 4 -.L8001E880: -/* 01F480 8001E880 3C018012 */ lui $at, %hi(D_8011AE01) # $at, 0x8012 -/* 01F484 8001E884 8FB00004 */ lw $s0, 4($sp) -/* 01F488 8001E888 8FB10008 */ lw $s1, 8($sp) -/* 01F48C 8001E88C 8FB2000C */ lw $s2, 0xc($sp) -/* 01F490 8001E890 A020AE01 */ sb $zero, %lo(D_8011AE01)($at) -/* 01F494 8001E894 03E00008 */ jr $ra -/* 01F498 8001E898 27BD0010 */ addiu $sp, $sp, 0x10 - diff --git a/asm/non_matchings/objects/func_8001EE74.s b/asm/non_matchings/objects/func_8001EE74.s deleted file mode 100644 index 3f57792f..00000000 --- a/asm/non_matchings/objects/func_8001EE74.s +++ /dev/null @@ -1,83 +0,0 @@ -glabel func_8001EE74 -/* 01FA74 8001EE74 27BDFFC0 */ addiu $sp, $sp, -0x40 -/* 01FA78 8001EE78 AFB70034 */ sw $s7, 0x34($sp) -/* 01FA7C 8001EE7C 3C178012 */ lui $s7, %hi(D_8011AE78) # $s7, 0x8012 -/* 01FA80 8001EE80 26F7AE78 */ addiu $s7, %lo(D_8011AE78) # addiu $s7, $s7, -0x5188 -/* 01FA84 8001EE84 86EE0000 */ lh $t6, ($s7) -/* 01FA88 8001EE88 AFB30024 */ sw $s3, 0x24($sp) -/* 01FA8C 8001EE8C AFBF003C */ sw $ra, 0x3c($sp) -/* 01FA90 8001EE90 AFBE0038 */ sw $fp, 0x38($sp) -/* 01FA94 8001EE94 AFB60030 */ sw $s6, 0x30($sp) -/* 01FA98 8001EE98 AFB5002C */ sw $s5, 0x2c($sp) -/* 01FA9C 8001EE9C AFB40028 */ sw $s4, 0x28($sp) -/* 01FAA0 8001EEA0 AFB20020 */ sw $s2, 0x20($sp) -/* 01FAA4 8001EEA4 AFB1001C */ sw $s1, 0x1c($sp) -/* 01FAA8 8001EEA8 AFB00018 */ sw $s0, 0x18($sp) -/* 01FAAC 8001EEAC 19C0002E */ blez $t6, .L8001EF68 -/* 01FAB0 8001EEB0 00009825 */ move $s3, $zero -/* 01FAB4 8001EEB4 3C1E8012 */ lui $fp, %hi(D_8011AD26) # $fp, 0x8012 -/* 01FAB8 8001EEB8 3C148012 */ lui $s4, %hi(D_8011AE74) # $s4, 0x8012 -/* 01FABC 8001EEBC 2694AE74 */ addiu $s4, %lo(D_8011AE74) # addiu $s4, $s4, -0x518c -/* 01FAC0 8001EEC0 27DEAD26 */ addiu $fp, %lo(D_8011AD26) # addiu $fp, $fp, -0x52da -/* 01FAC4 8001EEC4 00009025 */ move $s2, $zero -/* 01FAC8 8001EEC8 24160014 */ li $s6, 20 -/* 01FACC 8001EECC 2415FFFF */ li $s5, -1 -.L8001EED0: -/* 01FAD0 8001EED0 8E8F0000 */ lw $t7, ($s4) -/* 01FAD4 8001EED4 00000000 */ nop -/* 01FAD8 8001EED8 01F2C021 */ addu $t8, $t7, $s2 -/* 01FADC 8001EEDC 8F110000 */ lw $s1, ($t8) -/* 01FAE0 8001EEE0 00000000 */ nop -/* 01FAE4 8001EEE4 8E390064 */ lw $t9, 0x64($s1) -/* 01FAE8 8001EEE8 8E30003C */ lw $s0, 0x3c($s1) -/* 01FAEC 8001EEEC 1720000B */ bnez $t9, .L8001EF1C -/* 01FAF0 8001EEF0 00000000 */ nop -/* 01FAF4 8001EEF4 82080011 */ lb $t0, 0x11($s0) -/* 01FAF8 8001EEF8 00000000 */ nop -/* 01FAFC 8001EEFC 15000007 */ bnez $t0, .L8001EF1C -/* 01FB00 8001EF00 00000000 */ nop -/* 01FB04 8001EF04 8609000C */ lh $t1, 0xc($s0) -/* 01FB08 8001EF08 02202025 */ move $a0, $s1 -/* 01FB0C 8001EF0C 12A90003 */ beq $s5, $t1, .L8001EF1C -/* 01FB10 8001EF10 00000000 */ nop -/* 01FB14 8001EF14 0C007C8F */ jal func_8001F23C -/* 01FB18 8001EF18 02002825 */ move $a1, $s0 -.L8001EF1C: -/* 01FB1C 8001EF1C 83CA0000 */ lb $t2, ($fp) -/* 01FB20 8001EF20 00000000 */ nop -/* 01FB24 8001EF24 15400005 */ bnez $t2, .L8001EF3C -/* 01FB28 8001EF28 00000000 */ nop -/* 01FB2C 8001EF2C 820B0021 */ lb $t3, 0x21($s0) -/* 01FB30 8001EF30 00000000 */ nop -/* 01FB34 8001EF34 12CB0007 */ beq $s6, $t3, .L8001EF54 -/* 01FB38 8001EF38 00000000 */ nop -.L8001EF3C: -/* 01FB3C 8001EF3C 8E250064 */ lw $a1, 0x64($s1) -/* 01FB40 8001EF40 00000000 */ nop -/* 01FB44 8001EF44 10A00003 */ beqz $a1, .L8001EF54 -/* 01FB48 8001EF48 00000000 */ nop -/* 01FB4C 8001EF4C 0C007BE9 */ jal func_8001EFA4 -/* 01FB50 8001EF50 02202025 */ move $a0, $s1 -.L8001EF54: -/* 01FB54 8001EF54 86EC0000 */ lh $t4, ($s7) -/* 01FB58 8001EF58 26730001 */ addiu $s3, $s3, 1 -/* 01FB5C 8001EF5C 026C082A */ slt $at, $s3, $t4 -/* 01FB60 8001EF60 1420FFDB */ bnez $at, .L8001EED0 -/* 01FB64 8001EF64 26520004 */ addiu $s2, $s2, 4 -.L8001EF68: -/* 01FB68 8001EF68 3C1E8012 */ lui $fp, %hi(D_8011AD26) # $fp, 0x8012 -/* 01FB6C 8001EF6C 27DEAD26 */ addiu $fp, %lo(D_8011AD26) # addiu $fp, $fp, -0x52da -/* 01FB70 8001EF70 8FBF003C */ lw $ra, 0x3c($sp) -/* 01FB74 8001EF74 A3C00000 */ sb $zero, ($fp) -/* 01FB78 8001EF78 8FBE0038 */ lw $fp, 0x38($sp) -/* 01FB7C 8001EF7C 8FB00018 */ lw $s0, 0x18($sp) -/* 01FB80 8001EF80 8FB1001C */ lw $s1, 0x1c($sp) -/* 01FB84 8001EF84 8FB20020 */ lw $s2, 0x20($sp) -/* 01FB88 8001EF88 8FB30024 */ lw $s3, 0x24($sp) -/* 01FB8C 8001EF8C 8FB40028 */ lw $s4, 0x28($sp) -/* 01FB90 8001EF90 8FB5002C */ lw $s5, 0x2c($sp) -/* 01FB94 8001EF94 8FB60030 */ lw $s6, 0x30($sp) -/* 01FB98 8001EF98 8FB70034 */ lw $s7, 0x34($sp) -/* 01FB9C 8001EF9C 03E00008 */ jr $ra -/* 01FBA0 8001EFA0 27BD0040 */ addiu $sp, $sp, 0x40 - diff --git a/asm/non_matchings/thread0_epc/func_800B71B0.s b/asm/non_matchings/thread0_epc/func_800B71B0.s deleted file mode 100644 index dbd0fbd7..00000000 --- a/asm/non_matchings/thread0_epc/func_800B71B0.s +++ /dev/null @@ -1,187 +0,0 @@ -glabel func_800B71B0 -/* 0B7DB0 800B71B0 27BDF7B8 */ addiu $sp, $sp, -0x848 -/* 0B7DB4 800B71B4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0B7DB8 800B71B8 0C03491C */ jal __osGetActiveQueue -/* 0B7DBC 800B71BC 00000000 */ nop -/* 0B7DC0 800B71C0 8C4E0004 */ lw $t6, 4($v0) -/* 0B7DC4 800B71C4 2404FFFF */ li $a0, -1 -/* 0B7DC8 800B71C8 108E0014 */ beq $a0, $t6, .L800B721C -/* 0B7DCC 800B71CC 00403825 */ move $a3, $v0 -/* 0B7DD0 800B71D0 8CE30004 */ lw $v1, 4($a3) -/* 0B7DD4 800B71D4 00000000 */ nop -.L800B71D8: -/* 0B7DD8 800B71D8 1860000A */ blez $v1, .L800B7204 -/* 0B7DDC 800B71DC 28610080 */ slti $at, $v1, 0x80 -/* 0B7DE0 800B71E0 10200008 */ beqz $at, .L800B7204 -/* 0B7DE4 800B71E4 00000000 */ nop -/* 0B7DE8 800B71E8 94E30012 */ lhu $v1, 0x12($a3) -/* 0B7DEC 800B71EC 00000000 */ nop -/* 0B7DF0 800B71F0 306F0002 */ andi $t7, $v1, 2 -/* 0B7DF4 800B71F4 15E00009 */ bnez $t7, .L800B721C -/* 0B7DF8 800B71F8 30780001 */ andi $t8, $v1, 1 -/* 0B7DFC 800B71FC 17000007 */ bnez $t8, .L800B721C -/* 0B7E00 800B7200 00000000 */ nop -.L800B7204: -/* 0B7E04 800B7204 8CE7000C */ lw $a3, 0xc($a3) -/* 0B7E08 800B7208 00000000 */ nop -/* 0B7E0C 800B720C 8CE30004 */ lw $v1, 4($a3) -/* 0B7E10 800B7210 00000000 */ nop -/* 0B7E14 800B7214 1483FFF0 */ bne $a0, $v1, .L800B71D8 -/* 0B7E18 800B7218 00000000 */ nop -.L800B721C: -/* 0B7E1C 800B721C 8CF90004 */ lw $t9, 4($a3) -/* 0B7E20 800B7220 00000000 */ nop -/* 0B7E24 800B7224 10990081 */ beq $a0, $t9, .L800B742C -/* 0B7E28 800B7228 00000000 */ nop -/* 0B7E2C 800B722C 3C028013 */ lui $v0, %hi(gObjectStackTrace) # $v0, 0x8013 -/* 0B7E30 800B7230 24429FB0 */ addiu $v0, %lo(gObjectStackTrace) # addiu $v0, $v0, -0x6050 -/* 0B7E34 800B7234 8C480000 */ lw $t0, ($v0) -/* 0B7E38 800B7238 00E02025 */ move $a0, $a3 -/* 0B7E3C 800B723C 44882000 */ mtc1 $t0, $f4 -/* 0B7E40 800B7240 27A50044 */ addiu $a1, $sp, 0x44 -/* 0B7E44 800B7244 468021A0 */ cvt.s.w $f6, $f4 -/* 0B7E48 800B7248 240601B0 */ li $a2, 432 -/* 0B7E4C 800B724C E4E60130 */ swc1 $f6, 0x130($a3) -/* 0B7E50 800B7250 8C490004 */ lw $t1, 4($v0) -/* 0B7E54 800B7254 00000000 */ nop -/* 0B7E58 800B7258 44894000 */ mtc1 $t1, $f8 -/* 0B7E5C 800B725C 00000000 */ nop -/* 0B7E60 800B7260 468042A0 */ cvt.s.w $f10, $f8 -/* 0B7E64 800B7264 E4EA0134 */ swc1 $f10, 0x134($a3) -/* 0B7E68 800B7268 8C4A0008 */ lw $t2, 8($v0) -/* 0B7E6C 800B726C 00000000 */ nop -/* 0B7E70 800B7270 448A8000 */ mtc1 $t2, $f16 -/* 0B7E74 800B7274 00000000 */ nop -/* 0B7E78 800B7278 468084A0 */ cvt.s.w $f18, $f16 -/* 0B7E7C 800B727C E4F20138 */ swc1 $f18, 0x138($a3) -/* 0B7E80 800B7280 0C032768 */ jal bcopy -/* 0B7E84 800B7284 AFA70844 */ sw $a3, 0x844($sp) -/* 0B7E88 800B7288 8FA70844 */ lw $a3, 0x844($sp) -/* 0B7E8C 800B728C 27A50244 */ addiu $a1, $sp, 0x244 -/* 0B7E90 800B7290 8CE400F4 */ lw $a0, 0xf4($a3) -/* 0B7E94 800B7294 0C032768 */ jal bcopy -/* 0B7E98 800B7298 24060200 */ li $a2, 512 -/* 0B7E9C 800B729C 27A40038 */ addiu $a0, $sp, 0x38 -/* 0B7EA0 800B72A0 0C009165 */ jal func_80024594 -/* 0B7EA4 800B72A4 27A50034 */ addiu $a1, $sp, 0x34 -/* 0B7EA8 800B72A8 8FAB0034 */ lw $t3, 0x34($sp) -/* 0B7EAC 800B72AC 00002825 */ move $a1, $zero -/* 0B7EB0 800B72B0 19600054 */ blez $t3, .L800B7404 -/* 0B7EB4 800B72B4 3C07800F */ lui $a3, %hi(D_800E8EE4) # $a3, 0x800f -/* 0B7EB8 800B72B8 31660003 */ andi $a2, $t3, 3 -/* 0B7EBC 800B72BC 10C00018 */ beqz $a2, .L800B7320 -/* 0B7EC0 800B72C0 00C01825 */ move $v1, $a2 -/* 0B7EC4 800B72C4 00007040 */ sll $t6, $zero, 1 -/* 0B7EC8 800B72C8 27AF0444 */ addiu $t7, $sp, 0x444 -/* 0B7ECC 800B72CC 01CF2021 */ addu $a0, $t6, $t7 -.L800B72D0: -/* 0B7ED0 800B72D0 8FB80038 */ lw $t8, 0x38($sp) -/* 0B7ED4 800B72D4 24A50001 */ addiu $a1, $a1, 1 -/* 0B7ED8 800B72D8 0018C840 */ sll $t9, $t8, 1 -/* 0B7EDC 800B72DC 00594021 */ addu $t0, $v0, $t9 -/* 0B7EE0 800B72E0 85090000 */ lh $t1, ($t0) -/* 0B7EE4 800B72E4 00000000 */ nop -/* 0B7EE8 800B72E8 A4890000 */ sh $t1, ($a0) -/* 0B7EEC 800B72EC 8FAA0038 */ lw $t2, 0x38($sp) -/* 0B7EF0 800B72F0 8FAD0034 */ lw $t5, 0x34($sp) -/* 0B7EF4 800B72F4 254CFFFF */ addiu $t4, $t2, -1 -/* 0B7EF8 800B72F8 05810003 */ bgez $t4, .L800B7308 -/* 0B7EFC 800B72FC AFAC0038 */ sw $t4, 0x38($sp) -/* 0B7F00 800B7300 018D3021 */ addu $a2, $t4, $t5 -/* 0B7F04 800B7304 AFA60038 */ sw $a2, 0x38($sp) -.L800B7308: -/* 0B7F08 800B7308 8FA60038 */ lw $a2, 0x38($sp) -/* 0B7F0C 800B730C 1465FFF0 */ bne $v1, $a1, .L800B72D0 -/* 0B7F10 800B7310 24840002 */ addiu $a0, $a0, 2 -/* 0B7F14 800B7314 8FAB0034 */ lw $t3, 0x34($sp) -/* 0B7F18 800B7318 AFA60038 */ sw $a2, 0x38($sp) -/* 0B7F1C 800B731C 10AB0039 */ beq $a1, $t3, .L800B7404 -.L800B7320: -/* 0B7F20 800B7320 00057040 */ sll $t6, $a1, 1 -/* 0B7F24 800B7324 27AF0444 */ addiu $t7, $sp, 0x444 -/* 0B7F28 800B7328 01CF2021 */ addu $a0, $t6, $t7 -.L800B732C: -/* 0B7F2C 800B732C 8FB80038 */ lw $t8, 0x38($sp) -/* 0B7F30 800B7330 00000000 */ nop -/* 0B7F34 800B7334 0018C840 */ sll $t9, $t8, 1 -/* 0B7F38 800B7338 00591821 */ addu $v1, $v0, $t9 -/* 0B7F3C 800B733C 84680000 */ lh $t0, ($v1) -/* 0B7F40 800B7340 2463FFFE */ addiu $v1, $v1, -2 -/* 0B7F44 800B7344 A4880000 */ sh $t0, ($a0) -/* 0B7F48 800B7348 8FA90038 */ lw $t1, 0x38($sp) -/* 0B7F4C 800B734C 8FAC0034 */ lw $t4, 0x34($sp) -/* 0B7F50 800B7350 252AFFFF */ addiu $t2, $t1, -1 -/* 0B7F54 800B7354 05410005 */ bgez $t2, .L800B736C -/* 0B7F58 800B7358 AFAA0038 */ sw $t2, 0x38($sp) -/* 0B7F5C 800B735C 014C3021 */ addu $a2, $t2, $t4 -/* 0B7F60 800B7360 00066840 */ sll $t5, $a2, 1 -/* 0B7F64 800B7364 004D1821 */ addu $v1, $v0, $t5 -/* 0B7F68 800B7368 AFA60038 */ sw $a2, 0x38($sp) -.L800B736C: -/* 0B7F6C 800B736C 846B0000 */ lh $t3, ($v1) -/* 0B7F70 800B7370 2463FFFE */ addiu $v1, $v1, -2 -/* 0B7F74 800B7374 A48B0002 */ sh $t3, 2($a0) -/* 0B7F78 800B7378 8FAE0038 */ lw $t6, 0x38($sp) -/* 0B7F7C 800B737C 8FB80034 */ lw $t8, 0x34($sp) -/* 0B7F80 800B7380 25CFFFFF */ addiu $t7, $t6, -1 -/* 0B7F84 800B7384 05E10005 */ bgez $t7, .L800B739C -/* 0B7F88 800B7388 AFAF0038 */ sw $t7, 0x38($sp) -/* 0B7F8C 800B738C 01F83021 */ addu $a2, $t7, $t8 -/* 0B7F90 800B7390 0006C840 */ sll $t9, $a2, 1 -/* 0B7F94 800B7394 00591821 */ addu $v1, $v0, $t9 -/* 0B7F98 800B7398 AFA60038 */ sw $a2, 0x38($sp) -.L800B739C: -/* 0B7F9C 800B739C 84680000 */ lh $t0, ($v1) -/* 0B7FA0 800B73A0 2463FFFE */ addiu $v1, $v1, -2 -/* 0B7FA4 800B73A4 A4880004 */ sh $t0, 4($a0) -/* 0B7FA8 800B73A8 8FA90038 */ lw $t1, 0x38($sp) -/* 0B7FAC 800B73AC 8FAC0034 */ lw $t4, 0x34($sp) -/* 0B7FB0 800B73B0 252AFFFF */ addiu $t2, $t1, -1 -/* 0B7FB4 800B73B4 05410005 */ bgez $t2, .L800B73CC -/* 0B7FB8 800B73B8 AFAA0038 */ sw $t2, 0x38($sp) -/* 0B7FBC 800B73BC 014C3021 */ addu $a2, $t2, $t4 -/* 0B7FC0 800B73C0 00066840 */ sll $t5, $a2, 1 -/* 0B7FC4 800B73C4 004D1821 */ addu $v1, $v0, $t5 -/* 0B7FC8 800B73C8 AFA60038 */ sw $a2, 0x38($sp) -.L800B73CC: -/* 0B7FCC 800B73CC 846B0000 */ lh $t3, ($v1) -/* 0B7FD0 800B73D0 00000000 */ nop -/* 0B7FD4 800B73D4 A48B0006 */ sh $t3, 6($a0) -/* 0B7FD8 800B73D8 8FAE0038 */ lw $t6, 0x38($sp) -/* 0B7FDC 800B73DC 8FB80034 */ lw $t8, 0x34($sp) -/* 0B7FE0 800B73E0 25CFFFFF */ addiu $t7, $t6, -1 -/* 0B7FE4 800B73E4 05E10003 */ bgez $t7, .L800B73F4 -/* 0B7FE8 800B73E8 AFAF0038 */ sw $t7, 0x38($sp) -/* 0B7FEC 800B73EC 01F83021 */ addu $a2, $t7, $t8 -/* 0B7FF0 800B73F0 AFA60038 */ sw $a2, 0x38($sp) -.L800B73F4: -/* 0B7FF4 800B73F4 8FB90034 */ lw $t9, 0x34($sp) -/* 0B7FF8 800B73F8 24A50004 */ addiu $a1, $a1, 4 -/* 0B7FFC 800B73FC 14B9FFCB */ bne $a1, $t9, .L800B732C -/* 0B8000 800B7400 24840008 */ addiu $a0, $a0, 8 -.L800B7404: -/* 0B8004 800B7404 3C06800F */ lui $a2, %hi(D_800E8EDC) # $a2, 0x800f -/* 0B8008 800B7408 27A80044 */ addiu $t0, $sp, 0x44 -/* 0B800C 800B740C 24090800 */ li $t1, 2048 -/* 0B8010 800B7410 AFA90014 */ sw $t1, 0x14($sp) -/* 0B8014 800B7414 AFA80010 */ sw $t0, 0x10($sp) -/* 0B8018 800B7418 24C68EDC */ addiu $a2, %lo(D_800E8EDC) # addiu $a2, $a2, -0x7124 -/* 0B801C 800B741C 00002025 */ move $a0, $zero -/* 0B8020 800B7420 2405FFFF */ li $a1, -1 -/* 0B8024 800B7424 0C01D9B5 */ jal write_controller_pak_file -/* 0B8028 800B7428 24E78EE4 */ addiu $a3, %lo(D_800E8EE4) # addiu $a3, $a3, -0x711c -.L800B742C: -/* 0B802C 800B742C 1000FFFF */ b .L800B742C -/* 0B8030 800B7430 00000000 */ nop -/* 0B8034 800B7434 00000000 */ nop -/* 0B8038 800B7438 00000000 */ nop -/* 0B803C 800B743C 00000000 */ nop -/* 0B8040 800B7440 00000000 */ nop -/* 0B8044 800B7444 00000000 */ nop -/* 0B8048 800B7448 00000000 */ nop -/* 0B804C 800B744C 00000000 */ nop -/* 0B8050 800B7450 8FBF001C */ lw $ra, 0x1c($sp) -/* 0B8054 800B7454 27BD0848 */ addiu $sp, $sp, 0x848 -/* 0B8058 800B7458 03E00008 */ jr $ra -/* 0B805C 800B745C 00000000 */ nop - diff --git a/asm/non_matchings/thread0_epc/func_800B7460.s b/asm/non_matchings/thread0_epc/func_800B7460.s index 50de5920..cdebe248 100644 --- a/asm/non_matchings/thread0_epc/func_800B7460.s +++ b/asm/non_matchings/thread0_epc/func_800B7460.s @@ -49,7 +49,7 @@ glabel func_800B7460 /* 0B811C 800B751C 8FA909F4 */ lw $t1, 0x9f4($sp) /* 0B8120 800B7520 00002825 */ move $a1, $zero /* 0B8124 800B7524 19200054 */ blez $t1, .L800B7678 -/* 0B8128 800B7528 3C07800F */ lui $a3, %hi(sCoreFileExt1) # $a3, 0x800f +/* 0B8128 800B7528 3C07800F */ lui $a3, %hi(sCoreFileExt) # $a3, 0x800f /* 0B812C 800B752C 31260003 */ andi $a2, $t1, 3 /* 0B8130 800B7530 10C00018 */ beqz $a2, .L800B7594 /* 0B8134 800B7534 00C01825 */ move $v1, $a2 @@ -142,16 +142,16 @@ glabel func_800B7460 /* 0B8270 800B7670 14AEFFCB */ bne $a1, $t6, .L800B75A0 /* 0B8274 800B7674 24840008 */ addiu $a0, $a0, 8 .L800B7678: -/* 0B8278 800B7678 3C06800F */ lui $a2, %hi(sCoreFileName1) # $a2, 0x800f +/* 0B8278 800B7678 3C06800F */ lui $a2, %hi(sCoreFileName) # $a2, 0x800f /* 0B827C 800B767C 27AF0040 */ addiu $t7, $sp, 0x40 /* 0B8280 800B7680 240D0800 */ li $t5, 2048 /* 0B8284 800B7684 AFAD0014 */ sw $t5, 0x14($sp) /* 0B8288 800B7688 AFAF0010 */ sw $t7, 0x10($sp) -/* 0B828C 800B768C 24C68EE8 */ addiu $a2, %lo(sCoreFileName1) # addiu $a2, $a2, -0x7118 +/* 0B828C 800B768C 24C68EE8 */ addiu $a2, %lo(sCoreFileName) # addiu $a2, $a2, -0x7118 /* 0B8290 800B7690 00002025 */ move $a0, $zero /* 0B8294 800B7694 2405FFFF */ li $a1, -1 /* 0B8298 800B7698 0C01D9B5 */ jal write_controller_pak_file -/* 0B829C 800B769C 24E78EF0 */ addiu $a3, %lo(sCoreFileExt1) # addiu $a3, $a3, -0x7110 +/* 0B829C 800B769C 24E78EF0 */ addiu $a3, %lo(sCoreFileExt) # addiu $a3, $a3, -0x7110 .L800B76A0: /* 0B82A0 800B76A0 1000FFFF */ b .L800B76A0 /* 0B82A4 800B76A4 00000000 */ nop diff --git a/include/level_object_entries.h b/include/level_object_entries.h index 21778f0d..c5b17073 100644 --- a/include/level_object_entries.h +++ b/include/level_object_entries.h @@ -535,6 +535,8 @@ typedef struct LevelObjectEntry_GroundZipper { typedef struct LevelObjectEntry_OverridePos { /* 0x00 */ LevelObjectEntryCommon common; + /* 0x08 */ s8 behaviorId; + /* 0x09 */ s8 cutsceneId; } LevelObjectEntry_OverridePos; typedef struct LevelObjectEntry_WizpigShip { diff --git a/include/structs.h b/include/structs.h index 646abe43..8b2a4cea 100644 --- a/include/structs.h +++ b/include/structs.h @@ -334,7 +334,7 @@ typedef struct Settings { /* 0x0050 */ u32 filename; /* 0x0054 */ Racer racers[8]; /* 0x0114 */ s8 timeTrialRacer; - /* 0x0115 */ char unk115[2]; + /* 0x0115 */ s8 unk115[2]; /* 0x0117 */ u8 display_times; } Settings; @@ -578,11 +578,8 @@ typedef struct ObjectModel { /* 0x14 */ s16 *unk14; /* 0x18 */ s16 unk18; /* 0x1A */ s16 unk1A; - /* 0x1C */ s8 unk1C; - /* 0x1D */ s8 unk1D; - /* 0x1E */ s8 unk1E; - /* 0x1F */ s8 unk1F; - /* 0x20 */ u8 pad20[2]; + /* 0x1C */ s16 *unk1C; + /* 0x20 */ s16 unk20; /* 0x22 */ s16 numberOfTextures; /* 0x24 */ s16 numberOfVertices; /* 0x26 */ s16 numberOfTriangles; @@ -591,14 +588,15 @@ typedef struct ObjectModel { /* 0x2E */ u8 unk2E; /* 0x2F */ char pad2F[1]; /* 0x30 */ s16 unk30; - /* 0x32 */ u8 pad32[6]; + /* 0x32 */ s16 unk32; + /* 0x34 */ u8 pad34[4]; /* 0x38 */ TriangleBatchInfo* batches; - /* 0x3C */ u8 pad3C[4]; + /* 0x3C */ f32 unk3C; /* 0x40 */ s32* unk40; /* 0x44 */ ObjectModel_44* animations; /* 0x48 */ s16 numberOfAnimations; /* 0x4A */ s16 unk4A; - /* 0x4C */ u8 pad4C[4]; + /* 0x4C */ s32 *unk4C; /* 0x50 */ s16 unk50; /* 0x52 */ s16 unk52; } ObjectModel; @@ -800,7 +798,7 @@ typedef struct ObjectInteraction { /* 0x04 */ f32 x_position; /* 0x08 */ f32 y_position; /* 0x0C */ f32 z_position; - /* 0x10 */ u8 hitboxRadius; + /* 0x10 */ s8 hitboxRadius; /* 0x11 */ u8 unk11; /* 0x12 */ u8 pushForce; /* 0x13 */ u8 distance; @@ -915,9 +913,9 @@ typedef struct Object_Animation { /* 0x00 */ f32 unk0; /* 0x04 */ f32 unk4; /* 0x08 */ f32 unk8; - /* 0x0C */ s32 unkC; - /* 0x10 */ f32 unk10; - /* 0x14 */ f32 unk14; + /* 0x0C */ f32 x; + /* 0x10 */ f32 y; + /* 0x14 */ f32 z; /* 0x18 */ u8 *unk18; /* 0x1C */ struct Object *unk1C; /* 0x20 */ s32 unk20; @@ -952,8 +950,17 @@ typedef struct Object_Animation { /* 0x45 */ u8 unk45; /* 0x46 */ u8 pad46[4]; /* 0x4A */ s16 unk4A; + /* 0x4C */ u8 pad4C[0x10]; + /* 0x5C */ s32 unk5C; } Object_Animation; +typedef struct Object_OverridePos { + /* 0x00 */ f32 x; + /* 0x04 */ f32 y; + /* 0x08 */ f32 z; + /* 0x0C */ Object_Animation *anim; +} Object_OverridePos; + typedef struct Object_WeaponBalloon { /* 0x0 */ f32 radius; /* 0x4 */ s16 unk4; @@ -1653,9 +1660,10 @@ typedef struct Object_68 { ObjectModel *objModel; TextureHeader *texHeader; }; - /* 0x04 */ s32 *unk4[3]; + /* 0x04 */ Vertex *unk4[3]; /* 0x10 */ s16 unk10; - /* 0x12 */ u8 pad12[4]; + /* 0x12 */ s16 unk12; + /* 0x14 */ s16 unk14; /* 0x16 */ s16 unk16; /* 0x18 */ s16 unk18; /* 0x1A */ s16 unk1A; @@ -1896,10 +1904,6 @@ typedef struct GhostDataFrame { u8 pad0[12]; } GhostDataFrame; -typedef struct unk80042178 { - u8 pad0[0x20]; -} unk80042178; - typedef struct ByteColour { u8 red; u8 green; diff --git a/src/object_functions.c b/src/object_functions.c index ee0456bd..d6fbecb6 100644 --- a/src/object_functions.c +++ b/src/object_functions.c @@ -4953,12 +4953,12 @@ void obj_init_rangetrigger(UNUSED Object *obj, UNUSED LevelObjectEntry_RangeTrig /* Official name: rangetriggerControl */ void obj_loop_rangetrigger(Object *obj, s32 updateRate) { - UNUSED s32 temp; + UNUSED s32 pad; LevelObjectEntry_RangeTrigger *level_entry; - unk80042178 sp20; + Object *objs[8]; level_entry = &obj->segment.level_entry->rangeTrigger; - if (func_80016DE8(obj->segment.trans.x_position, 0, obj->segment.trans.z_position, (f32)level_entry->unk8, 1, &sp20) > 0) { + if (func_80016DE8(obj->segment.trans.x_position, 0, obj->segment.trans.z_position, level_entry->unk8, 1, objs) > 0) { obj->unk74 = level_entry->unkA; } else { obj->unk74 = 0; @@ -5029,7 +5029,7 @@ void obj_loop_frog(Object *obj, s32 updateRate) { if (frog->squishCooldown > 0) { frog->squishCooldown -= updateRate; } - if (func_80016DE8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 96.0f, 1, (unk80042178 *) &racerObj) > 0) { + if (func_80016DE8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 96.0f, 1, &racerObj) > 0) { diffX = obj->segment.trans.x_position - racerObj->segment.trans.x_position; diffY = obj->segment.trans.y_position - racerObj->segment.trans.y_position; diffZ = obj->segment.trans.z_position - racerObj->segment.trans.z_position; @@ -5115,7 +5115,7 @@ void obj_loop_frog(Object *obj, s32 updateRate) { move_object(obj, 0.0f, sp6C, 0.0f); } if (frog->squishCooldown <= 0 && (frog->hopFrame < 6 || frog->hopFrame >= 27)) { - if (func_80016DE8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 40.0f, 0, (unk80042178 *) &racerObj)) { + if (func_80016DE8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 40.0f, 0, &racerObj)) { if (frog->drumstick) { play_sound_at_position(SOUND_VOICE_DRUMSTICK_POSITIVE2, obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position, 4, NULL); set_eeprom_settings_value(2); diff --git a/src/object_functions.h b/src/object_functions.h index 33d911e7..1d64bfb6 100644 --- a/src/object_functions.h +++ b/src/object_functions.h @@ -404,6 +404,7 @@ void rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon *rocket void homing_rocket_prevent_overshoot(Object *obj, s32 updateRate, Object_Weapon *rocket); void func_8001F23C(Object *obj, LevelObjectEntry_Animation *animEntry); void obj_loop_effectbox(Object *obj, s32 updateRate); +void func_8001EE74(void); //Non Matching void obj_loop_lavaspurt(Object *obj, s32 updateRate); @@ -446,7 +447,6 @@ void func_8000CBF0(Object*, s32); void try_to_collect_egg(Object *, Object_CollectEgg*); -void func_8001EE74(); s32 func_8001F3EC(s32); s32 func_80021600(s32); void func_8003F2E8(Object *, s32 updateRate); diff --git a/src/object_models.c b/src/object_models.c index 2454c5f4..520b0683 100644 --- a/src/object_models.c +++ b/src/object_models.c @@ -75,56 +75,144 @@ void allocate_object_model_pools(void) { } } -GLOBAL_ASM("asm/non_matchings/object_models/func_8005F99C.s") +Object_68 *func_8005F99C(s32 arg0, s32 arg1) { + s32 i; + s32 sp50; + ObjectModel *objMdl; + s32 sp48; + s32 temp_s0; + Object_68 *ret; + s8 sp3F; + u32 compressedData; + s32 sp34; -unk8005FCD0 *func_8005FCD0(ObjectModel *model, s32 arg1) { + if (arg0 >= D_8011D630) { + arg0 = 0; + } + + // Check if the model already exists in the cache. + for(i = 0; i < D_8011D62C; i++) { + if(arg0 == D_8011D624[(i << 1)]) { + objMdl = (ObjectModel *) D_8011D624[(i << 1) + 1]; + ret = func_8005FCD0(objMdl, arg1); + if (ret != NULL) { + objMdl->unk30++; + } + return ret; + } + } + + if (D_8011D634 > 0) { + D_8011D634--; + sp50 = D_8011D628[D_8011D634]; + } else { + sp50 = D_8011D62C; + D_8011D62C++; + } + + temp_s0 = gObjectModelTable[arg0]; + sp48 = gObjectModelTable[arg0 + 1] - temp_s0; + sp34 = get_asset_uncompressed_size(ASSET_OBJECT_MODELS, temp_s0) + 0x80; + objMdl = (ObjectModel *) allocate_from_main_pool(sp34, COLOUR_TAG_RED); + if (objMdl == NULL) { + return NULL; + } + compressedData = (u32) ((u8 *) objMdl + sp34) - sp48; + load_asset_to_address(ASSET_OBJECT_MODELS, compressedData, temp_s0, sp48); + gzip_inflate((u8 *) compressedData, (u8 *) objMdl); + objMdl->textures = (TextureInfo *) ((s32) objMdl->textures + (u8 *) objMdl); + objMdl->vertices = (Vertex *) ((s32) objMdl->vertices + (u8 *) objMdl); + objMdl->triangles = (Triangle*) ((s32) objMdl->triangles + (u8 *) objMdl); + objMdl->batches = (TriangleBatchInfo *) ((s32) objMdl->batches + (u8 *) objMdl); + objMdl->unk14 = (s16 *) ((s32) objMdl->unk14 + (u8 *) objMdl); + objMdl->unk1C = (s16 *) ((s32) objMdl->unk1C + (u8 *) objMdl); + objMdl->unk4C = (s32 *) ((s32) objMdl->unk4C + (u8 *) objMdl); + objMdl->unk30 = 1; + objMdl->unkC = 0; + objMdl->unk10 = 0; + objMdl->unk32 = 0; + objMdl->unk52 = 0; + objMdl->unk40 = 0; + objMdl->numberOfAnimations = 0; + objMdl->animations = NULL; + sp3F = 0; + for (i = 0; i < objMdl->numberOfTextures; i++) { + objMdl->textures[i].texture = load_texture(((s32) objMdl->textures[i].texture) | 0x8000); + if (objMdl->textures[i].texture == NULL) { + sp3F = 1; + } + } + if (!sp3F) { + for(i = 0; i < objMdl->numberOfBatches; i++) { + if ((objMdl->batches[i].textureIndex != 0xFF) && (objMdl->batches[i].textureIndex >= objMdl->numberOfTextures)) { + goto block_30; + } + } + if ((func_80060EA8(objMdl) == 0) && (func_80061A00(objMdl, arg0) == 0)) { + ret = func_8005FCD0(objMdl, arg1); + if (ret != NULL) { + D_8011D624[(sp50 << 1)] = arg0; + D_8011D624[(sp50 << 1) + 1] = (s32) objMdl; + if (D_8011D62C < 70) { + ret->unk20 = 0; + return ret; + } + } + } + } +block_30: + free_object_model((ObjectModel* ) objMdl); + return NULL; +} + +Object_68 *func_8005FCD0(ObjectModel *model, s32 arg1) { s32 temp; - unk8005FCD0 *result; - s32 var_v1; + Object_68 *result; + Vertex *var_v1; Vertex *vertex; Vertex *mdlVertex; if ((model->numberOfAnimations != 0) && (arg1 & 8)) { temp = ((model->numberOfVertices << 1) * 10) + 36; - result = (unk8005FCD0 *) allocate_from_main_pool((model->unk4A * 6) + temp, COLOUR_TAG_BLUE); + result = (Object_68 *) allocate_from_main_pool((model->unk4A * 6) + temp, COLOUR_TAG_BLUE); if (result == NULL) { return NULL; } - result->unk4 = (Vertex *) ((u8 *) result + 36); - result->unk8 = (Vertex *) ((u8 *) result + (model->numberOfVertices * 10) + 36); - result->unkC = ((u8*)result + temp); + result->unk4[0] = (Vertex *) ((u8 *) result + 36); + result->unk4[1] = (Vertex *) ((u8 *) result + (model->numberOfVertices * 10) + 36); + result->unk4[2] = (Vertex *) ((u8 *) result + temp); result->unk1E = 2; } else if ((model->unk40 != NULL) && (arg1 & 1)) { temp = (model->numberOfVertices * 10); - result = (unk8005FCD0 *) allocate_from_main_pool(temp + 36, COLOUR_TAG_BLUE); + result = (Object_68 *) allocate_from_main_pool(temp + 36, COLOUR_TAG_BLUE); if (result == NULL) { return NULL; } - var_v1 = (u8 *) result + 36; - result->unk4 = (Vertex *) var_v1; - result->unk8 = (Vertex *) var_v1; - result->unkC = 0; + var_v1 = (Vertex *) ((u8 *) result + 36); + result->unk4[0] = var_v1; + result->unk4[1] = var_v1; + result->unk4[2] = NULL; result->unk1E = 1; } else { - result = (unk8005FCD0 *) allocate_from_main_pool(36, COLOUR_TAG_BLUE); + result = (Object_68 *) allocate_from_main_pool(36, COLOUR_TAG_BLUE); if (result == NULL) { return NULL; } - result->unk4 = (Vertex *) model->vertices; - result->unk8 = (Vertex *) model->vertices; - result->unkC = 0; + result->unk4[0] = model->vertices; + result->unk4[1] = model->vertices; + result->unk4[2] = NULL; result->unk1E = 0; } result->unk16 = 0; result->unk18 = 0; result->unk1A = 0; - result->unk0 = model; + result->objModel = model; result->unk10 = -1; result->unk12 = -1; result->unk1F = 0; if (result->unk1E != 0) { temp = 0; - vertex = &result->unk4[0]; + vertex = result->unk4[0]; mdlVertex = &model->vertices[0]; do { vertex->x = mdlVertex->x; @@ -140,7 +228,7 @@ unk8005FCD0 *func_8005FCD0(ObjectModel *model, s32 arg1) { } while(temp < model->numberOfVertices); temp = 0; - vertex = &result->unk8[0]; + vertex = result->unk4[1]; mdlVertex = &model->vertices[0]; do { vertex->x = mdlVertex->x; diff --git a/src/object_models.h b/src/object_models.h index 648e2733..e07c9f0c 100644 --- a/src/object_models.h +++ b/src/object_models.h @@ -11,22 +11,6 @@ typedef struct unk8011D624 { ObjectModel *model; } unk8011D624; -typedef struct unk8005FCD0 { - s32 unk0; - Vertex *unk4; - Vertex *unk8; - s32 unkC; - s16 unk10; - s16 unk12; - s16 unk14; - s16 unk16; - s16 unk18; - s16 unk1A; - s16 unk1C; - s8 unk1E; - s8 unk1F; -} unk8005FCD0; - extern s32 gTractionTableChecksum; extern s32 gFunc80024D54Length; @@ -36,10 +20,12 @@ void func_80061C0C(Object* obj); void func_8005FF40(ObjectModel **modelPtr); s32 func_80061A00(ObjectModel *model, s32 animTableIndex); s32 func_80060C58(Vertex *vertices, s32 arg1, s32 arg2, s32 arg3, s32 arg4); -unk8005FCD0 *func_8005FCD0(ObjectModel* model, s32 arg1); +Object_68 *func_8005FCD0(ObjectModel *model, s32 arg1); +Object_68 *func_8005F99C(s32 arg0, s32 arg1); void free_object_model(ObjectModel *model); //Non Matching void func_80060910(ObjectModel *); s32 func_80060AC8(ObjectModel *mdl, s32 arg1, s32 arg2, s32 arg3, s32 *outBatchIndex, s32 *outVertexIndex); +s32 func_80060EA8(ObjectModel *); #endif diff --git a/src/objects.c b/src/objects.c index 937bec92..1cb3a462 100644 --- a/src/objects.c +++ b/src/objects.c @@ -156,7 +156,7 @@ s8 D_8011AD20; s8 D_8011AD21; s8 D_8011AD22[2]; s8 D_8011AD24[2]; -s8 D_8011AD26[2]; +s8 D_8011AD26; f32 D_8011AD28; s32 D_8011AD2C; f32 gCurrentLightIntensity; @@ -203,9 +203,9 @@ s8 (*D_8011ADCC)[8]; f32 D_8011ADD0; s8 D_8011ADD4; s8 D_8011ADD5; -Object *D_8011ADD8[10]; -s8 D_8011AE00; -s8 D_8011AE01; +Object *D_8011ADD8[10]; //Array of OverRidePos objects +s8 D_8011AE00; //Number of OverRidePos objects in D_8011ADD8 +s8 D_8011AE01; //A boolean? I've seen it either as 0 or 1 s8 gIsNonCarRacers; s8 gIsSilverCoinRace; Object *D_8011AE08[16]; @@ -220,8 +220,8 @@ s32 gParticleCount; Object *gObjectMemoryPool; Object **D_8011AE6C; s32 D_8011AE70; -Object **D_8011AE74; -s16 D_8011AE78; +Object **D_8011AE74; //Pointer to an array of Animation objects +s16 D_8011AE78; //Number of Animation objects in D_8011AE74 s16 gCutsceneID; s16 D_8011AE7C; s8 D_8011AE7E; @@ -442,7 +442,7 @@ GLOBAL_ASM("asm/non_matchings/objects/decrypt_magic_codes.s") void clear_object_pointers(void) { s32 i; - D_8011AD26[0] = 1; + D_8011AD26 = TRUE; D_8011AD5C = 0; D_8011AD60 = 0; gFreeListCount = 0; @@ -1422,8 +1422,6 @@ void func_8000E9D0(Object *arg0) { #ifdef NON_EQUIVALENT -void *func_8005F99C(s32, s32); - Object *spawn_object(LevelObjectEntryCommon *entry, s32 arg1) { s32 objType; Object *newObj; @@ -1914,7 +1912,71 @@ s32 func_8000FD34(Object *obj, Object_5C *matrices) { return sizeof(Object_5C); } -GLOBAL_ASM("asm/non_matchings/objects/func_8000FD54.s") +// Loads an object from object header index +Object *func_8000FD54(s32 objectHeaderIndex) { + s32 modelType; + Object *object; + ObjectHeader *objHeader; + s32 objSize; + s32 i; + s32 failedToLoadModel; + s8 numModelIds; + u8 *objectAsRawBytes; + + if (objectHeaderIndex >= gAssetsObjectHeadersTableLength) { + objectHeaderIndex = 0; + } + objHeader = load_object_header(objectHeaderIndex); + if (objHeader == NULL) { + return NULL; + } + objSize = (objHeader->numberOfModelIds * 4) + 0x80; + object = (Object *) allocate_from_main_pool(objSize, COLOUR_TAG_BLUE); + if (object == NULL) { + try_free_object_header(objectHeaderIndex); + return NULL; + } + + objectAsRawBytes = (u8 *) object; + for (i = 0; i < objSize; i++) { objectAsRawBytes[i] = 0; } // Must be one line! (Why not use bzero?) + + object->segment.trans.flags = OBJ_FLAGS_UNK_0002; + object->segment.header = objHeader; + object->segment.object.unk2C = objectHeaderIndex; + object->unk4A = objectHeaderIndex; + object->segment.trans.scale = objHeader->scale; + if (objHeader->flags & OBJ_FLAGS_UNK_0080) { + object->segment.trans.flags |= OBJ_FLAGS_UNK_0080; + } + numModelIds = object->segment.header->numberOfModelIds; + modelType = object->segment.header->modelType; + object->unk68 = (Object_68 **) &object->unk80; + + failedToLoadModel = FALSE; + if (modelType == OBJECT_MODEL_TYPE_3D_MODEL) { + for(i = 0; i < numModelIds; i++) { + object->unk68[i] = func_8005F99C(object->segment.header->modelIds[i], 0); + if (object->unk68[i] == NULL) { + failedToLoadModel = TRUE; + } + } + } else { + for(i = 0; i < numModelIds; i++) { + object->unk68[i] = (Object_68 *) func_8007C12C(object->segment.header->modelIds[i], 10); + if (object->unk68[i] == NULL) { + failedToLoadModel = TRUE; + } + } + } + if (failedToLoadModel) { + objFreeAssets(object, numModelIds, modelType); + try_free_object_header(objectHeaderIndex); + free_from_memory_pool(object); + return NULL; + } + + return object; +} /** * Adds the object to the free list. @@ -3379,7 +3441,47 @@ UNUSED void func_800149C0(unk800149C0 *arg0, UNUSED s32 arg1, s32 arg2, s32 arg3 } GLOBAL_ASM("asm/non_matchings/objects/func_80014B50.s") -GLOBAL_ASM("asm/non_matchings/objects/func_80015348.s") + +// Sorts objects by distance to the camera. +void func_80015348(s32 startIndex, s32 lastIndex) { + s32 i; + s32 didNotSwap; + Object *obj; + + if (lastIndex < startIndex) { + return; + } + + for (i = startIndex; i <= lastIndex; i++) { + obj = gObjPtrList[i]; + if (obj != NULL) { + if (obj->segment.trans.flags & OBJ_FLAGS_DEACTIVATED) { + // func_80069DC8 calculates the distance to the camera from a XYZ location. + obj->segment.object.distanceToCamera = -func_80069DC8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); + } else if (obj->segment.header->flags & OBJ_FLAGS_UNK_0080) { + obj->segment.object.distanceToCamera += -16000.0f; + } else { + obj->segment.object.distanceToCamera = -func_80069DC8(obj->segment.trans.x_position, obj->segment.trans.y_position, obj->segment.trans.z_position); + } + } else { + //!@bug obj is NULL here, so it would probably cause a crash. Thankfully, gObjPtrList shouldn't have NULL objects in it. + obj->segment.object.distanceToCamera = 0.0f; + } + } + + // Keep swapping until all objects are sorted by the distance to the camera. + do { + didNotSwap = TRUE; + for (i = startIndex; i < lastIndex; i++) { + if (gObjPtrList[i]->segment.object.distanceToCamera < gObjPtrList[i + 1]->segment.object.distanceToCamera) { + obj = gObjPtrList[i]; + gObjPtrList[i] = gObjPtrList[i + 1]; + gObjPtrList[i + 1] = obj; + didNotSwap = FALSE; + } + } + } while (!didNotSwap); +} /** * Go through each object and detect potential interactions between each. @@ -3527,7 +3629,89 @@ void func_80016500(Object *obj, Object_Racer *racer) { } } -GLOBAL_ASM("asm/non_matchings/objects/func_80016748.s") +void func_80016748(Object *obj0, Object *obj1) { + ObjectModel *objModel; + s32 i; + f32 temp; + +#ifdef AVOID_UB + Matrix obj1TransformMtx; +#else + // THIS IS A HACK! Supposed to be a Matrix, but the stack ended up being too big. + f32 pad[2]; + f32 obj1TransformMtx[4][3]; +#endif + + f32 xDiff; + f32 yDiff; + f32 zDiff; + ObjectInteraction *obj1Interact; + ObjectInteraction *obj0Interact; + Object_Racer *racer; + f32 distance; + f32 radius; + Object_68 *obj68; + + if (obj1->unk44 != NULL) { + obj68 = (*obj1->unk68); + objModel = obj68->objModel; + xDiff = obj0->segment.trans.x_position - obj1->segment.trans.x_position; + yDiff = obj0->segment.trans.y_position - obj1->segment.trans.y_position; + zDiff = obj0->segment.trans.z_position - obj1->segment.trans.z_position; + if (!((objModel->unk3C + 50.0) < sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)))) { + obj0Interact = obj0->interactObj; + obj1Interact = obj1->interactObj; + object_transform_to_matrix(obj1TransformMtx, &obj1->segment.trans); + for(i = 0; i < objModel->unk20; i += 2) { + xDiff = obj1->unk44[objModel->unk1C[i]].x; + yDiff = obj1->unk44[objModel->unk1C[i]].y; + zDiff = obj1->unk44[objModel->unk1C[i]].z; + guMtxXFMF(obj1TransformMtx, xDiff, yDiff, zDiff, &xDiff, &yDiff, &zDiff); + temp = (((f32) objModel->unk1C[i + 1] / 64) * obj1->segment.trans.scale) * 50.0; + xDiff -= obj0->segment.trans.x_position; + yDiff -= obj0->segment.trans.y_position; + zDiff -= obj0->segment.trans.z_position; + distance = sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)); + temp += obj1Interact->hitboxRadius; + if ((distance < temp) && (distance > 0.0f)) { + obj0Interact->flags |= 8; + obj1Interact->flags |= 8; + obj0Interact->obj = obj1; + obj1Interact->obj = obj0; + obj0Interact->distance = 0; + obj1Interact->distance = 0; + radius = (temp - distance) / distance; + distance = 2; // Needed + radius /= distance; + xDiff *= radius; + yDiff *= radius; + zDiff *= radius; + obj0->segment.trans.x_position -= xDiff; + obj0->segment.trans.y_position -= yDiff; + obj0->segment.trans.z_position -= zDiff; + + if (obj0->behaviorId == BHV_RACER) { + racer = &obj0->unk64->racer; + if (!racer->raceFinished) { + func_80072348(racer->playerIndex, 18); + } + if (racer->vehicleID == VEHICLE_HOVERCRAFT) { + if (radius > 0.1) { + obj0->segment.x_velocity -= xDiff; + obj0->segment.z_velocity -= zDiff; + } + } else if (radius > 0.3) { + obj0->segment.x_velocity -= xDiff; + obj0->segment.z_velocity -= zDiff; + racer->velocity = radius * 4.0f; + racer->lateral_velocity = 0.0f; + } + } + } + } + } + } +} void func_80016BC4(Object *obj) { s32 i; @@ -3569,7 +3753,59 @@ Object *func_80016C68(f32 x, f32 y, f32 z, f32 maxDistCheck, s32 dontCheckYAxis) return NULL; } -GLOBAL_ASM("asm/non_matchings/objects/func_80016DE8.s") +s32 func_80016DE8(f32 x, f32 y, f32 z, f32 radius, s32 is2dCheck, Object **arg5) { + f32 distances[8]; + s32 i; + s32 j; + f32 xDiff; + f32 yDiff; + f32 zDiff; + s32 result; + Object *racerObj; + Object_Racer *racer; + Object *swapObj; + f32 swapf; + + result = 0; + if (gNumRacers > 0) { + for(i = 0; i < gNumRacers; i++) { + racerObj = (*gRacers)[i]; + racer = &racerObj->unk64->racer; + if ((racer->playerIndex >= 0) && (racer->playerIndex < 4)) { + if (is2dCheck) { + xDiff = racerObj->segment.trans.x_position - x; + zDiff = racerObj->segment.trans.z_position - z; + yDiff = sqrtf((xDiff * xDiff) + (zDiff * zDiff)); + } else { + xDiff = racerObj->segment.trans.x_position - x; + yDiff = racerObj->segment.trans.y_position - y; + zDiff = racerObj->segment.trans.z_position - z; + yDiff = sqrtf((xDiff * xDiff) + (yDiff * yDiff) + (zDiff * zDiff)); + } + if (yDiff < radius) { + distances[result] = yDiff; + arg5[result] = (*gRacers)[i]; + result++; + } + } + } + if (result >= 2) { + for(i = result - 1; i > 0; i--) { + for(j = 0; j < i; j++) { + if(distances[j+1] < distances[j]) { + swapf = distances[j]; + swapObj = arg5[j]; + distances[j] = distances[j+1]; + arg5[j] = arg5[j+1]; + distances[j+1] = swapf; + arg5[j+1] = swapObj; + } + } + } + } + } + return result; +} void func_8001709C(Object *obj) { ObjectTransform sp78; @@ -3797,7 +4033,98 @@ u32 get_balloon_cutscene_timer(void) { return gBalloonCutsceneTimer; } -GLOBAL_ASM("asm/non_matchings/objects/func_8001AE64.s") +void func_8001AE64(void) { + s32 bestCourseTime; + s32 bestRacerTime; + s32 i; + s32 courseTime; + s32 temp; + s32 curRacerLapTime; + s32 j; + Object_Racer *curRacer; + Object_Racer *bestRacer; + Settings *settings; + LevelHeader* levelHeader; + + levelHeader = get_current_level_header(); + settings = get_settings(); + settings->timeTrialRacer = 0; + settings->unk115[1] = 0; + settings->unk115[0] = 0; + bestCourseTime = 36001; + bestRacerTime = 36001; + bestRacer = &gRacersByPosition[0]->unk64->racer; + for (i = 0; i < gNumRacers; i++) { + curRacer = &gRacersByPosition[i]->unk64->racer; + if (curRacer->unk2 >= 0) { + if (curRacer->unk2 < get_number_of_active_players()) { + settings->racers[curRacer->unk2].best_times = 0; + temp = curRacer->vehicleIDPrev; + if ((temp >= 0) && (temp < 3)) { + courseTime = 0; + for(j = 0; j < levelHeader->laps && j < 5; j++) { + settings->racers[curRacer->unk2].lap_times[j] = curRacer->lap_times[j]; + curRacerLapTime = curRacer->lap_times[j]; + courseTime += curRacerLapTime; + if (curRacerLapTime < bestRacerTime) { + settings->unk115[1] = j; + settings->unk115[0] = curRacer->unk2; + bestRacerTime = curRacerLapTime; + } + } + settings->racers[curRacer->unk2].course_time = courseTime; + if (courseTime < bestCourseTime) { + bestCourseTime = courseTime; + settings->timeTrialRacer = curRacer->unk2; + bestRacer = curRacer; + } + } + } + } + } + settings->display_times = 0; + if (gIsTimeTrial) { + temp = D_8011AE82; + if ((temp >= 3) || (temp < 0)) { + temp = 0; + } + settings->display_times = 1; + if ((settings->unk115[0] == 0)) { + if((settings->flapTimesPtr[temp][settings->courseId] == 0) || (bestRacerTime < settings->flapTimesPtr[temp][settings->courseId])) { + settings->flapTimesPtr[temp][settings->courseId] = bestRacerTime; + settings->racers[settings->unk115[0]].best_times |= 1 << settings->unk115[1]; + } + } + if ((settings->timeTrialRacer == 0)) { + if((settings->courseTimesPtr[temp][settings->courseId] == 0) || (bestCourseTime < settings->courseTimesPtr[temp][settings->courseId])) { + settings->courseTimesPtr[temp][settings->courseId] = bestCourseTime; + settings->racers[settings->timeTrialRacer].best_times |= 0x80; + } + } + if (((!temp) && (!temp)) && (!temp)){} // Fakematch + if (settings->timeTrialRacer == 0) { + if ((bestCourseTime < 10800) && ((temp != D_800DC728) || ((func_800599A8() != get_current_map_id())) || (bestCourseTime < D_800DC724))) { + D_800DC724 = bestCourseTime; + D_800DC728 = D_8011AE82; + D_800DC72C = settings->racers[0].character; + func_80059984(get_current_map_id()); + gHasGhostToSave = 1; + } + if (osTvType == TV_TYPE_PAL) { + bestCourseTime = (bestCourseTime * 6) / 5; + } + if (bestCourseTime < gTTGhostTimeToBeat) { + if (gTimeTrialStaffGhost) { + tt_ghost_beaten(get_current_map_id(), &bestRacer->playerIndex); + } else { + play_time_trial_end_message(&bestRacer->playerIndex); + } + } else { + play_time_trial_end_message(&bestRacer->playerIndex); + } + } + } +} s32 func_8001B288(void) { if (func_800599A8() != get_current_map_id()) { @@ -4865,7 +5192,41 @@ UNUSED s32 get_object_list_index(void) { } GLOBAL_ASM("asm/non_matchings/objects/func_8001E4C4.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001E6EC.s") + +void func_8001E6EC(s8 arg0) { + LevelObjectEntry_OverridePos *overridePosEntry; + Object *overridePosObj; + Object_OverridePos *overridePos; + s32 i; + s32 j; + s32 someBool; + Object_64 *unk64; + + for (i = 0; i < D_8011AE00; i++) { + overridePosObj = D_8011ADD8[i]; + overridePosEntry = &overridePosObj->segment.level_entry->overridePos; + overridePos = (Object_OverridePos*)overridePosObj->unk64; + if ((overridePosEntry->cutsceneId == gCutsceneID) || ((overridePosEntry->cutsceneId == 20))) { + for (j = 0; (j < D_8011AE78) && (overridePosEntry->behaviorId != D_8011AE74[j]->properties.animatedObj.behaviourID); j++) {} + if (j != D_8011AE78 && D_8011AE74[j]->unk64 != NULL) { + someBool = (D_8011AE74[j]->unk64->animation.unk5C) ? FALSE : TRUE; + if (arg0 != someBool) { + unk64 = D_8011AE74[j]->unk64; + overridePos->x = unk64->animation.x; + overridePos->y = unk64->animation.y; + overridePos->z = unk64->animation.z; + overridePos->anim = &unk64->animation; + unk64->animation.x = overridePosObj->segment.trans.x_position; + unk64->animation.y = overridePosObj->segment.trans.y_position; + unk64->animation.z = overridePosObj->segment.trans.z_position; + } + } else { + overridePos->anim = NULL; + } + } + } + D_8011AE01 = FALSE; +} void func_8001E89C(void) { s32 i; @@ -4892,7 +5253,26 @@ void func_8001E89C(void) { } GLOBAL_ASM("asm/non_matchings/objects/func_8001E93C.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001EE74.s") + +void func_8001EE74(void) { + LevelObjectEntry_Animation *animation; + Object *obj; + s32 i; + + for (i = 0; i < D_8011AE78; i++) { + obj = D_8011AE74[i]; + animation = &obj->segment.level_entry->animation; + if (obj->unk64 == NULL && animation->order == 0 && animation->objectIdToSpawn != -1) { + func_8001F23C(obj, animation); + } + if (D_8011AD26 || animation->channel != 20) { + if (obj->unk64 != NULL) { + func_8001EFA4(obj, (Object *) obj->unk64); + } + } + } + D_8011AD26 = FALSE; +} void func_8001EFA4(Object *arg0, Object *animObj) { LevelObjectEntry_Animation *animEntry; @@ -4928,8 +5308,8 @@ void func_8001EFA4(Object *arg0, Object *animObj) { anim->unk2A = normalise_time(animEntry->animationStartDelay); animObj->segment.object.animationID = animEntry->objAnimIndex; animObj->segment.animFrame = animEntry->unk16; - anim->unk14 = animEntry->objAnimSpeed; - anim->unk10 = 0; + anim->z = animEntry->objAnimSpeed; + anim->y = 0; anim->unk2C = animEntry->objAnimLoopType; anim->unk2E = animEntry->rotateType; anim->unk3E = animEntry->nextAnim; diff --git a/src/objects.h b/src/objects.h index 3dbb884f..b3009ab8 100644 --- a/src/objects.h +++ b/src/objects.h @@ -476,16 +476,20 @@ void process_object_interactions(void); void render_3d_model(Object *obj); void func_80022E18(s32 arg0); void func_8001BF20(void); +void func_8001E6EC(s8); +Object *func_8000FD54(s32 objectHeaderIndex); +void func_80015348(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); //Non Matching void calc_dynamic_lighting_for_object_1(Object *, ObjectModel *, s16, Object *, f32, f32); void calc_dynamic_lighting_for_object_2(Object *, ObjectModel *, s16, f32); void decrypt_magic_codes(s32 *arg0, s32 length); s32 func_80014814(s32 *); -void func_80015348(s32, s32); Object *spawn_object(LevelObjectEntryCommon *entry, s32); s32 func_8001F460(Object*, s32, Object*); -s32 func_80016DE8(f32, f32, f32, f32, s32, unk80042178 *); void func_8000B750(Object *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void func_80018CE0(Object* obj, f32 xPos, f32 yPos, f32 zPos, s32 updateRate); s32 func_800185E4(s8, Object* obj, f32 xPos, f32 yPos, f32 zPos, f32* checkpointDistance, u8*); @@ -506,16 +510,13 @@ void func_80019808(s32 updateRate); void func_8001A8F4(s32 updateRate); void func_80014090(Object*, s32, ObjectHeader*); void func_80008438(Object**, s32, s32); -void func_8001E6EC(s8); void func_8001E89C(void); void func_800230D0(Object*, Object_Racer*); void func_80010994(s32 updateRate); void func_800159C8(Object *, Object *); -void func_80016748(Object *, Object *); void func_80011264(ObjectModel *, Object *); void func_800245F0(ObjectModel *, Object *, f32); //asm func in unknown_0251F0 s32 func_80061D30(Object *); //asm func in unknown_062930 -Object *func_8000FD54(s32); s32 func_80014B50(s32 arg0, s32 arg1, f32 arg2, u32 arg3); s16 func_8001CD28(s32 arg0, s32 arg1, s32 arg2, s32 arg3); // NON MATCHING diff --git a/src/thread0_epc.c b/src/thread0_epc.c index cb218fdb..90ee774b 100644 --- a/src/thread0_epc.c +++ b/src/thread0_epc.c @@ -17,12 +17,6 @@ UNUSED const char D_800E8E70[] = "\nAssertion failed: '%s' in file %s, line %d\n"; UNUSED const char D_800E8EA0[] = "\nAssertion failed: '%s' in file %s, line %d\n"; UNUSED const char D_800E8ED0[] = ">fault< "; -const char D_800E8EDC[] = "CORE"; -const char D_800E8EE4[4] = { 0, 0, 0, 0 }; -const char sCoreFileName1[] = "CORE"; -const char sCoreFileExt1[] = { 0, 0, 0, 0 }; -const char sCoreFileName2[] = "CORE"; -const char sCoreFileExt2[] = { 0, 0, 0, 0 }; /*********************************/ @@ -85,8 +79,12 @@ void func_800B70D0(void) { OSThread *node = __osGetActiveQueue(); while (node->priority != -1) { if (node->priority == 0) { - node->context.sr &= 0xFFFF00FE; - node->context.sr |= 0x6C01; + node->context.sr &= ~(SR_IMASK | SR_IE); + //node->context.sr |= (0x6C01); + //Pretty sure these are the flags + node->context.sr |= ((SR_SX | SR_UX | SR_KSU_SUP | SR_ERL) << SR_IMASKSHIFT) | SR_IE; + //Could be this though. + //node->context.sr | = (SR_IBIT7 | SR_IBIT6 | SR_IBIT4 | SR_IBIT3 | SR_IE); break; } node = node->tlnext; @@ -96,51 +94,92 @@ void func_800B70D0(void) { void func_800B7144(void) { OSThread *node = __osGetActiveQueue(); while (node->priority != -1) { - if ((node->priority > 0) && (node->priority < 128)) { - osStopThread((OSThread *)&node->next); + if (node->priority > OS_PRIORITY_IDLE && node->priority <= OS_PRIORITY_APPMAX) { + osStopThread((OSThread *) &node->next); } node = node->tlnext; } } -GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B71B0.s") +void func_800B71B0(void) { + OSThread *thread; + UNUSED s16 sp444[0x200]; + u8 sp244[0x200]; + u8 sp44[0x200]; + s16 *v0; + s32 i; + s32 currentCount; + s32 maxCount; + u8 zero; + + for (thread = __osGetActiveQueue(); thread->priority != -1; thread = thread->tlnext) { + if (thread->priority > OS_PRIORITY_IDLE && thread->priority <= OS_PRIORITY_APPMAX) { + if (thread->flags & 2 || thread->flags & 1) { + break; + } + } + } + + if (thread->priority != -1) { + thread->context.fp0.f.f_odd = gObjectStackTrace[0]; + thread->context.fp0.f.f_even = gObjectStackTrace[1]; + thread->context.fp2.f.f_odd = gObjectStackTrace[2]; + bcopy(thread, sp44, sizeof(epcInfo)); + bcopy((void *) thread->context.sp, sp244, sizeof(sp244)); + zero = 0; // Why is this needed to match? + v0 = func_80024594(¤tCount, &maxCount); + for (i = zero; i < maxCount; i++) { + sp444[i] = v0[currentCount]; + currentCount--; + if (currentCount < zero) { + currentCount += maxCount; + } + } + write_controller_pak_file(0, -1, "CORE", "", sp44, sizeof(sp44) + sizeof(sp244) + sizeof(sp444)); + } + while (1) {} // Infinite loop +} #ifdef NON_EQUIVALENT //Rename mask to colourTag? -void func_800B7460(s32 *epc, s32 size, s32 mask) { - epcInfo sp840; +void func_800B7460(s32 *epc, s32 size, u32 mask) { + epcInfo epcinfo; s16 sp440[0x200]; u8 sp240[0x200]; - epcInfo sp40; - s32 sp38; + u8 sp40[0x200]; s16 *v0; + s32 currentCount; s32 i; + u8 zero; // This is checking if the EPC cheat is active if (get_filtered_cheats() & CHEAT_EPC_LOCK_UP_DISPLAY) { - bzero(&sp840, sizeof(epcInfo)); - sp840.a0 = size; - sp840.a1 = mask; - sp840.epc = epc; - sp840.cause = -1; - sp840.objectStackTrace[0] = gObjectStackTrace[0]; - sp840.objectStackTrace[1] = gObjectStackTrace[1]; - sp840.objectStackTrace[2] = gObjectStackTrace[2]; - bcopy(&sp840, &sp40, sizeof(epcInfo)); - bzero(&sp240, 0x200); - v0 = func_80024594(&sp38, &size); - for (i = 0; i < size; i++) { - sp440[i] = v0[sp38]; - sp38--; - if (sp38 < 0) { - sp38 += size; + bzero(&epcinfo, sizeof(epcInfo)); + epcinfo.epc = epc; + epcinfo.a0 = size; + epcinfo.a1 = mask; + epcinfo.cause = -1; + epcinfo.objectStackTrace[0] = gObjectStackTrace[0]; + epcinfo.objectStackTrace[1] = gObjectStackTrace[1]; + epcinfo.objectStackTrace[2] = gObjectStackTrace[2]; + bcopy(&epcinfo, &sp40, sizeof(epcInfo)); + bzero(&sp240, sizeof(sp240)); + zero = 0; // Why is this needed to match? + v0 = func_80024594(¤tCount, &size); + for (i = zero; i < size; i++) { + sp440[i] = v0[currentCount]; + currentCount--; + if (currentCount < zero) { + currentCount += size; } } - write_controller_pak_file(0, -1, sCoreFileName1, sCoreFileExt1, &sp40, 0x800); - while (1); // Infinite loop; waiting for the player to reset the console? + write_controller_pak_file(0, -1, "CORE", "", &sp40, sizeof(sp40) + sizeof(sp240) + sizeof(sp440)); } + while (1) {} // Infinite loop; waiting for the player to reset the console? } #else +const char sCoreFileName[] = "CORE"; +const char sCoreFileExt[] = ""; GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B7460.s") #endif @@ -170,7 +209,7 @@ s32 get_lockup_status(void) { sLockupStatus = 0; // Looks like it reads EpcInfo data from the controller pak, which is interesting if ((get_si_device_status(controllerIndex) == CONTROLLER_PAK_GOOD) && - (get_file_number(controllerIndex, (char *)sCoreFileName2, (char *)sCoreFileExt2, &fileNum) == CONTROLLER_PAK_GOOD) && + (get_file_number(controllerIndex, "CORE", "", &fileNum) == CONTROLLER_PAK_GOOD) && (read_data_from_controller_pak(controllerIndex, fileNum, dataFromControllerPak, 0x800) == CONTROLLER_PAK_GOOD)) { bcopy(&dataFromControllerPak, &gEpcInfo, sizeof(epcInfo)); bcopy(&sp220, &D_801299B0, sizeof(sp220)); diff --git a/src/thread0_epc.h b/src/thread0_epc.h index 49eb0afd..263557db 100644 --- a/src/thread0_epc.h +++ b/src/thread0_epc.h @@ -90,10 +90,10 @@ void update_object_stack_trace(s32 arg0, s32 arg1); s32 get_lockup_status(void); void lockup_screen_loop(s32 arg0); void thread0_create(void); +void func_800B71B0(void); void thread0_Main(UNUSED void *unused); // Non Matching -void func_800B7460(s32 *epc, s32 size, s32 mask); // Non Matching +void func_800B7460(s32 *epc, s32 size, u32 mask); // Non Matching void render_epc_lock_up_display(void); // Non Matching -void func_800B71B0(void); // Non Matching #endif diff --git a/src/tracks.c b/src/tracks.c index e7fa8fba..382fc55f 100644 --- a/src/tracks.c +++ b/src/tracks.c @@ -107,7 +107,7 @@ unk8011C238 D_8011C238[32]; //Struct sizeof(0xC) / sizeof(12) s32 D_8011C3B8[320]; s32 D_8011C8B8[512]; s32 D_8011D0B8; -s32 D_8011D0BC; +Vec4f *D_8011D0BC; TextureHeader *D_8011D0C0; Object *D_8011D0C4; f32 D_8011D0C8; @@ -2473,7 +2473,47 @@ s32 func_8002FD74(f32 x0, f32 z0, f32 x1, f32 x2, s32 count, Vec4f *arg5) { GLOBAL_ASM("asm/non_matchings/tracks/func_8002FF6C.s") +#ifdef NON_EQUIUVALENT +void func_800304C8(Vec4f *arg0) { + s16 found1; + s16 found2; + s16 found3; + f32 temp; + f32 arg02x; + f32 arg00z; + f32 compare; + + found1 = FALSE; + found2 = FALSE; + found3 = FALSE; + temp = arg0[0].z; + arg00z = temp; + compare = 0.0f; + temp = (D_8011D0C4->segment.trans.z_position - arg0[1].z); + + if ((((D_8011D0C4->segment.trans.x_position - arg0[0].x) * (arg0[1].z - arg00z)) - ((arg0[1].x - arg0[0].x) * (((0, D_8011D0C4->segment.trans.z_position)) - arg00z))) >= compare) { + found1 = TRUE; + } + if ((((D_8011D0C4->segment.trans.x_position - arg0[1].x) * (arg0[2].z - arg0[1].z)) - (temp * (arg0[2].x - arg0[1].x))) >= compare) { + found2 = TRUE; + } + arg02x = arg0[2].x; + if (found1 == found2) { + f32 zPosDiff = (arg00z - arg0[2].z); + if ((((D_8011D0C4->segment.trans.x_position - arg02x) * zPosDiff) - ((arg0[0].x - arg02x) * (arg02x - arg0[2].z))) >= compare) { + found3 = TRUE; + } + if (found2 == found3) { + f32 test = (-(((D_8011D0BC->x * D_8011D0C4->segment.trans.x_position) + (D_8011D0BC->z * D_8011D0C4->segment.trans.z_position)) + D_8011D0BC->w)) / D_8011D0BC->y; + if (D_8011D0D0 < test) { + D_8011D0D0 = test; + } + } + } +} +#else GLOBAL_ASM("asm/non_matchings/tracks/func_800304C8.s") +#endif /** * Instantly update current fog properties. diff --git a/src/tracks.h b/src/tracks.h index 97e5edae..ea5c9b8e 100644 --- a/src/tracks.h +++ b/src/tracks.h @@ -210,5 +210,6 @@ void init_track(u32 geometry, u32 skybox, s32 numberOfPlayers, Vehicle vehicle, void func_800B82B4(LevelModel *, LevelHeader *, s32); void func_80025510(s32); void func_8002C0C4(s32 modelId); +void func_800304C8(Vec4f *arg0); #endif diff --git a/tools/python/score.py b/tools/python/score.py index d915c596..22e20749 100644 --- a/tools/python/score.py +++ b/tools/python/score.py @@ -51,7 +51,7 @@ SRC_DIRECTORY = './src' LIB_SRC_DIRECTORY = './lib/src' FUNCTION_REGEX = r'^(?