tmc/asm/objectOnPillar.s

721 lines
12 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectOnPillar
ObjectOnPillar: @ 0x08096E10
push {lr}
ldr r2, _08096E24 @ =gUnk_08123250
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08096E24: .4byte gUnk_08123250
thumb_func_start sub_08096E28
sub_08096E28: @ 0x08096E28
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
adds r5, r0, #0
cmp r5, #0
bne _08096EBC
movs r2, #1
movs r3, #1
strb r3, [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]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
ldrb r1, [r4, #0x18]
movs r0, #0x31
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x10
orrs r0, r1
strb r0, [r4, #0x18]
adds r1, r4, #0
adds r1, #0x63
movs r0, #4
strb r0, [r1]
ldr r0, _08096EB4 @ =gUnk_080FD1F4
str r0, [r4, #0x48]
strb r3, [r4, #0x16]
adds r0, r4, #0
adds r0, #0x72
strh r5, [r0]
adds r0, #0xb
ldrb r0, [r0]
lsrs r0, r0, #4
subs r1, #0x2b
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
adds r0, r4, #0
bl sub_080970F4
ldr r1, _08096EB8 @ =gUnk_08123264
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0x1e]
b _08096F04
.align 2, 0
_08096EB4: .4byte gUnk_080FD1F4
_08096EB8: .4byte gUnk_08123264
_08096EBC:
adds r0, r4, #0
adds r0, #0x7c
ldrb r2, [r0]
adds r0, #1
ldrb r3, [r0]
movs r1, #0xf
adds r0, r1, #0
ands r0, r3
lsls r0, r0, #8
ldr r3, _08096F08 @ =gRoomControls
orrs r2, r0
ldrh r0, [r3, #6]
adds r2, r2, r0
strh r2, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x7e
ldrb r0, [r0]
movs r2, #0x7f
adds r2, r2, r4
mov ip, r2
ldrb r2, [r2]
ands r1, r2
lsls r1, r1, #8
orrs r0, r1
ldrh r3, [r3, #8]
adds r0, r0, r3
strh r0, [r4, #0x32]
mov r5, ip
ldrb r0, [r5]
lsrs r0, r0, #4
adds r1, r4, #0
adds r1, #0x38
strb r0, [r1]
adds r0, r4, #0
bl sub_080971E0
_08096F04:
pop {r4, r5, pc}
.align 2, 0
_08096F08: .4byte gRoomControls
thumb_func_start sub_08096F0C
sub_08096F0C: @ 0x08096F0C
push {r4, lr}
adds r4, r0, #0
bl sub_08097194
cmp r0, #0
bne _08096F2E
adds r0, r4, #0
bl sub_08097008
cmp r0, #0
beq _08096F28
movs r0, #3
strb r0, [r4, #0xc]
b _08096F2E
_08096F28:
adds r0, r4, #0
bl sub_08078930
_08096F2E:
pop {r4, pc}
thumb_func_start sub_08096F30
sub_08096F30: @ 0x08096F30
push {lr}
adds r2, r0, #0
adds r0, #0x76
ldrh r0, [r0]
cmp r0, #0
beq _08096F44
adds r0, r2, #0
bl sub_08097144
b _08096F62
_08096F44:
ldr r0, _08096F64 @ =gPlayerState
ldrb r0, [r0, #5]
cmp r0, #0
bne _08096F50
movs r0, #6
strb r0, [r2, #0xd]
_08096F50:
ldr r0, _08096F68 @ =gUnk_0812326C
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
_08096F62:
pop {pc}
.align 2, 0
_08096F64: .4byte gPlayerState
_08096F68: .4byte gUnk_0812326C
thumb_func_start sub_08096F6C
sub_08096F6C: @ 0x08096F6C
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x72
ldrh r0, [r1]
cmp r0, #0
bne _08096F98
movs r0, #1
strh r0, [r1]
ldr r1, _08096FD8 @ =gPlayerEntity
ldrb r0, [r1, #0x14]
ldr r2, _08096FDC @ =gUnk_08123274
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, r4, #0
bl PositionRelative
_08096F98:
adds r0, r4, #0
bl sub_08097008
bl sub_080896B0
cmp r0, #0
beq _08096FD4
ldr r2, _08096FE0 @ =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, _08096FD8 @ =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, [r4, #0x15]
adds r0, r4, #0
bl sub_08097098
_08096FD4:
pop {r4, pc}
.align 2, 0
_08096FD8: .4byte gPlayerEntity
_08096FDC: .4byte gUnk_08123274
_08096FE0: .4byte gPlayerState
thumb_func_start sub_08096FE4
sub_08096FE4: @ 0x08096FE4
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
adds r0, #0x72
strh r2, [r0]
bx lr
thumb_func_start sub_08096FF0
sub_08096FF0: @ 0x08096FF0
push {r4, lr}
adds r4, r0, #0
bl sub_08097144
cmp r0, #0
beq _08097000
movs r0, #1
strb r0, [r4, #0xc]
_08097000:
pop {r4, pc}
.align 2, 0
thumb_func_start nullsub_122
nullsub_122: @ 0x08097004
bx lr
.align 2, 0
thumb_func_start sub_08097008
sub_08097008: @ 0x08097008
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
adds r4, r0, #0
ldr r0, _08097048 @ =0x00004036
cmp r4, r0
beq _08097070
adds r0, r4, #0
bl sub_08097074
cmp r0, #1
beq _0809704C
cmp r0, #2
beq _08097062
movs r0, #0xf
movs r1, #4
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _0809706A
adds r0, r5, #0
bl CopyPosition
b _0809706A
.align 2, 0
_08097048: .4byte 0x00004036
_0809704C:
adds r0, r4, #0
subs r0, #0x37
movs r1, #3
ands r0, r1
lsls r0, r0, #3
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08097098
movs r0, #1
b _08097072
_08097062:
adds r0, r5, #0
adds r0, #0x70
strh r4, [r0]
b _08097070
_0809706A:
adds r0, r5, #0
bl DeleteEntity
_08097070:
movs r0, #0
_08097072:
pop {r4, r5, pc}
thumb_func_start sub_08097074
sub_08097074: @ 0x08097074
push {lr}
adds r2, r0, #0
ldr r1, _0809707C @ =gUnk_0812327C
b _0809708C
.align 2, 0
_0809707C: .4byte gUnk_0812327C
_08097080:
ldrh r0, [r1]
cmp r0, r2
bne _0809708A
ldrh r0, [r1, #2]
b _08097094
_0809708A:
adds r1, #4
_0809708C:
ldrh r0, [r1]
cmp r0, #0
bne _08097080
movs r0, #0
_08097094:
pop {pc}
.align 2, 0
thumb_func_start sub_08097098
sub_08097098: @ 0x08097098
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r1, r6, #0
adds r1, #0x76
movs r0, #0x20
strh r0, [r1]
adds r0, #0xef
bl EnqueueSFX
adds r0, r6, #0
adds r0, #0x70
ldrh r0, [r0]
adds r5, r6, #0
adds r5, #0x74
ldrh r1, [r5]
adds r4, r6, #0
adds r4, #0x38
ldrb r2, [r4]
bl SetTile
ldr r1, _080970F0 @ =gUnk_080B4488
ldrb r0, [r6, #0x15]
lsrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
ldrh r5, [r5]
adds r0, r0, r5
ldrb r1, [r4]
bl GetTileType
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x79
beq _080970E4
cmp r0, #0x77
bne _080970EC
_080970E4:
adds r1, r6, #0
adds r1, #0x63
movs r0, #2
strb r0, [r1]
_080970EC:
pop {r4, r5, r6, pc}
.align 2, 0
_080970F0: .4byte gUnk_080B4488
thumb_func_start sub_080970F4
sub_080970F4: @ 0x080970F4
push {r4, r5, r6, lr}
adds r6, r0, #0
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, _0809713C @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r4, #0x32
ldrsh r0, [r6, r4]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r4, r6, #0
adds r4, #0x74
strh r1, [r4]
ldrh r0, [r4]
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
bl sub_080001DA
adds r1, r6, #0
adds r1, #0x70
strh r0, [r1]
ldr r0, _08097140 @ =0x00004036
ldrh r1, [r4]
ldrb r2, [r5]
bl SetTile
pop {r4, r5, r6, pc}
.align 2, 0
_0809713C: .4byte gRoomControls
_08097140: .4byte 0x00004036
thumb_func_start sub_08097144
sub_08097144: @ 0x08097144
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_0800445C
adds r0, r4, #0
bl sub_080002B8
cmp r0, #0x19
bne _08097164
adds r1, r4, #0
adds r1, #0x63
movs r0, #2
strb r0, [r1]
_08097164:
adds r1, r4, #0
adds r1, #0x76
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08097190
adds r0, r4, #0
bl sub_08097194
cmp r0, #0
bne _08097190
adds r1, r4, #0
adds r1, #0x63
movs r0, #4
strb r0, [r1]
adds r0, r4, #0
bl sub_080970F4
movs r0, #1
b _08097192
_08097190:
movs r0, #0
_08097192:
pop {r4, pc}
thumb_func_start sub_08097194
sub_08097194: @ 0x08097194
push {r4, lr}
adds r4, r0, #0
bl sub_0800442E
cmp r0, #0
beq _080971A4
movs r0, #1
b _080971DE
_080971A4:
adds r0, r4, #0
bl GetTileTypeByEntity
adds r1, r0, #0
subs r0, #0x71
cmp r0, #1
bls _080971B8
ldr r0, _080971D4 @ =0x00004020
cmp r1, r0
bne _080971DC
_080971B8:
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
ldr r0, _080971D8 @ =0x0000010B
bl EnqueueSFX
adds r0, r4, #0
bl sub_080971E0
movs r0, #1
b _080971DE
.align 2, 0
_080971D4: .4byte 0x00004020
_080971D8: .4byte 0x0000010B
_080971DC:
movs r0, #0
_080971DE:
pop {r4, pc}
thumb_func_start sub_080971E0
sub_080971E0: @ 0x080971E0
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xf
movs r1, #0x11
movs r2, #0x40
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _08097202
ldr r2, _0809727C @ =0xFFF80000
movs r3, #0x80
lsls r3, r3, #0xa
adds r0, r5, #0
adds r1, r4, #0
bl PositionRelative
_08097202:
movs r0, #0xf
movs r1, #0x11
movs r2, #0x40
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _08097222
movs r2, #0x80
lsls r2, r2, #0xc
movs r3, #0x80
lsls r3, r3, #0xa
adds r0, r5, #0
adds r1, r4, #0
bl PositionRelative
_08097222:
ldrb r0, [r5, #0xa]
cmp r0, #1
beq _08097284
cmp r0, #1
ble _08097234
cmp r0, #2
beq _080972C4
cmp r0, #3
beq _08097304
_08097234:
movs r0, #4
strb r0, [r5, #0xc]
movs r0, #1
strb r0, [r5, #0x1e]
adds r2, r5, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
movs r0, #0x2e
ldrsh r1, [r5, r0]
ldr r2, _08097280 @ =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 r0, r5, #0
adds r0, #0x38
ldrb r2, [r0]
movs r0, #0
bl SetTile
_08097274:
bl DeleteThisEntity
b _08097346
.align 2, 0
_0809727C: .4byte 0xFFF80000
_08097280: .4byte gRoomControls
_08097284:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r3, _080972C0 @ =gRoomControls
ldrh r1, [r3, #6]
subs r0, r0, r1
asrs r4, r0, #4
movs r2, #0x3f
ands r4, r2
movs r1, #0x32
ldrsh r0, [r5, r1]
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
adds r0, r4, #0
bl sub_08097348
cmp r0, #0
bne _08097274
adds r0, r5, #0
adds r0, #0x38
ldrb r2, [r0]
movs r0, #0x73
adds r1, r4, #0
bl SetTileType
b _08097274
.align 2, 0
_080972C0: .4byte gRoomControls
_080972C4:
movs r0, #0x2f
movs r1, #0
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _08097274
ldrh r2, [r5, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
adds r0, r1, #0
ands r0, r2
adds r0, #8
strh r0, [r4, #0x2e]
ldrh r0, [r5, #0x32]
ands r1, r0
adds r1, #8
strh r1, [r4, #0x32]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r5, #0
adds r0, #0x84
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0x86
strh r1, [r0]
b _08097274
_08097304:
movs r0, #0x2f
movs r1, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _08097342
ldrh r2, [r5, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
adds r0, r1, #0
ands r0, r2
adds r0, #8
strh r0, [r4, #0x2e]
ldrh r0, [r5, #0x32]
ands r1, r0
adds r1, #8
strh r1, [r4, #0x32]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r5, #0
adds r0, #0x84
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0x86
strh r1, [r0]
_08097342:
bl DeleteThisEntity
_08097346:
pop {r4, r5, pc}
thumb_func_start sub_08097348
sub_08097348: @ 0x08097348
push {lr}
adds r3, r0, #0
ldr r1, _08097360 @ =gUnk_02017660
movs r2, #0
_08097350:
ldrh r0, [r1, #4]
cmp r0, r3
bne _08097364
ldrb r0, [r1, #1]
bl CheckLocalFlag
b _0809736E
.align 2, 0
_08097360: .4byte gUnk_02017660
_08097364:
adds r2, #1
adds r1, #8
cmp r2, #7
bls _08097350
movs r0, #0
_0809736E:
pop {pc}