diff --git a/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E4F4.s b/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E4F4.s
index 69f67b6249..a7340b566c 100644
--- a/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E4F4.s
+++ b/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E4F4.s
@@ -83,9 +83,9 @@ glabel func_8099E4F4
/* 00D2C 8099E5FC C6220550 */ lwc1 $f2, 0x0550($s1) ## 00000550
/* 00D30 8099E600 C6300554 */ lwc1 $f16, 0x0554($s1) ## 00000554
/* 00D34 8099E604 C6320558 */ lwc1 $f18, 0x0558($s1) ## 00000558
-/* 00D38 8099E608 3C020403 */ lui $v0, %hi(gEffFairySparklesDL) ## $v0 = 04030000
+/* 00D38 8099E608 3C020403 */ lui $v0, %hi(gEffSparklesDL) ## $v0 = 04030000
/* 00D3C 8099E60C 4602B201 */ sub.s $f8, $f22, $f2
-/* 00D40 8099E610 24427880 */ addiu $v0, $v0, %lo(gEffFairySparklesDL) ## $v0 = 04037880
+/* 00D40 8099E610 24427880 */ addiu $v0, $v0, %lo(gEffSparklesDL) ## $v0 = 04037880
/* 00D44 8099E614 3C0100FF */ lui $at, 0x00FF ## $at = 00FF0000
/* 00D48 8099E618 4604B001 */ sub.s $f0, $f22, $f4
/* 00D4C 8099E61C C6440000 */ lwc1 $f4, 0x0000($s2) ## 0000024C
diff --git a/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E784.s b/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E784.s
index 2953c12e1b..9f250044b0 100644
--- a/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E784.s
+++ b/asm/non_matchings/overlays/actors/ovl_Eff_Dust/func_8099E784.s
@@ -116,9 +116,9 @@ glabel func_8099E784
/* 01028 8099E8F8 AC6F0000 */ sw $t7, 0x0000($v1) ## 00000000
/* 0102C 8099E8FC C62A0000 */ lwc1 $f10, 0x0000($s1) ## 0000014C
/* 01030 8099E900 24190001 */ addiu $t9, $zero, 0x0001 ## $t9 = 00000001
-/* 01034 8099E904 3C020403 */ lui $v0, %hi(gEffFairySparklesDL) ## $v0 = 04030000
+/* 01034 8099E904 3C020403 */ lui $v0, %hi(gEffSparklesDL) ## $v0 = 04030000
/* 01038 8099E908 46185402 */ mul.s $f16, $f10, $f24
-/* 0103C 8099E90C 24427880 */ addiu $v0, $v0, %lo(gEffFairySparklesDL) ## $v0 = 04037880
+/* 0103C 8099E90C 24427880 */ addiu $v0, $v0, %lo(gEffSparklesDL) ## $v0 = 04037880
/* 01040 8099E910 3C0100FF */ lui $at, 0x00FF ## $at = 00FF0000
/* 01044 8099E914 3421FFFF */ ori $at, $at, 0xFFFF ## $at = 00FFFFFF
/* 01048 8099E918 0041B024 */ and $s6, $v0, $at
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Destroy.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Destroy.s
deleted file mode 100644
index 1b393a3c96..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Destroy.s
+++ /dev/null
@@ -1,37 +0,0 @@
-glabel EnArrow_Destroy
-/* 0022C 809B3B4C 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
-/* 00230 809B3B50 AFBF001C */ sw $ra, 0x001C($sp)
-/* 00234 809B3B54 AFB00018 */ sw $s0, 0x0018($sp)
-/* 00238 809B3B58 AFA50024 */ sw $a1, 0x0024($sp)
-/* 0023C 809B3B5C 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
-/* 00240 809B3B60 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 00244 809B3B64 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
-/* 00248 809B3B68 29C10006 */ slti $at, $t6, 0x0006
-/* 0024C 809B3B6C 50200004 */ beql $at, $zero, .L809B3B80
-/* 00250 809B3B70 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
-/* 00254 809B3B74 0C009C27 */ jal Effect_Delete
-/* 00258 809B3B78 8E050228 */ lw $a1, 0x0228($s0) ## 00000228
-/* 0025C 809B3B7C 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
-.L809B3B80:
-/* 00260 809B3B80 0C0295BC */ jal SkelAnime_Free
-/* 00264 809B3B84 8FA50024 */ lw $a1, 0x0024($sp)
-/* 00268 809B3B88 8FA40024 */ lw $a0, 0x0024($sp)
-/* 0026C 809B3B8C 0C017418 */ jal Collider_DestroyQuad
-/* 00270 809B3B90 26050190 */ addiu $a1, $s0, 0x0190 ## $a1 = 00000190
-/* 00274 809B3B94 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-/* 00278 809B3B98 5040000A */ beql $v0, $zero, .L809B3BC4
-/* 0027C 809B3B9C 8FBF001C */ lw $ra, 0x001C($sp)
-/* 00280 809B3BA0 8C4F0130 */ lw $t7, 0x0130($v0) ## 00000130
-/* 00284 809B3BA4 51E00007 */ beql $t7, $zero, .L809B3BC4
-/* 00288 809B3BA8 8FBF001C */ lw $ra, 0x001C($sp)
-/* 0028C 809B3BAC 8C580004 */ lw $t8, 0x0004($v0) ## 00000004
-/* 00290 809B3BB0 3C01FFFF */ lui $at, 0xFFFF ## $at = FFFF0000
-/* 00294 809B3BB4 34217FFF */ ori $at, $at, 0x7FFF ## $at = FFFF7FFF
-/* 00298 809B3BB8 0301C824 */ and $t9, $t8, $at
-/* 0029C 809B3BBC AC590004 */ sw $t9, 0x0004($v0) ## 00000004
-/* 002A0 809B3BC0 8FBF001C */ lw $ra, 0x001C($sp)
-.L809B3BC4:
-/* 002A4 809B3BC4 8FB00018 */ lw $s0, 0x0018($sp)
-/* 002A8 809B3BC8 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
-/* 002AC 809B3BCC 03E00008 */ jr $ra
-/* 002B0 809B3BD0 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Draw.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Draw.s
deleted file mode 100644
index 5d5bd418e0..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Draw.s
+++ /dev/null
@@ -1,275 +0,0 @@
-.rdata
-glabel D_809B4EF0
- .asciz "../z_en_arrow.c"
- .balign 4
-
-glabel D_809B4F00
- .asciz "../z_en_arrow.c"
- .balign 4
-
-glabel D_809B4F10
- .asciz "../z_en_arrow.c"
- .balign 4
-
-.late_rodata
-glabel D_809B4F5C
- .float 0.0000958738
-glabel D_809B4F60
- .float 0.0000958738
-
-.text
-glabel EnArrow_Draw
-/* 01048 809B4968 27BDFF88 */ addiu $sp, $sp, 0xFF88 ## $sp = FFFFFF88
-/* 0104C 809B496C AFBF002C */ sw $ra, 0x002C($sp)
-/* 01050 809B4970 AFB00028 */ sw $s0, 0x0028($sp)
-/* 01054 809B4974 AFA5007C */ sw $a1, 0x007C($sp)
-/* 01058 809B4978 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
-/* 0105C 809B497C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 01060 809B4980 29C10009 */ slti $at, $t6, 0x0009
-/* 01064 809B4984 5020001C */ beql $at, $zero, .L809B49F8
-/* 01068 809B4988 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
-/* 0106C 809B498C 0C024F46 */ jal func_80093D18
-/* 01070 809B4990 8CA40000 */ lw $a0, 0x0000($a1) ## 00000000
-/* 01074 809B4994 3C188016 */ lui $t8, %hi(gGameInfo)
-/* 01078 809B4998 8F18FA90 */ lw $t8, %lo(gGameInfo)($t8)
-/* 0107C 809B499C C60400EC */ lwc1 $f4, 0x00EC($s0) ## 000000EC
-/* 01080 809B49A0 8FA4007C */ lw $a0, 0x007C($sp)
-/* 01084 809B49A4 87190492 */ lh $t9, 0x0492($t8) ## 80160492
-/* 01088 809B49A8 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
-/* 0108C 809B49AC 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
-/* 01090 809B49B0 44993000 */ mtc1 $t9, $f6 ## $f6 = 0.00
-/* 01094 809B49B4 00000000 */ nop
-/* 01098 809B49B8 46803220 */ cvt.s.w $f8, $f6
-/* 0109C 809B49BC 4608203C */ c.lt.s $f4, $f8
-/* 010A0 809B49C0 00000000 */ nop
-/* 010A4 809B49C4 45000003 */ bc1f .L809B49D4
-/* 010A8 809B49C8 00000000 */ nop
-/* 010AC 809B49CC 10000001 */ beq $zero, $zero, .L809B49D4
-/* 010B0 809B49D0 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
-.L809B49D4:
-/* 010B4 809B49D4 8E050150 */ lw $a1, 0x0150($s0) ## 00000150
-/* 010B8 809B49D8 8E06016C */ lw $a2, 0x016C($s0) ## 0000016C
-/* 010BC 809B49DC AFA20018 */ sw $v0, 0x0018($sp)
-/* 010C0 809B49E0 AFB00014 */ sw $s0, 0x0014($sp)
-/* 010C4 809B49E4 0C0282D0 */ jal SkelAnime_DrawLod
-/* 010C8 809B49E8 AFA00010 */ sw $zero, 0x0010($sp)
-/* 010CC 809B49EC 100000C9 */ beq $zero, $zero, .L809B4D14
-/* 010D0 809B49F0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 010D4 809B49F4 44805000 */ mtc1 $zero, $f10 ## $f10 = 0.00
-.L809B49F8:
-/* 010D8 809B49F8 C6100068 */ lwc1 $f16, 0x0068($s0) ## 00000068
-/* 010DC 809B49FC 46105032 */ c.eq.s $f10, $f16
-/* 010E0 809B4A00 00000000 */ nop
-/* 010E4 809B4A04 450300C3 */ bc1tl .L809B4D14
-/* 010E8 809B4A08 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 010EC 809B4A0C 92040248 */ lbu $a0, 0x0248($s0) ## 00000248
-/* 010F0 809B4A10 00800821 */ addu $at, $a0, $zero
-/* 010F4 809B4A14 00042080 */ sll $a0, $a0, 2
-/* 010F8 809B4A18 00812021 */ addu $a0, $a0, $at
-/* 010FC 809B4A1C 000420C0 */ sll $a0, $a0, 3
-/* 01100 809B4A20 00812023 */ subu $a0, $a0, $at
-/* 01104 809B4A24 00042100 */ sll $a0, $a0, 4
-/* 01108 809B4A28 00812021 */ addu $a0, $a0, $at
-/* 0110C 809B4A2C 000420C0 */ sll $a0, $a0, 3
-/* 01110 809B4A30 00042400 */ sll $a0, $a0, 16
-/* 01114 809B4A34 0C01DE0D */ jal Math_CosS
- ## coss?
-/* 01118 809B4A38 00042403 */ sra $a0, $a0, 16
-/* 0111C 809B4A3C 3C0142FF */ lui $at, 0x42FF ## $at = 42FF0000
-/* 01120 809B4A40 44811000 */ mtc1 $at, $f2 ## $f2 = 127.50
-/* 01124 809B4A44 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001
-/* 01128 809B4A48 3C06809B */ lui $a2, %hi(D_809B4EF0) ## $a2 = 809B0000
-/* 0112C 809B4A4C 46020482 */ mul.s $f18, $f0, $f2
-/* 01130 809B4A50 24C64EF0 */ addiu $a2, $a2, %lo(D_809B4EF0) ## $a2 = 809B4EF0
-/* 01134 809B4A54 27A40054 */ addiu $a0, $sp, 0x0054 ## $a0 = FFFFFFDC
-/* 01138 809B4A58 46029180 */ add.s $f6, $f18, $f2
-/* 0113C 809B4A5C 4449F800 */ cfc1 $t1, $31
-/* 01140 809B4A60 44CAF800 */ ctc1 $t2, $31
-/* 01144 809B4A64 00000000 */ nop
-/* 01148 809B4A68 46003124 */ cvt.w.s $f4, $f6
-/* 0114C 809B4A6C 444AF800 */ cfc1 $t2, $31
-/* 01150 809B4A70 00000000 */ nop
-/* 01154 809B4A74 314A0078 */ andi $t2, $t2, 0x0078 ## $t2 = 00000000
-/* 01158 809B4A78 11400012 */ beq $t2, $zero, .L809B4AC4
-/* 0115C 809B4A7C 3C014F00 */ lui $at, 0x4F00 ## $at = 4F000000
-/* 01160 809B4A80 44812000 */ mtc1 $at, $f4 ## $f4 = 2147483648.00
-/* 01164 809B4A84 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001
-/* 01168 809B4A88 46043101 */ sub.s $f4, $f6, $f4
-/* 0116C 809B4A8C 44CAF800 */ ctc1 $t2, $31
-/* 01170 809B4A90 00000000 */ nop
-/* 01174 809B4A94 46002124 */ cvt.w.s $f4, $f4
-/* 01178 809B4A98 444AF800 */ cfc1 $t2, $31
-/* 0117C 809B4A9C 00000000 */ nop
-/* 01180 809B4AA0 314A0078 */ andi $t2, $t2, 0x0078 ## $t2 = 00000000
-/* 01184 809B4AA4 15400005 */ bne $t2, $zero, .L809B4ABC
-/* 01188 809B4AA8 00000000 */ nop
-/* 0118C 809B4AAC 440A2000 */ mfc1 $t2, $f4
-/* 01190 809B4AB0 3C018000 */ lui $at, 0x8000 ## $at = 80000000
-/* 01194 809B4AB4 10000007 */ beq $zero, $zero, .L809B4AD4
-/* 01198 809B4AB8 01415025 */ or $t2, $t2, $at ## $t2 = 80000000
-.L809B4ABC:
-/* 0119C 809B4ABC 10000005 */ beq $zero, $zero, .L809B4AD4
-/* 011A0 809B4AC0 240AFFFF */ addiu $t2, $zero, 0xFFFF ## $t2 = FFFFFFFF
-.L809B4AC4:
-/* 011A4 809B4AC4 440A2000 */ mfc1 $t2, $f4
-/* 011A8 809B4AC8 00000000 */ nop
-/* 011AC 809B4ACC 0540FFFB */ bltz $t2, .L809B4ABC
-/* 011B0 809B4AD0 00000000 */ nop
-.L809B4AD4:
-/* 011B4 809B4AD4 8FAB007C */ lw $t3, 0x007C($sp)
-/* 011B8 809B4AD8 A3AA006F */ sb $t2, 0x006F($sp)
-/* 011BC 809B4ADC 44C9F800 */ ctc1 $t1, $31
-/* 011C0 809B4AE0 8D650000 */ lw $a1, 0x0000($t3) ## 00000000
-/* 011C4 809B4AE4 24070542 */ addiu $a3, $zero, 0x0542 ## $a3 = 00000542
-/* 011C8 809B4AE8 0C031AB1 */ jal Graph_OpenDisps
-/* 011CC 809B4AEC AFA50064 */ sw $a1, 0x0064($sp)
-/* 011D0 809B4AF0 8FAC007C */ lw $t4, 0x007C($sp)
-/* 011D4 809B4AF4 0C024F05 */ jal func_80093C14
-/* 011D8 809B4AF8 8D840000 */ lw $a0, 0x0000($t4) ## 00000000
-/* 011DC 809B4AFC 860D001C */ lh $t5, 0x001C($s0) ## 0000001C
-/* 011E0 809B4B00 24010009 */ addiu $at, $zero, 0x0009 ## $at = 00000009
-/* 011E4 809B4B04 8FA80064 */ lw $t0, 0x0064($sp)
-/* 011E8 809B4B08 15A10016 */ bne $t5, $at, .L809B4B64
-/* 011EC 809B4B0C 3C0EFA00 */ lui $t6, 0xFA00 ## $t6 = FA000000
-/* 011F0 809B4B10 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
-/* 011F4 809B4B14 3C0FFA00 */ lui $t7, 0xFA00 ## $t7 = FA000000
-/* 011F8 809B4B18 2418FFFF */ addiu $t8, $zero, 0xFFFF ## $t8 = FFFFFFFF
-/* 011FC 809B4B1C 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008
-/* 01200 809B4B20 AD0E02D0 */ sw $t6, 0x02D0($t0) ## 000002D0
-/* 01204 809B4B24 AC580004 */ sw $t8, 0x0004($v0) ## 00000004
-/* 01208 809B4B28 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000
-/* 0120C 809B4B2C 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
-/* 01210 809B4B30 3C09FB00 */ lui $t1, 0xFB00 ## $t1 = FB000000
-/* 01214 809B4B34 3C0100FF */ lui $at, 0x00FF ## $at = 00FF0000
-/* 01218 809B4B38 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
-/* 0121C 809B4B3C AD1902D0 */ sw $t9, 0x02D0($t0) ## 000002D0
-/* 01220 809B4B40 AC490000 */ sw $t1, 0x0000($v0) ## 00000000
-/* 01224 809B4B44 93AB006F */ lbu $t3, 0x006F($sp)
-/* 01228 809B4B48 3421FF00 */ ori $at, $at, 0xFF00 ## $at = 00FFFF00
-/* 0122C 809B4B4C 01616025 */ or $t4, $t3, $at ## $t4 = 00FFFF00
-/* 01230 809B4B50 3C014248 */ lui $at, 0x4248 ## $at = 42480000
-/* 01234 809B4B54 44814000 */ mtc1 $at, $f8 ## $f8 = 50.00
-/* 01238 809B4B58 AC4C0004 */ sw $t4, 0x0004($v0) ## 00000004
-/* 0123C 809B4B5C 10000014 */ beq $zero, $zero, .L809B4BB0
-/* 01240 809B4B60 E7A80068 */ swc1 $f8, 0x0068($sp)
-.L809B4B64:
-/* 01244 809B4B64 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
-/* 01248 809B4B68 3C0F0C00 */ lui $t7, 0x0C00 ## $t7 = 0C000000
-/* 0124C 809B4B6C 35EF00FF */ ori $t7, $t7, 0x00FF ## $t7 = 0C0000FF
-/* 01250 809B4B70 244D0008 */ addiu $t5, $v0, 0x0008 ## $t5 = 00000008
-/* 01254 809B4B74 AD0D02D0 */ sw $t5, 0x02D0($t0) ## 000002D0
-/* 01258 809B4B78 AC4F0004 */ sw $t7, 0x0004($v0) ## 00000004
-/* 0125C 809B4B7C AC4E0000 */ sw $t6, 0x0000($v0) ## 00000000
-/* 01260 809B4B80 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
-/* 01264 809B4B84 3C19FB00 */ lui $t9, 0xFB00 ## $t9 = FB000000
-/* 01268 809B4B88 3C01FAFA */ lui $at, 0xFAFA ## $at = FAFA0000
-/* 0126C 809B4B8C 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008
-/* 01270 809B4B90 AD1802D0 */ sw $t8, 0x02D0($t0) ## 000002D0
-/* 01274 809B4B94 AC590000 */ sw $t9, 0x0000($v0) ## 00000000
-/* 01278 809B4B98 93AA006F */ lbu $t2, 0x006F($sp)
-/* 0127C 809B4B9C 01415825 */ or $t3, $t2, $at ## $t3 = FAFA0000
-/* 01280 809B4BA0 3C014316 */ lui $at, 0x4316 ## $at = 43160000
-/* 01284 809B4BA4 44815000 */ mtc1 $at, $f10 ## $f10 = 150.00
-/* 01288 809B4BA8 AC4B0004 */ sw $t3, 0x0004($v0) ## 00000004
-/* 0128C 809B4BAC E7AA0068 */ swc1 $f10, 0x0068($sp)
-.L809B4BB0:
-/* 01290 809B4BB0 0C034213 */ jal Matrix_Push
-/* 01294 809B4BB4 AFA80064 */ sw $t0, 0x0064($sp)
-/* 01298 809B4BB8 8FA4007C */ lw $a0, 0x007C($sp)
-/* 0129C 809B4BBC 3C010001 */ lui $at, 0x0001 ## $at = 00010000
-/* 012A0 809B4BC0 34211DA0 */ ori $at, $at, 0x1DA0 ## $at = 00011DA0
-/* 012A4 809B4BC4 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
-/* 012A8 809B4BC8 0C03424C */ jal Matrix_Mult
-/* 012AC 809B4BCC 00812021 */ addu $a0, $a0, $at
-/* 012B0 809B4BD0 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
-/* 012B4 809B4BD4 C6100068 */ lwc1 $f16, 0x0068($s0) ## 00000068
-/* 012B8 809B4BD8 8FAC007C */ lw $t4, 0x007C($sp)
-/* 012BC 809B4BDC 3C0D0001 */ lui $t5, 0x0001 ## $t5 = 00010000
-/* 012C0 809B4BE0 46100032 */ c.eq.s $f0, $f16
-/* 012C4 809B4BE4 8FA80064 */ lw $t0, 0x0064($sp)
-/* 012C8 809B4BE8 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
-/* 012CC 809B4BEC 01AC6821 */ addu $t5, $t5, $t4
-/* 012D0 809B4BF0 45020004 */ bc1fl .L809B4C04
-/* 012D4 809B4BF4 8DAD1DE4 */ lw $t5, 0x1DE4($t5) ## 00011DE4
-/* 012D8 809B4BF8 10000013 */ beq $zero, $zero, .L809B4C48
-/* 012DC 809B4BFC 46000306 */ mov.s $f12, $f0
-/* 012E0 809B4C00 8DAD1DE4 */ lw $t5, 0x1DE4($t5) ## 00011DE4
-.L809B4C04:
-/* 012E4 809B4C04 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
-/* 012E8 809B4C08 31AE00FF */ andi $t6, $t5, 0x00FF ## $t6 = 00000000
-/* 012EC 809B4C0C 000E7940 */ sll $t7, $t6, 5
-/* 012F0 809B4C10 01EE7823 */ subu $t7, $t7, $t6
-/* 012F4 809B4C14 000F7880 */ sll $t7, $t7, 2
-/* 012F8 809B4C18 01EE7821 */ addu $t7, $t7, $t6
-/* 012FC 809B4C1C 000F7940 */ sll $t7, $t7, 5
-/* 01300 809B4C20 448F9000 */ mtc1 $t7, $f18 ## $f18 = 0.00
-/* 01304 809B4C24 05E10004 */ bgez $t7, .L809B4C38
-/* 01308 809B4C28 468091A0 */ cvt.s.w $f6, $f18
-/* 0130C 809B4C2C 44812000 */ mtc1 $at, $f4 ## $f4 = 4294967296.00
-/* 01310 809B4C30 00000000 */ nop
-/* 01314 809B4C34 46043180 */ add.s $f6, $f6, $f4
-.L809B4C38:
-/* 01318 809B4C38 3C01809B */ lui $at, %hi(D_809B4F5C) ## $at = 809B0000
-/* 0131C 809B4C3C C4284F5C */ lwc1 $f8, %lo(D_809B4F5C)($at)
-/* 01320 809B4C40 46083302 */ mul.s $f12, $f6, $f8
-/* 01324 809B4C44 00000000 */ nop
-.L809B4C48:
-/* 01328 809B4C48 0C0343B5 */ jal Matrix_RotateZ
-/* 0132C 809B4C4C AFA80064 */ sw $t0, 0x0064($sp)
-/* 01330 809B4C50 C7AC0068 */ lwc1 $f12, 0x0068($sp)
-/* 01334 809B4C54 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
-/* 01338 809B4C58 44066000 */ mfc1 $a2, $f12
-/* 0133C 809B4C5C 0C0342A3 */ jal Matrix_Scale
-/* 01340 809B4C60 46006386 */ mov.s $f14, $f12
-/* 01344 809B4C64 8FA80064 */ lw $t0, 0x0064($sp)
-/* 01348 809B4C68 3C19DA38 */ lui $t9, 0xDA38 ## $t9 = DA380000
-/* 0134C 809B4C6C 37390003 */ ori $t9, $t9, 0x0003 ## $t9 = DA380003
-/* 01350 809B4C70 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
-/* 01354 809B4C74 3C05809B */ lui $a1, %hi(D_809B4F00) ## $a1 = 809B0000
-/* 01358 809B4C78 24A54F00 */ addiu $a1, $a1, %lo(D_809B4F00) ## $a1 = 809B4F00
-/* 0135C 809B4C7C 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008
-/* 01360 809B4C80 AD1802D0 */ sw $t8, 0x02D0($t0) ## 000002D0
-/* 01364 809B4C84 AC590000 */ sw $t9, 0x0000($v0) ## 00000000
-/* 01368 809B4C88 8FA9007C */ lw $t1, 0x007C($sp)
-/* 0136C 809B4C8C 2406055E */ addiu $a2, $zero, 0x055E ## $a2 = 0000055E
-/* 01370 809B4C90 8D240000 */ lw $a0, 0x0000($t1) ## 00000000
-/* 01374 809B4C94 AFA80064 */ sw $t0, 0x0064($sp)
-/* 01378 809B4C98 0C0346A2 */ jal Matrix_NewMtx
-/* 0137C 809B4C9C AFA20040 */ sw $v0, 0x0040($sp)
-/* 01380 809B4CA0 8FA30040 */ lw $v1, 0x0040($sp)
-/* 01384 809B4CA4 8FA80064 */ lw $t0, 0x0064($sp)
-/* 01388 809B4CA8 3C0C0403 */ lui $t4, %hi(gEffFairySparklesDL) ## $t4 = 04030000
-/* 0138C 809B4CAC AC620004 */ sw $v0, 0x0004($v1) ## 00000004
-/* 01390 809B4CB0 8D0202D0 */ lw $v0, 0x02D0($t0) ## 000002D0
-/* 01394 809B4CB4 258C7880 */ addiu $t4, $t4, %lo(gEffFairySparklesDL) ## $t4 = 04037880
-/* 01398 809B4CB8 3C0BDE00 */ lui $t3, 0xDE00 ## $t3 = DE000000
-/* 0139C 809B4CBC 244A0008 */ addiu $t2, $v0, 0x0008 ## $t2 = 00000008
-/* 013A0 809B4CC0 AD0A02D0 */ sw $t2, 0x02D0($t0) ## 000002D0
-/* 013A4 809B4CC4 AC4C0004 */ sw $t4, 0x0004($v0) ## 00000004
-/* 013A8 809B4CC8 0C034221 */ jal Matrix_Pull
-/* 013AC 809B4CCC AC4B0000 */ sw $t3, 0x0000($v0) ## 00000000
-/* 013B0 809B4CD0 860D0032 */ lh $t5, 0x0032($s0) ## 00000032
-/* 013B4 809B4CD4 3C01809B */ lui $at, %hi(D_809B4F60) ## $at = 809B0000
-/* 013B8 809B4CD8 C4324F60 */ lwc1 $f18, %lo(D_809B4F60)($at)
-/* 013BC 809B4CDC 448D5000 */ mtc1 $t5, $f10 ## $f10 = 0.00
-/* 013C0 809B4CE0 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
-/* 013C4 809B4CE4 46805420 */ cvt.s.w $f16, $f10
-/* 013C8 809B4CE8 46128302 */ mul.s $f12, $f16, $f18
-/* 013CC 809B4CEC 0C034348 */ jal Matrix_RotateY
-/* 013D0 809B4CF0 00000000 */ nop
-/* 013D4 809B4CF4 8FAE007C */ lw $t6, 0x007C($sp)
-/* 013D8 809B4CF8 3C06809B */ lui $a2, %hi(D_809B4F10) ## $a2 = 809B0000
-/* 013DC 809B4CFC 24C64F10 */ addiu $a2, $a2, %lo(D_809B4F10) ## $a2 = 809B4F10
-/* 013E0 809B4D00 27A40054 */ addiu $a0, $sp, 0x0054 ## $a0 = FFFFFFDC
-/* 013E4 809B4D04 24070565 */ addiu $a3, $zero, 0x0565 ## $a3 = 00000565
-/* 013E8 809B4D08 0C031AD5 */ jal Graph_CloseDisps
-/* 013EC 809B4D0C 8DC50000 */ lw $a1, 0x0000($t6) ## 00000000
-/* 013F0 809B4D10 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-.L809B4D14:
-/* 013F4 809B4D14 0C26D200 */ jal func_809B4800
-/* 013F8 809B4D18 8FA5007C */ lw $a1, 0x007C($sp)
-/* 013FC 809B4D1C 8FBF002C */ lw $ra, 0x002C($sp)
-/* 01400 809B4D20 8FB00028 */ lw $s0, 0x0028($sp)
-/* 01404 809B4D24 27BD0078 */ addiu $sp, $sp, 0x0078 ## $sp = 00000000
-/* 01408 809B4D28 03E00008 */ jr $ra
-/* 0140C 809B4D2C 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Init.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Init.s
deleted file mode 100644
index bbf52be668..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Init.s
+++ /dev/null
@@ -1,168 +0,0 @@
-.rdata
-glabel D_809B4EB0
- .asciz "../z_en_arrow.c"
- .balign 4
-
-glabel D_809B4EC0
- .asciz "this->at_info.cl_elem.at_btl_info.at_type = %x\n"
- .balign 4
-
-.text
-glabel EnArrow_Init
-/* 00008 809B3928 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
-/* 0000C 809B392C AFA5003C */ sw $a1, 0x003C($sp)
-/* 00010 809B3930 AFBF002C */ sw $ra, 0x002C($sp)
-/* 00014 809B3934 AFB00028 */ sw $s0, 0x0028($sp)
-/* 00018 809B3938 3C05809B */ lui $a1, %hi(D_809B4DA0) ## $a1 = 809B0000
-/* 0001C 809B393C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 00020 809B3940 0C01E037 */ jal Actor_ProcessInitChain
-
-/* 00024 809B3944 24A54DA0 */ addiu $a1, $a1, %lo(D_809B4DA0) ## $a1 = 809B4DA0
-/* 00028 809B3948 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-/* 0002C 809B394C 2401FFF6 */ addiu $at, $zero, 0xFFF6 ## $at = FFFFFFF6
-/* 00030 809B3950 240E0001 */ addiu $t6, $zero, 0x0001 ## $t6 = 00000001
-/* 00034 809B3954 14410004 */ bne $v0, $at, .L809B3968
-/* 00038 809B3958 240F000A */ addiu $t7, $zero, 0x000A ## $t7 = 0000000A
-/* 0003C 809B395C A60F001C */ sh $t7, 0x001C($s0) ## 0000001C
-/* 00040 809B3960 A20E024B */ sb $t6, 0x024B($s0) ## 0000024B
-/* 00044 809B3964 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-.L809B3968:
-/* 00048 809B3968 2841000A */ slti $at, $v0, 0x000A
-/* 0004C 809B396C 1020006E */ beq $at, $zero, .L809B3B28
-/* 00050 809B3970 28410009 */ slti $at, $v0, 0x0009
-/* 00054 809B3974 1020000B */ beq $at, $zero, .L809B39A4
-/* 00058 809B3978 8FA4003C */ lw $a0, 0x003C($sp)
-/* 0005C 809B397C 3C060400 */ lui $a2, %hi(gArrowSkel) ## $a2 = 04000000
-/* 00060 809B3980 3C070400 */ lui $a3, %hi(gArrow2Anim) ## $a3 = 04000000
-/* 00064 809B3984 24E7436C */ addiu $a3, $a3, %lo(gArrow2Anim) ## $a3 = 0400436C
-/* 00068 809B3988 24C66010 */ addiu $a2, $a2, %lo(gArrowSkel) ## $a2 = 04006010
-/* 0006C 809B398C 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
-/* 00070 809B3990 AFA00010 */ sw $zero, 0x0010($sp)
-/* 00074 809B3994 AFA00014 */ sw $zero, 0x0014($sp)
-/* 00078 809B3998 0C02915F */ jal SkelAnime_Init
-
-/* 0007C 809B399C AFA00018 */ sw $zero, 0x0018($sp)
-/* 00080 809B39A0 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-.L809B39A4:
-/* 00084 809B39A4 28410003 */ slti $at, $v0, 0x0003
-/* 00088 809B39A8 10200014 */ beq $at, $zero, .L809B39FC
-/* 0008C 809B39AC 26050228 */ addiu $a1, $s0, 0x0228 ## $a1 = 00000228
-/* 00090 809B39B0 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
-/* 00094 809B39B4 14410005 */ bne $v0, $at, .L809B39CC
-/* 00098 809B39B8 24060002 */ addiu $a2, $zero, 0x0002 ## $a2 = 00000002
-/* 0009C 809B39BC 24180004 */ addiu $t8, $zero, 0x0004 ## $t8 = 00000004
-/* 000A0 809B39C0 3C01809B */ lui $at, %hi(D_809B4DBC) ## $at = 809B0000
-/* 000A4 809B39C4 10000004 */ beq $zero, $zero, .L809B39D8
-/* 000A8 809B39C8 A0384DBC */ sb $t8, %lo(D_809B4DBC)($at)
-.L809B39CC:
-/* 000AC 809B39CC 24190010 */ addiu $t9, $zero, 0x0010 ## $t9 = 00000010
-/* 000B0 809B39D0 3C01809B */ lui $at, %hi(D_809B4DBC) ## $at = 809B0000
-/* 000B4 809B39D4 A0394DBC */ sb $t9, %lo(D_809B4DBC)($at)
-.L809B39D8:
-/* 000B8 809B39D8 3C08809B */ lui $t0, %hi(D_809B4DA4) ## $t0 = 809B0000
-/* 000BC 809B39DC 25084DA4 */ addiu $t0, $t0, %lo(D_809B4DA4) ## $t0 = 809B4DA4
-/* 000C0 809B39E0 AFA80014 */ sw $t0, 0x0014($sp)
-/* 000C4 809B39E4 8FA4003C */ lw $a0, 0x003C($sp)
-/* 000C8 809B39E8 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
-/* 000CC 809B39EC 0C009B35 */ jal Effect_Add
- ## Effect_Add
-/* 000D0 809B39F0 AFA00010 */ sw $zero, 0x0010($sp)
-/* 000D4 809B39F4 10000027 */ beq $zero, $zero, .L809B3A94
-/* 000D8 809B39F8 26050190 */ addiu $a1, $s0, 0x0190 ## $a1 = 00000190
-.L809B39FC:
-/* 000DC 809B39FC 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
-/* 000E0 809B3A00 1441000B */ bne $v0, $at, .L809B3A30
-/* 000E4 809B3A04 8FA4003C */ lw $a0, 0x003C($sp)
-/* 000E8 809B3A08 3C09809B */ lui $t1, %hi(D_809B4DC8) ## $t1 = 809B0000
-/* 000EC 809B3A0C 25294DC8 */ addiu $t1, $t1, %lo(D_809B4DC8) ## $t1 = 809B4DC8
-/* 000F0 809B3A10 AFA90014 */ sw $t1, 0x0014($sp)
-/* 000F4 809B3A14 26050228 */ addiu $a1, $s0, 0x0228 ## $a1 = 00000228
-/* 000F8 809B3A18 24060002 */ addiu $a2, $zero, 0x0002 ## $a2 = 00000002
-/* 000FC 809B3A1C 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
-/* 00100 809B3A20 0C009B35 */ jal Effect_Add
- ## Effect_Add
-/* 00104 809B3A24 AFA00010 */ sw $zero, 0x0010($sp)
-/* 00108 809B3A28 1000001A */ beq $zero, $zero, .L809B3A94
-/* 0010C 809B3A2C 26050190 */ addiu $a1, $s0, 0x0190 ## $a1 = 00000190
-.L809B3A30:
-/* 00110 809B3A30 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004
-/* 00114 809B3A34 1441000B */ bne $v0, $at, .L809B3A64
-/* 00118 809B3A38 8FA4003C */ lw $a0, 0x003C($sp)
-/* 0011C 809B3A3C 3C0A809B */ lui $t2, %hi(D_809B4DEC) ## $t2 = 809B0000
-/* 00120 809B3A40 254A4DEC */ addiu $t2, $t2, %lo(D_809B4DEC) ## $t2 = 809B4DEC
-/* 00124 809B3A44 AFAA0014 */ sw $t2, 0x0014($sp)
-/* 00128 809B3A48 26050228 */ addiu $a1, $s0, 0x0228 ## $a1 = 00000228
-/* 0012C 809B3A4C 24060002 */ addiu $a2, $zero, 0x0002 ## $a2 = 00000002
-/* 00130 809B3A50 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
-/* 00134 809B3A54 0C009B35 */ jal Effect_Add
- ## Effect_Add
-/* 00138 809B3A58 AFA00010 */ sw $zero, 0x0010($sp)
-/* 0013C 809B3A5C 1000000D */ beq $zero, $zero, .L809B3A94
-/* 00140 809B3A60 26050190 */ addiu $a1, $s0, 0x0190 ## $a1 = 00000190
-.L809B3A64:
-/* 00144 809B3A64 24010005 */ addiu $at, $zero, 0x0005 ## $at = 00000005
-/* 00148 809B3A68 14410009 */ bne $v0, $at, .L809B3A90
-/* 0014C 809B3A6C 8FA4003C */ lw $a0, 0x003C($sp)
-/* 00150 809B3A70 3C0B809B */ lui $t3, %hi(D_809B4E10) ## $t3 = 809B0000
-/* 00154 809B3A74 256B4E10 */ addiu $t3, $t3, %lo(D_809B4E10) ## $t3 = 809B4E10
-/* 00158 809B3A78 AFAB0014 */ sw $t3, 0x0014($sp)
-/* 0015C 809B3A7C 26050228 */ addiu $a1, $s0, 0x0228 ## $a1 = 00000228
-/* 00160 809B3A80 24060002 */ addiu $a2, $zero, 0x0002 ## $a2 = 00000002
-/* 00164 809B3A84 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
-/* 00168 809B3A88 0C009B35 */ jal Effect_Add
- ## Effect_Add
-/* 0016C 809B3A8C AFA00010 */ sw $zero, 0x0010($sp)
-.L809B3A90:
-/* 00170 809B3A90 26050190 */ addiu $a1, $s0, 0x0190 ## $a1 = 00000190
-.L809B3A94:
-/* 00174 809B3A94 AFA50030 */ sw $a1, 0x0030($sp)
-/* 00178 809B3A98 0C017406 */ jal Collider_InitQuad
-/* 0017C 809B3A9C 8FA4003C */ lw $a0, 0x003C($sp)
-/* 00180 809B3AA0 3C07809B */ lui $a3, %hi(D_809B4D50) ## $a3 = 809B0000
-/* 00184 809B3AA4 8FA50030 */ lw $a1, 0x0030($sp)
-/* 00188 809B3AA8 24E74D50 */ addiu $a3, $a3, %lo(D_809B4D50) ## $a3 = 809B4D50
-/* 0018C 809B3AAC 8FA4003C */ lw $a0, 0x003C($sp)
-/* 00190 809B3AB0 0C017441 */ jal Collider_SetQuad
-/* 00194 809B3AB4 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
-/* 00198 809B3AB8 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-/* 0019C 809B3ABC 240F0011 */ addiu $t7, $zero, 0x0011 ## $t7 = 00000011
-/* 001A0 809B3AC0 28410003 */ slti $at, $v0, 0x0003
-/* 001A4 809B3AC4 10200006 */ beq $at, $zero, .L809B3AE0
-/* 001A8 809B3AC8 00000000 */ nop
-/* 001AC 809B3ACC 920C01BD */ lbu $t4, 0x01BD($s0) ## 000001BD
-/* 001B0 809B3AD0 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-/* 001B4 809B3AD4 318EFFE7 */ andi $t6, $t4, 0xFFE7 ## $t6 = 00000000
-/* 001B8 809B3AD8 A20E01BD */ sb $t6, 0x01BD($s0) ## 000001BD
-/* 001BC 809B3ADC A20E01BD */ sb $t6, 0x01BD($s0) ## 000001BD
-.L809B3AE0:
-/* 001C0 809B3AE0 04410003 */ bgez $v0, .L809B3AF0
-/* 001C4 809B3AE4 2841000A */ slti $at, $v0, 0x000A
-/* 001C8 809B3AE8 1000000F */ beq $zero, $zero, .L809B3B28
-/* 001CC 809B3AEC A20F01A0 */ sb $t7, 0x01A0($s0) ## 000001A0
-.L809B3AF0:
-/* 001D0 809B3AF0 1020000D */ beq $at, $zero, .L809B3B28
-/* 001D4 809B3AF4 0002C080 */ sll $t8, $v0, 2
-/* 001D8 809B3AF8 3C19809B */ lui $t9, %hi(D_809B4E34) ## $t9 = 809B0000
-/* 001DC 809B3AFC 0338C821 */ addu $t9, $t9, $t8
-/* 001E0 809B3B00 8F394E34 */ lw $t9, %lo(D_809B4E34)($t9)
-/* 001E4 809B3B04 3C04809B */ lui $a0, %hi(D_809B4EB0) ## $a0 = 809B0000
-/* 001E8 809B3B08 24844EB0 */ addiu $a0, $a0, %lo(D_809B4EB0) ## $a0 = 809B4EB0
-/* 001EC 809B3B0C 240502C3 */ addiu $a1, $zero, 0x02C3 ## $a1 = 000002C3
-/* 001F0 809B3B10 0C000B84 */ jal LogUtils_LogThreadId
-
-/* 001F4 809B3B14 AE1901A8 */ sw $t9, 0x01A8($s0) ## 000001A8
-/* 001F8 809B3B18 3C04809B */ lui $a0, %hi(D_809B4EC0) ## $a0 = 809B0000
-/* 001FC 809B3B1C 24844EC0 */ addiu $a0, $a0, %lo(D_809B4EC0) ## $a0 = 809B4EC0
-/* 00200 809B3B20 0C00084C */ jal osSyncPrintf
-
-/* 00204 809B3B24 8E0501A8 */ lw $a1, 0x01A8($s0) ## 000001A8
-.L809B3B28:
-/* 00208 809B3B28 3C05809B */ lui $a1, %hi(func_809B3BD4) ## $a1 = 809B0000
-/* 0020C 809B3B2C 24A53BD4 */ addiu $a1, $a1, %lo(func_809B3BD4) ## $a1 = 809B3BD4
-/* 00210 809B3B30 0C26CE48 */ jal func_809B3920
-/* 00214 809B3B34 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00218 809B3B38 8FBF002C */ lw $ra, 0x002C($sp)
-/* 0021C 809B3B3C 8FB00028 */ lw $s0, 0x0028($sp)
-/* 00220 809B3B40 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
-/* 00224 809B3B44 03E00008 */ jr $ra
-/* 00228 809B3B48 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Update.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Update.s
deleted file mode 100644
index 801366551f..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Update.s
+++ /dev/null
@@ -1,95 +0,0 @@
-glabel EnArrow_Update
-/* 00D88 809B46A8 27BDFFA0 */ addiu $sp, $sp, 0xFFA0 ## $sp = FFFFFFA0
-/* 00D8C 809B46AC AFBF003C */ sw $ra, 0x003C($sp)
-/* 00D90 809B46B0 AFB10038 */ sw $s1, 0x0038($sp)
-/* 00D94 809B46B4 AFB00034 */ sw $s0, 0x0034($sp)
-/* 00D98 809B46B8 908E024B */ lbu $t6, 0x024B($a0) ## 0000024B
-/* 00D9C 809B46BC 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 00DA0 809B46C0 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
-/* 00DA4 809B46C4 15C0000C */ bne $t6, $zero, .L809B46F8
-/* 00DA8 809B46C8 8CA61C44 */ lw $a2, 0x1C44($a1) ## 00001C44
-/* 00DAC 809B46CC 848F001C */ lh $t7, 0x001C($a0) ## 0000001C
-/* 00DB0 809B46D0 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
-/* 00DB4 809B46D4 05E00004 */ bltz $t7, .L809B46E8
-/* 00DB8 809B46D8 00000000 */ nop
-/* 00DBC 809B46DC 90D80A73 */ lbu $t8, 0x0A73($a2) ## 00000A73
-/* 00DC0 809B46E0 57000006 */ bnel $t8, $zero, .L809B46FC
-/* 00DC4 809B46E4 8E19025C */ lw $t9, 0x025C($s0) ## 0000025C
-.L809B46E8:
-/* 00DC8 809B46E8 0C023A37 */ jal Player_InBlockingCsMode
-/* 00DCC 809B46EC 00C02825 */ or $a1, $a2, $zero ## $a1 = 00000000
-/* 00DD0 809B46F0 54400007 */ bnel $v0, $zero, .L809B4710
-/* 00DD4 809B46F4 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-.L809B46F8:
-/* 00DD8 809B46F8 8E19025C */ lw $t9, 0x025C($s0) ## 0000025C
-.L809B46FC:
-/* 00DDC 809B46FC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00DE0 809B4700 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
-/* 00DE4 809B4704 0320F809 */ jalr $ra, $t9
-/* 00DE8 809B4708 00000000 */ nop
-/* 00DEC 809B470C 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-.L809B4710:
-/* 00DF0 809B4710 28410003 */ slti $at, $v0, 0x0003
-/* 00DF4 809B4714 14200022 */ bne $at, $zero, .L809B47A0
-/* 00DF8 809B4718 28410009 */ slti $at, $v0, 0x0009
-/* 00DFC 809B471C 10200020 */ beq $at, $zero, .L809B47A0
-/* 00E00 809B4720 3C08809B */ lui $t0, %hi(D_809B4E5C) ## $t0 = 809B0000
-/* 00E04 809B4724 25084E5C */ addiu $t0, $t0, %lo(D_809B4E5C) ## $t0 = 809B4E5C
-/* 00E08 809B4728 8D0A0000 */ lw $t2, 0x0000($t0) ## 809B4E5C
-/* 00E0C 809B472C 27A20048 */ addiu $v0, $sp, 0x0048 ## $v0 = FFFFFFE8
-/* 00E10 809B4730 AC4A0000 */ sw $t2, 0x0000($v0) ## FFFFFFE8
-/* 00E14 809B4734 8D090004 */ lw $t1, 0x0004($t0) ## 809B4E60
-/* 00E18 809B4738 AC490004 */ sw $t1, 0x0004($v0) ## FFFFFFEC
-/* 00E1C 809B473C 8D0A0008 */ lw $t2, 0x0008($t0) ## 809B4E64
-/* 00E20 809B4740 AC4A0008 */ sw $t2, 0x0008($v0) ## FFFFFFF0
-/* 00E24 809B4744 8E0B011C */ lw $t3, 0x011C($s0) ## 0000011C
-/* 00E28 809B4748 55600029 */ bnel $t3, $zero, .L809B47F0
-/* 00E2C 809B474C 8FBF003C */ lw $ra, 0x003C($sp)
-/* 00E30 809B4750 860C001C */ lh $t4, 0x001C($s0) ## 0000001C
-/* 00E34 809B4754 C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
-/* 00E38 809B4758 26241C24 */ addiu $a0, $s1, 0x1C24 ## $a0 = 00001C24
-/* 00E3C 809B475C 000C6840 */ sll $t5, $t4, 1
-/* 00E40 809B4760 004D7021 */ addu $t6, $v0, $t5
-/* 00E44 809B4764 85C7FFFA */ lh $a3, -0x0006($t6) ## FFFFFFFA
-/* 00E48 809B4768 E7A40010 */ swc1 $f4, 0x0010($sp)
-/* 00E4C 809B476C C6060028 */ lwc1 $f6, 0x0028($s0) ## 00000028
-/* 00E50 809B4770 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
-/* 00E54 809B4774 02203025 */ or $a2, $s1, $zero ## $a2 = 00000000
-/* 00E58 809B4778 E7A60014 */ swc1 $f6, 0x0014($sp)
-/* 00E5C 809B477C C608002C */ lwc1 $f8, 0x002C($s0) ## 0000002C
-/* 00E60 809B4780 AFA00028 */ sw $zero, 0x0028($sp)
-/* 00E64 809B4784 AFA00024 */ sw $zero, 0x0024($sp)
-/* 00E68 809B4788 AFA00020 */ sw $zero, 0x0020($sp)
-/* 00E6C 809B478C AFA0001C */ sw $zero, 0x001C($sp)
-/* 00E70 809B4790 0C00C916 */ jal Actor_SpawnAsChild
-
-/* 00E74 809B4794 E7A80018 */ swc1 $f8, 0x0018($sp)
-/* 00E78 809B4798 10000015 */ beq $zero, $zero, .L809B47F0
-/* 00E7C 809B479C 8FBF003C */ lw $ra, 0x003C($sp)
-.L809B47A0:
-/* 00E80 809B47A0 14400012 */ bne $v0, $zero, .L809B47EC
-/* 00E84 809B47A4 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
-/* 00E88 809B47A8 3C0F809B */ lui $t7, %hi(D_809B4E80) ## $t7 = 809B0000
-/* 00E8C 809B47AC 3C18809B */ lui $t8, %hi(D_809B4E84) ## $t8 = 809B0000
-/* 00E90 809B47B0 27184E84 */ addiu $t8, $t8, %lo(D_809B4E84) ## $t8 = 809B4E84
-/* 00E94 809B47B4 25EF4E80 */ addiu $t7, $t7, %lo(D_809B4E80) ## $t7 = 809B4E80
-/* 00E98 809B47B8 3C06809B */ lui $a2, %hi(D_809B4E68) ## $a2 = 809B0000
-/* 00E9C 809B47BC 3C07809B */ lui $a3, %hi(D_809B4E74) ## $a3 = 809B0000
-/* 00EA0 809B47C0 24190064 */ addiu $t9, $zero, 0x0064 ## $t9 = 00000064
-/* 00EA4 809B47C4 24080008 */ addiu $t0, $zero, 0x0008 ## $t0 = 00000008
-/* 00EA8 809B47C8 AFA80020 */ sw $t0, 0x0020($sp)
-/* 00EAC 809B47CC AFB90018 */ sw $t9, 0x0018($sp)
-/* 00EB0 809B47D0 24E74E74 */ addiu $a3, $a3, %lo(D_809B4E74) ## $a3 = 809B4E74
-/* 00EB4 809B47D4 24C64E68 */ addiu $a2, $a2, %lo(D_809B4E68) ## $a2 = 809B4E68
-/* 00EB8 809B47D8 AFAF0010 */ sw $t7, 0x0010($sp)
-/* 00EBC 809B47DC AFB80014 */ sw $t8, 0x0014($sp)
-/* 00EC0 809B47E0 2605021C */ addiu $a1, $s0, 0x021C ## $a1 = 0000021C
-/* 00EC4 809B47E4 0C00A0DB */ jal func_8002836C
-/* 00EC8 809B47E8 AFA0001C */ sw $zero, 0x001C($sp)
-.L809B47EC:
-/* 00ECC 809B47EC 8FBF003C */ lw $ra, 0x003C($sp)
-.L809B47F0:
-/* 00ED0 809B47F0 8FB00034 */ lw $s0, 0x0034($sp)
-/* 00ED4 809B47F4 8FB10038 */ lw $s1, 0x0038($sp)
-/* 00ED8 809B47F8 03E00008 */ jr $ra
-/* 00EDC 809B47FC 27BD0060 */ addiu $sp, $sp, 0x0060 ## $sp = 00000000
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3920.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3920.s
deleted file mode 100644
index 5b44bb3560..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3920.s
+++ /dev/null
@@ -1,3 +0,0 @@
-glabel func_809B3920
-/* 00000 809B3920 03E00008 */ jr $ra
-/* 00004 809B3924 AC85025C */ sw $a1, 0x025C($a0) ## 0000025C
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3BD4.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3BD4.s
deleted file mode 100644
index 4610e7b521..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3BD4.s
+++ /dev/null
@@ -1,97 +0,0 @@
-.late_rodata
-glabel jtbl_809B4F20
-.word L809B3C50
-.word L809B3C50
-.word L809B3C50
-.word L809B3C64
-.word L809B3C64
-.word L809B3C64
-.word L809B3C70
-.word L809B3C70
-.word L809B3C70
-.word L809B3C3C
-
-.text
-glabel func_809B3BD4
-/* 002B4 809B3BD4 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
-/* 002B8 809B3BD8 AFBF001C */ sw $ra, 0x001C($sp)
-/* 002BC 809B3BDC AFB00018 */ sw $s0, 0x0018($sp)
-/* 002C0 809B3BE0 8C8E0118 */ lw $t6, 0x0118($a0) ## 00000118
-/* 002C4 809B3BE4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 002C8 809B3BE8 8CA61C44 */ lw $a2, 0x1C44($a1) ## 00001C44
-/* 002CC 809B3BEC 55C0003B */ bnel $t6, $zero, .L809B3CDC
-/* 002D0 809B3BF0 8FBF001C */ lw $ra, 0x001C($sp)
-/* 002D4 809B3BF4 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
-/* 002D8 809B3BF8 2401000A */ addiu $at, $zero, 0x000A ## $at = 0000000A
-/* 002DC 809B3BFC 10410008 */ beq $v0, $at, .L809B3C20
-/* 002E0 809B3C00 0002C080 */ sll $t8, $v0, 2
-/* 002E4 809B3C04 90CF0A73 */ lbu $t7, 0x0A73($a2) ## 00000A73
-/* 002E8 809B3C08 55E00006 */ bnel $t7, $zero, .L809B3C24
-/* 002EC 809B3C0C 2C41000A */ sltiu $at, $v0, 0x000A
-/* 002F0 809B3C10 0C00B55C */ jal Actor_Kill
-
-/* 002F4 809B3C14 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 002F8 809B3C18 10000030 */ beq $zero, $zero, .L809B3CDC
-/* 002FC 809B3C1C 8FBF001C */ lw $ra, 0x001C($sp)
-.L809B3C20:
-/* 00300 809B3C20 2C41000A */ sltiu $at, $v0, 0x000A
-.L809B3C24:
-/* 00304 809B3C24 10200012 */ beq $at, $zero, .L809B3C70
-/* 00308 809B3C28 3C01809B */ lui $at, %hi(jtbl_809B4F20) ## $at = 809B0000
-/* 0030C 809B3C2C 00380821 */ addu $at, $at, $t8
-/* 00310 809B3C30 8C384F20 */ lw $t8, %lo(jtbl_809B4F20)($at)
-/* 00314 809B3C34 03000008 */ jr $t8
-/* 00318 809B3C38 00000000 */ nop
-glabel L809B3C3C
-/* 0031C 809B3C3C 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
-/* 00320 809B3C40 0C00BDF7 */ jal func_8002F7DC
-/* 00324 809B3C44 24051820 */ addiu $a1, $zero, 0x1820 ## $a1 = 00001820
-/* 00328 809B3C48 10000009 */ beq $zero, $zero, .L809B3C70
-/* 0032C 809B3C4C 00000000 */ nop
-glabel L809B3C50
-/* 00330 809B3C50 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
-/* 00334 809B3C54 0C00BDF7 */ jal func_8002F7DC
-/* 00338 809B3C58 24051804 */ addiu $a1, $zero, 0x1804 ## $a1 = 00001804
-/* 0033C 809B3C5C 10000004 */ beq $zero, $zero, .L809B3C70
-/* 00340 809B3C60 00000000 */ nop
-glabel L809B3C64
-/* 00344 809B3C64 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
-/* 00348 809B3C68 0C00BDF7 */ jal func_8002F7DC
-/* 0034C 809B3C6C 24051839 */ addiu $a1, $zero, 0x1839 ## $a1 = 00001839
-glabel L809B3C70
-.L809B3C70:
-/* 00350 809B3C70 3C05809B */ lui $a1, %hi(func_809B3FDC) ## $a1 = 809B0000
-/* 00354 809B3C74 24A53FDC */ addiu $a1, $a1, %lo(func_809B3FDC) ## $a1 = 809B3FDC
-/* 00358 809B3C78 0C26CE48 */ jal func_809B3920
-/* 0035C 809B3C7C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00360 809B3C80 26040210 */ addiu $a0, $s0, 0x0210 ## $a0 = 00000210
-/* 00364 809B3C84 0C01DF90 */ jal Math_Vec3f_Copy
- ## Vec3f_Copy
-/* 00368 809B3C88 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
-/* 0036C 809B3C8C 8619001C */ lh $t9, 0x001C($s0) ## 0000001C
-/* 00370 809B3C90 3C0542A0 */ lui $a1, 0x42A0 ## $a1 = 42A00000
-/* 00374 809B3C94 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00378 809B3C98 2B210009 */ slti $at, $t9, 0x0009
-/* 0037C 809B3C9C 1420000A */ bne $at, $zero, .L809B3CC8
-/* 00380 809B3CA0 00000000 */ nop
-/* 00384 809B3CA4 0C00B669 */ jal func_8002D9A4
-/* 00388 809B3CA8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 0038C 809B3CAC A60000B8 */ sh $zero, 0x00B8($s0) ## 000000B8
-/* 00390 809B3CB0 860200B8 */ lh $v0, 0x00B8($s0) ## 000000B8
-/* 00394 809B3CB4 2408000F */ addiu $t0, $zero, 0x000F ## $t0 = 0000000F
-/* 00398 809B3CB8 A2080248 */ sb $t0, 0x0248($s0) ## 00000248
-/* 0039C 809B3CBC A60200B6 */ sh $v0, 0x00B6($s0) ## 000000B6
-/* 003A0 809B3CC0 10000005 */ beq $zero, $zero, .L809B3CD8
-/* 003A4 809B3CC4 A60200B4 */ sh $v0, 0x00B4($s0) ## 000000B4
-.L809B3CC8:
-/* 003A8 809B3CC8 0C00B669 */ jal func_8002D9A4
-/* 003AC 809B3CCC 3C054316 */ lui $a1, 0x4316 ## $a1 = 43160000
-/* 003B0 809B3CD0 2409000C */ addiu $t1, $zero, 0x000C ## $t1 = 0000000C
-/* 003B4 809B3CD4 A2090248 */ sb $t1, 0x0248($s0) ## 00000248
-.L809B3CD8:
-/* 003B8 809B3CD8 8FBF001C */ lw $ra, 0x001C($sp)
-.L809B3CDC:
-/* 003BC 809B3CDC 8FB00018 */ lw $s0, 0x0018($sp)
-/* 003C0 809B3CE0 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
-/* 003C4 809B3CE4 03E00008 */ jr $ra
-/* 003C8 809B3CE8 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3CEC.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3CEC.s
deleted file mode 100644
index 384a6363ec..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3CEC.s
+++ /dev/null
@@ -1,72 +0,0 @@
-.late_rodata
-glabel D_809B4F48
- .float 0.4
-glabel D_809B4F4C
- .float 0.04
-glabel D_809B4F50
- .float 0.3
-
-.text
-glabel func_809B3CEC
-/* 003CC 809B3CEC 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
-/* 003D0 809B3CF0 AFB00018 */ sw $s0, 0x0018($sp)
-/* 003D4 809B3CF4 AFA40020 */ sw $a0, 0x0020($sp)
-/* 003D8 809B3CF8 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
-/* 003DC 809B3CFC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
-/* 003E0 809B3D00 AFBF001C */ sw $ra, 0x001C($sp)
-/* 003E4 809B3D04 3C05809B */ lui $a1, %hi(func_809B4640) ## $a1 = 809B0000
-/* 003E8 809B3D08 0C26CE48 */ jal func_809B3920
-/* 003EC 809B3D0C 24A54640 */ addiu $a1, $a1, %lo(func_809B4640) ## $a1 = 809B4640
-/* 003F0 809B3D10 3C050400 */ lui $a1, %hi(gArrow1Anim) ## $a1 = 04000000
-/* 003F4 809B3D14 24A54310 */ addiu $a1, $a1, %lo(gArrow1Anim) ## $a1 = 04004310
-/* 003F8 809B3D18 0C02947A */ jal Animation_PlayOnce
-/* 003FC 809B3D1C 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
-/* 00400 809B3D20 0C03F66B */ jal Rand_ZeroOne
- ## Rand.Next() float
-/* 00404 809B3D24 00000000 */ nop
-/* 00408 809B3D28 3C0146C0 */ lui $at, 0x46C0 ## $at = 46C00000
-/* 0040C 809B3D2C 44812000 */ mtc1 $at, $f4 ## $f4 = 24576.00
-/* 00410 809B3D30 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
-/* 00414 809B3D34 44813000 */ mtc1 $at, $f6 ## $f6 = 0.50
-/* 00418 809B3D38 86180032 */ lh $t8, 0x0032($s0) ## 00000032
-/* 0041C 809B3D3C 34018000 */ ori $at, $zero, 0x8000 ## $at = 00008000
-/* 00420 809B3D40 46060201 */ sub.s $f8, $f0, $f6
-/* 00424 809B3D44 46082282 */ mul.s $f10, $f4, $f8
-/* 00428 809B3D48 4600540D */ trunc.w.s $f16, $f10
-/* 0042C 809B3D4C 440F8000 */ mfc1 $t7, $f16
-/* 00430 809B3D50 00000000 */ nop
-/* 00434 809B3D54 030FC821 */ addu $t9, $t8, $t7
-/* 00438 809B3D58 03214021 */ addu $t0, $t9, $at
-/* 0043C 809B3D5C 0C03F66B */ jal Rand_ZeroOne
- ## Rand.Next() float
-/* 00440 809B3D60 A6080032 */ sh $t0, 0x0032($s0) ## 00000032
-/* 00444 809B3D64 3C01809B */ lui $at, %hi(D_809B4F48) ## $at = 809B0000
-/* 00448 809B3D68 C4224F48 */ lwc1 $f2, %lo(D_809B4F48)($at)
-/* 0044C 809B3D6C C6120068 */ lwc1 $f18, 0x0068($s0) ## 00000068
-/* 00450 809B3D70 C60A0060 */ lwc1 $f10, 0x0060($s0) ## 00000060
-/* 00454 809B3D74 46001182 */ mul.s $f6, $f2, $f0
-/* 00458 809B3D78 46061100 */ add.s $f4, $f2, $f6
-/* 0045C 809B3D7C 46049202 */ mul.s $f8, $f18, $f4
-/* 00460 809B3D80 46085400 */ add.s $f16, $f10, $f8
-/* 00464 809B3D84 0C03F66B */ jal Rand_ZeroOne
- ## Rand.Next() float
-/* 00468 809B3D88 E6100060 */ swc1 $f16, 0x0060($s0) ## 00000060
-/* 0046C 809B3D8C 3C01809B */ lui $at, %hi(D_809B4F4C) ## $at = 809B0000
-/* 00470 809B3D90 C4264F4C */ lwc1 $f6, %lo(D_809B4F4C)($at)
-/* 00474 809B3D94 3C01809B */ lui $at, %hi(D_809B4F50) ## $at = 809B0000
-/* 00478 809B3D98 C4324F50 */ lwc1 $f18, %lo(D_809B4F50)($at)
-/* 0047C 809B3D9C C6080068 */ lwc1 $f8, 0x0068($s0) ## 00000068
-/* 00480 809B3DA0 3C01BFC0 */ lui $at, 0xBFC0 ## $at = BFC00000
-/* 00484 809B3DA4 46009102 */ mul.s $f4, $f18, $f0
-/* 00488 809B3DA8 44819000 */ mtc1 $at, $f18 ## $f18 = -1.50
-/* 0048C 809B3DAC 24090032 */ addiu $t1, $zero, 0x0032 ## $t1 = 00000032
-/* 00490 809B3DB0 A2090248 */ sb $t1, 0x0248($s0) ## 00000248
-/* 00494 809B3DB4 E612006C */ swc1 $f18, 0x006C($s0) ## 0000006C
-/* 00498 809B3DB8 46043280 */ add.s $f10, $f6, $f4
-/* 0049C 809B3DBC 460A4402 */ mul.s $f16, $f8, $f10
-/* 004A0 809B3DC0 E6100068 */ swc1 $f16, 0x0068($s0) ## 00000068
-/* 004A4 809B3DC4 8FBF001C */ lw $ra, 0x001C($sp)
-/* 004A8 809B3DC8 8FB00018 */ lw $s0, 0x0018($sp)
-/* 004AC 809B3DCC 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
-/* 004B0 809B3DD0 03E00008 */ jr $ra
-/* 004B4 809B3DD4 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3DD8.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3DD8.s
deleted file mode 100644
index c6364ec9c5..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3DD8.s
+++ /dev/null
@@ -1,141 +0,0 @@
-glabel func_809B3DD8
-/* 004B8 809B3DD8 27BDFF88 */ addiu $sp, $sp, 0xFF88 ## $sp = FFFFFF88
-/* 004BC 809B3DDC AFB00030 */ sw $s0, 0x0030($sp)
-/* 004C0 809B3DE0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 004C4 809B3DE4 AFBF0034 */ sw $ra, 0x0034($sp)
-/* 004C8 809B3DE8 AFA5007C */ sw $a1, 0x007C($sp)
-/* 004CC 809B3DEC 26050210 */ addiu $a1, $s0, 0x0210 ## $a1 = 00000210
-/* 004D0 809B3DF0 24840024 */ addiu $a0, $a0, 0x0024 ## $a0 = 00000024
-/* 004D4 809B3DF4 0C01DFB4 */ jal Math_Vec3f_Diff
- ## Vec3f_Sub
-/* 004D8 809B3DF8 27A60068 */ addiu $a2, $sp, 0x0068 ## $a2 = FFFFFFF0
-/* 004DC 809B3DFC 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-/* 004E0 809B3E00 C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
-/* 004E4 809B3E04 C7AA0068 */ lwc1 $f10, 0x0068($sp)
-/* 004E8 809B3E08 C4460024 */ lwc1 $f6, 0x0024($v0) ## 00000024
-/* 004EC 809B3E0C C6120028 */ lwc1 $f18, 0x0028($s0) ## 00000028
-/* 004F0 809B3E10 27A40068 */ addiu $a0, $sp, 0x0068 ## $a0 = FFFFFFF0
-/* 004F4 809B3E14 46062201 */ sub.s $f8, $f4, $f6
-/* 004F8 809B3E18 C4440028 */ lwc1 $f4, 0x0028($v0) ## 00000028
-/* 004FC 809B3E1C 460A4402 */ mul.s $f16, $f8, $f10
-/* 00500 809B3E20 46049181 */ sub.s $f6, $f18, $f4
-/* 00504 809B3E24 C7A8006C */ lwc1 $f8, 0x006C($sp)
-/* 00508 809B3E28 C604002C */ lwc1 $f4, 0x002C($s0) ## 0000002C
-/* 0050C 809B3E2C 46083282 */ mul.s $f10, $f6, $f8
-/* 00510 809B3E30 C446002C */ lwc1 $f6, 0x002C($v0) ## 0000002C
-/* 00514 809B3E34 46062201 */ sub.s $f8, $f4, $f6
-/* 00518 809B3E38 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
-/* 0051C 809B3E3C 460A8480 */ add.s $f18, $f16, $f10
-/* 00520 809B3E40 C7B00070 */ lwc1 $f16, 0x0070($sp)
-/* 00524 809B3E44 46104282 */ mul.s $f10, $f8, $f16
-/* 00528 809B3E48 460A9300 */ add.s $f12, $f18, $f10
-/* 0052C 809B3E4C 4604603C */ c.lt.s $f12, $f4
-/* 00530 809B3E50 00000000 */ nop
-/* 00534 809B3E54 4503005D */ bc1tl .L809B3FCC
-/* 00538 809B3E58 8FBF0034 */ lw $ra, 0x0034($sp)
-/* 0053C 809B3E5C 0C032D80 */ jal Math3D_Vec3fMagnitudeSq
-/* 00540 809B3E60 E7AC004C */ swc1 $f12, 0x004C($sp)
-/* 00544 809B3E64 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
-/* 00548 809B3E68 44813000 */ mtc1 $at, $f6 ## $f6 = 1.00
-/* 0054C 809B3E6C C7AC004C */ lwc1 $f12, 0x004C($sp)
-/* 00550 809B3E70 4606003C */ c.lt.s $f0, $f6
-/* 00554 809B3E74 00000000 */ nop
-/* 00558 809B3E78 45030054 */ bc1tl .L809B3FCC
-/* 0055C 809B3E7C 8FBF0034 */ lw $ra, 0x0034($sp)
-/* 00560 809B3E80 46006083 */ div.s $f2, $f12, $f0
-/* 00564 809B3E84 27A40068 */ addiu $a0, $sp, 0x0068 ## $a0 = FFFFFFF0
-/* 00568 809B3E88 44051000 */ mfc1 $a1, $f2
-/* 0056C 809B3E8C 0C01DFD7 */ jal Math_Vec3f_Scale
-
-/* 00570 809B3E90 00000000 */ nop
-/* 00574 809B3E94 8E04024C */ lw $a0, 0x024C($s0) ## 0000024C
-/* 00578 809B3E98 27A50068 */ addiu $a1, $sp, 0x0068 ## $a1 = FFFFFFF0
-/* 0057C 809B3E9C 27A6005C */ addiu $a2, $sp, 0x005C ## $a2 = FFFFFFE4
-/* 00580 809B3EA0 0C01DFA7 */ jal Math_Vec3f_Sum
- ## Vec3f_Add
-/* 00584 809B3EA4 24840024 */ addiu $a0, $a0, 0x0024 ## $a0 = 00000024
-/* 00588 809B3EA8 8E05024C */ lw $a1, 0x024C($s0) ## 0000024C
-/* 0058C 809B3EAC 8FA4007C */ lw $a0, 0x007C($sp)
-/* 00590 809B3EB0 27AE0074 */ addiu $t6, $sp, 0x0074 ## $t6 = FFFFFFFC
-/* 00594 809B3EB4 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
-/* 00598 809B3EB8 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001
-/* 0059C 809B3EBC 24190001 */ addiu $t9, $zero, 0x0001 ## $t9 = 00000001
-/* 005A0 809B3EC0 24080001 */ addiu $t0, $zero, 0x0001 ## $t0 = 00000001
-/* 005A4 809B3EC4 27A90044 */ addiu $t1, $sp, 0x0044 ## $t1 = FFFFFFCC
-/* 005A8 809B3EC8 AFA90024 */ sw $t1, 0x0024($sp)
-/* 005AC 809B3ECC AFA80020 */ sw $t0, 0x0020($sp)
-/* 005B0 809B3ED0 AFB9001C */ sw $t9, 0x001C($sp)
-/* 005B4 809B3ED4 AFB80018 */ sw $t8, 0x0018($sp)
-/* 005B8 809B3ED8 AFAF0014 */ sw $t7, 0x0014($sp)
-/* 005BC 809B3EDC AFAE0010 */ sw $t6, 0x0010($sp)
-/* 005C0 809B3EE0 27A6005C */ addiu $a2, $sp, 0x005C ## $a2 = FFFFFFE4
-/* 005C4 809B3EE4 27A70050 */ addiu $a3, $sp, 0x0050 ## $a3 = FFFFFFD8
-/* 005C8 809B3EE8 24A50024 */ addiu $a1, $a1, 0x0024 ## $a1 = 00000024
-/* 005CC 809B3EEC 0C00F7A1 */ jal BgCheck_EntityLineTest1
-/* 005D0 809B3EF0 248407C0 */ addiu $a0, $a0, 0x07C0 ## $a0 = 000007C0
-/* 005D4 809B3EF4 10400030 */ beq $v0, $zero, .L809B3FB8
-/* 005D8 809B3EF8 C7A80050 */ lwc1 $f8, 0x0050($sp)
-/* 005DC 809B3EFC C7B0005C */ lwc1 $f16, 0x005C($sp)
-/* 005E0 809B3F00 C7B20050 */ lwc1 $f18, 0x0050($sp)
-/* 005E4 809B3F04 3C01BF80 */ lui $at, 0xBF80 ## $at = BF800000
-/* 005E8 809B3F08 4608803E */ c.le.s $f16, $f8
-/* 005EC 809B3F0C 00000000 */ nop
-/* 005F0 809B3F10 45020008 */ bc1fl .L809B3F34
-/* 005F4 809B3F14 44811000 */ mtc1 $at, $f2 ## $f2 = -1.00
-/* 005F8 809B3F18 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
-/* 005FC 809B3F1C 44816000 */ mtc1 $at, $f12 ## $f12 = 1.00
-/* 00600 809B3F20 3C01BF80 */ lui $at, 0xBF80 ## $at = BF800000
-/* 00604 809B3F24 44811000 */ mtc1 $at, $f2 ## $f2 = -1.00
-/* 00608 809B3F28 10000005 */ beq $zero, $zero, .L809B3F40
-/* 0060C 809B3F2C 46006006 */ mov.s $f0, $f12
-/* 00610 809B3F30 44811000 */ mtc1 $at, $f2 ## $f2 = -1.00
-.L809B3F34:
-/* 00614 809B3F34 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
-/* 00618 809B3F38 44816000 */ mtc1 $at, $f12 ## $f12 = 1.00
-/* 0061C 809B3F3C 46001006 */ mov.s $f0, $f2
-.L809B3F40:
-/* 00620 809B3F40 46120280 */ add.s $f10, $f0, $f18
-/* 00624 809B3F44 8E0A024C */ lw $t2, 0x024C($s0) ## 0000024C
-/* 00628 809B3F48 E54A0024 */ swc1 $f10, 0x0024($t2) ## 00000024
-/* 0062C 809B3F4C C7A40054 */ lwc1 $f4, 0x0054($sp)
-/* 00630 809B3F50 C7A60060 */ lwc1 $f6, 0x0060($sp)
-/* 00634 809B3F54 C7A80054 */ lwc1 $f8, 0x0054($sp)
-/* 00638 809B3F58 4604303E */ c.le.s $f6, $f4
-/* 0063C 809B3F5C 00000000 */ nop
-/* 00640 809B3F60 45020004 */ bc1fl .L809B3F74
-/* 00644 809B3F64 46001006 */ mov.s $f0, $f2
-/* 00648 809B3F68 10000002 */ beq $zero, $zero, .L809B3F74
-/* 0064C 809B3F6C 46006006 */ mov.s $f0, $f12
-/* 00650 809B3F70 46001006 */ mov.s $f0, $f2
-.L809B3F74:
-/* 00654 809B3F74 46080400 */ add.s $f16, $f0, $f8
-/* 00658 809B3F78 8E0B024C */ lw $t3, 0x024C($s0) ## 0000024C
-/* 0065C 809B3F7C E5700028 */ swc1 $f16, 0x0028($t3) ## 00000028
-/* 00660 809B3F80 C7B20058 */ lwc1 $f18, 0x0058($sp)
-/* 00664 809B3F84 C7AA0064 */ lwc1 $f10, 0x0064($sp)
-/* 00668 809B3F88 C7A40058 */ lwc1 $f4, 0x0058($sp)
-/* 0066C 809B3F8C 4612503E */ c.le.s $f10, $f18
-/* 00670 809B3F90 00000000 */ nop
-/* 00674 809B3F94 45020004 */ bc1fl .L809B3FA8
-/* 00678 809B3F98 46001006 */ mov.s $f0, $f2
-/* 0067C 809B3F9C 10000002 */ beq $zero, $zero, .L809B3FA8
-/* 00680 809B3FA0 46006006 */ mov.s $f0, $f12
-/* 00684 809B3FA4 46001006 */ mov.s $f0, $f2
-.L809B3FA8:
-/* 00688 809B3FA8 46040180 */ add.s $f6, $f0, $f4
-/* 0068C 809B3FAC 8E0C024C */ lw $t4, 0x024C($s0) ## 0000024C
-/* 00690 809B3FB0 10000005 */ beq $zero, $zero, .L809B3FC8
-/* 00694 809B3FB4 E586002C */ swc1 $f6, 0x002C($t4) ## 0000002C
-.L809B3FB8:
-/* 00698 809B3FB8 8E04024C */ lw $a0, 0x024C($s0) ## 0000024C
-/* 0069C 809B3FBC 27A5005C */ addiu $a1, $sp, 0x005C ## $a1 = FFFFFFE4
-/* 006A0 809B3FC0 0C01DF90 */ jal Math_Vec3f_Copy
- ## Vec3f_Copy
-/* 006A4 809B3FC4 24840024 */ addiu $a0, $a0, 0x0024 ## $a0 = 00000024
-.L809B3FC8:
-/* 006A8 809B3FC8 8FBF0034 */ lw $ra, 0x0034($sp)
-.L809B3FCC:
-/* 006AC 809B3FCC 8FB00030 */ lw $s0, 0x0030($sp)
-/* 006B0 809B3FD0 27BD0078 */ addiu $sp, $sp, 0x0078 ## $sp = 00000000
-/* 006B4 809B3FD4 03E00008 */ jr $ra
-/* 006B8 809B3FD8 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3FDC.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3FDC.s
deleted file mode 100644
index fa8d455726..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3FDC.s
+++ /dev/null
@@ -1,437 +0,0 @@
-.late_rodata
-glabel D_809B4F54
- .float 7.2000003
-glabel D_809B4F58
- .float -0.4
-
-.text
-glabel func_809B3FDC
-/* 006BC 809B3FDC 27BDFF68 */ addiu $sp, $sp, 0xFF68 ## $sp = FFFFFF68
-/* 006C0 809B3FE0 AFBF0034 */ sw $ra, 0x0034($sp)
-/* 006C4 809B3FE4 AFB00030 */ sw $s0, 0x0030($sp)
-/* 006C8 809B3FE8 AFA5009C */ sw $a1, 0x009C($sp)
-/* 006CC 809B3FEC 90820248 */ lbu $v0, 0x0248($a0) ## 00000248
-/* 006D0 809B3FF0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 006D4 809B3FF4 14400003 */ bne $v0, $zero, .L809B4004
-/* 006D8 809B3FF8 244EFFFF */ addiu $t6, $v0, 0xFFFF ## $t6 = FFFFFFFF
-/* 006DC 809B3FFC 10000004 */ beq $zero, $zero, .L809B4010
-/* 006E0 809B4000 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
-.L809B4004:
-/* 006E4 809B4004 31C200FF */ andi $v0, $t6, 0x00FF ## $v0 = 000000FF
-/* 006E8 809B4008 00401825 */ or $v1, $v0, $zero ## $v1 = 000000FF
-/* 006EC 809B400C A20E0248 */ sb $t6, 0x0248($s0) ## 00000248
-.L809B4010:
-/* 006F0 809B4010 54600006 */ bnel $v1, $zero, .L809B402C
-/* 006F4 809B4014 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00
-/* 006F8 809B4018 0C00B55C */ jal Actor_Kill
-
-/* 006FC 809B401C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00700 809B4020 1000016B */ beq $zero, $zero, .L809B45D0
-/* 00704 809B4024 8FBF0034 */ lw $ra, 0x0034($sp)
-/* 00708 809B4028 44822000 */ mtc1 $v0, $f4 ## $f4 = 0.00
-.L809B402C:
-/* 0070C 809B402C 3C014F80 */ lui $at, 0x4F80 ## $at = 4F800000
-/* 00710 809B4030 04410004 */ bgez $v0, .L809B4044
-/* 00714 809B4034 468021A0 */ cvt.s.w $f6, $f4
-/* 00718 809B4038 44814000 */ mtc1 $at, $f8 ## $f8 = 4294967296.00
-/* 0071C 809B403C 00000000 */ nop
-/* 00720 809B4040 46083180 */ add.s $f6, $f6, $f8
-.L809B4044:
-/* 00724 809B4044 3C01809B */ lui $at, %hi(D_809B4F54) ## $at = 809B0000
-/* 00728 809B4048 C42A4F54 */ lwc1 $f10, %lo(D_809B4F54)($at)
-/* 0072C 809B404C 3C01809B */ lui $at, %hi(D_809B4F58) ## $at = 809B0000
-/* 00730 809B4050 460A303C */ c.lt.s $f6, $f10
-/* 00734 809B4054 00000000 */ nop
-/* 00738 809B4058 45020004 */ bc1fl .L809B406C
-/* 0073C 809B405C 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-/* 00740 809B4060 C4304F58 */ lwc1 $f16, %lo(D_809B4F58)($at)
-/* 00744 809B4064 E610006C */ swc1 $f16, 0x006C($s0) ## 0000006C
-/* 00748 809B4068 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-.L809B406C:
-/* 0074C 809B406C 0002182B */ sltu $v1, $zero, $v0
-/* 00750 809B4070 10600007 */ beq $v1, $zero, .L809B4090
-/* 00754 809B4074 28410009 */ slti $at, $v0, 0x0009
-/* 00758 809B4078 2843000A */ slti $v1, $v0, 0x000A
-/* 0075C 809B407C 10600004 */ beq $v1, $zero, .L809B4090
-/* 00760 809B4080 00000000 */ nop
-/* 00764 809B4084 920301A0 */ lbu $v1, 0x01A0($s0) ## 000001A0
-/* 00768 809B4088 30630002 */ andi $v1, $v1, 0x0002 ## $v1 = 00000000
-/* 0076C 809B408C 0003182B */ sltu $v1, $zero, $v1
-.L809B4090:
-/* 00770 809B4090 14600006 */ bne $v1, $zero, .L809B40AC
-/* 00774 809B4094 00000000 */ nop
-/* 00778 809B4098 920F024A */ lbu $t7, 0x024A($s0) ## 0000024A
-/* 0077C 809B409C 26040210 */ addiu $a0, $s0, 0x0210 ## $a0 = 00000210
-/* 00780 809B40A0 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
-/* 00784 809B40A4 11E000A8 */ beq $t7, $zero, .L809B4348
-/* 00788 809B40A8 00000000 */ nop
-.L809B40AC:
-/* 0078C 809B40AC 14200039 */ bne $at, $zero, .L809B4194
-/* 00790 809B40B0 8FA4009C */ lw $a0, 0x009C($sp)
-/* 00794 809B40B4 10600013 */ beq $v1, $zero, .L809B4104
-/* 00798 809B40B8 24071825 */ addiu $a3, $zero, 0x1825 ## $a3 = 00001825
-/* 0079C 809B40BC C6120024 */ lwc1 $f18, 0x0024($s0) ## 00000024
-/* 007A0 809B40C0 C6040100 */ lwc1 $f4, 0x0100($s0) ## 00000100
-/* 007A4 809B40C4 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
-/* 007A8 809B40C8 44810000 */ mtc1 $at, $f0 ## $f0 = 0.50
-/* 007AC 809B40CC 46049200 */ add.s $f8, $f18, $f4
-/* 007B0 809B40D0 C60A0028 */ lwc1 $f10, 0x0028($s0) ## 00000028
-/* 007B4 809B40D4 C6100104 */ lwc1 $f16, 0x0104($s0) ## 00000104
-/* 007B8 809B40D8 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-/* 007BC 809B40DC 46004182 */ mul.s $f6, $f8, $f0
-/* 007C0 809B40E0 46105480 */ add.s $f18, $f10, $f16
-/* 007C4 809B40E4 C608002C */ lwc1 $f8, 0x002C($s0) ## 0000002C
-/* 007C8 809B40E8 46009102 */ mul.s $f4, $f18, $f0
-/* 007CC 809B40EC E6060024 */ swc1 $f6, 0x0024($s0) ## 00000024
-/* 007D0 809B40F0 C6060108 */ lwc1 $f6, 0x0108($s0) ## 00000108
-/* 007D4 809B40F4 46064280 */ add.s $f10, $f8, $f6
-/* 007D8 809B40F8 E6040028 */ swc1 $f4, 0x0028($s0) ## 00000028
-/* 007DC 809B40FC 46005402 */ mul.s $f16, $f10, $f0
-/* 007E0 809B4100 E610002C */ swc1 $f16, 0x002C($s0) ## 0000002C
-.L809B4104:
-/* 007E4 809B4104 2401000A */ addiu $at, $zero, 0x000A ## $at = 0000000A
-/* 007E8 809B4108 14410013 */ bne $v0, $at, .L809B4158
-/* 007EC 809B410C 3C198016 */ lui $t9, %hi(gGameInfo)
-/* 007F0 809B4110 8F39FA90 */ lw $t9, %lo(gGameInfo)($t9)
-/* 007F4 809B4114 2418FFFF */ addiu $t8, $zero, 0xFFFF ## $t8 = FFFFFFFF
-/* 007F8 809B4118 24060056 */ addiu $a2, $zero, 0x0056 ## $a2 = 00000056
-/* 007FC 809B411C A7380D38 */ sh $t8, 0x0D38($t9) ## 80160D38
-/* 00800 809B4120 C6120028 */ lwc1 $f18, 0x0028($s0) ## 00000028
-/* 00804 809B4124 8E070024 */ lw $a3, 0x0024($s0) ## 00000024
-/* 00808 809B4128 8FA5009C */ lw $a1, 0x009C($sp)
-/* 0080C 809B412C E7B20010 */ swc1 $f18, 0x0010($sp)
-/* 00810 809B4130 C604002C */ lwc1 $f4, 0x002C($s0) ## 0000002C
-/* 00814 809B4134 AFA00024 */ sw $zero, 0x0024($sp)
-/* 00818 809B4138 AFA00020 */ sw $zero, 0x0020($sp)
-/* 0081C 809B413C AFA0001C */ sw $zero, 0x001C($sp)
-/* 00820 809B4140 AFA00018 */ sw $zero, 0x0018($sp)
-/* 00824 809B4144 24A41C24 */ addiu $a0, $a1, 0x1C24 ## $a0 = 00001C48
-/* 00828 809B4148 0C00C7D4 */ jal Actor_Spawn
- ## ActorSpawn
-/* 0082C 809B414C E7A40014 */ swc1 $f4, 0x0014($sp)
-/* 00830 809B4150 10000001 */ beq $zero, $zero, .L809B4158
-/* 00834 809B4154 2407182B */ addiu $a3, $zero, 0x182B ## $a3 = 0000182B
-.L809B4158:
-/* 00838 809B4158 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
-/* 0083C 809B415C AFA50044 */ sw $a1, 0x0044($sp)
-/* 00840 809B4160 8FA4009C */ lw $a0, 0x009C($sp)
-/* 00844 809B4164 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
-/* 00848 809B4168 0C00A700 */ jal EffectSsStone1_Spawn
-/* 0084C 809B416C A7A70072 */ sh $a3, 0x0072($sp)
-/* 00850 809B4170 97A70072 */ lhu $a3, 0x0072($sp)
-/* 00854 809B4174 8FA4009C */ lw $a0, 0x009C($sp)
-/* 00858 809B4178 8FA50044 */ lw $a1, 0x0044($sp)
-/* 0085C 809B417C 0C01AEB6 */ jal Audio_PlaySoundAtPosition
-
-/* 00860 809B4180 24060014 */ addiu $a2, $zero, 0x0014 ## $a2 = 00000014
-/* 00864 809B4184 0C00B55C */ jal Actor_Kill
-
-/* 00868 809B4188 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 0086C 809B418C 1000009E */ beq $zero, $zero, .L809B4408
-/* 00870 809B4190 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-.L809B4194:
-/* 00874 809B4194 26070024 */ addiu $a3, $s0, 0x0024 ## $a3 = 00000024
-/* 00878 809B4198 AFA70044 */ sw $a3, 0x0044($sp)
-/* 0087C 809B419C 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
-/* 00880 809B41A0 24060096 */ addiu $a2, $zero, 0x0096 ## $a2 = 00000096
-/* 00884 809B41A4 0C00A732 */ jal EffectSsHitMark_SpawnCustomScale
-/* 00888 809B41A8 AFA30050 */ sw $v1, 0x0050($sp)
-/* 0088C 809B41AC 8FA30050 */ lw $v1, 0x0050($sp)
-/* 00890 809B41B0 5060004D */ beql $v1, $zero, .L809B42E8
-/* 00894 809B41B4 9208024A */ lbu $t0, 0x024A($s0) ## 0000024A
-/* 00898 809B41B8 8E0301C8 */ lw $v1, 0x01C8($s0) ## 000001C8
-/* 0089C 809B41BC 24010004 */ addiu $at, $zero, 0x0004 ## $at = 00000004
-/* 008A0 809B41C0 90690014 */ lbu $t1, 0x0014($v1) ## 00000014
-/* 008A4 809B41C4 51210048 */ beql $t1, $at, .L809B42E8
-/* 008A8 809B41C8 9208024A */ lbu $t0, 0x024A($s0) ## 0000024A
-/* 008AC 809B41CC 8E020194 */ lw $v0, 0x0194($s0) ## 00000194
-/* 008B0 809B41D0 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
-/* 008B4 809B41D4 8C4A0130 */ lw $t2, 0x0130($v0) ## 00000130
-/* 008B8 809B41D8 51400024 */ beql $t2, $zero, .L809B426C
-/* 008BC 809B41DC 92090249 */ lbu $t1, 0x0249($s0) ## 00000249
-/* 008C0 809B41E0 920B01A0 */ lbu $t3, 0x01A0($s0) ## 000001A0
-/* 008C4 809B41E4 316C0004 */ andi $t4, $t3, 0x0004 ## $t4 = 00000000
-/* 008C8 809B41E8 55800020 */ bnel $t4, $zero, .L809B426C
-/* 008CC 809B41EC 92090249 */ lbu $t1, 0x0249($s0) ## 00000249
-/* 008D0 809B41F0 8C4D0004 */ lw $t5, 0x0004($v0) ## 00000004
-/* 008D4 809B41F4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 008D8 809B41F8 31AE4000 */ andi $t6, $t5, 0x4000 ## $t6 = 00000000
-/* 008DC 809B41FC 51C0001B */ beql $t6, $zero, .L809B426C
-/* 008E0 809B4200 92090249 */ lbu $t1, 0x0249($s0) ## 00000249
-/* 008E4 809B4204 AE02024C */ sw $v0, 0x024C($s0) ## 0000024C
-/* 008E8 809B4208 AFA2006C */ sw $v0, 0x006C($sp)
-/* 008EC 809B420C 0C26CF76 */ jal func_809B3DD8
-/* 008F0 809B4210 8FA5009C */ lw $a1, 0x009C($sp)
-/* 008F4 809B4214 8FA2006C */ lw $v0, 0x006C($sp)
-/* 008F8 809B4218 8FA50044 */ lw $a1, 0x0044($sp)
-/* 008FC 809B421C 26060250 */ addiu $a2, $s0, 0x0250 ## $a2 = 00000250
-/* 00900 809B4220 0C01DFB4 */ jal Math_Vec3f_Diff
- ## Vec3f_Sub
-/* 00904 809B4224 24440024 */ addiu $a0, $v0, 0x0024 ## $a0 = 00000024
-/* 00908 809B4228 8FA2006C */ lw $v0, 0x006C($sp)
-/* 0090C 809B422C 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
-/* 00910 809B4230 44810000 */ mtc1 $at, $f0 ## $f0 = 0.50
-/* 00914 809B4234 8C4F0004 */ lw $t7, 0x0004($v0) ## 00000004
-/* 00918 809B4238 35F88000 */ ori $t8, $t7, 0x8000 ## $t8 = 00008000
-/* 0091C 809B423C AC580004 */ sw $t8, 0x0004($v0) ## 00000004
-/* 00920 809B4240 C6080068 */ lwc1 $f8, 0x0068($s0) ## 00000068
-/* 00924 809B4244 C60A0060 */ lwc1 $f10, 0x0060($s0) ## 00000060
-/* 00928 809B4248 921901A0 */ lbu $t9, 0x01A0($s0) ## 000001A0
-/* 0092C 809B424C 46004182 */ mul.s $f6, $f8, $f0
-/* 00930 809B4250 3328FFFD */ andi $t0, $t9, 0xFFFD ## $t0 = 00000000
-/* 00934 809B4254 46005402 */ mul.s $f16, $f10, $f0
-/* 00938 809B4258 A20801A0 */ sb $t0, 0x01A0($s0) ## 000001A0
-/* 0093C 809B425C E6060068 */ swc1 $f6, 0x0068($s0) ## 00000068
-/* 00940 809B4260 10000068 */ beq $zero, $zero, .L809B4404
-/* 00944 809B4264 E6100060 */ swc1 $f16, 0x0060($s0) ## 00000060
-/* 00948 809B4268 92090249 */ lbu $t1, 0x0249($s0) ## 00000249
-.L809B426C:
-/* 0094C 809B426C 352B0001 */ ori $t3, $t1, 0x0001 ## $t3 = 00000001
-/* 00950 809B4270 A20B0249 */ sb $t3, 0x0249($s0) ## 00000249
-/* 00954 809B4274 356C0002 */ ori $t4, $t3, 0x0002 ## $t4 = 00000003
-/* 00958 809B4278 A20C0249 */ sb $t4, 0x0249($s0) ## 00000249
-/* 0095C 809B427C 906D0016 */ lbu $t5, 0x0016($v1) ## 00000016
-/* 00960 809B4280 31AE0002 */ andi $t6, $t5, 0x0002 ## $t6 = 00000000
-/* 00964 809B4284 11C00010 */ beq $t6, $zero, .L809B42C8
-/* 00968 809B4288 00000000 */ nop
-/* 0096C 809B428C 846F000E */ lh $t7, 0x000E($v1) ## 0000000E
-/* 00970 809B4290 448F9000 */ mtc1 $t7, $f18 ## $f18 = 0.00
-/* 00974 809B4294 00000000 */ nop
-/* 00978 809B4298 46809120 */ cvt.s.w $f4, $f18
-/* 0097C 809B429C E6040024 */ swc1 $f4, 0x0024($s0) ## 00000024
-/* 00980 809B42A0 84780010 */ lh $t8, 0x0010($v1) ## 00000010
-/* 00984 809B42A4 44984000 */ mtc1 $t8, $f8 ## $f8 = 0.00
-/* 00988 809B42A8 00000000 */ nop
-/* 0098C 809B42AC 468041A0 */ cvt.s.w $f6, $f8
-/* 00990 809B42B0 E6060028 */ swc1 $f6, 0x0028($s0) ## 00000028
-/* 00994 809B42B4 84790012 */ lh $t9, 0x0012($v1) ## 00000012
-/* 00998 809B42B8 44995000 */ mtc1 $t9, $f10 ## $f10 = 0.00
-/* 0099C 809B42BC 00000000 */ nop
-/* 009A0 809B42C0 46805420 */ cvt.s.w $f16, $f10
-/* 009A4 809B42C4 E610002C */ swc1 $f16, 0x002C($s0) ## 0000002C
-.L809B42C8:
-/* 009A8 809B42C8 0C26CF3B */ jal func_809B3CEC
-/* 009AC 809B42CC 8FA4009C */ lw $a0, 0x009C($sp)
-/* 009B0 809B42D0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 009B4 809B42D4 0C00BE0A */ jal Audio_PlayActorSound2
-
-/* 009B8 809B42D8 24051814 */ addiu $a1, $zero, 0x1814 ## $a1 = 00001814
-/* 009BC 809B42DC 1000004A */ beq $zero, $zero, .L809B4408
-/* 009C0 809B42E0 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-/* 009C4 809B42E4 9208024A */ lbu $t0, 0x024A($s0) ## 0000024A
-.L809B42E8:
-/* 009C8 809B42E8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 009CC 809B42EC 3C05809B */ lui $a1, %hi(func_809B45E0) ## $a1 = 809B0000
-/* 009D0 809B42F0 51000045 */ beql $t0, $zero, .L809B4408
-/* 009D4 809B42F4 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-/* 009D8 809B42F8 0C26CE48 */ jal func_809B3920
-/* 009DC 809B42FC 24A545E0 */ addiu $a1, $a1, %lo(func_809B45E0) ## $a1 = 809B45E0
-/* 009E0 809B4300 3C050400 */ lui $a1, %hi(gArrow2Anim) ## $a1 = 04000000
-/* 009E4 809B4304 24A5436C */ addiu $a1, $a1, %lo(gArrow2Anim) ## $a1 = 0400436C
-/* 009E8 809B4308 0C02947A */ jal Animation_PlayOnce
-/* 009EC 809B430C 2604014C */ addiu $a0, $s0, 0x014C ## $a0 = 0000014C
-/* 009F0 809B4310 8609001C */ lh $t1, 0x001C($s0) ## 0000001C
-/* 009F4 809B4314 240A003C */ addiu $t2, $zero, 0x003C ## $t2 = 0000003C
-/* 009F8 809B4318 240B0014 */ addiu $t3, $zero, 0x0014 ## $t3 = 00000014
-/* 009FC 809B431C 05200003 */ bltz $t1, .L809B432C
-/* 00A00 809B4320 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00A04 809B4324 10000002 */ beq $zero, $zero, .L809B4330
-/* 00A08 809B4328 A20A0248 */ sb $t2, 0x0248($s0) ## 00000248
-.L809B432C:
-/* 00A0C 809B432C A20B0248 */ sb $t3, 0x0248($s0) ## 00000248
-.L809B4330:
-/* 00A10 809B4330 0C00BE0A */ jal Audio_PlayActorSound2
-
-/* 00A14 809B4334 24051815 */ addiu $a1, $zero, 0x1815 ## $a1 = 00001815
-/* 00A18 809B4338 920C0249 */ lbu $t4, 0x0249($s0) ## 00000249
-/* 00A1C 809B433C 358D0001 */ ori $t5, $t4, 0x0001 ## $t5 = 00000001
-/* 00A20 809B4340 10000030 */ beq $zero, $zero, .L809B4404
-/* 00A24 809B4344 A20D0249 */ sb $t5, 0x0249($s0) ## 00000249
-.L809B4348:
-/* 00A28 809B4348 0C01DF90 */ jal Math_Vec3f_Copy
- ## Vec3f_Copy
-/* 00A2C 809B434C AFA50044 */ sw $a1, 0x0044($sp)
-/* 00A30 809B4350 0C00B638 */ jal Actor_MoveForward
-
-/* 00A34 809B4354 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
-/* 00A38 809B4358 8FA4009C */ lw $a0, 0x009C($sp)
-/* 00A3C 809B435C 260E0074 */ addiu $t6, $s0, 0x0074 ## $t6 = 00000074
-/* 00A40 809B4360 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
-/* 00A44 809B4364 24180001 */ addiu $t8, $zero, 0x0001 ## $t8 = 00000001
-/* 00A48 809B4368 24190001 */ addiu $t9, $zero, 0x0001 ## $t9 = 00000001
-/* 00A4C 809B436C 24080001 */ addiu $t0, $zero, 0x0001 ## $t0 = 00000001
-/* 00A50 809B4370 27A90090 */ addiu $t1, $sp, 0x0090 ## $t1 = FFFFFFF8
-/* 00A54 809B4374 AFA90024 */ sw $t1, 0x0024($sp)
-/* 00A58 809B4378 AFA80020 */ sw $t0, 0x0020($sp)
-/* 00A5C 809B437C AFB9001C */ sw $t9, 0x001C($sp)
-/* 00A60 809B4380 AFB80018 */ sw $t8, 0x0018($sp)
-/* 00A64 809B4384 AFAF0014 */ sw $t7, 0x0014($sp)
-/* 00A68 809B4388 AFAE0010 */ sw $t6, 0x0010($sp)
-/* 00A6C 809B438C 26050100 */ addiu $a1, $s0, 0x0100 ## $a1 = 00000100
-/* 00A70 809B4390 8FA60044 */ lw $a2, 0x0044($sp)
-/* 00A74 809B4394 27A70084 */ addiu $a3, $sp, 0x0084 ## $a3 = FFFFFFEC
-/* 00A78 809B4398 0C00F80B */ jal BgCheck_ProjectileLineTest
-/* 00A7C 809B439C 248407C0 */ addiu $a0, $a0, 0x07C0 ## $a0 = 000007C0
-/* 00A80 809B43A0 304A00FF */ andi $t2, $v0, 0x00FF ## $t2 = 00000000
-/* 00A84 809B43A4 1140000E */ beq $t2, $zero, .L809B43E0
-/* 00A88 809B43A8 A202024A */ sb $v0, 0x024A($s0) ## 0000024A
-/* 00A8C 809B43AC 8E060074 */ lw $a2, 0x0074($s0) ## 00000074
-/* 00A90 809B43B0 27AB0084 */ addiu $t3, $sp, 0x0084 ## $t3 = FFFFFFEC
-/* 00A94 809B43B4 AFAB0010 */ sw $t3, 0x0010($sp)
-/* 00A98 809B43B8 8FA4009C */ lw $a0, 0x009C($sp)
-/* 00A9C 809B43BC 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
-/* 00AA0 809B43C0 0C00BE7B */ jal func_8002F9EC
-/* 00AA4 809B43C4 8FA70090 */ lw $a3, 0x0090($sp)
-/* 00AA8 809B43C8 27A40078 */ addiu $a0, $sp, 0x0078 ## $a0 = FFFFFFE0
-/* 00AAC 809B43CC 0C01DF90 */ jal Math_Vec3f_Copy
- ## Vec3f_Copy
-/* 00AB0 809B43D0 8FA50044 */ lw $a1, 0x0044($sp)
-/* 00AB4 809B43D4 8FA40044 */ lw $a0, 0x0044($sp)
-/* 00AB8 809B43D8 0C01DF90 */ jal Math_Vec3f_Copy
- ## Vec3f_Copy
-/* 00ABC 809B43DC 27A50084 */ addiu $a1, $sp, 0x0084 ## $a1 = FFFFFFEC
-.L809B43E0:
-/* 00AC0 809B43E0 860C001C */ lh $t4, 0x001C($s0) ## 0000001C
-/* 00AC4 809B43E4 29810009 */ slti $at, $t4, 0x0009
-/* 00AC8 809B43E8 50200007 */ beql $at, $zero, .L809B4408
-/* 00ACC 809B43EC 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-/* 00AD0 809B43F0 C60E0060 */ lwc1 $f14, 0x0060($s0) ## 00000060
-/* 00AD4 809B43F4 C60C0068 */ lwc1 $f12, 0x0068($s0) ## 00000068
-/* 00AD8 809B43F8 0C034199 */ jal Math_Atan2S
-
-/* 00ADC 809B43FC 46007387 */ neg.s $f14, $f14
-/* 00AE0 809B4400 A60200B4 */ sh $v0, 0x00B4($s0) ## 000000B4
-.L809B4404:
-/* 00AE4 809B4404 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-.L809B4408:
-/* 00AE8 809B4408 50400071 */ beql $v0, $zero, .L809B45D0
-/* 00AEC 809B440C 8FBF0034 */ lw $ra, 0x0034($sp)
-/* 00AF0 809B4410 8C4D0130 */ lw $t5, 0x0130($v0) ## 00000130
-/* 00AF4 809B4414 26040210 */ addiu $a0, $s0, 0x0210 ## $a0 = 00000210
-/* 00AF8 809B4418 26050250 */ addiu $a1, $s0, 0x0250 ## $a1 = 00000250
-/* 00AFC 809B441C 11A0006A */ beq $t5, $zero, .L809B45C8
-/* 00B00 809B4420 8FAE009C */ lw $t6, 0x009C($sp)
-/* 00B04 809B4424 25CF07C0 */ addiu $t7, $t6, 0x07C0 ## $t7 = 000007C0
-/* 00B08 809B4428 AFAF003C */ sw $t7, 0x003C($sp)
-/* 00B0C 809B442C 27A60060 */ addiu $a2, $sp, 0x0060 ## $a2 = FFFFFFC8
-/* 00B10 809B4430 0C01DFA7 */ jal Math_Vec3f_Sum
- ## Vec3f_Add
-/* 00B14 809B4434 AFA50040 */ sw $a1, 0x0040($sp)
-/* 00B18 809B4438 8FA40044 */ lw $a0, 0x0044($sp)
-/* 00B1C 809B443C 8FA50040 */ lw $a1, 0x0040($sp)
-/* 00B20 809B4440 0C01DFA7 */ jal Math_Vec3f_Sum
- ## Vec3f_Add
-/* 00B24 809B4444 27A60054 */ addiu $a2, $sp, 0x0054 ## $a2 = FFFFFFBC
-/* 00B28 809B4448 27B80094 */ addiu $t8, $sp, 0x0094 ## $t8 = FFFFFFFC
-/* 00B2C 809B444C 24190001 */ addiu $t9, $zero, 0x0001 ## $t9 = 00000001
-/* 00B30 809B4450 24080001 */ addiu $t0, $zero, 0x0001 ## $t0 = 00000001
-/* 00B34 809B4454 24090001 */ addiu $t1, $zero, 0x0001 ## $t1 = 00000001
-/* 00B38 809B4458 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001
-/* 00B3C 809B445C 27AB0090 */ addiu $t3, $sp, 0x0090 ## $t3 = FFFFFFF8
-/* 00B40 809B4460 AFAB0024 */ sw $t3, 0x0024($sp)
-/* 00B44 809B4464 AFAA0020 */ sw $t2, 0x0020($sp)
-/* 00B48 809B4468 AFA9001C */ sw $t1, 0x001C($sp)
-/* 00B4C 809B446C AFA80018 */ sw $t0, 0x0018($sp)
-/* 00B50 809B4470 AFB90014 */ sw $t9, 0x0014($sp)
-/* 00B54 809B4474 AFB80010 */ sw $t8, 0x0010($sp)
-/* 00B58 809B4478 8FA4003C */ lw $a0, 0x003C($sp)
-/* 00B5C 809B447C 27A50060 */ addiu $a1, $sp, 0x0060 ## $a1 = FFFFFFC8
-/* 00B60 809B4480 27A60054 */ addiu $a2, $sp, 0x0054 ## $a2 = FFFFFFBC
-/* 00B64 809B4484 0C00F7A1 */ jal BgCheck_EntityLineTest1
-/* 00B68 809B4488 27A70084 */ addiu $a3, $sp, 0x0084 ## $a3 = FFFFFFEC
-/* 00B6C 809B448C 1040003D */ beq $v0, $zero, .L809B4584
-/* 00B70 809B4490 8FA40044 */ lw $a0, 0x0044($sp)
-/* 00B74 809B4494 C7B20084 */ lwc1 $f18, 0x0084($sp)
-/* 00B78 809B4498 C7A40054 */ lwc1 $f4, 0x0054($sp)
-/* 00B7C 809B449C C7A80084 */ lwc1 $f8, 0x0084($sp)
-/* 00B80 809B44A0 3C01BF80 */ lui $at, 0xBF80 ## $at = BF800000
-/* 00B84 809B44A4 4612203E */ c.le.s $f4, $f18
-/* 00B88 809B44A8 00000000 */ nop
-/* 00B8C 809B44AC 45020008 */ bc1fl .L809B44D0
-/* 00B90 809B44B0 44816000 */ mtc1 $at, $f12 ## $f12 = -1.00
-/* 00B94 809B44B4 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
-/* 00B98 809B44B8 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
-/* 00B9C 809B44BC 3C01BF80 */ lui $at, 0xBF80 ## $at = BF800000
-/* 00BA0 809B44C0 44816000 */ mtc1 $at, $f12 ## $f12 = -1.00
-/* 00BA4 809B44C4 10000005 */ beq $zero, $zero, .L809B44DC
-/* 00BA8 809B44C8 46001006 */ mov.s $f0, $f2
-/* 00BAC 809B44CC 44816000 */ mtc1 $at, $f12 ## $f12 = -1.00
-.L809B44D0:
-/* 00BB0 809B44D0 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
-/* 00BB4 809B44D4 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
-/* 00BB8 809B44D8 46006006 */ mov.s $f0, $f12
-.L809B44DC:
-/* 00BBC 809B44DC 46080180 */ add.s $f6, $f0, $f8
-/* 00BC0 809B44E0 8E0C024C */ lw $t4, 0x024C($s0) ## 0000024C
-/* 00BC4 809B44E4 E5860024 */ swc1 $f6, 0x0024($t4) ## 00000024
-/* 00BC8 809B44E8 C7AA0088 */ lwc1 $f10, 0x0088($sp)
-/* 00BCC 809B44EC C7B00058 */ lwc1 $f16, 0x0058($sp)
-/* 00BD0 809B44F0 C7B20088 */ lwc1 $f18, 0x0088($sp)
-/* 00BD4 809B44F4 460A803E */ c.le.s $f16, $f10
-/* 00BD8 809B44F8 00000000 */ nop
-/* 00BDC 809B44FC 45020004 */ bc1fl .L809B4510
-/* 00BE0 809B4500 46006006 */ mov.s $f0, $f12
-/* 00BE4 809B4504 10000002 */ beq $zero, $zero, .L809B4510
-/* 00BE8 809B4508 46001006 */ mov.s $f0, $f2
-/* 00BEC 809B450C 46006006 */ mov.s $f0, $f12
-.L809B4510:
-/* 00BF0 809B4510 46120100 */ add.s $f4, $f0, $f18
-/* 00BF4 809B4514 8E0D024C */ lw $t5, 0x024C($s0) ## 0000024C
-/* 00BF8 809B4518 E5A40028 */ swc1 $f4, 0x0028($t5) ## 00000028
-/* 00BFC 809B451C C7A8008C */ lwc1 $f8, 0x008C($sp)
-/* 00C00 809B4520 C7A6005C */ lwc1 $f6, 0x005C($sp)
-/* 00C04 809B4524 C7AA008C */ lwc1 $f10, 0x008C($sp)
-/* 00C08 809B4528 4608303E */ c.le.s $f6, $f8
-/* 00C0C 809B452C 00000000 */ nop
-/* 00C10 809B4530 45020004 */ bc1fl .L809B4544
-/* 00C14 809B4534 46006006 */ mov.s $f0, $f12
-/* 00C18 809B4538 10000002 */ beq $zero, $zero, .L809B4544
-/* 00C1C 809B453C 46001006 */ mov.s $f0, $f2
-/* 00C20 809B4540 46006006 */ mov.s $f0, $f12
-.L809B4544:
-/* 00C24 809B4544 460A0400 */ add.s $f16, $f0, $f10
-/* 00C28 809B4548 8E0E024C */ lw $t6, 0x024C($s0) ## 0000024C
-/* 00C2C 809B454C E5D0002C */ swc1 $f16, 0x002C($t6) ## 0000002C
-/* 00C30 809B4550 8E04024C */ lw $a0, 0x024C($s0) ## 0000024C
-/* 00C34 809B4554 8FA60040 */ lw $a2, 0x0040($sp)
-/* 00C38 809B4558 8FA50044 */ lw $a1, 0x0044($sp)
-/* 00C3C 809B455C 0C01DFB4 */ jal Math_Vec3f_Diff
- ## Vec3f_Sub
-/* 00C40 809B4560 24840024 */ addiu $a0, $a0, 0x0024 ## $a0 = 00000024
-/* 00C44 809B4564 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-/* 00C48 809B4568 3C01FFFF */ lui $at, 0xFFFF ## $at = FFFF0000
-/* 00C4C 809B456C 34217FFF */ ori $at, $at, 0x7FFF ## $at = FFFF7FFF
-/* 00C50 809B4570 8C4F0004 */ lw $t7, 0x0004($v0) ## 00000004
-/* 00C54 809B4574 01E1C024 */ and $t8, $t7, $at
-/* 00C58 809B4578 AC580004 */ sw $t8, 0x0004($v0) ## 00000004
-/* 00C5C 809B457C 10000005 */ beq $zero, $zero, .L809B4594
-/* 00C60 809B4580 AE00024C */ sw $zero, 0x024C($s0) ## 0000024C
-.L809B4584:
-/* 00C64 809B4584 8E06024C */ lw $a2, 0x024C($s0) ## 0000024C
-/* 00C68 809B4588 8FA50040 */ lw $a1, 0x0040($sp)
-/* 00C6C 809B458C 0C01DFA7 */ jal Math_Vec3f_Sum
- ## Vec3f_Add
-/* 00C70 809B4590 24C60024 */ addiu $a2, $a2, 0x0024 ## $a2 = 00000024
-.L809B4594:
-/* 00C74 809B4594 9219024A */ lbu $t9, 0x024A($s0) ## 0000024A
-/* 00C78 809B4598 5320000D */ beql $t9, $zero, .L809B45D0
-/* 00C7C 809B459C 8FBF0034 */ lw $ra, 0x0034($sp)
-/* 00C80 809B45A0 8E02024C */ lw $v0, 0x024C($s0) ## 0000024C
-/* 00C84 809B45A4 5040000A */ beql $v0, $zero, .L809B45D0
-/* 00C88 809B45A8 8FBF0034 */ lw $ra, 0x0034($sp)
-/* 00C8C 809B45AC 8C480004 */ lw $t0, 0x0004($v0) ## 00000004
-/* 00C90 809B45B0 3C01FFFF */ lui $at, 0xFFFF ## $at = FFFF0000
-/* 00C94 809B45B4 34217FFF */ ori $at, $at, 0x7FFF ## $at = FFFF7FFF
-/* 00C98 809B45B8 01014824 */ and $t1, $t0, $at
-/* 00C9C 809B45BC AC490004 */ sw $t1, 0x0004($v0) ## 00000004
-/* 00CA0 809B45C0 10000002 */ beq $zero, $zero, .L809B45CC
-/* 00CA4 809B45C4 AE00024C */ sw $zero, 0x024C($s0) ## 0000024C
-.L809B45C8:
-/* 00CA8 809B45C8 AE00024C */ sw $zero, 0x024C($s0) ## 0000024C
-.L809B45CC:
-/* 00CAC 809B45CC 8FBF0034 */ lw $ra, 0x0034($sp)
-.L809B45D0:
-/* 00CB0 809B45D0 8FB00030 */ lw $s0, 0x0030($sp)
-/* 00CB4 809B45D4 27BD0098 */ addiu $sp, $sp, 0x0098 ## $sp = 00000000
-/* 00CB8 809B45D8 03E00008 */ jr $ra
-/* 00CBC 809B45DC 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B45E0.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B45E0.s
deleted file mode 100644
index 14c4f731a0..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B45E0.s
+++ /dev/null
@@ -1,30 +0,0 @@
-glabel func_809B45E0
-/* 00CC0 809B45E0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
-/* 00CC4 809B45E4 AFA5001C */ sw $a1, 0x001C($sp)
-/* 00CC8 809B45E8 00802825 */ or $a1, $a0, $zero ## $a1 = 00000000
-/* 00CCC 809B45EC AFBF0014 */ sw $ra, 0x0014($sp)
-/* 00CD0 809B45F0 AFA40018 */ sw $a0, 0x0018($sp)
-/* 00CD4 809B45F4 AFA50018 */ sw $a1, 0x0018($sp)
-/* 00CD8 809B45F8 0C02927F */ jal SkelAnime_Update
-
-/* 00CDC 809B45FC 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
-/* 00CE0 809B4600 8FA50018 */ lw $a1, 0x0018($sp)
-/* 00CE4 809B4604 90A20248 */ lbu $v0, 0x0248($a1) ## 00000248
-/* 00CE8 809B4608 14400003 */ bne $v0, $zero, .L809B4618
-/* 00CEC 809B460C 244EFFFF */ addiu $t6, $v0, 0xFFFF ## $t6 = FFFFFFFF
-/* 00CF0 809B4610 10000003 */ beq $zero, $zero, .L809B4620
-/* 00CF4 809B4614 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
-.L809B4618:
-/* 00CF8 809B4618 A0AE0248 */ sb $t6, 0x0248($a1) ## 00000248
-/* 00CFC 809B461C 31C300FF */ andi $v1, $t6, 0x00FF ## $v1 = 000000FF
-.L809B4620:
-/* 00D00 809B4620 54600004 */ bnel $v1, $zero, .L809B4634
-/* 00D04 809B4624 8FBF0014 */ lw $ra, 0x0014($sp)
-/* 00D08 809B4628 0C00B55C */ jal Actor_Kill
-
-/* 00D0C 809B462C 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
-/* 00D10 809B4630 8FBF0014 */ lw $ra, 0x0014($sp)
-.L809B4634:
-/* 00D14 809B4634 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
-/* 00D18 809B4638 03E00008 */ jr $ra
-/* 00D1C 809B463C 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4640.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4640.s
deleted file mode 100644
index 2367389cb3..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4640.s
+++ /dev/null
@@ -1,33 +0,0 @@
-glabel func_809B4640
-/* 00D20 809B4640 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
-/* 00D24 809B4644 AFA5001C */ sw $a1, 0x001C($sp)
-/* 00D28 809B4648 00802825 */ or $a1, $a0, $zero ## $a1 = 00000000
-/* 00D2C 809B464C AFBF0014 */ sw $ra, 0x0014($sp)
-/* 00D30 809B4650 AFA40018 */ sw $a0, 0x0018($sp)
-/* 00D34 809B4654 AFA50018 */ sw $a1, 0x0018($sp)
-/* 00D38 809B4658 0C02927F */ jal SkelAnime_Update
-
-/* 00D3C 809B465C 2484014C */ addiu $a0, $a0, 0x014C ## $a0 = 0000014C
-/* 00D40 809B4660 0C00B638 */ jal Actor_MoveForward
-
-/* 00D44 809B4664 8FA40018 */ lw $a0, 0x0018($sp)
-/* 00D48 809B4668 8FA50018 */ lw $a1, 0x0018($sp)
-/* 00D4C 809B466C 90A20248 */ lbu $v0, 0x0248($a1) ## 00000248
-/* 00D50 809B4670 14400003 */ bne $v0, $zero, .L809B4680
-/* 00D54 809B4674 244EFFFF */ addiu $t6, $v0, 0xFFFF ## $t6 = FFFFFFFF
-/* 00D58 809B4678 10000003 */ beq $zero, $zero, .L809B4688
-/* 00D5C 809B467C 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
-.L809B4680:
-/* 00D60 809B4680 A0AE0248 */ sb $t6, 0x0248($a1) ## 00000248
-/* 00D64 809B4684 31C300FF */ andi $v1, $t6, 0x00FF ## $v1 = 000000FF
-.L809B4688:
-/* 00D68 809B4688 54600004 */ bnel $v1, $zero, .L809B469C
-/* 00D6C 809B468C 8FBF0014 */ lw $ra, 0x0014($sp)
-/* 00D70 809B4690 0C00B55C */ jal Actor_Kill
-
-/* 00D74 809B4694 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
-/* 00D78 809B4698 8FBF0014 */ lw $ra, 0x0014($sp)
-.L809B469C:
-/* 00D7C 809B469C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
-/* 00D80 809B46A0 03E00008 */ jr $ra
-/* 00D84 809B46A4 00000000 */ nop
diff --git a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4800.s b/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4800.s
deleted file mode 100644
index 4a100da78f..0000000000
--- a/asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4800.s
+++ /dev/null
@@ -1,95 +0,0 @@
-glabel func_809B4800
-/* 00EE0 809B4800 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0
-/* 00EE4 809B4804 AFB00020 */ sw $s0, 0x0020($sp)
-/* 00EE8 809B4808 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
-/* 00EEC 809B480C AFBF0024 */ sw $ra, 0x0024($sp)
-/* 00EF0 809B4810 AFA50054 */ sw $a1, 0x0054($sp)
-/* 00EF4 809B4814 3C04809B */ lui $a0, %hi(D_809B4EA0) ## $a0 = 809B0000
-/* 00EF8 809B4818 24844EA0 */ addiu $a0, $a0, %lo(D_809B4EA0) ## $a0 = 809B4EA0
-/* 00EFC 809B481C 0C0346BD */ jal Matrix_MultVec3f
-/* 00F00 809B4820 2605021C */ addiu $a1, $s0, 0x021C ## $a1 = 0000021C
-/* 00F04 809B4824 8E0E025C */ lw $t6, 0x025C($s0) ## 0000025C
-/* 00F08 809B4828 3C0F809B */ lui $t7, %hi(func_809B3FDC) ## $t7 = 809B0000
-/* 00F0C 809B482C 25EF3FDC */ addiu $t7, $t7, %lo(func_809B3FDC) ## $t7 = 809B3FDC
-/* 00F10 809B4830 15CF0048 */ bne $t6, $t7, .L809B4954
-/* 00F14 809B4834 3C04809B */ lui $a0, %hi(D_809B4E88) ## $a0 = 809B0000
-/* 00F18 809B4838 24844E88 */ addiu $a0, $a0, %lo(D_809B4E88) ## $a0 = 809B4E88
-/* 00F1C 809B483C 0C0346BD */ jal Matrix_MultVec3f
-/* 00F20 809B4840 27A50044 */ addiu $a1, $sp, 0x0044 ## $a1 = FFFFFFF4
-/* 00F24 809B4844 3C04809B */ lui $a0, %hi(D_809B4E94) ## $a0 = 809B0000
-/* 00F28 809B4848 24844E94 */ addiu $a0, $a0, %lo(D_809B4E94) ## $a0 = 809B4E94
-/* 00F2C 809B484C 0C0346BD */ jal Matrix_MultVec3f
-/* 00F30 809B4850 27A50038 */ addiu $a1, $sp, 0x0038 ## $a1 = FFFFFFE8
-/* 00F34 809B4854 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
-/* 00F38 809B4858 2841000A */ slti $at, $v0, 0x000A
-/* 00F3C 809B485C 5020003E */ beql $at, $zero, .L809B4958
-/* 00F40 809B4860 8FBF0024 */ lw $ra, 0x0024($sp)
-/* 00F44 809B4864 8E18024C */ lw $t8, 0x024C($s0) ## 0000024C
-/* 00F48 809B4868 28430006 */ slti $v1, $v0, 0x0006
-/* 00F4C 809B486C 8FA40054 */ lw $a0, 0x0054($sp)
-/* 00F50 809B4870 1700000A */ bne $t8, $zero, .L809B489C
-/* 00F54 809B4874 26050190 */ addiu $a1, $s0, 0x0190 ## $a1 = 00000190
-/* 00F58 809B4878 27B90038 */ addiu $t9, $sp, 0x0038 ## $t9 = FFFFFFE8
-/* 00F5C 809B487C AFB90010 */ sw $t9, 0x0010($sp)
-/* 00F60 809B4880 2606022C */ addiu $a2, $s0, 0x022C ## $a2 = 0000022C
-/* 00F64 809B4884 27A70044 */ addiu $a3, $sp, 0x0044 ## $a3 = FFFFFFF4
-/* 00F68 809B4888 0C024120 */ jal func_80090480
-/* 00F6C 809B488C AFA30034 */ sw $v1, 0x0034($sp)
-/* 00F70 809B4890 8FA30034 */ lw $v1, 0x0034($sp)
-/* 00F74 809B4894 10000027 */ beq $zero, $zero, .L809B4934
-/* 00F78 809B4898 00621824 */ and $v1, $v1, $v0
-.L809B489C:
-/* 00F7C 809B489C 10600025 */ beq $v1, $zero, .L809B4934
-/* 00F80 809B48A0 C7A40044 */ lwc1 $f4, 0x0044($sp)
-/* 00F84 809B48A4 C6060230 */ lwc1 $f6, 0x0230($s0) ## 00000230
-/* 00F88 809B48A8 C7A80048 */ lwc1 $f8, 0x0048($sp)
-/* 00F8C 809B48AC 46062032 */ c.eq.s $f4, $f6
-/* 00F90 809B48B0 00000000 */ nop
-/* 00F94 809B48B4 4500001F */ bc1f .L809B4934
-/* 00F98 809B48B8 00000000 */ nop
-/* 00F9C 809B48BC C60A0234 */ lwc1 $f10, 0x0234($s0) ## 00000234
-/* 00FA0 809B48C0 C7B0004C */ lwc1 $f16, 0x004C($sp)
-/* 00FA4 809B48C4 460A4032 */ c.eq.s $f8, $f10
-/* 00FA8 809B48C8 00000000 */ nop
-/* 00FAC 809B48CC 45000019 */ bc1f .L809B4934
-/* 00FB0 809B48D0 00000000 */ nop
-/* 00FB4 809B48D4 C6120238 */ lwc1 $f18, 0x0238($s0) ## 00000238
-/* 00FB8 809B48D8 C7A40038 */ lwc1 $f4, 0x0038($sp)
-/* 00FBC 809B48DC 46128032 */ c.eq.s $f16, $f18
-/* 00FC0 809B48E0 00000000 */ nop
-/* 00FC4 809B48E4 45000013 */ bc1f .L809B4934
-/* 00FC8 809B48E8 00000000 */ nop
-/* 00FCC 809B48EC C606023C */ lwc1 $f6, 0x023C($s0) ## 0000023C
-/* 00FD0 809B48F0 C7A8003C */ lwc1 $f8, 0x003C($sp)
-/* 00FD4 809B48F4 46062032 */ c.eq.s $f4, $f6
-/* 00FD8 809B48F8 00000000 */ nop
-/* 00FDC 809B48FC 4500000D */ bc1f .L809B4934
-/* 00FE0 809B4900 00000000 */ nop
-/* 00FE4 809B4904 C60A0240 */ lwc1 $f10, 0x0240($s0) ## 00000240
-/* 00FE8 809B4908 C7B00040 */ lwc1 $f16, 0x0040($sp)
-/* 00FEC 809B490C 460A4032 */ c.eq.s $f8, $f10
-/* 00FF0 809B4910 00000000 */ nop
-/* 00FF4 809B4914 45000007 */ bc1f .L809B4934
-/* 00FF8 809B4918 00000000 */ nop
-/* 00FFC 809B491C C6120244 */ lwc1 $f18, 0x0244($s0) ## 00000244
-/* 01000 809B4920 46128032 */ c.eq.s $f16, $f18
-/* 01004 809B4924 00000000 */ nop
-/* 01008 809B4928 45000002 */ bc1f .L809B4934
-/* 0100C 809B492C 00000000 */ nop
-/* 01010 809B4930 00001825 */ or $v1, $zero, $zero ## $v1 = 00000000
-.L809B4934:
-/* 01014 809B4934 50600008 */ beql $v1, $zero, .L809B4958
-/* 01018 809B4938 8FBF0024 */ lw $ra, 0x0024($sp)
-/* 0101C 809B493C 0C009AC3 */ jal Effect_GetByIndex
-/* 01020 809B4940 8E040228 */ lw $a0, 0x0228($s0) ## 00000228
-/* 01024 809B4944 00402025 */ or $a0, $v0, $zero ## $a0 = 00000000
-/* 01028 809B4948 27A50044 */ addiu $a1, $sp, 0x0044 ## $a1 = FFFFFFF4
-/* 0102C 809B494C 0C007F7C */ jal EffectBlure_AddVertex
-/* 01030 809B4950 27A60038 */ addiu $a2, $sp, 0x0038 ## $a2 = FFFFFFE8
-.L809B4954:
-/* 01034 809B4954 8FBF0024 */ lw $ra, 0x0024($sp)
-.L809B4958:
-/* 01038 809B4958 8FB00020 */ lw $s0, 0x0020($sp)
-/* 0103C 809B495C 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000
-/* 01040 809B4960 03E00008 */ jr $ra
-/* 01044 809B4964 00000000 */ nop
diff --git a/assets/xml/objects/gameplay_keep.xml b/assets/xml/objects/gameplay_keep.xml
index 86877f76ba..c850803261 100644
--- a/assets/xml/objects/gameplay_keep.xml
+++ b/assets/xml/objects/gameplay_keep.xml
@@ -846,8 +846,8 @@
-
-
+
+
diff --git a/data/overlays/actors/z_en_arrow.data.s b/data/overlays/actors/z_en_arrow.data.s
deleted file mode 100644
index ae7e3bc392..0000000000
--- a/data/overlays/actors/z_en_arrow.data.s
+++ /dev/null
@@ -1,50 +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_Arrow_InitVars
- .word 0x00160700, 0x00000030, 0x00010000, 0x00000260
-.word EnArrow_Init
-.word EnArrow_Destroy
-.word EnArrow_Update
-.word EnArrow_Draw
-glabel D_809B4D50
- .word 0x0A090000, 0x08030000, 0x02000000, 0x00000020, 0x00010000, 0xFFCFFFFF, 0x00000000, 0x1D000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
-glabel D_809B4DA0
- .word 0x3070FF6A
-glabel D_809B4DA4
- .word 0x00000000, 0x00040000, 0x00FFC8FF, 0x00FFFFFF, 0x00FFC800, 0x00FFFF00
-glabel D_809B4DBC
- .word 0x10000100, 0xFFFFAAFF, 0x00960000
-glabel D_809B4DC8
- .word 0x00000000, 0x00040000, 0x00FFC8FF, 0x00FFFFFF, 0x00FFC800, 0x00FFFF00, 0x10000100, 0xFFC800FF, 0xFF000000
-glabel D_809B4DEC
- .word 0x00000000, 0x00040000, 0x00FFC8FF, 0x00FFFFFF, 0x00FFC800, 0x00FFFF00, 0x10000100, 0xAAFFFFFF, 0x0064FF00
-glabel D_809B4E10
- .word 0x00000000, 0x00040000, 0x00FFC8FF, 0x00FFFFFF, 0x00FFC800, 0x00FFFF00, 0x10000100, 0xFFFFAAFF, 0xFFFF0000
-glabel D_809B4E34
- .word 0x00000800, 0x00000020, 0x00000020, 0x00000800, 0x00001000, 0x00002000, 0x00010000, 0x00004000, 0x00008000, 0x00000004
-glabel D_809B4E5C
- .word 0x010A010B, 0x010C010A, 0x010A010A
-glabel D_809B4E68
- .word 0x00000000, 0x3F000000, 0x00000000
-glabel D_809B4E74
- .word 0x00000000, 0x3F000000, 0x00000000
-glabel D_809B4E80
- .word 0xFFFF64FF
-glabel D_809B4E84
- .word 0xFF320000
-glabel D_809B4E88
- .word 0x00000000, 0x43C80000, 0x44BB8000
-glabel D_809B4E94
- .word 0x00000000, 0xC3C80000, 0x44BB8000
-glabel D_809B4EA0
- .word 0x00000000, 0x00000000, 0xC3960000, 0x00000000
-
diff --git a/data/overlays/actors/z_en_arrow.reloc.s b/data/overlays/actors/z_en_arrow.reloc.s
deleted file mode 100644
index 9b038aa743..0000000000
--- a/data/overlays/actors/z_en_arrow.reloc.s
+++ /dev/null
@@ -1,13 +0,0 @@
-.include "macro.inc"
-
- # assembler directives
- .set noat # allow manual use of $at
- .set noreorder # don't insert nops after branches
- .set gp=64 # allow use of 64-bit general purpose registers
-
-.section .rodata
-
-.balign 16
-
-glabel D_809B4F70
- .incbin "baserom/ovl_En_Arrow", 0x1650, 0x00000190
diff --git a/spec b/spec
index 43787bd906..b31bfd5a7c 100644
--- a/spec
+++ b/spec
@@ -1884,8 +1884,7 @@ endseg
beginseg
name "ovl_En_Arrow"
include "build/src/overlays/actors/ovl_En_Arrow/z_en_arrow.o"
- include "build/data/overlays/actors/z_en_arrow.data.o"
- include "build/data/overlays/actors/z_en_arrow.reloc.o"
+ include "build/src/overlays/actors/ovl_En_Arrow/ovl_En_Arrow_reloc.o"
endseg
beginseg
diff --git a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c
index fc720dc229..37ce94048f 100644
--- a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c
+++ b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c
@@ -166,7 +166,7 @@ void ArrowFire_Fly(ArrowFire* this, GlobalContext* globalCtx) {
}
func_80865ECC(&this->unkPos, &this->actor.world.pos, 0.05f);
- if (arrow->hitWall & 1) {
+ if (arrow->hitFlags & 1) {
Audio_PlayActorSound2(&this->actor, NA_SE_IT_EXPLOSION_FRAME);
ArrowFire_SetupAction(this, ArrowFire_Hit);
this->timer = 32;
@@ -203,7 +203,7 @@ void ArrowFire_Draw(Actor* thisx, GlobalContext* globalCtx) {
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
if (1) {}
- tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
+ tranform = (arrow->hitFlags & 2) ? &this->actor : &arrow->actor;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_arrow_fire.c", 618);
diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c
index cd0dd87db8..6b07d5c936 100644
--- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c
+++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c
@@ -167,7 +167,7 @@ void ArrowIce_Fly(ArrowIce* this, GlobalContext* globalCtx) {
}
func_80867E8C(&this->unkPos, &this->actor.world.pos, 0.05f);
- if (arrow->hitWall & 1) {
+ if (arrow->hitFlags & 1) {
Audio_PlayActorSound2(&this->actor, NA_SE_IT_EXPLOSION_ICE);
ArrowIce_SetupAction(this, ArrowIce_Hit);
this->timer = 32;
@@ -204,7 +204,7 @@ void ArrowIce_Draw(Actor* thisx, GlobalContext* globalCtx) {
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
if (1) {}
- tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
+ tranform = (arrow->hitFlags & 2) ? &this->actor : &arrow->actor;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_arrow_ice.c", 610);
diff --git a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c
index 90a5e7f033..e67c5eaf01 100644
--- a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c
+++ b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c
@@ -167,7 +167,7 @@ void ArrowLight_Fly(ArrowLight* this, GlobalContext* globalCtx) {
}
func_80869E6C(&this->unkPos, &this->actor.world.pos, 0.05f);
- if (arrow->hitWall & 1) {
+ if (arrow->hitFlags & 1) {
Audio_PlayActorSound2(&this->actor, NA_SE_IT_EXPLOSION_LIGHT);
ArrowLight_SetupAction(this, ArrowLight_Hit);
this->timer = 32;
@@ -204,7 +204,7 @@ void ArrowLight_Draw(Actor* thisx, GlobalContext* globalCtx) {
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
if (1) {}
- tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
+ tranform = (arrow->hitFlags & 2) ? &this->actor : &arrow->actor;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_arrow_light.c", 598);
diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im.c b/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
index 000b6878b2..1183cdb586 100644
--- a/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
+++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
@@ -5,7 +5,7 @@
*/
#include "z_demo_im.h"
-
+#include "overlays/actors/ovl_En_Arrow/z_en_arrow.h"
#include "vt.h"
#define FLAGS 0x00000011
@@ -750,7 +750,7 @@ void func_809865F8(DemoIm* this, GlobalContext* globalCtx, s32 arg2) {
f32 spawnPosZ = thisPos->z + (Math_CosS(shapeRotY) * 30.0f);
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ARROW, spawnPosX, spawnPosY, spawnPosZ, 0xFA0,
- this->actor.shape.rot.y, 0, 0xFFF6);
+ this->actor.shape.rot.y, 0, ARROW_CS_NUT);
this->unk_27C = 1;
}
} else {
@@ -1160,18 +1160,17 @@ s32 DemoIm_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList
}
}
- if (*unk_2D0 != 0) {
- if (limbIndex == 15) {
- *dList = D_0600EDE8;
- }
+ if ((*unk_2D0 != 0) && (limbIndex == 15)) {
+ *dList = D_0600EDE8;
}
+
return false;
}
void DemoIm_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
DemoIm* this = THIS;
- if (limbIndex == 0x10) {
+ if (limbIndex == 16) {
Vec3f sp28 = D_809887D8;
Vec3f dest;
diff --git a/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c b/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c
index 14d13c9fc2..2541977914 100644
--- a/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c
+++ b/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c
@@ -5,7 +5,7 @@
*/
#include "z_en_arow_trap.h"
-
+#include "overlays/actors/ovl_En_Arrow/z_en_arrow.h"
#define FLAGS 0x00000010
#define THIS ((EnArowTrap*)thisx)
@@ -47,7 +47,7 @@ void EnArowTrap_Update(Actor* thisx, GlobalContext* globalCtx) {
if (this->attackTimer == 0) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ARROW, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, this->actor.shape.rot.x,
- this->actor.shape.rot.y, this->actor.shape.rot.z, -1);
+ this->actor.shape.rot.y, this->actor.shape.rot.z, ARROW_NORMAL_SILENT);
this->attackTimer = 80;
}
}
diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c
index 13f5adb68e..f2ed4c7db9 100644
--- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c
+++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c
@@ -1,7 +1,7 @@
/*
* File: z_en_arrow.c
* Overlay: ovl_En_Arrow
- * Description: Arrows
+ * Description: Arrow, Deku Seed, and Deku Nut Projectile
*/
#include "z_en_arrow.h"
@@ -16,7 +16,11 @@ void EnArrow_Destroy(Actor* thisx, GlobalContext* globalCtx);
void EnArrow_Update(Actor* thisx, GlobalContext* globalCtx);
void EnArrow_Draw(Actor* thisx, GlobalContext* globalCtx);
-/*
+void EnArrow_Shoot(EnArrow* this, GlobalContext* globalCtx);
+void EnArrow_Fly(EnArrow* this, GlobalContext* globalCtx);
+void func_809B45E0(EnArrow* this, GlobalContext* globalCtx);
+void func_809B4640(EnArrow* this, GlobalContext* globalCtx);
+
const ActorInit En_Arrow_InitVars = {
ACTOR_EN_ARROW,
ACTORCAT_ITEMACTION,
@@ -29,7 +33,7 @@ const ActorInit En_Arrow_InitVars = {
(ActorFunc)EnArrow_Draw,
};
-static ColliderQuadInit D_809B4D50 = {
+static ColliderQuadInit sColliderInit = {
{
COLTYPE_NONE,
AT_ON | AT_TYPE_PLAYER,
@@ -48,27 +52,447 @@ static ColliderQuadInit D_809B4D50 = {
},
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
};
-*/
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3920.s")
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Init.s")
+static InitChainEntry sInitChain[] = {
+ ICHAIN_F32(minVelocityY, 65386, ICHAIN_STOP),
+};
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Destroy.s")
+void EnArrow_SetupAction(EnArrow* this, EnArrowActionFunc actionFunc) {
+ this->actionFunc = actionFunc;
+}
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3BD4.s")
+void EnArrow_Init(Actor* thisx, GlobalContext* globalCtx) {
+ static EffectBlureInit2 blureNormal = {
+ 0, 4, 0, { 0, 255, 200, 255 }, { 0, 255, 255, 255 }, { 0, 255, 200, 0 }, { 0, 255, 255, 0 }, 16,
+ 0, 1, 0, { 255, 255, 170, 255 }, { 0, 150, 0, 0 },
+ };
+ static EffectBlureInit2 blureFire = {
+ 0, 4, 0, { 0, 255, 200, 255 }, { 0, 255, 255, 255 }, { 0, 255, 200, 0 }, { 0, 255, 255, 0 }, 16,
+ 0, 1, 0, { 255, 200, 0, 255 }, { 255, 0, 0, 0 },
+ };
+ static EffectBlureInit2 blureIce = {
+ 0, 4, 0, { 0, 255, 200, 255 }, { 0, 255, 255, 255 }, { 0, 255, 200, 0 }, { 0, 255, 255, 0 }, 16,
+ 0, 1, 0, { 170, 255, 255, 255 }, { 0, 100, 255, 0 },
+ };
+ static EffectBlureInit2 blureLight = {
+ 0, 4, 0, { 0, 255, 200, 255 }, { 0, 255, 255, 255 }, { 0, 255, 200, 0 }, { 0, 255, 255, 0 }, 16,
+ 0, 1, 0, { 255, 255, 170, 255 }, { 255, 255, 0, 0 },
+ };
+ static u32 dmgFlags[] = {
+ 0x00000800, 0x00000020, 0x00000020, 0x00000800, 0x00001000,
+ 0x00002000, 0x00010000, 0x00004000, 0x00008000, 0x00000004,
+ };
+ EnArrow* this = THIS;
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3CEC.s")
+ Actor_ProcessInitChain(&this->actor, sInitChain);
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3DD8.s")
+ if (this->actor.params == ARROW_CS_NUT) {
+ this->isCsNut = true;
+ this->actor.params = ARROW_NUT;
+ }
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B3FDC.s")
+ if (this->actor.params <= ARROW_SEED) {
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B45E0.s")
+ if (this->actor.params <= ARROW_0E) {
+ SkelAnime_Init(globalCtx, &this->skelAnime, &gArrowSkel, &gArrow2Anim, NULL, NULL, 0);
+ }
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4640.s")
+ if (this->actor.params <= ARROW_NORMAL) {
+ if (this->actor.params == ARROW_NORMAL_HORSE) {
+ blureNormal.elemDuration = 4;
+ } else {
+ blureNormal.elemDuration = 16;
+ }
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Update.s")
+ Effect_Add(globalCtx, &this->effectIndex, EFFECT_BLURE2, 0, 0, &blureNormal);
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/func_809B4800.s")
+ } else if (this->actor.params == ARROW_FIRE) {
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Arrow/EnArrow_Draw.s")
+ Effect_Add(globalCtx, &this->effectIndex, EFFECT_BLURE2, 0, 0, &blureFire);
+
+ } else if (this->actor.params == ARROW_ICE) {
+
+ Effect_Add(globalCtx, &this->effectIndex, EFFECT_BLURE2, 0, 0, &blureIce);
+
+ } else if (this->actor.params == ARROW_LIGHT) {
+
+ Effect_Add(globalCtx, &this->effectIndex, EFFECT_BLURE2, 0, 0, &blureLight);
+ }
+
+ Collider_InitQuad(globalCtx, &this->collider);
+ Collider_SetQuad(globalCtx, &this->collider, &this->actor, &sColliderInit);
+
+ if (this->actor.params <= ARROW_NORMAL) {
+ this->collider.info.toucherFlags &= ~0x18;
+ this->collider.info.toucherFlags |= 0;
+ }
+
+ if (this->actor.params < 0) {
+ this->collider.base.atFlags = (AT_ON | AT_TYPE_ENEMY);
+ } else if (this->actor.params <= ARROW_SEED) {
+ this->collider.info.toucher.dmgFlags = dmgFlags[this->actor.params];
+ LOG_HEX("this->at_info.cl_elem.at_btl_info.at_type", this->collider.info.toucher.dmgFlags, "../z_en_arrow.c",
+ 707);
+ }
+ }
+
+ EnArrow_SetupAction(this, EnArrow_Shoot);
+}
+
+void EnArrow_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+ EnArrow* this = THIS;
+
+ if (this->actor.params <= ARROW_LIGHT) {
+ Effect_Delete(globalCtx, this->effectIndex);
+ }
+
+ SkelAnime_Free(&this->skelAnime, globalCtx);
+ Collider_DestroyQuad(globalCtx, &this->collider);
+
+ if ((this->hitActor != NULL) && (this->hitActor->update != NULL)) {
+ this->hitActor->flags &= ~0x8000;
+ }
+}
+
+void EnArrow_Shoot(EnArrow* this, GlobalContext* globalCtx) {
+ Player* player = PLAYER;
+
+ if (this->actor.parent == NULL) {
+ if ((this->actor.params != ARROW_NUT) && (player->unk_A73 == 0)) {
+ Actor_Kill(&this->actor);
+ return;
+ }
+
+ switch (this->actor.params) {
+ case ARROW_SEED:
+ func_8002F7DC(&player->actor, NA_SE_IT_SLING_SHOT);
+ break;
+
+ case ARROW_NORMAL_LIT:
+ case ARROW_NORMAL_HORSE:
+ case ARROW_NORMAL:
+ func_8002F7DC(&player->actor, NA_SE_IT_ARROW_SHOT);
+ break;
+
+ case ARROW_FIRE:
+ case ARROW_ICE:
+ case ARROW_LIGHT:
+ func_8002F7DC(&player->actor, NA_SE_IT_MAGIC_ARROW_SHOT);
+ break;
+ }
+
+ EnArrow_SetupAction(this, EnArrow_Fly);
+ Math_Vec3f_Copy(&this->unk_210, &this->actor.world.pos);
+
+ if (this->actor.params >= ARROW_SEED) {
+ func_8002D9A4(&this->actor, 80.0f);
+ this->timer = 15;
+ this->actor.shape.rot.x = this->actor.shape.rot.y = this->actor.shape.rot.z = 0;
+ } else {
+ func_8002D9A4(&this->actor, 150.0f);
+ this->timer = 12;
+ }
+ }
+}
+
+void func_809B3CEC(GlobalContext* globalCtx, EnArrow* this) {
+ EnArrow_SetupAction(this, func_809B4640);
+ Animation_PlayOnce(&this->skelAnime, &gArrow1Anim);
+ this->actor.world.rot.y += (s32)(24576.0f * (Rand_ZeroOne() - 0.5f)) + 0x8000;
+ this->actor.velocity.y += (this->actor.speedXZ * (0.4f + (0.4f * Rand_ZeroOne())));
+ this->actor.speedXZ *= (0.04f + 0.3f * Rand_ZeroOne());
+ this->timer = 50;
+ this->actor.gravity = -1.5f;
+}
+
+void EnArrow_CarryActor(EnArrow* this, GlobalContext* globalCtx) {
+ CollisionPoly* hitPoly;
+ Vec3f posDiffLastFrame;
+ Vec3f actorNextPos;
+ Vec3f hitPos;
+ f32 temp_f12;
+ f32 scale;
+ s32 bgId;
+
+ Math_Vec3f_Diff(&this->actor.world.pos, &this->unk_210, &posDiffLastFrame);
+
+ temp_f12 = ((this->actor.world.pos.x - this->hitActor->world.pos.x) * posDiffLastFrame.x) +
+ ((this->actor.world.pos.y - this->hitActor->world.pos.y) * posDiffLastFrame.y) +
+ ((this->actor.world.pos.z - this->hitActor->world.pos.z) * posDiffLastFrame.z);
+
+ if (!(temp_f12 < 0.0f)) {
+ scale = Math3D_Vec3fMagnitudeSq(&posDiffLastFrame);
+
+ if (!(scale < 1.0f)) {
+ scale = temp_f12 / scale;
+ Math_Vec3f_Scale(&posDiffLastFrame, scale);
+ Math_Vec3f_Sum(&this->hitActor->world.pos, &posDiffLastFrame, &actorNextPos);
+
+ if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &this->hitActor->world.pos, &actorNextPos, &hitPos,
+ &hitPoly, true, true, true, true, &bgId)) {
+ this->hitActor->world.pos.x = hitPos.x + ((actorNextPos.x <= hitPos.x) ? 1.0f : -1.0f);
+ this->hitActor->world.pos.y = hitPos.y + ((actorNextPos.y <= hitPos.y) ? 1.0f : -1.0f);
+ this->hitActor->world.pos.z = hitPos.z + ((actorNextPos.z <= hitPos.z) ? 1.0f : -1.0f);
+ } else {
+ Math_Vec3f_Copy(&this->hitActor->world.pos, &actorNextPos);
+ }
+ }
+ }
+}
+
+void EnArrow_Fly(EnArrow* this, GlobalContext* globalCtx) {
+ CollisionPoly* hitPoly;
+ s32 bgId;
+ Vec3f hitPoint;
+ Vec3f posCopy;
+ s32 atTouched;
+ u16 sfxId;
+ Actor* hitActor;
+ Vec3f sp60;
+ Vec3f sp54;
+
+ if (DECR(this->timer) == 0) {
+ Actor_Kill(&this->actor);
+ return;
+ }
+
+ if (this->timer < 7.2000003f) {
+ this->actor.gravity = -0.4f;
+ }
+
+ atTouched = (this->actor.params != ARROW_NORMAL_LIT) && (this->actor.params <= ARROW_SEED) &&
+ (this->collider.base.atFlags & AT_HIT);
+
+ if (atTouched || this->touchedPoly) {
+ if (this->actor.params >= ARROW_SEED) {
+ if (atTouched) {
+ this->actor.world.pos.x = (this->actor.world.pos.x + this->actor.prevPos.x) * 0.5f;
+ this->actor.world.pos.y = (this->actor.world.pos.y + this->actor.prevPos.y) * 0.5f;
+ this->actor.world.pos.z = (this->actor.world.pos.z + this->actor.prevPos.z) * 0.5f;
+ }
+
+ if (this->actor.params == ARROW_NUT) {
+ iREG(50) = -1;
+ Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_M_FIRE1, this->actor.world.pos.x,
+ this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, 0);
+ sfxId = NA_SE_IT_DEKU;
+ } else {
+ sfxId = NA_SE_IT_SLING_REFLECT;
+ }
+
+ EffectSsStone1_Spawn(globalCtx, &this->actor.world.pos, 0);
+ Audio_PlaySoundAtPosition(globalCtx, &this->actor.world.pos, 20, sfxId);
+ Actor_Kill(&this->actor);
+ } else {
+ EffectSsHitMark_SpawnCustomScale(globalCtx, 0, 150, &this->actor.world.pos);
+
+ if (atTouched && (this->collider.info.atHitInfo->elemType != ELEMTYPE_UNK4)) {
+ hitActor = this->collider.base.at;
+
+ if ((hitActor->update != NULL) && (!(this->collider.base.atFlags & AT_BOUNCED)) &&
+ (hitActor->flags & 0x4000)) {
+ this->hitActor = hitActor;
+ EnArrow_CarryActor(this, globalCtx);
+ Math_Vec3f_Diff(&hitActor->world.pos, &this->actor.world.pos, &this->unk_250);
+ hitActor->flags |= 0x8000;
+ this->collider.base.atFlags &= ~AT_HIT;
+ this->actor.speedXZ /= 2.0f;
+ this->actor.velocity.y /= 2.0f;
+ } else {
+ this->hitFlags |= 1;
+ this->hitFlags |= 2;
+
+ if (this->collider.info.atHitInfo->bumperFlags & 2) {
+ this->actor.world.pos.x = this->collider.info.atHitInfo->bumper.hitPos.x;
+ this->actor.world.pos.y = this->collider.info.atHitInfo->bumper.hitPos.y;
+ this->actor.world.pos.z = this->collider.info.atHitInfo->bumper.hitPos.z;
+ }
+
+ func_809B3CEC(globalCtx, this);
+ Audio_PlayActorSound2(&this->actor, NA_SE_IT_ARROW_STICK_CRE);
+ }
+ } else if (this->touchedPoly) {
+ EnArrow_SetupAction(this, func_809B45E0);
+ Animation_PlayOnce(&this->skelAnime, &gArrow2Anim);
+
+ if (this->actor.params >= ARROW_NORMAL_LIT) {
+ this->timer = 60;
+ } else {
+ this->timer = 20;
+ }
+
+ Audio_PlayActorSound2(&this->actor, NA_SE_IT_ARROW_STICK_OBJ);
+ this->hitFlags |= 1;
+ }
+ }
+ } else {
+ Math_Vec3f_Copy(&this->unk_210, &this->actor.world.pos);
+ Actor_MoveForward(&this->actor);
+
+ if (this->touchedPoly =
+ BgCheck_ProjectileLineTest(&globalCtx->colCtx, &this->actor.prevPos, &this->actor.world.pos, &hitPoint,
+ &this->actor.wallPoly, true, true, true, true, &bgId)) {
+ func_8002F9EC(globalCtx, &this->actor, this->actor.wallPoly, bgId, &hitPoint);
+ Math_Vec3f_Copy(&posCopy, &this->actor.world.pos);
+ Math_Vec3f_Copy(&this->actor.world.pos, &hitPoint);
+ }
+
+ if (this->actor.params <= ARROW_0E) {
+ this->actor.shape.rot.x = Math_Atan2S(this->actor.speedXZ, -this->actor.velocity.y);
+ }
+ }
+
+ if (this->hitActor != NULL) {
+ if (this->hitActor->update != NULL) {
+ Math_Vec3f_Sum(&this->unk_210, &this->unk_250, &sp60);
+ Math_Vec3f_Sum(&this->actor.world.pos, &this->unk_250, &sp54);
+
+ if (BgCheck_EntityLineTest1(&globalCtx->colCtx, &sp60, &sp54, &hitPoint, &hitPoly, true, true, true, true,
+ &bgId)) {
+ this->hitActor->world.pos.x = hitPoint.x + ((sp54.x <= hitPoint.x) ? 1.0f : -1.0f);
+ this->hitActor->world.pos.y = hitPoint.y + ((sp54.y <= hitPoint.y) ? 1.0f : -1.0f);
+ this->hitActor->world.pos.z = hitPoint.z + ((sp54.z <= hitPoint.z) ? 1.0f : -1.0f);
+ Math_Vec3f_Diff(&this->hitActor->world.pos, &this->actor.world.pos, &this->unk_250);
+ this->hitActor->flags &= ~0x8000;
+ this->hitActor = NULL;
+ } else {
+ Math_Vec3f_Sum(&this->actor.world.pos, &this->unk_250, &this->hitActor->world.pos);
+ }
+
+ if (this->touchedPoly && (this->hitActor != NULL)) {
+ this->hitActor->flags &= ~0x8000;
+ this->hitActor = NULL;
+ }
+ } else {
+ this->hitActor = NULL;
+ }
+ }
+}
+
+void func_809B45E0(EnArrow* this, GlobalContext* globalCtx) {
+ SkelAnime_Update(&this->skelAnime);
+
+ if (DECR(this->timer) == 0) {
+ Actor_Kill(&this->actor);
+ }
+}
+
+void func_809B4640(EnArrow* this, GlobalContext* globalCtx) {
+ SkelAnime_Update(&this->skelAnime);
+ Actor_MoveForward(&this->actor);
+
+ if (DECR(this->timer) == 0) {
+ Actor_Kill(&this->actor);
+ }
+}
+
+void EnArrow_Update(Actor* thisx, GlobalContext* globalCtx) {
+ s32 pad;
+ EnArrow* this = THIS;
+ Player* player = PLAYER;
+
+ if (this->isCsNut || ((this->actor.params >= ARROW_NORMAL_LIT) && (player->unk_A73 != 0)) ||
+ !Player_InBlockingCsMode(globalCtx, player)) {
+ this->actionFunc(this, globalCtx);
+ }
+
+ if ((this->actor.params >= ARROW_FIRE) && (this->actor.params <= ARROW_0E)) {
+ s16 elementalActorIds[] = { ACTOR_ARROW_FIRE, ACTOR_ARROW_ICE, ACTOR_ARROW_LIGHT,
+ ACTOR_ARROW_FIRE, ACTOR_ARROW_FIRE, ACTOR_ARROW_FIRE };
+
+ if (this->actor.child == NULL) {
+ Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, elementalActorIds[this->actor.params - 3],
+ this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0,
+ 0);
+ }
+ } else if (this->actor.params == ARROW_NORMAL_LIT) {
+ static Vec3f velocity = { 0.0f, 0.5f, 0.0f };
+ static Vec3f accel = { 0.0f, 0.5f, 0.0f };
+ static Color_RGBA8 primColor = { 255, 255, 100, 255 };
+ static Color_RGBA8 envColor = { 255, 50, 0, 0 };
+ // spawn dust for the flame
+ func_8002836C(globalCtx, &this->unk_21C, &velocity, &accel, &primColor, &envColor, 100, 0, 8);
+ }
+}
+
+void func_809B4800(EnArrow* this, GlobalContext* globalCtx) {
+ static Vec3f D_809B4E88 = { 0.0f, 400.0f, 1500.0f };
+ static Vec3f D_809B4E94 = { 0.0f, -400.0f, 1500.0f };
+ static Vec3f D_809B4EA0 = { 0.0f, 0.0f, -300.0f };
+ Vec3f sp44;
+ Vec3f sp38;
+ s32 addBlureVertex;
+
+ Matrix_MultVec3f(&D_809B4EA0, &this->unk_21C);
+
+ if (EnArrow_Fly == this->actionFunc) {
+ Matrix_MultVec3f(&D_809B4E88, &sp44);
+ Matrix_MultVec3f(&D_809B4E94, &sp38);
+
+ if (this->actor.params <= ARROW_SEED) {
+ addBlureVertex = this->actor.params <= ARROW_LIGHT;
+
+ if (this->hitActor == NULL) {
+ addBlureVertex &= func_80090480(globalCtx, &this->collider, &this->weaponInfo, &sp44, &sp38);
+ } else {
+ if (addBlureVertex) {
+ if ((sp44.x == this->weaponInfo.tip.x) && (sp44.y == this->weaponInfo.tip.y) &&
+ (sp44.z == this->weaponInfo.tip.z) && (sp38.x == this->weaponInfo.base.x) &&
+ (sp38.y == this->weaponInfo.base.y) && (sp38.z == this->weaponInfo.base.z)) {
+ addBlureVertex = false;
+ }
+ }
+ }
+
+ if (addBlureVertex) {
+ EffectBlure_AddVertex(Effect_GetByIndex(this->effectIndex), &sp44, &sp38);
+ }
+ }
+ }
+}
+
+void EnArrow_Draw(Actor* thisx, GlobalContext* globalCtx) {
+ s32 pad;
+ EnArrow* this = THIS;
+ u8 alpha;
+ f32 scale;
+
+ if (this->actor.params <= ARROW_0E) {
+ func_80093D18(globalCtx->state.gfxCtx);
+ SkelAnime_DrawLod(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, NULL, NULL, this,
+ (this->actor.projectedPos.z < MREG(95)) ? 0 : 1);
+ } else if (this->actor.speedXZ != 0.0f) {
+ alpha = (Math_CosS(this->timer * 5000) * 127.5f) + 127.5f;
+
+ OPEN_DISPS(globalCtx->state.gfxCtx, "../z_en_arrow.c", 1346);
+
+ func_80093C14(globalCtx->state.gfxCtx);
+
+ if (this->actor.params == ARROW_SEED) {
+ gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 255);
+ gDPSetEnvColor(POLY_XLU_DISP++, 0, 255, 255, alpha);
+ scale = 50.0f;
+ } else {
+ gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 12, 0, 0, 255);
+ gDPSetEnvColor(POLY_XLU_DISP++, 250, 250, 0, alpha);
+ scale = 150.0f;
+ }
+
+ Matrix_Push();
+ Matrix_Mult(&globalCtx->mf_11DA0, MTXMODE_APPLY);
+ // redundant check because this is contained in an if block for non-zero speed
+ Matrix_RotateZ((this->actor.speedXZ == 0.0f) ? 0.0f
+ : ((globalCtx->gameplayFrames & 0xFF) * 4000) * (M_PI / 32768),
+ MTXMODE_APPLY);
+ Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
+ gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_en_arrow.c", 1374),
+ G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gSPDisplayList(POLY_XLU_DISP++, gEffSparklesDL);
+ Matrix_Pull();
+ Matrix_RotateY(this->actor.world.rot.y * (M_PI / 32768), MTXMODE_APPLY);
+
+ CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_en_arrow.c", 1381);
+ }
+
+ func_809B4800(this, globalCtx);
+}
diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.h b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.h
index 2fe8830fd4..60465b3c06 100644
--- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.h
+++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.h
@@ -6,16 +6,41 @@
struct EnArrow;
+typedef void (*EnArrowActionFunc)(struct EnArrow*, GlobalContext*);
+
typedef struct EnArrow {
/* 0x0000 */ Actor actor;
- /* 0x014C */ char unk_14C[0x5C];
- /* 0x01A8 */ s32 unk_1A8; // related to arrows being on fire
- /* 0x01AC */ char unk_1AC[0x9C];
+ /* 0x014C */ SkelAnime skelAnime;
+ /* 0x0190 */ ColliderQuad collider;
+ /* 0x0210 */ Vec3f unk_210;
+ /* 0x021C */ Vec3f unk_21C;
+ /* 0x0228 */ s32 effectIndex;
+ /* 0x022C */ WeaponInfo weaponInfo;
/* 0x0248 */ u8 timer; // used for dissapearing when flying or hitting a wall
- /* 0x0249 */ u8 hitWall;
- /* 0x024A */ char unk_24A[0x16];
+ /* 0x0249 */ u8 hitFlags;
+ /* 0x024A */ u8 touchedPoly;
+ /* 0x024B */ u8 isCsNut;
+ /* 0x024C */ Actor* hitActor;
+ /* 0x0250 */ Vec3f unk_250;
+ /* 0x025C */ EnArrowActionFunc actionFunc;
} EnArrow; // size = 0x0260
+typedef enum {
+ /* -10 */ ARROW_CS_NUT = -10, // cutscene deku nuts are allowed to update in blocking mode
+ /* -1 */ ARROW_NORMAL_SILENT = -1, // normal arrow that does not make a sound when being shot
+ /* 0 */ ARROW_NORMAL_LIT, // normal arrow lit on fire
+ /* 1 */ ARROW_NORMAL_HORSE, // normal arrow shot while riding a horse
+ /* 2 */ ARROW_NORMAL,
+ /* 3 */ ARROW_FIRE,
+ /* 4 */ ARROW_ICE,
+ /* 5 */ ARROW_LIGHT,
+ /* 6 */ ARROW_0C,
+ /* 7 */ ARROW_0D,
+ /* 8 */ ARROW_0E,
+ /* 9 */ ARROW_SEED,
+ /* 10 */ ARROW_NUT
+} ArrowType;
+
extern const ActorInit En_Arrow_InitVars;
#endif
diff --git a/src/overlays/actors/ovl_En_Boom/z_en_boom.h b/src/overlays/actors/ovl_En_Boom/z_en_boom.h
index 361577b278..7725ebfbab 100644
--- a/src/overlays/actors/ovl_En_Boom/z_en_boom.h
+++ b/src/overlays/actors/ovl_En_Boom/z_en_boom.h
@@ -9,15 +9,15 @@ struct EnBoom;
typedef void (*EnBoomActionFunc)(struct EnBoom*, GlobalContext*);
typedef struct EnBoom {
- /* 0x0000 */ Actor actor;
- /* 0x014C */ ColliderQuad collider;
- /* 0x01CC */ Actor* moveTo; // actor boomerang moves toward
- /* 0x01D0 */ Actor* grabbed; // actor grabbed by the boomerang
- /* 0x01D4 */ u8 returnTimer; // returns to Link when 0
- /* 0x01D5 */ u8 activeTimer; // increments once every update
- /* 0x01D8 */ s32 effectIndex; // set by Effect_Add
- /* 0x01DC */ WeaponInfo boomerangInfo;
- /* 0x01F8 */ EnBoomActionFunc actionFunc;
+ /* 0x0000 */ Actor actor;
+ /* 0x014C */ ColliderQuad collider;
+ /* 0x01CC */ Actor* moveTo; // actor boomerang moves toward
+ /* 0x01D0 */ Actor* grabbed; // actor grabbed by the boomerang
+ /* 0x01D4 */ u8 returnTimer; // returns to Link when 0
+ /* 0x01D5 */ u8 activeTimer; // increments once every update
+ /* 0x01D8 */ s32 effectIndex;
+ /* 0x01DC */ WeaponInfo boomerangInfo;
+ /* 0x01F8 */ EnBoomActionFunc actionFunc;
} EnBoom; // size = 0x01FC
extern const ActorInit En_Boom_InitVars;
diff --git a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c
index a180b0f386..490e88579f 100644
--- a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c
+++ b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c
@@ -197,7 +197,7 @@ void ObjSyokudai_Update(Actor* thisx, GlobalContext* globalCtx2) {
arrow = (EnArrow*)this->colliderFlame.base.ac;
if ((arrow->actor.update != NULL) && (arrow->actor.id == ACTOR_EN_ARROW)) {
arrow->actor.params = 0;
- arrow->unk_1A8 = 0x800;
+ arrow->collider.info.toucher.dmgFlags = 0x800;
}
}
if ((0 <= this->litTimer) && (this->litTimer < (50 * litTimeScale + 100)) && (torchType != 0)) {
diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c
index 618a0e2754..0a51a7bd57 100644
--- a/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/src/overlays/actors/ovl_player_actor/z_player.c
@@ -10,6 +10,7 @@
#include "overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.h"
#include "overlays/actors/ovl_Door_Shutter/z_door_shutter.h"
#include "overlays/actors/ovl_En_Boom/z_en_boom.h"
+#include "overlays/actors/ovl_En_Arrow/z_en_arrow.h"
#include "overlays/actors/ovl_En_Box/z_en_box.h"
#include "overlays/actors/ovl_En_Door/z_en_door.h"
#include "overlays/actors/ovl_En_Elf/z_en_elf.h"
@@ -33,7 +34,8 @@ typedef struct {
#define CHEST_ANIM_SHORT 0
#define CHEST_ANIM_LONG 1
-#define GET_ITEM_NONE { ITEM_NONE, 0, 0, 0, 0 }
+#define GET_ITEM_NONE \
+ { ITEM_NONE, 0, 0, 0, 0 }
typedef struct {
/* 0x00 */ u8 itemId;
@@ -1931,13 +1933,13 @@ s32 func_80834380(GlobalContext* globalCtx, Player* this, s32* itemPtr, s32* typ
if (LINK_IS_ADULT) {
*itemPtr = ITEM_BOW;
if (this->stateFlags1 & 0x800000) {
- *typePtr = 1;
+ *typePtr = ARROW_NORMAL_HORSE;
} else {
*typePtr = this->heldItemActionParam - 6;
}
} else {
*itemPtr = ITEM_SLINGSHOT;
- *typePtr = 9;
+ *typePtr = ARROW_SEED;
}
if (gSaveContext.minigameState == 1) {
@@ -1967,12 +1969,12 @@ s32 func_8083442C(Player* this, GlobalContext* globalCtx) {
func_8002F7DC(&this->actor, D_80854398[ABS(this->unk_860) - 1]);
if (!Player_HoldsHookshot(this) && (func_80834380(globalCtx, this, &item, &arrowType) > 0)) {
- magicArrowType = arrowType - 3;
+ magicArrowType = arrowType - ARROW_FIRE;
if (this->unk_860 >= 0) {
- if ((magicArrowType >= 0) && (magicArrowType < 3) &&
+ if ((magicArrowType >= 0) && (magicArrowType <= 2) &&
!func_80087708(globalCtx, sMagicArrowCosts[magicArrowType], 0)) {
- arrowType = 2;
+ arrowType = ARROW_NORMAL;
}
this->heldActor = Actor_SpawnAsChild(
@@ -9034,7 +9036,8 @@ void Player_Init(Actor* thisx, GlobalContext* globalCtx2) {
titleFileSize = scene->titleFile.vromEnd - scene->titleFile.vromStart;
if ((titleFileSize != 0) && gSaveContext.showTitleCard) {
if ((gSaveContext.sceneSetupIndex < 4) &&
- (gEntranceTable[((void)0, gSaveContext.entranceIndex) + ((void)0, gSaveContext.sceneSetupIndex)].field & 0x4000) &&
+ (gEntranceTable[((void)0, gSaveContext.entranceIndex) + ((void)0, gSaveContext.sceneSetupIndex)].field &
+ 0x4000) &&
((globalCtx->sceneNum != SCENE_DDAN) || (gSaveContext.eventChkInf[11] & 1)) &&
((globalCtx->sceneNum != SCENE_NIGHT_SHOP) || (gSaveContext.eventChkInf[2] & 0x20))) {
TitleCard_InitPlaceName(globalCtx, &globalCtx->actorCtx.titleCtx, this->giObjectSegment, 0xA0, 0x78,
diff --git a/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c b/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c
index 41dceb770b..71ff1a0b5d 100644
--- a/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c
+++ b/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c
@@ -41,12 +41,12 @@ u32 EffectSsKiraKira_Init(GlobalContext* globalCtx, u32 index, EffectSs* this, v
if ((this->life = initParams->life) < 0) {
this->life = -this->life;
- this->gfx = SEGMENTED_TO_VIRTUAL(gEffFairySparklesDL);
+ this->gfx = SEGMENTED_TO_VIRTUAL(gEffSparklesDL);
this->update = func_809AAD6C;
this->rEnvColorA = initParams->scale;
this->rScale = 0;
} else {
- this->gfx = SEGMENTED_TO_VIRTUAL(gEffFairySparklesDL);
+ this->gfx = SEGMENTED_TO_VIRTUAL(gEffSparklesDL);
if (initParams->updateMode == 0) {
this->update = func_809AABF0;