tmc/asm/pullableLever.s

667 lines
11 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PullableLever
PullableLever: @ 0x080911EC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x72
ldrh r0, [r0]
cmp r0, #1
beq _0809123C
cmp r0, #1
bgt _08091202
cmp r0, #0
beq _08091208
b _08091260
_08091202:
cmp r0, #2
beq _08091254
b _08091260
_08091208:
ldr r1, _08091234 @ =gUnk_08122294
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_0800445C
ldr r1, _08091238 @ =gUnk_02021F00
adds r0, r4, #0
adds r0, #0x74
ldrb r0, [r0]
lsls r0, r0, #1
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x70
ldrh r1, [r1]
strh r1, [r0]
b _08091260
.align 2, 0
_08091234: .4byte gUnk_08122294
_08091238: .4byte gUnk_02021F00
_0809123C:
ldr r0, _08091250 @ =gUnk_081222A0
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _08091260
.align 2, 0
_08091250: .4byte gUnk_081222A0
_08091254:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08091260
adds r0, r4, #0
bl sub_08091504
_08091260:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08091264
sub_08091264: @ 0x08091264
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
ldr r0, _080912C4 @ =gEntCount
ldrb r0, [r0]
cmp r0, #0x45
bhi _0809132C
ldrb r1, [r6, #0xa]
ldrb r2, [r6, #0xb]
movs r0, #0x54
bl CreateObject
adds r7, r0, #0
ldrb r1, [r6, #0xa]
ldrb r2, [r6, #0xb]
movs r0, #0x54
bl CreateObject
adds r1, r0, #0
str r6, [r7, #0x50]
str r6, [r1, #0x50]
adds r0, r7, #0
adds r0, #0x72
movs r5, #1
movs r4, #1
strh r4, [r0]
adds r2, r1, #0
adds r2, #0x72
movs r0, #2
strh r0, [r2]
adds r0, r6, #0
bl CopyPosition
movs r2, #1
strb r5, [r6, #0xc]
ldrb r1, [r6, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r6, #0x18]
movs r0, #0x60
strh r0, [r6, #0x24]
ldrb r0, [r6, #0xb]
ands r4, r0
cmp r4, #0
beq _080912CC
ldr r0, _080912C8 @ =gUnk_080FD278
b _080912CE
.align 2, 0
_080912C4: .4byte gEntCount
_080912C8: .4byte gUnk_080FD278
_080912CC:
ldr r0, _08091330 @ =gUnk_080FD270
_080912CE:
str r0, [r6, #0x48]
movs r0, #1
strb r0, [r6, #0x16]
ldr r2, _08091334 @ =gUnk_081222A8
ldrb r0, [r6, #0xb]
lsls r0, r0, #1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r6, #0x2e]
adds r0, r0, r1
strh r0, [r6, #0x2e]
adds r1, r6, #0
adds r1, #0x80
strh r0, [r1]
ldrb r0, [r6, #0xb]
lsls r0, r0, #1
adds r0, #1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r6, #0x32]
adds r0, r0, r1
strh r0, [r6, #0x32]
adds r1, r6, #0
adds r1, #0x82
strh r0, [r1]
adds r0, r6, #0
adds r1, r7, #0
bl CopyPosition
adds r0, r6, #0
adds r0, #0x7e
ldrb r0, [r0]
adds r1, r6, #0
adds r1, #0x76
strh r0, [r1]
ldrb r1, [r6, #0xe]
adds r0, r6, #0
adds r0, #0x74
strb r1, [r0]
ldrb r1, [r6, #0xb]
adds r0, r6, #0
bl InitializeAnimation
_0809132C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08091330: .4byte gUnk_080FD270
_08091334: .4byte gUnk_081222A8
thumb_func_start sub_08091338
sub_08091338: @ 0x08091338
push {r4, lr}
adds r4, r0, #0
bl sub_08078930
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
cmp r0, #0
beq _0809135C
ldrb r0, [r4, #0xb]
lsls r0, r0, #3
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_08091660
_0809135C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08091360
sub_08091360: @ 0x08091360
push {r4, lr}
adds r4, r0, #0
bl sub_0806FBB4
ldr r1, _0809137C @ =gUnk_081222B0
ldrb r0, [r4, #0xd]
subs r0, #5
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_0809137C: .4byte gUnk_081222B0
thumb_func_start sub_08091380
sub_08091380: @ 0x08091380
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldr r7, _0809142C @ =gPlayerEntity
adds r0, #0x75
ldrb r0, [r0]
cmp r0, #0
bne _080913E0
ldrb r0, [r4, #0xb]
lsls r2, r0, #1
ldrb r0, [r7, #0x14]
cmp r2, r0
bne _080913D4
ldr r1, _08091430 @ =gUnk_081222B8
adds r0, r2, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r3, [r4, #0x2e]
adds r0, r0, r3
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
adds r0, r2, #1
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x32]
adds r0, r0, r1
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
adds r0, r7, #0
adds r0, #0x38
ldrb r2, [r0]
adds r0, r6, #0
adds r1, r5, #0
bl sub_080002D4
subs r0, #0xf
cmp r0, #0x10
bls _080913D4
strh r6, [r7, #0x2e]
strh r5, [r7, #0x32]
_080913D4:
adds r1, r4, #0
adds r1, #0x75
movs r0, #1
strb r0, [r1]
movs r0, #2
strb r0, [r4, #0xf]
_080913E0:
ldrb r0, [r7, #0x14]
lsrs r0, r0, #1
ldrb r3, [r4, #0xb]
cmp r0, r3
bne _0809142A
ldr r1, _08091434 @ =gPlayerState
adds r0, r1, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #0x1a
bne _0809142A
ldrb r1, [r1, #5]
movs r5, #2
adds r0, r5, #0
ands r0, r1
cmp r0, #0
beq _0809142A
ldr r0, _0809142C @ =gPlayerEntity
adds r0, #0x5a
ldrb r1, [r0]
adds r0, r5, #0
ands r0, r1
cmp r0, #0
beq _0809142A
adds r0, r4, #0
bl sub_0809153C
adds r1, r4, #0
adds r1, #0x75
ldrb r0, [r1]
cmp r0, #1
bne _0809142A
strb r5, [r1]
movs r0, #0xcf
lsls r0, r0, #1
bl EnqueueSFX
_0809142A:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809142C: .4byte gPlayerEntity
_08091430: .4byte gUnk_081222B8
_08091434: .4byte gPlayerState
thumb_func_start sub_08091438
sub_08091438: @ 0x08091438
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
adds r0, #0x75
strb r2, [r0]
bx lr
thumb_func_start sub_08091444
sub_08091444: @ 0x08091444
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #9
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
ldr r0, [r4, #0x50]
ldrb r1, [r0, #0xb]
adds r1, #8
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
pop {r4, pc}
thumb_func_start sub_08091470
sub_08091470: @ 0x08091470
push {r4, lr}
adds r2, r0, #0
ldr r4, [r2, #0x50]
adds r3, r4, #0
adds r3, #0x70
ldrh r0, [r3]
cmp r0, #7
bhi _0809148C
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0x18]
b _08091502
_0809148C:
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
ldrh r0, [r3]
adds r1, r0, #0
subs r1, #8
movs r0, #7
ands r1, r0
ldrb r3, [r2, #0xb]
cmp r3, #1
beq _080914C8
cmp r3, #1
bgt _080914B4
cmp r3, #0
beq _080914BE
b _080914E2
_080914B4:
cmp r3, #2
beq _080914D0
cmp r3, #3
beq _080914DA
b _080914E2
_080914BE:
ldrh r0, [r4, #0x32]
subs r0, r0, r1
subs r0, #0x11
strh r0, [r2, #0x32]
b _080914E2
_080914C8:
ldrh r0, [r4, #0x2e]
adds r0, r1, r0
adds r0, #0x11
b _080914E0
_080914D0:
ldrh r0, [r4, #0x32]
adds r0, r1, r0
adds r0, #0x11
strh r0, [r2, #0x32]
b _080914E2
_080914DA:
ldrh r0, [r4, #0x2e]
subs r0, r0, r1
subs r0, #0x11
_080914E0:
strh r0, [r2, #0x2e]
_080914E2:
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
subs r0, #8
lsls r0, r0, #0xc
lsrs r1, r0, #0x10
ldrb r0, [r2, #0x14]
cmp r1, r0
beq _08091502
strb r1, [r2, #0x14]
lsls r1, r1, #2
adds r1, r1, r3
adds r1, #8
adds r0, r2, #0
bl InitializeAnimation
_08091502:
pop {r4, pc}
thumb_func_start sub_08091504
sub_08091504: @ 0x08091504
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r2, r4, #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 r1, [r4, #0xb]
adds r1, #4
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
pop {r4, pc}
thumb_func_start sub_0809153C
sub_0809153C: @ 0x0809153C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #4
adds r5, r0, #0
ldr r6, _080915A8 @ =gPlayerEntity
ldr r1, _080915AC @ =gUnk_081222C0
ldrb r0, [r5, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
mov r8, r0
adds r0, r5, #0
adds r0, #0x76
adds r1, r5, #0
adds r1, #0x70
ldrh r0, [r0]
ldrh r1, [r1]
cmp r0, r1
bls _08091656
ldrh r4, [r6, #0x2e]
ldrh r0, [r6, #0x32]
mov sb, r0
movs r2, #0x24
ldrsh r1, [r5, r2]
adds r0, r6, #0
mov r2, r8
str r3, [sp]
bl sub_080044AE
lsls r4, r4, #0x10
asrs r4, r4, #0x10
ldrh r2, [r6, #0x2e]
movs r7, #0x2e
ldrsh r0, [r6, r7]
ldr r3, [sp]
cmp r4, r0
bne _08091596
mov r1, sb
lsls r0, r1, #0x10
asrs r0, r0, #0x10
movs r7, #0x32
ldrsh r1, [r6, r7]
cmp r0, r1
beq _08091656
_08091596:
ldrb r0, [r5, #0xb]
cmp r0, #1
beq _080915CA
cmp r0, #1
bgt _080915B0
cmp r0, #0
beq _080915BA
b _080915E0
.align 2, 0
_080915A8: .4byte gPlayerEntity
_080915AC: .4byte gUnk_081222C0
_080915B0:
cmp r0, #2
beq _080915CE
cmp r0, #3
beq _080915DA
b _080915E0
_080915BA:
ldrh r1, [r6, #0x32]
mov r2, sb
lsls r0, r2, #0x10
asrs r0, r0, #0x10
subs r1, r1, r0
lsls r1, r1, #0x10
lsrs r3, r1, #0x10
b _080915E0
_080915CA:
subs r0, r4, r2
b _080915DC
_080915CE:
ldrh r1, [r6, #0x32]
mov r7, sb
lsls r0, r7, #0x10
asrs r0, r0, #0x10
subs r0, r0, r1
b _080915DC
_080915DA:
subs r0, r2, r4
_080915DC:
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
_080915E0:
lsls r2, r3, #0x18
ldr r3, _0809163C @ =gSineTable
mov r1, r8
lsls r0, r1, #4
adds r0, r0, r3
movs r7, #0
ldrsh r0, [r0, r7]
asrs r2, r2, #0x10
adds r1, r0, #0
muls r1, r2, r1
ldr r0, [r5, #0x2c]
adds r0, r0, r1
str r0, [r5, #0x2c]
mov r1, r8
lsls r0, r1, #4
adds r0, #0x80
adds r0, r0, r3
movs r7, #0
ldrsh r0, [r0, r7]
adds r1, r0, #0
muls r1, r2, r1
ldr r0, [r5, #0x30]
subs r0, r0, r1
str r0, [r5, #0x30]
adds r0, r5, #0
bl sub_08091660
adds r0, r5, #0
adds r0, #0x76
adds r1, r5, #0
adds r1, #0x70
ldrh r0, [r0]
ldrh r1, [r1]
cmp r0, r1
bhi _08091640
movs r0, #0x86
lsls r0, r0, #1
bl EnqueueSFX
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
b _08091656
.align 2, 0
_0809163C: .4byte gSineTable
_08091640:
ldrb r0, [r5, #0xf]
subs r0, #1
strb r0, [r5, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08091656
movs r0, #0x10
strb r0, [r5, #0xf]
adds r0, #0xff
bl EnqueueSFX
_08091656:
add sp, #4
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08091660
sub_08091660: @ 0x08091660
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xb]
cmp r0, #1
beq _08091686
cmp r0, #1
bgt _08091674
cmp r0, #0
beq _0809167E
b _080916AA
_08091674:
cmp r0, #2
beq _08091690
cmp r0, #3
beq _0809169A
b _080916AA
_0809167E:
adds r1, r4, #0
adds r1, #0x82
ldrh r0, [r4, #0x32]
b _080916A0
_08091686:
adds r0, r4, #0
adds r0, #0x80
ldrh r0, [r0]
ldrh r1, [r4, #0x2e]
b _080916A2
_08091690:
adds r0, r4, #0
adds r0, #0x82
ldrh r0, [r0]
ldrh r1, [r4, #0x32]
b _080916A2
_0809169A:
adds r1, r4, #0
adds r1, #0x80
ldrh r0, [r4, #0x2e]
_080916A0:
ldrh r1, [r1]
_080916A2:
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x70
strh r0, [r1]
_080916AA:
adds r5, r4, #0
adds r5, #0x86
ldrh r0, [r5]
bl CheckFlags
cmp r0, #0
beq _080916C8
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
cmp r0, #0
bne _080916C8
ldrh r0, [r5]
bl ClearFlag
_080916C8:
pop {r4, r5, pc}
.align 2, 0