mirror of https://github.com/zeldaret/tmc.git
653 lines
10 KiB
ArmAsm
653 lines
10 KiB
ArmAsm
.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 PlaySFX
|
|
b _080457D0
|
|
_0804576C:
|
|
ldr r0, _08045774 @ =0x00000119
|
|
bl PlaySFX
|
|
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
|