mirror of
https://github.com/zeldaret/tmc
synced 2026-06-29 19:42:24 -04:00
+1
-1
@@ -887,7 +887,7 @@ sub_080307EC: @ 0x080307EC
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
adds r0, r4, #0
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r5, #0x78
|
||||
strh r0, [r5]
|
||||
ldr r0, _08030830 @ =0x00004022
|
||||
|
||||
+4
-4
@@ -687,14 +687,14 @@ sub_08030F00: @ 0x08030F00
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
adds r0, r4, #0
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x80
|
||||
strh r0, [r1]
|
||||
adds r0, r4, #1
|
||||
mov sl, r0
|
||||
ldrb r1, [r6]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x82
|
||||
strh r0, [r1]
|
||||
@@ -703,7 +703,7 @@ sub_08030F00: @ 0x08030F00
|
||||
mov sb, r3
|
||||
ldrb r1, [r6]
|
||||
mov r0, sb
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x84
|
||||
strh r0, [r1]
|
||||
@@ -711,7 +711,7 @@ sub_08030F00: @ 0x08030F00
|
||||
adds r0, r0, r4
|
||||
mov r8, r0
|
||||
ldrb r1, [r6]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x86
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -286,7 +286,7 @@ sub_08037220: @ 0x08037220
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
adds r0, r4, #0
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
@@ -542,7 +542,7 @@ sub_08037418: @ 0x08037418
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
adds r0, r4, #0
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
ldr r1, _08037468 @ =0x00004067
|
||||
cmp r0, r1
|
||||
bne _08037460
|
||||
|
||||
@@ -191,7 +191,7 @@ sub_08033890: @ 0x08033890
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
@@ -583,7 +583,7 @@ _08033BB2:
|
||||
ldrh r0, [r5]
|
||||
ldr r2, [sp, #8]
|
||||
ldrb r1, [r2]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
mov r3, sl
|
||||
strh r0, [r3]
|
||||
lsls r0, r0, #0x10
|
||||
|
||||
@@ -551,7 +551,7 @@ sub_0802F888: @ 0x0802F888
|
||||
adds r6, r4, #0
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r4, #0x86
|
||||
strh r0, [r4]
|
||||
ldr r0, _0802F8E0 @ =0x00004071
|
||||
@@ -643,7 +643,7 @@ _0802F920:
|
||||
mov r2, r8
|
||||
ldrb r1, [r2]
|
||||
adds r0, r4, #0
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
ldr r1, _0802F9C4 @ =0x00004071
|
||||
cmp r0, r1
|
||||
beq _0802F9A2
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -141,7 +141,7 @@ _08070280:
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x38
|
||||
ldrb r1, [r4]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
str r0, [r5, #0x7c]
|
||||
adds r0, r5, #0
|
||||
movs r1, #0x14
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r0, #0
|
||||
ldr r0, _08070408 @ =0x00004021
|
||||
cmp r1, r0
|
||||
|
||||
@@ -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
|
||||
@@ -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 sub_080001DA
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r7]
|
||||
ldrb r1, [r4]
|
||||
bl sub_080001DA
|
||||
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 sub_080001DA
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r7]
|
||||
ldrb r1, [r4]
|
||||
bl sub_080001DA
|
||||
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 sub_080001DA
|
||||
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
|
||||
@@ -190,7 +190,7 @@ sub_0808B3AC: @ 0x0808B3AC
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x72
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -432,20 +432,20 @@ _0808C510:
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7a
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
adds r0, #1
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7c
|
||||
strh r0, [r1]
|
||||
@@ -475,20 +475,20 @@ _0808C570:
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7a
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
adds r0, #0x40
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7c
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -103,13 +103,13 @@ _0809207A:
|
||||
strh r2, [r7]
|
||||
ldrh r0, [r5]
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r7]
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -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
@@ -84,7 +84,7 @@ _08096B12:
|
||||
adds r6, r4, #0
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -113,7 +113,7 @@ _08084D7E:
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
ldrb r1, [r6]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r7, #0
|
||||
adds r1, #0x70
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -163,7 +163,7 @@ sub_0808B934: @ 0x0808B934
|
||||
adds r6, r4, #0
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -425,7 +425,7 @@ sub_080970F4: @ 0x080970F4
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x70
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -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
|
||||
@@ -291,7 +291,7 @@ sub_0808FB68: @ 0x0808FB68
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r0, #0
|
||||
ldr r0, _0808FBAC @ =0x00004031
|
||||
cmp r1, r0
|
||||
@@ -324,7 +324,7 @@ _0808FBB0:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r0, #0
|
||||
ldr r0, _0808FBF8 @ =0x00004031
|
||||
cmp r1, r0
|
||||
@@ -364,7 +364,7 @@ sub_0808FBFC: @ 0x0808FBFC
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r0, #0
|
||||
ldr r0, _0808FC38 @ =0x0000404A
|
||||
cmp r1, r0
|
||||
@@ -612,7 +612,7 @@ _0808FDB6:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808FDE0: .4byte 0x0000010F
|
||||
@@ -630,7 +630,7 @@ sub_0808FDE8: @ 0x0808FDE8
|
||||
adds r4, r0, #0
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
ldr r6, _0808FE28 @ =0x0000402E
|
||||
cmp r0, r6
|
||||
bne _0808FE30
|
||||
@@ -684,7 +684,7 @@ _0808FE58:
|
||||
adds r4, r0, #0
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
ldr r6, _0808FE98 @ =0x0000402F
|
||||
cmp r0, r6
|
||||
bne _0808FEA0
|
||||
@@ -851,7 +851,7 @@ _0808FF9C:
|
||||
strh r7, [r0]
|
||||
ldrh r0, [r0]
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
@@ -872,7 +872,7 @@ _0808FFC0:
|
||||
strh r7, [r0]
|
||||
ldrh r0, [r0]
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
@@ -893,7 +893,7 @@ _0808FFC0:
|
||||
strh r0, [r5]
|
||||
ldrh r0, [r5]
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
@@ -918,7 +918,7 @@ _0809002C:
|
||||
strh r7, [r0]
|
||||
ldrh r0, [r0]
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
@@ -939,7 +939,7 @@ _0809002C:
|
||||
strh r0, [r4]
|
||||
ldrh r0, [r4]
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
@@ -974,7 +974,7 @@ sub_08090094: @ 0x08090094
|
||||
adds r4, r0, #0
|
||||
adds r0, r7, #0
|
||||
movs r1, #1
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r3, r0, #0
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #7
|
||||
|
||||
@@ -64,60 +64,60 @@ sub_080975A0: @ 0x080975A0
|
||||
adds r7, r4, #0
|
||||
adds r7, #0x38
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x6a
|
||||
strh r0, [r1]
|
||||
adds r0, r5, #0
|
||||
subs r0, #0x40
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x6c
|
||||
strh r0, [r1]
|
||||
adds r0, r5, #0
|
||||
subs r0, #0x3f
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x6e
|
||||
strh r0, [r1]
|
||||
subs r0, r5, #1
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x70
|
||||
strh r0, [r1]
|
||||
ldrb r1, [r7]
|
||||
adds r0, r5, #0
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x72
|
||||
strh r0, [r1]
|
||||
adds r0, r5, #1
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
strh r0, [r1]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x3f
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
strh r0, [r1]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r7]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7a
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -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 sub_080001DA
|
||||
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 sub_080001DA
|
||||
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 sub_080001DA
|
||||
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
|
||||
@@ -212,7 +212,7 @@ sub_0808A644: @ 0x0808A644
|
||||
adds r6, r4, #0
|
||||
adds r6, #0x38
|
||||
ldrb r1, [r6]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x70
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -360,7 +360,7 @@ sub_08089454: @ 0x08089454
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x38
|
||||
ldrb r1, [r4]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x80
|
||||
strh r0, [r1]
|
||||
|
||||
@@ -388,7 +388,7 @@ sub_08099468: @ 0x08099468
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl sub_080001DA
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x6c
|
||||
strh r0, [r1]
|
||||
|
||||
+2
-2
@@ -186,8 +186,8 @@ sub_080001D0: @ 0x080001D0
|
||||
strb r0, [r3, r1]
|
||||
bx lr
|
||||
|
||||
non_word_aligned_thumb_func_start sub_080001DA
|
||||
sub_080001DA: @ 0x080001DA
|
||||
non_word_aligned_thumb_func_start GetTileIndex
|
||||
GetTileIndex: @ 0x080001DA
|
||||
lsls r1, r1, #3
|
||||
ldr r2, _08000224 @ =gUnk_08000228
|
||||
ldr r1, [r2, r1]
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -160,4 +160,9 @@ extern void sub_08079BD8(Entity*);
|
||||
extern void sub_080AEFB4(Entity*);
|
||||
extern void UnloadOBJPalette(Entity*);
|
||||
void sub_080322E8(Entity*);
|
||||
extern u32 GetTileIndex(u32, u32);
|
||||
extern void sub_0806FBB4(Entity*);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_080044AE(Entity*, u32, u32);
|
||||
#endif
|
||||
|
||||
+4
-4
@@ -273,7 +273,7 @@ void Object2B(Entity*);
|
||||
void Beanstalk(Entity*);
|
||||
void Smoke(Entity*);
|
||||
void PushableRock(Entity*);
|
||||
void HittableLever(Entity*);
|
||||
void HittableLever();
|
||||
void Object30(Entity*);
|
||||
void FrozenFlower(Entity*);
|
||||
void PullableMushroom(Entity*);
|
||||
@@ -310,7 +310,7 @@ void GiantRock(Entity*);
|
||||
void GiantRock2(Entity*);
|
||||
void Object52(Entity*);
|
||||
void Object53(Entity*);
|
||||
void PullableLever(Entity*);
|
||||
void PullableLever();
|
||||
void Minecart(Entity*);
|
||||
void ThoughtBubble(Entity*);
|
||||
void HiddenLadderDown(Entity*);
|
||||
@@ -349,7 +349,7 @@ void Bell(Entity*);
|
||||
void MacroDecoration(Entity*);
|
||||
void Object79(Entity*);
|
||||
void Steam(Entity*);
|
||||
void PushableLever(Entity*);
|
||||
void PushableLever();
|
||||
void MacroShoes(Entity*);
|
||||
void ObjectOnSpinyBeetle(Entity*);
|
||||
void Object7E(Entity*);
|
||||
@@ -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*);
|
||||
|
||||
@@ -691,7 +691,7 @@ SECTIONS {
|
||||
asm/object/beanstalk.o(.text);
|
||||
src/object/smoke.o(.text);
|
||||
asm/object/pushableRock.o(.text);
|
||||
asm/object/hittableLever.o(.text);
|
||||
src/object/hittableLever.o(.text);
|
||||
asm/object/object30.o(.text);
|
||||
src/object/frozenFlower.o(.text);
|
||||
asm/object/pullableMushroom.o(.text);
|
||||
@@ -731,7 +731,7 @@ SECTIONS {
|
||||
asm/object/giantRock2.o(.text);
|
||||
asm/object/object52.o(.text);
|
||||
asm/object/object53.o(.text);
|
||||
asm/object/pullableLever.o(.text);
|
||||
src/object/pullableLever.o(.text);
|
||||
src/object/minecart.o(.text);
|
||||
asm/object/minecart.o(.text);
|
||||
src/object/thoughtBubble.o(.text);
|
||||
@@ -769,7 +769,7 @@ SECTIONS {
|
||||
asm/object/macroDecorations.o(.text);
|
||||
asm/object/object79.o(.text);
|
||||
src/object/steam.o(.text);
|
||||
asm/object/pushableLever.o(.text);
|
||||
src/object/pushableLever.o(.text);
|
||||
asm/object/macroShoes.o(.text);
|
||||
asm/object/objectOnSpinyBeetle.o(.text);
|
||||
src/object/object7E.o(.text);
|
||||
@@ -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);
|
||||
@@ -1416,7 +1416,7 @@ SECTIONS {
|
||||
data/const/object/smoke.o(.rodata);
|
||||
data/const/object/pushableRock.o(.rodata);
|
||||
data/animations/object/pushableRock.o(.rodata);
|
||||
data/const/object/hittableLever.o(.rodata);
|
||||
src/object/hittableLever.o(.rodata);
|
||||
data/const/object/object30.o(.rodata);
|
||||
data/const/object/object31.o(.rodata);
|
||||
data/const/object/pullableMushroom.o(.rodata);
|
||||
@@ -1465,7 +1465,7 @@ SECTIONS {
|
||||
data/animations/object/minishSizedEntrance.o(.rodata);
|
||||
data/const/object/giantRock2.o(.rodata);
|
||||
data/const/object/object53.o(.rodata);
|
||||
data/const/object/pullableLever.o(.rodata);
|
||||
src/object/pullableLever.o(.rodata);
|
||||
data/animations/object/pullableLever.o(.rodata);
|
||||
data/const/object/minecart.o(.rodata);
|
||||
data/animations/object/minecart.o(.rodata);
|
||||
@@ -1511,7 +1511,7 @@ SECTIONS {
|
||||
data/const/object/object79.o(.rodata);
|
||||
data/animations/object/object79.o(.rodata);
|
||||
src/object/steam.o(.rodata);
|
||||
data/const/object/pushableLever.o(.rodata);
|
||||
src/object/pushableLever.o(.rodata);
|
||||
data/animations/object/pushableLever.o(.rodata);
|
||||
data/const/object/macroShoes.o(.rodata);
|
||||
data/const/object/objectOnSpinyBeetle.o(.rodata);
|
||||
@@ -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);
|
||||
|
||||
@@ -18,7 +18,6 @@ bool32 sub_0802915C(Entity*);
|
||||
bool32 sub_080291DC(Entity*);
|
||||
void sub_0802922C(Entity*);
|
||||
void sub_08028E9C(Entity*);
|
||||
u32 sub_080001DA(u32, u32);
|
||||
void sub_08028FFC(Entity*);
|
||||
void sub_0802925C(Entity*);
|
||||
void sub_080290E0(Entity*, u32);
|
||||
@@ -90,7 +89,7 @@ void sub_08028994(Entity* this) {
|
||||
} else {
|
||||
this->actionDelay = 0;
|
||||
this->field_0x76.HWORD = COORD_TO_TILE(this);
|
||||
this->field_0x74.HWORD = sub_080001DA(this->field_0x76.HWORD, this->collisionLayer);
|
||||
this->field_0x74.HWORD = GetTileIndex(this->field_0x76.HWORD, this->collisionLayer);
|
||||
this->hurtType = 0x41;
|
||||
sub_08028FFC(this);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern s16 sub_080001DA(u32, u32); // ?
|
||||
extern void sub_08049CF4(Entity*);
|
||||
void sub_080221C0(Entity*);
|
||||
|
||||
@@ -118,7 +117,7 @@ void sub_08022198(Entity* this) {
|
||||
void sub_080221C0(Entity* this) {
|
||||
u32 tile = COORD_TO_TILE(this) + gUnk_080B4488[this->type2];
|
||||
this->field_0x7c.HALF.HI = tile;
|
||||
this->field_0x7c.HALF.LO = sub_080001DA(tile, this->collisionLayer);
|
||||
this->field_0x7c.HALF.LO = GetTileIndex(tile, this->collisionLayer);
|
||||
SetTile(gUnk_080CB79C[this->type2], tile, this->collisionLayer);
|
||||
}
|
||||
|
||||
|
||||
@@ -137,14 +137,12 @@ void nullsub_148(Entity* this) {
|
||||
/* ... */
|
||||
}
|
||||
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
|
||||
void sub_0802C4B0(Entity* this) {
|
||||
u32 offset;
|
||||
u32 index;
|
||||
u32 rand;
|
||||
|
||||
switch (sub_080001DA(this->field_0x7c.HALF_U.HI, this->collisionLayer)) {
|
||||
switch (GetTileIndex(this->field_0x7c.HALF_U.HI, this->collisionLayer)) {
|
||||
case 0x1ab ... 0x1af:
|
||||
offset = 8;
|
||||
break;
|
||||
|
||||
@@ -21,7 +21,6 @@ void (*const gUnk_080CFBD4[])(FlyingSkullEntity*);
|
||||
const s8 gUnk_080CFBE4[4];
|
||||
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
extern void sub_08078930(Entity*);
|
||||
|
||||
void sub_0803A100(FlyingSkullEntity* this);
|
||||
@@ -118,7 +117,7 @@ void sub_08039D74(FlyingSkullEntity* this) {
|
||||
super->y.HALF.HI += 3;
|
||||
|
||||
tmp = COORD_TO_TILE(super);
|
||||
this->unk_0x74 = sub_080001DA(tmp, super->collisionLayer);
|
||||
this->unk_0x74 = GetTileIndex(tmp, super->collisionLayer);
|
||||
SetTile(0x4060, tmp, super->collisionLayer);
|
||||
InitializeAnimation(super, 0);
|
||||
}
|
||||
@@ -246,7 +245,7 @@ void sub_0803A0E0(FlyingSkullEntity* this) {
|
||||
|
||||
void sub_0803A100(FlyingSkullEntity* this) {
|
||||
u32 tile = COORD_TO_TILE(super);
|
||||
if (sub_080001DA(tile, super->collisionLayer) == 0x4067) {
|
||||
if (GetTileIndex(tile, super->collisionLayer) == 0x4067) {
|
||||
SetTile(this->unk_0x74, tile, super->collisionLayer);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
@@ -46,7 +46,6 @@ u32 sub_08058B08(ManagerC*, u32, u32, const struct_08108228*);
|
||||
void sub_08058B5C(ManagerC*, u32);
|
||||
|
||||
extern void sub_0805622C(struct BgAffineDstData*, u32, u32);
|
||||
extern void sub_080044AE(Entity*, u32, u32);
|
||||
|
||||
extern u8 gUnk_03003DE4[0xC];
|
||||
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
+2
-5
@@ -101,7 +101,6 @@ void sub_08081C98(Entity* this) {
|
||||
}
|
||||
|
||||
Entity* sub_08081D74(Entity*);
|
||||
u32 sub_080001DA(u32, u32);
|
||||
|
||||
u32 sub_08081CB0(Entity* this) {
|
||||
u16 tmp;
|
||||
@@ -114,7 +113,7 @@ u32 sub_08081CB0(Entity* this) {
|
||||
} else {
|
||||
tmp = GetTileType(this->field_0x74.HWORD, this->collisionLayer);
|
||||
if (tmp != 0x77 && tmp != 0x79 && tmp != 0x4035) {
|
||||
this->field_0x70.HALF.LO = sub_080001DA(this->field_0x74.HWORD, this->collisionLayer);
|
||||
this->field_0x70.HALF.LO = GetTileIndex(this->field_0x74.HWORD, this->collisionLayer);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -129,7 +128,7 @@ u32 sub_08081D28(Entity* this) {
|
||||
if (this->field_0x70.HALF_U.LO == 0xFFFF) {
|
||||
return 0;
|
||||
}
|
||||
if (sub_080001DA(this->field_0x74.HWORD, this->collisionLayer) != this->field_0x70.HALF_U.LO) {
|
||||
if (GetTileIndex(this->field_0x74.HWORD, this->collisionLayer) != this->field_0x70.HALF_U.LO) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -260,8 +259,6 @@ u32 sub_08081F7C(Entity* this, u32 r7) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern void sub_080044AE(Entity*, u32, u32);
|
||||
|
||||
void sub_08081FF8(Entity* this) {
|
||||
u32 direction;
|
||||
u32 i;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "object.h"
|
||||
|
||||
extern void sub_080001D0(u32, u32, u32);
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
|
||||
enum {
|
||||
FURNITURE_INIT,
|
||||
@@ -374,7 +373,7 @@ static void sub_08090B6C(FurnitureEntity* this) {
|
||||
}
|
||||
|
||||
static void sub_08090CDC(u32 id, u32 pos, u32 layer) {
|
||||
u16 cur = sub_080001DA(pos, layer);
|
||||
u16 cur = GetTileIndex(pos, layer);
|
||||
u32 next = cur;
|
||||
u32 id2;
|
||||
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/**
|
||||
* @file hittableLever.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Hittable 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 wasHit; /**< Has this lever been hit before. */
|
||||
/*0x72*/ u8 unk_72[0x14];
|
||||
/*0x86*/ u16 hitFlag;
|
||||
} HittableLeverEntity;
|
||||
|
||||
extern void (*const HittableLever_Actions[])(HittableLeverEntity*);
|
||||
extern const Hitbox HittableLever_Hitbox;
|
||||
|
||||
void HittableLever_UpdateTile(HittableLeverEntity*);
|
||||
|
||||
void HittableLever(HittableLeverEntity* this) {
|
||||
if (super->iframes == 0) {
|
||||
this->wasHit = 0;
|
||||
}
|
||||
HittableLever_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void HittableLever_Init(HittableLeverEntity* this) {
|
||||
super->action = 1;
|
||||
super->flags |= 0x80;
|
||||
super->field_0x3c = 7;
|
||||
super->hitType = 0x8f;
|
||||
super->flags2 = 0xa;
|
||||
super->hitbox = (Hitbox*)&HittableLever_Hitbox;
|
||||
if (super->type == 0) {
|
||||
if (CheckFlags(this->hitFlag)) {
|
||||
super->type = 1;
|
||||
} else {
|
||||
super->type = 0;
|
||||
}
|
||||
} else {
|
||||
SetFlag(this->hitFlag);
|
||||
}
|
||||
HittableLever_UpdateTile(this);
|
||||
}
|
||||
|
||||
void HittableLever_Idle(HittableLeverEntity* this) {
|
||||
if (((super->bitfield & 0x80) != 0) && (this->wasHit == 0)) {
|
||||
this->wasHit = 1;
|
||||
super->type ^= 1;
|
||||
super->iframes = -0x18;
|
||||
HittableLever_UpdateTile(this);
|
||||
if (CheckFlags(this->hitFlag)) {
|
||||
ClearFlag(this->hitFlag);
|
||||
} else {
|
||||
SetFlag(this->hitFlag);
|
||||
}
|
||||
SoundReqClipped(super, SFX_117);
|
||||
}
|
||||
}
|
||||
|
||||
void HittableLever_UpdateTile(HittableLeverEntity* this) {
|
||||
if (super->type != 0) {
|
||||
sub_0807B7D8(0x378, COORD_TO_TILE(super), super->collisionLayer);
|
||||
} else {
|
||||
sub_0807B7D8(0x377, COORD_TO_TILE(super), super->collisionLayer);
|
||||
}
|
||||
}
|
||||
|
||||
void (*const HittableLever_Actions[])(HittableLeverEntity*) = {
|
||||
HittableLever_Init,
|
||||
HittableLever_Idle,
|
||||
};
|
||||
const Hitbox HittableLever_Hitbox = { 0, 1, { 0, 0, 0, 0 }, 4, 3 };
|
||||
@@ -37,7 +37,6 @@ void LockedDoor(Entity* this) {
|
||||
|
||||
extern Hitbox gHitbox_2;
|
||||
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
extern void sub_08078850(Entity*, u32, u32, u32);
|
||||
|
||||
typedef struct PACKED {
|
||||
@@ -102,7 +101,7 @@ void sub_08083338(Entity* this) {
|
||||
this->spritePriority.b0 = 5;
|
||||
this->frame = this->type & 0xF;
|
||||
this->field_0x76.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI);
|
||||
this->field_0x74.HWORD = sub_080001DA(this->field_0x76.HWORD, this->collisionLayer);
|
||||
this->field_0x74.HWORD = GetTileIndex(this->field_0x76.HWORD, this->collisionLayer);
|
||||
switch (this->type2) {
|
||||
case 0:
|
||||
if (!CheckFlags(this->field_0x86.HWORD)) {
|
||||
|
||||
+2
-3
@@ -4,7 +4,6 @@
|
||||
extern void (*MaskActionFuncs[])(Entity*);
|
||||
|
||||
extern void sub_08000148(u16, u16, u32);
|
||||
extern s16 sub_080001DA(u16, u32);
|
||||
|
||||
extern void sub_0805457C(Entity*, s32);
|
||||
|
||||
@@ -48,8 +47,8 @@ void sub_080929A4(Entity* this) {
|
||||
|
||||
this->frameIndex = this->type2 & 0x3f;
|
||||
|
||||
this->field_0x7c.HALF.HI = COORD_TO_TILE(this);
|
||||
this->field_0x7c.HALF.LO = sub_080001DA(this->field_0x7c.HALF.HI, 1);
|
||||
this->field_0x7c.HALF_U.HI = COORD_TO_TILE(this);
|
||||
this->field_0x7c.HALF_U.LO = GetTileIndex(this->field_0x7c.HALF_U.HI, 1);
|
||||
|
||||
this->field_0x7a.HWORD = sub_080002E0((u16)this->field_0x7c.HALF.HI, 1);
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
extern u32 sub_08083734(Entity*, u32);
|
||||
extern void sub_080A080C(Entity*);
|
||||
extern void sub_080A0870(Entity*);
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
|
||||
extern void (*const gUnk_0812493C[])(Entity*);
|
||||
|
||||
@@ -93,9 +92,9 @@ void sub_080A07F0(Entity* this) {
|
||||
}
|
||||
|
||||
void sub_080A080C(Entity* this) {
|
||||
this->field_0x76.HWORD = sub_080001DA(this->field_0x74.HWORD - 1, this->collisionLayer);
|
||||
this->field_0x78.HWORD = sub_080001DA(this->field_0x74.HWORD, this->collisionLayer);
|
||||
this->field_0x7a.HWORD = sub_080001DA(this->field_0x74.HWORD + 1, this->collisionLayer);
|
||||
this->field_0x76.HWORD = GetTileIndex(this->field_0x74.HWORD - 1, this->collisionLayer);
|
||||
this->field_0x78.HWORD = GetTileIndex(this->field_0x74.HWORD, this->collisionLayer);
|
||||
this->field_0x7a.HWORD = GetTileIndex(this->field_0x74.HWORD + 1, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74.HWORD - 1, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74.HWORD, this->collisionLayer);
|
||||
SetTile(0x4022, this->field_0x74.HWORD + 1, this->collisionLayer);
|
||||
|
||||
+2
-3
@@ -18,7 +18,6 @@ extern void (*const gUnk_0811F0C4[])(Entity*);
|
||||
extern Hitbox gHitbox_18; // TODO: should be const
|
||||
extern Hitbox gUnk_080FD340; // TODO: should be const
|
||||
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08016A6C(Entity*);
|
||||
|
||||
@@ -47,7 +46,7 @@ void sub_0808222C(Entity* this) {
|
||||
ResolveCollisionLayer(this);
|
||||
}
|
||||
|
||||
this->field_0x70.HALF.LO = sub_080001DA(COORD_TO_TILE(this), this->collisionLayer);
|
||||
this->field_0x70.HALF.LO = GetTileIndex(COORD_TO_TILE(this), this->collisionLayer);
|
||||
if ((u16)this->field_0x70.HALF.LO == 0x4000) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
@@ -188,7 +187,7 @@ void sub_08082614(Entity* this) {
|
||||
this->speed <<= 1;
|
||||
}
|
||||
|
||||
this->field_0x70.HALF.LO = sub_080001DA(COORD_TO_TILE(this), this->collisionLayer);
|
||||
this->field_0x70.HALF.LO = GetTileIndex(COORD_TO_TILE(this), this->collisionLayer);
|
||||
tileType = GetTileTypeByEntity(this);
|
||||
switch (tileType) {
|
||||
case 0x71:
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
/**
|
||||
* @file pullableLever.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Pullable Lever object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
#include "sound.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[8];
|
||||
/*0x70*/ u16 pullLength;
|
||||
/*0x72*/ u16 leverPart; // lever part number? [0,1,2]
|
||||
/*0x74*/ u8 actionDelay;
|
||||
/*0x75*/ u8 unk_75;
|
||||
/*0x76*/ u16 necessaryPullLength;
|
||||
/*0x78*/ u8 unk_78[6];
|
||||
/*0x7e*/ u8 unk_7e;
|
||||
/*0x7f*/ u8 unk_7f;
|
||||
/*0x80*/ u16 initialX;
|
||||
/*0x82*/ u16 initialY;
|
||||
/*0x84*/ u8 unk_84[2];
|
||||
/*0x86*/ u16 pulledFlag;
|
||||
} PullableLeverEntity;
|
||||
|
||||
enum PullableLeverPart { HANDLE, MIDDLE, SOCKET };
|
||||
|
||||
extern u16 gUnk_02021F00[];
|
||||
extern Hitbox gUnk_080FD270;
|
||||
extern Hitbox gUnk_080FD278;
|
||||
|
||||
extern void (*const PullableLever_HandleActions[])(PullableLeverEntity*);
|
||||
extern void (*const PullableLever_MiddleActions[])(PullableLeverEntity*);
|
||||
extern const s8 PullableLever_InitialOffsets[];
|
||||
extern void (*const PullableLever_HandleSubActions[])(PullableLeverEntity*);
|
||||
extern const s8 gUnk_081222B8[];
|
||||
extern const u8 gUnk_081222C0[];
|
||||
|
||||
void sub_08091504(PullableLeverEntity*);
|
||||
void PullableLever_UpdateLength(PullableLeverEntity*);
|
||||
void sub_0809153C(PullableLeverEntity*);
|
||||
|
||||
void PullableLever(PullableLeverEntity* this) {
|
||||
switch (this->leverPart) {
|
||||
case HANDLE:
|
||||
PullableLever_HandleActions[super->action](this);
|
||||
sub_0800445C(super);
|
||||
gUnk_02021F00[this->actionDelay] = this->pullLength;
|
||||
break;
|
||||
case MIDDLE:
|
||||
PullableLever_MiddleActions[super->action](this);
|
||||
break;
|
||||
case SOCKET:
|
||||
if (super->action == 0) {
|
||||
sub_08091504(this);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void PullableLever_HandleInit(PullableLeverEntity* this) {
|
||||
if (gEntCount < 0x46) {
|
||||
PullableLeverEntity* entity1 = (PullableLeverEntity*)CreateObject(PULLABLE_LEVER, super->type, super->type2);
|
||||
PullableLeverEntity* entity2 = (PullableLeverEntity*)CreateObject(PULLABLE_LEVER, super->type, super->type2);
|
||||
(entity1->base).parent = super;
|
||||
(entity2->base).parent = super;
|
||||
entity1->leverPart = 1;
|
||||
entity2->leverPart = 2;
|
||||
CopyPosition(super, &entity2->base);
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->speed = 0x60;
|
||||
if ((super->type2 & 1)) {
|
||||
super->hitbox = &gUnk_080FD278;
|
||||
} else {
|
||||
super->hitbox = &gUnk_080FD270;
|
||||
}
|
||||
super->field_0x16 = 1;
|
||||
super->x.HALF.HI += PullableLever_InitialOffsets[super->type2 * 2];
|
||||
this->initialX = super->x.HALF.HI;
|
||||
super->y.HALF.HI += PullableLever_InitialOffsets[super->type2 * 2 + 1];
|
||||
this->initialY = super->y.HALF.HI;
|
||||
CopyPosition(super, &entity1->base);
|
||||
this->necessaryPullLength = this->unk_7e;
|
||||
this->actionDelay = super->actionDelay;
|
||||
InitializeAnimation(super, super->type2);
|
||||
}
|
||||
}
|
||||
|
||||
void PullableLever_HandleAction1(PullableLeverEntity* this) {
|
||||
sub_08078930(super);
|
||||
if (this->pullLength != 0) {
|
||||
super->direction = super->type2 << 3;
|
||||
LinearMoveUpdate(super);
|
||||
PullableLever_UpdateLength(this);
|
||||
}
|
||||
}
|
||||
|
||||
void PullableLever_HandleAction2(PullableLeverEntity* this) {
|
||||
sub_0806FBB4(super);
|
||||
PullableLever_HandleSubActions[super->subAction - 5](this);
|
||||
}
|
||||
|
||||
void PullableLever_HandleSubAction0(PullableLeverEntity* this) {
|
||||
u16 y;
|
||||
u16 x;
|
||||
Entity* player = &gPlayerEntity;
|
||||
|
||||
if (this->unk_75 == 0) {
|
||||
if (-player->animationState + super->type2 * 2 == 0) {
|
||||
x = gUnk_081222B8[super->type2 * 2] + super->x.HALF_U.HI;
|
||||
y = gUnk_081222B8[super->type2 * 2 + 1] + super->y.HALF_U.HI;
|
||||
if (0x10 < sub_080002D4(x, y, player->collisionLayer) - 0xf) {
|
||||
player->x.HALF.HI = x;
|
||||
player->y.HALF.HI = y;
|
||||
}
|
||||
}
|
||||
this->unk_75 = 1;
|
||||
super->field_0xf = 2;
|
||||
}
|
||||
if (player->animationState >> 1 == super->type2) {
|
||||
if (gPlayerState.framestate == 0x1a) {
|
||||
if (gPlayerState.heldObject & 2) {
|
||||
if (gPlayerEntity.frame & 2) {
|
||||
sub_0809153C(this);
|
||||
if (this->unk_75 == 1) {
|
||||
this->unk_75 = 2;
|
||||
EnqueueSFX(SFX_19E);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PullableLever_HandleSubAction1(PullableLeverEntity* this) {
|
||||
super->action = 1;
|
||||
this->unk_75 = 0;
|
||||
}
|
||||
|
||||
void PullableLever_MiddleInit(PullableLeverEntity* this) {
|
||||
super->action = 1;
|
||||
super->spritePriority.b0 = 5;
|
||||
InitializeAnimation(super, super->parent->type2 + 8);
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
}
|
||||
|
||||
void PullableLever_MiddleAction1(PullableLeverEntity* this) {
|
||||
u16 tmp;
|
||||
PullableLeverEntity* parent = ((PullableLeverEntity*)super->parent);
|
||||
if (parent->pullLength < 8) {
|
||||
super->spriteSettings.draw = 0;
|
||||
} else {
|
||||
super->spriteSettings.draw = 1;
|
||||
tmp = (((PullableLeverEntity*)super->parent)->pullLength - 8) & 7;
|
||||
switch (super->type2) {
|
||||
case 0:
|
||||
super->y.HALF.HI = (super->parent->y.HALF.HI - tmp) - 0x11;
|
||||
break;
|
||||
case 1:
|
||||
super->x.HALF.HI = tmp + super->parent->x.HALF.HI + 0x11;
|
||||
break;
|
||||
case 2:
|
||||
super->y.HALF.HI = tmp + super->parent->y.HALF.HI + 0x11;
|
||||
break;
|
||||
case 3:
|
||||
super->x.HALF.HI = (super->parent->x.HALF.HI - tmp) - 0x11;
|
||||
break;
|
||||
}
|
||||
tmp = (parent->pullLength - 8) >> 4;
|
||||
if (tmp != super->animationState) {
|
||||
super->animationState = tmp;
|
||||
InitializeAnimation(super, tmp * 4 + super->type2 + 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08091504(PullableLeverEntity* this) {
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spritePriority.b0 = 6;
|
||||
InitializeAnimation(super, super->type2 + 4);
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
}
|
||||
|
||||
void sub_0809153C(PullableLeverEntity* this) {
|
||||
s16 prevX;
|
||||
s16 prevY;
|
||||
u32 dir;
|
||||
s16 diff;
|
||||
s32 radius;
|
||||
|
||||
Entity* player = &gPlayerEntity;
|
||||
dir = gUnk_081222C0[super->type2];
|
||||
if (this->necessaryPullLength <= this->pullLength) {
|
||||
return;
|
||||
}
|
||||
prevX = player->x.HALF.HI;
|
||||
prevY = player->y.HALF.HI;
|
||||
sub_080044AE(&gPlayerEntity, super->speed, dir);
|
||||
if ((prevX == gPlayerEntity.x.HALF.HI) && (prevY == gPlayerEntity.y.HALF.HI)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (super->type2) {
|
||||
case 0:
|
||||
diff = player->y.HALF.HI - prevY;
|
||||
break;
|
||||
case 1:
|
||||
diff = prevX - gPlayerEntity.x.HALF.HI;
|
||||
break;
|
||||
case 2:
|
||||
diff = prevY - gPlayerEntity.y.HALF.HI;
|
||||
break;
|
||||
case 3:
|
||||
diff = gPlayerEntity.x.HALF.HI - prevX;
|
||||
break;
|
||||
}
|
||||
radius = (diff << 0x18);
|
||||
super->x.WORD += gSineTable[dir * 8] * (radius >> 0x10);
|
||||
super->y.WORD -= gSineTable[dir * 8 + 0x40] * (radius >> 0x10);
|
||||
PullableLever_UpdateLength(this);
|
||||
if (this->necessaryPullLength <= this->pullLength) {
|
||||
EnqueueSFX(SFX_BUTTON_PRESS);
|
||||
SetFlag(this->pulledFlag);
|
||||
} else {
|
||||
if (--super->field_0xf == 0) {
|
||||
super->field_0xf = 0x10;
|
||||
EnqueueSFX(SFX_10F);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PullableLever_UpdateLength(PullableLeverEntity* this) {
|
||||
switch (super->type2) {
|
||||
case 0:
|
||||
this->pullLength = super->y.HALF.HI - this->initialY;
|
||||
break;
|
||||
case 1:
|
||||
this->pullLength = this->initialX - super->x.HALF.HI;
|
||||
break;
|
||||
case 2:
|
||||
this->pullLength = this->initialY - super->y.HALF.HI;
|
||||
break;
|
||||
case 3:
|
||||
this->pullLength = super->x.HALF.HI - this->initialX;
|
||||
break;
|
||||
}
|
||||
|
||||
if (CheckFlags(this->pulledFlag) && (this->pullLength == 0)) {
|
||||
ClearFlag(this->pulledFlag);
|
||||
}
|
||||
}
|
||||
|
||||
void (*const PullableLever_HandleActions[])(PullableLeverEntity*) = {
|
||||
PullableLever_HandleInit,
|
||||
PullableLever_HandleAction1,
|
||||
PullableLever_HandleAction2,
|
||||
};
|
||||
void (*const PullableLever_MiddleActions[])(PullableLeverEntity*) = {
|
||||
PullableLever_MiddleInit,
|
||||
PullableLever_MiddleAction1,
|
||||
};
|
||||
const s8 PullableLever_InitialOffsets[] = {
|
||||
0, 9, -9, 0, 0, -9, 9, 0,
|
||||
};
|
||||
void (*const PullableLever_HandleSubActions[])(PullableLeverEntity*) = {
|
||||
PullableLever_HandleSubAction0,
|
||||
PullableLever_HandleSubAction1,
|
||||
};
|
||||
const s8 gUnk_081222B8[] = {
|
||||
0, 10, -8, 0, 0, -10, 8, 0,
|
||||
};
|
||||
const u8 gUnk_081222C0[] = {
|
||||
16,
|
||||
24,
|
||||
0,
|
||||
8,
|
||||
};
|
||||
@@ -0,0 +1,148 @@
|
||||
/**
|
||||
* @file pushableLever.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief 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 tilePosition;
|
||||
/*0x72*/ u16 tileIndex;
|
||||
/*0x74*/ u16 timer;
|
||||
/*0x76*/ u8 unk_76[16];
|
||||
/*0x86*/ u16 pushedFlag;
|
||||
} PushableLeverEntity;
|
||||
|
||||
enum PushableLeverAction {
|
||||
INIT,
|
||||
IDLE,
|
||||
PUSHING,
|
||||
};
|
||||
|
||||
extern void (*const PushableLever_Actions[])(PushableLeverEntity*);
|
||||
extern const u16 PushableLever_Tiles[];
|
||||
extern const u8 PushableLever_InitialOffsets[];
|
||||
extern const u8 PushableLever_PushedOffsets[];
|
||||
|
||||
void PushableLever_SetIdle(PushableLeverEntity*);
|
||||
bool32 PushableLever_ShouldStartPushing(PushableLeverEntity* this);
|
||||
void PushableLever_SetTiles(PushableLeverEntity*);
|
||||
void PushableLever_CalculateSpriteOffsets(PushableLeverEntity*);
|
||||
|
||||
#define TILE_INITIAL 0x4053
|
||||
#define TILE_PUSHED 0x4052
|
||||
|
||||
void PushableLever(PushableLeverEntity* this) {
|
||||
PushableLever_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void PushableLever_Init(PushableLeverEntity* this) {
|
||||
super->spritePriority.b0 = 5;
|
||||
PushableLever_SetIdle(this);
|
||||
}
|
||||
|
||||
void PushableLever_Idle(PushableLeverEntity* this) {
|
||||
if (PushableLever_ShouldStartPushing(this)) {
|
||||
super->action = PUSHING;
|
||||
super->spriteOffsetX = 0;
|
||||
super->spriteOffsetY = 0;
|
||||
SetTile(this->tileIndex, this->tilePosition, super->collisionLayer);
|
||||
EnqueueSFX(SFX_16A);
|
||||
RequestPriorityDuration(super, 0x1e);
|
||||
if (sub_08079F8C()) {
|
||||
gPlayerState.pushedObject = 0x90;
|
||||
gPlayerState.queued_action = 5;
|
||||
gPlayerState.flags |= 1;
|
||||
gPlayerEntity.x.HALF.LO = 0;
|
||||
gPlayerEntity.y.HALF.LO = 0;
|
||||
gPlayerEntity.direction = gPlayerEntity.animationState << 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PushableLever_Pushing(PushableLeverEntity* this) {
|
||||
GetNextFrame(super);
|
||||
if ((super->frame & 0x80) != 0) {
|
||||
if (super->type2 == 0) {
|
||||
SetFlag(this->pushedFlag);
|
||||
} else {
|
||||
ClearFlag(this->pushedFlag);
|
||||
}
|
||||
PushableLever_SetIdle(this);
|
||||
}
|
||||
}
|
||||
|
||||
void PushableLever_SetIdle(PushableLeverEntity* this) {
|
||||
super->action = IDLE;
|
||||
this->timer = 0x3c;
|
||||
PushableLever_SetTiles(this);
|
||||
}
|
||||
|
||||
void PushableLever_SetTiles(PushableLeverEntity* this) {
|
||||
if (CheckFlags(this->pushedFlag) == FALSE) {
|
||||
super->type2 = 0;
|
||||
this->tilePosition = COORD_TO_TILE_OFFSET(super, 0, 0x10);
|
||||
this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer);
|
||||
SetTile(TILE_INITIAL, this->tilePosition, super->collisionLayer);
|
||||
InitializeAnimation(super, 1);
|
||||
} else {
|
||||
super->type2 = 1;
|
||||
this->tilePosition = COORD_TO_TILE_OFFSET(super, 0x10, 0);
|
||||
this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer);
|
||||
SetTile(TILE_PUSHED, this->tilePosition, super->collisionLayer);
|
||||
InitializeAnimation(super, 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 PushableLever_ShouldStartPushing(PushableLeverEntity* this) {
|
||||
if (GetTileIndex(this->tilePosition, super->collisionLayer) == 0x4054) {
|
||||
if (--this->timer == 0) {
|
||||
return TRUE;
|
||||
}
|
||||
PushableLever_CalculateSpriteOffsets(this);
|
||||
SetTile(PushableLever_Tiles[super->type2], this->tilePosition, super->collisionLayer);
|
||||
} else {
|
||||
this->timer = 0x3c;
|
||||
super->spriteOffsetX = 0;
|
||||
super->spriteOffsetY = 0;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void PushableLever_CalculateSpriteOffsets(PushableLeverEntity* this) {
|
||||
const u8* offsets;
|
||||
if (super->type2 == 0) {
|
||||
offsets = PushableLever_InitialOffsets;
|
||||
} else {
|
||||
offsets = PushableLever_PushedOffsets;
|
||||
}
|
||||
offsets = &offsets[(this->timer / 4) & 6];
|
||||
super->spriteOffsetX = offsets[0];
|
||||
super->spriteOffsetY = offsets[1];
|
||||
if ((this->timer & 3) == 0) {
|
||||
EnqueueSFX(SFX_104);
|
||||
}
|
||||
}
|
||||
|
||||
void (*const PushableLever_Actions[])(PushableLeverEntity*) = {
|
||||
PushableLever_Init,
|
||||
PushableLever_Idle,
|
||||
PushableLever_Pushing,
|
||||
};
|
||||
const u16 PushableLever_Tiles[] = {
|
||||
TILE_INITIAL,
|
||||
TILE_PUSHED,
|
||||
};
|
||||
const u8 PushableLever_InitialOffsets[] = {
|
||||
0, 0, 0, 0, 255, 0, 0, 0,
|
||||
};
|
||||
const u8 PushableLever_PushedOffsets[] = {
|
||||
0, 0, 0, 0, 0, 255, 0, 0,
|
||||
};
|
||||
+1
-2
@@ -281,7 +281,6 @@ extern u32 sub_080797C4(void);
|
||||
extern void sub_0800892E(Entity*);
|
||||
extern void sub_08078F24(void);
|
||||
extern void sub_0807B068(Entity*);
|
||||
extern u32 sub_080001DA(u32, u32);
|
||||
extern u32 sub_0807A2F8(u32);
|
||||
extern u32 sub_0806F730(Entity*);
|
||||
extern u32 sub_08007DD6(u32, const u16*);
|
||||
@@ -2155,7 +2154,7 @@ static void PlayerInHoleInit(Entity* this) {
|
||||
gPlayerState.animation = 0x950;
|
||||
} else {
|
||||
gPlayerState.animation = 0x61c;
|
||||
if (sub_080001DA(COORD_TO_TILE(this), this->collisionLayer) == 0x4020) {
|
||||
if (GetTileIndex(COORD_TO_TILE(this), this->collisionLayer) == 0x4020) {
|
||||
this->actionDelay = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,6 @@ typedef struct {
|
||||
u8 direction;
|
||||
} PACKED Struct_0812A074;
|
||||
|
||||
extern void sub_0806FBB4(Entity*);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern void sub_08078930(Entity*);
|
||||
|
||||
extern void (*const SpiderWeb_Functions[])(Entity*);
|
||||
extern void (*const SpiderWeb_Actions[])(Entity*);
|
||||
extern const u8 gUnk_0812A03C[];
|
||||
|
||||
Reference in New Issue
Block a user