Merge pull request #444 from hatal175/objects2

Decompile various objects
This commit is contained in:
notyourav
2022-03-15 14:47:12 -07:00
committed by GitHub
70 changed files with 1620 additions and 4028 deletions
-652
View File
@@ -1,652 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object10
Object10: @ 0x08084824
push {lr}
ldr r2, _08084838 @ =gUnk_08120560
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08084838: .4byte gUnk_08120560
thumb_func_start sub_0808483C
sub_0808483C: @ 0x0808483C
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
ldrh r2, [r4, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
adds r0, r1, #0
ands r0, r2
movs r2, #8
orrs r0, r2
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x32]
ands r1, r0
orrs r1, r2
strh r1, [r4, #0x32]
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _080848C0 @ =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, #0x74
strh r1, [r5]
adds r0, r4, #0
movs r1, #8
bl InitializeAnimation
ldr r0, _080848C4 @ =0x00004016
ldrh r1, [r5]
adds r4, #0x38
ldrb r2, [r4]
bl SetTile
movs r0, #0x89
lsls r0, r0, #1
bl SoundReq
pop {r4, r5, pc}
.align 2, 0
_080848C0: .4byte gRoomControls
_080848C4: .4byte 0x00004016
thumb_func_start sub_080848C8
sub_080848C8: @ 0x080848C8
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _08084980 @ =gPlayerState
adds r0, #0xa0
ldrb r0, [r0]
cmp r0, #5
bne _08084994
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
adds r0, #0x45
movs r5, #1
strb r5, [r0]
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x11]
subs r0, #0x12
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r4, #0x11]
ldr r0, _08084984 @ =gUnk_08120574
str r0, [r4, #0x48]
ldrb r1, [r4, #0xa]
adds r1, #1
lsls r0, r1, #4
subs r0, r0, r1
strb r0, [r4, #0xf]
ldr r2, _08084988 @ =gPlayerEntity
ldrh r0, [r4, #0x2e]
ldrh r1, [r2, #0x2e]
subs r0, r0, r1
adds r3, r4, #0
adds r3, #0x78
strh r0, [r3]
ldrh r1, [r4, #0x32]
ldrh r0, [r2, #0x32]
subs r1, r1, r0
adds r0, r4, #0
adds r0, #0x7a
strh r1, [r0]
ldrh r0, [r3]
cmp r0, #0
beq _0808493C
lsls r0, r1, #0x10
cmp r0, #0
beq _0808493C
ldr r0, _0808498C @ =gPlayerClones
ldrb r1, [r4, #0xa]
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, [r1]
str r5, [r0, #0x70]
_0808493C:
ldr r0, _08084990 @ =0x00000315
adds r1, r4, #0
adds r1, #0x74
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_08000152
ldrb r1, [r4, #0xa]
adds r1, #1
ldr r0, _08084980 @ =gPlayerState
ldr r0, [r0, #0x2c]
adds r0, #0x68
ldrb r3, [r0]
movs r0, #1
movs r2, #0
bl sub_08077CF8
str r0, [r4, #0x54]
cmp r0, #0
beq _0808496A
str r4, [r0, #0x50]
_0808496A:
adds r0, r4, #0
bl sub_0801766C
adds r0, r4, #0
bl sub_0806FDA0
adds r0, r4, #0
bl sub_080849D8
b _080849D6
.align 2, 0
_08084980: .4byte gPlayerState
_08084984: .4byte gUnk_08120574
_08084988: .4byte gPlayerEntity
_0808498C: .4byte gPlayerClones
_08084990: .4byte 0x00000315
_08084994:
cmp r0, #4
beq _080849C4
ldr r0, _080849BC @ =0x00000315
adds r1, r4, #0
adds r1, #0x74
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_08000152
ldr r1, _080849C0 @ =gPlayerClones
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r1
movs r1, #0
str r1, [r0]
bl DeleteThisEntity
b _080849D6
.align 2, 0
_080849BC: .4byte 0x00000315
_080849C0: .4byte gPlayerClones
_080849C4:
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]
_080849D6:
pop {r4, r5, pc}
thumb_func_start sub_080849D8
sub_080849D8: @ 0x080849D8
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
adds r1, r0, #0
cmp r1, #1
bne _080849EE
movs r0, #0x76
bl SoundReq
ldrb r0, [r4, #0xf]
b _080849F2
_080849EE:
cmp r1, #0
beq _080849F6
_080849F2:
subs r0, #1
strb r0, [r4, #0xf]
_080849F6:
ldr r2, _08084A3C @ =gPlayerState
adds r3, r2, #0
adds r3, #0xa0
ldrb r0, [r3]
cmp r0, #5
beq _08084A04
b _08084AF8
_08084A04:
ldr r0, _08084A40 @ =gPlayerClones
ldrb r1, [r4, #0xa]
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, [r1]
cmp r0, #0
beq _08084AF8
adds r0, r2, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #0x13
beq _08084AF8
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _08084AF8
ldr r5, _08084A44 @ =gPlayerEntity
adds r0, r5, #0
adds r0, #0x3d
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _08084A48
movs r0, #1
strb r0, [r3]
b _08084AF8
.align 2, 0
_08084A3C: .4byte gPlayerState
_08084A40: .4byte gPlayerClones
_08084A44: .4byte gPlayerEntity
_08084A48:
adds r0, r4, #0
bl sub_080B1AA8
adds r0, r4, #0
bl sub_08084B1C
adds r0, r4, #0
adds r0, #0x78
ldrh r0, [r0]
ldrh r1, [r5, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x7a
ldrh r0, [r0]
ldrh r5, [r5, #0x32]
adds r0, r0, r5
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_08084CAC
adds r0, r4, #0
bl sub_080085B0
ldrh r2, [r4, #0x2a]
ldr r1, _08084AB8 @ =0x00006666
adds r0, r1, #0
ands r0, r2
cmp r0, r1
beq _08084AEA
movs r3, #0
ldr r5, _08084ABC @ =gUnk_0812056C
ldrh r1, [r5]
adds r0, r1, #0
ands r0, r2
cmp r1, r0
beq _08084AA6
adds r2, r5, #0
_08084A94:
adds r2, #2
adds r3, #1
cmp r3, #3
bhi _08084AA6
ldrh r1, [r2]
ldrh r0, [r4, #0x2a]
ands r0, r1
cmp r1, r0
bne _08084A94
_08084AA6:
cmp r3, #4
bne _08084AC0
movs r0, #0
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #4
ands r0, r1
movs r1, #1
b _08084ADE
.align 2, 0
_08084AB8: .4byte 0x00006666
_08084ABC: .4byte gUnk_0812056C
_08084AC0:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08084AE4
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _08084AEA
ldrb r2, [r4, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
subs r0, #5
ands r0, r2
_08084ADE:
orrs r0, r1
strb r0, [r4, #0x18]
b _08084B16
_08084AE4:
movs r0, #0x1e
strb r0, [r4, #0xe]
b _08084B16
_08084AEA:
ldr r0, _08084AF4 @ =gPlayerState
adds r0, #0xa0
movs r1, #1
strb r1, [r0]
b _08084B16
.align 2, 0
_08084AF4: .4byte gPlayerState
_08084AF8:
bl DeleteClones
adds r0, r4, #0
movs r1, #0x30
movs r2, #0
bl CreateFx
ldr r0, [r4, #0x54]
bl DeleteEntity
ldr r0, _08084B18 @ =0x0000018F
bl SoundReq
bl DeleteThisEntity
_08084B16:
pop {r4, r5, pc}
.align 2, 0
_08084B18: .4byte 0x0000018F
thumb_func_start sub_08084B1C
sub_08084B1C: @ 0x08084B1C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r4, r0, #0
ldr r3, _08084CA4 @ =gPlayerEntity
ldrb r0, [r3, #0x10]
strb r0, [r4, #0x10]
adds r0, r3, #0
adds r0, #0x60
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0x60
strh r1, [r0]
ldrb r0, [r3, #0x1e]
strb r0, [r4, #0x1e]
adds r0, r3, #0
adds r0, #0x5b
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x5b
strb r0, [r1]
ldrh r0, [r3, #0x12]
strh r0, [r4, #0x12]
ldrb r0, [r3, #0x15]
strb r0, [r4, #0x15]
ldrb r0, [r3, #0x14]
strb r0, [r4, #0x14]
ldrb r0, [r3, #0x18]
movs r1, #1
mov r8, r1
movs r1, #0x40
ands r1, r0
ldrb r2, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
mov sb, r0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r3, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x19]
movs r7, #0x3f
adds r0, r7, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x19]
adds r0, r3, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
movs r0, #0x29
adds r0, r0, r4
mov ip, r0
movs r6, #7
lsrs r1, r1, #0x1d
ldrb r2, [r0]
movs r0, #8
rsbs r0, r0, #0
mov sl, r0
ands r0, r2
orrs r0, r1
mov r1, ip
strb r0, [r1]
ldrb r1, [r3, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x1b]
adds r0, r7, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1b]
adds r0, r3, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r3, #0
adds r0, #0x3b
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x3b
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x3f
ldrb r0, [r0]
adds r1, #4
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x3c
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x3c
strb r1, [r0]
adds r0, r3, #0
adds r0, #0x40
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x40
strb r1, [r0]
ldr r1, [r4, #0x54]
adds r0, r4, #0
bl CopyPosition
ldr r5, _08084CA8 @ =gPlayerState
ldrb r0, [r5, #4]
cmp r0, #0
beq _08084C6A
ldr r1, [r4, #0x54]
ldr r0, [r5, #0x2c]
adds r0, #0x44
ldrb r0, [r0]
adds r1, #0x44
strb r0, [r1]
ldr r1, [r4, #0x54]
ldr r0, [r5, #0x2c]
ldrb r0, [r0, #0x1e]
strb r0, [r1, #0x1e]
ldr r3, [r4, #0x54]
ldr r0, [r5, #0x2c]
ldrb r1, [r0, #0x18]
lsls r1, r1, #0x19
lsrs r1, r1, #0x1f
mov r0, r8
ands r1, r0
lsls r1, r1, #6
ldrb r2, [r3, #0x18]
mov r0, sb
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x18]
ldr r3, [r4, #0x54]
ldr r0, [r5, #0x2c]
ldrb r1, [r0, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x19]
adds r0, r7, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x19]
ldr r2, [r4, #0x54]
ldr r0, [r5, #0x2c]
adds r0, #0x29
ldrb r0, [r0]
lsls r0, r0, #0x1d
lsrs r0, r0, #0x1d
adds r2, #0x29
ands r6, r0
ldrb r1, [r2]
mov r0, sl
ands r0, r1
orrs r0, r6
strb r0, [r2]
ldr r1, [r4, #0x54]
ldrb r0, [r1, #0x18]
lsls r0, r0, #0x19
cmp r0, #0
bge _08084C6A
ldr r1, [r1, #0x48]
ldrb r0, [r1]
rsbs r0, r0, #0
strb r0, [r1]
_08084C6A:
adds r0, r4, #0
movs r1, #0
movs r2, #0
bl sub_0806FEBC
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl sub_0806FEBC
adds r0, r4, #0
movs r1, #2
adds r2, r4, #0
bl sub_0806FEBC
adds r0, r4, #0
movs r1, #3
movs r2, #0
bl sub_0806FEBC
ldr r0, [r4, #0x54]
adds r1, r4, #0
bl sub_08078E84
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08084CA4: .4byte gPlayerEntity
_08084CA8: .4byte gPlayerState
thumb_func_start sub_08084CAC
sub_08084CAC: @ 0x08084CAC
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r6, _08084D18 @ =gPlayerClones
ldrb r0, [r5, #0xa]
lsls r0, r0, #2
adds r0, r0, r6
ldr r0, [r0]
ldr r0, [r0, #0x70]
cmp r0, #0
bne _08084D32
ldrb r0, [r5, #0x14]
movs r2, #6
ands r2, r0
lsls r2, r2, #1
ldr r0, _08084D1C @ =gUnk_080B4468
adds r2, r2, r0
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r3, #0
ldrsh r1, [r2, r3]
adds r0, r0, r1
ldr r4, _08084D20 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r7, #0x32
ldrsh r1, [r5, r7]
movs r7, #2
ldrsh r2, [r2, r7]
adds r1, r1, r2
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
bl sub_080B1B54
cmp r0, #0x72
bne _08084D24
ldr r2, [r6]
movs r1, #1
ldrb r5, [r5, #0xa]
lsls r1, r5
ldr r0, [r2, #0x6c]
orrs r0, r1
b _08084D30
.align 2, 0
_08084D18: .4byte gPlayerClones
_08084D1C: .4byte gUnk_080B4468
_08084D20: .4byte gRoomControls
_08084D24:
ldr r2, [r6]
movs r1, #1
ldrb r5, [r5, #0xa]
lsls r1, r5
ldr r0, [r2, #0x6c]
bics r0, r1
_08084D30:
str r0, [r2, #0x6c]
_08084D32:
pop {r4, r5, r6, r7, pc}
-98
View File
@@ -1,98 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object15
Object15: @ 0x0808601C
push {lr}
ldr r2, _08086030 @ =gUnk_08120648
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08086030: .4byte gUnk_08120648
thumb_func_start sub_08086034
sub_08086034: @ 0x08086034
push {lr}
movs r3, #1
movs r1, #1
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #5
ands r1, r2
orrs r1, r3
strb r1, [r0, #0x18]
adds r1, r0, #0
adds r1, #0x58
ldrb r1, [r1]
bl InitializeAnimation
pop {pc}
.align 2, 0
thumb_func_start sub_08086054
sub_08086054: @ 0x08086054
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08086064
adds r0, r4, #0
bl GetNextFrame
_08086064:
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _0808607C
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]
_0808607C:
ldrb r0, [r4, #0xe]
lsls r1, r0, #0x18
cmp r1, #0
blt _080860AA
cmp r1, #0
beq _08086098
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080860AA
bl DeleteThisEntity
b _080860AA
_08086098:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080860AA
bl DeleteThisEntity
_080860AA:
ldr r1, [r4, #0x54]
cmp r1, #0
beq _080860BC
ldr r0, [r1, #0x2c]
str r0, [r4, #0x2c]
ldr r0, [r1, #0x30]
str r0, [r4, #0x30]
ldr r0, [r1, #0x34]
str r0, [r4, #0x34]
_080860BC:
pop {r4, pc}
.align 2, 0
-119
View File
@@ -1,119 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object17
Object17: @ 0x080861AC
push {lr}
ldr r2, _080861C0 @ =gUnk_08120660
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080861C0: .4byte gUnk_08120660
thumb_func_start sub_080861C4
sub_080861C4: @ 0x080861C4
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r5, #1
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
ldr r0, _08086230 @ =gPlayerEntity
mov ip, r0
ldrb r1, [r0, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r3, [r4, #0x19]
movs r2, #0x3f
adds r0, r2, #0
ands r0, r3
orrs r0, r1
strb r0, [r4, #0x19]
mov r0, ip
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
adds r6, r4, #0
adds r6, #0x29
lsrs r1, r1, #0x1d
ldrb r3, [r6]
movs r0, #8
rsbs r0, r0, #0
ands r0, r3
orrs r0, r1
strb r0, [r6]
mov r0, ip
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
mov r1, ip
ldrb r0, [r1, #0x1b]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r1, [r4, #0x1b]
ands r2, r1
orrs r2, r0
strb r2, [r4, #0x1b]
bl Random
ands r0, r5
strb r0, [r4, #0xa]
adds r0, r4, #0
movs r1, #0x11
bl InitializeAnimation
pop {r4, r5, r6, pc}
.align 2, 0
_08086230: .4byte gPlayerEntity
thumb_func_start sub_08086234
sub_08086234: @ 0x08086234
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _08086258
ldr r0, _08086254 @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
ands r0, r1
cmp r0, #0
bne _0808625E
adds r0, r4, #0
bl GetNextFrame
b _0808625E
.align 2, 0
_08086254: .4byte gRoomTransition
_08086258:
adds r0, r4, #0
bl GetNextFrame
_0808625E:
adds r0, r4, #0
bl sub_0806F3E4
cmp r0, #0
beq _0808626E
bl DeleteThisEntity
b _0808627E
_0808626E:
ldr r0, _08086280 @ =gPlayerState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #1
beq _0808627E
bl DeleteThisEntity
_0808627E:
pop {r4, pc}
.align 2, 0
_08086280: .4byte gPlayerState
-208
View File
@@ -1,208 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object1F
Object1F: @ 0x08087690
push {lr}
ldr r2, _080876A4 @ =gUnk_08120A0C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080876A4: .4byte gUnk_08120A0C
thumb_func_start sub_080876A8
sub_080876A8: @ 0x080876A8
push {lr}
mov ip, r0
movs r0, #1
mov r1, ip
strb r0, [r1, #0xc]
movs r0, #0xb0
lsls r0, r0, #0xa
str r0, [r1, #0x20]
ldrb r2, [r1, #0x14]
lsls r0, r2, #2
movs r1, #0x10
eors r0, r1
mov r3, ip
strb r0, [r3, #0x15]
lsls r2, r2, #0x18
cmp r2, #0
bne _080876E2
adds r3, #0x29
ldrb r2, [r3]
lsls r1, r2, #0x1d
lsrs r1, r1, #0x1d
subs r1, #1
movs r0, #7
ands r1, r0
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_080876E2:
ldr r1, _08087760 @ =gUnk_08120A20
mov r2, ip
ldrb r0, [r2, #0x14]
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r3, [r2, #0x2e]
adds r0, r0, r3
strh r0, [r2, #0x2e]
ldrb r0, [r2, #0x14]
adds r0, #1
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
ldr r3, _08087764 @ =gUnk_08120A18
ldrb r0, [r2, #0xf]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0, #3]
mov r0, ip
adds r0, #0x60
strh r1, [r0]
ldrb r0, [r2, #0xf]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0, #1]
movs r0, #0xf
ands r1, r0
ldrb r2, [r2, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
mov r2, ip
strb r0, [r2, #0x1a]
ldrb r0, [r2, #0xf]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r0, [r0, #2]
str r0, [r2, #0x6c]
ldr r0, _08087768 @ =gPlayerEntity
adds r0, #0x38
ldrb r1, [r0]
mov r0, ip
adds r0, #0x38
strb r1, [r0]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r2, #0x24]
ldrb r0, [r2, #0xf]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0]
mov r0, ip
bl InitializeAnimation
pop {pc}
.align 2, 0
_08087760: .4byte gUnk_08120A20
_08087764: .4byte gUnk_08120A18
_08087768: .4byte gPlayerEntity
thumb_func_start sub_0808776C
sub_0808776C: @ 0x0808776C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x6c]
cmp r0, #0
beq _08087788
subs r0, #1
str r0, [r4, #0x6c]
ldr r0, _08087784 @ =gPlayerState
adds r0, #0x3d
ldrb r0, [r0]
b _08087798
.align 2, 0
_08087784: .4byte gPlayerState
_08087788:
adds r0, r4, #0
bl ProcessMovement2
movs r1, #0xa0
lsls r1, r1, #6
adds r0, r4, #0
bl GravityUpdate
_08087798:
cmp r0, #0
bne _080877A0
movs r0, #2
strb r0, [r4, #0xc]
_080877A0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080877A4
sub_080877A4: @ 0x080877A4
push {r4, lr}
adds r4, r0, #0
bl sub_080B1B0C
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r1, r0, #0
cmp r0, #0x25
beq _080877D0
cmp r0, #0x25
bgt _080877C4
cmp r0, #0x21
beq _080877CA
cmp r0, #0x24
beq _080877D6
b _080877E2
_080877C4:
cmp r1, #0x30
beq _080877D6
b _080877E2
_080877CA:
adds r0, r4, #0
movs r1, #0
b _080877DA
_080877D0:
adds r0, r4, #0
movs r1, #0xc
b _080877DA
_080877D6:
adds r0, r4, #0
movs r1, #0xb
_080877DA:
movs r2, #0
bl CreateFx
b _08087804
_080877E2:
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _08087804
cmp r0, #0xf
bne _080877F8
ldrb r1, [r4, #0xe]
adds r0, r4, #0
movs r2, #0x80
bl CreateFx
b _08087804
_080877F8:
ldrb r1, [r4, #0xb]
ldrb r2, [r4, #0xe]
adds r0, r4, #0
movs r3, #0
bl CreateObjectWithParent
_08087804:
bl DeleteThisEntity
pop {r4, pc}
.align 2, 0
-129
View File
@@ -1,129 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object28
Object28: @ 0x0808976C
push {r4, r5, r6, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080897D0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xb]
strb r0, [r4, #0x1e]
ldrb r0, [r4, #0x1b]
movs r1, #0xc0
orrs r0, r1
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
orrs r0, r1
strb r0, [r4, #0x19]
ldrb r0, [r4, #0xa]
cmp r0, #3
bne _080897AE
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #8
rsbs r1, r1, #0
ands r1, r0
movs r0, #6
orrs r1, r0
strb r1, [r2]
b _080897BA
_080897AE:
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
_080897BA:
ldrh r0, [r4, #0x2e]
adds r1, r4, #0
adds r1, #0x68
strh r0, [r1]
ldrh r0, [r4, #0x32]
adds r1, #2
strh r0, [r1]
adds r0, r4, #0
movs r1, #6
bl SetDefaultPriority
_080897D0:
ldrb r1, [r4, #0x10]
movs r0, #0x10
ands r0, r1
cmp r0, #0
bne _08089840
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _08089844 @ =gRoomControls
movs r3, #0xa
ldrsh r0, [r2, r3]
subs r5, r1, r0
adds r3, r5, #0
subs r3, #0x78
movs r6, #0x32
ldrsh r1, [r4, r6]
movs r6, #0xc
ldrsh r0, [r2, r6]
subs r1, r1, r0
adds r2, r1, #0
subs r2, #0x50
adds r0, r3, #0
cmp r0, #0
bge _08089802
adds r0, r5, #0
subs r0, #0x75
_08089802:
asrs r3, r0, #2
adds r0, r2, #0
cmp r0, #0
bge _0808980E
adds r0, r1, #0
subs r0, #0x4d
_0808980E:
asrs r2, r0, #2
movs r0, #0x10
rsbs r0, r0, #0
cmp r3, r0
bge _0808981A
adds r3, r0, #0
_0808981A:
cmp r3, #0x10
ble _08089820
movs r3, #0x10
_08089820:
cmp r2, r0
bge _08089826
adds r2, r0, #0
_08089826:
cmp r2, #0x10
ble _0808982C
movs r2, #0x10
_0808982C:
adds r0, r4, #0
adds r0, #0x68
ldrh r0, [r0]
adds r0, r0, r3
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x6a
ldrh r0, [r0]
adds r0, r0, r2
strh r0, [r4, #0x32]
_08089840:
pop {r4, r5, r6, pc}
.align 2, 0
_08089844: .4byte gRoomControls
-88
View File
@@ -1,88 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object37
Object37: @ 0x0808BDE8
push {lr}
ldr r2, _0808BDFC @ =gUnk_08121480
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808BDFC: .4byte gUnk_08121480
thumb_func_start sub_0808BE00
sub_0808BE00: @ 0x0808BE00
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x38
ldrb r0, [r0]
bl GetLayerByIndex
adds r4, r0, #0
adds r0, r5, #0
bl sub_0806F798
lsls r0, r0, #1
adds r0, #4
adds r4, r4, r0
str r4, [r5, #0x78]
ldrh r1, [r4]
adds r0, r5, #0
adds r0, #0x70
strh r1, [r0]
movs r0, #1
strb r0, [r5, #0xc]
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0808BE2C
sub_0808BE2C: @ 0x0808BE2C
push {r4, lr}
adds r2, r0, #0
ldr r0, _0808BE78 @ =gSave
ldr r1, _0808BE7C @ =0x0000024E
adds r4, r0, r1
ldrb r0, [r4]
cmp r0, #0
beq _0808BE74
adds r0, r2, #0
adds r0, #0x70
ldr r1, [r2, #0x78]
ldrh r0, [r0]
ldrh r1, [r1]
cmp r0, r1
beq _0808BE74
adds r0, r2, #0
movs r1, #0x58
movs r2, #0
bl CreateGroundItem
adds r1, r0, #0
cmp r1, #0
beq _0808BE6C
ldr r0, _0808BE80 @ =gPlayerEntity
ldrb r0, [r0, #0x14]
lsls r0, r0, #2
strb r0, [r1, #0x15]
movs r0, #0x80
strh r0, [r1, #0x24]
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r1, #0x20]
_0808BE6C:
movs r0, #1
strb r0, [r4]
bl DeleteThisEntity
_0808BE74:
pop {r4, pc}
.align 2, 0
_0808BE78: .4byte gSave
_0808BE7C: .4byte 0x0000024E
_0808BE80: .4byte gPlayerEntity
-215
View File
@@ -1,215 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object44
Object44: @ 0x0808E280
push {lr}
ldr r2, _0808E294 @ =gUnk_08121B8C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808E294: .4byte gUnk_08121B8C
thumb_func_start sub_0808E298
sub_0808E298: @ 0x0808E298
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r0, #0x38
movs r1, #2
strb r1, [r0]
movs r0, #1
strb r0, [r4, #0xc]
movs r5, #0
movs r6, #0
adds r0, r4, #0
bl GetTileTypeByEntity
adds r1, r0, #0
movs r0, #0xd1
lsls r0, r0, #2
cmp r1, r0
beq _0808E2DA
cmp r1, r0
bhi _0808E2C6
subs r0, #1
cmp r1, r0
beq _0808E2D8
b _0808E2E2
_0808E2C6:
ldr r0, _0808E2D4 @ =0x00000345
cmp r1, r0
beq _0808E2DE
adds r0, #1
cmp r1, r0
beq _0808E2E6
b _0808E2E2
.align 2, 0
_0808E2D4: .4byte 0x00000345
_0808E2D8:
movs r5, #0x10
_0808E2DA:
movs r6, #0x10
b _0808E2E6
_0808E2DE:
movs r5, #0x10
b _0808E2E6
_0808E2E2:
bl DeleteThisEntity
_0808E2E6:
ldrh r0, [r4, #0x2e]
adds r0, r0, r5
movs r2, #0x10
rsbs r2, r2, #0
adds r1, r2, #0
ands r0, r1
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x32]
adds r0, r0, r6
ands r0, r1
strh r0, [r4, #0x32]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
ldr r1, _0808E314 @ =0x00000347
adds r0, r4, #0
bl sub_0808E354
adds r0, r4, #0
bl sub_0808E318
pop {r4, r5, r6, pc}
.align 2, 0
_0808E314: .4byte 0x00000347
thumb_func_start sub_0808E318
sub_0808E318: @ 0x0808E318
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808E340
ldr r1, _0808E33C @ =0x00000343
adds r0, r4, #0
bl sub_0808E354
bl DeleteThisEntity
b _0808E34E
.align 2, 0
_0808E33C: .4byte 0x00000343
_0808E340:
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0808E34E
ldr r0, _0808E350 @ =0x0000018B
bl EnqueueSFX
_0808E34E:
pop {r4, pc}
.align 2, 0
_0808E350: .4byte 0x0000018B
thumb_func_start sub_0808E354
sub_0808E354: @ 0x0808E354
push {r4, r5, r6, lr}
mov r6, r8
push {r6}
adds r6, r0, #0
lsls r1, r1, #0x10
mov r8, r1
mov r0, r8
lsrs r0, r0, #0x10
mov r8, r0
movs r2, #0x2e
ldrsh r1, [r6, r2]
ldr r5, _0808E410 @ =gRoomControls
ldrh r0, [r5, #6]
adds r0, #0x10
subs r1, r1, r0
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r3, #0x32
ldrsh r0, [r6, r3]
ldrh r2, [r5, #8]
adds r2, #0x10
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r1, r0
mov r0, r8
movs r2, #2
bl sub_0807B7D8
mov r0, r8
adds r0, #1
movs r2, #0x2e
ldrsh r1, [r6, r2]
ldrh r2, [r5, #6]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r4
movs r3, #0x32
ldrsh r2, [r6, r3]
ldrh r3, [r5, #8]
adds r3, #0x10
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
movs r2, #2
bl sub_0807B7D8
mov r0, r8
adds r0, #2
movs r2, #0x2e
ldrsh r1, [r6, r2]
ldrh r2, [r5, #6]
adds r2, #0x10
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r4
movs r3, #0x32
ldrsh r2, [r6, r3]
ldrh r3, [r5, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
movs r2, #2
bl sub_0807B7D8
movs r0, #3
add r8, r0
movs r2, #0x2e
ldrsh r1, [r6, r2]
ldrh r0, [r5, #6]
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r4
movs r3, #0x32
ldrsh r0, [r6, r3]
ldrh r2, [r5, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r1, r0
mov r0, r8
movs r2, #2
bl sub_0807B7D8
pop {r3}
mov r8, r3
pop {r4, r5, r6, pc}
.align 2, 0
_0808E410: .4byte gRoomControls
-89
View File
@@ -1,89 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object45
Object45: @ 0x0808E414
push {lr}
ldr r2, _0808E428 @ =gUnk_08121BD8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808E428: .4byte gUnk_08121BD8
thumb_func_start sub_0808E42C
sub_0808E42C: @ 0x0808E42C
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x11]
subs r1, #0x11
ands r1, r2
movs r2, #6
orrs r1, r2
strb r1, [r0, #0x11]
ldrb r1, [r0, #0xa]
bl InitializeAnimation
pop {pc}
.align 2, 0
thumb_func_start sub_0808E448
sub_0808E448: @ 0x0808E448
push {r4, lr}
adds r4, r0, #0
movs r0, #0x10
bl IsItemEquipped
cmp r0, #1
bls _0808E45A
bl DeleteThisEntity
_0808E45A:
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #1
beq _0808E472
cmp r0, #0x80
bne _0808E486
bl DeleteThisEntity
_0808E472:
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]
b _0808E494
_0808E486:
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
_0808E494:
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0808E4A2
ldr r0, [r4, #0x34]
ldr r1, _0808E4A4 @ =0xFFFF8000
adds r0, r0, r1
str r0, [r4, #0x34]
_0808E4A2:
pop {r4, pc}
.align 2, 0
_0808E4A4: .4byte 0xFFFF8000
-60
View File
@@ -1,60 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object52
Object52: @ 0x080910A0
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080910C8
ldrb r0, [r4, #0xa]
bl CheckLocalFlag
cmp r0, #0
beq _080910B8
bl DeleteThisEntity
_080910B8:
movs r1, #1
strb r1, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r4, #0
bl sub_08078828
_080910C8:
adds r0, r4, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq _08091100
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08091104 @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r4, r5]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
movs r1, #2
bl sub_080A7C8C
bl DeleteThisEntity
_08091100:
pop {r4, r5, pc}
.align 2, 0
_08091104: .4byte gRoomControls
-128
View File
@@ -1,128 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object53
Object53: @ 0x08091108
push {lr}
ldr r2, _0809111C @ =gUnk_08122280
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809111C: .4byte gUnk_08122280
thumb_func_start sub_08091120
sub_08091120: @ 0x08091120
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
ldr r3, _08091194 @ =gUnk_08122288
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0, #2]
adds r0, r4, #0
adds r0, #0x60
strh r1, [r0]
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0, #1]
movs r0, #0xf
ands r1, r0
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r0, [r0, #3]
strh r0, [r4, #0x12]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
movs r0, #0xa8
lsls r0, r0, #0xa
str r0, [r4, #0x20]
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r0]
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08004168
pop {r4, pc}
.align 2, 0
_08091194: .4byte gUnk_08122288
thumb_func_start sub_08091198
sub_08091198: @ 0x08091198
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x20]
cmp r0, #0
bge _080911AA
ldrb r0, [r4, #0x18]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x18]
_080911AA:
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl GravityUpdate
cmp r0, #0
bne _080911E8
ldrb r1, [r4, #0xb]
cmp r1, #0xf
beq _080911CE
cmp r1, #0xf
bgt _080911C8
cmp r1, #0
beq _080911E4
b _080911DA
_080911C8:
cmp r1, #0xff
bne _080911DA
b _080911E4
_080911CE:
ldrb r1, [r4, #0xe]
adds r0, r4, #0
movs r2, #0x80
bl CreateFx
b _080911E4
_080911DA:
ldrb r2, [r4, #0xe]
adds r0, r4, #0
movs r3, #0
bl CreateObjectWithParent
_080911E4:
bl DeleteThisEntity
_080911E8:
pop {r4, pc}
.align 2, 0
-112
View File
@@ -1,112 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object63
Object63: @ 0x08093D70
push {lr}
ldr r2, _08093D84 @ =gUnk_08122944
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08093D84: .4byte gUnk_08122944
thumb_func_start sub_08093D88
sub_08093D88: @ 0x08093D88
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrh r0, [r4, #0x36]
subs r0, #8
strh r0, [r4, #0x36]
movs r0, #0xa8
lsls r0, r0, #0xa
str r0, [r4, #0x20]
movs r0, #0x20
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _08093DAC
cmp r0, #1
beq _08093DC4
b _08093DDE
_08093DAC:
adds r0, r4, #0
movs r1, #4
bl CreateRandomItemDrop
cmp r0, #0
bne _08093DBC
movs r0, #2
strb r0, [r4, #0xc]
_08093DBC:
ldr r1, [r4, #0x54]
ldr r0, [r4, #0x20]
str r0, [r1, #0x20]
b _08093DDE
_08093DC4:
movs r0, #0
movs r1, #0x5f
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08093DDE
movs r0, #5
strb r0, [r1, #0xe]
adds r0, r4, #0
bl sub_08093E10
_08093DDE:
pop {r4, pc}
thumb_func_start sub_08093DE0
sub_08093DE0: @ 0x08093DE0
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08093DF4
movs r0, #2
strb r0, [r2, #0xc]
_08093DF4:
ldrb r1, [r2, #0xe]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08093E06
ldr r1, [r2, #0x54]
ldrh r0, [r1, #0x32]
adds r0, #1
strh r0, [r1, #0x32]
_08093E06:
pop {pc}
thumb_func_start sub_08093E08
sub_08093E08: @ 0x08093E08
push {lr}
bl DeleteEntity
pop {pc}
thumb_func_start sub_08093E10
sub_08093E10: @ 0x08093E10
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl CopyPosition
str r4, [r5, #0x50]
str r5, [r4, #0x54]
ldr r0, [r4, #0x20]
str r0, [r5, #0x20]
pop {r4, r5, pc}
-99
View File
@@ -1,99 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object66
Object66: @ 0x08094084
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, [r4, #0x50]
movs r1, #0x36
ldrsh r0, [r5, r1]
cmp r0, #0
beq _0809412A
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080940CA
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x63
movs r0, #5
strb r0, [r1]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
_080940CA:
ldrh r0, [r5, #0x2e]
strh r0, [r4, #0x2e]
ldrh r0, [r5, #0x32]
strh r0, [r4, #0x32]
ldrb r2, [r5, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r5, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r4, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r4, #0x19]
movs r0, #0x36
ldrsh r1, [r5, r0]
movs r0, #0x40
rsbs r0, r0, #0
cmp r1, r0
ble _08094108
movs r3, #0x80
lsls r3, r3, #1
movs r2, #0x80
lsls r2, r2, #2
b _0809411E
_08094108:
movs r1, #0x36
ldrsh r0, [r5, r1]
adds r0, #0x40
lsls r2, r0, #1
movs r1, #0x80
lsls r1, r1, #1
subs r3, r1, r2
lsls r0, r0, #2
movs r1, #0x80
lsls r1, r1, #2
subs r2, r1, r0
_0809411E:
adds r0, r4, #0
adds r1, r3, #0
movs r3, #0
bl sub_0805EC9C
b _0809412E
_0809412A:
bl DeleteThisEntity
_0809412E:
pop {r4, r5, pc}
-828
View File
@@ -1,828 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object67
Object67: @ 0x08094130
push {lr}
ldr r2, _08094144 @ =gUnk_081229BC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08094144: .4byte gUnk_081229BC
thumb_func_start sub_08094148
sub_08094148: @ 0x08094148
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #1
bne _08094154
b _08094254
_08094154:
cmp r0, #1
bgt _0809415E
cmp r0, #0
beq _080941A8
b _0809438A
_0809415E:
cmp r0, #2
beq _08094164
b _0809438A
_08094164:
ldrb r0, [r4, #0xd]
cmp r0, #0
bne _08094180
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0xb4
lsls r0, r0, #1
str r0, [r4, #0x78]
ldr r0, _0809417C @ =gRoomControls
str r4, [r0, #0x30]
b _08094198
.align 2, 0
_0809417C: .4byte gRoomControls
_08094180:
ldr r0, [r4, #0x78]
subs r0, #1
str r0, [r4, #0x78]
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
bne _08094198
ldr r1, _080941A0 @ =gRoomControls
ldr r0, _080941A4 @ =gPlayerEntity
str r0, [r1, #0x30]
bl DeleteThisEntity
_08094198:
bl sub_08078B48
b _08094394
.align 2, 0
_080941A0: .4byte gRoomControls
_080941A4: .4byte gPlayerEntity
_080941A8:
ldr r1, _08094228 @ =gUnk_081229D0
ldrb r0, [r4, #0xb]
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #1]
strb r0, [r4, #0x15]
ldrb r0, [r4, #0xb]
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #2]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r2, [r4, #0x2e]
adds r0, r0, r2
strh r0, [r4, #0x2e]
ldrb r0, [r4, #0xb]
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #3]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r2, [r4, #0x32]
adds r0, r0, r2
strh r0, [r4, #0x32]
ldrb r0, [r4, #0xb]
lsls r0, r0, #2
adds r0, r0, r1
ldrb r2, [r0]
movs r0, #0x40
ands r0, r2
cmp r0, #0
beq _080941F0
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_080941F0:
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _08094200
ldrb r0, [r4, #0x18]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x18]
_08094200:
ldrb r0, [r4, #0xb]
cmp r0, #3
bhi _08094230
bl Random
ldr r1, _0809422C @ =0x0001FFFF
ands r1, r0
movs r0, #0xa0
lsls r0, r0, #0xa
orrs r0, r1
str r0, [r4, #0x20]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #0x56
bl InitializeAnimation
b _0809438A
.align 2, 0
_08094228: .4byte gUnk_081229D0
_0809422C: .4byte 0x0001FFFF
_08094230:
movs r0, #0xa0
lsls r0, r0, #0xa
str r0, [r4, #0x20]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
bl Random
movs r1, #3
ands r0, r1
ldrb r1, [r4, #0x15]
orrs r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0x57
bl InitializeAnimation
b _0809438A
_08094254:
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _08094272
adds r0, r4, #0
movs r1, #0x67
movs r2, #1
movs r3, #0x80
bl CreateObjectWithParent
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _08094272
ldr r0, [r4, #0x50]
str r0, [r1, #0x54]
_08094272:
ldrb r0, [r4, #0xb]
cmp r0, #0x80
bne _0809427A
b _08094380
_0809427A:
movs r2, #0
movs r0, #0x4b
strb r0, [r4, #0x1e]
ldrb r1, [r4, #0x19]
subs r0, #0x58
ands r0, r1
movs r1, #4
orrs r0, r1
movs r1, #0xe0
lsls r1, r1, #7
strh r1, [r4, #0x24]
movs r1, #0xc0
orrs r0, r1
strb r0, [r4, #0x19]
adds r3, r4, #0
adds r3, #0x29
ldrb r0, [r3]
movs r1, #7
orrs r0, r1
strb r0, [r3]
ldrb r0, [r4, #0x19]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x19]
ldrb r0, [r4, #0xb]
lsls r0, r0, #3
ldr r1, _080942E8 @ =gUnk_081229F0
adds r3, r0, r1
movs r0, #0
ldrsb r0, [r3, r0]
ldrh r1, [r4, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
movs r0, #1
ldrsb r0, [r3, r0]
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
ldrb r0, [r3, #2]
strb r0, [r4, #0xe]
ldrb r0, [r3, #3]
strb r0, [r4, #0xf]
movs r0, #0xce
str r0, [r4, #0x7c]
str r2, [r4, #0x74]
ldrb r1, [r3, #4]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080942EC
adds r1, r4, #0
adds r1, #0x82
movs r0, #0xff
lsls r0, r0, #8
b _080942F4
.align 2, 0
_080942E8: .4byte gUnk_081229F0
_080942EC:
adds r1, r4, #0
adds r1, #0x82
movs r0, #0x80
lsls r0, r0, #1
_080942F4:
strh r0, [r1]
ldrb r1, [r3, #4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809430A
adds r1, r4, #0
adds r1, #0x86
movs r0, #0xff
lsls r0, r0, #8
b _08094312
_0809430A:
adds r1, r4, #0
adds r1, #0x86
movs r0, #0x80
lsls r0, r0, #1
_08094312:
strh r0, [r1]
adds r0, r4, #0
bl AllocMutableHitbox
cmp r0, #0
beq _0809438A
ldr r2, [r4, #0x48]
ldr r1, _0809437C @ =gUnk_080FD2E8
ldrb r0, [r1]
strb r0, [r2]
ldr r2, [r4, #0x48]
ldrb r0, [r1, #1]
strb r0, [r2, #1]
ldr r2, [r4, #0x48]
ldrb r0, [r1, #2]
strb r0, [r2, #2]
ldr r2, [r4, #0x48]
ldrb r0, [r1, #3]
strb r0, [r2, #3]
ldr r2, [r4, #0x48]
ldrb r0, [r1, #4]
strb r0, [r2, #4]
ldr r2, [r4, #0x48]
ldrb r0, [r1, #5]
strb r0, [r2, #5]
ldr r2, [r4, #0x48]
ldrb r0, [r1, #6]
strb r0, [r2, #6]
ldr r2, [r4, #0x48]
ldrb r0, [r1, #7]
strb r0, [r2, #7]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r1, #4
movs r0, #7
strb r0, [r1]
adds r1, #4
movs r0, #0x48
strb r0, [r1]
subs r1, #1
movs r0, #0x7a
strb r0, [r1]
subs r1, #4
movs r0, #1
strb r0, [r1]
b _0809438A
.align 2, 0
_0809437C: .4byte gUnk_080FD2E8
_08094380:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_0809438A:
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_08094398
_08094394:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08094398
sub_08094398: @ 0x08094398
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080943A8
cmp r0, #1
beq _080943D8
b _08094420
_080943A8:
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
bl LinearMoveUpdate
movs r1, #0x80
lsls r1, r1, #7
adds r0, r4, #0
bl GravityUpdate
cmp r0, #0
bne _08094420
ldrb r0, [r4, #0xb]
cmp r0, #3
bhi _080943D2
adds r0, r4, #0
movs r1, #0xc
movs r2, #0
bl CreateFx
_080943D2:
bl DeleteThisEntity
b _08094420
_080943D8:
ldrb r1, [r4, #0xb]
cmp r1, #0x80
beq _0809440A
ldr r0, [r4, #0x7c]
subs r0, #1
str r0, [r4, #0x7c]
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
bne _080943F6
movs r0, #0x96
lsls r0, r0, #2
str r0, [r4, #0x7c]
movs r0, #2
strb r0, [r4, #0xc]
_080943F6:
adds r0, r4, #0
adds r0, #0x82
ldrh r1, [r0]
adds r0, #4
ldrh r2, [r0]
adds r0, r4, #0
movs r3, #0
bl sub_0805EC9C
b _08094420
_0809440A:
ldr r0, [r4, #0x54]
adds r0, #0x79
ldrb r0, [r0]
ands r1, r0
cmp r1, #0
bne _0809441A
bl DeleteThisEntity
_0809441A:
adds r0, r4, #0
bl sub_08094660
_08094420:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08094424
sub_08094424: @ 0x08094424
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
adds r3, r6, #0
adds r3, #0x82
movs r1, #0
ldrsh r0, [r3, r1]
cmp r0, #0
bge _08094452
adds r1, r6, #0
adds r1, #0x80
movs r0, #0x24
ldrsh r2, [r6, r0]
ldr r0, [r1]
adds r0, r0, r2
str r0, [r1]
movs r2, #0
ldrsh r0, [r3, r2]
rsbs r0, r0, #0
mov r8, r0
adds r5, r1, #0
b _08094466
_08094452:
adds r0, r6, #0
adds r0, #0x80
movs r1, #0x24
ldrsh r2, [r6, r1]
ldr r1, [r0]
subs r1, r1, r2
str r1, [r0]
ldrh r3, [r3]
mov r8, r3
adds r5, r0, #0
_08094466:
adds r0, r6, #0
adds r0, #0x86
movs r2, #0
ldrsh r1, [r0, r2]
adds r4, r0, #0
cmp r1, #0
bge _0809448C
adds r1, r6, #0
adds r1, #0x84
movs r0, #0x24
ldrsh r2, [r6, r0]
ldr r0, [r1]
adds r0, r0, r2
str r0, [r1]
movs r2, #0
ldrsh r0, [r4, r2]
rsbs r7, r0, #0
adds r3, r1, #0
b _0809449E
_0809448C:
adds r0, r6, #0
adds r0, #0x84
movs r1, #0x24
ldrsh r2, [r6, r1]
ldr r1, [r0]
subs r1, r1, r2
str r1, [r0]
ldrh r7, [r4]
adds r3, r0, #0
_0809449E:
ldrh r2, [r6, #0x24]
movs r0, #0x24
ldrsh r1, [r6, r0]
movs r0, #0x80
lsls r0, r0, #6
cmp r1, r0
ble _080944B2
ldr r1, _080944D0 @ =0xFFFFFF00
adds r0, r2, r1
strh r0, [r6, #0x24]
_080944B2:
ldr r0, [r6, #0x7c]
subs r0, #1
str r0, [r6, #0x7c]
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
bne _080944D4
movs r0, #0
strh r0, [r5]
strh r0, [r3]
movs r0, #3
strb r0, [r6, #0xc]
movs r0, #0x78
str r0, [r6, #0x7c]
b _08094500
.align 2, 0
_080944D0: .4byte 0xFFFFFF00
_080944D4:
adds r5, r6, #0
adds r5, #0x82
movs r2, #0
ldrsh r1, [r5, r2]
ldrb r3, [r6, #0xe]
adds r0, r6, #0
movs r2, #0x20
bl sub_0806FCF4
movs r0, #0
ldrsh r1, [r4, r0]
ldrb r3, [r6, #0xf]
adds r0, r6, #0
movs r2, #0x20
bl sub_0806FCF4
ldrh r1, [r5]
ldrh r2, [r4]
adds r0, r6, #0
movs r3, #0
bl sub_0805EC9C
_08094500:
ldr r5, [r6, #0x48]
cmp r5, #0
beq _08094538
movs r4, #0x80
lsls r4, r4, #9
adds r0, r4, #0
mov r1, r8
bl __divsi3
lsrs r0, r0, #3
strb r0, [r5, #6]
ldr r5, [r6, #0x48]
adds r0, r4, #0
adds r1, r7, #0
bl __divsi3
lsrs r0, r0, #3
strb r0, [r5, #7]
ldr r1, [r6, #0x48]
adds r0, r6, #0
adds r0, #0x62
ldrb r0, [r0]
strb r0, [r1]
ldr r1, [r6, #0x48]
adds r0, r6, #0
adds r0, #0x63
ldrb r0, [r0]
strb r0, [r1, #1]
_08094538:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08094540
sub_08094540: @ 0x08094540
push {lr}
adds r3, r0, #0
ldr r0, [r3, #0x7c]
subs r0, #1
str r0, [r3, #0x7c]
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
bne _0809455A
movs r0, #4
strb r0, [r3, #0xc]
movs r0, #2
str r0, [r3, #0x7c]
_0809455A:
adds r0, r3, #0
adds r0, #0x82
ldrh r1, [r0]
adds r0, #4
ldrh r2, [r0]
adds r0, r3, #0
movs r3, #0
bl sub_0805EC9C
pop {pc}
.align 2, 0
thumb_func_start sub_08094570
sub_08094570: @ 0x08094570
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
adds r2, r6, #0
adds r2, #0x82
ldrh r1, [r2]
lsls r3, r1, #0x10
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
beq _08094590
asrs r3, r3, #0x10
ldr r0, _080945B0 @ =0xFFFFFF00
cmp r3, r0
bne _080945BA
_08094590:
ldr r1, [r6, #0x7c]
cmp r1, #0
bne _080945B4
ldr r0, [r6, #0x50]
adds r0, #0x7c
strh r1, [r0]
ldr r0, [r6, #0x50]
adds r0, #0x79
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _08094622
bl DeleteThisEntity
b _08094622
.align 2, 0
_080945B0: .4byte 0xFFFFFF00
_080945B4:
subs r0, r1, #1
str r0, [r6, #0x7c]
b _08094622
_080945BA:
cmp r3, #0
bge _080945CC
subs r0, r1, #1
strh r0, [r2]
movs r1, #0
ldrsh r0, [r2, r1]
rsbs r0, r0, #0
mov r8, r0
b _080945D4
_080945CC:
adds r0, r1, #1
strh r0, [r2]
ldrh r2, [r2]
mov r8, r2
_080945D4:
adds r0, r6, #0
adds r0, #0x86
ldrh r2, [r0]
movs r3, #0
ldrsh r1, [r0, r3]
adds r4, r0, #0
cmp r1, #0
bge _080945F0
subs r0, r2, #1
strh r0, [r4]
movs r1, #0
ldrsh r0, [r4, r1]
rsbs r7, r0, #0
b _080945F6
_080945F0:
adds r0, r2, #1
strh r0, [r4]
ldrh r7, [r4]
_080945F6:
adds r5, r6, #0
adds r5, #0x82
movs r3, #0
ldrsh r1, [r5, r3]
ldrb r3, [r6, #0xe]
adds r0, r6, #0
movs r2, #0x20
bl sub_0806FCF4
movs r0, #0
ldrsh r1, [r4, r0]
ldrb r3, [r6, #0xf]
adds r0, r6, #0
movs r2, #0x20
bl sub_0806FCF4
ldrh r1, [r5]
ldrh r2, [r4]
adds r0, r6, #0
movs r3, #0
bl sub_0805EC9C
_08094622:
ldr r5, [r6, #0x48]
cmp r5, #0
beq _0809465A
movs r4, #0x80
lsls r4, r4, #9
adds r0, r4, #0
mov r1, r8
bl __divsi3
lsrs r0, r0, #3
strb r0, [r5, #6]
ldr r5, [r6, #0x48]
adds r0, r4, #0
adds r1, r7, #0
bl __divsi3
lsrs r0, r0, #3
strb r0, [r5, #7]
ldr r1, [r6, #0x48]
adds r0, r6, #0
adds r0, #0x62
ldrb r0, [r0]
strb r0, [r1]
ldr r1, [r6, #0x48]
adds r0, r6, #0
adds r0, #0x63
ldrb r0, [r0]
strb r0, [r1, #1]
_0809465A:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08094660
sub_08094660: @ 0x08094660
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r6, r0, #0
ldr r0, [r6, #0x50]
adds r0, #0x62
movs r7, #0
ldrsb r7, [r0, r7]
cmp r7, #0
bge _08094678
rsbs r7, r7, #0
_08094678:
lsls r7, r7, #1
adds r0, r7, #0
cmp r7, #0
bge _08094682
adds r0, #0xf
_08094682:
asrs r1, r0, #4
ldr r0, [r6, #0x74]
cmp r0, r1
bhs _08094700
str r1, [r6, #0x74]
movs r1, #0x2e
ldrsh r0, [r6, r1]
subs r0, r0, r7
adds r4, r0, #0
subs r4, #0x40
movs r1, #0x32
ldrsh r0, [r6, r1]
subs r0, r0, r7
adds r5, r0, #0
subs r5, #0x40
movs r0, #0x10
mov sb, r0
str r0, [r6, #0x78]
movs r1, #0
mov r8, r1
str r1, [r6, #0x7c]
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl sub_08094708
mov r0, r8
str r0, [r6, #0x78]
mov r1, sb
str r1, [r6, #0x7c]
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl sub_08094708
movs r1, #0x2e
ldrsh r0, [r6, r1]
adds r0, r0, r7
adds r4, r0, #0
adds r4, #0x30
movs r1, #0x32
ldrsh r0, [r6, r1]
adds r0, r0, r7
adds r5, r0, #0
adds r5, #0x30
movs r7, #0x10
rsbs r7, r7, #0
str r7, [r6, #0x78]
mov r0, r8
str r0, [r6, #0x7c]
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl sub_08094708
mov r1, r8
str r1, [r6, #0x78]
str r7, [r6, #0x7c]
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl sub_08094708
_08094700:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08094708
sub_08094708: @ 0x08094708
push {r4, r5, r6, r7, lr}
sub sp, #8
adds r7, r0, #0
adds r6, r1, #0
adds r5, r2, #0
ldr r0, [r7, #0x74]
lsls r0, r0, #1
adds r4, r0, #0
adds r4, #8
cmp r4, #0
beq _08094752
ldr r3, _08094758 @ =gRoomControls
movs r2, #0x3f
_08094722:
ldrh r0, [r3, #6]
subs r0, r6, r0
lsrs r0, r0, #4
ands r0, r2
ldrh r1, [r3, #8]
subs r1, r5, r1
lsrs r1, r1, #4
ands r1, r2
lsls r1, r1, #6
orrs r0, r1
movs r1, #2
str r2, [sp]
str r3, [sp, #4]
bl sub_0807BA8C
ldr r0, [r7, #0x78]
adds r6, r6, r0
ldr r0, [r7, #0x7c]
adds r5, r5, r0
subs r4, #1
ldr r2, [sp]
ldr r3, [sp, #4]
cmp r4, #0
bne _08094722
_08094752:
add sp, #8
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08094758: .4byte gRoomControls
-20
View File
@@ -1,20 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object75
Object75: @ 0x0808C934
push {lr}
ldr r2, _0808C948 @ =gUnk_08121670
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808C948: .4byte gUnk_08121670
-21
View File
@@ -1,21 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object76
Object76: @ 0x0808C94C
push {lr}
ldr r2, _0808C960 @ =gUnk_08121678
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808C960: .4byte gUnk_08121678
-256
View File
@@ -1,256 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object79
Object79: @ 0x08097F84
push {r4, lr}
adds r4, r0, #0
ldr r0, _08097FAC @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08097F98
bl DeleteThisEntity
_08097F98:
ldr r0, _08097FB0 @ =gUnk_08123410
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_08097FAC: .4byte gPlayerState
_08097FB0: .4byte gUnk_08123410
thumb_func_start sub_08097FB4
sub_08097FB4: @ 0x08097FB4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r0, #1
movs r1, #0
strb r0, [r4, #0xc]
movs r2, #0
strh r1, [r4, #0x24]
str r1, [r4, #0x6c]
adds r1, r4, #0
adds r1, #0x7a
movs r0, #0x90
lsls r0, r0, #5
strh r0, [r1]
strb r2, [r4, #0xe]
movs r0, #0x1e
strb r0, [r4, #0xf]
ldr r1, _08098014 @ =gUnk_0812341C
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x72
strh r0, [r1]
movs r0, #0x80
lsls r0, r0, #6
str r0, [r4, #0x74]
adds r0, r4, #0
movs r1, #6
bl SetDefaultPriority
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08098018
adds r1, r4, #0
adds r1, #0x7e
movs r0, #0x40
strh r0, [r1]
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl LoadSwapGFX
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl InitAnimationForceUpdate
b _08098032
.align 2, 0
_08098014: .4byte gUnk_0812341C
_08098018:
ldr r0, [r4, #0x50]
adds r0, #0x60
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0x60
strh r1, [r0]
ldr r2, [r4, #0x50]
ldrb r1, [r4, #0xa]
movs r0, #0xd
muls r0, r1, r0
ldrb r2, [r2, #0x1e]
adds r0, r0, r2
strb r0, [r4, #0x1e]
_08098032:
adds r0, r4, #0
bl sub_08098130
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809803C
sub_0809803C: @ 0x0809803C
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xa]
cmp r5, #0
bne _08098070
bl UpdateAnimationSingleFrame
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _08098082
ldr r0, _0809806C @ =gPlayerEntity
strb r5, [r0, #0xf]
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl InitAnimationForceUpdate
movs r0, #0xbc
lsls r0, r0, #1
bl SoundReq
b _08098082
.align 2, 0
_0809806C: .4byte gPlayerEntity
_08098070:
ldr r2, [r4, #0x50]
ldrb r1, [r4, #0xa]
movs r0, #0xd
muls r0, r1, r0
ldrb r1, [r2, #0x1e]
adds r0, r0, r1
strb r0, [r4, #0x1e]
ldrb r0, [r2, #0xc]
strb r0, [r4, #0xc]
_08098082:
pop {r4, r5, pc}
thumb_func_start sub_08098084
sub_08098084: @ 0x08098084
push {r4, lr}
adds r4, r0, #0
ldr r1, [r4, #0x6c]
movs r0, #0xa0
lsls r0, r0, #0xd
cmp r1, r0
bls _080980A8
ldr r0, _080980A4 @ =gPlayerState
ldr r1, [r0, #0x30]
movs r2, #0x80
orrs r1, r2
str r1, [r0, #0x30]
bl DeleteThisEntity
b _0809812E
.align 2, 0
_080980A4: .4byte gPlayerState
_080980A8:
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080980D8
adds r0, r4, #0
bl UpdateAnimationSingleFrame
adds r2, r4, #0
adds r2, #0x7e
ldrh r0, [r2]
subs r0, #1
strh r0, [r2]
lsls r0, r0, #0x10
ldr r1, _080980D4 @ =0xFFFF0000
cmp r0, r1
bne _080980E6
movs r0, #0x40
strh r0, [r2]
movs r0, #0xbc
lsls r0, r0, #1
bl SoundReq
b _080980E6
.align 2, 0
_080980D4: .4byte 0xFFFF0000
_080980D8:
ldr r2, [r4, #0x50]
ldrb r1, [r4, #0xa]
movs r0, #0xd
muls r0, r1, r0
ldrb r2, [r2, #0x1e]
adds r0, r0, r2
strb r0, [r4, #0x1e]
_080980E6:
ldr r0, [r4, #0x6c]
movs r1, #0xa0
lsls r1, r1, #5
adds r0, r0, r1
str r0, [r4, #0x6c]
ldr r0, [r4, #0x70]
ldr r1, [r4, #0x74]
adds r0, r0, r1
str r0, [r4, #0x70]
adds r2, r4, #0
adds r2, #0x72
ldrh r1, [r2]
movs r0, #0x1f
ands r0, r1
strh r0, [r2]
ldr r0, [r4, #0x74]
movs r1, #0xa0
lsls r1, r1, #1
adds r0, r0, r1
str r0, [r4, #0x74]
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08098128
movs r0, #0x1e
strb r0, [r4, #0xf]
ldrb r0, [r4, #0xe]
movs r1, #1
eors r0, r1
strb r0, [r4, #0xe]
_08098128:
adds r0, r4, #0
bl sub_08098130
_0809812E:
pop {r4, pc}
thumb_func_start sub_08098130
sub_08098130: @ 0x08098130
push {r4, lr}
adds r4, r0, #0
ldr r0, _08098160 @ =gPlayerEntity
adds r1, r4, #0
bl CopyPosition
adds r0, r4, #0
adds r0, #0x72
ldrh r0, [r0]
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x7a
ldrh r0, [r0]
strh r0, [r4, #0x24]
adds r0, r4, #0
bl LinearMoveUpdate
ldr r0, [r4, #0x30]
ldr r1, _08098164 @ =0xFFEC0000
adds r0, r0, r1
ldr r1, [r4, #0x6c]
adds r0, r0, r1
str r0, [r4, #0x30]
pop {r4, pc}
.align 2, 0
_08098160: .4byte gPlayerEntity
_08098164: .4byte 0xFFEC0000
-84
View File
@@ -1,84 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object81
Object81: @ 0x08098C68
push {lr}
ldr r2, _08098C7C @ =gUnk_08123674
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08098C7C: .4byte gUnk_08123674
thumb_func_start sub_08098C80
sub_08098C80: @ 0x08098C80
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #0
movs r5, #1
strb r5, [r4, #0xc]
strb r0, [r4, #0xe]
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _08098CC8 @ =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, #0x80
strh r1, [r0]
ldr r0, _08098CCC @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08098CD0
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
b _08098CD6
.align 2, 0
_08098CC8: .4byte gRoomControls
_08098CCC: .4byte gPlayerState
_08098CD0:
adds r0, r4, #0
adds r0, #0x38
strb r5, [r0]
_08098CD6:
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
adds r0, r4, #0
adds r0, #0x80
ldrh r1, [r0]
subs r1, #0x40
movs r0, #0x47
movs r2, #1
bl sub_08000148
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start nullsub_124
nullsub_124: @ 0x08098CF0
bx lr
.align 2, 0
-300
View File
@@ -1,300 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object9
Object9: @ 0x0808386C
push {r4, lr}
adds r4, r0, #0
ldr r0, _080838C8 @ =gPlayerState
adds r0, #0x27
ldrb r1, [r0]
rsbs r0, r1, #0
orrs r0, r1
lsrs r2, r0, #0x1f
ldr r0, _080838CC @ =gFuseInfo
ldrb r0, [r0]
cmp r0, #2
bgt _08083894
cmp r0, #0
blt _08083894
ldr r0, _080838D0 @ =gMessage
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
beq _080838AC
_08083894:
ldr r0, _080838D4 @ =gUnk_03003DF0
ldr r0, [r0, #4]
ldrb r0, [r0, #3]
cmp r0, #0x32
bne _080838AA
movs r0, #0x32
bl CheckKinstoneFused
movs r2, #0
cmp r0, #0
beq _080838AC
_080838AA:
movs r2, #1
_080838AC:
cmp r2, #0
beq _080838B6
adds r0, r4, #0
bl sub_080838DC
_080838B6:
ldr r0, _080838D8 @ =gUnk_0811F754
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_080838C8: .4byte gPlayerState
_080838CC: .4byte gFuseInfo
_080838D0: .4byte gMessage
_080838D4: .4byte gUnk_03003DF0
_080838D8: .4byte gUnk_0811F754
thumb_func_start sub_080838DC
sub_080838DC: @ 0x080838DC
ldrb r2, [r0, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0, #0x18]
ldrb r2, [r0, #0x1b]
movs r3, #0x3f
adds r1, r3, #0
ands r1, r2
movs r2, #0x40
orrs r1, r2
strb r1, [r0, #0x1b]
ldrb r1, [r0, #0x19]
ands r3, r1
strb r3, [r0, #0x19]
adds r3, r0, #0
adds r3, #0x29
ldrb r2, [r3]
movs r1, #8
rsbs r1, r1, #0
ands r1, r2
strb r1, [r3]
movs r2, #0
movs r1, #4
strb r1, [r0, #0xe]
str r2, [r0, #0x54]
strb r2, [r0, #0xc]
bx lr
thumb_func_start sub_08083914
sub_08083914: @ 0x08083914
push {r4, lr}
adds r4, r0, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #1
beq _08083942
adds r0, r4, #0
movs r1, #1
movs r2, #1
bl LoadSwapGFX
adds r0, r4, #0
adds r0, #0x60
ldrh r1, [r0]
subs r1, #0x10
strh r1, [r0]
ldr r1, _08083958 @ =0x01027820
movs r0, #1
bl sub_080ADDD8
adds r0, r4, #0
bl sub_080838DC
_08083942:
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x20
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #6
bl SetDefaultPriority
pop {r4, pc}
.align 2, 0
.ifdef EU
_08083958: .4byte 0x010277E0
.else
_08083958: .4byte 0x01027820
.endif
thumb_func_start sub_0808395C
sub_0808395C: @ 0x0808395C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
cmp r0, #0
beq _0808396C
subs r0, #1
strb r0, [r2, #0xe]
b _08083992
_0808396C:
ldr r3, _08083994 @ =gUnk_03003DF0
ldr r0, [r3, #4]
ldr r1, [r0, #8]
cmp r1, #0
beq _08083992
ldrb r0, [r0, #3]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x63
bhi _08083992
str r1, [r2, #0x54]
ldrb r0, [r3, #3]
adds r1, r2, #0
adds r1, #0x39
strb r0, [r1]
adds r0, r2, #0
bl sub_08083A40
_08083992:
pop {pc}
.align 2, 0
_08083994: .4byte gUnk_03003DF0
thumb_func_start sub_08083998
sub_08083998: @ 0x08083998
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #1
beq _080839C8
ldr r0, _080839C4 @ =gUnk_03003DF0
ldr r2, [r0, #4]
ldrb r0, [r2, #3]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x63
bhi _080839BA
ldr r1, [r4, #0x54]
ldr r0, [r2, #8]
cmp r1, r0
beq _080839C8
_080839BA:
adds r0, r4, #0
bl sub_080838DC
b _08083A32
.align 2, 0
_080839C4: .4byte gUnk_03003DF0
_080839C8:
ldr r1, [r4, #0x54]
ldr r0, [r1, #0x2c]
str r0, [r4, #0x2c]
ldr r0, [r1, #0x30]
str r0, [r4, #0x30]
ldr r0, [r1, #0x34]
str r0, [r4, #0x34]
adds r1, r4, #0
adds r1, #0x5a
ldrb r0, [r1]
cmp r0, #1
bne _08083A2C
movs r0, #0
strb r0, [r1]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080839F8
ldr r0, _080839F4 @ =gUnk_03003DF0
ldr r0, [r0, #4]
ldrb r0, [r0, #3]
b _080839FA
.align 2, 0
_080839F4: .4byte gUnk_03003DF0
_080839F8:
ldrb r0, [r4, #0xb]
_080839FA:
lsls r0, r0, #3
ldr r1, _08083A34 @ =gUnk_080C9CBC
adds r0, r0, r1
ldrb r2, [r0, #6]
movs r1, #1
ands r1, r2
ldrb r3, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r3
orrs r0, r1
strb r0, [r4, #0x1a]
ldr r0, _08083A38 @ =gUnk_0811F744
lsls r2, r2, #2
adds r2, r2, r0
ldr r1, [r2]
lsrs r2, r1, #0x1f
ldr r0, _08083A3C @ =0x00FFFFFF
ands r1, r0
orrs r1, r2
adds r0, #1
orrs r1, r0
movs r0, #0
bl sub_080ADDD8
_08083A2C:
adds r0, r4, #0
bl GetNextFrame
_08083A32:
pop {r4, pc}
.align 2, 0
_08083A34: .4byte gUnk_080C9CBC
_08083A38: .4byte gUnk_0811F744
_08083A3C: .4byte 0x00FFFFFF
thumb_func_start sub_08083A40
sub_08083A40: @ 0x08083A40
push {r4, lr}
adds r4, r0, #0
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, #2
strb r0, [r4, #0xc]
ldr r0, [r4, #0x54]
ldr r1, _08083A70 @ =gPlayerEntity
movs r3, #0x2e
ldrsh r2, [r0, r3]
movs r3, #0x2e
ldrsh r0, [r1, r3]
cmp r2, r0
ble _08083A74
movs r1, #0
adds r2, r4, #0
adds r2, #0x62
movs r0, #8
b _08083A7C
.align 2, 0
_08083A70: .4byte gPlayerEntity
_08083A74:
movs r1, #1
adds r2, r4, #0
adds r2, #0x62
movs r0, #0xf8
_08083A7C:
strb r0, [r2]
adds r2, r4, #0
adds r2, #0x63
movs r0, #0xee
strb r0, [r2]
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08083998
pop {r4, pc}
-76
View File
@@ -1,76 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object9B
Object9B: @ 0x0809E7A8
push {lr}
ldr r2, _0809E7BC @ =gUnk_081242D0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809E7BC: .4byte gUnk_081242D0
thumb_func_start sub_0809E7C0
sub_0809E7C0: @ 0x0809E7C0
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xb]
cmp r0, #0xff
beq _0809E7D4
adds r0, r4, #0
bl sub_0809E7FC
_0809E7D4:
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl InitializeAnimation
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E7E0
sub_0809E7E0: @ 0x0809E7E0
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r4, #0x5a
ldrb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809E7F8
bl DeleteThisEntity
_0809E7F8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E7FC
sub_0809E7FC: @ 0x0809E7FC
push {lr}
adds r1, r0, #0
ldrb r3, [r1, #0xb]
lsls r3, r3, #1
ldr r0, _0809E820 @ =gUnk_081242D8
adds r3, r3, r0
ldr r0, [r1, #0x50]
movs r2, #0
ldrsb r2, [r3, r2]
lsls r2, r2, #0x10
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
lsls r3, r3, #0x10
bl PositionRelative
pop {pc}
.align 2, 0
_0809E820: .4byte gUnk_081242D8
-34
View File
@@ -1,34 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectA7
ObjectA7: @ 0x0809F9AC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _0809F9D2
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #9
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_0809F9D2:
adds r0, r4, #0
bl GetNextFrame
pop {r4, pc}
.align 2, 0
-42
View File
@@ -1,42 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectB6
ObjectB6: @ 0x080A0E54
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xd]
cmp r0, #3
bls _080A0E64
bl DeleteThisEntity
_080A0E64:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080A0E76
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl InitializeAnimation
_080A0E76:
ldr r0, [r4, #0x50]
ldrb r3, [r4, #0xa]
adds r1, r4, #0
movs r2, #0
bl sub_0806FA90
adds r2, r4, #0
adds r2, #0x63
ldrb r0, [r2]
ldrb r1, [r4, #0xa]
subs r0, r0, r1
strb r0, [r2]
adds r0, r4, #0
bl GetNextFrame
pop {r4, pc}
.align 2, 0
-54
View File
@@ -1,54 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0809E9A0
sub_0809E9A0: @ 0x0809E9A0
push {r4, r5, r6, lr}
ldr r5, _0809E9B0 @ =gPlayerEntity
ldrb r2, [r5, #0xc]
cmp r2, #6
beq _0809E9B4
movs r0, #0
b _0809E9F0
.align 2, 0
_0809E9B0: .4byte gPlayerEntity
_0809E9B4:
ldrb r0, [r5, #0x14]
ands r2, r0
lsls r2, r2, #1
ldr r0, _0809E9F4 @ =gUnk_080B4468
adds r2, r2, r0
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r3, #0
ldrsh r1, [r2, r3]
adds r0, r0, r1
ldr r4, _0809E9F8 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r6, #0x32
ldrsh r1, [r5, r6]
movs r5, #2
ldrsh r2, [r2, r5]
adds r1, r1, r2
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
movs r1, #1
bl sub_080B1AE0
_0809E9F0:
pop {r4, r5, r6, pc}
.align 2, 0
_0809E9F4: .4byte gUnk_080B4468
_0809E9F8: .4byte gRoomControls
-71
View File
@@ -42176,27 +42176,6 @@
"size": 55,
"type": "animation"
},
{
"path": "object9/gUnk_0811F744_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1175180
},
"size": 16
},
{
"path": "object9/gUnk_0811F744_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1177412,
"size": 16
},
{
"path": "animations/gSpriteAnimations_ChestSpawner_0.bin",
"start": 1177784,
@@ -42665,16 +42644,6 @@
"size": 56,
"type": "animation"
},
{
"path": "object10/gUnk_0812056C.bin",
"start": 1181036,
"size": 8
},
{
"path": "object10/gUnk_08120574.bin",
"start": 1181044,
"size": 8
},
{
"path": "animations/gSpriteAnimations_Railtrack_0.bin",
"start": 1181156,
@@ -42875,16 +42844,6 @@
"size": 44,
"type": "animation"
},
{
"path": "object1F/gUnk_08120A18.bin",
"start": 1182232,
"size": 8
},
{
"path": "object1F/gUnk_08120A20.bin",
"start": 1182240,
"size": 8
},
{
"path": "animations/gSpriteAnimations_FigurineDevice_0.bin",
"start": 1182440,
@@ -43557,11 +43516,6 @@
"start": 1188444,
"size": 8
},
{
"path": "object53/gUnk_08122288.bin",
"start": 1188488,
"size": 12
},
{
"path": "animations/gSpriteAnimations_PullableLever_0.bin",
"start": 1188548,
@@ -44010,16 +43964,6 @@
"size": 28,
"type": "animation"
},
{
"path": "object67/gUnk_081229D0.bin",
"start": 1190352,
"size": 32
},
{
"path": "object67/gUnk_081229F0.bin",
"start": 1190384,
"size": 32
},
{
"path": "animations/gSpriteAnimations_Object6A_10_0.bin",
"start": 1190732,
@@ -44550,11 +44494,6 @@
"size": 40,
"type": "animation"
},
{
"path": "object79/gUnk_0812341C.bin",
"start": 1192988,
"size": 6
},
{
"path": "animations/gSpriteAnimations_PushableLever_0.bin",
"start": 1193140,
@@ -44845,16 +44784,6 @@
"size": 40,
"type": "animation"
},
{
"path": "object9B/gUnk_081242D8.bin",
"start": 1196760,
"size": 16
},
{
"path": "treeHidingPortal/gUnk_08124364.bin",
"start": 1196900,
"size": 80
},
{
"path": "animations/gSpriteAnimations_Fan_0.bin",
"start": 1197044,
-16
View File
@@ -1,16 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120560:: @ 08120560
.4byte sub_0808483C
.4byte sub_080848C8
.4byte sub_080849D8
gUnk_0812056C:: @ 0812056C
.incbin "object10/gUnk_0812056C.bin"
gUnk_08120574:: @ 08120574
.incbin "object10/gUnk_08120574.bin"
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120648:: @ 08120648
.4byte sub_08086034
.4byte sub_08086054
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120660:: @ 08120660
.4byte sub_080861C4
.4byte sub_08086234
-16
View File
@@ -1,16 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120A0C:: @ 08120A0C
.4byte sub_080876A8
.4byte sub_0808776C
.4byte sub_080877A4
gUnk_08120A18:: @ 08120A18
.incbin "object1F/gUnk_08120A18.bin"
gUnk_08120A20:: @ 08120A20
.incbin "object1F/gUnk_08120A20.bin"
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121480:: @ 08121480
.4byte sub_0808BE00
.4byte sub_0808BE2C
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121B8C:: @ 08121B8C
.4byte sub_0808E298
.4byte sub_0808E318
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121BD8:: @ 08121BD8
.4byte sub_0808E42C
.4byte sub_0808E448
-12
View File
@@ -1,12 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08122280:: @ 08122280
.4byte sub_08091120
.4byte sub_08091198
gUnk_08122288:: @ 08122288
.incbin "object53/gUnk_08122288.bin"
-10
View File
@@ -1,10 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08122944:: @ 08122944
.4byte sub_08093D88
.4byte sub_08093DE0
.4byte sub_08093E08
-18
View File
@@ -1,18 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081229BC:: @ 081229BC
.4byte sub_08094148
.4byte sub_08094398
.4byte sub_08094424
.4byte sub_08094540
.4byte sub_08094570
gUnk_081229D0:: @ 081229D0
.incbin "object67/gUnk_081229D0.bin"
gUnk_081229F0:: @ 081229F0
.incbin "object67/gUnk_081229F0.bin"
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121670:: @ 08121670
.4byte sub_0808C964
.4byte sub_0808CA10
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121678:: @ 08121678
.4byte sub_0808C964
.4byte sub_0808CA10
-13
View File
@@ -1,13 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08123410:: @ 08123410
.4byte sub_08097FB4
.4byte sub_0809803C
.4byte sub_08098084
gUnk_0812341C:: @ 0812341C
.incbin "object79/gUnk_0812341C.bin"
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08123674:: @ 08123674
.4byte sub_08098C80
.4byte nullsub_124
-18
View File
@@ -1,18 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811F744:: @ 0811F744
.ifdef EU
@ TODO only small differences
.incbin "object9/gUnk_0811F744_EU.bin"
.else
.incbin "object9/gUnk_0811F744_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
gUnk_0811F754:: @ 0811F754
.4byte sub_08083914
.4byte sub_0808395C
.4byte sub_08083998
-13
View File
@@ -1,13 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081242D0:: @ 081242D0
.4byte sub_0809E7C0
.4byte sub_0809E7E0
gUnk_081242D8:: @ 081242D8
.incbin "object9B/gUnk_081242D8.bin"
+2 -7
View File
@@ -4,12 +4,7 @@
.section .rodata
.align 2
gUnk_08124354:: @ 08124354
.4byte sub_0809E83C
.4byte sub_0809E86C
.4byte sub_0809E8BC
.4byte sub_0809E8EC
gUnk_08124364:: @ 08124364
.incbin "treeHidingPortal/gUnk_08124364.bin"
+1
View File
@@ -255,4 +255,5 @@ extern void sub_080ADD70(void);
extern bool32 sub_080AE4CC(Entity*, u32, u32, u32);
extern void sub_080AE58C(Entity*, u32, u32);
extern void sub_080AF284(void);
extern bool32 sub_080B1B54(u32);
#endif
+2 -2
View File
@@ -46,7 +46,7 @@ typedef enum {
OBJECT_D,
OBJECT_E,
SPECIAL_FX,
OBJECT_10,
PLAYER_CLONE,
OBJECT_11,
OBJECT_12,
RAILTRACK,
@@ -242,7 +242,7 @@ void ChestSpawner();
void ObjectD();
void ObjectE();
void SpecialFx();
void Object10();
void PlayerClone();
void Object11();
void Object12();
void Railtrack();
+38 -38
View File
@@ -629,21 +629,21 @@ SECTIONS {
src/object/ezloCap.o(.text);
src/object/blockPushed.o(.text);
src/object/lockedDoor.o(.text);
asm/object/object9.o(.text);
src/object/object9.o(.text);
src/object/objectA.o(.text);
src/object/objectB.o(.text);
src/object/chestSpawner.o(.text);
src/object/objectD.o(.text);
src/object/objectE.o(.text);
src/object/specialFx.o(.text);
asm/object/object10.o(.text);
src/object/playerClone.o(.text);
src/object/object11.o(.text);
src/object/object12.o(.text);
src/object/railtrack.o(.text);
src/object/lilypadLarge.o(.text);
asm/object/object15.o(.text);
src/object/object15.o(.text);
src/object/floatingPlatform.o(.text);
asm/object/object17.o(.text);
src/object/object17.o(.text);
asm/object/evilSpirit.o(.text);
src/object/houseDoorExterior.o(.text);
src/object/rupee.o(.text);
@@ -651,7 +651,7 @@ SECTIONS {
src/object/object1C.o(.text);
src/object/object1D.o(.text);
src/object/object1E.o(.text);
asm/object/object1F.o(.text);
src/object/object1F.o(.text);
src/object/object20.o(.text);
src/object/object21.o(.text);
src/object/figurineDevice.o(.text);
@@ -660,7 +660,7 @@ SECTIONS {
src/object/bigBarrel.o(.text);
src/object/barrelInside.o(.text);
src/object/pushableStatue.o(.text);
asm/object/object28.o(.text);
src/object/object28.o(.text);
src/object/ambientClouds.o(.text);
src/object/object2A.o(.text);
src/object/object2B.o(.text);
@@ -675,13 +675,13 @@ SECTIONS {
src/object/warpPoint.o(.text);
src/object/object35.o(.text);
src/object/object36.o(.text);
asm/object/object37.o(.text);
src/object/object37.o(.text);
src/object/jarPortal.o(.text);
src/object/bossDoor.o(.text);
src/object/object3A.o(.text);
src/object/macroMushroomStalks.o(.text);
asm/object/object75.o(.text); /* 75 and 76 are mislocated in object table */
asm/object/object76.o(.text);
src/object/object75.o(.text); /* 75 and 76 are mislocated in object table */
src/object/object76.o(.text);
asm/object/code_0808C964.o(.text);
src/object/macroPlayer.o(.text);
src/object/object3D.o(.text);
@@ -691,8 +691,8 @@ SECTIONS {
src/object/ladderUp.o(.text);
src/object/object42.o(.text);
src/object/object43.o(.text);
asm/object/object44.o(.text);
asm/object/object45.o(.text);
src/object/object44.o(.text);
src/object/object45.o(.text);
src/object/giantBookLadder.o(.text);
src/object/heartContainer.o(.text);
src/object/fileScreenObjects.o(.text);
@@ -705,8 +705,8 @@ SECTIONS {
src/object/archway.o(.text);
src/object/giantRock.o(.text);
src/object/giantRock2.o(.text);
asm/object/object52.o(.text);
asm/object/object53.o(.text);
src/object/object52.o(.text);
src/object/object53.o(.text);
src/object/pullableLever.o(.text);
src/object/minecart.o(.text);
asm/object/minecart.o(.text);
@@ -723,11 +723,11 @@ SECTIONS {
src/object/swordsmanNewsletter.o(.text);
src/object/object61.o(.text);
src/object/giantTwig.o(.text);
asm/object/object63.o(.text);
src/object/object63.o(.text);
src/object/object64.o(.text);
src/object/ladderHoleInBookshelf.o(.text);
asm/object/object66.o(.text);
asm/object/object67.o(.text);
src/object/object66.o(.text);
src/object/object67.o(.text);
src/object/object68.o(.text);
src/object/object69.o(.text);
src/object/object6A.o(.text);
@@ -743,7 +743,7 @@ SECTIONS {
src/object/object74.o(.text);
src/object/bell.o(.text);
src/object/macroDecorations.o(.text);
asm/object/object79.o(.text);
src/object/object79.o(.text);
src/object/steam.o(.text);
src/object/pushableLever.o(.text);
src/object/macroShoes.o(.text);
@@ -751,7 +751,7 @@ SECTIONS {
src/object/object7E.o(.text);
asm/object/picoBloom.o(.text);
src/object/board.o(.text);
asm/object/object81.o(.text);
src/object/object81.o(.text);
src/object/bigVortex.o(.text);
src/object/bigPushableLever.o(.text);
src/object/smallIceBlock.o(.text);
@@ -778,9 +778,8 @@ SECTIONS {
asm/object/object98.o(.text);
asm/object/object99.o(.text);
src/object/macroAcorn.o(.text);
asm/object/object9B.o(.text);
src/object/object9B.o(.text);
src/object/treeHidingPortal.o(.text);
asm/object/treeHidingPortal.o(.text);
src/object/lightableSwitch.o(.text);
src/object/treeThorns.o(.text);
src/object/fan.o(.text);
@@ -791,7 +790,7 @@ SECTIONS {
src/object/minishLight.o(.text);
asm/object/fireballChain.o(.text);
asm/object/objectA6.o(.text);
asm/object/objectA7.o(.text);
src/object/objectA7.o(.text);
src/object/objectA8.o(.text);
asm/object/objectA9.o(.text);
src/object/waterfallOpening.o(.text);
@@ -806,7 +805,7 @@ SECTIONS {
src/object/objectB3.o(.text);
asm/object/objectB4.o(.text);
src/object/objectB5.o(.text);
asm/object/objectB6.o(.text);
src/object/objectB6.o(.text);
src/object/well.o(.text);
src/object/windTribeTeleporter.o(.text);
asm/object/objectB9.o(.text);
@@ -1345,7 +1344,7 @@ SECTIONS {
data/animations/object/ezloCap.o(.rodata);
src/object/blockPushed.o(.rodata);
src/object/lockedDoor.o(.rodata);
data/const/object/object9.o(.rodata);
src/object/object9.o(.rodata);
data/animations/object/object9.o(.rodata);
src/object/objectB.o(.rodata);
src/object/chestSpawner.o(.rodata);
@@ -1354,15 +1353,15 @@ SECTIONS {
data/animations/object/objectD.o(.rodata);
src/object/specialFx.o(.rodata);
data/animations/object/specialFx.o(.rodata);
data/const/object/object10.o(.rodata);
src/object/playerClone.o(.rodata);
src/object/object11.o(.rodata);
src/object/object12.o(.rodata);
data/const/object/railtrack.o(.rodata);
data/animations/object/railtrack.o(.rodata);
data/const/object/lilypadLarge.o(.rodata);
data/const/object/object15.o(.rodata);
src/object/object15.o(.rodata);
src/object/floatingPlatform.o(.rodata);
data/const/object/object17.o(.rodata);
src/object/object17.o(.rodata);
data/const/object/evilSpirit.o(.rodata);
data/animations/object/evilSpirit.o(.rodata);
data/const/object/houseDoorExterior.o(.rodata);
@@ -1372,7 +1371,7 @@ SECTIONS {
data/const/object/object1D.o(.rodata);
src/object/object1E.o(.rodata);
data/animations/object/object1E.o(.rodata);
data/const/object/object1F.o(.rodata);
src/object/object1F.o(.rodata);
src/object/object20.o(.rodata);
src/object/object21.o(.rodata);
src/object/figurineDevice.o(.rodata);
@@ -1406,6 +1405,7 @@ SECTIONS {
src/object/object35.o(.rodata);
data/animations/object/object35.o(.rodata);
src/object/object36.o(.rodata);
src/object/object37.o(.rodata);
data/const/object/object37.o(.rodata);
data/const/object/jarPortal.o(.rodata);
data/animations/object/jarPortal.o(.rodata);
@@ -1413,8 +1413,8 @@ SECTIONS {
data/animations/object/bossDoor.o(.rodata);
src/object/object3A.o(.rodata);
src/object/macroMushroomStalks.o(.rodata);
data/const/object/object75.o(.rodata);
data/const/object/object76.o(.rodata);
src/object/object75.o(.rodata);
src/object/object76.o(.rodata);
src/object/macroPlayer.o(.rodata);
src/object/object3D.o(.rodata);
src/object/object3E.o(.rodata);
@@ -1423,9 +1423,9 @@ SECTIONS {
src/object/object42.o(.rodata);
src/object/object43.o(.rodata);
data/animations/object/object43.o(.rodata);
data/const/object/object44.o(.rodata);
src/object/object44.o(.rodata);
data/animations/object/object44.o(.rodata);
data/const/object/object45.o(.rodata);
src/object/object45.o(.rodata);
data/animations/object/object45.o(.rodata);
src/object/giantBookLadder.o(.rodata);
src/object/heartContainer.o(.rodata);
@@ -1442,7 +1442,7 @@ SECTIONS {
data/const/object/minishSizedEntrance.o(.rodata);
data/animations/object/minishSizedEntrance.o(.rodata);
src/object/giantRock2.o(.rodata);
data/const/object/object53.o(.rodata);
src/object/object53.o(.rodata);
src/object/pullableLever.o(.rodata);
data/animations/object/pullableLever.o(.rodata);
data/const/object/minecart.o(.rodata);
@@ -1464,11 +1464,11 @@ SECTIONS {
data/const/object/swordsmanNewsletter.o(.rodata);
src/object/object61.o(.rodata);
src/object/giantTwig.o(.rodata);
data/const/object/object63.o(.rodata);
src/object/object63.o(.rodata);
src/object/object64.o(.rodata);
data/animations/object/object64.o(.rodata);
src/object/ladderHoleInBookshelf.o(.rodata);
data/const/object/object67.o(.rodata);
src/object/object67.o(.rodata);
src/object/object68.o(.rodata);
src/object/object6A.o(.rodata);
data/const/object/object6A.o(.rodata);
@@ -1486,7 +1486,7 @@ SECTIONS {
data/const/object/bell.o(.rodata);
data/animations/object/bell.o(.rodata);
src/object/macroDecorations.o(.rodata);
data/const/object/object79.o(.rodata);
src/object/object79.o(.rodata);
data/animations/object/object79.o(.rodata);
src/object/steam.o(.rodata);
src/object/pushableLever.o(.rodata);
@@ -1496,7 +1496,7 @@ SECTIONS {
data/const/object/picoBloom.o(.rodata);
data/animations/object/picoBloom.o(.rodata);
src/object/board.o(.rodata);
data/const/object/object81.o(.rodata);
src/object/object81.o(.rodata);
data/const/object/bigVortex.o(.rodata);
data/animations/object/bigVortex.o(.rodata);
src/object/bigPushableLever.o(.rodata);
@@ -1530,9 +1530,9 @@ SECTIONS {
data/const/object/object98.o(.rodata);
data/animations/object/object98.o(.rodata);
src/object/macroAcorn.o(.rodata);
data/const/object/object9B.o(.rodata);
src/object/object9B.o(.rodata);
data/animations/object/object9B.o(.rodata);
data/const/object/treeHidingPortal.o(.rodata);
src/object/treeHidingPortal.o(.rodata);
data/const/object/lightableSwitch.o(.rodata);
src/object/fan.o(.rodata);
data/animations/object/fan.o(.rodata);
+1 -1
View File
@@ -18,7 +18,7 @@ void (*const gObjectFunctions[])(Entity*) = {
[OBJECT_D] = ObjectD,
[OBJECT_E] = ObjectE,
[SPECIAL_FX] = SpecialFx,
[OBJECT_10] = Object10,
[PLAYER_CLONE] = PlayerClone,
[OBJECT_11] = Object11,
[OBJECT_12] = Object12,
[RAILTRACK] = Railtrack,
+2 -1
View File
@@ -10,6 +10,7 @@
#include "object.h"
#include "functions.h"
#include "hitbox.h"
#include "item.h"
typedef struct {
/*0x00*/ Entity base;
@@ -91,7 +92,7 @@ void BigIceBlock_Action2(BigIceBlockEntity* this) {
if (super->type != 2) {
SetFlag(this->unk_86);
} else {
CreateGroundItemWithFlags(super, 0x53, 0, this->unk_86);
CreateGroundItemWithFlags(super, ITEM_SMALL_KEY, 0, this->unk_86);
}
}
super->action = 3;
+48
View File
@@ -0,0 +1,48 @@
#define NENT_DEPRECATED
#include "entity.h"
void Object15_Init(Entity*);
void Object15_Action1(Entity*);
void Object15(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
Object15_Init,
Object15_Action1,
};
actionFuncs[this->action](this);
}
void Object15_Init(Entity* this) {
this->action = 1;
this->spriteSettings.draw = 1;
InitializeAnimation(this, this->animIndex);
}
void Object15_Action1(Entity* this) {
if (this->type == 0) {
GetNextFrame(this);
}
if (this->type2 != 0) {
this->spriteSettings.draw ^= 1;
}
if ((int)(this->actionDelay * 0x1000000) >= 0) {
if (this->actionDelay) {
if (--this->actionDelay == 0) {
DeleteThisEntity();
}
} else {
if ((this->frame & 0x80) != 0) {
DeleteThisEntity();
}
}
}
if (this->child != NULL) {
this->x = this->child->x;
this->y = this->child->y;
this->z = this->child->z;
}
}
+45
View File
@@ -0,0 +1,45 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "player.h"
#include "asm.h"
#include "room.h"
#include "coord.h"
void Object17_Init(Entity*);
void Object17_Action1(Entity*);
void Object17(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
Object17_Init,
Object17_Action1,
};
actionFuncs[this->action](this);
}
void Object17_Init(Entity* this) {
this->action = 1;
this->speed = 0x80;
this->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
this->spritePriority.b0 = gPlayerEntity.spritePriority.b0;
this->collisionLayer = gPlayerEntity.collisionLayer;
this->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
this->type = Random() & 1;
InitializeAnimation(this, 0x11);
}
void Object17_Action1(Entity* this) {
if (this->type != 0) {
if ((gRoomTransition.frameCount & 1) == 0) {
GetNextFrame(this);
}
} else {
GetNextFrame(this);
}
if (sub_0806F3E4(this)) {
DeleteThisEntity();
} else if ((gPlayerState.field_0x1c & 0xf) != 1) {
DeleteThisEntity();
}
}
+102
View File
@@ -0,0 +1,102 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "player.h"
#include "functions.h"
#include "asm.h"
#include "effects.h"
typedef struct {
Entity base;
u8 filler[0x4];
u32 unk6c;
} Object1FEntity;
void Object1F_Init(Object1FEntity*);
void Object1F_Action1(Object1FEntity*);
void Object1F_Action2(Object1FEntity*);
void Object1F(Entity* this) {
static void (*const actionFuncs[])(Object1FEntity*) = {
Object1F_Init,
Object1F_Action1,
Object1F_Action2,
};
actionFuncs[this->action]((Object1FEntity*)this);
}
typedef struct {
u8 animationState;
u8 unk1;
u8 unk2;
u8 spriteVramOffset;
} gUnk_08120A18_struct;
void Object1F_Init(Object1FEntity* this) {
static const gUnk_08120A18_struct gUnk_08120A18[] = {
{ 0x0, 0x2, 0xA, 0xE8 },
{ 0x0, 0x5, 0x20, 0xE0 },
};
static const s8 gUnk_08120A20[] = { 0, -18, 16, 0, 0, 12, -16, 0 };
u32 temp;
super->action = 1;
super->zVelocity = 0x2c000;
super->direction = super->animationState << 2 ^ 0x10;
if (super->animationState == 0) {
super->spritePriority.b0--;
}
super->x.HALF.HI = gUnk_08120A20[super->animationState] + super->x.HALF.HI;
super->y.HALF.HI = gUnk_08120A20[super->animationState + 1] + super->y.HALF.HI;
super->spriteVramOffset = gUnk_08120A18[super->field_0xf].spriteVramOffset;
temp = gUnk_08120A18[super->field_0xf].unk1;
super->palette.b.b0 = temp;
this->unk6c = gUnk_08120A18[super->field_0xf].unk2;
super->collisionLayer = gPlayerEntity.collisionLayer;
super->speed = 0x100;
InitializeAnimation(super, gUnk_08120A18[super->field_0xf].animationState);
}
void Object1F_Action1(Object1FEntity* this) {
u32 uVar1;
if (this->unk6c) {
this->unk6c--;
uVar1 = gPlayerState.field_0x3c[1];
} else {
ProcessMovement2(super);
uVar1 = GravityUpdate(super, 0x2800);
}
if (uVar1 == 0) {
super->action = 2;
}
}
void Object1F_Action2(Object1FEntity* this) {
u8 bVar1;
bVar1 = sub_080B1B0C(super);
switch (bVar1) {
case 0x21:
CreateFx(super, FX_FALL_DOWN, 0);
break;
case 0x25:
CreateFx(super, FX_LAVA_SPLASH, 0);
break;
case 0x24:
case 0x30:
CreateFx(super, FX_WATER_SPLASH, 0);
break;
default:
if (super->type2 != 0) {
if (super->type2 == 15) {
CreateFx(super, super->actionDelay, 0x80);
} else {
CreateObjectWithParent(super, super->type2, super->actionDelay, 0);
}
}
}
DeleteThisEntity();
}
+62
View File
@@ -0,0 +1,62 @@
#include "entity.h"
#include "room.h"
void Object28(Entity* this) {
int iVar1;
int diffY;
int diffX;
int iVar4;
int temp;
if (this->action == 0) {
this->action = 1;
this->spriteSettings.draw = 3;
this->frameIndex = this->type2;
this->spriteOrientation.flipY = 3;
this->spriteRendering.b3 = 3;
if (this->type == 3) {
this->spritePriority.b0 = 6;
} else {
this->spritePriority.b0 = 7;
}
this->field_0x68.HWORD = this->x.HALF.HI;
this->field_0x6a.HWORD = this->y.HALF.HI;
SetDefaultPriority(this, 6);
}
if ((this->flags & 0x10) == 0) {
iVar4 = (int)this->x.HALF.HI - (int)gRoomControls.scroll_x;
diffX = iVar4 - 0x78;
iVar1 = (int)this->y.HALF.HI - (int)gRoomControls.scroll_y;
diffY = iVar1 - 0x50;
if (diffX < 0) {
temp = (iVar4 - 0x75);
} else {
temp = diffX;
}
diffX = temp >> 2;
if (diffY < 0) {
temp = iVar1 - 0x4d;
} else {
temp = diffY;
}
diffY = temp >> 2;
if (diffX < -0x10) {
diffX = -0x10;
}
if (0x10 < diffX) {
diffX = 0x10;
}
if (diffY < -0x10) {
diffY = -0x10;
}
if (0x10 < diffY) {
diffY = 0x10;
}
this->x.HALF.HI = this->field_0x68.HWORD + diffX;
this->y.HALF.HI = this->field_0x6a.HWORD + diffY;
}
}
+51
View File
@@ -0,0 +1,51 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "functions.h"
#include "save.h"
#include "item.h"
typedef struct {
Entity base;
u8 filler[0x8];
u16 unk70;
u8 filler2[0x6];
u16* unk78;
} Object37Entity;
extern u32 sub_0806F798(Entity*);
void Object37_Init(Object37Entity*);
void Object37_Action1(Object37Entity*);
void Object37(Entity* this) {
static void (*const actionFuncs[])(Object37Entity*) = {
Object37_Init,
Object37_Action1,
};
actionFuncs[this->action]((Object37Entity*)this);
}
void Object37_Init(Object37Entity* this) {
u16* puVar1;
puVar1 = GetLayerByIndex(super->collisionLayer)->mapData + sub_0806F798(super);
this->unk78 = puVar1;
this->unk70 = *puVar1;
super->action = 1;
}
void Object37_Action1(Object37Entity* this) {
Entity* item;
if ((gSave.unk24E[0] != 0) && (this->unk70 != *this->unk78)) {
item = CreateGroundItem(super, ITEM_RUPEE100, 0);
if (item != 0) {
item->direction = gPlayerEntity.animationState << 2;
item->speed = 0x80;
item->zVelocity = 0x20000;
}
gSave.unk24E[0] = 1;
DeleteThisEntity();
}
}
+70
View File
@@ -0,0 +1,70 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "asm.h"
#include "sound.h"
#include "room.h"
#include "functions.h"
void sub_0808E298(Entity*);
void sub_0808E318(Entity*);
void sub_0808E354(Entity*, u32);
void Object44(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_0808E298,
sub_0808E318,
};
actionFuncs[this->action]((Entity*)this);
}
void sub_0808E298(Entity* this) {
int x;
int y;
this->collisionLayer = 2;
this->action = 1;
x = 0;
y = 0;
switch (GetTileTypeByEntity(this)) {
case 0x343:
x = 0x10;
case 0x344:
y = 0x10;
break;
case 0x345:
x = 0x10;
break;
case 0x346:
break;
default:
DeleteThisEntity();
break;
}
this->x.HALF.HI = (this->x.HALF.HI + x) & 0xfff0;
this->y.HALF.HI = (this->y.HALF.HI + y) & 0xfff0;
InitializeAnimation(this, 0);
sub_0808E354(this, 0x347);
sub_0808E318(this);
}
void sub_0808E318(Entity* this) {
GetNextFrame(this);
if (this->frame & 0x80) {
sub_0808E354(this, 0x343);
DeleteThisEntity();
} else {
if (this->frame & 1) {
EnqueueSFX(SFX_18B);
}
}
}
void sub_0808E354(Entity* this, u32 param_2) {
u16 uVar1 = param_2;
sub_0807B7D8(uVar1, COORD_TO_TILE_OFFSET(this, 0x10, 0x10), 2);
sub_0807B7D8(uVar1 + 1, COORD_TO_TILE_OFFSET(this, 0, 0x10), 2);
sub_0807B7D8(uVar1 + 2, COORD_TO_TILE_OFFSET(this, 0x10, 0), 2);
sub_0807B7D8(uVar1 + 3, COORD_TO_TILE_OFFSET(this, 0, 0), 2);
}
+44
View File
@@ -0,0 +1,44 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "player.h"
#include "item.h"
void sub_0808E42C(Entity*);
void sub_0808E448(Entity*);
void Object45(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_0808E42C,
sub_0808E448,
};
actionFuncs[this->action]((Entity*)this);
}
void sub_0808E42C(Entity* this) {
this->action = 1;
this->updatePriority = 6;
InitializeAnimation(this, this->type);
}
void sub_0808E448(Entity* this) {
if (1 < IsItemEquipped(ITEM_LANTERN_ON)) {
DeleteThisEntity();
}
GetNextFrame(this);
switch (this->frame) {
case 0x80:
DeleteThisEntity();
case 1:
this->spriteSettings.draw ^= 1;
break;
default:
this->spriteSettings.draw = 1;
break;
}
if (this->type == 0) {
this->z.WORD -= 0x8000;
}
}
+22
View File
@@ -0,0 +1,22 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "flags.h"
#include "room.h"
extern void sub_08078828(Entity*);
extern void sub_080A7C8C(u32 pos, u32 layer);
void Object52(Entity* this) {
if (this->action == 0) {
if (CheckLocalFlag(this->type)) {
DeleteThisEntity();
}
this->action = 1;
this->collisionLayer = 1;
sub_08078828(this);
}
if (this->interactType != 0) {
sub_080A7C8C(COORD_TO_TILE(this), 2);
DeleteThisEntity();
}
}
+64
View File
@@ -0,0 +1,64 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "functions.h"
#include "asm.h"
void sub_08091120(Entity*);
void sub_08091198(Entity*);
void Object53(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_08091120,
sub_08091198,
};
actionFuncs[this->action]((Entity*)this);
}
typedef struct {
u8 animationState;
u8 palette;
u8 spriteVramOffset;
u8 spriteIndex;
} gUnk_08122288_struct;
void sub_08091120(Entity* this) {
static const gUnk_08122288_struct gUnk_08122288[] = { { 0x0, 0x2, 0xe8, 0xa7 },
{ 0x0, 0x5, 0xe0, 0xa7 },
{ 0x0, 0x5, 0xf2, 0xa7 } };
u32 temp;
this->action++;
this->spriteVramOffset = gUnk_08122288[this->type].spriteVramOffset;
temp = gUnk_08122288[this->type].palette;
this->palette.b.b0 = temp;
this->spriteIndex = gUnk_08122288[this->type].spriteIndex;
this->spriteSettings.draw = 1;
this->spriteRendering.b3 = 2;
this->zVelocity = 0x2a000;
InitializeAnimation(this, gUnk_08122288[this->type].animationState);
sub_08004168(this);
}
void sub_08091198(Entity* this) {
if (this->zVelocity < 0) {
this->spriteSettings.flipY = 1;
}
if (GravityUpdate(this, 0x2000)) {
return;
}
switch ((u8)this->type2) {
case 0:
case 0xff:
break;
case 0xf:
CreateFx(this, this->actionDelay, 0x80);
break;
default:
CreateObjectWithParent(this, this->type2, this->actionDelay, 0);
break;
}
DeleteThisEntity();
}
+65
View File
@@ -0,0 +1,65 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "functions.h"
#include "asm.h"
#include "object.h"
void sub_08093D88(Entity*);
void sub_08093DE0(Entity*);
void Object63_Delete(Entity*);
void sub_08093E10(Entity*, Entity*);
void Object63(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_08093D88,
sub_08093DE0,
Object63_Delete,
};
actionFuncs[this->action]((Entity*)this);
}
void sub_08093D88(Entity* this) {
Entity* objEnt;
this->action = 1;
this->z.HALF.HI -= 8;
this->zVelocity = 0x2a000;
this->actionDelay = 32;
switch (this->type) {
case 0:
if (CreateRandomItemDrop(this, 4) == 0) {
this->action = 2;
}
this->child->zVelocity = this->zVelocity;
break;
case 1:
objEnt = CreateObject(0, OBJECT_BLOCKING_STAIRS, 0);
if (objEnt != NULL) {
objEnt->actionDelay = 5;
sub_08093E10(this, objEnt);
}
break;
}
}
void sub_08093DE0(Entity* this) {
if (--this->actionDelay == 0) {
this->action = 2;
}
if ((this->actionDelay & 1) != 0) {
this->child->y.HALF.HI++;
}
}
void Object63_Delete(Entity* this) {
DeleteEntity(this);
}
void sub_08093E10(Entity* this, Entity* ent) {
CopyPosition(this, ent);
ent->parent = this;
this->child = ent;
ent->zVelocity = this->zVelocity;
}
+34
View File
@@ -0,0 +1,34 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "functions.h"
void Object66(Entity* this) {
int iVar2;
int iVar4;
Entity* parent;
parent = this->parent;
if (parent->z.HALF.HI != 0) {
if (this->action == 0) {
this->action = 1;
this->spriteSettings.draw = 1;
this->spritePriority.b0 = 6;
this->spriteOffsetY = 5;
InitializeAnimation(this, 1);
}
this->x.HALF.HI = parent->x.HALF.HI;
this->y.HALF.HI = parent->y.HALF.HI;
this->spriteOrientation.flipY = parent->spriteOrientation.flipY;
this->spriteRendering.b3 = parent->spriteRendering.b3;
if (parent->z.HALF.HI > -0x40) {
iVar2 = 0x100;
iVar4 = 0x200;
} else {
iVar2 = 0x100 - 2 * (parent->z.HALF.HI + 0x40);
iVar4 = 0x200 - 4 * (parent->z.HALF.HI + 0x40);
}
sub_0805EC9C(this, iVar2, iVar4, 0);
} else {
DeleteThisEntity();
}
}
+338
View File
@@ -0,0 +1,338 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "room.h"
#include "player.h"
#include "asm.h"
#include "functions.h"
#include "object.h"
#include "effects.h"
typedef struct {
Entity base;
u8 filler[0xC];
u32 unk74;
u32 unk78;
u32 unk7c;
union SplitWord unk80;
union SplitWord unk84;
} Object67Entity;
extern Hitbox gUnk_080FD2E8;
void sub_08094148(Object67Entity*);
void sub_08094398(Object67Entity*);
void sub_08094424(Object67Entity*);
void sub_08094540(Object67Entity*);
void sub_08094570(Object67Entity*);
void sub_08094660(Object67Entity*);
void sub_08094708(Object67Entity*, u32, u32);
extern bool32 AllocMutableHitbox(Entity*);
void Object67(Entity* this) {
static void (*const actionFuncs[])(Object67Entity*) = {
sub_08094148, sub_08094398, sub_08094424, sub_08094540, sub_08094570,
};
actionFuncs[this->action]((Object67Entity*)this);
}
typedef struct {
u8 unk0;
u8 direction;
s8 x;
s8 y;
} gUnk_081229D0_struct;
typedef struct {
s8 x;
s8 y;
u8 actionDelay;
u8 unk3;
u8 unk4;
u8 filler[3];
} gUnk_081229F0_struct;
void sub_08094148(Object67Entity* this) {
static const gUnk_081229D0_struct gUnk_081229D0[] = {
{ 0, 12, 8, 8 }, { 0x40, 0x14, -8, 8 }, { 0x80, 4, 8, -8 }, { 0xC0, 0x1C, -8, -8 },
{ 0, 12, 0, 0 }, { 0x40, 0x14, 0, 0 }, { 0x80, 4, 0, 0 }, { 0xC0, 0x1C, -0, 0 },
};
static const gUnk_081229F0_struct gUnk_081229F0[] = {
{ -32, -40, 1, 2, 0, { 0 } },
{ 0x1f, -40, 3, 2, 0x40, { 0 } },
{ -32, 0x17, 1, 0, 0x80, { 0 } },
{ 0x1f, 0x17, 3, 0, 0xC0, { 0 } },
};
const gUnk_081229F0_struct* ptr;
switch (super->type) {
case 2:
if (super->subAction == 0) {
super->subAction = 1;
this->unk78 = 0x168;
gRoomControls.camera_target = super;
} else {
if (--this->unk78 == -1) {
gRoomControls.camera_target = &gPlayerEntity;
DeleteThisEntity();
}
}
sub_08078B48();
return;
case 0:
super->direction = gUnk_081229D0[super->type2].direction;
super->x.HALF.HI += gUnk_081229D0[super->type2].x;
super->y.HALF.HI += gUnk_081229D0[super->type2].y;
if ((gUnk_081229D0[super->type2].unk0 & 0x40) != 0) {
super->spriteSettings.flipX = 1;
}
if ((gUnk_081229D0[super->type2].unk0 & 0x80) != 0) {
super->spriteSettings.flipY = 1;
}
if (super->type2 < 4) {
super->zVelocity = (Random() & 0x1ffff) | 0x28000;
super->speed = 0x100;
InitializeAnimation(super, 0x56);
} else {
super->zVelocity = 0x28000;
super->speed = 0x100;
super->direction = (Random() & 3) | super->direction;
InitializeAnimation(super, 0x57);
}
break;
case 1:
if (super->type2 == 0) {
super->child = CreateObjectWithParent(super, OBJECT_67, 1, 0x80);
if (super->child != NULL) {
super->child->child = super->parent;
}
}
switch (super->type2) {
default:
super->frameIndex = 75;
super->spriteRendering.alphaBlend = 1;
super->speed = 0x7000;
super->spriteRendering.b3 = 3;
super->spritePriority.b0 = 7;
super->spriteRendering.b0 = 3;
ptr = gUnk_081229F0 + super->type2;
super->x.HALF.HI = ptr->x + super->x.HALF.HI;
super->y.HALF.HI = ptr->y + super->y.HALF.HI;
super->actionDelay = ptr->actionDelay;
super->field_0xf = ptr->unk3;
this->unk7c = 0xce;
this->unk74 = 0;
if ((ptr->unk4 & 0x40) != 0) {
this->unk80.HALF.HI = 0xff00;
} else {
this->unk80.HALF.HI = 0x100;
}
if ((ptr->unk4 & 0x80) != 0) {
this->unk84.HALF.HI = 0xff00;
} else {
this->unk84.HALF.HI = 0x100;
}
if (AllocMutableHitbox(super)) {
super->hitbox->offset_x = gUnk_080FD2E8.offset_x;
super->hitbox->offset_y = gUnk_080FD2E8.offset_y;
super->hitbox->unk2[0] = gUnk_080FD2E8.unk2[0];
super->hitbox->unk2[1] = gUnk_080FD2E8.unk2[1];
super->hitbox->unk2[2] = gUnk_080FD2E8.unk2[2];
super->hitbox->unk2[3] = gUnk_080FD2E8.unk2[3];
super->hitbox->width = gUnk_080FD2E8.width;
super->hitbox->height = gUnk_080FD2E8.height;
COLLISION_ON(super);
super->collisionLayer = 2;
super->field_0x3c = 7;
super->hurtType = 0x48;
super->hitType = 0x7a;
super->flags2 = 1;
}
break;
case 0x80:
super->spriteSettings.draw = 0;
break;
}
break;
}
super->action = 1;
sub_08094398(this);
}
void sub_08094398(Object67Entity* this) {
switch (super->type) {
case 0:
GetNextFrame(super);
LinearMoveUpdate(super);
if (GravityUpdate(super, 0x4000) == 0) {
if (super->type2 < 4) {
CreateFx(super, FX_LAVA_SPLASH, 0);
}
DeleteThisEntity();
}
break;
case 1:
if (super->type2 != 0x80) {
if (--this->unk7c == -1) {
this->unk7c = 600;
super->action = 2;
}
sub_0805EC9C(super, this->unk80.HALF_U.HI, this->unk84.HALF_U.HI, 0);
} else {
if ((((GenericEntity*)super->child)->field_0x78.HALF.HI & 0x80) == 0) {
DeleteThisEntity();
}
sub_08094660(this);
}
break;
}
}
void sub_08094424(Object67Entity* this) {
u32 uVar2;
u32 uVar5;
if (this->unk80.HALF.HI < 0) {
this->unk80.WORD += (int)super->speed;
uVar2 = -this->unk80.HALF.HI;
} else {
this->unk80.WORD -= (int)super->speed;
uVar2 = this->unk80.HALF_U.HI;
}
if (this->unk84.HALF.HI < 0) {
this->unk84.WORD += (int)super->speed;
uVar5 = -this->unk84.HALF.HI;
} else {
this->unk84.WORD -= (int)super->speed;
uVar5 = this->unk84.HALF_U.HI;
}
if (0x2000 < super->speed) {
super->speed -= 0x100;
}
if (--this->unk7c == -1) {
this->unk80.HALF.LO = 0;
this->unk84.HALF.LO = 0;
super->action = 3;
this->unk7c = 0x78;
} else {
sub_0806FCF4(super, this->unk80.HALF.HI, 0x20, super->actionDelay);
sub_0806FCF4(super, this->unk84.HALF.HI, 0x20, super->field_0xf);
sub_0805EC9C(super, this->unk80.HALF_U.HI, this->unk84.HALF_U.HI, 0);
}
if (super->hitbox != NULL) {
super->hitbox->width = (u32)(0x10000 / (s32)uVar2) >> 3;
super->hitbox = super->hitbox;
super->hitbox->height = (u32)(0x10000 / (s32)uVar5) >> 3;
super->hitbox->offset_x = super->spriteOffsetX;
super->hitbox->offset_y = super->spriteOffsetY;
}
}
void sub_08094540(Object67Entity* this) {
if (--this->unk7c == -1) {
super->action = 4;
this->unk7c = 2;
}
sub_0805EC9C(super, this->unk80.HALF_U.HI, this->unk84.HALF_U.HI, 0);
}
void sub_08094570(Object67Entity* this) {
u32 uVar2;
u32 uVar3;
if ((this->unk80.HALF_U.HI == 0x100) || (this->unk80.HALF.HI == -0x100)) {
if (this->unk7c == 0) {
((GenericEntity*)super->parent)->field_0x7c.HALF.LO = 0;
if ((((GenericEntity*)super->parent)->field_0x78.HALF.HI & 0x80) == 0) {
DeleteThisEntity();
}
} else {
this->unk7c--;
}
} else {
if (this->unk80.HALF.HI < 0) {
this->unk80.HALF.HI--;
uVar2 = -this->unk80.HALF.HI;
} else {
this->unk80.HALF.HI++;
uVar2 = this->unk80.HALF_U.HI;
}
if (this->unk84.HALF.HI < 0) {
this->unk84.HALF.HI = this->unk84.HALF.HI + -1;
uVar3 = -this->unk84.HALF.HI;
} else {
this->unk84.HALF.HI = this->unk84.HALF.HI + 1;
uVar3 = this->unk84.HALF_U.HI;
}
sub_0806FCF4(super, this->unk80.HALF.HI, 0x20, super->actionDelay);
sub_0806FCF4(super, this->unk84.HALF.HI, 0x20, super->field_0xf);
sub_0805EC9C(super, this->unk80.HALF_U.HI, this->unk84.HALF_U.HI, 0);
}
if (super->hitbox != NULL) {
super->hitbox->width = (u32)(0x10000 / (s32)uVar2) >> 3;
super->hitbox->height = (u32)(0x10000 / (s32)uVar3) >> 3;
super->hitbox->offset_x = super->spriteOffsetX;
super->hitbox->offset_y = super->spriteOffsetY;
}
}
void sub_08094660(Object67Entity* this) {
int iVar1;
int spriteOffsetX;
int iVar3;
int iVar4;
int iVar5;
spriteOffsetX = (s8)super->parent->spriteOffsetX;
if (spriteOffsetX < 0) {
spriteOffsetX = -spriteOffsetX;
}
spriteOffsetX = spriteOffsetX * 2;
if (spriteOffsetX < 0) {
iVar5 = spriteOffsetX + 0xf;
} else {
iVar5 = spriteOffsetX;
}
iVar1 = iVar5 >> 4;
if (this->unk74 < iVar1) {
this->unk74 = iVar1;
iVar3 = super->x.HALF.HI - spriteOffsetX - 0x40;
iVar4 = super->y.HALF.HI - spriteOffsetX - 0x40;
this->unk78 = 0x10;
this->unk7c = 0;
sub_08094708(this, iVar3, iVar4);
this->unk78 = 0;
this->unk7c = 0x10;
sub_08094708(this, iVar3, iVar4);
iVar3 = super->x.HALF.HI + spriteOffsetX + 0x30;
iVar4 = super->y.HALF.HI + spriteOffsetX + 0x30;
this->unk78 = 0xfffffff0;
this->unk7c = 0;
sub_08094708(this, iVar3, iVar4);
this->unk78 = 0;
this->unk7c = 0xfffffff0;
sub_08094708(this, iVar3, iVar4);
}
}
void sub_08094708(Object67Entity* this, u32 param_2, u32 param_3) {
int index;
for (index = this->unk74 * 2 + 8; index != 0; index--) {
sub_0807BA8C(TILE(param_2, param_3), 2);
param_2 = param_2 + this->unk78;
param_3 = param_3 + this->unk7c;
}
}
+2 -1
View File
@@ -10,6 +10,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "item.h"
typedef struct {
/*0x00*/ Entity base;
@@ -66,7 +67,7 @@ void sub_08094774(Object68Entity* this) {
}
break;
case 2:
child = CreateGroundItem(&gPlayerEntity, 0x60, 0);
child = CreateGroundItem(&gPlayerEntity, ITEM_FAIRY, 0);
super->child = child;
if (child != NULL) {
child->actionDelay = 1;
+14
View File
@@ -0,0 +1,14 @@
#define NENT_DEPRECATED
#include "entity.h"
extern void sub_0808C964(Entity*);
extern void sub_0808CA10(Entity*);
void Object75(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_0808C964,
sub_0808CA10,
};
actionFuncs[this->action](this);
}
+14
View File
@@ -0,0 +1,14 @@
#define NENT_DEPRECATED
#include "entity.h"
extern void sub_0808C964(Entity*);
extern void sub_0808CA10(Entity*);
void Object76(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_0808C964,
sub_0808CA10,
};
actionFuncs[this->action](this);
}
+113
View File
@@ -0,0 +1,113 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "player.h"
#include "functions.h"
#include "sound.h"
typedef struct {
Entity base;
u8 filler[0x4];
u32 unk6c;
union SplitWord objDir;
u32 unk74;
u16 unk78;
u16 unk7a;
u16 unk7c;
s16 unk7e;
} Object79Entity;
void Object79_Init(Object79Entity*);
void Object79_Action1(Object79Entity*);
void Object79_Action2(Object79Entity*);
void sub_08098130(Object79Entity*);
void Object79(Entity* this) {
static void (*const actionFuncs[])(Object79Entity*) = {
Object79_Init,
Object79_Action1,
Object79_Action2,
};
if ((gPlayerState.flags & PL_MINISH) != 0) {
DeleteThisEntity();
}
actionFuncs[this->action]((Object79Entity*)this);
}
void Object79_Init(Object79Entity* this) {
static const u8 Object79_Directions[] = { DirectionSouthWest, DirectionWest, DirectionNorthWest,
DirectionNorthEast, DirectionEast, DirectionSouthEast };
super->action++;
super->speed = 0;
this->unk6c = 0;
this->unk7a = 0x1200;
super->actionDelay = 0;
super->field_0xf = 30;
this->objDir.HALF.HI = Object79_Directions[super->type];
this->unk74 = 0x2000;
SetDefaultPriority(super, 6);
if (super->type == 0) {
this->unk7e = 0x40;
LoadSwapGFX(super, 1, 0);
InitAnimationForceUpdate(super, super->type);
} else {
Entity* parent;
super->spriteVramOffset = super->parent->spriteVramOffset;
parent = super->parent;
super->frameIndex = super->type * 13 + parent->frameIndex;
}
sub_08098130(this);
}
void Object79_Action1(Object79Entity* this) {
if (super->type == 0) {
UpdateAnimationSingleFrame(super);
if (super->type2 != 0) {
gPlayerEntity.field_0xf = 0;
super->action++;
InitAnimationForceUpdate(super, 1);
SoundReq(SFX_178);
}
} else {
Entity* parent = super->parent;
super->frameIndex = super->type * 13 + parent->frameIndex;
super->action = parent->action;
}
}
void Object79_Action2(Object79Entity* this) {
if (this->unk6c >= 0x140001) {
gPlayerState.flags |= PL_MINISH;
DeleteThisEntity();
} else {
if (super->type == 0) {
UpdateAnimationSingleFrame(super);
if (--this->unk7e << 16 == -0x10000) {
this->unk7e = 0x40;
SoundReq(SFX_178);
}
} else {
Entity* parent = super->parent;
super->frameIndex = super->type * 13 + parent->frameIndex;
}
this->unk6c += 0x1400;
this->objDir.WORD += this->unk74;
this->objDir.HALF.HI = DirectionNormalize(this->objDir.HALF.HI);
this->unk74 += 0x140;
if (--super->field_0xf == 0xff) {
super->field_0xf = 30;
super->actionDelay ^= 1;
}
sub_08098130(this);
}
}
void sub_08098130(Object79Entity* this) {
CopyPosition(&gPlayerEntity, super);
super->direction = this->objDir.HALF.HI;
super->speed = this->unk7a;
LinearMoveUpdate(super);
super->y.WORD -= 0x140000;
super->y.WORD += this->unk6c;
}
+39
View File
@@ -0,0 +1,39 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "player.h"
#include "functions.h"
#include "sound.h"
typedef struct {
Entity base;
u8 filler[0x18];
u16 tilePos;
} Object81Entity;
void Object81_Init(Object81Entity*);
void Object81_Action1(Object81Entity*);
void Object81(Entity* this) {
static void (*const actionFuncs[])(Object81Entity*) = {
Object81_Init,
Object81_Action1,
};
actionFuncs[this->action]((Object81Entity*)this);
}
void Object81_Init(Object81Entity* this) {
super->action = 1;
super->actionDelay = 0;
this->tilePos = COORD_TO_TILE(super);
if (gPlayerState.flags & PL_MINISH) {
super->collisionLayer = 2;
} else {
super->collisionLayer = 1;
}
UpdateSpriteForCollisionLayer(super);
sub_08000148(0x47, this->tilePos - 0x40, 1);
}
void Object81_Action1(Object81Entity* this) {
}
+156
View File
@@ -0,0 +1,156 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "message.h"
#include "kinstone.h"
#include "common.h"
#include "functions.h"
// typedef struct {
// Entity base;
// u8 filler[0x18];
// u16 tilePos;
// } Object81Entity;
extern void sub_080ADDD8(u32, u32);
void sub_080838DC(Entity*);
void sub_08083A40(Entity*);
void Object9_Init(Entity*);
void Object9_Action1(Entity*);
void Object9_Action2(Entity*);
#ifdef EU
static const s32 gUnk_0811F744[] = {
0x00027940,
0x00027B40,
0x00027D40,
0x00027F40,
};
#else
static const s32 gUnk_0811F744[] = {
0x00027980,
0x00027B80,
0x00027D80,
0x00027F80,
};
#endif
void Object9(Entity* this) {
static void (*const gUnk_0811F754[])(Entity*) = {
Object9_Init,
Object9_Action1,
Object9_Action2,
};
u32 uVar2 = gPlayerState.field_0x27[0] > 0;
switch (gFuseInfo._0) {
case 0:
case 1:
case 2:
if ((gMessage.doTextBox & 0x7f) != 0) {
default:
if (gUnk_03003DF0.unk_4[3] == 50) {
if (CheckKinstoneFused(0x32) == 0) {
uVar2 = 0;
break;
}
}
uVar2 = 1;
}
break;
}
if (uVar2) {
sub_080838DC(this);
}
gUnk_0811F754[this->action](this);
}
void sub_080838DC(Entity* this) {
this->spriteSettings.draw = 0;
this->spriteOrientation.flipY = 1;
this->spriteRendering.b3 = 0;
this->spritePriority.b0 = 0;
this->actionDelay = 4;
this->child = NULL;
this->action = 0;
}
void Object9_Init(Entity* this) {
if (this->spriteAnimation[0] != 1) {
LoadSwapGFX(this, 1, 1);
this->spriteVramOffset -= 0x10;
#ifdef EU
sub_080ADDD8(1, 0x10277e0);
#else
sub_080ADDD8(1, 0x1027820);
#endif
sub_080838DC(this);
}
this->action = 1;
this->flags |= ENT_PERSIST;
SetDefaultPriority(this, 6);
}
void Object9_Action1(Entity* this) {
if (this->actionDelay) {
this->actionDelay--;
} else {
if ((*(Entity**)(gUnk_03003DF0.unk_4 + 8) != NULL) && ((u8)(gUnk_03003DF0.unk_4[3] - 1) < 100)) {
this->child = *(Entity**)(gUnk_03003DF0.unk_4 + 8);
this->interactType = gUnk_03003DF0.unk_3;
sub_08083A40(this);
}
}
}
void Object9_Action2(Entity* this) {
u32 bVar1;
u32 bVar2;
u32 bVar3;
u32 temp;
u32 temp2;
struct_080C9CBC* ptr;
if ((this->type != 1) &&
(((u8)(gUnk_03003DF0.unk_4[3] - 1) >= 100 || (this->child != *(Entity**)(gUnk_03003DF0.unk_4 + 8))))) {
sub_080838DC(this);
} else {
this->x = this->child->x;
this->y = this->child->y;
this->z = this->child->z;
if (this->frame == 1) {
this->frame = 0;
if (this->type == 0) {
bVar2 = gUnk_03003DF0.unk_4[3];
} else {
bVar2 = this->type2;
}
ptr = gUnk_080C9CBC + bVar2;
bVar1 = ptr->_5[0];
bVar3 = bVar1 & 1;
this->palette.b.b0 = bVar3;
temp = gUnk_0811F744[bVar1] < 0;
temp2 = (gUnk_0811F744[bVar1] & 0xffffff) | temp;
sub_080ADDD8(0, temp2 | 0x1000000);
}
GetNextFrame(this);
}
}
void sub_08083A40(Entity* this) {
u32 bVar1;
this->spriteSettings.draw = 1;
this->action = 2;
if (this->child->x.HALF.HI > gPlayerEntity.x.HALF.HI) {
bVar1 = 0;
this->spriteOffsetX = 8;
} else {
bVar1 = 1;
this->spriteOffsetX = -8;
}
this->spriteOffsetY = -18;
InitializeAnimation(this, bVar1);
Object9_Action2(this);
}
+42
View File
@@ -0,0 +1,42 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "coord.h"
void sub_0809E7C0(Entity*);
void sub_0809E7E0(Entity*);
void sub_0809E7FC(Entity*);
void Object9B(Entity* this) {
static void (*const actionFuncs[])(Entity*) = {
sub_0809E7C0,
sub_0809E7E0,
};
actionFuncs[this->action]((Entity*)this);
}
void sub_0809E7C0(Entity* this) {
this->action = 1;
if (this->type2 != 0xff) {
sub_0809E7FC(this);
}
InitializeAnimation(this, this->type);
}
void sub_0809E7E0(Entity* this) {
GetNextFrame(this);
if (this->frame & 0x80) {
DeleteThisEntity();
}
}
void sub_0809E7FC(Entity* this) {
static const s8 gUnk_081242D8[] = {
0, -24, 16, -16, 24, 0, 16, 16, 0, 24, -16, 16, -24, 0, -16, -16,
};
int iVar1;
const s8* ptr;
ptr = &gUnk_081242D8[this->type2 * 2];
PositionRelative(this->parent, this, ptr[0] << 0x10, ptr[1] << 0x10);
}
+11
View File
@@ -0,0 +1,11 @@
#define NENT_DEPRECATED
#include "entity.h"
void ObjectA7(Entity* this) {
if (this->action == 0) {
this->action = 1;
this->spritePriority.b0 = 6;
InitializeAnimation(this, 0);
}
GetNextFrame(this);
}
+16
View File
@@ -0,0 +1,16 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "coord.h"
void ObjectB6(Entity* this) {
if (this->parent->subAction > 3) {
DeleteThisEntity();
}
if (this->action == 0) {
this->action = 1;
InitializeAnimation(this, this->type);
}
sub_0806FA90(this->parent, this, 0, this->type);
this->spriteOffsetY = this->spriteOffsetY - this->type;
GetNextFrame(this);
}
+187
View File
@@ -0,0 +1,187 @@
#define NENT_DEPRECATED
#include "entity.h"
#include "room.h"
#include "asm.h"
#include "sound.h"
#include "player.h"
#include "functions.h"
#include "effects.h"
typedef struct {
Entity base;
u8 filler[0x4];
u32 unk6c;
u32 unk70;
u16 tilePos;
u16 unk76;
u16 unk78;
u16 unk7a;
} PlayerCloneEntity;
extern Entity* sub_08077CF8(u32 subtype, u32 form, u32 parameter, u32 unk);
extern const s16 gUnk_080B4468[];
void PlayerClone_Init(PlayerCloneEntity*);
void PlayerClone_Action1(PlayerCloneEntity*);
void PlayerClone_Action2(PlayerCloneEntity*);
void sub_08084B1C(PlayerCloneEntity*);
void sub_08084CAC(PlayerCloneEntity*);
void PlayerClone(Entity* this) {
static void (*const actionFuncs[])(PlayerCloneEntity*) = {
PlayerClone_Init,
PlayerClone_Action1,
PlayerClone_Action2,
};
actionFuncs[this->action]((PlayerCloneEntity*)this);
}
void PlayerClone_Init(PlayerCloneEntity* this) {
super->action = 1;
super->spriteRendering.b3 = 2;
super->spritePriority.b0 = 4;
super->x.HALF.HI = (super->x.HALF.HI & 0xfff0) | 8;
super->y.HALF.HI = (super->y.HALF.HI & 0xfff0) | 8;
this->tilePos = COORD_TO_TILE(super);
InitializeAnimation(super, 8);
SetTile(0x4016, this->tilePos, super->collisionLayer);
SoundReq(SFX_112);
}
const u16 PlayerCloneCollisions[] = { 0x2206, 0x6044, 0x4460, 0x622 };
void PlayerClone_Action1(PlayerCloneEntity* this) {
static const Hitbox PlayerCloneHitbox = { 0, -3, { 5, 3, 3, 5 }, 6, 6 };
if (gPlayerState.chargeState.action == 5) {
super->spriteSettings.draw = 1;
super->health = 1;
super->action = 2;
super->updatePriority = 6;
super->hitbox = (Hitbox*)&PlayerCloneHitbox;
super->field_0xf = (super->type + 1) * 15;
this->unk78 = super->x.HALF.HI - gPlayerEntity.x.HALF.HI;
this->unk7a = super->y.HALF.HI - gPlayerEntity.y.HALF.HI;
if ((this->unk78 != 0) && (this->unk7a != 0)) {
((PlayerCloneEntity*)gPlayerClones[super->type])->unk70 = 1;
}
sub_08000152(0x315, this->tilePos, super->collisionLayer);
super->child = sub_08077CF8(1, super->type + 1, 0, ((GenericEntity*)gPlayerState.item)->field_0x68.HALF.LO);
if (super->child != NULL) {
super->child->parent = super;
}
sub_0801766C(super);
sub_0806FDA0(super);
PlayerClone_Action2(this);
} else if (gPlayerState.chargeState.action != 4) {
sub_08000152(0x315, this->tilePos, super->collisionLayer);
gPlayerClones[super->type] = NULL;
DeleteThisEntity();
} else {
super->spriteSettings.draw ^= 1;
}
}
void PlayerClone_Action2(PlayerCloneEntity* this) {
u32 index;
if (super->field_0xf == 1) {
SoundReq(SFX_PLY_VO2);
super->field_0xf--;
} else if (super->field_0xf != 0) {
super->field_0xf--;
}
if (gPlayerState.chargeState.action == 5 && gPlayerClones[super->type] != NULL && gPlayerState.framestate != 19 &&
super->health != 0) {
if (gPlayerEntity.iframes >= 1) {
gPlayerState.chargeState.action = 1;
} else {
sub_080B1AA8(super);
sub_08084B1C(this);
super->x.HALF.HI = gPlayerEntity.x.HALF.HI + this->unk78;
super->y.HALF.HI = gPlayerEntity.y.HALF.HI + this->unk7a;
sub_08084CAC(this);
sub_080085B0(super);
if ((super->collisions & 0x6666) != 0x6666) {
for (index = 0; index <= 3; index++) {
if (PlayerCloneCollisions[index] == (PlayerCloneCollisions[index] & super->collisions)) {
break;
}
}
if (index == 4) {
super->actionDelay = 0;
super->spriteSettings.draw = 1;
return;
} else {
if (super->actionDelay != 0) {
if (--super->actionDelay != 0) {
super->spriteSettings.draw ^= 1;
return;
}
} else {
super->actionDelay = 30;
return;
}
}
}
gPlayerState.chargeState.action = 1;
return;
}
}
DeleteClones();
CreateFx(super, FX_SPARKLE_SECRET, 0);
DeleteEntity(super->child);
SoundReq(SFX_18F);
DeleteThisEntity();
}
void sub_08084B1C(PlayerCloneEntity* this) {
super->flags = gPlayerEntity.flags;
super->spriteVramOffset = gPlayerEntity.spriteVramOffset;
super->frameIndex = gPlayerEntity.frameIndex;
super->frameSpriteSettings = gPlayerEntity.frameSpriteSettings;
super->spriteIndex = gPlayerEntity.spriteIndex;
super->direction = gPlayerEntity.direction;
super->animationState = gPlayerEntity.animationState;
super->spriteSettings.flipX = gPlayerEntity.spriteSettings.flipX;
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
super->spritePriority.b0 = gPlayerEntity.spritePriority.b0;
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
super->collisionLayer = gPlayerEntity.collisionLayer;
super->flags2 = gPlayerEntity.flags2;
super->hitType = gPlayerEntity.hitType;
super->field_0x3c = gPlayerEntity.field_0x3c;
super->hurtType = gPlayerEntity.hurtType;
CopyPosition(super, super->child);
if (gPlayerState.field_0x3[1] != 0) {
super->child->damage = gPlayerState.item->damage;
super->child->frameIndex = gPlayerState.item->frameIndex;
super->child->spriteSettings.flipX = gPlayerState.item->spriteSettings.flipX;
super->child->spriteRendering.b3 = gPlayerState.item->spriteRendering.b3;
super->child->spritePriority.b0 = gPlayerState.item->spritePriority.b0;
if (super->child->spriteSettings.flipX) {
super->child->hitbox->offset_x = -super->child->hitbox->offset_x;
}
}
sub_0806FEBC(super, 0, 0);
sub_0806FEBC(super, 1, 0);
sub_0806FEBC(super, 2, super);
sub_0806FEBC(super, 3, 0);
sub_08078E84(super->child, super);
}
void sub_08084CAC(PlayerCloneEntity* this) {
const s16* ptr;
if (((PlayerCloneEntity*)gPlayerClones[super->type])->unk70 == 0) {
ptr = &gUnk_080B4468[super->animationState & 6];
if (sub_080B1B54(GetTileType(COORD_TO_TILE_OFFSET(super, -ptr[0], -ptr[1]), super->collisionLayer)) == 0x72) {
((PlayerCloneEntity*)gPlayerClones[0])->unk6c |= (1 << super->type);
} else {
((PlayerCloneEntity*)gPlayerClones[0])->unk6c &= ~(1 << super->type);
}
}
}
+3 -2
View File
@@ -10,6 +10,7 @@
#include "object.h"
#include "functions.h"
#include "hitbox.h"
#include "item.h"
typedef struct {
/*0x00*/ Entity base;
@@ -138,10 +139,10 @@ void SmallIceBlock_Action3(SmallIceBlockEntity* this) {
}
sub_0805EC9C(super, 0x100, gUnk_08123748[super->actionDelay >> 5], 0);
if (super->type == 1) {
CreateGroundItemWithFlags(super, 0x53, 0, this->unk_86);
CreateGroundItemWithFlags(super, ITEM_SMALL_KEY, 0, this->unk_86);
SoundReq(SFX_SECRET);
} else if (super->type == 2) {
CreateGroundItemWithFlags(super, 0x52, 0, this->unk_86);
CreateGroundItemWithFlags(super, ITEM_BIG_KEY, 0, this->unk_86);
SoundReq(SFX_SECRET);
}
super->action = 4;
+31 -4
View File
@@ -7,12 +7,21 @@
#include "functions.h"
#include "effects.h"
extern void (*const gUnk_08124354[])(Entity*);
extern const s16 gUnk_080B4468[];
extern s16 gUnk_08124364[];
void sub_0809E83C(Entity* this);
void sub_0809E86C(Entity* this);
void sub_0809E8BC(Entity* this);
void sub_0809E8EC(Entity* this);
void TreeHidingPortal(Entity* this) {
gUnk_08124354[this->action](this);
static void (*const actionFuncs[])(Entity*) = {
sub_0809E83C,
sub_0809E86C,
sub_0809E8BC,
sub_0809E8EC,
};
actionFuncs[this->action](this);
}
void sub_0809E83C(Entity* this) {
@@ -61,8 +70,12 @@ void sub_0809E8EC(Entity* this) {
}
void sub_0809E918(Entity* this) {
static const s16 gUnk_08124364[] = {
0, -4, 8, -4, 16, -4, 22, -4, -8, -4, -16, -4, -22, -4, 0, -12, 0, 4, 8, -12,
8, 4, -8, -12, -8, 4, 8, -16, -8, -16, 12, -16, -12, -16, 16, -14, -16, -14, -1000, 0,
};
Entity* fx;
s16* i = gUnk_08124364;
const s16* i = gUnk_08124364;
while (*i != -1000) {
fx = CreateFx(this, FX_BUSH, 0);
if (fx != NULL) {
@@ -78,3 +91,17 @@ void sub_0809E918(Entity* this) {
void sub_0809E96C(Entity* this) {
CreateMinishEntrance(COORD_TO_TILE_OFFSET(this, 0x20, 0x8));
}
u32 sub_0809E9A0(void) {
u32 rv;
const s16* ptr;
if (gPlayerEntity.action != PLAYER_BOUNCE) {
rv = 0;
} else {
ptr = &gUnk_080B4468[gPlayerEntity.animationState & 6];
rv = sub_080B1AE0(COORD_TO_TILE_OFFSET(&gPlayerEntity, -ptr[0], -ptr[1]), 1);
}
return rv;
}
+1 -1
View File
@@ -3501,7 +3501,7 @@ void SurfaceAction_CloneTile(Entity* this) {
break;
}
if (n > i) {
Entity* e = CreateObjectWithParent(this, OBJECT_10, i, 0);
Entity* e = CreateObjectWithParent(this, PLAYER_CLONE, i, 0);
gPlayerClones[i] = e;
if (e != NULL) {
CopyPosition(this, e);