Decompile BigPushableLever

This commit is contained in:
octorock
2022-01-24 22:24:07 +01:00
parent a6657fbd33
commit d550d58ff3
19 changed files with 161 additions and 3917 deletions
@@ -1,21 +0,0 @@
.syntax unified
push {lr}
bl InitBiggoronTimer
movs r0, #0xd
bl IsItemEquipped
adds r1, r0, #0
cmp r1, #2
beq _0806D5F0
ldr r0, _0806D5FC @ =gSave
adds r0, #0xb4
adds r0, r1, r0
movs r1, #0
strb r1, [r0]
_0806D5F0:
movs r0, #0xd
movs r1, #0
bl sub_0807CAA0
pop {pc}
.align 2, 0
_0806D5FC: .4byte gSave
.syntax divided
@@ -1,131 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
ldr r5, _080676D0 @ =gUnk_08110E78
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r7, r0, #0
subs r7, #0xc
movs r0, #0x3f
mov r8, r0
movs r6, #8
_080675EC:
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFx
adds r3, r0, #0
cmp r3, #0
beq _08067646
movs r0, #0
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x2e]
adds r0, r0, r1
strh r0, [r3, #0x2e]
movs r0, #1
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x32]
adds r0, r0, r1
strh r0, [r3, #0x32]
strh r7, [r3, #0x36]
adds r0, r4, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r3, #0
adds r0, #0x38
strb r1, [r0]
ldrb r1, [r4, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x1b]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x1b]
ldrb r1, [r4, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x19]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x19]
adds r0, r4, #0
adds r1, r3, #0
bl SortEntityAbove
_08067646:
subs r6, #1
adds r5, #2
cmp r6, #0
bge _080675EC
ldr r5, _080676D4 @ =gUnk_08110E8A
movs r0, #0x3f
mov r8, r0
movs r6, #3
_08067656:
adds r0, r4, #0
movs r1, #4
movs r2, #0
bl CreateFx
adds r3, r0, #0
cmp r3, #0
beq _080676B0
movs r0, #0
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x2e]
adds r0, r0, r1
strh r0, [r3, #0x2e]
movs r0, #1
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x32]
adds r0, r0, r1
strh r0, [r3, #0x32]
strh r7, [r3, #0x36]
adds r0, r4, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r3, #0
adds r0, #0x38
strb r1, [r0]
ldrb r1, [r4, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x1b]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x1b]
ldrb r1, [r4, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x19]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x19]
adds r0, r4, #0
adds r1, r3, #0
bl SortEntityAbove
_080676B0:
subs r6, #1
adds r5, #2
cmp r6, #0
bge _08067656
ldrb r0, [r4, #0xd]
cmp r0, #2
bls _080676C8
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_080676C8:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080676D0: .4byte gUnk_08110E78
_080676D4: .4byte gUnk_08110E8A
.syntax divided
-44
View File
@@ -1,44 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
mov r8, r0
adds r4, r1, #0
adds r5, r2, #0
adds r6, r3, #0
ldr r7, _0801E004 @ =gFuseInfo
adds r0, r7, #0
movs r1, #0x10
bl MemClear
strh r4, [r7, #6]
strh r5, [r7, #8]
strh r6, [r7, #0xa]
mov r0, r8
str r0, [r7, #0xc]
ldr r0, _0801E008 @ =gUnk_03003DF0
ldrb r0, [r0, #2]
strb r0, [r7, #3]
mov r1, r8
cmp r1, #0
beq _0801DFF8
ldrb r1, [r1, #0x11]
lsls r0, r1, #0x1c
lsrs r0, r0, #0x1c
strb r0, [r7, #4]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #2
orrs r0, r1
mov r1, r8
strb r0, [r1, #0x11]
_0801DFF8:
movs r0, #0
strb r0, [r7]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801E004: .4byte gFuseInfo
_0801E008: .4byte gUnk_03003DF0
.syntax divided
-544
View File
@@ -1,544 +0,0 @@
.syntax unified
.text
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r6, _080707F0 @ =gPlayerState
adds r3, r6, #0
adds r3, #0xa8
movs r4, #0
strb r4, [r3]
ldr r1, [r6, #0x30]
movs r7, #0x10
adds r0, r1, #0
ands r0, r7
mov ip, r6
cmp r0, #0
beq _08070818
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
adds r0, r5, #0
adds r0, #0x42
strb r4, [r0]
movs r0, #0xa0
lsls r0, r0, #1
strh r0, [r5, #0x24]
movs r0, #0x80
strb r0, [r6, #6]
strb r7, [r3]
ldrb r0, [r5, #0x14]
lsrs r0, r0, #1
adds r0, #0x5c
adds r1, r5, #0
adds r1, #0x58
ldrb r1, [r1]
cmp r0, r1
bne _080707F8
ldrh r0, [r5, #0x12]
cmp r0, #2
bne _080707F8
ldr r0, _080707F4 @ =gPlayerEntity
bl UpdateAnimationSingleFrame
b _08070800
.align 2, 0
_080707F0: .4byte gPlayerState
_080707F4: .4byte gPlayerEntity
_080707F8:
movs r0, #0x97
lsls r0, r0, #2
mov r1, ip
strh r0, [r1, #8]
_08070800:
ldr r0, _08070814 @ =gPlayerEntity
bl sub_0806F948
bl ResetPlayer
adds r0, r5, #0
bl sub_08077698
b _08070BE4
.align 2, 0
_08070814: .4byte gPlayerEntity
_08070818:
movs r0, #0x80
lsls r0, r0, #5
ands r0, r1
cmp r0, #0
beq _08070842
adds r1, r5, #0
adds r1, #0x40
movs r0, #0x1e
strb r0, [r1]
movs r0, #0xc
strb r0, [r3]
movs r1, #0
movs r2, #0x24
ldrsh r0, [r5, r2]
cmp r0, #0
bne _0807083A
movs r1, #1
_0807083A:
adds r0, r5, #0
bl sub_08070BEC
b _08070BE4
_08070842:
movs r4, #0x80
lsls r4, r4, #0xc
ands r4, r1
cmp r4, #0
beq _08070852
bl ResolvePlayerAnimation
b _08070BE4
_08070852:
adds r0, r5, #0
bl sub_080085B0
adds r0, r5, #0
adds r0, #0x40
strb r4, [r0]
bl RunQueuedAction
cmp r0, #0
beq _08070868
b _08070BE4
_08070868:
adds r0, r6, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _080708AC
ldrb r1, [r6, #2]
movs r2, #0xc0
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _080708AC
ldrb r0, [r6, #3]
cmp r0, #0
bne _0807088E
adds r0, r6, #0
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
beq _08070892
_0807088E:
strh r2, [r5, #0x24]
b _080708AC
_08070892:
ldrb r0, [r6, #0x1b]
cmp r0, #0
beq _0807089C
movs r0, #0xe0
b _080708AA
_0807089C:
ldrb r0, [r6, #0x1c]
cmp r0, #0
beq _080708A6
movs r0, #0x80
b _080708AA
_080708A6:
movs r0, #0xa0
lsls r0, r0, #1
_080708AA:
strh r0, [r5, #0x24]
_080708AC:
ldr r4, _08070918 @ =gPlayerState
ldrb r0, [r4, #6]
movs r1, #0x80
orrs r1, r0
strb r1, [r4, #6]
ldr r0, [r4, #0x30]
ldr r6, _0807091C @ =0x10000002
ands r0, r6
cmp r0, #0
bne _080708C4
bl UpdateFloorType
_080708C4:
bl RunQueuedAction
cmp r0, #0
beq _080708CE
b _08070BE4
_080708CE:
ldrb r0, [r4, #2]
cmp r0, #0
beq _080708D6
b _080709D8
_080708D6:
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #3
ands r0, r1
cmp r0, #0
beq _080708E4
b _080709D8
_080708E4:
adds r0, r5, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
bne _08070924
bl sub_080782C0
cmp r0, #0
beq _08070924
ldr r0, _08070920 @ =gRoomVars
ldrb r0, [r0, #6]
cmp r0, #0
bne _08070902
bl ResetPlayer
_08070902:
ldr r0, [r4, #0x30]
ands r0, r6
cmp r0, #0
beq _0807090C
b _08070BE4
_0807090C:
bl UpdateFloorType
bl RunQueuedAction
b _08070BE4
.align 2, 0
_08070918: .4byte gPlayerState
_0807091C: .4byte 0x10000002
_08070920: .4byte gRoomVars
_08070924:
ldr r0, _0807094C @ =gPlayerState
ldr r1, [r0, #0x30]
ldr r2, _08070950 @ =0x00041635
ands r1, r2
adds r0, #0xaa
ldrb r0, [r0]
orrs r1, r0
cmp r1, #0
bne _080709D8
bl UpdatePlayerCollision
cmp r0, #0xf
bls _08070940
b _08070BE4
_08070940:
lsls r0, r0, #2
ldr r1, _08070954 @ =_08070958
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807094C: .4byte gPlayerState
_08070950: .4byte 0x00041635
_08070954: .4byte _08070958
_08070958: @ jump table
.4byte _08070998 @ case 0
.4byte _08070BE4 @ case 1
.4byte _08070BE4 @ case 2
.4byte _080709A8 @ case 3
.4byte _080709C2 @ case 4
.4byte _08070BE4 @ case 5
.4byte _08070BE4 @ case 6
.4byte _08070BE4 @ case 7
.4byte _08070BE4 @ case 8
.4byte _08070BE4 @ case 9
.4byte _08070BE4 @ case 10
.4byte _08070BE4 @ case 11
.4byte _08070BE4 @ case 12
.4byte _08070BE4 @ case 13
.4byte _08070BE4 @ case 14
.4byte _080709B4 @ case 15
_08070998:
ldr r0, _080709A4 @ =gPlayerState
ldrb r1, [r0, #6]
movs r2, #0x80
eors r1, r2
strb r1, [r0, #6]
b _080709D8
.align 2, 0
_080709A4: .4byte gPlayerState
_080709A8:
ldr r1, _080709B0 @ =gPlayerState
movs r0, #0x80
strb r0, [r1, #6]
b _080709D8
.align 2, 0
_080709B0: .4byte gPlayerState
_080709B4:
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
bl sub_080797EC
b _08070BE4
_080709C2:
ldr r0, _080709D4 @ =gPlayerState
ldrb r1, [r0, #6]
movs r2, #0x80
eors r1, r2
strb r1, [r0, #6]
bl sub_080797EC
b _08070BE4
.align 2, 0
_080709D4: .4byte gPlayerState
_080709D8:
adds r1, r5, #0
adds r1, #0x3c
movs r0, #0
strb r0, [r1]
adds r6, r5, #0
adds r6, #0x29
ldrb r1, [r6]
subs r0, #8
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r6]
adds r0, r5, #0
bl sub_0807AC54
cmp r0, #0
beq _080709FC
b _08070BE4
_080709FC:
adds r0, r5, #0
bl sub_08077698
bl RunQueuedAction
cmp r0, #0
beq _08070A0C
b _08070BE4
_08070A0C:
bl sub_080792D8
ldr r4, _08070A78 @ =gPlayerState
ldrb r1, [r4, #2]
ldrb r0, [r4, #0xa]
orrs r0, r1
cmp r0, #0
bne _08070A32
bl sub_08079550
cmp r0, #0
beq _08070A26
b _08070BE4
_08070A26:
adds r0, r5, #0
bl sub_08078F74
cmp r0, #0
beq _08070A32
b _08070BE4
_08070A32:
adds r0, r5, #0
bl DoJump
bl RunQueuedAction
cmp r0, #0
beq _08070A42
b _08070BE4
_08070A42:
ldrb r2, [r4, #2]
cmp r2, #0
beq _08070AAC
adds r1, r4, #0
adds r1, #0xa8
movs r0, #0x14
strb r0, [r1]
movs r0, #0xc0
ands r0, r2
cmp r0, #0
bne _08070A80
movs r0, #7
ands r0, r2
cmp r0, #3
beq _08070A7C
movs r0, #0x20
ands r0, r2
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _08070A7C
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_08008926
b _08070A80
.align 2, 0
_08070A78: .4byte gPlayerState
_08070A7C:
movs r0, #0xff
strb r0, [r5, #0x15]
_08070A80:
bl UpdatePlayerMovement
adds r0, r5, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08070A94
b _08070BE4
_08070A94:
ldr r0, _08070AA8 @ =gPlayerState
ldrb r0, [r0, #4]
cmp r0, #0
beq _08070A9E
b _08070BE4
_08070A9E:
adds r0, r5, #0
bl UpdateAnimationSingleFrame
b _08070BE4
.align 2, 0
_08070AA8: .4byte gPlayerState
_08070AAC:
adds r0, r5, #0
adds r0, #0x42
ldrb r1, [r0]
adds r7, r0, #0
cmp r1, #0
beq _08070ABA
b _08070BBC
_08070ABA:
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _08070AD4
adds r1, r4, #0
adds r1, #0xa8
movs r0, #7
strb r0, [r1]
adds r0, r5, #0
bl sub_0807ACCC
b _08070B56
_08070AD4:
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #0x12
ands r0, r1
cmp r0, #0
bne _08070AEE
ldrb r0, [r6]
movs r1, #0x39
rsbs r1, r1, #0
ands r1, r0
movs r0, #8
orrs r1, r0
strb r1, [r6]
_08070AEE:
ldrb r1, [r4, #0x1e]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _08070B00
adds r0, r5, #0
bl sub_08008AA0
b _08070B1E
_08070B00:
ldrb r0, [r4, #0x12]
cmp r0, #0x17
bne _08070B0E
adds r0, r5, #0
bl sub_08008926
b _08070B1E
_08070B0E:
cmp r0, #1
bne _08070B18
bl ResetPlayerVelocity
b _08070B1E
_08070B18:
adds r0, r5, #0
bl sub_08008AA0
_08070B1E:
ldr r2, _08070BB8 @ =gPlayerState
ldrb r1, [r2, #0x1b]
movs r0, #0x10
ands r0, r1
cmp r0, #0
bne _08070B56
ldrb r3, [r2, #0xd]
strb r3, [r5, #0x15]
ldr r0, [r2, #0x30]
movs r1, #0x80
lsls r1, r1, #3
ands r0, r1
cmp r0, #0
beq _08070B56
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r5, #0x24]
movs r0, #0x80
ands r0, r3
cmp r0, #0
beq _08070B52
ldrb r1, [r5, #0x14]
movs r0, #0xe
ands r0, r1
lsls r0, r0, #2
strb r0, [r5, #0x15]
_08070B52:
bl DeleteClones
_08070B56:
movs r4, #0
ldr r3, _08070BB8 @ =gPlayerState
ldrb r2, [r3, #7]
ldrb r0, [r5, #0x15]
orrs r0, r2
movs r1, #0x80
ands r0, r1
ldrb r1, [r3, #0xa]
orrs r0, r1
cmp r0, #0
bne _08070B8E
movs r0, #0x10
ands r0, r2
cmp r0, #0
bne _08070B8E
movs r4, #1
ldrb r0, [r7]
cmp r0, #0
bne _08070B8E
ldrb r1, [r3, #0x1e]
movs r0, #0x40
ands r0, r1
cmp r0, #0
bne _08070B8C
ldrb r0, [r3, #0x12]
cmp r0, #0x17
beq _08070B8E
_08070B8C:
movs r4, #3
_08070B8E:
adds r0, r5, #0
adds r1, r4, #0
bl sub_08070BEC
adds r0, r5, #0
bl sub_08008AC6
ldrb r0, [r7]
cmp r0, #0
bne _08070BE4
ldr r1, _08070BB8 @ =gPlayerState
ldrb r0, [r1, #0xb]
cmp r0, #0
bne _08070BE4
ldrb r0, [r1, #0x12]
cmp r0, #0x1e
beq _08070BE4
adds r0, r5, #0
bl sub_0806F948
b _08070BE4
.align 2, 0
_08070BB8: .4byte gPlayerState
_08070BBC:
ldr r0, [r4, #0x2c]
cmp r0, #0
bne _08070BC8
adds r0, r5, #0
bl UpdateAnimationSingleFrame
_08070BC8:
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _08070BE4
ldr r0, _08070BE8 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _08070BE4
adds r0, r5, #0
bl CreateWaterTrace
_08070BE4:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08070BE8: .4byte gRoomTransition
.syntax divided
-76
View File
@@ -1,76 +0,0 @@
.syntax unified
push {r4, lr}
ldr r1, _080AD948 @ =gMain
ldrb r0, [r1, #0xb]
adds r2, r0, #0
cmp r2, #0
bne _080AD958
ldr r1, _080AD94C @ =gOAMControls
movs r3, #0xa4
lsls r3, r3, #3
adds r0, r1, r3
strb r2, [r0]
ldr r3, _080AD950 @ =0x00000664
adds r0, r1, r3
strb r2, [r0]
movs r3, #0xf5
lsls r3, r3, #3
adds r0, r1, r3
strb r2, [r0]
ldr r3, _080AD954 @ =0x000008EC
adds r0, r1, r3
strb r2, [r0]
adds r4, r1, #0
b _080AD95E
.align 2, 0
_080AD948: .4byte gMain
_080AD94C: .4byte gOAMControls
_080AD950: .4byte 0x00000664
_080AD954: .4byte 0x000008EC
_080AD958:
subs r0, #1
strb r0, [r1, #0xb]
ldr r4, _080AD9A8 @ =gOAMControls
_080AD95E:
ldrb r1, [r4, #3]
movs r0, #0x80
subs r2, r0, r1
cmp r2, #0
ble _080AD980
lsls r1, r1, #3
adds r0, r4, #0
adds r0, #0x20
adds r1, r1, r0
movs r3, #0xa8
lsls r3, r3, #2
adds r0, r3, #0
_080AD976:
strh r0, [r1]
adds r1, #8
subs r2, #1
cmp r2, #0
bne _080AD976
_080AD980:
adds r1, r4, #0
ldr r0, _080AD9AC @ =0x00000427
adds r2, r1, r0
ldrb r0, [r2]
cmp r0, #0
beq _080AD9A0
movs r0, #0
strb r0, [r2]
movs r2, #0x84
lsls r2, r2, #3
adds r0, r1, r2
adds r1, #0x26
movs r2, #0x20
movs r3, #8
bl ObjAffineSet
_080AD9A0:
movs r0, #1
strb r0, [r4]
pop {r4, pc}
.align 2, 0
_080AD9A8: .4byte gOAMControls
_080AD9AC: .4byte 0x00000427
.syntax divided
-357
View File
@@ -1,357 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start BigPushableLever
BigPushableLever: @ 0x08098EE0
push {lr}
ldr r2, _08098EF4 @ =gUnk_081236DC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08098EF4: .4byte gUnk_081236DC
thumb_func_start sub_08098EF8
sub_08098EF8: @ 0x08098EF8
push {lr}
adds r3, r0, #0
adds r3, #0x29
ldrb r2, [r3]
movs r1, #8
rsbs r1, r1, #0
ands r1, r2
movs r2, #5
orrs r1, r2
strb r1, [r3]
bl sub_08098FCC
pop {pc}
.align 2, 0
thumb_func_start sub_08098F14
sub_08098F14: @ 0x08098F14
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_080990EC
cmp r0, #0
beq _08098F84
movs r6, #0
movs r0, #2
strb r0, [r5, #0xc]
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r5, #0
adds r1, #0x70
ldrh r1, [r1]
adds r4, r5, #0
adds r4, #0x38
ldrb r2, [r4]
bl SetTile
adds r0, r5, #0
adds r0, #0x76
ldrh r0, [r0]
adds r1, r5, #0
adds r1, #0x72
ldrh r1, [r1]
ldrb r2, [r4]
bl SetTile
movs r0, #0x99
lsls r0, r0, #1
bl EnqueueSFX
adds r0, r5, #0
movs r1, #0x1e
bl RequestPriorityDuration
bl sub_08079F8C
cmp r0, #0
beq _08098F84
ldr r2, _08098F88 @ =gPlayerState
movs r0, #0x98
strb r0, [r2, #6]
movs r0, #5
strb r0, [r2, #0xc]
ldr r0, [r2, #0x30]
movs r1, #1
orrs r0, r1
str r0, [r2, #0x30]
ldr r1, _08098F8C @ =gPlayerEntity
strh r6, [r1, #0x2c]
strh r6, [r1, #0x30]
ldrb r0, [r1, #0x14]
lsls r0, r0, #2
strb r0, [r1, #0x15]
_08098F84:
pop {r4, r5, r6, pc}
.align 2, 0
_08098F88: .4byte gPlayerState
_08098F8C: .4byte gPlayerEntity
thumb_func_start sub_08098F90
sub_08098F90: @ 0x08098F90
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08098FC8
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _08098FB8
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
b _08098FC2
_08098FB8:
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl ClearFlag
_08098FC2:
adds r0, r4, #0
bl sub_08098FCC
_08098FC8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08098FCC
sub_08098FCC: @ 0x08098FCC
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x84
movs r1, #0x3c
strh r1, [r2]
bl sub_08098FE0
pop {pc}
thumb_func_start sub_08098FE0
sub_08098FE0: @ 0x08098FE0
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
bne _0809906C
strb r0, [r6, #0xb]
movs r0, #0x2e
ldrsh r2, [r6, r0]
ldr r1, _08099060 @ =gRoomControls
ldrh r0, [r1, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r3, #0x3f
ands r2, r3
movs r4, #0x32
ldrsh r0, [r6, r4]
ldrh r1, [r1, #8]
adds r1, #0x10
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r2, r0
adds r5, r6, #0
adds r5, #0x70
strh r2, [r5]
subs r2, #0x40
adds r7, r6, #0
adds r7, #0x72
strh r2, [r7]
ldrh r0, [r5]
adds r4, r6, #0
adds r4, #0x38
ldrb r1, [r4]
bl GetTileIndex
adds r1, r6, #0
adds r1, #0x74
strh r0, [r1]
ldrh r0, [r7]
ldrb r1, [r4]
bl GetTileIndex
adds r1, r6, #0
adds r1, #0x76
strh r0, [r1]
ldr r0, _08099064 @ =0x00004057
ldrh r1, [r5]
ldrb r2, [r4]
bl SetTile
ldr r0, _08099068 @ =0x00004058
ldrh r1, [r7]
ldrb r2, [r4]
bl SetTile
adds r0, r6, #0
movs r1, #1
bl InitializeAnimation
b _080990DC
.align 2, 0
_08099060: .4byte gRoomControls
_08099064: .4byte 0x00004057
_08099068: .4byte 0x00004058
_0809906C:
movs r0, #1
strb r0, [r6, #0xb]
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, _080990E0 @ =gRoomControls
ldrh r0, [r2, #6]
adds r0, #0x10
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 r5, r6, #0
adds r5, #0x70
strh r1, [r5]
subs r1, #1
adds r7, r6, #0
adds r7, #0x72
strh r1, [r7]
ldrh r0, [r5]
adds r4, r6, #0
adds r4, #0x38
ldrb r1, [r4]
bl GetTileIndex
adds r1, r6, #0
adds r1, #0x74
strh r0, [r1]
ldrh r0, [r7]
ldrb r1, [r4]
bl GetTileIndex
adds r1, r6, #0
adds r1, #0x76
strh r0, [r1]
ldr r0, _080990E4 @ =0x00004055
ldrh r1, [r5]
ldrb r2, [r4]
bl SetTile
ldr r0, _080990E8 @ =0x00004056
ldrh r1, [r7]
ldrb r2, [r4]
bl SetTile
adds r0, r6, #0
movs r1, #0
bl InitializeAnimation
_080990DC:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080990E0: .4byte gRoomControls
_080990E4: .4byte 0x00004055
_080990E8: .4byte 0x00004056
thumb_func_start sub_080990EC
sub_080990EC: @ 0x080990EC
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x72
ldrh r0, [r6]
adds r5, r4, #0
adds r5, #0x38
ldrb r1, [r5]
bl GetTileIndex
ldr r1, _0809911C @ =0x00004059
cmp r0, r1
bne _08099140
adds r1, r4, #0
adds r1, #0x84
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08099120
movs r0, #1
b _08099156
.align 2, 0
_0809911C: .4byte 0x00004059
_08099120:
adds r0, r4, #0
bl sub_08099158
ldr r1, _0809913C @ =gUnk_081236E8
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
ldrh r1, [r6]
ldrb r2, [r5]
bl SetTile
b _08099154
.align 2, 0
_0809913C: .4byte gUnk_081236E8
_08099140:
adds r1, r4, #0
adds r1, #0x84
movs r2, #0
movs r0, #0x3c
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x62
strb r2, [r0]
adds r0, #1
strb r2, [r0]
_08099154:
movs r0, #0
_08099156:
pop {r4, r5, r6, pc}
thumb_func_start sub_08099158
sub_08099158: @ 0x08099158
push {r4, lr}
adds r3, r0, #0
ldrb r0, [r3, #0xb]
ldr r4, _08099198 @ =gUnk_081236F4
cmp r0, #0
bne _08099166
ldr r4, _0809919C @ =gUnk_081236EC
_08099166:
adds r2, r3, #0
adds r2, #0x84
ldrh r0, [r2]
lsrs r0, r0, #2
movs r1, #6
ands r0, r1
adds r4, r4, r0
ldrb r0, [r4]
adds r1, r3, #0
adds r1, #0x62
strb r0, [r1]
ldrb r1, [r4, #1]
adds r0, r3, #0
adds r0, #0x63
strb r1, [r0]
ldrh r1, [r2]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _08099194
ldr r0, _080991A0 @ =0x00000131
bl EnqueueSFX
_08099194:
pop {r4, pc}
.align 2, 0
_08099198: .4byte gUnk_081236F4
_0809919C: .4byte gUnk_081236EC
_080991A0: .4byte 0x00000131
-188
View File
@@ -1,188 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start HittableLever
HittableLever: @ 0x0808A6F4
push {lr}
adds r2, r0, #0
adds r0, #0x3d
movs r1, #0
ldrsb r1, [r0, r1]
cmp r1, #0
bne _0808A706
adds r0, #0x33
strh r1, [r0]
_0808A706:
ldr r0, _0808A718 @ =gUnk_08121178
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
pop {pc}
.align 2, 0
_0808A718: .4byte gUnk_08121178
thumb_func_start sub_0808A71C
sub_0808A71C: @ 0x0808A71C
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #1
strb r5, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #3
movs r0, #0x8f
strb r0, [r1]
subs r1, #4
movs r0, #0xa
strb r0, [r1]
ldr r0, _0808A75C @ =gUnk_08121180
str r0, [r4, #0x48]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0808A764
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _0808A760
strb r5, [r4, #0xa]
b _0808A76E
.align 2, 0
_0808A75C: .4byte gUnk_08121180
_0808A760:
strb r0, [r4, #0xa]
b _0808A76E
_0808A764:
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
_0808A76E:
adds r0, r4, #0
bl sub_0808A7D8
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0808A778
sub_0808A778: @ 0x0808A778
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808A7D0
adds r1, r5, #0
adds r1, #0x70
ldrh r0, [r1]
cmp r0, #0
bne _0808A7D0
movs r0, #1
strh r0, [r1]
ldrb r0, [r5, #0xa]
movs r1, #1
eors r0, r1
strb r0, [r5, #0xa]
adds r1, r5, #0
adds r1, #0x3d
movs r0, #0xe8
strb r0, [r1]
adds r0, r5, #0
bl sub_0808A7D8
adds r4, r5, #0
adds r4, #0x86
ldrh r0, [r4]
bl CheckFlags
cmp r0, #0
beq _0808A7C2
ldrh r0, [r4]
bl ClearFlag
b _0808A7C8
_0808A7C2:
ldrh r0, [r4]
bl SetFlag
_0808A7C8:
ldr r1, _0808A7D4 @ =0x00000117
adds r0, r5, #0
bl SoundReqClipped
_0808A7D0:
pop {r4, r5, pc}
.align 2, 0
_0808A7D4: .4byte 0x00000117
thumb_func_start sub_0808A7D8
sub_0808A7D8: @ 0x0808A7D8
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #0
beq _0808A818
movs r0, #0xde
lsls r0, r0, #2
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _0808A814 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0807B7D8
b _0808A844
.align 2, 0
_0808A814: .4byte gRoomControls
_0808A818:
ldr r0, _0808A848 @ =0x00000377
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _0808A84C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0807B7D8
_0808A844:
pop {r4, r5, r6, pc}
.align 2, 0
_0808A848: .4byte 0x00000377
_0808A84C: .4byte gRoomControls
File diff suppressed because it is too large Load Diff
-666
View File
@@ -1,666 +0,0 @@
.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 LinearMoveUpdate
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
-323
View File
@@ -1,323 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PushableLever
PushableLever: @ 0x08098260
push {lr}
ldr r2, _08098274 @ =gUnk_08123494
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08098274: .4byte gUnk_08123494
thumb_func_start sub_08098278
sub_08098278: @ 0x08098278
push {lr}
adds r3, r0, #0
adds r3, #0x29
ldrb r2, [r3]
movs r1, #8
rsbs r1, r1, #0
ands r1, r2
movs r2, #5
orrs r1, r2
strb r1, [r3]
bl sub_08098340
pop {pc}
.align 2, 0
thumb_func_start sub_08098294
sub_08098294: @ 0x08098294
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08098418
cmp r0, #0
beq _080982FA
movs r5, #0
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x62
strb r5, [r0]
adds r0, #1
strb r5, [r0]
adds r0, #0xf
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x70
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
movs r0, #0xb5
lsls r0, r0, #1
bl EnqueueSFX
adds r0, r4, #0
movs r1, #0x1e
bl RequestPriorityDuration
bl sub_08079F8C
cmp r0, #0
beq _080982FA
ldr r2, _080982FC @ =gPlayerState
movs r0, #0x90
strb r0, [r2, #6]
movs r0, #5
strb r0, [r2, #0xc]
ldr r0, [r2, #0x30]
movs r1, #1
orrs r0, r1
str r0, [r2, #0x30]
ldr r1, _08098300 @ =gPlayerEntity
strh r5, [r1, #0x2c]
strh r5, [r1, #0x30]
ldrb r0, [r1, #0x14]
lsls r0, r0, #2
strb r0, [r1, #0x15]
_080982FA:
pop {r4, r5, pc}
.align 2, 0
_080982FC: .4byte gPlayerState
_08098300: .4byte gPlayerEntity
thumb_func_start sub_08098304
sub_08098304: @ 0x08098304
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809833C
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _0809832C
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
b _08098336
_0809832C:
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl ClearFlag
_08098336:
adds r0, r4, #0
bl sub_08098340
_0809833C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08098340
sub_08098340: @ 0x08098340
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x74
movs r1, #0x3c
strh r1, [r2]
bl sub_08098354
pop {pc}
thumb_func_start sub_08098354
sub_08098354: @ 0x08098354
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
bne _080983BC
strb r0, [r6, #0xb]
movs r0, #0x2e
ldrsh r2, [r6, r0]
ldr r1, _080983B4 @ =gRoomControls
ldrh r0, [r1, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r3, #0x3f
ands r2, r3
movs r4, #0x32
ldrsh r0, [r6, r4]
ldrh r1, [r1, #8]
adds r1, #0x10
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r2, r0
adds r4, r6, #0
adds r4, #0x70
strh r2, [r4]
ldrh r0, [r4]
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
bl GetTileIndex
adds r1, r6, #0
adds r1, #0x72
strh r0, [r1]
ldr r0, _080983B8 @ =0x00004053
ldrh r1, [r4]
ldrb r2, [r5]
bl SetTile
adds r0, r6, #0
movs r1, #1
bl InitializeAnimation
b _0809840C
.align 2, 0
_080983B4: .4byte gRoomControls
_080983B8: .4byte 0x00004053
_080983BC:
movs r0, #1
strb r0, [r6, #0xb]
movs r0, #0x2e
ldrsh r2, [r6, r0]
ldr r1, _08098410 @ =gRoomControls
ldrh r0, [r1, #6]
adds r0, #0x10
subs r2, r2, r0
asrs r2, r2, #4
movs r3, #0x3f
ands r2, r3
movs r4, #0x32
ldrsh r0, [r6, r4]
ldrh r1, [r1, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r2, r0
adds r4, r6, #0
adds r4, #0x70
strh r2, [r4]
ldrh r0, [r4]
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
bl GetTileIndex
adds r1, r6, #0
adds r1, #0x72
strh r0, [r1]
ldr r0, _08098414 @ =0x00004052
ldrh r1, [r4]
ldrb r2, [r5]
bl SetTile
adds r0, r6, #0
movs r1, #0
bl InitializeAnimation
_0809840C:
pop {r4, r5, r6, pc}
.align 2, 0
_08098410: .4byte gRoomControls
_08098414: .4byte 0x00004052
thumb_func_start sub_08098418
sub_08098418: @ 0x08098418
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x70
ldrh r0, [r6]
adds r5, r4, #0
adds r5, #0x38
ldrb r1, [r5]
bl GetTileIndex
ldr r1, _08098448 @ =0x00004054
cmp r0, r1
bne _0809846C
adds r1, r4, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809844C
movs r0, #1
b _08098482
.align 2, 0
_08098448: .4byte 0x00004054
_0809844C:
adds r0, r4, #0
bl sub_08098484
ldr r1, _08098468 @ =gUnk_081234A0
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
ldrh r1, [r6]
ldrb r2, [r5]
bl SetTile
b _08098480
.align 2, 0
_08098468: .4byte gUnk_081234A0
_0809846C:
adds r1, r4, #0
adds r1, #0x74
movs r2, #0
movs r0, #0x3c
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x62
strb r2, [r0]
adds r0, #1
strb r2, [r0]
_08098480:
movs r0, #0
_08098482:
pop {r4, r5, r6, pc}
thumb_func_start sub_08098484
sub_08098484: @ 0x08098484
push {r4, lr}
adds r3, r0, #0
ldrb r0, [r3, #0xb]
ldr r4, _080984C4 @ =gUnk_081234AC
cmp r0, #0
bne _08098492
ldr r4, _080984C8 @ =gUnk_081234A4
_08098492:
adds r2, r3, #0
adds r2, #0x74
ldrh r0, [r2]
lsrs r0, r0, #2
movs r1, #6
ands r0, r1
adds r4, r4, r0
ldrb r0, [r4]
adds r1, r3, #0
adds r1, #0x62
strb r0, [r1]
ldrb r1, [r4, #1]
adds r0, r3, #0
adds r0, #0x63
strb r1, [r0]
ldrh r1, [r2]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _080984C2
movs r0, #0x82
lsls r0, r0, #1
bl EnqueueSFX
_080984C2:
pop {r4, pc}
.align 2, 0
_080984C4: .4byte gUnk_081234AC
_080984C8: .4byte gUnk_081234A4
-5
View File
@@ -1,5 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
-19
View File
@@ -1,19 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081236DC:: @ 081236DC
.4byte sub_08098EF8
.4byte sub_08098F14
.4byte sub_08098F90
gUnk_081236E8:: @ 081236E8
.incbin "bigPushableLever/gUnk_081236E8.bin"
gUnk_081236EC:: @ 081236EC
.incbin "bigPushableLever/gUnk_081236EC.bin"
gUnk_081236F4:: @ 081236F4
.incbin "bigPushableLever/gUnk_081236F4.bin"
-12
View File
@@ -1,12 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121178:: @ 08121178
.4byte sub_0808A71C
.4byte sub_0808A778
gUnk_08121180:: @ 08121180
.incbin "hittableLever/gUnk_08121180.bin"
-27
View File
@@ -1,27 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08122294:: @ 08122294
.4byte sub_08091264
.4byte sub_08091338
.4byte sub_08091360
gUnk_081222A0:: @ 081222A0
.4byte sub_08091444
.4byte sub_08091470
gUnk_081222A8:: @ 081222A8
.incbin "pullableLever/gUnk_081222A8.bin"
gUnk_081222B0:: @ 081222B0
.4byte sub_08091380
.4byte sub_08091438
gUnk_081222B8:: @ 081222B8
.incbin "pullableLever/gUnk_081222B8.bin"
gUnk_081222C0:: @ 081222C0
.incbin "pullableLever/gUnk_081222C0.bin"
-19
View File
@@ -1,19 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08123494:: @ 08123494
.4byte sub_08098278
.4byte sub_08098294
.4byte sub_08098304
gUnk_081234A0:: @ 081234A0
.incbin "pushableLever/gUnk_081234A0.bin"
gUnk_081234A4:: @ 081234A4
.incbin "pushableLever/gUnk_081234A4.bin"
gUnk_081234AC:: @ 081234AC
.incbin "pushableLever/gUnk_081234AC.bin"
+1 -1
View File
@@ -357,7 +357,7 @@ void PicoBloom(Entity*);
void Board(Entity*);
void Object81(Entity*);
void BigVortex(Entity*);
void BigPushableLever(Entity*);
void BigPushableLever();
void SmallIceBlock(Entity*);
void BigIceBlock(Entity*);
void Object86(Entity*);
+2 -2
View File
@@ -777,7 +777,7 @@ SECTIONS {
asm/object/board.o(.text);
asm/object/object81.o(.text);
src/object/bigVortex.o(.text);
asm/object/bigPushableLever.o(.text);
src/object/bigPushableLever.o(.text);
asm/object/smallIceBlock.o(.text);
asm/object/bigIceBlock.o(.text);
src/object/object86.o(.text);
@@ -1521,7 +1521,7 @@ SECTIONS {
data/const/object/object81.o(.rodata);
data/const/object/bigVortex.o(.rodata);
data/animations/object/bigVortex.o(.rodata);
data/const/object/bigPushableLever.o(.rodata);
src/object/bigPushableLever.o(.rodata);
data/animations/object/bigPushableLever.o(.rodata);
data/const/object/smallIceBlock.o(.rodata);
data/animations/object/smallIceBlock.o(.rodata);
+155
View File
@@ -0,0 +1,155 @@
/**
* @file bigPushableLever.c
* @ingroup Objects
*
* @brief Big Pushable Lever object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[8];
/*0x70*/ u16 tilePositionUpper;
/*0x72*/ u16 tilePositionLower;
/*0x74*/ u16 tileIndexUpper;
/*0x76*/ u16 tileIndexLower;
/*0x78*/ u8 unk_78[12];
/*0x84*/ u16 timer;
/*0x86*/ u16 pushedFlag;
} BigPushableLeverEntity;
enum BigPushableLeverAction {
INIT,
IDLE,
PUSHING,
};
extern void (*const BigPushableLever_Actions[])(BigPushableLeverEntity*);
extern const u16 gUnk_081236E8[];
extern const u8 BigPushableLever_InitialOffsets[];
extern const u8 BigPushableLever_PushedOffsets[];
void BigPushableLever_SetIdle(BigPushableLeverEntity*);
bool32 BigPushableLever_ShouldStartPushing(BigPushableLeverEntity*);
void BigPushableLever_SetTiles(BigPushableLeverEntity*);
void BigPushableLever_CalculateSpriteOffsets(BigPushableLeverEntity*);
#define TILE_INITIAL 0x4058
#define TILE_PUSHED 0x4056
void BigPushableLever(BigPushableLeverEntity* this) {
BigPushableLever_Actions[super->action](this);
}
void BigPushableLever_Init(BigPushableLeverEntity* this) {
super->spritePriority.b0 = 5;
BigPushableLever_SetIdle(this);
}
void BigPushableLever_Idle(BigPushableLeverEntity* this) {
if (BigPushableLever_ShouldStartPushing(this)) {
super->action = PUSHING;
SetTile(this->tileIndexUpper, this->tilePositionUpper, super->collisionLayer);
SetTile(this->tileIndexLower, this->tilePositionLower, super->collisionLayer);
EnqueueSFX(SFX_132);
RequestPriorityDuration(super, 0x1e);
if (sub_08079F8C()) {
gPlayerState.pushedObject = 0x98;
gPlayerState.queued_action = 5;
gPlayerState.flags |= 1;
gPlayerEntity.x.HALF.LO = 0;
gPlayerEntity.y.HALF.LO = 0;
gPlayerEntity.direction = gPlayerEntity.animationState << 2;
}
}
}
void BigPushableLever_Pushing(BigPushableLeverEntity* this) {
GetNextFrame(super);
if ((super->frame & 0x80) != 0) {
if (super->type2 == 0) {
SetFlag(this->pushedFlag);
} else {
ClearFlag(this->pushedFlag);
}
BigPushableLever_SetIdle(this);
}
}
void BigPushableLever_SetIdle(BigPushableLeverEntity* this) {
super->action = IDLE;
this->timer = 0x3c;
BigPushableLever_SetTiles(this);
}
void BigPushableLever_SetTiles(BigPushableLeverEntity* this) {
if (!CheckFlags(this->pushedFlag)) {
super->type2 = 0;
this->tilePositionUpper = COORD_TO_TILE_OFFSET(super, 0, 0x10);
this->tilePositionLower = this->tilePositionUpper - 0x40;
this->tileIndexUpper = GetTileIndex(this->tilePositionUpper, super->collisionLayer);
this->tileIndexLower = GetTileIndex(this->tilePositionLower, super->collisionLayer);
SetTile(0x4057, this->tilePositionUpper, super->collisionLayer);
SetTile(0x4058, this->tilePositionLower, super->collisionLayer);
InitializeAnimation(super, 1);
} else {
super->type2 = 1;
this->tilePositionUpper = COORD_TO_TILE_OFFSET(super, 0x10, 0);
this->tilePositionLower = this->tilePositionUpper - 1;
this->tileIndexUpper = GetTileIndex(this->tilePositionUpper, super->collisionLayer);
this->tileIndexLower = GetTileIndex(this->tilePositionLower, super->collisionLayer);
SetTile(0x4055, this->tilePositionUpper, super->collisionLayer);
SetTile(0x4056, this->tilePositionLower, super->collisionLayer);
InitializeAnimation(super, 0);
}
}
bool32 BigPushableLever_ShouldStartPushing(BigPushableLeverEntity* this) {
if (GetTileIndex(this->tilePositionLower, super->collisionLayer) == 0x4059) {
if (--this->timer == 0) {
return TRUE;
}
BigPushableLever_CalculateSpriteOffsets(this);
SetTile(gUnk_081236E8[super->type2], this->tilePositionLower, super->collisionLayer);
} else {
this->timer = 0x3c;
super->spriteOffsetX = 0;
super->spriteOffsetY = 0;
}
return FALSE;
}
void BigPushableLever_CalculateSpriteOffsets(BigPushableLeverEntity* this) {
const u8* offsets;
if (super->type2 == 0) {
offsets = BigPushableLever_InitialOffsets;
} else {
offsets = BigPushableLever_PushedOffsets;
}
offsets = &offsets[this->timer >> 2 & 6];
super->spriteOffsetX = offsets[0];
super->spriteOffsetY = offsets[1];
if ((this->timer & 3) == 0) {
EnqueueSFX(SFX_131);
}
}
void (*const BigPushableLever_Actions[])(BigPushableLeverEntity*) = {
BigPushableLever_Init,
BigPushableLever_Idle,
BigPushableLever_Pushing,
};
const u16 gUnk_081236E8[] = {
TILE_INITIAL,
TILE_PUSHED,
};
const u8 BigPushableLever_InitialOffsets[] = {
0, 0, 0, 0, 255, 0, 0, 0,
};
const u8 BigPushableLever_PushedOffsets[] = {
0, 0, 0, 0, 0, 255, 0, 0,
};
+3 -3
View File
@@ -19,7 +19,7 @@ typedef struct {
} HittableLeverEntity;
extern void (*const HittableLever_Actions[])(HittableLeverEntity*);
extern const Hitbox gUnk_08121180;
extern const Hitbox HittableLever_Hitbox;
void HittableLever_UpdateTile(HittableLeverEntity*);
@@ -36,7 +36,7 @@ void HittableLever_Init(HittableLeverEntity* this) {
super->field_0x3c = 7;
super->hitType = 0x8f;
super->flags2 = 0xa;
super->hitbox = (Hitbox*)&gUnk_08121180;
super->hitbox = (Hitbox*)&HittableLever_Hitbox;
if (super->type == 0) {
if (CheckFlags(this->hitFlag)) {
super->type = 1;
@@ -76,4 +76,4 @@ void (*const HittableLever_Actions[])(HittableLeverEntity*) = {
HittableLever_Init,
HittableLever_Idle,
};
const Hitbox gUnk_08121180 = { 0, 1, { 0, 0, 0, 0 }, 4, 3 };
const Hitbox HittableLever_Hitbox = { 0, 1, { 0, 0, 0, 0 }, 4, 3 };