tmc/asm/object80.s

186 lines
3.1 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object80
Object80: @ 0x08098B10
push {lr}
ldr r2, _08098B24 @ =gUnk_08123664
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08098B24: .4byte gUnk_08123664
thumb_func_start sub_08098B28
sub_08098B28: @ 0x08098B28
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldrb r2, [r5, #0xa]
lsls r2, r2, #1
ldr r0, _08098BD4 @ =gUnk_0812366C
adds r2, r2, r0
movs r3, #1
movs r4, #1
strb r4, [r5, #0xc]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r3
strb r0, [r5, #0x18]
ldrb r0, [r5, #0xa]
strb r0, [r5, #0x1e]
ldrb r0, [r2]
adds r1, r5, #0
adds r1, #0x82
strb r0, [r1]
ldrb r0, [r2, #1]
adds r2, r5, #0
adds r2, #0x83
strb r0, [r2]
ldrb r0, [r1]
lsrs r0, r0, #1
ldrh r1, [r5, #0x2e]
subs r1, r1, r0
adds r0, r5, #0
adds r0, #0x78
strh r1, [r0]
ldrb r0, [r2]
lsrs r0, r0, #1
ldrh r1, [r5, #0x32]
subs r1, r1, r0
subs r2, #9
strh r1, [r2]
movs r0, #0x2e
ldrsh r1, [r5, r0]
ldr r2, _08098BD8 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r6, #0x32
ldrsh r0, [r5, r6]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r6, r5, #0
adds r6, #0x80
strh r1, [r6]
adds r7, r5, #0
adds r7, #0x38
strb r4, [r7]
adds r0, r5, #0
bl UpdateSpriteForCollisionLayer
adds r2, r5, #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]
ldrb r0, [r5, #0xa]
cmp r0, #0
bne _08098BCA
ldr r0, _08098BDC @ =0x00004074
ldrh r1, [r6]
subs r1, #0x40
ldrb r2, [r7]
bl SetTile
_08098BCA:
adds r0, r5, #0
bl sub_08098BE8
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08098BD4: .4byte gUnk_0812366C
_08098BD8: .4byte gRoomControls
_08098BDC: .4byte 0x00004074
thumb_func_start sub_08098BE0
sub_08098BE0: @ 0x08098BE0
push {lr}
bl sub_08098BE8
pop {pc}
thumb_func_start sub_08098BE8
sub_08098BE8: @ 0x08098BE8
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r6, _08098C28 @ =gPlayerState
ldr r0, [r6, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08098C26
ldr r4, _08098C2C @ =gPlayerEntity
adds r0, r5, #0
adds r1, r4, #0
bl sub_08098C30
cmp r0, #0
beq _08098C26
bl sub_08079F8C
cmp r0, #0
beq _08098C26
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08098C26
movs r0, #1
strb r0, [r6, #0x14]
adds r0, r5, #0
adds r0, #0x80
ldrh r1, [r0]
adds r0, r4, #0
bl sub_0807AAF8
_08098C26:
pop {r4, r5, r6, pc}
.align 2, 0
_08098C28: .4byte gPlayerState
_08098C2C: .4byte gPlayerEntity
thumb_func_start sub_08098C30
sub_08098C30: @ 0x08098C30
push {r4, lr}
adds r3, r0, #0
movs r4, #0
movs r0, #0x2e
ldrsh r2, [r1, r0]
adds r0, r3, #0
adds r0, #0x78
ldrh r0, [r0]
subs r2, r2, r0
movs r0, #0x32
ldrsh r1, [r1, r0]
adds r0, r3, #0
adds r0, #0x7a
ldrh r0, [r0]
subs r1, r1, r0
adds r0, r3, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r2, r0
bhi _08098C64
adds r0, r3, #0
adds r0, #0x83
ldrb r0, [r0]
cmp r1, r0
bhi _08098C64
movs r4, #1
_08098C64:
adds r0, r4, #0
pop {r4, pc}