mirror of
https://github.com/zeldaret/tmc
synced 2026-05-29 16:45:06 -04:00
Merge pull request #393 from octorock/objects
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #0
|
||||
bne _0806E7F2
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
bl Random
|
||||
movs r5, #1
|
||||
ands r0, r5
|
||||
cmp r0, #0
|
||||
beq _0806E7DE
|
||||
ldrb r0, [r4, #0x18]
|
||||
lsls r1, r0, #0x19
|
||||
lsrs r1, r1, #0x1f
|
||||
eors r1, r5
|
||||
lsls r1, r1, #6
|
||||
movs r2, #0x41
|
||||
rsbs r2, r2, #0
|
||||
ands r2, r0
|
||||
orrs r2, r1
|
||||
strb r2, [r4, #0x18]
|
||||
_0806E7DE:
|
||||
bl Random
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #9
|
||||
str r0, [r4, #0x20]
|
||||
strb r5, [r4, #0x1e]
|
||||
_0806E7F2:
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #6
|
||||
adds r0, r4, #0
|
||||
bl GravityUpdate
|
||||
cmp r0, #0
|
||||
bne _0806E81C
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r1, r0, #0x18
|
||||
cmp r1, #0
|
||||
bne _0806E816
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
strb r1, [r4, #0xd]
|
||||
b _0806E81C
|
||||
_0806E816:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #9
|
||||
str r0, [r4, #0x20]
|
||||
_0806E81C:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806E838
|
||||
pop {r4, r5, pc}
|
||||
.syntax divided
|
||||
@@ -1,185 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r0, _08070244 @ =gUnk_0811B9C8
|
||||
ldrb r1, [r5, #0x14]
|
||||
adds r2, r1, r0
|
||||
movs r6, #0
|
||||
ldrsb r6, [r2, r6]
|
||||
adds r1, #1
|
||||
adds r1, r1, r0
|
||||
movs r7, #0
|
||||
ldrsb r7, [r1, r7]
|
||||
adds r0, r5, #0
|
||||
movs r1, #0xa
|
||||
adds r2, r6, #0
|
||||
adds r3, r7, #0
|
||||
bl sub_08008782
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08070248
|
||||
ldrb r1, [r4, #5]
|
||||
ldrb r2, [r4, #2]
|
||||
movs r0, #0x53
|
||||
bl CreateObject
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08070260
|
||||
ldrb r0, [r4, #3]
|
||||
strb r0, [r1, #0xe]
|
||||
ldrh r0, [r5, #0x2e]
|
||||
adds r0, r0, r6
|
||||
strh r0, [r1, #0x2e]
|
||||
ldrh r0, [r5, #0x32]
|
||||
adds r0, r0, r7
|
||||
strh r0, [r1, #0x32]
|
||||
b _08070260
|
||||
.align 2, 0
|
||||
_08070244: .4byte gUnk_0811B9C8
|
||||
_08070248:
|
||||
ldr r0, [r5, #0x74]
|
||||
subs r0, #1
|
||||
str r0, [r5, #0x74]
|
||||
movs r1, #1
|
||||
rsbs r1, r1, #0
|
||||
cmp r0, r1
|
||||
beq _08070260
|
||||
ldr r0, [r5, #0x78]
|
||||
subs r0, #1
|
||||
str r0, [r5, #0x78]
|
||||
cmp r0, r1
|
||||
bne _08070268
|
||||
_08070260:
|
||||
adds r0, r5, #0
|
||||
bl sub_08070458
|
||||
b _0807037A
|
||||
_08070268:
|
||||
adds r0, r5, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r5, #0
|
||||
bl LinearMoveUpdate
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #0
|
||||
bne _08070280
|
||||
adds r0, r5, #0
|
||||
bl sub_0800451C
|
||||
_08070280:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r7, _08070354 @ =gRoomControls
|
||||
ldrh r1, [r7, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
movs r6, #0x3f
|
||||
ands r0, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r5, r2]
|
||||
ldrh r2, [r7, #8]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r6
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
ldr r1, _08070358 @ =gPlayerEntity
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
movs r2, #0x80
|
||||
bl sub_080002F0
|
||||
cmp r0, #0
|
||||
bne _0807036A
|
||||
ldr r1, _0807035C @ =gUnk_08003E44
|
||||
movs r3, #0x2e
|
||||
ldrsh r2, [r5, r3]
|
||||
movs r0, #0x32
|
||||
ldrsh r3, [r5, r0]
|
||||
adds r0, r5, #0
|
||||
bl sub_080040D8
|
||||
cmp r0, #0
|
||||
bne _08070364
|
||||
adds r0, r5, #0
|
||||
bl sub_080002B8
|
||||
cmp r0, #0x19
|
||||
bne _0807036A
|
||||
movs r0, #4
|
||||
strb r0, [r5, #0xc]
|
||||
ldrb r1, [r5, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x10]
|
||||
ldrh r2, [r5, #0x2e]
|
||||
movs r1, #0x10
|
||||
rsbs r1, r1, #0
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
movs r2, #8
|
||||
orrs r0, r2
|
||||
strh r0, [r5, #0x2e]
|
||||
ldrh r0, [r5, #0x32]
|
||||
ands r1, r0
|
||||
orrs r1, r2
|
||||
strh r1, [r5, #0x32]
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r7, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r5, r2]
|
||||
ldrh r2, [r7, #8]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r6
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x38
|
||||
ldrb r1, [r4]
|
||||
bl GetTileIndex
|
||||
str r0, [r5, #0x7c]
|
||||
adds r0, r5, #0
|
||||
movs r1, #0x14
|
||||
bl InitializeAnimation
|
||||
ldr r0, _08070360 @ =0x00004020
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r5, r3]
|
||||
ldrh r2, [r7, #6]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r6
|
||||
movs r3, #0x32
|
||||
ldrsh r2, [r5, r3]
|
||||
ldrh r3, [r7, #8]
|
||||
subs r2, r2, r3
|
||||
asrs r2, r2, #4
|
||||
ands r2, r6
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
b _0807037A
|
||||
.align 2, 0
|
||||
_08070354: .4byte gRoomControls
|
||||
_08070358: .4byte gPlayerEntity
|
||||
_0807035C: .4byte gUnk_08003E44
|
||||
_08070360: .4byte 0x00004020
|
||||
_08070364:
|
||||
adds r0, r5, #0
|
||||
bl sub_08070458
|
||||
_0807036A:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0807037A
|
||||
adds r0, r5, #0
|
||||
bl sub_08070458
|
||||
_0807037A:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,621 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start BossDoor
|
||||
BossDoor: @ 0x0808C1E4
|
||||
push {lr}
|
||||
ldr r2, _0808C1F8 @ =gUnk_081214D8
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808C1F8: .4byte gUnk_081214D8
|
||||
|
||||
thumb_func_start sub_0808C1FC
|
||||
sub_0808C1FC: @ 0x0808C1FC
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x84
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _0808C2B0 @ =0x0000FFFF
|
||||
cmp r1, r0
|
||||
beq _0808C21A
|
||||
adds r0, r1, #0
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _0808C21A
|
||||
bl DeleteThisEntity
|
||||
_0808C21A:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x86
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _0808C230
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _0808C230
|
||||
bl DeleteThisEntity
|
||||
_0808C230:
|
||||
ldrb r0, [r4, #0xa]
|
||||
lsrs r0, r0, #2
|
||||
strb r0, [r4, #0xb]
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #2
|
||||
strh r0, [r4, #0x24]
|
||||
ldrh r1, [r4, #0x2e]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x70
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r4, #0x32]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x72
|
||||
strh r0, [r1]
|
||||
ldr r0, _0808C2B4 @ =gHitbox_3
|
||||
str r0, [r4, #0x48]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #5
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r1, [r4, #0xa]
|
||||
movs r0, #3
|
||||
ands r0, r1
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x76
|
||||
strh r0, [r5]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, _0808C2B8 @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r6, #0x32
|
||||
ldrsh r0, [r4, r6]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x74
|
||||
strh r1, [r0]
|
||||
ldrb r0, [r4, #0xa]
|
||||
movs r1, #0x1f
|
||||
ands r1, r0
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
ldrb r0, [r4, #0xb]
|
||||
cmp r0, #1
|
||||
beq _0808C2F8
|
||||
cmp r0, #1
|
||||
bgt _0808C2BC
|
||||
cmp r0, #0
|
||||
beq _0808C2C2
|
||||
b _0808C31C
|
||||
.align 2, 0
|
||||
_0808C2B0: .4byte 0x0000FFFF
|
||||
_0808C2B4: .4byte gHitbox_3
|
||||
_0808C2B8: .4byte gRoomControls
|
||||
_0808C2BC:
|
||||
cmp r0, #2
|
||||
beq _0808C306
|
||||
b _0808C31C
|
||||
_0808C2C2:
|
||||
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 r0, r4, #0
|
||||
bl sub_0808C500
|
||||
adds r0, r4, #0
|
||||
bl sub_08078800
|
||||
ldr r1, _0808C2F4 @ =gUnk_0811F740
|
||||
ldrh r0, [r5]
|
||||
adds r0, r0, r1
|
||||
ldrb r2, [r0]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
movs r3, #0
|
||||
bl sub_08078850
|
||||
b _0808C31C
|
||||
.align 2, 0
|
||||
_0808C2F4: .4byte gUnk_0811F740
|
||||
_0808C2F8:
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #8
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
b _0808C31C
|
||||
_0808C306:
|
||||
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 r0, r4, #0
|
||||
bl sub_0808C500
|
||||
_0808C31C:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808C320
|
||||
sub_0808C320: @ 0x0808C320
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x39
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0808C344
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
bl sub_080788E0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl SetFlag
|
||||
_0808C344:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808C348
|
||||
sub_0808C348: @ 0x0808C348
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0808C37C
|
||||
ldr r0, _0808C374 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0808C36A
|
||||
ldr r0, _0808C378 @ =0x00000185
|
||||
bl SoundReq
|
||||
_0808C36A:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
b _0808C382
|
||||
.align 2, 0
|
||||
_0808C374: .4byte gRoomTransition
|
||||
_0808C378: .4byte 0x00000185
|
||||
_0808C37C:
|
||||
adds r0, r4, #0
|
||||
bl sub_0808C4BC
|
||||
_0808C382:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0808C384
|
||||
sub_0808C384: @ 0x0808C384
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl LinearMoveUpdate
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808C3B4
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #3
|
||||
bhi _0808C3B0
|
||||
movs r0, #0x40
|
||||
movs r1, #0
|
||||
movs r2, #1
|
||||
bl sub_08078AC0
|
||||
ldr r1, _0808C3B8 @ =gPlayerEntity
|
||||
ldrb r0, [r4, #0xa]
|
||||
lsls r0, r0, #3
|
||||
strb r0, [r1, #0x15]
|
||||
_0808C3B0:
|
||||
bl DeleteThisEntity
|
||||
_0808C3B4:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0808C3B8: .4byte gPlayerEntity
|
||||
|
||||
thumb_func_start sub_0808C3BC
|
||||
sub_0808C3BC: @ 0x0808C3BC
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x76
|
||||
ldrh r1, [r5]
|
||||
bl sub_08083734
|
||||
cmp r0, #0
|
||||
beq _0808C40E
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0xc
|
||||
strb r0, [r4, #0xe]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #0x10
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r0, [r5]
|
||||
lsls r0, r0, #3
|
||||
movs r1, #0x10
|
||||
eors r0, r1
|
||||
strb r0, [r4, #0x15]
|
||||
ldrh r1, [r5]
|
||||
lsls r1, r1, #1
|
||||
ldr r0, _0808C410 @ =gUnk_081214F4
|
||||
adds r1, r1, r0
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
ldrh r2, [r4, #0x2e]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r4, #0x2e]
|
||||
movs r0, #1
|
||||
ldrsb r0, [r1, r0]
|
||||
ldrh r1, [r4, #0x32]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r4, #0x32]
|
||||
adds r0, r4, #0
|
||||
bl sub_0808C500
|
||||
_0808C40E:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808C410: .4byte gUnk_081214F4
|
||||
|
||||
thumb_func_start sub_0808C414
|
||||
sub_0808C414: @ 0x0808C414
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl LinearMoveUpdate
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r1, r0, #0x18
|
||||
cmp r1, #0
|
||||
bne _0808C49A
|
||||
movs r0, #6
|
||||
strb r0, [r4, #0xc]
|
||||
strh r1, [r4, #0x36]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x70
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r4, #0x2e]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x72
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r4, #0x32]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x76
|
||||
ldrh r0, [r0]
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _0808C49C @ =gUnk_081214FC
|
||||
adds r5, r0, r1
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x11
|
||||
movs r2, #0x40
|
||||
bl CreateFx
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0808C470
|
||||
movs r0, #0
|
||||
ldrsb r0, [r5, r0]
|
||||
ldrh r2, [r1, #0x2e]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0x2e]
|
||||
movs r0, #1
|
||||
ldrsb r0, [r5, r0]
|
||||
ldrh r2, [r1, #0x32]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0x32]
|
||||
_0808C470:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x11
|
||||
movs r2, #0x40
|
||||
bl CreateFx
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0808C494
|
||||
movs r0, #2
|
||||
ldrsb r0, [r5, r0]
|
||||
ldrh r2, [r1, #0x2e]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0x2e]
|
||||
movs r0, #3
|
||||
ldrsb r0, [r5, r0]
|
||||
ldrh r2, [r1, #0x32]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0x32]
|
||||
_0808C494:
|
||||
ldr r0, _0808C4A0 @ =0x0000010B
|
||||
bl EnqueueSFX
|
||||
_0808C49A:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808C49C: .4byte gUnk_081214FC
|
||||
_0808C4A0: .4byte 0x0000010B
|
||||
|
||||
thumb_func_start sub_0808C4A4
|
||||
sub_0808C4A4: @ 0x0808C4A4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _0808C4B8
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
_0808C4B8:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808C4BC
|
||||
sub_0808C4BC: @ 0x0808C4BC
|
||||
push {lr}
|
||||
movs r1, #3
|
||||
strb r1, [r0, #0xc]
|
||||
movs r1, #0xc
|
||||
strb r1, [r0, #0xe]
|
||||
adds r2, r0, #0
|
||||
adds r2, #0x76
|
||||
ldrh r1, [r2]
|
||||
lsls r1, r1, #3
|
||||
strb r1, [r0, #0x15]
|
||||
ldrh r2, [r2]
|
||||
lsls r2, r2, #1
|
||||
ldr r1, _0808C4F8 @ =gUnk_0812150C
|
||||
adds r2, r2, r1
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
ldrh r3, [r0, #0x2e]
|
||||
adds r1, r1, r3
|
||||
strh r1, [r0, #0x2e]
|
||||
movs r1, #1
|
||||
ldrsb r1, [r2, r1]
|
||||
ldrh r2, [r0, #0x32]
|
||||
adds r1, r1, r2
|
||||
strh r1, [r0, #0x32]
|
||||
bl sub_0808C5D0
|
||||
ldr r0, _0808C4FC @ =0x0000010B
|
||||
bl SoundReq
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808C4F8: .4byte gUnk_0812150C
|
||||
_0808C4FC: .4byte 0x0000010B
|
||||
|
||||
thumb_func_start sub_0808C500
|
||||
sub_0808C500: @ 0x0808C500
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x76
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0808C510
|
||||
cmp r0, #2
|
||||
bne _0808C570
|
||||
_0808C510:
|
||||
adds r6, r4, #0
|
||||
adds r6, #0x74
|
||||
ldrh r0, [r6]
|
||||
subs r0, #1
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7a
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
adds r0, #1
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7c
|
||||
strh r0, [r1]
|
||||
ldr r4, _0808C56C @ =0x00004022
|
||||
ldrh r1, [r6]
|
||||
subs r1, #1
|
||||
ldrb r2, [r5]
|
||||
adds r0, r4, #0
|
||||
bl SetTile
|
||||
ldrh r1, [r6]
|
||||
ldrb r2, [r5]
|
||||
adds r0, r4, #0
|
||||
bl SetTile
|
||||
ldrh r1, [r6]
|
||||
adds r1, #1
|
||||
ldrb r2, [r5]
|
||||
adds r0, r4, #0
|
||||
bl SetTile
|
||||
b _0808C5CA
|
||||
.align 2, 0
|
||||
_0808C56C: .4byte 0x00004022
|
||||
_0808C570:
|
||||
adds r6, r4, #0
|
||||
adds r6, #0x74
|
||||
ldrh r0, [r6]
|
||||
subs r0, #0x40
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7a
|
||||
strh r0, [r1]
|
||||
ldrh r0, [r6]
|
||||
adds r0, #0x40
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7c
|
||||
strh r0, [r1]
|
||||
ldr r4, _0808C5CC @ =0x00004022
|
||||
ldrh r1, [r6]
|
||||
subs r1, #0x40
|
||||
ldrb r2, [r5]
|
||||
adds r0, r4, #0
|
||||
bl SetTile
|
||||
ldrh r1, [r6]
|
||||
ldrb r2, [r5]
|
||||
adds r0, r4, #0
|
||||
bl SetTile
|
||||
ldrh r1, [r6]
|
||||
adds r1, #0x40
|
||||
ldrb r2, [r5]
|
||||
adds r0, r4, #0
|
||||
bl SetTile
|
||||
_0808C5CA:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0808C5CC: .4byte 0x00004022
|
||||
|
||||
thumb_func_start sub_0808C5D0
|
||||
sub_0808C5D0: @ 0x0808C5D0
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
adds r0, #0x76
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0808C5E0
|
||||
cmp r0, #2
|
||||
bne _0808C618
|
||||
_0808C5E0:
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x78
|
||||
ldrh r0, [r0]
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x74
|
||||
ldrh r1, [r5]
|
||||
subs r1, #1
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x38
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x7a
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r5]
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x7c
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r5]
|
||||
adds r1, #1
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
b _0808C64E
|
||||
_0808C618:
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x78
|
||||
ldrh r0, [r0]
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x74
|
||||
ldrh r1, [r5]
|
||||
subs r1, #0x40
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x38
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x7a
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r5]
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x7c
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r5]
|
||||
adds r1, #0x40
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
_0808C64E:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_0808C650
|
||||
sub_0808C650: @ 0x0808C650
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r2, r1, #0
|
||||
movs r0, #0x3a
|
||||
movs r1, #0
|
||||
bl CreateObject
|
||||
cmp r0, #0
|
||||
beq _0808C670
|
||||
str r4, [r0, #0x50]
|
||||
ldr r1, _0808C66C @ =gUnk_02036BB8
|
||||
movs r0, #0
|
||||
b _0808C674
|
||||
.align 2, 0
|
||||
_0808C66C: .4byte gUnk_02036BB8
|
||||
_0808C670:
|
||||
ldr r1, _0808C678 @ =gUnk_02036BB8
|
||||
movs r0, #1
|
||||
_0808C674:
|
||||
str r0, [r1]
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0808C678: .4byte gUnk_02036BB8
|
||||
|
||||
thumb_func_start sub_0808C67C
|
||||
sub_0808C67C: @ 0x0808C67C
|
||||
ldr r0, _0808C684 @ =gUnk_02036BB8
|
||||
ldr r0, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0808C684: .4byte gUnk_02036BB8
|
||||
|
||||
thumb_func_start sub_0808C688
|
||||
sub_0808C688: @ 0x0808C688
|
||||
push {lr}
|
||||
bl sub_0801E104
|
||||
ldr r1, _0808C698 @ =gUnk_02036BB8
|
||||
movs r0, #1
|
||||
str r0, [r1]
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808C698: .4byte gUnk_02036BB8
|
||||
@@ -1,649 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_08083E4C
|
||||
sub_08083E4C: @ 0x08083E4C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, _08083E80 @ =gUnk_0811F8B0
|
||||
str r0, [r4, #0x48]
|
||||
ldrb r0, [r4, #0xb]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
beq _08083E84
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
bl sub_080842D8
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitializeAnimation
|
||||
b _08083EAC
|
||||
.align 2, 0
|
||||
_08083E80: .4byte gUnk_0811F8B0
|
||||
_08083E84:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
bne _08083E98
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #4
|
||||
bne _08083EA0
|
||||
_08083E98:
|
||||
adds r0, r4, #0
|
||||
bl sub_08083E20
|
||||
b _08083EA4
|
||||
_08083EA0:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
_08083EA4:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
_08083EAC:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08083EB0
|
||||
sub_08083EB0: @ 0x08083EB0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _08083F0A
|
||||
ldr r1, _08083F0C @ =gScreen
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x66
|
||||
movs r3, #0
|
||||
movs r0, #0xf4
|
||||
lsls r0, r0, #4
|
||||
strh r0, [r2]
|
||||
adds r1, #0x68
|
||||
adds r0, #0xc0
|
||||
strh r0, [r1]
|
||||
ldr r1, _08083F10 @ =gUnk_02034490
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
strb r3, [r4, #0xd]
|
||||
movs r0, #0x1e
|
||||
strb r0, [r4, #0xf]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #0x22
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r1, [r4, #0x19]
|
||||
movs r0, #0xd
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x19]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1e
|
||||
bl RequestPriorityDuration
|
||||
bl sub_0805BC4C
|
||||
_08083F0A:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08083F0C: .4byte gScreen
|
||||
_08083F10: .4byte gUnk_02034490
|
||||
|
||||
thumb_func_start sub_08083F14
|
||||
sub_08083F14: @ 0x08083F14
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0x1e
|
||||
bl SetPriorityTimer
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #0
|
||||
beq _08083F78
|
||||
cmp r0, #1
|
||||
beq _08083FA4
|
||||
adds r0, r4, #0
|
||||
bl sub_0800445C
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
movs r2, #2
|
||||
bl CreateMagicSparkles
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
movs r2, #0xff
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08083FE6
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
ldrb r0, [r4, #0xf]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
ands r2, r0
|
||||
ldr r3, _08083F74 @ =gScreen
|
||||
movs r0, #0x10
|
||||
subs r0, r0, r2
|
||||
lsls r0, r0, #8
|
||||
movs r5, #0xff
|
||||
lsls r5, r5, #8
|
||||
adds r1, r5, #0
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x68
|
||||
strh r0, [r1]
|
||||
cmp r0, #0x10
|
||||
bne _08083FE6
|
||||
b _08083FCC
|
||||
.align 2, 0
|
||||
_08083F74: .4byte gScreen
|
||||
_08083F78:
|
||||
ldr r5, _08083FA0 @ =gPlayerEntity
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
movs r2, #0x10
|
||||
movs r3, #8
|
||||
bl EntityInRectRadius
|
||||
cmp r0, #0
|
||||
beq _08083F98
|
||||
movs r0, #0x10
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
bl sub_08078AC0
|
||||
movs r0, #0x10
|
||||
strb r0, [r5, #0x15]
|
||||
_08083F98:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
b _08083FE6
|
||||
.align 2, 0
|
||||
_08083FA0: .4byte gPlayerEntity
|
||||
_08083FA4:
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #5
|
||||
beq _08083FB2
|
||||
ldr r0, _08083FC8 @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0xc]
|
||||
cmp r0, #1
|
||||
bne _08083FE6
|
||||
_08083FB2:
|
||||
movs r1, #0
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
strb r1, [r4, #0xf]
|
||||
movs r0, #0xa5
|
||||
lsls r0, r0, #1
|
||||
bl SoundReq
|
||||
b _08083FE6
|
||||
.align 2, 0
|
||||
_08083FC8: .4byte gPlayerEntity
|
||||
_08083FCC:
|
||||
ldr r1, _08083FE8 @ =gUnk_02034490
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x66
|
||||
movs r0, #0
|
||||
strh r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_08083E20
|
||||
movs r0, #0x73
|
||||
bl SoundReq
|
||||
_08083FE6:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08083FE8: .4byte gUnk_02034490
|
||||
|
||||
thumb_func_start sub_08083FEC
|
||||
sub_08083FEC: @ 0x08083FEC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0800445C
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x39
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0808401E
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x1e
|
||||
strb r0, [r4, #0xf]
|
||||
adds r0, r4, #0
|
||||
bl sub_080788E0
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x3c
|
||||
bl RequestPriorityDuration
|
||||
ldr r0, _08084020 @ =0x0000011B
|
||||
bl SoundReq
|
||||
_0808401E:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08084020: .4byte 0x0000011B
|
||||
|
||||
thumb_func_start sub_08084024
|
||||
sub_08084024: @ 0x08084024
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0800445C
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08084070
|
||||
ldrb r0, [r4, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808406A
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0x18
|
||||
bne _08084060
|
||||
movs r0, #6
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0xf]
|
||||
b _0808406A
|
||||
_08084060:
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r0, [r4, #0xb]
|
||||
bl sub_08084074
|
||||
_0808406A:
|
||||
ldrb r0, [r4, #0xb]
|
||||
bl SetLocalFlag
|
||||
_08084070:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08084074
|
||||
sub_08084074: @ 0x08084074
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #3
|
||||
bl GetCurrentRoomProperty
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080840A4
|
||||
b _0808409E
|
||||
_08084086:
|
||||
cmp r0, #3
|
||||
bne _0808409C
|
||||
ldrb r0, [r1, #1]
|
||||
cmp r4, r0
|
||||
bne _0808409C
|
||||
ldrb r0, [r1, #2]
|
||||
ldrb r1, [r1, #3]
|
||||
movs r2, #0
|
||||
bl CreateItemEntity
|
||||
b _080840A4
|
||||
_0808409C:
|
||||
adds r1, #8
|
||||
_0808409E:
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _08084086
|
||||
_080840A4:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080840A8
|
||||
sub_080840A8: @ 0x080840A8
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r6, r0, #0
|
||||
adds r7, r1, #0
|
||||
ldr r4, _0808413C @ =gUnk_0811F838
|
||||
bl Random
|
||||
movs r1, #7
|
||||
ands r1, r0
|
||||
adds r1, r1, r4
|
||||
ldrb r1, [r1]
|
||||
movs r0, #0
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _08084138
|
||||
movs r0, #6
|
||||
strb r0, [r5, #0xe]
|
||||
bl Random
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
adds r0, #0xc
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x15]
|
||||
bl Random
|
||||
movs r1, #0xf
|
||||
ands r1, r0
|
||||
lsls r1, r1, #1
|
||||
adds r1, #0x20
|
||||
strh r1, [r5, #0x24]
|
||||
bl Random
|
||||
ldr r1, _08084140 @ =gUnk_0811F840
|
||||
movs r4, #3
|
||||
ands r0, r4
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
str r0, [r5, #0x20]
|
||||
bl Random
|
||||
ldr r1, _08084144 @ =gUnk_0811F850
|
||||
ands r0, r4
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
adds r0, r0, r6
|
||||
strh r0, [r5, #0x2e]
|
||||
adds r0, r7, #1
|
||||
strh r0, [r5, #0x32]
|
||||
ldr r0, _08084148 @ =0x0000FFF8
|
||||
strh r0, [r5, #0x36]
|
||||
adds r0, r5, #0
|
||||
bl ResolveCollisionLayer
|
||||
adds r0, r5, #0
|
||||
movs r1, #0x11
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _08084138
|
||||
movs r0, #0x92
|
||||
lsls r0, r0, #1
|
||||
bl SoundReq
|
||||
_08084138:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0808413C: .4byte gUnk_0811F838
|
||||
_08084140: .4byte gUnk_0811F840
|
||||
_08084144: .4byte gUnk_0811F850
|
||||
_08084148: .4byte 0x0000FFF8
|
||||
|
||||
thumb_func_start sub_0808414C
|
||||
sub_0808414C: @ 0x0808414C
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
ldrb r0, [r1, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r1, #0xe]
|
||||
movs r2, #0xff
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08084180
|
||||
movs r0, #8
|
||||
strb r0, [r1, #0xe]
|
||||
ldrb r0, [r1, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r1, #0xf]
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _0808417C
|
||||
movs r2, #0x2e
|
||||
ldrsh r0, [r1, r2]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r1, r2]
|
||||
bl sub_080840A8
|
||||
b _08084180
|
||||
_0808417C:
|
||||
movs r0, #5
|
||||
strb r0, [r1, #0xc]
|
||||
_08084180:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08084184
|
||||
sub_08084184: @ 0x08084184
|
||||
push {lr}
|
||||
bl sub_0800445C
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start nullsub_114
|
||||
nullsub_114: @ 0x0808418C
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08084190
|
||||
sub_08084190: @ 0x08084190
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, _08084204 @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r5, #0x32
|
||||
ldrsh r0, [r4, r5]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x70
|
||||
strh r1, [r5]
|
||||
ldr r0, _08084208 @ =gUnk_0811F8A8
|
||||
str r0, [r4, #0x48]
|
||||
adds r0, r4, #0
|
||||
bl GetTileTypeByEntity
|
||||
cmp r0, #0x74
|
||||
bne _080841D2
|
||||
bl DeleteThisEntity
|
||||
_080841D2:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _08084200
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
ldrh r1, [r5]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x38
|
||||
ldrb r2, [r0]
|
||||
movs r0, #0x73
|
||||
bl sub_0807B7D8
|
||||
ldrb r1, [r4, #0xa]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08084200
|
||||
bl DeleteThisEntity
|
||||
_08084200:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08084204: .4byte gRoomControls
|
||||
_08084208: .4byte gUnk_0811F8A8
|
||||
|
||||
thumb_func_start sub_0808420C
|
||||
sub_0808420C: @ 0x0808420C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _08084220
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
_08084220:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08084224
|
||||
sub_08084224: @ 0x08084224
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x70
|
||||
ldrh r1, [r0]
|
||||
subs r0, #0x38
|
||||
ldrb r2, [r0]
|
||||
movs r0, #0x73
|
||||
bl sub_0807B7D8
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #7
|
||||
bgt _0808424C
|
||||
cmp r0, #6
|
||||
blt _0808424C
|
||||
ldr r0, _08084248 @ =0x00000215
|
||||
bl SoundReq
|
||||
b _08084258
|
||||
.align 2, 0
|
||||
_08084248: .4byte 0x00000215
|
||||
_0808424C:
|
||||
movs r0, #0x72
|
||||
bl SoundReq
|
||||
adds r0, r4, #0
|
||||
bl CreateDust
|
||||
_08084258:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0xe]
|
||||
lsls r0, r1, #4
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x72
|
||||
strh r0, [r1]
|
||||
ldrb r1, [r4, #0xa]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08084278
|
||||
bl DeleteThisEntity
|
||||
_08084278:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808427C
|
||||
sub_0808427C: @ 0x0808427C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #1
|
||||
beq _0808428A
|
||||
cmp r0, #7
|
||||
bne _080842D4
|
||||
_0808428A:
|
||||
adds r0, r4, #0
|
||||
bl GetTileTypeByEntity
|
||||
cmp r0, #0x74
|
||||
bne _0808429C
|
||||
adds r0, r4, #0
|
||||
bl DeleteEntity
|
||||
b _080842D4
|
||||
_0808429C:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
bne _080842D4
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x72
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
beq _080842BA
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
b _080842D4
|
||||
_080842BA:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x70
|
||||
ldrh r0, [r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl sub_0807BA8C
|
||||
adds r0, r4, #0
|
||||
bl CreateDust
|
||||
_080842D4:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080842D8
|
||||
sub_080842D8: @ 0x080842D8
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldrh r2, [r5, #0x2e]
|
||||
movs r1, #8
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
lsls r0, r0, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
lsrs r2, r0, #0x1f
|
||||
ldrh r0, [r5, #0x32]
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
beq _080842F6
|
||||
adds r2, #2
|
||||
_080842F6:
|
||||
ldr r1, _0808432C @ =gUnk_0811F898
|
||||
lsls r0, r2, #2
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r5, r2]
|
||||
ldr r3, _08084330 @ =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_0801AF18
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0808432C: .4byte gUnk_0811F898
|
||||
_08084330: .4byte gRoomControls
|
||||
@@ -1,560 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start DoubleBookshelf
|
||||
DoubleBookshelf: @ 0x0809AF5C
|
||||
push {lr}
|
||||
ldr r2, _0809AF70 @ =gUnk_08123D58
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0809AF70: .4byte gUnk_08123D58
|
||||
|
||||
thumb_func_start sub_0809AF74
|
||||
sub_0809AF74: @ 0x0809AF74
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xa]
|
||||
strb r0, [r4, #0x1e]
|
||||
movs r0, #0x2e
|
||||
ldrsh r2, [r4, r0]
|
||||
ldr r1, _0809AFBC @ =gRoomControls
|
||||
ldrh r0, [r1, #6]
|
||||
subs r2, r2, r0
|
||||
asrs r2, r2, #4
|
||||
movs r3, #0x3f
|
||||
ands r2, r3
|
||||
movs r5, #0x32
|
||||
ldrsh r0, [r4, r5]
|
||||
ldrh r1, [r1, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r2, r0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x80
|
||||
movs r6, #0
|
||||
strh r2, [r0]
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
beq _0809AFC4
|
||||
movs r1, #1
|
||||
strb r1, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x84
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0809AFC0
|
||||
strb r6, [r4, #0xd]
|
||||
b _0809B02C
|
||||
.align 2, 0
|
||||
_0809AFBC: .4byte gRoomControls
|
||||
_0809AFC0:
|
||||
strb r1, [r4, #0xd]
|
||||
b _0809B02C
|
||||
_0809AFC4:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xd]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x84
|
||||
strb r6, [r0]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
movs r0, #0x8b
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _0809B026
|
||||
str r4, [r5, #0x50]
|
||||
str r5, [r4, #0x54]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
bne _0809B010
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #0xd
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
adds r2, r3, #0
|
||||
bl PositionRelative
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x84
|
||||
strb r6, [r0]
|
||||
b _0809B026
|
||||
_0809B010:
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #0xd
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
movs r2, #0
|
||||
bl PositionRelative
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x84
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
_0809B026:
|
||||
adds r0, r4, #0
|
||||
bl sub_0809B334
|
||||
_0809B02C:
|
||||
adds r0, r4, #0
|
||||
bl sub_0809B0B0
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_0809B034
|
||||
sub_0809B034: @ 0x0809B034
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x82
|
||||
ldrh r0, [r0]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl GetTileType
|
||||
adds r0, r4, #0
|
||||
bl sub_0809B234
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0809B050
|
||||
sub_0809B050: @ 0x0809B050
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl LinearMoveUpdate
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0809B0A2
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, _0809B0A4 @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r5, #0x32
|
||||
ldrsh r0, [r4, r5]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x80
|
||||
strh r1, [r0]
|
||||
movs r0, #0
|
||||
bl SetPlayerControl
|
||||
adds r0, r4, #0
|
||||
bl sub_0809B0B0
|
||||
movs r0, #0x86
|
||||
lsls r0, r0, #1
|
||||
bl EnqueueSFX
|
||||
_0809B0A2:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0809B0A4: .4byte gRoomControls
|
||||
|
||||
thumb_func_start sub_0809B0A8
|
||||
sub_0809B0A8: @ 0x0809B0A8
|
||||
push {lr}
|
||||
bl sub_0809B234
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0809B0B0
|
||||
sub_0809B0B0: @ 0x0809B0B0
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
mov r8, r0
|
||||
adds r0, #0x80
|
||||
ldrh r0, [r0]
|
||||
subs r6, r0, #1
|
||||
mov r0, r8
|
||||
adds r0, #0x38
|
||||
ldrb r7, [r0]
|
||||
mov r1, r8
|
||||
ldrb r0, [r1, #0xd]
|
||||
cmp r0, #4
|
||||
bls _0809B0CE
|
||||
b _0809B228
|
||||
_0809B0CE:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _0809B0D8 @ =_0809B0DC
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0809B0D8: .4byte _0809B0DC
|
||||
_0809B0DC: @ jump table
|
||||
.4byte _0809B0F0 @ case 0
|
||||
.4byte _0809B130 @ case 1
|
||||
.4byte _0809B178 @ case 2
|
||||
.4byte _0809B1C0 @ case 3
|
||||
.4byte _0809B208 @ case 4
|
||||
_0809B0F0:
|
||||
mov r1, r8
|
||||
adds r1, #0x84
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
adds r5, r6, #2
|
||||
mov r0, r8
|
||||
adds r0, #0x82
|
||||
strh r5, [r0]
|
||||
ldr r0, _0809B128 @ =0x00004082
|
||||
subs r1, r6, #1
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
ldr r4, _0809B12C @ =0x00004022
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
adds r1, r6, #1
|
||||
adds r0, r4, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
b _0809B162
|
||||
.align 2, 0
|
||||
_0809B128: .4byte 0x00004082
|
||||
_0809B12C: .4byte 0x00004022
|
||||
_0809B130:
|
||||
mov r1, r8
|
||||
adds r1, #0x84
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
mov r0, r8
|
||||
adds r0, #0x82
|
||||
strh r6, [r0]
|
||||
ldr r0, _0809B16C @ =0x0000405F
|
||||
adds r1, r6, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
ldr r4, _0809B170 @ =0x00004022
|
||||
adds r1, r6, #1
|
||||
adds r0, r4, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
adds r1, r6, #2
|
||||
adds r0, r4, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
ldr r0, _0809B174 @ =0x00004082
|
||||
adds r1, r6, #3
|
||||
_0809B162:
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
b _0809B228
|
||||
.align 2, 0
|
||||
_0809B16C: .4byte 0x0000405F
|
||||
_0809B170: .4byte 0x00004022
|
||||
_0809B174: .4byte 0x00004082
|
||||
_0809B178:
|
||||
mov r1, r8
|
||||
adds r1, #0x84
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
mov r0, r8
|
||||
adds r0, #0x82
|
||||
strh r6, [r0]
|
||||
ldr r0, _0809B1B4 @ =0x00004082
|
||||
adds r1, r6, #3
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
ldr r0, _0809B1B8 @ =0x00004022
|
||||
adds r1, r6, #2
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
ldr r0, _0809B1BC @ =0x0000405F
|
||||
adds r1, r6, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
mov r1, r8
|
||||
ldr r0, [r1, #0x50]
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl SetFlag
|
||||
b _0809B228
|
||||
.align 2, 0
|
||||
_0809B1B4: .4byte 0x00004082
|
||||
_0809B1B8: .4byte 0x00004022
|
||||
_0809B1BC: .4byte 0x0000405F
|
||||
_0809B1C0:
|
||||
mov r1, r8
|
||||
adds r1, #0x84
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
adds r4, r6, #2
|
||||
mov r0, r8
|
||||
adds r0, #0x82
|
||||
strh r4, [r0]
|
||||
ldr r0, _0809B1FC @ =0x00004082
|
||||
subs r1, r6, #1
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
ldr r0, _0809B200 @ =0x00004022
|
||||
adds r1, r6, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
ldr r0, _0809B204 @ =0x0000405F
|
||||
adds r1, r4, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
mov r1, r8
|
||||
ldr r0, [r1, #0x50]
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl ClearFlag
|
||||
b _0809B228
|
||||
.align 2, 0
|
||||
_0809B1FC: .4byte 0x00004082
|
||||
_0809B200: .4byte 0x00004022
|
||||
_0809B204: .4byte 0x0000405F
|
||||
_0809B208:
|
||||
ldr r4, _0809B230 @ =0x00004022
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
adds r1, r6, #1
|
||||
adds r0, r4, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
adds r1, r6, #2
|
||||
adds r0, r4, #0
|
||||
adds r2, r7, #0
|
||||
bl SetTile
|
||||
_0809B228:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0809B230: .4byte 0x00004022
|
||||
|
||||
thumb_func_start sub_0809B234
|
||||
sub_0809B234: @ 0x0809B234
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
beq _0809B26A
|
||||
ldr r2, [r4, #0x50]
|
||||
ldrb r1, [r2, #0x19]
|
||||
lsrs r1, r1, #6
|
||||
lsls r1, r1, #6
|
||||
ldrb r3, [r4, #0x19]
|
||||
movs r0, #0x3f
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x19]
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
lsls r1, r1, #0x1d
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x29
|
||||
lsrs r1, r1, #0x1d
|
||||
ldrb r2, [r3]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
b _0809B270
|
||||
_0809B26A:
|
||||
adds r0, r4, #0
|
||||
bl sub_0809B274
|
||||
_0809B270:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0809B274
|
||||
sub_0809B274: @ 0x0809B274
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r3, _0809B290 @ =gPlayerEntity
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x84
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #1
|
||||
beq _0809B2BA
|
||||
cmp r0, #1
|
||||
bgt _0809B294
|
||||
cmp r0, #0
|
||||
beq _0809B29A
|
||||
b _0809B332
|
||||
.align 2, 0
|
||||
_0809B290: .4byte gPlayerEntity
|
||||
_0809B294:
|
||||
cmp r0, #2
|
||||
beq _0809B30C
|
||||
b _0809B332
|
||||
_0809B29A:
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r3, r1]
|
||||
adds r0, #0x14
|
||||
movs r3, #0x32
|
||||
ldrsh r1, [r4, r3]
|
||||
cmp r0, r1
|
||||
bge _0809B332
|
||||
movs r0, #1
|
||||
strb r0, [r2]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
subs r0, #9
|
||||
ands r0, r1
|
||||
movs r1, #5
|
||||
b _0809B306
|
||||
_0809B2BA:
|
||||
movs r5, #0x2e
|
||||
ldrsh r0, [r3, r5]
|
||||
adds r0, #0x1c
|
||||
movs r5, #0x2e
|
||||
ldrsh r1, [r4, r5]
|
||||
cmp r0, r1
|
||||
ble _0809B2E8
|
||||
movs r0, #2
|
||||
strb r0, [r2]
|
||||
ldr r0, _0809B2E4 @ =0x00004022
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x80
|
||||
ldrh r1, [r1]
|
||||
adds r1, #2
|
||||
movs r2, #1
|
||||
bl SetTile
|
||||
ldr r0, [r4, #0x54]
|
||||
bl sub_0809B358
|
||||
b _0809B332
|
||||
.align 2, 0
|
||||
_0809B2E4: .4byte 0x00004022
|
||||
_0809B2E8:
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r3, r1]
|
||||
adds r0, #0x10
|
||||
movs r3, #0x32
|
||||
ldrsh r1, [r4, r3]
|
||||
cmp r0, r1
|
||||
ble _0809B332
|
||||
movs r0, #0
|
||||
strb r0, [r2]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
subs r0, #8
|
||||
ands r0, r1
|
||||
movs r1, #4
|
||||
_0809B306:
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
b _0809B332
|
||||
_0809B30C:
|
||||
movs r5, #0x2e
|
||||
ldrsh r0, [r3, r5]
|
||||
adds r0, #0x20
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r4, r3]
|
||||
cmp r0, r1
|
||||
bge _0809B332
|
||||
movs r0, #1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x80
|
||||
ldrh r0, [r0]
|
||||
adds r0, #2
|
||||
movs r1, #1
|
||||
bl sub_0807BA8C
|
||||
ldr r0, [r4, #0x54]
|
||||
bl sub_0809B38C
|
||||
_0809B332:
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_0809B334
|
||||
sub_0809B334: @ 0x0809B334
|
||||
push {r4, r5, lr}
|
||||
adds r0, #0x80
|
||||
ldrh r0, [r0]
|
||||
adds r4, r0, #0
|
||||
subs r4, #0x81
|
||||
movs r5, #2
|
||||
_0809B340:
|
||||
ldr r0, _0809B354 @ =0x00004026
|
||||
adds r1, r4, #0
|
||||
movs r2, #1
|
||||
bl SetTile
|
||||
subs r5, #1
|
||||
adds r4, #1
|
||||
cmp r5, #0
|
||||
bge _0809B340
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0809B354: .4byte 0x00004026
|
||||
|
||||
thumb_func_start sub_0809B358
|
||||
sub_0809B358: @ 0x0809B358
|
||||
push {r4, r5, r6, lr}
|
||||
adds r1, r0, #0
|
||||
adds r1, #0x84
|
||||
ldrb r1, [r1]
|
||||
lsls r1, r1, #1
|
||||
ldr r2, _0809B388 @ =gUnk_08123D68
|
||||
adds r5, r1, r2
|
||||
adds r0, #0x80
|
||||
ldrh r0, [r0]
|
||||
adds r4, r0, #0
|
||||
subs r4, #0x82
|
||||
movs r6, #4
|
||||
_0809B370:
|
||||
ldrh r0, [r5]
|
||||
adds r1, r4, #0
|
||||
movs r2, #1
|
||||
bl SetTile
|
||||
subs r6, #1
|
||||
adds r4, #1
|
||||
adds r5, #4
|
||||
cmp r6, #0
|
||||
bge _0809B370
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0809B388: .4byte gUnk_08123D68
|
||||
|
||||
thumb_func_start sub_0809B38C
|
||||
sub_0809B38C: @ 0x0809B38C
|
||||
push {r4, r5, lr}
|
||||
adds r0, #0x80
|
||||
ldrh r0, [r0]
|
||||
adds r4, r0, #0
|
||||
subs r4, #0x82
|
||||
movs r5, #4
|
||||
_0809B398:
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_0807BA8C
|
||||
subs r5, #1
|
||||
adds r4, #1
|
||||
cmp r5, #0
|
||||
bge _0809B398
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
@@ -1,642 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Fairy
|
||||
Fairy: @ 0x0808D674
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0808D750
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0x1f
|
||||
bhi _0808D750
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _0808D698 @ =_0808D69C
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0808D698: .4byte _0808D69C
|
||||
_0808D69C: @ jump table
|
||||
.4byte _0808D740 @ case 0
|
||||
.4byte _0808D740 @ case 1
|
||||
.4byte _0808D750 @ case 2
|
||||
.4byte _0808D750 @ case 3
|
||||
.4byte _0808D740 @ case 4
|
||||
.4byte _0808D740 @ case 5
|
||||
.4byte _0808D740 @ case 6
|
||||
.4byte _0808D750 @ case 7
|
||||
.4byte _0808D740 @ case 8
|
||||
.4byte _0808D740 @ case 9
|
||||
.4byte _0808D740 @ case 10
|
||||
.4byte _0808D740 @ case 11
|
||||
.4byte _0808D740 @ case 12
|
||||
.4byte _0808D750 @ case 13
|
||||
.4byte _0808D750 @ case 14
|
||||
.4byte _0808D750 @ case 15
|
||||
.4byte _0808D750 @ case 16
|
||||
.4byte _0808D750 @ case 17
|
||||
.4byte _0808D750 @ case 18
|
||||
.4byte _0808D748 @ case 19
|
||||
.4byte _0808D71C @ case 20
|
||||
.4byte _0808D750 @ case 21
|
||||
.4byte _0808D750 @ case 22
|
||||
.4byte _0808D750 @ case 23
|
||||
.4byte _0808D750 @ case 24
|
||||
.4byte _0808D750 @ case 25
|
||||
.4byte _0808D750 @ case 26
|
||||
.4byte _0808D750 @ case 27
|
||||
.4byte _0808D750 @ case 28
|
||||
.4byte _0808D750 @ case 29
|
||||
.4byte _0808D740 @ case 30
|
||||
.4byte _0808D73C @ case 31
|
||||
_0808D71C:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldr r0, [r4, #0x4c]
|
||||
str r0, [r4, #0x54]
|
||||
b _0808D750
|
||||
_0808D73C:
|
||||
bl DeleteThisEntity
|
||||
_0808D740:
|
||||
adds r0, r4, #0
|
||||
bl sub_0808DAD0
|
||||
b _0808D750
|
||||
_0808D748:
|
||||
adds r0, r4, #0
|
||||
bl sub_0808D76C
|
||||
b _0808D766
|
||||
_0808D750:
|
||||
ldr r0, _0808D768 @ =gUnk_08121784
|
||||
ldrb r1, [r4, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
adds r0, r4, #0
|
||||
bl sub_08080CB4
|
||||
_0808D766:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0808D768: .4byte gUnk_08121784
|
||||
|
||||
thumb_func_start sub_0808D76C
|
||||
sub_0808D76C: @ 0x0808D76C
|
||||
push {lr}
|
||||
ldr r2, _0808D780 @ =gUnk_08121798
|
||||
ldrb r1, [r0, #0xd]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808D780: .4byte gUnk_08121798
|
||||
|
||||
thumb_func_start sub_0808D784
|
||||
sub_0808D784: @ 0x0808D784
|
||||
movs r3, #1
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xd]
|
||||
strb r1, [r0, #0x1d]
|
||||
ldrb r2, [r0, #0x18]
|
||||
subs r1, #5
|
||||
ands r1, r2
|
||||
orrs r1, r3
|
||||
strb r1, [r0, #0x18]
|
||||
bx lr
|
||||
|
||||
thumb_func_start sub_0808D798
|
||||
sub_0808D798: @ 0x0808D798
|
||||
push {lr}
|
||||
bl sub_0806F4E8
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0808D7A0
|
||||
sub_0808D7A0: @ 0x0808D7A0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0806F3E4
|
||||
cmp r0, #0
|
||||
beq _0808D7B2
|
||||
adds r0, r4, #0
|
||||
bl sub_0808DB2C
|
||||
_0808D7B2:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0808D7B4
|
||||
sub_0808D7B4: @ 0x0808D7B4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x3c
|
||||
movs r2, #0x17
|
||||
strb r2, [r0]
|
||||
adds r1, #8
|
||||
movs r0, #0x49
|
||||
strb r0, [r1]
|
||||
subs r1, #1
|
||||
movs r0, #7
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x3b
|
||||
strb r2, [r0]
|
||||
adds r1, #6
|
||||
movs r0, #0xff
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808D818 @ =gUnk_080FD1A8
|
||||
str r0, [r4, #0x48]
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0x1c]
|
||||
ldrh r1, [r4, #0x2e]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x74
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r4, #0x32]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
adds r0, r4, #0
|
||||
movs r1, #6
|
||||
bl SetDefaultPriority
|
||||
movs r0, #0x9b
|
||||
lsls r0, r0, #1
|
||||
bl EnqueueSFX
|
||||
ldrb r0, [r4, #0xb]
|
||||
cmp r0, #2
|
||||
beq _0808D834
|
||||
cmp r0, #2
|
||||
bgt _0808D81C
|
||||
cmp r0, #0
|
||||
beq _0808D822
|
||||
b _0808D82E
|
||||
.align 2, 0
|
||||
_0808D818: .4byte gUnk_080FD1A8
|
||||
_0808D81C:
|
||||
cmp r0, #3
|
||||
beq _0808D83C
|
||||
b _0808D82E
|
||||
_0808D822:
|
||||
movs r0, #0xf0
|
||||
lsls r0, r0, #9
|
||||
str r0, [r4, #0x20]
|
||||
ldrh r0, [r4, #0x36]
|
||||
adds r0, #8
|
||||
strh r0, [r4, #0x36]
|
||||
_0808D82E:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
b _0808D842
|
||||
_0808D834:
|
||||
adds r0, r4, #0
|
||||
bl sub_0808DAD0
|
||||
b _0808D842
|
||||
_0808D83C:
|
||||
adds r0, r4, #0
|
||||
bl sub_0808DB2C
|
||||
_0808D842:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0808D844
|
||||
sub_0808D844: @ 0x0808D844
|
||||
push {lr}
|
||||
adds r3, r0, #0
|
||||
ldr r0, [r3, #0x34]
|
||||
ldr r1, _0808D870 @ =0xFFFF2000
|
||||
adds r0, r0, r1
|
||||
str r0, [r3, #0x34]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0808D88A
|
||||
ldrb r0, [r3, #0xe]
|
||||
cmp r0, #0
|
||||
beq _0808D874
|
||||
adds r2, r3, #0
|
||||
adds r2, #0x78
|
||||
ldrh r1, [r2]
|
||||
lsls r0, r1, #4
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r2]
|
||||
b _0808D87E
|
||||
.align 2, 0
|
||||
_0808D870: .4byte 0xFFFF2000
|
||||
_0808D874:
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x78
|
||||
movs r0, #0x96
|
||||
lsls r0, r0, #2
|
||||
strh r0, [r1]
|
||||
_0808D87E:
|
||||
movs r0, #2
|
||||
strb r0, [r3, #0xc]
|
||||
movs r0, #1
|
||||
strb r0, [r3, #0xf]
|
||||
movs r0, #0x80
|
||||
strh r0, [r3, #0x24]
|
||||
_0808D88A:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0808D88C
|
||||
sub_0808D88C: @ 0x0808D88C
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808D910
|
||||
bl Random
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r4, #0x10]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
movs r0, #0x20
|
||||
strb r0, [r4, #0xf]
|
||||
ldr r2, _0808D8D0 @ =gUnk_081217A4
|
||||
lsrs r0, r5, #8
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
strh r0, [r4, #0x24]
|
||||
adds r0, r4, #0
|
||||
bl sub_0808DAA0
|
||||
cmp r0, #0
|
||||
beq _0808D8D4
|
||||
movs r0, #0x1f
|
||||
ands r5, r0
|
||||
strb r5, [r4, #0x15]
|
||||
b _0808D8EE
|
||||
.align 2, 0
|
||||
_0808D8D0: .4byte gUnk_081217A4
|
||||
_0808D8D4:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x74
|
||||
ldrh r2, [r2]
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x76
|
||||
ldrh r3, [r3]
|
||||
bl CalculateDirectionTo
|
||||
strb r0, [r4, #0x15]
|
||||
_0808D8EE:
|
||||
ldrb r1, [r4, #0x15]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0808D910
|
||||
movs r0, #0x10
|
||||
eors r1, r0
|
||||
lsrs r1, r1, #4
|
||||
movs r0, #1
|
||||
ands r1, r0
|
||||
lsls r1, r1, #6
|
||||
ldrb r2, [r4, #0x18]
|
||||
movs r0, #0x41
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
_0808D910:
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement1
|
||||
bl AnyPrioritySet
|
||||
cmp r0, #0
|
||||
bne _0808D954
|
||||
ldrb r0, [r4, #0xb]
|
||||
cmp r0, #0
|
||||
bne _0808D954
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x78
|
||||
ldrh r0, [r5]
|
||||
subs r0, #1
|
||||
strh r0, [r5]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bne _0808D93C
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_08081404
|
||||
_0808D93C:
|
||||
ldrh r0, [r5]
|
||||
cmp r0, #0x77
|
||||
bhi _0808D954
|
||||
ldrb r2, [r4, #0x18]
|
||||
lsls r1, r2, #0x1e
|
||||
lsrs r1, r1, #0x1e
|
||||
movs r0, #1
|
||||
eors r1, r0
|
||||
subs r0, #5
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
_0808D954:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808D958
|
||||
sub_0808D958: @ 0x0808D958
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r2, [r4, #0x54]
|
||||
ldrh r1, [r2, #8]
|
||||
movs r0, #0xc2
|
||||
lsls r0, r0, #2
|
||||
cmp r1, r0
|
||||
beq _0808D972
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_08081404
|
||||
b _0808D992
|
||||
_0808D972:
|
||||
adds r0, r2, #0
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
ldrh r0, [r4, #0x36]
|
||||
subs r0, #1
|
||||
strh r0, [r4, #0x36]
|
||||
ldr r1, _0808D994 @ =gPlayerEntity
|
||||
adds r0, r4, #0
|
||||
bl IsColliding
|
||||
cmp r0, #0
|
||||
beq _0808D992
|
||||
adds r0, r4, #0
|
||||
bl sub_0808DB2C
|
||||
_0808D992:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0808D994: .4byte gPlayerEntity
|
||||
|
||||
thumb_func_start sub_0808D998
|
||||
sub_0808D998: @ 0x0808D998
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r6, [r5, #0x54]
|
||||
ldr r2, _0808DA28 @ =gSineTable
|
||||
ldrb r0, [r5, #0xe]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r2
|
||||
movs r3, #0
|
||||
ldrsh r1, [r0, r3]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #9
|
||||
cmp r0, #0
|
||||
bge _0808D9B8
|
||||
ldr r1, _0808DA2C @ =0x0000FFFF
|
||||
adds r0, r0, r1
|
||||
_0808D9B8:
|
||||
asrs r0, r0, #0x10
|
||||
ldrh r3, [r6, #0x2e]
|
||||
adds r0, r0, r3
|
||||
strh r0, [r5, #0x2e]
|
||||
ldrb r0, [r5, #0xe]
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r2
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #8
|
||||
cmp r0, #0
|
||||
bge _0808D9DA
|
||||
ldr r3, _0808DA2C @ =0x0000FFFF
|
||||
adds r0, r0, r3
|
||||
_0808D9DA:
|
||||
asrs r1, r0, #0x10
|
||||
ldrh r0, [r6, #0x32]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r5, #0x32]
|
||||
ldrb r3, [r5, #0xe]
|
||||
adds r0, r3, #0
|
||||
adds r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
ldrh r0, [r6, #0x36]
|
||||
strh r0, [r5, #0x36]
|
||||
ldrb r2, [r6, #0x1b]
|
||||
lsrs r2, r2, #6
|
||||
lsls r2, r2, #6
|
||||
ldrb r4, [r5, #0x1b]
|
||||
movs r1, #0x3f
|
||||
adds r0, r1, #0
|
||||
ands r0, r4
|
||||
orrs r0, r2
|
||||
strb r0, [r5, #0x1b]
|
||||
ldrb r0, [r6, #0x19]
|
||||
lsrs r0, r0, #6
|
||||
lsls r0, r0, #6
|
||||
ldrb r2, [r5, #0x19]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
strb r1, [r5, #0x19]
|
||||
subs r3, #0x39
|
||||
lsls r3, r3, #0x18
|
||||
lsrs r3, r3, #0x18
|
||||
cmp r3, #0x7e
|
||||
bhi _0808DA30
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #3
|
||||
b _0808DA3E
|
||||
.align 2, 0
|
||||
_0808DA28: .4byte gSineTable
|
||||
_0808DA2C: .4byte 0x0000FFFF
|
||||
_0808DA30:
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #5
|
||||
_0808DA3E:
|
||||
orrs r1, r0
|
||||
strb r1, [r2]
|
||||
ldrb r0, [r5, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x63
|
||||
cmp r0, #0
|
||||
bne _0808DA70
|
||||
movs r0, #6
|
||||
strb r0, [r5, #0xf]
|
||||
ldrb r0, [r4]
|
||||
subs r0, #1
|
||||
strb r0, [r4]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
movs r1, #0x16
|
||||
rsbs r1, r1, #0
|
||||
cmp r0, r1
|
||||
bge _0808DA70
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
bl sub_08081404
|
||||
_0808DA70:
|
||||
movs r1, #0
|
||||
ldrsb r1, [r4, r1]
|
||||
movs r0, #0x11
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
bge _0808DA8E
|
||||
ldrb r2, [r5, #0x18]
|
||||
lsls r1, r2, #0x1e
|
||||
lsrs r1, r1, #0x1e
|
||||
movs r0, #1
|
||||
eors r1, r0
|
||||
subs r0, #5
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x18]
|
||||
_0808DA8E:
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x87
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0xa
|
||||
bls _0808DA9C
|
||||
movs r0, #0xa
|
||||
strb r0, [r1]
|
||||
_0808DA9C:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808DAA0
|
||||
sub_0808DAA0: @ 0x0808DAA0
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r2, r1]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x74
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
adds r0, #0x30
|
||||
cmp r0, #0x60
|
||||
bhi _0808DACC
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r2, r1]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x76
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
adds r0, #0x30
|
||||
cmp r0, #0x60
|
||||
bhi _0808DACC
|
||||
movs r0, #1
|
||||
b _0808DACE
|
||||
_0808DACC:
|
||||
movs r0, #0
|
||||
_0808DACE:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0808DAD0
|
||||
sub_0808DAD0: @ 0x0808DAD0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x45
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808DAE0
|
||||
bl DeleteThisEntity
|
||||
_0808DAE0:
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x80
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #6
|
||||
strb r0, [r4, #0xf]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #0x10
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #0xfb
|
||||
strb r0, [r1]
|
||||
ldr r0, _0808DB28 @ =gPlayerEntity
|
||||
str r0, [r4, #0x54]
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0808DB28: .4byte gPlayerEntity
|
||||
|
||||
thumb_func_start sub_0808DB2C
|
||||
sub_0808DB2C: @ 0x0808DB2C
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
movs r2, #0
|
||||
movs r0, #2
|
||||
strb r0, [r1, #0xc]
|
||||
strb r2, [r1, #0xd]
|
||||
ldrb r2, [r1, #0x10]
|
||||
movs r0, #0x80
|
||||
orrs r0, r2
|
||||
strb r0, [r1, #0x10]
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x3b
|
||||
movs r0, #1
|
||||
strb r0, [r2]
|
||||
ldr r0, _0808DB50 @ =gPlayerEntity
|
||||
bl CopyPosition
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808DB50: .4byte gPlayerEntity
|
||||
@@ -1,658 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start LavaPlatform
|
||||
LavaPlatform: @ 0x0809225C
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
ldrb r0, [r1, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0809226E
|
||||
adds r0, r1, #0
|
||||
bl sub_08092278
|
||||
b _08092274
|
||||
_0809226E:
|
||||
adds r0, r1, #0
|
||||
bl sub_08092344
|
||||
_08092274:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08092278
|
||||
sub_08092278: @ 0x08092278
|
||||
push {lr}
|
||||
ldr r2, _0809228C @ =gUnk_08122644
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0809228C: .4byte gUnk_08122644
|
||||
|
||||
thumb_func_start sub_08092290
|
||||
sub_08092290: @ 0x08092290
|
||||
push {lr}
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xc]
|
||||
bl sub_080925A4
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0809229C
|
||||
sub_0809229C: @ 0x0809229C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x70
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _080922E0
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0xb0
|
||||
lsls r0, r0, #0xa
|
||||
str r0, [r4, #0x20]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
ldr r0, [r4, #0x54]
|
||||
ldrb r1, [r0, #0x14]
|
||||
adds r0, r4, #0
|
||||
bl InitAnimationForceUpdate
|
||||
movs r0, #0xbf
|
||||
lsls r0, r0, #1
|
||||
bl EnqueueSFX
|
||||
ldr r0, [r4, #0x54]
|
||||
movs r1, #3
|
||||
bl InitializeAnimation
|
||||
_080922E0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080922E4
|
||||
sub_080922E4: @ 0x080922E4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #0x90
|
||||
lsls r1, r1, #6
|
||||
bl GravityUpdate
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
bne _08092322
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x70
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4, #0x54]
|
||||
adds r0, #0x63
|
||||
strb r2, [r0]
|
||||
ldr r0, [r4, #0x54]
|
||||
ldrb r1, [r0, #0x14]
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x36
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
b _0809233E
|
||||
_08092322:
|
||||
ldr r1, [r4, #0x20]
|
||||
ldr r0, _08092340 @ =0x00017FFF
|
||||
cmp r1, r0
|
||||
bgt _0809233E
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0809233E
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
_0809233E:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08092340: .4byte 0x00017FFF
|
||||
|
||||
thumb_func_start sub_08092344
|
||||
sub_08092344: @ 0x08092344
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0
|
||||
strb r0, [r4, #0xf]
|
||||
ldr r1, _08092364 @ =gUnk_08122650
|
||||
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_080926E4
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08092364: .4byte gUnk_08122650
|
||||
|
||||
thumb_func_start sub_08092368
|
||||
sub_08092368: @ 0x08092368
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r0, [r2, #0xb]
|
||||
strb r0, [r2, #0x14]
|
||||
adds r3, r2, #0
|
||||
adds r3, #0x29
|
||||
ldrb r0, [r3]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x40
|
||||
movs r0, #0x48
|
||||
strb r0, [r1]
|
||||
subs r1, #4
|
||||
movs r0, #7
|
||||
strb r0, [r1]
|
||||
subs r1, #1
|
||||
movs r0, #0x81
|
||||
strb r0, [r1]
|
||||
ldr r0, _0809239C @ =gUnk_080FD280
|
||||
str r0, [r2, #0x48]
|
||||
adds r0, r2, #0
|
||||
bl sub_0809264C
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0809239C: .4byte gUnk_080FD280
|
||||
|
||||
thumb_func_start sub_080923A0
|
||||
sub_080923A0: @ 0x080923A0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x58
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #3
|
||||
beq _080923E2
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #0
|
||||
bne _080923C6
|
||||
movs r1, #1
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
ldrb r0, [r4, #0x14]
|
||||
eors r0, r1
|
||||
strb r0, [r4, #0x14]
|
||||
ldrb r1, [r4, #0x14]
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
_080923C6:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
ldrb r0, [r1]
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
movs r1, #3
|
||||
rsbs r1, r1, #0
|
||||
cmp r0, r1
|
||||
bne _080923E2
|
||||
adds r0, r4, #0
|
||||
bl sub_0809264C
|
||||
_080923E2:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_080923E4
|
||||
sub_080923E4: @ 0x080923E4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x9d
|
||||
bne _080923F8
|
||||
adds r0, r4, #0
|
||||
bl sub_08092620
|
||||
b _0809241A
|
||||
_080923F8:
|
||||
adds r0, r4, #0
|
||||
bl sub_0809269C
|
||||
cmp r0, #0
|
||||
beq _0809241A
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
movs r0, #0x14
|
||||
strb r0, [r4, #0xe]
|
||||
ldr r0, _0809241C @ =gPlayerState
|
||||
adds r0, #0x3f
|
||||
movs r1, #0xfd
|
||||
strb r1, [r0]
|
||||
_0809241A:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0809241C: .4byte gPlayerState
|
||||
|
||||
thumb_func_start sub_08092420
|
||||
sub_08092420: @ 0x08092420
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0809269C
|
||||
cmp r0, #0
|
||||
beq _08092434
|
||||
ldr r0, _08092464 @ =gPlayerState
|
||||
adds r0, #0x3f
|
||||
movs r1, #0xfd
|
||||
strb r1, [r0]
|
||||
_08092434:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08092462
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x72
|
||||
ldrh r1, [r0]
|
||||
subs r0, #2
|
||||
movs r2, #0
|
||||
strh r1, [r0]
|
||||
subs r0, #0xd
|
||||
strb r2, [r0]
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl InitializeAnimation
|
||||
ldr r0, _08092468 @ =0x0000017B
|
||||
bl EnqueueSFX
|
||||
_08092462:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08092464: .4byte gPlayerState
|
||||
_08092468: .4byte 0x0000017B
|
||||
|
||||
thumb_func_start sub_0809246C
|
||||
sub_0809246C: @ 0x0809246C
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0809269C
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x70
|
||||
ldrh r0, [r5]
|
||||
cmp r0, #0
|
||||
beq _08092482
|
||||
subs r0, #1
|
||||
strh r0, [r5]
|
||||
_08092482:
|
||||
ldrh r0, [r5]
|
||||
cmp r0, #0x8c
|
||||
bhi _080924DC
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x5a
|
||||
ldrb r1, [r3]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _080924B8
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x74
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r5]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
b _080924DC
|
||||
_080924B8:
|
||||
movs r2, #1
|
||||
ands r2, r1
|
||||
cmp r2, #0
|
||||
beq _080924CC
|
||||
strb r0, [r3]
|
||||
movs r0, #0xbe
|
||||
lsls r0, r0, #1
|
||||
bl EnqueueSFX
|
||||
b _080924DC
|
||||
_080924CC:
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080924DC
|
||||
strb r2, [r3]
|
||||
ldr r0, _080924E0 @ =0x0000017D
|
||||
bl EnqueueSFX
|
||||
_080924DC:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080924E0: .4byte 0x0000017D
|
||||
|
||||
thumb_func_start sub_080924E4
|
||||
sub_080924E4: @ 0x080924E4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x70
|
||||
ldrh r0, [r1]
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bne _0809252C
|
||||
movs r0, #6
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r0, [r4, #0xb]
|
||||
strb r0, [r4, #0x14]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r4, #0x14]
|
||||
adds r1, #4
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
ldrb r0, [r4, #0x14]
|
||||
cmp r0, #0
|
||||
bne _0809252C
|
||||
adds r0, r4, #0
|
||||
bl sub_0809269C
|
||||
_0809252C:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08092530
|
||||
sub_08092530: @ 0x08092530
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0x14]
|
||||
cmp r0, #0
|
||||
bne _08092544
|
||||
adds r0, r4, #0
|
||||
bl sub_0809269C
|
||||
adds r5, r0, #0
|
||||
b _08092546
|
||||
_08092544:
|
||||
movs r5, #0
|
||||
_08092546:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x5a
|
||||
ldrb r1, [r2]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08092570
|
||||
movs r0, #0
|
||||
strb r0, [r2]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3f
|
||||
movs r0, #0xac
|
||||
strb r0, [r1]
|
||||
b _0809258A
|
||||
_08092570:
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0809258A
|
||||
adds r0, r4, #0
|
||||
bl sub_0809264C
|
||||
cmp r5, #0
|
||||
beq _0809258A
|
||||
ldr r0, _0809258C @ =gPlayerState
|
||||
adds r0, #0x3f
|
||||
movs r1, #0xfd
|
||||
strb r1, [r0]
|
||||
_0809258A:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0809258C: .4byte gPlayerState
|
||||
|
||||
thumb_func_start sub_08092590
|
||||
sub_08092590: @ 0x08092590
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x9d
|
||||
bne _080925A2
|
||||
adds r0, r1, #0
|
||||
bl sub_08092620
|
||||
_080925A2:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_080925A4
|
||||
sub_080925A4: @ 0x080925A4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r6, r0, #0
|
||||
ldrb r0, [r6, #0xb]
|
||||
bl GetCurrentRoomProperty
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #9]
|
||||
cmp r0, #0xff
|
||||
beq _0809261A
|
||||
ldr r7, _0809261C @ =gRoomControls
|
||||
_080925B8:
|
||||
ldrb r2, [r5, #9]
|
||||
movs r0, #0x59
|
||||
movs r1, #1
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08092612
|
||||
movs r0, #0xff
|
||||
strb r0, [r4, #0x15]
|
||||
movs r0, #0
|
||||
strh r0, [r4, #0x24]
|
||||
str r6, [r4, #0x50]
|
||||
ldrh r0, [r7, #6]
|
||||
ldrh r1, [r5, #4]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrh r0, [r7, #8]
|
||||
ldrh r1, [r5, #6]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r4, #0x32]
|
||||
ldrb r1, [r5, #8]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x38
|
||||
strb r1, [r0]
|
||||
ldrh r0, [r5, #0xa]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x72
|
||||
strh r0, [r1]
|
||||
ldrh r1, [r5, #0xc]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x74
|
||||
strh r1, [r0]
|
||||
ldr r0, [r5]
|
||||
str r0, [r4, #0x78]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x76
|
||||
adds r0, r4, #0
|
||||
bl sub_080A2CC0
|
||||
_08092612:
|
||||
adds r5, #0x10
|
||||
ldrb r0, [r5, #9]
|
||||
cmp r0, #0xff
|
||||
bne _080925B8
|
||||
_0809261A:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0809261C: .4byte gRoomControls
|
||||
|
||||
thumb_func_start sub_08092620
|
||||
sub_08092620: @ 0x08092620
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r1, [r5, #0x50]
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x70
|
||||
ldrb r6, [r0]
|
||||
cmp r6, #0
|
||||
bne _08092648
|
||||
movs r4, #1
|
||||
strb r4, [r0]
|
||||
str r5, [r1, #0x54]
|
||||
adds r0, r5, #0
|
||||
bl CopyPosition
|
||||
strb r4, [r5, #0xc]
|
||||
strb r6, [r5, #0xd]
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x3f
|
||||
movs r0, #0xac
|
||||
strb r0, [r1]
|
||||
_08092648:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0809264C
|
||||
sub_0809264C: @ 0x0809264C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r1, [r2, #0x14]
|
||||
movs r3, #1
|
||||
adds r0, r3, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0809266A
|
||||
movs r0, #7
|
||||
strb r0, [r2, #0xc]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x3f
|
||||
movs r0, #0xac
|
||||
strb r0, [r1]
|
||||
b _08092674
|
||||
_0809266A:
|
||||
movs r0, #2
|
||||
strb r0, [r2, #0xc]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x3f
|
||||
strb r3, [r0]
|
||||
_08092674:
|
||||
ldrb r1, [r2, #0x10]
|
||||
movs r0, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x10]
|
||||
ldrb r1, [r2, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x18]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #0xfd
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r2, #0x14]
|
||||
adds r0, r2, #0
|
||||
bl InitializeAnimation
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0809269C
|
||||
sub_0809269C: @ 0x0809269C
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r6, _080926D8 @ =gPlayerState
|
||||
ldr r0, [r6, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080926E0
|
||||
ldr r5, _080926DC @ =gPlayerEntity
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
movs r2, #0x10
|
||||
movs r3, #0x10
|
||||
bl EntityInRectRadius
|
||||
cmp r0, #0
|
||||
beq _080926E0
|
||||
bl sub_08079F8C
|
||||
cmp r0, #0
|
||||
beq _080926E0
|
||||
movs r1, #1
|
||||
strb r1, [r6, #0x14]
|
||||
movs r2, #0x36
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r0, #0
|
||||
bne _080926E0
|
||||
strb r1, [r4, #0xf]
|
||||
movs r0, #1
|
||||
b _080926E2
|
||||
.align 2, 0
|
||||
_080926D8: .4byte gPlayerState
|
||||
_080926DC: .4byte gPlayerEntity
|
||||
_080926E0:
|
||||
movs r0, #0
|
||||
_080926E2:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_080926E4
|
||||
sub_080926E4: @ 0x080926E4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0xf]
|
||||
bl sub_080A2BE4
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #1
|
||||
bne _08092700
|
||||
ldr r1, [r4, #0x50]
|
||||
ldrh r0, [r4, #0x2e]
|
||||
strh r0, [r1, #0x2e]
|
||||
ldr r1, [r4, #0x50]
|
||||
ldrh r0, [r4, #0x32]
|
||||
strh r0, [r1, #0x32]
|
||||
_08092700:
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x76
|
||||
ldrh r0, [r2]
|
||||
subs r0, #1
|
||||
strh r0, [r2]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bne _0809271A
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x78
|
||||
adds r0, r4, #0
|
||||
bl sub_080A2CC0
|
||||
_0809271A:
|
||||
pop {r4, pc}
|
||||
@@ -1,682 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Object3E
|
||||
Object3E: @ 0x0808D0C8
|
||||
push {lr}
|
||||
ldr r2, _0808D0DC @ =gUnk_081216DC
|
||||
ldrb r1, [r0, #0xa]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808D0DC: .4byte gUnk_081216DC
|
||||
|
||||
thumb_func_start sub_0808D0E0
|
||||
sub_0808D0E0: @ 0x0808D0E0
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r6, [r5, #0xc]
|
||||
cmp r6, #1
|
||||
beq _0808D12C
|
||||
cmp r6, #1
|
||||
bgt _0808D0F4
|
||||
cmp r6, #0
|
||||
beq _0808D0FA
|
||||
b _0808D192
|
||||
_0808D0F4:
|
||||
cmp r6, #2
|
||||
beq _0808D150
|
||||
b _0808D192
|
||||
_0808D0FA:
|
||||
movs r4, #1
|
||||
strb r4, [r5, #0xc]
|
||||
bl Random
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
movs r1, #0x40
|
||||
subs r1, r1, r0
|
||||
strb r1, [r5, #0xe]
|
||||
strb r6, [r5, #0x1e]
|
||||
strb r6, [r5, #0x14]
|
||||
ldrb r0, [r5, #0x19]
|
||||
movs r1, #0xc0
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x19]
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x38
|
||||
strb r4, [r0]
|
||||
b _0808D192
|
||||
_0808D12C:
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808D192
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
movs r0, #4
|
||||
strb r0, [r5, #0xf]
|
||||
movs r0, #2
|
||||
strb r0, [r5, #0xc]
|
||||
bl Random
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x14]
|
||||
b _0808D192
|
||||
_0808D150:
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
movs r1, #0xff
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808D192
|
||||
ldrb r0, [r5, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xf]
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0808D180
|
||||
strb r0, [r5, #0x1e]
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
bl Random
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
movs r1, #0x40
|
||||
subs r1, r1, r0
|
||||
strb r1, [r5, #0xe]
|
||||
b _0808D192
|
||||
_0808D180:
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
ldrb r1, [r5, #0x14]
|
||||
ldrb r0, [r5, #0x1e]
|
||||
movs r2, #0
|
||||
cmp r0, r1
|
||||
beq _0808D190
|
||||
adds r2, r1, #0
|
||||
_0808D190:
|
||||
strb r2, [r5, #0x1e]
|
||||
_0808D192:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_0808D194
|
||||
sub_0808D194: @ 0x0808D194
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r1, [r5, #0xc]
|
||||
cmp r1, #1
|
||||
beq _0808D234
|
||||
cmp r1, #1
|
||||
bgt _0808D1A8
|
||||
cmp r1, #0
|
||||
beq _0808D1AE
|
||||
b _0808D234
|
||||
_0808D1A8:
|
||||
cmp r1, #2
|
||||
beq _0808D1FC
|
||||
b _0808D234
|
||||
_0808D1AE:
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
strb r1, [r5, #0xf]
|
||||
strb r1, [r5, #0x1e]
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r0, _0808D1F4 @ =0x00004069
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r5, r2]
|
||||
ldr r3, _0808D1F8 @ =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
|
||||
subs r1, #0x40
|
||||
movs r2, #1
|
||||
bl SetTile
|
||||
b _0808D234
|
||||
.align 2, 0
|
||||
_0808D1F4: .4byte 0x00004069
|
||||
_0808D1F8: .4byte gRoomControls
|
||||
_0808D1FC:
|
||||
ldr r0, _0808D274 @ =gRoomTransition
|
||||
ldr r3, [r0]
|
||||
movs r0, #3
|
||||
ands r3, r0
|
||||
cmp r3, #0
|
||||
bne _0808D234
|
||||
ldr r4, _0808D278 @ =gScreen
|
||||
ldrb r2, [r5, #0xd]
|
||||
lsls r1, r2, #8
|
||||
movs r0, #0x10
|
||||
subs r0, r0, r2
|
||||
orrs r1, r0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x68
|
||||
strh r1, [r0]
|
||||
ldrb r0, [r5, #0xd]
|
||||
adds r0, #1
|
||||
strb r0, [r5, #0xd]
|
||||
lsls r1, r1, #0x10
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0x15
|
||||
cmp r1, r0
|
||||
bne _0808D234
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x66
|
||||
strh r3, [r0]
|
||||
bl DeleteThisEntity
|
||||
_0808D234:
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808D272
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #9
|
||||
bne _0808D24E
|
||||
movs r0, #2
|
||||
strb r0, [r5, #0xe]
|
||||
_0808D24E:
|
||||
ldr r4, _0808D27C @ =gUnk_08121704
|
||||
ldrb r0, [r5, #0xf]
|
||||
adds r1, r0, #1
|
||||
strb r1, [r5, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x17
|
||||
adds r0, r0, r4
|
||||
ldrh r1, [r0]
|
||||
adds r0, r5, #0
|
||||
bl ChangeObjPalette
|
||||
ldrb r0, [r5, #0xf]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808D272
|
||||
strb r0, [r5, #0xf]
|
||||
_0808D272:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0808D274: .4byte gRoomTransition
|
||||
_0808D278: .4byte gScreen
|
||||
_0808D27C: .4byte gUnk_08121704
|
||||
|
||||
thumb_func_start sub_0808D280
|
||||
sub_0808D280: @ 0x0808D280
|
||||
push {r4, lr}
|
||||
sub sp, #4
|
||||
movs r4, #0
|
||||
str r4, [sp]
|
||||
movs r0, #6
|
||||
movs r1, #0x3e
|
||||
movs r2, #6
|
||||
movs r3, #9
|
||||
bl FindEntity
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _0808D2C4
|
||||
movs r0, #2
|
||||
strb r0, [r2, #0xc]
|
||||
strb r4, [r2, #0xd]
|
||||
ldrb r1, [r2, #0x19]
|
||||
subs r0, #0xf
|
||||
ands r0, r1
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x19]
|
||||
ldr r1, _0808D2C8 @ =gScreen
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x66
|
||||
movs r0, #0xc8
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r2]
|
||||
adds r1, #0x68
|
||||
movs r0, #0x10
|
||||
strh r0, [r1]
|
||||
movs r0, #0xf6
|
||||
bl SoundReq
|
||||
_0808D2C4:
|
||||
add sp, #4
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0808D2C8: .4byte gScreen
|
||||
|
||||
thumb_func_start sub_0808D2CC
|
||||
sub_0808D2CC: @ 0x0808D2CC
|
||||
push {lr}
|
||||
sub sp, #4
|
||||
movs r0, #0
|
||||
str r0, [sp]
|
||||
movs r0, #6
|
||||
movs r1, #0x3e
|
||||
movs r2, #6
|
||||
movs r3, #1
|
||||
bl FindEntity
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0808D2F2
|
||||
movs r0, #9
|
||||
strb r0, [r1, #0xa]
|
||||
adds r0, r1, #0
|
||||
movs r1, #2
|
||||
bl SetDefaultPriority
|
||||
_0808D2F2:
|
||||
add sp, #4
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start nullsub_521
|
||||
nullsub_521: @ 0x0808D2F8
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808D2FC
|
||||
sub_0808D2FC: @ 0x0808D2FC
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0808D31C
|
||||
strb r0, [r4, #0xc]
|
||||
strb r0, [r4, #0x1e]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
bl sub_0807DD64
|
||||
_0808D31C:
|
||||
movs r0, #0x2e
|
||||
ldrsh r5, [r4, r0]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl ExecuteScriptForEntity
|
||||
adds r0, r4, #0
|
||||
bl HandleEntity0x82Actions
|
||||
ldr r0, _0808D354 @ =gRoomControls
|
||||
ldrh r0, [r0, #0x16]
|
||||
cmp r0, #0
|
||||
beq _0808D350
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r5, r0
|
||||
beq _0808D350
|
||||
ldr r0, _0808D358 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0808D350
|
||||
ldr r0, _0808D35C @ =0x0000010F
|
||||
bl SoundReq
|
||||
_0808D350:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808D354: .4byte gRoomControls
|
||||
_0808D358: .4byte gRoomTransition
|
||||
_0808D35C: .4byte 0x0000010F
|
||||
|
||||
thumb_func_start sub_0808D360
|
||||
sub_0808D360: @ 0x0808D360
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0808D382
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0x1e]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
bl sub_0807DD64
|
||||
_0808D382:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl ExecuteScriptForEntity
|
||||
adds r0, r4, #0
|
||||
bl HandleEntity0x82Actions
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808D394
|
||||
sub_0808D394: @ 0x0808D394
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0808D3C4
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r1, _0808D3FC @ =gScreen
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x66
|
||||
movs r0, #0xc8
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r2]
|
||||
adds r1, #0x68
|
||||
ldr r0, _0808D400 @ =0x00001003
|
||||
strh r0, [r1]
|
||||
_0808D3C4:
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808D3F8
|
||||
movs r0, #2
|
||||
strb r0, [r5, #0xe]
|
||||
ldr r4, _0808D404 @ =gUnk_08121720
|
||||
ldrb r0, [r5, #0xf]
|
||||
adds r1, r0, #1
|
||||
strb r1, [r5, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x17
|
||||
adds r0, r0, r4
|
||||
ldrh r1, [r0]
|
||||
adds r0, r5, #0
|
||||
bl sub_0801D28C
|
||||
ldrb r0, [r5, #0xf]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808D3F8
|
||||
strb r0, [r5, #0xf]
|
||||
_0808D3F8:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808D3FC: .4byte gScreen
|
||||
_0808D400: .4byte 0x00001003
|
||||
_0808D404: .4byte gUnk_08121720
|
||||
|
||||
thumb_func_start sub_0808D408
|
||||
sub_0808D408: @ 0x0808D408
|
||||
push {lr}
|
||||
adds r3, r0, #0
|
||||
ldrb r0, [r3, #0xc]
|
||||
cmp r0, #0
|
||||
bne _0808D458
|
||||
movs r1, #1
|
||||
strb r1, [r3, #0xc]
|
||||
ldrb r0, [r3, #0x19]
|
||||
movs r2, #0xc0
|
||||
orrs r0, r2
|
||||
strb r0, [r3, #0x19]
|
||||
movs r0, #0x29
|
||||
adds r0, r0, r3
|
||||
mov ip, r0
|
||||
ldrb r0, [r0]
|
||||
movs r2, #7
|
||||
orrs r0, r2
|
||||
mov r2, ip
|
||||
strb r0, [r2]
|
||||
ldrb r2, [r3, #0x19]
|
||||
movs r0, #0xd
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
movs r2, #4
|
||||
orrs r0, r2
|
||||
strb r0, [r3, #0x19]
|
||||
ldrb r0, [r3, #0xb]
|
||||
strb r0, [r3, #0x1e]
|
||||
ldrb r0, [r3, #0xb]
|
||||
subs r1, r1, r0
|
||||
lsls r1, r1, #9
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
adds r1, r1, r0
|
||||
movs r2, #0xc0
|
||||
rsbs r2, r2, #0
|
||||
adds r0, r3, #0
|
||||
movs r3, #0
|
||||
bl sub_0805EC9C
|
||||
_0808D458:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0808D45C
|
||||
sub_0808D45C: @ 0x0808D45C
|
||||
push {lr}
|
||||
ldr r2, _0808D470 @ =gUnk_0812172C
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0808D470: .4byte gUnk_0812172C
|
||||
|
||||
thumb_func_start sub_0808D474
|
||||
sub_0808D474: @ 0x0808D474
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r0, [r5, #0xb]
|
||||
strb r0, [r5, #0x1e]
|
||||
movs r1, #2
|
||||
strb r1, [r5, #0xc]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808D4D4
|
||||
movs r0, #0x7c
|
||||
bl CheckLocalFlag
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
bne _0808D4D4
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
strb r1, [r5, #0xe]
|
||||
ldrb r1, [r5, #0x19]
|
||||
subs r0, #0xe
|
||||
ands r0, r1
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x19]
|
||||
ldr r1, _0808D4CC @ =gScreen
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x66
|
||||
movs r0, #0xc8
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r2]
|
||||
adds r1, #0x68
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
strh r0, [r1]
|
||||
ldr r0, _0808D4D0 @ =0x00000179
|
||||
bl SoundReq
|
||||
b _0808D50E
|
||||
.align 2, 0
|
||||
_0808D4CC: .4byte gScreen
|
||||
_0808D4D0: .4byte 0x00000179
|
||||
_0808D4D4:
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r3, _0808D510 @ =gRoomControls
|
||||
ldrh r1, [r3, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r4, r0, #4
|
||||
movs r2, #0x3f
|
||||
ands r4, r2
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r3, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
ldrb r0, [r5, #0xb]
|
||||
cmp r0, #0
|
||||
beq _0808D500
|
||||
subs r4, #0x40
|
||||
_0808D500:
|
||||
ldr r0, _0808D514 @ =0x00004069
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x38
|
||||
ldrb r2, [r1]
|
||||
adds r1, r4, #0
|
||||
bl SetTile
|
||||
_0808D50E:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808D510: .4byte gRoomControls
|
||||
_0808D514: .4byte 0x00004069
|
||||
|
||||
thumb_func_start sub_0808D518
|
||||
sub_0808D518: @ 0x0808D518
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r0, _0808D58C @ =gRoomTransition
|
||||
ldr r2, [r0]
|
||||
movs r0, #3
|
||||
ands r2, r0
|
||||
cmp r2, #0
|
||||
bne _0808D58A
|
||||
ldr r3, _0808D590 @ =gScreen
|
||||
ldrb r0, [r5, #0xe]
|
||||
movs r1, #0x10
|
||||
subs r1, r1, r0
|
||||
lsls r1, r1, #8
|
||||
orrs r1, r0
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x68
|
||||
strh r1, [r0]
|
||||
ldrb r0, [r5, #0xe]
|
||||
adds r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r1, r1, #0x10
|
||||
lsrs r1, r1, #0x10
|
||||
cmp r1, #0x10
|
||||
bne _0808D58A
|
||||
movs r0, #2
|
||||
strb r0, [r5, #0xc]
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
ldrb r1, [r5, #0x19]
|
||||
subs r0, #0x15
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x19]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x66
|
||||
strh r2, [r0]
|
||||
ldr r0, _0808D594 @ =0x00004069
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r5, r2]
|
||||
ldr r3, _0808D598 @ =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 SetTile
|
||||
_0808D58A:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0808D58C: .4byte gRoomTransition
|
||||
_0808D590: .4byte gScreen
|
||||
_0808D594: .4byte 0x00004069
|
||||
_0808D598: .4byte gRoomControls
|
||||
|
||||
thumb_func_start sub_0808D59C
|
||||
sub_0808D59C: @ 0x0808D59C
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808D5D4
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
ldr r4, _0808D5D8 @ =gUnk_08121738
|
||||
ldrb r0, [r5, #0xf]
|
||||
adds r1, r0, #1
|
||||
strb r1, [r5, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x17
|
||||
adds r0, r0, r4
|
||||
ldrh r1, [r0]
|
||||
adds r0, r5, #0
|
||||
bl ChangeObjPalette
|
||||
ldrb r0, [r5, #0xf]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0808D5D4
|
||||
strb r0, [r5, #0xf]
|
||||
_0808D5D4:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0808D5D8: .4byte gUnk_08121738
|
||||
@@ -1,573 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_0809FABC
|
||||
sub_0809FABC: @ 0x0809FABC
|
||||
push {lr}
|
||||
adds r3, r0, #0
|
||||
movs r0, #1
|
||||
strb r0, [r3, #0xc]
|
||||
ldrb r0, [r3, #0xb]
|
||||
cmp r0, #0
|
||||
beq _0809FAD0
|
||||
cmp r0, #2
|
||||
beq _0809FADE
|
||||
b _0809FAE6
|
||||
_0809FAD0:
|
||||
movs r0, #0xf0
|
||||
lsls r0, r0, #9
|
||||
str r0, [r3, #0x20]
|
||||
ldrh r0, [r3, #0x36]
|
||||
adds r0, #8
|
||||
strh r0, [r3, #0x36]
|
||||
b _0809FAE6
|
||||
_0809FADE:
|
||||
adds r0, r3, #0
|
||||
bl sub_0809FECC
|
||||
b _0809FB30
|
||||
_0809FAE6:
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x38
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x3c
|
||||
movs r2, #0x17
|
||||
strb r2, [r0]
|
||||
adds r1, #8
|
||||
movs r0, #0x48
|
||||
strb r0, [r1]
|
||||
subs r1, #1
|
||||
movs r0, #7
|
||||
strb r0, [r1]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x3b
|
||||
strb r2, [r0]
|
||||
ldr r0, _0809FB34 @ =gUnk_080FD1A8
|
||||
str r0, [r3, #0x48]
|
||||
movs r0, #1
|
||||
strb r0, [r3, #0x1c]
|
||||
ldrh r1, [r3, #0x2e]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x74
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r3, #0x32]
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x76
|
||||
strh r0, [r1]
|
||||
adds r0, r3, #0
|
||||
movs r1, #3
|
||||
bl SetDefaultPriority
|
||||
movs r0, #0x9b
|
||||
lsls r0, r0, #1
|
||||
bl EnqueueSFX
|
||||
_0809FB30:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0809FB34: .4byte gUnk_080FD1A8
|
||||
|
||||
thumb_func_start sub_0809FB38
|
||||
sub_0809FB38: @ 0x0809FB38
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r0, [r2, #0x34]
|
||||
ldr r1, _0809FB60 @ =0xFFFF2000
|
||||
adds r0, r0, r1
|
||||
str r0, [r2, #0x34]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0809FB74
|
||||
ldrb r0, [r2, #0xe]
|
||||
cmp r0, #0
|
||||
beq _0809FB64
|
||||
adds r1, r0, #0
|
||||
lsls r0, r1, #4
|
||||
subs r0, r0, r1
|
||||
lsls r0, r0, #1
|
||||
b _0809FB66
|
||||
.align 2, 0
|
||||
_0809FB60: .4byte 0xFFFF2000
|
||||
_0809FB64:
|
||||
movs r0, #0xf0
|
||||
_0809FB66:
|
||||
strb r0, [r2, #0xe]
|
||||
movs r0, #3
|
||||
strb r0, [r2, #0xc]
|
||||
movs r0, #1
|
||||
strb r0, [r2, #0xf]
|
||||
movs r0, #0x80
|
||||
strh r0, [r2, #0x24]
|
||||
_0809FB74:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0809FB78
|
||||
sub_0809FB78: @ 0x0809FB78
|
||||
push {lr}
|
||||
ldr r2, _0809FB8C @ =gUnk_08124840
|
||||
ldrb r1, [r0, #0xd]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0809FB8C: .4byte gUnk_08124840
|
||||
|
||||
thumb_func_start sub_0809FB90
|
||||
sub_0809FB90: @ 0x0809FB90
|
||||
movs r3, #1
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xd]
|
||||
strb r1, [r0, #0x1d]
|
||||
ldrb r2, [r0, #0x18]
|
||||
subs r1, #5
|
||||
ands r1, r2
|
||||
orrs r1, r3
|
||||
strb r1, [r0, #0x18]
|
||||
bx lr
|
||||
|
||||
thumb_func_start sub_0809FBA4
|
||||
sub_0809FBA4: @ 0x0809FBA4
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r0, _0809FBC8 @ =gPlayerState
|
||||
ldrb r1, [r0, #0x1c]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0809FBC2
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0x13
|
||||
beq _0809FBCC
|
||||
_0809FBC2:
|
||||
movs r0, #3
|
||||
strb r0, [r2, #0xc]
|
||||
b _0809FBD2
|
||||
.align 2, 0
|
||||
_0809FBC8: .4byte gPlayerState
|
||||
_0809FBCC:
|
||||
adds r0, r2, #0
|
||||
bl sub_0806F4E8
|
||||
_0809FBD2:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0809FBD4
|
||||
sub_0809FBD4: @ 0x0809FBD4
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, _0809FBFC @ =gPlayerState
|
||||
ldrb r1, [r0, #0x1c]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0809FBF4
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r5, #0x7f
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0x13
|
||||
beq _0809FC00
|
||||
_0809FBF4:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
b _0809FC22
|
||||
.align 2, 0
|
||||
_0809FBFC: .4byte gPlayerState
|
||||
_0809FC00:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F3E4
|
||||
cmp r0, #0
|
||||
beq _0809FC22
|
||||
ldrb r1, [r4, #0x10]
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
ldr r0, _0809FC24 @ =gPlayerEntity
|
||||
str r0, [r4, #0x54]
|
||||
ldrb r0, [r4, #0xa]
|
||||
movs r1, #0
|
||||
bl GiveItem
|
||||
_0809FC22:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0809FC24: .4byte gPlayerEntity
|
||||
|
||||
thumb_func_start sub_0809FC28
|
||||
sub_0809FC28: @ 0x0809FC28
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0809FCAC
|
||||
bl Random
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r4, #0x10]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
movs r0, #0x20
|
||||
strb r0, [r4, #0xf]
|
||||
ldr r2, _0809FC6C @ =gUnk_0812484C
|
||||
lsrs r0, r5, #8
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
strh r0, [r4, #0x24]
|
||||
adds r0, r4, #0
|
||||
bl sub_0809FE9C
|
||||
cmp r0, #0
|
||||
beq _0809FC70
|
||||
movs r0, #0x1f
|
||||
ands r5, r0
|
||||
strb r5, [r4, #0x15]
|
||||
b _0809FC8A
|
||||
.align 2, 0
|
||||
_0809FC6C: .4byte gUnk_0812484C
|
||||
_0809FC70:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x74
|
||||
ldrh r2, [r2]
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x76
|
||||
ldrh r3, [r3]
|
||||
bl CalculateDirectionTo
|
||||
strb r0, [r4, #0x15]
|
||||
_0809FC8A:
|
||||
ldrb r1, [r4, #0x15]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0809FCAC
|
||||
movs r0, #0x10
|
||||
eors r1, r0
|
||||
lsrs r1, r1, #4
|
||||
movs r0, #1
|
||||
ands r1, r0
|
||||
lsls r1, r1, #6
|
||||
ldrb r2, [r4, #0x18]
|
||||
movs r0, #0x41
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
_0809FCAC:
|
||||
adds r0, r4, #0
|
||||
bl ProcessMovement1
|
||||
bl AnyPrioritySet
|
||||
cmp r0, #0
|
||||
bne _0809FCF8
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0809FCF8
|
||||
ldr r0, _0809FCFC @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0809FCE0
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0809FCE0
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_08081404
|
||||
_0809FCE0:
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0x3b
|
||||
bhi _0809FCF8
|
||||
ldrb r2, [r4, #0x18]
|
||||
lsls r1, r2, #0x1e
|
||||
lsrs r1, r1, #0x1e
|
||||
movs r0, #1
|
||||
eors r1, r0
|
||||
subs r0, #5
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
_0809FCF8:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0809FCFC: .4byte gRoomTransition
|
||||
|
||||
thumb_func_start sub_0809FD00
|
||||
sub_0809FD00: @ 0x0809FD00
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r2, [r4, #0x54]
|
||||
ldrh r1, [r2, #8]
|
||||
ldr r0, _0809FD18 @ =0x00000B08
|
||||
cmp r1, r0
|
||||
beq _0809FD1C
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_08081404
|
||||
b _0809FD44
|
||||
.align 2, 0
|
||||
_0809FD18: .4byte 0x00000B08
|
||||
_0809FD1C:
|
||||
adds r0, r2, #0
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
ldrh r0, [r4, #0x36]
|
||||
subs r0, #1
|
||||
strh r0, [r4, #0x36]
|
||||
ldr r1, _0809FD48 @ =gPlayerEntity
|
||||
adds r0, r4, #0
|
||||
bl IsColliding
|
||||
cmp r0, #0
|
||||
beq _0809FD44
|
||||
adds r0, r4, #0
|
||||
bl sub_0809FECC
|
||||
ldrb r0, [r4, #0xa]
|
||||
movs r1, #0
|
||||
bl GiveItem
|
||||
_0809FD44:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0809FD48: .4byte gPlayerEntity
|
||||
|
||||
thumb_func_start sub_0809FD4C
|
||||
sub_0809FD4C: @ 0x0809FD4C
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
movs r2, #6
|
||||
strb r2, [r1, #0xc]
|
||||
movs r0, #0x80
|
||||
strb r0, [r1, #0xe]
|
||||
strb r2, [r1, #0xf]
|
||||
ldrb r2, [r1, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r2
|
||||
strb r0, [r1, #0x10]
|
||||
ldrb r2, [r1, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
movs r2, #1
|
||||
orrs r0, r2
|
||||
strb r0, [r1, #0x18]
|
||||
adds r3, r1, #0
|
||||
adds r3, #0x29
|
||||
ldrb r2, [r3]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
movs r2, #0x10
|
||||
orrs r0, r2
|
||||
strb r0, [r3]
|
||||
adds r2, r1, #0
|
||||
adds r2, #0x63
|
||||
movs r0, #0xfb
|
||||
strb r0, [r2]
|
||||
ldr r0, [r1, #0x54]
|
||||
bl CopyPosition
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0809FD94
|
||||
sub_0809FD94: @ 0x0809FD94
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r6, [r5, #0x54]
|
||||
ldr r2, _0809FE24 @ =gSineTable
|
||||
ldrb r0, [r5, #0xe]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r2
|
||||
movs r3, #0
|
||||
ldrsh r1, [r0, r3]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #9
|
||||
cmp r0, #0
|
||||
bge _0809FDB4
|
||||
ldr r1, _0809FE28 @ =0x0000FFFF
|
||||
adds r0, r0, r1
|
||||
_0809FDB4:
|
||||
asrs r0, r0, #0x10
|
||||
ldrh r3, [r6, #0x2e]
|
||||
adds r0, r0, r3
|
||||
strh r0, [r5, #0x2e]
|
||||
ldrb r0, [r5, #0xe]
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r2
|
||||
movs r2, #0
|
||||
ldrsh r1, [r0, r2]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #8
|
||||
cmp r0, #0
|
||||
bge _0809FDD6
|
||||
ldr r3, _0809FE28 @ =0x0000FFFF
|
||||
adds r0, r0, r3
|
||||
_0809FDD6:
|
||||
asrs r1, r0, #0x10
|
||||
ldrh r0, [r6, #0x32]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r5, #0x32]
|
||||
ldrb r3, [r5, #0xe]
|
||||
adds r0, r3, #0
|
||||
adds r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
ldrh r0, [r6, #0x36]
|
||||
strh r0, [r5, #0x36]
|
||||
ldrb r2, [r6, #0x1b]
|
||||
lsrs r2, r2, #6
|
||||
lsls r2, r2, #6
|
||||
ldrb r4, [r5, #0x1b]
|
||||
movs r1, #0x3f
|
||||
adds r0, r1, #0
|
||||
ands r0, r4
|
||||
orrs r0, r2
|
||||
strb r0, [r5, #0x1b]
|
||||
ldrb r0, [r6, #0x19]
|
||||
lsrs r0, r0, #6
|
||||
lsls r0, r0, #6
|
||||
ldrb r2, [r5, #0x19]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
strb r1, [r5, #0x19]
|
||||
subs r3, #0x39
|
||||
lsls r3, r3, #0x18
|
||||
lsrs r3, r3, #0x18
|
||||
cmp r3, #0x7e
|
||||
bhi _0809FE2C
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #3
|
||||
b _0809FE3A
|
||||
.align 2, 0
|
||||
_0809FE24: .4byte gSineTable
|
||||
_0809FE28: .4byte 0x0000FFFF
|
||||
_0809FE2C:
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #5
|
||||
_0809FE3A:
|
||||
orrs r1, r0
|
||||
strb r1, [r2]
|
||||
ldrb r0, [r5, #0xf]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xf]
|
||||
lsls r0, r0, #0x18
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x63
|
||||
cmp r0, #0
|
||||
bne _0809FE6C
|
||||
movs r0, #6
|
||||
strb r0, [r5, #0xf]
|
||||
ldrb r0, [r4]
|
||||
subs r0, #1
|
||||
strb r0, [r4]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
movs r1, #0x16
|
||||
rsbs r1, r1, #0
|
||||
cmp r0, r1
|
||||
bge _0809FE6C
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
bl sub_08081404
|
||||
_0809FE6C:
|
||||
movs r1, #0
|
||||
ldrsb r1, [r4, r1]
|
||||
movs r0, #0x11
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
bge _0809FE8A
|
||||
ldrb r2, [r5, #0x18]
|
||||
lsls r1, r2, #0x1e
|
||||
lsrs r1, r1, #0x1e
|
||||
movs r0, #1
|
||||
eors r1, r0
|
||||
subs r0, #5
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x18]
|
||||
_0809FE8A:
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x87
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0xa
|
||||
bls _0809FE98
|
||||
movs r0, #0xa
|
||||
strb r0, [r1]
|
||||
_0809FE98:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0809FE9C
|
||||
sub_0809FE9C: @ 0x0809FE9C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r2, r1]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x74
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
adds r0, #0x48
|
||||
cmp r0, #0x90
|
||||
bhi _0809FEC8
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r2, r1]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x76
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
adds r0, #0x30
|
||||
cmp r0, #0x60
|
||||
bhi _0809FEC8
|
||||
movs r0, #1
|
||||
b _0809FECA
|
||||
_0809FEC8:
|
||||
movs r0, #0
|
||||
_0809FECA:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0809FECC
|
||||
sub_0809FECC: @ 0x0809FECC
|
||||
ldr r1, _0809FEDC @ =gPlayerEntity
|
||||
str r1, [r0, #0x54]
|
||||
movs r2, #0
|
||||
movs r1, #5
|
||||
strb r1, [r0, #0xc]
|
||||
strb r2, [r0, #0xd]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0809FEDC: .4byte gPlayerEntity
|
||||
@@ -1,720 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start ObjectOnPillar
|
||||
ObjectOnPillar: @ 0x08096E10
|
||||
push {lr}
|
||||
ldr r2, _08096E24 @ =gUnk_08123250
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08096E24: .4byte gUnk_08123250
|
||||
|
||||
thumb_func_start sub_08096E28
|
||||
sub_08096E28: @ 0x08096E28
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
bne _08096EBC
|
||||
movs r2, #1
|
||||
movs r3, #1
|
||||
strb r3, [r4, #0xc]
|
||||
movs r0, #0x80
|
||||
strh r0, [r4, #0x24]
|
||||
ldrb r1, [r4, #0x11]
|
||||
subs r0, #0x90
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x11]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #0x31
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #0x10
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #4
|
||||
strb r0, [r1]
|
||||
ldr r0, _08096EB4 @ =gUnk_080FD1F4
|
||||
str r0, [r4, #0x48]
|
||||
strb r3, [r4, #0x16]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x72
|
||||
strh r5, [r0]
|
||||
adds r0, #0xb
|
||||
ldrb r0, [r0]
|
||||
lsrs r0, r0, #4
|
||||
subs r1, #0x2b
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
adds r0, r4, #0
|
||||
bl sub_080970F4
|
||||
ldr r1, _08096EB8 @ =gUnk_08123264
|
||||
ldrb r0, [r4, #0xa]
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r4, #0x1e]
|
||||
b _08096F04
|
||||
.align 2, 0
|
||||
_08096EB4: .4byte gUnk_080FD1F4
|
||||
_08096EB8: .4byte gUnk_08123264
|
||||
_08096EBC:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x7c
|
||||
ldrb r2, [r0]
|
||||
adds r0, #1
|
||||
ldrb r3, [r0]
|
||||
movs r1, #0xf
|
||||
adds r0, r1, #0
|
||||
ands r0, r3
|
||||
lsls r0, r0, #8
|
||||
ldr r3, _08096F08 @ =gRoomControls
|
||||
orrs r2, r0
|
||||
ldrh r0, [r3, #6]
|
||||
adds r2, r2, r0
|
||||
strh r2, [r4, #0x2e]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x7e
|
||||
ldrb r0, [r0]
|
||||
movs r2, #0x7f
|
||||
adds r2, r2, r4
|
||||
mov ip, r2
|
||||
ldrb r2, [r2]
|
||||
ands r1, r2
|
||||
lsls r1, r1, #8
|
||||
orrs r0, r1
|
||||
ldrh r3, [r3, #8]
|
||||
adds r0, r0, r3
|
||||
strh r0, [r4, #0x32]
|
||||
mov r5, ip
|
||||
ldrb r0, [r5]
|
||||
lsrs r0, r0, #4
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_080971E0
|
||||
_08096F04:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08096F08: .4byte gRoomControls
|
||||
|
||||
thumb_func_start sub_08096F0C
|
||||
sub_08096F0C: @ 0x08096F0C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08097194
|
||||
cmp r0, #0
|
||||
bne _08096F2E
|
||||
adds r0, r4, #0
|
||||
bl sub_08097008
|
||||
cmp r0, #0
|
||||
beq _08096F28
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
b _08096F2E
|
||||
_08096F28:
|
||||
adds r0, r4, #0
|
||||
bl sub_08078930
|
||||
_08096F2E:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08096F30
|
||||
sub_08096F30: @ 0x08096F30
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
adds r0, #0x76
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08096F44
|
||||
adds r0, r2, #0
|
||||
bl sub_08097144
|
||||
b _08096F62
|
||||
_08096F44:
|
||||
ldr r0, _08096F64 @ =gPlayerState
|
||||
ldrb r0, [r0, #5]
|
||||
cmp r0, #0
|
||||
bne _08096F50
|
||||
movs r0, #6
|
||||
strb r0, [r2, #0xd]
|
||||
_08096F50:
|
||||
ldr r0, _08096F68 @ =gUnk_0812326C
|
||||
ldrb r1, [r2, #0xd]
|
||||
subs r1, #5
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r0
|
||||
ldr r1, [r1]
|
||||
adds r0, r2, #0
|
||||
bl _call_via_r1
|
||||
_08096F62:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08096F64: .4byte gPlayerState
|
||||
_08096F68: .4byte gUnk_0812326C
|
||||
|
||||
thumb_func_start sub_08096F6C
|
||||
sub_08096F6C: @ 0x08096F6C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x72
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _08096F98
|
||||
movs r0, #1
|
||||
strh r0, [r1]
|
||||
ldr r1, _08096FD8 @ =gPlayerEntity
|
||||
ldrb r0, [r1, #0x14]
|
||||
ldr r2, _08096FDC @ =gUnk_08123274
|
||||
adds r0, r0, r2
|
||||
movs r2, #0
|
||||
ldrsb r2, [r0, r2]
|
||||
lsls r2, r2, #0x10
|
||||
movs r3, #1
|
||||
ldrsb r3, [r0, r3]
|
||||
lsls r3, r3, #0x10
|
||||
adds r0, r4, #0
|
||||
bl PositionRelative
|
||||
_08096F98:
|
||||
adds r0, r4, #0
|
||||
bl sub_08097008
|
||||
bl sub_080896B0
|
||||
cmp r0, #0
|
||||
beq _08096FD4
|
||||
ldr r2, _08096FE0 @ =gPlayerState
|
||||
movs r3, #0
|
||||
movs r0, #0x10
|
||||
strb r0, [r2, #0xc]
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x38
|
||||
movs r0, #0x20
|
||||
strb r0, [r1]
|
||||
ldr r0, [r2, #0x30]
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
str r0, [r2, #0x30]
|
||||
ldr r0, _08096FD8 @ =gPlayerEntity
|
||||
strh r3, [r0, #0x2c]
|
||||
strh r3, [r0, #0x30]
|
||||
ldrb r0, [r0, #0x14]
|
||||
movs r1, #4
|
||||
eors r0, r1
|
||||
lsls r0, r0, #2
|
||||
strb r0, [r4, #0x15]
|
||||
adds r0, r4, #0
|
||||
bl sub_08097098
|
||||
_08096FD4:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08096FD8: .4byte gPlayerEntity
|
||||
_08096FDC: .4byte gUnk_08123274
|
||||
_08096FE0: .4byte gPlayerState
|
||||
|
||||
thumb_func_start sub_08096FE4
|
||||
sub_08096FE4: @ 0x08096FE4
|
||||
movs r2, #0
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xc]
|
||||
adds r0, #0x72
|
||||
strh r2, [r0]
|
||||
bx lr
|
||||
|
||||
thumb_func_start sub_08096FF0
|
||||
sub_08096FF0: @ 0x08096FF0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_08097144
|
||||
cmp r0, #0
|
||||
beq _08097000
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
_08097000:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start nullsub_122
|
||||
nullsub_122: @ 0x08097004
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08097008
|
||||
sub_08097008: @ 0x08097008
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
adds r0, #0x74
|
||||
ldrh r0, [r0]
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl GetTileType
|
||||
adds r4, r0, #0
|
||||
ldr r0, _08097048 @ =0x00004036
|
||||
cmp r4, r0
|
||||
beq _08097070
|
||||
adds r0, r4, #0
|
||||
bl sub_08097074
|
||||
cmp r0, #1
|
||||
beq _0809704C
|
||||
cmp r0, #2
|
||||
beq _08097062
|
||||
movs r0, #0xf
|
||||
movs r1, #4
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0809706A
|
||||
adds r0, r5, #0
|
||||
bl CopyPosition
|
||||
b _0809706A
|
||||
.align 2, 0
|
||||
_08097048: .4byte 0x00004036
|
||||
_0809704C:
|
||||
adds r0, r4, #0
|
||||
subs r0, #0x37
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
lsls r0, r0, #3
|
||||
strb r0, [r5, #0x15]
|
||||
adds r0, r5, #0
|
||||
bl sub_08097098
|
||||
movs r0, #1
|
||||
b _08097072
|
||||
_08097062:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x70
|
||||
strh r4, [r0]
|
||||
b _08097070
|
||||
_0809706A:
|
||||
adds r0, r5, #0
|
||||
bl DeleteEntity
|
||||
_08097070:
|
||||
movs r0, #0
|
||||
_08097072:
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_08097074
|
||||
sub_08097074: @ 0x08097074
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r1, _0809707C @ =gUnk_0812327C
|
||||
b _0809708C
|
||||
.align 2, 0
|
||||
_0809707C: .4byte gUnk_0812327C
|
||||
_08097080:
|
||||
ldrh r0, [r1]
|
||||
cmp r0, r2
|
||||
bne _0809708A
|
||||
ldrh r0, [r1, #2]
|
||||
b _08097094
|
||||
_0809708A:
|
||||
adds r1, #4
|
||||
_0809708C:
|
||||
ldrh r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _08097080
|
||||
movs r0, #0
|
||||
_08097094:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08097098
|
||||
sub_08097098: @ 0x08097098
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x76
|
||||
movs r0, #0x20
|
||||
strh r0, [r1]
|
||||
adds r0, #0xef
|
||||
bl EnqueueSFX
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x70
|
||||
ldrh r0, [r0]
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x74
|
||||
ldrh r1, [r5]
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x38
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
ldr r1, _080970F0 @ =gUnk_080B4488
|
||||
ldrb r0, [r6, #0x15]
|
||||
lsrs r0, r0, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
ldrh r5, [r5]
|
||||
adds r0, r0, r5
|
||||
ldrb r1, [r4]
|
||||
bl GetTileType
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, #0x79
|
||||
beq _080970E4
|
||||
cmp r0, #0x77
|
||||
bne _080970EC
|
||||
_080970E4:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
_080970EC:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_080970F0: .4byte gUnk_080B4488
|
||||
|
||||
thumb_func_start sub_080970F4
|
||||
sub_080970F4: @ 0x080970F4
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r6, r0]
|
||||
ldr r2, _0809713C @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r6, r4]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x74
|
||||
strh r1, [r4]
|
||||
ldrh r0, [r4]
|
||||
adds r5, r6, #0
|
||||
adds r5, #0x38
|
||||
ldrb r1, [r5]
|
||||
bl GetTileIndex
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x70
|
||||
strh r0, [r1]
|
||||
ldr r0, _08097140 @ =0x00004036
|
||||
ldrh r1, [r4]
|
||||
ldrb r2, [r5]
|
||||
bl SetTile
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0809713C: .4byte gRoomControls
|
||||
_08097140: .4byte 0x00004036
|
||||
|
||||
thumb_func_start sub_08097144
|
||||
sub_08097144: @ 0x08097144
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl LinearMoveUpdate
|
||||
adds r0, r4, #0
|
||||
bl sub_0800445C
|
||||
adds r0, r4, #0
|
||||
bl sub_080002B8
|
||||
cmp r0, #0x19
|
||||
bne _08097164
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
_08097164:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x76
|
||||
ldrh r0, [r1]
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bne _08097190
|
||||
adds r0, r4, #0
|
||||
bl sub_08097194
|
||||
cmp r0, #0
|
||||
bne _08097190
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #4
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_080970F4
|
||||
movs r0, #1
|
||||
b _08097192
|
||||
_08097190:
|
||||
movs r0, #0
|
||||
_08097192:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08097194
|
||||
sub_08097194: @ 0x08097194
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0800442E
|
||||
cmp r0, #0
|
||||
beq _080971A4
|
||||
movs r0, #1
|
||||
b _080971DE
|
||||
_080971A4:
|
||||
adds r0, r4, #0
|
||||
bl GetTileTypeByEntity
|
||||
adds r1, r0, #0
|
||||
subs r0, #0x71
|
||||
cmp r0, #1
|
||||
bls _080971B8
|
||||
ldr r0, _080971D4 @ =0x00004020
|
||||
cmp r1, r0
|
||||
bne _080971DC
|
||||
_080971B8:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl SetFlag
|
||||
ldr r0, _080971D8 @ =0x0000010B
|
||||
bl EnqueueSFX
|
||||
adds r0, r4, #0
|
||||
bl sub_080971E0
|
||||
movs r0, #1
|
||||
b _080971DE
|
||||
.align 2, 0
|
||||
_080971D4: .4byte 0x00004020
|
||||
_080971D8: .4byte 0x0000010B
|
||||
_080971DC:
|
||||
movs r0, #0
|
||||
_080971DE:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_080971E0
|
||||
sub_080971E0: @ 0x080971E0
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
movs r0, #0xf
|
||||
movs r1, #0x11
|
||||
movs r2, #0x40
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08097202
|
||||
ldr r2, _0809727C @ =0xFFF80000
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #0xa
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl PositionRelative
|
||||
_08097202:
|
||||
movs r0, #0xf
|
||||
movs r1, #0x11
|
||||
movs r2, #0x40
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08097222
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #0xc
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #0xa
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl PositionRelative
|
||||
_08097222:
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #1
|
||||
beq _08097284
|
||||
cmp r0, #1
|
||||
ble _08097234
|
||||
cmp r0, #2
|
||||
beq _080972C4
|
||||
cmp r0, #3
|
||||
beq _08097304
|
||||
_08097234:
|
||||
movs r0, #4
|
||||
strb r0, [r5, #0xc]
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0x1e]
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r5, r0]
|
||||
ldr r2, _08097280 @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r4, #0x32
|
||||
ldrsh r0, [r5, r4]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x38
|
||||
ldrb r2, [r0]
|
||||
movs r0, #0
|
||||
bl SetTile
|
||||
_08097274:
|
||||
bl DeleteThisEntity
|
||||
b _08097346
|
||||
.align 2, 0
|
||||
_0809727C: .4byte 0xFFF80000
|
||||
_08097280: .4byte gRoomControls
|
||||
_08097284:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r3, _080972C0 @ =gRoomControls
|
||||
ldrh r1, [r3, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r4, r0, #4
|
||||
movs r2, #0x3f
|
||||
ands r4, r2
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r3, #8]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
adds r0, r4, #0
|
||||
bl sub_08097348
|
||||
cmp r0, #0
|
||||
bne _08097274
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x38
|
||||
ldrb r2, [r0]
|
||||
movs r0, #0x73
|
||||
adds r1, r4, #0
|
||||
bl SetTileType
|
||||
b _08097274
|
||||
.align 2, 0
|
||||
_080972C0: .4byte gRoomControls
|
||||
_080972C4:
|
||||
movs r0, #0x2f
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08097274
|
||||
ldrh r2, [r5, #0x2e]
|
||||
movs r1, #0x10
|
||||
rsbs r1, r1, #0
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
adds r0, #8
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrh r0, [r5, #0x32]
|
||||
ands r1, r0
|
||||
adds r1, #8
|
||||
strh r1, [r4, #0x32]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x38
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x38
|
||||
strb r1, [r0]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x84
|
||||
ldrh r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
strh r1, [r0]
|
||||
b _08097274
|
||||
_08097304:
|
||||
movs r0, #0x2f
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08097342
|
||||
ldrh r2, [r5, #0x2e]
|
||||
movs r1, #0x10
|
||||
rsbs r1, r1, #0
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
adds r0, #8
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrh r0, [r5, #0x32]
|
||||
ands r1, r0
|
||||
adds r1, #8
|
||||
strh r1, [r4, #0x32]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x38
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x38
|
||||
strb r1, [r0]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x84
|
||||
ldrh r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
strh r1, [r0]
|
||||
_08097342:
|
||||
bl DeleteThisEntity
|
||||
_08097346:
|
||||
pop {r4, r5, pc}
|
||||
|
||||
thumb_func_start sub_08097348
|
||||
sub_08097348: @ 0x08097348
|
||||
push {lr}
|
||||
adds r3, r0, #0
|
||||
ldr r1, _08097360 @ =gSmallChests
|
||||
movs r2, #0
|
||||
_08097350:
|
||||
ldrh r0, [r1, #4]
|
||||
cmp r0, r3
|
||||
bne _08097364
|
||||
ldrb r0, [r1, #1]
|
||||
bl CheckLocalFlag
|
||||
b _0809736E
|
||||
.align 2, 0
|
||||
_08097360: .4byte gSmallChests
|
||||
_08097364:
|
||||
adds r2, #1
|
||||
adds r1, #8
|
||||
cmp r2, #7
|
||||
bls _08097350
|
||||
movs r0, #0
|
||||
_0809736E:
|
||||
pop {pc}
|
||||
@@ -1,651 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start ObjectOnSpinyBeetle
|
||||
ObjectOnSpinyBeetle: @ 0x08098544
|
||||
push {lr}
|
||||
ldr r2, _08098558 @ =gUnk_0812350C
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08098558: .4byte gUnk_0812350C
|
||||
|
||||
thumb_func_start sub_0809855C
|
||||
sub_0809855C: @ 0x0809855C
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
movs r3, #0
|
||||
movs r5, #1
|
||||
strb r5, [r4, #0xc]
|
||||
ldrb r0, [r4, #0x10]
|
||||
movs r2, #0x80
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x10]
|
||||
movs r0, #0x29
|
||||
adds r0, r0, r4
|
||||
mov ip, r0
|
||||
ldrb r1, [r0]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #6
|
||||
orrs r0, r1
|
||||
mov r1, ip
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r4, #0x19]
|
||||
movs r0, #0x3f
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x19]
|
||||
strb r3, [r4, #0xf]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3f
|
||||
movs r0, #0x6e
|
||||
strb r0, [r1]
|
||||
subs r1, #4
|
||||
movs r0, #0x86
|
||||
strb r0, [r1]
|
||||
strb r3, [r4, #0x16]
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
beq _080985AC
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0x1c]
|
||||
b _080985AE
|
||||
_080985AC:
|
||||
strb r5, [r4, #0x1c]
|
||||
_080985AE:
|
||||
ldr r1, [r4, #0x50]
|
||||
adds r0, r4, #0
|
||||
bl SortEntityBelow
|
||||
adds r0, r4, #0
|
||||
bl sub_08098918
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080985C0
|
||||
sub_080985C0: @ 0x080985C0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080989E4
|
||||
cmp r0, #0
|
||||
bne _080985CE
|
||||
b _080986FC
|
||||
_080985CE:
|
||||
ldrb r0, [r0, #0xc]
|
||||
cmp r0, #4
|
||||
bls _080985D6
|
||||
b _080986E6
|
||||
_080985D6:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080985E6
|
||||
b _080986EE
|
||||
_080985E6:
|
||||
movs r0, #0x3f
|
||||
ands r0, r1
|
||||
subs r0, #4
|
||||
cmp r0, #0x1c
|
||||
bls _080985F2
|
||||
b _08098702
|
||||
_080985F2:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _080985FC @ =_08098600
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080985FC: .4byte _08098600
|
||||
_08098600: @ jump table
|
||||
.4byte _080986C4 @ case 0
|
||||
.4byte _080986C4 @ case 1
|
||||
.4byte _080986C4 @ case 2
|
||||
.4byte _08098702 @ case 3
|
||||
.4byte _080986C4 @ case 4
|
||||
.4byte _080986C4 @ case 5
|
||||
.4byte _080986C4 @ case 6
|
||||
.4byte _080986C4 @ case 7
|
||||
.4byte _080986C4 @ case 8
|
||||
.4byte _080986C4 @ case 9
|
||||
.4byte _08098702 @ case 10
|
||||
.4byte _0809867E @ case 11
|
||||
.4byte _080986C4 @ case 12
|
||||
.4byte _080986C4 @ case 13
|
||||
.4byte _080986C4 @ case 14
|
||||
.4byte _08098674 @ case 15
|
||||
.4byte _080986E0 @ case 16
|
||||
.4byte _08098702 @ case 17
|
||||
.4byte _080986E0 @ case 18
|
||||
.4byte _08098702 @ case 19
|
||||
.4byte _080986C4 @ case 20
|
||||
.4byte _080986C4 @ case 21
|
||||
.4byte _080986C4 @ case 22
|
||||
.4byte _08098702 @ case 23
|
||||
.4byte _08098702 @ case 24
|
||||
.4byte _0809867E @ case 25
|
||||
.4byte _08098702 @ case 26
|
||||
.4byte _08098702 @ case 27
|
||||
.4byte _080986E0 @ case 28
|
||||
_08098674:
|
||||
movs r1, #0
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
strb r1, [r4, #0xd]
|
||||
b _08098702
|
||||
_0809867E:
|
||||
movs r2, #0
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0xa8
|
||||
lsls r0, r0, #0xa
|
||||
str r0, [r4, #0x20]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x63
|
||||
strb r2, [r0]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #0x31
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #0x10
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x29
|
||||
ldrb r1, [r3]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #0x18
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
ldr r0, [r4, #0x50]
|
||||
str r2, [r0, #0x54]
|
||||
adds r0, r4, #0
|
||||
bl sub_080988E8
|
||||
b _08098702
|
||||
_080986C4:
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
beq _080986E6
|
||||
ldr r0, _080986DC @ =gPlayerState
|
||||
adds r0, #0xac
|
||||
ldrh r1, [r0]
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08098702
|
||||
b _080986E6
|
||||
.align 2, 0
|
||||
_080986DC: .4byte gPlayerState
|
||||
_080986E0:
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _08098702
|
||||
_080986E6:
|
||||
adds r0, r4, #0
|
||||
bl sub_080989C0
|
||||
b _08098702
|
||||
_080986EE:
|
||||
adds r0, r4, #0
|
||||
bl sub_08098918
|
||||
adds r0, r4, #0
|
||||
bl sub_08078930
|
||||
b _08098702
|
||||
_080986FC:
|
||||
adds r0, r4, #0
|
||||
bl sub_080989C0
|
||||
_08098702:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08098704
|
||||
sub_08098704: @ 0x08098704
|
||||
push {lr}
|
||||
ldr r2, _08098718 @ =gUnk_08123524
|
||||
ldrb r1, [r0, #0xd]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08098718: .4byte gUnk_08123524
|
||||
|
||||
thumb_func_start sub_0809871C
|
||||
sub_0809871C: @ 0x0809871C
|
||||
adds r3, r0, #0
|
||||
ldrb r1, [r3, #0x10]
|
||||
movs r0, #0x80
|
||||
movs r2, #0
|
||||
orrs r0, r1
|
||||
strb r0, [r3, #0x10]
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x3c
|
||||
movs r0, #7
|
||||
strb r0, [r1]
|
||||
adds r1, #3
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
ldr r0, _08098754 @ =gPlayerEntity
|
||||
adds r0, #0x3b
|
||||
ldrb r0, [r0]
|
||||
subs r1, #4
|
||||
strb r0, [r1]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x63
|
||||
strb r2, [r0]
|
||||
ldr r0, [r3, #0x50]
|
||||
str r2, [r0, #0x54]
|
||||
ldrb r0, [r3, #0xd]
|
||||
adds r0, #1
|
||||
strb r0, [r3, #0xd]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_08098754: .4byte gPlayerEntity
|
||||
|
||||
thumb_func_start nullsub_533
|
||||
nullsub_533: @ 0x08098758
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0809875C
|
||||
sub_0809875C: @ 0x0809875C
|
||||
adds r0, #0x29
|
||||
ldrb r2, [r0]
|
||||
movs r1, #0x39
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r2
|
||||
movs r2, #0x18
|
||||
orrs r1, r2
|
||||
strb r1, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08098770
|
||||
sub_08098770: @ 0x08098770
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080043E8
|
||||
cmp r0, #2
|
||||
beq _0809878C
|
||||
cmp r0, #2
|
||||
bhi _08098786
|
||||
cmp r0, #1
|
||||
beq _08098792
|
||||
b _080987A4
|
||||
_08098786:
|
||||
cmp r0, #3
|
||||
beq _08098798
|
||||
b _080987A4
|
||||
_0809878C:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xb
|
||||
b _0809879C
|
||||
_08098792:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
b _0809879C
|
||||
_08098798:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xc
|
||||
_0809879C:
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
b _080987AC
|
||||
_080987A4:
|
||||
adds r0, r4, #0
|
||||
bl sub_080989C0
|
||||
b _080987B0
|
||||
_080987AC:
|
||||
bl DeleteThisEntity
|
||||
_080987B0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080987B4
|
||||
sub_080987B4: @ 0x080987B4
|
||||
push {lr}
|
||||
bl DeleteThisEntity
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_080987BC
|
||||
sub_080987BC: @ 0x080987BC
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
ldr r0, _080987D0 @ =gPlayerState
|
||||
ldrb r0, [r0, #5]
|
||||
cmp r0, #0
|
||||
bne _080987CE
|
||||
adds r0, r1, #0
|
||||
bl sub_080987D4
|
||||
_080987CE:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080987D0: .4byte gPlayerState
|
||||
|
||||
thumb_func_start sub_080987D4
|
||||
sub_080987D4: @ 0x080987D4
|
||||
movs r2, #0
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xc]
|
||||
strb r2, [r0, #0xd]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080987E0
|
||||
sub_080987E0: @ 0x080987E0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _0809880C @ =gUnk_08123540
|
||||
ldrb r0, [r4, #0xd]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #1
|
||||
bhi _0809880A
|
||||
adds r0, r4, #0
|
||||
bl sub_080989E4
|
||||
cmp r0, #0
|
||||
bne _0809880A
|
||||
adds r0, r4, #0
|
||||
bl sub_080989C0
|
||||
_0809880A:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0809880C: .4byte gUnk_08123540
|
||||
|
||||
thumb_func_start sub_08098810
|
||||
sub_08098810: @ 0x08098810
|
||||
movs r2, #0
|
||||
movs r1, #1
|
||||
strb r1, [r0, #0xd]
|
||||
movs r1, #0x30
|
||||
strb r1, [r0, #0x1d]
|
||||
strb r2, [r0, #0xe]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08098820
|
||||
sub_08098820: @ 0x08098820
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r0, _0809884C @ =gPlayerState
|
||||
ldrb r1, [r0, #0x1c]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0809883E
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0x13
|
||||
beq _08098850
|
||||
_0809883E:
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x62
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
movs r0, #1
|
||||
strb r0, [r2, #0xc]
|
||||
b _08098856
|
||||
.align 2, 0
|
||||
_0809884C: .4byte gPlayerState
|
||||
_08098850:
|
||||
adds r0, r2, #0
|
||||
bl sub_0806F4E8
|
||||
_08098856:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_08098858
|
||||
sub_08098858: @ 0x08098858
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0xe]
|
||||
cmp r1, #0
|
||||
bne _08098878
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x62
|
||||
strb r1, [r0]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x63
|
||||
movs r0, #0xfe
|
||||
strb r0, [r2]
|
||||
ldr r0, [r4, #0x50]
|
||||
str r1, [r0, #0x54]
|
||||
_08098878:
|
||||
ldr r0, _0809889C @ =gPlayerState
|
||||
ldrb r1, [r0, #0x1c]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _08098892
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0x13
|
||||
beq _080988A0
|
||||
_08098892:
|
||||
adds r0, r4, #0
|
||||
bl sub_080989C0
|
||||
b _080988B4
|
||||
.align 2, 0
|
||||
_0809889C: .4byte gPlayerState
|
||||
_080988A0:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F3E4
|
||||
cmp r0, #0
|
||||
beq _080988B4
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _080988B4
|
||||
bl DeleteThisEntity
|
||||
_080988B4:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080988B8
|
||||
sub_080988B8: @ 0x080988B8
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r0, _080988CC @ =gPlayerState
|
||||
ldrb r0, [r0, #0x1c]
|
||||
cmp r0, #0
|
||||
bne _080988D0
|
||||
adds r0, r2, #0
|
||||
bl sub_080989C0
|
||||
b _080988D8
|
||||
.align 2, 0
|
||||
_080988CC: .4byte gPlayerState
|
||||
_080988D0:
|
||||
ldrb r1, [r2, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r2, #0x10]
|
||||
_080988D8:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start nullsub_123
|
||||
nullsub_123: @ 0x080988DC
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080988E0
|
||||
sub_080988E0: @ 0x080988E0
|
||||
push {lr}
|
||||
bl sub_080989C0
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_080988E8
|
||||
sub_080988E8: @ 0x080988E8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, [r4, #0x20]
|
||||
cmp r0, #0
|
||||
bge _080988FA
|
||||
ldrb r0, [r4, #0x18]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
_080988FA:
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
adds r0, r4, #0
|
||||
bl GravityUpdate
|
||||
cmp r0, #0
|
||||
bne _0809890E
|
||||
adds r0, r4, #0
|
||||
bl sub_080989C0
|
||||
_0809890E:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08098910
|
||||
sub_08098910: @ 0x08098910
|
||||
push {lr}
|
||||
bl sub_080989C0
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_08098918
|
||||
sub_08098918: @ 0x08098918
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080989E4
|
||||
adds r6, r0, #0
|
||||
cmp r6, #0
|
||||
bne _0809892E
|
||||
adds r0, r4, #0
|
||||
bl sub_080989C0
|
||||
b _080989BC
|
||||
_0809892E:
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
ldrb r1, [r6, #0x10]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r5, r0, #0x18
|
||||
cmp r5, #0
|
||||
beq _08098990
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
bne _08098968
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r1, [r4, #0x50]
|
||||
adds r0, r4, #0
|
||||
bl SortEntityBelow
|
||||
_08098968:
|
||||
ldr r2, _0809898C @ =gUnk_08123558
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
subs r0, #8
|
||||
movs r1, #0
|
||||
strh r0, [r4, #0x36]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x63
|
||||
strb r1, [r0]
|
||||
b _080989BC
|
||||
.align 2, 0
|
||||
_0809898C: .4byte gUnk_08123558
|
||||
_08098990:
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
beq _080989B2
|
||||
strb r5, [r4, #0xf]
|
||||
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]
|
||||
ldr r1, [r4, #0x50]
|
||||
adds r0, r4, #0
|
||||
bl SortEntityBelow
|
||||
_080989B2:
|
||||
strh r5, [r4, #0x36]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
_080989BC:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080989C0
|
||||
sub_080989C0: @ 0x080989C0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080989E4
|
||||
cmp r0, #0
|
||||
beq _080989D2
|
||||
ldr r1, [r4, #0x50]
|
||||
movs r0, #0
|
||||
str r0, [r1, #0x54]
|
||||
_080989D2:
|
||||
ldrb r1, [r4, #0xa]
|
||||
adds r1, #3
|
||||
adds r0, r4, #0
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
bl DeleteThisEntity
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_080989E4
|
||||
sub_080989E4: @ 0x080989E4
|
||||
push {lr}
|
||||
ldr r1, [r0, #0x50]
|
||||
cmp r1, #0
|
||||
beq _080989F4
|
||||
ldr r0, [r1, #4]
|
||||
cmp r0, #0
|
||||
bne _080989F4
|
||||
movs r1, #0
|
||||
_080989F4:
|
||||
adds r0, r1, #0
|
||||
pop {pc}
|
||||
@@ -42272,51 +42272,6 @@
|
||||
"size": 8,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F838.bin",
|
||||
"start": 1177656,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F840.bin",
|
||||
"start": 1177664,
|
||||
"size": 16
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F850.bin",
|
||||
"start": 1177680,
|
||||
"size": 4
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F854.bin",
|
||||
"start": 1177684,
|
||||
"size": 18
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F866.bin",
|
||||
"start": 1177702,
|
||||
"size": 26
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F880.bin",
|
||||
"start": 1177728,
|
||||
"size": 10
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F88A.bin",
|
||||
"start": 1177738,
|
||||
"size": 14
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F8A8.bin",
|
||||
"start": 1177768,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "chestSpawner/gUnk_0811F8B0.bin",
|
||||
"start": 1177776,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_ObjectD_0.bin",
|
||||
"start": 1177880,
|
||||
@@ -43589,21 +43544,6 @@
|
||||
"size": 4,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "bossDoor/gUnk_081214F4.bin",
|
||||
"start": 1185012,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "bossDoor/gUnk_081214FC.bin",
|
||||
"start": 1185020,
|
||||
"size": 16
|
||||
},
|
||||
{
|
||||
"path": "bossDoor/gUnk_0812150C.bin",
|
||||
"start": 1185036,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "object3A/gUnk_081215E8.bin",
|
||||
"start": 1185256,
|
||||
@@ -43640,21 +43580,6 @@
|
||||
"start": 1185480,
|
||||
"size": 20
|
||||
},
|
||||
{
|
||||
"path": "object3E/gUnk_08121704.bin",
|
||||
"start": 1185540,
|
||||
"size": 28
|
||||
},
|
||||
{
|
||||
"path": "object3E/gUnk_08121720.bin",
|
||||
"start": 1185568,
|
||||
"size": 12
|
||||
},
|
||||
{
|
||||
"path": "object3E/gUnk_08121738.bin",
|
||||
"start": 1185592,
|
||||
"size": 24
|
||||
},
|
||||
{
|
||||
"path": "giantLeaf/gUnk_08121750.bin",
|
||||
"start": 1185616,
|
||||
@@ -43665,11 +43590,6 @@
|
||||
"start": 1185642,
|
||||
"size": 26
|
||||
},
|
||||
{
|
||||
"path": "fairy/gUnk_081217A4.bin",
|
||||
"start": 1185700,
|
||||
"size": 4
|
||||
},
|
||||
{
|
||||
"path": "object42/gUnk_081217B8.bin",
|
||||
"start": 1185720,
|
||||
@@ -44928,21 +44848,6 @@
|
||||
"start": 1192372,
|
||||
"size": 6
|
||||
},
|
||||
{
|
||||
"path": "objectOnPillar/gUnk_08123264.bin",
|
||||
"start": 1192548,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "objectOnPillar/gUnk_08123274.bin",
|
||||
"start": 1192564,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "objectOnPillar/gUnk_0812327C.bin",
|
||||
"start": 1192572,
|
||||
"size": 28
|
||||
},
|
||||
{
|
||||
"path": "mineralWaterSource/MineralWaterSourceParameters.bin",
|
||||
"start": 1192608,
|
||||
@@ -45040,11 +44945,6 @@
|
||||
"start": 1193212,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "objectOnSpinyBeetle/gUnk_08123558.bin",
|
||||
"start": 1193304,
|
||||
"size": 16
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_PicoBloom_0.bin",
|
||||
"start": 1193338,
|
||||
@@ -45226,11 +45126,6 @@
|
||||
"start": 1195152,
|
||||
"size": 40
|
||||
},
|
||||
{
|
||||
"path": "doubleBookshelf/gUnk_08123D68.bin",
|
||||
"start": 1195368,
|
||||
"size": 20
|
||||
},
|
||||
{
|
||||
"path": "object91/gUnk_08123DDC.bin",
|
||||
"start": 1195484,
|
||||
@@ -45501,11 +45396,6 @@
|
||||
"size": 20,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "objectA8/gUnk_0812484C.bin",
|
||||
"start": 1198156,
|
||||
"size": 4
|
||||
},
|
||||
{
|
||||
"path": "objectA9/gUnk_0812485C.bin",
|
||||
"start": 1198172,
|
||||
@@ -47350,61 +47240,6 @@
|
||||
"EU": -2484
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133918.bin",
|
||||
"start": 1259800,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133938.bin",
|
||||
"start": 1259832,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133958.bin",
|
||||
"start": 1259864,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133978.bin",
|
||||
"start": 1259896,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133998.bin",
|
||||
"start": 1259928,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_081339B8.bin",
|
||||
"start": 1259960,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_081339D8.bin",
|
||||
"start": 1259992,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_081339F8.bin",
|
||||
"start": 1260024,
|
||||
"size": 32
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133A40.bin",
|
||||
"start": 1260096,
|
||||
"size": 26
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133A5A.bin",
|
||||
"start": 1260122,
|
||||
"size": 13
|
||||
},
|
||||
{
|
||||
"path": "data_08132B30/gUnk_08133A67.bin",
|
||||
"start": 1260135,
|
||||
"size": 1249
|
||||
},
|
||||
{
|
||||
"path": "exit_lists/gExitList_NoExitList.bin",
|
||||
"start": 1261512,
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_081214D8:: @ 081214D8
|
||||
.4byte sub_0808C1FC
|
||||
.4byte sub_0808C320
|
||||
.4byte sub_0808C348
|
||||
.4byte sub_0808C384
|
||||
.4byte sub_0808C3BC
|
||||
.4byte sub_0808C414
|
||||
.4byte sub_0808C4A4
|
||||
|
||||
gUnk_081214F4:: @ 081214F4
|
||||
.incbin "bossDoor/gUnk_081214F4.bin"
|
||||
|
||||
gUnk_081214FC:: @ 081214FC
|
||||
.incbin "bossDoor/gUnk_081214FC.bin"
|
||||
|
||||
gUnk_0812150C:: @ 0812150C
|
||||
.incbin "bossDoor/gUnk_0812150C.bin"
|
||||
@@ -1,64 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_0811F7E8:: @ 0811F7E8
|
||||
.4byte sub_08083DF0
|
||||
.4byte sub_08083DF0
|
||||
.4byte sub_08083E08
|
||||
.4byte sub_08083E08
|
||||
.4byte sub_08083E08
|
||||
.4byte sub_08083E08
|
||||
.4byte sub_08083DF0
|
||||
.4byte sub_08083DF0
|
||||
|
||||
gUnk_0811F808:: @ 0811F808
|
||||
.4byte sub_08084190
|
||||
.4byte sub_0808420C
|
||||
.4byte sub_08084224
|
||||
.4byte sub_0808427C
|
||||
|
||||
gUnk_0811F818:: @ 0811F818
|
||||
.4byte sub_08083E4C
|
||||
.4byte sub_08083EB0
|
||||
.4byte sub_08083F14
|
||||
.4byte sub_08083FEC
|
||||
.4byte sub_08084024
|
||||
.4byte sub_08084184
|
||||
.4byte sub_0808414C
|
||||
.4byte nullsub_114
|
||||
|
||||
gUnk_0811F838:: @ 0811F838
|
||||
.incbin "chestSpawner/gUnk_0811F838.bin"
|
||||
|
||||
gUnk_0811F840:: @ 0811F840
|
||||
.incbin "chestSpawner/gUnk_0811F840.bin"
|
||||
|
||||
gUnk_0811F850:: @ 0811F850
|
||||
.incbin "chestSpawner/gUnk_0811F850.bin"
|
||||
|
||||
gUnk_0811F854:: @ 0811F854
|
||||
.incbin "chestSpawner/gUnk_0811F854.bin"
|
||||
|
||||
gUnk_0811F866:: @ 0811F866
|
||||
.incbin "chestSpawner/gUnk_0811F866.bin"
|
||||
|
||||
gUnk_0811F880:: @ 0811F880
|
||||
.incbin "chestSpawner/gUnk_0811F880.bin"
|
||||
|
||||
gUnk_0811F88A:: @ 0811F88A
|
||||
.incbin "chestSpawner/gUnk_0811F88A.bin"
|
||||
|
||||
gUnk_0811F898:: @ 0811F898
|
||||
.4byte gUnk_0811F854
|
||||
.4byte gUnk_0811F866
|
||||
.4byte gUnk_0811F880
|
||||
.4byte gUnk_0811F88A
|
||||
|
||||
gUnk_0811F8A8:: @ 0811F8A8
|
||||
.incbin "chestSpawner/gUnk_0811F8A8.bin"
|
||||
|
||||
gUnk_0811F8B0:: @ 0811F8B0
|
||||
.incbin "chestSpawner/gUnk_0811F8B0.bin"
|
||||
@@ -1,14 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08123D58:: @ 08123D58
|
||||
.4byte sub_0809AF74
|
||||
.4byte sub_0809B034
|
||||
.4byte sub_0809B050
|
||||
.4byte sub_0809B0A8
|
||||
|
||||
gUnk_08123D68:: @ 08123D68
|
||||
.incbin "doubleBookshelf/gUnk_08123D68.bin"
|
||||
@@ -1,20 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08121784:: @ 08121784
|
||||
.4byte sub_0808D7B4
|
||||
.4byte sub_0808D844
|
||||
.4byte sub_0808D88C
|
||||
.4byte sub_0808D958
|
||||
.4byte sub_0808D998
|
||||
|
||||
gUnk_08121798:: @ 08121798
|
||||
.4byte sub_0808D784
|
||||
.4byte sub_0808D798
|
||||
.4byte sub_0808D7A0
|
||||
|
||||
gUnk_081217A4:: @ 081217A4
|
||||
.incbin "fairy/gUnk_081217A4.bin"
|
||||
@@ -1,20 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08122644:: @ 08122644
|
||||
.4byte sub_08092290
|
||||
.4byte sub_0809229C
|
||||
.4byte sub_080922E4
|
||||
|
||||
gUnk_08122650:: @ 08122650
|
||||
.4byte sub_08092368
|
||||
.4byte sub_080923A0
|
||||
.4byte sub_080923E4
|
||||
.4byte sub_08092420
|
||||
.4byte sub_0809246C
|
||||
.4byte sub_080924E4
|
||||
.4byte sub_08092530
|
||||
.4byte sub_08092590
|
||||
@@ -1,31 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_081216DC:: @ 081216DC
|
||||
.4byte sub_0808D0E0
|
||||
.4byte sub_0808D194
|
||||
.4byte sub_0808D194
|
||||
.4byte nullsub_521
|
||||
.4byte sub_0808D2FC
|
||||
.4byte sub_0808D360
|
||||
.4byte sub_0808D394
|
||||
.4byte sub_0808D408
|
||||
.4byte sub_0808D45C
|
||||
.4byte sub_0808D194
|
||||
|
||||
gUnk_08121704:: @ 08121704
|
||||
.incbin "object3E/gUnk_08121704.bin"
|
||||
|
||||
gUnk_08121720:: @ 08121720
|
||||
.incbin "object3E/gUnk_08121720.bin"
|
||||
|
||||
gUnk_0812172C:: @ 0812172C
|
||||
.4byte sub_0808D474
|
||||
.4byte sub_0808D518
|
||||
.4byte sub_0808D59C
|
||||
|
||||
gUnk_08121738:: @ 08121738
|
||||
.incbin "object3E/gUnk_08121738.bin"
|
||||
@@ -1,22 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08124824:: @ 08124824
|
||||
.4byte sub_0809FABC
|
||||
.4byte sub_0809FB38
|
||||
.4byte sub_0809FB78
|
||||
.4byte sub_0809FC28
|
||||
.4byte sub_0809FD00
|
||||
.4byte sub_0809FD4C
|
||||
.4byte sub_0809FD94
|
||||
|
||||
gUnk_08124840:: @ 08124840
|
||||
.4byte sub_0809FB90
|
||||
.4byte sub_0809FBA4
|
||||
.4byte sub_0809FBD4
|
||||
|
||||
gUnk_0812484C:: @ 0812484C
|
||||
.incbin "objectA8/gUnk_0812484C.bin"
|
||||
@@ -1,25 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08123250:: @ 08123250
|
||||
.4byte sub_08096E28
|
||||
.4byte sub_08096F0C
|
||||
.4byte sub_08096F30
|
||||
.4byte sub_08096FF0
|
||||
.4byte nullsub_122
|
||||
|
||||
gUnk_08123264:: @ 08123264
|
||||
.incbin "objectOnPillar/gUnk_08123264.bin"
|
||||
|
||||
gUnk_0812326C:: @ 0812326C
|
||||
.4byte sub_08096F6C
|
||||
.4byte sub_08096FE4
|
||||
|
||||
gUnk_08123274:: @ 08123274
|
||||
.incbin "objectOnPillar/gUnk_08123274.bin"
|
||||
|
||||
gUnk_0812327C:: @ 0812327C
|
||||
.incbin "objectOnPillar/gUnk_0812327C.bin"
|
||||
@@ -1,33 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_0812350C:: @ 0812350C
|
||||
.4byte sub_0809855C
|
||||
.4byte sub_080985C0
|
||||
.4byte sub_08098704
|
||||
.4byte sub_080987E0
|
||||
.4byte sub_080988E8
|
||||
.4byte sub_08098910
|
||||
|
||||
gUnk_08123524:: @ 08123524
|
||||
.4byte sub_0809871C
|
||||
.4byte nullsub_533
|
||||
.4byte sub_0809875C
|
||||
.4byte sub_08098770
|
||||
.4byte sub_080987B4
|
||||
.4byte sub_080987BC
|
||||
.4byte sub_080987D4
|
||||
|
||||
gUnk_08123540:: @ 08123540
|
||||
.4byte sub_08098810
|
||||
.4byte sub_08098820
|
||||
.4byte sub_08098858
|
||||
.4byte sub_080988B8
|
||||
.4byte nullsub_123
|
||||
.4byte sub_080988E0
|
||||
|
||||
gUnk_08123558:: @ 08123558
|
||||
.incbin "objectOnSpinyBeetle/gUnk_08123558.bin"
|
||||
+24
-27
@@ -14,9 +14,12 @@
|
||||
|
||||
// Identified - to be sorted into header files
|
||||
extern void CalculateEntityTileCollisions(Entity*, u32, u32);
|
||||
extern u32 CheckOnScreen(Entity*);
|
||||
extern u32 CheckRegionOnScreen(u32, u32, u32, u32);
|
||||
extern void CopyOAM(void);
|
||||
extern void CreateChestSpawner(Entity*);
|
||||
extern void CreateItemOnGround(Entity*);
|
||||
extern void CreateMagicSparkles(u32, u32, u32);
|
||||
extern void CreateRandomItemDrop(Entity*, s32);
|
||||
extern void DrawDirect(u32, u32); // trampoline to sub_080B27F4
|
||||
extern void DrawEntities(void);
|
||||
@@ -26,10 +29,11 @@ extern u32 EntityWithinDistance(Entity*, s32, s32, s32);
|
||||
extern void FlushSprites(void);
|
||||
extern void GenericKnockback2(Entity*);
|
||||
extern LayerStruct* GetLayerByIndex(u32);
|
||||
extern u32 GetRandomByWeight(const u8*);
|
||||
extern u32 GetTileIndex(u32, u32);
|
||||
extern u32 IsColliding(Entity*, Entity*);
|
||||
extern u32 IsColliding(Entity*, Entity*);
|
||||
extern u32 IsCollidingPlayer(Entity*);
|
||||
extern void GiveItem(u32, u32);
|
||||
extern bool32 IsColliding(Entity*, Entity*);
|
||||
extern bool32 IsCollidingPlayer(Entity*);
|
||||
extern bool32 IsProjectileOffScreen(Entity*);
|
||||
extern bool32 IsTileCollision(u8*, s32, s32, u32);
|
||||
extern void LinearMoveAngle(Entity*, u32, u32);
|
||||
@@ -38,7 +42,6 @@ extern bool32 LoadFixedGFX(Entity*, u32);
|
||||
extern bool32 LoadSwapGFX(Entity*, u16, u32);
|
||||
extern void MenuFadeIn(u32, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern u32 PlayerInRange(Entity*, u32, u32);
|
||||
extern bool32 ProcessMovement1(Entity*);
|
||||
extern bool32 ProcessMovement12(Entity*);
|
||||
extern bool32 ProcessMovement2(Entity*);
|
||||
@@ -49,8 +52,6 @@ extern bool32 ProcessMovement6(Entity*);
|
||||
extern bool32 ProcessMovementInternal(Entity*, s32, s32, u32);
|
||||
extern void SetDirtTile(u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void SoundReqClipped(Entity*, u32);
|
||||
extern void TryLoadPrologueHyruleTown(void);
|
||||
extern void UnloadOBJPalette(Entity*);
|
||||
extern void UpdateItemAnim(ItemBehavior*);
|
||||
@@ -65,6 +66,7 @@ extern u32 sub_080002CC(Entity*, s32, s32);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern u32 sub_080002E0(u32, u32);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern void sub_08001318(Entity*);
|
||||
extern u32 sub_0800132C(Entity*, Entity*);
|
||||
extern u32 sub_080040A2(Entity*);
|
||||
extern u32 sub_080040D8(Entity*, u8*, s32, s32);
|
||||
@@ -87,6 +89,7 @@ extern void sub_0801AF18(u8*, u32, u32);
|
||||
extern void sub_0801AFE4(void);
|
||||
extern void sub_0801C1D4(void);
|
||||
extern void sub_0801E104(void);
|
||||
extern void sub_08027870(Entity*);
|
||||
extern void sub_08030118(u32);
|
||||
extern u32 sub_08031E04(Entity*);
|
||||
extern void sub_08031E48(Entity*, Entity*);
|
||||
@@ -95,12 +98,14 @@ extern u32 sub_080322A4(Entity*);
|
||||
extern void sub_080322E8(Entity*);
|
||||
extern void sub_08032338(Entity*);
|
||||
extern void sub_0803C0AC(Entity*);
|
||||
extern void sub_08049CF4(Entity*);
|
||||
extern Entity* sub_08049DF4(u32);
|
||||
extern u32 sub_08049EE4(Entity*);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern u32 sub_08049F84(Entity*, u32);
|
||||
extern u32 sub_08049FA0(Entity*);
|
||||
extern u32 sub_08049FDC(Entity*, u32);
|
||||
extern u32 sub_0804A024(Entity*, u32, u32);
|
||||
extern u32 sub_0804A044(Entity*, Entity*, u32);
|
||||
extern void sub_0804A720(Entity*);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
@@ -149,17 +154,20 @@ extern void sub_08077F50(ItemBehavior* beh, u32 arg1);
|
||||
extern void sub_080784C8();
|
||||
extern void sub_08078790(Entity*, u32);
|
||||
extern void sub_080787CC(Entity*);
|
||||
extern s32 sub_08078800(Entity*);
|
||||
extern void sub_08078850(Entity*, u32, u32, void*);
|
||||
extern s32 sub_0807887C(Entity*, u32, u32);
|
||||
extern void sub_080788E0(Entity*);
|
||||
extern s32 sub_08078904();
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08078954(Entity*);
|
||||
extern void sub_08078AC0(u32, u32, u32);
|
||||
extern void sub_08078B48(void);
|
||||
extern void sub_08078E84(Entity*, Entity*);
|
||||
extern void sub_08079184();
|
||||
extern void sub_0807919C();
|
||||
extern void sub_0807921C();
|
||||
extern void sub_080792BC(s32, u32, u32);
|
||||
extern u32 sub_0807953C(void);
|
||||
extern void sub_08079BD8(Entity*);
|
||||
extern u32 sub_08079D48();
|
||||
@@ -181,32 +189,21 @@ extern void sub_0808091C(const ScreenTransitionData*, u32);
|
||||
extern void sub_080809D4(void);
|
||||
extern void sub_08080CB4(Entity*);
|
||||
extern u32 sub_0808288C(Entity*, u32, u32, u32);
|
||||
extern bool32 sub_08083734(Entity*, u32); // lockedDoor
|
||||
extern void sub_08095C48(Entity*);
|
||||
extern void sub_0809EABC(Entity*);
|
||||
extern void sub_0809EAD8(Entity*);
|
||||
extern void sub_0809EB30(Entity*);
|
||||
extern void sub_080A1ED0(u32, u32, u32);
|
||||
extern Entity* sub_080A2A3C(Entity*, u32, u32, u32);
|
||||
extern Entity* sub_080A2AD4(Entity*);
|
||||
extern void sub_080A2AF4(Entity*, u32, u32);
|
||||
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
||||
extern void sub_080A57F4(void);
|
||||
extern void sub_080A71C4(u32, u32, u32, u32);
|
||||
extern void sub_080A7C18(u32, u32, u32);
|
||||
extern void sub_080AE068(Entity*);
|
||||
extern bool32 sub_080AE4CC(Entity*, u32, u32, u32);
|
||||
extern void sub_080AE58C(Entity*, u32, u32);
|
||||
extern void sub_080AF284(void);
|
||||
extern void sub_08078930(Entity*);
|
||||
extern void sub_08078954(Entity*);
|
||||
extern void sub_0809EB30(Entity*);
|
||||
extern void sub_0809EAD8(Entity*);
|
||||
extern void sub_0809EABC(Entity*);
|
||||
extern void sub_08079D84(void);
|
||||
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
||||
// extern void sub_080A2CC0(Entity*, void*, void*);
|
||||
extern void sub_08095C48(Entity*);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern u32 sub_0804A024(Entity*, u32, u32);
|
||||
extern s32 sub_080012DC(Entity*);
|
||||
extern void sub_08001318(Entity*);
|
||||
extern void sub_080043A8(Entity*);
|
||||
extern u32 sub_08049F1C(Entity*, Entity*, u32);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern void sub_08027870(Entity*);
|
||||
extern u32 sub_0804A044(Entity*, Entity*, u32);
|
||||
extern void sub_0804AA1C(Entity*);
|
||||
extern void sub_08049CF4(Entity*);
|
||||
#endif
|
||||
|
||||
+9
-9
@@ -238,7 +238,7 @@ void LockedDoor(Entity*);
|
||||
void Object9(Entity*);
|
||||
void ObjectA(Entity*);
|
||||
void ObjectB(Entity*);
|
||||
void ChestSpawner(Entity*);
|
||||
void ChestSpawner();
|
||||
void ObjectD(Entity*);
|
||||
void ObjectE(Entity*);
|
||||
void SpecialFx(Entity*);
|
||||
@@ -283,14 +283,14 @@ void Object35(Entity*);
|
||||
void Object36(Entity*);
|
||||
void Object37(Entity*);
|
||||
void JarPortal(Entity*);
|
||||
void BossDoor(Entity*);
|
||||
void BossDoor();
|
||||
void Object3A(Entity*);
|
||||
void MacroMushromStalks(Entity*);
|
||||
void MacroPlayer(Entity*);
|
||||
void Object3D(Entity*);
|
||||
void Object3E(Entity*);
|
||||
void Object3E();
|
||||
void GiantLeaf(Entity*);
|
||||
void Fairy(Entity*);
|
||||
void Fairy();
|
||||
void LadderUp(Entity*);
|
||||
void Object42(Entity*);
|
||||
void Object43(Entity*);
|
||||
@@ -315,7 +315,7 @@ void Minecart(Entity*);
|
||||
void ThoughtBubble(Entity*);
|
||||
void HiddenLadderDown(Entity*);
|
||||
void GentariCurtain(Entity*);
|
||||
void LavaPlatform(Entity*);
|
||||
void LavaPlatform();
|
||||
void Paper(Entity*);
|
||||
void Object5B(Entity*);
|
||||
void Mask(Entity*);
|
||||
@@ -335,7 +335,7 @@ void Object69(Entity*);
|
||||
void Object6A(Entity*);
|
||||
void CrenalBeanSprout(Entity*);
|
||||
void MinecartDoor(Entity*);
|
||||
void ObjectOnPillar(Entity*);
|
||||
void ObjectOnPillar();
|
||||
void MineralWaterSource(Entity*);
|
||||
void MinishSizedArchway(Entity*);
|
||||
void Object70(Entity*);
|
||||
@@ -351,7 +351,7 @@ void Object79(Entity*);
|
||||
void Steam(Entity*);
|
||||
void PushableLever();
|
||||
void MacroShoes(Entity*);
|
||||
void ObjectOnSpinyBeetle(Entity*);
|
||||
void ObjectOnSpinyBeetle();
|
||||
void Object7E(Entity*);
|
||||
void PicoBloom(Entity*);
|
||||
void Board(Entity*);
|
||||
@@ -365,7 +365,7 @@ void OctorokBossObject(Entity*);
|
||||
void MacroBook(Entity*);
|
||||
void MazaalBossObject(Entity*);
|
||||
void CabinFurniture(Entity*);
|
||||
void DoubleBookshelf(Entity*);
|
||||
void DoubleBookshelf();
|
||||
void Book(Entity*);
|
||||
void Fireplace(Entity*);
|
||||
void Object8E();
|
||||
@@ -394,7 +394,7 @@ void MinishLight(Entity*);
|
||||
void FireballChain(Entity*);
|
||||
void ObjectA6(Entity*);
|
||||
void ObjectA7(Entity*);
|
||||
void ObjectA8(Entity*);
|
||||
void ObjectA8();
|
||||
void ObjectA9(Entity*);
|
||||
void WaterfallOpening(Entity*);
|
||||
void ObjectAB(Entity*);
|
||||
|
||||
@@ -656,7 +656,6 @@ SECTIONS {
|
||||
src/object/objectA.o(.text);
|
||||
asm/object/objectB.o(.text);
|
||||
src/object/chestSpawner.o(.text);
|
||||
asm/object/chestSpawner.o(.text);
|
||||
asm/object/objectD.o(.text);
|
||||
asm/object/objectE.o(.text);
|
||||
src/object/specialFx.o(.text);
|
||||
@@ -701,7 +700,7 @@ SECTIONS {
|
||||
asm/object/object36.o(.text);
|
||||
asm/object/object37.o(.text);
|
||||
src/object/jarPortal.o(.text);
|
||||
asm/object/bossDoor.o(.text);
|
||||
src/object/bossDoor.o(.text);
|
||||
asm/object/object3A.o(.text);
|
||||
asm/object/macroMushroomStalks.o(.text);
|
||||
asm/object/object75.o(.text); /* 75 and 76 are mislocated in object table */
|
||||
@@ -709,9 +708,9 @@ SECTIONS {
|
||||
asm/object/code_0808C964.o(.text);
|
||||
asm/object/macroPlayer.o(.text);
|
||||
asm/object/object3D.o(.text);
|
||||
asm/object/object3E.o(.text);
|
||||
src/object/object3E.o(.text);
|
||||
src/object/giantLeaf.o(.text);
|
||||
asm/object/fairy.o(.text);
|
||||
src/object/fairy.o(.text);
|
||||
asm/object/ladderUp.o(.text);
|
||||
asm/object/object42.o(.text);
|
||||
asm/object/object43.o(.text);
|
||||
@@ -737,7 +736,7 @@ SECTIONS {
|
||||
src/object/thoughtBubble.o(.text);
|
||||
src/object/hiddenLadderDown.o(.text);
|
||||
asm/object/gentariCurtains.o(.text);
|
||||
asm/object/lavaPlatform.o(.text);
|
||||
src/object/lavaPlatform.o(.text);
|
||||
asm/object/paper.o(.text);
|
||||
asm/object/object5B.o(.text);
|
||||
src/object/mask.o(.text);
|
||||
@@ -757,7 +756,7 @@ SECTIONS {
|
||||
src/object/object6A.o(.text);
|
||||
asm/object/crenalBeanSprout.o(.text);
|
||||
asm/object/minecartDoor.o(.text);
|
||||
asm/object/objectOnPillar.o(.text);
|
||||
src/object/objectOnPillar.o(.text);
|
||||
src/object/mineralWaterSource.o(.text);
|
||||
src/object/minishSizedArchway.o(.text);
|
||||
asm/object/object70.o(.text);
|
||||
@@ -771,7 +770,7 @@ SECTIONS {
|
||||
src/object/steam.o(.text);
|
||||
src/object/pushableLever.o(.text);
|
||||
asm/object/macroShoes.o(.text);
|
||||
asm/object/objectOnSpinyBeetle.o(.text);
|
||||
src/object/objectOnSpinyBeetle.o(.text);
|
||||
src/object/object7E.o(.text);
|
||||
asm/object/picoBloom.o(.text);
|
||||
asm/object/board.o(.text);
|
||||
@@ -785,7 +784,7 @@ SECTIONS {
|
||||
asm/object/macroBook.o(.text);
|
||||
asm/object/mazaalBossObject.o(.text);
|
||||
asm/object/cabinFurniture.o(.text);
|
||||
asm/object/doubleBookshelf.o(.text);
|
||||
src/object/doubleBookshelf.o(.text);
|
||||
src/object/book.o(.text);
|
||||
src/object/fireplace.o(.text);
|
||||
src/object/object8E.o(.text);
|
||||
@@ -818,7 +817,6 @@ SECTIONS {
|
||||
asm/object/objectA6.o(.text);
|
||||
asm/object/objectA7.o(.text);
|
||||
src/object/objectA8.o(.text);
|
||||
asm/object/objectA8.o(.text);
|
||||
asm/object/objectA9.o(.text);
|
||||
asm/object/waterfallOpening.o(.text);
|
||||
asm/object/objectAB.o(.text);
|
||||
@@ -1375,7 +1373,7 @@ SECTIONS {
|
||||
data/const/object/object9.o(.rodata);
|
||||
data/animations/object/object9.o(.rodata);
|
||||
data/const/object/objectB.o(.rodata);
|
||||
data/const/object/chestSpawner.o(.rodata);
|
||||
src/object/chestSpawner.o(.rodata);
|
||||
data/animations/object/chestSpawner.o(.rodata);
|
||||
data/const/object/objectD.o(.rodata);
|
||||
data/animations/object/objectD.o(.rodata);
|
||||
@@ -1437,7 +1435,7 @@ SECTIONS {
|
||||
data/const/object/object37.o(.rodata);
|
||||
data/const/object/jarPortal.o(.rodata);
|
||||
data/animations/object/jarPortal.o(.rodata);
|
||||
data/const/object/bossDoor.o(.rodata);
|
||||
src/object/bossDoor.o(.rodata);
|
||||
data/animations/object/bossDoor.o(.rodata);
|
||||
data/const/object/object3A.o(.rodata);
|
||||
data/const/object/macroMushroomStalks.o(.rodata);
|
||||
@@ -1445,9 +1443,9 @@ SECTIONS {
|
||||
data/const/object/object76.o(.rodata);
|
||||
data/const/object/macroPlayer.o(.rodata);
|
||||
data/const/object/object3D.o(.rodata);
|
||||
data/const/object/object3E.o(.rodata);
|
||||
src/object/object3E.o(.rodata);
|
||||
data/const/object/giantLeaf.o(.rodata);
|
||||
data/const/object/fairy.o(.rodata);
|
||||
src/object/fairy.o(.rodata);
|
||||
data/const/object/object42.o(.rodata);
|
||||
data/const/object/object43.o(.rodata);
|
||||
data/animations/object/object43.o(.rodata);
|
||||
@@ -1480,7 +1478,7 @@ SECTIONS {
|
||||
data/const/object/hiddenLadderDown.o(.rodata);
|
||||
data/const/object/gentariCurtains.o(.rodata);
|
||||
data/animations/object/gentariCurtains.o(.rodata);
|
||||
data/const/object/lavaPlatform.o(.rodata);
|
||||
src/object/lavaPlatform.o(.rodata);
|
||||
data/animations/object/lavaPlatform.o(.rodata);
|
||||
data/const/object/paper.o(.rodata);
|
||||
data/const/object/object5B.o(.rodata);
|
||||
@@ -1504,7 +1502,7 @@ SECTIONS {
|
||||
data/const/object/crenalBeanSprout.o(.rodata);
|
||||
data/animations/object/crenalBeanSprout.o(.rodata);
|
||||
data/const/object/minecartDoor.o(.rodata);
|
||||
data/const/object/objectOnPillar.o(.rodata);
|
||||
src/object/objectOnPillar.o(.rodata);
|
||||
data/const/object/mineralWaterSource.o(.rodata);
|
||||
data/const/object/object70.o(.rodata);
|
||||
src/object/pushableGrave.o(.rodata);
|
||||
@@ -1520,7 +1518,7 @@ SECTIONS {
|
||||
src/object/pushableLever.o(.rodata);
|
||||
data/animations/object/pushableLever.o(.rodata);
|
||||
data/const/object/macroShoes.o(.rodata);
|
||||
data/const/object/objectOnSpinyBeetle.o(.rodata);
|
||||
src/object/objectOnSpinyBeetle.o(.rodata);
|
||||
data/const/object/picoBloom.o(.rodata);
|
||||
data/animations/object/picoBloom.o(.rodata);
|
||||
data/const/object/board.o(.rodata);
|
||||
@@ -1540,7 +1538,7 @@ SECTIONS {
|
||||
data/animations/object/macroBook.o(.rodata);
|
||||
data/const/object/mazaalBossObject.o(.rodata);
|
||||
data/const/object/cabinFurniture.o(.rodata);
|
||||
data/const/object/doubleBookshelf.o(.rodata);
|
||||
src/object/doubleBookshelf.o(.rodata);
|
||||
src/object/book.o(.rodata);
|
||||
data/const/object/fireplace.o(.rodata);
|
||||
src/object/object8E.o(.rodata);
|
||||
@@ -1572,7 +1570,7 @@ SECTIONS {
|
||||
data/const/object/minishLight.o(.rodata);
|
||||
data/const/object/objectA6.o(.rodata);
|
||||
data/animations/object/objectA6.o(.rodata);
|
||||
data/const/object/objectA8.o(.rodata);
|
||||
src/object/objectA8.o(.rodata);
|
||||
data/const/object/objectA9.o(.rodata);
|
||||
data/const/object/waterfallOpening.o(.rodata);
|
||||
data/const/object/objectAB.o(.rodata);
|
||||
|
||||
+2
-2
@@ -65,13 +65,13 @@ s32 sub_08078828(Entity* ent) {
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void sub_08078850(u32 arg0, u32 arg1, u32 arg2, u32 arg3) {
|
||||
void sub_08078850(Entity* arg0, u32 arg1, u32 arg2, void* arg3) {
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_08078904();
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[8] = arg1;
|
||||
gUnk_03003DF0[iVar1].unk[10] = arg2;
|
||||
*(&gUnk_03003DF0[iVar1].unk4 + 1) = arg3;
|
||||
*(&gUnk_03003DF0[iVar1].unk4 + 1) = (u32)arg3;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,10 +11,6 @@
|
||||
#include "projectile.h"
|
||||
#include "game.h"
|
||||
|
||||
extern void sub_08078AC0(u32, u32, u32);
|
||||
extern u32 GetRandomByWeight(const u8*);
|
||||
extern void sub_080792BC(s32, u32, u32);
|
||||
|
||||
enum OctorokRotation { ROTATION_CW, ROTATION_CCW, NO_ROTATION = 0xff };
|
||||
|
||||
typedef struct HelperStruct {
|
||||
|
||||
+4
-4
@@ -11,7 +11,7 @@ extern u32 gRand;
|
||||
|
||||
static void InitOverlays(void);
|
||||
static bool32 SoftResetKeysPressed(void);
|
||||
static u32 CheckHeaderValid(void);
|
||||
/*static*/ u32 CheckHeaderValid(void);
|
||||
|
||||
void (*const sTaskHandlers[])(void) = {
|
||||
[TASK_TITLE] = TitleTask,
|
||||
@@ -25,7 +25,7 @@ void (*const sTaskHandlers[])(void) = {
|
||||
[TASK_STAFFROLL] = StaffrollTask, [TASK_DEBUG] = DebugTask,
|
||||
};
|
||||
|
||||
static void sub_080560B8(void);
|
||||
/*static*/ void sub_080560B8(void);
|
||||
|
||||
void AgbMain(void) {
|
||||
InitOverlays();
|
||||
@@ -170,7 +170,7 @@ const Defaults sDefaultSettings = {
|
||||
};
|
||||
|
||||
// single misplaced ldr
|
||||
NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) {
|
||||
NONMATCH("asm/non_matching/sub_080560B8.inc", /*static*/ void sub_080560B8(void)) {
|
||||
u32 b;
|
||||
|
||||
if (!CheckHeaderValid()) {
|
||||
@@ -199,7 +199,7 @@ NONMATCH("asm/non_matching/sub_080560B8.inc", static void sub_080560B8(void)) {
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
static u32 CheckHeaderValid(void) {
|
||||
/*static*/ u32 CheckHeaderValid(void) {
|
||||
if ((gSaveHeader->signature != SIGNATURE) || (gSaveHeader->saveFileId >= NUM_SAVE_SLOTS) ||
|
||||
(gSaveHeader->msg_speed >= MAX_MSG_SPEED) || (gSaveHeader->brightness >= MAX_BRIGHTNESS)
|
||||
#ifdef EU
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "player.h"
|
||||
#include "sound.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
|
||||
// Facilitates the usage of minish portals.
|
||||
|
||||
@@ -27,7 +28,6 @@ typedef struct {
|
||||
extern s8 gUnk_08107C6C[];
|
||||
extern u32 sub_08057810(void);
|
||||
extern u32 sub_080002C0(u16, u16, u8);
|
||||
extern void CreateMagicSparkles(u32, u32, u32);
|
||||
|
||||
void Manager3_Main(Manager3* this) {
|
||||
s8 tmp;
|
||||
|
||||
+11
-11
@@ -45,8 +45,8 @@ u32 GetFontStrWith(u8*, u32);
|
||||
|
||||
static void StatusUpdate(u32 status);
|
||||
|
||||
static u16 RunTextCommand(TextRender* this);
|
||||
static void PaletteChange(TextRender* this, u32 id);
|
||||
/*static*/ u16 RunTextCommand(TextRender* this);
|
||||
/*static*/ void PaletteChange(TextRender* this, u32 id);
|
||||
static void SwitchChoice(u32 to, u32 from);
|
||||
|
||||
static void MsgChangeLine(u32 lineNo);
|
||||
@@ -64,9 +64,9 @@ static void sub_08056FBC(TextRender*);
|
||||
|
||||
typedef u32 (*MessageFunction)(void);
|
||||
static u32 MsgIdle(void);
|
||||
static u32 MsgInit(void);
|
||||
/*static*/ u32 MsgInit(void);
|
||||
static u32 MsgUpdate(void);
|
||||
static u32 MsgOpen(void);
|
||||
/*static*/ u32 MsgOpen(void);
|
||||
static u32 MsgClose(void);
|
||||
static u32 MsgDie(void);
|
||||
typedef enum {
|
||||
@@ -84,7 +84,7 @@ static void TextDispUpdate(TextRender* this);
|
||||
static void TextDispDie(TextRender* this);
|
||||
static void TextDispWait(TextRender* this);
|
||||
static void TextDispRoll(TextRender* this);
|
||||
static void TextDispEnquiry(TextRender* this);
|
||||
/*static*/ void TextDispEnquiry(TextRender* this);
|
||||
typedef enum {
|
||||
RENDER_INIT,
|
||||
RENDER_UPDATE,
|
||||
@@ -228,7 +228,7 @@ u8* const gUnk_08107BE0[] = {
|
||||
};
|
||||
|
||||
// regalloc in loop
|
||||
NONMATCH("asm/non_matching/textbox/MsgInit.inc", static u32 MsgInit(void)) {
|
||||
NONMATCH("asm/non_matching/textbox/MsgInit.inc", /*static*/ u32 MsgInit(void)) {
|
||||
char* dest;
|
||||
u32 i;
|
||||
|
||||
@@ -266,7 +266,7 @@ NONMATCH("asm/non_matching/textbox/MsgInit.inc", static u32 MsgInit(void)) {
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
static u32 MsgOpen(void) {
|
||||
/*static*/ u32 MsgOpen(void) {
|
||||
if (gTextRender.renderStatus == RENDER_INIT) {
|
||||
gTextRender.renderStatus = RENDER_UPDATE;
|
||||
gTextRender._98.bytes.b1 = 1;
|
||||
@@ -367,7 +367,7 @@ static void TextDispUpdate(TextRender* this) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/textbox/RunTextCommand.inc", static u16 RunTextCommand(TextRender* this)) {
|
||||
NONMATCH("asm/non_matching/textbox/RunTextCommand.inc", /*static*/ u16 RunTextCommand(TextRender* this)) {
|
||||
s32 palette;
|
||||
u32 chr = this->curToken.extended;
|
||||
|
||||
@@ -492,7 +492,7 @@ NONMATCH("asm/non_matching/textbox/RunTextCommand.inc", static u16 RunTextComman
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
static void PaletteChange(TextRender* this, u32 id) {
|
||||
/*static*/ void PaletteChange(TextRender* this, u32 id) {
|
||||
u32 temp = id % 8;
|
||||
this->_8f = temp;
|
||||
this->_50.unk2 = temp;
|
||||
@@ -502,10 +502,10 @@ const u8 gUnk_08107C0F[] = { 0x8, 0x1e, 0x4, 0x12, 0x0 };
|
||||
const u8 gUnk_08107C14[] = { 0x8, 0x1e, 0x8, 0xFE, 0x0 };
|
||||
|
||||
#ifdef EU
|
||||
ASM_FUNC("asm/non_matching/eu/TextDispEnquiry.inc", static void TextDispEnquiry(TextRender* ctb))
|
||||
ASM_FUNC("asm/non_matching/eu/TextDispEnquiry.inc", /*static*/ void TextDispEnquiry(TextRender* ctb))
|
||||
#else
|
||||
|
||||
static void TextDispEnquiry(TextRender* this) {
|
||||
/*static*/ void TextDispEnquiry(TextRender* this) {
|
||||
s32 nextTextIdx, choiceIdx, lastChoice;
|
||||
u32 doSwitch;
|
||||
const u8* src;
|
||||
|
||||
+1
-2
@@ -5,14 +5,13 @@
|
||||
#include "script.h"
|
||||
#include "npc.h"
|
||||
#include "game.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
u32 unk_00;
|
||||
s8 unk_04;
|
||||
} gUnk_0810C89C_struct;
|
||||
|
||||
extern void sub_08078850(Entity*, u32, s8, gUnk_0810C89C_struct*);
|
||||
|
||||
extern u8 gUnk_0810C88C[];
|
||||
extern Hitbox gUnk_0810C894;
|
||||
extern gUnk_0810C89C_struct gUnk_0810C89C[];
|
||||
|
||||
@@ -34,7 +34,6 @@ extern void sub_08067DCC(Entity*, u32);
|
||||
|
||||
extern u8 gUnk_0811110C[2];
|
||||
extern u32 gUnk_0811110F;
|
||||
extern void sub_08078850(Entity*, u32, u8, u32*);
|
||||
|
||||
extern u16 gUnk_08111104[];
|
||||
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
#include "npc.h"
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u8, u32*);
|
||||
#include "functions.h"
|
||||
extern u32 gUnk_081133B4;
|
||||
|
||||
void sub_0806BFD8(Entity* this);
|
||||
|
||||
+1
-2
@@ -5,7 +5,6 @@
|
||||
|
||||
extern void (*gUnk_08113D8C[])(Entity*);
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u8, u32*);
|
||||
extern u32 gUnk_08113D84[];
|
||||
|
||||
void Gregal(Entity* this) {
|
||||
@@ -32,7 +31,7 @@ void sub_0806CAF4(Entity* this) {
|
||||
}
|
||||
sub_0807DD64(this);
|
||||
sub_08078778(this);
|
||||
sub_08078850(this, 1, gUnk_08113D84[1], gUnk_08113D84);
|
||||
sub_08078850(this, 1, (u8)gUnk_08113D84[1], gUnk_08113D84);
|
||||
}
|
||||
ExecuteScriptForEntity(this, NULL);
|
||||
HandleEntity0x82Actions(this);
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
#include "player.h"
|
||||
#include "flags.h"
|
||||
#include "npc.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u32, u32*);
|
||||
extern u32 gUnk_08113F44;
|
||||
extern Dialog gUnk_08113F48[];
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
extern void (*const gUnk_081104C8[])(Entity*);
|
||||
|
||||
bool32 sub_0806650C(Entity*);
|
||||
extern void sub_08078AC0(u32, u32, u32);
|
||||
|
||||
void sub_08066490(Entity*, Entity*);
|
||||
|
||||
|
||||
+1
-3
@@ -14,8 +14,6 @@ typedef struct {
|
||||
s8 unk_04;
|
||||
} gUnk_0810C89C_struct;
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u8 /* TODO this is a s8 in beedle.c*/, gUnk_0810C89C_struct*);
|
||||
|
||||
extern void script_Object3ELeftStoneOpening; // Cutscene data type?
|
||||
extern void script_Object3ERightStoneOpening; // Cutscene data type?
|
||||
|
||||
@@ -46,7 +44,7 @@ void sub_0806DA04(Entity* this, ScriptExecutionContext* context) {
|
||||
// TODO gUnk_0811415C should be a gUnk_0810C89C_struct[], but then a lot of bytes everywhere are wrong?
|
||||
gUnk_0810C89C_struct* a = (gUnk_0810C89C_struct*)&(
|
||||
(gUnk_0810C89C_struct*)gUnk_0811415C)[context->intVariable]; // cast necessary to no longer make it a const* ?
|
||||
sub_08078850(this, 1, a->unk_04, a);
|
||||
sub_08078850(this, 1, (u8)a->unk_04, a);
|
||||
}
|
||||
|
||||
void sub_0806DA1C(Entity* this, ScriptExecutionContext* context) {
|
||||
|
||||
@@ -8,7 +8,6 @@ extern void (*gUnk_08112278[])(Entity*);
|
||||
|
||||
extern void script_Rem;
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u32, u32*);
|
||||
extern u32 gUnk_0811229C;
|
||||
|
||||
extern void sub_0807F950(Entity* this, ScriptExecutionContext* context);
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
#include "script.h"
|
||||
#include "save.h"
|
||||
#include "npc.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern Hitbox gUnk_081142FC;
|
||||
extern void sub_08078850(Entity*, u32, u32, u32*);
|
||||
extern u32 gUnk_08114304;
|
||||
|
||||
extern Dialog gUnk_08114308[];
|
||||
|
||||
+1
-2
@@ -1,6 +1,5 @@
|
||||
#include "npc.h"
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u32, u32*);
|
||||
#include "functions.h"
|
||||
|
||||
extern void (*const gUnk_08110360[])(Entity*);
|
||||
extern void (*const gUnk_0811036C[])(Entity*);
|
||||
|
||||
@@ -14,7 +14,6 @@ extern u16 script_StockwellBuy[];
|
||||
extern u16 script_StockwellDogFood[];
|
||||
extern u8 gUnk_0810FDB8[];
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u8, u32*);
|
||||
extern void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script);
|
||||
extern u32 gUnk_0810FDA0;
|
||||
extern u16 script_Stockwell;
|
||||
|
||||
@@ -8,7 +8,6 @@ extern void sub_0806ACC4(Entity*);
|
||||
extern void sub_0806AEA8(Entity*);
|
||||
extern void sub_0806AEE4(Entity*);
|
||||
extern void sub_0806AFE8(Entity*, ScriptExecutionContext*);
|
||||
extern void sub_08078850(Entity*, u32, u32, u32*);
|
||||
|
||||
extern u8 gUnk_081125F4[12];
|
||||
extern SpriteLoadData gUnk_08112674[];
|
||||
|
||||
@@ -13,7 +13,6 @@ extern void (*const gUnk_0810B77C[])(Entity*);
|
||||
extern void sub_08061CB4(Entity*, u32);
|
||||
extern void sub_08061D64(Entity*);
|
||||
extern void sub_08062048(Entity*);
|
||||
extern void sub_08078850(Entity*, u32, u8, u32*);
|
||||
|
||||
extern SpriteLoadData* gUnk_0810B6EC[];
|
||||
extern u8 gUnk_0810B78C[];
|
||||
|
||||
@@ -0,0 +1,225 @@
|
||||
/**
|
||||
* @file bossDoor.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Boss Door 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 unk_70;
|
||||
/*0x72*/ u16 unk_72;
|
||||
/*0x74*/ u16 unk_74;
|
||||
/*0x76*/ u16 unk_76;
|
||||
/*0x78*/ u16 unk_78;
|
||||
/*0x7a*/ u16 unk_7a;
|
||||
/*0x7c*/ u16 unk_7c;
|
||||
/*0x7e*/ u8 unk_7e[6];
|
||||
/*0x84*/ u16 unk_84;
|
||||
/*0x86*/ u16 unk_86;
|
||||
} BossDoorEntity;
|
||||
|
||||
extern Hitbox gHitbox_3;
|
||||
extern bool32 gUnk_02036BB8;
|
||||
extern const u8 gUnk_0811F740[];
|
||||
|
||||
void sub_0808C500(BossDoorEntity*);
|
||||
void sub_0808C4BC(BossDoorEntity*);
|
||||
void sub_0808C5D0(BossDoorEntity*);
|
||||
void BossDoor_Init(BossDoorEntity*);
|
||||
void BossDoor_Action1(BossDoorEntity*);
|
||||
void BossDoor_Action2(BossDoorEntity*);
|
||||
void BossDoor_Action3(BossDoorEntity*);
|
||||
void BossDoor_Action4(BossDoorEntity*);
|
||||
void BossDoor_Action5(BossDoorEntity*);
|
||||
void BossDoor_Action6(BossDoorEntity*);
|
||||
|
||||
void BossDoor(BossDoorEntity* this) {
|
||||
static void (*const BossDoor_Actions[])(BossDoorEntity*) = {
|
||||
BossDoor_Init, BossDoor_Action1, BossDoor_Action2, BossDoor_Action3,
|
||||
BossDoor_Action4, BossDoor_Action5, BossDoor_Action6,
|
||||
};
|
||||
BossDoor_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void BossDoor_Init(BossDoorEntity* this) {
|
||||
if ((this->unk_84 != 0xffff) && CheckFlags(this->unk_84)) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if ((this->unk_86 != BEGIN) && CheckFlags(this->unk_86)) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
super->type2 = super->type >> 2;
|
||||
super->speed = 0x300;
|
||||
this->unk_70 = super->x.HALF.HI;
|
||||
this->unk_72 = super->y.HALF.HI;
|
||||
super->hitbox = (Hitbox*)&gHitbox_3;
|
||||
super->spritePriority.b0 = 5;
|
||||
this->unk_76 = super->type & 3;
|
||||
this->unk_74 = COORD_TO_TILE(super);
|
||||
InitializeAnimation(super, super->type & 0x1f);
|
||||
switch (super->type2) {
|
||||
case 0:
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
sub_0808C500(this);
|
||||
sub_08078800(super);
|
||||
sub_08078850(super, 0, gUnk_0811F740[this->unk_76], 0);
|
||||
break;
|
||||
case 1:
|
||||
super->action = 4;
|
||||
super->spriteSettings.draw = 0;
|
||||
break;
|
||||
case 2:
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
sub_0808C500(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void BossDoor_Action1(BossDoorEntity* this) {
|
||||
if (super->interactType != 0) {
|
||||
super->action = 2;
|
||||
sub_080788E0(super);
|
||||
SetFlag(this->unk_86);
|
||||
}
|
||||
}
|
||||
|
||||
void BossDoor_Action2(BossDoorEntity* this) {
|
||||
if ((super->frame & 0x80) == 0) {
|
||||
if ((gRoomTransition.frameCount & 3) == 0) {
|
||||
SoundReq(SFX_185);
|
||||
}
|
||||
GetNextFrame(super);
|
||||
} else {
|
||||
sub_0808C4BC(this);
|
||||
}
|
||||
}
|
||||
|
||||
void BossDoor_Action3(BossDoorEntity* this) {
|
||||
LinearMoveUpdate(super);
|
||||
if (--super->actionDelay == 0) {
|
||||
if (super->type < 4) {
|
||||
sub_08078AC0(0x40, 0, 1);
|
||||
gPlayerEntity.direction = super->type << 3;
|
||||
}
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
void BossDoor_Action4(BossDoorEntity* this) {
|
||||
static const s8 gUnk_081214F4[] = { 0, -36, 36, 0, 0, 36, -36, 0 };
|
||||
const s8* ptr;
|
||||
|
||||
if (sub_08083734(super, this->unk_76)) {
|
||||
super->action = 5;
|
||||
super->actionDelay = 0xc;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->direction = *(u8*)&this->unk_76 << 3 ^ 0x10;
|
||||
ptr = &gUnk_081214F4[this->unk_76 * 2];
|
||||
super->x.HALF.HI += ptr[0];
|
||||
super->y.HALF.HI += ptr[1];
|
||||
sub_0808C500(this);
|
||||
}
|
||||
}
|
||||
|
||||
void BossDoor_Action5(BossDoorEntity* this) {
|
||||
static const s8 gUnk_081214FC[] = { 12, 12, -12, 12, -12, 12, -12, -12, 12, -12, -12, -12, 12, 12, 12, -12 };
|
||||
Entity* effect;
|
||||
const s8* ptr;
|
||||
|
||||
LinearMoveUpdate(super);
|
||||
if (--super->actionDelay == 0) {
|
||||
super->action = 6;
|
||||
super->z.HALF.HI = 0;
|
||||
super->x.HALF.HI = this->unk_70;
|
||||
super->y.HALF.HI = this->unk_72;
|
||||
ptr = &gUnk_081214FC[this->unk_76 * 4];
|
||||
effect = CreateFx(super, FX_DASH, 0x40);
|
||||
if (effect != NULL) {
|
||||
effect->x.HALF.HI += ptr[0];
|
||||
effect->y.HALF.HI += ptr[1];
|
||||
}
|
||||
effect = CreateFx(super, FX_DASH, 0x40);
|
||||
if (effect != NULL) {
|
||||
effect->x.HALF.HI += ptr[2];
|
||||
effect->y.HALF.HI += ptr[3];
|
||||
}
|
||||
EnqueueSFX(SFX_10B);
|
||||
}
|
||||
}
|
||||
|
||||
void BossDoor_Action6(BossDoorEntity* this) {
|
||||
if (CheckFlags(this->unk_86)) {
|
||||
super->action = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808C4BC(BossDoorEntity* this) {
|
||||
static const s8 gUnk_0812150C[] = { 0, -2, 2, 0, 0, 2, -2, 0 };
|
||||
const s8* ptr;
|
||||
super->action = 3;
|
||||
super->actionDelay = 0xc;
|
||||
super->direction = this->unk_76 * 8;
|
||||
ptr = &gUnk_0812150C[this->unk_76 * 2];
|
||||
super->x.HALF.HI += ptr[0];
|
||||
super->y.HALF.HI += ptr[1];
|
||||
sub_0808C5D0(this);
|
||||
SoundReq(SFX_10B);
|
||||
}
|
||||
|
||||
void sub_0808C500(BossDoorEntity* this) {
|
||||
if ((this->unk_76 == 0) || (this->unk_76 == 2)) {
|
||||
this->unk_78 = GetTileIndex(this->unk_74 - 1, super->collisionLayer);
|
||||
this->unk_7a = GetTileIndex(this->unk_74, super->collisionLayer);
|
||||
this->unk_7c = GetTileIndex(this->unk_74 + 1, super->collisionLayer);
|
||||
SetTile(0x4022, this->unk_74 - 1, super->collisionLayer);
|
||||
SetTile(0x4022, this->unk_74, super->collisionLayer);
|
||||
SetTile(0x4022, this->unk_74 + 1, super->collisionLayer);
|
||||
} else {
|
||||
this->unk_78 = GetTileIndex(this->unk_74 - 0x40, super->collisionLayer);
|
||||
this->unk_7a = GetTileIndex(this->unk_74, super->collisionLayer);
|
||||
this->unk_7c = GetTileIndex(this->unk_74 + 0x40, super->collisionLayer);
|
||||
SetTile(0x4022, this->unk_74 - 0x40, super->collisionLayer);
|
||||
SetTile(0x4022, this->unk_74, super->collisionLayer);
|
||||
SetTile(0x4022, this->unk_74 + 0x40, super->collisionLayer);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808C5D0(BossDoorEntity* this) {
|
||||
if ((this->unk_76 == 0) || (this->unk_76 == 2)) {
|
||||
SetTile(this->unk_78, this->unk_74 - 1, super->collisionLayer);
|
||||
SetTile(this->unk_7a, this->unk_74, super->collisionLayer);
|
||||
SetTile(this->unk_7c, this->unk_74 + 1, super->collisionLayer);
|
||||
} else {
|
||||
SetTile(this->unk_78, this->unk_74 - 0x40, super->collisionLayer);
|
||||
SetTile(this->unk_7a, this->unk_74, super->collisionLayer);
|
||||
SetTile(this->unk_7c, this->unk_74 + 0x40, super->collisionLayer);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808C650(Entity* this, u32 param_2) {
|
||||
Entity* obj = CreateObject(OBJECT_3A, 0, param_2);
|
||||
if (obj != NULL) {
|
||||
obj->parent = this;
|
||||
gUnk_02036BB8 = FALSE;
|
||||
} else {
|
||||
gUnk_02036BB8 = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0808C67C(void) {
|
||||
return gUnk_02036BB8;
|
||||
}
|
||||
|
||||
void sub_0808C688(void) {
|
||||
sub_0801E104();
|
||||
gUnk_02036BB8 = TRUE;
|
||||
}
|
||||
+304
-18
@@ -1,31 +1,317 @@
|
||||
/**
|
||||
* @file chestSpawner.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Chest Spawner object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
#include "screen.h"
|
||||
#include "structures.h"
|
||||
#include "item.h"
|
||||
|
||||
extern void sub_080842D8(Entity*);
|
||||
extern void sub_08078828(Entity*);
|
||||
extern void sub_08083E20(Entity*);
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[8];
|
||||
/*0x70*/ u16 tilePosition;
|
||||
/*0x72*/ u16 unk_72;
|
||||
/*0x74*/ u8 unk_74[0x12];
|
||||
/*0x86*/ u16 unk_86;
|
||||
} ChestSpawnerEntity;
|
||||
|
||||
extern void (*const gUnk_0811F7E8[])(Entity*);
|
||||
extern void (*const gUnk_0811F808[])(Entity*);
|
||||
extern void (*const gUnk_0811F818[])(Entity*);
|
||||
extern const Hitbox gUnk_0811F8A8;
|
||||
extern const Hitbox gUnk_0811F8B0;
|
||||
|
||||
extern u32 gUnk_0811F8B0;
|
||||
void ChestSpawner(Entity* this) {
|
||||
gUnk_0811F7E8[this->type](this);
|
||||
void sub_080842D8(ChestSpawnerEntity*);
|
||||
void sub_08078828(ChestSpawnerEntity*);
|
||||
void sub_08083E20(ChestSpawnerEntity*);
|
||||
void sub_08084074(u32);
|
||||
void sub_080840A8(s32, s32);
|
||||
void ChestSpawner_Type0(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type0Init(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type0Action1(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type0Action2(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type0Action3(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Init(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Action1(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Action2(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Action3(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Action4(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Action5(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Action6(ChestSpawnerEntity*);
|
||||
void ChestSpawner_Type2Action7(ChestSpawnerEntity*);
|
||||
|
||||
void ChestSpawner(ChestSpawnerEntity* this) {
|
||||
static void (*const ChestSpawner_Types[])(ChestSpawnerEntity*) = {
|
||||
ChestSpawner_Type0, ChestSpawner_Type0, ChestSpawner_Type2, ChestSpawner_Type2,
|
||||
ChestSpawner_Type2, ChestSpawner_Type2, ChestSpawner_Type0, ChestSpawner_Type0,
|
||||
};
|
||||
ChestSpawner_Types[super->type](this);
|
||||
}
|
||||
|
||||
void sub_08083DF0(Entity* this) {
|
||||
gUnk_0811F808[this->action](this);
|
||||
void ChestSpawner_Type0(ChestSpawnerEntity* this) {
|
||||
static void (*const ChestSpawner_Type0Actions[])(ChestSpawnerEntity*) = {
|
||||
ChestSpawner_Type0Init,
|
||||
ChestSpawner_Type0Action1,
|
||||
ChestSpawner_Type0Action2,
|
||||
ChestSpawner_Type0Action3,
|
||||
};
|
||||
ChestSpawner_Type0Actions[super->action](this);
|
||||
}
|
||||
|
||||
void sub_08083E08(Entity* this) {
|
||||
gUnk_0811F818[this->action](this);
|
||||
void ChestSpawner_Type2(ChestSpawnerEntity* this) {
|
||||
static void (*const ChestSpawner_Type2Actions[])(ChestSpawnerEntity*) = {
|
||||
ChestSpawner_Type2Init, ChestSpawner_Type2Action1, ChestSpawner_Type2Action2, ChestSpawner_Type2Action3,
|
||||
ChestSpawner_Type2Action4, ChestSpawner_Type2Action5, ChestSpawner_Type2Action6, ChestSpawner_Type2Action7,
|
||||
};
|
||||
ChestSpawner_Type2Actions[super->action](this);
|
||||
}
|
||||
|
||||
void sub_08083E20(Entity* this) {
|
||||
this->action = 3;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->spriteRendering.alphaBlend = 0;
|
||||
void sub_08083E20(ChestSpawnerEntity* this) {
|
||||
super->action = 3;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spriteRendering.alphaBlend = 0;
|
||||
sub_080842D8(this);
|
||||
sub_08078828(this);
|
||||
}
|
||||
void ChestSpawner_Type2Init(ChestSpawnerEntity* this) {
|
||||
super->hitbox = (Hitbox*)&gUnk_0811F8B0;
|
||||
if (CheckLocalFlag(super->type2)) {
|
||||
super->spriteSettings.draw = 1;
|
||||
super->action = 5;
|
||||
sub_080842D8(this);
|
||||
InitializeAnimation(super, 1);
|
||||
} else {
|
||||
if (CheckFlags(this->unk_86) || super->type == 4) {
|
||||
sub_08083E20(this);
|
||||
} else {
|
||||
super->action = 1;
|
||||
}
|
||||
InitializeAnimation(super, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type2Action1(ChestSpawnerEntity* this) {
|
||||
if (CheckFlags(this->unk_86)) {
|
||||
gScreen.controls.layerFXControl = 0xf40;
|
||||
gScreen.controls.alphaBlend = 0x1000;
|
||||
gUnk_02034490.unk0 = 1;
|
||||
super->action = 2;
|
||||
super->subAction = 0;
|
||||
super->field_0xf = 0x1e;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spriteRendering.alphaBlend = 1;
|
||||
RequestPriorityDuration(super, 0x1e);
|
||||
sub_0805BC4C();
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type2Action2(ChestSpawnerEntity* this) {
|
||||
u32 tmp;
|
||||
|
||||
SetPriorityTimer(0x1e);
|
||||
switch (super->subAction) {
|
||||
case 0:
|
||||
if (EntityInRectRadius(super, &gPlayerEntity, 0x10, 8)) {
|
||||
sub_08078AC0(0x10, 0, 0);
|
||||
gPlayerEntity.direction = 0x10;
|
||||
}
|
||||
super->subAction = 1;
|
||||
break;
|
||||
case 1:
|
||||
if ((super->type == 5) || (gPlayerEntity.action == 1)) {
|
||||
super->subAction = 2;
|
||||
super->actionDelay = 8;
|
||||
super->field_0xf = 0;
|
||||
SoundReq(SFX_14A);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
sub_0800445C(super);
|
||||
CreateMagicSparkles(super->x.HALF.HI, super->y.HALF.HI, 2);
|
||||
if (--super->actionDelay == 0) {
|
||||
super->actionDelay = 8;
|
||||
tmp = ++super->field_0xf;
|
||||
gScreen.controls.alphaBlend = (((0x10 - tmp) * 0x100) & 0xff00) | tmp;
|
||||
if (gScreen.controls.alphaBlend == 0x10) {
|
||||
gUnk_02034490.unk0 = 0;
|
||||
gScreen.controls.layerFXControl = 0;
|
||||
sub_08083E20(this);
|
||||
SoundReq(SFX_SECRET_BIG);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type2Action3(ChestSpawnerEntity* this) {
|
||||
sub_0800445C(super);
|
||||
if (super->interactType != 0) {
|
||||
super->action = 4;
|
||||
super->field_0xf = 0x1e;
|
||||
sub_080788E0(super);
|
||||
RequestPriorityDuration(super, 0x3c);
|
||||
SoundReq(SFX_CHEST_OPEN);
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type2Action4(ChestSpawnerEntity* this) {
|
||||
sub_0800445C(super);
|
||||
GetNextFrame(super);
|
||||
if ((super->frame & 0x80) != 0) {
|
||||
if (--super->field_0xf == 0) {
|
||||
if (super->actionDelay == 0x18) {
|
||||
super->action = 6;
|
||||
super->actionDelay = 8;
|
||||
super->field_0xf = 0x10;
|
||||
} else {
|
||||
super->action = 5;
|
||||
sub_08084074(super->type2);
|
||||
}
|
||||
}
|
||||
SetLocalFlag(super->type2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08084074(u32 param_1) {
|
||||
u8* arr = (u8*)GetCurrentRoomProperty(3);
|
||||
if (arr != NULL) {
|
||||
for (; arr[0] != 0; arr += 8) {
|
||||
if ((arr[0] == 3) && (param_1 == arr[1])) {
|
||||
CreateItemEntity(arr[2], arr[3], 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080840A8(s32 param_1, s32 param_2) {
|
||||
static const u8 gUnk_0811F838[] = { 84, 84, 84, 84, 85, 85, 85, 86 };
|
||||
static const s32 gUnk_0811F840[] = { 393216, 458752, 524288, 589824 };
|
||||
static const s8 gUnk_0811F850[] = { -6, 0, 0, 6 };
|
||||
Entity* obj = CreateObject(GROUND_ITEM, gUnk_0811F838[Random() & 7], 0);
|
||||
if (obj != NULL) {
|
||||
obj->actionDelay = 6;
|
||||
obj->direction = ((Random() & 7) + 0xc) | 0x80;
|
||||
obj->speed = (Random() & 0xf) * 2 + 0x20;
|
||||
obj->zVelocity = gUnk_0811F840[Random() & 3];
|
||||
obj->x.HALF.HI = gUnk_0811F850[Random() & 3] + param_1;
|
||||
obj->y.HALF.HI = param_2 + 1;
|
||||
obj->z.HALF.HI = 0xfff8;
|
||||
ResolveCollisionLayer(obj);
|
||||
obj = CreateFx(obj, FX_DASH, 0);
|
||||
if (obj != NULL) {
|
||||
SoundReq(SFX_124);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type2Action6(ChestSpawnerEntity* this) {
|
||||
if (--super->actionDelay == 0) {
|
||||
super->actionDelay = 8;
|
||||
if (--super->field_0xf != 0) {
|
||||
sub_080840A8(super->x.HALF.HI, super->y.HALF.HI);
|
||||
} else {
|
||||
super->action = 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type2Action5(ChestSpawnerEntity* this) {
|
||||
sub_0800445C(super);
|
||||
}
|
||||
|
||||
void ChestSpawner_Type2Action7(ChestSpawnerEntity* this) {
|
||||
}
|
||||
|
||||
void ChestSpawner_Type0Init(ChestSpawnerEntity* this) {
|
||||
super->action++;
|
||||
this->tilePosition = COORD_TO_TILE(super);
|
||||
super->hitbox = (Hitbox*)&gUnk_0811F8A8;
|
||||
if (GetTileTypeByEntity(super) == 0x74) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if (CheckFlags(this->unk_86)) {
|
||||
super->action = 3;
|
||||
sub_0807B7D8(0x73, this->tilePosition, super->collisionLayer);
|
||||
if ((super->type & 1) == 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type0Action1(ChestSpawnerEntity* this) {
|
||||
if (CheckFlags(this->unk_86)) {
|
||||
super->action = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type0Action2(ChestSpawnerEntity* this) {
|
||||
sub_0807B7D8(0x73, this->tilePosition, super->collisionLayer);
|
||||
switch (super->type) {
|
||||
case 6:
|
||||
case 7:
|
||||
SoundReq(SFX_215);
|
||||
break;
|
||||
default:
|
||||
SoundReq(SFX_SECRET);
|
||||
CreateDust(super);
|
||||
break;
|
||||
}
|
||||
super->action = 3;
|
||||
this->unk_72 = super->actionDelay * 0x3c;
|
||||
if ((super->type & 1) == 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
void ChestSpawner_Type0Action3(ChestSpawnerEntity* this) {
|
||||
if ((super->type == 1) || (super->type == 7)) {
|
||||
if (GetTileTypeByEntity(super) == 0x74) {
|
||||
DeleteEntity(super);
|
||||
} else {
|
||||
if (!CheckFlags(this->unk_86)) {
|
||||
if (this->unk_72 != 0) {
|
||||
this->unk_72--;
|
||||
} else {
|
||||
super->action = 1;
|
||||
sub_0807BA8C(this->tilePosition, super->collisionLayer);
|
||||
CreateDust(super);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080842D8(ChestSpawnerEntity* this) {
|
||||
static const u8 gUnk_0811F854[] = {
|
||||
35, 64, 191, 255, 35, 64, 192, 255, 38, 64, 255, 255, 38, 64, 0, 0, 255, 255,
|
||||
};
|
||||
static const u8 gUnk_0811F866[] = {
|
||||
39, 64, 191, 255, 35, 64, 192, 255, 40, 64, 193, 255, 41, 64, 255, 255, 38, 64, 0, 0, 42, 64, 1, 0, 255, 255,
|
||||
};
|
||||
static const u8 gUnk_0811F880[] = {
|
||||
34, 64, 255, 255, 34, 64, 0, 0, 255, 255,
|
||||
};
|
||||
static const u8 gUnk_0811F88A[] = {
|
||||
36, 64, 255, 255, 34, 64, 0, 0, 37, 64, 1, 0, 255, 255,
|
||||
};
|
||||
static const u8* const gUnk_0811F898[] = {
|
||||
gUnk_0811F854,
|
||||
gUnk_0811F866,
|
||||
gUnk_0811F880,
|
||||
gUnk_0811F88A,
|
||||
};
|
||||
s32 index = -(-(super->x.HALF.HI & 8) >> 0x1f);
|
||||
if ((super->y.HALF.HI & 8) != 0) {
|
||||
index += 2;
|
||||
}
|
||||
sub_0801AF18((u8*)gUnk_0811F898[index], COORD_TO_TILE(super), super->collisionLayer);
|
||||
}
|
||||
|
||||
const Hitbox gUnk_0811F8A8 = { 0, -3, { 0, 0, 0, 0 }, 6, 6 };
|
||||
const Hitbox gUnk_0811F8B0 = { 0, -3, { 0, 0, 0, 0 }, 12, 6 };
|
||||
|
||||
@@ -0,0 +1,215 @@
|
||||
/**
|
||||
* @file doubleBookshelf.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Double Bookshelf object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[0x18];
|
||||
/*0x80*/ u16 unk_80;
|
||||
/*0x82*/ u16 unk_82;
|
||||
/*0x84*/ u8 unk_84;
|
||||
/*0x85*/ u8 unk_85;
|
||||
/*0x86*/ u16 unk_86;
|
||||
} DoubleBookshelfEntity;
|
||||
|
||||
void sub_0809B334(DoubleBookshelfEntity*);
|
||||
void sub_0809B0B0(DoubleBookshelfEntity*);
|
||||
void sub_0809B234(DoubleBookshelfEntity*);
|
||||
void sub_0809B274(DoubleBookshelfEntity*);
|
||||
void sub_0809B358(DoubleBookshelfEntity*);
|
||||
void sub_0809B38C(DoubleBookshelfEntity*);
|
||||
void DoubleBookshelf_Init(DoubleBookshelfEntity*);
|
||||
void DoubleBookshelf_Action1(DoubleBookshelfEntity*);
|
||||
void DoubleBookshelf_Action2(DoubleBookshelfEntity*);
|
||||
void DoubleBookshelf_Action3(DoubleBookshelfEntity*);
|
||||
|
||||
void DoubleBookshelf(DoubleBookshelfEntity* this) {
|
||||
static void (*const DoubleBookshelf_Actions[])(DoubleBookshelfEntity*) = {
|
||||
DoubleBookshelf_Init,
|
||||
DoubleBookshelf_Action1,
|
||||
DoubleBookshelf_Action2,
|
||||
DoubleBookshelf_Action3,
|
||||
};
|
||||
DoubleBookshelf_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void DoubleBookshelf_Init(DoubleBookshelfEntity* this) {
|
||||
DoubleBookshelfEntity* child;
|
||||
super->frameIndex = super->type;
|
||||
this->unk_80 = COORD_TO_TILE(super);
|
||||
if (super->type != 0) {
|
||||
super->action = 1;
|
||||
if (this->unk_84 == 0) {
|
||||
super->subAction = 0;
|
||||
} else {
|
||||
super->subAction = 1;
|
||||
}
|
||||
} else {
|
||||
super->action = 3;
|
||||
super->subAction = 4;
|
||||
this->unk_84 = 0;
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
child = (DoubleBookshelfEntity*)CreateObject(DOUBLE_BOOKSHELF, 1, 0);
|
||||
if (child != NULL) {
|
||||
(child->base).parent = super;
|
||||
super->child = &child->base;
|
||||
if (CheckFlags(this->unk_86) == 0) {
|
||||
PositionRelative(super, &child->base, 0x100000, 0x100000);
|
||||
child->unk_84 = 0;
|
||||
} else {
|
||||
PositionRelative(super, &child->base, 0, 0x100000);
|
||||
child->unk_84 = 1;
|
||||
}
|
||||
}
|
||||
sub_0809B334(this);
|
||||
}
|
||||
sub_0809B0B0(this);
|
||||
}
|
||||
|
||||
void DoubleBookshelf_Action1(DoubleBookshelfEntity* this) {
|
||||
GetTileType(this->unk_82, super->collisionLayer);
|
||||
sub_0809B234(this);
|
||||
}
|
||||
|
||||
void DoubleBookshelf_Action2(DoubleBookshelfEntity* this) {
|
||||
LinearMoveUpdate(super);
|
||||
if (--super->actionDelay == 0) {
|
||||
super->action = 1;
|
||||
this->unk_80 = COORD_TO_TILE(super);
|
||||
SetPlayerControl(CONTROL_ENABLED);
|
||||
sub_0809B0B0(this);
|
||||
EnqueueSFX(SFX_BUTTON_PRESS);
|
||||
}
|
||||
}
|
||||
|
||||
void DoubleBookshelf_Action3(DoubleBookshelfEntity* this) {
|
||||
sub_0809B234(this);
|
||||
}
|
||||
|
||||
void sub_0809B0B0(DoubleBookshelfEntity* this) {
|
||||
u32 position = this->unk_80 - 1;
|
||||
u32 layer = super->collisionLayer;
|
||||
switch (super->subAction) {
|
||||
case 0:
|
||||
this->unk_84 = 0;
|
||||
this->unk_82 = position + 2;
|
||||
SetTile(0x4082, position - 1, layer);
|
||||
SetTile(0x4022, position, layer);
|
||||
SetTile(0x4022, position + 1, layer);
|
||||
SetTile(0x4022, position + 2, layer);
|
||||
break;
|
||||
case 1:
|
||||
this->unk_84 = 1;
|
||||
this->unk_82 = position;
|
||||
SetTile(0x405f, position, layer);
|
||||
SetTile(0x4022, position + 1, layer);
|
||||
SetTile(0x4022, position + 2, layer);
|
||||
SetTile(0x4082, position + 3, layer);
|
||||
break;
|
||||
case 2:
|
||||
this->unk_84 = 1;
|
||||
this->unk_82 = position;
|
||||
SetTile(0x4082, position + 3, layer);
|
||||
SetTile(0x4022, position + 2, layer);
|
||||
SetTile(0x405f, position, layer);
|
||||
SetFlag(((DoubleBookshelfEntity*)super->parent)->unk_86);
|
||||
break;
|
||||
case 3:
|
||||
this->unk_84 = 0;
|
||||
this->unk_82 = position + 2;
|
||||
SetTile(0x4082, position - 1, layer);
|
||||
SetTile(0x4022, position, layer);
|
||||
SetTile(0x405f, position + 2, layer);
|
||||
ClearFlag(((DoubleBookshelfEntity*)super->parent)->unk_86);
|
||||
break;
|
||||
case 4:
|
||||
SetTile(0x4022, position, layer);
|
||||
SetTile(0x4022, position + 1, layer);
|
||||
SetTile(0x4022, position + 2, layer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0809B234(DoubleBookshelfEntity* this) {
|
||||
if (super->type != 0) {
|
||||
super->spriteRendering.b3 = super->parent->spriteRendering.b3;
|
||||
super->spritePriority.b0 = super->parent->spritePriority.b0;
|
||||
} else {
|
||||
sub_0809B274(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0809B274(DoubleBookshelfEntity* this) {
|
||||
Entity* player = &gPlayerEntity;
|
||||
switch (this->unk_84) {
|
||||
case 0:
|
||||
if (player->y.HALF.HI + 0x14 >= super->y.HALF.HI) {
|
||||
return;
|
||||
}
|
||||
this->unk_84 = 1;
|
||||
super->spritePriority.b0 = 5;
|
||||
break;
|
||||
case 1:
|
||||
if (player->x.HALF.HI + 0x1c > super->x.HALF.HI) {
|
||||
this->unk_84 = 2;
|
||||
SetTile(0x4022, this->unk_80 + 2, 1);
|
||||
sub_0809B358((DoubleBookshelfEntity*)super->child);
|
||||
return;
|
||||
}
|
||||
if (player->y.HALF.HI + 0x10 <= super->y.HALF.HI) {
|
||||
return;
|
||||
}
|
||||
this->unk_84 = 0;
|
||||
super->spritePriority.b0 = 4;
|
||||
break;
|
||||
case 2:
|
||||
if (player->x.HALF.HI + 0x20 >= super->x.HALF.HI) {
|
||||
return;
|
||||
}
|
||||
this->unk_84 = 1;
|
||||
sub_0807BA8C(this->unk_80 + 2, 1);
|
||||
sub_0809B38C((DoubleBookshelfEntity*)super->child);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0809B334(DoubleBookshelfEntity* this) {
|
||||
s32 index;
|
||||
u32 position = this->unk_80 - 0x81;
|
||||
for (index = 2; index >= 0; index--, position++) {
|
||||
SetTile(0x4026, position, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0809B358(DoubleBookshelfEntity* this) {
|
||||
static const u16 gUnk_08123D68[] = {
|
||||
0x4022, 0x4022, 0x4074, 0x4026, 0x4074, 0x4074, 0x4026, 0x4074, 0x4022, 0x4022
|
||||
};
|
||||
s32 index;
|
||||
const u16* array = &gUnk_08123D68[this->unk_84];
|
||||
u32 position = this->unk_80 - 0x82;
|
||||
for (index = 4; index >= 0;) {
|
||||
SetTile(*array, position, 1);
|
||||
index--;
|
||||
position++;
|
||||
array += 2;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0809B38C(DoubleBookshelfEntity* this) {
|
||||
s32 index;
|
||||
u32 uVar1 = this->unk_80 - 0x82;
|
||||
for (index = 4; index >= 0;) {
|
||||
sub_0807BA8C(uVar1, 1);
|
||||
index--;
|
||||
uVar1++;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
/**
|
||||
* @file fairy.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Fairy object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
#include "item.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[0xc];
|
||||
/*0x74*/ u16 unk_74;
|
||||
/*0x76*/ u16 unk_76;
|
||||
/*0x78*/ u16 unk_78;
|
||||
/*0x7a*/ u8 unk_7a[0xd];
|
||||
/*0x87*/ u8 unk_87;
|
||||
} FairyEntity;
|
||||
|
||||
extern Hitbox gUnk_080FD1A8;
|
||||
|
||||
void sub_0808D76C(FairyEntity*);
|
||||
void sub_0808DAD0(FairyEntity*);
|
||||
void sub_0808DB2C(FairyEntity*);
|
||||
bool32 sub_0808DAA0(FairyEntity*);
|
||||
void Fairy_Init(FairyEntity*);
|
||||
void Fairy_Action1(FairyEntity*);
|
||||
void Fairy_Action2(FairyEntity*);
|
||||
void Fairy_Action3(FairyEntity*);
|
||||
void Fairy_Action4(FairyEntity*);
|
||||
void Fairy_SubAction0(FairyEntity*);
|
||||
void Fairy_SubAction1(FairyEntity*);
|
||||
void Fairy_SubAction2(FairyEntity*);
|
||||
|
||||
void Fairy(FairyEntity* this) {
|
||||
static void (*const Fairy_Actions[])(FairyEntity*) = {
|
||||
Fairy_Init, Fairy_Action1, Fairy_Action2, Fairy_Action3, Fairy_Action4,
|
||||
};
|
||||
|
||||
if (((super->bitfield & 0x80) != 0)) {
|
||||
switch (super->bitfield & 0x7f) {
|
||||
case 0x14:
|
||||
super->action = 3;
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->child = super->field_0x4c;
|
||||
break;
|
||||
case 0x1f:
|
||||
DeleteThisEntity();
|
||||
case 0:
|
||||
case 1:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 0xb:
|
||||
case 0xc:
|
||||
case 0x1e:
|
||||
sub_0808DAD0(this);
|
||||
break;
|
||||
case 0x13:
|
||||
sub_0808D76C(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
Fairy_Actions[super->action](this);
|
||||
sub_08080CB4(super);
|
||||
}
|
||||
|
||||
void sub_0808D76C(FairyEntity* this) {
|
||||
static void (*const Fairy_SubActions[])(FairyEntity*) = {
|
||||
Fairy_SubAction0,
|
||||
Fairy_SubAction1,
|
||||
Fairy_SubAction2,
|
||||
};
|
||||
|
||||
Fairy_SubActions[super->subAction](this);
|
||||
}
|
||||
|
||||
void Fairy_SubAction0(FairyEntity* this) {
|
||||
super->subAction = 1;
|
||||
super->field_0x1d = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
}
|
||||
|
||||
void Fairy_SubAction1(FairyEntity* this) {
|
||||
sub_0806F4E8(super);
|
||||
}
|
||||
|
||||
void Fairy_SubAction2(FairyEntity* this) {
|
||||
if (sub_0806F3E4(super)) {
|
||||
sub_0808DB2C(this);
|
||||
}
|
||||
}
|
||||
|
||||
void Fairy_Init(FairyEntity* this) {
|
||||
super->collisionLayer = 3;
|
||||
super->field_0x3c = 0x17;
|
||||
super->hurtType = 0x49;
|
||||
super->hitType = 7;
|
||||
super->flags2 = 0x17;
|
||||
super->health = 0xff;
|
||||
super->hitbox = (Hitbox*)&gUnk_080FD1A8;
|
||||
super->field_0x1c = 1;
|
||||
this->unk_74 = super->x.HALF.HI;
|
||||
this->unk_76 = super->y.HALF.HI;
|
||||
SetDefaultPriority(super, 6);
|
||||
EnqueueSFX(SFX_136);
|
||||
|
||||
switch (super->type2) {
|
||||
case 0:
|
||||
super->zVelocity = 0x1e000;
|
||||
super->z.HALF.HI += 8;
|
||||
// fallthrough
|
||||
default:
|
||||
super->action = 1;
|
||||
break;
|
||||
case 2:
|
||||
sub_0808DAD0(this);
|
||||
break;
|
||||
case 3:
|
||||
sub_0808DB2C(this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Fairy_Action1(FairyEntity* this) {
|
||||
super->z.WORD -= 0xe000;
|
||||
if (super->frame != 0) {
|
||||
if (super->actionDelay != 0) {
|
||||
this->unk_78 *= 0x1e;
|
||||
} else {
|
||||
this->unk_78 = 600;
|
||||
}
|
||||
super->action = 2;
|
||||
super->field_0xf = 1;
|
||||
super->speed = 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
void Fairy_Action2(FairyEntity* this) {
|
||||
static const u8 gUnk_081217A4[] = {
|
||||
128,
|
||||
96,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
if (--super->field_0xf == 0) {
|
||||
u32 rand = Random();
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->field_0xf = 0x20;
|
||||
super->speed = (u16)gUnk_081217A4[rand >> 8 & 1];
|
||||
if (sub_0808DAA0(this)) {
|
||||
super->direction = rand & 0x1f;
|
||||
} else {
|
||||
super->direction = CalculateDirectionTo(super->x.HALF.HI, super->y.HALF.HI, this->unk_74, this->unk_76);
|
||||
}
|
||||
if ((super->direction & 0xf) != 0) {
|
||||
super->spriteSettings.flipX = ((super->direction ^ 0x10) >> 4);
|
||||
}
|
||||
}
|
||||
ProcessMovement1(super);
|
||||
if ((AnyPrioritySet() == 0) && (super->type2 == 0)) {
|
||||
if (--this->unk_78 == 0) {
|
||||
sub_08081404(super, 0);
|
||||
}
|
||||
if (this->unk_78 < 0x78) {
|
||||
super->spriteSettings.draw ^= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Fairy_Action3(FairyEntity* this) {
|
||||
if (*(u16*)&super->child->kind != 0x308) {
|
||||
sub_08081404(super, 0);
|
||||
} else {
|
||||
CopyPosition(super->child, super);
|
||||
super->z.HALF.HI--;
|
||||
if (IsColliding(super, &gPlayerEntity)) {
|
||||
sub_0808DB2C(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Fairy_Action4(FairyEntity* this) {
|
||||
Entity* child;
|
||||
s32 tmp;
|
||||
|
||||
child = super->child;
|
||||
tmp = gSineTable[super->actionDelay] * 0xa00;
|
||||
if (tmp < 0) {
|
||||
tmp += 0xffff;
|
||||
}
|
||||
super->x.HALF.HI = (tmp >> 0x10) + child->x.HALF.HI;
|
||||
tmp = gSineTable[super->actionDelay + 0x40] * 0x500;
|
||||
if (tmp < 0) {
|
||||
tmp += 0xffff;
|
||||
}
|
||||
super->y.HALF.HI = child->y.HALF.HI - (tmp >> 0x10);
|
||||
super->actionDelay += 8;
|
||||
super->z.HALF.HI = child->z.HALF.HI;
|
||||
super->spriteOrientation.flipY = child->spriteOrientation.flipY;
|
||||
super->spriteRendering.b3 = child->spriteRendering.b3;
|
||||
if ((u8)(super->actionDelay - 0x41) < 0x7f) {
|
||||
super->spritePriority.b0 = 3;
|
||||
} else {
|
||||
super->spritePriority.b0 = 5;
|
||||
}
|
||||
if (--super->field_0xf == 0) {
|
||||
super->field_0xf = 6;
|
||||
if (((--super->spriteOffsetY) * 0x1000000) >> 0x18 < -0x16) {
|
||||
sub_08081404(super, 1);
|
||||
}
|
||||
}
|
||||
if (super->spriteOffsetY < -0x11) {
|
||||
super->spriteSettings.draw ^= 1;
|
||||
}
|
||||
if (this->unk_87 > 10) {
|
||||
this->unk_87 = 10;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0808DAA0(FairyEntity* this) {
|
||||
if (((super->x.HALF.HI - (u32)this->unk_74) + 0x30 < 0x61) &&
|
||||
((super->y.HALF.HI - (u32)this->unk_76) + 0x30 < 0x61)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808DAD0(FairyEntity* this) {
|
||||
if (super->health == 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
super->action = 4;
|
||||
super->actionDelay = 0x80;
|
||||
super->field_0xf = 6;
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spritePriority.b1 = 2;
|
||||
super->spriteOffsetY = -5;
|
||||
super->child = &gPlayerEntity;
|
||||
CopyPosition(&gPlayerEntity, super);
|
||||
}
|
||||
|
||||
void sub_0808DB2C(FairyEntity* this) {
|
||||
super->action = 2;
|
||||
super->subAction = 0;
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->flags2 = 1;
|
||||
CopyPosition(&gPlayerEntity, super);
|
||||
}
|
||||
@@ -28,9 +28,6 @@ static bool32 sub_080867CC(u32);
|
||||
void sub_0808681C(Entity*);
|
||||
static u8 sub_08086954(Entity*);
|
||||
|
||||
extern u32 CheckRegionOnScreen(u32, u32, u32, u32);
|
||||
extern void sub_08078AC0(u32, u32, u32);
|
||||
|
||||
extern void (*const gUnk_081206B4[])(Entity*);
|
||||
extern Hitbox gUnk_081206AC; // TODO: should be const
|
||||
|
||||
|
||||
@@ -19,9 +19,6 @@ void sub_080813BC(Entity*);
|
||||
void sub_080810FC(Entity*);
|
||||
bool32 CheckShouldPlayItemGetCutscene(Entity*);
|
||||
|
||||
extern u32 IsColliding(Entity*, Entity*);
|
||||
extern void GiveItem(u32, u32);
|
||||
|
||||
extern void (*const gUnk_0811E7D4[])(Entity*);
|
||||
extern void (*const gUnk_0811E7E8[])(Entity*);
|
||||
extern void (*const gUnk_0811E814[])(Entity*);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
extern void (*gUnk_08121488[])(Entity*);
|
||||
|
||||
extern u32 sub_08057810(void);
|
||||
extern void CreateMagicSparkles(u32, u32, u32);
|
||||
|
||||
u32 sub_0808C128(Entity*);
|
||||
void sub_0808C13C(Entity*);
|
||||
|
||||
@@ -0,0 +1,307 @@
|
||||
/**
|
||||
* @file lavaPlatform.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Lava Platform 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 timer;
|
||||
/*0x72*/ u16 wobbleTime; /**< Time the player can stand on the platform. */
|
||||
/*0x74*/ u16 respawnTime; /**< Time until the platform respawns after it has sunk. */
|
||||
/*0x76*/ u16 unk_76;
|
||||
/*0x78*/ Entity* unk_78; // Typed same as second argument of sub_080A2CC0
|
||||
} LavaPlatformEntity;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity* unk_78; // Typed same as second argument of sub_080A2CC0
|
||||
/*0x04*/ s16 x;
|
||||
/*0x06*/ s16 y;
|
||||
/*0x08*/ u8 collisionLayer;
|
||||
/*0x09*/ u8 type2;
|
||||
/*0x0a*/ u16 wobbleTime;
|
||||
/*0x0c*/ u16 respawnTime;
|
||||
/*0x0e*/ u8 unk_e[2];
|
||||
} LavaPlatformEntry;
|
||||
|
||||
extern void sub_080A2CC0(Entity*, Entity**, u16*);
|
||||
extern Hitbox gUnk_080FD280;
|
||||
|
||||
void sub_08092278(LavaPlatformEntity*);
|
||||
void sub_08092344(LavaPlatformEntity*);
|
||||
void LavaPlatform_SpawnPlatforms(LavaPlatformEntity*);
|
||||
void sub_080926E4(LavaPlatformEntity*);
|
||||
void sub_0809264C(LavaPlatformEntity*);
|
||||
void sub_08092620(LavaPlatformEntity*);
|
||||
bool32 LavaPlatform_IsPlayerOnPlatform(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type0Init(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type0Action1(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type0Action2(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Init(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Action1(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Action2(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Action3(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Action4(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Action5(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Action6(LavaPlatformEntity*);
|
||||
void LavaPlatform_Type1Action7(LavaPlatformEntity*);
|
||||
|
||||
void LavaPlatform(LavaPlatformEntity* this) {
|
||||
if (super->type == 0) {
|
||||
sub_08092278(this);
|
||||
} else {
|
||||
sub_08092344(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08092278(LavaPlatformEntity* this) {
|
||||
static void (*const LavaPlatform_Type0Actions[])(LavaPlatformEntity*) = {
|
||||
LavaPlatform_Type0Init,
|
||||
LavaPlatform_Type0Action1,
|
||||
LavaPlatform_Type0Action2,
|
||||
};
|
||||
LavaPlatform_Type0Actions[super->action](this);
|
||||
}
|
||||
|
||||
void LavaPlatform_Type0Init(LavaPlatformEntity* this) {
|
||||
super->action = 1;
|
||||
LavaPlatform_SpawnPlatforms(this);
|
||||
}
|
||||
|
||||
void LavaPlatform_Type0Action1(LavaPlatformEntity* this) {
|
||||
if (*(u8*)&this->timer != 0) {
|
||||
// Use this entity to show the platform flipping animation.
|
||||
super->action = 2;
|
||||
super->zVelocity = 0x2c000;
|
||||
super->spriteSettings.draw = 1;
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
InitAnimationForceUpdate(super, (super->child)->animationState);
|
||||
EnqueueSFX(SFX_LAVA_TILE_FLIP);
|
||||
InitializeAnimation(super->child, 3);
|
||||
}
|
||||
}
|
||||
|
||||
void LavaPlatform_Type0Action2(LavaPlatformEntity* this) {
|
||||
if (GravityUpdate(super, 0x2400) == 0) {
|
||||
// Finished flipping platform.
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 0;
|
||||
*(u8*)&this->timer = 0;
|
||||
(super->child)->spriteOffsetY = 0;
|
||||
InitializeAnimation(super->child, super->child->animationState);
|
||||
CreateFx(super, FX_LAVA_SPLASH_HUGE, 0);
|
||||
} else if ((super->zVelocity < 0x18000) && ((super->frame & 0x80) == 0)) {
|
||||
UpdateAnimationSingleFrame(super);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08092344(LavaPlatformEntity* this) {
|
||||
static void (*const LavaPlatform_Type1Actions[])(LavaPlatformEntity*) = {
|
||||
LavaPlatform_Type1Init, LavaPlatform_Type1Action1, LavaPlatform_Type1Action2, LavaPlatform_Type1Action3,
|
||||
LavaPlatform_Type1Action4, LavaPlatform_Type1Action5, LavaPlatform_Type1Action6, LavaPlatform_Type1Action7,
|
||||
};
|
||||
super->field_0xf = 0;
|
||||
LavaPlatform_Type1Actions[super->action](this);
|
||||
sub_080926E4(this);
|
||||
}
|
||||
|
||||
void LavaPlatform_Type1Init(LavaPlatformEntity* this) {
|
||||
super->animationState = super->type2;
|
||||
super->spritePriority.b0 = 7;
|
||||
super->hurtType = 0x48;
|
||||
super->field_0x3c = 7;
|
||||
super->flags2 = 0x81;
|
||||
super->hitbox = (Hitbox*)&gUnk_080FD280;
|
||||
sub_0809264C(this);
|
||||
}
|
||||
|
||||
void LavaPlatform_Type1Action1(LavaPlatformEntity* this) {
|
||||
if (super->animIndex != 3) {
|
||||
if (super->subAction == 0) {
|
||||
super->subAction = 1;
|
||||
super->animationState ^= 1;
|
||||
InitializeAnimation(super, (u32)super->animationState);
|
||||
}
|
||||
if (--super->spriteOffsetY * 0x1000000 >> 0x18 == -3) {
|
||||
sub_0809264C(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LavaPlatform_Type1Action2(LavaPlatformEntity* this) {
|
||||
if (super->bitfield == 0x9d) {
|
||||
sub_08092620(this);
|
||||
} else {
|
||||
if (LavaPlatform_IsPlayerOnPlatform(this)) {
|
||||
super->action = 3;
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
super->actionDelay = 0x14;
|
||||
gPlayerState.field_0x3f = 0xfd;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Player is standing on the platform. */
|
||||
void LavaPlatform_Type1Action3(LavaPlatformEntity* this) {
|
||||
if (LavaPlatform_IsPlayerOnPlatform(this)) {
|
||||
gPlayerState.field_0x3f = 0xfd;
|
||||
}
|
||||
if (--super->actionDelay == 0) {
|
||||
super->action = 4;
|
||||
this->timer = this->wobbleTime;
|
||||
super->spriteOffsetY = 0;
|
||||
InitializeAnimation(super, 2);
|
||||
EnqueueSFX(SFX_LAVA_TILE_STEP);
|
||||
}
|
||||
}
|
||||
|
||||
/** Platform begins to wobble */
|
||||
void LavaPlatform_Type1Action4(LavaPlatformEntity* this) {
|
||||
u32 tmp;
|
||||
LavaPlatform_IsPlayerOnPlatform(this);
|
||||
if (this->timer != 0) {
|
||||
this->timer--;
|
||||
}
|
||||
if (this->timer < 0x8d) {
|
||||
GetNextFrame(super);
|
||||
tmp = super->frame & 0x80;
|
||||
if (tmp) {
|
||||
// Platform sank
|
||||
super->action = 5;
|
||||
this->timer = this->respawnTime;
|
||||
super->spriteSettings.draw = 0;
|
||||
} else {
|
||||
if ((super->frame & 1) != 0) {
|
||||
super->frame = tmp;
|
||||
EnqueueSFX(SFX_LAVA_TILE_WOBBLE);
|
||||
} else {
|
||||
if ((super->frame & 2) != 0) {
|
||||
super->frame = super->frame & 1;
|
||||
EnqueueSFX(SFX_LAVA_TILE_SINK);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LavaPlatform_Type1Action5(LavaPlatformEntity* this) {
|
||||
if (--this->timer == 0) {
|
||||
super->action = 6;
|
||||
super->animationState = super->type2;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spriteOffsetY = 0;
|
||||
InitializeAnimation(super, super->animationState + 4);
|
||||
if (super->animationState == 0) {
|
||||
LavaPlatform_IsPlayerOnPlatform(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LavaPlatform_Type1Action6(LavaPlatformEntity* this) {
|
||||
bool32 tmp;
|
||||
|
||||
if (super->animationState == 0) {
|
||||
tmp = LavaPlatform_IsPlayerOnPlatform(this);
|
||||
} else {
|
||||
tmp = FALSE;
|
||||
}
|
||||
GetNextFrame(super);
|
||||
if ((super->frame & 1) != 0) {
|
||||
super->frame = 0;
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->hitType = 0xac;
|
||||
} else {
|
||||
if ((super->frame & 0x80) != 0) {
|
||||
sub_0809264C(this);
|
||||
if (tmp) {
|
||||
gPlayerState.field_0x3f = 0xfd;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LavaPlatform_Type1Action7(LavaPlatformEntity* this) {
|
||||
if (super->bitfield == 0x9d) {
|
||||
sub_08092620(this);
|
||||
}
|
||||
}
|
||||
|
||||
void LavaPlatform_SpawnPlatforms(LavaPlatformEntity* this) {
|
||||
LavaPlatformEntry* entry = (LavaPlatformEntry*)GetCurrentRoomProperty(super->type2);
|
||||
while (entry->type2 != 0xff) {
|
||||
LavaPlatformEntity* platform = (LavaPlatformEntity*)CreateObject(LAVA_PLATFORM, 1, entry->type2);
|
||||
if (platform != NULL) {
|
||||
(platform->base).direction = 0xff;
|
||||
(platform->base).speed = 0;
|
||||
(platform->base).parent = super;
|
||||
(platform->base).x.HALF.HI = entry->x + gRoomControls.origin_x;
|
||||
(platform->base).y.HALF.HI = entry->y + gRoomControls.origin_y;
|
||||
(platform->base).collisionLayer = entry->collisionLayer;
|
||||
platform->wobbleTime = entry->wobbleTime;
|
||||
platform->respawnTime = entry->respawnTime;
|
||||
platform->unk_78 = entry->unk_78;
|
||||
UpdateSpriteForCollisionLayer((Entity*)platform);
|
||||
sub_080A2CC0(&platform->base, &platform->unk_78, &platform->unk_76);
|
||||
}
|
||||
entry++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08092620(LavaPlatformEntity* this) {
|
||||
LavaPlatformEntity* parent = (LavaPlatformEntity*)super->parent;
|
||||
u32 one;
|
||||
if (*(u8*)&parent->timer == 0) {
|
||||
one = 1;
|
||||
*(u8*)&parent->timer = one;
|
||||
(parent->base).child = super;
|
||||
CopyPosition(super, &parent->base);
|
||||
super->action = one;
|
||||
super->subAction = 0;
|
||||
super->hitType = 0xac;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0809264C(LavaPlatformEntity* this) {
|
||||
if ((super->animationState & 1) != 0) {
|
||||
super->action = 7;
|
||||
super->hitType = 0xac;
|
||||
} else {
|
||||
super->action = 2;
|
||||
super->hitType = 1;
|
||||
}
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spriteOffsetY = -3;
|
||||
InitializeAnimation(super, super->animationState);
|
||||
}
|
||||
|
||||
bool32 LavaPlatform_IsPlayerOnPlatform(LavaPlatformEntity* this) {
|
||||
if ((gPlayerState.flags & PL_MINISH) == 0 && EntityInRectRadius(super, &gPlayerEntity, 0x10, 0x10) &&
|
||||
sub_08079F8C()) {
|
||||
gPlayerState.field_0x14 = 1;
|
||||
if (gPlayerEntity.z.HALF.HI == 0) {
|
||||
super->field_0xf = 1;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_080926E4(LavaPlatformEntity* this) {
|
||||
sub_080A2BE4(super, super->field_0xf);
|
||||
if (super->action == 1) {
|
||||
(super->parent)->x.HALF.HI = super->x.HALF.HI;
|
||||
(super->parent)->y.HALF.HI = super->y.HALF.HI;
|
||||
}
|
||||
if (--this->unk_76 == 0) {
|
||||
sub_080A2CC0(super, &this->unk_78, &this->unk_76);
|
||||
}
|
||||
}
|
||||
@@ -37,8 +37,6 @@ void LockedDoor(Entity* this) {
|
||||
|
||||
extern Hitbox gHitbox_2;
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u32, u32);
|
||||
|
||||
typedef struct PACKED {
|
||||
s8 x;
|
||||
s8 y;
|
||||
|
||||
@@ -0,0 +1,255 @@
|
||||
/**
|
||||
* @file object3E.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Object3E object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
#include "screen.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
} Object3EEntity;
|
||||
|
||||
void Object3E_Type0(Object3EEntity*);
|
||||
void Object3E_Type1(Object3EEntity*);
|
||||
void Object3E_Type3(Object3EEntity*);
|
||||
void Object3E_Type4(Object3EEntity*);
|
||||
void Object3E_Type5(Object3EEntity*);
|
||||
void Object3E_Type6(Object3EEntity*);
|
||||
void Object3E_Type7(Object3EEntity*);
|
||||
void Object3E_Type8(Object3EEntity*);
|
||||
void Object3E_Type8_Init(Object3EEntity*);
|
||||
void Object3E_Type8_Action1(Object3EEntity*);
|
||||
void Object3E_Type8_Action2(Object3EEntity*);
|
||||
|
||||
void Object3E(Object3EEntity* this) {
|
||||
static void (*const Object3E_Types[])(Object3EEntity*) = {
|
||||
Object3E_Type0, Object3E_Type1, Object3E_Type1, Object3E_Type3, Object3E_Type4,
|
||||
Object3E_Type5, Object3E_Type6, Object3E_Type7, Object3E_Type8, Object3E_Type1,
|
||||
};
|
||||
Object3E_Types[super->type](this);
|
||||
}
|
||||
|
||||
void Object3E_Type0(Object3EEntity* this) {
|
||||
u32 tmp;
|
||||
u32 tmp2;
|
||||
switch (super->action) {
|
||||
case 0:
|
||||
super->action = 1;
|
||||
super->actionDelay = 0x40 - (Random() & 0x1f);
|
||||
super->frameIndex = 0;
|
||||
super->animationState = 0;
|
||||
super->spriteRendering.b3 = 3;
|
||||
super->spritePriority.b0 = 7;
|
||||
super->collisionLayer = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (--super->actionDelay == 0) {
|
||||
super->actionDelay = 8;
|
||||
super->field_0xf = 4;
|
||||
super->action = 2;
|
||||
super->animationState = Random() & 3;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (--super->actionDelay == 0) {
|
||||
if (--super->field_0xf == 0) {
|
||||
super->frameIndex = 0;
|
||||
super->action = 1;
|
||||
super->actionDelay = 0x40 - (Random() & 0x1f);
|
||||
} else {
|
||||
super->actionDelay = 8;
|
||||
tmp2 = super->animationState;
|
||||
if (super->frameIndex != tmp2) {
|
||||
tmp = tmp2;
|
||||
} else {
|
||||
tmp = 0;
|
||||
}
|
||||
super->frameIndex = tmp;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void Object3E_Type1(Object3EEntity* this) {
|
||||
static const u16 gUnk_08121704[] = {
|
||||
0x12d, 0x12e, 0x12f, 0x130, 0x131, 0x132, 0x133, 0x132, 0x131, 0x130, 0x12f, 0x12e, 0x12d, 0,
|
||||
};
|
||||
|
||||
switch (super->action) {
|
||||
case 0:
|
||||
super->action = 1;
|
||||
super->actionDelay = 8;
|
||||
super->field_0xf = 0;
|
||||
super->frameIndex = 0;
|
||||
super->spritePriority.b0 = 7;
|
||||
SetTile(0x4069, COORD_TO_TILE(super) - 0x40, 1);
|
||||
break;
|
||||
case 2:
|
||||
if ((gRoomTransition.frameCount & 3U) == 0) {
|
||||
gScreen.controls.alphaBlend = (super->subAction << 8) | (0x10 - super->subAction);
|
||||
super->subAction++;
|
||||
if (gScreen.controls.alphaBlend == 0x1000) {
|
||||
gScreen.controls.layerFXControl = 0;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
if (--super->actionDelay == 0) {
|
||||
super->actionDelay = 8;
|
||||
if (super->type == 9) {
|
||||
super->actionDelay = 2;
|
||||
}
|
||||
ChangeObjPalette(super, gUnk_08121704[super->field_0xf++]);
|
||||
if (gUnk_08121704[super->field_0xf] == 0) {
|
||||
super->field_0xf = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808D280(void) {
|
||||
Entity* obj = FindEntity(6, OBJECT_3E, 6, 9, 0);
|
||||
if (obj != NULL) {
|
||||
obj->action = 2;
|
||||
obj->subAction = 0;
|
||||
obj->spriteRendering.alphaBlend = 1;
|
||||
gScreen.controls.layerFXControl = 0x640;
|
||||
gScreen.controls.alphaBlend = 0x10;
|
||||
SoundReq(SFX_EVAPORATE);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808D2CC(void) {
|
||||
Entity* obj = FindEntity(6, OBJECT_3E, 6, 1, 0);
|
||||
if (obj != NULL) {
|
||||
obj->type = 9;
|
||||
SetDefaultPriority(obj, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void Object3E_Type3(Object3EEntity* this) {
|
||||
}
|
||||
|
||||
void Object3E_Type4(Object3EEntity* this) {
|
||||
s32 tmp;
|
||||
if (super->action == 0) {
|
||||
super->action = 0;
|
||||
super->frameIndex = 0;
|
||||
super->spritePriority.b0 = 7;
|
||||
sub_0807DD64(super);
|
||||
}
|
||||
tmp = super->x.HALF.HI;
|
||||
ExecuteScriptForEntity(super, NULL);
|
||||
HandleEntity0x82Actions(super);
|
||||
if (((gRoomControls.shake_duration != 0) && (tmp != super->x.HALF.HI)) && ((gRoomTransition.frameCount & 8) == 0)) {
|
||||
SoundReq(SFX_10F);
|
||||
}
|
||||
}
|
||||
|
||||
void Object3E_Type5(Object3EEntity* this) {
|
||||
if (super->action == 0) {
|
||||
super->action = 0;
|
||||
super->frameIndex = 1;
|
||||
super->spritePriority.b0 = 7;
|
||||
sub_0807DD64(super);
|
||||
}
|
||||
ExecuteScriptForEntity(super, NULL);
|
||||
HandleEntity0x82Actions(super);
|
||||
}
|
||||
|
||||
void Object3E_Type6(Object3EEntity* this) {
|
||||
static const u16 gUnk_08121720[] = { 0x149, 0x14a, 0x14b, 0x14a, 0, 0 };
|
||||
if (super->action == 0) {
|
||||
super->action = 1;
|
||||
super->actionDelay = 8;
|
||||
super->spritePriority.b0 = 7;
|
||||
gScreen.controls.layerFXControl = 0x640;
|
||||
gScreen.controls.alphaBlend = 0x1003;
|
||||
}
|
||||
if (--super->actionDelay == 0) {
|
||||
super->actionDelay = 2;
|
||||
sub_0801D28C(super, gUnk_08121720[super->field_0xf++]);
|
||||
if (gUnk_08121720[super->field_0xf] == 0) {
|
||||
super->field_0xf = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Object3E_Type7(Object3EEntity* this) {
|
||||
if (super->action == 0) {
|
||||
super->action = 1;
|
||||
super->spriteRendering.b3 = 3;
|
||||
super->spritePriority.b0 = 7;
|
||||
super->spriteRendering.alphaBlend = 1;
|
||||
super->frameIndex = super->type2;
|
||||
sub_0805EC9C(super, (1 - super->type2) * 0x200 + 0x100, 0xffffff40, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void Object3E_Type8(Object3EEntity* this) {
|
||||
static void (*const Object3E_Type8_Actions[])(Object3EEntity*) = {
|
||||
Object3E_Type8_Init,
|
||||
Object3E_Type8_Action1,
|
||||
Object3E_Type8_Action2,
|
||||
};
|
||||
|
||||
Object3E_Type8_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void Object3E_Type8_Init(Object3EEntity* this) {
|
||||
u32 tilePosition;
|
||||
super->spritePriority.b0 = 7;
|
||||
super->frameIndex = super->type2;
|
||||
super->action = 2;
|
||||
if ((super->type2 == 0) && (CheckLocalFlag(0x7c) == 0)) {
|
||||
super->action = 1;
|
||||
super->actionDelay = 0;
|
||||
super->spriteRendering.alphaBlend = 1;
|
||||
gScreen.controls.layerFXControl = 0x640;
|
||||
gScreen.controls.alphaBlend = 0x1000;
|
||||
SoundReq(SFX_179);
|
||||
} else {
|
||||
super->actionDelay = 8;
|
||||
tilePosition = COORD_TO_TILE(super);
|
||||
if (super->type2 != 0) {
|
||||
tilePosition -= 0x40;
|
||||
}
|
||||
SetTile(0x4069, tilePosition, super->collisionLayer);
|
||||
}
|
||||
}
|
||||
|
||||
void Object3E_Type8_Action1(Object3EEntity* this) {
|
||||
if ((gRoomTransition.frameCount & 3U) == 0) {
|
||||
gScreen.controls.alphaBlend = ((0x10 - super->actionDelay) * 0x100) | super->actionDelay;
|
||||
super->actionDelay++;
|
||||
if (gScreen.controls.alphaBlend == 0x10) {
|
||||
super->action = 2;
|
||||
super->actionDelay = 8;
|
||||
super->spriteRendering.alphaBlend = 0;
|
||||
gScreen.controls.layerFXControl = 0;
|
||||
SetTile(0x4069, COORD_TO_TILE(super), super->collisionLayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Object3E_Type8_Action2(Object3EEntity* this) {
|
||||
static const u16 gUnk_08121738[] = {
|
||||
0x14c, 0x14d, 0x14e, 0x14f, 0x150, 0x151, 0x150, 0x14f, 0x14e, 0x14d, 0x14c, 0,
|
||||
};
|
||||
if (--super->actionDelay == 0) {
|
||||
super->actionDelay = 8;
|
||||
ChangeObjPalette(super, gUnk_08121738[super->field_0xf++]);
|
||||
if (gUnk_08121738[super->field_0xf] == 0) {
|
||||
super->field_0xf = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,11 +103,6 @@ Object6ATypeAction sub_080961F4;
|
||||
Object6ATypeAction sub_08096284;
|
||||
Object6ATypeAction sub_08096290;
|
||||
|
||||
extern void sub_08080CB4(Entity*);
|
||||
extern u32 sub_080002B8(Entity*);
|
||||
extern u32 CheckOnScreen(Entity*);
|
||||
extern void sub_08078850(Entity*, u32, u32, u8*);
|
||||
|
||||
void sub_08095754(Object6AEntity*);
|
||||
void sub_080957B4(Object6AEntity*);
|
||||
void sub_08095954(Object6AEntity*);
|
||||
|
||||
+225
-11
@@ -1,13 +1,47 @@
|
||||
#include "entity.h"
|
||||
#include "player.h"
|
||||
/**
|
||||
* @file objectA8.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief ObjectA8 object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
#include "item.h"
|
||||
|
||||
extern void (*gUnk_08124824[])(Entity*);
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[0xc];
|
||||
/*0x74*/ u16 unk_74;
|
||||
/*0x76*/ u16 unk_76;
|
||||
/*0x78*/ u8 unk_78[0xf];
|
||||
/*0x87*/ u8 unk_87;
|
||||
} ObjectA8Entity;
|
||||
|
||||
void ObjectA8(Entity* this) {
|
||||
if ((this->bitfield & 0x80) != 0) {
|
||||
switch (this->bitfield & 0x7f) {
|
||||
extern Hitbox gUnk_080FD1A8;
|
||||
|
||||
void sub_0809FECC(ObjectA8Entity*);
|
||||
bool32 sub_0809FE9C(ObjectA8Entity*);
|
||||
void ObjectA8_Init(ObjectA8Entity*);
|
||||
void ObjectA8_Action1(ObjectA8Entity*);
|
||||
void ObjectA8_Action2(ObjectA8Entity*);
|
||||
void ObjectA8_Action3(ObjectA8Entity*);
|
||||
void ObjectA8_Action4(ObjectA8Entity*);
|
||||
void ObjectA8_Action5(ObjectA8Entity*);
|
||||
void ObjectA8_Action6(ObjectA8Entity*);
|
||||
void ObjectA8_Action2Subaction0(ObjectA8Entity*);
|
||||
void ObjectA8_Action2Subaction1(ObjectA8Entity*);
|
||||
void ObjectA8_Action2Subaction2(ObjectA8Entity*);
|
||||
|
||||
void ObjectA8(ObjectA8Entity* this) {
|
||||
static void (*const ObjectA8_Actions[])(ObjectA8Entity*) = {
|
||||
ObjectA8_Init, ObjectA8_Action1, ObjectA8_Action2, ObjectA8_Action3,
|
||||
ObjectA8_Action4, ObjectA8_Action5, ObjectA8_Action6,
|
||||
};
|
||||
if ((super->bitfield & 0x80) != 0) {
|
||||
switch (super->bitfield & 0x7f) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 4:
|
||||
@@ -20,12 +54,192 @@ void ObjectA8(Entity* this) {
|
||||
case 0xc:
|
||||
case 0x1e:
|
||||
case 0x1f:
|
||||
this->action = 5;
|
||||
this->child = &gPlayerEntity;
|
||||
CreateItemEntity(this->type, 0, 0);
|
||||
super->action = 5;
|
||||
super->child = &gPlayerEntity;
|
||||
CreateItemEntity(super->type, 0, 0);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
gUnk_08124824[this->action](this);
|
||||
sub_08080CB4(this);
|
||||
ObjectA8_Actions[super->action](this);
|
||||
sub_08080CB4(super);
|
||||
}
|
||||
void ObjectA8_Init(ObjectA8Entity* this) {
|
||||
super->action = 1;
|
||||
switch (super->type2) {
|
||||
case 0:
|
||||
super->zVelocity = 0x1e000;
|
||||
super->z.HALF.HI += 8;
|
||||
break;
|
||||
case 2:
|
||||
sub_0809FECC(this);
|
||||
return;
|
||||
}
|
||||
super->collisionLayer = 3;
|
||||
super->field_0x3c = 0x17;
|
||||
super->hurtType = 0x48;
|
||||
super->hitType = 7;
|
||||
super->flags2 = 0x17;
|
||||
super->hitbox = (Hitbox*)&gUnk_080FD1A8;
|
||||
super->field_0x1c = 1;
|
||||
this->unk_74 = super->x.HALF.HI;
|
||||
this->unk_76 = super->y.HALF.HI;
|
||||
SetDefaultPriority(super, 3);
|
||||
EnqueueSFX(SFX_136);
|
||||
}
|
||||
|
||||
void ObjectA8_Action1(ObjectA8Entity* this) {
|
||||
super->z.WORD -= 0xe000;
|
||||
if (super->frame != 0) {
|
||||
if (super->actionDelay != 0) {
|
||||
super->actionDelay *= 0x1e;
|
||||
} else {
|
||||
super->actionDelay = 0xf0;
|
||||
}
|
||||
super->action = 3;
|
||||
super->field_0xf = 1;
|
||||
super->speed = 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectA8_Action2(ObjectA8Entity* this) {
|
||||
static void (*const ObjectA8_Action2Subactions[])(ObjectA8Entity*) = {
|
||||
ObjectA8_Action2Subaction0,
|
||||
ObjectA8_Action2Subaction1,
|
||||
ObjectA8_Action2Subaction2,
|
||||
};
|
||||
ObjectA8_Action2Subactions[super->subAction](this);
|
||||
}
|
||||
|
||||
void ObjectA8_Action2Subaction0(ObjectA8Entity* this) {
|
||||
super->subAction = 1;
|
||||
super->field_0x1d = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
}
|
||||
|
||||
void ObjectA8_Action2Subaction1(ObjectA8Entity* this) {
|
||||
if ((gPlayerState.field_0x1c & 0xf) != 1 || (super->bitfield & 0x7f) != 0x13) {
|
||||
super->action = 3;
|
||||
} else {
|
||||
sub_0806F4E8(super);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectA8_Action2Subaction2(ObjectA8Entity* this) {
|
||||
if ((gPlayerState.field_0x1c & 0xf) != 1 || (super->bitfield & 0x7f) != 0x13) {
|
||||
super->action = 3;
|
||||
} else {
|
||||
if (sub_0806F3E4(super)) {
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
super->action = 5;
|
||||
super->child = &gPlayerEntity;
|
||||
GiveItem(super->type, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectA8_Action3(ObjectA8Entity* this) {
|
||||
static const u8 gUnk_0812484C[] = {
|
||||
128,
|
||||
96,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
if (--super->field_0xf == 0) {
|
||||
u32 rand = Random();
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->field_0xf = 0x20;
|
||||
super->speed = gUnk_0812484C[rand >> 8 & 1];
|
||||
if (sub_0809FE9C(this)) {
|
||||
super->direction = rand & 0x1f;
|
||||
} else {
|
||||
super->direction = CalculateDirectionTo(super->x.HALF.HI, super->y.HALF.HI, this->unk_74, this->unk_76);
|
||||
}
|
||||
if ((super->direction & 0xf) != 0) {
|
||||
super->spriteSettings.flipX = ((super->direction ^ 0x10) >> 4);
|
||||
}
|
||||
}
|
||||
ProcessMovement1(super);
|
||||
if ((AnyPrioritySet() == 0) && (super->type == 0)) {
|
||||
if (((gRoomTransition.frameCount & 1) != 0) && (--super->actionDelay == 0)) {
|
||||
sub_08081404(super, 0);
|
||||
}
|
||||
if (super->actionDelay < 0x3c) {
|
||||
super->spriteSettings.draw ^= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectA8_Action4(ObjectA8Entity* this) {
|
||||
if (*(u16*)&super->child->kind != 0xb08) {
|
||||
sub_08081404(super, 0);
|
||||
} else {
|
||||
CopyPosition(super->child, super);
|
||||
super->z.HALF.HI--;
|
||||
if (IsColliding(super, &gPlayerEntity)) {
|
||||
sub_0809FECC(this);
|
||||
GiveItem(super->type, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectA8_Action5(ObjectA8Entity* this) {
|
||||
super->action = 6;
|
||||
super->actionDelay = 0x80;
|
||||
super->field_0xf = 6;
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spritePriority.b1 = 2;
|
||||
super->spriteOffsetY = -5;
|
||||
CopyPosition(super->child, super);
|
||||
}
|
||||
|
||||
void ObjectA8_Action6(ObjectA8Entity* this) {
|
||||
s32 tmp;
|
||||
Entity* child = super->child;
|
||||
tmp = gSineTable[super->actionDelay] * 0xa00;
|
||||
if (tmp < 0) {
|
||||
tmp += 0xffff;
|
||||
}
|
||||
super->x.HALF.HI = (s16)(tmp >> 0x10) + child->x.HALF.HI;
|
||||
tmp = gSineTable[super->actionDelay + 0x40] * 0x500;
|
||||
if (tmp < 0) {
|
||||
tmp += 0xffff;
|
||||
}
|
||||
super->y.HALF.HI = super->child->y.HALF.HI - (tmp >> 0x10);
|
||||
super->actionDelay += 8;
|
||||
super->z.HALF.HI = super->child->z.HALF.HI;
|
||||
super->spriteOrientation.flipY = super->child->spriteOrientation.flipY;
|
||||
super->spriteRendering.b3 = super->child->spriteRendering.b3;
|
||||
if ((u8)(super->actionDelay - 0x41) < 0x7f) {
|
||||
super->spritePriority.b0 = 3;
|
||||
} else {
|
||||
super->spritePriority.b0 = 5;
|
||||
}
|
||||
if (--super->field_0xf == 0) {
|
||||
super->field_0xf = 6;
|
||||
if (((--super->spriteOffsetY) * 0x1000000) >> 0x18 < -0x16) {
|
||||
sub_08081404(super, 1);
|
||||
}
|
||||
}
|
||||
if (super->spriteOffsetY < -0x11) {
|
||||
super->spriteSettings.draw ^= 1;
|
||||
}
|
||||
if (this->unk_87 > 10) {
|
||||
this->unk_87 = 0xa;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0809FE9C(ObjectA8Entity* this) {
|
||||
if (((super->x.HALF.HI - (u32)this->unk_74) + 0x48 < 0x91) &&
|
||||
((super->y.HALF.HI - (u32)this->unk_76) + 0x30 < 0x61)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0809FECC(ObjectA8Entity* this) {
|
||||
super->child = &gPlayerEntity;
|
||||
super->action = 5;
|
||||
super->subAction = 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,303 @@
|
||||
/**
|
||||
* @file objectOnPillar.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Object on Pillar 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 tileIndex;
|
||||
/*0x72*/ u16 unk_72;
|
||||
/*0x74*/ u16 tilePosition;
|
||||
/*0x76*/ u16 unk_76;
|
||||
/*0x78*/ u8 unk_78[0x4];
|
||||
/*0x7c*/ u8 unk_7c;
|
||||
/*0x7d*/ u8 unk_7d;
|
||||
/*0x7e*/ u8 unk_7e;
|
||||
/*0x7f*/ u8 unk_7f;
|
||||
/*0x80*/ u8 unk_80[0x4];
|
||||
/*0x84*/ u16 hitFlag;
|
||||
/*0x86*/ u16 unk_86;
|
||||
} ObjectOnPillarEntity;
|
||||
|
||||
extern bool32 sub_080896B0(void); // pushableStatue
|
||||
|
||||
extern Hitbox gUnk_080FD1F4;
|
||||
extern s16 gUnk_080B4488[];
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
/*0x68*/ u8 unk_68[10 + 0x14];
|
||||
/*0x86*/ u16 hitFlag;
|
||||
} EntityWithHitFlag;
|
||||
|
||||
typedef struct {
|
||||
u16 key;
|
||||
u16 value;
|
||||
} KeyValuePair;
|
||||
|
||||
void sub_080970F4(ObjectOnPillarEntity*);
|
||||
void sub_080971E0(ObjectOnPillarEntity*);
|
||||
bool32 sub_08097194(ObjectOnPillarEntity*);
|
||||
bool32 sub_08097008(ObjectOnPillarEntity*);
|
||||
bool32 sub_08097144(ObjectOnPillarEntity*);
|
||||
void sub_08097098(ObjectOnPillarEntity*);
|
||||
u32 sub_08097074(u32);
|
||||
bool32 sub_08097348(u32);
|
||||
void ObjectOnPillar_Init(ObjectOnPillarEntity*);
|
||||
void ObjectOnPillar_Action1(ObjectOnPillarEntity*);
|
||||
void ObjectOnPillar_Action2(ObjectOnPillarEntity*);
|
||||
void ObjectOnPillar_Action3(ObjectOnPillarEntity*);
|
||||
void ObjectOnPillar_Action4(ObjectOnPillarEntity*);
|
||||
void ObjectOnPillar_SubAction0(ObjectOnPillarEntity*);
|
||||
void ObjectOnPillar_SubAction1(ObjectOnPillarEntity*);
|
||||
|
||||
void ObjectOnPillar(ObjectOnPillarEntity* this) {
|
||||
static void (*const ObjectOnPillar_Actions[])(ObjectOnPillarEntity*) = {
|
||||
ObjectOnPillar_Init, ObjectOnPillar_Action1, ObjectOnPillar_Action2,
|
||||
ObjectOnPillar_Action3, ObjectOnPillar_Action4,
|
||||
};
|
||||
ObjectOnPillar_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void ObjectOnPillar_Init(ObjectOnPillarEntity* this) {
|
||||
static const u8 gUnk_08123264[] = {
|
||||
0, 2, 4, 3, 7, 5, 0, 0,
|
||||
};
|
||||
if (CheckFlags(this->unk_86) == 0) {
|
||||
super->action = 1;
|
||||
super->speed = 0x80;
|
||||
super->updatePriority = 3;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spritePriority.b1 = 1;
|
||||
super->spriteSettings.shadow = 1;
|
||||
super->spriteOffsetY = 4;
|
||||
super->hitbox = (Hitbox*)&gUnk_080FD1F4;
|
||||
super->field_0x16 = 1;
|
||||
this->unk_72 = 0;
|
||||
super->collisionLayer = this->unk_7d >> 4;
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
sub_080970F4(this);
|
||||
super->frameIndex = gUnk_08123264[super->type];
|
||||
} else {
|
||||
super->x.HALF.HI = (this->unk_7c | ((this->unk_7d & 0xf) << 8)) + gRoomControls.origin_x;
|
||||
super->y.HALF.HI = (this->unk_7e | ((this->unk_7f & 0xf) << 8)) + gRoomControls.origin_y;
|
||||
super->collisionLayer = this->unk_7f >> 4;
|
||||
sub_080971E0(this);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnPillar_Action1(ObjectOnPillarEntity* this) {
|
||||
if (sub_08097194(this) == FALSE) {
|
||||
if (sub_08097008(this)) {
|
||||
super->action = 3;
|
||||
} else {
|
||||
sub_08078930(super);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnPillar_Action2(ObjectOnPillarEntity* this) {
|
||||
static void (*const ObjectOnPillar_SubActions[])(ObjectOnPillarEntity*) = {
|
||||
ObjectOnPillar_SubAction0,
|
||||
ObjectOnPillar_SubAction1,
|
||||
};
|
||||
if (this->unk_76 != 0) {
|
||||
sub_08097144(this);
|
||||
} else {
|
||||
if (gPlayerState.heldObject == 0) {
|
||||
super->subAction = 6;
|
||||
}
|
||||
ObjectOnPillar_SubActions[super->subAction - 5](this);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnPillar_SubAction0(ObjectOnPillarEntity* this) {
|
||||
static const s8 gUnk_08123274[] = { 0, 14, -14, 2, 0, -14, 14, 2 };
|
||||
const s8* ptr;
|
||||
if (this->unk_72 == 0) {
|
||||
this->unk_72 = 1;
|
||||
ptr = &gUnk_08123274[gPlayerEntity.animationState];
|
||||
PositionRelative(super, &gPlayerEntity, ptr[0] << 0x10, ptr[1] << 0x10);
|
||||
}
|
||||
sub_08097008(this);
|
||||
if (sub_080896B0()) {
|
||||
gPlayerState.queued_action = 0x10;
|
||||
gPlayerState.field_0x38 = 0x20;
|
||||
gPlayerState.flags |= PL_BUSY;
|
||||
gPlayerEntity.x.HALF.LO = 0;
|
||||
gPlayerEntity.y.HALF.LO = 0;
|
||||
super->direction = ((gPlayerEntity.animationState ^ 4) << 2);
|
||||
sub_08097098(this);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnPillar_SubAction1(ObjectOnPillarEntity* this) {
|
||||
super->action = 1;
|
||||
this->unk_72 = 0;
|
||||
}
|
||||
|
||||
void ObjectOnPillar_Action3(ObjectOnPillarEntity* this) {
|
||||
if (sub_08097144(this)) {
|
||||
super->action = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnPillar_Action4(ObjectOnPillarEntity* this) {
|
||||
}
|
||||
|
||||
bool32 sub_08097008(ObjectOnPillarEntity* this) {
|
||||
Entity* effect;
|
||||
u32 tileType = GetTileType(this->tilePosition, super->collisionLayer);
|
||||
if (tileType != 0x4036) {
|
||||
switch (sub_08097074(tileType)) {
|
||||
case 1:
|
||||
super->direction = (((tileType - 0x37) & 3) << 3);
|
||||
sub_08097098(this);
|
||||
return TRUE;
|
||||
case 2:
|
||||
this->tileIndex = tileType;
|
||||
break;
|
||||
default:
|
||||
effect = CreateObject(SPECIAL_FX, 4, 0);
|
||||
if (effect != NULL) {
|
||||
CopyPosition(super, effect);
|
||||
}
|
||||
DeleteEntity(super);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u32 sub_08097074(u32 tileType) {
|
||||
|
||||
static const KeyValuePair gUnk_0812327C[] = {
|
||||
{ 0x4037, 1 }, { 0x4038, 1 }, { 0x4039, 1 }, { 0x403a, 1 }, { 0x7a, 2 }, { 0x78, 2 }, { 0, 0 },
|
||||
};
|
||||
const KeyValuePair* entry = gUnk_0812327C;
|
||||
for (; entry->key != 0; entry++) {
|
||||
if (entry->key == tileType) {
|
||||
return entry->value;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_08097098(ObjectOnPillarEntity* this) {
|
||||
u16 tileType;
|
||||
this->unk_76 = 0x20;
|
||||
EnqueueSFX(SFX_10F);
|
||||
SetTile(this->tileIndex, this->tilePosition, super->collisionLayer);
|
||||
tileType = GetTileType(gUnk_080B4488[super->direction >> 3] + this->tilePosition, super->collisionLayer);
|
||||
if ((tileType == 0x79) || tileType == 0x77) {
|
||||
super->spriteOffsetY = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080970F4(ObjectOnPillarEntity* this) {
|
||||
this->tilePosition = COORD_TO_TILE(super);
|
||||
this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer);
|
||||
SetTile(0x4036, this->tilePosition, super->collisionLayer);
|
||||
}
|
||||
|
||||
bool32 sub_08097144(ObjectOnPillarEntity* this) {
|
||||
LinearMoveUpdate(super);
|
||||
sub_0800445C(super);
|
||||
if (sub_080002B8(super) == 0x19) {
|
||||
super->spriteOffsetY = 2;
|
||||
}
|
||||
if ((--this->unk_76 == 0) && sub_08097194(this) == FALSE) {
|
||||
super->spriteOffsetY = 4;
|
||||
sub_080970F4(this);
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_08097194(ObjectOnPillarEntity* this) {
|
||||
if (sub_0800442E(super)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
u32 tileType = GetTileTypeByEntity(super);
|
||||
if (tileType == 0x71 || tileType == 0x72 || (tileType == 0x4020)) {
|
||||
SetFlag(this->unk_86);
|
||||
EnqueueSFX(SFX_10B);
|
||||
sub_080971E0(this);
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_080971E0(ObjectOnPillarEntity* this) {
|
||||
EntityWithHitFlag* entity;
|
||||
u32 tilePosition;
|
||||
|
||||
entity = (EntityWithHitFlag*)CreateObject(SPECIAL_FX, 0x11, 0x40);
|
||||
if (entity != NULL) {
|
||||
PositionRelative(super, &entity->base, -0x80000, 0x20000);
|
||||
}
|
||||
entity = (EntityWithHitFlag*)CreateObject(SPECIAL_FX, 0x11, 0x40);
|
||||
if (entity != NULL) {
|
||||
PositionRelative(super, &entity->base, 0x80000, 0x20000);
|
||||
}
|
||||
switch (super->type) {
|
||||
case 0:
|
||||
default:
|
||||
super->action = 4;
|
||||
super->frameIndex = 1;
|
||||
super->spritePriority.b0 = 7;
|
||||
SetTile(0, COORD_TO_TILE(super), super->collisionLayer);
|
||||
DeleteThisEntity();
|
||||
break;
|
||||
case 1:
|
||||
tilePosition = COORD_TO_TILE(super);
|
||||
if (sub_08097348(tilePosition) == 0) {
|
||||
SetTileType(0x73, tilePosition, super->collisionLayer);
|
||||
}
|
||||
DeleteThisEntity();
|
||||
break;
|
||||
case 2:
|
||||
entity = (EntityWithHitFlag*)CreateObject(HITTABLE_LEVER, 0, 0);
|
||||
if (entity != NULL) {
|
||||
(entity->base).x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8;
|
||||
(entity->base).y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8;
|
||||
(entity->base).collisionLayer = super->collisionLayer;
|
||||
entity->hitFlag = this->hitFlag;
|
||||
}
|
||||
DeleteThisEntity();
|
||||
break;
|
||||
case 3:
|
||||
entity = (EntityWithHitFlag*)CreateObject(HITTABLE_LEVER, 1, 0);
|
||||
if (entity != NULL) {
|
||||
(entity->base).x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8;
|
||||
(entity->base).y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8;
|
||||
(entity->base).collisionLayer = super->collisionLayer;
|
||||
entity->hitFlag = this->hitFlag;
|
||||
}
|
||||
DeleteThisEntity();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_08097348(u32 tilePosition) {
|
||||
u32 index;
|
||||
TileEntity* tileEntity = gSmallChests;
|
||||
for (index = 0; index < 8; index++, tileEntity++) {
|
||||
if (tileEntity->_4 == tilePosition) {
|
||||
return CheckLocalFlag(tileEntity->_1);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@@ -0,0 +1,305 @@
|
||||
/**
|
||||
* @file objectOnSpinyBeetle.c
|
||||
* @ingroup Objects
|
||||
*
|
||||
* @brief Object on Spiny Beetle object
|
||||
*/
|
||||
|
||||
#define NENT_DEPRECATED
|
||||
#include "global.h"
|
||||
#include "object.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Entity base;
|
||||
} ObjectOnSpinyBeetleEntity;
|
||||
|
||||
extern void (*const ObjectOnSpinyBeetle_Actions[])(ObjectOnSpinyBeetleEntity*);
|
||||
extern void (*const ObjectOnSpinyBeetle_Action2Subactions[])(ObjectOnSpinyBeetleEntity*);
|
||||
extern void (*const ObjectOnSpinyBeetle_Action3Subactions[])(ObjectOnSpinyBeetleEntity*);
|
||||
extern const s8 gUnk_08123558[];
|
||||
|
||||
void sub_08098918(ObjectOnSpinyBeetleEntity*);
|
||||
Entity* ObjectOnSpinyBeetle_GetParent(ObjectOnSpinyBeetleEntity*);
|
||||
void sub_080989C0(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Init(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action1(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action3(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action4(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action5(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2Subaction0(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2Subaction1(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2Subaction2(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2Subaction3(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2Subaction4(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2Subaction5(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action2Subaction6(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action3Subaction0(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action3Subaction1(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action3Subaction2(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action3Subaction3(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action3Subaction4(ObjectOnSpinyBeetleEntity*);
|
||||
void ObjectOnSpinyBeetle_Action3Subaction5(ObjectOnSpinyBeetleEntity*);
|
||||
|
||||
void ObjectOnSpinyBeetle(ObjectOnSpinyBeetleEntity* this) {
|
||||
static void (*const ObjectOnSpinyBeetle_Actions[])(ObjectOnSpinyBeetleEntity*) = {
|
||||
ObjectOnSpinyBeetle_Init, ObjectOnSpinyBeetle_Action1, ObjectOnSpinyBeetle_Action2,
|
||||
ObjectOnSpinyBeetle_Action3, ObjectOnSpinyBeetle_Action4, ObjectOnSpinyBeetle_Action5,
|
||||
};
|
||||
ObjectOnSpinyBeetle_Actions[super->action](this);
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Init(ObjectOnSpinyBeetleEntity* this) {
|
||||
super->action = 1;
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->spritePriority.b0 = 6;
|
||||
super->spriteRendering.b3 = 2;
|
||||
super->field_0xf = 0;
|
||||
super->hitType = 0x6e;
|
||||
super->flags2 = 0x86;
|
||||
super->field_0x16 = 0;
|
||||
if (super->type != 0) {
|
||||
super->field_0x1c = 2;
|
||||
} else {
|
||||
super->field_0x1c = 1;
|
||||
}
|
||||
SortEntityBelow(super, super->parent);
|
||||
sub_08098918(this);
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action1(ObjectOnSpinyBeetleEntity* this) {
|
||||
Entity* parent = ObjectOnSpinyBeetle_GetParent(this);
|
||||
if (parent != NULL) {
|
||||
if (4 < parent->action) {
|
||||
sub_080989C0(this);
|
||||
return;
|
||||
}
|
||||
if ((super->bitfield & 0x80) != 0) {
|
||||
switch (super->bitfield & 0x3f) {
|
||||
case 0x13:
|
||||
super->action = 3;
|
||||
super->subAction = 0;
|
||||
break;
|
||||
case 0xf:
|
||||
case 0x1d:
|
||||
super->action = 4;
|
||||
super->zVelocity = 0x2a000;
|
||||
super->spriteOffsetY = 0;
|
||||
super->spriteSettings.shadow = 1;
|
||||
super->spritePriority.b1 = 3;
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
(super->parent)->child = NULL;
|
||||
ObjectOnSpinyBeetle_Action4(this);
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 8:
|
||||
case 9:
|
||||
case 10:
|
||||
case 0xb:
|
||||
case 0xc:
|
||||
case 0xd:
|
||||
case 0x10:
|
||||
case 0x11:
|
||||
case 0x12:
|
||||
case 0x18:
|
||||
case 0x19:
|
||||
case 0x1a:
|
||||
if (super->type == 0 || (gPlayerState.field_0xac & 8) != 0) {
|
||||
sub_080989C0(this);
|
||||
}
|
||||
break;
|
||||
case 0x14:
|
||||
case 0x16:
|
||||
case 0x20:
|
||||
if (super->type == 0) {
|
||||
sub_080989C0(this);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sub_08098918(this);
|
||||
sub_08078930(super);
|
||||
}
|
||||
} else {
|
||||
sub_080989C0(this);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2(ObjectOnSpinyBeetleEntity* this) {
|
||||
static void (*const ObjectOnSpinyBeetle_Action2Subactions[])(ObjectOnSpinyBeetleEntity*) = {
|
||||
ObjectOnSpinyBeetle_Action2Subaction0, ObjectOnSpinyBeetle_Action2Subaction1,
|
||||
ObjectOnSpinyBeetle_Action2Subaction2, ObjectOnSpinyBeetle_Action2Subaction3,
|
||||
ObjectOnSpinyBeetle_Action2Subaction4, ObjectOnSpinyBeetle_Action2Subaction5,
|
||||
ObjectOnSpinyBeetle_Action2Subaction6,
|
||||
};
|
||||
ObjectOnSpinyBeetle_Action2Subactions[super->subAction](this);
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2Subaction0(ObjectOnSpinyBeetleEntity* this) {
|
||||
super->flags |= ENT_COLLIDE;
|
||||
super->field_0x3c = 7;
|
||||
super->hitType = 1;
|
||||
super->flags2 = gPlayerEntity.flags2;
|
||||
super->spriteOffsetY = 0;
|
||||
(super->parent)->child = NULL;
|
||||
super->subAction += 1;
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2Subaction1(ObjectOnSpinyBeetleEntity* this) {
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2Subaction2(ObjectOnSpinyBeetleEntity* this) {
|
||||
super->spritePriority.b1 = 3;
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2Subaction3(ObjectOnSpinyBeetleEntity* this) {
|
||||
switch (sub_080043E8(super)) {
|
||||
case 2:
|
||||
CreateFx(super, FX_WATER_SPLASH, 0);
|
||||
break;
|
||||
case 1:
|
||||
CreateFx(super, FX_FALL_DOWN, 0);
|
||||
break;
|
||||
case 3:
|
||||
CreateFx(super, FX_LAVA_SPLASH, 0);
|
||||
break;
|
||||
default:
|
||||
sub_080989C0(this);
|
||||
return;
|
||||
}
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2Subaction4(ObjectOnSpinyBeetleEntity* this) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2Subaction5(ObjectOnSpinyBeetleEntity* this) {
|
||||
if (gPlayerState.heldObject == 0) {
|
||||
ObjectOnSpinyBeetle_Action2Subaction6(this);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action2Subaction6(ObjectOnSpinyBeetleEntity* this) {
|
||||
super->action = 1;
|
||||
super->subAction = 0;
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action3(ObjectOnSpinyBeetleEntity* this) {
|
||||
static void (*const ObjectOnSpinyBeetle_Action3Subactions[])(ObjectOnSpinyBeetleEntity*) = {
|
||||
ObjectOnSpinyBeetle_Action3Subaction0, ObjectOnSpinyBeetle_Action3Subaction1,
|
||||
ObjectOnSpinyBeetle_Action3Subaction2, ObjectOnSpinyBeetle_Action3Subaction3,
|
||||
ObjectOnSpinyBeetle_Action3Subaction4, ObjectOnSpinyBeetle_Action3Subaction5,
|
||||
};
|
||||
|
||||
ObjectOnSpinyBeetle_Action3Subactions[super->subAction](this);
|
||||
if ((super->subAction < 2) && (ObjectOnSpinyBeetle_GetParent(this) == NULL)) {
|
||||
sub_080989C0(this);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action3Subaction0(ObjectOnSpinyBeetleEntity* this) {
|
||||
super->subAction = 1;
|
||||
super->field_0x1d = 0x30;
|
||||
super->actionDelay = 0;
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action3Subaction1(ObjectOnSpinyBeetleEntity* this) {
|
||||
if ((gPlayerState.field_0x1c & 0xf) != 1 || (super->bitfield & 0x7f) != 0x13) {
|
||||
super->spriteOffsetX = 0;
|
||||
super->action = 1;
|
||||
} else {
|
||||
sub_0806F4E8(super);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action3Subaction2(ObjectOnSpinyBeetleEntity* this) {
|
||||
if (super->actionDelay == 0) {
|
||||
super->actionDelay = 1;
|
||||
super->spriteOffsetX = 0;
|
||||
super->spriteOffsetY = -2;
|
||||
(super->parent)->child = NULL;
|
||||
}
|
||||
if ((gPlayerState.field_0x1c & 0xf) != 1 || (super->bitfield & 0x7f) != 0x13) {
|
||||
sub_080989C0(this);
|
||||
} else {
|
||||
if ((sub_0806F3E4(super) != 0) && (super->type == 0)) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action3Subaction3(ObjectOnSpinyBeetleEntity* this) {
|
||||
if (gPlayerState.field_0x1c == 0) {
|
||||
sub_080989C0(this);
|
||||
} else {
|
||||
(this->base).flags &= ~ENT_COLLIDE;
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action3Subaction4(ObjectOnSpinyBeetleEntity* this) {
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action3Subaction5(ObjectOnSpinyBeetleEntity* this) {
|
||||
sub_080989C0(this);
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action4(ObjectOnSpinyBeetleEntity* this) {
|
||||
if (super->zVelocity < 0) {
|
||||
super->spriteSettings.flipY = 1;
|
||||
}
|
||||
if (GravityUpdate(super, 0x2000) == 0) {
|
||||
sub_080989C0(this);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjectOnSpinyBeetle_Action5(ObjectOnSpinyBeetleEntity* this) {
|
||||
sub_080989C0(this);
|
||||
}
|
||||
|
||||
void sub_08098918(ObjectOnSpinyBeetleEntity* this) {
|
||||
static const s8 gUnk_08123558[] = { 1, 2, 2, 2, 0, -3, -3, -4, -3, -4, -3, -3, -3, 0, 0, 0 };
|
||||
u16 tmp;
|
||||
Entity* parent = ObjectOnSpinyBeetle_GetParent(this);
|
||||
if (parent == NULL) {
|
||||
sub_080989C0(this);
|
||||
} else {
|
||||
CopyPosition(parent, super);
|
||||
tmp = parent->flags & 0x80;
|
||||
if ((parent->flags & ENT_COLLIDE) != 0) {
|
||||
if (super->field_0xf == 0) {
|
||||
super->field_0xf += 1;
|
||||
super->spritePriority.b0 = 3;
|
||||
SortEntityBelow(super, super->parent);
|
||||
}
|
||||
super->z.HALF.HI = gUnk_08123558[parent->frame & 0xf] - 8;
|
||||
super->spriteOffsetY = 0;
|
||||
} else {
|
||||
if (super->field_0xf != 0) {
|
||||
super->field_0xf = tmp;
|
||||
super->spritePriority.b0 = 6;
|
||||
SortEntityBelow(super, super->parent);
|
||||
}
|
||||
super->z.HALF.HI = tmp;
|
||||
super->spriteOffsetY = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080989C0(ObjectOnSpinyBeetleEntity* this) {
|
||||
if (ObjectOnSpinyBeetle_GetParent(this) != NULL) {
|
||||
(super->parent)->child = NULL;
|
||||
}
|
||||
CreateFx(super, super->type + FX_BUSH, 0);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
Entity* ObjectOnSpinyBeetle_GetParent(ObjectOnSpinyBeetleEntity* this) {
|
||||
Entity* parent = super->parent;
|
||||
if ((parent != NULL) && (parent->next == NULL)) {
|
||||
parent = NULL;
|
||||
}
|
||||
return parent;
|
||||
}
|
||||
@@ -4,8 +4,7 @@
|
||||
#include "save.h"
|
||||
#include "script.h"
|
||||
#include "effects.h"
|
||||
|
||||
extern void sub_08078850(Entity*, u32, u32, u8*);
|
||||
#include "functions.h"
|
||||
|
||||
extern u8 gUnk_08125010;
|
||||
|
||||
|
||||
+14
-14
@@ -113,8 +113,8 @@ static EntityAction PortalStandUpdate;
|
||||
static EntityAction PortalActivateInit;
|
||||
static EntityAction PortalActivateUpdate;
|
||||
static EntityAction PortalShrinkInit;
|
||||
static EntityAction PortalShrinkUpdate;
|
||||
static EntityAction PortalEnterUpdate;
|
||||
/*static*/ EntityAction PortalShrinkUpdate;
|
||||
/*static*/ EntityAction PortalEnterUpdate;
|
||||
static EntityAction PortalUnknownUpdate;
|
||||
|
||||
// PLAYER_TALKEZLO
|
||||
@@ -187,8 +187,8 @@ static EntityAction sub_08072C48;
|
||||
// PLAYER_08072C9C
|
||||
static EntityAction sub_08072CC0;
|
||||
static EntityAction sub_08072CFC;
|
||||
static EntityAction sub_08072D54;
|
||||
static EntityAction sub_08072F14;
|
||||
/*static*/ EntityAction sub_08072D54;
|
||||
/*static*/ EntityAction sub_08072F14;
|
||||
|
||||
// PLAYER_CLIMB
|
||||
static EntityAction sub_08072F94;
|
||||
@@ -204,8 +204,8 @@ static EntityAction sub_080733BC;
|
||||
static EntityAction sub_08073468;
|
||||
static EntityAction sub_080734D4;
|
||||
static EntityAction sub_08073504;
|
||||
static EntityAction sub_08073584;
|
||||
static EntityAction sub_0807379C;
|
||||
/*static*/ EntityAction sub_08073584;
|
||||
/*static*/ EntityAction sub_0807379C;
|
||||
static EntityAction sub_080737BC;
|
||||
static EntityAction sub_0807380C;
|
||||
static EntityAction sub_08073884;
|
||||
@@ -226,7 +226,7 @@ static EntityAction sub_08073F4C;
|
||||
static EntityAction sub_08073FD0;
|
||||
static EntityAction sub_08074018;
|
||||
static EntityAction sub_08074060;
|
||||
static EntityAction sub_080740D8;
|
||||
/*static*/ EntityAction sub_080740D8;
|
||||
|
||||
// PLAYER_08074C44
|
||||
static EntityAction sub_08074C68;
|
||||
@@ -1178,9 +1178,9 @@ static const u8 gUnk_0811BABC[] = {
|
||||
};
|
||||
|
||||
// horrible
|
||||
static ASM_FUNC("asm/non_matching/player/PortalShrinkUpdate.inc", void PortalShrinkUpdate(Entity* this));
|
||||
/*static*/ ASM_FUNC("asm/non_matching/player/PortalShrinkUpdate.inc", void PortalShrinkUpdate(Entity* this));
|
||||
|
||||
static void PortalEnterUpdate(Entity* this) {
|
||||
/*static*/ void PortalEnterUpdate(Entity* this) {
|
||||
if (this->actionDelay == 0) {
|
||||
if (GravityUpdate(this, GRAVITY_RATE))
|
||||
return;
|
||||
@@ -2311,7 +2311,7 @@ static const u16* const sTileTable[] = {
|
||||
sTiles + 9,
|
||||
};
|
||||
|
||||
static NONMATCH("asm/non_matching/player/sub_08072D54.inc", void sub_08072D54(Entity* this)) {
|
||||
/*static*/ NONMATCH("asm/non_matching/player/sub_08072D54.inc", void sub_08072D54(Entity* this)) {
|
||||
u32 bVar1;
|
||||
u32 uVar2;
|
||||
|
||||
@@ -2398,7 +2398,7 @@ static NONMATCH("asm/non_matching/player/sub_08072D54.inc", void sub_08072D54(En
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
static void sub_08072F14(Entity* this) {
|
||||
/*static*/ void sub_08072F14(Entity* this) {
|
||||
if (--this->actionDelay != 0xff) {
|
||||
sub_0807921C();
|
||||
} else {
|
||||
@@ -2729,7 +2729,7 @@ static const u16 gUnk_0811BC30[] = {
|
||||
0x0720,
|
||||
};
|
||||
|
||||
static NONMATCH("asm/non_matching/player/sub_08073584.inc", void sub_08073584(Entity* this)) {
|
||||
/*static*/ NONMATCH("asm/non_matching/player/sub_08073584.inc", void sub_08073584(Entity* this)) {
|
||||
u32 state, dir, tmp, tmp2, idx;
|
||||
|
||||
if ((gPlayerState.field_0x92 & 0x80) || this->iframes > 0 || gPlayerState.field_0x3c[0] ||
|
||||
@@ -2821,7 +2821,7 @@ static NONMATCH("asm/non_matching/player/sub_08073584.inc", void sub_08073584(En
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
static void sub_0807379C(Entity* this) {
|
||||
/*static*/ void sub_0807379C(Entity* this) {
|
||||
if (this->z.HALF.HI > -32) {
|
||||
this->z.HALF.HI--;
|
||||
} else {
|
||||
@@ -3244,7 +3244,7 @@ static void sub_08074060(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
static NONMATCH("asm/non_matching/player/sub_080740D8.inc", void sub_080740D8(Entity* this)) {
|
||||
/*static*/ NONMATCH("asm/non_matching/player/sub_080740D8.inc", void sub_080740D8(Entity* this)) {
|
||||
int v1; // r5
|
||||
int v2; // r6
|
||||
unsigned int v4; // r0
|
||||
|
||||
Reference in New Issue
Block a user