tmc/asm/object99.s

118 lines
1.8 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object99
Object99: @ 0x0809E42C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r4, r0, #0
ldr r6, [r4, #0x50]
ldr r0, [r6, #4]
cmp r0, #0
bne _0809E444
bl DeleteThisEntity
_0809E444:
ldrb r0, [r4, #0xc]
movs r1, #0x76
adds r1, r1, r4
mov r8, r1
adds r7, r4, #0
adds r7, #0x62
movs r2, #0x74
adds r2, r2, r4
mov sb, r2
adds r5, r4, #0
adds r5, #0x63
movs r1, #0x75
adds r1, r1, r4
mov sl, r1
cmp r0, #0
bne _0809E482
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r6, #0x14]
mov r2, r8
strb r0, [r2]
ldrb r0, [r7]
mov r1, sb
strb r0, [r1]
ldrb r0, [r5]
mov r2, sl
strb r0, [r2]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl InitializeAnimation
_0809E482:
ldrb r0, [r6, #0x14]
mov r1, r8
ldrb r1, [r1]
cmp r0, r1
beq _0809E490
bl DeleteThisEntity
_0809E490:
ldrb r1, [r6, #0x18]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1e
ldrb r2, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r6, #0
adds r1, r4, #0
bl CopyPositionAndSpriteOffset
mov r2, sb
ldrb r0, [r2]
ldrb r1, [r7]
adds r0, r0, r1
strb r0, [r7]
mov r2, sl
ldrb r0, [r2]
ldrb r1, [r5]
adds r0, r0, r1
strb r0, [r5]
ldrb r0, [r4, #0x14]
cmp r0, #2
beq _0809E4D0
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
ldrb r0, [r5]
subs r0, #1
b _0809E4DA
_0809E4D0:
ldrh r0, [r4, #0x32]
subs r0, #1
strh r0, [r4, #0x32]
ldrb r0, [r5]
adds r0, #1
_0809E4DA:
strb r0, [r5]
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809E4F4
bl DeleteThisEntity
_0809E4F4:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0