From a506801cd73d0aa6a071d61ab95f0c427e458000 Mon Sep 17 00:00:00 2001 From: petrie911 <69443847+petrie911@users.noreply.github.com> Date: Mon, 28 Sep 2020 06:11:58 -0500 Subject: [PATCH] Bg_Mori_Idomizu (#401) * Darkmeiro decompilation Bg_Gnd_Darkmeiro decompiled, matched, and documented. * give this a shot * fix conflict * one more try * matching * merge and cleanup * wait for mori tex * name --- .../BgMoriIdomizu_Destroy.s | 10 -- .../ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Init.s | 116 ------------ .../BgMoriIdomizu_Update.s | 13 -- .../ovl_Bg_Mori_Idomizu/func_808A4640.s | 3 - .../ovl_Bg_Mori_Idomizu/func_808A4648.s | 10 -- .../ovl_Bg_Mori_Idomizu/func_808A47D8.s | 10 -- .../ovl_Bg_Mori_Idomizu/func_808A47FC.s | 24 --- .../ovl_Bg_Mori_Idomizu/func_808A4850.s | 10 -- .../ovl_Bg_Mori_Idomizu/func_808A4874.s | 127 ------------- .../ovl_Bg_Mori_Idomizu/func_808A4A64.s | 122 ------------- data/overlays/actors/z_bg_mori_idomizu.data.s | 20 --- .../overlays/actors/z_bg_mori_idomizu.reloc.s | 13 -- spec | 3 +- .../ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c | 168 ++++++++++++++++-- .../ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h | 9 +- undefined_syms.txt | 3 + 16 files changed, 168 insertions(+), 493 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Update.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4640.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4648.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47D8.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47FC.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4850.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4874.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4A64.s delete mode 100644 data/overlays/actors/z_bg_mori_idomizu.data.s delete mode 100644 data/overlays/actors/z_bg_mori_idomizu.reloc.s diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Destroy.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Destroy.s deleted file mode 100644 index 013dbf4b76..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Destroy.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel BgMoriIdomizu_Destroy -/* 00178 808A47B8 AFA50004 */ sw $a1, 0x0004($sp) -/* 0017C 808A47BC 848E0158 */ lh $t6, 0x0158($a0) ## 00000158 -/* 00180 808A47C0 3C01808A */ lui $at, %hi(D_808A4C10) ## $at = 808A0000 -/* 00184 808A47C4 11C00002 */ beq $t6, $zero, .L808A47D0 -/* 00188 808A47C8 00000000 */ nop -/* 0018C 808A47CC A4204C10 */ sh $zero, %lo(D_808A4C10)($at) -.L808A47D0: -/* 00190 808A47D0 03E00008 */ jr $ra -/* 00194 808A47D4 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Init.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Init.s deleted file mode 100644 index 2ff66b745a..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Init.s +++ /dev/null @@ -1,116 +0,0 @@ -.rdata -glabel D_808A4C40 - .asciz "Error : バンク危険!(arg_data 0x%04x)(%s %d)\n" - .balign 4 - -glabel D_808A4C70 - .asciz "../z_bg_mori_idomizu.c" - .balign 4 - -glabel D_808A4C88 - .asciz "(森の神殿 井戸水)(arg_data 0x%04x)\n" - .balign 4 - -.late_rodata -glabel D_808A4CF4 - .float 1.1 - -glabel D_808A4CF8 - .word 0xC4E38000, 0x00000000 - -.text -glabel BgMoriIdomizu_Init -/* 0002C 808A466C 3C0E808A */ lui $t6, %hi(D_808A4C10) ## $t6 = 808A0000 -/* 00030 808A4670 85CE4C10 */ lh $t6, %lo(D_808A4C10)($t6) -/* 00034 808A4674 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0 -/* 00038 808A4678 AFB00018 */ sw $s0, 0x0018($sp) -/* 0003C 808A467C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00040 808A4680 AFBF001C */ sw $ra, 0x001C($sp) -/* 00044 808A4684 11C00005 */ beq $t6, $zero, .L808A469C -/* 00048 808A4688 AFA50024 */ sw $a1, 0x0024($sp) -/* 0004C 808A468C 0C00B55C */ jal Actor_Kill - -/* 00050 808A4690 00000000 */ nop -/* 00054 808A4694 10000044 */ beq $zero, $zero, .L808A47A8 -/* 00058 808A4698 8FBF001C */ lw $ra, 0x001C($sp) -.L808A469C: -/* 0005C 808A469C 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 00060 808A46A0 44810000 */ mtc1 $at, $f0 ## $f0 = 1.00 -/* 00064 808A46A4 3C01808A */ lui $at, %hi(D_808A4CF4) ## $at = 808A0000 -/* 00068 808A46A8 C4244CF4 */ lwc1 $f4, %lo(D_808A4CF4)($at) -/* 0006C 808A46AC 3C0142EE */ lui $at, 0x42EE ## $at = 42EE0000 -/* 00070 808A46B0 44813000 */ mtc1 $at, $f6 ## $f6 = 119.00 -/* 00074 808A46B4 3C01808A */ lui $at, %hi(D_808A4CF8) ## $at = 808A0000 -/* 00078 808A46B8 E6000054 */ swc1 $f0, 0x0054($s0) ## 00000054 -/* 0007C 808A46BC E6000058 */ swc1 $f0, 0x0058($s0) ## 00000058 -/* 00080 808A46C0 E6040050 */ swc1 $f4, 0x0050($s0) ## 00000050 -/* 00084 808A46C4 E6060024 */ swc1 $f6, 0x0024($s0) ## 00000024 -/* 00088 808A46C8 C4284CF8 */ lwc1 $f8, %lo(D_808A4CF8)($at) -/* 0008C 808A46CC 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 00090 808A46D0 E608002C */ swc1 $f8, 0x002C($s0) ## 0000002C -/* 00094 808A46D4 8FA40024 */ lw $a0, 0x0024($sp) -/* 00098 808A46D8 0C00B2D0 */ jal Flags_GetSwitch - -/* 0009C 808A46DC 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000 -/* 000A0 808A46E0 10400009 */ beq $v0, $zero, .L808A4708 -/* 000A4 808A46E4 AE020154 */ sw $v0, 0x0154($s0) ## 00000154 -/* 000A8 808A46E8 3C01C38D */ lui $at, 0xC38D ## $at = C38D0000 -/* 000AC 808A46EC 44815000 */ mtc1 $at, $f10 ## $f10 = -282.00 -/* 000B0 808A46F0 2405FEE6 */ addiu $a1, $zero, 0xFEE6 ## $a1 = FFFFFEE6 -/* 000B4 808A46F4 E60A0028 */ swc1 $f10, 0x0028($s0) ## 00000028 -/* 000B8 808A46F8 0C229192 */ jal func_808A4648 -/* 000BC 808A46FC 8FA40024 */ lw $a0, 0x0024($sp) -/* 000C0 808A4700 10000008 */ beq $zero, $zero, .L808A4724 -/* 000C4 808A4704 8FA40024 */ lw $a0, 0x0024($sp) -.L808A4708: -/* 000C8 808A4708 3C014338 */ lui $at, 0x4338 ## $at = 43380000 -/* 000CC 808A470C 44818000 */ mtc1 $at, $f16 ## $f16 = 184.00 -/* 000D0 808A4710 240500B8 */ addiu $a1, $zero, 0x00B8 ## $a1 = 000000B8 -/* 000D4 808A4714 E6100028 */ swc1 $f16, 0x0028($s0) ## 00000028 -/* 000D8 808A4718 0C229192 */ jal func_808A4648 -/* 000DC 808A471C 8FA40024 */ lw $a0, 0x0024($sp) -/* 000E0 808A4720 8FA40024 */ lw $a0, 0x0024($sp) -.L808A4724: -/* 000E4 808A4724 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 000E8 808A4728 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4 -/* 000EC 808A472C 24050073 */ addiu $a1, $zero, 0x0073 ## $a1 = 00000073 -/* 000F0 808A4730 0C02604B */ jal Object_GetIndex - ## ObjectIndex -/* 000F4 808A4734 00812021 */ addu $a0, $a0, $at -/* 000F8 808A4738 A202015C */ sb $v0, 0x015C($s0) ## 0000015C -/* 000FC 808A473C 820F015C */ lb $t7, 0x015C($s0) ## 0000015C -/* 00100 808A4740 05E1000C */ bgez $t7, .L808A4774 -/* 00104 808A4744 00000000 */ nop -/* 00108 808A4748 0C00B55C */ jal Actor_Kill - -/* 0010C 808A474C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00110 808A4750 3C04808A */ lui $a0, %hi(D_808A4C40) ## $a0 = 808A0000 -/* 00114 808A4754 3C06808A */ lui $a2, %hi(D_808A4C70) ## $a2 = 808A0000 -/* 00118 808A4758 24C64C70 */ addiu $a2, $a2, %lo(D_808A4C70) ## $a2 = 808A4C70 -/* 0011C 808A475C 24844C40 */ addiu $a0, $a0, %lo(D_808A4C40) ## $a0 = 808A4C40 -/* 00120 808A4760 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 00124 808A4764 0C00084C */ jal osSyncPrintf - -/* 00128 808A4768 240700CA */ addiu $a3, $zero, 0x00CA ## $a3 = 000000CA -/* 0012C 808A476C 1000000E */ beq $zero, $zero, .L808A47A8 -/* 00130 808A4770 8FBF001C */ lw $ra, 0x001C($sp) -.L808A4774: -/* 00134 808A4774 0C2291F6 */ jal func_808A47D8 -/* 00138 808A4778 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 0013C 808A477C 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001 -/* 00140 808A4780 3C01808A */ lui $at, %hi(D_808A4C10) ## $at = 808A0000 -/* 00144 808A4784 A4224C10 */ sh $v0, %lo(D_808A4C10)($at) -/* 00148 808A4788 2418FFFF */ addiu $t8, $zero, 0xFFFF ## $t8 = FFFFFFFF -/* 0014C 808A478C 3C04808A */ lui $a0, %hi(D_808A4C88) ## $a0 = 808A0000 -/* 00150 808A4790 A6020158 */ sh $v0, 0x0158($s0) ## 00000158 -/* 00154 808A4794 A2180003 */ sb $t8, 0x0003($s0) ## 00000003 -/* 00158 808A4798 24844C88 */ addiu $a0, $a0, %lo(D_808A4C88) ## $a0 = 808A4C88 -/* 0015C 808A479C 0C00084C */ jal osSyncPrintf - -/* 00160 808A47A0 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 00164 808A47A4 8FBF001C */ lw $ra, 0x001C($sp) -.L808A47A8: -/* 00168 808A47A8 8FB00018 */ lw $s0, 0x0018($sp) -/* 0016C 808A47AC 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000 -/* 00170 808A47B0 03E00008 */ jr $ra -/* 00174 808A47B4 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Update.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Update.s deleted file mode 100644 index 705c59cc01..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Update.s +++ /dev/null @@ -1,13 +0,0 @@ -glabel BgMoriIdomizu_Update -/* 003F8 808A4A38 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 003FC 808A4A3C AFBF0014 */ sw $ra, 0x0014($sp) -/* 00400 808A4A40 8C82014C */ lw $v0, 0x014C($a0) ## 0000014C -/* 00404 808A4A44 50400004 */ beql $v0, $zero, .L808A4A58 -/* 00408 808A4A48 8FBF0014 */ lw $ra, 0x0014($sp) -/* 0040C 808A4A4C 0040F809 */ jalr $ra, $v0 -/* 00410 808A4A50 00000000 */ nop -/* 00414 808A4A54 8FBF0014 */ lw $ra, 0x0014($sp) -.L808A4A58: -/* 00418 808A4A58 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 0041C 808A4A5C 03E00008 */ jr $ra -/* 00420 808A4A60 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4640.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4640.s deleted file mode 100644 index 768dc25cbf..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4640.s +++ /dev/null @@ -1,3 +0,0 @@ -glabel func_808A4640 -/* 00000 808A4640 03E00008 */ jr $ra -/* 00004 808A4644 AC85014C */ sw $a1, 0x014C($a0) ## 0000014C diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4648.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4648.s deleted file mode 100644 index 3499e321ef..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4648.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_808A4648 -/* 00008 808A4648 AFA50004 */ sw $a1, 0x0004($sp) -/* 0000C 808A464C 8C8E07C0 */ lw $t6, 0x07C0($a0) ## 000007C0 -/* 00010 808A4650 00052C00 */ sll $a1, $a1, 16 -/* 00014 808A4654 00052C03 */ sra $a1, $a1, 16 -/* 00018 808A4658 8DC20028 */ lw $v0, 0x0028($t6) ## 00000028 -/* 0001C 808A465C A4450022 */ sh $a1, 0x0022($v0) ## 00000022 -/* 00020 808A4660 A4450032 */ sh $a1, 0x0032($v0) ## 00000032 -/* 00024 808A4664 03E00008 */ jr $ra -/* 00028 808A4668 A4450042 */ sh $a1, 0x0042($v0) ## 00000042 diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47D8.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47D8.s deleted file mode 100644 index f94ce1257d..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47D8.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_808A47D8 -/* 00198 808A47D8 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 0019C 808A47DC AFBF0014 */ sw $ra, 0x0014($sp) -/* 001A0 808A47E0 3C05808A */ lui $a1, %hi(func_808A47FC) ## $a1 = 808A0000 -/* 001A4 808A47E4 0C229190 */ jal func_808A4640 -/* 001A8 808A47E8 24A547FC */ addiu $a1, $a1, %lo(func_808A47FC) ## $a1 = 808A47FC -/* 001AC 808A47EC 8FBF0014 */ lw $ra, 0x0014($sp) -/* 001B0 808A47F0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 001B4 808A47F4 03E00008 */ jr $ra -/* 001B8 808A47F8 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47FC.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47FC.s deleted file mode 100644 index b133728b28..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47FC.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_808A47FC -/* 001BC 808A47FC 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 001C0 808A4800 AFA40018 */ sw $a0, 0x0018($sp) -/* 001C4 808A4804 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 001C8 808A4808 8FAE0018 */ lw $t6, 0x0018($sp) -/* 001CC 808A480C 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4 -/* 001D0 808A4810 AFBF0014 */ sw $ra, 0x0014($sp) -/* 001D4 808A4814 00A12021 */ addu $a0, $a1, $at -/* 001D8 808A4818 0C026062 */ jal Object_IsLoaded - -/* 001DC 808A481C 81C5015C */ lb $a1, 0x015C($t6) ## 0000015C -/* 001E0 808A4820 50400008 */ beql $v0, $zero, .L808A4844 -/* 001E4 808A4824 8FBF0014 */ lw $ra, 0x0014($sp) -/* 001E8 808A4828 0C229214 */ jal func_808A4850 -/* 001EC 808A482C 8FA40018 */ lw $a0, 0x0018($sp) -/* 001F0 808A4830 8FB80018 */ lw $t8, 0x0018($sp) -/* 001F4 808A4834 3C0F808A */ lui $t7, %hi(func_808A4A64) ## $t7 = 808A0000 -/* 001F8 808A4838 25EF4A64 */ addiu $t7, $t7, %lo(func_808A4A64) ## $t7 = 808A4A64 -/* 001FC 808A483C AF0F0134 */ sw $t7, 0x0134($t8) ## 00000134 -/* 00200 808A4840 8FBF0014 */ lw $ra, 0x0014($sp) -.L808A4844: -/* 00204 808A4844 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00208 808A4848 03E00008 */ jr $ra -/* 0020C 808A484C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4850.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4850.s deleted file mode 100644 index f722db539f..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4850.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_808A4850 -/* 00210 808A4850 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00214 808A4854 AFBF0014 */ sw $ra, 0x0014($sp) -/* 00218 808A4858 3C05808A */ lui $a1, %hi(func_808A4874) ## $a1 = 808A0000 -/* 0021C 808A485C 0C229190 */ jal func_808A4640 -/* 00220 808A4860 24A54874 */ addiu $a1, $a1, %lo(func_808A4874) ## $a1 = 808A4874 -/* 00224 808A4864 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00228 808A4868 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 0022C 808A486C 03E00008 */ jr $ra -/* 00230 808A4870 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4874.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4874.s deleted file mode 100644 index baf731952b..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4874.s +++ /dev/null @@ -1,127 +0,0 @@ -glabel func_808A4874 -/* 00234 808A4874 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8 -/* 00238 808A4878 3C0E0001 */ lui $t6, 0x0001 ## $t6 = 00010000 -/* 0023C 808A487C AFBF0024 */ sw $ra, 0x0024($sp) -/* 00240 808A4880 AFB00020 */ sw $s0, 0x0020($sp) -/* 00244 808A4884 01C57021 */ addu $t6, $t6, $a1 -/* 00248 808A4888 81CE1CBC */ lb $t6, 0x1CBC($t6) ## 00011CBC -/* 0024C 808A488C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00250 808A4890 00A03025 */ or $a2, $a1, $zero ## $a2 = 00000000 -/* 00254 808A4894 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 00258 808A4898 A3AE0037 */ sb $t6, 0x0037($sp) -/* 0025C 808A489C 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 00260 808A48A0 AFA6003C */ sw $a2, 0x003C($sp) -/* 00264 808A48A4 0C00B2D0 */ jal Flags_GetSwitch - -/* 00268 808A48A8 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000 -/* 0026C 808A48AC 10400005 */ beq $v0, $zero, .L808A48C4 -/* 00270 808A48B0 AFA2002C */ sw $v0, 0x002C($sp) -/* 00274 808A48B4 3C01C38D */ lui $at, 0xC38D ## $at = C38D0000 -/* 00278 808A48B8 44812000 */ mtc1 $at, $f4 ## $f4 = -282.00 -/* 0027C 808A48BC 10000005 */ beq $zero, $zero, .L808A48D4 -/* 00280 808A48C0 E6040150 */ swc1 $f4, 0x0150($s0) ## 00000150 -.L808A48C4: -/* 00284 808A48C4 3C014338 */ lui $at, 0x4338 ## $at = 43380000 -/* 00288 808A48C8 44813000 */ mtc1 $at, $f6 ## $f6 = 184.00 -/* 0028C 808A48CC 00000000 */ nop -/* 00290 808A48D0 E6060150 */ swc1 $f6, 0x0150($s0) ## 00000150 -.L808A48D4: -/* 00294 808A48D4 1040000C */ beq $v0, $zero, .L808A4908 -/* 00298 808A48D8 00000000 */ nop -/* 0029C 808A48DC 8E0F0154 */ lw $t7, 0x0154($s0) ## 00000154 -/* 002A0 808A48E0 8FA4003C */ lw $a0, 0x003C($sp) -/* 002A4 808A48E4 24050CA8 */ addiu $a1, $zero, 0x0CA8 ## $a1 = 00000CA8 -/* 002A8 808A48E8 15E00007 */ bne $t7, $zero, .L808A4908 -/* 002AC 808A48EC 24060046 */ addiu $a2, $zero, 0x0046 ## $a2 = 00000046 -/* 002B0 808A48F0 02003825 */ or $a3, $s0, $zero ## $a3 = 00000000 -/* 002B4 808A48F4 0C02003E */ jal func_800800F8 -/* 002B8 808A48F8 AFA00010 */ sw $zero, 0x0010($sp) -/* 002BC 808A48FC 2418005A */ addiu $t8, $zero, 0x005A ## $t8 = 0000005A -/* 002C0 808A4900 1000000F */ beq $zero, $zero, .L808A4940 -/* 002C4 808A4904 A618015A */ sh $t8, 0x015A($s0) ## 0000015A -.L808A4908: -/* 002C8 808A4908 5440000E */ bnel $v0, $zero, .L808A4944 -/* 002CC 808A490C 8609015A */ lh $t1, 0x015A($s0) ## 0000015A -/* 002D0 808A4910 8E190154 */ lw $t9, 0x0154($s0) ## 00000154 -/* 002D4 808A4914 8FA4003C */ lw $a0, 0x003C($sp) -/* 002D8 808A4918 24050CA8 */ addiu $a1, $zero, 0x0CA8 ## $a1 = 00000CA8 -/* 002DC 808A491C 13200008 */ beq $t9, $zero, .L808A4940 -/* 002E0 808A4920 24060046 */ addiu $a2, $zero, 0x0046 ## $a2 = 00000046 -/* 002E4 808A4924 02003825 */ or $a3, $s0, $zero ## $a3 = 00000000 -/* 002E8 808A4928 0C02003E */ jal func_800800F8 -/* 002EC 808A492C AFA00010 */ sw $zero, 0x0010($sp) -/* 002F0 808A4930 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00 -/* 002F4 808A4934 2408005A */ addiu $t0, $zero, 0x005A ## $t0 = 0000005A -/* 002F8 808A4938 A608015A */ sh $t0, 0x015A($s0) ## 0000015A -/* 002FC 808A493C E6080028 */ swc1 $f8, 0x0028($s0) ## 00000028 -.L808A4940: -/* 00300 808A4940 8609015A */ lh $t1, 0x015A($s0) ## 0000015A -.L808A4944: -/* 00304 808A4944 83A20037 */ lb $v0, 0x0037($sp) -/* 00308 808A4948 24010007 */ addiu $at, $zero, 0x0007 ## $at = 00000007 -/* 0030C 808A494C 252AFFFF */ addiu $t2, $t1, 0xFFFF ## $t2 = FFFFFFFF -/* 00310 808A4950 10410006 */ beq $v0, $at, .L808A496C -/* 00314 808A4954 A60A015A */ sh $t2, 0x015A($s0) ## 0000015A -/* 00318 808A4958 24010008 */ addiu $at, $zero, 0x0008 ## $at = 00000008 -/* 0031C 808A495C 10410003 */ beq $v0, $at, .L808A496C -/* 00320 808A4960 24010009 */ addiu $at, $zero, 0x0009 ## $at = 00000009 -/* 00324 808A4964 54410020 */ bnel $v0, $at, .L808A49E8 -/* 00328 808A4968 C6120150 */ lwc1 $f18, 0x0150($s0) ## 00000150 -.L808A496C: -/* 0032C 808A496C 860B015A */ lh $t3, 0x015A($s0) ## 0000015A -/* 00330 808A4970 26040028 */ addiu $a0, $s0, 0x0028 ## $a0 = 00000028 -/* 00334 808A4974 3C064060 */ lui $a2, 0x4060 ## $a2 = 40600000 -/* 00338 808A4978 29610046 */ slti $at, $t3, 0x0046 -/* 0033C 808A497C 50200028 */ beql $at, $zero, .L808A4A20 -/* 00340 808A4980 8FB8002C */ lw $t8, 0x002C($sp) -/* 00344 808A4984 0C01DE80 */ jal Math_ApproxF - -/* 00348 808A4988 8E050150 */ lw $a1, 0x0150($s0) ## 00000150 -/* 0034C 808A498C C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028 -/* 00350 808A4990 8FA4003C */ lw $a0, 0x003C($sp) -/* 00354 808A4994 4600540D */ trunc.w.s $f16, $f10 -/* 00358 808A4998 44058000 */ mfc1 $a1, $f16 -/* 0035C 808A499C 00000000 */ nop -/* 00360 808A49A0 00052C00 */ sll $a1, $a1, 16 -/* 00364 808A49A4 0C229192 */ jal func_808A4648 -/* 00368 808A49A8 00052C03 */ sra $a1, $a1, 16 -/* 0036C 808A49AC 860D015A */ lh $t5, 0x015A($s0) ## 0000015A -/* 00370 808A49B0 8FAE002C */ lw $t6, 0x002C($sp) -/* 00374 808A49B4 59A0001A */ blezl $t5, .L808A4A20 -/* 00378 808A49B8 8FB8002C */ lw $t8, 0x002C($sp) -/* 0037C 808A49BC 11C00005 */ beq $t6, $zero, .L808A49D4 -/* 00380 808A49C0 00000000 */ nop -/* 00384 808A49C4 0C01E233 */ jal func_800788CC -/* 00388 808A49C8 2404205E */ addiu $a0, $zero, 0x205E ## $a0 = 0000205E -/* 0038C 808A49CC 10000014 */ beq $zero, $zero, .L808A4A20 -/* 00390 808A49D0 8FB8002C */ lw $t8, 0x002C($sp) -.L808A49D4: -/* 00394 808A49D4 0C01E233 */ jal func_800788CC -/* 00398 808A49D8 2404205E */ addiu $a0, $zero, 0x205E ## $a0 = 0000205E -/* 0039C 808A49DC 10000010 */ beq $zero, $zero, .L808A4A20 -/* 003A0 808A49E0 8FB8002C */ lw $t8, 0x002C($sp) -/* 003A4 808A49E4 C6120150 */ lwc1 $f18, 0x0150($s0) ## 00000150 -.L808A49E8: -/* 003A8 808A49E8 E6120028 */ swc1 $f18, 0x0028($s0) ## 00000028 -/* 003AC 808A49EC C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028 -/* 003B0 808A49F0 8FA4003C */ lw $a0, 0x003C($sp) -/* 003B4 808A49F4 4600218D */ trunc.w.s $f6, $f4 -/* 003B8 808A49F8 44053000 */ mfc1 $a1, $f6 -/* 003BC 808A49FC 00000000 */ nop -/* 003C0 808A4A00 00052C00 */ sll $a1, $a1, 16 -/* 003C4 808A4A04 0C229192 */ jal func_808A4648 -/* 003C8 808A4A08 00052C03 */ sra $a1, $a1, 16 -/* 003CC 808A4A0C 0C00B55C */ jal Actor_Kill - -/* 003D0 808A4A10 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 003D4 808A4A14 10000004 */ beq $zero, $zero, .L808A4A28 -/* 003D8 808A4A18 8FBF0024 */ lw $ra, 0x0024($sp) -/* 003DC 808A4A1C 8FB8002C */ lw $t8, 0x002C($sp) -.L808A4A20: -/* 003E0 808A4A20 AE180154 */ sw $t8, 0x0154($s0) ## 00000154 -/* 003E4 808A4A24 8FBF0024 */ lw $ra, 0x0024($sp) -.L808A4A28: -/* 003E8 808A4A28 8FB00020 */ lw $s0, 0x0020($sp) -/* 003EC 808A4A2C 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000 -/* 003F0 808A4A30 03E00008 */ jr $ra -/* 003F4 808A4A34 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4A64.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4A64.s deleted file mode 100644 index 2819c8b21b..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4A64.s +++ /dev/null @@ -1,122 +0,0 @@ -.rdata -glabel D_808A4CAC - .asciz "../z_bg_mori_idomizu.c" - .balign 4 - -glabel D_808A4CC4 - .asciz "../z_bg_mori_idomizu.c" - .balign 4 - -glabel D_808A4CDC - .asciz "../z_bg_mori_idomizu.c" - .balign 4 - -.text -glabel func_808A4A64 -/* 00424 808A4A64 27BDFF80 */ addiu $sp, $sp, 0xFF80 ## $sp = FFFFFF80 -/* 00428 808A4A68 3C0E0001 */ lui $t6, 0x0001 ## $t6 = 00010000 -/* 0042C 808A4A6C AFBF003C */ sw $ra, 0x003C($sp) -/* 00430 808A4A70 AFB10038 */ sw $s1, 0x0038($sp) -/* 00434 808A4A74 AFB00034 */ sw $s0, 0x0034($sp) -/* 00438 808A4A78 AFA40080 */ sw $a0, 0x0080($sp) -/* 0043C 808A4A7C 01C57021 */ addu $t6, $t6, $a1 -/* 00440 808A4A80 8DCE1DE4 */ lw $t6, 0x1DE4($t6) ## 00011DE4 -/* 00444 808A4A84 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000 -/* 00448 808A4A88 3C06808A */ lui $a2, %hi(D_808A4CAC) ## $a2 = 808A0000 -/* 0044C 808A4A8C AFAE0074 */ sw $t6, 0x0074($sp) -/* 00450 808A4A90 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000 -/* 00454 808A4A94 24C64CAC */ addiu $a2, $a2, %lo(D_808A4CAC) ## $a2 = 808A4CAC -/* 00458 808A4A98 27A40060 */ addiu $a0, $sp, 0x0060 ## $a0 = FFFFFFE0 -/* 0045C 808A4A9C 24070164 */ addiu $a3, $zero, 0x0164 ## $a3 = 00000164 -/* 00460 808A4AA0 0C031AB1 */ jal Graph_OpenDisps -/* 00464 808A4AA4 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000 -/* 00468 808A4AA8 0C024F61 */ jal func_80093D84 -/* 0046C 808A4AAC 8E240000 */ lw $a0, 0x0000($s1) ## 00000000 -/* 00470 808A4AB0 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0 -/* 00474 808A4AB4 3C18DA38 */ lui $t8, 0xDA38 ## $t8 = DA380000 -/* 00478 808A4AB8 37180003 */ ori $t8, $t8, 0x0003 ## $t8 = DA380003 -/* 0047C 808A4ABC 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008 -/* 00480 808A4AC0 AE0F02D0 */ sw $t7, 0x02D0($s0) ## 000002D0 -/* 00484 808A4AC4 AC580000 */ sw $t8, 0x0000($v0) ## 00000000 -/* 00488 808A4AC8 8E240000 */ lw $a0, 0x0000($s1) ## 00000000 -/* 0048C 808A4ACC 3C05808A */ lui $a1, %hi(D_808A4CC4) ## $a1 = 808A0000 -/* 00490 808A4AD0 24A54CC4 */ addiu $a1, $a1, %lo(D_808A4CC4) ## $a1 = 808A4CC4 -/* 00494 808A4AD4 24060168 */ addiu $a2, $zero, 0x0168 ## $a2 = 00000168 -/* 00498 808A4AD8 0C0346A2 */ jal Matrix_NewMtx -/* 0049C 808A4ADC AFA2005C */ sw $v0, 0x005C($sp) -/* 004A0 808A4AE0 8FA3005C */ lw $v1, 0x005C($sp) -/* 004A4 808A4AE4 3C0ADB06 */ lui $t2, 0xDB06 ## $t2 = DB060000 -/* 004A8 808A4AE8 354A0020 */ ori $t2, $t2, 0x0020 ## $t2 = DB060020 -/* 004AC 808A4AEC AC620004 */ sw $v0, 0x0004($v1) ## 00000004 -/* 004B0 808A4AF0 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0 -/* 004B4 808A4AF4 3C0F0001 */ lui $t7, 0x0001 ## $t7 = 00010000 -/* 004B8 808A4AF8 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 004BC 808A4AFC 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008 -/* 004C0 808A4B00 AE1902D0 */ sw $t9, 0x02D0($s0) ## 000002D0 -/* 004C4 808A4B04 AC4A0000 */ sw $t2, 0x0000($v0) ## 00000000 -/* 004C8 808A4B08 8FAB0080 */ lw $t3, 0x0080($sp) -/* 004CC 808A4B0C 240A0080 */ addiu $t2, $zero, 0x0080 ## $t2 = 00000080 -/* 004D0 808A4B10 3C19FB00 */ lui $t9, 0xFB00 ## $t9 = FB000000 -/* 004D4 808A4B14 816C015C */ lb $t4, 0x015C($t3) ## 0000015C -/* 004D8 808A4B18 000C6900 */ sll $t5, $t4, 4 -/* 004DC 808A4B1C 01AC6821 */ addu $t5, $t5, $t4 -/* 004E0 808A4B20 000D6880 */ sll $t5, $t5, 2 -/* 004E4 808A4B24 022D7021 */ addu $t6, $s1, $t5 -/* 004E8 808A4B28 01EE7821 */ addu $t7, $t7, $t6 -/* 004EC 808A4B2C 8DEF17B4 */ lw $t7, 0x17B4($t7) ## 000117B4 -/* 004F0 808A4B30 3C0CDB06 */ lui $t4, 0xDB06 ## $t4 = DB060000 -/* 004F4 808A4B34 358C0024 */ ori $t4, $t4, 0x0024 ## $t4 = DB060024 -/* 004F8 808A4B38 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 004FC 808A4B3C 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0 -/* 00500 808A4B40 240F0020 */ addiu $t7, $zero, 0x0020 ## $t7 = 00000020 -/* 00504 808A4B44 240E0020 */ addiu $t6, $zero, 0x0020 ## $t6 = 00000020 -/* 00508 808A4B48 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008 -/* 0050C 808A4B4C AE1802D0 */ sw $t8, 0x02D0($s0) ## 000002D0 -/* 00510 808A4B50 AC590000 */ sw $t9, 0x0000($v0) ## 00000000 -/* 00514 808A4B54 AC4A0004 */ sw $t2, 0x0004($v0) ## 00000004 -/* 00518 808A4B58 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0 -/* 0051C 808A4B5C 8FA90074 */ lw $t1, 0x0074($sp) -/* 00520 808A4B60 240A0020 */ addiu $t2, $zero, 0x0020 ## $t2 = 00000020 -/* 00524 808A4B64 244B0008 */ addiu $t3, $v0, 0x0008 ## $t3 = 00000008 -/* 00528 808A4B68 AE0B02D0 */ sw $t3, 0x02D0($s0) ## 000002D0 -/* 0052C 808A4B6C AC4C0000 */ sw $t4, 0x0000($v0) ## 00000000 -/* 00530 808A4B70 8E240000 */ lw $a0, 0x0000($s1) ## 00000000 -/* 00534 808A4B74 24190020 */ addiu $t9, $zero, 0x0020 ## $t9 = 00000020 -/* 00538 808A4B78 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001 -/* 0053C 808A4B7C 240D007F */ addiu $t5, $zero, 0x007F ## $t5 = 0000007F -/* 00540 808A4B80 3123007F */ andi $v1, $t1, 0x007F ## $v1 = 00000000 -/* 00544 808A4B84 3127007F */ andi $a3, $t1, 0x007F ## $a3 = 00000000 -/* 00548 808A4B88 AFA70020 */ sw $a3, 0x0020($sp) -/* 0054C 808A4B8C 01A33023 */ subu $a2, $t5, $v1 -/* 00550 808A4B90 AFA3001C */ sw $v1, 0x001C($sp) -/* 00554 808A4B94 AFB80018 */ sw $t8, 0x0018($sp) -/* 00558 808A4B98 AFB90024 */ sw $t9, 0x0024($sp) -/* 0055C 808A4B9C AFAA0028 */ sw $t2, 0x0028($sp) -/* 00560 808A4BA0 AFAF0014 */ sw $t7, 0x0014($sp) -/* 00564 808A4BA4 AFAE0010 */ sw $t6, 0x0010($sp) -/* 00568 808A4BA8 0C0253D0 */ jal Gfx_TwoTexScroll -/* 0056C 808A4BAC AFA20050 */ sw $v0, 0x0050($sp) -/* 00570 808A4BB0 8FA80050 */ lw $t0, 0x0050($sp) -/* 00574 808A4BB4 3C0D0600 */ lui $t5, 0x0600 ## $t5 = 06000000 -/* 00578 808A4BB8 25AD49D0 */ addiu $t5, $t5, 0x49D0 ## $t5 = 060049D0 -/* 0057C 808A4BBC AD020004 */ sw $v0, 0x0004($t0) ## 00000004 -/* 00580 808A4BC0 8E0202D0 */ lw $v0, 0x02D0($s0) ## 000002D0 -/* 00584 808A4BC4 3C0CDE00 */ lui $t4, 0xDE00 ## $t4 = DE000000 -/* 00588 808A4BC8 3C06808A */ lui $a2, %hi(D_808A4CDC) ## $a2 = 808A0000 -/* 0058C 808A4BCC 244B0008 */ addiu $t3, $v0, 0x0008 ## $t3 = 00000008 -/* 00590 808A4BD0 AE0B02D0 */ sw $t3, 0x02D0($s0) ## 000002D0 -/* 00594 808A4BD4 AC4D0004 */ sw $t5, 0x0004($v0) ## 00000004 -/* 00598 808A4BD8 AC4C0000 */ sw $t4, 0x0000($v0) ## 00000000 -/* 0059C 808A4BDC 8E250000 */ lw $a1, 0x0000($s1) ## 00000000 -/* 005A0 808A4BE0 24C64CDC */ addiu $a2, $a2, %lo(D_808A4CDC) ## $a2 = 808A4CDC -/* 005A4 808A4BE4 27A40060 */ addiu $a0, $sp, 0x0060 ## $a0 = FFFFFFE0 -/* 005A8 808A4BE8 0C031AD5 */ jal Graph_CloseDisps -/* 005AC 808A4BEC 2407017E */ addiu $a3, $zero, 0x017E ## $a3 = 0000017E -/* 005B0 808A4BF0 8FBF003C */ lw $ra, 0x003C($sp) -/* 005B4 808A4BF4 8FB00034 */ lw $s0, 0x0034($sp) -/* 005B8 808A4BF8 8FB10038 */ lw $s1, 0x0038($sp) -/* 005BC 808A4BFC 03E00008 */ jr $ra -/* 005C0 808A4C00 27BD0080 */ addiu $sp, $sp, 0x0080 ## $sp = 00000000 -/* 005C4 808A4C04 00000000 */ nop -/* 005C8 808A4C08 00000000 */ nop -/* 005CC 808A4C0C 00000000 */ nop diff --git a/data/overlays/actors/z_bg_mori_idomizu.data.s b/data/overlays/actors/z_bg_mori_idomizu.data.s deleted file mode 100644 index 58b71614dd..0000000000 --- a/data/overlays/actors/z_bg_mori_idomizu.data.s +++ /dev/null @@ -1,20 +0,0 @@ -.include "macro.inc" - - # assembler directives - .set noat # allow manual use of $at - .set noreorder # don't insert nops after branches - .set gp=64 # allow use of 64-bit general purpose registers - -.section .data - -.balign 16 - -glabel D_808A4C10 - .word 0x00000000 -glabel Bg_Mori_Idomizu_InitVars - .word 0x00E40100, 0x00000030, 0x00720000, 0x00000160 -.word BgMoriIdomizu_Init -.word BgMoriIdomizu_Destroy -.word BgMoriIdomizu_Update -.word 0x00000000, 0x00000000, 0x00000000, 0x00000000 - diff --git a/data/overlays/actors/z_bg_mori_idomizu.reloc.s b/data/overlays/actors/z_bg_mori_idomizu.reloc.s deleted file mode 100644 index 2947b7304a..0000000000 --- a/data/overlays/actors/z_bg_mori_idomizu.reloc.s +++ /dev/null @@ -1,13 +0,0 @@ -.include "macro.inc" - - # assembler directives - .set noat # allow manual use of $at - .set noreorder # don't insert nops after branches - .set gp=64 # allow use of 64-bit general purpose registers - -.section .rodata - -.balign 16 - -glabel D_808A4D00 - .incbin "baserom/ovl_Bg_Mori_Idomizu", 0x6C0, 0x000000C0 diff --git a/spec b/spec index bc466b9822..0a5664b98c 100644 --- a/spec +++ b/spec @@ -1128,8 +1128,7 @@ endseg beginseg name "ovl_Bg_Mori_Idomizu" include "build/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.o" - include "build/data/overlays/actors/z_bg_mori_idomizu.data.o" - include "build/data/overlays/actors/z_bg_mori_idomizu.reloc.o" + include "build/src/overlays/actors/ovl_Bg_Mori_Idomizu/ovl_Bg_Mori_Idomizu_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c index f9899fa54f..fdb4c03342 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c +++ b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c @@ -1,3 +1,9 @@ +/* + * File: z_bg_mori_idomizu.c + * Overlay: ovl_Bg_Mori_Idomizu + * Description: Square of water in Forest Temple well + */ + #include "z_bg_mori_idomizu.h" #define FLAGS 0x00000030 @@ -7,8 +13,17 @@ void BgMoriIdomizu_Init(Actor* thisx, GlobalContext* globalCtx); void BgMoriIdomizu_Destroy(Actor* thisx, GlobalContext* globalCtx); void BgMoriIdomizu_Update(Actor* thisx, GlobalContext* globalCtx); +void BgMoriIdomizu_Draw(Actor* thisx, GlobalContext* globalCtx); + +void BgMoriIdomizu_SetupWaitForMoriTex(BgMoriIdomizu* this); +void BgMoriIdomizu_WaitForMoriTex(BgMoriIdomizu* this, GlobalContext* globalCtx); +void BgMoriIdomizu_SetupMain(BgMoriIdomizu* this); +void BgMoriIdomizu_Main(BgMoriIdomizu* this, GlobalContext* globalCtx); + +extern Gfx D_060049D0[]; + +static s16 sAlreadyLoaded = false; -/* const ActorInit Bg_Mori_Idomizu_InitVars = { ACTOR_BG_MORI_IDOMIZU, ACTORTYPE_BG, @@ -20,23 +35,152 @@ const ActorInit Bg_Mori_Idomizu_InitVars = { (ActorFunc)BgMoriIdomizu_Update, NULL, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4640.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4648.s") +void BgMoriIdomizu_SetupAction(BgMoriIdomizu* this, BgMoriIdomizuActionFunc actionFunc) { + this->actionFunc = actionFunc; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Init.s") +void BgMoriIdomizu_SetWaterLevel(GlobalContext* globalCtx, s16 waterLevel) { + WaterBox* waterBox = globalCtx->colCtx.stat.colHeader->waterBoxes; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Destroy.s") + waterBox[2].unk_02 = waterLevel; + waterBox[3].unk_02 = waterLevel; + waterBox[4].unk_02 = waterLevel; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47D8.s") +void BgMoriIdomizu_Init(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriIdomizu* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A47FC.s") + if (sAlreadyLoaded) { + Actor_Kill(&this->actor); + return; + } + this->actor.scale.x = 1.1f; + this->actor.scale.y = 1.0f; + this->actor.scale.z = 1.0f; + this->actor.posRot.pos.x = 119.0f; + this->actor.posRot.pos.z = -1820.0f; + this->prevSwitchFlagSet = Flags_GetSwitch(globalCtx, this->actor.params & 0x3F); + if (this->prevSwitchFlagSet != 0) { + this->actor.posRot.pos.y = -282.0f; + BgMoriIdomizu_SetWaterLevel(globalCtx, -282); + } else { + this->actor.posRot.pos.y = 184.0f; + BgMoriIdomizu_SetWaterLevel(globalCtx, 184); + } + this->moriTexObjIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_MORI_TEX); + if (this->moriTexObjIndex < 0) { + Actor_Kill(&this->actor); + // Bank danger! + osSyncPrintf("Error : バンク危険!(arg_data 0x%04x)(%s %d)\n", this->actor.params, "../z_bg_mori_idomizu.c", + 202); + return; + } + BgMoriIdomizu_SetupWaitForMoriTex(this); + sAlreadyLoaded = true; + this->isLoaded = true; + this->actor.room = -1; + // Forest Temple well water + osSyncPrintf("(森の神殿 井戸水)(arg_data 0x%04x)\n", this->actor.params); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4850.s") +void BgMoriIdomizu_Destroy(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriIdomizu* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4874.s") + if (this->isLoaded) { + sAlreadyLoaded = false; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/BgMoriIdomizu_Update.s") +void BgMoriIdomizu_SetupWaitForMoriTex(BgMoriIdomizu* this) { + BgMoriIdomizu_SetupAction(this, BgMoriIdomizu_WaitForMoriTex); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Idomizu/func_808A4A64.s") +void BgMoriIdomizu_WaitForMoriTex(BgMoriIdomizu* this, GlobalContext* globalCtx) { + if (Object_IsLoaded(&globalCtx->objectCtx, this->moriTexObjIndex)) { + BgMoriIdomizu_SetupMain(this); + this->actor.draw = BgMoriIdomizu_Draw; + } +} + +void BgMoriIdomizu_SetupMain(BgMoriIdomizu* this) { + BgMoriIdomizu_SetupAction(this, BgMoriIdomizu_Main); +} + +void BgMoriIdomizu_Main(BgMoriIdomizu* this, GlobalContext* globalCtx) { + s8 roomNum; + Actor* thisx = &this->actor; + s32 switchFlagSet; + + roomNum = globalCtx->roomCtx.curRoom.num; + switchFlagSet = Flags_GetSwitch(globalCtx, thisx->params & 0x3F); + if (switchFlagSet) { + this->targetWaterLevel = -282.0f; + } else { + this->targetWaterLevel = 184.0f; + } + if (switchFlagSet && !this->prevSwitchFlagSet) { + func_800800F8(globalCtx, 0xCA8, 0x46, thisx, 0); + this->drainTimer = 90; + } else if (!switchFlagSet && this->prevSwitchFlagSet) { + func_800800F8(globalCtx, 0xCA8, 0x46, thisx, 0); + this->drainTimer = 90; + thisx->posRot.pos.y = 0.0f; + } + this->drainTimer--; + if ((roomNum == 7) || (roomNum == 8) || (roomNum == 9)) { + if (this->drainTimer < 70) { + Math_ApproxF(&thisx->posRot.pos.y, this->targetWaterLevel, 3.5f); + BgMoriIdomizu_SetWaterLevel(globalCtx, thisx->posRot.pos.y); + if (this->drainTimer > 0) { + if (switchFlagSet) { + func_800788CC(NA_SE_EV_WATER_LEVEL_DOWN - SFX_FLAG); + } else { + func_800788CC(NA_SE_EV_WATER_LEVEL_DOWN - SFX_FLAG); + } + } + } + } else { + thisx->posRot.pos.y = this->targetWaterLevel; + BgMoriIdomizu_SetWaterLevel(globalCtx, thisx->posRot.pos.y); + Actor_Kill(thisx); + return; + } + this->prevSwitchFlagSet = switchFlagSet; +} + +void BgMoriIdomizu_Update(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriIdomizu* this = THIS; + + if (this->actionFunc != NULL) { + this->actionFunc(this, globalCtx); + } +} + +void BgMoriIdomizu_Draw(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriIdomizu* this = THIS; + u32 gameplayFrames = globalCtx->gameplayFrames; + + OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_mori_idomizu.c", 356); + + func_80093D84(globalCtx->state.gfxCtx); + + gSPMatrix(oGfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_mori_idomizu.c", 360), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPSegment(oGfxCtx->polyXlu.p++, 0x08, globalCtx->objectCtx.status[this->moriTexObjIndex].segment); + + gDPSetEnvColor(oGfxCtx->polyXlu.p++, 0, 0, 0, 128); + + gSPSegment(oGfxCtx->polyXlu.p++, 0x09, + Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0x7F - (gameplayFrames & 0x7F), gameplayFrames % 0x80, 0x20, + 0x20, 1, gameplayFrames & 0x7F, gameplayFrames % 0x80, 0x20, 0x20)); + + gSPDisplayList(oGfxCtx->polyXlu.p++, D_060049D0); + + CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_mori_idomizu.c", 382); +} diff --git a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h index ee6d62d5ec..8e5bdda045 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h +++ b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h @@ -6,9 +6,16 @@ struct BgMoriIdomizu; +typedef void (*BgMoriIdomizuActionFunc)(struct BgMoriIdomizu*, GlobalContext*); + typedef struct BgMoriIdomizu { /* 0x0000 */ Actor actor; - /* 0x014C */ char unk_14C[0x14]; + /* 0x014C */ BgMoriIdomizuActionFunc actionFunc; + /* 0x0150 */ f32 targetWaterLevel; + /* 0x0154 */ s32 prevSwitchFlagSet; + /* 0x0158 */ s16 isLoaded; + /* 0x015A */ s16 drainTimer; + /* 0x015C */ s8 moriTexObjIndex; } BgMoriIdomizu; // size = 0x0160 extern const ActorInit Bg_Mori_Idomizu_InitVars; diff --git a/undefined_syms.txt b/undefined_syms.txt index 7042c72798..7a940e4309 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1126,6 +1126,9 @@ D_06000498 = 0x06000498; // z_bg_menkuri_eye D_06002D20 = 0x06002D20; +// z_bg_mori_idomizu +D_060049D0 = 0x060049D0; + // z_bg_mori_hashigo D_060037D8 = 0x060037D8; D_060036B0 = 0x060036B0;