From 5ded988652fda5e324e478e5945175837b9b7713 Mon Sep 17 00:00:00 2001 From: farisawan-2000 Date: Thu, 28 Jan 2021 08:04:02 -0500 Subject: [PATCH] renamed object_manager, some more decomp there --- .../ovl0/ovl0_2_5/func_8000A498.s | 15 -- .../ovl0/ovl0_2_5/func_8000A4D0.s | 15 -- .../ovl0/ovl0_2_5/func_8000A508.s | 16 -- .../ovl0/ovl0_2_5/func_8000A544.s | 16 -- .../ovl0/ovl0_2_5/func_8000A640.s | 19 -- .../ovl0/ovl0_2_5/func_8000A684.s | 23 -- .../ovl0/ovl0_2_5/func_8000A6D8.s | 24 -- .../ovl0/ovl0_2_5/func_8000A730.s | 14 -- .../ovl0/ovl0_2_5/func_8000A764.s | 17 -- .../ovl0/ovl0_2_5/func_8000A7A0.s | 17 -- kirby.us.ld | 6 +- src/ovl0/{ovl0_2_5_2.c => object_manager.c} | 218 ++++++------------ src/ovl0/ovl0_3.h | 5 + tools/scut/GeoFromBin.py | 1 + 14 files changed, 78 insertions(+), 328 deletions(-) delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A498.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A4D0.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A508.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A544.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A640.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A684.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A6D8.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A730.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A764.s delete mode 100644 asm/non_matchings/ovl0/ovl0_2_5/func_8000A7A0.s rename src/ovl0/{ovl0_2_5_2.c => object_manager.c} (93%) diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A498.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A498.s deleted file mode 100644 index c24d9a79..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A498.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_8000A498 -/* 00B098 8000A498 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B09C 8000A49C AFA50024 */ sw $a1, 0x24($sp) -/* 00B0A0 8000A4A0 00802825 */ move $a1, $a0 -/* 00B0A4 8000A4A4 AFBF001C */ sw $ra, 0x1c($sp) -/* 00B0A8 8000A4A8 AFA40020 */ sw $a0, 0x20($sp) -/* 00B0AC 8000A4AC 00C03825 */ move $a3, $a2 -/* 00B0B0 8000A4B0 93A60027 */ lbu $a2, 0x27($sp) -/* 00B0B4 8000A4B4 00002025 */ move $a0, $zero -/* 00B0B8 8000A4B8 0C0028D4 */ jal func_8000A350 -/* 00B0BC 8000A4BC AFA00010 */ sw $zero, 0x10($sp) -/* 00B0C0 8000A4C0 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B0C4 8000A4C4 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B0C8 8000A4C8 03E00008 */ jr $ra -/* 00B0CC 8000A4CC 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A4D0.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A4D0.s deleted file mode 100644 index f775f1de..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A4D0.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_8000A4D0 -/* 00B0D0 8000A4D0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B0D4 8000A4D4 AFA50024 */ sw $a1, 0x24($sp) -/* 00B0D8 8000A4D8 00802825 */ move $a1, $a0 -/* 00B0DC 8000A4DC AFBF001C */ sw $ra, 0x1c($sp) -/* 00B0E0 8000A4E0 AFA40020 */ sw $a0, 0x20($sp) -/* 00B0E4 8000A4E4 00C03825 */ move $a3, $a2 -/* 00B0E8 8000A4E8 93A60027 */ lbu $a2, 0x27($sp) -/* 00B0EC 8000A4EC 24040001 */ li $a0, 1 -/* 00B0F0 8000A4F0 0C0028D4 */ jal func_8000A350 -/* 00B0F4 8000A4F4 AFA00010 */ sw $zero, 0x10($sp) -/* 00B0F8 8000A4F8 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B0FC 8000A4FC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B100 8000A500 03E00008 */ jr $ra -/* 00B104 8000A504 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A508.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A508.s deleted file mode 100644 index 18eb8d3d..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A508.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_8000A508 -/* 00B108 8000A508 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B10C 8000A50C AFA50024 */ sw $a1, 0x24($sp) -/* 00B110 8000A510 8FAE0024 */ lw $t6, 0x24($sp) -/* 00B114 8000A514 AFBF001C */ sw $ra, 0x1c($sp) -/* 00B118 8000A518 AFA40020 */ sw $a0, 0x20($sp) -/* 00B11C 8000A51C 00802825 */ move $a1, $a0 -/* 00B120 8000A520 8DC70010 */ lw $a3, 0x10($t6) -/* 00B124 8000A524 91C6000C */ lbu $a2, 0xc($t6) -/* 00B128 8000A528 24040002 */ li $a0, 2 -/* 00B12C 8000A52C 0C0028D4 */ jal func_8000A350 -/* 00B130 8000A530 AFAE0010 */ sw $t6, 0x10($sp) -/* 00B134 8000A534 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B138 8000A538 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B13C 8000A53C 03E00008 */ jr $ra -/* 00B140 8000A540 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A544.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A544.s deleted file mode 100644 index 9eaa596d..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A544.s +++ /dev/null @@ -1,16 +0,0 @@ -glabel func_8000A544 -/* 00B144 8000A544 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B148 8000A548 AFA50024 */ sw $a1, 0x24($sp) -/* 00B14C 8000A54C 8FAE0024 */ lw $t6, 0x24($sp) -/* 00B150 8000A550 AFBF001C */ sw $ra, 0x1c($sp) -/* 00B154 8000A554 AFA40020 */ sw $a0, 0x20($sp) -/* 00B158 8000A558 00802825 */ move $a1, $a0 -/* 00B15C 8000A55C 8DC70010 */ lw $a3, 0x10($t6) -/* 00B160 8000A560 91C6000C */ lbu $a2, 0xc($t6) -/* 00B164 8000A564 24040003 */ li $a0, 3 -/* 00B168 8000A568 0C0028D4 */ jal func_8000A350 -/* 00B16C 8000A56C AFAE0010 */ sw $t6, 0x10($sp) -/* 00B170 8000A570 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B174 8000A574 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B178 8000A578 03E00008 */ jr $ra -/* 00B17C 8000A57C 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A640.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A640.s deleted file mode 100644 index 786a8de6..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A640.s +++ /dev/null @@ -1,19 +0,0 @@ -glabel func_8000A640 -/* 00B240 8000A640 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B244 8000A644 AFA60028 */ sw $a2, 0x28($sp) -/* 00B248 8000A648 30C600FF */ andi $a2, $a2, 0xff -/* 00B24C 8000A64C 14800003 */ bnez $a0, .L8000A65C_ovl0 -/* 00B250 8000A650 AFBF001C */ sw $ra, 0x1c($sp) -/* 00B254 8000A654 3C048005 */ lui $a0, %hi(D_8004A7C4) # $a0, 0x8005 -/* 00B258 8000A658 8C84A7C4 */ lw $a0, %lo(D_8004A7C4)($a0) -.L8000A65C_ovl0: -/* 00B25C 8000A65C 8FAE0030 */ lw $t6, 0x30($sp) -/* 00B260 8000A660 AFA40020 */ sw $a0, 0x20($sp) -/* 00B264 8000A664 0C002960 */ jal func_8000A580 -/* 00B268 8000A668 AFAE0010 */ sw $t6, 0x10($sp) -/* 00B26C 8000A66C 0C002199 */ jal func_80008664 -/* 00B270 8000A670 8FA40020 */ lw $a0, 0x20($sp) -/* 00B274 8000A674 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B278 8000A678 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B27C 8000A67C 03E00008 */ jr $ra -/* 00B280 8000A680 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A684.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A684.s deleted file mode 100644 index 3b524ef9..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A684.s +++ /dev/null @@ -1,23 +0,0 @@ -glabel func_8000A684 -/* 00B284 8000A684 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B288 8000A688 AFBF001C */ sw $ra, 0x1c($sp) -/* 00B28C 8000A68C AFA60028 */ sw $a2, 0x28($sp) -/* 00B290 8000A690 14800003 */ bnez $a0, .L8000A6A0_ovl0 -/* 00B294 8000A694 AFA7002C */ sw $a3, 0x2c($sp) -/* 00B298 8000A698 3C048005 */ lui $a0, %hi(D_8004A7C4) # $a0, 0x8005 -/* 00B29C 8000A69C 8C84A7C4 */ lw $a0, %lo(D_8004A7C4)($a0) -.L8000A6A0_ovl0: -/* 00B2A0 8000A6A0 8FAE002C */ lw $t6, 0x2c($sp) -/* 00B2A4 8000A6A4 8FAF0028 */ lw $t7, 0x28($sp) -/* 00B2A8 8000A6A8 91C6000D */ lbu $a2, 0xd($t6) -/* 00B2AC 8000A6AC 8DC70028 */ lw $a3, 0x28($t6) -/* 00B2B0 8000A6B0 AFA40020 */ sw $a0, 0x20($sp) -/* 00B2B4 8000A6B4 0C002960 */ jal func_8000A580 -/* 00B2B8 8000A6B8 AFAF0010 */ sw $t7, 0x10($sp) -/* 00B2BC 8000A6BC 8FA40020 */ lw $a0, 0x20($sp) -/* 00B2C0 8000A6C0 0C002164 */ jal func_80008590 -/* 00B2C4 8000A6C4 8FA5002C */ lw $a1, 0x2c($sp) -/* 00B2C8 8000A6C8 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B2CC 8000A6CC 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B2D0 8000A6D0 03E00008 */ jr $ra -/* 00B2D4 8000A6D4 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A6D8.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A6D8.s deleted file mode 100644 index daf781a4..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A6D8.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_8000A6D8 -/* 00B2D8 8000A6D8 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B2DC 8000A6DC AFBF001C */ sw $ra, 0x1c($sp) -/* 00B2E0 8000A6E0 AFA60028 */ sw $a2, 0x28($sp) -/* 00B2E4 8000A6E4 14800003 */ bnez $a0, .L8000A6F4_ovl0 -/* 00B2E8 8000A6E8 AFA7002C */ sw $a3, 0x2c($sp) -/* 00B2EC 8000A6EC 3C048005 */ lui $a0, %hi(D_8004A7C4) # $a0, 0x8005 -/* 00B2F0 8000A6F0 8C84A7C4 */ lw $a0, %lo(D_8004A7C4)($a0) -.L8000A6F4_ovl0: -/* 00B2F4 8000A6F4 8FAE002C */ lw $t6, 0x2c($sp) -/* 00B2F8 8000A6F8 8FAF0028 */ lw $t7, 0x28($sp) -/* 00B2FC 8000A6FC 91C6000D */ lbu $a2, 0xd($t6) -/* 00B300 8000A700 8DC70028 */ lw $a3, 0x28($t6) -/* 00B304 8000A704 AFA40020 */ sw $a0, 0x20($sp) -/* 00B308 8000A708 0C002960 */ jal func_8000A580 -/* 00B30C 8000A70C AFAF0010 */ sw $t7, 0x10($sp) -/* 00B310 8000A710 8FB8002C */ lw $t8, 0x2c($sp) -/* 00B314 8000A714 8FA40020 */ lw $a0, 0x20($sp) -/* 00B318 8000A718 0C002164 */ jal func_80008590 -/* 00B31C 8000A71C 8F050008 */ lw $a1, 8($t8) -/* 00B320 8000A720 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B324 8000A724 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B328 8000A728 03E00008 */ jr $ra -/* 00B32C 8000A72C 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A730.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A730.s deleted file mode 100644 index fa450d53..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A730.s +++ /dev/null @@ -1,14 +0,0 @@ -glabel func_8000A730 -/* 00B330 8000A730 240E0020 */ li $t6, 32 -/* 00B334 8000A734 A08E000D */ sb $t6, 0xd($a0) -/* 00B338 8000A738 AC860028 */ sw $a2, 0x28($a0) -/* 00B33C 8000A73C AC85002C */ sw $a1, 0x2c($a0) -/* 00B340 8000A740 AC870030 */ sw $a3, 0x30($a0) -/* 00B344 8000A744 8FAF0010 */ lw $t7, 0x10($sp) -/* 00B348 8000A748 AC800038 */ sw $zero, 0x38($a0) -/* 00B34C 8000A74C 3C188004 */ lui $t8, %hi(D_8003DCA8) # $t8, 0x8004 -/* 00B350 8000A750 AC8F0034 */ sw $t7, 0x34($a0) -/* 00B354 8000A754 8F18DCA8 */ lw $t8, %lo(D_8003DCA8)($t8) -/* 00B358 8000A758 2719FFFF */ addiu $t9, $t8, -1 -/* 00B35C 8000A75C 03E00008 */ jr $ra -/* 00B360 8000A760 A099000E */ sb $t9, 0xe($a0) diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A764.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A764.s deleted file mode 100644 index 4d4acfd0..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A764.s +++ /dev/null @@ -1,17 +0,0 @@ -glabel func_8000A764 -/* 00B364 8000A764 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B368 8000A768 14800003 */ bnez $a0, .L8000A778_ovl0 -/* 00B36C 8000A76C AFBF001C */ sw $ra, 0x1c($sp) -/* 00B370 8000A770 3C048005 */ lui $a0, %hi(D_8004A7C4) # $a0, 0x8005 -/* 00B374 8000A774 8C84A7C4 */ lw $a0, %lo(D_8004A7C4)($a0) -.L8000A778_ovl0: -/* 00B378 8000A778 8FAE0030 */ lw $t6, 0x30($sp) -/* 00B37C 8000A77C AFA40020 */ sw $a0, 0x20($sp) -/* 00B380 8000A780 0C0029CC */ jal func_8000A730 -/* 00B384 8000A784 AFAE0010 */ sw $t6, 0x10($sp) -/* 00B388 8000A788 0C00217E */ jal func_800085F8 -/* 00B38C 8000A78C 8FA40020 */ lw $a0, 0x20($sp) -/* 00B390 8000A790 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B394 8000A794 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B398 8000A798 03E00008 */ jr $ra -/* 00B39C 8000A79C 00000000 */ nop diff --git a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A7A0.s b/asm/non_matchings/ovl0/ovl0_2_5/func_8000A7A0.s deleted file mode 100644 index 4355bf26..00000000 --- a/asm/non_matchings/ovl0/ovl0_2_5/func_8000A7A0.s +++ /dev/null @@ -1,17 +0,0 @@ -glabel func_8000A7A0 -/* 00B3A0 8000A7A0 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 00B3A4 8000A7A4 14800003 */ bnez $a0, .L8000A7B4_ovl0 -/* 00B3A8 8000A7A8 AFBF001C */ sw $ra, 0x1c($sp) -/* 00B3AC 8000A7AC 3C048005 */ lui $a0, %hi(D_8004A7C4) # $a0, 0x8005 -/* 00B3B0 8000A7B0 8C84A7C4 */ lw $a0, %lo(D_8004A7C4)($a0) -.L8000A7B4_ovl0: -/* 00B3B4 8000A7B4 8FAE0030 */ lw $t6, 0x30($sp) -/* 00B3B8 8000A7B8 AFA40020 */ sw $a0, 0x20($sp) -/* 00B3BC 8000A7BC 0C0029CC */ jal func_8000A730 -/* 00B3C0 8000A7C0 AFAE0010 */ sw $t6, 0x10($sp) -/* 00B3C4 8000A7C4 0C002199 */ jal func_80008664 -/* 00B3C8 8000A7C8 8FA40020 */ lw $a0, 0x20($sp) -/* 00B3CC 8000A7CC 8FBF001C */ lw $ra, 0x1c($sp) -/* 00B3D0 8000A7D0 27BD0020 */ addiu $sp, $sp, 0x20 -/* 00B3D4 8000A7D4 03E00008 */ jr $ra -/* 00B3D8 8000A7D8 00000000 */ nop diff --git a/kirby.us.ld b/kirby.us.ld index 71db11bc..cae4e181 100644 --- a/kirby.us.ld +++ b/kirby.us.ld @@ -61,7 +61,7 @@ SECTIONS BUILD_DIR/src/ovl0/memory_layer.o(.text); BUILD_DIR/src/ovl0/ovl0_2_5_1.o(.text); BUILD_DIR/src/ovl0/rdp_reset.o(.text*); /* Why is the asterisk needed? */ - BUILD_DIR/src/ovl0/ovl0_2_5_2.o(.text); + BUILD_DIR/src/ovl0/object_manager.o(.text); BUILD_DIR/src/ovl0/ovl0_3.o(.text); BUILD_DIR/src/ovl0/ovl0_4.o(.text); BUILD_DIR/src/ovl0/ovl0_5.o(.text); @@ -238,7 +238,7 @@ SECTIONS BUILD_DIR/src/ovl0/main.o(.data*); BUILD_DIR/src/ovl0/ovl0_2_5.o(.data*); BUILD_DIR/src/ovl0/rdp_reset.o(.data*); - BUILD_DIR/src/ovl0/ovl0_2_5_2.o(.data*); + BUILD_DIR/src/ovl0/object_manager.o(.data*); BUILD_DIR/src/ovl0/ovl0_4.o(.data*); BUILD_DIR/src/ovl0/ovl0_6.o(.data*); BUILD_DIR/src/ovl0/ovl0_7.o(.data*); @@ -307,7 +307,7 @@ SECTIONS BUILD_DIR/src/ovl0/ovl0_2_5.o(.bss); BUILD_DIR/src/ovl0/ovl0_2_5_1.o(.bss); BUILD_DIR/src/ovl0/rdp_reset.o(.bss); - BUILD_DIR/src/ovl0/ovl0_2_5_2.o(.bss); + BUILD_DIR/src/ovl0/object_manager.o(.bss); BUILD_DIR/asm/ovl0/ovl0_bss.o(.bss); BUILD_DIR/libultra.a:sptask.o(.bss); BUILD_DIR/asm/ovl0/leo_interrupt.o(.bss); diff --git a/src/ovl0/ovl0_2_5_2.c b/src/ovl0/object_manager.c similarity index 93% rename from src/ovl0/ovl0_2_5_2.c rename to src/ovl0/object_manager.c index 41b3ab26..29124030 100644 --- a/src/ovl0/ovl0_2_5_2.c +++ b/src/ovl0/object_manager.c @@ -506,7 +506,7 @@ void func_80008830(struct Animation *anim, struct AnimStack *element) { anim->unk6C = element; } -void func_80008840(struct unk80008840 *arg0, struct AnimStack *element) { +void func_80008840(struct Animation *arg0, struct AnimStack *element) { element->next = arg0->unk90; arg0->unk90 = element; } @@ -669,9 +669,8 @@ struct ObjProcess *func_80008B94(struct UnkStruct8004A7C4 *arg0, struct ObjThrea // one reordered addition here osCreateThread(&oThread->thread, phi_a1, entry, arg0, (&arg4->stack[stackSize / (4 * 2)]), 0x33); arg4->stack[7] = STACK_TOP_MAGIC; - if (D_8003DE50 >= 20000000) { + if (D_8003DE50 >= 20000000) D_8003DE50 = 10000000; - } } func_800080C0(oProcess); return oProcess; @@ -823,7 +822,7 @@ void func_80009918(struct unk80008840 *arg0) { arg0->unk98 = D_80040650; } -void *func_80009978(struct Animation* arg0, u8 arg1) { +struct AnimStack *func_80009978(struct Animation* arg0, u8 arg1) { struct AnimStack *temp_v0; temp_v0 = object_manager_get_animstack(); @@ -1410,91 +1409,66 @@ void func_8000A29C(struct UnkStruct8004A7C4 *arg0) { #ifdef MIPS_TO_C void func_8000A350(s32 arg0, struct UnkStruct8004A7C4 *arg1, u8 arg2, u32 arg3, struct UnkStruct8004A7C4 *arg4) { struct ObjThreadStack *sp20; - struct ObjProcess *temp_s0; - struct ObjThreadStack *temp_s1; - struct UnkStruct8004A7C4 *phi_s0; - struct ObjThreadStack *phi_s1; - struct ObjProcess *phi_s1_2; if (arg2 >= 0x20) { fatal_printf(&D_80040414, arg2, arg1->objId); // "omGMoveCommon() : link num over : link = %d : id = %d\n" while (1); } - phi_s0 = arg1; - if (arg1 == 0) { - phi_s0 = D_8004A7C4; + if (arg1 == NULL) { + arg1 = D_8004A7C4; } - sp20 = phi_s0->unk18; - phi_s0->unk18 = NULL; - phi_s0->unk1C = 0; - phi_s1 = sp20; - if (sp20 != 0) { -loop_6: - func_800081C4(phi_s1); - temp_s1 = phi_s1->unk0; - phi_s1 = temp_s1; - if (temp_s1 != 0) { - goto loop_6; - } + sp20 = arg1->unk18; + arg1->unk18 = NULL; + arg1->unk1C = 0; + while (sp20 != 0) { + func_800081C4(sp20); + sp20 = sp20->unk0; } - func_80008528(phi_s0); - phi_s0->unkC = arg2; - phi_s0->unk10 = arg3; + func_80008528(arg1); + arg1->unkC = arg2; + arg1->unk10 = arg3; switch (arg0) { - case 0: func_80008434(phi_s0); break; - case 1: func_800084A0(phi_s0); break; - case 2: func_800083CC(phi_s0, arg4); break; - case 3: func_800083CC(phi_s0, arg4->unk8); break; + case 0: + func_80008434(arg1); + break; + case 1: + func_800084A0(arg1); + break; + case 2: + func_800083CC(arg1, arg4); + break; + case 3: + func_800083CC(arg1, arg4->unk8); + break; } - if (sp20 != 0) { -loop_18: - temp_s0 = phi_s1_2->unk0; - func_800080C0(phi_s1_2); - phi_s1_2 = temp_s0; - if (temp_s0 != 0) { - goto loop_18; - } + while (sp20 != 0) { + func_800080C0(sp20); + sp20 = sp20->unk0; } } #else +void func_8000A350(s32 arg0, struct UnkStruct8004A7C4 *arg1, u8 arg2, u32 arg3, struct UnkStruct8004A7C4 *arg4); GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A350.s") #endif -#ifdef MIPS_TO_C -void func_8000A498(s32 arg0, u8 arg1, ? arg2) { - func_8000A350(0, arg0, arg1, arg2, 0); +void func_8000A498(struct UnkStruct8004A7C4 *arg0, u8 arg1, s32 arg2) { + func_8000A350(0, arg0, arg1, arg2, NULL); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A498.s") -#endif -#ifdef MIPS_TO_C -void func_8000A4D0(s32 arg0, u8 arg1, ? arg2) { - func_8000A350(1, arg0, arg1, arg2, 0); +void func_8000A4D0(struct UnkStruct8004A7C4 *arg0, u8 arg1, s32 arg2) { + func_8000A350(1, arg0, arg1, arg2, NULL); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A4D0.s") -#endif -#ifdef MIPS_TO_C -void func_8000A508(s32 arg0, void *arg1) { +void func_8000A508(struct UnkStruct8004A7C4 *arg0, struct UnkStruct8004A7C4 *arg1) { func_8000A350(2, arg0, arg1->unkC, arg1->unk10, arg1); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A508.s") -#endif -#ifdef MIPS_TO_C -void func_8000A544(s32 arg0, void *arg1) { +void func_8000A544(struct UnkStruct8004A7C4 *arg0, struct UnkStruct8004A7C4 *arg1) { func_8000A350(3, arg0, arg1->unkC, arg1->unk10, arg1); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A544.s") -#endif extern u32 D_8003DCA8; -extern u8 D_8004044C[]; void func_8000A580(struct UnkStruct8004A7C4 *arg0, s32 arg1, u8 link, s32 arg3, s32 arg4) { if (link >= 0x20) { @@ -1517,110 +1491,63 @@ void func_8000A5FC(struct UnkStruct8004A7C4 *arg0, s32 arg1, u8 arg2, s32 arg3, func_800085F8(arg0); } -#ifdef MIPS_TO_C -void func_8000A640(struct UnkStruct8004A7C4 *arg0, s32 arg2, s32 arg4) { - struct UnkStruct8004A7C4 *phi_a0; - - phi_a0 = arg0; +void func_8000A640(struct UnkStruct8004A7C4 *arg0, s32 arg1, u8 link, s32 arg3, s32 arg4) { if (arg0 == 0) { - phi_a0 = D_8004A7C4; + arg0 = D_8004A7C4; } - arg0 = phi_a0; - func_8000A580(phi_a0, arg2 & 0xFF, arg4); + func_8000A580(arg0, arg1, link, arg3, arg4); func_80008664(arg0); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A640.s") -#endif -#ifdef MIPS_TO_C -void func_8000A684(struct UnkStruct8004A7C4 *arg0, s32 arg2, struct UnkStruct8004A7C4 *arg3) { - struct UnkStruct8004A7C4 *phi_a0; - - phi_a0 = arg0; +void func_8000A684(struct UnkStruct8004A7C4 *arg0, s32 arg1, s32 arg2, struct UnkStruct8004A7C4 *arg3) { if (arg0 == 0) { - phi_a0 = D_8004A7C4; + arg0 = D_8004A7C4; } - arg0 = phi_a0; - func_8000A580(phi_a0, arg3->unkD, arg3->unk28, arg2); + func_8000A580(arg0, arg1, arg3->unkD, arg3->unk28, arg2); func_80008590(arg0, arg3); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A684.s") -#endif -#ifdef MIPS_TO_C -void func_8000A6D8(struct UnkStruct8004A7C4 *arg0, s32 arg2, void *arg3) { - struct UnkStruct8004A7C4 *phi_a0; - - phi_a0 = arg0; +void func_8000A6D8(struct UnkStruct8004A7C4 *arg0, s32 arg1, s32 arg2, struct UnkStruct8004A7C4 *arg3) { if (arg0 == 0) { - phi_a0 = D_8004A7C4; + arg0 = D_8004A7C4; } - arg0 = phi_a0; - func_8000A580(phi_a0, arg3->unkD, arg3->unk28, arg2); + func_8000A580(arg0, arg1, arg3->unkD, arg3->unk28, arg2); func_80008590(arg0, arg3->unk8); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A6D8.s") -#endif -#ifdef MIPS_TO_C -void func_8000A730(void *arg0, ?32 arg1, ?32 arg2, ?32 arg3, s32 arg4) { +void func_8000A730(struct UnkStruct8004A7C4 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { arg0->unkD = 0x20; arg0->unk28 = arg2; arg0->unk2C = arg1; arg0->unk30 = arg3; - arg0->unk38 = 0; arg0->unk34 = arg4; - arg0->unkE = *D_8003DCA8 - 1; + arg0->unk38 = 0; + arg0->unkE = D_8003DCA8 - 1; } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A730.s") -#endif -#ifdef MIPS_TO_C -void func_8000A764(struct UnkStruct8004A7C4 *arg0, s32 arg4) { - struct UnkStruct8004A7C4 *phi_a0; - - phi_a0 = arg0; +void func_8000A764(struct UnkStruct8004A7C4 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { if (arg0 == 0) { - phi_a0 = D_8004A7C4; + arg0 = D_8004A7C4; } - arg0 = phi_a0; - func_8000A730(phi_a0, arg4); + func_8000A730(arg0, arg1, arg2, arg3, arg4); func_800085F8(arg0); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A764.s") -#endif -#ifdef MIPS_TO_C -void func_8000A7A0(struct UnkStruct8004A7C4 *arg0, s32 arg4) { - struct UnkStruct8004A7C4 *phi_a0; - - phi_a0 = arg0; +void func_8000A7A0(struct UnkStruct8004A7C4 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { if (arg0 == 0) { - phi_a0 = D_8004A7C4; + arg0 = D_8004A7C4; } - arg0 = phi_a0; - func_8000A730(phi_a0, arg4); + func_8000A730(arg0, arg1, arg2, arg3, arg4); func_80008664(arg0); } -#else -GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A7A0.s") -#endif +// arg memes on both these functions #ifdef MIPS_TO_C -void func_8000A7DC(struct UnkStruct8004A7C4 *arg0, s32 arg2, s32 arg3, struct UnkStruct8004A7C4 *arg4) { - struct UnkStruct8004A7C4 *phi_a0; - - phi_a0 = arg0; +void func_8000A7DC(struct UnkStruct8004A7C4 *arg0, s32 arg1, s32 arg2, s32 arg3, struct UnkStruct8004A7C4 *arg4) { if (arg0 == 0) { - phi_a0 = D_8004A7C4; + arg0 = D_8004A7C4; } - arg0 = phi_a0; - func_8000A730(phi_a0, arg4->unk28, arg2, arg3); + func_8000A730(arg0, arg1, arg4->unk28, arg3, arg4); func_80008590(arg0, arg4); } #else @@ -1628,15 +1555,11 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000A7DC.s") #endif #ifdef MIPS_TO_C -void func_8000A830(struct UnkStruct8004A7C4 *arg0, s32 arg2, s32 arg3, struct UnkStruct8004A7C4 *arg4) { - struct UnkStruct8004A7C4 *phi_a0; - - phi_a0 = arg0; +void func_8000A830(struct UnkStruct8004A7C4 *arg0, s32 arg1, s32 arg2, s32 arg3, struct UnkStruct8004A7C4 *arg4) { if (arg0 == 0) { - phi_a0 = D_8004A7C4; + arg0 = D_8004A7C4; } - arg0 = phi_a0; - func_8000A730(phi_a0, arg4->unk28, arg2, arg3); + func_8000A730(arg0, arg4->unk28, arg2, arg3, arg4); func_80008590(arg0, arg4->unk8); } #else @@ -1719,7 +1642,7 @@ struct UnkStruct8004A7F8 *func_8000AAE0(void) { D_8004A7C8 = NULL; D_8004A7CC = 0; - temp_v1 = *D_8003DCA8 - 1; + temp_v1 = D_8003DCA8 - 1; phi_v0 = D_8004A7F8; loop_1: temp_v0 = phi_v0 + 0x50; @@ -2357,22 +2280,19 @@ GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000B448.s") #endif #ifdef MIPS_TO_C -void func_8000B4D4(u32 arg0, void (*arg1)(struct UnkStruct8004A7C4*, s32), s32 arg2, s32 arg3) { - void *temp_s0; - void *temp_s1; - void *phi_s0; +void func_8000B4D4(struct UnkStruct8004A7C4 *arg0, s32 (*arg1)(struct UnkStruct8004A7C4*, s32), s32 arg2, s32 arg3) { + struct UnkStruct8004A578 *phi_s0; - temp_s0 = D_8004A578[arg0->objId]; - while (temp_s0 != NULL) { - phi_s0 = phi_s0->unk4; - // temp_s1 = phi_s0->unk4; + phi_s0 = D_8004A578[arg0->objId]; + while (phi_s0 != NULL) { if ((arg1(phi_s0, arg2) != 0) && (arg3 == 1)) { break; } - // phi_s0 = temp_s1; + phi_s0 = phi_s0->unk4; } } #else +void func_8000B4D4(u32 arg0, s32 (*arg1)(struct UnkStruct8004A7C4*, s32), s32 arg2, s32 arg3); GLOBAL_ASM("asm/non_matchings/ovl0/ovl0_2_5/func_8000B4D4.s") #endif @@ -2415,7 +2335,7 @@ u32 *func_8000B63C(u32 *arg0, s32 arg1) { return (arg1 == *arg0) ? arg0 : NULL; } -void func_8000B4D4(u32, void*, s32, s32); +// void func_8000B4D4(u32, void*, s32, s32); void func_8000B65C(u32 arg0, s32 arg1) { func_8000B4D4(arg0, &func_8000B63C, arg1, 1); diff --git a/src/ovl0/ovl0_3.h b/src/ovl0/ovl0_3.h index 862d01af..d12ec83c 100644 --- a/src/ovl0/ovl0_3.h +++ b/src/ovl0/ovl0_3.h @@ -54,6 +54,11 @@ struct Animation { f32 scale; // unk74 u32 unk78; f32 unk7C; + u32 unk80; + u32 unk84; + u32 unk88; + u32 unk8C; + struct Animation *unk90; }; void func_8000C3D8(struct Animation *anim); diff --git a/tools/scut/GeoFromBin.py b/tools/scut/GeoFromBin.py index cd1a900f..b9b6b251 100644 --- a/tools/scut/GeoFromBin.py +++ b/tools/scut/GeoFromBin.py @@ -785,6 +785,7 @@ def WriteUnk2(file,GH,unk): # file.write(" 0x%X"%u + "\n") # else: file.write(" BANK_INDEX(%d, %d)"%(u[0] >> 16, u[0] & 0xFFFF) + ",\n") + # file.write(" 0x%08X"%(u[0]) + ",\n") file.write("};\n") else: file.write("\n// No Animations\n")