mirror of https://github.com/zeldaret/tmc.git
Decompile ObjectOnPillar
This commit is contained in:
parent
9036135c6f
commit
8d33a5857c
|
|
@ -1,60 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #0
|
||||
bne _0806E7F2
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
bl Random
|
||||
movs r5, #1
|
||||
ands r0, r5
|
||||
cmp r0, #0
|
||||
beq _0806E7DE
|
||||
ldrb r0, [r4, #0x18]
|
||||
lsls r1, r0, #0x19
|
||||
lsrs r1, r1, #0x1f
|
||||
eors r1, r5
|
||||
lsls r1, r1, #6
|
||||
movs r2, #0x41
|
||||
rsbs r2, r2, #0
|
||||
ands r2, r0
|
||||
orrs r2, r1
|
||||
strb r2, [r4, #0x18]
|
||||
_0806E7DE:
|
||||
bl Random
|
||||
movs r1, #3
|
||||
ands r0, r1
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #9
|
||||
str r0, [r4, #0x20]
|
||||
strb r5, [r4, #0x1e]
|
||||
_0806E7F2:
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #6
|
||||
adds r0, r4, #0
|
||||
bl GravityUpdate
|
||||
cmp r0, #0
|
||||
bne _0806E81C
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r1, r0, #0x18
|
||||
cmp r1, #0
|
||||
bne _0806E816
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
strb r1, [r4, #0xd]
|
||||
b _0806E81C
|
||||
_0806E816:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #9
|
||||
str r0, [r4, #0x20]
|
||||
_0806E81C:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806E838
|
||||
pop {r4, r5, pc}
|
||||
.syntax divided
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r0, _08070244 @ =gUnk_0811B9C8
|
||||
ldrb r1, [r5, #0x14]
|
||||
adds r2, r1, r0
|
||||
movs r6, #0
|
||||
ldrsb r6, [r2, r6]
|
||||
adds r1, #1
|
||||
adds r1, r1, r0
|
||||
movs r7, #0
|
||||
ldrsb r7, [r1, r7]
|
||||
adds r0, r5, #0
|
||||
movs r1, #0xa
|
||||
adds r2, r6, #0
|
||||
adds r3, r7, #0
|
||||
bl sub_08008782
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08070248
|
||||
ldrb r1, [r4, #5]
|
||||
ldrb r2, [r4, #2]
|
||||
movs r0, #0x53
|
||||
bl CreateObject
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08070260
|
||||
ldrb r0, [r4, #3]
|
||||
strb r0, [r1, #0xe]
|
||||
ldrh r0, [r5, #0x2e]
|
||||
adds r0, r0, r6
|
||||
strh r0, [r1, #0x2e]
|
||||
ldrh r0, [r5, #0x32]
|
||||
adds r0, r0, r7
|
||||
strh r0, [r1, #0x32]
|
||||
b _08070260
|
||||
.align 2, 0
|
||||
_08070244: .4byte gUnk_0811B9C8
|
||||
_08070248:
|
||||
ldr r0, [r5, #0x74]
|
||||
subs r0, #1
|
||||
str r0, [r5, #0x74]
|
||||
movs r1, #1
|
||||
rsbs r1, r1, #0
|
||||
cmp r0, r1
|
||||
beq _08070260
|
||||
ldr r0, [r5, #0x78]
|
||||
subs r0, #1
|
||||
str r0, [r5, #0x78]
|
||||
cmp r0, r1
|
||||
bne _08070268
|
||||
_08070260:
|
||||
adds r0, r5, #0
|
||||
bl sub_08070458
|
||||
b _0807037A
|
||||
_08070268:
|
||||
adds r0, r5, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r5, #0
|
||||
bl LinearMoveUpdate
|
||||
ldrb r0, [r5, #0xa]
|
||||
cmp r0, #0
|
||||
bne _08070280
|
||||
adds r0, r5, #0
|
||||
bl sub_0800451C
|
||||
_08070280:
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r7, _08070354 @ =gRoomControls
|
||||
ldrh r1, [r7, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
movs r6, #0x3f
|
||||
ands r0, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r5, r2]
|
||||
ldrh r2, [r7, #8]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r6
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
ldr r1, _08070358 @ =gPlayerEntity
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
movs r2, #0x80
|
||||
bl sub_080002F0
|
||||
cmp r0, #0
|
||||
bne _0807036A
|
||||
ldr r1, _0807035C @ =gUnk_08003E44
|
||||
movs r3, #0x2e
|
||||
ldrsh r2, [r5, r3]
|
||||
movs r0, #0x32
|
||||
ldrsh r3, [r5, r0]
|
||||
adds r0, r5, #0
|
||||
bl sub_080040D8
|
||||
cmp r0, #0
|
||||
bne _08070364
|
||||
adds r0, r5, #0
|
||||
bl sub_080002B8
|
||||
cmp r0, #0x19
|
||||
bne _0807036A
|
||||
movs r0, #4
|
||||
strb r0, [r5, #0xc]
|
||||
ldrb r1, [r5, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x10]
|
||||
ldrh r2, [r5, #0x2e]
|
||||
movs r1, #0x10
|
||||
rsbs r1, r1, #0
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
movs r2, #8
|
||||
orrs r0, r2
|
||||
strh r0, [r5, #0x2e]
|
||||
ldrh r0, [r5, #0x32]
|
||||
ands r1, r0
|
||||
orrs r1, r2
|
||||
strh r1, [r5, #0x32]
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r0, [r2]
|
||||
movs r1, #7
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldrh r1, [r7, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
ands r0, r6
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r5, r2]
|
||||
ldrh r2, [r7, #8]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r6
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x38
|
||||
ldrb r1, [r4]
|
||||
bl GetTileIndex
|
||||
str r0, [r5, #0x7c]
|
||||
adds r0, r5, #0
|
||||
movs r1, #0x14
|
||||
bl InitializeAnimation
|
||||
ldr r0, _08070360 @ =0x00004020
|
||||
movs r3, #0x2e
|
||||
ldrsh r1, [r5, r3]
|
||||
ldrh r2, [r7, #6]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r6
|
||||
movs r3, #0x32
|
||||
ldrsh r2, [r5, r3]
|
||||
ldrh r3, [r7, #8]
|
||||
subs r2, r2, r3
|
||||
asrs r2, r2, #4
|
||||
ands r2, r6
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
ldrb r2, [r4]
|
||||
bl SetTile
|
||||
b _0807037A
|
||||
.align 2, 0
|
||||
_08070354: .4byte gRoomControls
|
||||
_08070358: .4byte gPlayerEntity
|
||||
_0807035C: .4byte gUnk_08003E44
|
||||
_08070360: .4byte 0x00004020
|
||||
_08070364:
|
||||
adds r0, r5, #0
|
||||
bl sub_08070458
|
||||
_0807036A:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0807037A
|
||||
adds r0, r5, #0
|
||||
bl sub_08070458
|
||||
_0807037A:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
|
|
@ -1,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}
|
||||
|
|
@ -44913,21 +44913,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,
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
@ -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*);
|
||||
|
|
|
|||
|
|
@ -757,7 +757,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);
|
||||
|
|
@ -1504,7 +1504,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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
Loading…
Reference in New Issue