tmc/asm/object24.s

309 lines
5.2 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object24
Object24: @ 0x08088804
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08088828
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08088828
ldrb r0, [r4, #0x14]
adds r1, r4, #0
adds r1, #0x72
strb r0, [r1]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl InitializeAnimation
_08088828:
ldr r0, _0808883C @ =gUnk_08120BE0
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_0808883C: .4byte gUnk_08120BE0
thumb_func_start sub_08088840
sub_08088840: @ 0x08088840
movs r3, #1
movs r1, #1
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #5
ands r1, r2
orrs r1, r3
strb r1, [r0, #0x18]
adds r3, r0, #0
adds r3, #0x29
ldrb r1, [r3]
movs r2, #7
orrs r1, r2
strb r1, [r3]
ldr r1, _08088868 @ =gUnk_080FD1D4
str r1, [r0, #0x48]
ldrb r1, [r0, #0x14]
adds r0, #0x72
strb r1, [r0]
bx lr
.align 2, 0
_08088868: .4byte gUnk_080FD1D4
thumb_func_start sub_0808886C
sub_0808886C: @ 0x0808886C
push {r4, r5, lr}
adds r5, r0, #0
bl sub_08088938
adds r4, r0, #0
adds r0, r5, #0
bl sub_080889A8
adds r4, r4, r0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
ldrb r1, [r5, #0xa]
adds r0, r1, #2
cmp r0, r4
bgt _080888B8
movs r1, #0
movs r0, #2
strb r0, [r5, #0xc]
strb r1, [r5, #0xf]
movs r0, #4
strb r0, [r5, #0x14]
strh r1, [r5, #0x36]
adds r0, r5, #0
movs r1, #4
bl InitializeAnimation
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
ldr r0, _080888B4 @ =0x0000016B
bl EnqueueSFX
b _080888F2
.align 2, 0
_080888B4: .4byte 0x0000016B
_080888B8:
ldrb r0, [r5, #0x14]
cmp r4, r0
bls _080888E4
adds r0, r1, #1
cmp r0, r4
bne _080888D2
movs r0, #4
strb r0, [r5, #0xf]
adds r1, r4, #1
adds r0, r5, #0
bl InitializeAnimation
b _080888DA
_080888D2:
adds r0, r5, #0
adds r1, r4, #0
bl InitializeAnimation
_080888DA:
movs r0, #0x86
lsls r0, r0, #1
bl EnqueueSFX
b _080888F0
_080888E4:
cmp r4, r0
bhs _080888F0
adds r0, r5, #0
adds r1, r4, #0
bl InitializeAnimation
_080888F0:
strb r4, [r5, #0x14]
_080888F2:
pop {r4, r5, pc}
thumb_func_start sub_080888F4
sub_080888F4: @ 0x080888F4
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x70
ldrh r0, [r0]
cmp r0, #0
beq _08088934
adds r0, r5, #0
bl sub_08088938
adds r4, r0, #0
adds r0, r5, #0
bl sub_080889A8
adds r4, r4, r0
lsls r4, r4, #0x18
lsrs r4, r4, #0x18
ldrb r0, [r5, #0xa]
adds r0, #2
cmp r0, r4
ble _08088934
movs r0, #1
strb r0, [r5, #0xc]
strb r4, [r5, #0x14]
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
bl ClearFlag
adds r0, r5, #0
adds r1, r4, #0
bl InitializeAnimation
_08088934:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08088938
sub_08088938: @ 0x08088938
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
movs r5, #0
ldrh r1, [r0, #0x2e]
subs r1, #8
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
mov ip, r1
ldrh r1, [r0, #0x32]
subs r1, #8
lsls r1, r1, #0x10
lsrs r7, r1, #0x10
movs r4, #0
ldr r1, _080889A0 @ =gRoomVars
ldr r2, _080889A4 @ =gUnk_08120BEC
mov r8, r2
adds r3, r1, #0
adds r3, #0xac
adds r6, r0, #0
adds r6, #0x72
_08088962:
ldr r2, [r3]
cmp r2, #0
beq _08088990
ldrh r0, [r2, #0x2e]
mov r1, ip
subs r0, r0, r1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x10
bhi _08088990
ldrh r0, [r2, #0x32]
subs r0, r0, r7
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x10
bhi _08088990
ldrb r0, [r6]
add r0, r8
ldrb r1, [r0]
adds r0, r2, #0
adds r0, #0x63
strb r1, [r0]
adds r5, #1
_08088990:
adds r3, #4
adds r4, #1
cmp r4, #7
bls _08088962
adds r0, r5, #0
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080889A0: .4byte gRoomVars
_080889A4: .4byte gUnk_08120BEC
thumb_func_start sub_080889A8
sub_080889A8: @ 0x080889A8
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r5, #0
bl sub_08017850
cmp r0, #0
beq _080889CA
ldr r1, _08088A40 @ =gPlayerEntity
ldr r2, _08088A44 @ =gUnk_08120BEC
adds r0, r4, #0
adds r0, #0x72
ldrb r0, [r0]
adds r0, r0, r2
ldrb r0, [r0]
adds r1, #0x63
strb r0, [r1]
movs r5, #1
_080889CA:
ldr r0, _08088A48 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
lsls r1, r1, #0xf
ands r0, r1
cmp r0, #0
beq _08088A3A
ldr r6, _08088A4C @ =gUnk_03004040
ldr r1, [r6]
adds r0, r4, #0
bl sub_080177A0
cmp r0, #0
beq _080889FA
ldr r1, [r6]
ldr r2, _08088A44 @ =gUnk_08120BEC
adds r0, r4, #0
adds r0, #0x72
ldrb r0, [r0]
adds r0, r0, r2
ldrb r0, [r0]
adds r1, #0x63
strb r0, [r1]
adds r5, #1
_080889FA:
ldr r1, [r6, #4]
adds r0, r4, #0
bl sub_080177A0
cmp r0, #0
beq _08088A1A
ldr r1, [r6, #4]
ldr r2, _08088A44 @ =gUnk_08120BEC
adds r0, r4, #0
adds r0, #0x72
ldrb r0, [r0]
adds r0, r0, r2
ldrb r0, [r0]
adds r1, #0x63
strb r0, [r1]
adds r5, #1
_08088A1A:
ldr r1, [r6, #8]
adds r0, r4, #0
bl sub_080177A0
cmp r0, #0
beq _08088A3A
ldr r1, [r6, #8]
ldr r2, _08088A44 @ =gUnk_08120BEC
adds r0, r4, #0
adds r0, #0x72
ldrb r0, [r0]
adds r0, r0, r2
ldrb r0, [r0]
adds r1, #0x63
strb r0, [r1]
adds r5, #1
_08088A3A:
adds r0, r5, #0
pop {r4, r5, r6, pc}
.align 2, 0
_08088A40: .4byte gPlayerEntity
_08088A44: .4byte gUnk_08120BEC
_08088A48: .4byte gPlayerState
_08088A4C: .4byte gUnk_03004040