mirror of https://github.com/zeldaret/tmc.git
decompiled Enemy5A
This commit is contained in:
parent
e1759fa99c
commit
00a57e3b36
652
asm/enemy5A.s
652
asm/enemy5A.s
|
|
@ -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
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -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
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue