diff --git a/README.md b/README.md index 61447f8f..61a01792 100755 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Currently, only the US 1.0 version of the game is supported. US 1.1, EU 1.0, EU * `libcapstone-dev` * `libssl-dev` -* `gcc` -* `make` +* `gcc`, Version 8.0 or higher +* `make`, Version 4.2 or higher * `python3` * `wget` @@ -113,31 +113,31 @@ s32 is_drumstick_unlocked(void) { } ``` -As of April 6th, 2022, this is our current score: +As of April 29th, 2022, this is our current score: ``` - ======================================================== - ADVENTURE ONE (ASM -> C Decompilation) - ------------------- 22.11% Complete -------------------- - # Decompiled functions: 1068 - # GLOBAL_ASM remaining: 680 - # NON_MATCHING functions: 8 - # NON_EQUIVALENT WIP functions: 109 - --------------------- Game Status ---------------------- - Balloons: 12/47, Keys: 1/4, Trophies: 0/5 - T.T. Amulets: 1/4, Wizpig Amulets: 0/4 - -------------------------------------------------------- - We are racing in the rematch against Trickytops. - ======================================================== - ADVENTURE TWO (Cleanup & Documentation) - ------------------- 2.73% Complete -------------------- - # Documented functions: 141 - # Undocumented remaining: 1607 - --------------------- Game Status ---------------------- - Balloons: 1/47, Keys: 0/4, Trophies: 0/5 - T.T. Amulets: 0/4, Wizpig Amulets: 0/4 - -------------------------------------------------------- - We are collecting the second balloon on Timber's Island. - ======================================================== + =================================================================== + ADVENTURE ONE (ASM -> C Decompilation) + ------------------------- 22.80% Complete ------------------------- + # Decompiled functions: 1090 + # GLOBAL_ASM remaining: 656 + # NON_MATCHING functions: 8 + # NON_EQUIVALENT WIP functions: 107 + --------------------------- Game Status --------------------------- + Balloons: 12/47, Keys: 1/4, Trophies: 0/5 + T.T. Amulets: 1/4, Wizpig Amulets: 1/4 + ------------------------------------------------------------------- + We are participating in the Trophy Race of Dino Domain. (Round One) + =================================================================== + ADVENTURE TWO (Cleanup & Documentation) + ------------------------- 2.98% Complete ------------------------- + # Documented functions: 146 + # Undocumented remaining: 1600 + --------------------------- Game Status --------------------------- + Balloons: 1/47, Keys: 0/4, Trophies: 0/5 + T.T. Amulets: 0/4, Wizpig Amulets: 0/4 + ------------------------------------------------------------------- + We are collecting the second balloon on Timber's Island. + =================================================================== ``` --- diff --git a/asm/non_matchings/objects/func_8000CBF0.s b/asm/non_matchings/objects/func_8000CBF0.s deleted file mode 100644 index da655f37..00000000 --- a/asm/non_matchings/objects/func_8000CBF0.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_8000CBF0 -/* 00D7F0 8000CBF0 3C0F8012 */ lui $t7, %hi(D_8011AE08) # $t7, 0x8012 -/* 00D7F4 8000CBF4 25EFAE08 */ addiu $t7, %lo(D_8011AE08) # addiu $t7, $t7, -0x51f8 -/* 00D7F8 8000CBF8 00057080 */ sll $t6, $a1, 2 -/* 00D7FC 8000CBFC 01CF1021 */ addu $v0, $t6, $t7 -/* 00D800 8000CC00 8C430000 */ lw $v1, ($v0) -/* 00D804 8000CC04 00000000 */ nop -/* 00D808 8000CC08 14600003 */ bnez $v1, .L8000CC18 -/* 00D80C 8000CC0C 00000000 */ nop -/* 00D810 8000CC10 03E00008 */ jr $ra -/* 00D814 8000CC14 AC440000 */ sw $a0, ($v0) - -.L8000CC18: -/* 00D818 8000CC18 03E00008 */ jr $ra -/* 00D81C 8000CC1C 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_8000E558.s b/asm/non_matchings/objects/func_8000E558.s deleted file mode 100644 index d92a1870..00000000 --- a/asm/non_matchings/objects/func_8000E558.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_8000E558 -/* 00F158 8000E558 8C82003C */ lw $v0, 0x3c($a0) -/* 00F15C 8000E55C 3C058012 */ lui $a1, %hi(D_8011AE98) # $a1, 0x8012 -/* 00F160 8000E560 14400003 */ bnez $v0, .L8000E570 -/* 00F164 8000E564 24A5AE98 */ addiu $a1, %lo(D_8011AE98) # addiu $a1, $a1, -0x5168 -/* 00F168 8000E568 03E00008 */ jr $ra -/* 00F16C 8000E56C 24020001 */ li $v0, 1 - -.L8000E570: -/* 00F170 8000E570 8CA40000 */ lw $a0, ($a1) -/* 00F174 8000E574 00401825 */ move $v1, $v0 -/* 00F178 8000E578 0044082A */ slt $at, $v0, $a0 -/* 00F17C 8000E57C 1420000A */ bnez $at, .L8000E5A8 -/* 00F180 8000E580 3C0E8012 */ lui $t6, %hi(D_8011AEA0) # $t6, 0x8012 -/* 00F184 8000E584 8DCEAEA0 */ lw $t6, %lo(D_8011AEA0)($t6) -/* 00F188 8000E588 00000000 */ nop -/* 00F18C 8000E58C 000E78C0 */ sll $t7, $t6, 3 -/* 00F190 8000E590 01E4C021 */ addu $t8, $t7, $a0 -/* 00F194 8000E594 0302082A */ slt $at, $t8, $v0 -/* 00F198 8000E598 14200003 */ bnez $at, .L8000E5A8 -/* 00F19C 8000E59C 00000000 */ nop -/* 00F1A0 8000E5A0 03E00008 */ jr $ra -/* 00F1A4 8000E5A4 00001025 */ move $v0, $zero - -.L8000E5A8: -/* 00F1A8 8000E5A8 8CA20004 */ lw $v0, 4($a1) -/* 00F1AC 8000E5AC 3C198012 */ lui $t9, %hi(D_8011AEA4) # $t9, 0x8012 -/* 00F1B0 8000E5B0 0062082A */ slt $at, $v1, $v0 -/* 00F1B4 8000E5B4 1420000A */ bnez $at, .L8000E5E0 -/* 00F1B8 8000E5B8 00000000 */ nop -/* 00F1BC 8000E5BC 8F39AEA4 */ lw $t9, %lo(D_8011AEA4)($t9) -/* 00F1C0 8000E5C0 00000000 */ nop -/* 00F1C4 8000E5C4 001940C0 */ sll $t0, $t9, 3 -/* 00F1C8 8000E5C8 01024821 */ addu $t1, $t0, $v0 -/* 00F1CC 8000E5CC 0123082A */ slt $at, $t1, $v1 -/* 00F1D0 8000E5D0 14200004 */ bnez $at, .L8000E5E4 -/* 00F1D4 8000E5D4 24020001 */ li $v0, 1 -/* 00F1D8 8000E5D8 03E00008 */ jr $ra -/* 00F1DC 8000E5DC 24020001 */ li $v0, 1 - -.L8000E5E0: -/* 00F1E0 8000E5E0 24020001 */ li $v0, 1 -.L8000E5E4: -/* 00F1E4 8000E5E4 03E00008 */ jr $ra -/* 00F1E8 8000E5E8 00000000 */ nop diff --git a/asm/non_matchings/objects/func_8000F758.s b/asm/non_matchings/objects/func_8000F758.s deleted file mode 100644 index a7dc1941..00000000 --- a/asm/non_matchings/objects/func_8000F758.s +++ /dev/null @@ -1,41 +0,0 @@ -glabel func_8000F758 -/* 010358 8000F758 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 01035C 8000F75C AFBF002C */ sw $ra, 0x2c($sp) -/* 010360 8000F760 AFB40028 */ sw $s4, 0x28($sp) -/* 010364 8000F764 AFB30024 */ sw $s3, 0x24($sp) -/* 010368 8000F768 AFB20020 */ sw $s2, 0x20($sp) -/* 01036C 8000F76C AFB1001C */ sw $s1, 0x1c($sp) -/* 010370 8000F770 AFB00018 */ sw $s0, 0x18($sp) -/* 010374 8000F774 8C900040 */ lw $s0, 0x40($a0) -/* 010378 8000F778 00809025 */ move $s2, $a0 -/* 01037C 8000F77C 820E005A */ lb $t6, 0x5a($s0) -/* 010380 8000F780 00008825 */ move $s1, $zero -/* 010384 8000F784 19C00011 */ blez $t6, .L8000F7CC -/* 010388 8000F788 00009825 */ move $s3, $zero -/* 01038C 8000F78C 0000A025 */ move $s4, $zero -.L8000F790: -/* 010390 8000F790 8E0F0024 */ lw $t7, 0x24($s0) -/* 010394 8000F794 02402025 */ move $a0, $s2 -/* 010398 8000F798 0C00C7E2 */ jal func_80031F88 -/* 01039C 8000F79C 01F32821 */ addu $a1, $t7, $s3 -/* 0103A0 8000F7A0 8E580070 */ lw $t8, 0x70($s2) -/* 0103A4 8000F7A4 26310001 */ addiu $s1, $s1, 1 -/* 0103A8 8000F7A8 0314C821 */ addu $t9, $t8, $s4 -/* 0103AC 8000F7AC AF220000 */ sw $v0, ($t9) -/* 0103B0 8000F7B0 8E500040 */ lw $s0, 0x40($s2) -/* 0103B4 8000F7B4 26940004 */ addiu $s4, $s4, 4 -/* 0103B8 8000F7B8 8208005A */ lb $t0, 0x5a($s0) -/* 0103BC 8000F7BC 26730018 */ addiu $s3, $s3, 0x18 -/* 0103C0 8000F7C0 0228082A */ slt $at, $s1, $t0 -/* 0103C4 8000F7C4 1420FFF2 */ bnez $at, .L8000F790 -/* 0103C8 8000F7C8 00000000 */ nop -.L8000F7CC: -/* 0103CC 8000F7CC 8FBF002C */ lw $ra, 0x2c($sp) -/* 0103D0 8000F7D0 8FB00018 */ lw $s0, 0x18($sp) -/* 0103D4 8000F7D4 8FB1001C */ lw $s1, 0x1c($sp) -/* 0103D8 8000F7D8 8FB20020 */ lw $s2, 0x20($sp) -/* 0103DC 8000F7DC 8FB30024 */ lw $s3, 0x24($sp) -/* 0103E0 8000F7E0 8FB40028 */ lw $s4, 0x28($sp) -/* 0103E4 8000F7E4 03E00008 */ jr $ra -/* 0103E8 8000F7E8 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/objects/func_8000FAC4.s b/asm/non_matchings/objects/func_8000FAC4.s deleted file mode 100644 index 88b497a0..00000000 --- a/asm/non_matchings/objects/func_8000FAC4.s +++ /dev/null @@ -1,72 +0,0 @@ -glabel func_8000FAC4 -/* 0106C4 8000FAC4 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0106C8 8000FAC8 AFBF002C */ sw $ra, 0x2c($sp) -/* 0106CC 8000FACC AFB30028 */ sw $s3, 0x28($sp) -/* 0106D0 8000FAD0 AFB20024 */ sw $s2, 0x24($sp) -/* 0106D4 8000FAD4 AFB10020 */ sw $s1, 0x20($sp) -/* 0106D8 8000FAD8 AFB0001C */ sw $s0, 0x1c($sp) -/* 0106DC 8000FADC 8C820040 */ lw $v0, 0x40($a0) -/* 0106E0 8000FAE0 AC85006C */ sw $a1, 0x6c($a0) -/* 0106E4 8000FAE4 80430057 */ lb $v1, 0x57($v0) -/* 0106E8 8000FAE8 8C46001C */ lw $a2, 0x1c($v0) -/* 0106EC 8000FAEC 00809025 */ move $s2, $a0 -/* 0106F0 8000FAF0 1860002A */ blez $v1, .L8000FB9C -/* 0106F4 8000FAF4 00008025 */ move $s0, $zero -/* 0106F8 8000FAF8 00C08825 */ move $s1, $a2 -/* 0106FC 8000FAFC 3C13FFFF */ lui $s3, 0xffff -.L8000FB00: -/* 010700 8000FB00 8E220000 */ lw $v0, ($s1) -/* 010704 8000FB04 00104940 */ sll $t1, $s0, 5 -/* 010708 8000FB08 00537024 */ and $t6, $v0, $s3 -/* 01070C 8000FB0C 166E000B */ bne $s3, $t6, .L8000FB3C -/* 010710 8000FB10 00022E03 */ sra $a1, $v0, 0x18 -/* 010714 8000FB14 8E4F006C */ lw $t7, 0x6c($s2) -/* 010718 8000FB18 00022A03 */ sra $a1, $v0, 8 -/* 01071C 8000FB1C 30B900FF */ andi $t9, $a1, 0xff -/* 010720 8000FB20 0010C140 */ sll $t8, $s0, 5 -/* 010724 8000FB24 03202825 */ move $a1, $t9 -/* 010728 8000FB28 304600FF */ andi $a2, $v0, 0xff -/* 01072C 8000FB2C 0C02BC78 */ jal func_800AF1E0 -/* 010730 8000FB30 01F82021 */ addu $a0, $t7, $t8 -/* 010734 8000FB34 10000013 */ b .L8000FB84 -/* 010738 8000FB38 8E590040 */ lw $t9, 0x40($s2) -.L8000FB3C: -/* 01073C 8000FB3C 8E230004 */ lw $v1, 4($s1) -/* 010740 8000FB40 8E48006C */ lw $t0, 0x6c($s2) -/* 010744 8000FB44 00023403 */ sra $a2, $v0, 0x10 -/* 010748 8000FB48 00403825 */ move $a3, $v0 -/* 01074C 8000FB4C 00037403 */ sra $t6, $v1, 0x10 -/* 010750 8000FB50 31CFFFFF */ andi $t7, $t6, 0xffff -/* 010754 8000FB54 00076400 */ sll $t4, $a3, 0x10 -/* 010758 8000FB58 30CB00FF */ andi $t3, $a2, 0xff -/* 01075C 8000FB5C 30AA00FF */ andi $t2, $a1, 0xff -/* 010760 8000FB60 3078FFFF */ andi $t8, $v1, 0xffff -/* 010764 8000FB64 AFB80014 */ sw $t8, 0x14($sp) -/* 010768 8000FB68 01402825 */ move $a1, $t2 -/* 01076C 8000FB6C 01603025 */ move $a2, $t3 -/* 010770 8000FB70 000C3C03 */ sra $a3, $t4, 0x10 -/* 010774 8000FB74 AFAF0010 */ sw $t7, 0x10($sp) -/* 010778 8000FB78 0C02BCA7 */ jal func_800AF29C -/* 01077C 8000FB7C 01092021 */ addu $a0, $t0, $t1 -/* 010780 8000FB80 8E590040 */ lw $t9, 0x40($s2) -.L8000FB84: -/* 010784 8000FB84 26100001 */ addiu $s0, $s0, 1 -/* 010788 8000FB88 83230057 */ lb $v1, 0x57($t9) -/* 01078C 8000FB8C 26310008 */ addiu $s1, $s1, 8 -/* 010790 8000FB90 0203082A */ slt $at, $s0, $v1 -/* 010794 8000FB94 1420FFDA */ bnez $at, .L8000FB00 -/* 010798 8000FB98 00000000 */ nop -.L8000FB9C: -/* 01079C 8000FB9C 00031140 */ sll $v0, $v1, 5 -/* 0107A0 8000FBA0 8FBF002C */ lw $ra, 0x2c($sp) -/* 0107A4 8000FBA4 24420003 */ addiu $v0, $v0, 3 -/* 0107A8 8000FBA8 2401FFFC */ li $at, -4 -/* 0107AC 8000FBAC 00414024 */ and $t0, $v0, $at -/* 0107B0 8000FBB0 8FB0001C */ lw $s0, 0x1c($sp) -/* 0107B4 8000FBB4 8FB10020 */ lw $s1, 0x20($sp) -/* 0107B8 8000FBB8 8FB20024 */ lw $s2, 0x24($sp) -/* 0107BC 8000FBBC 8FB30028 */ lw $s3, 0x28($sp) -/* 0107C0 8000FBC0 27BD0030 */ addiu $sp, $sp, 0x30 -/* 0107C4 8000FBC4 03E00008 */ jr $ra -/* 0107C8 8000FBC8 01001025 */ move $v0, $t0 - diff --git a/asm/non_matchings/objects/func_8001790C.s b/asm/non_matchings/objects/func_8001790C.s deleted file mode 100644 index df09a5f1..00000000 --- a/asm/non_matchings/objects/func_8001790C.s +++ /dev/null @@ -1,33 +0,0 @@ -glabel func_8001790C -/* 01850C 8001790C 3C068012 */ lui $a2, %hi(D_8011AFF4) # $a2, 0x8012 -/* 018510 80017910 8CC6AFF4 */ lw $a2, %lo(D_8011AFF4)($a2) -/* 018514 80017914 00001025 */ move $v0, $zero -/* 018518 80017918 00027180 */ sll $t6, $v0, 6 -.L8001791C: -/* 01851C 8001791C 01C61821 */ addu $v1, $t6, $a2 -/* 018520 80017920 8C6F0000 */ lw $t7, ($v1) -/* 018524 80017924 24420001 */ addiu $v0, $v0, 1 -/* 018528 80017928 11E0000C */ beqz $t7, .L8001795C -/* 01852C 8001792C 00024400 */ sll $t0, $v0, 0x10 -/* 018530 80017930 8C780004 */ lw $t8, 4($v1) -/* 018534 80017934 00000000 */ nop -/* 018538 80017938 14980008 */ bne $a0, $t8, .L8001795C -/* 01853C 8001793C 00000000 */ nop -/* 018540 80017940 8C790008 */ lw $t9, 8($v1) -/* 018544 80017944 00000000 */ nop -/* 018548 80017948 14B90005 */ bne $a1, $t9, .L80017960 -/* 01854C 8001794C 00081403 */ sra $v0, $t0, 0x10 -/* 018550 80017950 AC600000 */ sw $zero, ($v1) -/* 018554 80017954 03E00008 */ jr $ra -/* 018558 80017958 00601025 */ move $v0, $v1 - -.L8001795C: -/* 01855C 8001795C 00081403 */ sra $v0, $t0, 0x10 -.L80017960: -/* 018560 80017960 28410010 */ slti $at, $v0, 0x10 -/* 018564 80017964 1420FFED */ bnez $at, .L8001791C -/* 018568 80017968 00027180 */ sll $t6, $v0, 6 -/* 01856C 8001796C 00001025 */ move $v0, $zero -/* 018570 80017970 03E00008 */ jr $ra -/* 018574 80017974 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_80017978.s b/asm/non_matchings/objects/func_80017978.s deleted file mode 100644 index b77b3d60..00000000 --- a/asm/non_matchings/objects/func_80017978.s +++ /dev/null @@ -1,27 +0,0 @@ -glabel func_80017978 -/* 018578 80017978 3C068012 */ lui $a2, %hi(D_8011AFF4) # $a2, 0x8012 -/* 01857C 8001797C 8CC6AFF4 */ lw $a2, %lo(D_8011AFF4)($a2) -/* 018580 80017980 00001025 */ move $v0, $zero -/* 018584 80017984 00027180 */ sll $t6, $v0, 6 -.L80017988: -/* 018588 80017988 01C61821 */ addu $v1, $t6, $a2 -/* 01858C 8001798C 8C6F0000 */ lw $t7, ($v1) -/* 018590 80017990 24420001 */ addiu $v0, $v0, 1 -/* 018594 80017994 15E00007 */ bnez $t7, .L800179B4 -/* 018598 80017998 0002CC00 */ sll $t9, $v0, 0x10 -/* 01859C 8001799C 24180002 */ li $t8, 2 -/* 0185A0 800179A0 AC640004 */ sw $a0, 4($v1) -/* 0185A4 800179A4 AC650008 */ sw $a1, 8($v1) -/* 0185A8 800179A8 AC780000 */ sw $t8, ($v1) -/* 0185AC 800179AC 03E00008 */ jr $ra -/* 0185B0 800179B0 00601025 */ move $v0, $v1 - -.L800179B4: -/* 0185B4 800179B4 00191403 */ sra $v0, $t9, 0x10 -/* 0185B8 800179B8 28410010 */ slti $at, $v0, 0x10 -/* 0185BC 800179BC 1420FFF2 */ bnez $at, .L80017988 -/* 0185C0 800179C0 00027180 */ sll $t6, $v0, 6 -/* 0185C4 800179C4 00001025 */ move $v0, $zero -/* 0185C8 800179C8 03E00008 */ jr $ra -/* 0185CC 800179CC 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_8001B7A8.s b/asm/non_matchings/objects/func_8001B7A8.s deleted file mode 100644 index 1e1d19aa..00000000 --- a/asm/non_matchings/objects/func_8001B7A8.s +++ /dev/null @@ -1,41 +0,0 @@ -glabel func_8001B7A8 -/* 01C3A8 8001B7A8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 01C3AC 8001B7AC AFBF0014 */ sw $ra, 0x14($sp) -/* 01C3B0 8001B7B0 AFA60028 */ sw $a2, 0x28($sp) -/* 01C3B4 8001B7B4 848E01AA */ lh $t6, 0x1aa($a0) -/* 01C3B8 8001B7B8 3C0F8012 */ lui $t7, %hi(gObjectCount) # $t7, 0x8012 -/* 01C3BC 8001B7BC 01C52823 */ subu $a1, $t6, $a1 -/* 01C3C0 8001B7C0 24A5FFFF */ addiu $a1, $a1, -1 -/* 01C3C4 8001B7C4 04A00006 */ bltz $a1, .L8001B7E0 -/* 01C3C8 8001B7C8 00000000 */ nop -/* 01C3CC 8001B7CC 8DEFAEF0 */ lw $t7, %lo(gObjectCount)($t7) -/* 01C3D0 8001B7D0 3C188012 */ lui $t8, %hi(D_8011AEE8) # $t8, 0x8012 -/* 01C3D4 8001B7D4 00AF082A */ slt $at, $a1, $t7 -/* 01C3D8 8001B7D8 14200003 */ bnez $at, .L8001B7E8 -/* 01C3DC 8001B7DC 00000000 */ nop -.L8001B7E0: -/* 01C3E0 8001B7E0 10000010 */ b .L8001B824 -/* 01C3E4 8001B7E4 00001025 */ move $v0, $zero -.L8001B7E8: -/* 01C3E8 8001B7E8 8F18AEE8 */ lw $t8, %lo(D_8011AEE8)($t8) -/* 01C3EC 8001B7EC 0005C880 */ sll $t9, $a1, 2 -/* 01C3F0 8001B7F0 03194021 */ addu $t0, $t8, $t9 -/* 01C3F4 8001B7F4 8D030000 */ lw $v1, ($t0) -/* 01C3F8 8001B7F8 00000000 */ nop -/* 01C3FC 8001B7FC 14600003 */ bnez $v1, .L8001B80C -/* 01C400 8001B800 00000000 */ nop -/* 01C404 8001B804 10000007 */ b .L8001B824 -/* 01C408 8001B808 00001025 */ move $v0, $zero -.L8001B80C: -/* 01C40C 8001B80C 8C650064 */ lw $a1, 0x64($v1) -/* 01C410 8001B810 0C006E0D */ jal func_8001B834 -/* 01C414 8001B814 AFA30018 */ sw $v1, 0x18($sp) -/* 01C418 8001B818 8FA90028 */ lw $t1, 0x28($sp) -/* 01C41C 8001B81C 8FA20018 */ lw $v0, 0x18($sp) -/* 01C420 8001B820 E5200000 */ swc1 $f0, ($t1) -.L8001B824: -/* 01C424 8001B824 8FBF0014 */ lw $ra, 0x14($sp) -/* 01C428 8001B828 27BD0020 */ addiu $sp, $sp, 0x20 -/* 01C42C 8001B82C 03E00008 */ jr $ra -/* 01C430 8001B830 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_8001BB18.s b/asm/non_matchings/objects/func_8001BB18.s deleted file mode 100644 index e597fd58..00000000 --- a/asm/non_matchings/objects/func_8001BB18.s +++ /dev/null @@ -1,26 +0,0 @@ -glabel func_8001BB18 -/* 01C718 8001BB18 3C028012 */ lui $v0, %hi(gObjectCount) # $v0, 0x8012 -/* 01C71C 8001BB1C 8C42AEF0 */ lw $v0, %lo(gObjectCount)($v0) -/* 01C720 8001BB20 00000000 */ nop -/* 01C724 8001BB24 14400003 */ bnez $v0, .L8001BB34 -/* 01C728 8001BB28 00000000 */ nop -/* 01C72C 8001BB2C 03E00008 */ jr $ra -/* 01C730 8001BB30 00001025 */ move $v0, $zero - -.L8001BB34: -/* 01C734 8001BB34 04800003 */ bltz $a0, .L8001BB44 -/* 01C738 8001BB38 0082082A */ slt $at, $a0, $v0 -/* 01C73C 8001BB3C 14200003 */ bnez $at, .L8001BB4C -/* 01C740 8001BB40 3C0E8012 */ lui $t6, %hi(D_8011AEEC) # $t6, 0x8012 -.L8001BB44: -/* 01C744 8001BB44 03E00008 */ jr $ra -/* 01C748 8001BB48 00001025 */ move $v0, $zero - -.L8001BB4C: -/* 01C74C 8001BB4C 8DCEAEEC */ lw $t6, %lo(D_8011AEEC)($t6) -/* 01C750 8001BB50 00047880 */ sll $t7, $a0, 2 -/* 01C754 8001BB54 01CFC021 */ addu $t8, $t6, $t7 -/* 01C758 8001BB58 8F020000 */ lw $v0, ($t8) -/* 01C75C 8001BB5C 00000000 */ nop -/* 01C760 8001BB60 03E00008 */ jr $ra -/* 01C764 8001BB64 00000000 */ nop diff --git a/asm/non_matchings/objects/func_8001C418.s b/asm/non_matchings/objects/func_8001C418.s deleted file mode 100644 index 414d020e..00000000 --- a/asm/non_matchings/objects/func_8001C418.s +++ /dev/null @@ -1,38 +0,0 @@ -.late_rodata -glabel D_800E5640 -.float -20000.0 - -.text -glabel func_8001C418 -/* 01D018 8001C418 3C01800E */ lui $at, %hi(D_800E5640) # $at, 0x800e -/* 01D01C 8001C41C 3C048012 */ lui $a0, %hi(D_8011AF18) # $a0, 0x8012 -/* 01D020 8001C420 C4225640 */ lwc1 $f2, %lo(D_800E5640)($at) -/* 01D024 8001C424 00001025 */ move $v0, $zero -/* 01D028 8001C428 00001825 */ move $v1, $zero -/* 01D02C 8001C42C 2484AF18 */ addiu $a0, %lo(D_8011AF18) # addiu $a0, $a0, -0x50e8 -/* 01D030 8001C430 00027080 */ sll $t6, $v0, 2 -.L8001C434: -/* 01D034 8001C434 008E7821 */ addu $t7, $a0, $t6 -/* 01D038 8001C438 C5E00000 */ lwc1 $f0, ($t7) -/* 01D03C 8001C43C 00000000 */ nop -/* 01D040 8001C440 46001032 */ c.eq.s $f2, $f0 -/* 01D044 8001C444 00000000 */ nop -/* 01D048 8001C448 45010008 */ bc1t .L8001C46C -/* 01D04C 8001C44C 00000000 */ nop -/* 01D050 8001C450 460C003C */ c.lt.s $f0, $f12 -/* 01D054 8001C454 00000000 */ nop -/* 01D058 8001C458 45000004 */ bc1f .L8001C46C -/* 01D05C 8001C45C 00000000 */ nop -/* 01D060 8001C460 00021C00 */ sll $v1, $v0, 0x10 -/* 01D064 8001C464 0003C403 */ sra $t8, $v1, 0x10 -/* 01D068 8001C468 03001825 */ move $v1, $t8 -.L8001C46C: -/* 01D06C 8001C46C 24420001 */ addiu $v0, $v0, 1 -/* 01D070 8001C470 0002CC00 */ sll $t9, $v0, 0x10 -/* 01D074 8001C474 00191403 */ sra $v0, $t9, 0x10 -/* 01D078 8001C478 28410004 */ slti $at, $v0, 4 -/* 01D07C 8001C47C 1420FFED */ bnez $at, .L8001C434 -/* 01D080 8001C480 00027080 */ sll $t6, $v0, 2 -/* 01D084 8001C484 03E00008 */ jr $ra -/* 01D088 8001C488 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/objects/func_8001C48C.s b/asm/non_matchings/objects/func_8001C48C.s deleted file mode 100644 index 70d6761a..00000000 --- a/asm/non_matchings/objects/func_8001C48C.s +++ /dev/null @@ -1,49 +0,0 @@ -glabel func_8001C48C -/* 01D08C 8001C48C 3C058012 */ lui $a1, %hi(D_8011AF04) # $a1, 0x8012 -/* 01D090 8001C490 8CA5AF04 */ lw $a1, %lo(D_8011AF04)($a1) -/* 01D094 8001C494 00001825 */ move $v1, $zero -/* 01D098 8001C498 24020080 */ li $v0, 128 -.L8001C49C: -/* 01D09C 8001C49C 8CAE0000 */ lw $t6, ($a1) -/* 01D0A0 8001C4A0 00000000 */ nop -/* 01D0A4 8001C4A4 15C00004 */ bnez $t6, .L8001C4B8 -/* 01D0A8 8001C4A8 00000000 */ nop -/* 01D0AC 8001C4AC ACA40000 */ sw $a0, ($a1) -/* 01D0B0 8001C4B0 03E00008 */ jr $ra -/* 01D0B4 8001C4B4 00601025 */ move $v0, $v1 - -.L8001C4B8: -/* 01D0B8 8001C4B8 8CAF0004 */ lw $t7, 4($a1) -/* 01D0BC 8001C4BC 00000000 */ nop -/* 01D0C0 8001C4C0 15E00004 */ bnez $t7, .L8001C4D4 -/* 01D0C4 8001C4C4 00000000 */ nop -/* 01D0C8 8001C4C8 ACA40004 */ sw $a0, 4($a1) -/* 01D0CC 8001C4CC 03E00008 */ jr $ra -/* 01D0D0 8001C4D0 24620001 */ addiu $v0, $v1, 1 - -.L8001C4D4: -/* 01D0D4 8001C4D4 8CB80008 */ lw $t8, 8($a1) -/* 01D0D8 8001C4D8 00000000 */ nop -/* 01D0DC 8001C4DC 17000004 */ bnez $t8, .L8001C4F0 -/* 01D0E0 8001C4E0 00000000 */ nop -/* 01D0E4 8001C4E4 ACA40008 */ sw $a0, 8($a1) -/* 01D0E8 8001C4E8 03E00008 */ jr $ra -/* 01D0EC 8001C4EC 24620002 */ addiu $v0, $v1, 2 - -.L8001C4F0: -/* 01D0F0 8001C4F0 8CB9000C */ lw $t9, 0xc($a1) -/* 01D0F4 8001C4F4 00000000 */ nop -/* 01D0F8 8001C4F8 17200004 */ bnez $t9, .L8001C50C -/* 01D0FC 8001C4FC 00000000 */ nop -/* 01D100 8001C500 ACA4000C */ sw $a0, 0xc($a1) -/* 01D104 8001C504 03E00008 */ jr $ra -/* 01D108 8001C508 24620003 */ addiu $v0, $v1, 3 - -.L8001C50C: -/* 01D10C 8001C50C 24630004 */ addiu $v1, $v1, 4 -/* 01D110 8001C510 1462FFE2 */ bne $v1, $v0, .L8001C49C -/* 01D114 8001C514 24A50010 */ addiu $a1, $a1, 0x10 -/* 01D118 8001C518 2402FFFF */ li $v0, -1 -/* 01D11C 8001C51C 03E00008 */ jr $ra -/* 01D120 8001C520 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_8001D258.s b/asm/non_matchings/objects/func_8001D258.s deleted file mode 100644 index 6726ea7e..00000000 --- a/asm/non_matchings/objects/func_8001D258.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_8001D258 -/* 01DE58 8001D258 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 01DE5C 8001D25C AFA60028 */ sw $a2, 0x28($sp) -/* 01DE60 8001D260 AFA7002C */ sw $a3, 0x2c($sp) -/* 01DE64 8001D264 87AE002E */ lh $t6, 0x2e($sp) -/* 01DE68 8001D268 87AF0032 */ lh $t7, 0x32($sp) -/* 01DE6C 8001D26C 87A7002A */ lh $a3, 0x2a($sp) -/* 01DE70 8001D270 AFBF001C */ sw $ra, 0x1c($sp) -/* 01DE74 8001D274 44067000 */ mfc1 $a2, $f14 -/* 01DE78 8001D278 3C048012 */ lui $a0, %hi(D_8011AF30) # $a0, 0x8012 -/* 01DE7C 8001D27C 44056000 */ mfc1 $a1, $f12 -/* 01DE80 8001D280 2484AF30 */ addiu $a0, %lo(D_8011AF30) # addiu $a0, $a0, -0x50d0 -/* 01DE84 8001D284 AFAE0010 */ sw $t6, 0x10($sp) -/* 01DE88 8001D288 0C00752D */ jal func_8001D4B4 -/* 01DE8C 8001D28C AFAF0014 */ sw $t7, 0x14($sp) -/* 01DE90 8001D290 8FBF001C */ lw $ra, 0x1c($sp) -/* 01DE94 8001D294 27BD0020 */ addiu $sp, $sp, 0x20 -/* 01DE98 8001D298 03E00008 */ jr $ra -/* 01DE9C 8001D29C 00000000 */ nop diff --git a/asm/non_matchings/objects/func_8001F3EC.s b/asm/non_matchings/objects/func_8001F3EC.s deleted file mode 100644 index 50f91aa7..00000000 --- a/asm/non_matchings/objects/func_8001F3EC.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_8001F3EC -/* 01FFEC 8001F3EC 3C028012 */ lui $v0, %hi(D_8011AE78) # $v0, 0x8012 -/* 01FFF0 8001F3F0 8442AE78 */ lh $v0, %lo(D_8011AE78)($v0) -/* 01FFF4 8001F3F4 00802825 */ move $a1, $a0 -/* 01FFF8 8001F3F8 14400003 */ bnez $v0, .L8001F408 -/* 01FFFC 8001F3FC 00000000 */ nop -/* 020000 8001F400 03E00008 */ jr $ra -/* 020004 8001F404 2402FFFF */ li $v0, -1 - -.L8001F408: -/* 020008 8001F408 1840000E */ blez $v0, .L8001F444 -/* 02000C 8001F40C 00001825 */ move $v1, $zero -/* 020010 8001F410 3C068012 */ lui $a2, %hi(D_8011AE74) # $a2, 0x8012 -/* 020014 8001F414 8CC6AE74 */ lw $a2, %lo(D_8011AE74)($a2) -/* 020018 8001F418 00002025 */ move $a0, $zero -/* 02001C 8001F41C 00023880 */ sll $a3, $v0, 2 -.L8001F420: -/* 020020 8001F420 8CCE0000 */ lw $t6, ($a2) -/* 020024 8001F424 24840004 */ addiu $a0, $a0, 4 -/* 020028 8001F428 8DCF007C */ lw $t7, 0x7c($t6) -/* 02002C 8001F42C 0087082A */ slt $at, $a0, $a3 -/* 020030 8001F430 14AF0002 */ bne $a1, $t7, .L8001F43C -/* 020034 8001F434 00000000 */ nop -/* 020038 8001F438 24630001 */ addiu $v1, $v1, 1 -.L8001F43C: -/* 02003C 8001F43C 1420FFF8 */ bnez $at, .L8001F420 -/* 020040 8001F440 24C60004 */ addiu $a2, $a2, 4 -.L8001F444: -/* 020044 8001F444 00601025 */ move $v0, $v1 -/* 020048 8001F448 03E00008 */ jr $ra -/* 02004C 8001F44C 00000000 */ nop - diff --git a/asm/non_matchings/objects/func_800228B0.s b/asm/non_matchings/objects/func_800228B0.s deleted file mode 100644 index f68b5b4a..00000000 --- a/asm/non_matchings/objects/func_800228B0.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel func_800228B0 -/* 0234B0 800228B0 00057080 */ sll $t6, $a1, 2 -/* 0234B4 800228B4 AFA60008 */ sw $a2, 8($sp) -/* 0234B8 800228B8 008E1021 */ addu $v0, $a0, $t6 -/* 0234BC 800228BC C44C0004 */ lwc1 $f12, 4($v0) -/* 0234C0 800228C0 C4440008 */ lwc1 $f4, 8($v0) -/* 0234C4 800228C4 C7A60008 */ lwc1 $f6, 8($sp) -/* 0234C8 800228C8 460C2081 */ sub.s $f2, $f4, $f12 -/* 0234CC 800228CC 46061202 */ mul.s $f8, $f2, $f6 -/* 0234D0 800228D0 E4E20000 */ swc1 $f2, ($a3) -/* 0234D4 800228D4 03E00008 */ jr $ra -/* 0234D8 800228D8 46086000 */ add.s $f0, $f12, $f8 diff --git a/include/structs.h b/include/structs.h index 332c0c29..afc0f2fa 100644 --- a/include/structs.h +++ b/include/structs.h @@ -477,12 +477,28 @@ typedef enum { OBJECT_MODEL_TYPE_UNKNOWN4 } ObjectModelType; +typedef struct ObjHeaderParticleEntry { + /* 0x00 */ s32 upper; + /* 0x04 */ s32 lower; +} ObjHeaderParticleEntry; + +// Size: 0x18 bytes +typedef struct ObjectHeader24 { + u8 pad0[0x18]; +} ObjectHeader24; + typedef struct ObjectHeader { u8 pad0[0x4]; /* 0x04 */ f32 unk4; /* 0x08 */ f32 unk8; /* 0x0C */ f32 scale; - u8 pad10[0x20]; + /* 0x10 */ s32 *modelIds; + /* 0x14 */ s32 *vehiclePartIds; + /* 0x18 */ s8 *vehiclePartIndices; + /* 0x1C */ ObjHeaderParticleEntry *objectParticles; + s32 pad20; + /* 0x24 */ ObjectHeader24 *unk24; + u8 pad28[8]; /* 0x30 */ u16 unk30; /* 0x32 */ s16 unk32; u8 pad34[9]; @@ -495,7 +511,9 @@ typedef struct ObjectHeader { /* 0x55 */ s8 numberOfModelIds; // size of array pointed by Object->unk68 u8 pad56; /* 0x57 */ s8 unk57; - u8 pad58[0x8]; + u8 pad58[0x2]; + /* 0x5A */ s8 unk5A; + u8 pad5B[0x5]; /* 0x60 */ char internalName[16]; /* 0x70 */ u8 unk70; /* 0x71 */ u8 unk71; @@ -1142,6 +1160,11 @@ typedef struct Object_80011AD0 { /* 0xFC */ u8 unkFC; } Object_80011AD0; +typedef struct Object_8001B7A8 { + u8 pad0[0x112]; + /* 0x112 */ s16 unk112; +} Object_8001B7A8; + typedef struct Object_64 { union { Object_LaserGun laser_gun; @@ -1184,6 +1207,7 @@ typedef struct Object_64 { Object_TT tt; Object_Bridge_WhaleRamp bridge_whale_ramp; Object_80011AD0 obj80011AD0; + Object_8001B7A8 obj8001B7A8; }; } Object_64; @@ -1271,7 +1295,7 @@ typedef struct Object { /* 0x0064 */ Object_64 *unk64; //player + 0x98 /* 0x0068 */ Object_68 **unk68; //player + 0x80 /* 0x006C */ Object_6C *unk6C; //player + 0x370 - /* 0x0070 */ u32 unk70; + /* 0x0070 */ u32 *unk70; /* 0x0074 */ u32 unk74; diff --git a/src/objects.c b/src/objects.c index 0116830a..1b4cf622 100644 --- a/src/objects.c +++ b/src/objects.c @@ -15,6 +15,7 @@ #include "menu.h" #include "game.h" #include "racer.h" +#include "particles.h" /************ .data ************/ @@ -193,7 +194,7 @@ s32 D_8011AE64; s32 *D_8011AE68; s32 *D_8011AE6C; s32 D_8011AE70; -s32 *D_8011AE74; +Object **D_8011AE74; s16 D_8011AE78; s16 D_8011AE7A; s16 D_8011AE7C; @@ -235,9 +236,12 @@ s32 D_8011AF00; u32 (*D_8011AF04)[64]; // Not sure about the number of elements s32 D_8011AF08[2]; s32 D_8011AF10[2]; -s32 D_8011AF18[5]; +f32 D_8011AF18[4]; +s32 D_8011AF28; s32 D_8011AF2C; -s32 D_8011AF30[12]; +s32 D_8011AF30; +s32 D_8011AF34; +s32 D_8011AF38[10]; s32 D_8011AF60[2]; s32 D_8011AF68[32]; s32 D_8011AFE8; @@ -325,7 +329,7 @@ void func_8000BF8C(void) { D_8011AE68 = (s32 *)new_sub_memory_pool(0x15800, 0x200); gParticlePtrList = (Object **)allocate_from_main_pool_safe(0x320, COLOUR_TAG_BLUE); D_8011AE6C = (s32 *)allocate_from_main_pool_safe(0x50, COLOUR_TAG_BLUE); - D_8011AE74 = (s32 *)allocate_from_main_pool_safe(0x200, COLOUR_TAG_BLUE); + D_8011AE74 = (Object **)allocate_from_main_pool_safe(0x200, COLOUR_TAG_BLUE); D_8011AECC = (unknown8011AECC *)allocate_from_main_pool_safe(0xE10, COLOUR_TAG_BLUE); D_8011AEDC = (u32 *)allocate_from_main_pool_safe(0x50, COLOUR_TAG_BLUE); gObjectStructArrayPtr = (Object *)allocate_from_main_pool_safe(0x28, COLOUR_TAG_BLUE); @@ -496,20 +500,13 @@ void func_8000CBC0(void) { } } -#ifdef NON_EQUIVALENT void func_8000CBF0(Object *arg0, s32 arg1) { - u32 **temp = &D_8011AE08[arg1]; - u32 *temp2; - temp2 = *temp; - if (temp2 != NULL) { - return; // I can't get this second return to appear. + if (D_8011AE08[arg1] == NULL) { + D_8011AE08[arg1] = arg0; + } else { + if(D_8011AE08[arg1]){} } - D_8011AE08[arg1] = arg0; - return; } -#else -GLOBAL_ASM("asm/non_matchings/objects/func_8000CBF0.s") -#endif s32 func_8000CC20(u32 *arg0) { s32 i; @@ -693,7 +690,26 @@ u8 func_8000E4D8(void) { } GLOBAL_ASM("asm/non_matchings/objects/func_8000E4E8.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8000E558.s") + +s32 func_8000E558(Object *arg0){ + s32 temp_v0; + s32 new_var, new_var2; + if (arg0->segment.unk3C_a.unk3C == 0) { + return TRUE; + } + temp_v0 = arg0->segment.unk3C_a.unk3C; + new_var2 = D_8011AE98[0]; + if ((temp_v0 >= new_var2) && (((D_8011AEA0 * 8) + new_var2) >= temp_v0)) { + return FALSE; + } + new_var = D_8011AE98[1]; + // Why even bother with this check? + if (temp_v0 >= new_var && temp_v0 <= ((D_8011AEA4 * 8) + new_var)) { + return TRUE; + } + return TRUE; +} + GLOBAL_ASM("asm/non_matchings/objects/func_8000E5EC.s") GLOBAL_ASM("asm/non_matchings/objects/func_8000E79C.s") GLOBAL_ASM("asm/non_matchings/objects/func_8000E898.s") @@ -731,10 +747,39 @@ void func_8000E9D0(Object *arg0) { GLOBAL_ASM("asm/non_matchings/objects/spawn_object.s") GLOBAL_ASM("asm/non_matchings/objects/func_8000F648.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8000F758.s") + +void func_8000F758(Object *obj) { + s32 i; + for(i = 0; i < obj->segment.header->unk5A; i++) { + obj->unk70[i] = func_80031F88(obj, &obj->segment.header->unk24[i]); + } +} + GLOBAL_ASM("asm/non_matchings/objects/func_8000F7EC.s") GLOBAL_ASM("asm/non_matchings/objects/func_8000F99C.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8000FAC4.s") + +s32 func_8000FAC4(Object *obj, s32 arg1) { + ObjHeaderParticleEntry *particleDataEntry; + s32 i; + + obj->unk6C = arg1; + particleDataEntry = obj->segment.header->objectParticles; + for(i = 0; i < obj->segment.header->unk57; i++) { + if ((particleDataEntry[i].upper & 0xFFFF0000) == 0xFFFF0000) { + func_800AF1E0(&obj->unk6C[i], (particleDataEntry[i].upper >> 8) & 0xFF, particleDataEntry[i].upper & 0xFF); + } else { + func_800AF29C(&obj->unk6C[i], + (particleDataEntry[i].upper >> 0x18) & 0xFF, + (particleDataEntry[i].upper >> 0x10) & 0xFF, + particleDataEntry[i].upper & 0xFFFF, + (particleDataEntry[i].lower >> 0x10) & 0xFFFF, + particleDataEntry[i].lower & 0xFFFF + ); + } + } + return ((obj->segment.header->unk57 << 5) + 3) & ~3; +} + GLOBAL_ASM("asm/non_matchings/objects/func_8000FBCC.s") GLOBAL_ASM("asm/non_matchings/objects/func_8000FC6C.s") @@ -1039,9 +1084,36 @@ GLOBAL_ASM("asm/non_matchings/objects/func_80016C68.s") GLOBAL_ASM("asm/non_matchings/objects/func_80016DE8.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001709C.s") GLOBAL_ASM("asm/non_matchings/objects/func_80017248.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001790C.s") -GLOBAL_ASM("asm/non_matchings/objects/func_80017978.s") +unk800179D0 *func_8001790C(u32 *arg0, u32 *arg1) { + unk800179D0 *entry; + s16 i; + + for(i = 0; i < 16; i++) { + entry = &D_8011AFF4[i]; + if (entry->unk0 != 0 && entry->unk04 == arg0 && entry->unk08 == arg1) { + entry->unk0 = 0; + return entry; + } + } + return NULL; +} + +unk800179D0 *func_80017978(s32 arg0, s32 arg1) { + unk800179D0 *entry; + s16 i; + + for(i = 0; i < 16; i++) { + entry = &D_8011AFF4[i]; + if (entry->unk0 == 0) { + entry->unk04 = arg0; + entry->unk08 = arg1; + entry->unk0 = 2; + return entry; + } + } + return NULL; +} u32 func_800179D0(void) { s16 i = 0; @@ -1150,7 +1222,25 @@ void func_8001B790(void) { D_800DC730 = 0; } -GLOBAL_ASM("asm/non_matchings/objects/func_8001B7A8.s") +f32 func_8001B834(Object *arg0, s32); + +Object *func_8001B7A8(Object *arg0, s32 arg1, f32 *arg2) { + s32 temp; + Object *temp_v1; + arg1 = (arg0->obj.obj8001B7A8.unk112 - arg1) - 1; + if ((arg1 < 0) || (arg1 >= gObjectCount)) { + return NULL; + } + temp_v1 = D_8011AEE8[arg1]; + if (temp_v1 == NULL) { + return NULL; + } + *arg2 = func_8001B834(arg0, temp_v1->unk64); + return temp_v1; +} + +//GLOBAL_ASM("asm/non_matchings/objects/func_8001B7A8.s") + GLOBAL_ASM("asm/non_matchings/objects/func_8001B834.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001B974.s") @@ -1196,7 +1286,17 @@ Object *get_object_struct(s32 indx) { return (*gObjectStructArrayPtr)[indx]; } -GLOBAL_ASM("asm/non_matchings/objects/func_8001BB18.s") +s32 func_8001BB18(s32 arg0) { + s32 temp_v0 = gObjectCount; + if (temp_v0 == 0) { + return 0; + } + if ((arg0 < 0) || (arg0 >= temp_v0)) { + return 0; + } + return D_8011AEEC[arg0]; +} + GLOBAL_ASM("asm/non_matchings/objects/func_8001BB68.s") UNUSED void func_8001BC40(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2, UNUSED s32 arg3) { @@ -1213,8 +1313,29 @@ u32 func_8001BD94(s32 arg0) { GLOBAL_ASM("asm/non_matchings/objects/func_8001BDD4.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001BF20.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001C418.s") -GLOBAL_ASM("asm/non_matchings/objects/func_8001C48C.s") + +s16 func_8001C418(f32 arg0) { + s16 i = 0; + s16 out = 0; + for(; i < 4; i++) { + if ((D_8011AF18[i] != -20000.0f) && (D_8011AF18[i] < arg0)) { + out = i; + } + } + return out; +} + +s32 func_8001C48C(s32 arg0) { + s32 i; + for(i = 0; i < 128; i++) { + if ((*D_8011AF04)[i] == 0) { + (*D_8011AF04)[i] = arg0; + return i; + } + } + return -1; +} + GLOBAL_ASM("asm/non_matchings/objects/func_8001C524.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001C6C4.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001CC48.s") @@ -1246,7 +1367,10 @@ u32 func_8001D214(s32 arg0) { UNUSED void func_8001D23C(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) { } -GLOBAL_ASM("asm/non_matchings/objects/func_8001D258.s") +void func_8001D258(f32 arg0, f32 arg1, s16 arg2, s16 arg3, s16 arg4) { + func_8001D4B4(&D_8011AF30, arg0, arg1, arg2, arg3, arg4); +} + GLOBAL_ASM("asm/non_matchings/objects/func_8001D2A0.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001D4B4.s") GLOBAL_ASM("asm/non_matchings/objects/func_8001D5E0.s") @@ -1379,7 +1503,22 @@ void func_8001F3C8(s32 arg0) { D_8011ADD4 = arg0; } -GLOBAL_ASM("asm/non_matchings/objects/func_8001F3EC.s") +s32 func_8001F3EC(s32 arg0){ + s32 i; + s32 count; + if (D_8011AE78 == 0) { + return -1; + } + + count = 0; + for (i = 0; i < D_8011AE78; i++) { + if (D_8011AE74[i]->unk7C.word == arg0){ + count++; + } + } + + return count; +} void func_8001F450(void) { D_8011AD53 = 1; @@ -1414,19 +1553,18 @@ f32 lerp(f32 *arg0, u32 arg1, f32 arg2) { return result; } -#ifdef NON_EQUIVALENT f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) { + f32 new_var2; f32 temp_f12; + f32 new_var; f32 temp_f2; - // regalloc issues - temp_f2 = (arg0[arg1 + 2] - arg0[arg1 + 1]) * arg2; + new_var = arg0[arg1 + 2] - arg0[arg1 + 1]; + temp_f2 = new_var * arg2; temp_f12 = arg0[arg1 + 1]; + new_var2 = temp_f12 + temp_f2; *arg3 = arg0[arg1 + 2] - arg0[arg1 + 1]; - return temp_f12 + temp_f2; + return new_var2; } -#else -GLOBAL_ASM("asm/non_matchings/objects/func_800228B0.s") -#endif UNUSED void func_800228DC(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) { } diff --git a/src/objects.h b/src/objects.h index e5b8adf5..8ca6aacb 100644 --- a/src/objects.h +++ b/src/objects.h @@ -194,6 +194,8 @@ void func_8001D1BC(s32 arg0); u32 func_8001D1E4(s32 *arg0); u32 func_8001D214(s32 arg0); void func_8001D23C(s32 arg0, s32 arg1, s32 arg2); +void func_8001D258(f32 arg0, f32 arg1, s16 arg2, s16 arg3, s16 arg4); +void func_8001D4B4(s32*, f32, f32, s16, s16, s16); void calc_dyn_light_and_env_map_for_object(ObjectModel *model, Object *object, s32 arg2, f32 arg3); s32 *get_misc_asset(s32 index); s32 func_8001E2EC(s32 arg0); @@ -222,12 +224,12 @@ s16 *func_80024594(s32 *arg0, s32 *arg1); void func_800245B4(s16 arg0); void func_80012E28(Object *this); f32 catmull_rom_interpolation(f32*, s32, f32); +s32 func_80031F88(Object*, s32); //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 gParticlePtrList_flush(void); -void func_8001D258(f32, f32, s32, s32, s32); void decrypt_magic_codes(u8 *arg0, s32 length); void func_80011960(Object*, s32, u32, Object_64*, u32, u32, u32, u32, f32); void func_80011AD0(Object *this);