tmc/asm/enemy49.s

318 lines
5.1 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Enemy49
Enemy49: @ 0x0803CE80
push {lr}
ldr r2, _0803CE94 @ =gUnk_080D0448
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803CE94: .4byte gUnk_080D0448
thumb_func_start sub_0803CE98
sub_0803CE98: @ 0x0803CE98
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r1, r6, #0
adds r1, #0x84
ldrh r2, [r1]
movs r5, #0xf0
lsls r5, r5, #8
adds r0, r5, #0
ands r0, r2
lsrs r0, r0, #5
strh r0, [r6, #0x24]
ldrh r2, [r1]
ldr r4, _0803CF1C @ =0x00000FFF
adds r0, r4, #0
ands r0, r2
strh r0, [r1]
adds r0, r6, #0
bl sub_0804A720
movs r0, #1
strb r0, [r6, #0xc]
adds r3, r6, #0
adds r3, #0x82
ldrh r0, [r3]
ands r4, r0
adds r0, r6, #0
adds r0, #0x74
strh r4, [r0]
ldrh r0, [r3]
movs r1, #0x3f
ands r1, r0
lsls r1, r1, #4
ldr r2, _0803CF20 @ =gRoomControls
ldrh r0, [r2, #6]
adds r0, #8
adds r1, r1, r0
strh r1, [r6, #0x2e]
ldrh r1, [r3]
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r1
lsrs r0, r0, #2
ldrh r1, [r2, #8]
adds r1, #8
adds r0, r0, r1
strh r0, [r6, #0x32]
movs r1, #0
ldrsh r0, [r3, r1]
ands r0, r5
asrs r0, r0, #0xa
strb r0, [r6, #0x15]
ldrb r0, [r6, #0xa]
lsls r0, r0, #2
adds r1, r6, #0
adds r1, #0x78
strh r0, [r1]
adds r0, r6, #0
bl sub_0803CFF0
cmp r0, #0
beq _0803CF18
adds r0, r6, #0
bl sub_0803D0B0
_0803CF18:
pop {r4, r5, r6, pc}
.align 2, 0
_0803CF1C: .4byte 0x00000FFF
_0803CF20: .4byte gRoomControls
thumb_func_start sub_0803CF24
sub_0803CF24: @ 0x0803CF24
push {r4, lr}
adds r4, r0, #0
bl sub_0803CFD8
cmp r0, #0
beq _0803CF36
adds r0, r4, #0
bl sub_0803D024
_0803CF36:
pop {r4, pc}
thumb_func_start sub_0803CF38
sub_0803CF38: @ 0x0803CF38
push {r4, lr}
adds r4, r0, #0
bl sub_0803CFF0
cmp r0, #0
beq _0803CF4C
adds r0, r4, #0
bl sub_0803D0B0
b _0803CF8C
_0803CF4C:
adds r0, r4, #0
movs r1, #0
bl sub_08049FDC
cmp r0, #0
beq _0803CF8C
ldr r0, _0803CF90 @ =gUnk_020000B0
ldr r0, [r0]
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x20
bl sub_0806FCB8
cmp r0, #0
bne _0803CF8C
adds r1, r4, #0
adds r1, #0x7a
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803CF8C
adds r0, r4, #0
bl sub_0803D058
adds r0, r4, #0
bl sub_0803D024
_0803CF8C:
pop {r4, pc}
.align 2, 0
_0803CF90: .4byte gUnk_020000B0
thumb_func_start sub_0803CF94
sub_0803CF94: @ 0x0803CF94
push {r4, lr}
adds r4, r0, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
cmp r0, #0x76
bne _0803CFBA
adds r1, r4, #0
adds r1, #0x80
movs r0, #0
strh r0, [r1]
adds r0, r4, #0
bl sub_0803D024
b _0803CFD4
_0803CFBA:
adds r0, r4, #0
adds r0, #0x7c
ldrh r0, [r0]
cmp r0, #0
beq _0803CFD4
adds r0, r4, #0
bl sub_0803CFD8
cmp r0, #0
beq _0803CFD4
adds r0, r4, #0
bl sub_0803D024
_0803CFD4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803CFD8
sub_0803CFD8: @ 0x0803CFD8
push {lr}
adds r1, r0, #0
adds r1, #0x7c
ldrh r0, [r1]
cmp r0, #0
bne _0803CFE8
movs r0, #1
b _0803CFEE
_0803CFE8:
ldrh r0, [r1]
bl CheckFlags
_0803CFEE:
pop {pc}
thumb_func_start sub_0803CFF0
sub_0803CFF0: @ 0x0803CFF0
push {lr}
adds r1, r0, #0
adds r1, #0x80
ldrh r2, [r1]
cmp r2, #0
beq _0803D01E
adds r0, #0x7c
ldrh r0, [r0]
cmp r2, r0
bne _0803D016
adds r0, r2, #0
bl CheckFlags
movs r1, #0
cmp r0, #0
bne _0803D012
movs r1, #1
_0803D012:
adds r0, r1, #0
b _0803D020
_0803D016:
ldrh r0, [r1]
bl CheckFlags
b _0803D020
_0803D01E:
movs r0, #0
_0803D020:
pop {pc}
.align 2, 0
thumb_func_start sub_0803D024
sub_0803D024: @ 0x0803D024
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x78
ldrh r1, [r0]
cmp r1, #0
beq _0803D03A
adds r0, #2
b _0803D04E
_0803D03A:
bl Random
ldr r2, _0803D054 @ =gUnk_080D0458
movs r1, #7
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r2
ldrh r1, [r1]
adds r0, r4, #0
adds r0, #0x7a
_0803D04E:
strh r1, [r0]
pop {r4, pc}
.align 2, 0
_0803D054: .4byte gUnk_080D0458
thumb_func_start sub_0803D058
sub_0803D058: @ 0x0803D058
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0x16
movs r2, #0
bl sub_0804A98C
adds r5, r0, #0
cmp r5, #0
beq _0803D0AE
ldrh r1, [r4, #0x24]
movs r2, #0x24
ldrsh r0, [r4, r2]
cmp r0, #0
beq _0803D078
strh r1, [r5, #0x24]
b _0803D08A
_0803D078:
bl Random
ldr r2, _0803D0A4 @ =gUnk_080D0468
movs r1, #3
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r1]
strh r0, [r5, #0x24]
_0803D08A:
ldrb r1, [r4, #0x15]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0803D0AC
ldr r0, _0803D0A8 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
strb r0, [r5, #0x15]
b _0803D0AE
.align 2, 0
_0803D0A4: .4byte gUnk_080D0468
_0803D0A8: .4byte gUnk_020000B0
_0803D0AC:
strb r1, [r5, #0x15]
_0803D0AE:
pop {r4, r5, pc}
thumb_func_start sub_0803D0B0
sub_0803D0B0: @ 0x0803D0B0
push {lr}
movs r1, #3
strb r1, [r0, #0xc]
adds r1, r0, #0
adds r1, #0x74
ldrh r1, [r1]
adds r0, #0x38
ldrb r2, [r0]
movs r0, #0x75
bl sub_0807B7D8
pop {pc}