summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas Shaw <49287729+shawlucas@users.noreply.github.com>2020-05-10 16:19:27 -0700
committerGitHub <noreply@github.com>2020-05-10 19:19:27 -0400
commit7d7c85128960eeaa804ea73782cfae70d829e596 (patch)
treec730f0684b18f1651b50f1f14e4d976045260cf0
parent3e5ed389b926ec751f7c782b8059b6cea98fa2e8 (diff)
ovl_En_Heishi3 OK (#121)
* almost done with heishi3 * heishi3 ok * Added function names to heishi3 * EnHeishi3 OK * Made some suggested changes. Still have questions about others * Made suggsted changes * fixed formatting * fixed formatting
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Destroy.s12
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Draw.s23
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Init.s93
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Update.s61
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A557A0.s48
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55850.s106
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A559B4.s106
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55B2C.s45
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55BD4.s46
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55C6C.s40
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55D00.s47
-rw-r--r--asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55E88.s28
-rw-r--r--data/overlays/actors/z_en_heishi3.data.s20
-rw-r--r--spec3
-rw-r--r--src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c229
-rw-r--r--src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h19
-rw-r--r--undefined_syms.txt5
17 files changed, 230 insertions, 701 deletions
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Destroy.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Destroy.s
deleted file mode 100644
index 6869808e3..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Destroy.s
+++ /dev/null
@@ -1,12 +0,0 @@
-glabel EnHeishi3_Destroy
-/* 00138 80A55778 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
-/* 0013C 80A5577C 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
-/* 00140 80A55780 AFBF0014 */ sw $ra, 0x0014($sp)
-/* 00144 80A55784 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
-/* 00148 80A55788 0C0170EB */ jal Collider_DestroyCylinder
-
-/* 0014C 80A5578C 24C5027C */ addiu $a1, $a2, 0x027C ## $a1 = 0000027C
-/* 00150 80A55790 8FBF0014 */ lw $ra, 0x0014($sp)
-/* 00154 80A55794 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
-/* 00158 80A55798 03E00008 */ jr $ra
-/* 0015C 80A5579C 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Draw.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Draw.s
deleted file mode 100644
index a6eefc3f7..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Draw.s
+++ /dev/null
@@ -1,23 +0,0 @@
-glabel EnHeishi3_Draw
-/* 008AC 80A55EEC 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
-/* 008B0 80A55EF0 AFBF001C */ sw $ra, 0x001C($sp)
-/* 008B4 80A55EF4 AFA40020 */ sw $a0, 0x0020($sp)
-/* 008B8 80A55EF8 AFA50024 */ sw $a1, 0x0024($sp)
-/* 008BC 80A55EFC 0C024F46 */ jal func_80093D18
-/* 008C0 80A55F00 8CA40000 */ lw $a0, 0x0000($a1) ## 00000000
-/* 008C4 80A55F04 8FA20020 */ lw $v0, 0x0020($sp)
-/* 008C8 80A55F08 3C0780A5 */ lui $a3, %hi(func_80A55E88) ## $a3 = 80A50000
-/* 008CC 80A55F0C 24E75E88 */ addiu $a3, $a3, %lo(func_80A55E88) ## $a3 = 80A55E88
-/* 008D0 80A55F10 8C450150 */ lw $a1, 0x0150($v0) ## 00000150
-/* 008D4 80A55F14 8C46016C */ lw $a2, 0x016C($v0) ## 0000016C
-/* 008D8 80A55F18 AFA00010 */ sw $zero, 0x0010($sp)
-/* 008DC 80A55F1C 8FA40024 */ lw $a0, 0x0024($sp)
-/* 008E0 80A55F20 0C028572 */ jal SkelAnime_Draw
-
-/* 008E4 80A55F24 AFA20014 */ sw $v0, 0x0014($sp)
-/* 008E8 80A55F28 8FBF001C */ lw $ra, 0x001C($sp)
-/* 008EC 80A55F2C 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
-/* 008F0 80A55F30 03E00008 */ jr $ra
-/* 008F4 80A55F34 00000000 */ nop
-/* 008F8 80A55F38 00000000 */ nop
-/* 008FC 80A55F3C 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Init.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Init.s
deleted file mode 100644
index c932efe07..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Init.s
+++ /dev/null
@@ -1,93 +0,0 @@
-.rdata
-glabel D_80A55F90
- .asciz "☆☆☆☆☆ 城門兵パワーアップ ☆☆☆☆☆ \n"
- .balign 4
-
-.text
-glabel EnHeishi3_Init
-/* 00000 80A55640 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
-/* 00004 80A55644 3C0180A5 */ lui $at, %hi(D_80A55F40) ## $at = 80A50000
-/* 00008 80A55648 AFBF002C */ sw $ra, 0x002C($sp)
-/* 0000C 80A5564C AFB00028 */ sw $s0, 0x0028($sp)
-/* 00010 80A55650 AFA5003C */ sw $a1, 0x003C($sp)
-/* 00014 80A55654 A4205F40 */ sh $zero, %lo(D_80A55F40)($at)
-/* 00018 80A55658 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
-/* 0001C 80A5565C 3C053C23 */ lui $a1, 0x3C23 ## $a1 = 3C230000
-/* 00020 80A55660 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 00024 80A55664 1DC00003 */ bgtz $t6, .L80A55674
-/* 00028 80A55668 34A5D70A */ ori $a1, $a1, 0xD70A ## $a1 = 3C23D70A
-/* 0002C 80A5566C 1000000B */ beq $zero, $zero, .L80A5569C
-/* 00030 80A55670 A4800278 */ sh $zero, 0x0278($a0) ## 00000278
-.L80A55674:
-/* 00034 80A55674 3C01C391 */ lui $at, 0xC391 ## $at = C3910000
-/* 00038 80A55678 44813000 */ mtc1 $at, $f6 ## $f6 = -290.00
-/* 0003C 80A5567C C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
-/* 00040 80A55680 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
-/* 00044 80A55684 A60F0278 */ sh $t7, 0x0278($s0) ## 00000278
-/* 00048 80A55688 4606203C */ c.lt.s $f4, $f6
-/* 0004C 80A5568C 24180002 */ addiu $t8, $zero, 0x0002 ## $t8 = 00000002
-/* 00050 80A55690 45000002 */ bc1f .L80A5569C
-/* 00054 80A55694 00000000 */ nop
-/* 00058 80A55698 A6180278 */ sh $t8, 0x0278($s0) ## 00000278
-.L80A5569C:
-/* 0005C 80A5569C 0C00B58B */ jal Actor_SetScale
-
-/* 00060 80A556A0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00064 80A556A4 3C068003 */ lui $a2, %hi(ActorShadow_DrawFunc_Circle)
-/* 00068 80A556A8 24C6B5EC */ addiu $a2, %lo(ActorShadow_DrawFunc_Circle)
-/* 0006C 80A556AC 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4
-/* 00070 80A556B0 24050000 */ addiu $a1, $zero, 0x0000 ## $a1 = 00000000
-/* 00074 80A556B4 0C00AC78 */ jal ActorShape_Init
-
-/* 00078 80A556B8 3C0741F0 */ lui $a3, 0x41F0 ## $a3 = 41F00000
-/* 0007C 80A556BC 3C060601 */ lui $a2, 0x0601 ## $a2 = 06010000
-/* 00080 80A556C0 3C070600 */ lui $a3, 0x0600 ## $a3 = 06000000
-/* 00084 80A556C4 26190190 */ addiu $t9, $s0, 0x0190 ## $t9 = 00000190
-/* 00088 80A556C8 260801F6 */ addiu $t0, $s0, 0x01F6 ## $t0 = 000001F6
-/* 0008C 80A556CC 24090011 */ addiu $t1, $zero, 0x0011 ## $t1 = 00000011
-/* 00090 80A556D0 AFA90018 */ sw $t1, 0x0018($sp)
-/* 00094 80A556D4 AFA80014 */ sw $t0, 0x0014($sp)
-/* 00098 80A556D8 AFB90010 */ sw $t9, 0x0010($sp)
-/* 0009C 80A556DC 24E75C30 */ addiu $a3, $a3, 0x5C30 ## $a3 = 06005C30
-/* 000A0 80A556E0 24C6BAC8 */ addiu $a2, $a2, 0xBAC8 ## $a2 = 0600BAC8
-/* 000A4 80A556E4 8FA4003C */ lw $a0, 0x003C($sp)
-/* 000A8 80A556E8 0C02915F */ jal SkelAnime_Init
-
-/* 000AC 80A556EC 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
-/* 000B0 80A556F0 240A00FF */ addiu $t2, $zero, 0x00FF ## $t2 = 000000FF
-/* 000B4 80A556F4 240B0006 */ addiu $t3, $zero, 0x0006 ## $t3 = 00000006
-/* 000B8 80A556F8 A20A00AE */ sb $t2, 0x00AE($s0) ## 000000AE
-/* 000BC 80A556FC A20B001F */ sb $t3, 0x001F($s0) ## 0000001F
-/* 000C0 80A55700 2605027C */ addiu $a1, $s0, 0x027C ## $a1 = 0000027C
-/* 000C4 80A55704 AFA50030 */ sw $a1, 0x0030($sp)
-/* 000C8 80A55708 0C0170D9 */ jal Collider_InitCylinder
-
-/* 000CC 80A5570C 8FA4003C */ lw $a0, 0x003C($sp)
-/* 000D0 80A55710 3C0780A5 */ lui $a3, %hi(D_80A55F64) ## $a3 = 80A50000
-/* 000D4 80A55714 8FA50030 */ lw $a1, 0x0030($sp)
-/* 000D8 80A55718 24E75F64 */ addiu $a3, $a3, %lo(D_80A55F64) ## $a3 = 80A55F64
-/* 000DC 80A5571C 8FA4003C */ lw $a0, 0x003C($sp)
-/* 000E0 80A55720 0C01712B */ jal Collider_SetCylinder
-
-/* 000E4 80A55724 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
-/* 000E8 80A55728 3C0480A5 */ lui $a0, %hi(D_80A55F90) ## $a0 = 80A50000
-/* 000EC 80A5572C 0C00084C */ jal osSyncPrintf
-
-/* 000F0 80A55730 24845F90 */ addiu $a0, $a0, %lo(D_80A55F90) ## $a0 = 80A55F90
-/* 000F4 80A55734 8E0D0024 */ lw $t5, 0x0024($s0) ## 00000024
-/* 000F8 80A55738 3C01C040 */ lui $at, 0xC040 ## $at = C0400000
-/* 000FC 80A5573C 44814000 */ mtc1 $at, $f8 ## $f8 = -3.00
-/* 00100 80A55740 AE0D0038 */ sw $t5, 0x0038($s0) ## 00000038
-/* 00104 80A55744 8E0D002C */ lw $t5, 0x002C($s0) ## 0000002C
-/* 00108 80A55748 8E0C0028 */ lw $t4, 0x0028($s0) ## 00000028
-/* 0010C 80A5574C 3C0E80A5 */ lui $t6, %hi(func_80A557A0) ## $t6 = 80A50000
-/* 00110 80A55750 25CE57A0 */ addiu $t6, $t6, %lo(func_80A557A0) ## $t6 = 80A557A0
-/* 00114 80A55754 AE0E025C */ sw $t6, 0x025C($s0) ## 0000025C
-/* 00118 80A55758 E608006C */ swc1 $f8, 0x006C($s0) ## 0000006C
-/* 0011C 80A5575C AE0D0040 */ sw $t5, 0x0040($s0) ## 00000040
-/* 00120 80A55760 AE0C003C */ sw $t4, 0x003C($s0) ## 0000003C
-/* 00124 80A55764 8FBF002C */ lw $ra, 0x002C($sp)
-/* 00128 80A55768 8FB00028 */ lw $s0, 0x0028($sp)
-/* 0012C 80A5576C 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
-/* 00130 80A55770 03E00008 */ jr $ra
-/* 00134 80A55774 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Update.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Update.s
deleted file mode 100644
index a147d08ea..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Update.s
+++ /dev/null
@@ -1,61 +0,0 @@
-glabel EnHeishi3_Update
-/* 0076C 80A55DAC 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
-/* 00770 80A55DB0 AFBF0024 */ sw $ra, 0x0024($sp)
-/* 00774 80A55DB4 AFB00020 */ sw $s0, 0x0020($sp)
-/* 00778 80A55DB8 AFA5003C */ sw $a1, 0x003C($sp)
-/* 0077C 80A55DBC 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 00780 80A55DC0 0C00B56E */ jal Actor_SetHeight
-
-/* 00784 80A55DC4 3C054270 */ lui $a1, 0x4270 ## $a1 = 42700000
-/* 00788 80A55DC8 860E0274 */ lh $t6, 0x0274($s0) ## 00000274
-/* 0078C 80A55DCC 86020272 */ lh $v0, 0x0272($s0) ## 00000272
-/* 00790 80A55DD0 25CF0001 */ addiu $t7, $t6, 0x0001 ## $t7 = 00000001
-/* 00794 80A55DD4 10400003 */ beq $v0, $zero, .L80A55DE4
-/* 00798 80A55DD8 A60F0274 */ sh $t7, 0x0274($s0) ## 00000274
-/* 0079C 80A55DDC 2458FFFF */ addiu $t8, $v0, 0xFFFF ## $t8 = FFFFFFFF
-/* 007A0 80A55DE0 A6180272 */ sh $t8, 0x0272($s0) ## 00000272
-.L80A55DE4:
-/* 007A4 80A55DE4 8E19025C */ lw $t9, 0x025C($s0) ## 0000025C
-/* 007A8 80A55DE8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 007AC 80A55DEC 8FA5003C */ lw $a1, 0x003C($sp)
-/* 007B0 80A55DF0 0320F809 */ jalr $ra, $t9
-/* 007B4 80A55DF4 00000000 */ nop
-/* 007B8 80A55DF8 8A090030 */ lwl $t1, 0x0030($s0) ## 00000030
-/* 007BC 80A55DFC 9A090033 */ lwr $t1, 0x0033($s0) ## 00000033
-/* 007C0 80A55E00 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 007C4 80A55E04 AA0900B4 */ swl $t1, 0x00B4($s0) ## 000000B4
-/* 007C8 80A55E08 BA0900B7 */ swr $t1, 0x00B7($s0) ## 000000B7
-/* 007CC 80A55E0C 96090034 */ lhu $t1, 0x0034($s0) ## 00000034
-/* 007D0 80A55E10 0C00B638 */ jal Actor_MoveForward
-
-/* 007D4 80A55E14 A60900B8 */ sh $t1, 0x00B8($s0) ## 000000B8
-/* 007D8 80A55E18 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000
-/* 007DC 80A55E1C 44810000 */ mtc1 $at, $f0 ## $f0 = 20.00
-/* 007E0 80A55E20 3C014248 */ lui $at, 0x4248 ## $at = 42480000
-/* 007E4 80A55E24 44812000 */ mtc1 $at, $f4 ## $f4 = 50.00
-/* 007E8 80A55E28 240A001C */ addiu $t2, $zero, 0x001C ## $t2 = 0000001C
-/* 007EC 80A55E2C 44060000 */ mfc1 $a2, $f0
-/* 007F0 80A55E30 44070000 */ mfc1 $a3, $f0
-/* 007F4 80A55E34 AFAA0014 */ sw $t2, 0x0014($sp)
-/* 007F8 80A55E38 8FA4003C */ lw $a0, 0x003C($sp)
-/* 007FC 80A55E3C 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
-/* 00800 80A55E40 0C00B92D */ jal func_8002E4B4
-/* 00804 80A55E44 E7A40010 */ swc1 $f4, 0x0010($sp)
-/* 00808 80A55E48 2606027C */ addiu $a2, $s0, 0x027C ## $a2 = 0000027C
-/* 0080C 80A55E4C 00C02825 */ or $a1, $a2, $zero ## $a1 = 0000027C
-/* 00810 80A55E50 AFA6002C */ sw $a2, 0x002C($sp)
-/* 00814 80A55E54 0C0189B7 */ jal Collider_CylinderUpdate
-
-/* 00818 80A55E58 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 0081C 80A55E5C 8FA4003C */ lw $a0, 0x003C($sp)
-/* 00820 80A55E60 3C010001 */ lui $at, 0x0001 ## $at = 00010000
-/* 00824 80A55E64 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
-/* 00828 80A55E68 8FA6002C */ lw $a2, 0x002C($sp)
-/* 0082C 80A55E6C 0C017713 */ jal CollisionCheck_SetOC
- ## CollisionCheck_setOT
-/* 00830 80A55E70 00812821 */ addu $a1, $a0, $at
-/* 00834 80A55E74 8FBF0024 */ lw $ra, 0x0024($sp)
-/* 00838 80A55E78 8FB00020 */ lw $s0, 0x0020($sp)
-/* 0083C 80A55E7C 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
-/* 00840 80A55E80 03E00008 */ jr $ra
-/* 00844 80A55E84 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A557A0.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A557A0.s
deleted file mode 100644
index f076617bb..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A557A0.s
+++ /dev/null
@@ -1,48 +0,0 @@
-glabel func_80A557A0
-/* 00160 80A557A0 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
-/* 00164 80A557A4 AFA40028 */ sw $a0, 0x0028($sp)
-/* 00168 80A557A8 AFBF0024 */ sw $ra, 0x0024($sp)
-/* 0016C 80A557AC 3C040600 */ lui $a0, 0x0600 ## $a0 = 06000000
-/* 00170 80A557B0 AFA5002C */ sw $a1, 0x002C($sp)
-/* 00174 80A557B4 0C028800 */ jal SkelAnime_GetFrameCount
-
-/* 00178 80A557B8 24845C30 */ addiu $a0, $a0, 0x5C30 ## $a0 = 06005C30
-/* 0017C 80A557BC 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00
-/* 00180 80A557C0 3C01C120 */ lui $at, 0xC120 ## $at = C1200000
-/* 00184 80A557C4 8FA30028 */ lw $v1, 0x0028($sp)
-/* 00188 80A557C8 468021A0 */ cvt.s.w $f6, $f4
-/* 0018C 80A557CC 44819000 */ mtc1 $at, $f18 ## $f18 = -10.00
-/* 00190 80A557D0 3C050600 */ lui $a1, 0x0600 ## $a1 = 06000000
-/* 00194 80A557D4 24A55C30 */ addiu $a1, $a1, 0x5C30 ## $a1 = 06005C30
-/* 00198 80A557D8 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
-/* 0019C 80A557DC 24070000 */ addiu $a3, $zero, 0x0000 ## $a3 = 00000000
-/* 001A0 80A557E0 4600320D */ trunc.w.s $f8, $f6
-/* 001A4 80A557E4 AFA00014 */ sw $zero, 0x0014($sp)
-/* 001A8 80A557E8 2464014C */ addiu $a0, $v1, 0x014C ## $a0 = 0000014C
-/* 001AC 80A557EC E7B20018 */ swc1 $f18, 0x0018($sp)
-/* 001B0 80A557F0 440F4000 */ mfc1 $t7, $f8
-/* 001B4 80A557F4 00000000 */ nop
-/* 001B8 80A557F8 000FC400 */ sll $t8, $t7, 16
-/* 001BC 80A557FC 0018CC03 */ sra $t9, $t8, 16
-/* 001C0 80A55800 44995000 */ mtc1 $t9, $f10 ## $f10 = 0.00
-/* 001C4 80A55804 00000000 */ nop
-/* 001C8 80A55808 46805420 */ cvt.s.w $f16, $f10
-/* 001CC 80A5580C 0C029468 */ jal SkelAnime_ChangeAnim
-
-/* 001D0 80A55810 E7B00010 */ swc1 $f16, 0x0010($sp)
-/* 001D4 80A55814 8FA30028 */ lw $v1, 0x0028($sp)
-/* 001D8 80A55818 3C0980A5 */ lui $t1, %hi(func_80A55850) ## $t1 = 80A50000
-/* 001DC 80A5581C 3C0A80A5 */ lui $t2, %hi(func_80A559B4) ## $t2 = 80A50000
-/* 001E0 80A55820 84680278 */ lh $t0, 0x0278($v1) ## 00000278
-/* 001E4 80A55824 25295850 */ addiu $t1, $t1, %lo(func_80A55850) ## $t1 = 80A55850
-/* 001E8 80A55828 254A59B4 */ addiu $t2, $t2, %lo(func_80A559B4) ## $t2 = 80A559B4
-/* 001EC 80A5582C 55000004 */ bnel $t0, $zero, .L80A55840
-/* 001F0 80A55830 AC6A025C */ sw $t2, 0x025C($v1) ## 0000025C
-/* 001F4 80A55834 10000002 */ beq $zero, $zero, .L80A55840
-/* 001F8 80A55838 AC69025C */ sw $t1, 0x025C($v1) ## 0000025C
-/* 001FC 80A5583C AC6A025C */ sw $t2, 0x025C($v1) ## 0000025C
-.L80A55840:
-/* 00200 80A55840 8FBF0024 */ lw $ra, 0x0024($sp)
-/* 00204 80A55844 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
-/* 00208 80A55848 03E00008 */ jr $ra
-/* 0020C 80A5584C 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55850.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55850.s
deleted file mode 100644
index f9569b942..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55850.s
+++ /dev/null
@@ -1,106 +0,0 @@
-.rdata
-glabel D_80A55FC4
- .asciz "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n"
- .balign 4
-
-.text
-glabel func_80A55850
-/* 00210 80A55850 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
-/* 00214 80A55854 AFBF001C */ sw $ra, 0x001C($sp)
-/* 00218 80A55858 AFB00018 */ sw $s0, 0x0018($sp)
-/* 0021C 80A5585C AFA5002C */ sw $a1, 0x002C($sp)
-/* 00220 80A55860 8CAF1C44 */ lw $t7, 0x1C44($a1) ## 00001C44
-/* 00224 80A55864 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 00228 80A55868 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
-/* 0022C 80A5586C 0C02927F */ jal SkelAnime_FrameUpdateMatrix
-
-/* 00230 80A55870 AFAF0024 */ sw $t7, 0x0024($sp)
-/* 00234 80A55874 8618008A */ lh $t8, 0x008A($s0) ## 0000008A
-/* 00238 80A55878 861900B6 */ lh $t9, 0x00B6($s0) ## 000000B6
-/* 0023C 80A5587C 3C088016 */ lui $t0, %hi(gSaveContext+0x10)
-/* 00240 80A55880 3C098016 */ lui $t1, %hi(gSaveContext+0x10)
-/* 00244 80A55884 03191023 */ subu $v0, $t8, $t9
-/* 00248 80A55888 00021400 */ sll $v0, $v0, 16
-/* 0024C 80A5588C 00021403 */ sra $v0, $v0, 16
-/* 00250 80A55890 04400004 */ bltz $v0, .L80A558A4
-/* 00254 80A55894 00021823 */ subu $v1, $zero, $v0
-/* 00258 80A55898 00021C00 */ sll $v1, $v0, 16
-/* 0025C 80A5589C 10000003 */ beq $zero, $zero, .L80A558AC
-/* 00260 80A558A0 00031C03 */ sra $v1, $v1, 16
-.L80A558A4:
-/* 00264 80A558A4 00031C00 */ sll $v1, $v1, 16
-/* 00268 80A558A8 00031C03 */ sra $v1, $v1, 16
-.L80A558AC:
-/* 0026C 80A558AC 28614300 */ slti $at, $v1, 0x4300
-/* 00270 80A558B0 1020000C */ beq $at, $zero, .L80A558E4
-/* 00274 80A558B4 8FAA0024 */ lw $t2, 0x0024($sp)
-/* 00278 80A558B8 8D08E670 */ lw $t0, %lo(gSaveContext+0x10)($t0)
-/* 0027C 80A558BC 3C014348 */ lui $at, 0x4348 ## $at = 43480000
-/* 00280 80A558C0 55000006 */ bnel $t0, $zero, .L80A558DC
-/* 00284 80A558C4 44810000 */ mtc1 $at, $f0 ## $f0 = 200.00
-/* 00288 80A558C8 3C01437A */ lui $at, 0x437A ## $at = 437A0000
-/* 0028C 80A558CC 44810000 */ mtc1 $at, $f0 ## $f0 = 250.00
-/* 00290 80A558D0 1000000F */ beq $zero, $zero, .L80A55910
-/* 00294 80A558D4 C6040090 */ lwc1 $f4, 0x0090($s0) ## 00000090
-/* 00298 80A558D8 44810000 */ mtc1 $at, $f0 ## $f0 = 250.00
-.L80A558DC:
-/* 0029C 80A558DC 1000000C */ beq $zero, $zero, .L80A55910
-/* 002A0 80A558E0 C6040090 */ lwc1 $f4, 0x0090($s0) ## 00000090
-.L80A558E4:
-/* 002A4 80A558E4 8D29E670 */ lw $t1, %lo(gSaveContext+0x10)($t1)
-/* 002A8 80A558E8 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
-/* 002AC 80A558EC 55200006 */ bnel $t1, $zero, .L80A55908
-/* 002B0 80A558F0 44810000 */ mtc1 $at, $f0 ## $f0 = 100.00
-/* 002B4 80A558F4 3C014316 */ lui $at, 0x4316 ## $at = 43160000
-/* 002B8 80A558F8 44810000 */ mtc1 $at, $f0 ## $f0 = 150.00
-/* 002BC 80A558FC 10000004 */ beq $zero, $zero, .L80A55910
-/* 002C0 80A55900 C6040090 */ lwc1 $f4, 0x0090($s0) ## 00000090
-/* 002C4 80A55904 44810000 */ mtc1 $at, $f0 ## $f0 = 150.00
-.L80A55908:
-/* 002C8 80A55908 00000000 */ nop
-/* 002CC 80A5590C C6040090 */ lwc1 $f4, 0x0090($s0) ## 00000090
-.L80A55910:
-/* 002D0 80A55910 4600203C */ c.lt.s $f4, $f0
-/* 002D4 80A55914 00000000 */ nop
-/* 002D8 80A55918 45020022 */ bc1fl .L80A559A4
-/* 002DC 80A5591C 8FBF001C */ lw $ra, 0x001C($sp)
-/* 002E0 80A55920 C5460028 */ lwc1 $f6, 0x0028($t2) ## 00000028
-/* 002E4 80A55924 C6080028 */ lwc1 $f8, 0x0028($s0) ## 00000028
-/* 002E8 80A55928 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
-/* 002EC 80A5592C 44815000 */ mtc1 $at, $f10 ## $f10 = 100.00
-/* 002F0 80A55930 46083001 */ sub.s $f0, $f6, $f8
-/* 002F4 80A55934 3C0280A5 */ lui $v0, %hi(D_80A55F40) ## $v0 = 80A50000
-/* 002F8 80A55938 24425F40 */ addiu $v0, $v0, %lo(D_80A55F40) ## $v0 = 80A55F40
-/* 002FC 80A5593C 46000005 */ abs.s $f0, $f0
-/* 00300 80A55940 460A003C */ c.lt.s $f0, $f10
-/* 00304 80A55944 00000000 */ nop
-/* 00308 80A55948 45020016 */ bc1fl .L80A559A4
-/* 0030C 80A5594C 8FBF001C */ lw $ra, 0x001C($sp)
-/* 00310 80A55950 844B0000 */ lh $t3, 0x0000($v0) ## 80A55F40
-/* 00314 80A55954 240C0001 */ addiu $t4, $zero, 0x0001 ## $t4 = 00000001
-/* 00318 80A55958 2405702D */ addiu $a1, $zero, 0x702D ## $a1 = 0000702D
-/* 0031C 80A5595C 15600010 */ bne $t3, $zero, .L80A559A0
-/* 00320 80A55960 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
-/* 00324 80A55964 A44C0000 */ sh $t4, 0x0000($v0) ## 80A55F40
-/* 00328 80A55968 0C042DA0 */ jal func_8010B680
-/* 0032C 80A5596C 8FA4002C */ lw $a0, 0x002C($sp)
-/* 00330 80A55970 0C01E221 */ jal func_80078884
-/* 00334 80A55974 2404482C */ addiu $a0, $zero, 0x482C ## $a0 = 0000482C
-/* 00338 80A55978 3C0480A5 */ lui $a0, %hi(D_80A55FC4) ## $a0 = 80A50000
-/* 0033C 80A5597C 0C00084C */ jal osSyncPrintf
-
-/* 00340 80A55980 24845FC4 */ addiu $a0, $a0, %lo(D_80A55FC4) ## $a0 = 80A55FC4
-/* 00344 80A55984 8FA4002C */ lw $a0, 0x002C($sp)
-/* 00348 80A55988 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
-/* 0034C 80A5598C 0C00B7D5 */ jal func_8002DF54
-/* 00350 80A55990 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
-/* 00354 80A55994 3C0D80A5 */ lui $t5, %hi(func_80A55B2C) ## $t5 = 80A50000
-/* 00358 80A55998 25AD5B2C */ addiu $t5, $t5, %lo(func_80A55B2C) ## $t5 = 80A55B2C
-/* 0035C 80A5599C AE0D025C */ sw $t5, 0x025C($s0) ## 0000025C
-.L80A559A0:
-/* 00360 80A559A0 8FBF001C */ lw $ra, 0x001C($sp)
-.L80A559A4:
-/* 00364 80A559A4 8FB00018 */ lw $s0, 0x0018($sp)
-/* 00368 80A559A8 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
-/* 0036C 80A559AC 03E00008 */ jr $ra
-/* 00370 80A559B0 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A559B4.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A559B4.s
deleted file mode 100644
index 9ab74749b..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A559B4.s
+++ /dev/null
@@ -1,106 +0,0 @@
-.rdata
-glabel D_80A55FEC
- .asciz "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n"
- .balign 4
-
-.text
-glabel func_80A559B4
-/* 00374 80A559B4 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
-/* 00378 80A559B8 AFBF001C */ sw $ra, 0x001C($sp)
-/* 0037C 80A559BC AFB00018 */ sw $s0, 0x0018($sp)
-/* 00380 80A559C0 AFA5002C */ sw $a1, 0x002C($sp)
-/* 00384 80A559C4 8CA21C44 */ lw $v0, 0x1C44($a1) ## 00001C44
-/* 00388 80A559C8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 0038C 80A559CC 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
-/* 00390 80A559D0 0C02927F */ jal SkelAnime_FrameUpdateMatrix
-
-/* 00394 80A559D4 AFA20024 */ sw $v0, 0x0024($sp)
-/* 00398 80A559D8 8FA20024 */ lw $v0, 0x0024($sp)
-/* 0039C 80A559DC 3C01C33E */ lui $at, 0xC33E ## $at = C33E0000
-/* 003A0 80A559E0 44812000 */ mtc1 $at, $f4 ## $f4 = -190.00
-/* 003A4 80A559E4 C4420024 */ lwc1 $f2, 0x0024($v0) ## 00000024
-/* 003A8 80A559E8 3C01C3BE */ lui $at, 0xC3BE ## $at = C3BE0000
-/* 003AC 80A559EC 4604103C */ c.lt.s $f2, $f4
-/* 003B0 80A559F0 00000000 */ nop
-/* 003B4 80A559F4 45020049 */ bc1fl .L80A55B1C
-/* 003B8 80A559F8 8FBF001C */ lw $ra, 0x001C($sp)
-/* 003BC 80A559FC 44813000 */ mtc1 $at, $f6 ## $f6 = -380.00
-/* 003C0 80A55A00 00000000 */ nop
-/* 003C4 80A55A04 4602303C */ c.lt.s $f6, $f2
-/* 003C8 80A55A08 00000000 */ nop
-/* 003CC 80A55A0C 45020043 */ bc1fl .L80A55B1C
-/* 003D0 80A55A10 8FBF001C */ lw $ra, 0x001C($sp)
-/* 003D4 80A55A14 C4480028 */ lwc1 $f8, 0x0028($v0) ## 00000028
-/* 003D8 80A55A18 C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028
-/* 003DC 80A55A1C 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
-/* 003E0 80A55A20 44818000 */ mtc1 $at, $f16 ## $f16 = 100.00
-/* 003E4 80A55A24 460A4001 */ sub.s $f0, $f8, $f10
-/* 003E8 80A55A28 3C01447F */ lui $at, 0x447F ## $at = 447F0000
-/* 003EC 80A55A2C 46000005 */ abs.s $f0, $f0
-/* 003F0 80A55A30 4610003C */ c.lt.s $f0, $f16
-/* 003F4 80A55A34 00000000 */ nop
-/* 003F8 80A55A38 45020038 */ bc1fl .L80A55B1C
-/* 003FC 80A55A3C 8FBF001C */ lw $ra, 0x001C($sp)
-/* 00400 80A55A40 C440002C */ lwc1 $f0, 0x002C($v0) ## 0000002C
-/* 00404 80A55A44 44819000 */ mtc1 $at, $f18 ## $f18 = 1020.00
-/* 00408 80A55A48 3C01442F */ lui $at, 0x442F ## $at = 442F0000
-/* 0040C 80A55A4C 4612003C */ c.lt.s $f0, $f18
-/* 00410 80A55A50 00000000 */ nop
-/* 00414 80A55A54 45020031 */ bc1fl .L80A55B1C
-/* 00418 80A55A58 8FBF001C */ lw $ra, 0x001C($sp)
-/* 0041C 80A55A5C 44812000 */ mtc1 $at, $f4 ## $f4 = 700.00
-/* 00420 80A55A60 3C0380A5 */ lui $v1, %hi(D_80A55F40) ## $v1 = 80A50000
-/* 00424 80A55A64 24635F40 */ addiu $v1, $v1, %lo(D_80A55F40) ## $v1 = 80A55F40
-/* 00428 80A55A68 4600203C */ c.lt.s $f4, $f0
-/* 0042C 80A55A6C 00000000 */ nop
-/* 00430 80A55A70 4502002A */ bc1fl .L80A55B1C
-/* 00434 80A55A74 8FBF001C */ lw $ra, 0x001C($sp)
-/* 00438 80A55A78 846F0000 */ lh $t7, 0x0000($v1) ## 80A55F40
-/* 0043C 80A55A7C 55E00027 */ bnel $t7, $zero, .L80A55B1C
-/* 00440 80A55A80 8FBF001C */ lw $ra, 0x001C($sp)
-/* 00444 80A55A84 86180278 */ lh $t8, 0x0278($s0) ## 00000278
-/* 00448 80A55A88 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
-/* 0044C 80A55A8C 3C01C391 */ lui $at, 0xC391 ## $at = C3910000
-/* 00450 80A55A90 5458000B */ bnel $v0, $t8, .L80A55AC0
-/* 00454 80A55A94 44814000 */ mtc1 $at, $f8 ## $f8 = -290.00
-/* 00458 80A55A98 3C01C391 */ lui $at, 0xC391 ## $at = C3910000
-/* 0045C 80A55A9C 44813000 */ mtc1 $at, $f6 ## $f6 = -290.00
-/* 00460 80A55AA0 00000000 */ nop
-/* 00464 80A55AA4 4606103C */ c.lt.s $f2, $f6
-/* 00468 80A55AA8 00000000 */ nop
-/* 0046C 80A55AAC 4502000A */ bc1fl .L80A55AD8
-/* 00470 80A55AB0 A4620000 */ sh $v0, 0x0000($v1) ## 80A55F40
-/* 00474 80A55AB4 10000019 */ beq $zero, $zero, .L80A55B1C
-/* 00478 80A55AB8 8FBF001C */ lw $ra, 0x001C($sp)
-/* 0047C 80A55ABC 44814000 */ mtc1 $at, $f8 ## $f8 = -290.00
-.L80A55AC0:
-/* 00480 80A55AC0 00000000 */ nop
-/* 00484 80A55AC4 4602403C */ c.lt.s $f8, $f2
-/* 00488 80A55AC8 00000000 */ nop
-/* 0048C 80A55ACC 45030013 */ bc1tl .L80A55B1C
-/* 00490 80A55AD0 8FBF001C */ lw $ra, 0x001C($sp)
-/* 00494 80A55AD4 A4620000 */ sh $v0, 0x0000($v1) ## 80A55F40
-.L80A55AD8:
-/* 00498 80A55AD8 8FA4002C */ lw $a0, 0x002C($sp)
-/* 0049C 80A55ADC 2405702D */ addiu $a1, $zero, 0x702D ## $a1 = 0000702D
-/* 004A0 80A55AE0 0C042DA0 */ jal func_8010B680
-/* 004A4 80A55AE4 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
-/* 004A8 80A55AE8 0C01E221 */ jal func_80078884
-/* 004AC 80A55AEC 2404482C */ addiu $a0, $zero, 0x482C ## $a0 = 0000482C
-/* 004B0 80A55AF0 3C0480A5 */ lui $a0, %hi(D_80A55FEC) ## $a0 = 80A50000
-/* 004B4 80A55AF4 0C00084C */ jal osSyncPrintf
-
-/* 004B8 80A55AF8 24845FEC */ addiu $a0, $a0, %lo(D_80A55FEC) ## $a0 = 80A55FEC
-/* 004BC 80A55AFC 8FA4002C */ lw $a0, 0x002C($sp)
-/* 004C0 80A55B00 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
-/* 004C4 80A55B04 0C00B7D5 */ jal func_8002DF54
-/* 004C8 80A55B08 24060001 */ addiu $a2, $zero, 0x0001 ## $a2 = 00000001
-/* 004CC 80A55B0C 3C1980A5 */ lui $t9, %hi(func_80A55B2C) ## $t9 = 80A50000
-/* 004D0 80A55B10 27395B2C */ addiu $t9, $t9, %lo(func_80A55B2C) ## $t9 = 80A55B2C
-/* 004D4 80A55B14 AE19025C */ sw $t9, 0x025C($s0) ## 0000025C
-/* 004D8 80A55B18 8FBF001C */ lw $ra, 0x001C($sp)
-.L80A55B1C:
-/* 004DC 80A55B1C 8FB00018 */ lw $s0, 0x0018($sp)
-/* 004E0 80A55B20 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
-/* 004E4 80A55B24 03E00008 */ jr $ra
-/* 004E8 80A55B28 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55B2C.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55B2C.s
deleted file mode 100644
index 80e56da99..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55B2C.s
+++ /dev/null
@@ -1,45 +0,0 @@
-glabel func_80A55B2C
-/* 004EC 80A55B2C 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
-/* 004F0 80A55B30 AFA40028 */ sw $a0, 0x0028($sp)
-/* 004F4 80A55B34 AFBF0024 */ sw $ra, 0x0024($sp)
-/* 004F8 80A55B38 3C040600 */ lui $a0, 0x0600 ## $a0 = 06000000
-/* 004FC 80A55B3C AFA5002C */ sw $a1, 0x002C($sp)
-/* 00500 80A55B40 0C028800 */ jal SkelAnime_GetFrameCount
-
-/* 00504 80A55B44 24845880 */ addiu $a0, $a0, 0x5880 ## $a0 = 06005880
-/* 00508 80A55B48 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00
-/* 0050C 80A55B4C 3C01C120 */ lui $at, 0xC120 ## $at = C1200000
-/* 00510 80A55B50 8FA30028 */ lw $v1, 0x0028($sp)
-/* 00514 80A55B54 468021A0 */ cvt.s.w $f6, $f4
-/* 00518 80A55B58 44819000 */ mtc1 $at, $f18 ## $f18 = -10.00
-/* 0051C 80A55B5C 3C050600 */ lui $a1, 0x0600 ## $a1 = 06000000
-/* 00520 80A55B60 24A55880 */ addiu $a1, $a1, 0x5880 ## $a1 = 06005880
-/* 00524 80A55B64 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
-/* 00528 80A55B68 24070000 */ addiu $a3, $zero, 0x0000 ## $a3 = 00000000
-/* 0052C 80A55B6C 4600320D */ trunc.w.s $f8, $f6
-/* 00530 80A55B70 AFA00014 */ sw $zero, 0x0014($sp)
-/* 00534 80A55B74 2464014C */ addiu $a0, $v1, 0x014C ## $a0 = 0000014C
-/* 00538 80A55B78 E7B20018 */ swc1 $f18, 0x0018($sp)
-/* 0053C 80A55B7C 440F4000 */ mfc1 $t7, $f8
-/* 00540 80A55B80 00000000 */ nop
-/* 00544 80A55B84 000FC400 */ sll $t8, $t7, 16
-/* 00548 80A55B88 0018CC03 */ sra $t9, $t8, 16
-/* 0054C 80A55B8C 44995000 */ mtc1 $t9, $f10 ## $f10 = 0.00
-/* 00550 80A55B90 00000000 */ nop
-/* 00554 80A55B94 46805420 */ cvt.s.w $f16, $f10
-/* 00558 80A55B98 0C029468 */ jal SkelAnime_ChangeAnim
-
-/* 0055C 80A55B9C E7B00010 */ swc1 $f16, 0x0010($sp)
-/* 00560 80A55BA0 8FA30028 */ lw $v1, 0x0028($sp)
-/* 00564 80A55BA4 3C014020 */ lui $at, 0x4020 ## $at = 40200000
-/* 00568 80A55BA8 44812000 */ mtc1 $at, $f4 ## $f4 = 2.50
-/* 0056C 80A55BAC 3C0980A5 */ lui $t1, %hi(func_80A55BD4) ## $t1 = 80A50000
-/* 00570 80A55BB0 24080014 */ addiu $t0, $zero, 0x0014 ## $t0 = 00000014
-/* 00574 80A55BB4 25295BD4 */ addiu $t1, $t1, %lo(func_80A55BD4) ## $t1 = 80A55BD4
-/* 00578 80A55BB8 A4680272 */ sh $t0, 0x0272($v1) ## 00000272
-/* 0057C 80A55BBC AC69025C */ sw $t1, 0x025C($v1) ## 0000025C
-/* 00580 80A55BC0 E4640068 */ swc1 $f4, 0x0068($v1) ## 00000068
-/* 00584 80A55BC4 8FBF0024 */ lw $ra, 0x0024($sp)
-/* 00588 80A55BC8 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
-/* 0058C 80A55BCC 03E00008 */ jr $ra
-/* 00590 80A55BD0 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55BD4.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55BD4.s
deleted file mode 100644
index a4b7c3a2b..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55BD4.s
+++ /dev/null
@@ -1,46 +0,0 @@
-glabel func_80A55BD4
-/* 00594 80A55BD4 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
-/* 00598 80A55BD8 AFB00020 */ sw $s0, 0x0020($sp)
-/* 0059C 80A55BDC 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 005A0 80A55BE0 AFBF0024 */ sw $ra, 0x0024($sp)
-/* 005A4 80A55BE4 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
-/* 005A8 80A55BE8 AFA50034 */ sw $a1, 0x0034($sp)
-/* 005AC 80A55BEC 0C02927F */ jal SkelAnime_FrameUpdateMatrix
-
-/* 005B0 80A55BF0 AFA4002C */ sw $a0, 0x002C($sp)
-/* 005B4 80A55BF4 8FA4002C */ lw $a0, 0x002C($sp)
-/* 005B8 80A55BF8 0C0295B2 */ jal func_800A56C8
-/* 005BC 80A55BFC 3C053F80 */ lui $a1, 0x3F80 ## $a1 = 3F800000
-/* 005C0 80A55C00 14400004 */ bne $v0, $zero, .L80A55C14
-/* 005C4 80A55C04 8FA4002C */ lw $a0, 0x002C($sp)
-/* 005C8 80A55C08 0C0295B2 */ jal func_800A56C8
-/* 005CC 80A55C0C 3C054188 */ lui $a1, 0x4188 ## $a1 = 41880000
-/* 005D0 80A55C10 10400003 */ beq $v0, $zero, .L80A55C20
-.L80A55C14:
-/* 005D4 80A55C14 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 005D8 80A55C18 0C00BE0A */ jal Audio_PlayActorSound2
-
-/* 005DC 80A55C1C 240528F0 */ addiu $a1, $zero, 0x28F0 ## $a1 = 000028F0
-.L80A55C20:
-/* 005E0 80A55C20 860E0272 */ lh $t6, 0x0272($s0) ## 00000272
-/* 005E4 80A55C24 26040032 */ addiu $a0, $s0, 0x0032 ## $a0 = 00000032
-/* 005E8 80A55C28 24060005 */ addiu $a2, $zero, 0x0005 ## $a2 = 00000005
-/* 005EC 80A55C2C 15C00007 */ bne $t6, $zero, .L80A55C4C
-/* 005F0 80A55C30 24070BB8 */ addiu $a3, $zero, 0x0BB8 ## $a3 = 00000BB8
-/* 005F4 80A55C34 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
-/* 005F8 80A55C38 3C0F80A5 */ lui $t7, %hi(func_80A55C6C) ## $t7 = 80A50000
-/* 005FC 80A55C3C 25EF5C6C */ addiu $t7, $t7, %lo(func_80A55C6C) ## $t7 = 80A55C6C
-/* 00600 80A55C40 AE0F025C */ sw $t7, 0x025C($s0) ## 0000025C
-/* 00604 80A55C44 10000004 */ beq $zero, $zero, .L80A55C58
-/* 00608 80A55C48 E6040068 */ swc1 $f4, 0x0068($s0) ## 00000068
-.L80A55C4C:
-/* 0060C 80A55C4C 8605008A */ lh $a1, 0x008A($s0) ## 0000008A
-/* 00610 80A55C50 0C01E1A7 */ jal Math_SmoothScaleMaxMinS
-
-/* 00614 80A55C54 AFA00010 */ sw $zero, 0x0010($sp)
-.L80A55C58:
-/* 00618 80A55C58 8FBF0024 */ lw $ra, 0x0024($sp)
-/* 0061C 80A55C5C 8FB00020 */ lw $s0, 0x0020($sp)
-/* 00620 80A55C60 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
-/* 00624 80A55C64 03E00008 */ jr $ra
-/* 00628 80A55C68 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55C6C.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55C6C.s
deleted file mode 100644
index d4ad6bbfd..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55C6C.s
+++ /dev/null
@@ -1,40 +0,0 @@
-glabel func_80A55C6C
-/* 0062C 80A55C6C 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
-/* 00630 80A55C70 AFA40028 */ sw $a0, 0x0028($sp)
-/* 00634 80A55C74 AFBF0024 */ sw $ra, 0x0024($sp)
-/* 00638 80A55C78 3C040600 */ lui $a0, 0x0600 ## $a0 = 06000000
-/* 0063C 80A55C7C AFA5002C */ sw $a1, 0x002C($sp)
-/* 00640 80A55C80 0C028800 */ jal SkelAnime_GetFrameCount
-
-/* 00644 80A55C84 24845C30 */ addiu $a0, $a0, 0x5C30 ## $a0 = 06005C30
-/* 00648 80A55C88 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00
-/* 0064C 80A55C8C 3C01C120 */ lui $at, 0xC120 ## $at = C1200000
-/* 00650 80A55C90 44819000 */ mtc1 $at, $f18 ## $f18 = -10.00
-/* 00654 80A55C94 468021A0 */ cvt.s.w $f6, $f4
-/* 00658 80A55C98 8FA40028 */ lw $a0, 0x0028($sp)
-/* 0065C 80A55C9C 3C050600 */ lui $a1, 0x0600 ## $a1 = 06000000
-/* 00660 80A55CA0 24A55C30 */ addiu $a1, $a1, 0x5C30 ## $a1 = 06005C30
-/* 00664 80A55CA4 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
-/* 00668 80A55CA8 24070000 */ addiu $a3, $zero, 0x0000 ## $a3 = 00000000
-/* 0066C 80A55CAC 4600320D */ trunc.w.s $f8, $f6
-/* 00670 80A55CB0 AFA00014 */ sw $zero, 0x0014($sp)
-/* 00674 80A55CB4 E7B20018 */ swc1 $f18, 0x0018($sp)
-/* 00678 80A55CB8 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
-/* 0067C 80A55CBC 440F4000 */ mfc1 $t7, $f8
-/* 00680 80A55CC0 00000000 */ nop
-/* 00684 80A55CC4 000FC400 */ sll $t8, $t7, 16
-/* 00688 80A55CC8 0018CC03 */ sra $t9, $t8, 16
-/* 0068C 80A55CCC 44995000 */ mtc1 $t9, $f10 ## $f10 = 0.00
-/* 00690 80A55CD0 00000000 */ nop
-/* 00694 80A55CD4 46805420 */ cvt.s.w $f16, $f10
-/* 00698 80A55CD8 0C029468 */ jal SkelAnime_ChangeAnim
-
-/* 0069C 80A55CDC E7B00010 */ swc1 $f16, 0x0010($sp)
-/* 006A0 80A55CE0 8FA90028 */ lw $t1, 0x0028($sp)
-/* 006A4 80A55CE4 3C0880A5 */ lui $t0, %hi(func_80A55D00) ## $t0 = 80A50000
-/* 006A8 80A55CE8 25085D00 */ addiu $t0, $t0, %lo(func_80A55D00) ## $t0 = 80A55D00
-/* 006AC 80A55CEC AD28025C */ sw $t0, 0x025C($t1) ## 0000025C
-/* 006B0 80A55CF0 8FBF0024 */ lw $ra, 0x0024($sp)
-/* 006B4 80A55CF4 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
-/* 006B8 80A55CF8 03E00008 */ jr $ra
-/* 006BC 80A55CFC 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55D00.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55D00.s
deleted file mode 100644
index d34618435..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55D00.s
+++ /dev/null
@@ -1,47 +0,0 @@
-glabel func_80A55D00
-/* 006C0 80A55D00 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
-/* 006C4 80A55D04 AFBF001C */ sw $ra, 0x001C($sp)
-/* 006C8 80A55D08 AFB00018 */ sw $s0, 0x0018($sp)
-/* 006CC 80A55D0C AFA40020 */ sw $a0, 0x0020($sp)
-/* 006D0 80A55D10 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
-/* 006D4 80A55D14 0C02927F */ jal SkelAnime_FrameUpdateMatrix
-
-/* 006D8 80A55D18 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
-/* 006DC 80A55D1C 0C042F6F */ jal func_8010BDBC
-/* 006E0 80A55D20 260420D8 */ addiu $a0, $s0, 0x20D8 ## $a0 = 000020D8
-/* 006E4 80A55D24 24010005 */ addiu $at, $zero, 0x0005 ## $at = 00000005
-/* 006E8 80A55D28 5441001C */ bnel $v0, $at, .L80A55D9C
-/* 006EC 80A55D2C 8FBF001C */ lw $ra, 0x001C($sp)
-/* 006F0 80A55D30 0C041AF2 */ jal func_80106BC8
-/* 006F4 80A55D34 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 006F8 80A55D38 10400017 */ beq $v0, $zero, .L80A55D98
-/* 006FC 80A55D3C 8FA40020 */ lw $a0, 0x0020($sp)
-/* 00700 80A55D40 908E0276 */ lbu $t6, 0x0276($a0) ## 00000276
-/* 00704 80A55D44 3C028016 */ lui $v0, %hi(gSaveContext)
-/* 00708 80A55D48 2442E660 */ addiu $v0, %lo(gSaveContext)
-/* 0070C 80A55D4C 15C00012 */ bne $t6, $zero, .L80A55D98
-/* 00710 80A55D50 2403002E */ addiu $v1, $zero, 0x002E ## $v1 = 0000002E
-/* 00714 80A55D54 944F0EDC */ lhu $t7, 0x0EDC($v0) ## 8015F53C
-/* 00718 80A55D58 3C010001 */ lui $at, 0x0001 ## $at = 00010000
-/* 0071C 80A55D5C 00300821 */ addu $at, $at, $s0
-/* 00720 80A55D60 35F84000 */ ori $t8, $t7, 0x4000 ## $t8 = 00004000
-/* 00724 80A55D64 A4580EDC */ sh $t8, 0x0EDC($v0) ## 8015F53C
-/* 00728 80A55D68 2419047E */ addiu $t9, $zero, 0x047E ## $t9 = 0000047E
-/* 0072C 80A55D6C A4391E1A */ sh $t9, 0x1E1A($at) ## 00011E1A
-/* 00730 80A55D70 3C010001 */ lui $at, 0x0001 ## $at = 00010000
-/* 00734 80A55D74 00300821 */ addu $at, $at, $s0
-/* 00738 80A55D78 24080014 */ addiu $t0, $zero, 0x0014 ## $t0 = 00000014
-/* 0073C 80A55D7C A0281E15 */ sb $t0, 0x1E15($at) ## 00011E15
-/* 00740 80A55D80 24090001 */ addiu $t1, $zero, 0x0001 ## $t1 = 00000001
-/* 00744 80A55D84 3C010001 */ lui $at, 0x0001 ## $at = 00010000
-/* 00748 80A55D88 A0890276 */ sb $t1, 0x0276($a0) ## 00000276
-/* 0074C 80A55D8C 00300821 */ addu $at, $at, $s0
-/* 00750 80A55D90 A0231E5E */ sb $v1, 0x1E5E($at) ## 00011E5E
-/* 00754 80A55D94 A043141D */ sb $v1, 0x141D($v0) ## 8015FA7D
-.L80A55D98:
-/* 00758 80A55D98 8FBF001C */ lw $ra, 0x001C($sp)
-.L80A55D9C:
-/* 0075C 80A55D9C 8FB00018 */ lw $s0, 0x0018($sp)
-/* 00760 80A55DA0 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
-/* 00764 80A55DA4 03E00008 */ jr $ra
-/* 00768 80A55DA8 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55E88.s b/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55E88.s
deleted file mode 100644
index 7c08a88db..000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55E88.s
+++ /dev/null
@@ -1,28 +0,0 @@
-glabel func_80A55E88
-/* 00848 80A55E88 24010009 */ addiu $at, $zero, 0x0009 ## $at = 00000009
-/* 0084C 80A55E8C AFA40000 */ sw $a0, 0x0000($sp)
-/* 00850 80A55E90 AFA60008 */ sw $a2, 0x0008($sp)
-/* 00854 80A55E94 14A10007 */ bne $a1, $at, .L80A55EB4
-/* 00858 80A55E98 AFA7000C */ sw $a3, 0x000C($sp)
-/* 0085C 80A55E9C 8FA20014 */ lw $v0, 0x0014($sp)
-/* 00860 80A55EA0 8FA30010 */ lw $v1, 0x0010($sp)
-/* 00864 80A55EA4 844F026E */ lh $t7, 0x026E($v0) ## 0000026E
-/* 00868 80A55EA8 846E0000 */ lh $t6, 0x0000($v1) ## 00000000
-/* 0086C 80A55EAC 01CFC021 */ addu $t8, $t6, $t7
-/* 00870 80A55EB0 A4780000 */ sh $t8, 0x0000($v1) ## 00000000
-.L80A55EB4:
-/* 00874 80A55EB4 24010010 */ addiu $at, $zero, 0x0010 ## $at = 00000010
-/* 00878 80A55EB8 8FA20014 */ lw $v0, 0x0014($sp)
-/* 0087C 80A55EBC 14A10009 */ bne $a1, $at, .L80A55EE4
-/* 00880 80A55EC0 8FA30010 */ lw $v1, 0x0010($sp)
-/* 00884 80A55EC4 84790000 */ lh $t9, 0x0000($v1) ## 00000000
-/* 00888 80A55EC8 84480262 */ lh $t0, 0x0262($v0) ## 00000262
-/* 0088C 80A55ECC 846A0004 */ lh $t2, 0x0004($v1) ## 00000004
-/* 00890 80A55ED0 03284821 */ addu $t1, $t9, $t0
-/* 00894 80A55ED4 A4690000 */ sh $t1, 0x0000($v1) ## 00000000
-/* 00898 80A55ED8 844B0264 */ lh $t3, 0x0264($v0) ## 00000264
-/* 0089C 80A55EDC 014B6021 */ addu $t4, $t2, $t3
-/* 008A0 80A55EE0 A46C0004 */ sh $t4, 0x0004($v1) ## 00000004
-.L80A55EE4:
-/* 008A4 80A55EE4 03E00008 */ jr $ra
-/* 008A8 80A55EE8 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
diff --git a/data/overlays/actors/z_en_heishi3.data.s b/data/overlays/actors/z_en_heishi3.data.s
deleted file mode 100644
index b529c71e0..000000000
--- a/data/overlays/actors/z_en_heishi3.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 purposee registers
-
-.section .data
-
-glabel D_80A55F40
- .word 0x00000000
-glabel En_Heishi3_InitVars
- .word 0x01420400, 0x00000000, 0x00970000, 0x000002C8
-.word EnHeishi3_Init
-.word EnHeishi3_Destroy
-.word EnHeishi3_Update
-.word EnHeishi3_Draw
-glabel D_80A55F64
- .word 0x0A000039, 0x20010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x000F0046, 0x00000000, 0x00000000
-
diff --git a/spec b/spec
index 76a4206e4..b80e10615 100644
--- a/spec
+++ b/spec
@@ -2656,8 +2656,7 @@ endseg
beginseg
name "ovl_En_Heishi3"
include "build/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.o"
- include "build/data/overlays/actors/z_en_heishi3.data.o"
- include "build/data/overlays/actors/z_en_heishi3.reloc.o"
+ include "build/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3_reloc.o"
endseg
beginseg
diff --git a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
index 042e95216..17381fdc6 100644
--- a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
+++ b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
@@ -5,6 +5,7 @@
*/
#include "z_en_heishi3.h"
+#include <vt.h>
#define FLAGS 0x00000000
@@ -15,7 +16,20 @@ void EnHeishi3_Destroy(Actor* thisx, GlobalContext* globalCtx);
void EnHeishi3_Update(Actor* thisx, GlobalContext* globalCtx);
void EnHeishi3_Draw(Actor* thisx, GlobalContext* globalCtx);
-/*
+void EnHeishi3_SetupGuardType(EnHeishi3* this, GlobalContext* globalCtx);
+void EnHeishi3_StandSentinelInGrounds(EnHeishi3* this, GlobalContext* globalCtx);
+void EnHeishi3_StandSentinelInCastle(EnHeishi3* this, GlobalContext* globalCtx);
+void EnHeishi3_CatchStart(EnHeishi3* this, GlobalContext* globalCtx);
+void EnHeishi3_ResetAnimationToIdle(EnHeishi3* this, GlobalContext* globalCtx);
+void func_80A55D00(EnHeishi3* this, GlobalContext* globalCtx);
+void func_80A55BD4(EnHeishi3* this, GlobalContext* globalCtx);
+
+extern SkeletonHeader D_0600BAC8;
+extern AnimationHeader D_06005C30; // EnHeishi3_IdleAnimation
+extern AnimationHeader D_06005880; // EnHeishi3_WalkAnimation
+
+static s16 sPlayerCaught = 0;
+
const ActorInit En_Heishi3_InitVars = {
ACTOR_EN_HEISHI3,
ACTORTYPE_NPC,
@@ -27,27 +41,196 @@ const ActorInit En_Heishi3_InitVars = {
(ActorFunc)EnHeishi3_Update,
(ActorFunc)EnHeishi3_Draw,
};
-*/
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Init.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Destroy.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A557A0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55850.s")
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A559B4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55B2C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55BD4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55C6C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55D00.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Update.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/func_80A55E88.s")
+static ColliderCylinderInit cylinderInit = {
+ { COLTYPE_UNK10, 0x00, 0x00, 0x39, 0x20, COLSHAPE_CYLINDER },
+ { 0x00, { 0x00000000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, 0x00, 0x00, 0x01 },
+ { 15, 70, 0, { 0, 0, 0 } },
+};
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Heishi3/EnHeishi3_Draw.s")
+void EnHeishi3_Init(Actor* thisx, GlobalContext* globalCtx) {
+ EnHeishi3* this = THIS;
+
+ sPlayerCaught = 0;
+ if (this->actor.params <= 0) {
+ this->unk_278 = 0;
+ } else {
+ this->unk_278 = 1;
+ if (this->actor.posRot.pos.x < -290.0f) {
+ this->unk_278 = 2;
+ }
+ }
+ Actor_SetScale(&this->actor, 0.01f);
+ ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFunc_Circle, 30.0f);
+ SkelAnime_Init(globalCtx, &this->skelAnime, &D_0600BAC8, &D_06005C30, this->limbDrawTable,
+ this->transitionDrawTable, 17);
+ this->actor.colChkInfo.mass = -1;
+ this->actor.unk_1F = 6;
+ Collider_InitCylinder(globalCtx, &this->collider);
+ Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &cylinderInit);
+ // "Castle Gate Soldier - Power Up"
+ osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 城門兵パワーアップ ☆☆☆☆☆ \n" VT_RST);
+
+ this->actor.gravity = -3.0f;
+ this->actor.posRot2.pos = this->actor.posRot.pos;
+ this->actionFunc = EnHeishi3_SetupGuardType;
+}
+
+void EnHeishi3_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+ EnHeishi3* this = THIS;
+ Collider_DestroyCylinder(globalCtx, &this->collider);
+}
+
+void EnHeishi3_SetupGuardType(EnHeishi3* this, GlobalContext* globalCtx) {
+ f32 frames = SkelAnime_GetFrameCount(&D_06005C30.genericHeader);
+ SkelAnime_ChangeAnim(&this->skelAnime, &D_06005C30, 1.0f, 0.0f, (s16)(f32)frames, 0, -10.0f);
+ if (this->unk_278 == 0) {
+ this->actionFunc = EnHeishi3_StandSentinelInGrounds;
+ } else {
+ this->actionFunc = EnHeishi3_StandSentinelInCastle;
+ }
+}
+
+/**
+ * Handles the guards standing on Hyrule Castle Grounds.
+ **/
+void EnHeishi3_StandSentinelInGrounds(EnHeishi3* this, GlobalContext* globalCtx) {
+ Player* player;
+ s16 yawDiff;
+ s16 yawDiffNew;
+ f32 sightRange;
+
+ player = PLAYER;
+ SkelAnime_FrameUpdateMatrix(&this->skelAnime);
+ yawDiff = this->actor.rotTowardsLinkY - this->actor.shape.rot.y;
+ yawDiffNew = ABS(yawDiff);
+ if (yawDiffNew < 0x4300) {
+ if (gSaveContext.nightFlag == 0) {
+ sightRange = 250.0f;
+ } else {
+ sightRange = 200.0f;
+ }
+ } else {
+ if (gSaveContext.nightFlag == 0) {
+ sightRange = 150.0f;
+ } else {
+ sightRange = 100.0f;
+ }
+ }
+ if ((this->actor.xzDistanceFromLink < sightRange) &&
+ (fabsf(player->actor.posRot.pos.y - this->actor.posRot.pos.y) < 100.0f) && (sPlayerCaught == 0)) {
+ sPlayerCaught = 1;
+ func_8010B680(globalCtx, 0x702D, &this->actor); // "Hey you! Stop! You, kid, over there!"
+ func_80078884(NA_SE_SY_FOUND);
+ osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n" VT_RST); // "Discovered!"
+ func_8002DF54(globalCtx, &this->actor, 1);
+ this->actionFunc = EnHeishi3_CatchStart;
+ }
+}
+
+/**
+ * Handles the guards standing in front of Hyrule Castle.
+ **/
+void EnHeishi3_StandSentinelInCastle(EnHeishi3* this, GlobalContext* globalCtx) {
+ Player* player = PLAYER;
+
+ SkelAnime_FrameUpdateMatrix(&this->skelAnime);
+ if ((player->actor.posRot.pos.x < -190.0f) && (player->actor.posRot.pos.x > -380.0f) &&
+ (fabsf(player->actor.posRot.pos.y - this->actor.posRot.pos.y) < 100.0f) &&
+ (player->actor.posRot.pos.z < 1020.0f) && (player->actor.posRot.pos.z > 700.0f) && (sPlayerCaught == 0)) {
+ if (this->unk_278 == 1) {
+ if ((player->actor.posRot.pos.x < -290.0f)) {
+ return;
+ }
+ } else {
+ if (player->actor.posRot.pos.x > -290.0f) {
+ return;
+ }
+ }
+ sPlayerCaught = 1;
+ func_8010B680(globalCtx, 0x702D, &this->actor); // "Hey you! Stop! You, kid, over there!"
+ func_80078884(NA_SE_SY_FOUND);
+ osSyncPrintf(VT_FGCOL(GREEN) "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n" VT_RST); // "Discovered!"
+ func_8002DF54(globalCtx, &this->actor, 1);
+ this->actionFunc = EnHeishi3_CatchStart;
+ }
+}
+
+void EnHeishi3_CatchStart(EnHeishi3* this, GlobalContext* globalCtx) {
+ f32 frames = SkelAnime_GetFrameCount(&D_06005880.genericHeader);
+ SkelAnime_ChangeAnim(&this->skelAnime, &D_06005880, 1.0f, 0.0f, (s16)(f32)frames, 0, -10.0f);
+ this->caughtTimer = 20;
+ this->actionFunc = func_80A55BD4;
+ this->actor.speedXZ = 2.5f;
+}
+
+void func_80A55BD4(EnHeishi3* this, GlobalContext* globalCtx) {
+
+ SkelAnime_FrameUpdateMatrix(&this->skelAnime);
+ if ((func_800A56C8(&this->skelAnime, 1.0f) != 0) || (func_800A56C8(&this->skelAnime, 17.0f) != 0)) {
+ Audio_PlayActorSound2(&this->actor, NA_SE_EV_KNIGHT_WALK);
+ }
+ if (this->caughtTimer == 0) {
+ this->actionFunc = EnHeishi3_ResetAnimationToIdle;
+ this->actor.speedXZ = 0.0f;
+ } else {
+ Math_SmoothScaleMaxMinS(&this->actor.posRot.rot.y, this->actor.rotTowardsLinkY, 5, 3000, 0);
+ }
+}
+
+void EnHeishi3_ResetAnimationToIdle(EnHeishi3* this, GlobalContext* globalCtx) {
+ f32 frames = SkelAnime_GetFrameCount(&D_06005C30.genericHeader);
+ SkelAnime_ChangeAnim(&this->skelAnime, &D_06005C30, 1.0f, 0.0f, (s16)(f32)frames, 0, -10.0f);
+ this->actionFunc = func_80A55D00;
+}
+
+// This function initiates the respawn after the player gets caught.
+void func_80A55D00(EnHeishi3* this, GlobalContext* globalCtx) {
+ SkelAnime_FrameUpdateMatrix(&this->skelAnime);
+ if ((func_8010BDBC(&globalCtx->msgCtx) == 5) && (func_80106BC8(globalCtx) != 0) && (this->respawnFlag == 0)) {
+ gSaveContext.eventChkInf[4] |= 0x4000;
+ globalCtx->nextEntranceIndex = 0x47E; // Hyrule Castle from Guard Capture (outside)
+ globalCtx->sceneLoadFlag = 0x14;
+ this->respawnFlag = 1;
+ globalCtx->fadeTransition = 0x2E;
+ gSaveContext.nextTransition = 0x2E;
+ }
+}
+
+void EnHeishi3_Update(Actor* thisx, GlobalContext* globalCtx) {
+ EnHeishi3* this = THIS;
+ s32 pad;
+ Actor_SetHeight(&this->actor, 60.0f);
+ this->unk_274 += 1;
+ if (this->caughtTimer != 0) {
+ this->caughtTimer -= 1;
+ }
+ this->actionFunc(this, globalCtx);
+ this->actor.shape.rot = this->actor.posRot.rot;
+ Actor_MoveForward(&this->actor);
+ func_8002E4B4(globalCtx, &this->actor, 20.0f, 20.0f, 50.0f, 0x1C);
+ Collider_CylinderUpdate(&this->actor, &this->collider);
+ CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider);
+}
+
+s32 EnHeishi3_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
+ Actor* thisx) {
+ EnHeishi3* this = THIS;
+ if (limbIndex == 9) {
+ rot->x += this->unk_26E;
+ }
+
+ if (limbIndex == 16) {
+ rot->x += this->unk_262;
+ rot->z += this->unk_264;
+ }
+
+ return 0;
+}
+
+void EnHeishi3_Draw(Actor* thisx, GlobalContext* globalCtx) {
+ EnHeishi3* this = THIS;
+ func_80093D18(globalCtx->state.gfxCtx);
+ SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnHeishi3_OverrideLimbDraw, NULL,
+ &this->actor);
+}
diff --git a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h
index e584e98bd..4ae1a1cde 100644
--- a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h
+++ b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h
@@ -6,9 +6,26 @@
struct EnHeishi3;
+typedef void (*EnHeishi3ActionFunc)(struct EnHeishi3*, GlobalContext*);
+
typedef struct EnHeishi3 {
/* 0x0000 */ Actor actor;
- /* 0x014C */ char unk_14C[0x17C];
+ /* 0x014C */ SkelAnime skelAnime;
+ /* 0x0190 */ Vec3s limbDrawTable[17];
+ /* 0x01F6 */ Vec3s transitionDrawTable[17];
+ /* 0x025C */ EnHeishi3ActionFunc actionFunc;
+ /* 0x0260 */ char unk_260[0x2];
+ /* 0x0262 */ s16 unk_262;
+ /* 0x0264 */ s16 unk_264;
+ /* 0x0266 */ char unk_266[0x8];
+ /* 0x026E */ s16 unk_26E; // All these s16 are probably part of a Vec3s
+ /* 0x0270 */ char unk_270[0x2];
+ /* 0x0272 */ s16 caughtTimer;
+ /* 0x0274 */ s16 unk_274;
+ /* 0x0276 */ u8 respawnFlag; // set to 1 when reloading area after being thrown out
+ /* 0x0278 */ s16 unk_278;
+ /* 0x027A */ char unk_27A[0x2];
+ /* 0x027C */ ColliderCylinder collider;
} EnHeishi3; // size = 0x02C8
extern const ActorInit En_Heishi3_InitVars;
diff --git a/undefined_syms.txt b/undefined_syms.txt
index 4ec6c175c..8ec647944 100644
--- a/undefined_syms.txt
+++ b/undefined_syms.txt
@@ -542,6 +542,11 @@ D_06002CE4 = 0x06002CE4;
D_06002650 = 0x06002650;
D_06003858 = 0x06003858;
+// z_en_heishi3
+D_0600BAC8 = 0x0600BAC8;
+D_06005C30 = 0x06005C30;
+D_06005880 = 0x06005880;
+
// z_en_floormas
D_06002158 = 0x06002158;
D_060039B0 = 0x060039B0;