Merge pull request #393 from octorock/objects

This commit is contained in:
notyourav
2022-02-18 13:47:12 -08:00
committed by GitHub
58 changed files with 2487 additions and 6572 deletions
@@ -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
-621
View File
@@ -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
-649
View File
@@ -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
-560
View File
@@ -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
-642
View File
@@ -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
-658
View File
@@ -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}
-682
View File
@@ -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
-573
View File
@@ -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
-720
View File
@@ -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}
-651
View File
@@ -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}
-165
View File
@@ -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,
-23
View File
@@ -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"
-64
View File
@@ -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"
-14
View File
@@ -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"
-20
View File
@@ -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"
-20
View File
@@ -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
-31
View File
@@ -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"
-22
View File
@@ -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"
-25
View File
@@ -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"
-33
View File
@@ -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
View File
@@ -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
View File
@@ -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*);
+16 -18
View File
@@ -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
View File
@@ -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;
}
}
-4
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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[];
-1
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+1 -1
View File
@@ -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[];
-1
View File
@@ -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
View File
@@ -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) {
-1
View File
@@ -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);
+1 -1
View File
@@ -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
View File
@@ -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*);
-1
View File
@@ -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;
-1
View File
@@ -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[];
-1
View File
@@ -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[];
+225
View File
@@ -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
View File
@@ -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 };
+215
View File
@@ -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++;
}
}
+259
View File
@@ -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);
}
-3
View File
@@ -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
-3
View File
@@ -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*);
-1
View File
@@ -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*);
+307
View File
@@ -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);
}
}
-2
View File
@@ -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;
+255
View File
@@ -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;
}
}
}
-5
View File
@@ -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
View File
@@ -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;
}
+303
View File
@@ -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;
}
+305
View File
@@ -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;
}
+1 -2
View File
@@ -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
View File
@@ -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