From 579b87dceb94410c8d115fc75789c106cf08d5ca Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Thu, 3 Dec 2020 21:51:22 +0000 Subject: [PATCH] ovl_En_Door (#402) * Decompiled, two non-matchings remaining * Fix merge * Cleanups * Some documentation, remove unused asm * Remove unused data.s, review suggestions * Ran formatter, further review suggestions * Make some data static * Match EnDoor_Init * Remove asm for EnDoor_Init * Changes from review Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> * More variables static, remove unnecessary s8 cast * PR Suggestions * review Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> Co-authored-by: fig --- .../ovl_Door_Shutter/DoorShutter_Draw.s | 2 +- .../actors/ovl_En_Door/EnDoor_Destroy.s | 15 - .../overlays/actors/ovl_En_Door/EnDoor_Draw.s | 86 ----- .../{func_809FC5D0.s => EnDoor_Idle.s} | 10 +- .../overlays/actors/ovl_En_Door/EnDoor_Init.s | 153 -------- .../actors/ovl_En_Door/EnDoor_Update.s | 10 - .../actors/ovl_En_Door/func_809FC41C.s | 120 ------- .../actors/ovl_En_Door/func_809FC878.s | 21 -- .../actors/ovl_En_Door/func_809FC8C0.s | 15 - .../actors/ovl_En_Door/func_809FC8F4.s | 15 - .../actors/ovl_En_Door/func_809FC928.s | 32 -- .../actors/ovl_En_Door/func_809FC998.s | 20 -- .../actors/ovl_En_Door/func_809FC9DC.s | 166 --------- .../actors/ovl_En_Door/func_809FCC3C.s | 84 ----- data/overlays/actors/z_en_door.data.s | 30 -- include/functions.h | 4 +- spec | 5 +- src/code/z_actor.c | 10 +- src/code/z_skelanime.c | 4 +- .../actors/ovl_Door_Gerudo/z_door_gerudo.c | 2 +- src/overlays/actors/ovl_En_Door/z_en_door.c | 333 +++++++++++++++++- src/overlays/actors/ovl_En_Door/z_en_door.h | 47 ++- undefined_syms.txt | 6 + 23 files changed, 388 insertions(+), 802 deletions(-) delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Destroy.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Draw.s rename asm/non_matchings/overlays/actors/ovl_En_Door/{func_809FC5D0.s => EnDoor_Idle.s} (96%) delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Init.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Update.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC41C.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC878.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8C0.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8F4.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC928.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC998.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC9DC.s delete mode 100644 asm/non_matchings/overlays/actors/ovl_En_Door/func_809FCC3C.s delete mode 100644 data/overlays/actors/z_en_door.data.s diff --git a/asm/non_matchings/overlays/actors/ovl_Door_Shutter/DoorShutter_Draw.s b/asm/non_matchings/overlays/actors/ovl_Door_Shutter/DoorShutter_Draw.s index 95fa41649a..995beba3c9 100644 --- a/asm/non_matchings/overlays/actors/ovl_Door_Shutter/DoorShutter_Draw.s +++ b/asm/non_matchings/overlays/actors/ovl_Door_Shutter/DoorShutter_Draw.s @@ -386,7 +386,7 @@ glabel DoorShutter_Draw .L80998000: /* 01D60 80998000 00403025 */ or $a2, $v0, $zero ## $a2 = 00000002 .L80998004: -/* 01D64 80998004 0C00CFD5 */ jal func_80033F54 +/* 01D64 80998004 0C00CFD5 */ jal Actor_DrawDoorLock /* 01D68 80998008 8225016E */ lb $a1, 0x016E($s1) ## 0000016E .L8099800C: /* 01D6C 8099800C 8FAE0084 */ lw $t6, 0x0084($sp) diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Destroy.s b/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Destroy.s deleted file mode 100644 index 724ce687ee..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Destroy.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel EnDoor_Destroy -/* 00218 809FC3E8 948F001C */ lhu $t7, 0x001C($a0) ## 0000001C -/* 0021C 809FC3EC 3C0E0001 */ lui $t6, 0x0001 ## $t6 = 00010000 -/* 00220 809FC3F0 01C57021 */ addu $t6, $t6, $a1 -/* 00224 809FC3F4 8DCE1D38 */ lw $t6, 0x1D38($t6) ## 00011D38 -/* 00228 809FC3F8 000FC283 */ sra $t8, $t7, 10 -/* 0022C 809FC3FC 0018C900 */ sll $t9, $t8, 4 -/* 00230 809FC400 01D91021 */ addu $v0, $t6, $t9 -/* 00234 809FC404 84430004 */ lh $v1, 0x0004($v0) ## 00000004 -/* 00238 809FC408 04610002 */ bgez $v1, .L809FC414 -/* 0023C 809FC40C 00034023 */ subu $t0, $zero, $v1 -/* 00240 809FC410 A4480004 */ sh $t0, 0x0004($v0) ## 00000004 -.L809FC414: -/* 00244 809FC414 03E00008 */ jr $ra -/* 00248 809FC418 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Draw.s b/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Draw.s deleted file mode 100644 index dee6368c80..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Draw.s +++ /dev/null @@ -1,86 +0,0 @@ -.rdata -glabel D_809FCF10 - .asciz "../z_en_door.c" - .balign 4 - -glabel D_809FCF20 - .asciz "../z_en_door.c" - .balign 4 - -.text -glabel EnDoor_Draw -/* 00B9C 809FCD6C 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0 -/* 00BA0 809FCD70 AFBF0024 */ sw $ra, 0x0024($sp) -/* 00BA4 809FCD74 AFB00020 */ sw $s0, 0x0020($sp) -/* 00BA8 809FCD78 AFA50054 */ sw $a1, 0x0054($sp) -/* 00BAC 809FCD7C 808F001E */ lb $t7, 0x001E($a0) ## 0000001E -/* 00BB0 809FCD80 808E0193 */ lb $t6, 0x0193($a0) ## 00000193 -/* 00BB4 809FCD84 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00BB8 809FCD88 27A40038 */ addiu $a0, $sp, 0x0038 ## $a0 = FFFFFFE8 -/* 00BBC 809FCD8C 15CF0034 */ bne $t6, $t7, .L809FCE60 -/* 00BC0 809FCD90 3C0680A0 */ lui $a2, %hi(D_809FCF10) ## $a2 = 80A00000 -/* 00BC4 809FCD94 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000 -/* 00BC8 809FCD98 24C6CF10 */ addiu $a2, $a2, %lo(D_809FCF10) ## $a2 = 809FCF10 -/* 00BCC 809FCD9C 2407038E */ addiu $a3, $zero, 0x038E ## $a3 = 0000038E -/* 00BD0 809FCDA0 0C031AB1 */ jal Graph_OpenDisps -/* 00BD4 809FCDA4 AFA50048 */ sw $a1, 0x0048($sp) -/* 00BD8 809FCDA8 8FB90054 */ lw $t9, 0x0054($sp) -/* 00BDC 809FCDAC 0C024F46 */ jal func_80093D18 -/* 00BE0 809FCDB0 8F240000 */ lw $a0, 0x0000($t9) ## 00000000 -/* 00BE4 809FCDB4 8E050150 */ lw $a1, 0x0150($s0) ## 00000150 -/* 00BE8 809FCDB8 8E06016C */ lw $a2, 0x016C($s0) ## 0000016C -/* 00BEC 809FCDBC 3C0780A0 */ lui $a3, %hi(func_809FCC3C) ## $a3 = 80A00000 -/* 00BF0 809FCDC0 24E7CC3C */ addiu $a3, $a3, %lo(func_809FCC3C) ## $a3 = 809FCC3C -/* 00BF4 809FCDC4 AFB00014 */ sw $s0, 0x0014($sp) -/* 00BF8 809FCDC8 AFA00010 */ sw $zero, 0x0010($sp) -/* 00BFC 809FCDCC 0C028572 */ jal SkelAnime_DrawOpa - -/* 00C00 809FCDD0 8FA40054 */ lw $a0, 0x0054($sp) -/* 00C04 809FCDD4 86020032 */ lh $v0, 0x0032($s0) ## 00000032 -/* 00C08 809FCDD8 8FA80048 */ lw $t0, 0x0048($sp) -/* 00C0C 809FCDDC 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000 -/* 00C10 809FCDE0 50400014 */ beql $v0, $zero, .L809FCE34 -/* 00C14 809FCDE4 86050196 */ lh $a1, 0x0196($s0) ## 00000196 -/* 00C18 809FCDE8 1840000A */ blez $v0, .L809FCE14 -/* 00C1C 809FCDEC 3C0DDE00 */ lui $t5, 0xDE00 ## $t5 = DE000000 -/* 00C20 809FCDF0 8D0302C0 */ lw $v1, 0x02C0($t0) ## 000002C0 -/* 00C24 809FCDF4 3C0B0401 */ lui $t3, 0x0401 ## $t3 = 04010000 -/* 00C28 809FCDF8 256BEE00 */ addiu $t3, $t3, 0xEE00 ## $t3 = 0400EE00 -/* 00C2C 809FCDFC 24690008 */ addiu $t1, $v1, 0x0008 ## $t1 = 00000008 -/* 00C30 809FCE00 AD0902C0 */ sw $t1, 0x02C0($t0) ## 000002C0 -/* 00C34 809FCE04 3C0ADE00 */ lui $t2, 0xDE00 ## $t2 = DE000000 -/* 00C38 809FCE08 AC6A0000 */ sw $t2, 0x0000($v1) ## 00000000 -/* 00C3C 809FCE0C 10000008 */ beq $zero, $zero, .L809FCE30 -/* 00C40 809FCE10 AC6B0004 */ sw $t3, 0x0004($v1) ## 00000004 -.L809FCE14: -/* 00C44 809FCE14 8D0302C0 */ lw $v1, 0x02C0($t0) ## 000002C0 -/* 00C48 809FCE18 3C0E0401 */ lui $t6, 0x0401 ## $t6 = 04010000 -/* 00C4C 809FCE1C 25CEECB8 */ addiu $t6, $t6, 0xECB8 ## $t6 = 0400ECB8 -/* 00C50 809FCE20 246C0008 */ addiu $t4, $v1, 0x0008 ## $t4 = 00000008 -/* 00C54 809FCE24 AD0C02C0 */ sw $t4, 0x02C0($t0) ## 000002C0 -/* 00C58 809FCE28 AC6E0004 */ sw $t6, 0x0004($v1) ## 00000004 -/* 00C5C 809FCE2C AC6D0000 */ sw $t5, 0x0000($v1) ## 00000000 -.L809FCE30: -/* 00C60 809FCE30 86050196 */ lh $a1, 0x0196($s0) ## 00000196 -.L809FCE34: -/* 00C64 809FCE34 50A00004 */ beql $a1, $zero, .L809FCE48 -/* 00C68 809FCE38 8FAF0054 */ lw $t7, 0x0054($sp) -/* 00C6C 809FCE3C 0C00CFD5 */ jal func_80033F54 -/* 00C70 809FCE40 8FA40054 */ lw $a0, 0x0054($sp) -/* 00C74 809FCE44 8FAF0054 */ lw $t7, 0x0054($sp) -.L809FCE48: -/* 00C78 809FCE48 3C0680A0 */ lui $a2, %hi(D_809FCF20) ## $a2 = 80A00000 -/* 00C7C 809FCE4C 24C6CF20 */ addiu $a2, $a2, %lo(D_809FCF20) ## $a2 = 809FCF20 -/* 00C80 809FCE50 27A40038 */ addiu $a0, $sp, 0x0038 ## $a0 = FFFFFFE8 -/* 00C84 809FCE54 240703AD */ addiu $a3, $zero, 0x03AD ## $a3 = 000003AD -/* 00C88 809FCE58 0C031AD5 */ jal Graph_CloseDisps -/* 00C8C 809FCE5C 8DE50000 */ lw $a1, 0x0000($t7) ## 00000000 -.L809FCE60: -/* 00C90 809FCE60 8FBF0024 */ lw $ra, 0x0024($sp) -/* 00C94 809FCE64 8FB00020 */ lw $s0, 0x0020($sp) -/* 00C98 809FCE68 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000 -/* 00C9C 809FCE6C 03E00008 */ jr $ra -/* 00CA0 809FCE70 00000000 */ nop -/* 00CA4 809FCE74 00000000 */ nop -/* 00CA8 809FCE78 00000000 */ nop -/* 00CAC 809FCE7C 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC5D0.s b/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Idle.s similarity index 96% rename from asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC5D0.s rename to asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Idle.s index f195da7e40..2f927c45cb 100644 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC5D0.s +++ b/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Idle.s @@ -1,4 +1,4 @@ -glabel func_809FC5D0 +glabel EnDoor_Idle /* 00400 809FC5D0 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0 /* 00404 809FC5D4 AFBF0014 */ sw $ra, 0x0014($sp) /* 00408 809FC5D8 AFA50044 */ sw $a1, 0x0044($sp) @@ -13,10 +13,10 @@ glabel func_809FC5D0 /* 0042C 809FC5FC 0C00B6F4 */ jal func_8002DBD0 /* 00430 809FC600 AFA8003C */ sw $t0, 0x003C($sp) /* 00434 809FC604 8FA70040 */ lw $a3, 0x0040($sp) -/* 00438 809FC608 3C0A80A0 */ lui $t2, %hi(func_809FC9DC) ## $t2 = 80A00000 +/* 00438 809FC608 3C0A80A0 */ lui $t2, %hi(EnDoor_Open) ## $t2 = 80A00000 /* 0043C 809FC60C 8FA8003C */ lw $t0, 0x003C($sp) /* 00440 809FC610 90E90191 */ lbu $t1, 0x0191($a3) ## 00000191 -/* 00444 809FC614 254AC9DC */ addiu $t2, $t2, %lo(func_809FC9DC) ## $t2 = 809FC9DC +/* 00444 809FC614 254AC9DC */ addiu $t2, $t2, %lo(EnDoor_Open) ## $t2 = 809FC9DC /* 00448 809FC618 3C0580A0 */ lui $a1, %hi(D_809FCECC) ## $a1 = 80A00000 /* 0044C 809FC61C 1120002A */ beq $t1, $zero, .L809FC6C8 /* 00450 809FC620 8FA40044 */ lw $a0, 0x0044($sp) @@ -172,8 +172,8 @@ glabel func_809FC5D0 /* 00670 809FC840 3C014370 */ lui $at, 0x4370 ## $at = 43700000 /* 00674 809FC844 44812000 */ mtc1 $at, $f4 ## $f4 = 240.00 /* 00678 809FC848 C4E80090 */ lwc1 $f8, 0x0090($a3) ## 00000090 -/* 0067C 809FC84C 3C0A80A0 */ lui $t2, %hi(func_809FC928) ## $t2 = 80A00000 -/* 00680 809FC850 254AC928 */ addiu $t2, $t2, %lo(func_809FC928) ## $t2 = 809FC928 +/* 0067C 809FC84C 3C0A80A0 */ lui $t2, %hi(EnDoor_AjarOpen) ## $t2 = 80A00000 +/* 00680 809FC850 254AC928 */ addiu $t2, $t2, %lo(EnDoor_AjarOpen) ## $t2 = 809FC928 /* 00684 809FC854 4608203C */ c.lt.s $f4, $f8 /* 00688 809FC858 00000000 */ nop /* 0068C 809FC85C 45020003 */ bc1fl .L809FC86C diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Init.s b/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Init.s deleted file mode 100644 index 7f9a6c06d2..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Init.s +++ /dev/null @@ -1,153 +0,0 @@ -glabel EnDoor_Init -/* 00000 809FC1D0 27BDFFA0 */ addiu $sp, $sp, 0xFFA0 ## $sp = FFFFFFA0 -/* 00004 809FC1D4 AFB10038 */ sw $s1, 0x0038($sp) -/* 00008 809FC1D8 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000 -/* 0000C 809FC1DC 3C0880A0 */ lui $t0, %hi(D_809FCEA0) ## $t0 = 80A00000 -/* 00010 809FC1E0 AFBF003C */ sw $ra, 0x003C($sp) -/* 00014 809FC1E4 AFB00034 */ sw $s0, 0x0034($sp) -/* 00018 809FC1E8 2508CEA0 */ addiu $t0, $t0, %lo(D_809FCEA0) ## $t0 = 809FCEA0 -/* 0001C 809FC1EC 3C0580A0 */ lui $a1, %hi(D_809FCEC4) ## $a1 = 80A00000 -/* 00020 809FC1F0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000 -/* 00024 809FC1F4 24A5CEC4 */ addiu $a1, $a1, %lo(D_809FCEC4) ## $a1 = 809FCEC4 -/* 00028 809FC1F8 0C01E037 */ jal Actor_ProcessInitChain - -/* 0002C 809FC1FC AFA80054 */ sw $t0, 0x0054($sp) -/* 00030 809FC200 3C060401 */ lui $a2, 0x0401 ## $a2 = 04010000 -/* 00034 809FC204 3C070401 */ lui $a3, 0x0401 ## $a3 = 04010000 -/* 00038 809FC208 260E0198 */ addiu $t6, $s0, 0x0198 ## $t6 = 00000198 -/* 0003C 809FC20C 260F01B6 */ addiu $t7, $s0, 0x01B6 ## $t7 = 000001B6 -/* 00040 809FC210 24180005 */ addiu $t8, $zero, 0x0005 ## $t8 = 00000005 -/* 00044 809FC214 AFB80018 */ sw $t8, 0x0018($sp) -/* 00048 809FC218 AFAF0014 */ sw $t7, 0x0014($sp) -/* 0004C 809FC21C AFAE0010 */ sw $t6, 0x0010($sp) -/* 00050 809FC220 24E7E758 */ addiu $a3, $a3, 0xE758 ## $a3 = 0400E758 -/* 00054 809FC224 24C6FF78 */ addiu $a2, $a2, 0xFF78 ## $a2 = 0400FF78 -/* 00058 809FC228 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000 -/* 0005C 809FC22C 0C02915F */ jal SkelAnime_Init - -/* 00060 809FC230 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C -/* 00064 809FC234 8FA80054 */ lw $t0, 0x0054($sp) -/* 00068 809FC238 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000 -/* 0006C 809FC23C 862400A4 */ lh $a0, 0x00A4($s1) ## 000000A4 -/* 00070 809FC240 24020004 */ addiu $v0, $zero, 0x0004 ## $v0 = 00000004 -.L809FC244: -/* 00074 809FC244 85190000 */ lh $t9, 0x0000($t0) ## 00000000 -/* 00078 809FC248 53240005 */ beql $t9, $a0, .L809FC260 -/* 0007C 809FC24C 28610004 */ slti $at, $v1, 0x0004 -/* 00080 809FC250 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000001 -/* 00084 809FC254 1462FFFB */ bne $v1, $v0, .L809FC244 -/* 00088 809FC258 25080006 */ addiu $t0, $t0, 0x0006 ## $t0 = 00000006 -/* 0008C 809FC25C 28610004 */ slti $at, $v1, 0x0004 -.L809FC260: -/* 00090 809FC260 14200009 */ bne $at, $zero, .L809FC288 -/* 00094 809FC264 24050002 */ addiu $a1, $zero, 0x0002 ## $a1 = 00000002 -/* 00098 809FC268 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 0009C 809FC26C 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4 -/* 000A0 809FC270 02212021 */ addu $a0, $s1, $at -/* 000A4 809FC274 0C02604B */ jal Object_GetIndex - ## ObjectIndex -/* 000A8 809FC278 AFA80054 */ sw $t0, 0x0054($sp) -/* 000AC 809FC27C 04400002 */ bltz $v0, .L809FC288 -/* 000B0 809FC280 8FA80054 */ lw $t0, 0x0054($sp) -/* 000B4 809FC284 25080006 */ addiu $t0, $t0, 0x0006 ## $t0 = 00000006 -.L809FC288: -/* 000B8 809FC288 91090002 */ lbu $t1, 0x0002($t0) ## 00000008 -/* 000BC 809FC28C 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 000C0 809FC290 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4 -/* 000C4 809FC294 A2090194 */ sb $t1, 0x0194($s0) ## 00000194 -/* 000C8 809FC298 85050004 */ lh $a1, 0x0004($t0) ## 0000000A -/* 000CC 809FC29C AFA80054 */ sw $t0, 0x0054($sp) -/* 000D0 809FC2A0 0C02604B */ jal Object_GetIndex - ## ObjectIndex -/* 000D4 809FC2A4 02212021 */ addu $a0, $s1, $at -/* 000D8 809FC2A8 04410005 */ bgez $v0, .L809FC2C0 -/* 000DC 809FC2AC 8FA80054 */ lw $t0, 0x0054($sp) -/* 000E0 809FC2B0 0C00B55C */ jal Actor_Kill - -/* 000E4 809FC2B4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 000E8 809FC2B8 10000047 */ beq $zero, $zero, .L809FC3D8 -/* 000EC 809FC2BC 8FBF003C */ lw $ra, 0x003C($sp) -.L809FC2C0: -/* 000F0 809FC2C0 A2020193 */ sb $v0, 0x0193($s0) ## 00000193 -/* 000F4 809FC2C4 820B0193 */ lb $t3, 0x0193($s0) ## 00000193 -/* 000F8 809FC2C8 820C001E */ lb $t4, 0x001E($s0) ## 0000001E -/* 000FC 809FC2CC 910A0002 */ lbu $t2, 0x0002($t0) ## 00000002 -/* 00100 809FC2D0 3C0D80A0 */ lui $t5, %hi(func_809FC41C) ## $t5 = 80A00000 -/* 00104 809FC2D4 156C0006 */ bne $t3, $t4, .L809FC2F0 -/* 00108 809FC2D8 A20A0194 */ sb $t2, 0x0194($s0) ## 00000194 -/* 0010C 809FC2DC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00110 809FC2E0 0C27F107 */ jal func_809FC41C -/* 00114 809FC2E4 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000 -/* 00118 809FC2E8 10000004 */ beq $zero, $zero, .L809FC2FC -/* 0011C 809FC2EC 860E001C */ lh $t6, 0x001C($s0) ## 0000001C -.L809FC2F0: -/* 00120 809FC2F0 25ADC41C */ addiu $t5, $t5, %lo(func_809FC41C) ## $t5 = FFFFC41C -/* 00124 809FC2F4 AE0D01D4 */ sw $t5, 0x01D4($s0) ## 000001D4 -/* 00128 809FC2F8 860E001C */ lh $t6, 0x001C($s0) ## 0000001C -.L809FC2FC: -/* 0012C 809FC2FC 31CF0040 */ andi $t7, $t6, 0x0040 ## $t7 = 00000000 -/* 00130 809FC300 51E00032 */ beql $t7, $zero, .L809FC3CC -/* 00134 809FC304 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -/* 00138 809FC308 0C01DE0D */ jal Math_Coss - ## coss? -/* 0013C 809FC30C 860400B6 */ lh $a0, 0x00B6($s0) ## 000000B6 -/* 00140 809FC310 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000 -/* 00144 809FC314 44812000 */ mtc1 $at, $f4 ## $f4 = 30.00 -/* 00148 809FC318 00000000 */ nop -/* 0014C 809FC31C 46040182 */ mul.s $f6, $f0, $f4 -/* 00150 809FC320 E7A60048 */ swc1 $f6, 0x0048($sp) -/* 00154 809FC324 0C01DE1C */ jal Math_Sins - ## sins? -/* 00158 809FC328 860400B6 */ lh $a0, 0x00B6($s0) ## 000000B6 -/* 0015C 809FC32C 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000 -/* 00160 809FC330 44814000 */ mtc1 $at, $f8 ## $f8 = 30.00 -/* 00164 809FC334 C7B00048 */ lwc1 $f16, 0x0048($sp) -/* 00168 809FC338 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000 -/* 0016C 809FC33C 46080082 */ mul.s $f2, $f0, $f8 -/* 00170 809FC340 26241C24 */ addiu $a0, $s1, 0x1C24 ## $a0 = 00001C24 -/* 00174 809FC344 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000 -/* 00178 809FC348 02203025 */ or $a2, $s1, $zero ## $a2 = 00000000 -/* 0017C 809FC34C 24070009 */ addiu $a3, $zero, 0x0009 ## $a3 = 00000009 -/* 00180 809FC350 E7A20044 */ swc1 $f2, 0x0044($sp) -/* 00184 809FC354 C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024 -/* 00188 809FC358 46105480 */ add.s $f18, $f10, $f16 -/* 0018C 809FC35C E7B20010 */ swc1 $f18, 0x0010($sp) -/* 00190 809FC360 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028 -/* 00194 809FC364 E7A40014 */ swc1 $f4, 0x0014($sp) -/* 00198 809FC368 C606002C */ lwc1 $f6, 0x002C($s0) ## 0000002C -/* 0019C 809FC36C AFA0001C */ sw $zero, 0x001C($sp) -/* 001A0 809FC370 46023201 */ sub.s $f8, $f6, $f2 -/* 001A4 809FC374 E7A80018 */ swc1 $f8, 0x0018($sp) -/* 001A8 809FC378 861800B6 */ lh $t8, 0x00B6($s0) ## 000000B6 -/* 001AC 809FC37C AFA00024 */ sw $zero, 0x0024($sp) -/* 001B0 809FC380 0301C821 */ addu $t9, $t8, $at -/* 001B4 809FC384 AFB90020 */ sw $t9, 0x0020($sp) -/* 001B8 809FC388 8609001C */ lh $t1, 0x001C($s0) ## 0000001C -/* 001BC 809FC38C 2401FFBF */ addiu $at, $zero, 0xFFBF ## $at = FFFFFFBF -/* 001C0 809FC390 01215024 */ and $t2, $t1, $at -/* 001C4 809FC394 0C00C916 */ jal Actor_SpawnAsChild - -/* 001C8 809FC398 AFAA0028 */ sw $t2, 0x0028($sp) -/* 001CC 809FC39C 10400002 */ beq $v0, $zero, .L809FC3A8 -/* 001D0 809FC3A0 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001 -/* 001D4 809FC3A4 A04B0192 */ sb $t3, 0x0192($v0) ## 00000192 -.L809FC3A8: -/* 001D8 809FC3A8 C60A0024 */ lwc1 $f10, 0x0024($s0) ## 00000024 -/* 001DC 809FC3AC C7B00048 */ lwc1 $f16, 0x0048($sp) -/* 001E0 809FC3B0 C604002C */ lwc1 $f4, 0x002C($s0) ## 0000002C -/* 001E4 809FC3B4 46105481 */ sub.s $f18, $f10, $f16 -/* 001E8 809FC3B8 E6120024 */ swc1 $f18, 0x0024($s0) ## 00000024 -/* 001EC 809FC3BC C7A60044 */ lwc1 $f6, 0x0044($sp) -/* 001F0 809FC3C0 46062200 */ add.s $f8, $f4, $f6 -/* 001F4 809FC3C4 E608002C */ swc1 $f8, 0x002C($s0) ## 0000002C -/* 001F8 809FC3C8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000 -.L809FC3CC: -/* 001FC 809FC3CC 0C00B56E */ jal Actor_SetHeight - -/* 00200 809FC3D0 3C05428C */ lui $a1, 0x428C ## $a1 = 428C0000 -/* 00204 809FC3D4 8FBF003C */ lw $ra, 0x003C($sp) -.L809FC3D8: -/* 00208 809FC3D8 8FB00034 */ lw $s0, 0x0034($sp) -/* 0020C 809FC3DC 8FB10038 */ lw $s1, 0x0038($sp) -/* 00210 809FC3E0 03E00008 */ jr $ra -/* 00214 809FC3E4 27BD0060 */ addiu $sp, $sp, 0x0060 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Update.s b/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Update.s deleted file mode 100644 index 2ba555a01d..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Update.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel EnDoor_Update -/* 00A48 809FCC18 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 00A4C 809FCC1C AFBF0014 */ sw $ra, 0x0014($sp) -/* 00A50 809FCC20 8C9901D4 */ lw $t9, 0x01D4($a0) ## 000001D4 -/* 00A54 809FCC24 0320F809 */ jalr $ra, $t9 -/* 00A58 809FCC28 00000000 */ nop -/* 00A5C 809FCC2C 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00A60 809FCC30 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00A64 809FCC34 03E00008 */ jr $ra -/* 00A68 809FCC38 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC41C.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC41C.s deleted file mode 100644 index ce6db0e16b..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC41C.s +++ /dev/null @@ -1,120 +0,0 @@ -glabel func_809FC41C -/* 0024C 809FC41C 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 00250 809FC420 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0 -/* 00254 809FC424 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000 -/* 00258 809FC428 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4 -/* 0025C 809FC42C AFBF0014 */ sw $ra, 0x0014($sp) -/* 00260 809FC430 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000 -/* 00264 809FC434 00A12021 */ addu $a0, $a1, $at -/* 00268 809FC438 80C50193 */ lb $a1, 0x0193($a2) ## 00000193 -/* 0026C 809FC43C AFA70024 */ sw $a3, 0x0024($sp) -/* 00270 809FC440 0C026062 */ jal Object_IsLoaded - -/* 00274 809FC444 AFA60020 */ sw $a2, 0x0020($sp) -/* 00278 809FC448 8FA60020 */ lw $a2, 0x0020($sp) -/* 0027C 809FC44C 1040005C */ beq $v0, $zero, .L809FC5C0 -/* 00280 809FC450 8FA70024 */ lw $a3, 0x0024($sp) -/* 00284 809FC454 84C3001C */ lh $v1, 0x001C($a2) ## 0000001C -/* 00288 809FC458 8CCE0004 */ lw $t6, 0x0004($a2) ## 00000004 -/* 0028C 809FC45C 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF -/* 00290 809FC460 80D80193 */ lb $t8, 0x0193($a2) ## 00000193 -/* 00294 809FC464 3C1980A0 */ lui $t9, %hi(func_809FC5D0) ## $t9 = 80A00000 -/* 00298 809FC468 000319C3 */ sra $v1, $v1, 7 -/* 0029C 809FC46C 01C17824 */ and $t7, $t6, $at -/* 002A0 809FC470 30630007 */ andi $v1, $v1, 0x0007 ## $v1 = 00000000 -/* 002A4 809FC474 2739C5D0 */ addiu $t9, $t9, %lo(func_809FC5D0) ## $t9 = 809FC5D0 -/* 002A8 809FC478 24010006 */ addiu $at, $zero, 0x0006 ## $at = 00000006 -/* 002AC 809FC47C ACCF0004 */ sw $t7, 0x0004($a2) ## 00000004 -/* 002B0 809FC480 ACD901D4 */ sw $t9, 0x01D4($a2) ## 000001D4 -/* 002B4 809FC484 1461000D */ bne $v1, $at, .L809FC4BC -/* 002B8 809FC488 A0D8001E */ sb $t8, 0x001E($a2) ## 0000001E -/* 002BC 809FC48C 3C028016 */ lui $v0, %hi(gSaveContext+0xc) -/* 002C0 809FC490 9442E66C */ lhu $v0, %lo(gSaveContext+0xc)($v0) -/* 002C4 809FC494 3401C001 */ ori $at, $zero, 0xC001 ## $at = 0000C001 -/* 002C8 809FC498 24030005 */ addiu $v1, $zero, 0x0005 ## $v1 = 00000005 -/* 002CC 809FC49C 0041082A */ slt $at, $v0, $at -/* 002D0 809FC4A0 14200006 */ bne $at, $zero, .L809FC4BC -/* 002D4 809FC4A4 3401E000 */ ori $at, $zero, 0xE000 ## $at = 0000E000 -/* 002D8 809FC4A8 0041082A */ slt $at, $v0, $at -/* 002DC 809FC4AC 10200003 */ beq $at, $zero, .L809FC4BC -/* 002E0 809FC4B0 00000000 */ nop -/* 002E4 809FC4B4 10000001 */ beq $zero, $zero, .L809FC4BC -/* 002E8 809FC4B8 24030003 */ addiu $v1, $zero, 0x0003 ## $v1 = 00000003 -.L809FC4BC: -/* 002EC 809FC4BC 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001 -/* 002F0 809FC4C0 1461000D */ bne $v1, $at, .L809FC4F8 -/* 002F4 809FC4C4 A4C00032 */ sh $zero, 0x0032($a2) ## 00000032 -/* 002F8 809FC4C8 84C5001C */ lh $a1, 0x001C($a2) ## 0000001C -/* 002FC 809FC4CC AFA60020 */ sw $a2, 0x0020($sp) -/* 00300 809FC4D0 AFA3001C */ sw $v1, 0x001C($sp) -/* 00304 809FC4D4 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000 -/* 00308 809FC4D8 0C00B2D0 */ jal Flags_GetSwitch - -/* 0030C 809FC4DC 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000 -/* 00310 809FC4E0 8FA3001C */ lw $v1, 0x001C($sp) -/* 00314 809FC4E4 14400031 */ bne $v0, $zero, .L809FC5AC -/* 00318 809FC4E8 8FA60020 */ lw $a2, 0x0020($sp) -/* 0031C 809FC4EC 2408000A */ addiu $t0, $zero, 0x000A ## $t0 = 0000000A -/* 00320 809FC4F0 1000002E */ beq $zero, $zero, .L809FC5AC -/* 00324 809FC4F4 A4C80196 */ sh $t0, 0x0196($a2) ## 00000196 -.L809FC4F8: -/* 00328 809FC4F8 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004 -/* 0032C 809FC4FC 14610012 */ bne $v1, $at, .L809FC548 -/* 00330 809FC500 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000 -/* 00334 809FC504 8CE51C44 */ lw $a1, 0x1C44($a3) ## 00001C44 -/* 00338 809FC508 AFA60020 */ sw $a2, 0x0020($sp) -/* 0033C 809FC50C 0C00B6E3 */ jal func_8002DB8C -/* 00340 809FC510 AFA3001C */ sw $v1, 0x001C($sp) -/* 00344 809FC514 3C0142F0 */ lui $at, 0x42F0 ## $at = 42F00000 -/* 00348 809FC518 44812000 */ mtc1 $at, $f4 ## $f4 = 120.00 -/* 0034C 809FC51C 3C0980A0 */ lui $t1, %hi(func_809FC8F4) ## $t1 = 80A00000 -/* 00350 809FC520 8FA3001C */ lw $v1, 0x001C($sp) -/* 00354 809FC524 4600203C */ c.lt.s $f4, $f0 -/* 00358 809FC528 8FA60020 */ lw $a2, 0x0020($sp) -/* 0035C 809FC52C 2529C8F4 */ addiu $t1, $t1, %lo(func_809FC8F4) ## $t1 = 809FC8F4 -/* 00360 809FC530 240AE800 */ addiu $t2, $zero, 0xE800 ## $t2 = FFFFE800 -/* 00364 809FC534 4502001E */ bc1fl .L809FC5B0 -/* 00368 809FC538 84CA001C */ lh $t2, 0x001C($a2) ## 0000001C -/* 0036C 809FC53C ACC901D4 */ sw $t1, 0x01D4($a2) ## 000001D4 -/* 00370 809FC540 1000001A */ beq $zero, $zero, .L809FC5AC -/* 00374 809FC544 A4CA0032 */ sh $t2, 0x0032($a2) ## 00000032 -.L809FC548: -/* 00378 809FC548 24010005 */ addiu $at, $zero, 0x0005 ## $at = 00000005 -/* 0037C 809FC54C 54610018 */ bnel $v1, $at, .L809FC5B0 -/* 00380 809FC550 84CA001C */ lh $t2, 0x001C($a2) ## 0000001C -/* 00384 809FC554 84CB001C */ lh $t3, 0x001C($a2) ## 0000001C -/* 00388 809FC558 24010229 */ addiu $at, $zero, 0x0229 ## $at = 00000229 -/* 0038C 809FC55C 3C0F8016 */ lui $t7, %hi(gSaveContext+0xed6) -/* 00390 809FC560 316C003F */ andi $t4, $t3, 0x003F ## $t4 = 00000000 -/* 00394 809FC564 258D0200 */ addiu $t5, $t4, 0x0200 ## $t5 = 00000200 -/* 00398 809FC568 31AEFFFF */ andi $t6, $t5, 0xFFFF ## $t6 = 00000200 -/* 0039C 809FC56C 15C10007 */ bne $t6, $at, .L809FC58C -/* 003A0 809FC570 A4CD010E */ sh $t5, 0x010E($a2) ## 0000010E -/* 003A4 809FC574 95EFF536 */ lhu $t7, %lo(gSaveContext+0xed6)($t7) -/* 003A8 809FC578 31F80010 */ andi $t8, $t7, 0x0010 ## $t8 = 00000000 -/* 003AC 809FC57C 57000004 */ bnel $t8, $zero, .L809FC590 -/* 003B0 809FC580 8CC80004 */ lw $t0, 0x0004($a2) ## 00000004 -/* 003B4 809FC584 10000009 */ beq $zero, $zero, .L809FC5AC -/* 003B8 809FC588 24030003 */ addiu $v1, $zero, 0x0003 ## $v1 = 00000003 -.L809FC58C: -/* 003BC 809FC58C 8CC80004 */ lw $t0, 0x0004($a2) ## 00000004 -.L809FC590: -/* 003C0 809FC590 3C010800 */ lui $at, 0x0800 ## $at = 08000000 -/* 003C4 809FC594 3C1980A0 */ lui $t9, %hi(func_809FC878) ## $t9 = 80A00000 -/* 003C8 809FC598 34210009 */ ori $at, $at, 0x0009 ## $at = 08000009 -/* 003CC 809FC59C 2739C878 */ addiu $t9, $t9, %lo(func_809FC878) ## $t9 = 809FC878 -/* 003D0 809FC5A0 01014825 */ or $t1, $t0, $at ## $t1 = 08000009 -/* 003D4 809FC5A4 ACD901D4 */ sw $t9, 0x01D4($a2) ## 000001D4 -/* 003D8 809FC5A8 ACC90004 */ sw $t1, 0x0004($a2) ## 00000004 -.L809FC5AC: -/* 003DC 809FC5AC 84CA001C */ lh $t2, 0x001C($a2) ## 0000001C -.L809FC5B0: -/* 003E0 809FC5B0 000361C0 */ sll $t4, $v1, 7 -/* 003E4 809FC5B4 314BFC7F */ andi $t3, $t2, 0xFC7F ## $t3 = 0000E800 -/* 003E8 809FC5B8 016C6825 */ or $t5, $t3, $t4 ## $t5 = 0000E800 -/* 003EC 809FC5BC A4CD001C */ sh $t5, 0x001C($a2) ## 0000001C -.L809FC5C0: -/* 003F0 809FC5C0 8FBF0014 */ lw $ra, 0x0014($sp) -/* 003F4 809FC5C4 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000 -/* 003F8 809FC5C8 03E00008 */ jr $ra -/* 003FC 809FC5CC 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC878.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC878.s deleted file mode 100644 index 33d48e5fae..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC878.s +++ /dev/null @@ -1,21 +0,0 @@ -glabel func_809FC878 -/* 006A8 809FC878 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 006AC 809FC87C AFBF0014 */ sw $ra, 0x0014($sp) -/* 006B0 809FC880 AFA5001C */ sw $a1, 0x001C($sp) -/* 006B4 809FC884 0C00BC65 */ jal func_8002F194 -/* 006B8 809FC888 AFA40018 */ sw $a0, 0x0018($sp) -/* 006BC 809FC88C 10400005 */ beq $v0, $zero, .L809FC8A4 -/* 006C0 809FC890 8FA40018 */ lw $a0, 0x0018($sp) -/* 006C4 809FC894 3C0E80A0 */ lui $t6, %hi(func_809FC8C0) ## $t6 = 80A00000 -/* 006C8 809FC898 25CEC8C0 */ addiu $t6, $t6, %lo(func_809FC8C0) ## $t6 = 809FC8C0 -/* 006CC 809FC89C 10000004 */ beq $zero, $zero, .L809FC8B0 -/* 006D0 809FC8A0 AC8E01D4 */ sw $t6, 0x01D4($a0) ## 000001D4 -.L809FC8A4: -/* 006D4 809FC8A4 8FA5001C */ lw $a1, 0x001C($sp) -/* 006D8 809FC8A8 0C00BCB3 */ jal func_8002F2CC -/* 006DC 809FC8AC 3C064220 */ lui $a2, 0x4220 ## $a2 = 42200000 -.L809FC8B0: -/* 006E0 809FC8B0 8FBF0014 */ lw $ra, 0x0014($sp) -/* 006E4 809FC8B4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 006E8 809FC8B8 03E00008 */ jr $ra -/* 006EC 809FC8BC 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8C0.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8C0.s deleted file mode 100644 index b70efb9417..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8C0.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_809FC8C0 -/* 006F0 809FC8C0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 006F4 809FC8C4 AFBF0014 */ sw $ra, 0x0014($sp) -/* 006F8 809FC8C8 0C00BCCD */ jal func_8002F334 -/* 006FC 809FC8CC AFA40018 */ sw $a0, 0x0018($sp) -/* 00700 809FC8D0 10400004 */ beq $v0, $zero, .L809FC8E4 -/* 00704 809FC8D4 8FAF0018 */ lw $t7, 0x0018($sp) -/* 00708 809FC8D8 3C0E80A0 */ lui $t6, %hi(func_809FC878) ## $t6 = 80A00000 -/* 0070C 809FC8DC 25CEC878 */ addiu $t6, $t6, %lo(func_809FC878) ## $t6 = 809FC878 -/* 00710 809FC8E0 ADEE01D4 */ sw $t6, 0x01D4($t7) ## 000001D4 -.L809FC8E4: -/* 00714 809FC8E4 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00718 809FC8E8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 0071C 809FC8EC 03E00008 */ jr $ra -/* 00720 809FC8F0 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8F4.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8F4.s deleted file mode 100644 index caa806b534..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8F4.s +++ /dev/null @@ -1,15 +0,0 @@ -glabel func_809FC8F4 -/* 00724 809FC8F4 AFA50004 */ sw $a1, 0x0004($sp) -/* 00728 809FC8F8 3C0142F0 */ lui $at, 0x42F0 ## $at = 42F00000 -/* 0072C 809FC8FC 44813000 */ mtc1 $at, $f6 ## $f6 = 120.00 -/* 00730 809FC900 C4840090 */ lwc1 $f4, 0x0090($a0) ## 00000090 -/* 00734 809FC904 3C0E80A0 */ lui $t6, %hi(func_809FC998) ## $t6 = 80A00000 -/* 00738 809FC908 25CEC998 */ addiu $t6, $t6, %lo(func_809FC998) ## $t6 = 809FC998 -/* 0073C 809FC90C 4606203C */ c.lt.s $f4, $f6 -/* 00740 809FC910 00000000 */ nop -/* 00744 809FC914 45000002 */ bc1f .L809FC920 -/* 00748 809FC918 00000000 */ nop -/* 0074C 809FC91C AC8E01D4 */ sw $t6, 0x01D4($a0) ## 000001D4 -.L809FC920: -/* 00750 809FC920 03E00008 */ jr $ra -/* 00754 809FC924 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC928.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC928.s deleted file mode 100644 index a26e10257f..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC928.s +++ /dev/null @@ -1,32 +0,0 @@ -glabel func_809FC928 -/* 00758 809FC928 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 0075C 809FC92C AFBF0014 */ sw $ra, 0x0014($sp) -/* 00760 809FC930 AFA5001C */ sw $a1, 0x001C($sp) -/* 00764 809FC934 3C0142F0 */ lui $at, 0x42F0 ## $at = 42F00000 -/* 00768 809FC938 44813000 */ mtc1 $at, $f6 ## $f6 = 120.00 -/* 0076C 809FC93C C4840090 */ lwc1 $f4, 0x0090($a0) ## 00000090 -/* 00770 809FC940 3C0E80A0 */ lui $t6, %hi(func_809FC998) ## $t6 = 80A00000 -/* 00774 809FC944 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000 -/* 00778 809FC948 4606203C */ c.lt.s $f4, $f6 -/* 0077C 809FC94C 25CEC998 */ addiu $t6, $t6, %lo(func_809FC998) ## $t6 = 809FC998 -/* 00780 809FC950 2405E800 */ addiu $a1, $zero, 0xE800 ## $a1 = FFFFE800 -/* 00784 809FC954 24060100 */ addiu $a2, $zero, 0x0100 ## $a2 = 00000100 -/* 00788 809FC958 45020004 */ bc1fl .L809FC96C -/* 0078C 809FC95C 24E40032 */ addiu $a0, $a3, 0x0032 ## $a0 = 00000032 -/* 00790 809FC960 10000009 */ beq $zero, $zero, .L809FC988 -/* 00794 809FC964 AC8E01D4 */ sw $t6, 0x01D4($a0) ## 00000206 -/* 00798 809FC968 24E40032 */ addiu $a0, $a3, 0x0032 ## $a0 = 00000032 -.L809FC96C: -/* 0079C 809FC96C 0C01DE2B */ jal Math_ApproxUpdateScaledS - -/* 007A0 809FC970 AFA70018 */ sw $a3, 0x0018($sp) -/* 007A4 809FC974 10400004 */ beq $v0, $zero, .L809FC988 -/* 007A8 809FC978 8FA70018 */ lw $a3, 0x0018($sp) -/* 007AC 809FC97C 3C0F80A0 */ lui $t7, %hi(func_809FC8F4) ## $t7 = 80A00000 -/* 007B0 809FC980 25EFC8F4 */ addiu $t7, $t7, %lo(func_809FC8F4) ## $t7 = 809FC8F4 -/* 007B4 809FC984 ACEF01D4 */ sw $t7, 0x01D4($a3) ## 000001D4 -.L809FC988: -/* 007B8 809FC988 8FBF0014 */ lw $ra, 0x0014($sp) -/* 007BC 809FC98C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 007C0 809FC990 03E00008 */ jr $ra -/* 007C4 809FC994 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC998.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC998.s deleted file mode 100644 index 94b4ef6b02..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC998.s +++ /dev/null @@ -1,20 +0,0 @@ -glabel func_809FC998 -/* 007C8 809FC998 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8 -/* 007CC 809FC99C AFBF0014 */ sw $ra, 0x0014($sp) -/* 007D0 809FC9A0 AFA40018 */ sw $a0, 0x0018($sp) -/* 007D4 809FC9A4 AFA5001C */ sw $a1, 0x001C($sp) -/* 007D8 809FC9A8 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000 -/* 007DC 809FC9AC 24840032 */ addiu $a0, $a0, 0x0032 ## $a0 = 00000032 -/* 007E0 809FC9B0 0C01DE2B */ jal Math_ApproxUpdateScaledS - -/* 007E4 809FC9B4 24060700 */ addiu $a2, $zero, 0x0700 ## $a2 = 00000700 -/* 007E8 809FC9B8 10400004 */ beq $v0, $zero, .L809FC9CC -/* 007EC 809FC9BC 8FAF0018 */ lw $t7, 0x0018($sp) -/* 007F0 809FC9C0 3C0E80A0 */ lui $t6, %hi(func_809FC5D0) ## $t6 = 80A00000 -/* 007F4 809FC9C4 25CEC5D0 */ addiu $t6, $t6, %lo(func_809FC5D0) ## $t6 = 809FC5D0 -/* 007F8 809FC9C8 ADEE01D4 */ sw $t6, 0x01D4($t7) ## 000001D4 -.L809FC9CC: -/* 007FC 809FC9CC 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00800 809FC9D0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000 -/* 00804 809FC9D4 03E00008 */ jr $ra -/* 00808 809FC9D8 00000000 */ nop diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC9DC.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC9DC.s deleted file mode 100644 index a8103f0b61..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC9DC.s +++ /dev/null @@ -1,166 +0,0 @@ -.late_rodata -glabel D_809FCF30 - .float 0.15 - -.text -glabel func_809FC9DC -/* 0080C 809FC9DC 27BDFFA8 */ addiu $sp, $sp, 0xFFA8 ## $sp = FFFFFFA8 -/* 00810 809FC9E0 AFBF0054 */ sw $ra, 0x0054($sp) -/* 00814 809FC9E4 AFB40050 */ sw $s4, 0x0050($sp) -/* 00818 809FC9E8 AFB3004C */ sw $s3, 0x004C($sp) -/* 0081C 809FC9EC AFB20048 */ sw $s2, 0x0048($sp) -/* 00820 809FC9F0 AFB10044 */ sw $s1, 0x0044($sp) -/* 00824 809FC9F4 AFB00040 */ sw $s0, 0x0040($sp) -/* 00828 809FC9F8 F7BA0038 */ sdc1 $f26, 0x0038($sp) -/* 0082C 809FC9FC F7B80030 */ sdc1 $f24, 0x0030($sp) -/* 00830 809FCA00 F7B60028 */ sdc1 $f22, 0x0028($sp) -/* 00834 809FCA04 F7B40020 */ sdc1 $f20, 0x0020($sp) -/* 00838 809FCA08 84830196 */ lh $v1, 0x0196($a0) ## 00000196 -/* 0083C 809FCA0C 00A09825 */ or $s3, $a1, $zero ## $s3 = 00000000 -/* 00840 809FCA10 0080A025 */ or $s4, $a0, $zero ## $s4 = 00000000 -/* 00844 809FCA14 14600003 */ bne $v1, $zero, .L809FCA24 -/* 00848 809FCA18 246EFFFF */ addiu $t6, $v1, 0xFFFF ## $t6 = FFFFFFFF -/* 0084C 809FCA1C 10000003 */ beq $zero, $zero, .L809FCA2C -/* 00850 809FCA20 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 -.L809FCA24: -/* 00854 809FCA24 A68E0196 */ sh $t6, 0x0196($s4) ## 00000196 -/* 00858 809FCA28 86820196 */ lh $v0, 0x0196($s4) ## 00000196 -.L809FCA2C: -/* 0085C 809FCA2C 1440006E */ bne $v0, $zero, .L809FCBE8 -/* 00860 809FCA30 2690014C */ addiu $s0, $s4, 0x014C ## $s0 = 0000014C -/* 00864 809FCA34 0C02927F */ jal SkelAnime_FrameUpdateMatrix - -/* 00868 809FCA38 02002025 */ or $a0, $s0, $zero ## $a0 = 0000014C -/* 0086C 809FCA3C 10400005 */ beq $v0, $zero, .L809FCA54 -/* 00870 809FCA40 3C0F80A0 */ lui $t7, %hi(func_809FC5D0) ## $t7 = 80A00000 -/* 00874 809FCA44 25EFC5D0 */ addiu $t7, $t7, %lo(func_809FC5D0) ## $t7 = 809FC5D0 -/* 00878 809FCA48 AE8F01D4 */ sw $t7, 0x01D4($s4) ## 000001D4 -/* 0087C 809FCA4C 10000066 */ beq $zero, $zero, .L809FCBE8 -/* 00880 809FCA50 A2800191 */ sb $zero, 0x0191($s4) ## 00000191 -.L809FCA54: -/* 00884 809FCA54 92980190 */ lbu $t8, 0x0190($s4) ## 00000190 -/* 00888 809FCA58 3C1980A0 */ lui $t9, %hi(D_809FCEDC) ## $t9 = 80A00000 -/* 0088C 809FCA5C 02002025 */ or $a0, $s0, $zero ## $a0 = 0000014C -/* 00890 809FCA60 0338C821 */ addu $t9, $t9, $t8 -/* 00894 809FCA64 9339CEDC */ lbu $t9, %lo(D_809FCEDC)($t9) -/* 00898 809FCA68 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000 -/* 0089C 809FCA6C 44992000 */ mtc1 $t9, $f4 ## $f4 = -0.00 -/* 008A0 809FCA70 07210004 */ bgez $t9, .L809FCA84 -/* 008A4 809FCA74 46802120 */ cvt.s.w $f4, $f4 -/* 008A8 809FCA78 44813000 */ mtc1 $at, $f6 ## $f6 = 4294967296.00 -/* 008AC 809FCA7C 00000000 */ nop -/* 008B0 809FCA80 46062100 */ add.s $f4, $f4, $f6 -.L809FCA84: -/* 008B4 809FCA84 44052000 */ mfc1 $a1, $f4 -/* 008B8 809FCA88 0C0295B2 */ jal func_800A56C8 -/* 008BC 809FCA8C 00000000 */ nop -/* 008C0 809FCA90 10400037 */ beq $v0, $zero, .L809FCB70 -/* 008C4 809FCA94 02802025 */ or $a0, $s4, $zero ## $a0 = 00000000 -/* 008C8 809FCA98 866200A4 */ lh $v0, 0x00A4($s3) ## 000000A4 -/* 008CC 809FCA9C 24010007 */ addiu $at, $zero, 0x0007 ## $at = 00000007 -/* 008D0 809FCAA0 10410005 */ beq $v0, $at, .L809FCAB8 -/* 008D4 809FCAA4 24010008 */ addiu $at, $zero, 0x0008 ## $at = 00000008 -/* 008D8 809FCAA8 10410003 */ beq $v0, $at, .L809FCAB8 -/* 008DC 809FCAAC 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004 -/* 008E0 809FCAB0 54410004 */ bnel $v0, $at, .L809FCAC4 -/* 008E4 809FCAB4 24025802 */ addiu $v0, $zero, 0x5802 ## $v0 = 00005802 -.L809FCAB8: -/* 008E8 809FCAB8 10000002 */ beq $zero, $zero, .L809FCAC4 -/* 008EC 809FCABC 240228DB */ addiu $v0, $zero, 0x28DB ## $v0 = 000028DB -/* 008F0 809FCAC0 24025802 */ addiu $v0, $zero, 0x5802 ## $v0 = 00005802 -.L809FCAC4: -/* 008F4 809FCAC4 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 008F8 809FCAC8 3045FFFF */ andi $a1, $v0, 0xFFFF ## $a1 = 00005802 -/* 008FC 809FCACC 3C013FC0 */ lui $at, 0x3FC0 ## $at = 3FC00000 -/* 00900 809FCAD0 44815000 */ mtc1 $at, $f10 ## $f10 = 1.50 -/* 00904 809FCAD4 C6880168 */ lwc1 $f8, 0x0168($s4) ## 00000168 -/* 00908 809FCAD8 460A403C */ c.lt.s $f8, $f10 -/* 0090C 809FCADC 00000000 */ nop -/* 00910 809FCAE0 45020042 */ bc1fl .L809FCBEC -/* 00914 809FCAE4 8FBF0054 */ lw $ra, 0x0054($sp) -/* 00918 809FCAE8 0C03F66B */ jal Math_Rand_ZeroOne - ## Rand.Next() float -/* 0091C 809FCAEC 00000000 */ nop -/* 00920 809FCAF0 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000 -/* 00924 809FCAF4 44818000 */ mtc1 $at, $f16 ## $f16 = 30.00 -/* 00928 809FCAF8 3C0180A0 */ lui $at, %hi(D_809FCF30) ## $at = 80A00000 -/* 0092C 809FCAFC 00008025 */ or $s0, $zero, $zero ## $s0 = 00000000 -/* 00930 809FCB00 46100482 */ mul.s $f18, $f0, $f16 -/* 00934 809FCB04 4600910D */ trunc.w.s $f4, $f18 -/* 00938 809FCB08 44022000 */ mfc1 $v0, $f4 -/* 0093C 809FCB0C 00000000 */ nop -/* 00940 809FCB10 24510032 */ addiu $s1, $v0, 0x0032 ## $s1 = 00000032 -/* 00944 809FCB14 5A200035 */ blezl $s1, .L809FCBEC -/* 00948 809FCB18 8FBF0054 */ lw $ra, 0x0054($sp) -/* 0094C 809FCB1C C43ACF30 */ lwc1 $f26, %lo(D_809FCF30)($at) -/* 00950 809FCB20 3C014248 */ lui $at, 0x4248 ## $at = 42480000 -/* 00954 809FCB24 4481C000 */ mtc1 $at, $f24 ## $f24 = 50.00 -/* 00958 809FCB28 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000 -/* 0095C 809FCB2C 4481B000 */ mtc1 $at, $f22 ## $f22 = 100.00 -/* 00960 809FCB30 3C014270 */ lui $at, 0x4270 ## $at = 42700000 -/* 00964 809FCB34 4481A000 */ mtc1 $at, $f20 ## $f20 = 60.00 -/* 00968 809FCB38 26920024 */ addiu $s2, $s4, 0x0024 ## $s2 = 00000024 -/* 0096C 809FCB3C 4406A000 */ mfc1 $a2, $f20 -.L809FCB40: -/* 00970 809FCB40 4407B000 */ mfc1 $a3, $f22 -/* 00974 809FCB44 02602025 */ or $a0, $s3, $zero ## $a0 = 00000000 -/* 00978 809FCB48 02402825 */ or $a1, $s2, $zero ## $a1 = 00000024 -/* 0097C 809FCB4C E7B80010 */ swc1 $f24, 0x0010($sp) -/* 00980 809FCB50 0C00A4F9 */ jal EffectSsBubble_Spawn -/* 00984 809FCB54 E7BA0014 */ swc1 $f26, 0x0014($sp) -/* 00988 809FCB58 26100001 */ addiu $s0, $s0, 0x0001 ## $s0 = 00000001 -/* 0098C 809FCB5C 0211082A */ slt $at, $s0, $s1 -/* 00990 809FCB60 5420FFF7 */ bnel $at, $zero, .L809FCB40 -/* 00994 809FCB64 4406A000 */ mfc1 $a2, $f20 -/* 00998 809FCB68 10000020 */ beq $zero, $zero, .L809FCBEC -/* 0099C 809FCB6C 8FBF0054 */ lw $ra, 0x0054($sp) -.L809FCB70: -/* 009A0 809FCB70 92890190 */ lbu $t1, 0x0190($s4) ## 00000190 -/* 009A4 809FCB74 3C0A80A0 */ lui $t2, %hi(D_809FCEE0) ## $t2 = 80A00000 -/* 009A8 809FCB78 02002025 */ or $a0, $s0, $zero ## $a0 = 00000001 -/* 009AC 809FCB7C 01495021 */ addu $t2, $t2, $t1 -/* 009B0 809FCB80 914ACEE0 */ lbu $t2, %lo(D_809FCEE0)($t2) -/* 009B4 809FCB84 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000 -/* 009B8 809FCB88 448A3000 */ mtc1 $t2, $f6 ## $f6 = -0.00 -/* 009BC 809FCB8C 05410004 */ bgez $t2, .L809FCBA0 -/* 009C0 809FCB90 468031A0 */ cvt.s.w $f6, $f6 -/* 009C4 809FCB94 44814000 */ mtc1 $at, $f8 ## $f8 = 4294967296.00 -/* 009C8 809FCB98 00000000 */ nop -/* 009CC 809FCB9C 46083180 */ add.s $f6, $f6, $f8 -.L809FCBA0: -/* 009D0 809FCBA0 44053000 */ mfc1 $a1, $f6 -/* 009D4 809FCBA4 0C0295B2 */ jal func_800A56C8 -/* 009D8 809FCBA8 00000000 */ nop -/* 009DC 809FCBAC 1040000E */ beq $v0, $zero, .L809FCBE8 -/* 009E0 809FCBB0 02802025 */ or $a0, $s4, $zero ## $a0 = 00000000 -/* 009E4 809FCBB4 866200A4 */ lh $v0, 0x00A4($s3) ## 000000A4 -/* 009E8 809FCBB8 24010007 */ addiu $at, $zero, 0x0007 ## $at = 00000007 -/* 009EC 809FCBBC 10410005 */ beq $v0, $at, .L809FCBD4 -/* 009F0 809FCBC0 24010008 */ addiu $at, $zero, 0x0008 ## $at = 00000008 -/* 009F4 809FCBC4 10410003 */ beq $v0, $at, .L809FCBD4 -/* 009F8 809FCBC8 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004 -/* 009FC 809FCBCC 54410004 */ bnel $v0, $at, .L809FCBE0 -/* 00A00 809FCBD0 24022801 */ addiu $v0, $zero, 0x2801 ## $v0 = 00002801 -.L809FCBD4: -/* 00A04 809FCBD4 10000002 */ beq $zero, $zero, .L809FCBE0 -/* 00A08 809FCBD8 240228DC */ addiu $v0, $zero, 0x28DC ## $v0 = 000028DC -/* 00A0C 809FCBDC 24022801 */ addiu $v0, $zero, 0x2801 ## $v0 = 00002801 -.L809FCBE0: -/* 00A10 809FCBE0 0C00BE0A */ jal Audio_PlayActorSound2 - -/* 00A14 809FCBE4 3045FFFF */ andi $a1, $v0, 0xFFFF ## $a1 = 00002801 -.L809FCBE8: -/* 00A18 809FCBE8 8FBF0054 */ lw $ra, 0x0054($sp) -.L809FCBEC: -/* 00A1C 809FCBEC D7B40020 */ ldc1 $f20, 0x0020($sp) -/* 00A20 809FCBF0 D7B60028 */ ldc1 $f22, 0x0028($sp) -/* 00A24 809FCBF4 D7B80030 */ ldc1 $f24, 0x0030($sp) -/* 00A28 809FCBF8 D7BA0038 */ ldc1 $f26, 0x0038($sp) -/* 00A2C 809FCBFC 8FB00040 */ lw $s0, 0x0040($sp) -/* 00A30 809FCC00 8FB10044 */ lw $s1, 0x0044($sp) -/* 00A34 809FCC04 8FB20048 */ lw $s2, 0x0048($sp) -/* 00A38 809FCC08 8FB3004C */ lw $s3, 0x004C($sp) -/* 00A3C 809FCC0C 8FB40050 */ lw $s4, 0x0050($sp) -/* 00A40 809FCC10 03E00008 */ jr $ra -/* 00A44 809FCC14 27BD0058 */ addiu $sp, $sp, 0x0058 ## $sp = 00000000 diff --git a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FCC3C.s b/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FCC3C.s deleted file mode 100644 index fab3774ab9..0000000000 --- a/asm/non_matchings/overlays/actors/ovl_En_Door/func_809FCC3C.s +++ /dev/null @@ -1,84 +0,0 @@ -glabel func_809FCC3C -/* 00A6C 809FCC3C 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8 -/* 00A70 809FCC40 AFA70034 */ sw $a3, 0x0034($sp) -/* 00A74 809FCC44 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004 -/* 00A78 809FCC48 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000 -/* 00A7C 809FCC4C AFBF0014 */ sw $ra, 0x0014($sp) -/* 00A80 809FCC50 AFA40028 */ sw $a0, 0x0028($sp) -/* 00A84 809FCC54 14A10040 */ bne $a1, $at, .L809FCD58 -/* 00A88 809FCC58 AFA60030 */ sw $a2, 0x0030($sp) -/* 00A8C 809FCC5C 8FA3003C */ lw $v1, 0x003C($sp) -/* 00A90 809FCC60 8FA80038 */ lw $t0, 0x0038($sp) -/* 00A94 809FCC64 3C010001 */ lui $at, 0x0001 ## $at = 00010000 -/* 00A98 809FCC68 806E0194 */ lb $t6, 0x0194($v1) ## 00000194 -/* 00A9C 809FCC6C 846D0032 */ lh $t5, 0x0032($v1) ## 00000032 -/* 00AA0 809FCC70 850C0004 */ lh $t4, 0x0004($t0) ## 00000004 -/* 00AA4 809FCC74 9469001C */ lhu $t1, 0x001C($v1) ## 0000001C -/* 00AA8 809FCC78 3C1880A0 */ lui $t8, %hi(D_809FCEE4) ## $t8 = 80A00000 -/* 00AAC 809FCC7C 00811021 */ addu $v0, $a0, $at -/* 00AB0 809FCC80 000E78C0 */ sll $t7, $t6, 3 -/* 00AB4 809FCC84 8C591D38 */ lw $t9, 0x1D38($v0) ## 00001D38 -/* 00AB8 809FCC88 2718CEE4 */ addiu $t8, $t8, %lo(D_809FCEE4) ## $t8 = 809FCEE4 -/* 00ABC 809FCC8C 018D7021 */ addu $t6, $t4, $t5 -/* 00AC0 809FCC90 01F83021 */ addu $a2, $t7, $t8 -/* 00AC4 809FCC94 A50E0004 */ sh $t6, 0x0004($t0) ## 00000004 -/* 00AC8 809FCC98 804F1CD0 */ lb $t7, 0x1CD0($v0) ## 00001CD0 -/* 00ACC 809FCC9C 00095283 */ sra $t2, $t1, 10 -/* 00AD0 809FCCA0 000A5900 */ sll $t3, $t2, 4 -/* 00AD4 809FCCA4 05E10005 */ bgez $t7, .L809FCCBC -/* 00AD8 809FCCA8 032B2021 */ addu $a0, $t9, $t3 -/* 00ADC 809FCCAC 80850000 */ lb $a1, 0x0000($a0) ## 00000000 -/* 00AE0 809FCCB0 80980002 */ lb $t8, 0x0002($a0) ## 00000002 -/* 00AE4 809FCCB4 8FAB0030 */ lw $t3, 0x0030($sp) -/* 00AE8 809FCCB8 14B8001E */ bne $a1, $t8, .L809FCD34 -.L809FCCBC: -/* 00AEC 809FCCBC 24E400E0 */ addiu $a0, $a3, 0x00E0 ## $a0 = 000000E0 -/* 00AF0 809FCCC0 24650024 */ addiu $a1, $v1, 0x0024 ## $a1 = 00000024 -/* 00AF4 809FCCC4 0C01E01A */ jal Math_Vec3f_Yaw - -/* 00AF8 809FCCC8 AFA6001C */ sw $a2, 0x001C($sp) -/* 00AFC 809FCCCC 8FA3003C */ lw $v1, 0x003C($sp) -/* 00B00 809FCCD0 8FA80038 */ lw $t0, 0x0038($sp) -/* 00B04 809FCCD4 8FA50030 */ lw $a1, 0x0030($sp) -/* 00B08 809FCCD8 8C6A016C */ lw $t2, 0x016C($v1) ## 0000016C -/* 00B0C 809FCCDC 846900B6 */ lh $t1, 0x00B6($v1) ## 000000B6 -/* 00B10 809FCCE0 850C0004 */ lh $t4, 0x0004($t0) ## 00000004 -/* 00B14 809FCCE4 85590016 */ lh $t9, 0x0016($t2) ## 00000016 -/* 00B18 809FCCE8 8FA6001C */ lw $a2, 0x001C($sp) -/* 00B1C 809FCCEC 01395821 */ addu $t3, $t1, $t9 -/* 00B20 809FCCF0 016C6821 */ addu $t5, $t3, $t4 -/* 00B24 809FCCF4 01A22023 */ subu $a0, $t5, $v0 -/* 00B28 809FCCF8 00042400 */ sll $a0, $a0, 16 -/* 00B2C 809FCCFC 00042403 */ sra $a0, $a0, 16 -/* 00B30 809FCD00 04800003 */ bltz $a0, .L809FCD10 -/* 00B34 809FCD04 00041023 */ subu $v0, $zero, $a0 -/* 00B38 809FCD08 10000001 */ beq $zero, $zero, .L809FCD10 -/* 00B3C 809FCD0C 00801025 */ or $v0, $a0, $zero ## $v0 = 00000000 -.L809FCD10: -/* 00B40 809FCD10 28414000 */ slti $at, $v0, 0x4000 -/* 00B44 809FCD14 50200005 */ beql $at, $zero, .L809FCD2C -/* 00B48 809FCD18 8CCF0004 */ lw $t7, 0x0004($a2) ## 00000004 -/* 00B4C 809FCD1C 8CCE0000 */ lw $t6, 0x0000($a2) ## 00000000 -/* 00B50 809FCD20 1000000D */ beq $zero, $zero, .L809FCD58 -/* 00B54 809FCD24 ACAE0000 */ sw $t6, 0x0000($a1) ## 00000000 -/* 00B58 809FCD28 8CCF0004 */ lw $t7, 0x0004($a2) ## 00000004 -.L809FCD2C: -/* 00B5C 809FCD2C 1000000A */ beq $zero, $zero, .L809FCD58 -/* 00B60 809FCD30 ACAF0000 */ sw $t7, 0x0000($a1) ## 00000000 -.L809FCD34: -/* 00B64 809FCD34 80780003 */ lb $t8, 0x0003($v1) ## 00000003 -/* 00B68 809FCD38 90620192 */ lbu $v0, 0x0192($v1) ## 00000192 -/* 00B6C 809FCD3C 53050003 */ beql $t8, $a1, .L809FCD4C -/* 00B70 809FCD40 00025080 */ sll $t2, $v0, 2 -/* 00B74 809FCD44 38420001 */ xori $v0, $v0, 0x0001 ## $v0 = 00000001 -/* 00B78 809FCD48 00025080 */ sll $t2, $v0, 2 -.L809FCD4C: -/* 00B7C 809FCD4C 00CA4821 */ addu $t1, $a2, $t2 -/* 00B80 809FCD50 8D390000 */ lw $t9, 0x0000($t1) ## 00000000 -/* 00B84 809FCD54 AD790000 */ sw $t9, 0x0000($t3) ## 00000000 -.L809FCD58: -/* 00B88 809FCD58 8FBF0014 */ lw $ra, 0x0014($sp) -/* 00B8C 809FCD5C 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000 -/* 00B90 809FCD60 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000 -/* 00B94 809FCD64 03E00008 */ jr $ra -/* 00B98 809FCD68 00000000 */ nop diff --git a/data/overlays/actors/z_en_door.data.s b/data/overlays/actors/z_en_door.data.s deleted file mode 100644 index b0d964b104..0000000000 --- a/data/overlays/actors/z_en_door.data.s +++ /dev/null @@ -1,30 +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 En_Door_InitVars - .word 0x00090A00, 0x00000010, 0x00010000, 0x000001D8 -.word EnDoor_Init -.word EnDoor_Destroy -.word EnDoor_Update -.word EnDoor_Draw -glabel D_809FCEA0 - .word 0x00040100, 0x002C0005, 0x02000059, 0x00070300, 0x01870008, 0x03000187, 0xFFFF0000, 0x0001FFFF, 0x04000002 -glabel D_809FCEC4 - .word 0x801F0000, 0x30F40FA0 -glabel D_809FCECC - .word 0x0400E758, 0x0400E5B4, 0x04010038, 0x0400E6A0 -glabel D_809FCEDC - .word 0x19191919 -glabel D_809FCEE0 - .word 0x3C463C46 -glabel D_809FCEE4 - .word 0x0400ECB8, 0x0400EE00, 0x0600F998, 0x0600F938, 0x06004958, 0x06004A10, 0x060013B8, 0x06001420, 0x050047A0, 0x05004978, 0x00000000 - diff --git a/include/functions.h b/include/functions.h index 731b7a4258..54b72c202c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -491,7 +491,7 @@ void func_80033E1C(GlobalContext* globalCtx, s16 arg1, s16 arg2, s16 arg3); void func_80033E88(Actor* actor, GlobalContext* globalCtx, s16 arg2, s16 arg3); f32 Math_Rand_ZeroFloat(f32 f); f32 Math_Rand_CenteredFloat(f32 f); -void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2); +void Actor_DrawDoorLock(GlobalContext* globalCtx, s32 arg1, s32 arg2); void func_8003424C(GlobalContext* globalCtx, Vec3f* arg1); void func_8003426C(Actor* actor, s16 arg1, s16 arg2, s16 arg3, s16 arg4); Hilite* func_800342EC(Vec3f* object, GlobalContext* globalCtx); @@ -1359,7 +1359,7 @@ void func_800A431C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimation void func_800A43B8(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* segment, f32 transitionFrame, LinkAnimationHeader* linkAnimSeg2, f32 frame, f32 transitionRate, Vec3s* arg7); s32 func_800A4530(SkelAnime* skelAnime, f32 arg1); -void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, +s32 SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount); void SkelAnime_InitFlex(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, AnimationHeader* animationseg, Vec3s* limbDrawTable, Vec3s* arg5, s32 limbCount); diff --git a/spec b/spec index 4b050a74ac..6fcdad76dd 100644 --- a/spec +++ b/spec @@ -2184,8 +2184,11 @@ endseg beginseg name "ovl_En_Door" include "build/src/overlays/actors/ovl_En_Door/z_en_door.o" - include "build/data/overlays/actors/z_en_door.data.o" +#ifdef NON_MATCHING + include "build/src/overlays/actors/ovl_En_Door/ovl_En_Door_reloc.o" +#else include "build/data/overlays/actors/z_en_door.reloc.o" +#endif endseg beginseg diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 17aa8a7149..d170b65c0f 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -3499,7 +3499,7 @@ struct_801160DC D_801160DC[] = { { 0.64000005f, 8500.0f, 8000.0f, 1.75f, 0.1f, 0x050011F0, 0x05001100 }, }; -void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) { +void Actor_DrawDoorLock(GlobalContext* globalCtx, s32 frame, s32 type) { struct_801160DC* entry; s32 i; MtxF spB0; @@ -3508,7 +3508,7 @@ void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) { f32 temp2; f32 temp3; - entry = &D_801160DC[arg2]; + entry = &D_801160DC[type]; var = entry->unk_10; OPEN_DISPS(globalCtx->state.gfxCtx, "../z_actor.c", 8265); @@ -3516,8 +3516,8 @@ void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) { Matrix_Translate(0.0f, entry->unk_08, 500.0f, MTXMODE_APPLY); Matrix_Get(&spB0); - temp1 = sinf(entry->unk_00 - var) * -(10 - arg1) * 0.1f * entry->unk_04; - temp2 = cosf(entry->unk_00 - var) * (10 - arg1) * 0.1f * entry->unk_04; + temp1 = sinf(entry->unk_00 - var) * -(10 - frame) * 0.1f * entry->unk_04; + temp2 = cosf(entry->unk_00 - var) * (10 - frame) * 0.1f * entry->unk_04; for (i = 0; i < 4; i++) { Matrix_Put(&spB0); @@ -3542,7 +3542,7 @@ void func_80033F54(GlobalContext* globalCtx, s32 arg1, s32 arg2) { } Matrix_Put(&spB0); - Matrix_Scale(arg1 * 0.1f, arg1 * 0.1f, arg1 * 0.1f, MTXMODE_APPLY); + Matrix_Scale(frame * 0.1f, frame * 0.1f, frame * 0.1f, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_actor.c", 8314), G_MTX_MODELVIEW | G_MTX_LOAD); diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index cf63e67986..61ab1fdf6a 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -1271,8 +1271,8 @@ s32 func_800A4530(SkelAnime* skelAnime, f32 arg1) { return func_800A4478(skelAnime, arg1, updateRate); } -void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, - AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount) { +s32 SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, + AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount) { SkeletonHeader* skeletonHeader = SEGMENTED_TO_VIRTUAL(skeletonHeaderSeg); skelAnime->limbCount = skeletonHeader->limbCount + 1; diff --git a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c index b670003581..633aa7da68 100644 --- a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c +++ b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c @@ -159,7 +159,7 @@ void DoorGerudo_Draw(Actor* thisx, GlobalContext* globalCtx) { if (this->unk_166 != 0) { Matrix_Scale(0.01f, 0.01f, 0.025f, MTXMODE_APPLY); - func_80033F54(globalCtx, this->unk_166, 0); + Actor_DrawDoorLock(globalCtx, this->unk_166, 0); } CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_door_gerudo.c", 377); diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c index 8031bbd71d..ae57d5fa83 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.c +++ b/src/overlays/actors/ovl_En_Door/z_en_door.c @@ -1,7 +1,7 @@ /* * File: z_en_door.c * Overlay: ovl_En_Door - * Description: Door + * Description: Doors with handles */ #include "z_en_door.h" @@ -10,12 +10,25 @@ #define THIS ((EnDoor*)thisx) +#define DOOR_AJAR_SLAM_RANGE 120.0f +#define DOOR_AJAR_OPEN_RANGE (2 * DOOR_AJAR_SLAM_RANGE) + +#define DOOR_CHECK_RANGE 40.0f + void EnDoor_Init(Actor* thisx, GlobalContext* globalCtx); void EnDoor_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnDoor_Update(Actor* thisx, GlobalContext* globalCtx); void EnDoor_Draw(Actor* thisx, GlobalContext* globalCtx); -/* +void EnDoor_SetupType(EnDoor* this, GlobalContext* globalCtx); +void EnDoor_Idle(EnDoor* this, GlobalContext* globalCtx); +void EnDoor_WaitForCheck(EnDoor* this, GlobalContext* globalCtx); +void EnDoor_Check(EnDoor* this, GlobalContext* globalCtx); +void EnDoor_AjarWait(EnDoor* this, GlobalContext* globalCtx); +void EnDoor_AjarOpen(EnDoor* this, GlobalContext* globalCtx); +void EnDoor_AjarClose(EnDoor* this, GlobalContext* globalCtx); +void EnDoor_Open(EnDoor* this, GlobalContext* globalCtx); + const ActorInit En_Door_InitVars = { ACTOR_EN_DOOR, ACTORTYPE_DOOR, @@ -27,29 +40,317 @@ const ActorInit En_Door_InitVars = { (ActorFunc)EnDoor_Update, (ActorFunc)EnDoor_Draw, }; -*/ -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Init.s") -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Destroy.s") +/** + * Controls which object and display lists to use in a given scene + */ +static EnDoorInfo sDoorInfo[] = { + { SCENE_HIDAN, 1, OBJECT_HIDAN_OBJECTS }, + { SCENE_MIZUSIN, 2, OBJECT_MIZU_OBJECTS }, + { SCENE_HAKADAN, 3, OBJECT_HAKA_DOOR }, + { SCENE_HAKADANCH, 3, OBJECT_HAKA_DOOR }, + // KEEP objects should remain last and in this order + { -1, 0, OBJECT_GAMEPLAY_KEEP }, + { -1, 4, OBJECT_GAMEPLAY_FIELD_KEEP }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC41C.s") +static InitChainEntry sInitChain[] = { + ICHAIN_U8(unk_1F, 0, ICHAIN_CONTINUE), + ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_STOP), +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC5D0.s") +AnimationHeader* D_809FCECC[] = { 0x0400E758, 0x0400E5B4, 0x04010038, 0x0400E6A0 }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC878.s") +static u8 sDoorAnimOpenFrames[] = { 25, 25, 25, 25 }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8C0.s") +static u8 sDoorAnimCloseFrames[] = { 60, 70, 60, 70 }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC8F4.s") +static Gfx* D_809FCEE4[5][2] = { + { 0x0400ECB8, 0x0400EE00 }, { 0x0600F998, 0x0600F938 }, { 0x06004958, 0x06004A10 }, + { 0x060013B8, 0x06001420 }, { 0x050047A0, 0x05004978 }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC928.s") +extern Gfx D_0400ECB8[]; +extern Gfx D_0400EE00[]; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC998.s") +extern AnimationHeader D_0400E758; +extern SkeletonHeader D_0400FF78; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FC9DC.s") +void EnDoor_Init(Actor* thisx, GlobalContext* globalCtx2) { + GlobalContext* globalCtx = globalCtx2; + EnDoor* this = THIS; + EnDoorInfo* objectInfo; + s32 i; + s32 objBankIndex; + f32 xOffset; + f32 zOffset; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Update.s") + objectInfo = &sDoorInfo[0]; + Actor_ProcessInitChain(&this->actor, sInitChain); + SkelAnime_Init(globalCtx, &this->skelAnime, &D_0400FF78, &D_0400E758, this->limbDrawTable, + this->transitionDrawTable, 5); + for (i = 0; i < ARRAY_COUNT(sDoorInfo) - 2; i++, objectInfo++) { + if (globalCtx->sceneNum == objectInfo->sceneNum) { + break; + } + } + if (i >= ARRAY_COUNT(sDoorInfo) - 2 && Object_GetIndex(&globalCtx->objectCtx, OBJECT_GAMEPLAY_FIELD_KEEP) >= 0) { + objectInfo++; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/func_809FCC3C.s") + this->dListIndex = objectInfo->dListIndex; + objBankIndex = Object_GetIndex(&globalCtx->objectCtx, objectInfo->objectId); + if (objBankIndex < 0) { + Actor_Kill(&this->actor); + return; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Draw.s") + this->requiredObjBankIndex = objBankIndex; + this->dListIndex = objectInfo->dListIndex; + if (this->actor.objBankIndex == this->requiredObjBankIndex) { + EnDoor_SetupType(this, globalCtx); + } else { + this->actionFunc = EnDoor_SetupType; + } + + // Double doors + if (this->actor.params & 0x40) { + EnDoor* other; + + xOffset = Math_Coss(this->actor.shape.rot.y) * 30.0f; + zOffset = Math_Sins(this->actor.shape.rot.y) * 30.0f; + other = (EnDoor*)Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_EN_DOOR, + this->actor.posRot.pos.x + xOffset, this->actor.posRot.pos.y, + this->actor.posRot.pos.z - zOffset, 0, this->actor.shape.rot.y + 0x8000, 0, + this->actor.params & ~0x40); + if (other != NULL) { + other->unk_192 = 1; + } + this->actor.posRot.pos.x -= xOffset; + this->actor.posRot.pos.z += zOffset; + } + Actor_SetHeight(&this->actor, 70.0f); +} + +void EnDoor_Destroy(Actor* thisx, GlobalContext* globalCtx) { + TransitionActorEntry* transitionEntry; + EnDoor* this = THIS; + + transitionEntry = &globalCtx->transitionActorList[(u16)this->actor.params >> 0xA]; + if (transitionEntry->id < 0) { + transitionEntry->id = -transitionEntry->id; + } +} + +void EnDoor_SetupType(EnDoor* this, GlobalContext* globalCtx) { + s32 doorType; + + if (Object_IsLoaded(&globalCtx->objectCtx, this->requiredObjBankIndex)) { + doorType = this->actor.params >> 7 & 7; + this->actor.flags &= ~0x10; + this->actor.objBankIndex = this->requiredObjBankIndex; + this->actionFunc = EnDoor_Idle; + if (doorType == DOOR_EVENING) { + doorType = + (gSaveContext.dayTime > 0xC000 && gSaveContext.dayTime < 0xE000) ? DOOR_SCENEEXIT : DOOR_CHECKABLE; + } + this->actor.posRot.rot.y = 0x0000; + if (doorType == DOOR_LOCKED) { + if (!Flags_GetSwitch(globalCtx, this->actor.params & 0x3F)) { + this->lockTimer = 10; + } + } else if (doorType == DOOR_AJAR) { + if (func_8002DB8C(&this->actor, &PLAYER->actor) > DOOR_AJAR_SLAM_RANGE) { + this->actionFunc = EnDoor_AjarWait; + this->actor.posRot.rot.y = -0x1800; + } + } else if (doorType == DOOR_CHECKABLE) { + this->actor.textId = (this->actor.params & 0x3F) + 0x0200; + if (this->actor.textId == 0x0229 && !(gSaveContext.eventChkInf[1] & 0x10)) { + // Talon's house door. If Talon has not been woken up at Hyrule Castle + // this door should be openable at any time of day. Note that there is no + // check for time of day as the scene setup for Lon Lon merely initializes + // the door with a different text id between day and night setups + doorType = DOOR_SCENEEXIT; + } else { + this->actionFunc = EnDoor_WaitForCheck; + this->actor.flags |= 0x8000009; + } + } + // Replace the door type it was loaded with by the new type + this->actor.params = (this->actor.params & ~0x380) | (doorType << 7); + } +} + +#ifdef NON_MATCHING +// Regalloc only +void EnDoor_Idle(EnDoor* this, GlobalContext* globalCtx) { + Player* player = PLAYER; + s32 doorType; + Vec3f sp2C; + s8 numKeys; + s16 phi_v0; + s16 temp_v0; + + doorType = this->actor.params >> 7 & 7; + func_8002DBD0(&this->actor, &sp2C, &player->actor.posRot.pos); + if (this->unk_191 != 0) { + this->actionFunc = EnDoor_Open; + SkelAnime_ChangeAnimPlaybackStop(&this->skelAnime, D_809FCECC[this->unk_190], + (player->stateFlags1 & 0x8000000) ? 0.75f : 1.5f); + if (this->lockTimer != 0) { + gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]--; + Flags_SetSwitch(globalCtx, this->actor.params & 0x3F); + Audio_PlayActorSound2(&this->actor, NA_SE_EV_CHAIN_KEY_UNLOCK); + } + } else if (!Player_InCsMode(globalCtx)) { + if (fabsf(sp2C.y) < 20.0f && fabsf(sp2C.x) < 20.0f && fabsf(sp2C.z) < 50.0f) { + phi_v0 = player->actor.shape.rot.y - this->actor.shape.rot.y; + if (sp2C.z > 0.0f) { + phi_v0 = 0x8000 - phi_v0; + } + if (ABS(phi_v0) < 0x3000) { + if (this->lockTimer != 0) { + numKeys = gSaveContext.inventory.dungeonKeys[gSaveContext.mapIndex]; + if (numKeys <= 0) { + PLAYER->naviTextId = -0x203; + return; + } else { + player->doorTimer = 10; + } + } + player->doorType = (doorType == DOOR_AJAR) ? -1 : 1; + player->doorDirection = (sp2C.z >= 0.0f) ? 1.0f : -1.0f; + player->doorActor = &this->actor; + } + } else if (doorType == DOOR_AJAR && this->actor.xzDistFromLink > DOOR_AJAR_OPEN_RANGE) { + this->actionFunc = EnDoor_AjarOpen; + } + } +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Door/EnDoor_Idle.s") +#endif + +void EnDoor_WaitForCheck(EnDoor* this, GlobalContext* globalCtx) { + if (func_8002F194(&this->actor, globalCtx)) { + this->actionFunc = EnDoor_Check; + } else { + func_8002F2CC(&this->actor, globalCtx, DOOR_CHECK_RANGE); + } +} + +void EnDoor_Check(EnDoor* this, GlobalContext* globalCtx) { + if (func_8002F334(&this->actor, globalCtx)) { + this->actionFunc = EnDoor_WaitForCheck; + } +} + +void EnDoor_AjarWait(EnDoor* this, GlobalContext* globalCtx) { + if (this->actor.xzDistFromLink < DOOR_AJAR_SLAM_RANGE) { + this->actionFunc = EnDoor_AjarClose; + } +} + +void EnDoor_AjarOpen(EnDoor* this, GlobalContext* globalCtx) { + if (this->actor.xzDistFromLink < DOOR_AJAR_SLAM_RANGE) { + this->actionFunc = EnDoor_AjarClose; + } else if (Math_ApproxUpdateScaledS(&this->actor.posRot.rot.y, -0x1800, 0x100)) { + this->actionFunc = EnDoor_AjarWait; + } +} + +void EnDoor_AjarClose(EnDoor* this, GlobalContext* globalCtx) { + if (Math_ApproxUpdateScaledS(&this->actor.posRot.rot.y, 0, 0x700)) { + this->actionFunc = EnDoor_Idle; + } +} + +void EnDoor_Open(EnDoor* this, GlobalContext* globalCtx) { + s32 i; + s32 numEffects; + + if (DECR(this->lockTimer) == 0) { + if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + this->actionFunc = EnDoor_Idle; + this->unk_191 = 0; + } else if (func_800A56C8(&this->skelAnime, sDoorAnimOpenFrames[this->unk_190])) { + Audio_PlayActorSound2(&this->actor, + (globalCtx->sceneNum == SCENE_HAKADAN || globalCtx->sceneNum == SCENE_HAKADANCH || + globalCtx->sceneNum == SCENE_HIDAN) + ? NA_SE_EV_IRON_DOOR_OPEN + : NA_SE_OC_DOOR_OPEN); + if (this->skelAnime.animPlaybackSpeed < 1.5f) { + numEffects = (s32)(Math_Rand_ZeroOne() * 30.0f) + 50; + for (i = 0; i < numEffects; i++) { + EffectSsBubble_Spawn(globalCtx, &this->actor.posRot.pos, 60.0f, 100.0f, 50.0f, 0.15f); + } + } + } else if (func_800A56C8(&this->skelAnime, sDoorAnimCloseFrames[this->unk_190])) { + Audio_PlayActorSound2(&this->actor, + (globalCtx->sceneNum == SCENE_HAKADAN || globalCtx->sceneNum == SCENE_HAKADANCH || + globalCtx->sceneNum == SCENE_HIDAN) + ? NA_SE_EV_IRON_DOOR_CLOSE + : NA_SE_EV_DOOR_CLOSE); + } + } +} + +void EnDoor_Update(Actor* thisx, GlobalContext* globalCtx) { + EnDoor* this = THIS; + this->actionFunc(this, globalCtx); +} + +s32 EnDoor_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) { + s32 pad; + TransitionActorEntry* transitionEntry; + Gfx** temp_a2; + s32 pad2; + s16 phi_v0_2; + s32 phi_v0; + EnDoor* this = THIS; + + if (limbIndex == 4) { + temp_a2 = D_809FCEE4[this->dListIndex]; + transitionEntry = &globalCtx->transitionActorList[(u16)this->actor.params >> 0xA]; + rot->z += this->actor.posRot.rot.y; + if ((globalCtx->roomCtx.prevRoom.num >= 0) || + (transitionEntry->sides[0].room == transitionEntry->sides[1].room)) { + phi_v0_2 = ((this->actor.shape.rot.y + this->skelAnime.limbDrawTbl[3].z) + rot->z) - + Math_Vec3f_Yaw(&globalCtx->view.eye, &this->actor.posRot.pos); + *dList = (ABS(phi_v0_2) < 0x4000) ? temp_a2[0] : temp_a2[1]; + } else { + phi_v0 = this->unk_192; + if (transitionEntry->sides[0].room != this->actor.room) { + phi_v0 ^= 1; + } + *dList = temp_a2[phi_v0]; + } + } + return 0; +} + +void EnDoor_Draw(Actor* thisx, GlobalContext* globalCtx) { + EnDoor* this = THIS; + + if (this->actor.objBankIndex == this->requiredObjBankIndex) { + OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_door.c", 910); + + func_80093D18(globalCtx->state.gfxCtx); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnDoor_OverrideLimbDraw, + NULL, &this->actor); + if (this->actor.posRot.rot.y != 0) { + if (1) {} + if (this->actor.posRot.rot.y > 0) { + gSPDisplayList(POLY_OPA_DISP++, D_0400EE00); + } else { + gSPDisplayList(POLY_OPA_DISP++, D_0400ECB8); + } + } + if (this->lockTimer != 0) { + Actor_DrawDoorLock(globalCtx, this->lockTimer, 0); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_door.c", 941); + } +} diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.h b/src/overlays/actors/ovl_En_Door/z_en_door.h index 03e8f45625..695ddb13d8 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.h +++ b/src/overlays/actors/ovl_En_Door/z_en_door.h @@ -4,14 +4,57 @@ #include "ultra64.h" #include "global.h" +/** + * Actor Parameters + * + * | | | | + * | Transition Index | Type | Double Door | Switch Flag OR Text Id - 0x0200 + * |------------------|-------|-------------|--------------------------------- + * | 0 0 0 0 0 0 | 0 0 0 | 0 | 0 0 0 0 0 0 + * | 6 | 3 | 1 | 6 + * | + * + * Transition Index 1111110000000000 Set by the actor engine when the door is spawned + * Type 0000001110000000 + * Double Door 0000000001000000 + * Switch Flag 0000000000111111 For use with the `DOOR_LOCKED` type + * Text id - 0x0200 0000000000111111 For use with the `DOOR_CHECKABLE` type + * + */ + +typedef struct { + /* 0x00 */ s16 sceneNum; + /* 0x02 */ u8 dListIndex; + /* 0x04 */ s16 objectId; +} EnDoorInfo; + +typedef enum { + /* 0x00 */ DOOR_ROOMLOAD, // loads rooms + /* 0x01 */ DOOR_LOCKED, // small key locked door + /* 0x02 */ DOOR_ROOMLOAD2, // loads rooms + /* 0x03 */ DOOR_SCENEEXIT, // doesn't load rooms, used for doors paired with scene transition polygons + /* 0x04 */ DOOR_AJAR, // open slightly but slams shut if Link gets too close + /* 0x05 */ DOOR_CHECKABLE, // doors that display a textbox when interacting + /* 0x06 */ DOOR_EVENING, // unlocked between 18:00 and 21:00, Dampé's hut + /* 0x07 */ DOOR_ROOMLOAD7 // loads rooms +} EnDoorType; + struct EnDoor; +typedef void (*EnDoorActionFunc)(struct EnDoor*, GlobalContext*); + typedef struct EnDoor { /* 0x0000 */ Actor actor; - /* 0x014C */ char unk_14C[0x44]; + /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ u8 unk_190; /* 0x0191 */ u8 unk_191; - /* 0x0192 */ char unk_192[0x46]; + /* 0x0192 */ u8 unk_192; + /* 0x0193 */ s8 requiredObjBankIndex; + /* 0x0194 */ s8 dListIndex; + /* 0x0196 */ s16 lockTimer; + /* 0x0198 */ Vec3s limbDrawTable[5]; + /* 0x01B6 */ Vec3s transitionDrawTable[5]; + /* 0x01D4 */ EnDoorActionFunc actionFunc; } EnDoor; // size = 0x01D8 extern const ActorInit En_Door_InitVars; diff --git a/undefined_syms.txt b/undefined_syms.txt index b844d9b76d..7654260a89 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1042,6 +1042,12 @@ D_04032C90 = 0x04032C90; D_04032490 = 0x04032490; D_04032890 = 0x04032890; +// z_en_door +D_0400FF78 = 0x0400FF78; +D_0400ECB8 = 0x0400ECB8; +D_0400EE00 = 0x0400EE00; +D_0400E758 = 0x0400E758; + // z_en_bx D_060022F0 = 0x060022F0;