summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenny022p <info@henny022.de>2021-10-21 10:36:44 +0200
committerHenny022p <info@henny022.de>2021-10-21 10:36:44 +0200
commit00a57e3b368c98ccf5f2f45f89b1353523445940 (patch)
tree22d579b8ac553c5b480f15f710664ff5a8f37e43
parente1759fa99cac28ae50c24a18c89092f0704ad685 (diff)
decompiled Enemy5A
-rw-r--r--asm/enemy5A.s652
-rw-r--r--asm/vaatiTransfigured.s2644
-rw-r--r--data/const/enemy/enemy5A.s24
-rw-r--r--linker.ld4
-rw-r--r--src/enemy/enemy5A.c327
5 files changed, 329 insertions, 3322 deletions
diff --git a/asm/enemy5A.s b/asm/enemy5A.s
deleted file mode 100644
index fedd8dc6..00000000
--- a/asm/enemy5A.s
+++ /dev/null
@@ -1,652 +0,0 @@
- .include "asm/macros.inc"
-
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start Enemy5A
-Enemy5A: @ 0x080456D8
- push {lr}
- ldr r1, _080456E4 @ =gUnk_080D1888
- bl EnemyFunctionHandler
- pop {pc}
- .align 2, 0
-_080456E4: .4byte gUnk_080D1888
-
- thumb_func_start sub_080456E8
-sub_080456E8: @ 0x080456E8
- push {lr}
- ldr r2, _080456FC @ =gUnk_080D18A0
- ldrb r1, [r0, #0xc]
- lsls r1, r1, #2
- adds r1, r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {pc}
- .align 2, 0
-_080456FC: .4byte gUnk_080D18A0
-
- thumb_func_start sub_08045700
-sub_08045700: @ 0x08045700
- push {r4, r5, lr}
- adds r5, r0, #0
- ldrb r0, [r5, #0xa]
- cmp r0, #0
- beq _080457D0
- ldr r0, [r5, #0x50]
- ldr r3, [r0, #0x50]
- adds r0, r5, #0
- adds r0, #0x41
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080457D0
- movs r0, #0x3f
- ands r0, r1
- cmp r0, #0xe
- beq _08045728
- cmp r0, #0x15
- bne _08045778
-_08045728:
- adds r1, r5, #0
- adds r1, #0x81
- ldrb r0, [r1]
- cmp r0, #0
- bne _0804575C
- movs r0, #3
- strb r0, [r5, #0xc]
- ldrb r0, [r1]
- adds r0, #1
- strb r0, [r1]
- ldrb r1, [r5, #0xa]
- lsls r1, r1, #3
- ldrb r0, [r5, #0xe]
- adds r0, #2
- orrs r1, r0
- adds r0, r5, #0
- bl InitializeAnimation
- ldr r0, [r5, #0x50]
- ldrb r1, [r0, #0xa]
- lsls r1, r1, #3
- ldrb r2, [r5, #0xe]
- adds r2, #2
- orrs r1, r2
- bl InitializeAnimation
-_0804575C:
- ldrb r0, [r5, #0xe]
- cmp r0, #0
- beq _0804576C
- movs r0, #0xbd
- lsls r0, r0, #1
- bl SoundReq
- b _080457D0
-_0804576C:
- ldr r0, _08045774 @ =0x00000119
- bl SoundReq
- b _080457D0
- .align 2, 0
-_08045774: .4byte 0x00000119
-_08045778:
- adds r2, r5, #0
- adds r2, #0x45
- ldrb r1, [r2]
- adds r0, r1, #0
- cmp r0, #0xff
- beq _080457D0
- movs r0, #0xff
- strb r0, [r2]
- ldrb r0, [r5, #0xe]
- cmp r0, #0
- beq _080457D0
- adds r0, r3, #0
- adds r0, #0x81
- ldrb r0, [r0]
- cmp r0, #0
- beq _080457D0
- adds r0, r3, #0
- adds r0, #0x76
- movs r1, #1
- ldrb r2, [r5, #0xb]
- lsls r1, r2
- ldrb r2, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r1, r5, #0
- adds r1, #0x85
- ldrb r0, [r1]
- cmp r0, #0
- bne _080457D0
- adds r0, #1
- strb r0, [r1]
- ldrb r1, [r5, #0xa]
- lsls r1, r1, #3
- movs r4, #6
- orrs r1, r4
- adds r0, r5, #0
- bl InitializeAnimation
- ldr r0, [r5, #0x50]
- ldrb r1, [r0, #0xa]
- lsls r1, r1, #3
- orrs r1, r4
- bl InitializeAnimation
-_080457D0:
- ldr r1, _080457DC @ =gUnk_080D1888
- adds r0, r5, #0
- bl sub_0804AA30
- pop {r4, r5, pc}
- .align 2, 0
-_080457DC: .4byte gUnk_080D1888
-
- thumb_func_start nullsub_173
-nullsub_173: @ 0x080457E0
- bx lr
- .align 2, 0
-
- thumb_func_start sub_080457E4
-sub_080457E4: @ 0x080457E4
- push {r4, lr}
- adds r4, r0, #0
- ldr r0, _08045850 @ =gTextBox
- ldrb r0, [r0]
- movs r2, #0x7f
- ands r2, r0
- cmp r2, #0
- bne _08045868
- movs r3, #1
- strb r3, [r4, #0xc]
- ldrb r1, [r4, #0x18]
- movs r0, #4
- rsbs r0, r0, #0
- ands r0, r1
- strb r0, [r4, #0x18]
- adds r0, r4, #0
- adds r0, #0x80
- strb r2, [r0]
- adds r0, #1
- strb r2, [r0]
- adds r0, #4
- strb r2, [r0]
- strb r2, [r4, #0xf]
- adds r1, r4, #0
- adds r1, #0x82
- movs r0, #0x30
- strb r0, [r1]
- adds r0, r4, #0
- adds r0, #0x83
- strb r2, [r0]
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- bne _08045854
- adds r0, r4, #0
- bl sub_08045A00
- movs r0, #0x5a
- movs r1, #1
- bl CreateEnemy
- adds r1, r0, #0
- cmp r1, #0
- beq _0804585A
- str r4, [r1, #0x50]
- str r1, [r4, #0x54]
- ldrb r0, [r4, #0xe]
- strb r0, [r1, #0xe]
- ldrb r0, [r4, #0xb]
- strb r0, [r1, #0xb]
- adds r0, r4, #0
- bl CopyPosition
- b _0804585A
- .align 2, 0
-_08045850: .4byte gTextBox
-_08045854:
- adds r0, r4, #0
- adds r0, #0x63
- strb r3, [r0]
-_0804585A:
- ldrb r1, [r4, #0xa]
- lsls r1, r1, #3
- movs r0, #1
- orrs r1, r0
- adds r0, r4, #0
- bl InitializeAnimation
-_08045868:
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start sub_0804586C
-sub_0804586C: @ 0x0804586C
- push {r4, lr}
- adds r4, r0, #0
- bl sub_08045A28
- adds r1, r4, #0
- adds r1, #0x82
- ldrb r0, [r1]
- cmp r0, #0
- bne _080458AA
- adds r0, r4, #0
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080458C2
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- beq _0804589A
- ldrb r1, [r4, #0x10]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r4, #0x10]
-_0804589A:
- movs r0, #2
- strb r0, [r4, #0xc]
- ldrb r1, [r4, #0xa]
- lsls r1, r1, #3
- adds r0, r4, #0
- bl InitializeAnimation
- b _080458C2
-_080458AA:
- subs r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _080458C2
- ldrb r0, [r4, #0x18]
- movs r1, #4
- rsbs r1, r1, #0
- ands r1, r0
- movs r0, #1
- orrs r1, r0
- strb r1, [r4, #0x18]
-_080458C2:
- pop {r4, pc}
-
- thumb_func_start sub_080458C4
-sub_080458C4: @ 0x080458C4
- push {r4, r5, lr}
- adds r5, r0, #0
- bl sub_08045A28
- ldr r1, [r5, #0x50]
- ldrb r2, [r5, #0xa]
- cmp r2, #0
- beq _080458D6
- ldr r1, [r1, #0x50]
-_080458D6:
- ldrb r0, [r1, #0xc]
- cmp r0, #3
- bne _08045934
- adds r0, r1, #0
- adds r0, #0x80
- ldrb r0, [r0]
- cmp r0, #1
- bne _08045934
- movs r0, #0
- movs r4, #4
- strb r4, [r5, #0xc]
- strb r0, [r5, #0xf]
- cmp r2, #0
- beq _08045934
- ldrb r0, [r5, #0x10]
- movs r1, #0x7f
- ands r1, r0
- strb r1, [r5, #0x10]
- ldrb r0, [r5, #0xe]
- cmp r0, #0
- beq _0804591C
- ldrb r1, [r5, #0xa]
- lsls r1, r1, #3
- movs r4, #5
- orrs r1, r4
- adds r0, r5, #0
- bl InitializeAnimation
- ldr r0, [r5, #0x50]
- ldrb r1, [r0, #0xa]
- lsls r1, r1, #3
- orrs r1, r4
- bl InitializeAnimation
- b _08045934
-_0804591C:
- ldrb r1, [r5, #0xa]
- lsls r1, r1, #3
- orrs r1, r4
- adds r0, r5, #0
- bl InitializeAnimation
- ldr r0, [r5, #0x50]
- ldrb r1, [r0, #0xa]
- lsls r1, r1, #3
- orrs r1, r4
- bl InitializeAnimation
-_08045934:
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start sub_08045938
-sub_08045938: @ 0x08045938
- push {r4, lr}
- adds r4, r0, #0
- bl sub_08045A28
- adds r0, r4, #0
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08045980
- movs r0, #2
- strb r0, [r4, #0xc]
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- beq _08045980
- ldrb r0, [r4, #0xe]
- cmp r0, #0
- bne _08045966
- adds r1, r4, #0
- adds r1, #0x3f
- movs r0, #0x32
- b _0804597E
-_08045966:
- ldr r0, [r4, #0x50]
- ldr r2, [r0, #0x50]
- adds r2, #0x76
- movs r0, #1
- ldrb r1, [r4, #0xb]
- lsls r0, r1
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- adds r1, r4, #0
- adds r1, #0x3f
- movs r0, #0x31
-_0804597E:
- strb r0, [r1]
-_08045980:
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start sub_08045984
-sub_08045984: @ 0x08045984
- push {r4, lr}
- adds r4, r0, #0
- bl sub_08045A28
- ldrb r0, [r4, #0xf]
- cmp r0, #0
- bne _080459A6
- adds r0, r4, #0
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080459FE
- movs r0, #0x20
- strb r0, [r4, #0xf]
- b _080459FE
-_080459A6:
- ldr r2, [r4, #0x50]
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- beq _080459B0
- ldr r2, [r2, #0x50]
-_080459B0:
- ldrb r0, [r2, #0x14]
- cmp r0, #2
- bhi _080459FE
- ldrb r0, [r2, #0xc]
- cmp r0, #3
- beq _080459FE
- movs r0, #0
- movs r3, #1
- strb r3, [r4, #0xc]
- strb r0, [r4, #0xf]
- adds r1, r4, #0
- adds r1, #0x81
- strb r0, [r1]
- adds r1, #4
- strb r0, [r1]
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- beq _080459DA
- subs r1, #0x46
- movs r0, #0x33
- strb r0, [r1]
-_080459DA:
- adds r0, r2, #0
- adds r0, #0x75
- ldrb r0, [r0]
- ldrb r1, [r4, #0xb]
- asrs r0, r1
- ands r0, r3
- cmp r0, #0
- beq _080459EE
- strb r3, [r4, #0xe]
- b _080459F0
-_080459EE:
- strb r0, [r4, #0xe]
-_080459F0:
- ldrb r1, [r4, #0xa]
- lsls r1, r1, #3
- movs r0, #1
- orrs r1, r0
- adds r0, r4, #0
- bl InitializeAnimation
-_080459FE:
- pop {r4, pc}
-
- thumb_func_start sub_08045A00
-sub_08045A00: @ 0x08045A00
- push {lr}
- adds r1, r0, #0
- ldrb r3, [r1, #0xb]
- lsls r3, r3, #1
- ldr r0, _08045A24 @ =gUnk_080D18B4
- adds r3, r3, r0
- ldr r0, [r1, #0x50]
- movs r2, #0
- ldrsb r2, [r3, r2]
- lsls r2, r2, #0x10
- ldrb r3, [r3, #1]
- lsls r3, r3, #0x18
- asrs r3, r3, #0x18
- adds r3, #3
- lsls r3, r3, #0x10
- bl PositionRelative
- pop {pc}
- .align 2, 0
-_08045A24: .4byte gUnk_080D18B4
-
- thumb_func_start sub_08045A28
-sub_08045A28: @ 0x08045A28
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r5, r0, #0
- adds r0, #0x82
- ldrb r0, [r0]
- cmp r0, #0
- bne _08045A3E
- adds r0, r5, #0
- bl GetNextFrame
-_08045A3E:
- adds r6, r5, #0
- adds r6, #0x5a
- ldrb r0, [r6]
- movs r1, #0x70
- mov r8, r1
- mov r4, r8
- ands r4, r0
- ldrb r7, [r5, #0xa]
- cmp r7, #0
- bne _08045AF8
- adds r0, r5, #0
- bl sub_08045A00
- adds r1, r5, #0
- adds r1, #0x83
- ldrb r0, [r1]
- adds r2, r1, #0
- cmp r0, #1
- beq _08045AA4
- cmp r0, #1
- bgt _08045A6E
- cmp r0, #0
- beq _08045A78
- b _08045B7C
-_08045A6E:
- cmp r0, #2
- beq _08045ABC
- cmp r0, #3
- beq _08045AE8
- b _08045B7C
-_08045A78:
- cmp r4, #0x20
- beq _08045A8C
- cmp r4, #0x20
- bhi _08045A86
- cmp r4, #0
- beq _08045A96
- b _08045B7C
-_08045A86:
- cmp r4, #0x40
- beq _08045A96
- b _08045B7C
-_08045A8C:
- movs r0, #1
- strb r0, [r1]
- movs r1, #0x9f
- lsls r1, r1, #1
- b _08045B5A
-_08045A96:
- movs r0, #2
- strb r0, [r2]
- ldr r1, _08045AA0 @ =0x0000013F
- b _08045B5A
- .align 2, 0
-_08045AA0: .4byte 0x0000013F
-_08045AA4:
- cmp r4, #0
- beq _08045AB0
- cmp r4, #0x10
- bne _08045B7C
- strb r7, [r1]
- b _08045B58
-_08045AB0:
- movs r0, #2
- strb r0, [r1]
- ldr r1, _08045AB8 @ =0x0000013F
- b _08045B5A
- .align 2, 0
-_08045AB8: .4byte 0x0000013F
-_08045ABC:
- cmp r4, #0x20
- beq _08045AD0
- cmp r4, #0x20
- bhi _08045ACA
- cmp r4, #0x10
- beq _08045ADA
- b _08045B7C
-_08045ACA:
- cmp r4, #0x40
- beq _08045ADE
- b _08045B7C
-_08045AD0:
- movs r0, #1
- strb r0, [r1]
- movs r1, #0x9f
- lsls r1, r1, #1
- b _08045B5A
-_08045ADA:
- strb r7, [r1]
- b _08045B58
-_08045ADE:
- strb r0, [r1]
- ldr r1, _08045AE4 @ =0x0000013F
- b _08045B5A
- .align 2, 0
-_08045AE4: .4byte 0x0000013F
-_08045AE8:
- cmp r4, #0
- bne _08045B7C
- movs r0, #2
- strb r0, [r1]
- ldr r1, _08045AF4 @ =0x0000013F
- b _08045B5A
- .align 2, 0
-_08045AF4: .4byte 0x0000013F
-_08045AF8:
- ldr r0, [r5, #0x50]
- ldr r3, _08045B18 @ =0xFFFF0000
- adds r1, r5, #0
- movs r2, #0
- bl PositionRelative
- adds r2, r5, #0
- adds r2, #0x83
- ldrb r0, [r2]
- cmp r0, #1
- beq _08045B3A
- cmp r0, #1
- bgt _08045B1C
- cmp r0, #0
- beq _08045B22
- b _08045B7C
- .align 2, 0
-_08045B18: .4byte 0xFFFF0000
-_08045B1C:
- cmp r0, #2
- beq _08045B68
- b _08045B7C
-_08045B22:
- ldrb r0, [r6]
- mov r1, r8
- ands r1, r0
- cmp r1, #0x10
- beq _08045B54
- cmp r1, #0x20
- bne _08045B7C
- movs r0, #1
- strb r0, [r2]
- movs r1, #0x9f
- lsls r1, r1, #1
- b _08045B5A
-_08045B3A:
- ldrb r0, [r6]
- mov r1, r8
- ands r1, r0
- cmp r1, #0
- beq _08045B4A
- cmp r1, #0x10
- beq _08045B54
- b _08045B7C
-_08045B4A:
- strb r1, [r2]
- ldr r1, _08045B50 @ =0x0000013F
- b _08045B5A
- .align 2, 0
-_08045B50: .4byte 0x0000013F
-_08045B54:
- movs r0, #2
- strb r0, [r2]
-_08045B58:
- ldr r1, _08045B64 @ =0x0000013B
-_08045B5A:
- adds r0, r5, #0
- bl sub_0801D2B4
- b _08045B7C
- .align 2, 0
-_08045B64: .4byte 0x0000013B
-_08045B68:
- ldrb r0, [r6]
- mov r1, r8
- ands r1, r0
- cmp r1, #0
- bne _08045B7C
- strb r1, [r2]
- ldr r1, _08045B84 @ =0x0000013F
- adds r0, r5, #0
- bl sub_0801D2B4
-_08045B7C:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08045B84: .4byte 0x0000013F
diff --git a/asm/vaatiTransfigured.s b/asm/vaatiTransfigured.s
deleted file mode 100644
index 246058b5..00000000
--- a/asm/vaatiTransfigured.s
+++ /dev/null
@@ -1,2644 +0,0 @@
- .include "asm/macros.inc"
-
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start VaatiTransfigured
-VaatiTransfigured: @ 0x0803F770
- push {r4, lr}
- adds r4, r0, #0
- ldrb r0, [r4, #0xa]
- cmp r0, #5
- bhi _0803F810
- lsls r0, r0, #2
- ldr r1, _0803F784 @ =_0803F788
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0803F784: .4byte _0803F788
-_0803F788: @ jump table
- .4byte _0803F7A0 @ case 0
- .4byte _0803F7D0 @ case 1
- .4byte _0803F7D8 @ case 2
- .4byte _0803F7E0 @ case 3
- .4byte _0803F7E8 @ case 4
- .4byte _0803F800 @ case 5
-_0803F7A0:
- ldrb r0, [r4, #0xc]
- cmp r0, #0
- beq _0803F7C8
- adds r1, r4, #0
- adds r1, #0x78
- ldrh r0, [r1]
- adds r2, r4, #0
- adds r2, #0x7a
- strh r0, [r2]
- ldrh r0, [r4, #0x2e]
- strh r0, [r1]
- adds r1, #4
- ldrh r0, [r1]
- adds r2, #4
- strh r0, [r2]
- ldrh r0, [r4, #0x32]
- strh r0, [r1]
- adds r0, r4, #0
- bl sub_080409B0
-_0803F7C8:
- ldr r0, _0803F7CC @ =gUnk_080D0AC8
- b _0803F7EA
- .align 2, 0
-_0803F7CC: .4byte gUnk_080D0AC8
-_0803F7D0:
- ldr r0, _0803F7D4 @ =gUnk_080D0AE8
- b _0803F7EA
- .align 2, 0
-_0803F7D4: .4byte gUnk_080D0AE8
-_0803F7D8:
- ldr r0, _0803F7DC @ =gUnk_080D0AF0
- b _0803F7EA
- .align 2, 0
-_0803F7DC: .4byte gUnk_080D0AF0
-_0803F7E0:
- ldr r0, _0803F7E4 @ =gUnk_080D0AFC
- b _0803F7EA
- .align 2, 0
-_0803F7E4: .4byte gUnk_080D0AFC
-_0803F7E8:
- ldr r0, _0803F7FC @ =gUnk_080D0B04
-_0803F7EA:
- ldrb r1, [r4, #0xc]
- lsls r1, r1, #2
- adds r1, r1, r0
- ldr r1, [r1]
- adds r0, r4, #0
- bl _call_via_r1
- b _0803F810
- .align 2, 0
-_0803F7FC: .4byte gUnk_080D0B04
-_0803F800:
- ldr r0, _0803F814 @ =gUnk_080D0B0C
- ldrb r1, [r4, #0xc]
- lsls r1, r1, #2
- adds r1, r1, r0
- ldr r1, [r1]
- adds r0, r4, #0
- bl _call_via_r1
-_0803F810:
- pop {r4, pc}
- .align 2, 0
-_0803F814: .4byte gUnk_080D0B0C
-
- thumb_func_start sub_0803F818
-sub_0803F818: @ 0x0803F818
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- bl sub_0804A720
- movs r0, #0
- bl CheckRoomFlag
- cmp r0, #0
- beq _0803F910
- ldr r0, _0803F8FC @ =gEntCount
- ldrb r0, [r0]
- cmp r0, #0x50
- bhi _0803F910
- movs r4, #0
- movs r2, #1
- movs r0, #1
- strb r0, [r5, #0xc]
- ldrb r1, [r5, #0x18]
- subs r0, #5
- ands r0, r1
- orrs r0, r2
- strb r0, [r5, #0x18]
- adds r3, r5, #0
- adds r3, #0x29
- ldrb r1, [r3]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #5
- orrs r0, r1
- strb r0, [r3]
- adds r1, r5, #0
- adds r1, #0x6d
- ldrb r0, [r1]
- orrs r2, r0
- strb r2, [r1]
- bl Random
- movs r1, #0x17
- ands r0, r1
- adds r0, #4
- strb r0, [r5, #0x15]
- movs r0, #0x30
- strb r0, [r5, #0xe]
- movs r0, #0xc
- strb r0, [r5, #0xf]
- adds r1, r5, #0
- adds r1, #0x82
- movs r0, #4
- strb r0, [r1]
- subs r1, #2
- movs r0, #0xff
- strb r0, [r1]
- adds r0, r5, #0
- adds r0, #0x74
- strb r4, [r0]
- adds r0, #3
- strb r4, [r0]
- adds r1, #4
- movs r0, #9
- strb r0, [r1]
- strb r4, [r5, #0x14]
- adds r0, r5, #0
- adds r0, #0x86
- strb r4, [r0]
- adds r0, #1
- strb r4, [r0]
- ldrh r1, [r5, #0x2e]
- subs r0, #0xf
- strh r1, [r0]
- ldrh r0, [r5, #0x2e]
- adds r1, r5, #0
- adds r1, #0x7a
- strh r0, [r1]
- ldrh r1, [r5, #0x32]
- adds r0, r5, #0
- adds r0, #0x7c
- strh r1, [r0]
- ldrh r0, [r5, #0x32]
- adds r1, r5, #0
- adds r1, #0x7e
- strh r0, [r1]
- movs r4, #1
- adds r7, r5, #0
- adds r7, #0x75
-_0803F8C2:
- adds r0, r5, #0
- adds r1, r4, #0
- movs r2, #0
- bl sub_08040648
- adds r4, #1
- cmp r4, #5
- bls _0803F8C2
- bl Random
- adds r0, r5, #0
- bl sub_080408EC
- movs r4, #0
- movs r6, #1
-_0803F8E0:
- movs r0, #0x5a
- movs r1, #0
- bl CreateEnemy
- str r5, [r0, #0x50]
- strb r4, [r0, #0xb]
- ldrb r1, [r7]
- asrs r1, r4
- ands r1, r6
- cmp r1, #0
- beq _0803F900
- strb r6, [r0, #0xe]
- b _0803F902
- .align 2, 0
-_0803F8FC: .4byte gEntCount
-_0803F900:
- strb r1, [r0, #0xe]
-_0803F902:
- adds r4, #1
- cmp r4, #7
- bls _0803F8E0
- adds r0, r5, #0
- movs r1, #0
- bl InitAnimationForceUpdate
-_0803F910:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start sub_0803F914
-sub_0803F914: @ 0x0803F914
- push {r4, r5, r6, r7, lr}
- sub sp, #4
- adds r7, r0, #0
- adds r4, r7, #0
- adds r4, #0x80
- ldrb r0, [r4]
- cmp r0, #2
- beq _0803F998
- cmp r0, #2
- bgt _0803F932
- cmp r0, #0
- beq _0803F95A
- cmp r0, #1
- beq _0803F97A
- b _0803FA40
-_0803F932:
- cmp r0, #4
- bne _0803F938
- b _0803FA3A
-_0803F938:
- cmp r0, #4
- blt _0803F9CE
- adds r3, r4, #0
- cmp r0, #0xff
- beq _0803F944
- b _0803FA42
-_0803F944:
- ldrb r0, [r7, #0xe]
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #0
- bne _0803FA42
- strb r0, [r3]
- movs r0, #0xb
- strb r0, [r7, #0xe]
- b _0803FA42
-_0803F95A:
- ldrb r0, [r7, #0xe]
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- adds r3, r4, #0
- cmp r0, #0
- bne _0803FA42
- ldrb r0, [r3]
- adds r0, #1
- strb r0, [r3]
- movs r0, #0xc0
- lsls r0, r0, #1
- strh r0, [r7, #0x24]
- movs r0, #0x14
- strb r0, [r7, #0xe]
- b _0803FA42
-_0803F97A:
- ldrb r0, [r7, #0xe]
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- adds r3, r4, #0
- cmp r0, #0
- bne _0803FA42
- ldrb r0, [r3]
- adds r0, #1
- strb r0, [r3]
- movs r0, #0xc0
- strh r0, [r7, #0x24]
- movs r0, #0xc
- strb r0, [r7, #0xe]
- b _0803FA42
-_0803F998:
- ldrb r0, [r7, #0xe]
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- lsrs r1, r0, #0x18
- adds r3, r4, #0
- cmp r1, #0
- bne _0803FA42
- ldrb r0, [r3]
- adds r0, #1
- strb r0, [r3]
- strh r1, [r7, #0x24]
- ldrb r0, [r7, #0x14]
- cmp r0, #1
- bhi _0803F9C8
- str r3, [sp]
- bl Random
- movs r1, #0x7f
- ands r0, r1
- adds r0, #0x40
- strb r0, [r7, #0xe]
- ldr r3, [sp]
- b _0803FA42
-_0803F9C8:
- movs r0, #8
- strb r0, [r7, #0xe]
- b _0803FA42
-_0803F9CE:
- ldrb r0, [r7, #0xe]
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- lsrs r1, r0, #0x18
- cmp r1, #0
- bne _0803FA32
- movs r0, #0
- strh r1, [r7, #0x36]
- strb r0, [r4]
- ldr r1, _0803FA04 @ =gUnk_080D0ABF
- ldrb r0, [r7, #0x14]
- lsls r0, r0, #1
- adds r0, r0, r1
- ldrb r0, [r0]
- strb r0, [r7, #0xe]
- adds r0, r7, #0
- bl sub_08040934
- adds r1, r0, #0
- cmp r1, #2
- beq _0803FA1A
- cmp r1, #2
- bhi _0803FA08
- cmp r1, #1
- beq _0803FA0E
- b _0803FA26
- .align 2, 0
-_0803FA04: .4byte gUnk_080D0ABF
-_0803FA08:
- cmp r1, #3
- beq _0803FA20
- b _0803FA26
-_0803FA0E:
- movs r0, #4
- strb r0, [r7, #0xc]
- adds r0, r7, #0
- adds r0, #0x74
- strb r1, [r0]
- b _0803FA40
-_0803FA1A:
- movs r0, #5
- strb r0, [r7, #0xc]
- b _0803FA40
-_0803FA20:
- movs r0, #6
- strb r0, [r7, #0xc]
- b _0803FA40
-_0803FA26:
- adds r1, r7, #0
- adds r1, #0x80
- movs r0, #4
- strb r0, [r1]
- adds r3, r1, #0
- b _0803FA42
-_0803FA32:
- adds r0, r7, #0
- bl sub_08040AD4
- b _0803FA40
-_0803FA3A:
- adds r0, r7, #0
- bl sub_08040670
-_0803FA40:
- adds r3, r4, #0
-_0803FA42:
- adds r1, r7, #0
- adds r1, #0x82
- ldrb r0, [r1]
- subs r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _0803FAAC
- movs r0, #4
- strb r0, [r1]
- ldrb r2, [r7, #0x15]
- adds r2, #0x12
- movs r0, #0x1c
- ands r2, r0
- asrs r2, r2, #2
- movs r0, #0x9b
- movs r1, #0
- str r3, [sp]
- bl CreateObject
- adds r6, r0, #0
- ldr r3, [sp]
- cmp r6, #0
- beq _0803FAAC
- str r7, [r6, #0x50]
- str r3, [sp]
- bl Random
- movs r5, #0xf
- ands r0, r5
- ldr r1, _0803FAC4 @ =0x0000FFF9
- adds r4, r1, #0
- adds r0, r4, r0
- ldrh r1, [r6, #0x2e]
- adds r0, r0, r1
- strh r0, [r6, #0x2e]
- bl Random
- ands r0, r5
- adds r4, r4, r0
- ldrh r0, [r6, #0x32]
- adds r4, r4, r0
- strh r4, [r6, #0x32]
- adds r2, r6, #0
- adds r2, #0x29
- ldrb r1, [r2]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #6
- orrs r0, r1
- strb r0, [r2]
- ldr r3, [sp]
-_0803FAAC:
- ldrb r0, [r3]
- cmp r0, #0xff
- beq _0803FAB8
- adds r0, r7, #0
- bl ProcessMovement
-_0803FAB8:
- adds r0, r7, #0
- bl UpdateAnimationSingleFrame
- add sp, #4
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_0803FAC4: .4byte 0x0000FFF9
-
- thumb_func_start sub_0803FAC8
-sub_0803FAC8: @ 0x0803FAC8
- push {lr}
- bl UpdateAnimationSingleFrame
- pop {pc}
-
- thumb_func_start sub_0803FAD0
-sub_0803FAD0: @ 0x0803FAD0
- push {r4, r5, r6, r7, lr}
- adds r7, r0, #0
- adds r0, #0x80
- ldrb r0, [r0]
- cmp r0, #5
- bls _0803FADE
- b _0803FD32
-_0803FADE:
- lsls r0, r0, #2
- ldr r1, _0803FAE8 @ =_0803FAEC
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0803FAE8: .4byte _0803FAEC
-_0803FAEC: @ jump table
- .4byte _0803FB04 @ case 0
- .4byte _0803FB34 @ case 1
- .4byte _0803FBB8 @ case 2
- .4byte _0803FBE2 @ case 3
- .4byte _0803FC80 @ case 4
- .4byte _0803FD0C @ case 5
-_0803FB04:
- movs r1, #0xa0
- lsls r1, r1, #6
- adds r0, r7, #0
- bl sub_080044EC
- adds r1, r0, #0
- cmp r1, #1
- beq _0803FB16
- b _0803FD32
-_0803FB16:
- adds r0, r7, #0
- adds r0, #0x80
- strb r1, [r0]
- movs r0, #0xc0
- strb r0, [r7, #0xe]
- ldrb r1, [r7, #0x10]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r7, #0x10]
- movs r0, #0xa6
- lsls r0, r0, #1
- bl SoundReq
- movs r0, #0x14
- b _0803FC4A
-_0803FB34:
- ldrb r0, [r7, #0xe]
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- lsrs r2, r0, #0x18
- adds r3, r7, #0
- adds r3, #0x80
- cmp r2, #0
- bne _0803FB58
- movs r0, #2
- strb r0, [r3]
- adds r1, r7, #0
- adds r1, #0x3f
- movs r0, #0x35
- strb r0, [r1]
- adds r0, r7, #0
- adds r0, #0x62
- strb r2, [r0]
-_0803FB58:
- adds r2, r7, #0
- adds r2, #0x45
- ldr r0, _0803FB70 @ =gUnk_080D0ABC
- ldrb r1, [r7, #0x14]
- adds r1, r1, r0
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bhs _0803FB74
- movs r0, #1
- strb r0, [r7, #0xe]
- b _0803FB76
- .align 2, 0
-_0803FB70: .4byte gUnk_080D0ABC
-_0803FB74:
- movs r0, #0
-_0803FB76:
- cmp r0, #0
- bne _0803FB7C
- b _0803FD32
-_0803FB7C:
- movs r1, #0
- movs r0, #2
- strb r0, [r3]
- adds r2, r7, #0
- adds r2, #0x3f
- movs r0, #0x35
- strb r0, [r2]
- adds r0, r7, #0
- adds r0, #0x62
- strb r1, [r0]
- ldrb r0, [r7, #0x14]
- adds r0, #1
- strb r0, [r7, #0x14]
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #2
- bhi _0803FBA0
- b _0803FD32
-_0803FBA0:
- movs r0, #7
- strb r0, [r7, #0xc]
- movs r0, #0xe0
- strb r0, [r7, #0xe]
- bl sub_0807A108
- ldr r0, _0803FBB4 @ =0x00000127
- bl SoundReq
- b _0803FD4E
- .align 2, 0
-_0803FBB4: .4byte 0x00000127
-_0803FBB8:
- ldr r0, [r7, #0x54]
- adds r0, #0x74
- movs r1, #0x10
- strb r1, [r0]
- ldrb r0, [r7, #0xe]
- cmp r0, #0
- beq _0803FBD4
- adds r0, r7, #0
- adds r0, #0x80
- movs r1, #3
- strb r1, [r0]
- movs r0, #0x40
- strb r0, [r7, #0xe]
- b _0803FD32
-_0803FBD4:
- adds r0, r7, #0
- adds r0, #0x80
- movs r1, #4
- strb r1, [r0]
- movs r0, #0x50
- strb r0, [r7, #0xe]
- b _0803FD32
-_0803FBE2:
- ldrb r0, [r7, #0xe]
- cmp r0, #0
- beq _0803FC08
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- cmp r0, #0
- beq _0803FBF4
- b _0803FD32
-_0803FBF4:
- ldrb r1, [r7, #0x10]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r7, #0x10]
- movs r0, #0xe0
- lsls r0, r0, #0xa
- str r0, [r7, #0x20]
- movs r0, #0x10
- strb r0, [r7, #0xf]
- b _0803FD32
-_0803FC08:
- movs r1, #0xa0
- lsls r1, r1, #6
- adds r0, r7, #0
- bl sub_08003FC4
- adds r2, r0, #0
- cmp r2, #0
- bne _0803FC52
- adds r1, r7, #0
- adds r1, #0x80
- movs r0, #5
- strb r0, [r1]
- movs r0, #0x10
- strb r0, [r7, #0xe]
- ldrb r1, [r7, #0x10]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r7, #0x10]
- adds r1, r7, #0
- adds r1, #0x45
- movs r0, #0xff
- strb r0, [r1]
- adds r0, r7, #0
- adds r0, #0x86
- strb r2, [r0]
- adds r0, r7, #0
- bl sub_080408EC
- movs r0, #0xa6
- lsls r0, r0, #1
- bl SoundReq
- movs r0, #0x1e
-_0803FC4A:
- movs r1, #4
- bl sub_08080964
- b _0803FD32
-_0803FC52:
- ldrb r0, [r7, #0xf]
- cmp r0, #0
- beq _0803FD32
- subs r1, r0, #1
- strb r1, [r7, #0xf]
- lsls r0, r1, #0x18
- cmp r0, #0
- bne _0803FC6C
- movs r0, #0xd8
- lsls r0, r0, #1
- bl SoundReq
- b _0803FD32
-_0803FC6C:
- movs r0, #7
- ands r1, r0
- cmp r1, #0
- bne _0803FD32
- ldr r0, _0803FC7C @ =0x00000149
- bl SoundReq
- b _0803FD32
- .align 2, 0
-_0803FC7C: .4byte 0x00000149
-_0803FC80:
- ldrb r0, [r7, #0xe]
- subs r1, r0, #1
- strb r1, [r7, #0xe]
- lsls r0, r1, #0x18
- lsrs r2, r0, #0x18
- cmp r2, #0
- bne _0803FCA8
- adds r0, r7, #0
- adds r0, #0x80
- movs r1, #5
- strb r1, [r0]
- movs r0, #0x10
- strb r0, [r7, #0xe]
- adds r0, r7, #0
- adds r0, #0x86
- strb r2, [r0]
- adds r0, r7, #0
- bl sub_080408EC
- b _0803FD32
-_0803FCA8:
- movs r0, #1
- ands r1, r0
- cmp r1, #0
- beq _0803FD32
- movs r0, #0x9b
- movs r1, #1
- movs r2, #0xff
- bl CreateObject
- adds r6, r0, #0
- cmp r6, #0
- beq _0803FD32
- str r7, [r6, #0x50]
- adds r0, r7, #0
- adds r1, r6, #0
- bl CopyPosition
- bl Random
- movs r5, #0xf
- ands r0, r5
- ldr r1, _0803FD08 @ =0x0000FFF9
- adds r4, r1, #0
- adds r0, r4, r0
- ldrh r1, [r6, #0x2e]
- adds r0, r0, r1
- strh r0, [r6, #0x2e]
- bl Random
- ands r0, r5
- adds r4, r4, r0
- ldrh r0, [r6, #0x32]
- adds r4, r4, r0
- strh r4, [r6, #0x32]
- adds r2, r6, #0
- adds r2, #0x29
- ldrb r1, [r2]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #4
- orrs r0, r1
- strb r0, [r2]
- movs r0, #0x92
- lsls r0, r0, #1
- bl SoundReq
- b _0803FD32
- .align 2, 0
-_0803FD08: .4byte 0x0000FFF9
-_0803FD0C:
- ldrb r0, [r7, #0xe]
- subs r0, #1
- strb r0, [r7, #0xe]
- lsls r0, r0, #0x18
- lsrs r1, r0, #0x18
- cmp r1, #0
- bne _0803FD32
- movs r0, #1
- strb r0, [r7, #0xc]
- adds r0, r7, #0
- adds r0, #0x80
- strb r1, [r0]
- adds r0, #1
- strb r1, [r0]
- subs r0, #0xb
- strb r1, [r0]
- adds r0, r7, #0
- bl sub_08040670
-_0803FD32:
- adds r0, r7, #0
- adds r0, #0x80
- ldrb r0, [r0]
- cmp r0, #2
- bls _0803FD48
- ldrb r1, [r7, #0xe]
- movs r0, #1
- ands r0, r1
- adds r1, r7, #0
- adds r1, #0x62
- strb r0, [r1]
-_0803FD48:
- adds r0, r7, #0
- bl UpdateAnimationSingleFrame
-_0803FD4E:
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start sub_0803FD50
-sub_0803FD50: @ 0x0803FD50
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r4, #0
- adds r5, #0x80
- ldrb r0, [r5]
- cmp r0, #1
- beq _0803FDA8
- cmp r0, #1
- bgt _0803FD68
- cmp r0, #0
- beq _0803FD72
- b _0803FE86
-_0803FD68:
- cmp r0, #2
- beq _0803FE0C
- cmp r0, #3
- beq _0803FE62
- b _0803FE86
-_0803FD72:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- lsrs r1, r0, #0x18
- cmp r1, #0
- beq _0803FD82
- b _0803FE86
-_0803FD82:
- ldrb r0, [r5]
- adds r0, #1
- strb r0, [r5]
- adds r0, r4, #0
- adds r0, #0x74
- strb r1, [r0]
- movs r0, #0x80
- strb r0, [r4, #0xe]
- strb r1, [r4, #0xf]
- movs r0, #0x90
- lsls r0, r0, #0xa
- str r0, [r4, #0x20]
- ldr r0, _0803FDA4 @ =0x0000012B
- bl SoundReq
- b _0803FE86
- .align 2, 0
-_0803FDA4: .4byte 0x0000012B
-_0803FDA8:
- movs r1, #0xa0
- lsls r1, r1, #6
- adds r0, r4, #0
- bl sub_08003FC4
- cmp r0, #0
- bne _0803FE86
- ldrb r0, [r5]
- adds r0, #1
- strb r0, [r5]
- adds r0, r4, #0
- adds r0, #0x84
- ldrb r0, [r0]
- cmp r0, #1
- beq _0803FDD8
- cmp r0, #1
- bgt _0803FDD0
- cmp r0, #0
- beq _0803FDDE
- b _0803FDE4
-_0803FDD0:
- cmp r0, #2
- beq _0803FDDE
- cmp r0, #3
- bne _0803FDE4
-_0803FDD8:
- movs r0, #1
- strb r0, [r4, #0xf]
- b _0803FDF0
-_0803FDDE:
- movs r0, #0
- strb r0, [r4, #0xf]
- b _0803FDF0
-_0803FDE4:
- bl Random
- movs r1, #0x20
- ands r1, r0
- lsrs r1, r1, #5
- strb r1, [r4, #0xf]
-_0803FDF0:
- ldrb r0, [r4, #0x14]
- cmp r0, #1
- bls _0803FDFA
- movs r0, #1
- strb r0, [r4, #0xf]
-_0803FDFA:
- movs r0, #0xa6
- lsls r0, r0, #1
- bl SoundReq
- movs r0, #0x1e
- movs r1, #4
- bl sub_08080964
- b _0803FE86
-_0803FE0C:
- ldrb r0, [r4, #0xe]
- subs r1, r0, #1
- strb r1, [r4, #0xe]
- lsls r0, r1, #0x18
- cmp r0, #0
- bne _0803FE34
- ldrb r0, [r5]
- adds r0, #1
- strb r0, [r5]
- ldr r2, _0803FE30 @ =gUnk_080D0ABF
- ldrb r0, [r4, #0x14]
- lsls r0, r0, #1
- movs r1, #1
- orrs r0, r1
- adds r0, r0, r2
- ldrb r0, [r0]
- strb r0, [r4, #0xe]
- b _0803FE86
- .align 2, 0
-_0803FE30: .4byte gUnk_080D0ABF
-_0803FE34:
- movs r0, #7
- ands r1, r0
- cmp r1, #0
- bne _0803FE46
- ldrb r2, [r4, #0xf]
- adds r0, r4, #0
- movs r1, #0x1f
- bl sub_0804A98C
-_0803FE46:
- ldrb r0, [r4, #0xf]
- cmp r0, #0
- beq _0803FE86
- ldrb r0, [r4, #0x14]
- cmp r0, #1
- bls _0803FE86
- ldrb r0, [r4, #0xe]
- cmp r0, #5
- bhi _0803FE86
- movs r0, #0x80
- strb r0, [r4, #0xe]
- movs r0, #0
- strb r0, [r4, #0xf]
- b _0803FE86
-_0803FE62:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- lsrs r1, r0, #0x18
- cmp r1, #0
- bne _0803FE80
- movs r0, #1
- strb r0, [r4, #0xc]
- strb r1, [r5]
- strh r1, [r4, #0x36]
- adds r0, r4, #0
- bl sub_08040670
- b _0803FE86
-_0803FE80:
- adds r0, r4, #0
- bl sub_08040AD4
-_0803FE86:
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start sub_0803FE90
-sub_0803FE90: @ 0x0803FE90
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r3, r4, #0
- adds r3, #0x80
- ldrb r2, [r3]
- cmp r2, #1
- beq _0803FED4
- cmp r2, #1
- bgt _0803FEA8
- cmp r2, #0
- beq _0803FEAE
- b _0803FF74
-_0803FEA8:
- cmp r2, #2
- beq _0803FF52
- b _0803FF74
-_0803FEAE:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _0803FF74
- ldrb r0, [r3]
- adds r0, #1
- strb r0, [r3]
- movs r0, #0x40
- strb r0, [r4, #0xe]
- ldrb r0, [r4, #0x14]
- cmp r0, #1
- bls _0803FF74
- movs r0, #0x80
- strb r0, [r4, #0xe]
- movs r0, #1
- strb r0, [r4, #0xf]
- b _0803FF74
-_0803FED4:
- ldrb r0, [r4, #0xe]
- subs r1, r0, #1
- strb r1, [r4, #0xe]
- lsls r0, r1, #0x18
- cmp r0, #0
- bne _0803FEFC
- ldrb r0, [r3]
- adds r0, #1
- strb r0, [r3]
- ldr r1, _0803FEF8 @ =gUnk_080D0ABF
- ldrb r0, [r4, #0x14]
- lsls r0, r0, #1
- orrs r0, r2
- adds r0, r0, r1
- ldrb r0, [r0]
- strb r0, [r4, #0xe]
- b _0803FF74
- .align 2, 0
-_0803FEF8: .4byte gUnk_080D0ABF
-_0803FEFC:
- ldrb r0, [r4, #0xf]
- cmp r0, #0
- beq _0803FF24
- movs r0, #7
- ands r1, r0
- cmp r1, #0
- bne _0803FF14
- ldrb r2, [r4, #0xf]
- adds r0, r4, #0
- movs r1, #0x1f
- bl sub_0804A98C
-_0803FF14:
- ldrb r0, [r4, #0xe]
- cmp r0, #5
- bhi _0803FF74
- movs r0, #0x40
- strb r0, [r4, #0xe]
- movs r0, #0
- strb r0, [r4, #0xf]
- b _0803FF74
-_0803FF24:
- movs r5, #0xf
- ands r5, r1
- cmp r5, #0
- bne _0803FF74
- adds r0, r4, #0
- movs r1, #0x1f
- movs r2, #2
- bl sub_0804A98C
- adds r1, r0, #0
- cmp r1, #0
- beq _0803FF74
- strb r5, [r1, #0xb]
- adds r0, r4, #0
- adds r0, #0x81
- ldrb r0, [r0]
- cmp r0, #0
- beq _0803FF74
- ldrh r0, [r1, #0x24]
- lsls r0, r0, #0x10
- asrs r0, r0, #0x11
- strh r0, [r1, #0x24]
- b _0803FF74
-_0803FF52:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- lsrs r1, r0, #0x18
- cmp r1, #0
- bne _0803FF6E
- movs r0, #1
- strb r0, [r4, #0xc]
- strb r1, [r3]
- adds r0, r4, #0
- bl sub_08040670
- b _0803FF74
-_0803FF6E:
- adds r0, r4, #0
- bl sub_08040AD4
-_0803FF74:
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
- pop {r4, r5, pc}
-
- thumb_func_start sub_0803FF7C
-sub_0803FF7C: @ 0x0803FF7C
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r2, r4, #0
- adds r2, #0x80
- ldrb r5, [r2]
- cmp r5, #1
- beq _0803FFBC
- cmp r5, #1
- bgt _0803FF94
- cmp r5, #0
- beq _0803FF9A
- b _08040062
-_0803FF94:
- cmp r5, #2
- beq _08040040
- b _08040062
-_0803FF9A:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _08040062
- ldrb r0, [r2]
- adds r0, #1
- strb r0, [r2]
- movs r0, #0x80
- strb r0, [r4, #0xe]
- ldrb r0, [r4, #0x14]
- cmp r0, #1
- bls _08040062
- movs r0, #1
- strb r0, [r4, #0xf]
- b _08040062
-_0803FFBC:
- ldrb r0, [r4, #0xe]
- subs r1, r0, #1
- strb r1, [r4, #0xe]
- lsls r0, r1, #0x18
- cmp r0, #0
- bne _0803FFE4
- ldrb r0, [r2]
- adds r0, #1
- strb r0, [r2]
- ldr r1, _0803FFE0 @ =gUnk_080D0ABF
- ldrb r0, [r4, #0x14]
- lsls r0, r0, #1
- orrs r0, r5
- adds r0, r0, r1
- ldrb r0, [r0]
- strb r0, [r4, #0xe]
- b _08040062
- .align 2, 0
-_0803FFE0: .4byte gUnk_080D0ABF
-_0803FFE4:
- ldrb r0, [r4, #0xf]
- cmp r0, #0
- beq _0804000C
- movs r0, #7
- ands r1, r0
- cmp r1, #0
- bne _0803FFFC
- ldrb r2, [r4, #0xf]
- adds r0, r4, #0
- movs r1, #0x1f
- bl sub_0804A98C
-_0803FFFC:
- ldrb r0, [r4, #0xe]
- cmp r0, #5
- bhi _08040062
- movs r0, #0x80
- strb r0, [r4, #0xe]
- movs r0, #0
- strb r0, [r4, #0xf]
- b _08040062
-_0804000C:
- movs r0, #0x1f
- ands r1, r0
- cmp r1, #0
- bne _08040062
- adds r0, r4, #0
- movs r1, #0x1f
- movs r2, #2
- bl sub_0804A98C
- adds r1, r0, #0
- cmp r1, #0
- beq _08040062
- strb r5, [r1, #0xb]
- ldrh r0, [r1, #0x32]
- subs r0, #0x20
- strh r0, [r1, #0x32]
- adds r0, r4, #0
- adds r0, #0x81
- ldrb r0, [r0]
- cmp r0, #0
- beq _08040062
- ldrh r0, [r1, #0x24]
- lsls r0, r0, #0x10
- asrs r0, r0, #0x11
- strh r0, [r1, #0x24]
- b _08040062
-_08040040:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- lsrs r1, r0, #0x18
- cmp r1, #0
- bne _0804005C
- movs r0, #1
- strb r0, [r4, #0xc]
- strb r1, [r2]
- adds r0, r4, #0
- bl sub_08040670
- b _08040062
-_0804005C:
- adds r0, r4, #0
- bl sub_08040AD4
-_08040062:
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start sub_0804006C
-sub_0804006C: @ 0x0804006C
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- bl sub_08078B48
- ldrb r0, [r4, #0xe]
- cmp r0, #0
- beq _08040090
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _080400C2
- movs r0, #2
- bl SetRoomFlag
- movs r0, #8
- strb r0, [r4, #0xf]
- b _080400BA
-_08040090:
- ldrb r0, [r4, #0xf]
- cmp r0, #0
- beq _080400B4
- subs r0, #1
- strb r0, [r4, #0xf]
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #0
- bne _080400BA
- adds r1, r4, #0
- adds r1, #0x45
- strb r0, [r1]
- ldrb r1, [r4, #0x18]
- movs r0, #4
- rsbs r0, r0, #0
- ands r0, r1
- strb r0, [r4, #0x18]
- b _080400BA
-_080400B4:
- adds r0, r4, #0
- bl sub_0804A7D4
-_080400BA:
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
- b _08040126
-_080400C2:
- ldrb r0, [r4, #0xf]
- adds r0, #1
- movs r1, #7
- ands r0, r1
- strb r0, [r4, #0xf]
- cmp r0, #0
- bne _08040120
- adds r0, r4, #0
- movs r1, #0x55
- movs r2, #0
- bl CreateFx
- adds r5, r0, #0
- cmp r5, #0
- beq _08040120
- bl Random
- ldr r1, _08040128 @ =0x00003F3F
- ands r0, r1
- movs r3, #0xff
- adds r1, r0, #0
- ands r1, r3
- ldr r6, _0804012C @ =0x0000FFE0
- adds r2, r6, #0
- adds r1, r2, r1
- ldrh r6, [r5, #0x2e]
- adds r1, r1, r6
- strh r1, [r5, #0x2e]
- lsrs r0, r0, #8
- ands r0, r3
- adds r2, r2, r0
- ldrh r0, [r5, #0x32]
- adds r2, r2, r0
- strh r2, [r5, #0x32]
- adds r2, r5, #0
- adds r2, #0x29
- ldrb r1, [r2]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #2
- orrs r0, r1
- strb r0, [r2]
- movs r0, #0xb7
- lsls r0, r0, #1
- bl SoundReq
-_08040120:
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
-_08040126:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08040128: .4byte 0x00003F3F
-_0804012C: .4byte 0x0000FFE0
-
- thumb_func_start sub_08040130
-sub_08040130: @ 0x08040130
- push {lr}
- movs r2, #0
- movs r1, #1
- strb r1, [r0, #0xc]
- strb r2, [r0, #0xe]
- adds r1, r0, #0
- adds r1, #0x80
- strb r2, [r1]
- adds r3, r0, #0
- adds r3, #0x29
- ldrb r2, [r3]
- movs r1, #8
- rsbs r1, r1, #0
- ands r1, r2
- movs r2, #6
- orrs r1, r2
- strb r1, [r3]
- ldrb r1, [r0, #0xe]
- bl InitAnimationForceUpdate
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_0804015C
-sub_0804015C: @ 0x0804015C
- push {r4, r5, lr}
- adds r4, r0, #0
- ldr r5, [r4, #0x50]
- adds r0, r5, #0
- adds r0, #0x45
- ldrb r0, [r0]
- cmp r0, #0
- bne _0804017C
- adds r2, r4, #0
- adds r2, #0x6d
- ldrb r1, [r2]
- movs r0, #2
- orrs r0, r1
- strb r0, [r2]
- bl DeleteThisEntity
-_0804017C:
- adds r0, r5, #0
- adds r0, #0x7a
- ldrh r0, [r0]
- strh r0, [r4, #0x2e]
- adds r0, r5, #0
- adds r0, #0x7e
- ldrh r0, [r0]
- strh r0, [r4, #0x32]
- adds r0, r5, #0
- adds r0, #0x74
- ldrb r0, [r0]
- cmp r0, #0
- bne _0804019E
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
- b _080401A6
-_0804019E:
- adds r0, r4, #0
- movs r1, #2
- bl sub_080042BA
-_080401A6:
- ldrb r0, [r5, #0xc]
- cmp r0, #4
- bls _080401C0
- ldrb r0, [r4, #0xe]
- cmp r0, #0
- bne _080401D2
- movs r0, #1
- strb r0, [r4, #0xe]
- adds r0, r4, #0
- movs r1, #1
- bl InitAnimationForceUpdate
- b _080401D2
-_080401C0:
- ldrb r0, [r4, #0xe]
- cmp r0, #0
- beq _080401D2
- movs r0, #0
- strb r0, [r4, #0xe]
- adds r0, r4, #0
- movs r1, #0
- bl InitAnimationForceUpdate
-_080401D2:
- ldrb r0, [r5, #0xc]
- cmp r0, #3
- beq _080401DC
- ldrh r0, [r5, #0x36]
- strh r0, [r4, #0x36]
-_080401DC:
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start sub_080401E0
-sub_080401E0: @ 0x080401E0
- push {r4, r5, lr}
- adds r4, r0, #0
- ldrb r1, [r4, #0xb]
- adds r5, r1, #0
- cmp r5, #0
- beq _08040212
- movs r0, #1
- strb r0, [r4, #0xc]
- adds r1, #1
- adds r3, r4, #0
- adds r3, #0x29
- movs r0, #7
- ands r1, r0
- ldrb r2, [r3]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrb r1, [r4, #0xb]
- adds r1, #4
- adds r0, r4, #0
- bl InitAnimationForceUpdate
- b _08040260
-_08040212:
- adds r2, r4, #0
- adds r2, #0x29
- ldrb r1, [r2]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08040264 @ =gEntCount
- ldrb r0, [r0]
- cmp r0, #0x45
- bhi _08040260
- adds r0, r4, #0
- movs r1, #2
- movs r2, #1
- bl sub_08040648
- adds r0, r4, #0
- movs r1, #2
- movs r2, #2
- bl sub_08040648
- movs r0, #1
- strb r0, [r4, #0xc]
- strb r5, [r4, #0xe]
- bl Random
- movs r1, #0x7f
- ands r0, r1
- adds r0, #0x17
- strb r0, [r4, #0xf]
- adds r0, r4, #0
- adds r0, #0x74
- strb r5, [r0]
- adds r0, r4, #0
- movs r1, #0
- bl InitAnimationForceUpdate
-_08040260:
- pop {r4, r5, pc}
- .align 2, 0
-_08040264: .4byte gEntCount
-
- thumb_func_start sub_08040268
-sub_08040268: @ 0x08040268
- push {r4, r5, lr}
- adds r4, r0, #0
- ldr r0, [r4, #0x50]
- adds r0, #0x45
- ldrb r0, [r0]
- cmp r0, #0
- bne _08040286
- adds r2, r4, #0
- adds r2, #0x6d
- ldrb r1, [r2]
- movs r0, #2
- orrs r0, r1
- strb r0, [r2]
- bl DeleteThisEntity
-_08040286:
- ldr r0, [r4, #0x50]
- adds r1, r4, #0
- bl CopyPosition
- ldrb r2, [r4, #0xb]
- cmp r2, #1
- beq _080402C6
- cmp r2, #1
- bgt _0804029E
- cmp r2, #0
- beq _080402E4
- b _08040382
-_0804029E:
- cmp r2, #2
- bne _08040382
- ldr r1, _080402DC @ =gPlayerEntity
- adds r0, r4, #0
- bl GetFacingDirection
- lsls r0, r0, #1
- ldr r1, _080402E0 @ =gUnk_080D0B18
- adds r0, r0, r1
- movs r1, #0
- ldrsb r1, [r0, r1]
- ldrh r2, [r4, #0x2e]
- adds r1, r1, r2
- strh r1, [r4, #0x2e]
- ldrb r0, [r0, #1]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- ldrh r1, [r4, #0x32]
- adds r0, r0, r1
- strh r0, [r4, #0x32]
-_080402C6:
- ldr r0, [r4, #0x50]
- ldrb r0, [r0, #0x1e]
- cmp r0, #2
- beq _08040382
- movs r0, #2
- strb r0, [r4, #0xc]
- ldrb r1, [r4, #0x18]
- subs r0, #6
- ands r0, r1
- strb r0, [r4, #0x18]
- b _08040382
- .align 2, 0
-_080402DC: .4byte gPlayerEntity
-_080402E0: .4byte gUnk_080D0B18
-_080402E4:
- adds r5, r4, #0
- adds r5, #0x74
- ldrb r0, [r5]
- cmp r0, #1
- beq _0804032E
- cmp r0, #1
- bgt _080402F8
- cmp r0, #0
- beq _08040302
- b _08040382
-_080402F8:
- cmp r0, #0x10
- beq _08040354
- cmp r0, #0x11
- beq _08040366
- b _08040382
-_08040302:
- ldrb r0, [r4, #0xf]
- subs r0, #1
- strb r0, [r4, #0xf]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _08040382
- bl Random
- movs r1, #0x7f
- ands r0, r1
- adds r0, #0x27
- strb r0, [r4, #0xf]
- movs r1, #1
- ands r0, r1
- cmp r0, #0
- beq _08040382
- strb r1, [r5]
- adds r0, r4, #0
- movs r1, #8
- bl InitAnimationForceUpdate
- b _08040382
-_0804032E:
- adds r0, r4, #0
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08040382
- strb r2, [r5]
- bl Random
- movs r1, #0x7f
- ands r0, r1
- adds r0, #0x17
- strb r0, [r4, #0xf]
- adds r0, r4, #0
- movs r1, #0
- bl InitAnimationForceUpdate
- b _08040382
-_08040354:
- adds r0, r4, #0
- movs r1, #7
- bl InitAnimationForceUpdate
- movs r0, #0x11
- strb r0, [r5]
- movs r0, #0x50
- strb r0, [r4, #0xf]
- b _08040382
-_08040366:
- ldrb r0, [r4, #0xf]
- subs r0, #1
- strb r0, [r4, #0xf]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _08040382
- movs r0, #1
- strb r0, [r5]
- movs r0, #0x30
- strb r0, [r4, #0xf]
- adds r0, r4, #0
- movs r1, #8
- bl InitAnimationForceUpdate
-_08040382:
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start sub_0804038C
-sub_0804038C: @ 0x0804038C
- push {r4, lr}
- adds r4, r0, #0
- ldr r0, [r4, #0x50]
- adds r0, #0x45
- ldrb r0, [r0]
- cmp r0, #0
- bne _080403AA
- adds r2, r4, #0
- adds r2, #0x6d
- ldrb r1, [r2]
- movs r0, #2
- orrs r0, r1
- strb r0, [r2]
- bl DeleteThisEntity
-_080403AA:
- ldr r0, [r4, #0x50]
- adds r1, r4, #0
- bl CopyPosition
- ldr r0, [r4, #0x50]
- ldrb r0, [r0, #0x1e]
- cmp r0, #2
- bne _080403CA
- movs r2, #1
- movs r0, #1
- strb r0, [r4, #0xc]
- ldrb r1, [r4, #0x18]
- subs r0, #5
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, #0x18]
-_080403CA:
- pop {r4, pc}
-
- thumb_func_start sub_080403CC
-sub_080403CC: @ 0x080403CC
- push {lr}
- movs r1, #1
- strb r1, [r0, #0xc]
- adds r3, r0, #0
- adds r3, #0x29
- ldrb r2, [r3]
- subs r1, #9
- ands r1, r2
- movs r2, #4
- orrs r1, r2
- strb r1, [r3]
- movs r1, #0
- bl InitAnimationForceUpdate
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_080403EC
-sub_080403EC: @ 0x080403EC
- push {r4, lr}
- adds r4, r0, #0
- ldr r0, [r4, #0x50]
- adds r0, #0x45
- ldrb r0, [r0]
- cmp r0, #0
- bne _0804040A
- adds r2, r4, #0
- adds r2, #0x6d
- ldrb r1, [r2]
- movs r0, #2
- orrs r0, r1
- strb r0, [r2]
- bl DeleteThisEntity
-_0804040A:
- ldr r0, [r4, #0x50]
- adds r1, r4, #0
- bl CopyPosition
- adds r0, r4, #0
- bl UpdateAnimationSingleFrame
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start sub_0804041C
-sub_0804041C: @ 0x0804041C
- push {lr}
- movs r2, #0
- movs r1, #1
- strb r1, [r0, #0xc]
- adds r1, r0, #0
- adds r1, #0x80
- strb r2, [r1]
- movs r1, #0xa
- strb r1, [r0, #0xe]
- ldrb r2, [r0, #0x18]
- subs r1, #0xe
- ands r1, r2
- strb r1, [r0, #0x18]
- adds r3, r0, #0
- adds r3, #0x29
- ldrb r1, [r3]
- movs r2, #7
- orrs r1, r2
- strb r1, [r3]
- movs r1, #0
- bl InitializeAnimation
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_0804044C
-sub_0804044C: @ 0x0804044C
- push {r4, lr}
- adds r4, r0, #0
- ldr r0, [r4, #0x50]
- adds r0, #0x45
- ldrb r0, [r0]
- cmp r0, #0
- bne _0804046A
- adds r2, r4, #0
- adds r2, #0x6d
- ldrb r1, [r2]
- movs r0, #2
- orrs r0, r1
- strb r0, [r2]
- bl DeleteThisEntity
-_0804046A:
- ldr r0, [r4, #0x50]
- ldrb r0, [r0, #0xc]
- cmp r0, #5
- beq _0804048A
- adds r1, r4, #0
- adds r1, #0x80
- ldrb r0, [r1]
- cmp r0, #0
- beq _080404BC
- movs r0, #0
- strb r0, [r1]
- ldrb r1, [r4, #0x18]
- subs r0, #4
- ands r0, r1
- strb r0, [r4, #0x18]
- b _080404BC
-_0804048A:
- adds r1, r4, #0
- adds r1, #0x80
- ldrb r0, [r1]
- cmp r0, #0
- bne _080404A6
- adds r0, #1
- strb r0, [r1]
- ldrb r1, [r4, #0x18]
- movs r0, #4
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #1
- orrs r0, r1
- strb r0, [r4, #0x18]
-_080404A6:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _080404BC
- movs r0, #0xa
- strb r0, [r4, #0xe]
- ldr r0, _080404CC @ =0x00000149
- bl SoundReq
-_080404BC:
- ldr r0, [r4, #0x50]
- adds r1, r4, #0
- bl CopyPosition
- adds r0, r4, #0
- bl GetNextFrame
- pop {r4, pc}
- .align 2, 0
-_080404CC: .4byte 0x00000149
-
- thumb_func_start sub_080404D0
-sub_080404D0: @ 0x080404D0
- push {lr}
- adds r2, r0, #0
- ldrb r0, [r2, #0xb]
- cmp r0, #0
- beq _080404FC
- movs r0, #2
- strb r0, [r2, #0xc]
- movs r0, #0xa
- strb r0, [r2, #0xe]
- adds r3, r2, #0
- adds r3, #0x29
- ldrb r1, [r3]
- subs r0, #0x12
- ands r0, r1
- movs r1, #3
- orrs r0, r1
- strb r0, [r3]
- adds r0, r2, #0
- movs r1, #2
- bl InitializeAnimation
- b _08040518
-_080404FC:
- movs r0, #1
- strb r0, [r2, #0xc]
- ldrb r1, [r2, #0x18]
- subs r0, #5
- ands r0, r1
- strb r0, [r2, #0x18]
- adds r2, #0x29
- ldrb r1, [r2]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #4
- orrs r0, r1
- strb r0, [r2]
-_08040518:
- pop {pc}
- .align 2, 0
-
- thumb_func_start sub_0804051C
-sub_0804051C: @ 0x0804051C
- push {r4, lr}
- adds r4, r0, #0
- ldr r0, [r4, #0x50]
- adds r0, #0x45
- ldrb r0, [r0]
- cmp r0, #0
- bne _0804053A
- adds r2, r4, #0
- adds r2, #0x6d
- ldrb r1, [r2]
- movs r0, #2
- orrs r0, r1
- strb r0, [r2]
- bl DeleteThisEntity
-_0804053A:
- adds r1, r4, #0
- adds r1, #0x80
- ldrb r0, [r1]
- cmp r0, #0
- beq _0804054A
- cmp r0, #1
- beq _0804056C
- b _080405C4
-_0804054A:
- ldr r0, [r4, #0x50]
- ldrb r0, [r0, #0xc]
- cmp r0, #6
- bne _080405CC
- movs r0, #1
- movs r2, #1
- strb r0, [r1]
- ldrb r1, [r4, #0x18]
- subs r0, #5
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, #0x18]
- adds r0, r4, #0
- movs r1, #1
- bl InitializeAnimation
- b _080405C4
-_0804056C:
- ldr r0, [r4, #0x50]
- ldrb r0, [r0, #0xc]
- cmp r0, #6
- beq _08040582
- movs r0, #0
- strb r0, [r1]
- ldrb r1, [r4, #0x18]
- subs r0, #4
- ands r0, r1
- strb r0, [r4, #0x18]
- b _080405C4
-_08040582:
- adds r2, r4, #0
- adds r2, #0x5a
- ldrb r1, [r2]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080405A8
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r2]
- ldr r0, _080405D0 @ =gEntCount
- ldrb r0, [r0]
- cmp r0, #0x46
- bhi _080405A8
- ldrb r1, [r4, #0xa]
- adds r0, r4, #0
- movs r2, #1
- bl sub_08040648
-_080405A8:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _080405BE
- movs r0, #0xa
- strb r0, [r4, #0xe]
- ldr r0, _080405D4 @ =0x00000149
- bl SoundReq
-_080405BE:
- adds r0, r4, #0
- bl GetNextFrame
-_080405C4:
- ldr r0, [r4, #0x50]
- adds r1, r4, #0
- bl CopyPosition
-_080405CC:
- pop {r4, pc}
- .align 2, 0
-_080405D0: .4byte gEntCount
-_080405D4: .4byte 0x00000149
-
- thumb_func_start sub_080405D8
-sub_080405D8: @ 0x080405D8
- push {r4, lr}
- adds r4, r0, #0
- ldr r0, [r4, #0x50]
- adds r0, #0x45
- ldrb r0, [r0]
- cmp r0, #0
- bne _080405F6
- adds r2, r4, #0
- adds r2, #0x6d
- ldrb r1, [r2]
- movs r0, #2
- orrs r0, r1
- strb r0, [r2]
- bl DeleteThisEntity
-_080405F6:
- adds r3, r4, #0
- adds r3, #0x80
- ldrb r2, [r3]
- cmp r2, #0
- bne _08040626
- ldr r0, [r4, #0x50]
- ldr r0, [r0, #0x50]
- ldrb r0, [r0, #0xc]
- cmp r0, #6
- beq _08040638
- adds r0, r4, #0
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08040638
- adds r0, r2, #1
- strb r0, [r3]
- adds r0, r4, #0
- movs r1, #3
- bl InitializeAnimation
- b _08040638
-_08040626:
- adds r0, r4, #0
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08040638
- bl DeleteThisEntity
-_08040638:
- ldr r0, [r4, #0x50]
- adds r1, r4, #0
- bl CopyPosition
- adds r0, r4, #0
- bl GetNextFrame
- pop {r4, pc}
-
- thumb_func_start sub_08040648
-sub_08040648: @ 0x08040648
- push {r4, r5, r6, r7, lr}
- adds r6, r0, #0
- adds r4, r1, #0
- adds r7, r2, #0
- movs r0, #0x4f
- bl CreateEnemy
- adds r5, r0, #0
- strb r7, [r5, #0xb]
- str r6, [r5, #0x50]
- adds r0, r6, #0
- adds r1, r5, #0
- bl CopyPosition
- cmp r4, #2
- bne _0804066E
- cmp r7, #0
- bne _0804066E
- str r5, [r6, #0x54]
-_0804066E:
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start sub_08040670
-sub_08040670: @ 0x08040670
- push {lr}
- adds r2, r0, #0
- movs r1, #0
- movs r0, #1
- strb r0, [r2, #0xc]
- adds r0, r2, #0
- adds r0, #0x80
- strb r1, [r0]
- movs r0, #0x80
- lsls r0, r0, #1
- strh r0, [r2, #0x24]
- movs r0, #0xc
- strb r0, [r2, #0xe]
- ldrb r0, [r2, #0x14]
- cmp r0, #0
- bne _08040698
- adds r0, r2, #0
- bl sub_080406A0
- b _0804069E
-_08040698:
- adds r0, r2, #0
- bl sub_08040770
-_0804069E:
- pop {pc}
-
- thumb_func_start sub_080406A0
-sub_080406A0: @ 0x080406A0
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r5, r0, #0
- bl Random
- mov r8, r0
- movs r0, #0x30
- mov r1, r8
- ands r1, r0
- mov r8, r1
- adds r0, r5, #0
- adds r0, #0x86
- ldrb r6, [r0]
- ldr r2, _080406F0 @ =gRoomControls
- ldrh r3, [r2, #6]
- ldr r4, _080406F4 @ =gUnk_080D0B58
- lsls r1, r6, #1
- lsls r0, r6, #2
- adds r0, r0, r4
- ldrh r0, [r0]
- adds r7, r3, r0
- ldrh r2, [r2, #8]
- adds r1, #1
- lsls r1, r1, #1
- adds r1, r1, r4
- ldrh r0, [r1]
- adds r4, r2, r0
- adds r0, r5, #0
- adds r1, r7, #0
- adds r2, r4, #0
- movs r3, #0x1c
- bl sub_0806FCB8
- cmp r0, #0
- beq _0804071E
- cmp r6, #0
- beq _080406F8
- movs r6, #0
- b _08040702
- .align 2, 0
-_080406F0: .4byte gRoomControls
-_080406F4: .4byte gUnk_080D0B58
-_080406F8:
- bl Random
- movs r1, #1
- ands r1, r0
- adds r6, r1, #1
-_08040702:
- ldr r2, _0804074C @ =gRoomControls
- ldrh r3, [r2, #6]
- ldr r4, _08040750 @ =gUnk_080D0B58
- lsls r1, r6, #1
- lsls r0, r6, #2
- adds r0, r0, r4
- ldrh r0, [r0]
- adds r7, r3, r0
- ldrh r2, [r2, #8]
- adds r1, #1
- lsls r1, r1, #1
- adds r1, r1, r4
- ldrh r0, [r1]
- adds r4, r2, r0
-_0804071E:
- movs r2, #0x2e
- ldrsh r0, [r5, r2]
- movs r2, #0x32
- ldrsh r1, [r5, r2]
- adds r2, r7, #0
- adds r3, r4, #0
- bl sub_080045D4
- strb r0, [r5, #0x15]
- movs r0, #0x20
- mov r1, r8
- ands r0, r1
- cmp r0, #0
- beq _0804075A
- ldrb r1, [r5, #0x15]
- movs r0, #0x10
- mov r2, r8
- ands r2, r0
- cmp r2, #0
- beq _08040754
- adds r0, r1, #1
- b _08040758
- .align 2, 0
-_0804074C: .4byte gRoomControls
-_08040750: .4byte gUnk_080D0B58
-_08040754:
- adds r0, r1, #0
- adds r0, #0x1f
-_08040758:
- strb r0, [r5, #0x15]
-_0804075A:
- ldrb r0, [r5, #0x15]
- movs r1, #0x1f
- ands r1, r0
- strb r1, [r5, #0x15]
- adds r0, r5, #0
- adds r0, #0x86
- strb r6, [r0]
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start sub_08040770
-sub_08040770: @ 0x08040770
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r7, r0, #0
- bl Random
- mov r8, r0
- movs r0, #0x38
- mov r1, r8
- ands r1, r0
- mov r8, r1
- adds r0, r7, #0
- adds r0, #0x86
- ldrb r5, [r0]
- ldr r2, _080407CC @ =gRoomControls
- ldrh r3, [r2, #6]
- ldr r4, _080407D0 @ =gUnk_080D0B64
- lsls r1, r5, #1
- lsls r0, r5, #2
- adds r0, r0, r4
- ldrh r0, [r0]
- adds r6, r3, r0
- ldrh r2, [r2, #8]
- adds r1, #1
- lsls r1, r1, #1
- adds r1, r1, r4
- ldrh r0, [r1]
- adds r4, r2, r0
- adds r0, r7, #0
- adds r1, r6, #0
- adds r2, r4, #0
- movs r3, #0x1c
- bl sub_0806FCB8
- cmp r0, #0
- beq _0804089A
- ldrb r0, [r7, #0x14]
- cmp r0, #2
- beq _08040822
- movs r0, #8
- mov r2, r8
- ands r0, r2
- cmp r0, #0
- beq _080407D4
- adds r5, #1
- b _080407D6
- .align 2, 0
-_080407CC: .4byte gRoomControls
-_080407D0: .4byte gUnk_080D0B64
-_080407D4:
- adds r5, #3
-_080407D6:
- movs r0, #3
- ands r5, r0
- adds r0, r7, #0
- adds r0, #0x81
- ldrb r0, [r0]
- cmp r0, #0
- beq _0804087E
- adds r0, r7, #0
- adds r0, #0x75
- ldrb r0, [r0]
- cmp r0, #0x3c
- beq _0804080A
- cmp r0, #0x3c
- bgt _080407F8
- cmp r0, #0xf
- beq _08040802
- b _0804087E
-_080407F8:
- cmp r0, #0xc3
- beq _0804081A
- cmp r0, #0xf0
- beq _08040812
- b _0804087E
-_08040802:
- cmp r5, #0
- bne _0804087E
- movs r5, #2
- b _0804087E
-_0804080A:
- cmp r5, #1
- bne _0804087E
- movs r5, #3
- b _0804087E
-_08040812:
- cmp r5, #2
- bne _0804087E
- movs r5, #0
- b _0804087E
-_0804081A:
- cmp r5, #3
- bne _0804087E
- movs r5, #1
- b _0804087E
-_08040822:
- adds r1, r7, #0
- adds r1, #0x87
- ldrb r2, [r1]
- movs r0, #0x7f
- ands r0, r2
- adds r4, r1, #0
- cmp r0, #0
- beq _08040848
- movs r0, #0x80
- ands r0, r2
- cmp r0, #0
- beq _0804083E
- adds r5, #1
- b _08040840
-_0804083E:
- adds r5, #3
-_08040840:
- ldrb r0, [r4]
- subs r0, #1
- strb r0, [r4]
- b _0804087A
-_08040848:
- bl Random
- movs r1, #7
- ands r0, r1
- adds r0, #4
- strb r0, [r4]
- ldrb r6, [r4]
- bl Random
- movs r1, #0x20
- ands r1, r0
- cmp r1, #0
- bne _08040868
- movs r1, #0x80
- orrs r1, r6
- b _0804086A
-_08040868:
- adds r1, r6, #0
-_0804086A:
- strb r1, [r4]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08040878
- adds r5, #1
- b _0804087A
-_08040878:
- adds r5, #3
-_0804087A:
- movs r0, #3
- ands r5, r0
-_0804087E:
- ldr r2, _080408C8 @ =gRoomControls
- ldrh r3, [r2, #6]
- ldr r4, _080408CC @ =gUnk_080D0B64
- lsls r1, r5, #1
- lsls r0, r5, #2
- adds r0, r0, r4
- ldrh r0, [r0]
- adds r6, r3, r0
- ldrh r2, [r2, #8]
- adds r1, #1
- lsls r1, r1, #1
- adds r1, r1, r4
- ldrh r0, [r1]
- adds r4, r2, r0
-_0804089A:
- movs r1, #0x2e
- ldrsh r0, [r7, r1]
- movs r2, #0x32
- ldrsh r1, [r7, r2]
- adds r2, r6, #0
- adds r3, r4, #0
- bl sub_080045D4
- strb r0, [r7, #0x15]
- movs r0, #0x20
- mov r1, r8
- ands r0, r1
- cmp r0, #0
- beq _080408D6
- ldrb r1, [r7, #0x15]
- movs r0, #0x10
- mov r2, r8
- ands r2, r0
- cmp r2, #0
- beq _080408D0
- adds r0, r1, #1
- b _080408D4
- .align 2, 0
-_080408C8: .4byte gRoomControls
-_080408CC: .4byte gUnk_080D0B64
-_080408D0:
- adds r0, r1, #0
- adds r0, #0x1f
-_080408D4:
- strb r0, [r7, #0x15]
-_080408D6:
- ldrb r0, [r7, #0x15]
- movs r1, #0x1f
- ands r1, r0
- strb r1, [r7, #0x15]
- adds r0, r7, #0
- adds r0, #0x86
- strb r5, [r0]
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start sub_080408EC
-sub_080408EC: @ 0x080408EC
- push {r4, r5, r6, r7, lr}
- adds r2, r0, #0
- ldrb r0, [r2, #0x14]
- cmp r0, #0
- bne _08040902
- movs r1, #0xf0
- adds r4, r2, #0
- adds r4, #0x75
- adds r5, r2, #0
- adds r5, #0x76
- b _08040926
-_08040902:
- adds r4, r2, #0
- adds r4, #0x75
- adds r5, r2, #0
- adds r5, #0x76
- ldr r7, _08040930 @ =gUnk_080D0B74
- movs r6, #0x3c
-_0804090E:
- bl Random
- ands r0, r6
- lsrs r0, r0, #2
- adds r0, r0, r7
- ldrb r1, [r0]
- ldrb r0, [r4]
- cmp r1, r0
- bne _08040922
- movs r1, #0xff
-_08040922:
- cmp r1, #0xff
- beq _0804090E
-_08040926:
- movs r0, #0
- strb r1, [r4]
- strb r0, [r5]
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08040930: .4byte gUnk_080D0B74
-
- thumb_func_start sub_08040934
-sub_08040934: @ 0x08040934
- push {r4, lr}
- adds r4, r0, #0
- bl Random
- movs r1, #0x3e
- ands r1, r0
- movs r2, #0
- cmp r1, #0x2e
- bhi _08040948
- movs r2, #1
-_08040948:
- adds r0, r4, #0
- adds r0, #0x87
- ldrb r1, [r0]
- movs r0, #0x7f
- ands r0, r1
- cmp r0, #0
- beq _08040958
- movs r2, #0
-_08040958:
- adds r4, #0x84
- ldrb r0, [r4]
- cmp r0, #9
- beq _080409A4
- cmp r2, #0
- beq _080409AA
- adds r0, #1
- movs r1, #5
- bl __modsi3
- strb r0, [r4]
- bl Random
- movs r1, #0xf8
- ands r1, r0
- lsrs r1, r1, #3
- ldr r0, _08040998 @ =gUnk_080D0B84
- adds r0, r1, r0
- ldrb r2, [r0]
- ldrb r0, [r4]
- cmp r0, #1
- beq _0804099C
- cmp r0, #1
- blt _080409AA
- cmp r0, #4
- bgt _080409AA
- cmp r0, #3
- blt _080409AA
- cmp r2, #0
- bne _080409AA
- b _080409A8
- .align 2, 0
-_08040998: .4byte gUnk_080D0B84
-_0804099C:
- cmp r2, #0
- beq _080409A8
- movs r2, #3
- b _080409AA
-_080409A4:
- movs r0, #0
- strb r0, [r4]
-_080409A8:
- movs r2, #1
-_080409AA:
- adds r0, r2, #0
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start sub_080409B0
-sub_080409B0: @ 0x080409B0
- push {r4, r5, lr}
- adds r4, r0, #0
- movs r0, #0x81
- adds r0, r0, r4
- mov ip, r0
- ldrb r1, [r0]
- cmp r1, #1
- beq _080409EA
- cmp r1, #1
- bgt _080409CA
- cmp r1, #0
- beq _080409D0
- b _08040A68
-_080409CA:
- cmp r1, #2
- beq _08040A04
- b _08040A68
-_080409D0:
- adds r0, r4, #0
- adds r0, #0x75
- adds r2, r4, #0
- adds r2, #0x76
- ldrb r0, [r0]
- ldrb r3, [r2]
- cmp r0, r3
- bne _08040A68
- movs r0, #1
- mov r3, ip
- strb r0, [r3]
- strb r1, [r2]
- b _08040A68
-_080409EA:
- adds r0, r4, #0
- adds r0, #0x76
- ldrb r0, [r0]
- cmp r0, #0
- beq _08040A68
- movs r0, #2
- mov r1, ip
- strb r0, [r1]
- adds r1, r4, #0
- adds r1, #0x77
- movs r0, #0x10
- strb r0, [r1]
- b _08040A68
-_08040A04:
- adds r1, r4, #0
- adds r1, #0x77
- ldrb r0, [r1]
- subs r0, #1
- strb r0, [r1]
- lsls r0, r0, #0x18
- lsrs r2, r0, #0x18
- cmp r2, #0
- bne _08040A68
- adds r0, r4, #0
- adds r0, #0x75
- adds r3, r4, #0
- adds r3, #0x76
- ldrb r1, [r0]
- ldrb r0, [r3]
- ands r0, r1
- cmp r1, r0
- beq _08040A3C
- movs r0, #1
- mov r1, ip
- strb r0, [r1]
- strb r2, [r3]
- ldr r0, _08040A38 @ =0x00000155
- bl SoundReq
- b _08040A68
- .align 2, 0
-_08040A38: .4byte 0x00000155
-_08040A3C:
- movs r1, #3
- strb r1, [r4, #0xc]
- adds r0, r4, #0
- adds r0, #0x80
- strb r2, [r0]
- mov r3, ip
- strb r1, [r3]
- ldrb r1, [r4, #0x10]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r4, #0x10]
- adds r1, r4, #0
- adds r1, #0x3f
- movs r0, #0x36
- strb r0, [r1]
- movs r0, #0xc0
- lsls r0, r0, #9
- str r0, [r4, #0x20]
- movs r0, #0xb2
- lsls r0, r0, #1
- bl SoundReq
-_08040A68:
- adds r0, r4, #0
- adds r0, #0x81
- ldrb r0, [r0]
- cmp r0, #2
- bhi _08040A84
- adds r0, r4, #0
- adds r0, #0x42
- ldrb r0, [r0]
- cmp r0, #0
- beq _08040AC8
- adds r0, r4, #0
- bl sub_080AF18C
- b _08040AC8
-_08040A84:
- adds r2, r4, #0
- adds r2, #0x41
- ldrb r1, [r2]
- movs r0, #0x80
- ands r0, r1
- adds r5, r2, #0
- cmp r0, #0
- beq _08040AB0
- adds r0, r4, #0
- adds r0, #0x3d
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #0
- ble _08040AB0
- movs r0, #0xc
- movs r1, #1
- bl sub_08080964
- ldr r0, _08040ACC @ =0x00000127
- bl SoundReq
-_08040AB0:
- ldrb r0, [r5]
- cmp r0, #0x8a
- bne _08040AC8
- ldr r0, _08040AD0 @ =gPlayerState
- adds r0, #0xa0
- ldrb r0, [r0]
- cmp r0, #5
- bne _08040AC8
- adds r1, r4, #0
- adds r1, #0x45
- movs r0, #0xc0
- strb r0, [r1]
-_08040AC8:
- pop {r4, r5, pc}
- .align 2, 0
-_08040ACC: .4byte 0x00000127
-_08040AD0: .4byte gPlayerState
-
- thumb_func_start sub_08040AD4
-sub_08040AD4: @ 0x08040AD4
- push {r4, r5, r6, lr}
- adds r5, r0, #0
- ldrb r0, [r5, #0xe]
- movs r1, #0x3f
- ands r1, r0
- lsls r6, r1, #0x18
- lsrs r4, r6, #0x18
- movs r0, #0x1f
- ands r0, r4
- cmp r0, #0
- bne _08040AF0
- ldr r0, _08040B0C @ =0x000001A9
- bl SoundReq
-_08040AF0:
- movs r0, #3
- ands r4, r0
- cmp r4, #0
- bne _08040B2A
- lsrs r4, r6, #0x1a
- movs r0, #0x2e
- ldrsh r2, [r5, r0]
- adds r0, r4, #4
- movs r1, #8
- ands r0, r1
- cmp r0, #0
- beq _08040B10
- subs r0, r2, #1
- b _08040B12
- .align 2, 0
-_08040B0C: .4byte 0x000001A9
-_08040B10:
- adds r0, r2, #1
-_08040B12:
- strh r0, [r5, #0x2e]
- movs r0, #0x32
- ldrsh r2, [r5, r0]
- adds r0, r4, #2
- movs r1, #4
- ands r0, r1
- cmp r0, #0
- beq _08040B26
- subs r0, r2, #1
- b _08040B28
-_08040B26:
- adds r0, r2, #1
-_08040B28:
- strh r0, [r5, #0x32]
-_08040B2A:
- pop {r4, r5, r6, pc}
diff --git a/data/const/enemy/enemy5A.s b/data/const/enemy/enemy5A.s
deleted file mode 100644
index 4ed7b471..00000000
--- a/data/const/enemy/enemy5A.s
+++ /dev/null
@@ -1,24 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-
-gUnk_080D1888:: @ 080D1888
- .4byte sub_080456E8
- .4byte sub_08045700
- .4byte sub_080456E8
- .4byte sub_0804A7D4
- .4byte sub_08001242
- .4byte nullsub_173
-
-gUnk_080D18A0:: @ 080D18A0
- .4byte sub_080457E4
- .4byte sub_0804586C
- .4byte sub_080458C4
- .4byte sub_08045938
- .4byte sub_08045984
-
-gUnk_080D18B4:: @ 080D18B4
- .incbin "baserom.gba", 0x0D18B4, 0x0000010
diff --git a/linker.ld b/linker.ld
index 60daec93..0709b6d6 100644
--- a/linker.ld
+++ b/linker.ld
@@ -433,7 +433,7 @@ SECTIONS {
src/enemy/miniSlime.o(.text);
src/enemy/fireballGuy.o(.text);
src/enemy/miniFireballGuy.o(.text);
- asm/enemy5A.o(.text);
+ src/enemy/enemy5A.o(.text);
asm/businessScrubPrologue.o(.text);
asm/gyorgFemale.o(.text);
src/enemy/gyorgMale.o(.text);
@@ -1145,7 +1145,7 @@ SECTIONS {
data/const/enemy/fireballGuy.o(.rodata);
data/animations/enemy/fireballGuy.o(.rodata);
data/const/enemy/miniFireballGuy.o(.rodata);
- data/const/enemy/enemy5A.o(.rodata);
+ src/enemy/enemy5A.o(.rodata);
data/animations/enemy/enemy5A.o(.rodata);
data/const/enemy/businessScrubPrologue.o(.rodata);
data/const/enemy/gyorgFemale.o(.rodata);
diff --git a/src/enemy/enemy5A.c b/src/enemy/enemy5A.c
new file mode 100644
index 00000000..058f6afb
--- /dev/null
+++ b/src/enemy/enemy5A.c
@@ -0,0 +1,327 @@
+#include "entity.h"
+#include "enemy.h"
+#include "audio.h"
+#include "textbox.h"
+#include "coord.h"
+#include "functions.h"
+
+void sub_08045A00(Entity*);
+void sub_08045A28(Entity*);
+
+void sub_080456E8(Entity*);
+void sub_08045700(Entity*);
+void nullsub_173(Entity*);
+void sub_080457E4(Entity*);
+void sub_0804586C(Entity*);
+void sub_080458C4(Entity*);
+void sub_08045938(Entity*);
+void sub_08045984(Entity*);
+
+void (*const gUnk_080D1888[])(Entity*) = {
+ sub_080456E8, sub_08045700, sub_080456E8, sub_0804A7D4, sub_08001242, nullsub_173,
+};
+
+void (*const gUnk_080D18A0[])(Entity*) = {
+ sub_080457E4, sub_0804586C, sub_080458C4, sub_08045938, sub_08045984,
+};
+
+struct xy {
+ s8 x;
+ s8 y;
+} PACKED;
+
+const struct xy gUnk_080D18B4[] = { { 0xe8, 0xf6 }, { 0xf6, 0xe8 }, { 0x0a, 0xe8 }, { 0x18, 0xf6 },
+ { 0x18, 0x0a }, { 0x0a, 0x18 }, { 0xf6, 0x18 }, { 0xe8, 0x0a } };
+
+void Enemy5A(Entity* this) {
+ EnemyFunctionHandler(this, gUnk_080D1888);
+}
+
+void sub_080456E8(Entity* this) {
+ gUnk_080D18A0[this->action](this);
+}
+
+void sub_08045700(Entity* this) {
+ u8 bVar1;
+ Entity* pEVar4;
+
+ if (this->type != 0) {
+ pEVar4 = this->parent->parent;
+ if ((this->bitfield & 0x80) != 0) {
+ bVar1 = this->bitfield & 0x3f;
+ if ((bVar1 == 0xe) || (bVar1 == 0x15)) {
+
+ if (this->field_0x80.HALF.HI == 0) {
+ this->action = 3;
+ this->field_0x80.HALF.HI += 1;
+ InitializeAnimation(this, (this->type << 3) | (this->actionDelay + 2));
+ InitializeAnimation(this->parent, (this->parent->type << 3) | (this->actionDelay + 2));
+ }
+ if (this->actionDelay != 0) {
+ SoundReq(SFX_17A);
+ } else {
+ SoundReq(SFX_ITEM_GLOVES_KNOCKBACK);
+ }
+ } else {
+ if (this->currentHealth != 0xff) {
+ this->currentHealth = 0xff;
+ if (this->actionDelay != 0 && (pEVar4->field_0x80.HALF.HI != 0)) {
+ pEVar4->field_0x76.HALF.LO |= (1 << this->type2);
+ if (this->cutsceneBeh.HALF.HI == 0) {
+ this->cutsceneBeh.HALF.HI += 1;
+ InitializeAnimation(this, this->type << 3 | 6);
+ InitializeAnimation(this->parent, this->parent->type << 3 | 6);
+ }
+ }
+ }
+ }
+ }
+ }
+ sub_0804AA30(this, gUnk_080D1888);
+}
+
+void nullsub_173(Entity* this) {
+}
+
+void sub_080457E4(Entity* this) {
+ Entity* child;
+ u8 bVar2;
+
+ bVar2 = gTextBox.doTextBox & 0x7f;
+ if ((gTextBox.doTextBox & 0x7f) == 0) {
+ this->action = 1;
+ this->spriteSettings.b.draw = 0;
+ this->field_0x80.HALF.LO = bVar2;
+ this->field_0x80.HALF.HI = bVar2;
+ this->cutsceneBeh.HALF.HI = bVar2;
+ this->field_0xf = bVar2;
+ this->field_0x82.HALF.LO = 0x30;
+ this->field_0x82.HALF.HI = bVar2;
+ if (this->type == 0) {
+ sub_08045A00(this);
+ child = CreateEnemy(ENEMY_5A, 1);
+ if (child != NULL) {
+ child->parent = this;
+ this->attachedEntity = child;
+ child->actionDelay = this->actionDelay;
+ child->type2 = this->type2;
+ CopyPosition(this, child);
+ }
+ } else {
+ this->spriteOffsetY = 1;
+ }
+ InitializeAnimation(this, (u32)this->type << 3 | 1);
+ }
+}
+
+void sub_0804586C(Entity* this) {
+ sub_08045A28(this);
+ if (this->field_0x82.HALF.LO == 0) {
+ if ((this->frames.all & 0x80) != 0) {
+ if (this->type != 0) {
+ this->flags |= 0x80;
+ }
+ this->action = 2;
+ InitializeAnimation(this, (u32)this->type << 3);
+ }
+ } else {
+ if (--this->field_0x82.HALF.LO == 0) {
+ this->spriteSettings.b.draw = 1;
+ }
+ }
+}
+
+void sub_080458C4(Entity* this) {
+ Entity* parent;
+
+ sub_08045A28(this);
+ parent = this->parent;
+ if (this->type != 0) {
+ parent = parent->parent;
+ }
+ if ((parent->action == 3) && (parent->field_0x80.HALF.LO == 1)) {
+ this->action = 4;
+ this->field_0xf = 0;
+ if (this->type != 0) {
+ this->flags &= 0x7f;
+ if (this->actionDelay != 0) {
+ InitializeAnimation(this, this->type << 3 | 5);
+ InitializeAnimation(this->parent, this->parent->type << 3 | 5);
+ } else {
+ InitializeAnimation(this, this->type << 3 | 4);
+ InitializeAnimation(this->parent, this->parent->type << 3 | 4);
+ }
+ }
+ }
+}
+
+void sub_08045938(Entity* this) {
+ sub_08045A28(this);
+ if ((this->frames.all & 0x80) != 0) {
+ this->action = 2;
+ if (this->type != 0) {
+ if (this->actionDelay == 0) {
+ this->damageType = 0x32;
+ } else {
+ this->parent->parent->field_0x76.HALF.LO |= (1 << this->type2);
+ this->damageType = 0x31;
+ }
+ }
+ }
+}
+
+void sub_08045984(Entity* this) {
+ Entity* parent;
+
+ sub_08045A28(this);
+ if (this->field_0xf == 0) {
+ if ((this->frames.all & 0x80) != 0) {
+ this->field_0xf = 0x20;
+ }
+ } else {
+ parent = this->parent;
+ if (this->type != 0) {
+ parent = parent->parent;
+ }
+ if ((parent->animationState < 3) && (parent->action != 3)) {
+ this->action = 1;
+ this->field_0xf = 0;
+ this->field_0x80.HALF.HI = 0;
+ this->cutsceneBeh.HALF.HI = 0;
+ if (this->type != 0) {
+ this->damageType = 0x33;
+ }
+ if ((parent->field_0x74.HALF.HI >> this->type2 & 1U) != 0) {
+ this->actionDelay = 1;
+ } else {
+ this->actionDelay = 0;
+ }
+ InitializeAnimation(this, this->type << 3 | 1);
+ }
+ }
+}
+
+void sub_08045A00(Entity* this) {
+ const struct xy* t = &gUnk_080D18B4[this->type2];
+ PositionRelative(this->parent, this, t->x << 0x10, (t->y + 3) * 0x10000);
+}
+
+void sub_08045A28(Entity* this) {
+ u32 frames;
+ u32 type;
+
+ if (this->field_0x82.HALF.LO == 0) {
+ GetNextFrame(this);
+ }
+ frames = this->frames.all & 0x70;
+ type = this->type;
+ if (type == 0) {
+ sub_08045A00(this);
+ switch (this->field_0x82.HALF.HI) {
+ case 0:
+ switch (frames) {
+ case 0x20:
+ this->field_0x82.HALF.HI = 1;
+ sub_0801D2B4(this, 0x13e);
+ break;
+ case 0x00:
+ case 0x40:
+ this->field_0x82.HALF.HI = 2;
+ sub_0801D2B4(this, 0x13f);
+ break;
+ default:
+ break;
+ }
+ break;
+ case 1:
+ switch (frames) {
+ case 0x10:
+ this->field_0x82.HALF.HI = type;
+ sub_0801D2B4(this, 0x13b);
+ break;
+ case 0:
+ this->field_0x82.HALF.HI = 2;
+ sub_0801D2B4(this, 0x13f);
+ break;
+ default:
+ break;
+ }
+ break;
+ case 2:
+ switch (frames) {
+ case 0x20:
+ this->field_0x82.HALF.HI = 1;
+ sub_0801D2B4(this, 0x13e);
+ break;
+ case 0x10:
+ this->field_0x82.HALF.HI = 0;
+ sub_0801D2B4(this, 0x13b);
+ break;
+ case 0x40:
+ this->field_0x82.HALF.HI = 2;
+ sub_0801D2B4(this, 0x13f);
+ break;
+ default:
+ break;
+ }
+ break;
+ case 3:
+ switch (frames) {
+ case 0:
+ this->field_0x82.HALF.HI = 2;
+ sub_0801D2B4(this, 0x13f);
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+ } else {
+ PositionRelative(this->parent, this, 0, -0x10000);
+ switch (this->field_0x82.HALF.HI) {
+ case 0:
+ switch (this->frames.all & 0x70) {
+ case 0x10:
+ this->field_0x82.HALF.HI = 2;
+ sub_0801D2B4(this, 0x13b);
+ break;
+ case 0x20:
+ this->field_0x82.HALF.HI = 1;
+ sub_0801D2B4(this, 0x13e);
+ break;
+ default:
+ break;
+ }
+ break;
+ case 1: {
+ u32 temp = this->frames.all & 0x70;
+ switch (temp) {
+ case 0:
+ this->field_0x82.HALF.HI = temp;
+ sub_0801D2B4(this, 0x13f);
+ break;
+ case 0x10:
+ this->field_0x82.HALF.HI = 2;
+ sub_0801D2B4(this, 0x13b);
+ break;
+ default:
+ break;
+ }
+ } break;
+ case 2:
+ switch (this->frames.all & 0x70) {
+ case 0:
+ this->field_0x82.HALF.HI = this->frames.all & 0x70;
+ sub_0801D2B4(this, 0x13f);
+ break;
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}