From 686b44d8f82e28507f5cafc314d41d87cfdf7c84 Mon Sep 17 00:00:00 2001 From: petrie911 <69443847+petrie911@users.noreply.github.com> Date: Sat, 3 Oct 2020 21:18:41 -0500 Subject: [PATCH] Bg_Mori_Kaitenkabe (#410) * Darkmeiro decompilation Bg_Gnd_Darkmeiro decompiled, matched, and documented. * give this a shot * fix conflict * one more try * spinny wall * cleanup * wait for mori tex * merge and better (?) names --- .../BgMoriKaitenkabe_Destroy.s | 14 -- .../BgMoriKaitenkabe_Init.s | 80 --------- .../BgMoriKaitenkabe_Update.s | 10 -- .../ovl_Bg_Mori_Kaitenkabe/func_808A4DC0.s | 29 ---- .../ovl_Bg_Mori_Kaitenkabe/func_808A4F3C.s | 24 --- .../ovl_Bg_Mori_Kaitenkabe/func_808A4F90.s | 6 - .../ovl_Bg_Mori_Kaitenkabe/func_808A4FA4.s | 104 ----------- .../ovl_Bg_Mori_Kaitenkabe/func_808A5104.s | 8 - .../ovl_Bg_Mori_Kaitenkabe/func_808A5120.s | 106 ------------ .../ovl_Bg_Mori_Kaitenkabe/func_808A52AC.s | 80 --------- .../actors/z_bg_mori_kaitenkabe.data.s | 20 --- .../actors/z_bg_mori_kaitenkabe.reloc.s | 13 -- spec | 3 +- .../z_bg_mori_kaitenkabe.c | 161 ++++++++++++++++-- .../z_bg_mori_kaitenkabe.h | 12 +- undefined_syms.txt | 4 + 16 files changed, 164 insertions(+), 510 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Update.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4DC0.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F3C.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F90.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4FA4.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5104.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5120.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A52AC.s delete mode 100644 data/overlays/actors/z_bg_mori_kaitenkabe.data.s delete mode 100644 data/overlays/actors/z_bg_mori_kaitenkabe.reloc.s diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Destroy.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Destroy.s deleted file mode 100644 index 13f007871e..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Destroy.s +++ /dev/null @@ -1,14 +0,0 @@ -glabel BgMoriKaitenkabe_Destroy -/* 0014C 808A4F0C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00150 808A4F10 AFA40018 */ sw $a0, 0x0018($sp) -/* 00154 808A4F14 8FAE0018 */ lw $t6, 0x0018($sp) -/* 00158 808A4F18 AFBF0014 */ sw $ra, 0x0014($sp) -/* 0015C 808A4F1C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 00160 808A4F20 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810 -/* 00164 808A4F24 0C00FB56 */ jal DynaPolyInfo_Free - ## DynaPolyInfo_delReserve -/* 00168 808A4F28 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C -/* 0016C 808A4F2C 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00170 808A4F30 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00174 808A4F34 03E00008 */ jr $ra -/* 00178 808A4F38 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Init.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Init.s deleted file mode 100644 index f1b3cd44bb..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Init.s +++ /dev/null @@ -1,80 +0,0 @@ -.rdata -glabel D_808A53E0 - .asciz "◯◯◯森の神殿オブジェクト【回転壁(arg_data : 0x%04x)】出現 \n" - .balign 4 - -glabel D_808A5420 - .asciz "【回転壁】 バンク危険!(%s %d)\n" - .balign 4 - -glabel D_808A5440 - .asciz "../z_bg_mori_kaitenkabe.c" - .balign 4 - -.text -glabel BgMoriKaitenkabe_Init -/* 00070 808A4E30 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0 -/* 00074 808A4E34 AFB00018 */ sw $s0, 0x0018($sp) -/* 00078 808A4E38 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 0007C 808A4E3C AFBF001C */ sw $ra, 0x001C($sp) -/* 00080 808A4E40 AFA50034 */ sw $a1, 0x0034($sp) -/* 00084 808A4E44 AFA00024 */ sw $zero, 0x0024($sp) -/* 00088 808A4E48 3C04808A */ lui $a0, %hi(D_808A53E0) ## $a0 = 808A0000 -/* 0008C 808A4E4C 248453E0 */ addiu $a0, $a0, %lo(D_808A53E0) ## $a0 = 808A53E0 -/* 00090 808A4E50 0C00084C */ jal osSyncPrintf - -/* 00094 808A4E54 8605001C */ lh $a1, 0x001C($s0) ## 0000001C -/* 00098 808A4E58 3C05808A */ lui $a1, %hi(D_808A53D0) ## $a1 = 808A0000 -/* 0009C 808A4E5C 24A553D0 */ addiu $a1, $a1, %lo(D_808A53D0) ## $a1 = 808A53D0 -/* 000A0 808A4E60 0C01E037 */ jal Actor_ProcessInitChain - -/* 000A4 808A4E64 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 000A8 808A4E68 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 000AC 808A4E6C 0C010D20 */ jal DynaPolyInfo_SetActorMove - -/* 000B0 808A4E70 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 000B4 808A4E74 3C040600 */ lui $a0, 0x0600 ## $a0 = 06000000 -/* 000B8 808A4E78 248463B8 */ addiu $a0, $a0, 0x63B8 ## $a0 = 060063B8 -/* 000BC 808A4E7C 0C010620 */ jal DynaPolyInfo_Alloc - -/* 000C0 808A4E80 27A50024 */ addiu $a1, $sp, 0x0024 ## $a1 = FFFFFFF4 -/* 000C4 808A4E84 8FA40034 */ lw $a0, 0x0034($sp) -/* 000C8 808A4E88 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000 -/* 000CC 808A4E8C 8FA70024 */ lw $a3, 0x0024($sp) -/* 000D0 808A4E90 0C00FA9D */ jal DynaPolyInfo_RegisterActor - ## DynaPolyInfo_setActor -/* 000D4 808A4E94 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810 -/* 000D8 808A4E98 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C -/* 000DC 808A4E9C 8FA40034 */ lw $a0, 0x0034($sp) -/* 000E0 808A4EA0 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 000E4 808A4EA4 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4 -/* 000E8 808A4EA8 24050073 */ addiu $a1, $zero, 0x0073 ## $a1 = 00000073 -/* 000EC 808A4EAC 0C02604B */ jal Object_GetIndex - ## ObjectIndex -/* 000F0 808A4EB0 00812021 */ addu $a0, $a0, $at -/* 000F4 808A4EB4 A2020184 */ sb $v0, 0x0184($s0) ## 00000184 -/* 000F8 808A4EB8 820E0184 */ lb $t6, 0x0184($s0) ## 00000184 -/* 000FC 808A4EBC 3C0F808A */ lui $t7, %hi(func_808A4F3C) ## $t7 = 808A0000 -/* 00100 808A4EC0 25EF4F3C */ addiu $t7, $t7, %lo(func_808A4F3C) ## $t7 = 808A4F3C -/* 00104 808A4EC4 05C3000C */ bgezl $t6, .L808A4EF8 -/* 00108 808A4EC8 AE0F0164 */ sw $t7, 0x0164($s0) ## 00000164 -/* 0010C 808A4ECC 0C00B55C */ jal Actor_Kill - -/* 00110 808A4ED0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00114 808A4ED4 3C04808A */ lui $a0, %hi(D_808A5420) ## $a0 = 808A0000 -/* 00118 808A4ED8 3C05808A */ lui $a1, %hi(D_808A5440) ## $a1 = 808A0000 -/* 0011C 808A4EDC 24A55440 */ addiu $a1, $a1, %lo(D_808A5440) ## $a1 = 808A5440 -/* 00120 808A4EE0 24845420 */ addiu $a0, $a0, %lo(D_808A5420) ## $a0 = 808A5420 -/* 00124 808A4EE4 0C00084C */ jal osSyncPrintf - -/* 00128 808A4EE8 240600B0 */ addiu $a2, $zero, 0x00B0 ## $a2 = 000000B0 -/* 0012C 808A4EEC 10000003 */ beq $zero, $zero, .L808A4EFC -/* 00130 808A4EF0 8FBF001C */ lw $ra, 0x001C($sp) -/* 00134 808A4EF4 AE0F0164 */ sw $t7, 0x0164($s0) ## 00000164 -.L808A4EF8: -/* 00138 808A4EF8 8FBF001C */ lw $ra, 0x001C($sp) -.L808A4EFC: -/* 0013C 808A4EFC 8FB00018 */ lw $s0, 0x0018($sp) -/* 00140 808A4F00 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000 -/* 00144 808A4F04 03E00008 */ jr $ra -/* 00148 808A4F08 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Update.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Update.s deleted file mode 100644 index 29de6bd183..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Update.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel BgMoriKaitenkabe_Update -/* 004C8 808A5288 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 004CC 808A528C AFBF0014 */ sw $ra, 0x0014($sp) -/* 004D0 808A5290 8C990164 */ lw $t9, 0x0164($a0) ## 00000164 -/* 004D4 808A5294 0320F809 */ jalr $ra, $t9 -/* 004D8 808A5298 00000000 */ nop -/* 004DC 808A529C 8FBF0014 */ lw $ra, 0x0014($sp) -/* 004E0 808A52A0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 004E4 808A52A4 03E00008 */ jr $ra -/* 004E8 808A52A8 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4DC0.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4DC0.s deleted file mode 100644 index 4ddc048513..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4DC0.s +++ /dev/null @@ -1,29 +0,0 @@ -glabel func_808A4DC0 -/* 00000 808A4DC0 C4A40004 */ lwc1 $f4, 0x0004($a1) ## 00000004 -/* 00004 808A4DC4 C4C60008 */ lwc1 $f6, 0x0008($a2) ## 00000008 -/* 00008 808A4DC8 C4AA0008 */ lwc1 $f10, 0x0008($a1) ## 00000008 -/* 0000C 808A4DCC C4D00004 */ lwc1 $f16, 0x0004($a2) ## 00000004 -/* 00010 808A4DD0 46062202 */ mul.s $f8, $f4, $f6 -/* 00014 808A4DD4 00000000 */ nop -/* 00018 808A4DD8 46105482 */ mul.s $f18, $f10, $f16 -/* 0001C 808A4DDC 46124101 */ sub.s $f4, $f8, $f18 -/* 00020 808A4DE0 E4840000 */ swc1 $f4, 0x0000($a0) ## 00000000 -/* 00024 808A4DE4 C4CA0000 */ lwc1 $f10, 0x0000($a2) ## 00000000 -/* 00028 808A4DE8 C4A60008 */ lwc1 $f6, 0x0008($a1) ## 00000008 -/* 0002C 808A4DEC C4A80000 */ lwc1 $f8, 0x0000($a1) ## 00000000 -/* 00030 808A4DF0 C4D20008 */ lwc1 $f18, 0x0008($a2) ## 00000008 -/* 00034 808A4DF4 460A3402 */ mul.s $f16, $f6, $f10 -/* 00038 808A4DF8 00000000 */ nop -/* 0003C 808A4DFC 46124102 */ mul.s $f4, $f8, $f18 -/* 00040 808A4E00 46048181 */ sub.s $f6, $f16, $f4 -/* 00044 808A4E04 E4860004 */ swc1 $f6, 0x0004($a0) ## 00000004 -/* 00048 808A4E08 C4C80004 */ lwc1 $f8, 0x0004($a2) ## 00000004 -/* 0004C 808A4E0C C4AA0000 */ lwc1 $f10, 0x0000($a1) ## 00000000 -/* 00050 808A4E10 C4C40000 */ lwc1 $f4, 0x0000($a2) ## 00000000 -/* 00054 808A4E14 C4B00004 */ lwc1 $f16, 0x0004($a1) ## 00000004 -/* 00058 808A4E18 46085482 */ mul.s $f18, $f10, $f8 -/* 0005C 808A4E1C 00000000 */ nop -/* 00060 808A4E20 46048182 */ mul.s $f6, $f16, $f4 -/* 00064 808A4E24 46069281 */ sub.s $f10, $f18, $f6 -/* 00068 808A4E28 03E00008 */ jr $ra -/* 0006C 808A4E2C E48A0008 */ swc1 $f10, 0x0008($a0) ## 00000008 diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F3C.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F3C.s deleted file mode 100644 index 2351b18c4f..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F3C.s +++ /dev/null @@ -1,24 +0,0 @@ -glabel func_808A4F3C -/* 0017C 808A4F3C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00180 808A4F40 AFA40018 */ sw $a0, 0x0018($sp) -/* 00184 808A4F44 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 00188 808A4F48 8FAE0018 */ lw $t6, 0x0018($sp) -/* 0018C 808A4F4C 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4 -/* 00190 808A4F50 AFBF0014 */ sw $ra, 0x0014($sp) -/* 00194 808A4F54 00A12021 */ addu $a0, $a1, $at -/* 00198 808A4F58 0C026062 */ jal Object_IsLoaded - -/* 0019C 808A4F5C 81C50184 */ lb $a1, 0x0184($t6) ## 00000184 -/* 001A0 808A4F60 50400008 */ beql $v0, $zero, .L808A4F84 -/* 001A4 808A4F64 8FBF0014 */ lw $ra, 0x0014($sp) -/* 001A8 808A4F68 0C2293E4 */ jal func_808A4F90 -/* 001AC 808A4F6C 8FA40018 */ lw $a0, 0x0018($sp) -/* 001B0 808A4F70 8FB80018 */ lw $t8, 0x0018($sp) -/* 001B4 808A4F74 3C0F808A */ lui $t7, %hi(func_808A52AC) ## $t7 = 808A0000 -/* 001B8 808A4F78 25EF52AC */ addiu $t7, $t7, %lo(func_808A52AC) ## $t7 = 808A52AC -/* 001BC 808A4F7C AF0F0134 */ sw $t7, 0x0134($t8) ## 00000134 -/* 001C0 808A4F80 8FBF0014 */ lw $ra, 0x0014($sp) -.L808A4F84: -/* 001C4 808A4F84 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 001C8 808A4F88 03E00008 */ jr $ra -/* 001CC 808A4F8C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F90.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F90.s deleted file mode 100644 index f9e20668f4..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F90.s +++ /dev/null @@ -1,6 +0,0 @@ -glabel func_808A4F90 -/* 001D0 808A4F90 3C0E808A */ lui $t6, %hi(func_808A4FA4) ## $t6 = 808A0000 -/* 001D4 808A4F94 25CE4FA4 */ addiu $t6, $t6, %lo(func_808A4FA4) ## $t6 = 808A4FA4 -/* 001D8 808A4F98 AC8E0164 */ sw $t6, 0x0164($a0) ## 00000164 -/* 001DC 808A4F9C 03E00008 */ jr $ra -/* 001E0 808A4FA0 AC800168 */ sw $zero, 0x0168($a0) ## 00000168 diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4FA4.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4FA4.s deleted file mode 100644 index 3b5ad1af97..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4FA4.s +++ /dev/null @@ -1,104 +0,0 @@ -.late_rodata -glabel D_808A54B0 - .float 0.001 - -glabel D_808A54B4 - .float 0.001 - -.text -glabel func_808A4FA4 -/* 001E4 808A4FA4 27BDFFB8 */ addiu $sp, $sp, 0xFFB8 ## $sp = FFFFFFB8 -/* 001E8 808A4FA8 AFBF001C */ sw $ra, 0x001C($sp) -/* 001EC 808A4FAC AFB10018 */ sw $s1, 0x0018($sp) -/* 001F0 808A4FB0 AFB00014 */ sw $s0, 0x0014($sp) -/* 001F4 808A4FB4 3C01808A */ lui $at, %hi(D_808A54B0) ## $at = 808A0000 -/* 001F8 808A4FB8 C42454B0 */ lwc1 $f4, %lo(D_808A54B0)($at) -/* 001FC 808A4FBC C4860150 */ lwc1 $f6, 0x0150($a0) ## 00000150 -/* 00200 808A4FC0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00204 808A4FC4 8CB11C44 */ lw $s1, 0x1C44($a1) ## 00001C44 -/* 00208 808A4FC8 4606203C */ c.lt.s $f4, $f6 -/* 0020C 808A4FCC 00000000 */ nop -/* 00210 808A4FD0 45020039 */ bc1fl .L808A50B8 -/* 00214 808A4FD4 AE000168 */ sw $zero, 0x0168($s0) ## 00000168 -/* 00218 808A4FD8 8C8E0168 */ lw $t6, 0x0168($a0) ## 00000168 -/* 0021C 808A4FDC 25CF0001 */ addiu $t7, $t6, 0x0001 ## $t7 = 00000001 -/* 00220 808A4FE0 29E1001D */ slti $at, $t7, 0x001D -/* 00224 808A4FE4 14200034 */ bne $at, $zero, .L808A50B8 -/* 00228 808A4FE8 AC8F0168 */ sw $t7, 0x0168($a0) ## 00000168 -/* 0022C 808A4FEC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000 -/* 00230 808A4FF0 0C023A62 */ jal Player_InCsMode -/* 00234 808A4FF4 AFA5004C */ sw $a1, 0x004C($sp) -/* 00238 808A4FF8 54400030 */ bnel $v0, $zero, .L808A50BC -/* 0023C 808A4FFC C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150 -/* 00240 808A5000 0C229441 */ jal func_808A5104 -/* 00244 808A5004 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00248 808A5008 8FA4004C */ lw $a0, 0x004C($sp) -/* 0024C 808A500C 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 00250 808A5010 0C00B7D5 */ jal func_8002DF54 -/* 00254 808A5014 24060008 */ addiu $a2, $zero, 0x0008 ## $a2 = 00000008 -/* 00258 808A5018 26040178 */ addiu $a0, $s0, 0x0178 ## $a0 = 00000178 -/* 0025C 808A501C 0C01DF90 */ jal Math_Vec3f_Copy - ## Vec3f_Copy -/* 00260 808A5020 26250024 */ addiu $a1, $s1, 0x0024 ## $a1 = 00000024 -/* 00264 808A5024 0C01DE1C */ jal Math_Sins - ## sins? -/* 00268 808A5028 86040158 */ lh $a0, 0x0158($s0) ## 00000158 -/* 0026C 808A502C 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00 -/* 00270 808A5030 E7A0003C */ swc1 $f0, 0x003C($sp) -/* 00274 808A5034 E7A80040 */ swc1 $f8, 0x0040($sp) -/* 00278 808A5038 0C01DE0D */ jal Math_Coss - ## coss? -/* 0027C 808A503C 86040158 */ lh $a0, 0x0158($s0) ## 00000158 -/* 00280 808A5040 E7A00044 */ swc1 $f0, 0x0044($sp) -/* 00284 808A5044 C6300024 */ lwc1 $f16, 0x0024($s1) ## 00000024 -/* 00288 808A5048 C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024 -/* 0028C 808A504C 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00 -/* 00290 808A5050 27A40024 */ addiu $a0, $sp, 0x0024 ## $a0 = FFFFFFDC -/* 00294 808A5054 46105481 */ sub.s $f18, $f10, $f16 -/* 00298 808A5058 E7A40034 */ swc1 $f4, 0x0034($sp) -/* 0029C 808A505C 27A5003C */ addiu $a1, $sp, 0x003C ## $a1 = FFFFFFF4 -/* 002A0 808A5060 27A60030 */ addiu $a2, $sp, 0x0030 ## $a2 = FFFFFFE8 -/* 002A4 808A5064 E7B20030 */ swc1 $f18, 0x0030($sp) -/* 002A8 808A5068 C628002C */ lwc1 $f8, 0x002C($s1) ## 0000002C -/* 002AC 808A506C C606002C */ lwc1 $f6, 0x002C($s0) ## 0000002C -/* 002B0 808A5070 46083281 */ sub.s $f10, $f6, $f8 -/* 002B4 808A5074 0C229370 */ jal func_808A4DC0 -/* 002B8 808A5078 E7AA0038 */ swc1 $f10, 0x0038($sp) -/* 002BC 808A507C 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00 -/* 002C0 808A5080 C7B20028 */ lwc1 $f18, 0x0028($sp) -/* 002C4 808A5084 3C01BF80 */ lui $at, 0xBF80 ## $at = BF800000 -/* 002C8 808A5088 4612803C */ c.lt.s $f16, $f18 -/* 002CC 808A508C 00000000 */ nop -/* 002D0 808A5090 45020006 */ bc1fl .L808A50AC -/* 002D4 808A5094 44813000 */ mtc1 $at, $f6 ## $f6 = -1.00 -/* 002D8 808A5098 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000 -/* 002DC 808A509C 44812000 */ mtc1 $at, $f4 ## $f4 = 1.00 -/* 002E0 808A50A0 10000005 */ beq $zero, $zero, .L808A50B8 -/* 002E4 808A50A4 E604016C */ swc1 $f4, 0x016C($s0) ## 0000016C -/* 002E8 808A50A8 44813000 */ mtc1 $at, $f6 ## $f6 = 1.00 -.L808A50AC: -/* 002EC 808A50AC 10000002 */ beq $zero, $zero, .L808A50B8 -/* 002F0 808A50B0 E606016C */ swc1 $f6, 0x016C($s0) ## 0000016C -/* 002F4 808A50B4 AE000168 */ sw $zero, 0x0168($s0) ## 00000168 -.L808A50B8: -/* 002F8 808A50B8 C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150 -.L808A50BC: -/* 002FC 808A50BC 3C01808A */ lui $at, %hi(D_808A54B4) ## $at = 808A0000 -/* 00300 808A50C0 C42854B4 */ lwc1 $f8, %lo(D_808A54B4)($at) -/* 00304 808A50C4 46000005 */ abs.s $f0, $f0 -/* 00308 808A50C8 4600403C */ c.lt.s $f8, $f0 -/* 0030C 808A50CC 00000000 */ nop -/* 00310 808A50D0 45020008 */ bc1fl .L808A50F4 -/* 00314 808A50D4 8FBF001C */ lw $ra, 0x001C($sp) -/* 00318 808A50D8 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00 -/* 0031C 808A50DC 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF -/* 00320 808A50E0 E60A0150 */ swc1 $f10, 0x0150($s0) ## 00000150 -/* 00324 808A50E4 8E390680 */ lw $t9, 0x0680($s1) ## 00000680 -/* 00328 808A50E8 03214024 */ and $t0, $t9, $at -/* 0032C 808A50EC AE280680 */ sw $t0, 0x0680($s1) ## 00000680 -/* 00330 808A50F0 8FBF001C */ lw $ra, 0x001C($sp) -.L808A50F4: -/* 00334 808A50F4 8FB00014 */ lw $s0, 0x0014($sp) -/* 00338 808A50F8 8FB10018 */ lw $s1, 0x0018($sp) -/* 0033C 808A50FC 03E00008 */ jr $ra -/* 00340 808A5100 27BD0048 */ addiu $sp, $sp, 0x0048 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5104.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5104.s deleted file mode 100644 index 9d59d0beb4..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5104.s +++ /dev/null @@ -1,8 +0,0 @@ -glabel func_808A5104 -/* 00344 808A5104 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00 -/* 00348 808A5108 3C0E808A */ lui $t6, %hi(func_808A5120) ## $t6 = 808A0000 -/* 0034C 808A510C 25CE5120 */ addiu $t6, $t6, %lo(func_808A5120) ## $t6 = 808A5120 -/* 00350 808A5110 AC8E0164 */ sw $t6, 0x0164($a0) ## 00000164 -/* 00354 808A5114 E4800170 */ swc1 $f0, 0x0170($a0) ## 00000170 -/* 00358 808A5118 03E00008 */ jr $ra -/* 0035C 808A511C E4800174 */ swc1 $f0, 0x0174($a0) ## 00000174 diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5120.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5120.s deleted file mode 100644 index 0998508ca4..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5120.s +++ /dev/null @@ -1,106 +0,0 @@ -.late_rodata -glabel D_808A54B8 - .word 0x43360B61 -glabel D_808A54BC - .float 0.001 - -.text -glabel func_808A5120 -/* 00360 808A5120 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8 -/* 00364 808A5124 AFBF001C */ sw $ra, 0x001C($sp) -/* 00368 808A5128 AFB00018 */ sw $s0, 0x0018($sp) -/* 0036C 808A512C AFA5002C */ sw $a1, 0x002C($sp) -/* 00370 808A5130 8CAF1C44 */ lw $t7, 0x1C44($a1) ## 00001C44 -/* 00374 808A5134 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00378 808A5138 3C053F19 */ lui $a1, 0x3F19 ## $a1 = 3F190000 -/* 0037C 808A513C 3C063CA3 */ lui $a2, 0x3CA3 ## $a2 = 3CA30000 -/* 00380 808A5140 34C6D70A */ ori $a2, $a2, 0xD70A ## $a2 = 3CA3D70A -/* 00384 808A5144 34A5999A */ ori $a1, $a1, 0x999A ## $a1 = 3F19999A -/* 00388 808A5148 24840170 */ addiu $a0, $a0, 0x0170 ## $a0 = 00000170 -/* 0038C 808A514C 0C01DE80 */ jal Math_ApproxF - -/* 00390 808A5150 AFAF0024 */ sw $t7, 0x0024($sp) -/* 00394 808A5154 3C014234 */ lui $at, 0x4234 ## $at = 42340000 -/* 00398 808A5158 44813000 */ mtc1 $at, $f6 ## $f6 = 45.00 -/* 0039C 808A515C C604016C */ lwc1 $f4, 0x016C($s0) ## 0000016C -/* 003A0 808A5160 26040174 */ addiu $a0, $s0, 0x0174 ## $a0 = 00000174 -/* 003A4 808A5164 8E060170 */ lw $a2, 0x0170($s0) ## 00000170 -/* 003A8 808A5168 46062202 */ mul.s $f8, $f4, $f6 -/* 003AC 808A516C 44054000 */ mfc1 $a1, $f8 -/* 003B0 808A5170 0C01DE80 */ jal Math_ApproxF - -/* 003B4 808A5174 00000000 */ nop -/* 003B8 808A5178 1040001B */ beq $v0, $zero, .L808A51E8 -/* 003BC 808A517C 3C01808A */ lui $at, %hi(D_808A54B8) ## $at = 808A0000 -/* 003C0 808A5180 0C2293E4 */ jal func_808A4F90 -/* 003C4 808A5184 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 003C8 808A5188 8FA4002C */ lw $a0, 0x002C($sp) -/* 003CC 808A518C 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 003D0 808A5190 0C00B7D5 */ jal func_8002DF54 -/* 003D4 808A5194 24060007 */ addiu $a2, $zero, 0x0007 ## $a2 = 00000007 -/* 003D8 808A5198 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00 -/* 003DC 808A519C C610016C */ lwc1 $f16, 0x016C($s0) ## 0000016C -/* 003E0 808A51A0 4610503C */ c.lt.s $f10, $f16 -/* 003E4 808A51A4 00000000 */ nop -/* 003E8 808A51A8 45020006 */ bc1fl .L808A51C4 -/* 003EC 808A51AC 86080016 */ lh $t0, 0x0016($s0) ## 00000016 -/* 003F0 808A51B0 86180016 */ lh $t8, 0x0016($s0) ## 00000016 -/* 003F4 808A51B4 27192000 */ addiu $t9, $t8, 0x2000 ## $t9 = 00002000 -/* 003F8 808A51B8 10000004 */ beq $zero, $zero, .L808A51CC -/* 003FC 808A51BC A6190016 */ sh $t9, 0x0016($s0) ## 00000016 -/* 00400 808A51C0 86080016 */ lh $t0, 0x0016($s0) ## 00000016 -.L808A51C4: -/* 00404 808A51C4 2509E000 */ addiu $t1, $t0, 0xE000 ## $t1 = FFFFE000 -/* 00408 808A51C8 A6090016 */ sh $t1, 0x0016($s0) ## 00000016 -.L808A51CC: -/* 0040C 808A51CC 86020016 */ lh $v0, 0x0016($s0) ## 00000016 -/* 00410 808A51D0 24042893 */ addiu $a0, $zero, 0x2893 ## $a0 = 00002893 -/* 00414 808A51D4 A60200B6 */ sh $v0, 0x00B6($s0) ## 000000B6 -/* 00418 808A51D8 0C01E233 */ jal func_800788CC -/* 0041C 808A51DC A6020032 */ sh $v0, 0x0032($s0) ## 00000032 -/* 00420 808A51E0 10000012 */ beq $zero, $zero, .L808A522C -/* 00424 808A51E4 C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150 -.L808A51E8: -/* 00428 808A51E8 C6120174 */ lwc1 $f18, 0x0174($s0) ## 00000174 -/* 0042C 808A51EC C42454B8 */ lwc1 $f4, %lo(D_808A54B8)($at) -/* 00430 808A51F0 860B0016 */ lh $t3, 0x0016($s0) ## 00000016 -/* 00434 808A51F4 24042083 */ addiu $a0, $zero, 0x2083 ## $a0 = 00002083 -/* 00438 808A51F8 46049182 */ mul.s $f6, $f18, $f4 -/* 0043C 808A51FC 4600320D */ trunc.w.s $f8, $f6 -/* 00440 808A5200 44034000 */ mfc1 $v1, $f8 -/* 00444 808A5204 00000000 */ nop -/* 00448 808A5208 00031C00 */ sll $v1, $v1, 16 -/* 0044C 808A520C 00031C03 */ sra $v1, $v1, 16 -/* 00450 808A5210 01631021 */ addu $v0, $t3, $v1 -/* 00454 808A5214 00021400 */ sll $v0, $v0, 16 -/* 00458 808A5218 00021403 */ sra $v0, $v0, 16 -/* 0045C 808A521C A60200B6 */ sh $v0, 0x00B6($s0) ## 000000B6 -/* 00460 808A5220 0C01E233 */ jal func_800788CC -/* 00464 808A5224 A6020032 */ sh $v0, 0x0032($s0) ## 00000032 -/* 00468 808A5228 C6000150 */ lwc1 $f0, 0x0150($s0) ## 00000150 -.L808A522C: -/* 0046C 808A522C 3C01808A */ lui $at, %hi(D_808A54BC) ## $at = 808A0000 -/* 00470 808A5230 C42A54BC */ lwc1 $f10, %lo(D_808A54BC)($at) -/* 00474 808A5234 46000005 */ abs.s $f0, $f0 -/* 00478 808A5238 4600503C */ c.lt.s $f10, $f0 -/* 0047C 808A523C 00000000 */ nop -/* 00480 808A5240 45020009 */ bc1fl .L808A5268 -/* 00484 808A5244 8FA20024 */ lw $v0, 0x0024($sp) -/* 00488 808A5248 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00 -/* 0048C 808A524C 8FA20024 */ lw $v0, 0x0024($sp) -/* 00490 808A5250 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF -/* 00494 808A5254 E6100150 */ swc1 $f16, 0x0150($s0) ## 00000150 -/* 00498 808A5258 8C4C0680 */ lw $t4, 0x0680($v0) ## 00000680 -/* 0049C 808A525C 01816824 */ and $t5, $t4, $at -/* 004A0 808A5260 AC4D0680 */ sw $t5, 0x0680($v0) ## 00000680 -/* 004A4 808A5264 8FA20024 */ lw $v0, 0x0024($sp) -.L808A5268: -/* 004A8 808A5268 26050178 */ addiu $a1, $s0, 0x0178 ## $a1 = 00000178 -/* 004AC 808A526C 0C01DF90 */ jal Math_Vec3f_Copy - ## Vec3f_Copy -/* 004B0 808A5270 24440024 */ addiu $a0, $v0, 0x0024 ## $a0 = 00000024 -/* 004B4 808A5274 8FBF001C */ lw $ra, 0x001C($sp) -/* 004B8 808A5278 8FB00018 */ lw $s0, 0x0018($sp) -/* 004BC 808A527C 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000 -/* 004C0 808A5280 03E00008 */ jr $ra -/* 004C4 808A5284 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A52AC.s b/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A52AC.s deleted file mode 100644 index e8479a8f99..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A52AC.s +++ /dev/null @@ -1,80 +0,0 @@ -.rdata -glabel D_808A545C - .asciz "../z_bg_mori_kaitenkabe.c" - .balign 4 - -glabel D_808A5478 - .asciz "../z_bg_mori_kaitenkabe.c" - .balign 4 - -glabel D_808A5494 - .asciz "../z_bg_mori_kaitenkabe.c" - .balign 4 - -.text -glabel func_808A52AC -/* 004EC 808A52AC 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0 -/* 004F0 808A52B0 AFB10018 */ sw $s1, 0x0018($sp) -/* 004F4 808A52B4 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000 -/* 004F8 808A52B8 AFBF001C */ sw $ra, 0x001C($sp) -/* 004FC 808A52BC AFB00014 */ sw $s0, 0x0014($sp) -/* 00500 808A52C0 AFA40050 */ sw $a0, 0x0050($sp) -/* 00504 808A52C4 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000 -/* 00508 808A52C8 3C06808A */ lui $a2, %hi(D_808A545C) ## $a2 = 808A0000 -/* 0050C 808A52CC 24C6545C */ addiu $a2, $a2, %lo(D_808A545C) ## $a2 = 808A545C -/* 00510 808A52D0 27A40034 */ addiu $a0, $sp, 0x0034 ## $a0 = FFFFFFE4 -/* 00514 808A52D4 2407015B */ addiu $a3, $zero, 0x015B ## $a3 = 0000015B -/* 00518 808A52D8 0C031AB1 */ jal Graph_OpenDisps -/* 0051C 808A52DC 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000 -/* 00520 808A52E0 0C024F46 */ jal func_80093D18 -/* 00524 808A52E4 8E240000 */ lw $a0, 0x0000($s1) ## 00000000 -/* 00528 808A52E8 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0 -/* 0052C 808A52EC 3C0FDB06 */ lui $t7, 0xDB06 ## $t7 = DB060000 -/* 00530 808A52F0 35EF0020 */ ori $t7, $t7, 0x0020 ## $t7 = DB060020 -/* 00534 808A52F4 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008 -/* 00538 808A52F8 AE0E02C0 */ sw $t6, 0x02C0($s0) ## 000002C0 -/* 0053C 808A52FC AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000 -/* 00540 808A5300 8FB80050 */ lw $t8, 0x0050($sp) -/* 00544 808A5304 3C0A0001 */ lui $t2, 0x0001 ## $t2 = 00010000 -/* 00548 808A5308 3C0CDA38 */ lui $t4, 0xDA38 ## $t4 = DA380000 -/* 0054C 808A530C 83190184 */ lb $t9, 0x0184($t8) ## 00000184 -/* 00550 808A5310 358C0003 */ ori $t4, $t4, 0x0003 ## $t4 = DA380003 -/* 00554 808A5314 3C05808A */ lui $a1, %hi(D_808A5478) ## $a1 = 808A0000 -/* 00558 808A5318 00194100 */ sll $t0, $t9, 4 -/* 0055C 808A531C 01194021 */ addu $t0, $t0, $t9 -/* 00560 808A5320 00084080 */ sll $t0, $t0, 2 -/* 00564 808A5324 02284821 */ addu $t1, $s1, $t0 -/* 00568 808A5328 01495021 */ addu $t2, $t2, $t1 -/* 0056C 808A532C 8D4A17B4 */ lw $t2, 0x17B4($t2) ## 000117B4 -/* 00570 808A5330 24A55478 */ addiu $a1, $a1, %lo(D_808A5478) ## $a1 = 808A5478 -/* 00574 808A5334 24060160 */ addiu $a2, $zero, 0x0160 ## $a2 = 00000160 -/* 00578 808A5338 AC4A0004 */ sw $t2, 0x0004($v0) ## 00000004 -/* 0057C 808A533C 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0 -/* 00580 808A5340 244B0008 */ addiu $t3, $v0, 0x0008 ## $t3 = 00000008 -/* 00584 808A5344 AE0B02C0 */ sw $t3, 0x02C0($s0) ## 000002C0 -/* 00588 808A5348 AC4C0000 */ sw $t4, 0x0000($v0) ## 00000000 -/* 0058C 808A534C 8E240000 */ lw $a0, 0x0000($s1) ## 00000000 -/* 00590 808A5350 0C0346A2 */ jal Matrix_NewMtx -/* 00594 808A5354 AFA2002C */ sw $v0, 0x002C($sp) -/* 00598 808A5358 8FA3002C */ lw $v1, 0x002C($sp) -/* 0059C 808A535C 3C0F0600 */ lui $t7, 0x0600 ## $t7 = 06000000 -/* 005A0 808A5360 25EF56B0 */ addiu $t7, $t7, 0x56B0 ## $t7 = 060056B0 -/* 005A4 808A5364 AC620004 */ sw $v0, 0x0004($v1) ## 00000004 -/* 005A8 808A5368 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0 -/* 005AC 808A536C 3C0EDE00 */ lui $t6, 0xDE00 ## $t6 = DE000000 -/* 005B0 808A5370 3C06808A */ lui $a2, %hi(D_808A5494) ## $a2 = 808A0000 -/* 005B4 808A5374 244D0008 */ addiu $t5, $v0, 0x0008 ## $t5 = 00000008 -/* 005B8 808A5378 AE0D02C0 */ sw $t5, 0x02C0($s0) ## 000002C0 -/* 005BC 808A537C AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004 -/* 005C0 808A5380 AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000 -/* 005C4 808A5384 8E250000 */ lw $a1, 0x0000($s1) ## 00000000 -/* 005C8 808A5388 24C65494 */ addiu $a2, $a2, %lo(D_808A5494) ## $a2 = 808A5494 -/* 005CC 808A538C 27A40034 */ addiu $a0, $sp, 0x0034 ## $a0 = FFFFFFE4 -/* 005D0 808A5390 0C031AD5 */ jal Graph_CloseDisps -/* 005D4 808A5394 24070164 */ addiu $a3, $zero, 0x0164 ## $a3 = 00000164 -/* 005D8 808A5398 8FBF001C */ lw $ra, 0x001C($sp) -/* 005DC 808A539C 8FB00014 */ lw $s0, 0x0014($sp) -/* 005E0 808A53A0 8FB10018 */ lw $s1, 0x0018($sp) -/* 005E4 808A53A4 03E00008 */ jr $ra -/* 005E8 808A53A8 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000 -/* 005EC 808A53AC 00000000 */ nop diff --git a/data/overlays/actors/z_bg_mori_kaitenkabe.data.s b/data/overlays/actors/z_bg_mori_kaitenkabe.data.s deleted file mode 100644 index 8b4ebfb1d1..0000000000 --- a/data/overlays/actors/z_bg_mori_kaitenkabe.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 Bg_Mori_Kaitenkabe_InitVars - .word 0x00880100, 0x00000000, 0x00720000, 0x00000188 -.word BgMoriKaitenkabe_Init -.word BgMoriKaitenkabe_Destroy -.word BgMoriKaitenkabe_Update -.word 0x00000000 -glabel D_808A53D0 - .word 0xB0F403E8, 0xB0F803E8, 0xB0FC03E8, 0x485003E8 - diff --git a/data/overlays/actors/z_bg_mori_kaitenkabe.reloc.s b/data/overlays/actors/z_bg_mori_kaitenkabe.reloc.s deleted file mode 100644 index dd3f94e069..0000000000 --- a/data/overlays/actors/z_bg_mori_kaitenkabe.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_808A54C0 - .incbin "baserom/ovl_Bg_Mori_Kaitenkabe", 0x700, 0x000000B0 diff --git a/spec b/spec index 8b2ceb1492..54b82dfe12 100644 --- a/spec +++ b/spec @@ -1132,8 +1132,7 @@ endseg beginseg name "ovl_Bg_Mori_Kaitenkabe" include "build/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.o" - include "build/data/overlays/actors/z_bg_mori_kaitenkabe.data.o" - include "build/data/overlays/actors/z_bg_mori_kaitenkabe.reloc.o" + include "build/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/ovl_Bg_Mori_Kaitenkabe_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c index aecad983b9..be091d9faa 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c +++ b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c @@ -1,3 +1,9 @@ +/* + * File: z_bg_mori_kaitenkabe.c + * Overlay: ovl_Bg_Mori_Kaitenkabe + * Description: Rotating wall in Forest Temple basement + */ + #include "z_bg_mori_kaitenkabe.h" #define FLAGS 0x00000000 @@ -7,8 +13,17 @@ void BgMoriKaitenkabe_Init(Actor* thisx, GlobalContext* globalCtx); void BgMoriKaitenkabe_Destroy(Actor* thisx, GlobalContext* globalCtx); void BgMoriKaitenkabe_Update(Actor* thisx, GlobalContext* globalCtx); +void BgMoriKaitenkabe_Draw(Actor* thisx, GlobalContext* globalCtx); + +void BgMoriKaitenkabe_WaitForMoriTex(BgMoriKaitenkabe* this, GlobalContext* globalCtx); +void BgMoriKaitenkabe_SetupWait(BgMoriKaitenkabe* this); +void BgMoriKaitenkabe_Wait(BgMoriKaitenkabe* this, GlobalContext* globalCtx); +void BgMoriKaitenkabe_SetupRotate(BgMoriKaitenkabe* this); +void BgMoriKaitenkabe_Rotate(BgMoriKaitenkabe* this, GlobalContext* globalCtx); + +extern ColHeader D_060063B8; +extern Gfx D_060056B0[]; -/* const ActorInit Bg_Mori_Kaitenkabe_InitVars = { ACTOR_BG_MORI_KAITENKABE, ACTORTYPE_BG, @@ -20,23 +35,145 @@ const ActorInit Bg_Mori_Kaitenkabe_InitVars = { (ActorFunc)BgMoriKaitenkabe_Update, NULL, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4DC0.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Init.s") +static InitChainEntry sInitChain[] = { + ICHAIN_F32(uncullZoneForward, 1000, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneScale, 1000, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneDownward, 1000, ICHAIN_CONTINUE), + ICHAIN_VEC3F_DIV1000(scale, 1000, ICHAIN_STOP), +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Destroy.s") +void BgMoriKaitenkabe_CrossProduct(Vec3f* dest, Vec3f* v1, Vec3f* v2) { + dest->x = (v1->y * v2->z) - (v1->z * v2->y); + dest->y = (v1->z * v2->x) - (v1->x * v2->z); + dest->z = (v1->x * v2->y) - (v1->y * v2->x); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F3C.s") +void BgMoriKaitenkabe_Init(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriKaitenkabe* this = THIS; + ColHeader* colHeader = NULL; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4F90.s") + // Forest Temple object 【Rotating Wall (arg_data: 0x% 04x)】 appears + osSyncPrintf("◯◯◯森の神殿オブジェクト【回転壁(arg_data : 0x%04x)】出現 \n", this->dyna.actor.params); + Actor_ProcessInitChain(&this->dyna.actor, sInitChain); + DynaPolyInfo_SetActorMove(&this->dyna, 0); + DynaPolyInfo_Alloc(&D_060063B8, &colHeader); + this->dyna.dynaPolyId = + DynaPolyInfo_RegisterActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader); + this->moriTexObjIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_MORI_TEX); + if (this->moriTexObjIndex < 0) { + Actor_Kill(&this->dyna.actor); + // 【Rotating wall】 Bank danger! + osSyncPrintf("【回転壁】 バンク危険!(%s %d)\n", "../z_bg_mori_kaitenkabe.c", 176); + } else { + this->actionFunc = BgMoriKaitenkabe_WaitForMoriTex; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A4FA4.s") +void BgMoriKaitenkabe_Destroy(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriKaitenkabe* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5104.s") + DynaPolyInfo_Free(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A5120.s") +void BgMoriKaitenkabe_WaitForMoriTex(BgMoriKaitenkabe* this, GlobalContext* globalCtx) { + if (Object_IsLoaded(&globalCtx->objectCtx, this->moriTexObjIndex)) { + BgMoriKaitenkabe_SetupWait(this); + this->dyna.actor.draw = BgMoriKaitenkabe_Draw; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/BgMoriKaitenkabe_Update.s") +void BgMoriKaitenkabe_SetupWait(BgMoriKaitenkabe* this) { + this->actionFunc = BgMoriKaitenkabe_Wait; + this->timer = 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Mori_Kaitenkabe/func_808A52AC.s") +void BgMoriKaitenkabe_Wait(BgMoriKaitenkabe* this, GlobalContext* globalCtx) { + Vec3f push; + Vec3f leverArm; + Vec3f torque; + Player* player = PLAYER; + + if (this->dyna.unk_150 > 0.001f) { + this->timer++; + if ((this->timer > 28) && !Player_InCsMode(globalCtx)) { + BgMoriKaitenkabe_SetupRotate(this); + func_8002DF54(globalCtx, &this->dyna.actor, 8); + Math_Vec3f_Copy(&this->lockedPlayerPos, &player->actor.posRot.pos); + push.x = Math_Sins(this->dyna.unk_158); + push.y = 0.0f; + push.z = Math_Coss(this->dyna.unk_158); + leverArm.x = this->dyna.actor.posRot.pos.x - player->actor.posRot.pos.x; + leverArm.y = 0.0f; + leverArm.z = this->dyna.actor.posRot.pos.z - player->actor.posRot.pos.z; + BgMoriKaitenkabe_CrossProduct(&torque, &push, &leverArm); + this->rotDirection = (torque.y > 0.0f) ? 1.0f : -1.0f; + } + } else { + this->timer = 0; + } + if (fabsf(this->dyna.unk_150) > 0.001f) { + this->dyna.unk_150 = 0.0f; + player->stateFlags2 &= ~0x10; + } +} + +void BgMoriKaitenkabe_SetupRotate(BgMoriKaitenkabe* this) { + this->actionFunc = BgMoriKaitenkabe_Rotate; + this->rotSpeed = 0.0f; + this->rotYdeg = 0.0f; +} + +void BgMoriKaitenkabe_Rotate(BgMoriKaitenkabe* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + Actor* thisx = &this->dyna.actor; + s16 rotY; + + Math_ApproxF(&this->rotSpeed, 0.6f, 0.02f); + if (Math_ApproxF(&this->rotYdeg, this->rotDirection * 45.0f, this->rotSpeed)) { + BgMoriKaitenkabe_SetupWait(this); + func_8002DF54(globalCtx, thisx, 7); + if (this->rotDirection > 0.0f) { + thisx->initPosRot.rot.y += 0x2000; + } else { + thisx->initPosRot.rot.y -= 0x2000; + } + thisx->posRot.rot.y = thisx->shape.rot.y = thisx->initPosRot.rot.y; + func_800788CC(NA_SE_EV_STONEDOOR_STOP); + } else { + rotY = this->rotYdeg * (0x10000 / 360.0f); + thisx->posRot.rot.y = thisx->shape.rot.y = thisx->initPosRot.rot.y + rotY; + func_800788CC(NA_SE_EV_WALL_SLIDE - SFX_FLAG); + } + if (fabsf(this->dyna.unk_150) > 0.001f) { + this->dyna.unk_150 = 0.0f; + player->stateFlags2 &= ~0x10; + } + Math_Vec3f_Copy(&player->actor.posRot.pos, &this->lockedPlayerPos); +} + +void BgMoriKaitenkabe_Update(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriKaitenkabe* this = THIS; + + this->actionFunc(this, globalCtx); +} + +void BgMoriKaitenkabe_Draw(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + BgMoriKaitenkabe* this = THIS; + + OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_mori_kaitenkabe.c", 347); + func_80093D18(globalCtx->state.gfxCtx); + + gSPSegment(oGfxCtx->polyOpa.p++, 0x08, globalCtx->objectCtx.status[this->moriTexObjIndex].segment); + + gSPMatrix(oGfxCtx->polyOpa.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_mori_kaitenkabe.c", 352), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPDisplayList(oGfxCtx->polyOpa.p++, D_060056B0); + + CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_mori_kaitenkabe.c", 356); +} diff --git a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h index ac941f86ec..d18287b064 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h +++ b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h @@ -6,9 +6,17 @@ struct BgMoriKaitenkabe; +typedef void (*BgMoriKaitenkabeActionFunc)(struct BgMoriKaitenkabe*, GlobalContext*); + typedef struct BgMoriKaitenkabe { - /* 0x0000 */ Actor actor; - /* 0x014C */ char unk_14C[0x3C]; + /* 0x0000 */ DynaPolyActor dyna; + /* 0x0164 */ BgMoriKaitenkabeActionFunc actionFunc; + /* 0x0168 */ s32 timer; + /* 0x016C */ f32 rotDirection; + /* 0x0170 */ f32 rotSpeed; + /* 0x0174 */ f32 rotYdeg; + /* 0x0178 */ Vec3f lockedPlayerPos; + /* 0x0184 */ s8 moriTexObjIndex; } BgMoriKaitenkabe; // size = 0x0188 extern const ActorInit Bg_Mori_Kaitenkabe_InitVars; diff --git a/undefined_syms.txt b/undefined_syms.txt index b273a2b726..7a5bcddd3d 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1209,6 +1209,10 @@ D_0600C080 = 0x0600C080; D_060088B0 = 0x060088B0; D_0600BEC0 = 0x0600BEC0; +// z_bg_mori_kaitenkabe +D_060056B0 = 0x060056B0; +D_060063B8 = 0x060063B8; + // z_en_st D_06005298 = 0x06005298; D_06000304 = 0x06000304;