From 6da8a160470299044be535adfaad1a1bfd819d72 Mon Sep 17 00:00:00 2001 From: David Benepe Date: Tue, 18 Aug 2020 21:45:16 -0500 Subject: [PATCH] (8.38%) Decompiled 5 functions in unknown_00BC20 --- .../unknown_00BC20/func_8000BF8C.s | 221 -------------- .../unknown_00BC20/func_8000C460.s | 110 ------- .../unknown_00BC20/func_8000C604.s | 75 ----- .../unknown_00BC20/func_8000CC20.s | 28 -- .../unknown_00BC20/func_8000E1EC.s | 52 ---- src/unknown_00BC20.c | 284 ++++++++++++++++-- 6 files changed, 261 insertions(+), 509 deletions(-) delete mode 100644 asm/non_matchings/unknown_00BC20/func_8000BF8C.s delete mode 100644 asm/non_matchings/unknown_00BC20/func_8000C460.s delete mode 100644 asm/non_matchings/unknown_00BC20/func_8000C604.s delete mode 100644 asm/non_matchings/unknown_00BC20/func_8000CC20.s delete mode 100644 asm/non_matchings/unknown_00BC20/func_8000E1EC.s diff --git a/asm/non_matchings/unknown_00BC20/func_8000BF8C.s b/asm/non_matchings/unknown_00BC20/func_8000BF8C.s deleted file mode 100644 index 71e4d4b6..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8000BF8C.s +++ /dev/null @@ -1,221 +0,0 @@ -glabel func_8000BF8C -/* 00CB8C 8000BF8C 3C01800E */ lui $at, %hi(D_800E514C) # $at, 0x800e -/* 00CB90 8000BF90 C42C514C */ lwc1 $f12, %lo(D_800E514C)($at) -/* 00CB94 8000BF94 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00CB98 8000BF98 3C01800E */ lui $at, %hi(D_800E5150) # $at, 0x800e -/* 00CB9C 8000BF9C AFBF001C */ sw $ra, 0x1c($sp) -/* 00CBA0 8000BFA0 C42E5150 */ lwc1 $f14, %lo(D_800E5150)($at) -/* 00CBA4 8000BFA4 AFA00010 */ sw $zero, 0x10($sp) -/* 00CBA8 8000BFA8 00003025 */ move $a2, $zero -/* 00CBAC 8000BFAC 0C007496 */ jal func_8001D258 -/* 00CBB0 8000BFB0 2407E000 */ li $a3, -8192 -/* 00CBB4 8000BFB4 3C040001 */ lui $a0, (0x00015800 >> 16) # lui $a0, 1 -/* 00CBB8 8000BFB8 34845800 */ ori $a0, (0x00015800 & 0xFFFF) # ori $a0, $a0, 0x5800 -/* 00CBBC 8000BFBC 0C01C2DE */ jal func_80070B78 -/* 00CBC0 8000BFC0 24050200 */ li $a1, 512 -/* 00CBC4 8000BFC4 3C018012 */ lui $at, %hi(D_8011AE68) # $at, 0x8012 -/* 00CBC8 8000BFC8 AC22AE68 */ sw $v0, %lo(D_8011AE68)($at) -/* 00CBCC 8000BFCC 24040320 */ li $a0, 800 -/* 00CBD0 8000BFD0 0C01C327 */ jal func_80070C9C -/* 00CBD4 8000BFD4 3405FFFF */ li $a1, 65535 -/* 00CBD8 8000BFD8 3C018012 */ lui $at, %hi(D_8011AEC4) # $at, 0x8012 -/* 00CBDC 8000BFDC AC22AEC4 */ sw $v0, %lo(D_8011AEC4)($at) -/* 00CBE0 8000BFE0 24040050 */ li $a0, 80 -/* 00CBE4 8000BFE4 0C01C327 */ jal func_80070C9C -/* 00CBE8 8000BFE8 3405FFFF */ li $a1, 65535 -/* 00CBEC 8000BFEC 3C018012 */ lui $at, %hi(D_8011AE6C) # $at, 0x8012 -/* 00CBF0 8000BFF0 AC22AE6C */ sw $v0, %lo(D_8011AE6C)($at) -/* 00CBF4 8000BFF4 24040200 */ li $a0, 512 -/* 00CBF8 8000BFF8 0C01C327 */ jal func_80070C9C -/* 00CBFC 8000BFFC 3405FFFF */ li $a1, 65535 -/* 00CC00 8000C000 3C018012 */ lui $at, %hi(D_8011AE74) # $at, 0x8012 -/* 00CC04 8000C004 AC22AE74 */ sw $v0, %lo(D_8011AE74)($at) -/* 00CC08 8000C008 24040E10 */ li $a0, 3600 -/* 00CC0C 8000C00C 0C01C327 */ jal func_80070C9C -/* 00CC10 8000C010 3405FFFF */ li $a1, 65535 -/* 00CC14 8000C014 3C018012 */ lui $at, %hi(D_8011AECC) # $at, 0x8012 -/* 00CC18 8000C018 AC22AECC */ sw $v0, %lo(D_8011AECC)($at) -/* 00CC1C 8000C01C 24040050 */ li $a0, 80 -/* 00CC20 8000C020 0C01C327 */ jal func_80070C9C -/* 00CC24 8000C024 3405FFFF */ li $a1, 65535 -/* 00CC28 8000C028 3C018012 */ lui $at, %hi(D_8011AEDC) # $at, 0x8012 -/* 00CC2C 8000C02C AC22AEDC */ sw $v0, %lo(D_8011AEDC)($at) -/* 00CC30 8000C030 24040028 */ li $a0, 40 -/* 00CC34 8000C034 0C01C327 */ jal func_80070C9C -/* 00CC38 8000C038 3405FFFF */ li $a1, 65535 -/* 00CC3C 8000C03C 3C018012 */ lui $at, %hi(D_8011AEE4) # $at, 0x8012 -/* 00CC40 8000C040 AC22AEE4 */ sw $v0, %lo(D_8011AEE4)($at) -/* 00CC44 8000C044 24040028 */ li $a0, 40 -/* 00CC48 8000C048 0C01C327 */ jal func_80070C9C -/* 00CC4C 8000C04C 3405FFFF */ li $a1, 65535 -/* 00CC50 8000C050 3C018012 */ lui $at, %hi(D_8011AEEC) # $at, 0x8012 -/* 00CC54 8000C054 AC22AEEC */ sw $v0, %lo(D_8011AEEC)($at) -/* 00CC58 8000C058 24040028 */ li $a0, 40 -/* 00CC5C 8000C05C 0C01C327 */ jal func_80070C9C -/* 00CC60 8000C060 3405FFFF */ li $a1, 65535 -/* 00CC64 8000C064 3C018012 */ lui $at, %hi(D_8011AEE8) # $at, 0x8012 -/* 00CC68 8000C068 AC22AEE8 */ sw $v0, %lo(D_8011AEE8)($at) -/* 00CC6C 8000C06C 24040200 */ li $a0, 512 -/* 00CC70 8000C070 0C01C327 */ jal func_80070C9C -/* 00CC74 8000C074 3405FFFF */ li $a1, 65535 -/* 00CC78 8000C078 3C018012 */ lui $at, %hi(D_8011AF04) # $at, 0x8012 -/* 00CC7C 8000C07C AC22AF04 */ sw $v0, %lo(D_8011AF04)($at) -/* 00CC80 8000C080 24040008 */ li $a0, 8 -/* 00CC84 8000C084 0C01C327 */ jal func_80070C9C -/* 00CC88 8000C088 3405FFFF */ li $a1, 65535 -/* 00CC8C 8000C08C 3C018012 */ lui $at, %hi(D_8011ADCC) # $at, 0x8012 -/* 00CC90 8000C090 AC22ADCC */ sw $v0, %lo(D_8011ADCC)($at) -/* 00CC94 8000C094 24040400 */ li $a0, 1024 -/* 00CC98 8000C098 0C01C327 */ jal func_80070C9C -/* 00CC9C 8000C09C 3405FFFF */ li $a1, 65535 -/* 00CCA0 8000C0A0 3C018012 */ lui $at, %hi(D_8011AFF4) # $at, 0x8012 -/* 00CCA4 8000C0A4 AC22AFF4 */ sw $v0, %lo(D_8011AFF4)($at) -/* 00CCA8 8000C0A8 0C01DB16 */ jal func_80076C58 -/* 00CCAC 8000C0AC 24040023 */ li $a0, 35 -/* 00CCB0 8000C0B0 3C018012 */ lui $at, %hi(D_8011AEB8) # $at, 0x8012 -/* 00CCB4 8000C0B4 AC22AEB8 */ sw $v0, %lo(D_8011AEB8)($at) -/* 00CCB8 8000C0B8 0C01DBCC */ jal func_80076F30 -/* 00CCBC 8000C0BC 24040023 */ li $a0, 35 -/* 00CCC0 8000C0C0 3C048012 */ lui $a0, %hi(D_8011AEBC) # $a0, 0x8012 -/* 00CCC4 8000C0C4 00027043 */ sra $t6, $v0, 1 -/* 00CCC8 8000C0C8 25C3FFFF */ addiu $v1, $t6, -1 -/* 00CCCC 8000C0CC 2484AEBC */ addiu $a0, %lo(D_8011AEBC) # addiu $a0, $a0, -0x5144 -/* 00CCD0 8000C0D0 AC830000 */ sw $v1, ($a0) -/* 00CCD4 8000C0D4 3C058012 */ lui $a1, %hi(D_8011AEB8) # $a1, 0x8012 -/* 00CCD8 8000C0D8 8CA5AEB8 */ lw $a1, %lo(D_8011AEB8)($a1) -/* 00CCDC 8000C0DC 0003C040 */ sll $t8, $v1, 1 -/* 00CCE0 8000C0E0 00B8C821 */ addu $t9, $a1, $t8 -/* 00CCE4 8000C0E4 87280000 */ lh $t0, ($t9) -/* 00CCE8 8000C0E8 00000000 */ nop -/* 00CCEC 8000C0EC 15000008 */ bnez $t0, .L8000C110 -/* 00CCF0 8000C0F0 2469FFFF */ addiu $t1, $v1, -1 -.L8000C0F4: -/* 00CCF4 8000C0F4 00095040 */ sll $t2, $t1, 1 -/* 00CCF8 8000C0F8 00AA5821 */ addu $t3, $a1, $t2 -/* 00CCFC 8000C0FC AC890000 */ sw $t1, ($a0) -/* 00CD00 8000C100 856C0000 */ lh $t4, ($t3) -/* 00CD04 8000C104 01201825 */ move $v1, $t1 -/* 00CD08 8000C108 1180FFFA */ beqz $t4, .L8000C0F4 -/* 00CD0C 8000C10C 2469FFFF */ addiu $t1, $v1, -1 -.L8000C110: -/* 00CD10 8000C110 24040800 */ li $a0, 2048 -/* 00CD14 8000C114 0C01C327 */ jal func_80070C9C -/* 00CD18 8000C118 3405FFFF */ li $a1, 65535 -/* 00CD1C 8000C11C 3C018012 */ lui $at, %hi(D_8011AD58) # $at, 0x8012 -/* 00CD20 8000C120 AC22AD58 */ sw $v0, %lo(D_8011AD58)($at) -/* 00CD24 8000C124 0C01DB16 */ jal func_80076C58 -/* 00CD28 8000C128 24040021 */ li $a0, 33 -/* 00CD2C 8000C12C 3C058012 */ lui $a1, %hi(D_8011AD64) # $a1, 0x8012 -/* 00CD30 8000C130 3C068012 */ lui $a2, %hi(D_8011AD68) # $a2, 0x8012 -/* 00CD34 8000C134 24C6AD68 */ addiu $a2, %lo(D_8011AD68) # addiu $a2, $a2, -0x5298 -/* 00CD38 8000C138 24A5AD64 */ addiu $a1, %lo(D_8011AD64) # addiu $a1, $a1, -0x529c -/* 00CD3C 8000C13C 00006880 */ sll $t5, $zero, 2 -/* 00CD40 8000C140 ACA20000 */ sw $v0, ($a1) -/* 00CD44 8000C144 ACC00000 */ sw $zero, ($a2) -/* 00CD48 8000C148 004D7021 */ addu $t6, $v0, $t5 -/* 00CD4C 8000C14C 8DCF0000 */ lw $t7, ($t6) -/* 00CD50 8000C150 2407FFFF */ li $a3, -1 -/* 00CD54 8000C154 00402025 */ move $a0, $v0 -/* 00CD58 8000C158 10EF0009 */ beq $a3, $t7, .L8000C180 -/* 00CD5C 8000C15C 00001825 */ move $v1, $zero -/* 00CD60 8000C160 24780001 */ addiu $t8, $v1, 1 -.L8000C164: -/* 00CD64 8000C164 0018C880 */ sll $t9, $t8, 2 -/* 00CD68 8000C168 00994021 */ addu $t0, $a0, $t9 -/* 00CD6C 8000C16C ACD80000 */ sw $t8, ($a2) -/* 00CD70 8000C170 8D090000 */ lw $t1, ($t0) -/* 00CD74 8000C174 03001825 */ move $v1, $t8 -/* 00CD78 8000C178 14E9FFFA */ bne $a3, $t1, .L8000C164 -/* 00CD7C 8000C17C 24780001 */ addiu $t8, $v1, 1 -.L8000C180: -/* 00CD80 8000C180 246AFFFF */ addiu $t2, $v1, -1 -/* 00CD84 8000C184 ACCA0000 */ sw $t2, ($a2) -/* 00CD88 8000C188 000A2080 */ sll $a0, $t2, 2 -/* 00CD8C 8000C18C 0C01C327 */ jal func_80070C9C -/* 00CD90 8000C190 2405FFFF */ li $a1, -1 -/* 00CD94 8000C194 3C068012 */ lui $a2, %hi(D_8011AD68) # $a2, 0x8012 -/* 00CD98 8000C198 3C018012 */ lui $at, %hi(D_8011AE48) # $at, 0x8012 -/* 00CD9C 8000C19C AC22AE48 */ sw $v0, %lo(D_8011AE48)($at) -/* 00CDA0 8000C1A0 24C6AD68 */ addiu $a2, %lo(D_8011AD68) # addiu $a2, $a2, -0x5298 -/* 00CDA4 8000C1A4 8CC40000 */ lw $a0, ($a2) -/* 00CDA8 8000C1A8 0C01C327 */ jal func_80070C9C -/* 00CDAC 8000C1AC 2405FFFF */ li $a1, -1 -/* 00CDB0 8000C1B0 3C068012 */ lui $a2, %hi(D_8011AD68) # $a2, 0x8012 -/* 00CDB4 8000C1B4 24C6AD68 */ addiu $a2, %lo(D_8011AD68) # addiu $a2, $a2, -0x5298 -/* 00CDB8 8000C1B8 8CCC0000 */ lw $t4, ($a2) -/* 00CDBC 8000C1BC 3C048012 */ lui $a0, %hi(D_8011AE4C) # $a0, 0x8012 -/* 00CDC0 8000C1C0 2484AE4C */ addiu $a0, %lo(D_8011AE4C) # addiu $a0, $a0, -0x51b4 -/* 00CDC4 8000C1C4 AC820000 */ sw $v0, ($a0) -/* 00CDC8 8000C1C8 1980000A */ blez $t4, .L8000C1F4 -/* 00CDCC 8000C1CC 00001825 */ move $v1, $zero -.L8000C1D0: -/* 00CDD0 8000C1D0 8C8D0000 */ lw $t5, ($a0) -/* 00CDD4 8000C1D4 00000000 */ nop -/* 00CDD8 8000C1D8 01A37021 */ addu $t6, $t5, $v1 -/* 00CDDC 8000C1DC A1C00000 */ sb $zero, ($t6) -/* 00CDE0 8000C1E0 8CCF0000 */ lw $t7, ($a2) -/* 00CDE4 8000C1E4 24630001 */ addiu $v1, $v1, 1 -/* 00CDE8 8000C1E8 006F082A */ slt $at, $v1, $t7 -/* 00CDEC 8000C1EC 1420FFF8 */ bnez $at, .L8000C1D0 -/* 00CDF0 8000C1F0 00000000 */ nop -.L8000C1F4: -/* 00CDF4 8000C1F4 0C01DB16 */ jal func_80076C58 -/* 00CDF8 8000C1F8 2404000F */ li $a0, 15 -/* 00CDFC 8000C1FC 3C018012 */ lui $at, %hi(D_8011AD6C) # $at, 0x8012 -/* 00CE00 8000C200 AC22AD6C */ sw $v0, %lo(D_8011AD6C)($at) -/* 00CE04 8000C204 0C01DB16 */ jal func_80076C58 -/* 00CE08 8000C208 24040010 */ li $a0, 16 -/* 00CE0C 8000C20C 3C048012 */ lui $a0, %hi(D_8011ADA0) # $a0, 0x8012 -/* 00CE10 8000C210 3C058012 */ lui $a1, %hi(D_8011AD70) # $a1, 0x8012 -/* 00CE14 8000C214 24A5AD70 */ addiu $a1, %lo(D_8011AD70) # addiu $a1, $a1, -0x5290 -/* 00CE18 8000C218 2484ADA0 */ addiu $a0, %lo(D_8011ADA0) # addiu $a0, $a0, -0x5260 -/* 00CE1C 8000C21C 0000C080 */ sll $t8, $zero, 2 -/* 00CE20 8000C220 ACA20000 */ sw $v0, ($a1) -/* 00CE24 8000C224 AC800000 */ sw $zero, ($a0) -/* 00CE28 8000C228 0058C821 */ addu $t9, $v0, $t8 -/* 00CE2C 8000C22C 8F280000 */ lw $t0, ($t9) -/* 00CE30 8000C230 2407FFFF */ li $a3, -1 -/* 00CE34 8000C234 00403025 */ move $a2, $v0 -/* 00CE38 8000C238 10E80009 */ beq $a3, $t0, .L8000C260 -/* 00CE3C 8000C23C 00001825 */ move $v1, $zero -/* 00CE40 8000C240 24690001 */ addiu $t1, $v1, 1 -.L8000C244: -/* 00CE44 8000C244 00095080 */ sll $t2, $t1, 2 -/* 00CE48 8000C248 00CA5821 */ addu $t3, $a2, $t2 -/* 00CE4C 8000C24C AC890000 */ sw $t1, ($a0) -/* 00CE50 8000C250 8D6C0000 */ lw $t4, ($t3) -/* 00CE54 8000C254 01201825 */ move $v1, $t1 -/* 00CE58 8000C258 14ECFFFA */ bne $a3, $t4, .L8000C244 -/* 00CE5C 8000C25C 24690001 */ addiu $t1, $v1, 1 -.L8000C260: -/* 00CE60 8000C260 8CC20104 */ lw $v0, 0x104($a2) -/* 00CE64 8000C264 8CCF0108 */ lw $t7, 0x108($a2) -/* 00CE68 8000C268 3C0E8012 */ lui $t6, %hi(D_8011AD6C) # $t6, 0x8012 -/* 00CE6C 8000C26C 8DCEAD6C */ lw $t6, %lo(D_8011AD6C)($t6) -/* 00CE70 8000C270 01E22823 */ subu $a1, $t7, $v0 -/* 00CE74 8000C274 0005C080 */ sll $t8, $a1, 2 -/* 00CE78 8000C278 00026880 */ sll $t5, $v0, 2 -/* 00CE7C 8000C27C 03002825 */ move $a1, $t8 -/* 00CE80 8000C280 0C0030B6 */ jal func_8000C2D8 -/* 00CE84 8000C284 01AE2021 */ addu $a0, $t5, $t6 -/* 00CE88 8000C288 24040800 */ li $a0, 2048 -/* 00CE8C 8000C28C 0C01C327 */ jal func_80070C9C -/* 00CE90 8000C290 3405FFFF */ li $a1, 65535 -/* 00CE94 8000C294 3C018012 */ lui $at, %hi(D_8011AE58) # $at, 0x8012 -/* 00CE98 8000C298 AC22AE58 */ sw $v0, %lo(D_8011AE58)($at) -/* 00CE9C 8000C29C 3C018012 */ lui $at, %hi(D_8011ADC4) # $at, 0x8012 -/* 00CEA0 8000C2A0 A020ADC4 */ sb $zero, %lo(D_8011ADC4)($at) -/* 00CEA4 8000C2A4 3C018012 */ lui $at, %hi(D_8011AEF4) # $at, 0x8012 -/* 00CEA8 8000C2A8 A020AEF4 */ sb $zero, %lo(D_8011AEF4)($at) -/* 00CEAC 8000C2AC 3C018012 */ lui $at, %hi(D_8011AEF5) # $at, 0x8012 -/* 00CEB0 8000C2B0 A020AEF5 */ sb $zero, %lo(D_8011AEF5)($at) -/* 00CEB4 8000C2B4 3C014000 */ li $at, 0x40000000 # 2.000000 -/* 00CEB8 8000C2B8 44812000 */ mtc1 $at, $f4 -/* 00CEBC 8000C2BC 3C018012 */ lui $at, %hi(D_8011ADA8) # $at, 0x8012 -/* 00CEC0 8000C2C0 0C003118 */ jal func_8000C460 -/* 00CEC4 8000C2C4 E424ADA8 */ swc1 $f4, %lo(D_8011ADA8)($at) -/* 00CEC8 8000C2C8 8FBF001C */ lw $ra, 0x1c($sp) -/* 00CECC 8000C2CC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00CED0 8000C2D0 03E00008 */ jr $ra -/* 00CED4 8000C2D4 00000000 */ nop - diff --git a/asm/non_matchings/unknown_00BC20/func_8000C460.s b/asm/non_matchings/unknown_00BC20/func_8000C460.s deleted file mode 100644 index d8679f69..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8000C460.s +++ /dev/null @@ -1,110 +0,0 @@ -glabel func_8000C460 -/* 00D060 8000C460 24020001 */ li $v0, 1 -/* 00D064 8000C464 3C018012 */ lui $at, %hi(D_8011AD26) # $at, 0x8012 -/* 00D068 8000C468 A022AD26 */ sb $v0, %lo(D_8011AD26)($at) -/* 00D06C 8000C46C 3C018012 */ lui $at, %hi(D_8011AD5C) # $at, 0x8012 -/* 00D070 8000C470 AC20AD5C */ sw $zero, %lo(D_8011AD5C)($at) -/* 00D074 8000C474 3C018012 */ lui $at, %hi(D_8011AD60) # $at, 0x8012 -/* 00D078 8000C478 AC20AD60 */ sw $zero, %lo(D_8011AD60)($at) -/* 00D07C 8000C47C 3C018012 */ lui $at, %hi(D_8011AEC8) # $at, 0x8012 -/* 00D080 8000C480 AC20AEC8 */ sw $zero, %lo(D_8011AEC8)($at) -/* 00D084 8000C484 3C018012 */ lui $at, %hi(D_8011AE70) # $at, 0x8012 -/* 00D088 8000C488 AC20AE70 */ sw $zero, %lo(D_8011AE70)($at) -/* 00D08C 8000C48C 3C018012 */ lui $at, %hi(D_8011AED0) # $at, 0x8012 -/* 00D090 8000C490 AC20AED0 */ sw $zero, %lo(D_8011AED0)($at) -/* 00D094 8000C494 3C018012 */ lui $at, %hi(D_8011AED4) # $at, 0x8012 -/* 00D098 8000C498 AC20AED4 */ sw $zero, %lo(D_8011AED4)($at) -/* 00D09C 8000C49C 3C018012 */ lui $at, %hi(D_8011AEF0) # $at, 0x8012 -/* 00D0A0 8000C4A0 AC20AEF0 */ sw $zero, %lo(D_8011AEF0)($at) -/* 00D0A4 8000C4A4 3C018012 */ lui $at, %hi(D_8011AE78) # $at, 0x8012 -/* 00D0A8 8000C4A8 A420AE78 */ sh $zero, %lo(D_8011AE78)($at) -/* 00D0AC 8000C4AC 3C058012 */ lui $a1, %hi(D_8011AD22) # $a1, 0x8012 -/* 00D0B0 8000C4B0 3C018012 */ lui $at, %hi(D_8011AD21) # $at, 0x8012 -/* 00D0B4 8000C4B4 24A5AD22 */ addiu $a1, %lo(D_8011AD22) # addiu $a1, $a1, -0x52de -/* 00D0B8 8000C4B8 A020AD21 */ sb $zero, %lo(D_8011AD21)($at) -/* 00D0BC 8000C4BC 3C038012 */ lui $v1, %hi(D_8011AF04) # $v1, 0x8012 -/* 00D0C0 8000C4C0 A0A00000 */ sb $zero, ($a1) -/* 00D0C4 8000C4C4 A0A00001 */ sb $zero, 1($a1) -/* 00D0C8 8000C4C8 2463AF04 */ addiu $v1, %lo(D_8011AF04) # addiu $v1, $v1, -0x50fc -/* 00D0CC 8000C4CC 00002025 */ move $a0, $zero -.L8000C4D0: -/* 00D0D0 8000C4D0 8C6E0000 */ lw $t6, ($v1) -/* 00D0D4 8000C4D4 00000000 */ nop -/* 00D0D8 8000C4D8 01C47821 */ addu $t7, $t6, $a0 -/* 00D0DC 8000C4DC 24840004 */ addiu $a0, $a0, 4 -/* 00D0E0 8000C4E0 28810200 */ slti $at, $a0, 0x200 -/* 00D0E4 8000C4E4 1420FFFA */ bnez $at, .L8000C4D0 -/* 00D0E8 8000C4E8 ADE00000 */ sw $zero, ($t7) -/* 00D0EC 8000C4EC 3C048012 */ lui $a0, %hi(D_8011ADCC) # $a0, 0x8012 -/* 00D0F0 8000C4F0 2484ADCC */ addiu $a0, %lo(D_8011ADCC) # addiu $a0, $a0, -0x5234 -/* 00D0F4 8000C4F4 00001825 */ move $v1, $zero -.L8000C4F8: -/* 00D0F8 8000C4F8 8C980000 */ lw $t8, ($a0) -/* 00D0FC 8000C4FC 00000000 */ nop -/* 00D100 8000C500 0303C821 */ addu $t9, $t8, $v1 -/* 00D104 8000C504 24630001 */ addiu $v1, $v1, 1 -/* 00D108 8000C508 28610008 */ slti $at, $v1, 8 -/* 00D10C 8000C50C 1420FFFA */ bnez $at, .L8000C4F8 -/* 00D110 8000C510 A3200000 */ sb $zero, ($t9) -/* 00D114 8000C514 3C038012 */ lui $v1, %hi(D_8011AFF4) # $v1, 0x8012 -/* 00D118 8000C518 2463AFF4 */ addiu $v1, %lo(D_8011AFF4) # addiu $v1, $v1, -0x500c -/* 00D11C 8000C51C 00002025 */ move $a0, $zero -/* 00D120 8000C520 24050400 */ li $a1, 1024 -.L8000C524: -/* 00D124 8000C524 8C680000 */ lw $t0, ($v1) -/* 00D128 8000C528 00000000 */ nop -/* 00D12C 8000C52C 01044821 */ addu $t1, $t0, $a0 -/* 00D130 8000C530 AD200000 */ sw $zero, ($t1) -/* 00D134 8000C534 8C6A0000 */ lw $t2, ($v1) -/* 00D138 8000C538 00000000 */ nop -/* 00D13C 8000C53C 01445821 */ addu $t3, $t2, $a0 -/* 00D140 8000C540 AD600040 */ sw $zero, 0x40($t3) -/* 00D144 8000C544 8C6C0000 */ lw $t4, ($v1) -/* 00D148 8000C548 00000000 */ nop -/* 00D14C 8000C54C 01846821 */ addu $t5, $t4, $a0 -/* 00D150 8000C550 ADA00080 */ sw $zero, 0x80($t5) -/* 00D154 8000C554 8C6E0000 */ lw $t6, ($v1) -/* 00D158 8000C558 00000000 */ nop -/* 00D15C 8000C55C 01C47821 */ addu $t7, $t6, $a0 -/* 00D160 8000C560 24840100 */ addiu $a0, $a0, 0x100 -/* 00D164 8000C564 1485FFEF */ bne $a0, $a1, .L8000C524 -/* 00D168 8000C568 ADE000C0 */ sw $zero, 0xc0($t7) -/* 00D16C 8000C56C 3C038012 */ lui $v1, %hi(D_8011AF08) # $v1, 0x8012 -/* 00D170 8000C570 2463AF08 */ addiu $v1, %lo(D_8011AF08) # addiu $v1, $v1, -0x50f8 -/* 00D174 8000C574 240400FF */ li $a0, 255 -/* 00D178 8000C578 AC640000 */ sw $a0, ($v1) -/* 00D17C 8000C57C AC640004 */ sw $a0, 4($v1) -/* 00D180 8000C580 3C018012 */ lui $at, %hi(D_8011AE5C) # $at, 0x8012 -/* 00D184 8000C584 AC20AE5C */ sw $zero, %lo(D_8011AE5C)($at) -/* 00D188 8000C588 3C018012 */ lui $at, %hi(D_8011AE60) # $at, 0x8012 -/* 00D18C 8000C58C AC20AE60 */ sw $zero, %lo(D_8011AE60)($at) -/* 00D190 8000C590 3C018012 */ lui $at, %hi(D_8011AE64) # $at, 0x8012 -/* 00D194 8000C594 AC20AE64 */ sw $zero, %lo(D_8011AE64)($at) -/* 00D198 8000C598 3C018012 */ lui $at, %hi(D_8011AE88) # $at, 0x8012 -/* 00D19C 8000C59C AC20AE88 */ sw $zero, %lo(D_8011AE88)($at) -/* 00D1A0 8000C5A0 3C018012 */ lui $at, %hi(D_8011ADD4) # $at, 0x8012 -/* 00D1A4 8000C5A4 A020ADD4 */ sb $zero, %lo(D_8011ADD4)($at) -/* 00D1A8 8000C5A8 3C018012 */ lui $at, %hi(D_8011AE7A) # $at, 0x8012 -/* 00D1AC 8000C5AC A420AE7A */ sh $zero, %lo(D_8011AE7A)($at) -/* 00D1B0 8000C5B0 3C018012 */ lui $at, %hi(D_8011AE7E) # $at, 0x8012 -/* 00D1B4 8000C5B4 A022AE7E */ sb $v0, %lo(D_8011AE7E)($at) -/* 00D1B8 8000C5B8 3C018012 */ lui $at, %hi(D_8011AE7C) # $at, 0x8012 -/* 00D1BC 8000C5BC A420AE7C */ sh $zero, %lo(D_8011AE7C)($at) -/* 00D1C0 8000C5C0 3C018012 */ lui $at, %hi(D_8011AD44) # $at, 0x8012 -/* 00D1C4 8000C5C4 A020AD44 */ sb $zero, %lo(D_8011AD44)($at) -/* 00D1C8 8000C5C8 3C018012 */ lui $at, %hi(D_8011AEF6) # $at, 0x8012 -/* 00D1CC 8000C5CC A020AEF6 */ sb $zero, %lo(D_8011AEF6)($at) -/* 00D1D0 8000C5D0 3C018012 */ lui $at, %hi(D_8011AEF7) # $at, 0x8012 -/* 00D1D4 8000C5D4 A020AEF7 */ sb $zero, %lo(D_8011AEF7)($at) -/* 00D1D8 8000C5D8 3C018012 */ lui $at, %hi(D_8011AF60) # $at, 0x8012 -/* 00D1DC 8000C5DC AC20AF60 */ sw $zero, %lo(D_8011AF60)($at) -/* 00D1E0 8000C5E0 3C018012 */ lui $at, %hi(D_8011AE00) # $at, 0x8012 -/* 00D1E4 8000C5E4 A020AE00 */ sb $zero, %lo(D_8011AE00)($at) -/* 00D1E8 8000C5E8 3C018012 */ lui $at, %hi(D_8011AE01) # $at, 0x8012 -/* 00D1EC 8000C5EC A022AE01 */ sb $v0, %lo(D_8011AE01)($at) -/* 00D1F0 8000C5F0 3C018012 */ lui $at, %hi(D_8011AD53) # $at, 0x8012 -/* 00D1F4 8000C5F4 A020AD53 */ sb $zero, %lo(D_8011AD53)($at) -/* 00D1F8 8000C5F8 3C018012 */ lui $at, 0x8012 -/* 00D1FC 8000C5FC 03E00008 */ jr $ra -/* 00D200 8000C600 A020ADD5 */ sb $zero, -0x522b($at) - diff --git a/asm/non_matchings/unknown_00BC20/func_8000C604.s b/asm/non_matchings/unknown_00BC20/func_8000C604.s deleted file mode 100644 index eefa40a1..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8000C604.s +++ /dev/null @@ -1,75 +0,0 @@ -glabel func_8000C604 -/* 00D204 8000C604 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 00D208 8000C608 AFBF0024 */ sw $ra, 0x24($sp) -/* 00D20C 8000C60C AFB30020 */ sw $s3, 0x20($sp) -/* 00D210 8000C610 AFB2001C */ sw $s2, 0x1c($sp) -/* 00D214 8000C614 AFB10018 */ sw $s1, 0x18($sp) -/* 00D218 8000C618 0C0166D3 */ jal func_80059B4C -/* 00D21C 8000C61C AFB00014 */ sw $s0, 0x14($sp) -/* 00D220 8000C620 3C10800E */ lui $s0, %hi(D_800DC71C) # $s0, 0x800e -/* 00D224 8000C624 3C01800E */ lui $at, %hi(D_800DC748) # $at, 0x800e -/* 00D228 8000C628 2610C71C */ addiu $s0, %lo(D_800DC71C) # addiu $s0, $s0, -0x38e4 -/* 00D22C 8000C62C A020C748 */ sb $zero, %lo(D_800DC748)($at) -/* 00D230 8000C630 820E0000 */ lb $t6, ($s0) -/* 00D234 8000C634 00000000 */ nop -/* 00D238 8000C638 11C00003 */ beqz $t6, .L8000C648 -/* 00D23C 8000C63C 00000000 */ nop -/* 00D240 8000C640 0C01C8A6 */ jal func_80072298 -/* 00D244 8000C644 24040001 */ li $a0, 1 -.L8000C648: -/* 00D248 8000C648 3C11800E */ lui $s1, %hi(D_800DC744) # $s1, 0x800e -/* 00D24C 8000C64C 2631C744 */ addiu $s1, %lo(D_800DC744) # addiu $s1, $s1, -0x38bc -/* 00D250 8000C650 822F0000 */ lb $t7, ($s1) -/* 00D254 8000C654 A2000000 */ sb $zero, ($s0) -/* 00D258 8000C658 11E00007 */ beqz $t7, .L8000C678 -/* 00D25C 8000C65C 00000000 */ nop -/* 00D260 8000C660 0C027B20 */ jal is_in_two_player_adventure -/* 00D264 8000C664 00000000 */ nop -/* 00D268 8000C668 10400003 */ beqz $v0, .L8000C678 -/* 00D26C 8000C66C 00000000 */ nop -/* 00D270 8000C670 0C01BCE6 */ jal func_8006F398 -/* 00D274 8000C674 A2200000 */ sb $zero, ($s1) -.L8000C678: -/* 00D278 8000C678 0C004013 */ jal func_8001004C -/* 00D27C 8000C67C 00000000 */ nop -/* 00D280 8000C680 3C128012 */ lui $s2, %hi(D_8011AE5C) # $s2, 0x8012 -/* 00D284 8000C684 8E52AE5C */ lw $s2, %lo(D_8011AE5C)($s2) -/* 00D288 8000C688 00008025 */ move $s0, $zero -/* 00D28C 8000C68C 1A40000C */ blez $s2, .L8000C6C0 -/* 00D290 8000C690 00008825 */ move $s1, $zero -/* 00D294 8000C694 3C138012 */ lui $s3, %hi(D_8011AE58) # $s3, 0x8012 -/* 00D298 8000C698 2673AE58 */ addiu $s3, %lo(D_8011AE58) # addiu $s3, $s3, -0x51a8 -.L8000C69C: -/* 00D29C 8000C69C 8E780000 */ lw $t8, ($s3) -/* 00D2A0 8000C6A0 24050001 */ li $a1, 1 -/* 00D2A4 8000C6A4 0311C821 */ addu $t9, $t8, $s1 -/* 00D2A8 8000C6A8 8F240000 */ lw $a0, ($t9) -/* 00D2AC 8000C6AC 0C00406B */ jal func_800101AC -/* 00D2B0 8000C6B0 00000000 */ nop -/* 00D2B4 8000C6B4 26100001 */ addiu $s0, $s0, 1 -/* 00D2B8 8000C6B8 1612FFF8 */ bne $s0, $s2, .L8000C69C -/* 00D2BC 8000C6BC 26310004 */ addiu $s1, $s1, 4 -.L8000C6C0: -/* 00D2C0 8000C6C0 3C018012 */ lui $at, %hi(D_8011AEC8) # $at, 0x8012 -/* 00D2C4 8000C6C4 AC20AEC8 */ sw $zero, %lo(D_8011AEC8)($at) -/* 00D2C8 8000C6C8 3C018012 */ lui $at, %hi(D_8011AE5C) # $at, 0x8012 -/* 00D2CC 8000C6CC AC20AE5C */ sw $zero, %lo(D_8011AE5C)($at) -/* 00D2D0 8000C6D0 3C018012 */ lui $at, %hi(D_8011AE60) # $at, 0x8012 -/* 00D2D4 8000C6D4 0C003118 */ jal func_8000C460 -/* 00D2D8 8000C6D8 AC20AE60 */ sw $zero, %lo(D_8011AE60)($at) -/* 00D2DC 8000C6DC 3C108012 */ lui $s0, %hi(D_8011AEB0) # $s0, 0x8012 -/* 00D2E0 8000C6E0 2610AEB0 */ addiu $s0, %lo(D_8011AEB0) # addiu $s0, $s0, -0x5150 -/* 00D2E4 8000C6E4 8E040000 */ lw $a0, ($s0) -/* 00D2E8 8000C6E8 0C01C450 */ jal func_80071140 -/* 00D2EC 8000C6EC 00000000 */ nop -/* 00D2F0 8000C6F0 8E040004 */ lw $a0, 4($s0) -/* 00D2F4 8000C6F4 0C01C450 */ jal func_80071140 -/* 00D2F8 8000C6F8 00000000 */ nop -/* 00D2FC 8000C6FC 8FBF0024 */ lw $ra, 0x24($sp) -/* 00D300 8000C700 8FB00014 */ lw $s0, 0x14($sp) -/* 00D304 8000C704 8FB10018 */ lw $s1, 0x18($sp) -/* 00D308 8000C708 8FB2001C */ lw $s2, 0x1c($sp) -/* 00D30C 8000C70C 8FB30020 */ lw $s3, 0x20($sp) -/* 00D310 8000C710 03E00008 */ jr $ra -/* 00D314 8000C714 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_00BC20/func_8000CC20.s b/asm/non_matchings/unknown_00BC20/func_8000CC20.s deleted file mode 100644 index b6f6218f..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8000CC20.s +++ /dev/null @@ -1,28 +0,0 @@ -glabel func_8000CC20 -/* 00D820 8000CC20 3C058012 */ lui $a1, %hi(D_8011AE08) # $a1, 0x8012 -/* 00D824 8000CC24 2403FFFF */ li $v1, -1 -/* 00D828 8000CC28 24A5AE08 */ addiu $a1, %lo(D_8011AE08) # addiu $a1, $a1, -0x51f8 -/* 00D82C 8000CC2C 00001025 */ move $v0, $zero -/* 00D830 8000CC30 00027080 */ sll $t6, $v0, 2 -.L8000CC34: -/* 00D834 8000CC34 00AE7821 */ addu $t7, $a1, $t6 -/* 00D838 8000CC38 8DF80000 */ lw $t8, ($t7) -/* 00D83C 8000CC3C 00000000 */ nop -/* 00D840 8000CC40 17000003 */ bnez $t8, .L8000CC50 -/* 00D844 8000CC44 00000000 */ nop -/* 00D848 8000CC48 00401825 */ move $v1, $v0 -/* 00D84C 8000CC4C 24020010 */ li $v0, 16 -.L8000CC50: -/* 00D850 8000CC50 24420001 */ addiu $v0, $v0, 1 -/* 00D854 8000CC54 28410010 */ slti $at, $v0, 0x10 -/* 00D858 8000CC58 1420FFF6 */ bnez $at, .L8000CC34 -/* 00D85C 8000CC5C 00027080 */ sll $t6, $v0, 2 -/* 00D860 8000CC60 2401FFFF */ li $at, -1 -/* 00D864 8000CC64 10610003 */ beq $v1, $at, .L8000CC74 -/* 00D868 8000CC68 0003C880 */ sll $t9, $v1, 2 -/* 00D86C 8000CC6C 00B94021 */ addu $t0, $a1, $t9 -/* 00D870 8000CC70 AD040000 */ sw $a0, ($t0) -.L8000CC74: -/* 00D874 8000CC74 03E00008 */ jr $ra -/* 00D878 8000CC78 00601025 */ move $v0, $v1 - diff --git a/asm/non_matchings/unknown_00BC20/func_8000E1EC.s b/asm/non_matchings/unknown_00BC20/func_8000E1EC.s deleted file mode 100644 index f15d121b..00000000 --- a/asm/non_matchings/unknown_00BC20/func_8000E1EC.s +++ /dev/null @@ -1,52 +0,0 @@ -glabel func_8000E1EC -/* 00EDEC 8000E1EC 3C018012 */ lui $at, %hi(D_8011AD40) # $at, 0x8012 -/* 00EDF0 8000E1F0 AC24AD40 */ sw $a0, %lo(D_8011AD40)($at) -/* 00EDF4 8000E1F4 3C018012 */ lui $at, %hi(D_8011AD44) # $at, 0x8012 -/* 00EDF8 8000E1F8 240E0004 */ li $t6, 4 -/* 00EDFC 8000E1FC A02EAD44 */ sb $t6, %lo(D_8011AD44)($at) -/* 00EE00 8000E200 444FF800 */ cfc1 $t7, $31 -/* 00EE04 8000E204 3C018012 */ lui $at, %hi(D_8011AD45) # $at, 0x8012 -/* 00EE08 8000E208 A025AD45 */ sb $a1, %lo(D_8011AD45)($at) -/* 00EE0C 8000E20C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 00EE10 8000E210 35E10003 */ ori $at, $t7, 3 -/* 00EE14 8000E214 AFBF0014 */ sw $ra, 0x14($sp) -/* 00EE18 8000E218 38210002 */ xori $at, $at, 2 -/* 00EE1C 8000E21C 44C1F800 */ ctc1 $at, $31 -/* 00EE20 8000E220 C484000C */ lwc1 $f4, 0xc($a0) -/* 00EE24 8000E224 3C018012 */ lui $at, %hi(D_8011AD46) # $at, 0x8012 -/* 00EE28 8000E228 460021A4 */ cvt.w.s $f6, $f4 -/* 00EE2C 8000E22C 44CFF800 */ ctc1 $t7, $31 -/* 00EE30 8000E230 44183000 */ mfc1 $t8, $f6 -/* 00EE34 8000E234 00000000 */ nop -/* 00EE38 8000E238 4459F800 */ cfc1 $t9, $31 -/* 00EE3C 8000E23C A438AD46 */ sh $t8, %lo(D_8011AD46)($at) -/* 00EE40 8000E240 37210003 */ ori $at, $t9, 3 -/* 00EE44 8000E244 38210002 */ xori $at, $at, 2 -/* 00EE48 8000E248 44C1F800 */ ctc1 $at, $31 -/* 00EE4C 8000E24C C4880010 */ lwc1 $f8, 0x10($a0) -/* 00EE50 8000E250 3C018012 */ lui $at, %hi(D_8011AD48) # $at, 0x8012 -/* 00EE54 8000E254 460042A4 */ cvt.w.s $f10, $f8 -/* 00EE58 8000E258 44D9F800 */ ctc1 $t9, $31 -/* 00EE5C 8000E25C 44085000 */ mfc1 $t0, $f10 -/* 00EE60 8000E260 00000000 */ nop -/* 00EE64 8000E264 4449F800 */ cfc1 $t1, $31 -/* 00EE68 8000E268 A428AD48 */ sh $t0, %lo(D_8011AD48)($at) -/* 00EE6C 8000E26C 35210003 */ ori $at, $t1, 3 -/* 00EE70 8000E270 38210002 */ xori $at, $at, 2 -/* 00EE74 8000E274 44C1F800 */ ctc1 $at, $31 -/* 00EE78 8000E278 C4900014 */ lwc1 $f16, 0x14($a0) -/* 00EE7C 8000E27C 3C018012 */ lui $at, %hi(D_8011AD4A) # $at, 0x8012 -/* 00EE80 8000E280 460084A4 */ cvt.w.s $f18, $f16 -/* 00EE84 8000E284 440A9000 */ mfc1 $t2, $f18 -/* 00EE88 8000E288 44C9F800 */ ctc1 $t1, $31 -/* 00EE8C 8000E28C A42AAD4A */ sh $t2, %lo(D_8011AD4A)($at) -/* 00EE90 8000E290 848B0000 */ lh $t3, ($a0) -/* 00EE94 8000E294 3C018012 */ lui $at, %hi(D_8011AD4C) # $at, 0x8012 -/* 00EE98 8000E298 0C003FEE */ jal func_8000FFB8 -/* 00EE9C 8000E29C A42BAD4C */ sh $t3, %lo(D_8011AD4C)($at) -/* 00EEA0 8000E2A0 8FBF0014 */ lw $ra, 0x14($sp) -/* 00EEA4 8000E2A4 3C018012 */ lui $at, %hi(D_8011AEF0) # $at, 0x8012 -/* 00EEA8 8000E2A8 AC20AEF0 */ sw $zero, %lo(D_8011AEF0)($at) -/* 00EEAC 8000E2AC 03E00008 */ jr $ra -/* 00EEB0 8000E2B0 27BD0018 */ addiu $sp, $sp, 0x18 - diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index d3ac8ba3..e6769fe7 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -17,51 +17,91 @@ extern u8 D_800DC730; extern u8 D_800DC738; extern s8 D_800DC73C; extern s8 D_800DC740; +extern s8 D_800DC744; extern s8 D_800DC748; extern s32 D_800DC760; extern s8 D_800DC848; +extern f32 D_800E514C; +extern f32 D_800E5150; extern s16 D_8011AC20[12]; extern s16 D_8011AD4E; extern s8 D_8011AD20[4]; extern s8 D_8011AD21; -extern s8 D_8011AD22; +extern s8 D_8011AD22[2]; extern s8 D_8011AD25; +extern s8 D_8011AD26; extern s32 D_8011AD34; extern s8 D_8011AD3C; extern s8 D_8011AD3D; + +typedef struct unk8011AD40 { + s16 unk0; + s8 pad2[0xA]; + f32 unkC; + f32 unk10; + f32 unk14; +} unk8011AD40; + +extern unk8011AD40 *D_8011AD40; +extern s8 D_8011AD44; +extern s8 D_8011AD45; +extern s16 D_8011AD46; +extern s16 D_8011AD48; +extern s16 D_8011AD4A; +extern s16 D_8011AD4C; extern s8 D_8011AD50; extern s8 D_8011AD51; extern s8 D_8011AD52; extern s8 D_8011AD53; +extern s32 *D_8011AD58; +extern s32 D_8011AD5C; +extern s32 D_8011AD60; +extern s32 *D_8011AD64; +extern s32 D_8011AD68; extern s32 *D_8011AD6C; extern s32 *D_8011AD70; extern Gfx *D_8011AD78[9]; extern s32 D_8011ADA0; extern s16 D_8011ADA4; +extern f32 D_8011ADA8; extern s32 D_8011ADAC; + extern s32 D_8011ADB0; extern s32 D_8011ADB8; extern s32 D_8011ADBC; +extern u8 D_8011ADC4; extern s32 D_8011ADC8; -extern s8 *D_8011ADCC[8]; +extern s8 (*D_8011ADCC)[8]; extern f32 D_8011ADD0; extern s8 D_8011ADD4; extern s8 D_8011ADD5; +extern s8 D_8011AE00; +extern s8 D_8011AE01; extern s8 D_8011AE02; extern s8 D_8011AE03; u32 *D_8011AE08[16]; extern s32 (*D_8011AE48)[8]; // Unknown number of entries. extern u8 (*D_8011AE4C)[8]; // Unknown number of entries. -extern u32 *D_8011AE58[64]; // Not sure about the number of elements +extern u32 (*D_8011AE58)[64]; // Not sure about the number of elements extern s32 D_8011AE5C; extern s32 D_8011AE60; extern s32 D_8011AE64; +extern s32 *D_8011AE68; +extern s32 *D_8011AE6C; +extern s32 D_8011AE70; +extern s32 *D_8011AE74; extern s16 D_8011AE78; extern s16 D_8011AE7A; -extern u8 D_8011AE7E; +extern s16 D_8011AE7C; +extern s8 D_8011AE7E; extern s16 D_8011AE82; -extern u8 D_8011AEF7; +extern s32 D_8011AE88; +extern s32 D_8011AEB0[2]; +extern s16 *D_8011AEB8; +extern s32 D_8011AEBC; +extern s32 *D_8011AEC4; +extern s32 D_8011AEC8; /* Size: 0x3C bytes */ typedef struct unknown8011AECC { @@ -72,22 +112,26 @@ typedef struct unknown8011AECC { extern unknown8011AECC* D_8011AECC; // Array of structs, unknown number of members extern s32 D_8011AED0; +extern s32 D_8011AED4; extern s16 D_8011AED8; -extern u32 *D_8011AEDC[64]; // Not sure about the number of elements +extern u32 (*D_8011AEDC)[64]; // Not sure about the number of elements extern s32 D_8011AEE0; extern Player *(*D_8011AEE4)[8]; -extern s32 D_8011AEE8; -extern s32 D_8011AEEC; +extern s32 *D_8011AEE8; +extern s32 *D_8011AEEC; extern s32 D_8011AEF0; extern u8 D_8011AEF4; +extern u8 D_8011AEF5; extern u8 D_8011AEF6; -extern u32* D_8011AF04[64]; // Not sure about the number of elements +extern u8 D_8011AEF7; +extern u32 (*D_8011AF04)[64]; // Not sure about the number of elements extern s32 D_8011AF08[2]; extern s32 D_8011AF10; +extern s32 D_8011AF60; /* Size: 0x40 bytes */ typedef struct unk800179D0 { - s32 unk00; + s32 unk0; u32* unk04; u32* unk08; f32 unk0C[12]; @@ -96,7 +140,7 @@ typedef struct unk800179D0 { /* Unknown Size */ typedef struct unk800179D0_2 { - unk800179D0* unk00; + unk800179D0* unk0; s32 unk04; } unk800179D0_2; @@ -107,6 +151,12 @@ extern s16 D_8011D5AC; extern s32 osTvType; +void func_8000C460(void); + +void *func_80070B78(s32, u32); +void *func_80070C9C(s32, u32); +s32 *func_80076C58(s32); +void func_8001D258(f32, f32, s32, s32, s32); GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B020.s") GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B290.s") @@ -124,10 +174,156 @@ u32* func_8000BF44(s32 arg0) { return D_8011B020[arg0]; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000BF8C.s") +void func_8000C2D8(u8 *arg0, s32 length); + +void func_8000BF8C(void) { + s32 i; + + func_8001D258(D_800E514C, D_800E5150, 0, -0x2000, 0); + D_8011AE68 = (s32*)func_80070B78(0x15800, 0x200); + D_8011AEC4 = (s32*)func_80070C9C(0x320, 0xFFFF); + D_8011AE6C = (s32*)func_80070C9C(0x50, 0xFFFF); + D_8011AE74 = (s32*)func_80070C9C(0x200, 0xFFFF); + D_8011AECC = (unknown8011AECC*)func_80070C9C(0xE10, 0xFFFF); + D_8011AEDC = (s32*)func_80070C9C(0x50, 0xFFFF); + D_8011AEE4 = (s32*)func_80070C9C(0x28, 0xFFFF); + D_8011AEEC = (s32*)func_80070C9C(0x28, 0xFFFF); + D_8011AEE8 = (s32*)func_80070C9C(0x28, 0xFFFF); + D_8011AF04 = (s32*)func_80070C9C(0x200, 0xFFFF); + D_8011ADCC = (s32*)func_80070C9C(8, 0xFFFF); + D_8011AFF4.unk0 = (s32*)func_80070C9C(0x400, 0xFFFF); + D_8011AEB8 = (s32*)func_80076C58(0x23); + D_8011AEBC = (func_80076F30(0x23) >> 1) - 1; + while (D_8011AEB8[D_8011AEBC] == 0) { + D_8011AEBC--; + } + D_8011AD58 = (s32*)func_80070C9C(0x800, 0xFFFF); + D_8011AD64 = func_80076C58(0x21); + D_8011AD68 = 0; + while (-1 != D_8011AD64[D_8011AD68]) { + D_8011AD68++; + } + D_8011AD68--; + D_8011AE48 = (s32*)func_80070C9C(D_8011AD68 << 2, 0xFFFFFFFF); + D_8011AE4C = (s32*)func_80070C9C(D_8011AD68, 0xFFFFFFFF); + + for (i = 0; i < D_8011AD68; i++) { + (*D_8011AE4C)[i] = 0; + } + + D_8011AD6C = func_80076C58(0xF); + D_8011AD70 = func_80076C58(0x10); + D_8011ADA0 = 0; + while (-1 != D_8011AD70[D_8011ADA0]) { + D_8011ADA0++; + } + func_8000C2D8(&D_8011AD6C[D_8011AD70[65]], (D_8011AD70[66] - D_8011AD70[65]) * 4); + D_8011AE58 = (u32**)func_80070C9C(0x800, 0xFFFF); + D_8011ADC4 = 0; + D_8011AEF4 = 0; + D_8011AEF5 = 0; + D_8011ADA8 = 2.0f; + func_8000C460(); +} + +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000C2D8.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000C460.s") -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000C604.s") +#else +// Decrypts cheats +void func_8000C2D8(u8 *arg0, s32 length) { + u8 sp3; + u8 sp2; + u8 sp1; + u8 sp0; + //s32 numWords; + s32 i; + + //numWords = length / 4; + + for (i = 0; i < length; i++) { + sp0 = ((arg0[i + 3] & 0xC0) >> 6) | (arg0[i + 0] & 0xC0) | ((arg0[i + 1] & 0xC0) >> 2) | ((arg0[i + 2] & 0xC0) >> 4); + sp1 = ((arg0[i + 3] & 0x30) >> 4) | ((arg0[i + 0] & 0x30) << 2) | (arg0[i + 1] & 0x30) | ((arg0[i + 2] & 0x30) >> 2); + sp2 = ((arg0[i + 3] & 0xC) >> 2) | ((arg0[i + 0] & 0xC) << 4) | ((arg0[i + 1] & 0xC) << 2) | (arg0[i + 2] & 0xC); + sp3 = (arg0[i + 3] & 3) | (arg0[i + 0] << 6) | ((arg0[i + 1] & 3) << 4) | ((arg0[i + 2] & 3) << 2); + arg0[i + 0] = ((sp0 & 0x55) << 1) | ((sp0 & 0xAA) >> 1); + arg0[i + 1] = ((sp1 & 0x55) << 1) | ((sp1 & 0xAA) >> 1); + arg0[i + 2] = ((sp2 & 0x55) << 1) | ((sp2 & 0xAA) >> 1); + arg0[i + 3] = ((sp3 & 0x55) << 1) | ((sp3 & 0xAA) >> 1); + } +} +#endif + +void func_8000C460(void) { + s32 i; + + D_8011AD26 = 1; + D_8011AD5C = 0; + D_8011AD60 = 0; + D_8011AEC8 = 0; + D_8011AE70 = 0; + D_8011AED0 = 0; + D_8011AED4 = 0; + D_8011AEF0 = 0; + D_8011AE78 = 0; + D_8011AD21 = 0; + D_8011AD22[0] = 0; + D_8011AD22[1] = 0; + + for (i = 0; i < 0x80; i++) { + (*D_8011AF04)[i] = 0; + } + for (i = 0; i < 8; i++) { + (*D_8011ADCC)[i] = 0; + } + for (i = 0; i < 0x10; i++) { + D_8011AFF4.unk0[i].unk0 = 0; + } + + D_8011AF08[0] = 0xFF; + D_8011AF08[1] = 0xFF; + D_8011AE5C = 0; + D_8011AE60 = 0; + D_8011AE64 = 0; + D_8011AE88 = 0; + D_8011ADD4 = 0; + D_8011AE7A = 0; + D_8011AE7E = 1; + D_8011AE7C = 0; + D_8011AD44 = 0; + D_8011AEF6 = 0; + D_8011AEF7 = 0; + D_8011AF60 = 0; + D_8011AE00 = 0; + D_8011AE01 = 1; + D_8011AD53 = 0; + D_8011ADD5 = 0; +} + +void func_8000C604(void) { + s32 i, len; + func_80059B4C(); + D_800DC748 = 0; + if (D_800DC71C != 0) { + func_80072298(1); + } + D_800DC71C = 0; + if (D_800DC744 && is_in_two_player_adventure()) { + D_800DC744 = 0; + func_8006F398(); + } + func_8001004C(); + len = D_8011AE5C; + for (i = 0; i < len; i++) { + func_800101AC((*D_8011AE58)[i], 1); + } + D_8011AEC8 = 0; + D_8011AE5C = 0; + D_8011AE60 = 0; + func_8000C460(); + func_80071140(D_8011AEB0[0]); + func_80071140(D_8011AEB0[1]); +} + GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000C718.s") void func_8000C844(s32 arg0) { @@ -173,8 +369,27 @@ void func_8000CBF0(u32 *arg0, s32 arg1) { } #endif -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000CC20.s") +s32 func_8000CC20(u32 *arg0) { + s32 i; + s32 phi_v1; + + phi_v1 = -1; + for(i = 0; i < 0x10; i++){ + if (D_8011AE08[i] == 0) { + phi_v1 = i; + i = 0x10; + } + } + if (phi_v1 != -1) { + D_8011AE08[phi_v1] = arg0; + } + return phi_v1; +} + +// Has a jump table GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000CC7C.s") + +// Has a jump table GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E0B0.s") void func_8000E128(void) { @@ -220,7 +435,18 @@ s8 func_8000E1DC() { return D_8011AE03; } -GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E1EC.s") +void func_8000E1EC(unk8011AD40 *arg0, s32 arg1) { + D_8011AD40 = arg0; + D_8011AD44 = 4; + D_8011AD45 = arg1; + D_8011AD46 = arg0->unkC; + D_8011AD48 = arg0->unk10; + D_8011AD4A = arg0->unk14; + D_8011AD4C = arg0->unk0; + func_8000FFB8(); + D_8011AEF0 = 0; +} + GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000E2B4.s") void func_8000E4BC(s32 arg0) { @@ -237,13 +463,13 @@ u32 func_8000E948(s32 arg0) { if (arg0 < 0 || arg0 >= D_8011AE5C) { return 0; } - return D_8011AE58[0][arg0]; + return (*D_8011AE58)[arg0]; } u32 *func_8000E988(s32 *arg0, s32 *arg1) { *arg0 = D_8011AE60; *arg1 = D_8011AE5C; - return D_8011AE58[0]; + return *D_8011AE58; } // Unused? @@ -404,9 +630,9 @@ GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80017978.s") u32 func_800179D0(void) { s16 i = 0; while(i < 16) { - unk800179D0* temp = &D_8011AFF4.unk00[i]; - if (temp->unk00 != 0) { - temp->unk00--; + unk800179D0* temp = &D_8011AFF4.unk0[i]; + if (temp->unk0 != 0) { + temp->unk0--; } i++; } @@ -523,12 +749,12 @@ Player **func_8001BA74(s32 *arg0) { return *D_8011AEE4; } -s32 func_8001BA90(s32 *arg0) { +s32 *func_8001BA90(s32 *arg0) { *arg0 = D_8011AEF0; return D_8011AEEC; } -s32 func_8001BAAC(s32 *arg0) { +s32 *func_8001BAAC(s32 *arg0) { *arg0 = D_8011AEF0; return D_8011AEE8; } @@ -705,7 +931,19 @@ f32 func_80022888(f32 *arg0, u32 arg1, f32 arg2) { return result; } +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800228B0.s") +#else +f32 func_800228B0(f32 *arg0, u32 arg1, f32 arg2, f32 *arg3) { + f32 temp_f12; + f32 temp_f2; + // regalloc issues + temp_f2 = (arg0[arg1 + 2] - arg0[arg1 + 1]) * arg2; + temp_f12 = arg0[arg1 + 1]; + *arg3 = arg0[arg1 + 2] - arg0[arg1 + 1]; + return temp_f12 + temp_f2; +} +#endif // Unused? void func_800228DC(s32 arg0, s32 arg1, s32 arg2) {