From a755428b200b817c02d657df91276b6e2dc96c18 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Fri, 25 Aug 2023 23:37:59 -0400 Subject: [PATCH] Some matches in in code_80086E70 (#384) I really, really don't like a couple of the matches because of the handling of the `unk_80` member of the object struct. But if it matches it matches. Signed-off-by: Taggerung --- .../code_80086E70/func_80088364.s | 79 ---- .../code_80086E70/func_8008B1D4.s | 45 -- .../code_80086E70/func_8008B284.s | 97 ----- .../code_80086E70/func_8008B3E4.s | 28 -- .../code_80086E70/func_8008B620.s | 37 -- .../code_80086E70/func_8008B6A4.s | 35 -- .../code_80086E70/func_8008B724.s | 31 -- .../code_80086E70/func_8008BFC0.s | 16 - .../code_80086E70/func_8008BFFC.s | 136 ------ src/code_80086E70.c | 394 +++++++----------- src/code_80086E70.h | 22 +- 11 files changed, 161 insertions(+), 759 deletions(-) delete mode 100644 asm/non_matchings/code_80086E70/func_80088364.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008B1D4.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008B284.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008B3E4.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008B620.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008B6A4.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008B724.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008BFC0.s delete mode 100644 asm/non_matchings/code_80086E70/func_8008BFFC.s diff --git a/asm/non_matchings/code_80086E70/func_80088364.s b/asm/non_matchings/code_80086E70/func_80088364.s deleted file mode 100644 index 51883896c..000000000 --- a/asm/non_matchings/code_80086E70/func_80088364.s +++ /dev/null @@ -1,79 +0,0 @@ -glabel func_80088364 -/* 088F64 80088364 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 088F68 80088368 AFBF001C */ sw $ra, 0x1c($sp) -/* 088F6C 8008836C AFB00018 */ sw $s0, 0x18($sp) -/* 088F70 80088370 0C022039 */ jal func_800880E4 -/* 088F74 80088374 00808025 */ move $s0, $a0 -/* 088F78 80088378 02002025 */ move $a0, $s0 -/* 088F7C 8008837C 0C02205E */ jal func_80088178 -/* 088F80 80088380 24050001 */ li $a1, 1 -/* 088F84 80088384 0C021DA8 */ jal func_800876A0 -/* 088F88 80088388 02002025 */ move $a0, $s0 -/* 088F8C 8008838C 02002025 */ move $a0, $s0 -/* 088F90 80088390 0C0220AC */ jal func_800882B0 -/* 088F94 80088394 2405000A */ li $a1, 10 -/* 088F98 80088398 10400013 */ beqz $v0, .L800883E8 -/* 088F9C 8008839C 001070C0 */ sll $t6, $s0, 3 -/* 088FA0 800883A0 01D07023 */ subu $t6, $t6, $s0 -/* 088FA4 800883A4 3C0F8016 */ lui $t7, %hi(D_80165C18) # $t7, 0x8016 -/* 088FA8 800883A8 25EF5C18 */ addiu $t7, %lo(D_80165C18) # addiu $t7, $t7, 0x5c18 -/* 088FAC 800883AC 000E7140 */ sll $t6, $t6, 5 -/* 088FB0 800883B0 01CF1021 */ addu $v0, $t6, $t7 -/* 088FB4 800883B4 94580096 */ lhu $t8, 0x96($v0) -/* 088FB8 800883B8 944A0094 */ lhu $t2, 0x94($v0) -/* 088FBC 800883BC 27190001 */ addiu $t9, $t8, 1 -/* 088FC0 800883C0 3328FFFF */ andi $t0, $t9, 0xffff -/* 088FC4 800883C4 25090003 */ addiu $t1, $t0, 3 -/* 088FC8 800883C8 152A0005 */ bne $t1, $t2, .L800883E0 -/* 088FCC 800883CC A4590096 */ sh $t9, 0x96($v0) -/* 088FD0 800883D0 844B00AE */ lh $t3, 0xae($v0) -/* 088FD4 800883D4 256C0001 */ addiu $t4, $t3, 1 -/* 088FD8 800883D8 10000003 */ b .L800883E8 -/* 088FDC 800883DC A44C00AE */ sh $t4, 0xae($v0) -.L800883E0: -/* 088FE0 800883E0 0C022054 */ jal func_80088150 -/* 088FE4 800883E4 02002025 */ move $a0, $s0 -.L800883E8: -/* 088FE8 800883E8 8FBF001C */ lw $ra, 0x1c($sp) -/* 088FEC 800883EC 8FB00018 */ lw $s0, 0x18($sp) -/* 088FF0 800883F0 27BD0020 */ addiu $sp, $sp, 0x20 -/* 088FF4 800883F4 03E00008 */ jr $ra -/* 088FF8 800883F8 00000000 */ nop - -/* 088FFC 800883FC 000470C0 */ sll $t6, $a0, 3 -/* 089000 80088400 01C47023 */ subu $t6, $t6, $a0 -/* 089004 80088404 000E7140 */ sll $t6, $t6, 5 -/* 089008 80088408 3C028016 */ lui $v0, %hi(D_80165CC6) # 0x8016 -/* 08900C 8008840C 004E1021 */ addu $v0, $v0, $t6 -/* 089010 80088410 84425CC6 */ lh $v0, %lo(D_80165CC6)($v0) # 0x5cc6($v0) -/* 089014 80088414 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 089018 80088418 AFBF0014 */ sw $ra, 0x14($sp) -/* 08901C 8008841C 10400013 */ beqz $v0, .L8008846C -/* 089020 80088420 24010001 */ li $at, 1 -/* 089024 80088424 10410007 */ beq $v0, $at, .L80088444 -/* 089028 80088428 24010002 */ li $at, 2 -/* 08902C 8008842C 10410009 */ beq $v0, $at, .L80088454 -/* 089030 80088430 24010003 */ li $at, 3 -/* 089034 80088434 1041000B */ beq $v0, $at, .L80088464 -/* 089038 80088438 00000000 */ nop -/* 08903C 8008843C 1000000C */ b .L80088470 -/* 089040 80088440 8FBF0014 */ lw $ra, 0x14($sp) -.L80088444: -/* 089044 80088444 0C02208A */ jal func_80088228 -/* 089048 80088448 00000000 */ nop -/* 08904C 8008844C 10000008 */ b .L80088470 -/* 089050 80088450 8FBF0014 */ lw $ra, 0x14($sp) -.L80088454: -/* 089054 80088454 0C0220D9 */ jal func_80088364 -/* 089058 80088458 00000000 */ nop -/* 08905C 8008845C 10000004 */ b .L80088470 -/* 089060 80088460 8FBF0014 */ lw $ra, 0x14($sp) -.L80088464: -/* 089064 80088464 0C021BD8 */ jal func_80086F60 -/* 089068 80088468 00000000 */ nop -.L8008846C: -/* 08906C 8008846C 8FBF0014 */ lw $ra, 0x14($sp) -.L80088470: -/* 089070 80088470 27BD0018 */ addiu $sp, $sp, 0x18 -/* 089074 80088474 03E00008 */ jr $ra -/* 089078 80088478 00000000 */ nop diff --git a/asm/non_matchings/code_80086E70/func_8008B1D4.s b/asm/non_matchings/code_80086E70/func_8008B1D4.s deleted file mode 100644 index 50227825d..000000000 --- a/asm/non_matchings/code_80086E70/func_8008B1D4.s +++ /dev/null @@ -1,45 +0,0 @@ -glabel func_8008B1D4 -/* 08BDD4 8008B1D4 000470C0 */ sll $t6, $a0, 3 -/* 08BDD8 8008B1D8 01C47023 */ subu $t6, $t6, $a0 -/* 08BDDC 8008B1DC 000E7140 */ sll $t6, $t6, 5 -/* 08BDE0 8008B1E0 3C028016 */ lui $v0, %hi(D_80165C94) # 0x8016 -/* 08BDE4 8008B1E4 004E1021 */ addu $v0, $v0, $t6 -/* 08BDE8 8008B1E8 8C425C94 */ lw $v0, %lo(D_80165C94)($v0) # 0x5c94($v0) -/* 08BDEC 8008B1EC 3C018016 */ lui $at, %hi(D_80165760) # $at, 0x8016 -/* 08BDF0 8008B1F0 844F0000 */ lh $t7, ($v0) -/* 08BDF4 8008B1F4 24420018 */ addiu $v0, $v0, 0x18 -/* 08BDF8 8008B1F8 A42F5760 */ sh $t7, %lo(D_80165760)($at) -/* 08BDFC 8008B1FC 8458FFEA */ lh $t8, -0x16($v0) -/* 08BE00 8008B200 3C018016 */ lui $at, %hi(D_80165770) # $at, 0x8016 -/* 08BE04 8008B204 A4385770 */ sh $t8, %lo(D_80165770)($at) -/* 08BE08 8008B208 8459FFEC */ lh $t9, -0x14($v0) -/* 08BE0C 8008B20C 3C018016 */ lui $at, %hi(D_80165780) # $at, 0x8016 -/* 08BE10 8008B210 A4395780 */ sh $t9, %lo(D_80165780)($at) -/* 08BE14 8008B214 8448FFF0 */ lh $t0, -0x10($v0) -/* 08BE18 8008B218 3C018016 */ lui $at, %hi(D_80165762) # $at, 0x8016 -/* 08BE1C 8008B21C A4285762 */ sh $t0, %lo(D_80165762)($at) -/* 08BE20 8008B220 8449FFF2 */ lh $t1, -0xe($v0) -/* 08BE24 8008B224 3C018016 */ lui $at, %hi(D_80165772) # $at, 0x8016 -/* 08BE28 8008B228 A4295772 */ sh $t1, %lo(D_80165772)($at) -/* 08BE2C 8008B22C 844AFFF4 */ lh $t2, -0xc($v0) -/* 08BE30 8008B230 3C018016 */ lui $at, %hi(D_80165782) # $at, 0x8016 -/* 08BE34 8008B234 A42A5782 */ sh $t2, %lo(D_80165782)($at) -/* 08BE38 8008B238 844BFFF8 */ lh $t3, -8($v0) -/* 08BE3C 8008B23C 3C018016 */ lui $at, %hi(D_80165764) # $at, 0x8016 -/* 08BE40 8008B240 A42B5764 */ sh $t3, %lo(D_80165764)($at) -/* 08BE44 8008B244 844CFFFA */ lh $t4, -6($v0) -/* 08BE48 8008B248 3C018016 */ lui $at, %hi(D_80165774) # $at, 0x8016 -/* 08BE4C 8008B24C A42C5774 */ sh $t4, %lo(D_80165774)($at) -/* 08BE50 8008B250 844DFFFC */ lh $t5, -4($v0) -/* 08BE54 8008B254 3C018016 */ lui $at, %hi(D_80165784) # $at, 0x8016 -/* 08BE58 8008B258 A42D5784 */ sh $t5, %lo(D_80165784)($at) -/* 08BE5C 8008B25C 844E0000 */ lh $t6, ($v0) -/* 08BE60 8008B260 3C018016 */ lui $at, %hi(D_80165766) # $at, 0x8016 -/* 08BE64 8008B264 A42E5766 */ sh $t6, %lo(D_80165766)($at) -/* 08BE68 8008B268 844F0002 */ lh $t7, 2($v0) -/* 08BE6C 8008B26C 3C018016 */ lui $at, %hi(D_80165776) # $at, 0x8016 -/* 08BE70 8008B270 A42F5776 */ sh $t7, %lo(D_80165776)($at) -/* 08BE74 8008B274 84580004 */ lh $t8, 4($v0) -/* 08BE78 8008B278 3C018016 */ lui $at, %hi(D_80165786) # 0x8016 -/* 08BE7C 8008B27C 03E00008 */ jr $ra -/* 08BE80 8008B280 A4385786 */ sh $t8, %lo(D_80165786)($at) # 0x5786($at) diff --git a/asm/non_matchings/code_80086E70/func_8008B284.s b/asm/non_matchings/code_80086E70/func_8008B284.s deleted file mode 100644 index 24f3d2533..000000000 --- a/asm/non_matchings/code_80086E70/func_8008B284.s +++ /dev/null @@ -1,97 +0,0 @@ -glabel func_8008B284 -/* 08BE84 8008B284 000470C0 */ sll $t6, $a0, 3 -/* 08BE88 8008B288 01C47023 */ subu $t6, $t6, $a0 -/* 08BE8C 8008B28C 3C0F8016 */ lui $t7, %hi(D_80165C18) # $t7, 0x8016 -/* 08BE90 8008B290 25EF5C18 */ addiu $t7, %lo(D_80165C18) # addiu $t7, $t7, 0x5c18 -/* 08BE94 8008B294 000E7140 */ sll $t6, $t6, 5 -/* 08BE98 8008B298 01CF1821 */ addu $v1, $t6, $t7 -/* 08BE9C 8008B29C 94660094 */ lhu $a2, 0x94($v1) -/* 08BEA0 8008B2A0 84650096 */ lh $a1, 0x96($v1) -/* 08BEA4 8008B2A4 27BDFFF8 */ addiu $sp, $sp, -8 -/* 08BEA8 8008B2A8 24D8FFFC */ addiu $t8, $a2, -4 -/* 08BEAC 8008B2AC 0305082A */ slt $at, $t8, $a1 -/* 08BEB0 8008B2B0 14200004 */ bnez $at, .L8008B2C4 -/* 08BEB4 8008B2B4 8C62007C */ lw $v0, 0x7c($v1) -/* 08BEB8 8008B2B8 24042710 */ li $a0, 10000 -/* 08BEBC 8008B2BC 1000000F */ b .L8008B2FC -/* 08BEC0 8008B2C0 AFA40000 */ sw $a0, ($sp) -.L8008B2C4: -/* 08BEC4 8008B2C4 24B90003 */ addiu $t9, $a1, 3 -/* 08BEC8 8008B2C8 17260004 */ bne $t9, $a2, .L8008B2DC -/* 08BECC 8008B2CC 24A80002 */ addiu $t0, $a1, 2 -/* 08BED0 8008B2D0 24040002 */ li $a0, 2 -/* 08BED4 8008B2D4 10000009 */ b .L8008B2FC -/* 08BED8 8008B2D8 AFA40000 */ sw $a0, ($sp) -.L8008B2DC: -/* 08BEDC 8008B2DC 15060004 */ bne $t0, $a2, .L8008B2F0 -/* 08BEE0 8008B2E0 24A90001 */ addiu $t1, $a1, 1 -/* 08BEE4 8008B2E4 24040001 */ li $a0, 1 -/* 08BEE8 8008B2E8 10000004 */ b .L8008B2FC -/* 08BEEC 8008B2EC AFA40000 */ sw $a0, ($sp) -.L8008B2F0: -/* 08BEF0 8008B2F0 55260003 */ bnel $t1, $a2, .L8008B300 -/* 08BEF4 8008B2F4 844A0000 */ lh $t2, ($v0) -/* 08BEF8 8008B2F8 AFA00000 */ sw $zero, ($sp) -.L8008B2FC: -/* 08BEFC 8008B2FC 844A0000 */ lh $t2, ($v0) -.L8008B300: -/* 08BF00 8008B300 3C018016 */ lui $at, %hi(D_80165760) # $at, 0x8016 -/* 08BF04 8008B304 8FA40000 */ lw $a0, ($sp) -/* 08BF08 8008B308 A42A5760 */ sh $t2, %lo(D_80165760)($at) -/* 08BF0C 8008B30C 844B0002 */ lh $t3, 2($v0) -/* 08BF10 8008B310 3C018016 */ lui $at, %hi(D_80165770) # $at, 0x8016 -/* 08BF14 8008B314 24420008 */ addiu $v0, $v0, 8 -/* 08BF18 8008B318 A42B5770 */ sh $t3, %lo(D_80165770)($at) -/* 08BF1C 8008B31C 844CFFFC */ lh $t4, -4($v0) -/* 08BF20 8008B320 3C018016 */ lui $at, %hi(D_80165780) # $at, 0x8016 -/* 08BF24 8008B324 14800004 */ bnez $a0, .L8008B338 -/* 08BF28 8008B328 A42C5780 */ sh $t4, %lo(D_80165780)($at) -/* 08BF2C 8008B32C 8C620080 */ lw $v0, 0x80($v1) -/* 08BF30 8008B330 10000001 */ b .L8008B338 -/* 08BF34 8008B334 24420002 */ addiu $v0, $v0, 2 -.L8008B338: -/* 08BF38 8008B338 844D0000 */ lh $t5, ($v0) -/* 08BF3C 8008B33C 3C018016 */ lui $at, %hi(D_80165762) # $at, 0x8016 -/* 08BF40 8008B340 24420008 */ addiu $v0, $v0, 8 -/* 08BF44 8008B344 A42D5762 */ sh $t5, %lo(D_80165762)($at) -/* 08BF48 8008B348 844EFFFA */ lh $t6, -6($v0) -/* 08BF4C 8008B34C 3C018016 */ lui $at, %hi(D_80165772) # $at, 0x8016 -/* 08BF50 8008B350 A42E5772 */ sh $t6, %lo(D_80165772)($at) -/* 08BF54 8008B354 844FFFFC */ lh $t7, -4($v0) -/* 08BF58 8008B358 3C018016 */ lui $at, %hi(D_80165782) # $at, 0x8016 -/* 08BF5C 8008B35C A42F5782 */ sh $t7, %lo(D_80165782)($at) -/* 08BF60 8008B360 24010001 */ li $at, 1 -/* 08BF64 8008B364 14810004 */ bne $a0, $at, .L8008B378 -/* 08BF68 8008B368 00000000 */ nop -/* 08BF6C 8008B36C 8C620080 */ lw $v0, 0x80($v1) -/* 08BF70 8008B370 10000001 */ b .L8008B378 -/* 08BF74 8008B374 24420002 */ addiu $v0, $v0, 2 -.L8008B378: -/* 08BF78 8008B378 84580000 */ lh $t8, ($v0) -/* 08BF7C 8008B37C 3C018016 */ lui $at, %hi(D_80165764) # $at, 0x8016 -/* 08BF80 8008B380 A4385764 */ sh $t8, %lo(D_80165764)($at) -/* 08BF84 8008B384 84590002 */ lh $t9, 2($v0) -/* 08BF88 8008B388 3C018016 */ lui $at, %hi(D_80165774) # $at, 0x8016 -/* 08BF8C 8008B38C A4395774 */ sh $t9, %lo(D_80165774)($at) -/* 08BF90 8008B390 84480004 */ lh $t0, 4($v0) -/* 08BF94 8008B394 3C018016 */ lui $at, %hi(D_80165784) # $at, 0x8016 -/* 08BF98 8008B398 A4285784 */ sh $t0, %lo(D_80165784)($at) -/* 08BF9C 8008B39C 24010002 */ li $at, 2 -/* 08BFA0 8008B3A0 54810005 */ bnel $a0, $at, .L8008B3B8 -/* 08BFA4 8008B3A4 24420008 */ addiu $v0, $v0, 8 -/* 08BFA8 8008B3A8 8C620080 */ lw $v0, 0x80($v1) -/* 08BFAC 8008B3AC 10000002 */ b .L8008B3B8 -/* 08BFB0 8008B3B0 24420002 */ addiu $v0, $v0, 2 -/* 08BFB4 8008B3B4 24420008 */ addiu $v0, $v0, 8 -.L8008B3B8: -/* 08BFB8 8008B3B8 84490000 */ lh $t1, ($v0) -/* 08BFBC 8008B3BC 3C018016 */ lui $at, %hi(D_80165766) # $at, 0x8016 -/* 08BFC0 8008B3C0 A4295766 */ sh $t1, %lo(D_80165766)($at) -/* 08BFC4 8008B3C4 844A0002 */ lh $t2, 2($v0) -/* 08BFC8 8008B3C8 3C018016 */ lui $at, %hi(D_80165776) # $at, 0x8016 -/* 08BFCC 8008B3CC A42A5776 */ sh $t2, %lo(D_80165776)($at) -/* 08BFD0 8008B3D0 844B0004 */ lh $t3, 4($v0) -/* 08BFD4 8008B3D4 3C018016 */ lui $at, %hi(D_80165786) # 0x8016 -/* 08BFD8 8008B3D8 27BD0008 */ addiu $sp, $sp, 8 -/* 08BFDC 8008B3DC 03E00008 */ jr $ra -/* 08BFE0 8008B3E0 A42B5786 */ sh $t3, %lo(D_80165786)($at) # 0x5786($at) diff --git a/asm/non_matchings/code_80086E70/func_8008B3E4.s b/asm/non_matchings/code_80086E70/func_8008B3E4.s deleted file mode 100644 index 6f3a2e322..000000000 --- a/asm/non_matchings/code_80086E70/func_8008B3E4.s +++ /dev/null @@ -1,28 +0,0 @@ -glabel func_8008B3E4 -/* 08BFE4 8008B3E4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08BFE8 8008B3E8 AFBF0014 */ sw $ra, 0x14($sp) -/* 08BFEC 8008B3EC AFA40018 */ sw $a0, 0x18($sp) -/* 08BFF0 8008B3F0 0C01C89C */ jal func_80072270 -/* 08BFF4 8008B3F4 24050008 */ li $a1, 8 -/* 08BFF8 8008B3F8 10400010 */ beqz $v0, .L8008B43C -/* 08BFFC 8008B3FC 8FA40018 */ lw $a0, 0x18($sp) -/* 08C000 8008B400 000470C0 */ sll $t6, $a0, 3 -/* 08C004 8008B404 01C47023 */ subu $t6, $t6, $a0 -/* 08C008 8008B408 3C0F8016 */ lui $t7, %hi(D_80165C18) # $t7, 0x8016 -/* 08C00C 8008B40C 25EF5C18 */ addiu $t7, %lo(D_80165C18) # addiu $t7, $t7, 0x5c18 -/* 08C010 8008B410 000E7140 */ sll $t6, $t6, 5 -/* 08C014 8008B414 01CF1021 */ addu $v0, $t6, $t7 -/* 08C018 8008B418 8C430080 */ lw $v1, 0x80($v0) -/* 08C01C 8008B41C A4400096 */ sh $zero, 0x96($v0) -/* 08C020 8008B420 A4400098 */ sh $zero, 0x98($v0) -/* 08C024 8008B424 24630002 */ addiu $v1, $v1, 2 -/* 08C028 8008B428 AC43007C */ sw $v1, 0x7c($v0) -/* 08C02C 8008B42C 8478FFFE */ lh $t8, -2($v1) -/* 08C030 8008B430 24050008 */ li $a1, 8 -/* 08C034 8008B434 0C01C870 */ jal func_800721C0 -/* 08C038 8008B438 A4580094 */ sh $t8, 0x94($v0) -.L8008B43C: -/* 08C03C 8008B43C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08C040 8008B440 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08C044 8008B444 03E00008 */ jr $ra -/* 08C048 8008B448 00000000 */ nop diff --git a/asm/non_matchings/code_80086E70/func_8008B620.s b/asm/non_matchings/code_80086E70/func_8008B620.s deleted file mode 100644 index 815fcd982..000000000 --- a/asm/non_matchings/code_80086E70/func_8008B620.s +++ /dev/null @@ -1,37 +0,0 @@ -glabel func_8008B620 -/* 08C220 8008B620 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08C224 8008B624 AFBF0014 */ sw $ra, 0x14($sp) -/* 08C228 8008B628 AFA40018 */ sw $a0, 0x18($sp) -/* 08C22C 8008B62C 0C022D1E */ jal func_8008B478 -/* 08C230 8008B630 00002825 */ move $a1, $zero -/* 08C234 8008B634 8FA40018 */ lw $a0, 0x18($sp) -/* 08C238 8008B638 3C0F8016 */ lui $t7, %hi(D_80165C18) # $t7, 0x8016 -/* 08C23C 8008B63C 25EF5C18 */ addiu $t7, %lo(D_80165C18) # addiu $t7, $t7, 0x5c18 -/* 08C240 8008B640 000470C0 */ sll $t6, $a0, 3 -/* 08C244 8008B644 01C47023 */ subu $t6, $t6, $a0 -/* 08C248 8008B648 000E7140 */ sll $t6, $t6, 5 -/* 08C24C 8008B64C 01CF1021 */ addu $v0, $t6, $t7 -/* 08C250 8008B650 94580098 */ lhu $t8, 0x98($v0) -/* 08C254 8008B654 2B012710 */ slti $at, $t8, 0x2710 -/* 08C258 8008B658 5420000F */ bnel $at, $zero, .L8008B698 -/* 08C25C 8008B65C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08C260 8008B660 94590096 */ lhu $t9, 0x96($v0) -/* 08C264 8008B664 944B0094 */ lhu $t3, 0x94($v0) -/* 08C268 8008B668 27280001 */ addiu $t0, $t9, 1 -/* 08C26C 8008B66C 3109FFFF */ andi $t1, $t0, 0xffff -/* 08C270 8008B670 252A0003 */ addiu $t2, $t1, 3 -/* 08C274 8008B674 154B0005 */ bne $t2, $t3, .L8008B68C -/* 08C278 8008B678 A4480096 */ sh $t0, 0x96($v0) -/* 08C27C 8008B67C 844C00AE */ lh $t4, 0xae($v0) -/* 08C280 8008B680 258D0001 */ addiu $t5, $t4, 1 -/* 08C284 8008B684 10000003 */ b .L8008B694 -/* 08C288 8008B688 A44D00AE */ sh $t5, 0xae($v0) -.L8008B68C: -/* 08C28C 8008B68C 0C022D13 */ jal func_8008B44C -/* 08C290 8008B690 00000000 */ nop -.L8008B694: -/* 08C294 8008B694 8FBF0014 */ lw $ra, 0x14($sp) -.L8008B698: -/* 08C298 8008B698 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08C29C 8008B69C 03E00008 */ jr $ra -/* 08C2A0 8008B6A0 00000000 */ nop diff --git a/asm/non_matchings/code_80086E70/func_8008B6A4.s b/asm/non_matchings/code_80086E70/func_8008B6A4.s deleted file mode 100644 index a605f3d05..000000000 --- a/asm/non_matchings/code_80086E70/func_8008B6A4.s +++ /dev/null @@ -1,35 +0,0 @@ -glabel func_8008B6A4 -/* 08C2A4 8008B6A4 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08C2A8 8008B6A8 AFBF0014 */ sw $ra, 0x14($sp) -/* 08C2AC 8008B6AC AFA40018 */ sw $a0, 0x18($sp) -/* 08C2B0 8008B6B0 0C022D1E */ jal func_8008B478 -/* 08C2B4 8008B6B4 24050001 */ li $a1, 1 -/* 08C2B8 8008B6B8 8FA40018 */ lw $a0, 0x18($sp) -/* 08C2BC 8008B6BC 3C0F8016 */ lui $t7, %hi(D_80165C18) # $t7, 0x8016 -/* 08C2C0 8008B6C0 25EF5C18 */ addiu $t7, %lo(D_80165C18) # addiu $t7, $t7, 0x5c18 -/* 08C2C4 8008B6C4 000470C0 */ sll $t6, $a0, 3 -/* 08C2C8 8008B6C8 01C47023 */ subu $t6, $t6, $a0 -/* 08C2CC 8008B6CC 000E7140 */ sll $t6, $t6, 5 -/* 08C2D0 8008B6D0 01CF1021 */ addu $v0, $t6, $t7 -/* 08C2D4 8008B6D4 94580098 */ lhu $t8, 0x98($v0) -/* 08C2D8 8008B6D8 2B012710 */ slti $at, $t8, 0x2710 -/* 08C2DC 8008B6DC 5420000E */ bnel $at, $zero, .L8008B718 -/* 08C2E0 8008B6E0 8FBF0014 */ lw $ra, 0x14($sp) -/* 08C2E4 8008B6E4 94590096 */ lhu $t9, 0x96($v0) -/* 08C2E8 8008B6E8 944A0094 */ lhu $t2, 0x94($v0) -/* 08C2EC 8008B6EC 27280001 */ addiu $t0, $t9, 1 -/* 08C2F0 8008B6F0 3109FFFF */ andi $t1, $t0, 0xffff -/* 08C2F4 8008B6F4 152A0005 */ bne $t1, $t2, .L8008B70C -/* 08C2F8 8008B6F8 A4480096 */ sh $t0, 0x96($v0) -/* 08C2FC 8008B6FC 0C01C87A */ jal func_800721E8 -/* 08C300 8008B700 24050008 */ li $a1, 8 -/* 08C304 8008B704 10000004 */ b .L8008B718 -/* 08C308 8008B708 8FBF0014 */ lw $ra, 0x14($sp) -.L8008B70C: -/* 08C30C 8008B70C 0C022D13 */ jal func_8008B44C -/* 08C310 8008B710 00000000 */ nop -/* 08C314 8008B714 8FBF0014 */ lw $ra, 0x14($sp) -.L8008B718: -/* 08C318 8008B718 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08C31C 8008B71C 03E00008 */ jr $ra -/* 08C320 8008B720 00000000 */ nop diff --git a/asm/non_matchings/code_80086E70/func_8008B724.s b/asm/non_matchings/code_80086E70/func_8008B724.s deleted file mode 100644 index fee83f09e..000000000 --- a/asm/non_matchings/code_80086E70/func_8008B724.s +++ /dev/null @@ -1,31 +0,0 @@ -glabel func_8008B724 -/* 08C324 8008B724 000470C0 */ sll $t6, $a0, 3 -/* 08C328 8008B728 01C47023 */ subu $t6, $t6, $a0 -/* 08C32C 8008B72C 000E7140 */ sll $t6, $t6, 5 -/* 08C330 8008B730 3C028016 */ lui $v0, %hi(D_80165CC6) # 0x8016 -/* 08C334 8008B734 004E1021 */ addu $v0, $v0, $t6 -/* 08C338 8008B738 84425CC6 */ lh $v0, %lo(D_80165CC6)($v0) # 0x5cc6($v0) -/* 08C33C 8008B73C 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08C340 8008B740 AFBF0014 */ sw $ra, 0x14($sp) -/* 08C344 8008B744 1040000D */ beqz $v0, .L8008B77C -/* 08C348 8008B748 24010001 */ li $at, 1 -/* 08C34C 8008B74C 10410005 */ beq $v0, $at, .L8008B764 -/* 08C350 8008B750 24010002 */ li $at, 2 -/* 08C354 8008B754 10410007 */ beq $v0, $at, .L8008B774 -/* 08C358 8008B758 00000000 */ nop -/* 08C35C 8008B75C 10000008 */ b .L8008B780 -/* 08C360 8008B760 8FBF0014 */ lw $ra, 0x14($sp) -.L8008B764: -/* 08C364 8008B764 0C022D88 */ jal func_8008B620 -/* 08C368 8008B768 00000000 */ nop -/* 08C36C 8008B76C 10000004 */ b .L8008B780 -/* 08C370 8008B770 8FBF0014 */ lw $ra, 0x14($sp) -.L8008B774: -/* 08C374 8008B774 0C021BD8 */ jal func_80086F60 -/* 08C378 8008B778 00000000 */ nop -.L8008B77C: -/* 08C37C 8008B77C 8FBF0014 */ lw $ra, 0x14($sp) -.L8008B780: -/* 08C380 8008B780 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08C384 8008B784 03E00008 */ jr $ra -/* 08C388 8008B788 00000000 */ nop diff --git a/asm/non_matchings/code_80086E70/func_8008BFC0.s b/asm/non_matchings/code_80086E70/func_8008BFC0.s deleted file mode 100644 index 3bbdc2594..000000000 --- a/asm/non_matchings/code_80086E70/func_8008BFC0.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_8008BFC0 -/* 08CBC0 8008BFC0 000470C0 */ sll $t6, $a0, 3 -/* 08CBC4 8008BFC4 01C47023 */ subu $t6, $t6, $a0 -/* 08CBC8 8008BFC8 3C0F8016 */ lui $t7, %hi(D_80165C18) # $t7, 0x8016 -/* 08CBCC 8008BFCC 25EF5C18 */ addiu $t7, %lo(D_80165C18) # addiu $t7, $t7, 0x5c18 -/* 08CBD0 8008BFD0 000E7140 */ sll $t6, $t6, 5 -/* 08CBD4 8008BFD4 01CF1021 */ addu $v0, $t6, $t7 -/* 08CBD8 8008BFD8 C4440004 */ lwc1 $f4, 4($v0) -/* 08CBDC 8008BFDC C4480008 */ lwc1 $f8, 8($v0) -/* 08CBE0 8008BFE0 4600218D */ trunc.w.s $f6, $f4 -/* 08CBE4 8008BFE4 4600428D */ trunc.w.s $f10, $f8 -/* 08CBE8 8008BFE8 44193000 */ mfc1 $t9, $f6 -/* 08CBEC 8008BFEC 44095000 */ mfc1 $t1, $f10 -/* 08CBF0 8008BFF0 A459009C */ sh $t9, 0x9c($v0) -/* 08CBF4 8008BFF4 03E00008 */ jr $ra -/* 08CBF8 8008BFF8 A449009E */ sh $t1, 0x9e($v0) diff --git a/asm/non_matchings/code_80086E70/func_8008BFFC.s b/asm/non_matchings/code_80086E70/func_8008BFFC.s deleted file mode 100644 index 11af6fc79..000000000 --- a/asm/non_matchings/code_80086E70/func_8008BFFC.s +++ /dev/null @@ -1,136 +0,0 @@ -.section .late_rodata - -glabel jpt_800EF518 -.word L8008C1A8, L8008C040, L8008C060, L8008C088 -.word L8008C0B0, L8008C0F8, L8008C140, L8008C168 - -.section .text - -glabel func_8008BFFC -/* 08CBFC 8008BFFC 000470C0 */ sll $t6, $a0, 3 -/* 08CC00 8008C000 01C47023 */ subu $t6, $t6, $a0 -/* 08CC04 8008C004 3C0F8016 */ lui $t7, %hi(D_80165C18) # $t7, 0x8016 -/* 08CC08 8008C008 25EF5C18 */ addiu $t7, %lo(D_80165C18) # addiu $t7, $t7, 0x5c18 -/* 08CC0C 8008C00C 000E7140 */ sll $t6, $t6, 5 -/* 08CC10 8008C010 01CF1821 */ addu $v1, $t6, $t7 -/* 08CC14 8008C014 907800DE */ lbu $t8, 0xde($v1) -/* 08CC18 8008C018 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 08CC1C 8008C01C AFBF0014 */ sw $ra, 0x14($sp) -/* 08CC20 8008C020 2F010008 */ sltiu $at, $t8, 8 -/* 08CC24 8008C024 10200060 */ beqz $at, .L8008C1A8 -/* 08CC28 8008C028 0018C080 */ sll $t8, $t8, 2 -/* 08CC2C 8008C02C 3C01800F */ lui $at, %hi(jpt_800EF518) -/* 08CC30 8008C030 00380821 */ addu $at, $at, $t8 -/* 08CC34 8008C034 8C38F518 */ lw $t8, %lo(jpt_800EF518)($at) -/* 08CC38 8008C038 03000008 */ jr $t8 -/* 08CC3C 8008C03C 00000000 */ nop -glabel L8008C040 -/* 08CC40 8008C040 847900AE */ lh $t9, 0xae($v1) -/* 08CC44 8008C044 24010001 */ li $at, 1 -/* 08CC48 8008C048 57210058 */ bnel $t9, $at, .L8008C1AC -/* 08CC4C 8008C04C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CC50 8008C050 0C022D88 */ jal func_8008B620 -/* 08CC54 8008C054 00000000 */ nop -/* 08CC58 8008C058 10000054 */ b .L8008C1AC -/* 08CC5C 8008C05C 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8008C060 -/* 08CC60 8008C060 846200AE */ lh $v0, 0xae($v1) -/* 08CC64 8008C064 24010001 */ li $at, 1 -/* 08CC68 8008C068 50400050 */ beql $v0, $zero, .L8008C1AC -/* 08CC6C 8008C06C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CC70 8008C070 5441004E */ bnel $v0, $at, .L8008C1AC -/* 08CC74 8008C074 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CC78 8008C078 0C022DA9 */ jal func_8008B6A4 -/* 08CC7C 8008C07C 00000000 */ nop -/* 08CC80 8008C080 1000004A */ b .L8008C1AC -/* 08CC84 8008C084 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8008C088 -/* 08CC88 8008C088 846200AE */ lh $v0, 0xae($v1) -/* 08CC8C 8008C08C 24010001 */ li $at, 1 -/* 08CC90 8008C090 50400046 */ beql $v0, $zero, .L8008C1AC -/* 08CC94 8008C094 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CC98 8008C098 54410044 */ bnel $v0, $at, .L8008C1AC -/* 08CC9C 8008C09C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CCA0 8008C0A0 0C022D88 */ jal func_8008B620 -/* 08CCA4 8008C0A4 00000000 */ nop -/* 08CCA8 8008C0A8 10000040 */ b .L8008C1AC -/* 08CCAC 8008C0AC 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8008C0B0 -/* 08CCB0 8008C0B0 846200AE */ lh $v0, 0xae($v1) -/* 08CCB4 8008C0B4 24010001 */ li $at, 1 -/* 08CCB8 8008C0B8 5040003C */ beql $v0, $zero, .L8008C1AC -/* 08CCBC 8008C0BC 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CCC0 8008C0C0 10410005 */ beq $v0, $at, .L8008C0D8 -/* 08CCC4 8008C0C4 24010002 */ li $at, 2 -/* 08CCC8 8008C0C8 10410007 */ beq $v0, $at, .L8008C0E8 -/* 08CCCC 8008C0CC 00000000 */ nop -/* 08CCD0 8008C0D0 10000036 */ b .L8008C1AC -/* 08CCD4 8008C0D4 8FBF0014 */ lw $ra, 0x14($sp) -.L8008C0D8: -/* 08CCD8 8008C0D8 0C022D88 */ jal func_8008B620 -/* 08CCDC 8008C0DC 00000000 */ nop -/* 08CCE0 8008C0E0 10000032 */ b .L8008C1AC -/* 08CCE4 8008C0E4 8FBF0014 */ lw $ra, 0x14($sp) -.L8008C0E8: -/* 08CCE8 8008C0E8 0C021BD8 */ jal func_80086F60 -/* 08CCEC 8008C0EC 00000000 */ nop -/* 08CCF0 8008C0F0 1000002E */ b .L8008C1AC -/* 08CCF4 8008C0F4 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8008C0F8 -/* 08CCF8 8008C0F8 846200AE */ lh $v0, 0xae($v1) -/* 08CCFC 8008C0FC 24010001 */ li $at, 1 -/* 08CD00 8008C100 5040002A */ beql $v0, $zero, .L8008C1AC -/* 08CD04 8008C104 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CD08 8008C108 10410005 */ beq $v0, $at, .L8008C120 -/* 08CD0C 8008C10C 24010002 */ li $at, 2 -/* 08CD10 8008C110 10410007 */ beq $v0, $at, .L8008C130 -/* 08CD14 8008C114 00000000 */ nop -/* 08CD18 8008C118 10000024 */ b .L8008C1AC -/* 08CD1C 8008C11C 8FBF0014 */ lw $ra, 0x14($sp) -.L8008C120: -/* 08CD20 8008C120 0C022D88 */ jal func_8008B620 -/* 08CD24 8008C124 00000000 */ nop -/* 08CD28 8008C128 10000020 */ b .L8008C1AC -/* 08CD2C 8008C12C 8FBF0014 */ lw $ra, 0x14($sp) -.L8008C130: -/* 08CD30 8008C130 0C021BD8 */ jal func_80086F60 -/* 08CD34 8008C134 00000000 */ nop -/* 08CD38 8008C138 1000001C */ b .L8008C1AC -/* 08CD3C 8008C13C 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8008C140 -/* 08CD40 8008C140 846200AE */ lh $v0, 0xae($v1) -/* 08CD44 8008C144 24010001 */ li $at, 1 -/* 08CD48 8008C148 50400018 */ beql $v0, $zero, .L8008C1AC -/* 08CD4C 8008C14C 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CD50 8008C150 54410016 */ bnel $v0, $at, .L8008C1AC -/* 08CD54 8008C154 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CD58 8008C158 0C022D88 */ jal func_8008B620 -/* 08CD5C 8008C15C 00000000 */ nop -/* 08CD60 8008C160 10000012 */ b .L8008C1AC -/* 08CD64 8008C164 8FBF0014 */ lw $ra, 0x14($sp) -glabel L8008C168 -/* 08CD68 8008C168 846200AE */ lh $v0, 0xae($v1) -/* 08CD6C 8008C16C 24010001 */ li $at, 1 -/* 08CD70 8008C170 5040000E */ beql $v0, $zero, .L8008C1AC -/* 08CD74 8008C174 8FBF0014 */ lw $ra, 0x14($sp) -/* 08CD78 8008C178 10410005 */ beq $v0, $at, .L8008C190 -/* 08CD7C 8008C17C 24010002 */ li $at, 2 -/* 08CD80 8008C180 10410007 */ beq $v0, $at, .L8008C1A0 -/* 08CD84 8008C184 00000000 */ nop -/* 08CD88 8008C188 10000008 */ b .L8008C1AC -/* 08CD8C 8008C18C 8FBF0014 */ lw $ra, 0x14($sp) -.L8008C190: -/* 08CD90 8008C190 0C02208A */ jal func_80088228 -/* 08CD94 8008C194 00000000 */ nop -/* 08CD98 8008C198 10000004 */ b .L8008C1AC -/* 08CD9C 8008C19C 8FBF0014 */ lw $ra, 0x14($sp) -.L8008C1A0: -/* 08CDA0 8008C1A0 0C0220D9 */ jal func_80088364 -/* 08CDA4 8008C1A4 00000000 */ nop -.L8008C1A8: -glabel L8008C1A8 -/* 08CDA8 8008C1A8 8FBF0014 */ lw $ra, 0x14($sp) -.L8008C1AC: -/* 08CDAC 8008C1AC 27BD0018 */ addiu $sp, $sp, 0x18 -/* 08CDB0 8008C1B0 03E00008 */ jr $ra -/* 08CDB4 8008C1B4 00000000 */ nop diff --git a/src/code_80086E70.c b/src/code_80086E70.c index d234261dc..3e01e28ca 100644 --- a/src/code_80086E70.c +++ b/src/code_80086E70.c @@ -435,8 +435,7 @@ void func_80088178(s32 objectIndex, s32 arg1) { } // if the code is too ugly for you, then go fix it without tampering with the register allocations -void func_80088228(s32 objectIndex) -{ +void func_80088228(s32 objectIndex) { s16 *temp_v1; struct_80165C18_entry *temp_v0; temp_v0 = &D_80165C18[objectIndex]; @@ -468,10 +467,7 @@ s32 func_800882B0(s32 objectIndex, s32 arg1) { return var_v1; } -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-09-2023 void func_80088364(s32 objectIndex) { - s16 temp_t9; struct_80165C18_entry *temp_v0; func_800880E4(objectIndex); @@ -479,18 +475,30 @@ void func_80088364(s32 objectIndex) { func_800876A0(objectIndex); if (func_800882B0(objectIndex, 0x0000000A) != 0) { temp_v0 = &D_80165C18[objectIndex]; - temp_t9 = (u16) temp_v0->unk_084[9] + 1; - temp_v0->unk_084[9] = temp_t9; - if (((temp_t9 & 0xFFFF) + 3) == (u16) temp_v0->unk_084[8]) { + temp_v0->unk_084[9] = (u16) temp_v0->unk_084[9] + 1; + if (((u16)temp_v0->unk_084[9] + 3) == (u16) temp_v0->unk_084[8]) { temp_v0->unk_0AE += 1; - return; + } else { + func_80088150(objectIndex); } - func_80088150(objectIndex); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_80088364.s") -#endif + +void func_800883FC(s32 objectIndex) { + switch (D_80165C18[objectIndex].unk_0AE) { + case 0: + break; + case 1: + func_80088228(objectIndex); + break; + case 2: + func_80088364(objectIndex); + break; + case 3: + func_80086F60(objectIndex); + break; + } +} s32 func_8008847C(s32 objectIndex) { s32 sp2C; @@ -1501,71 +1509,29 @@ UNUSED void func_8008B1CC(void) { } -#ifdef MIPS_TO_C -//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307 -extern s16 D_80165760; -extern s16 D_80165762; -extern s16 D_80165764; -extern s16 D_80165766; -extern s16 D_80165770; -extern s16 D_80165772; -extern s16 D_80165774; -extern s16 D_80165776; -extern s16 D_80165780; -extern s16 D_80165782; -extern s16 D_80165784; -extern s16 D_80165786; -extern ? D_80165C94; +void func_8008B1D4(s32 objectIndex) { + s32 someIndex; + Vec4s *test; -void func_8008B1D4(s32 arg0) { - s16 *temp_v0; - void *temp_v0_2; - - temp_v0 = *(&D_80165C94 + (arg0 * 0xE0)); - temp_v0_2 = temp_v0 + 0x18; - D_80165760 = *temp_v0; - D_80165770 = temp_v0_2->unk-16; - D_80165780 = temp_v0_2->unk-14; - D_80165762 = temp_v0_2->unk-10; - D_80165772 = temp_v0_2->unk-E; - D_80165782 = temp_v0_2->unk-C; - D_80165764 = temp_v0_2->unk-8; - D_80165774 = temp_v0_2->unk-6; - D_80165784 = temp_v0_2->unk-4; - D_80165766 = temp_v0_2->unk0; - D_80165776 = temp_v0_2->unk2; - D_80165786 = temp_v0_2->unk4; + test = D_80165C18[objectIndex].unk_07C; + for (someIndex = 0; someIndex < 4; someIndex++) { + D_80165760[someIndex] = (*test)[0]; + D_80165770[someIndex] = (*test)[1]; + D_80165780[someIndex] = (*test)[2]; + test++; + } } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008B1D4.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-09-2023 -extern s16 D_80165762; -extern s16 D_80165764; -extern s16 D_80165766; -extern s16 D_80165772; -extern s16 D_80165774; -extern s16 D_80165776; -extern s16 D_80165782; -extern s16 D_80165784; -extern s16 D_80165786; void func_8008B284(s32 objectIndex) { + s32 someIndex; s32 sp0; - s16 (*temp_v0)[4]; - s16 (*var_v0)[4]; - s16 (*var_v0_2)[4]; - s16 *var_v0_3; - s16 temp_a1; - struct_80165C18_entry *temp_v1; - u16 temp_a2; + s32 temp_a1; + s32 temp_a2; + Vec4s *test; - temp_v1 = &D_80165C18[objectIndex]; - temp_a2 = (u16) temp_v1->unk_084[8]; - temp_a1 = temp_v1->unk_084[9]; - temp_v0 = temp_v1->unk_07C; + test = D_80165C18[objectIndex].unk_07C; + temp_a1 = D_80165C18[objectIndex].unk_084[9]; + temp_a2 = (u16) D_80165C18[objectIndex].unk_084[8]; if ((temp_a2 - 4) >= temp_a1) { sp0 = 0x00002710; } else if ((temp_a1 + 3) == temp_a2) { @@ -1575,55 +1541,34 @@ void func_8008B284(s32 objectIndex) { } else if ((temp_a1 + 1) == temp_a2) { sp0 = 0; } - *D_80165760 = temp_v0[0][0]; - var_v0 = temp_v0 + 8; - *D_80165770 = temp_v0[0][1]; - *D_80165780 = var_v0->unk-4; - if (sp0 == 0) { - var_v0 = (s16 (*)[4]) &temp_v1->unk_080[0][1]; + for (someIndex = 0; someIndex < 4; someIndex++) { + D_80165760[someIndex] = (*test)[0]; + D_80165770[someIndex] = (*test)[1]; + D_80165780[someIndex] = (*test)[2]; + if (sp0 == someIndex) { + // Huh???????? This makes no sense + test = &D_80165C18[objectIndex].unk_080[0][1]; + } else { + test++; + } } - var_v0_2 = var_v0 + 8; - D_80165762 = var_v0[0][0]; - D_80165772 = var_v0_2->unk-6; - D_80165782 = var_v0_2->unk-4; - if (sp0 == 1) { - var_v0_2 = (s16 (*)[4]) &temp_v1->unk_080[0][1]; - } - D_80165764 = var_v0_2[0][0]; - D_80165774 = var_v0_2[0][1]; - D_80165784 = var_v0_2[0][2]; - if (sp0 == 2) { - var_v0_3 = &temp_v1->unk_080[0][1]; - } else { - var_v0_3 = *(var_v0_2 + 8); - } - D_80165766 = var_v0_3->unk0; - D_80165776 = var_v0_3->unk2; - D_80165786 = var_v0_3->unk4; } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008B284.s") -#endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc void func_8008B3E4(s32 objectIndex) { - s32 temp_v1; + Vec4s *test; struct_80165C18_entry *temp_v0; if (func_80072270(objectIndex, 8) != 0) { temp_v0 = &D_80165C18[objectIndex]; temp_v0->unk_084[9] = 0; temp_v0->unk_098 = 0; - temp_v1 = temp_v0->unk_080 + 2; - temp_v0->unk_07C = temp_v1; - temp_v0->unk_084[8] = temp_v1->unk-2; + temp_v0->unk_07C = &D_80165C18[objectIndex].unk_080[0][1]; + // Huh????????? Negative array indexing is a near certain sign + // that something has gone wrong on our end. + temp_v0->unk_084[8] = temp_v0->unk_07C[0][-1]; func_800721C0(objectIndex, 8); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008B3E4.s") -#endif void func_8008B44C(s32 arg0) { D_80165C18[arg0].unk_098 = 0; @@ -1631,11 +1576,7 @@ void func_8008B44C(s32 arg0) { } #ifdef MIPS_TO_C -//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-09-2023 -? func_8008B1D4(s32); /* extern */ -? func_8008B284(s32); /* extern */ -? func_8008B3E4(); /* extern */ - +//generated by m2c commit eefca95b040d7ee0c617bc58f9ac6cd1cf7bce87 on Aug-24-2023 void func_8008B478(s32 objectIndex, s32 arg1) { f32 sp34; struct_80165C18_entry *sp24; @@ -1647,7 +1588,7 @@ void func_8008B478(s32 objectIndex, s32 arg1) { u16 temp_t9; u32 temp_t3; - func_8008B3E4(); + func_8008B3E4(objectIndex); if (arg1 != 0) { func_8008B284(objectIndex); } else { @@ -1677,89 +1618,59 @@ void func_8008B478(s32 objectIndex, s32 arg1) { GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008B478.s") #endif -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8008B478(?); /* extern */ - void func_8008B620(s32 objectIndex) { s16 temp_t0; struct_80165C18_entry *temp_v0; - func_8008B478(0); + func_8008B478(objectIndex, 0); temp_v0 = &D_80165C18[objectIndex]; - if ((s32) (u16) temp_v0->unk_098 >= 0x2710) { - temp_t0 = (u16) temp_v0->unk_084[9] + 1; - temp_v0->unk_084[9] = temp_t0; - if (((temp_t0 & 0xFFFF) + 3) == (u16) temp_v0->unk_084[8]) { + if (temp_v0->unk_098 >= 0x2710) { + // Have to do it this way due to the u16 cast + temp_v0->unk_084[9] = (u16) temp_v0->unk_084[9] + 1; + if (((u16) temp_v0->unk_084[9] + 3) == (u16) temp_v0->unk_084[8]) { temp_v0->unk_0AE += 1; - return; + } else { + func_8008B44C(objectIndex); } - func_8008B44C(objectIndex); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008B620.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8008B478(?); /* extern */ void func_8008B6A4(s32 objectIndex) { - s16 temp_t0; struct_80165C18_entry *temp_v0; - func_8008B478(1); + func_8008B478(objectIndex, 1); temp_v0 = &D_80165C18[objectIndex]; - if ((s32) (u16) temp_v0->unk_098 >= 0x2710) { - temp_t0 = (u16) temp_v0->unk_084[9] + 1; - temp_v0->unk_084[9] = temp_t0; - if ((temp_t0 & 0xFFFF) == (u16) temp_v0->unk_084[8]) { + if (temp_v0->unk_098 >= 0x2710) { + // Have to do it this way due to the u16 cast + temp_v0->unk_084[9] = (u16) temp_v0->unk_084[9] + 1; + if ((u16)temp_v0->unk_084[9] == (u16)temp_v0->unk_084[8]) { func_800721E8(objectIndex, 8); - return; + } else { + func_8008B44C(objectIndex); } - func_8008B44C(objectIndex); } } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008B6A4.s") -#endif - -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_8008B620(); /* extern */ -extern ? D_80165CC6; void func_8008B724(s32 objectIndex) { - s16 temp_v0; - - temp_v0 = *(&D_80165CC6 + (objectIndex * 0xE0)); - switch (temp_v0) { /* irregular */ + switch (D_80165C18[objectIndex].unk_0AE) { + case 0: + break; case 1: - func_8008B620(); - return; + func_8008B620(objectIndex); + break; case 2: func_80086F60(objectIndex); - /* fallthrough */ - case 0: - return; + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008B724.s") -#endif -extern void func_8008B6A4(s32); /* extern */ - -typedef struct { - s16 a[0x70]; -} asdf; - -extern asdf D_80165CC6[0x70]; - -void func_8008B78C(s32 arg0) { - if ((D_80165CC6[arg0].a[0] != 0) && (D_80165CC6[arg0].a[0] == 1)) { - func_8008B6A4(arg0); +void func_8008B78C(s32 objectIndex) { + switch (D_80165C18[objectIndex].unk_0AE) { + case 0: + break; + case 1: + func_8008B6A4(objectIndex); + break; } } @@ -1908,95 +1819,84 @@ void func_8008BFC0(s32 objectIndex) { D_80165C18[objectIndex].unk_09E = D_80165C18[objectIndex].pos[1]; } -#ifdef MIPS_TO_C -//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc -void func_80088228(); /* extern */ -void func_80088364(); /* extern */ -void func_8008B620(); /* extern */ -void func_8008B6A4(); /* extern */ - void func_8008BFFC(s32 objectIndex) { - s16 temp_v0; - s16 temp_v0_2; - s16 temp_v0_3; - s16 temp_v0_4; - s16 temp_v0_5; - s16 temp_v0_6; struct_80165C18_entry *temp_v1; - u8 temp_t8; temp_v1 = &D_80165C18[objectIndex]; - temp_t8 = (u8) temp_v1->unk_0DE; - switch (temp_t8) { + switch (temp_v1->unk_0DE) { case 1: if (temp_v1->unk_0AE == 1) { - func_8008B620(); - return; + func_8008B620(objectIndex); } - default: - case 0: /* switch 1 */ - case 0: /* switch 2 */ - case 0: /* switch 3 */ - return; + break; case 2: - temp_v0 = temp_v1->unk_0AE; - if ((temp_v0 != 0) && (temp_v0 == 1)) { - func_8008B6A4(); - return; - } - break; - case 3: - temp_v0_2 = temp_v1->unk_0AE; - if ((temp_v0_2 != 0) && (temp_v0_2 == 1)) { - func_8008B620(); - return; - } - break; - case 4: - temp_v0_3 = temp_v1->unk_0AE; - switch (temp_v0_3) { /* switch 1; irregular */ - case 1: /* switch 1 */ - func_8008B620(); - return; - case 2: /* switch 1 */ - func_80086F60(objectIndex); - return; - } - break; - case 5: - temp_v0_4 = temp_v1->unk_0AE; - switch (temp_v0_4) { /* switch 2; irregular */ - case 1: /* switch 2 */ - func_8008B620(); - return; - case 2: /* switch 2 */ - func_80086F60(objectIndex); - return; - } - break; - case 6: - temp_v0_5 = temp_v1->unk_0AE; - if ((temp_v0_5 != 0) && (temp_v0_5 == 1)) { - func_8008B620(); - return; - } - break; - case 7: - temp_v0_6 = temp_v1->unk_0AE; - switch (temp_v0_6) { /* switch 3; irregular */ - case 1: /* switch 3 */ - func_80088228(); - return; - case 2: /* switch 3 */ - func_80088364(); + switch (temp_v1->unk_0AE) { + case 0: + break; + case 1: + func_8008B6A4(objectIndex); break; } break; + case 3: + switch (temp_v1->unk_0AE) { + case 0: + break; + case 1: + func_8008B620(objectIndex); + break; + } + break; + case 4: + switch (temp_v1->unk_0AE) { /* switch 1; irregular */ + case 0: /* switch 1 */ + break; + case 1: /* switch 1 */ + func_8008B620(objectIndex); + break; + case 2: /* switch 1 */ + func_80086F60(objectIndex); + break; + } + break; + case 5: + switch (temp_v1->unk_0AE) { /* switch 2; irregular */ + case 0: /* switch 2 */ + break; + case 1: /* switch 2 */ + func_8008B620(objectIndex); + break; + case 2: /* switch 2 */ + func_80086F60(objectIndex); + break; + } + break; + case 6: + switch (temp_v1->unk_0AE) { + case 0: + break; + case 1: + func_8008B620(objectIndex); + break; + } + break; + case 7: + switch (temp_v1->unk_0AE) { /* switch 3; irregular */ + case 0: /* switch 3 */ + break; + case 1: /* switch 3 */ + func_80088228(objectIndex); + break; + case 2: /* switch 3 */ + func_80088364(objectIndex); + break; + } + break; + case 0: + default: + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_80086E70/func_8008BFFC.s") -#endif UNUSED void func_8008C1B8(UNUSED s32 arg0) { diff --git a/src/code_80086E70.h b/src/code_80086E70.h index fc9124b8c..265fd7b3b 100644 --- a/src/code_80086E70.h +++ b/src/code_80086E70.h @@ -4,11 +4,6 @@ #include "common_structs.h" #include "camera.h" -void func_8008BFFC(s32); -void func_8008B038(s32); -void func_8008AE9C(s32); -void func_8008AB10(s32); -void func_8008AA3C(s32); void func_80086E70(s32); void func_80086EAC(s32, s32, s16); void func_80086EF0(s32); @@ -16,8 +11,6 @@ void func_80086F10(s32, s32, u16[][4]); void func_80086F60(s32); s32 func_80086FA4(s32); void func_80086FD4(s32); -void func_8008B724(s32); -void func_8008B78C(s32); void func_8008701C(s32, s32); s32 func_80087060(s32, s32); s32 func_80087104(s32, u16); @@ -57,7 +50,10 @@ void func_800880DC(); void func_800880E4(s32); void func_80088150(s32); void func_80088178(s32, s32); +void func_80088228(s32); s32 func_800882B0(s32, s32); +void func_80088364(s32); +void func_800883FC(s32); s32 func_8008847C(s32); s32 func_80088538(s32); s32 func_8008861C(s32); @@ -112,6 +108,7 @@ s32 func_8008A890(Camera*); s32 func_8008A8B0(s16, s16); void func_8008A920(s32); void func_8008A9B8(s32); +void func_8008AA3C(s32); void func_8008AB10(s32); void func_8008ABC0(s32); void func_8008AC40(s32); @@ -119,6 +116,7 @@ void func_8008ACC0(); void func_8008ACC8(); void func_8008ACD0(); void func_8008ACD8(); +void func_8008ACE0(f32*,f32); void func_8008ADC0(); void func_8008ADC8(); void func_8008AE8C(); @@ -131,13 +129,20 @@ void func_8008B020(); void func_8008B028(); void func_8008B030(); void func_8008B038(s32); -void func_8008ACE0(f32*,f32); void func_8008B17C(s32, f32); void func_8008B1B4(); void func_8008B1BC(); void func_8008B1C4(); void func_8008B1CC(); +void func_8008B1D4(s32); +void func_8008B284(s32); +void func_8008B3E4(s32); void func_8008B44C(s32); +void func_8008B478(s32, s32); +void func_8008B620(s32); +void func_8008B6A4(s32); +void func_8008B724(s32); +void func_8008B78C(s32); void func_8008B7D4(s32, f32, f32, f32); void func_8008B80C(s32, f32, f32, f32); void func_8008B844(s32); @@ -156,6 +161,7 @@ void func_8008BEA4(s32, u16, u16); void func_8008BFC0(s32); void func_8008BF18(s32); void func_8008BF64(s32); +void func_8008BFFC(s32); void func_8008C1B8(); void func_8008C1C0();