tmc/asm/pushableStatue.s

742 lines
12 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PushableStatue
PushableStatue: @ 0x080891DC
push {lr}
ldr r2, _080891F0 @ =gUnk_08120C98
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080891F0: .4byte gUnk_08120C98
thumb_func_start sub_080891F4
sub_080891F4: @ 0x080891F4
push {r4, lr}
adds r4, r0, #0
bl sub_0808965C
cmp r0, #0
beq _08089236
movs r3, #0
movs r2, #1
strb r2, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
ldrb r1, [r4, #0x11]
subs r0, #0x90
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x11]
ldr r0, _08089238 @ =gUnk_080FD1F4
str r0, [r4, #0x48]
strb r2, [r4, #0x16]
adds r0, r4, #0
adds r0, #0x86
strh r3, [r0]
adds r0, r4, #0
bl sub_08089454
adds r0, r4, #0
bl sub_080894C8
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08089236:
pop {r4, pc}
.align 2, 0
_08089238: .4byte gUnk_080FD1F4
thumb_func_start sub_0808923C
sub_0808923C: @ 0x0808923C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_0800442E
cmp r0, #0
bne _080892C0
adds r0, r4, #0
adds r0, #0x84
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
ldr r0, _08089278 @ =0x0000400B
cmp r5, r0
beq _080892BA
adds r0, r5, #0
bl sub_0808968C
cmp r0, #1
beq _0808927C
cmp r0, #1
blo _08089294
cmp r0, #2
beq _080892B2
b _080892C0
.align 2, 0
_08089278: .4byte 0x0000400B
_0808927C:
movs r1, #3
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r5, #0
subs r0, #0xc
ands r0, r1
lsls r0, r0, #3
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_08089538
b _080892C0
_08089294:
movs r0, #0xf
movs r1, #4
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _080892AA
adds r0, r4, #0
bl CopyPosition
_080892AA:
adds r0, r4, #0
bl sub_080894FC
b _080892C0
_080892B2:
adds r0, r4, #0
adds r0, #0x80
strh r5, [r0]
b _080892C0
_080892BA:
adds r0, r4, #0
bl sub_08078930
_080892C0:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080892C4
sub_080892C4: @ 0x080892C4
push {lr}
adds r2, r0, #0
adds r0, #0x86
ldrh r0, [r0]
cmp r0, #0
beq _080892D8
adds r0, r2, #0
bl sub_080895C0
b _080892F6
_080892D8:
ldr r0, _080892F8 @ =gPlayerState
ldrb r0, [r0, #5]
cmp r0, #0
bne _080892E4
movs r0, #6
strb r0, [r2, #0xd]
_080892E4:
ldr r0, _080892FC @ =gUnk_08120CAC
ldrb r1, [r2, #0xd]
subs r1, #5
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
_080892F6:
pop {pc}
.align 2, 0
_080892F8: .4byte gPlayerState
_080892FC: .4byte gUnk_08120CAC
thumb_func_start sub_08089300
sub_08089300: @ 0x08089300
push {r4, r5, lr}
adds r5, r0, #0
adds r1, r5, #0
adds r1, #0x83
ldrb r0, [r1]
cmp r0, #0
bne _0808932C
movs r0, #1
strb r0, [r1]
ldr r1, _0808935C @ =gPlayerEntity
ldrb r0, [r1, #0x14]
ldr r2, _08089360 @ =gUnk_08120CB4
adds r0, r0, r2
movs r2, #0
ldrsb r2, [r0, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r0, r3]
lsls r3, r3, #0x10
adds r0, r5, #0
bl PositionRelative
_0808932C:
adds r0, r5, #0
adds r0, #0x84
ldrh r0, [r0]
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldr r0, _08089364 @ =0x0000400B
cmp r4, r0
beq _080893A0
adds r0, r4, #0
bl sub_0808968C
cmp r0, #1
beq _08089368
cmp r0, #1
blo _0808937C
cmp r0, #2
beq _0808939A
b _080893A0
.align 2, 0
_0808935C: .4byte gPlayerEntity
_08089360: .4byte gUnk_08120CB4
_08089364: .4byte 0x0000400B
_08089368:
adds r0, r4, #0
subs r0, #0xc
movs r1, #3
ands r0, r1
lsls r0, r0, #3
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08089538
b _080893A0
_0808937C:
movs r0, #0xf
movs r1, #4
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08089392
adds r0, r5, #0
bl CopyPosition
_08089392:
adds r0, r5, #0
bl sub_080894FC
b _080893D6
_0808939A:
adds r0, r5, #0
adds r0, #0x80
strh r4, [r0]
_080893A0:
bl sub_080896B0
cmp r0, #0
beq _080893D6
ldr r2, _080893D8 @ =gPlayerState
movs r3, #0
movs r0, #0x10
strb r0, [r2, #0xc]
adds r1, r2, #0
adds r1, #0x38
movs r0, #0x20
strb r0, [r1]
ldr r0, [r2, #0x30]
movs r1, #1
orrs r0, r1
str r0, [r2, #0x30]
ldr r0, _080893DC @ =gPlayerEntity
strh r3, [r0, #0x2c]
strh r3, [r0, #0x30]
ldrb r0, [r0, #0x14]
movs r1, #4
eors r0, r1
lsls r0, r0, #2
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08089538
_080893D6:
pop {r4, r5, pc}
.align 2, 0
_080893D8: .4byte gPlayerState
_080893DC: .4byte gPlayerEntity
thumb_func_start sub_080893E0
sub_080893E0: @ 0x080893E0
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
adds r0, #0x83
strb r2, [r0]
bx lr
thumb_func_start sub_080893EC
sub_080893EC: @ 0x080893EC
push {r4, lr}
adds r4, r0, #0
bl sub_080895C0
cmp r0, #0
beq _080893FC
movs r0, #1
strb r0, [r4, #0xc]
_080893FC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08089400
sub_08089400: @ 0x08089400
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _08089424
ldrb r2, [r4, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
subs r0, #5
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
b _0808944E
_08089424:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, _08089450 @ =0x0000400B
adds r1, r4, #0
adds r1, #0x84
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
adds r0, r4, #0
bl sub_080894C8
_0808944E:
pop {r4, pc}
.align 2, 0
_08089450: .4byte 0x0000400B
thumb_func_start sub_08089454
sub_08089454: @ 0x08089454
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #0x2e
ldrsh r1, [r5, r0]
ldr r2, _080894C0 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r4, #0x32
ldrsh r0, [r5, r4]
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, #0x84
strh r1, [r6]
ldrh r0, [r6]
adds r4, r5, #0
adds r4, #0x38
ldrb r1, [r4]
bl sub_080001DA
adds r1, r5, #0
adds r1, #0x80
strh r0, [r1]
ldr r5, _080894C4 @ =0x0000400B
ldrh r1, [r6]
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
ldrb r0, [r4]
cmp r0, #2
bne _080894BC
ldrh r0, [r6]
movs r1, #1
bl GetTileType
movs r1, #0xc4
lsls r1, r1, #2
cmp r0, r1
bne _080894BC
ldrh r1, [r6]
adds r0, r5, #0
movs r2, #1
bl SetTile
_080894BC:
pop {r4, r5, r6, pc}
.align 2, 0
_080894C0: .4byte gRoomControls
_080894C4: .4byte 0x0000400B
thumb_func_start sub_080894C8
sub_080894C8: @ 0x080894C8
push {r4, lr}
adds r3, r0, #0
movs r2, #0
ldr r1, _080894E0 @ =gRoomVars
adds r4, r1, #0
adds r4, #0xac
ldr r0, [r4]
mov ip, r1
cmp r0, #0
bne _080894E4
str r3, [r4]
b _080894FA
.align 2, 0
_080894E0: .4byte gRoomVars
_080894E4:
adds r2, #1
cmp r2, #7
bhi _080894FA
lsls r0, r2, #2
mov r1, ip
adds r1, #0xac
adds r1, r0, r1
ldr r0, [r1]
cmp r0, #0
bne _080894E4
str r3, [r1]
_080894FA:
pop {r4, pc}
thumb_func_start sub_080894FC
sub_080894FC: @ 0x080894FC
push {r4, lr}
adds r3, r0, #0
movs r2, #0
ldr r1, _08089514 @ =gRoomVars
adds r4, r1, #0
adds r4, #0xac
ldr r0, [r4]
mov ip, r1
cmp r3, r0
bne _08089518
str r2, [r4]
b _08089530
.align 2, 0
_08089514: .4byte gRoomVars
_08089518:
adds r2, #1
cmp r2, #7
bhi _08089530
lsls r0, r2, #2
mov r1, ip
adds r1, #0xac
adds r1, r0, r1
ldr r0, [r1]
cmp r3, r0
bne _08089518
movs r0, #0
str r0, [r1]
_08089530:
adds r0, r3, #0
bl DeleteEntity
pop {r4, pc}
thumb_func_start sub_08089538
sub_08089538: @ 0x08089538
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r1, r5, #0
adds r1, #0x86
movs r0, #0x20
strh r0, [r1]
adds r0, #0xef
bl EnqueueSFX
adds r0, r5, #0
adds r0, #0x80
ldrh r0, [r0]
adds r6, r5, #0
adds r6, #0x84
ldrh r1, [r6]
adds r4, r5, #0
adds r4, #0x38
ldrb r2, [r4]
bl SetTile
ldrb r0, [r4]
cmp r0, #2
bne _08089580
ldrh r0, [r6]
movs r1, #1
bl GetTileType
ldr r1, _080895B8 @ =0x0000400B
cmp r0, r1
bne _08089580
movs r0, #0xc4
lsls r0, r0, #2
ldrh r1, [r6]
movs r2, #1
bl sub_08000152
_08089580:
adds r2, r5, #0
adds r2, #0x84
ldr r1, _080895BC @ =gUnk_080B4488
ldrb r0, [r5, #0x15]
lsrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
ldrh r2, [r2]
adds r0, r0, r2
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x79
beq _080895AC
cmp r0, #0x77
bne _080895B4
_080895AC:
adds r1, r5, #0
adds r1, #0x63
movs r0, #0xfe
strb r0, [r1]
_080895B4:
pop {r4, r5, r6, pc}
.align 2, 0
_080895B8: .4byte 0x0000400B
_080895BC: .4byte gUnk_080B4488
thumb_func_start sub_080895C0
sub_080895C0: @ 0x080895C0
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
adds r1, r4, #0
adds r1, #0x86
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0808964C
adds r0, r4, #0
bl sub_0800442E
cmp r0, #0
bne _0808964C
adds r1, r4, #0
adds r1, #0x63
movs r0, #0
strb r0, [r1]
adds r0, r4, #0
bl sub_080002D0
cmp r0, #0
bne _080895FE
adds r0, r4, #0
bl sub_08089454
movs r0, #1
b _08089654
_080895FE:
movs r0, #0xf
movs r1, #4
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08089614
adds r0, r4, #0
bl CopyPosition
_08089614:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldr r2, _08089658 @ =gUnk_08120CBC
ldrb r1, [r4, #0x15]
lsrs r1, r1, #2
lsls r0, r1, #1
adds r0, r0, r2
ldrh r0, [r0]
ldrh r3, [r4, #0x2e]
adds r0, r0, r3
strh r0, [r4, #0x2e]
adds r1, #1
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r1]
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_08089454
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
_0808964C:
adds r0, r4, #0
bl sub_0800445C
movs r0, #0
_08089654:
pop {r4, pc}
.align 2, 0
_08089658: .4byte gUnk_08120CBC
thumb_func_start sub_0808965C
sub_0808965C: @ 0x0808965C
push {lr}
adds r2, r0, #0
ldr r3, _08089678 @ =gRoomControls
ldrb r0, [r3, #4]
cmp r0, #0x3f
bls _08089680
ldr r1, _0808967C @ =gUnk_08120CCC
subs r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r2, #0
b _08089684
.align 2, 0
_08089678: .4byte gRoomControls
_0808967C: .4byte gUnk_08120CCC
_08089680:
adds r0, r2, #0
movs r1, #0xe9
_08089684:
bl LoadFixedGFX
pop {pc}
.align 2, 0
thumb_func_start sub_0808968C
sub_0808968C: @ 0x0808968C
push {lr}
adds r2, r0, #0
ldr r1, _08089694 @ =gUnk_08120D6C
b _080896A4
.align 2, 0
_08089694: .4byte gUnk_08120D6C
_08089698:
ldrh r0, [r1]
cmp r0, r2
bne _080896A2
ldrh r0, [r1, #2]
b _080896AC
_080896A2:
adds r1, #4
_080896A4:
ldrh r0, [r1]
cmp r0, #0
bne _08089698
movs r0, #0
_080896AC:
pop {pc}
.align 2, 0
thumb_func_start sub_080896B0
sub_080896B0: @ 0x080896B0
push {r4, r5, r6, r7, lr}
ldr r0, _08089750 @ =gPlayerState
ldrb r1, [r0, #5]
movs r0, #0x1f
ands r0, r1
cmp r0, #0x12
bne _08089768
ldr r6, _08089754 @ =gPlayerEntity
adds r0, r6, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08089768
ldrb r3, [r6, #0x14]
movs r2, #6
ands r2, r3
lsls r2, r2, #1
ldr r0, _08089758 @ =gUnk_080B4468
adds r2, r2, r0
ldr r0, _0808975C @ =gUnk_080B4488
lsrs r3, r3, #1
lsls r3, r3, #1
adds r3, r3, r0
movs r0, #0x2e
ldrsh r1, [r6, r0]
movs r4, #0
ldrsh r0, [r2, r4]
adds r1, r1, r0
ldr r5, _08089760 @ =gRoomControls
ldrh r0, [r5, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r7, #0x32
ldrsh r0, [r6, r7]
movs r7, #2
ldrsh r2, [r2, r7]
adds r0, r0, r2
ldrh r2, [r5, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r1, r0
movs r0, #0
ldrsh r7, [r3, r0]
subs r1, r1, r7
lsls r4, r1, #0x10
lsrs r0, r4, #0x10
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
bl sub_080002C8
adds r1, r0, #0
subs r0, #0x26
cmp r0, #1
bls _08089768
cmp r1, #0x29
beq _08089768
ldrb r0, [r5]
bl GetLayerByIndex
asrs r1, r4, #0x10
ldr r2, _08089764 @ =0x00002004
adds r0, r0, r2
adds r2, r0, r1
ldrb r2, [r2]
subs r1, r1, r7
adds r0, r0, r1
ldrb r0, [r0]
cmp r2, #0
bne _08089768
cmp r0, #0
bne _08089768
movs r0, #1
b _0808976A
.align 2, 0
_08089750: .4byte gPlayerState
_08089754: .4byte gPlayerEntity
_08089758: .4byte gUnk_080B4468
_0808975C: .4byte gUnk_080B4488
_08089760: .4byte gRoomControls
_08089764: .4byte 0x00002004
_08089768:
movs r0, #0
_0808976A:
pop {r4, r5, r6, r7, pc}