Merge pull request #439 from octorock/objects

This commit is contained in:
notyourav
2022-03-11 09:48:29 -08:00
committed by GitHub
75 changed files with 2718 additions and 5105 deletions
+2 -2
View File
@@ -3261,8 +3261,8 @@ _0801AF10:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0801AF18
sub_0801AF18: @ 0x0801AF18
thumb_func_start SetMultipleTiles
SetMultipleTiles: @ 0x0801AF18
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r6, r1, #0
@@ -0,0 +1,70 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080850A6
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x63
movs r0, #4
strb r0, [r1]
ldr r0, _080850A8 @ =gScreen
mov ip, r0
ldrh r1, [r0]
movs r2, #0x80
lsls r2, r2, #6
adds r0, r2, #0
orrs r0, r1
mov r1, ip
strh r0, [r1]
adds r1, #0x60
movs r0, #0x1f
strh r0, [r1]
adds r1, #2
movs r0, #0xf
strh r0, [r1]
movs r2, #0x2e
ldrsh r0, [r4, r2]
ldr r3, _080850AC @ =gRoomControls
movs r2, #0xa
ldrsh r1, [r3, r2]
subs r0, r0, r1
adds r1, r0, #0
subs r1, #0x18
movs r2, #0xff
ands r1, r2
lsls r1, r1, #8
adds r0, #0x18
ands r0, r2
orrs r1, r0
mov r0, ip
adds r0, #0x58
strh r1, [r0]
movs r1, #0x32
ldrsh r0, [r4, r1]
movs r4, #0xc
ldrsh r1, [r3, r4]
subs r0, r0, r1
adds r1, r0, #0
subs r1, #0x18
ands r1, r2
lsls r1, r1, #8
adds r0, #0x18
ands r0, r2
orrs r1, r0
mov r0, ip
adds r0, #0x5c
strh r1, [r0]
_080850A6:
pop {r4, pc}
.align 2, 0
_080850A8: .4byte gScreen
_080850AC: .4byte gRoomControls
.syntax divided
+107
View File
@@ -0,0 +1,107 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, _08087590 @ =gPlayerEntity
ldrb r0, [r0, #0x14]
lsrs r0, r0, #1
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x19]
movs r2, #0x3f
adds r0, r2, #0
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
adds r3, r4, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r3]
ldrb r1, [r4, #0x1b]
lsrs r0, r1, #6
subs r0, #1
lsls r0, r0, #6
ands r2, r1
orrs r2, r0
strb r2, [r4, #0x1b]
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _08087594
ldrb r1, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r0, [r4, #0x14]
cmp r0, #1
bne _08087588
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_08087588:
adds r0, r4, #0
bl sub_08087640
b _080875DC
.align 2, 0
_08087590: .4byte gPlayerEntity
_08087594:
ldr r0, _080875B4 @ =gArea
ldrb r0, [r0, #1]
movs r1, #4
cmp r0, #0x10
bne _080875A2
movs r1, #0xb5
lsls r1, r1, #1
_080875A2:
adds r0, r4, #0
bl ChangeObjPalette
ldrb r0, [r4, #0x14]
cmp r0, #1
beq _080875B8
cmp r0, #3
bne _080875CE
b _080875C0
.align 2, 0
_080875B4: .4byte gArea
_080875B8:
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_080875C0:
ldrb r0, [r4, #0xa]
cmp r0, #0x40
bne _080875DC
ldrh r0, [r4, #0x32]
adds r0, #4
strh r0, [r4, #0x32]
b _080875DC
_080875CE:
ldrb r0, [r4, #0xa]
cmp r0, #0x40
bne _080875DC
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_080875DC:
adds r0, r4, #0
movs r1, #3
bl SetDefaultPriority
ldrb r1, [r4, #0xb]
lsls r1, r1, #2
ldrb r0, [r4, #0x14]
adds r1, r1, r0
adds r0, r4, #0
bl InitializeAnimation
pop {r4, pc}
.syntax divided
+104
View File
@@ -0,0 +1,104 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x10
adds r7, r0, #0
movs r1, #0x2e
ldrsh r0, [r7, r1]
str r0, [sp]
movs r0, #0x32
ldrsh r2, [r7, r0]
str r2, [sp, #4]
adds r0, r7, #0
adds r0, #0x38
ldrb r0, [r0]
mov r8, r0
movs r0, #0x10
rsbs r0, r0, #0
mov r1, r8
lsls r1, r1, #0x18
str r1, [sp, #8]
_080878F8:
movs r2, #0x10
rsbs r2, r2, #0
mov sb, r2
ldr r1, [sp]
adds r1, r1, r0
mov sl, r1
adds r0, #0x10
str r0, [sp, #0xc]
mov r6, sl
_0808790A:
ldr r2, _0808795C @ =gRoomControls
ldrh r0, [r2, #6]
subs r0, r6, r0
lsrs r4, r0, #4
movs r0, #0x3f
ands r4, r0
ldr r5, [sp, #4]
add r5, sb
ldrh r0, [r2, #8]
subs r0, r5, r0
lsrs r0, r0, #4
movs r1, #0x3f
ands r0, r1
lsls r0, r0, #6
orrs r4, r0
adds r0, r4, #0
ldr r2, [sp, #8]
lsrs r1, r2, #0x18
bl sub_080B1AE0
cmp r0, #0x2e
bne _08087970
adds r0, r4, #0
mov r1, r8
bl GetTileType
adds r1, r0, #0
movs r0, #0xda
lsls r0, r0, #2
cmp r1, r0
bhi _08087960
subs r0, #1
cmp r1, r0
blo _08087960
adds r0, r7, #0
movs r1, #3
adds r2, r6, #0
adds r3, r5, #0
bl sub_08008796
b _0808797C
.align 2, 0
_0808795C: .4byte gRoomControls
_08087960:
ldr r0, _0808796C @ =0x00004022
adds r1, r4, #0
mov r2, r8
bl SetTile
b _0808797C
.align 2, 0
_0808796C: .4byte 0x00004022
_08087970:
adds r0, r7, #0
movs r1, #3
mov r2, sl
adds r3, r5, #0
bl sub_08008796
_0808797C:
movs r0, #0x10
add sb, r0
mov r1, sb
cmp r1, #0x10
ble _0808790A
ldr r0, [sp, #0xc]
cmp r0, #0x10
ble _080878F8
add sp, #0x10
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.syntax divided
@@ -0,0 +1,66 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xc]
cmp r5, #0
beq _080A22FC
cmp r5, #1
beq _080A231C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A233E
movs r0, #8
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r4, #0xf]
ldrb r1, [r4, #0xd]
adds r0, r1, r0
strb r0, [r4, #0x1e]
lsls r1, r1, #0x18
lsls r0, r0, #0x18
cmp r1, r0
bne _080A233E
b _080A233A
_080A22FC:
adds r0, r4, #0
bl sub_080A2340
movs r0, #8
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
ldrb r0, [r4, #0x1e]
strb r0, [r4, #0xd]
bl Random
movs r1, #3
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
b _080A233E
_080A231C:
ldrh r0, [r4, #0x24]
subs r0, #1
strh r0, [r4, #0x24]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A233E
bl Random
movs r1, #7
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
movs r0, #2
b _080A233C
_080A233A:
movs r0, #1
_080A233C:
strb r0, [r4, #0xc]
_080A233E:
pop {r4, r5, pc}
.syntax divided
-347
View File
@@ -1,347 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object11
Object11: @ 0x08084D34
push {r4, lr}
adds r4, r0, #0
bl EntityIsDeleted
cmp r0, #0
bne _08084D50
ldr r0, _08084D54 @ =gUnk_0812057C
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_08084D50:
pop {r4, pc}
.align 2, 0
_08084D54: .4byte gUnk_0812057C
thumb_func_start sub_08084D58
sub_08084D58: @ 0x08084D58
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
ldrb r0, [r7, #0xa]
cmp r0, #3
bne _08084D6C
adds r0, r7, #0
bl sub_08084F8C
_08084D6C:
adds r0, r7, #0
bl sub_08004168
ldrb r0, [r7, #0xa]
cmp r0, #4
bne _08084D7E
adds r0, r7, #0
bl sub_08084F8C
_08084D7E:
movs r0, #2
strb r0, [r7, #0xc]
ldrb r0, [r7, #0x10]
movs r2, #0x80
orrs r0, r2
strb r0, [r7, #0x10]
ldrb r1, [r7, #0x19]
movs r5, #0x3f
adds r0, r5, #0
ands r0, r1
orrs r0, r2
strb r0, [r7, #0x19]
ldr r0, _08084E48 @ =gUnk_08120588
mov r8, r0
ldrb r0, [r7, #0xa]
lsls r0, r0, #2
add r0, r8
ldrb r0, [r0, #1]
strb r0, [r7, #0x1d]
ldrb r0, [r7, #0xa]
lsls r0, r0, #2
add r0, r8
ldrb r0, [r0, #2]
strb r0, [r7, #0x1c]
movs r2, #0
movs r0, #0x80
strh r0, [r7, #0x24]
ldr r0, _08084E4C @ =gPlayerEntity
adds r0, #0x38
ldrb r0, [r0]
adds r6, r7, #0
adds r6, #0x38
strb r0, [r6]
adds r1, r7, #0
adds r1, #0x45
movs r0, #1
strb r0, [r1]
subs r1, #9
movs r0, #7
strb r0, [r1]
adds r1, #3
movs r0, #0x6e
strb r0, [r1]
subs r1, #4
movs r0, #4
strb r0, [r1]
ldr r0, _08084E50 @ =gUnk_081205B4
str r0, [r7, #0x48]
adds r0, r7, #0
adds r0, #0x72
strb r2, [r0]
movs r1, #0x2e
ldrsh r0, [r7, r1]
ldr r4, _08084E54 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r5
movs r2, #0x32
ldrsh r1, [r7, r2]
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r5
lsls r1, r1, #6
orrs r0, r1
ldrb r1, [r6]
bl GetTileIndex
adds r1, r7, #0
adds r1, #0x70
strh r0, [r1]
ldr r0, _08084E58 @ =0x00004022
movs r3, #0x2e
ldrsh r1, [r7, r3]
ldrh r2, [r4, #6]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r5
movs r3, #0x32
ldrsh r2, [r7, r3]
ldrh r3, [r4, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r5
lsls r2, r2, #6
orrs r1, r2
ldrb r2, [r6]
bl SetTile
ldrb r0, [r7, #0xa]
lsls r0, r0, #2
add r0, r8
ldrb r1, [r0]
adds r0, r7, #0
bl InitializeAnimation
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08084E48: .4byte gUnk_08120588
_08084E4C: .4byte gPlayerEntity
_08084E50: .4byte gUnk_081205B4
_08084E54: .4byte gRoomControls
_08084E58: .4byte 0x00004022
thumb_func_start sub_08084E5C
sub_08084E5C: @ 0x08084E5C
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _08084EAC @ =gPlayerState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _08084E7A
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0x13
beq _08084EA8
_08084E7A:
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08084EB0 @ =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
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_0807BA8C
bl DeleteThisEntity
_08084EA8:
pop {r4, r5, pc}
.align 2, 0
_08084EAC: .4byte gPlayerState
_08084EB0: .4byte gRoomControls
thumb_func_start sub_08084EB4
sub_08084EB4: @ 0x08084EB4
push {lr}
ldr r2, _08084EC8 @ =gUnk_0812059C
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08084EC8: .4byte gUnk_0812059C
thumb_func_start sub_08084ECC
sub_08084ECC: @ 0x08084ECC
push {lr}
movs r1, #1
strb r1, [r0, #0xd]
bl sub_08084ED8
pop {pc}
thumb_func_start sub_08084ED8
sub_08084ED8: @ 0x08084ED8
push {r4, lr}
adds r4, r0, #0
bl sub_08084E5C
adds r0, r4, #0
bl sub_0806F4E8
ldrb r0, [r4, #0x1d]
cmp r0, #0
beq _08084EFA
subs r0, #1
strb r0, [r4, #0x1d]
lsls r0, r0, #0x18
cmp r0, #0
bne _08084EFA
movs r0, #2
strb r0, [r4, #0xd]
_08084EFA:
pop {r4, pc}
thumb_func_start sub_08084EFC
sub_08084EFC: @ 0x08084EFC
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r2, r5, #0
adds r2, #0x72
ldrb r1, [r2]
cmp r1, #0
bne _08084F42
movs r0, #1
strb r0, [r2]
adds r0, r5, #0
adds r0, #0x62
strb r1, [r0]
adds r0, #0xe
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08084F7C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0807B9B8
_08084F42:
ldr r0, _08084F80 @ =gPlayerState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _08084F5C
adds r0, r5, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0x13
beq _08084F62
_08084F5C:
adds r0, r5, #0
bl sub_08084F8C
_08084F62:
adds r0, r5, #0
bl sub_0806F3E4
cmp r0, #0
beq _08084F7A
ldrb r1, [r5, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _08084F7A
bl DeleteThisEntity
_08084F7A:
pop {r4, r5, r6, pc}
.align 2, 0
_08084F7C: .4byte gRoomControls
_08084F80: .4byte gPlayerState
thumb_func_start sub_08084F84
sub_08084F84: @ 0x08084F84
bx lr
.align 2, 0
thumb_func_start sub_08084F88
sub_08084F88: @ 0x08084F88
bx lr
.align 2, 0
thumb_func_start sub_08084F8C
sub_08084F8C: @ 0x08084F8C
push {lr}
ldrb r1, [r0, #0xb]
cmp r1, #0xf
beq _08084FA4
cmp r1, #0xf
bgt _08084F9E
cmp r1, #0
beq _08084FB8
b _08084FAE
_08084F9E:
cmp r1, #0xff
bne _08084FAE
b _08084FB8
_08084FA4:
ldrb r1, [r0, #0xe]
movs r2, #0x80
bl CreateFx
b _08084FB8
_08084FAE:
ldrb r1, [r0, #0xb]
ldrb r2, [r0, #0xe]
movs r3, #0
bl CreateObjectWithParent
_08084FB8:
bl DeleteThisEntity
pop {pc}
.align 2, 0
-249
View File
@@ -1,249 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object12
Object12: @ 0x08084FC0
push {lr}
ldr r2, _08084FD4 @ =gUnk_081205BC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08084FD4: .4byte gUnk_081205BC
thumb_func_start sub_08084FD8
sub_08084FD8: @ 0x08084FD8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0808500C
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _08084FF4
bl DeleteThisEntity
_08084FF4:
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_080850FC
b _0808501C
_0808500C:
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0xf0
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
movs r0, #0x18
strb r0, [r4, #0x15]
_0808501C:
movs r0, #0
strb r0, [r4, #0x1e]
pop {r4, pc}
.align 2, 0
thumb_func_start nullsub_115
nullsub_115: @ 0x08085024
bx lr
.align 2, 0
thumb_func_start sub_08085028
sub_08085028: @ 0x08085028
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080850A6
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x63
movs r0, #4
strb r0, [r1]
ldr r0, _080850A8 @ =gScreen
mov ip, r0
ldrh r1, [r0]
movs r2, #0x80
lsls r2, r2, #6
adds r0, r2, #0
orrs r0, r1
mov r1, ip
strh r0, [r1]
adds r1, #0x60
movs r0, #0x1f
strh r0, [r1]
adds r1, #2
movs r0, #0xf
strh r0, [r1]
movs r2, #0x2e
ldrsh r0, [r4, r2]
ldr r3, _080850AC @ =gRoomControls
movs r2, #0xa
ldrsh r1, [r3, r2]
subs r0, r0, r1
adds r1, r0, #0
subs r1, #0x18
movs r2, #0xff
ands r1, r2
lsls r1, r1, #8
adds r0, #0x18
ands r0, r2
orrs r1, r0
mov r0, ip
adds r0, #0x58
strh r1, [r0]
movs r1, #0x32
ldrsh r0, [r4, r1]
movs r4, #0xc
ldrsh r1, [r3, r4]
subs r0, r0, r1
adds r1, r0, #0
subs r1, #0x18
ands r1, r2
lsls r1, r1, #8
adds r0, #0x18
ands r0, r2
orrs r1, r0
mov r0, ip
adds r0, #0x5c
strh r1, [r0]
_080850A6:
pop {r4, pc}
.align 2, 0
_080850A8: .4byte gScreen
_080850AC: .4byte gRoomControls
thumb_func_start sub_080850B0
sub_080850B0: @ 0x080850B0
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080850C8
movs r0, #4
strb r0, [r1, #0xc]
movs r0, #0x60
strb r0, [r1, #0xe]
_080850C8:
pop {pc}
.align 2, 0
thumb_func_start sub_080850CC
sub_080850CC: @ 0x080850CC
push {r4, lr}
adds r4, r0, #0
bl LinearMoveUpdate
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080850F0
ldr r2, _080850F4 @ =gScreen
ldrh r1, [r2]
ldr r0, _080850F8 @ =0x0000DFFF
ands r0, r1
strh r0, [r2]
adds r0, r4, #0
bl DeleteEntity
_080850F0:
pop {r4, pc}
.align 2, 0
_080850F4: .4byte gScreen
_080850F8: .4byte 0x0000DFFF
thumb_func_start sub_080850FC
sub_080850FC: @ 0x080850FC
push {r4, r5, r6, lr}
movs r1, #0x2e
ldrsh r4, [r0, r1]
ldr r2, _0808518C @ =gRoomControls
ldrh r1, [r2, #6]
subs r4, r4, r1
asrs r4, r4, #4
movs r3, #0x3f
ands r4, r3
movs r5, #0x32
ldrsh r1, [r0, r5]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r4, r1
adds r0, #0x38
ldrb r6, [r0]
ldr r5, _08085190 @ =0x0000403D
adds r1, r4, #0
subs r1, #0x41
adds r0, r5, #0
adds r2, r6, #0
bl SetTile
adds r1, r4, #0
subs r1, #0x40
adds r0, r5, #0
adds r2, r6, #0
bl SetTile
adds r1, r4, #0
subs r1, #0x3f
adds r0, r5, #0
adds r2, r6, #0
bl SetTile
subs r1, r4, #1
adds r0, r5, #0
adds r2, r6, #0
bl SetTile
adds r0, r5, #0
adds r1, r4, #0
adds r2, r6, #0
bl SetTile
adds r1, r4, #1
adds r0, r5, #0
adds r2, r6, #0
bl SetTile
adds r1, r4, #0
adds r1, #0x3f
adds r0, r5, #0
adds r2, r6, #0
bl SetTile
adds r1, r4, #0
adds r1, #0x40
adds r0, r5, #0
adds r2, r6, #0
bl SetTile
adds r4, #0x41
adds r0, r5, #0
adds r1, r4, #0
adds r2, r6, #0
bl SetTile
pop {r4, r5, r6, pc}
.align 2, 0
_0808518C: .4byte gRoomControls
_08085190: .4byte 0x0000403D
-224
View File
@@ -1,224 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object1E
Object1E: @ 0x08087504
push {r4, lr}
adds r4, r0, #0
bl EntityIsDeleted
cmp r0, #0
bne _08087520
ldr r0, _08087524 @ =gUnk_081208B8
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_08087520:
pop {r4, pc}
.align 2, 0
_08087524: .4byte gUnk_081208B8
thumb_func_start sub_08087528
sub_08087528: @ 0x08087528
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, _08087590 @ =gPlayerEntity
ldrb r0, [r0, #0x14]
lsrs r0, r0, #1
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x19]
movs r2, #0x3f
adds r0, r2, #0
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
adds r3, r4, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r3]
ldrb r1, [r4, #0x1b]
lsrs r0, r1, #6
subs r0, #1
lsls r0, r0, #6
ands r2, r1
orrs r2, r0
strb r2, [r4, #0x1b]
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _08087594
ldrb r1, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r0, [r4, #0x14]
cmp r0, #1
bne _08087588
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_08087588:
adds r0, r4, #0
bl sub_08087640
b _080875DC
.align 2, 0
_08087590: .4byte gPlayerEntity
_08087594:
ldr r0, _080875B4 @ =gArea
ldrb r0, [r0, #1]
movs r1, #4
cmp r0, #0x10
bne _080875A2
movs r1, #0xb5
lsls r1, r1, #1
_080875A2:
adds r0, r4, #0
bl ChangeObjPalette
ldrb r0, [r4, #0x14]
cmp r0, #1
beq _080875B8
cmp r0, #3
bne _080875CE
b _080875C0
.align 2, 0
_080875B4: .4byte gArea
_080875B8:
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_080875C0:
ldrb r0, [r4, #0xa]
cmp r0, #0x40
bne _080875DC
ldrh r0, [r4, #0x32]
adds r0, #4
strh r0, [r4, #0x32]
b _080875DC
_080875CE:
ldrb r0, [r4, #0xa]
cmp r0, #0x40
bne _080875DC
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_080875DC:
adds r0, r4, #0
movs r1, #3
bl SetDefaultPriority
ldrb r1, [r4, #0xb]
lsls r1, r1, #2
ldrb r0, [r4, #0x14]
adds r1, r1, r0
adds r0, r4, #0
bl InitializeAnimation
pop {r4, pc}
thumb_func_start sub_080875F4
sub_080875F4: @ 0x080875F4
push {r4, r5, lr}
adds r4, r0, #0
bl GetNextFrame
adds r5, r4, #0
adds r5, #0x5a
ldrb r1, [r5]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808760E
bl DeleteThisEntity
_0808760E:
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _08087638
ldr r0, _0808763C @ =gPlayerEntity
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
ldrb r0, [r5]
subs r0, #1
subs r1, r1, r0
adds r3, r4, #0
adds r3, #0x29
movs r0, #7
ands r1, r0
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_08087638:
pop {r4, r5, pc}
.align 2, 0
_0808763C: .4byte gPlayerEntity
thumb_func_start sub_08087640
sub_08087640: @ 0x08087640
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #0x2e
ldrsh r5, [r4, r0]
movs r1, #0x32
ldrsh r6, [r4, r1]
ldrb r1, [r4, #0x14]
lsls r1, r1, #1
ldr r0, _08087684 @ =gUnk_081208C0
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r2, [r4, #0x2e]
adds r0, r0, r2
strh r0, [r4, #0x2e]
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
ldr r0, _08087688 @ =gRoomControls
ldrh r1, [r0, #4]
ldr r0, _0808768C @ =0x00000403
.ifdef EU
movs r2, #0x17
.else
movs r2, #0x16
.endif
cmp r1, r0
bne _08087676
.ifdef EU
movs r2, #0x18
.else
movs r2, #0x17
.endif
_08087676:
adds r0, r4, #0
adds r1, r2, #0
bl CreateRandomItemDrop
strh r5, [r4, #0x2e]
strh r6, [r4, #0x32]
pop {r4, r5, r6, pc}
.align 2, 0
_08087684: .4byte gUnk_081208C0
_08087688: .4byte gRoomControls
_0808768C: .4byte 0x00000403
-212
View File
@@ -1,212 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object20
Object20: @ 0x0808780C
push {lr}
ldr r2, _08087820 @ =gUnk_08120A28
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08087820: .4byte gUnk_08120A28
thumb_func_start sub_08087824
sub_08087824: @ 0x08087824
push {r4, lr}
adds r4, r0, #0
adds r0, #0x38
ldrb r0, [r0]
cmp r0, #0
bne _08087836
adds r0, r4, #0
bl ResolveCollisionLayer
_08087836:
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #0x13
strb r0, [r1]
adds r1, #9
movs r0, #0xff
strb r0, [r1]
subs r1, #6
movs r0, #0xa9
strb r0, [r1]
adds r1, #1
movs r0, #0x16
strb r0, [r1]
ldr r0, _08087884 @ =gUnk_08120A54
ldr r0, [r0]
str r0, [r4, #0x48]
subs r1, #5
movs r0, #0x8b
strb r0, [r1]
adds r0, r4, #0
bl sub_080878CC
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
adds r0, r4, #0
bl sub_0801766C
movs r0, #0xfd
bl EnqueueSFX
pop {r4, pc}
.align 2, 0
_08087884: .4byte gUnk_08120A54
thumb_func_start sub_08087888
sub_08087888: @ 0x08087888
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080878A4
bl DeleteThisEntity
b _080878C8
_080878A4:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #4
bhi _080878C0
ldr r0, _080878BC @ =gUnk_08120A54
ldrb r1, [r2]
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, [r1]
str r0, [r4, #0x48]
b _080878C8
.align 2, 0
_080878BC: .4byte gUnk_08120A54
_080878C0:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
_080878C8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080878CC
sub_080878CC: @ 0x080878CC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x10
adds r7, r0, #0
movs r1, #0x2e
ldrsh r0, [r7, r1]
str r0, [sp]
movs r0, #0x32
ldrsh r2, [r7, r0]
str r2, [sp, #4]
adds r0, r7, #0
adds r0, #0x38
ldrb r0, [r0]
mov r8, r0
movs r0, #0x10
rsbs r0, r0, #0
mov r1, r8
lsls r1, r1, #0x18
str r1, [sp, #8]
_080878F8:
movs r2, #0x10
rsbs r2, r2, #0
mov sb, r2
ldr r1, [sp]
adds r1, r1, r0
mov sl, r1
adds r0, #0x10
str r0, [sp, #0xc]
mov r6, sl
_0808790A:
ldr r2, _0808795C @ =gRoomControls
ldrh r0, [r2, #6]
subs r0, r6, r0
lsrs r4, r0, #4
movs r0, #0x3f
ands r4, r0
ldr r5, [sp, #4]
add r5, sb
ldrh r0, [r2, #8]
subs r0, r5, r0
lsrs r0, r0, #4
movs r1, #0x3f
ands r0, r1
lsls r0, r0, #6
orrs r4, r0
adds r0, r4, #0
ldr r2, [sp, #8]
lsrs r1, r2, #0x18
bl sub_080B1AE0
cmp r0, #0x2e
bne _08087970
adds r0, r4, #0
mov r1, r8
bl GetTileType
adds r1, r0, #0
movs r0, #0xda
lsls r0, r0, #2
cmp r1, r0
bhi _08087960
subs r0, #1
cmp r1, r0
blo _08087960
adds r0, r7, #0
movs r1, #3
adds r2, r6, #0
adds r3, r5, #0
bl sub_08008796
b _0808797C
.align 2, 0
_0808795C: .4byte gRoomControls
_08087960:
ldr r0, _0808796C @ =0x00004022
adds r1, r4, #0
mov r2, r8
bl SetTile
b _0808797C
.align 2, 0
_0808796C: .4byte 0x00004022
_08087970:
adds r0, r7, #0
movs r1, #3
mov r2, sl
adds r3, r5, #0
bl sub_08008796
_0808797C:
movs r0, #0x10
add sb, r0
mov r1, sb
cmp r1, #0x10
ble _0808790A
ldr r0, [sp, #0xc]
cmp r0, #0x10
ble _080878F8
add sp, #0x10
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
-288
View File
@@ -1,288 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object21
Object21: @ 0x08087998
push {r4, lr}
adds r4, r0, #0
ldr r0, _080879C0 @ =gUnk_08120A68
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080879C4
subs r0, #1
strb r0, [r4, #0xe]
b _080879EA
.align 2, 0
_080879C0: .4byte gUnk_08120A68
_080879C4:
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0xa
bne _080879D8
adds r0, r4, #0
movs r1, #0xd
bl InitializeAnimation
b _080879EA
_080879D8:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080879EA
bl DeleteThisEntity
_080879EA:
movs r1, #0x24
ldrsh r0, [r4, r1]
cmp r0, #0
beq _08087A0C
adds r0, r4, #0
bl LinearMoveUpdate
ldrh r1, [r4, #0x24]
movs r2, #0x24
ldrsh r0, [r4, r2]
cmp r0, #0x10
ble _08087A08
adds r0, r1, #0
subs r0, #0x10
b _08087A0A
_08087A08:
movs r0, #0
_08087A0A:
strh r0, [r4, #0x24]
_08087A0C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08087A10
sub_08087A10: @ 0x08087A10
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _08087A26
adds r0, r4, #0
movs r1, #3
bl ChangeObjPalette
_08087A26:
ldrb r0, [r4, #0xa]
cmp r0, #2
bls _08087A3C
ldr r0, _08087A4C @ =gUnk_08120A78
ldrb r1, [r4, #0xa]
subs r1, #3
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
bl ChangeObjPalette
_08087A3C:
ldrb r0, [r4, #0xa]
cmp r0, #4
bhi _08087AF0
lsls r0, r0, #2
ldr r1, _08087A50 @ =_08087A54
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08087A4C: .4byte gUnk_08120A78
_08087A50: .4byte _08087A54
_08087A54: @ jump table
.4byte _08087A76 @ case 0
.4byte _08087AF0 @ case 1
.4byte _08087AA0 @ case 2
.4byte _08087A76 @ case 3
.4byte _08087A68 @ case 4
_08087A68:
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
_08087A76:
ldrb r1, [r4, #0x10]
movs r0, #0x80
movs r2, #0
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x45
movs r0, #1
strb r0, [r1]
subs r1, #9
movs r0, #7
strb r0, [r1]
adds r1, #3
movs r0, #0xaa
strb r0, [r1]
subs r1, #4
movs r0, #0xe
strb r0, [r1]
ldr r0, _08087AE4 @ =gUnk_08120A8C
str r0, [r4, #0x48]
strb r2, [r4, #0x1c]
_08087AA0:
bl Random
ldr r2, _08087AE8 @ =gUnk_08120A7A
movs r3, #3
adds r1, r0, #0
ands r1, r3
adds r1, r1, r2
ldrb r1, [r1]
strb r1, [r4, #0xe]
lsrs r2, r0, #8
ands r2, r3
movs r1, #0x10
ands r1, r0
cmp r1, #0
beq _08087AC0
rsbs r2, r2, #0
_08087AC0:
ldrh r0, [r4, #0x2e]
adds r0, r0, r2
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x32]
adds r0, r0, r2
strh r0, [r4, #0x32]
ldr r0, _08087AEC @ =gPlayerEntity
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r4, #0
movs r1, #0xa
bl InitializeAnimation
b _08087AF8
.align 2, 0
_08087AE4: .4byte gUnk_08120A8C
_08087AE8: .4byte gUnk_08120A7A
_08087AEC: .4byte gPlayerEntity
_08087AF0:
adds r0, r4, #0
movs r1, #0x10
bl InitializeAnimation
_08087AF8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08087AFC
sub_08087AFC: @ 0x08087AFC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08087B56
movs r0, #0x7f
ands r0, r1
cmp r0, #0x16
beq _08087B3C
cmp r0, #0x16
bgt _08087B1E
cmp r0, #0x13
beq _08087B4E
b _08087B56
_08087B1E:
cmp r0, #0x1c
bgt _08087B56
cmp r0, #0x1b
blt _08087B56
ldr r1, [r4, #0x4c]
adds r0, r1, #0
adds r0, #0x84
ldr r0, [r0]
adds r1, #0x80
ldr r1, [r1]
ldr r2, [r4, #0x2c]
ldr r3, [r4, #0x30]
bl CalculateDirectionTo
b _08087B44
_08087B3C:
ldr r0, [r4, #0x4c]
adds r1, r4, #0
bl GetFacingDirection
_08087B44:
strb r0, [r4, #0x15]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
b _08087B56
_08087B4E:
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_08087B56:
pop {r4, pc}
thumb_func_start sub_08087B58
sub_08087B58: @ 0x08087B58
push {lr}
adds r2, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08087B80
ldr r0, _08087B7C @ =gUnk_08120A80
ldrb r1, [r2, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _08087B84
.align 2, 0
_08087B7C: .4byte gUnk_08120A80
_08087B80:
movs r0, #1
strb r0, [r2, #0xc]
_08087B84:
pop {pc}
.align 2, 0
thumb_func_start sub_08087B88
sub_08087B88: @ 0x08087B88
adds r2, r0, #0
adds r2, #0x46
movs r1, #0x80
lsls r1, r1, #1
strh r1, [r2]
movs r1, #1
strb r1, [r0, #0xd]
strb r1, [r0, #0x1d]
bx lr
.align 2, 0
thumb_func_start sub_08087B9C
sub_08087B9C: @ 0x08087B9C
push {lr}
bl sub_0806F3E4
cmp r0, #0
beq _08087BAA
bl DeleteThisEntity
_08087BAA:
pop {pc}
-207
View File
@@ -1,207 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object30
Object30: @ 0x0808A850
push {r4, lr}
adds r4, r0, #0
ldr r1, _0808A86C @ =gUnk_08121188
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08080CB4
pop {r4, pc}
.align 2, 0
_0808A86C: .4byte gUnk_08121188
thumb_func_start sub_0808A870
sub_0808A870: @ 0x0808A870
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #1
beq _0808A8BE
cmp r0, #1
bgt _0808A884
cmp r0, #0
beq _0808A896
b _0808A8C4
_0808A884:
cmp r0, #3
bgt _0808A8C4
adds r0, r5, #0
bl sub_0808A968
adds r0, r5, #0
bl sub_0808A8E0
b _0808A8C4
_0808A896:
adds r0, r5, #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, #0x6c]
ldrh r1, [r4]
adds r0, r5, #0
adds r0, #0x68
strh r1, [r0]
movs r0, #1
strb r0, [r5, #0xc]
b _0808A8C4
_0808A8BE:
adds r0, r5, #0
bl sub_0808A968
_0808A8C4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0808A8C8
sub_0808A8C8: @ 0x0808A8C8
push {lr}
adds r2, r0, #0
adds r0, #0x68
ldr r1, [r2, #0x6c]
ldrh r0, [r0]
ldrh r1, [r1]
cmp r0, r1
beq _0808A8DE
adds r0, r2, #0
bl sub_0808A968
_0808A8DE:
pop {pc}
thumb_func_start sub_0808A8E0
sub_0808A8E0: @ 0x0808A8E0
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xa]
cmp r2, #0
beq _0808A8F0
cmp r2, #1
beq _0808A930
b _0808A954
_0808A8F0:
ldr r0, [r4, #0x70]
cmp r0, #0
beq _0808A930
ldr r3, [r4, #0x20]
cmp r3, #0
bge _0808A926
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #8
rsbs r0, r0, #0
cmp r1, r0
ble _0808A90C
str r2, [r4, #0x70]
b _0808A926
_0808A90C:
ldr r0, _0808A918 @ =0xFFFFC000
cmp r3, r0
bge _0808A920
ldr r0, _0808A91C @ =0xFFFFFC00
b _0808A924
.align 2, 0
_0808A918: .4byte 0xFFFFC000
_0808A91C: .4byte 0xFFFFFC00
_0808A920:
movs r0, #0x80
lsls r0, r0, #3
_0808A924:
str r0, [r4, #0x70]
_0808A926:
ldr r1, [r4, #0x70]
adds r0, r4, #0
bl GravityUpdate
b _0808A962
_0808A930:
ldr r2, _0808A964 @ =gUnk_08121194
ldrb r0, [r4, #0xf]
adds r1, r0, #1
strb r1, [r4, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x1b
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
strh r0, [r4, #0x36]
adds r0, r4, #0
bl IsCollidingPlayer
cmp r0, #0
beq _0808A962
_0808A954:
ldrb r1, [r4, #0xb]
movs r0, #0x5c
movs r2, #0
bl CreateItemEntity
bl DeleteThisEntity
_0808A962:
pop {r4, pc}
.align 2, 0
_0808A964: .4byte gUnk_08121194
thumb_func_start sub_0808A968
sub_0808A968: @ 0x0808A968
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #0x22
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #0xa0
lsls r0, r0, #0xa
str r0, [r4, #0x20]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x18
orrs r0, r1
strb r0, [r2]
ldrb r1, [r4, #0x18]
movs r0, #0x31
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r2, #0x13
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
ldr r0, _0808A9C0 @ =gUnk_08121C58
str r0, [r4, #0x48]
adds r0, r4, #0
movs r1, #2
bl SetDefaultPriority
movs r0, #0xa0
lsls r0, r0, #6
str r0, [r4, #0x70]
pop {r4, pc}
.align 2, 0
_0808A9C0: .4byte gUnk_08121C58
-345
View File
@@ -1,345 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object3A
Object3A: @ 0x0808C69C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #0
bne _0808C6BC
ldr r0, _0808C6B8 @ =gUnk_08121638
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _0808C6CC
.align 2, 0
_0808C6B8: .4byte gUnk_08121638
_0808C6BC:
ldr r0, _0808C6D0 @ =gUnk_08121640
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
_0808C6CC:
pop {pc}
.align 2, 0
_0808C6D0: .4byte gUnk_08121640
thumb_func_start sub_0808C6D4
sub_0808C6D4: @ 0x0808C6D4
push {r4, r5, lr}
adds r5, r0, #0
ldrb r1, [r5, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _0808C744 @ =gUnk_081215E8
adds r4, r0, r1
ldrh r0, [r4, #4]
adds r1, r5, #0
adds r1, #0x86
strh r0, [r1]
ldrh r0, [r4, #6]
subs r1, #1
strb r0, [r1]
ldrh r1, [r4, #8]
adds r0, r5, #0
adds r0, #0x84
strb r1, [r0]
ldrh r0, [r4, #0xa]
adds r1, r5, #0
adds r1, #0x83
strb r0, [r1]
ldrh r0, [r4, #0xc]
subs r1, #1
strb r0, [r1]
ldrh r0, [r4, #0xe]
subs r1, #1
strb r0, [r1]
ldr r0, _0808C748 @ =gScreen
adds r0, #0x60
ldrh r1, [r0]
movs r0, #0xff
lsls r0, r0, #8
ands r0, r1
ldrh r1, [r4, #0x10]
orrs r0, r1
ldrh r1, [r4, #0x12]
bl sub_0801E1B8
movs r0, #1
strb r0, [r5, #0xc]
adds r0, r5, #0
bl sub_0808C74C
ldrh r2, [r4]
movs r0, #0x3a
movs r1, #1
bl CreateObject
cmp r0, #0
beq _0808C742
ldrh r1, [r4, #2]
adds r0, #0x6a
strh r1, [r0]
_0808C742:
pop {r4, r5, pc}
.align 2, 0
_0808C744: .4byte gUnk_081215E8
_0808C748: .4byte gScreen
thumb_func_start sub_0808C74C
sub_0808C74C: @ 0x0808C74C
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r3, [r4, #0x50]
cmp r3, #0
beq _0808C76C
ldr r2, _0808C768 @ =gRoomControls
ldrh r0, [r3, #0x2e]
ldrh r1, [r2, #0xa]
subs r0, r0, r1
strh r0, [r4, #0x2e]
ldrh r0, [r3, #0x32]
ldrh r1, [r2, #0xc]
subs r0, r0, r1
b _0808C772
.align 2, 0
_0808C768: .4byte gRoomControls
_0808C76C:
movs r0, #0x78
strh r0, [r4, #0x2e]
movs r0, #0x50
_0808C772:
strh r0, [r4, #0x32]
adds r5, r4, #0
adds r5, #0x86
movs r1, #0
ldrsh r0, [r5, r1]
cmp r0, #0
bge _0808C79C
movs r2, #0x2e
ldrsh r0, [r4, r2]
movs r3, #0x32
ldrsh r1, [r4, r3]
movs r2, #0
movs r3, #0
bl sub_0801E49C
ldr r1, _0808C83C @ =gUnk_02036BB8
movs r0, #1
str r0, [r1]
adds r0, r4, #0
bl sub_0808C840
_0808C79C:
movs r6, #0
ldrsh r0, [r5, r6]
movs r2, #0xfa
lsls r2, r2, #1
cmp r0, r2
ble _0808C7C2
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r3, #0x32
ldrsh r1, [r4, r3]
movs r3, #0
bl sub_0801E49C
ldr r1, _0808C83C @ =gUnk_02036BB8
movs r0, #1
str r0, [r1]
adds r0, r4, #0
bl sub_0808C840
_0808C7C2:
adds r1, r4, #0
adds r1, #0x85
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r6, [r5]
adds r0, r0, r6
strh r0, [r5]
adds r0, r4, #0
adds r0, #0x84
ldrb r0, [r0]
ldrb r2, [r1]
adds r0, r0, r2
strb r0, [r1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x10
ble _0808C7E8
movs r0, #0x10
strb r0, [r1]
_0808C7E8:
movs r0, #0
ldrsb r0, [r1, r0]
movs r2, #0x10
rsbs r2, r2, #0
cmp r0, r2
bge _0808C7F6
strb r2, [r1]
_0808C7F6:
adds r3, r4, #0
adds r3, #0x83
adds r1, r4, #0
adds r1, #0x82
ldrb r0, [r1]
ldrb r6, [r3]
adds r0, r0, r6
strb r0, [r3]
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
ldrb r6, [r1]
adds r0, r0, r6
strb r0, [r1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x10
ble _0808C81E
movs r0, #0x10
strb r0, [r1]
_0808C81E:
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, r2
bge _0808C828
strb r2, [r1]
_0808C828:
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
movs r4, #0
ldrsh r2, [r5, r4]
ldrb r3, [r3]
bl sub_0801E49C
pop {r4, r5, r6, pc}
.align 2, 0
_0808C83C: .4byte gUnk_02036BB8
thumb_func_start sub_0808C840
sub_0808C840: @ 0x0808C840
push {lr}
ldr r0, _0808C854 @ =gScreen
adds r0, #0x66
movs r1, #0
strh r1, [r0]
bl sub_0801E104
bl DeleteThisEntity
pop {pc}
.align 2, 0
_0808C854: .4byte gScreen
thumb_func_start sub_0808C858
sub_0808C858: @ 0x0808C858
push {lr}
adds r2, r0, #0
ldrb r1, [r2, #0xb]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0808C878
ldr r1, _0808C870 @ =gScreen
adds r3, r1, #0
adds r3, #0x66
ldr r0, _0808C874 @ =0x00003FBF
b _0808C880
.align 2, 0
_0808C870: .4byte gScreen
_0808C874: .4byte 0x00003FBF
_0808C878:
ldr r1, _0808C898 @ =gScreen
adds r3, r1, #0
adds r3, #0x66
ldr r0, _0808C89C @ =0x00003FFF
_0808C880:
strh r0, [r3]
adds r3, r1, #0
ldrb r1, [r2, #0xb]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0808C8A0
adds r1, r3, #0
adds r1, #0x6a
movs r0, #0
b _0808C8A6
.align 2, 0
_0808C898: .4byte gScreen
_0808C89C: .4byte 0x00003FFF
_0808C8A0:
adds r1, r3, #0
adds r1, #0x6a
movs r0, #0x10
_0808C8A6:
strh r0, [r1]
movs r0, #1
strb r0, [r2, #0xc]
adds r1, r2, #0
adds r1, #0x68
adds r0, #0xff
strh r0, [r1]
pop {pc}
.align 2, 0
thumb_func_start sub_0808C8B8
sub_0808C8B8: @ 0x0808C8B8
push {lr}
adds r3, r0, #0
adds r2, r3, #0
adds r2, #0x68
adds r1, r3, #0
adds r1, #0x6a
ldrh r0, [r2]
ldrh r1, [r1]
subs r0, r0, r1
strh r0, [r2]
lsls r0, r0, #0x10
cmp r0, #0
bge _0808C8D6
movs r0, #0
strh r0, [r2]
_0808C8D6:
ldrb r1, [r3, #0xb]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0808C8F8
ldr r0, _0808C8F4 @ =gScreen
ldrh r1, [r2]
lsls r1, r1, #0x10
asrs r1, r1, #0x14
movs r2, #0x10
subs r2, r2, r1
adds r0, #0x6a
strh r2, [r0]
b _0808C904
.align 2, 0
_0808C8F4: .4byte gScreen
_0808C8F8:
ldr r1, _0808C918 @ =gScreen
ldrh r0, [r2]
lsls r0, r0, #0x10
asrs r0, r0, #0x14
adds r1, #0x6a
strh r0, [r1]
_0808C904:
adds r0, r3, #0
adds r0, #0x68
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bne _0808C914
bl DeleteThisEntity
_0808C914:
pop {pc}
.align 2, 0
_0808C918: .4byte gScreen
-245
View File
@@ -1,245 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object3D
Object3D: @ 0x0808CEF0
push {lr}
ldr r2, _0808CF04 @ =gUnk_081216BC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808CF04: .4byte gUnk_081216BC
thumb_func_start sub_0808CF08
sub_0808CF08: @ 0x0808CF08
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldr r2, _0808CF50 @ =gArea
ldr r3, _0808CF54 @ =gRoomControls
ldrh r0, [r2, #0x12]
ldrh r1, [r3, #0xa]
subs r0, r0, r1
strh r0, [r4, #0x2e]
ldrh r0, [r2, #0x14]
ldrh r1, [r3, #0xc]
subs r0, r0, r1
strh r0, [r4, #0x32]
adds r5, r4, #0
adds r5, #0x68
movs r0, #0x80
strh r0, [r5]
ldrb r1, [r4, #0x11]
subs r0, #0x90
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r4, #0x11]
ldr r0, _0808CF58 @ =0x00001F17
movs r1, #0
bl sub_0801E1B8
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
ldrh r2, [r5]
bl sub_0801E1EC
pop {r4, r5, pc}
.align 2, 0
_0808CF50: .4byte gArea
_0808CF54: .4byte gRoomControls
_0808CF58: .4byte 0x00001F17
thumb_func_start sub_0808CF5C
sub_0808CF5C: @ 0x0808CF5C
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r2, r5, #0
adds r2, #0x68
ldrh r0, [r2]
subs r0, #2
strh r0, [r2]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x14
bls _0808CF82
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r3, #0x32
ldrsh r1, [r5, r3]
ldrh r2, [r2]
bl sub_0801E1EC
b _0808D01E
_0808CF82:
ldr r0, _0808D020 @ =gScreen
adds r0, #0x62
movs r1, #0x10
strh r1, [r0]
bl sub_0808D030
movs r0, #0
bl ResetPaletteTable
bl ResetPalettes
ldr r0, _0808D024 @ =gGFXSlots
movs r6, #1
strb r6, [r0]
ldrb r0, [r5, #0xa]
lsls r4, r0, #1
adds r4, r4, r0
lsls r4, r4, #1
ldr r0, _0808D028 @ =gUnk_081216C8
adds r4, r4, r0
ldrh r1, [r4]
adds r0, r5, #0
bl LoadFixedGFX
ldrh r1, [r4, #2]
adds r0, r5, #0
bl LoadObjPalette
ldrh r0, [r4, #4]
strh r0, [r5, #0x12]
ldrb r0, [r5, #0xa]
cmp r0, #2
bne _0808CFC6
strb r0, [r5, #0x1e]
_0808CFC6:
movs r2, #2
movs r0, #2
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x18]
subs r0, #6
ands r0, r1
orrs r0, r2
strb r0, [r5, #0x18]
ldrb r2, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r5, #0x19]
ands r1, r0
strb r1, [r5, #0x19]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
movs r0, #0x1e
strb r0, [r5, #0xe]
movs r0, #0xff
strb r0, [r5, #0xf]
ldrb r0, [r5, #0x19]
movs r1, #3
orrs r0, r1
strb r0, [r5, #0x19]
movs r2, #0x80
lsls r2, r2, #1
adds r0, r5, #0
adds r1, r2, #0
movs r3, #0
bl sub_0805EC9C
ldr r0, _0808D02C @ =gArea
strh r6, [r0, #0x10]
movs r0, #5
movs r1, #8
bl SetFade
_0808D01E:
pop {r4, r5, r6, pc}
.align 2, 0
_0808D020: .4byte gScreen
_0808D024: .4byte gGFXSlots
_0808D028: .4byte gUnk_081216C8
_0808D02C: .4byte gArea
thumb_func_start sub_0808D030
sub_0808D030: @ 0x0808D030
push {r4, r5, lr}
ldr r4, _0808D058 @ =gUnk_03000020
movs r5, #0x80
adds r0, r4, #0
subs r0, #0x20
ldr r1, _0808D05C @ =0x00000B74
bl MemClear
movs r1, #0xa8
lsls r1, r1, #2
adds r0, r1, #0
_0808D046:
strh r0, [r4]
adds r4, #8
subs r5, #1
cmp r5, #0
bne _0808D046
ldr r1, _0808D060 @ =gOAMControls
movs r0, #1
strb r0, [r1]
pop {r4, r5, pc}
.align 2, 0
_0808D058: .4byte gUnk_03000020
_0808D05C: .4byte 0x00000B74
_0808D060: .4byte gOAMControls
thumb_func_start sub_0808D064
sub_0808D064: @ 0x0808D064
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
adds r1, r0, #0
adds r1, #0xff
strb r1, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0
beq _0808D0B4
adds r0, r4, #0
adds r0, #0x68
ldrh r3, [r0]
adds r1, r3, #0
adds r2, r0, #0
cmp r1, #0
beq _0808D08C
subs r0, r3, #2
strh r0, [r2]
b _0808D08E
_0808D08C:
strh r1, [r2]
_0808D08E:
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r3, #0x32
ldrsh r1, [r4, r3]
ldrh r2, [r2]
bl sub_0801E1EC
ldrb r0, [r4, #0xf]
cmp r0, #0x80
bls _0808D0A6
subs r0, #8
strb r0, [r4, #0xf]
_0808D0A6:
ldrb r2, [r4, #0xf]
adds r0, r4, #0
adds r1, r2, #0
movs r3, #0
bl sub_0805EC9C
b _0808D0C2
_0808D0B4:
ldr r1, _0808D0C4 @ =gArea
ldrb r0, [r1, #0xe]
adds r0, #1
strb r0, [r1, #0xe]
strh r2, [r1, #0x10]
bl DeleteThisEntity
_0808D0C2:
pop {r4, pc}
.align 2, 0
_0808D0C4: .4byte gArea
-184
View File
@@ -1,184 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object42
Object42: @ 0x0808DD7C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #0
beq _0808DD9C
ldr r0, _0808DD98 @ =gUnk_081217B0
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _0808DDAC
.align 2, 0
_0808DD98: .4byte gUnk_081217B0
_0808DD9C:
ldr r0, _0808DDB0 @ =gUnk_081217A8
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
_0808DDAC:
pop {pc}
.align 2, 0
_0808DDB0: .4byte gUnk_081217A8
thumb_func_start sub_0808DDB4
sub_0808DDB4: @ 0x0808DDB4
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _0808DDDC
movs r0, #0x78
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x6c
movs r0, #0xf0
strh r0, [r1]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_0808DDE8
_0808DDDC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808DDE0
sub_0808DDE0: @ 0x0808DDE0
push {lr}
bl DeleteThisEntity
pop {pc}
thumb_func_start sub_0808DDE8
sub_0808DDE8: @ 0x0808DDE8
push {r4, r5, lr}
adds r5, r0, #0
adds r4, r5, #0
adds r4, #0x6c
ldrh r0, [r4]
subs r0, #1
strh r0, [r4]
bl sub_0807953C
cmp r0, #0
beq _0808DE04
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
_0808DE04:
ldrb r0, [r5, #0xf]
cmp r0, #0x1e
bhi _0808DE1C
ldr r0, _0808DE8C @ =gPlayerState
ldr r0, [r0, #0x30]
ldr r1, _0808DE90 @ =0x00001810
ands r0, r1
cmp r0, #0
bne _0808DE1C
ldrh r0, [r4]
cmp r0, #0
bne _0808DE2A
_0808DE1C:
ldr r0, _0808DE8C @ =gPlayerState
ldr r1, [r0, #0x30]
ldr r2, _0808DE94 @ =0xFFFFFBFF
ands r1, r2
str r1, [r0, #0x30]
bl DeleteThisEntity
_0808DE2A:
ldr r3, _0808DE98 @ =gPlayerEntity
ldr r1, _0808DE9C @ =gUnk_081217B8
ldrb r0, [r3, #0x14]
lsrs r0, r0, #1
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r3, #0x2e]
adds r0, r0, r1
strh r0, [r5, #0x2e]
ldrh r0, [r3, #0x32]
subs r0, #6
strh r0, [r5, #0x32]
ldr r0, [r3, #0x34]
str r0, [r5, #0x34]
adds r0, r3, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x38
strb r1, [r0]
ldrb r2, [r3, #0x19]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r4, [r5, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r4
orrs r0, r2
strb r0, [r5, #0x19]
ldrb r0, [r3, #0x1b]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r5, #0x1b]
ands r1, r2
orrs r1, r0
strb r1, [r5, #0x1b]
ldr r0, _0808DE8C @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
lsls r1, r1, #3
ands r0, r1
cmp r0, #0
beq _0808DEA0
adds r0, r5, #0
bl GetNextFrame
b _0808DEA4
.align 2, 0
_0808DE8C: .4byte gPlayerState
_0808DE90: .4byte 0x00001810
_0808DE94: .4byte 0xFFFFFBFF
_0808DE98: .4byte gPlayerEntity
_0808DE9C: .4byte gUnk_081217B8
_0808DEA0:
bl DeleteThisEntity
_0808DEA4:
ldr r1, _0808DEC0 @ =gPlayerEntity
ldrb r0, [r1, #0x14]
lsrs r0, r0, #1
cmp r0, #2
bne _0808DEC4
adds r0, r1, #0
movs r1, #3
adds r2, r5, #0
bl sub_0806FEBC
ldrh r0, [r5, #0x32]
subs r0, #5
strh r0, [r5, #0x32]
b _0808DECE
.align 2, 0
_0808DEC0: .4byte gPlayerEntity
_0808DEC4:
adds r0, r1, #0
movs r1, #0
adds r2, r5, #0
bl sub_0806FEBC
_0808DECE:
pop {r4, r5, pc}
-267
View File
@@ -1,267 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object4B
Object4B: @ 0x0808F77C
push {lr}
ldr r2, _0808F790 @ =gUnk_08121EB8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808F790: .4byte gUnk_08121EB8
thumb_func_start sub_0808F794
sub_0808F794: @ 0x0808F794
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
movs r1, #0x3c
strb r1, [r0, #0xe]
movs r1, #0
bl InitializeAnimation
pop {pc}
.align 2, 0
thumb_func_start sub_0808F7A8
sub_0808F7A8: @ 0x0808F7A8
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 _0808F7D0
movs r0, #0x78
strb r0, [r2, #0xe]
ldrb r0, [r2, #0xc]
adds r0, #1
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
_0808F7D0:
pop {pc}
.align 2, 0
thumb_func_start sub_0808F7D4
sub_0808F7D4: @ 0x0808F7D4
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 _0808F80A
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x18
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
_0808F80A:
pop {r4, pc}
thumb_func_start sub_0808F80C
sub_0808F80C: @ 0x0808F80C
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0808F850
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0x15]
movs r2, #0
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r4, #0x20]
ldrb r1, [r4, #0x1b]
movs r0, #0x3f
ands r0, r1
strb r0, [r4, #0x1b]
strb r2, [r4, #0xe]
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
ldr r0, _0808F854 @ =0x0000012B
bl SoundReq
_0808F850:
pop {r4, pc}
.align 2, 0
_0808F854: .4byte 0x0000012B
thumb_func_start sub_0808F858
sub_0808F858: @ 0x0808F858
push {r4, lr}
adds r4, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0808F884
adds r0, r4, #0
bl LinearMoveUpdate
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl GravityUpdate
cmp r0, #0
bne _0808F88A
adds r0, r4, #0
bl GetNextFrame
b _0808F88A
_0808F884:
adds r0, r4, #0
bl GetNextFrame
_0808F88A:
movs r1, #0x32
ldrsh r0, [r4, r1]
ldr r1, _0808F8C4 @ =gRoomControls
ldrh r2, [r1, #8]
subs r0, r0, r2
movs r1, #0x8c
lsls r1, r1, #2
cmp r0, r1
bgt _0808F8C8
adds r0, r2, r1
strh r0, [r4, #0x32]
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808F8EA
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #2
bl InitializeAnimation
b _0808F8EA
.align 2, 0
_0808F8C4: .4byte gRoomControls
_0808F8C8:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808F8EA
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r4, #0x20]
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
ldr r0, _0808F8EC @ =0x0000012B
bl SoundReq
_0808F8EA:
pop {r4, pc}
.align 2, 0
_0808F8EC: .4byte 0x0000012B
thumb_func_start sub_0808F8F0
sub_0808F8F0: @ 0x0808F8F0
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0808F912
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #5
bl InitializeAnimation
_0808F912:
pop {r4, pc}
thumb_func_start sub_0808F914
sub_0808F914: @ 0x0808F914
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 _0808F93C
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
_0808F93C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808F940
sub_0808F940: @ 0x0808F940
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0808F960
ldr r1, _0808F964 @ =gMenu
ldrb r0, [r1, #6]
adds r0, #1
strb r0, [r1, #6]
bl DeleteThisEntity
_0808F960:
pop {r4, pc}
.align 2, 0
_0808F964: .4byte gMenu
-157
View File
@@ -1,157 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object5B
Object5B: @ 0x0809288C
push {lr}
adds r2, r0, #0
ldrb r1, [r2, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _080928B0
ldr r0, _080928AC @ =gUnk_0812279C
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _080928C0
.align 2, 0
_080928AC: .4byte gUnk_0812279C
_080928B0:
ldr r0, _080928C4 @ =gUnk_08122794
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
_080928C0:
pop {pc}
.align 2, 0
_080928C4: .4byte gUnk_08122794
thumb_func_start sub_080928C8
sub_080928C8: @ 0x080928C8
push {lr}
adds r3, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r3, #0xc]
ldrb r1, [r3, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r3, #0x18]
ldrb r0, [r3, #0xa]
strb r0, [r3, #0x1e]
ldrb r0, [r3, #0x19]
movs r1, #0xc0
orrs r0, r1
strb r0, [r3, #0x19]
adds r2, r3, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
ldrb r1, [r3, #0x1b]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r3, #0x1b]
ldrb r0, [r3, #0xa]
cmp r0, #2
beq _08092912
cmp r0, #4
beq _08092920
b _08092928
_08092912:
adds r0, r3, #0
movs r1, #0x5b
movs r2, #4
movs r3, #0
bl CreateObjectWithParent
b _08092928
_08092920:
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
_08092928:
pop {pc}
.align 2, 0
thumb_func_start nullsub_119
nullsub_119: @ 0x0809292C
bx lr
.align 2, 0
thumb_func_start sub_08092930
sub_08092930: @ 0x08092930
push {r4, lr}
adds r4, r0, #0
bl sub_080928C8
adds r4, #0x82
movs r0, #0
strh r0, [r4]
pop {r4, pc}
thumb_func_start sub_08092940
sub_08092940: @ 0x08092940
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x84
ldr r1, [r5]
bl ExecuteScript
ldr r1, [r5]
adds r0, r4, #0
bl sub_08092958
pop {r4, r5, pc}
thumb_func_start sub_08092958
sub_08092958: @ 0x08092958
push {r4, lr}
adds r3, r0, #0
adds r2, r1, #0
ldr r0, [r2, #8]
cmp r0, #0
beq _0809298A
movs r4, #0
_08092966:
ldr r1, [r2, #8]
mvns r0, r1
adds r0, #1
ands r0, r1
eors r1, r0
str r1, [r2, #8]
cmp r0, #1
beq _0809297C
cmp r0, #2
beq _08092980
b _08092984
_0809297C:
strb r4, [r3, #0x1e]
b _08092984
_08092980:
ldr r0, [r2, #4]
strb r0, [r3, #0x1e]
_08092984:
ldr r0, [r2, #8]
cmp r0, #0
bne _08092966
_0809298A:
pop {r4, pc}
-214
View File
@@ -1,214 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object64
Object64: @ 0x08093E24
push {lr}
ldr r2, _08093E38 @ =gUnk_0812295C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08093E38: .4byte gUnk_0812295C
thumb_func_start sub_08093E3C
sub_08093E3C: @ 0x08093E3C
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x38
ldrb r0, [r0]
cmp r0, #0
bne _08093E6A
adds r0, r4, #0
bl ResolveCollisionLayer
_08093E6A:
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl InitializeAnimation
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
ldr r1, _08093EA8 @ =gUnk_08122950
adds r2, r0, r1
ldrh r0, [r2]
cmp r0, #0
beq _08093E90
ldrb r1, [r4, #0xb]
movs r0, #0x40
ands r0, r1
cmp r0, #0
bne _08093E90
ldrh r0, [r2]
bl EnqueueSFX
_08093E90:
ldrb r1, [r4, #0xb]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08093EA6
ldrb r0, [r4, #0x19]
movs r1, #0x3f
ands r1, r0
movs r0, #0x40
orrs r1, r0
strb r1, [r4, #0x19]
_08093EA6:
pop {r4, pc}
.align 2, 0
_08093EA8: .4byte gUnk_08122950
thumb_func_start sub_08093EAC
sub_08093EAC: @ 0x08093EAC
push {lr}
ldr r3, _08093EC8 @ =gUnk_08122964
ldr r2, _08093ECC @ =gUnk_08122950
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldrb r1, [r1, #2]
lsrs r1, r1, #4
lsls r1, r1, #2
adds r1, r1, r3
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08093EC8: .4byte gUnk_08122964
_08093ECC: .4byte gUnk_08122950
thumb_func_start sub_08093ED0
sub_08093ED0: @ 0x08093ED0
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 _08093EEC
adds r0, r4, #0
bl DeleteEntity
_08093EEC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08093EF0
sub_08093EF0: @ 0x08093EF0
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r4, [r5, #0xa]
cmp r4, #1
beq _08093F40
cmp r4, #1
bgt _08093F04
cmp r4, #0
beq _08093F0A
b _08093FB0
_08093F04:
cmp r4, #2
beq _08093F98
b _08093FB0
_08093F0A:
ldrb r0, [r5, #0xd]
cmp r0, #0
bne _08093FB0
adds r0, r5, #0
bl GetNextFrame
adds r0, r5, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08093FB0
movs r0, #0x64
movs r1, #1
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08093F8E
ldr r0, [r5, #0x50]
str r0, [r1, #0x50]
adds r0, r5, #0
bl CopyPosition
b _08093F8E
_08093F40:
adds r0, r5, #0
bl GetNextFrame
adds r1, r5, #0
adds r1, #0x5a
ldrb r0, [r1]
ands r4, r0
adds r6, r1, #0
cmp r4, #0
beq _08093F72
movs r0, #0
strb r0, [r6]
movs r0, #0x64
movs r1, #2
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08093F72
ldr r0, [r5, #0x50]
str r0, [r1, #0x50]
adds r0, r5, #0
bl CopyPosition
_08093F72:
ldrb r1, [r6]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08093FB0
ldr r1, [r5, #0x50]
ldr r0, _08093F94 @ =gPlayerEntity
cmp r1, r0
bne _08093F8E
movs r0, #0x7a
bl SoundReq
bl sub_08079D84
_08093F8E:
bl DeleteThisEntity
b _08093FB0
.align 2, 0
_08093F94: .4byte gPlayerEntity
_08093F98:
adds r0, r5, #0
bl GetNextFrame
adds r0, r5, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08093FB0
bl DeleteThisEntity
_08093FB0:
pop {r4, r5, r6, pc}
.align 2, 0
-198
View File
@@ -1,198 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object70
Object70: @ 0x08097420
push {lr}
ldr r2, _08097434 @ =gUnk_081232A4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08097434: .4byte gUnk_081232A4
thumb_func_start sub_08097438
sub_08097438: @ 0x08097438
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xa]
adds r1, r0, #0
adds r1, #0xb
strb r1, [r4, #0x1e]
lsls r0, r0, #0x18
cmp r0, #0
beq _080974A2
adds r0, r4, #0
bl sub_08004168
ldr r1, _08097494 @ =gPlayerEntity
ldrb r0, [r1, #0x1b]
movs r2, #0xc0
orrs r0, r2
strb r0, [r1, #0x1b]
adds r1, #0x29
ldrb r1, [r1]
movs r2, #7
movs r0, #7
ands r0, r1
cmp r0, #7
beq _08097498
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
adds r1, #1
adds r3, r4, #0
adds r3, #0x29
ands r1, r2
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
b _080974A2
.align 2, 0
_08097494: .4byte gPlayerEntity
_08097498:
adds r1, r4, #0
adds r1, #0x29
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
_080974A2:
pop {r4, pc}
thumb_func_start sub_080974A4
sub_080974A4: @ 0x080974A4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08097554
ldr r3, _08097540 @ =gPlayerEntity
ldr r0, [r3, #0x34]
cmp r0, #0
bne _080974E8
ldr r2, _08097544 @ =gPlayerState
ldrb r1, [r2, #0x1e]
movs r0, #0x40
ands r0, r1
cmp r0, #0
bne _080974D6
ldrb r0, [r2, #0x12]
cmp r0, #0x11
bne _080974D6
ldrb r0, [r3, #0xc]
cmp r0, #1
beq _080974FA
cmp r0, #0x18
beq _080974FA
cmp r0, #4
beq _080974FA
_080974D6:
ldr r1, _08097540 @ =gPlayerEntity
ldr r0, [r1, #0x34]
cmp r0, #0
bne _080974E8
adds r0, r1, #0
movs r1, #0x52
movs r2, #0
bl CreateFx
_080974E8:
ldr r2, _08097540 @ =gPlayerEntity
ldrb r1, [r2, #0x1b]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #0x1b]
bl DeleteThisEntity
_080974FA:
ldr r2, _08097540 @ =gPlayerEntity
ldr r0, [r2, #0x2c]
str r0, [r4, #0x2c]
ldr r0, [r2, #0x30]
str r0, [r4, #0x30]
ldr r0, _08097544 @ =gPlayerState
ldrb r0, [r0, #2]
cmp r0, #0
bne _08097584
ldrb r0, [r2, #0x1b]
movs r1, #0xc0
orrs r0, r1
strb r0, [r2, #0x1b]
adds r0, r2, #0
adds r0, #0x29
ldrb r1, [r0]
movs r2, #7
movs r0, #7
ands r0, r1
cmp r0, #7
beq _08097548
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
adds r1, #1
adds r3, r4, #0
adds r3, #0x29
ands r1, r2
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
b _08097584
.align 2, 0
_08097540: .4byte gPlayerEntity
_08097544: .4byte gPlayerState
_08097548:
adds r1, r4, #0
adds r1, #0x29
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
b _08097584
_08097554:
ldr r2, _08097570 @ =gPlayerEntity
ldrb r0, [r2, #0xc]
cmp r0, #0x1e
beq _08097584
adds r0, r4, #0
adds r0, #0x38
ldrb r0, [r0]
cmp r0, #1
bne _08097574
ldrb r0, [r2, #0x1b]
movs r1, #0x3f
ands r1, r0
movs r0, #0x80
b _0809757C
.align 2, 0
_08097570: .4byte gPlayerEntity
_08097574:
ldrb r0, [r2, #0x1b]
movs r1, #0x3f
ands r1, r0
movs r0, #0x40
_0809757C:
orrs r1, r0
strb r1, [r2, #0x1b]
bl DeleteThisEntity
_08097584:
pop {r4, pc}
.align 2, 0
-277
View File
@@ -1,277 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object74
Object74: @ 0x08097B6C
push {lr}
ldr r2, _08097B80 @ =gUnk_08123330
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08097B80: .4byte gUnk_08123330
thumb_func_start sub_08097B84
sub_08097B84: @ 0x08097B84
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
ldr r0, _08097BCC @ =gUnk_08123328
str r0, [r4, #0x48]
adds r2, #0x5d
ldrh r1, [r2]
ldr r0, _08097BD0 @ =0x0000FFFF
cmp r1, r0
beq _08097BB0
adds r0, r1, #0
bl CheckFlags
cmp r0, #0
beq _08097BD4
_08097BB0:
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, #4
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_08097CFC
b _08097BD8
.align 2, 0
_08097BCC: .4byte gUnk_08123328
_08097BD0: .4byte 0x0000FFFF
_08097BD4:
bl sub_0805BC4C
_08097BD8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08097BDC
sub_08097BDC: @ 0x08097BDC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _08097C10
movs r0, #1
bl SetPlayerControl
ldr r0, _08097C14 @ =gUnk_02034490
movs r1, #1
strb r1, [r0]
adds r0, r4, #0
movs r1, #0x1e
bl RequestPriorityDuration
adds r0, r4, #0
bl sub_08097CB0
cmp r0, #0
bne _08097C10
adds r0, r4, #0
bl sub_08097CB4
_08097C10:
pop {r4, pc}
.align 2, 0
_08097C14: .4byte gUnk_02034490
thumb_func_start sub_08097C18
sub_08097C18: @ 0x08097C18
bx lr
.align 2, 0
thumb_func_start sub_08097C1C
sub_08097C1C: @ 0x08097C1C
bx lr
.align 2, 0
thumb_func_start sub_08097C20
sub_08097C20: @ 0x08097C20
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #0x1e
bl SetPriorityTimer
adds r0, r4, #0
bl sub_0800445C
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl CreateMagicSparkles
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _08097CA6
movs r0, #8
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
adds r0, #1
strb r0, [r4, #0xf]
ands r1, r0
ldr r6, _08097CA8 @ =gScreen
movs r0, #0x10
subs r0, r0, r1
lsls r0, r0, #8
orrs r0, r1
adds r1, r6, #0
adds r1, #0x68
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x10
bne _08097CA6
movs r0, #0
bl SetPlayerControl
ldr r1, _08097CAC @ =gUnk_02034490
movs r0, #0
strb r0, [r1]
adds r0, r6, #0
adds r0, #0x66
strh r5, [r0]
adds r0, r4, #0
bl sub_08097CFC
movs r0, #4
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x19]
subs r0, #0x11
ands r0, r1
strb r0, [r4, #0x19]
movs r0, #0x72
bl SoundReq
movs r0, #0x63
bl SetGlobalFlag
_08097CA6:
pop {r4, r5, r6, pc}
.align 2, 0
_08097CA8: .4byte gScreen
_08097CAC: .4byte gUnk_02034490
thumb_func_start sub_08097CB0
sub_08097CB0: @ 0x08097CB0
movs r0, #0
bx lr
thumb_func_start sub_08097CB4
sub_08097CB4: @ 0x08097CB4
push {lr}
movs r3, #0
movs r1, #3
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #7
ands r1, r2
movs r2, #1
orrs r1, r2
strb r1, [r0, #0x18]
ldrb r2, [r0, #0x19]
movs r1, #0xd
rsbs r1, r1, #0
ands r1, r2
movs r2, #4
orrs r1, r2
strb r1, [r0, #0x19]
movs r1, #0x1e
strb r1, [r0, #0xe]
strb r3, [r0, #0xf]
ldr r1, _08097CF8 @ =gScreen
adds r2, r1, #0
adds r2, #0x66
movs r0, #0xf4
lsls r0, r0, #4
strh r0, [r2]
adds r1, #0x68
adds r0, #0xc0
strh r0, [r1]
movs r0, #0xa5
lsls r0, r0, #1
bl SoundReq
pop {pc}
.align 2, 0
_08097CF8: .4byte gScreen
thumb_func_start sub_08097CFC
sub_08097CFC: @ 0x08097CFC
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrh r1, [r5, #0x2e]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _08097D40
ldr r0, _08097D38 @ =gUnk_0812336A
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08097D3C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0801AF18
b _08097D6C
.align 2, 0
_08097D38: .4byte gUnk_0812336A
_08097D3C: .4byte gRoomControls
_08097D40:
ldr r0, _08097D70 @ =gUnk_08123344
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08097D74 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0801AF18
_08097D6C:
pop {r4, r5, r6, pc}
.align 2, 0
_08097D70: .4byte gUnk_08123344
_08097D74: .4byte gRoomControls
-304
View File
@@ -1,304 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectB
ObjectB: @ 0x08083B88
push {r4, lr}
adds r4, r0, #0
ldr r1, _08083BDC @ =gUnk_0811F7D8
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldr r0, [r4, #0x50]
adds r0, #0x5a
ldrb r1, [r0]
lsrs r1, r1, #6
movs r0, #1
ands r1, r0
ldrb r2, [r4, #0x18]
subs r0, #5
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
bl sub_08080CB4
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
ldrb r1, [r4, #0x1b]
movs r2, #0x3f
adds r0, r2, #0
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r2, r0
strb r2, [r4, #0x19]
pop {r4, pc}
.align 2, 0
_08083BDC: .4byte gUnk_0811F7D8
thumb_func_start sub_08083BE0
sub_08083BE0: @ 0x08083BE0
push {r4, lr}
adds r4, r0, #0
movs r1, #6
bl SetDefaultPriority
movs r0, #1
strb r0, [r4, #0xc]
pop {r4, pc}
thumb_func_start sub_08083BF0
sub_08083BF0: @ 0x08083BF0
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #0x41
bne _08083C98
movs r0, #2
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xe]
cmp r0, #5
bhi _08083C98
lsls r0, r0, #2
ldr r1, _08083C14 @ =_08083C18
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08083C14: .4byte _08083C18
_08083C18: @ jump table
.4byte _08083C30 @ case 0
.4byte _08083C30 @ case 1
.4byte _08083C4A @ case 2
.4byte _08083C98 @ case 3
.4byte _08083C98 @ case 4
.4byte _08083C74 @ case 5
_08083C30:
ldrb r0, [r4, #0xa]
ldrb r1, [r4, #0xb]
bl GiveItem
adds r1, r4, #0
adds r1, #0x68
strh r0, [r1]
ldrb r0, [r4, #0xa]
cmp r0, #0x43
bgt _08083C62
cmp r0, #0x40
bge _08083C98
b _08083C62
_08083C4A:
ldrb r0, [r4, #0xa]
ldrb r1, [r4, #0xb]
bl GiveItem
ldr r1, _08083C6C @ =gUnk_080FD964
ldrb r0, [r4, #0xa]
lsls r0, r0, #3
adds r0, r0, r1
ldrh r1, [r0, #6]
adds r0, r4, #0
adds r0, #0x68
strh r1, [r0]
_08083C62:
ldr r0, _08083C70 @ =0x00000109
bl SoundReq
b _08083C98
.align 2, 0
_08083C6C: .4byte gUnk_080FD964
_08083C70: .4byte 0x00000109
_08083C74:
ldrb r0, [r4, #0xa]
bl GetInventoryValue
ldrb r1, [r4, #0xa]
lsls r1, r1, #3
ldr r2, _08083C8C @ =gItemMetaData
adds r1, r1, r2
cmp r0, #0
bne _08083C90
ldrh r1, [r1, #4]
b _08083C92
.align 2, 0
_08083C8C: .4byte gItemMetaData
_08083C90:
ldrh r1, [r1, #6]
_08083C92:
adds r0, r4, #0
adds r0, #0x68
strh r1, [r0]
_08083C98:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08083C9C
sub_08083C9C: @ 0x08083C9C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #0x42
bne _08083D22
movs r0, #3
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xe]
cmp r0, #5
bhi _08083D22
lsls r0, r0, #2
ldr r1, _08083CC0 @ =_08083CC4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08083CC0: .4byte _08083CC4
_08083CC4: @ jump table
.4byte _08083CDC @ case 0
.4byte _08083D22 @ case 1
.4byte _08083CDC @ case 2
.4byte _08083D22 @ case 3
.4byte _08083D22 @ case 4
.4byte _08083CDC @ case 5
_08083CDC:
adds r0, r4, #0
adds r0, #0x68
ldrh r1, [r0]
cmp r1, #0
beq _08083D22
ldrb r0, [r4, #0xa]
cmp r0, #0x3f
beq _08083D00
cmp r0, #0x63
bne _08083D16
ldr r0, _08083CFC @ =gSave
adds r0, #0xa9
ldrb r0, [r0]
adds r1, r1, r0
b _08083D16
.align 2, 0
_08083CFC: .4byte gSave
_08083D00:
ldrb r0, [r4, #0xb]
cmp r0, #1
bls _08083D16
ldr r0, _08083D10 @ =0x00000577
cmp r1, r0
bne _08083D14
subs r1, #1
b _08083D16
.align 2, 0
_08083D10: .4byte 0x00000577
_08083D14:
adds r1, #1
_08083D16:
adds r0, r1, #0
bl MessageFromTarget
ldr r1, _08083D24 @ =gMessage
ldrb r0, [r4, #0xb]
str r0, [r1, #0x10]
_08083D22:
pop {r4, pc}
.align 2, 0
_08083D24: .4byte gMessage
thumb_func_start sub_08083D28
sub_08083D28: @ 0x08083D28
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #8
beq _08083DD4
ldrb r0, [r4, #0xe]
cmp r0, #5
bhi _08083DD0
lsls r0, r0, #2
ldr r1, _08083D44 @ =_08083D48
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08083D44: .4byte _08083D48
_08083D48: @ jump table
.4byte _08083D60 @ case 0
.4byte _08083D60 @ case 1
.4byte _08083D60 @ case 2
.4byte _08083DAC @ case 3
.4byte _08083DD0 @ case 4
.4byte _08083DD0 @ case 5
_08083D60:
ldrb r0, [r4, #0xa]
cmp r0, #0x62
beq _08083D88
cmp r0, #0x63
bne _08083DD0
movs r0, #0xa0
bl ModHealth
ldr r0, _08083DA8 @ =gSave
adds r1, r0, #0
adds r1, #0xa9
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bls _08083DD0
movs r0, #0
strb r0, [r1]
_08083D88:
ldr r0, _08083DA8 @ =gSave
adds r1, r0, #0
adds r1, #0xab
ldrb r0, [r1]
adds r0, #8
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xa0
bls _08083DA0
movs r0, #0xa0
strb r0, [r1]
_08083DA0:
movs r0, #0xa0
bl ModHealth
b _08083DD0
.align 2, 0
_08083DA8: .4byte gSave
_08083DAC:
ldrb r0, [r4, #0xa]
bl GetBottleContaining
adds r1, r0, #0
cmp r1, #0
beq _08083DC8
ldr r0, _08083DC4 @ =gSave
adds r0, r0, r1
adds r0, #0xb5
movs r1, #0x20
strb r1, [r0]
b _08083DD0
.align 2, 0
_08083DC4: .4byte gSave
_08083DC8:
ldrb r0, [r4, #0xa]
movs r1, #2
bl SetInventoryValue
_08083DD0:
bl DeleteThisEntity
_08083DD4:
pop {r4, pc}
.align 2, 0
-197
View File
@@ -1,197 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectB3
ObjectB3: @ 0x080A0A34
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080A0A44
cmp r0, #1
beq _080A0A5C
b _080A0A5E
_080A0A44:
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
ldr r1, _080A0A54 @ =gUnk_08124A18
cmp r0, #0
beq _080A0A5E
ldr r1, _080A0A58 @ =gUnk_08124A10
b _080A0A5E
.align 2, 0
_080A0A54: .4byte gUnk_08124A18
_080A0A58: .4byte gUnk_08124A10
_080A0A5C:
ldr r1, _080A0AB8 @ =gUnk_08124A20
_080A0A5E:
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080A0AB0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r2, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r3, #0x40
orrs r0, r3
strb r0, [r4, #0x19]
movs r0, #0x29
adds r0, r0, r4
mov ip, r0
ldrb r2, [r0]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
mov r2, ip
strb r0, [r2]
ldrb r0, [r4, #0x1b]
ands r1, r0
orrs r1, r3
strb r1, [r4, #0x1b]
ldr r1, _080A0ABC @ =gUnk_080C9CBC
ldr r0, _080A0AC0 @ =gFuseInfo
ldrb r0, [r0, #3]
lsls r0, r0, #3
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl ChangeObjPalette
_080A0AB0:
adds r0, r4, #0
bl GetNextFrame
pop {r4, pc}
.align 2, 0
_080A0AB8: .4byte gUnk_08124A20
_080A0ABC: .4byte gUnk_080C9CBC
_080A0AC0: .4byte gFuseInfo
thumb_func_start sub_080A0AC4
sub_080A0AC4: @ 0x080A0AC4
push {lr}
ldrb r1, [r0, #0xa]
bl InitializeAnimation
pop {pc}
.align 2, 0
thumb_func_start sub_080A0AD0
sub_080A0AD0: @ 0x080A0AD0
push {lr}
movs r1, #0x80
bl GravityUpdate
pop {pc}
.align 2, 0
thumb_func_start sub_080A0ADC
sub_080A0ADC: @ 0x080A0ADC
push {r4, lr}
adds r4, r0, #0
bl sub_0807DD64
adds r0, r4, #0
movs r1, #0
bl ExecuteScriptForEntity
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0AF0
sub_080A0AF0: @ 0x080A0AF0
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl ExecuteScriptForEntity
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #5
bne _080A0B1C
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080A0B1C
bl DeleteThisEntity
_080A0B1C:
adds r0, r4, #0
movs r1, #0x80
bl GravityUpdate
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0B28
sub_080A0B28: @ 0x080A0B28
push {r4, lr}
adds r4, r0, #0
movs r0, #0x2e
ldrsh r2, [r4, r0]
movs r0, #0x32
ldrsh r3, [r4, r0]
adds r0, r4, #0
bl sub_0807DEDC
ldrh r0, [r4, #0x32]
subs r0, #0xb0
strh r0, [r4, #0x32]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
pop {r4, pc}
thumb_func_start sub_080A0B4C
sub_080A0B4C: @ 0x080A0B4C
push {lr}
movs r1, #0x78
strh r1, [r0, #0x2e]
movs r1, #0x50
strh r1, [r0, #0x32]
movs r1, #0
bl InitializeAnimation
pop {pc}
.align 2, 0
thumb_func_start sub_080A0B60
sub_080A0B60: @ 0x080A0B60
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080A0B7C
movs r0, #2
strb r0, [r2, #0xc]
movs r0, #0x9b
lsls r0, r0, #1
bl SoundReq
_080A0B7C:
pop {pc}
.align 2, 0
thumb_func_start sub_080A0B80
sub_080A0B80: @ 0x080A0B80
ldr r1, [r0, #0x30]
ldr r2, _080A0B8C @ =0xFFFD8000
adds r1, r1, r2
str r1, [r0, #0x30]
bx lr
.align 2, 0
_080A0B8C: .4byte 0xFFFD8000
-182
View File
@@ -1,182 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectBD
ObjectBD: @ 0x080A225C
push {lr}
ldr r2, _080A2270 @ =gUnk_0812503C
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A2270: .4byte gUnk_0812503C
thumb_func_start sub_080A2274
sub_080A2274: @ 0x080A2274
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xc]
cmp r0, #0
bne _080A22AE
adds r0, r1, #0
bl sub_080A2340
movs r0, #0xbd
movs r1, #1
movs r2, #0
bl CreateObject
movs r0, #0x80
lsls r0, r0, #0x12
ldrb r0, [r0, #7]
movs r1, #3
cmp r0, #1
bne _080A229C
movs r1, #2
_080A229C:
movs r0, #0xbd
movs r2, #0
bl CreateObject
movs r0, #0xbd
movs r1, #4
movs r2, #0
bl CreateObject
_080A22AE:
pop {pc}
thumb_func_start sub_080A22B0
sub_080A22B0: @ 0x080A22B0
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xc]
cmp r0, #0
bne _080A22C0
adds r0, r1, #0
bl sub_080A2340
_080A22C0:
pop {pc}
.align 2, 0
thumb_func_start sub_080A22C4
sub_080A22C4: @ 0x080A22C4
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xc]
cmp r5, #0
beq _080A22FC
cmp r5, #1
beq _080A231C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A233E
movs r0, #8
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r4, #0xf]
ldrb r1, [r4, #0xd]
adds r0, r1, r0
strb r0, [r4, #0x1e]
lsls r1, r1, #0x18
lsls r0, r0, #0x18
cmp r1, r0
bne _080A233E
b _080A233A
_080A22FC:
adds r0, r4, #0
bl sub_080A2340
movs r0, #8
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
ldrb r0, [r4, #0x1e]
strb r0, [r4, #0xd]
bl Random
movs r1, #3
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
b _080A233E
_080A231C:
ldrh r0, [r4, #0x24]
subs r0, #1
strh r0, [r4, #0x24]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A233E
bl Random
movs r1, #7
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
movs r0, #2
b _080A233C
_080A233A:
movs r0, #1
_080A233C:
strb r0, [r4, #0xc]
_080A233E:
pop {r4, r5, pc}
thumb_func_start sub_080A2340
sub_080A2340: @ 0x080A2340
ldrb r1, [r0, #0xa]
lsls r1, r1, #3
ldr r2, _080A239C @ =gUnk_08125014
adds r1, r1, r2
ldrh r2, [r1]
strh r2, [r0, #0x2e]
ldrh r2, [r1, #2]
strh r2, [r0, #0x32]
ldrh r2, [r1, #4]
strb r2, [r0, #0x1e]
ldrb r1, [r1, #6]
movs r2, #0x29
adds r2, r2, r0
mov ip, r2
movs r2, #7
ands r2, r1
mov r1, ip
ldrb r3, [r1]
movs r1, #8
rsbs r1, r1, #0
ands r1, r3
orrs r1, r2
mov r2, ip
strb r1, [r2]
ldrb r3, [r0, #0x19]
movs r2, #0x3f
adds r1, r2, #0
ands r1, r3
movs r3, #0x40
orrs r1, r3
strb r1, [r0, #0x19]
ldrb r1, [r0, #0x1b]
ands r2, r1
orrs r2, r3
strb r2, [r0, #0x1b]
ldrb r2, [r0, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r2
movs r2, #2
orrs r1, r2
strb r1, [r0, #0x18]
movs r1, #1
strb r1, [r0, #0xc]
bx lr
.align 2, 0
_080A239C: .4byte gUnk_08125014
-156
View File
@@ -1,156 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectD
ObjectD: @ 0x08084334
push {lr}
ldr r2, _08084348 @ =gUnk_0811F908
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08084348: .4byte gUnk_0811F908
thumb_func_start sub_0808434C
sub_0808434C: @ 0x0808434C
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r2, #1
movs r3, #1
strb r3, [r5, #0xc]
ldrb r1, [r5, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r5, #0x10]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r5, #0x18]
adds r1, r5, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x3f
strb r3, [r0]
adds r1, #4
movs r0, #0x47
strb r0, [r1]
subs r1, #5
movs r0, #2
strb r0, [r1]
ldr r0, _080843E0 @ =gHitbox_4
str r0, [r5, #0x48]
ldr r0, _080843E4 @ =0x00004050
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _080843E8 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
ldrb r0, [r5, #0xa]
cmp r0, #1
beq _080843C8
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _080843EC
_080843C8:
movs r0, #3
strb r0, [r5, #0xc]
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
adds r0, r5, #0
movs r1, #1
bl InitializeAnimation
b _080843F4
.align 2, 0
_080843E0: .4byte gHitbox_4
_080843E4: .4byte 0x00004050
_080843E8: .4byte gRoomControls
_080843EC:
ldrb r1, [r5, #0xa]
adds r0, r5, #0
bl InitializeAnimation
_080843F4:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080843F8
sub_080843F8: @ 0x080843F8
push {lr}
adds r2, r0, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x9c
bne _08084420
movs r0, #2
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
adds r0, r2, #0
movs r1, #0xd
movs r2, #0
bl CreateFx
ldr r0, _08084424 @ =0x0000010D
bl EnqueueSFX
_08084420:
pop {pc}
.align 2, 0
_08084424: .4byte 0x0000010D
thumb_func_start sub_08084428
sub_08084428: @ 0x08084428
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08084454
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
movs r0, #0x86
lsls r0, r0, #1
bl EnqueueSFX
_08084454:
pop {r4, pc}
.align 2, 0
-210
View File
@@ -1,210 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Paper
Paper: @ 0x0809271C
push {lr}
ldr r2, _08092730 @ =gUnk_08122780
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08092730: .4byte gUnk_08122780
thumb_func_start sub_08092734
sub_08092734: @ 0x08092734
push {lr}
ldr r2, _08092748 @ =gUnk_08122788
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08092748: .4byte gUnk_08122788
thumb_func_start sub_0809274C
sub_0809274C: @ 0x0809274C
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x19]
movs r5, #0x3f
adds r0, r5, #0
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x19]
ldrh r0, [r4, #0x36]
subs r0, #8
strh r0, [r4, #0x36]
ldrb r0, [r4, #0xb]
cmp r0, #1
beq _0809277C
cmp r0, #2
bne _080927A2
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_0809277C:
ldr r0, _080927A4 @ =0x00004051
movs r2, #0x2e
ldrsh r1, [r4, r2]
ldr r3, _080927A8 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r5
movs r6, #0x32
ldrsh r2, [r4, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r5
lsls r2, r2, #6
orrs r1, r2
movs r2, #1
bl SetTile
_080927A2:
pop {r4, r5, r6, pc}
.align 2, 0
_080927A4: .4byte 0x00004051
_080927A8: .4byte gRoomControls
thumb_func_start sub_080927AC
sub_080927AC: @ 0x080927AC
push {lr}
adds r1, r0, #0
movs r0, #1
strb r0, [r1, #0xc]
ldrb r0, [r1, #0xb]
strb r0, [r1, #0x1e]
ldrb r0, [r1, #0xb]
cmp r0, #0
beq _080927C4
cmp r0, #2
beq _080927CA
b _080927D0
_080927C4:
adds r1, #0x63
movs r0, #2
b _080927CE
_080927CA:
adds r1, #0x63
movs r0, #0xfe
_080927CE:
strb r0, [r1]
_080927D0:
pop {pc}
.align 2, 0
thumb_func_start sub_080927D4
sub_080927D4: @ 0x080927D4
push {r4, r5, r6, lr}
mov r6, r8
push {r6}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xff
strb r0, [r1]
ldr r0, _08092848 @ =0x00004051
mov r8, r0
movs r2, #0x2e
ldrsh r1, [r4, r2]
ldr r6, _0809284C @ =gRoomControls
ldrh r0, [r6, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r5, #0x3f
ands r1, r5
movs r2, #0x32
ldrsh r0, [r4, r2]
ldrh r2, [r6, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r5
lsls r0, r0, #6
orrs r1, r0
subs r1, #1
mov r0, r8
movs r2, #1
bl SetTile
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldrh r0, [r6, #6]
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r5
movs r2, #0x32
ldrsh r0, [r4, r2]
ldrh r2, [r6, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r5
lsls r0, r0, #6
orrs r1, r0
mov r0, r8
movs r2, #1
bl SetTile
pop {r3}
mov r8, r3
pop {r4, r5, r6, pc}
.align 2, 0
_08092848: .4byte 0x00004051
_0809284C: .4byte gRoomControls
thumb_func_start sub_08092850
sub_08092850: @ 0x08092850
push {r4, lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #0
bne _08092888
ldr r3, _08092878 @ =gPlayerEntity
movs r0, #0x32
ldrsh r1, [r3, r0]
movs r4, #0x32
ldrsh r0, [r2, r4]
cmp r1, r0
blt _0809286E
adds r0, #0x18
cmp r1, r0
ble _0809287C
_0809286E:
ldrb r0, [r2, #0x19]
movs r1, #0x3f
ands r1, r0
movs r0, #0x40
b _08092884
.align 2, 0
_08092878: .4byte gPlayerEntity
_0809287C:
ldrb r0, [r2, #0x19]
movs r1, #0x3f
ands r1, r0
movs r0, #0x80
_08092884:
orrs r1, r0
strb r1, [r2, #0x19]
_08092888:
pop {r4, pc}
.align 2, 0
-111
View File
@@ -42675,16 +42675,6 @@
"start": 1181044,
"size": 8
},
{
"path": "object11/gUnk_08120588.bin",
"start": 1181064,
"size": 20
},
{
"path": "object11/gUnk_081205B4.bin",
"start": 1181108,
"size": 8
},
{
"path": "animations/gSpriteAnimations_Railtrack_0.bin",
"start": 1181156,
@@ -42885,11 +42875,6 @@
"size": 44,
"type": "animation"
},
{
"path": "object1E/gUnk_081208C0.bin",
"start": 1181888,
"size": 8
},
{
"path": "object1F/gUnk_08120A18.bin",
"start": 1182232,
@@ -42900,36 +42885,6 @@
"start": 1182240,
"size": 8
},
{
"path": "object20/gUnk_08120A30.bin",
"start": 1182256,
"size": 12
},
{
"path": "object20/gUnk_08120A3C.bin",
"start": 1182268,
"size": 12
},
{
"path": "object20/gUnk_08120A48.bin",
"start": 1182280,
"size": 12
},
{
"path": "object21/gUnk_08120A78.bin",
"start": 1182328,
"size": 2
},
{
"path": "object21/gUnk_08120A7A.bin",
"start": 1182330,
"size": 6
},
{
"path": "object21/gUnk_08120A8C.bin",
"start": 1182348,
"size": 8
},
{
"path": "animations/gSpriteAnimations_FigurineDevice_0.bin",
"start": 1182440,
@@ -43163,11 +43118,6 @@
"size": 4,
"type": "animation"
},
{
"path": "object30/gUnk_08121194.bin",
"start": 1184148,
"size": 8
},
{
"path": "animations/gSpriteAnimations_PullableMushroom_0.bin",
"start": 1184260,
@@ -43382,37 +43332,6 @@
"size": 4,
"type": "animation"
},
{
"path": "object3A/gUnk_081215E8.bin",
"start": 1185256,
"size": 80
},
{
"path": "object3A/gUnk_08121648.bin",
"start": 1185352,
"size": 32
},
{
"path": "object3D/gUnk_081216C8_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1183248
},
"size": 20
},
{
"path": "object3D/gUnk_081216C8_1_USA-JP-DEMO_USA-DEMO_JP.bin",
"variants": [
"USA",
"JP",
"DEMO_USA",
"DEMO_JP"
],
"start": 1185480,
"size": 20
},
{
"path": "giantLeaf/gUnk_08121750.bin",
"start": 1185616,
@@ -43423,11 +43342,6 @@
"start": 1185642,
"size": 26
},
{
"path": "object42/gUnk_081217B8.bin",
"start": 1185720,
"size": 4
},
{
"path": "animations/gSpriteAnimations_Object43_0.bin",
"start": 1185760,
@@ -44106,11 +44020,6 @@
"size": 28,
"type": "animation"
},
{
"path": "object64/gUnk_08122950.bin",
"start": 1190224,
"size": 12
},
{
"path": "object67/gUnk_081229D0.bin",
"start": 1190352,
@@ -44621,21 +44530,6 @@
"start": 1192728,
"size": 16
},
{
"path": "object74/gUnk_08123328.bin",
"start": 1192744,
"size": 8
},
{
"path": "object74/gUnk_08123344.bin",
"start": 1192772,
"size": 38
},
{
"path": "object74/gUnk_0812336A.bin",
"start": 1192810,
"size": 26
},
{
"path": "animations/gSpriteAnimations_Bell_0.bin",
"start": 1192844,
@@ -45285,11 +45179,6 @@
"start": 1200144,
"size": 4
},
{
"path": "objectBD/gUnk_08125014.bin",
"start": 1200148,
"size": 40
},
{
"path": "animations/gSpriteAnimations_Pinwheel_0.bin",
"start": 1200232,
-21
View File
@@ -1,21 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120A30:: @ 08120A30
.incbin "object20/gUnk_08120A30.bin"
gUnk_08120A3C:: @ 08120A3C
.incbin "object20/gUnk_08120A3C.bin"
gUnk_08120A48:: @ 08120A48
.incbin "object20/gUnk_08120A48.bin"
gUnk_08120A54:: @ 08120A54
.4byte gUnk_08120A30
.4byte gUnk_08120A30
.4byte gUnk_08120A48
.4byte gUnk_08120A3C
.4byte gUnk_08120A3C
-24
View File
@@ -1,24 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0812057C:: @ 0812057C
.4byte sub_08084D58
.4byte sub_08084E5C
.4byte sub_08084EB4
gUnk_08120588:: @ 08120588
.incbin "object11/gUnk_08120588.bin"
gUnk_0812059C:: @ 0812059C
.4byte sub_08084ECC
.4byte sub_08084ED8
.4byte sub_08084EFC
.4byte sub_08084F84
.4byte sub_08084F88
.4byte sub_08084F8C
gUnk_081205B4:: @ 081205B4
.incbin "object11/gUnk_081205B4.bin"
-12
View File
@@ -1,12 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081205BC:: @ 081205BC
.4byte sub_08084FD8
.4byte nullsub_115
.4byte sub_08085028
.4byte sub_080850B0
.4byte sub_080850CC
-12
View File
@@ -1,12 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081208B8:: @ 081208B8
.4byte sub_08087528
.4byte sub_080875F4
gUnk_081208C0:: @ 081208C0
.incbin "object1E/gUnk_081208C0.bin"
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120A28:: @ 08120A28
.4byte sub_08087824
.4byte sub_08087888
-25
View File
@@ -1,25 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120A68:: @ 08120A68
.4byte sub_08087A10
.4byte sub_08087AFC
.4byte 00000000
.4byte sub_08087B58
gUnk_08120A78:: @ 08120A78
.incbin "object21/gUnk_08120A78.bin"
gUnk_08120A7A:: @ 08120A7A
.incbin "object21/gUnk_08120A7A.bin"
gUnk_08120A80:: @ 08120A80
.4byte sub_08087B88
.4byte sub_08087B9C
.4byte sub_08087B9C
gUnk_08120A8C:: @ 08120A8C
.incbin "object21/gUnk_08120A8C.bin"
-13
View File
@@ -1,13 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121188:: @ 08121188
.4byte sub_0808A870
.4byte sub_0808A8C8
.4byte sub_0808A8E0
gUnk_08121194:: @ 08121194
.incbin "object30/gUnk_08121194.bin"
-19
View File
@@ -1,19 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081215E8:: @ 081215E8
.incbin "object3A/gUnk_081215E8.bin"
gUnk_08121638:: @ 08121638
.4byte sub_0808C6D4
.4byte sub_0808C74C
gUnk_08121640:: @ 08121640
.4byte sub_0808C858
.4byte sub_0808C8B8
gUnk_08121648:: @ 08121648
.incbin "object3A/gUnk_08121648.bin"
-18
View File
@@ -1,18 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081216BC:: @ 081216BC
.4byte sub_0808CF08
.4byte sub_0808CF5C
.4byte sub_0808D064
gUnk_081216C8:: @ 081216C8
.ifdef EU
@ TODO only small differences
.incbin "object3D/gUnk_081216C8_EU.bin"
.else
.incbin "object3D/gUnk_081216C8_1_USA-JP-DEMO_USA-DEMO_JP.bin"
.endif
-16
View File
@@ -1,16 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081217A8:: @ 081217A8
.4byte sub_0808DDB4
.4byte sub_0808DDE0
gUnk_081217B0:: @ 081217B0
.4byte sub_0808DDB4
.4byte sub_0808DDE8
gUnk_081217B8:: @ 081217B8
.incbin "object42/gUnk_081217B8.bin"
-15
View File
@@ -1,15 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121EB8:: @ 08121EB8
.4byte sub_0808F794
.4byte sub_0808F7A8
.4byte sub_0808F7D4
.4byte sub_0808F80C
.4byte sub_0808F858
.4byte sub_0808F8F0
.4byte sub_0808F914
.4byte sub_0808F940
-13
View File
@@ -1,13 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08122794:: @ 08122794
.4byte sub_080928C8
.4byte nullsub_119
gUnk_0812279C:: @ 0812279C
.4byte sub_08092930
.4byte sub_08092940
-16
View File
@@ -1,16 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08122950:: @ 08122950
.incbin "object64/gUnk_08122950.bin"
gUnk_0812295C:: @ 0812295C
.4byte sub_08093E3C
.4byte sub_08093EAC
gUnk_08122964:: @ 08122964
.4byte sub_08093ED0
.4byte sub_08093EF0
-9
View File
@@ -1,9 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081232A4:: @ 081232A4
.4byte sub_08097438
.4byte sub_080974A4
-21
View File
@@ -1,21 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08123328:: @ 08123328
.incbin "object74/gUnk_08123328.bin"
gUnk_08123330:: @ 08123330
.4byte sub_08097B84
.4byte sub_08097BDC
.4byte sub_08097C18
.4byte sub_08097C20
.4byte sub_08097C1C
gUnk_08123344:: @ 08123344
.incbin "object74/gUnk_08123344.bin"
gUnk_0812336A:: @ 0812336A
.incbin "object74/gUnk_0812336A.bin"
-11
View File
@@ -1,11 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811F7D8:: @ 0811F7D8
.4byte sub_08083BE0
.4byte sub_08083BF0
.4byte sub_08083C9C
.4byte sub_08083D28
-19
View File
@@ -1,19 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08124A10:: @ 08124A10
.4byte sub_080A0ADC
.4byte sub_080A0AF0
gUnk_08124A18:: @ 08124A18
.4byte sub_080A0AC4
.4byte sub_080A0AD0
gUnk_08124A20:: @ 08124A20
.4byte sub_080A0B4C
.4byte sub_080A0B60
.4byte sub_080A0B80
-15
View File
@@ -1,15 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08125014:: @ 08125014
.incbin "objectBD/gUnk_08125014.bin"
gUnk_0812503C:: @ 0812503C
.4byte sub_080A2274
.4byte sub_080A22B0
.4byte sub_080A22B0
.4byte sub_080A22B0
.4byte sub_080A22C4
-11
View File
@@ -1,11 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811F908:: @ 0811F908
.4byte sub_0808434C
.4byte sub_080843F8
.4byte sub_08084428
.4byte GetNextFrame
-14
View File
@@ -1,14 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08122780:: @ 08122780
.4byte sub_08092734
.4byte sub_08092850
gUnk_08122788:: @ 08122788
.4byte sub_0809274C
.4byte sub_080927AC
.4byte sub_080927D4
+1 -1
View File
@@ -16,7 +16,7 @@ void SortEntityAbove(Entity*, Entity*);
void SortEntityBelow(Entity*, Entity*);
u32 sub_0806F5A4(u32 idx);
u32 sub_0806F3E4(Entity*);
bool32 sub_0806F3E4(Entity*);
void LinearMoveUpdate(Entity*);
bool32 sub_0806FD54(Entity*);
u32 sub_0806FCAC(Entity*, Entity*);
+9 -1
View File
@@ -38,7 +38,7 @@ extern void GenericKnockback2(Entity*);
extern LayerStruct* GetLayerByIndex(u32);
extern u32 GetRandomByWeight(const u8*);
extern u32 GetTileIndex(u32, u32);
extern void GiveItem(u32, u32);
extern u32 GiveItem(u32, u32);
extern void HandlePlayerLife(Entity*);
extern bool32 HasSwordEquipped();
extern bool32 IsColliding(Entity*, Entity*);
@@ -64,6 +64,14 @@ extern bool32 ProcessMovementInternal(Entity*, s32, s32, u32);
extern void SetDirtTile(u32);
/** @see Item */
extern void SetInventoryValue(u32, u32);
/**
* @brief Sets multiple tiles at once
*
* @param tileData [u16 tileIndex, s16 positionOffset], ends with 0xffff
* @param basePosition the position the offsets in tileData are based on
* @param layer the tile layer
*/
extern void SetMultipleTiles(u16* tileData, u32 basePosition, u32 layer);
extern void SoundReqClipped(Entity*, u32);
extern void TryLoadPrologueHyruleTown(void);
extern void UnloadGFXSlots(Entity*);
+152 -152
View File
@@ -226,198 +226,198 @@ typedef enum {
OBJECT_C1,
} Object;
void ItemOnGround(Entity*);
void DeathFx(Entity*);
void ItemOnGround();
void DeathFx();
void ItemForSale();
void Button(Entity*);
void MinishEmoticon(Entity*);
void Pot(Entity*);
void Button();
void MinishEmoticon();
void Pot();
void EzloCap();
void BlockPushed();
void LockedDoor(Entity*);
void Object9(Entity*);
void ObjectA(Entity*);
void ObjectB(Entity*);
void LockedDoor();
void Object9();
void ObjectA();
void ObjectB();
void ChestSpawner();
void ObjectD(Entity*);
void ObjectE(Entity*);
void SpecialFx(Entity*);
void Object10(Entity*);
void Object11(Entity*);
void Object12(Entity*);
void Railtrack(Entity*);
void ObjectD();
void ObjectE();
void SpecialFx();
void Object10();
void Object11();
void Object12();
void Railtrack();
void LilypadLarge();
void Object15(Entity*);
void FloatingPlatform(Entity*);
void Object17(Entity*);
void EvilSpirit(Entity*);
void HouseDoorExterior(Entity*);
void Rupee(Entity*);
void GreatFairy(Entity*);
void Object1C(Entity*);
void Object1D(Entity*);
void Object1E(Entity*);
void Object1F(Entity*);
void Object20(Entity*);
void Object21(Entity*);
void Object15();
void FloatingPlatform();
void Object17();
void EvilSpirit();
void HouseDoorExterior();
void Rupee();
void GreatFairy();
void Object1C();
void Object1D();
void Object1E();
void Object1F();
void Object20();
void Object21();
void FigurineDevice();
void EyeSwitch(Entity*);
void EyeSwitch();
void PressurePlate();
void BigBarrel(Entity*);
void BarrelInside(Entity*);
void BigBarrel();
void BarrelInside();
void PushableStatue();
void Object28(Entity*);
void AmbientClouds(Entity*);
void Object2A(Entity*);
void Object2B(Entity*);
void Object28();
void AmbientClouds();
void Object2A();
void Object2B();
void Beanstalk();
void Smoke(Entity*);
void Smoke();
void PushableRock();
void HittableLever();
void Object30(Entity*);
void FrozenFlower(Entity*);
void Object30();
void FrozenFlower();
void PullableMushroom();
void Bollard(Entity*);
void WarpPoint(Entity*);
void Bollard();
void WarpPoint();
void Object35();
void Object36(Entity*);
void Object37(Entity*);
void JarPortal(Entity*);
void Object36();
void Object37();
void JarPortal();
void BossDoor();
void Object3A(Entity*);
void MacroMushromStalks(Entity*);
void MacroPlayer(Entity*);
void Object3D(Entity*);
void Object3A();
void MacroMushromStalks();
void MacroPlayer();
void Object3D();
void Object3E();
void GiantLeaf(Entity*);
void GiantLeaf();
void Fairy();
void LadderUp(Entity*);
void Object42(Entity*);
void LadderUp();
void Object42();
void Object43();
void Object44(Entity*);
void Object45(Entity*);
void GiantBookLadder(Entity*);
void HeartContainer(Entity*);
void FileScreenObjects(Entity*);
void Object49(Entity*);
void BackgroundCloud(Entity*);
void Object4B(Entity*);
void Object44();
void Object45();
void GiantBookLadder();
void HeartContainer();
void FileScreenObjects();
void Object49();
void BackgroundCloud();
void Object4B();
void PushableFurniture();
void Furniture(Entity*);
void MinishSizedEntrance(Entity*);
void Archway(Entity*);
void GiantRock(Entity*);
void GiantRock2(Entity*);
void Object52(Entity*);
void Object53(Entity*);
void Furniture();
void MinishSizedEntrance();
void Archway();
void GiantRock();
void GiantRock2();
void Object52();
void Object53();
void PullableLever();
void Minecart(Entity*);
void ThoughtBubble(Entity*);
void HiddenLadderDown(Entity*);
void GentariCurtain(Entity*);
void Minecart();
void ThoughtBubble();
void HiddenLadderDown();
void GentariCurtain();
void LavaPlatform();
void Paper(Entity*);
void Object5B(Entity*);
void Mask(Entity*);
void HouseDoorInterior(Entity*);
void Whirlwind(Entity*);
void ObjectBlockingStairs(Entity*);
void SwordsmanNewsletter(Entity*);
void Paper();
void Object5B();
void Mask();
void HouseDoorInterior();
void Whirlwind();
void ObjectBlockingStairs();
void SwordsmanNewsletter();
void Object61();
void GiantTwig();
void Object63(Entity*);
void Object64(Entity*);
void LadderHoleInBookshelf(Entity*);
void Object66(Entity*);
void Object67(Entity*);
void Object63();
void Object64();
void LadderHoleInBookshelf();
void Object66();
void Object67();
void Object68();
void Object69(Entity*);
void Object6A(Entity*);
void Object69();
void Object6A();
void CrenelBeanSprout();
void MinecartDoor();
void ObjectOnPillar();
void MineralWaterSource(Entity*);
void MinishSizedArchway(Entity*);
void Object70(Entity*);
void MineralWaterSource();
void MinishSizedArchway();
void Object70();
void PushableGrave();
void StoneTablet(Entity*);
void LilypadSmall(Entity*);
void Object74(Entity*);
void Object75(Entity*);
void Object76(Entity*);
void Bell(Entity*);
void MacroDecoration(Entity*);
void Object79(Entity*);
void Steam(Entity*);
void StoneTablet();
void LilypadSmall();
void Object74();
void Object75();
void Object76();
void Bell();
void MacroDecoration();
void Object79();
void Steam();
void PushableLever();
void MacroShoes(Entity*);
void MacroShoes();
void ObjectOnSpinyBeetle();
void Object7E(Entity*);
void PicoBloom(Entity*);
void Board(Entity*);
void Object81(Entity*);
void BigVortex(Entity*);
void Object7E();
void PicoBloom();
void Board();
void Object81();
void BigVortex();
void BigPushableLever();
void SmallIceBlock();
void BigIceBlock();
void Object86(Entity*);
void OctorokBossObject(Entity*);
void MacroBook(Entity*);
void MazaalBossObject(Entity*);
void CabinFurniture(Entity*);
void Object86();
void OctorokBossObject();
void MacroBook();
void MazaalBossObject();
void CabinFurniture();
void DoubleBookshelf();
void Book(Entity*);
void Fireplace(Entity*);
void Book();
void Fireplace();
void Object8E();
void FrozenWaterElement();
void Object90(Entity*);
void Object90();
void FrozenOctorok();
void BakerOven(Entity*);
void Lamp(Entity*);
void WindTribeFlag(Entity*);
void Bird(Entity*);
void Object96(Entity*);
void BakerOven();
void Lamp();
void WindTribeFlag();
void Bird();
void Object96();
void KeyStealingTakkuri();
void Object98(Entity*);
void Object99(Entity*);
void MacroAcorn(Entity*);
void Object9B(Entity*);
void TreeHidingPortal(Entity*);
void LightableSwitch(Entity*);
void TreeThorns(Entity*);
void Fan(Entity*);
void AngryStatue(Entity*);
void PalaceArchway(Entity*);
void ObjectA2(Entity*);
void Cloud(Entity*);
void MinishLight(Entity*);
void FireballChain(Entity*);
void ObjectA6(Entity*);
void ObjectA7(Entity*);
void Object98();
void Object99();
void MacroAcorn();
void Object9B();
void TreeHidingPortal();
void LightableSwitch();
void TreeThorns();
void Fan();
void AngryStatue();
void PalaceArchway();
void ObjectA2();
void Cloud();
void MinishLight();
void FireballChain();
void ObjectA6();
void ObjectA7();
void ObjectA8();
void ObjectA9(Entity*);
void WaterfallOpening(Entity*);
void ObjectAB(Entity*);
void ObjectA9();
void WaterfallOpening();
void ObjectAB();
void FourElements();
void ObjectAD(Entity*);
void FloatingBlock(Entity*);
void ObjectAF(Entity*);
void MetalDoor(Entity*);
void JailBars(Entity*);
void ObjectB2(Entity*);
void ObjectB3(Entity*);
void ObjectB4(Entity*);
void ObjectB5(Entity*);
void ObjectB6(Entity*);
void Well(Entity*);
void ObjectAD();
void FloatingBlock();
void ObjectAF();
void MetalDoor();
void JailBars();
void ObjectB2();
void ObjectB3();
void ObjectB4();
void ObjectB5();
void ObjectB6();
void Well();
void WindTribeTeleporter();
void ObjectB9(Entity*);
void GyorgBossObject(Entity*);
void Windcrest(Entity*);
void LitArea(Entity*);
void ObjectBD(Entity*);
void Pinwheel(Entity*);
void ObjectBF(Entity*);
void ObjectB9();
void GyorgBossObject();
void Windcrest();
void LitArea();
void ObjectBD();
void Pinwheel();
void ObjectBF();
void EnemyItem();
void ObjectC1();
+39 -40
View File
@@ -631,14 +631,14 @@ SECTIONS {
src/object/lockedDoor.o(.text);
asm/object/object9.o(.text);
src/object/objectA.o(.text);
asm/object/objectB.o(.text);
src/object/objectB.o(.text);
src/object/chestSpawner.o(.text);
asm/object/objectD.o(.text);
asm/object/objectE.o(.text);
src/object/objectD.o(.text);
src/object/objectE.o(.text);
src/object/specialFx.o(.text);
asm/object/object10.o(.text);
asm/object/object11.o(.text);
asm/object/object12.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);
@@ -650,10 +650,10 @@ SECTIONS {
src/object/greatFairy.o(.text);
src/object/object1C.o(.text);
src/object/object1D.o(.text);
asm/object/object1E.o(.text);
src/object/object1E.o(.text);
asm/object/object1F.o(.text);
asm/object/object20.o(.text);
asm/object/object21.o(.text);
src/object/object20.o(.text);
src/object/object21.o(.text);
src/object/figurineDevice.o(.text);
src/object/eyeSwitch.o(.text);
src/object/pressurePlate.o(.text);
@@ -668,7 +668,7 @@ SECTIONS {
src/object/smoke.o(.text);
src/object/pushableRock.o(.text);
src/object/hittableLever.o(.text);
asm/object/object30.o(.text);
src/object/object30.o(.text);
src/object/frozenFlower.o(.text);
src/object/pullableMushroom.o(.text);
src/object/bollard.o(.text);
@@ -678,18 +678,18 @@ SECTIONS {
asm/object/object37.o(.text);
src/object/jarPortal.o(.text);
src/object/bossDoor.o(.text);
asm/object/object3A.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);
asm/object/code_0808C964.o(.text);
src/object/macroPlayer.o(.text);
asm/object/object3D.o(.text);
src/object/object3D.o(.text);
src/object/object3E.o(.text);
src/object/giantLeaf.o(.text);
src/object/fairy.o(.text);
src/object/ladderUp.o(.text);
asm/object/object42.o(.text);
src/object/object42.o(.text);
src/object/object43.o(.text);
asm/object/object44.o(.text);
asm/object/object45.o(.text);
@@ -698,7 +698,7 @@ SECTIONS {
src/object/fileScreenObjects.o(.text);
src/object/object49.o(.text);
src/object/backgroundCloud.o(.text);
asm/object/object4B.o(.text);
src/object/object4B.o(.text);
src/object/pushableFurniture.o(.text);
src/object/furniture.o(.text);
src/object/minishSizedEntrance.o(.text);
@@ -714,8 +714,8 @@ SECTIONS {
src/object/hiddenLadderDown.o(.text);
src/object/gentariCurtains.o(.text);
src/object/lavaPlatform.o(.text);
asm/object/paper.o(.text);
asm/object/object5B.o(.text);
src/object/paper.o(.text);
src/object/object5B.o(.text);
src/object/mask.o(.text);
src/object/houseDoorInterior.o(.text);
src/object/whirlwind.o(.text);
@@ -724,7 +724,7 @@ SECTIONS {
src/object/object61.o(.text);
src/object/giantTwig.o(.text);
asm/object/object63.o(.text);
asm/object/object64.o(.text);
src/object/object64.o(.text);
src/object/ladderHoleInBookshelf.o(.text);
asm/object/object66.o(.text);
asm/object/object67.o(.text);
@@ -736,11 +736,11 @@ SECTIONS {
src/object/objectOnPillar.o(.text);
src/object/mineralWaterSource.o(.text);
src/object/minishSizedArchway.o(.text);
asm/object/object70.o(.text);
src/object/object70.o(.text);
src/object/pushableGrave.o(.text);
src/object/stoneTablet.o(.text);
src/object/lilypadSmall.o(.text);
asm/object/object74.o(.text);
src/object/object74.o(.text);
src/object/bell.o(.text);
src/object/macroDecorations.o(.text);
asm/object/object79.o(.text);
@@ -803,7 +803,7 @@ SECTIONS {
src/object/metalDoor.o(.text);
src/object/jailBars.o(.text);
src/object/objectB2.o(.text);
asm/object/objectB3.o(.text);
src/object/objectB3.o(.text);
asm/object/objectB4.o(.text);
src/object/objectB5.o(.text);
asm/object/objectB6.o(.text);
@@ -813,7 +813,7 @@ SECTIONS {
src/object/gyorgBossObject.o(.text);
src/object/windcrest.o(.text);
src/object/litArea.o(.text);
asm/object/objectBD.o(.text);
src/object/objectBD.o(.text);
src/object/pinwheel.o(.text);
src/object/objectBF.o(.text);
src/object/enemyItem.o(.text);
@@ -1347,16 +1347,16 @@ SECTIONS {
src/object/lockedDoor.o(.rodata);
data/const/object/object9.o(.rodata);
data/animations/object/object9.o(.rodata);
data/const/object/objectB.o(.rodata);
src/object/objectB.o(.rodata);
src/object/chestSpawner.o(.rodata);
data/animations/object/chestSpawner.o(.rodata);
data/const/object/objectD.o(.rodata);
src/object/objectD.o(.rodata);
data/animations/object/objectD.o(.rodata);
src/object/specialFx.o(.rodata);
data/animations/object/specialFx.o(.rodata);
data/const/object/object10.o(.rodata);
data/const/object/object11.o(.rodata);
data/const/object/object12.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);
@@ -1370,12 +1370,11 @@ SECTIONS {
src/object/greatFairy.o(.rodata);
data/animations/npc/greatFairy.o(.rodata);
data/const/object/object1D.o(.rodata);
data/const/object/object1E.o(.rodata);
src/object/object1E.o(.rodata);
data/animations/object/object1E.o(.rodata);
data/const/object/object1F.o(.rodata);
data/const/object/object20.o(.rodata);
data/animations/object/object20.o(.rodata);
data/const/object/object21.o(.rodata);
src/object/object20.o(.rodata);
src/object/object21.o(.rodata);
src/object/figurineDevice.o(.rodata);
data/animations/object/figurineDevice.o(.rodata);
src/object/eyeSwitch.o(.rodata);
@@ -1396,7 +1395,7 @@ SECTIONS {
src/object/pushableRock.o(.rodata);
data/animations/object/pushableRock.o(.rodata);
src/object/hittableLever.o(.rodata);
data/const/object/object30.o(.rodata);
src/object/object30.o(.rodata);
data/const/object/object31.o(.rodata);
src/object/pullableMushroom.o(.rodata);
data/animations/object/pullableMushroom.o(.rodata);
@@ -1412,16 +1411,16 @@ SECTIONS {
data/animations/object/jarPortal.o(.rodata);
src/object/bossDoor.o(.rodata);
data/animations/object/bossDoor.o(.rodata);
data/const/object/object3A.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/macroPlayer.o(.rodata);
data/const/object/object3D.o(.rodata);
src/object/object3D.o(.rodata);
src/object/object3E.o(.rodata);
data/const/object/giantLeaf.o(.rodata);
src/object/fairy.o(.rodata);
data/const/object/object42.o(.rodata);
src/object/object42.o(.rodata);
src/object/object43.o(.rodata);
data/animations/object/object43.o(.rodata);
data/const/object/object44.o(.rodata);
@@ -1435,7 +1434,7 @@ SECTIONS {
data/animations/object/fileScreenObjects.o(.rodata);
data/const/object/object49.o(.rodata);
data/const/object/backgroundCloud.o(.rodata);
data/const/object/object4B.o(.rodata);
src/object/object4B.o(.rodata);
src/object/pushableFurniture.o(.rodata);
data/const/object/furniture.o(.rodata);
data/animations/object/furniture.o(.rodata);
@@ -1455,8 +1454,8 @@ SECTIONS {
data/animations/object/gentariCurtains.o(.rodata);
src/object/lavaPlatform.o(.rodata);
data/animations/object/lavaPlatform.o(.rodata);
data/const/object/paper.o(.rodata);
data/const/object/object5B.o(.rodata);
src/object/paper.o(.rodata);
src/object/object5B.o(.rodata);
data/const/object/mask.o(.rodata);
src/object/houseDoorInterior.o(.rodata);
src/object/whirlwind.o(.rodata);
@@ -1466,7 +1465,7 @@ SECTIONS {
src/object/object61.o(.rodata);
src/object/giantTwig.o(.rodata);
data/const/object/object63.o(.rodata);
data/const/object/object64.o(.rodata);
src/object/object64.o(.rodata);
data/animations/object/object64.o(.rodata);
src/object/ladderHoleInBookshelf.o(.rodata);
data/const/object/object67.o(.rodata);
@@ -1479,11 +1478,11 @@ SECTIONS {
src/object/minecartDoor.o(.rodata);
src/object/objectOnPillar.o(.rodata);
data/const/object/mineralWaterSource.o(.rodata);
data/const/object/object70.o(.rodata);
src/object/object70.o(.rodata);
src/object/pushableGrave.o(.rodata);
src/object/stoneTablet.o(.rodata);
data/const/object/lilypadSmall.o(.rodata);
data/const/object/object74.o(.rodata);
src/object/object74.o(.rodata);
data/const/object/bell.o(.rodata);
data/animations/object/bell.o(.rodata);
src/object/macroDecorations.o(.rodata);
@@ -1559,7 +1558,7 @@ SECTIONS {
data/const/object/jailBars.o(.rodata);
data/animations/object/jailBars.o(.rodata);
data/animations/object/objectB2.o(.rodata);
data/const/object/objectB3.o(.rodata);
src/object/objectB3.o(.rodata);
data/animations/object/objectB3.o(.rodata);
data/const/object/objectB4.o(.rodata);
data/animations/object/objectB4.o(.rodata);
@@ -1568,7 +1567,7 @@ SECTIONS {
data/const/object/objectB9.o(.rodata);
src/object/gyorgBossObject.o(.rodata);
data/const/object/windcrest.o(.rodata);
data/const/object/objectBD.o(.rodata);
src/object/objectBD.o(.rodata);
data/const/object/pinwheel.o(.rodata);
data/animations/object/pinwheel.o(.rodata);
src/object/objectC1.o(.rodata);
+3 -3
View File
@@ -55,7 +55,7 @@ u32 sub_0806F39C(Entity* ent) {
return 0;
}
u32 sub_0806F3E4(Entity* ent) {
bool32 sub_0806F3E4(Entity* ent) {
Entity tmp_ent;
s8* p;
@@ -95,9 +95,9 @@ u32 sub_0806F3E4(Entity* ent) {
gPlayerState.item->type = 1;
SoundReq(SFX_EF);
}
return 1;
return TRUE;
}
return 0;
return FALSE;
}
void sub_0806F4E8(Entity* ent) {
+1 -1
View File
@@ -2168,7 +2168,7 @@ s32 GetItemPrice(u32 item) {
return ptr[0];
}
ASM_FUNC("asm/non_matching/game/GiveItem.inc", void GiveItem(u32 a, u32 b))
ASM_FUNC("asm/non_matching/game/GiveItem.inc", u32 GiveItem(u32 a, u32 b))
// TODO Adapt ItemMetaData struct
void sub_08054288(s32 param_1) {
+1 -1
View File
@@ -310,7 +310,7 @@ void sub_080842D8(ChestSpawnerEntity* this) {
if ((super->y.HALF.HI & 8) != 0) {
index += 2;
}
sub_0801AF18((u8*)gUnk_0811F898[index], COORD_TO_TILE(super), super->collisionLayer);
SetMultipleTiles((u16*)gUnk_0811F898[index], COORD_TO_TILE(super), super->collisionLayer);
}
const Hitbox gUnk_0811F8A8 = { 0, -3, { 0, 0, 0, 0 }, 6, 6 };
+6 -6
View File
@@ -8,8 +8,8 @@
extern void sub_080A0960(Entity*, u32);
extern void (*const gUnk_08124950[])(Entity*);
extern u8 gUnk_08124960;
extern u8 gUnk_0812497A;
extern u16 gUnk_08124960[];
extern u16 gUnk_0812497A[];
void JailBars(Entity* this) {
gUnk_08124950[this->action](this);
@@ -49,11 +49,11 @@ void nullsub_127(Entity* this) {
}
void sub_080A0960(Entity* this, u32 arg1) {
u8* puVar1;
u16* puVar1;
puVar1 = &gUnk_08124960;
puVar1 = gUnk_08124960;
if (arg1 == 1) {
puVar1 = &gUnk_0812497A;
puVar1 = gUnk_0812497A;
}
sub_0801AF18(puVar1, COORD_TO_TILE(this), 1);
SetMultipleTiles(puVar1, COORD_TO_TILE(this), 1);
}
+142
View File
@@ -0,0 +1,142 @@
/**
* @file object11.c
* @ingroup Objects
*
* @brief Object11 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[8];
/*0x70*/ u16 unk_70;
/*0x72*/ u8 unk_72;
} Object11Entity;
typedef struct {
u8 unk_0;
u8 unk_1;
u8 unk_2;
} struct_08120588;
void Object11_Init(Object11Entity*);
void Object11_Action1(Object11Entity*);
void Object11_Action2(Object11Entity*);
void Object11_Action2SubAction0(Object11Entity*);
void Object11_Action2SubAction1(Object11Entity*);
void Object11_Action2SubAction2(Object11Entity*);
void Object11_Action2SubAction3(Object11Entity*);
void Object11_Action2SubAction4(Object11Entity*);
void Object11_Action2SubAction5(Object11Entity*);
void Object11(Object11Entity* this) {
static void (*const Object11_Actions[])(Object11Entity*) = {
Object11_Init,
Object11_Action1,
Object11_Action2,
};
if (!EntityIsDeleted(super)) {
Object11_Actions[super->action](this);
}
}
extern const Hitbox gUnk_081205B4;
void Object11_Init(Object11Entity* this) {
static const struct_08120588 gUnk_08120588[] = {
{ 0, 32, 1 }, { 0, 64, 2 }, { 0, 32, 2 }, { 13, 1, 0 }, { 22, 1, 0 },
};
if (super->type == 3) {
Object11_Action2SubAction5(this);
}
sub_08004168(super);
if (super->type == 4) {
Object11_Action2SubAction5(this);
}
super->action = 2;
super->flags |= ENT_COLLIDE;
super->spriteRendering.b3 = 2;
super->field_0x1d = gUnk_08120588[super->type].unk_1;
super->field_0x1c = gUnk_08120588[super->type].unk_2;
super->speed = 0x80;
super->collisionLayer = gPlayerEntity.collisionLayer;
super->health = 1;
super->field_0x3c = 7;
super->hitType = 0x6e;
super->flags2 = 4;
super->hitbox = (Hitbox*)&gUnk_081205B4;
this->unk_72 = 0;
this->unk_70 = GetTileIndex(COORD_TO_TILE(super), super->collisionLayer);
SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer);
InitializeAnimation(super, gUnk_08120588[super->type].unk_0);
}
void Object11_Action1(Object11Entity* this) {
if (((gPlayerState.field_0x1c & 0xf) != 1) || ((super->bitfield & 0x7f) != 0x13)) {
sub_0807BA8C(COORD_TO_TILE(super), super->collisionLayer);
DeleteThisEntity();
}
}
void Object11_Action2(Object11Entity* this) {
static void (*const Object11_Action2SubActions[])(Object11Entity*) = {
Object11_Action2SubAction0, Object11_Action2SubAction1, Object11_Action2SubAction2,
Object11_Action2SubAction3, Object11_Action2SubAction4, Object11_Action2SubAction5,
};
Object11_Action2SubActions[super->subAction](this);
}
const Hitbox gUnk_081205B4 = { 0, 0, { 6, 3, 3, 6 }, 6, 6 };
void Object11_Action2SubAction0(Object11Entity* this) {
super->subAction = 1;
Object11_Action2SubAction1(this);
}
void Object11_Action2SubAction1(Object11Entity* this) {
Object11_Action1(this);
sub_0806F4E8(super);
if ((super->field_0x1d != 0) && (--super->field_0x1d == 0)) {
super->subAction = 2;
}
}
void Object11_Action2SubAction2(Object11Entity* this) {
if (this->unk_72 == 0) {
this->unk_72 = 1;
super->spriteOffsetX = 0;
sub_0807B9B8(this->unk_70, COORD_TO_TILE(super), super->collisionLayer);
}
if (((gPlayerState.field_0x1c & 0xf) != 1) || ((super->bitfield & 0x7f) != 0x13)) {
Object11_Action2SubAction5(this);
}
if (sub_0806F3E4(super) && ((super->field_0x1c & 0xf) == 1)) {
DeleteThisEntity();
}
}
void Object11_Action2SubAction3(Object11Entity* this) {
}
void Object11_Action2SubAction4(Object11Entity* this) {
}
void Object11_Action2SubAction5(Object11Entity* this) {
switch (super->type2) {
case 0xff:
break;
case 0xf:
CreateFx(super, super->actionDelay, 0x80);
break;
case 0:
break;
default:
CreateObjectWithParent(super, super->type2, super->actionDelay, 0);
break;
}
DeleteThisEntity();
}
+98
View File
@@ -0,0 +1,98 @@
/**
* @file object12.c
* @ingroup Objects
*
* @brief Object12 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "screen.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[30];
/*0x86*/ u16 unk_86;
} Object12Entity;
void Object12_Init(Object12Entity*);
void Object12_Action1(Object12Entity*);
void Object12_Action2(Object12Entity*);
void Object12_Action3(Object12Entity*);
void Object12_Action4(Object12Entity*);
void sub_080850FC(Object12Entity*);
void Object12(Object12Entity* this) {
static void (*const Object12_Actions[])(Object12Entity*) = {
Object12_Init, Object12_Action1, Object12_Action2, Object12_Action3, Object12_Action4,
};
Object12_Actions[super->action](this);
}
void Object12_Init(Object12Entity* this) {
if (super->type == 0) {
if (CheckFlags(this->unk_86)) {
DeleteThisEntity();
}
super->action = 1;
super->spritePriority.b0 = 7;
sub_080850FC(this);
} else {
super->action = 2;
super->actionDelay = 0xf0;
super->speed = 0x80;
super->direction = 0x18;
}
super->frameIndex = 0;
}
void Object12_Action1(Object12Entity* this) {
}
NONMATCH("asm/non_matching/object12/Object12_Action2.inc", void Object12_Action2(Object12Entity* this)) {
u32 tmp;
if (--super->actionDelay == 0) {
super->action = 3;
super->actionDelay = 0x1e;
super->spriteOffsetY = 4;
gScreen.lcd.displayControl |= 0x2000;
gScreen.controls.windowInsideControl = 0x1f;
gScreen.controls.windowOutsideControl = 0xf;
tmp = super->x.HALF.HI - gRoomControls.scroll_x;
gScreen.controls.window0HorizontalDimensions = (((tmp - 0x18) & 0xff) << 8) | ((tmp + 0x18) & 0xff);
tmp = super->y.HALF.HI - gRoomControls.scroll_y;
gScreen.controls.window0VerticalDimensions = (((tmp - 0x18) & 0xff) << 8) | ((tmp + 0x18) & 0xff);
}
}
END_NONMATCH
void Object12_Action3(Object12Entity* this) {
if (--super->actionDelay == 0) {
super->action = 4;
super->actionDelay = 0x60;
}
}
void Object12_Action4(Object12Entity* this) {
LinearMoveUpdate(super);
if (--super->actionDelay == 0) {
gScreen.lcd.displayControl &= 0xdfff;
DeleteEntity(super);
}
}
void sub_080850FC(Object12Entity* this) {
u32 position = COORD_TO_TILE(super);
u32 layer = super->collisionLayer;
SetTile(0x403d, position - 0x41, layer);
SetTile(0x403d, position - 0x40, layer);
SetTile(0x403d, position - 0x3f, layer);
SetTile(0x403d, position - 1, layer);
SetTile(0x403d, position, layer);
SetTile(0x403d, position + 1, layer);
SetTile(0x403d, position + 0x3f, layer);
SetTile(0x403d, position + 0x40, layer);
SetTile(0x403d, position + 0x41, layer);
}
+109
View File
@@ -0,0 +1,109 @@
/**
* @file object1E.c
* @ingroup Objects
*
* @brief Object1E object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "area.h"
void sub_08087528(Entity*);
void sub_080875F4(Entity*);
void sub_08087640(Entity*);
void Object1E(Entity* this) {
static void (*const gUnk_081208B8[])(Entity*) = {
sub_08087528,
sub_080875F4,
};
if (!EntityIsDeleted(this)) {
gUnk_081208B8[this->action](this);
}
}
NONMATCH("asm/non_matching/object1E/sub_08087528.inc", void sub_08087528(Entity* this)) {
u32 palette;
this->action = 1;
this->animationState = gPlayerEntity.animationState >> 1;
this->spriteRendering.b3 = 2;
this->spritePriority.b0 = 3;
this->spriteOrientation.flipY--;
if (this->type2 != 0) {
this->palette.b.b0 = 1;
if (this->animationState == 1) {
this->spriteSettings.flipX = 1;
}
sub_08087640(this);
} else {
if (gArea.locationIndex == 0x10) {
palette = 0x16a;
} else {
palette = 4;
}
ChangeObjPalette(this, palette);
switch (this->animationState) {
case 1:
this->spriteSettings.flipX = 1;
if (this->type == 0x40) {
this->y.HALF.HI += 4;
}
break;
case 3:
if (this->type == 0x40) {
this->y.HALF.HI += 4;
}
break;
default:
if (this->type == 0x40) {
this->spriteSettings.flipX = 1;
}
break;
}
}
SetDefaultPriority(this, 3);
InitializeAnimation(this, this->type2 * 4 + this->animationState);
}
END_NONMATCH
void sub_080875F4(Entity* this) {
GetNextFrame(this);
if ((this->frame & 0x80) != 0) {
DeleteThisEntity();
}
if (this->type2 != 0) {
this->spritePriority.b0 = gPlayerEntity.spritePriority.b0 + 1 - this->frame;
}
}
void sub_08087640(Entity* this) {
static const s8 gUnk_081208C0[] = { 0, -12, 16, 0, 0, 15, -16, 0 };
s32 oldX;
s32 oldY;
u32 tmp;
const s8* ptr;
oldX = this->x.HALF.HI;
oldY = this->y.HALF.HI;
ptr = &gUnk_081208C0[this->animationState * 2];
this->x.HALF.HI += ptr[0];
this->y.HALF.HI += ptr[1];
if (gRoomControls.area == 3 && gRoomControls.room == 4) {
#ifdef EU
tmp = 0x18;
} else {
tmp = 0x17;
#else
tmp = 0x17;
} else {
tmp = 0x16;
#endif
}
CreateRandomItemDrop(this, tmp);
this->x.HALF.HI = oldX;
this->y.HALF.HI = oldY;
}
+91
View File
@@ -0,0 +1,91 @@
/**
* @file object20.c
* @ingroup Objects
*
* @brief Object20 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
void sub_08087824(Entity*);
void sub_08087888(Entity*);
void sub_080878CC(Entity*);
void (*const gUnk_08120A28[])(Entity*) = {
sub_08087824,
sub_08087888,
};
const Hitbox3D gUnk_08120A30 = { 0, 0, { 0, 0, 0, 0 }, 6, 6, 10, { 0, 0, 0 } };
const Hitbox3D gUnk_08120A3C = { 0, 0, { 0, 0, 0, 0 }, 12, 12, 16, { 0, 0, 0 } };
const Hitbox3D gUnk_08120A48 = { 0, 0, { 0, 0, 0, 0 }, 16, 16, 20, { 0, 0, 0 } };
const Hitbox3D* const gUnk_08120A54[] = { &gUnk_08120A30, &gUnk_08120A30, &gUnk_08120A48, &gUnk_08120A3C,
&gUnk_08120A3C };
void Object20(Entity* this) {
gUnk_08120A28[this->action](this);
}
void sub_08087824(Entity* this) {
if (this->collisionLayer == 0) {
ResolveCollisionLayer(this);
}
this->action = 1;
this->flags |= 0x80;
this->field_0x3c = 0x13;
this->health = 0xff;
this->hitType = 0xa9;
this->hurtType = 0x16;
this->hitbox = (Hitbox*)gUnk_08120A54[0];
this->flags2 = 0x8b;
sub_080878CC(this);
InitializeAnimation(this, 1);
sub_0801766C(this);
EnqueueSFX(SFX_ITEM_BOMB_EXPLODE);
}
void sub_08087888(Entity* this) {
GetNextFrame(this);
if ((this->frame & 0x80) != 0) {
DeleteThisEntity();
} else {
if (this->frame < 5) {
this->hitbox = (Hitbox*)gUnk_08120A54[this->frame];
} else {
this->flags &= 0x7f;
}
}
}
NONMATCH("asm/non_matching/object20/sub_080878CC.inc", void sub_080878CC(Entity* this)) {
s32 x;
s32 y;
s32 itX;
s32 itY;
u32 layer;
u32 tileType;
u32 pos;
x = this->x.HALF.HI;
y = this->y.HALF.HI;
layer = this->collisionLayer;
for (itX = -0x10; itX < 0x11; itX += 0x10) {
for (itY = -0x10; itY < 0x11; itY += 0x10) {
pos = TILE((u32)x + itX, (u32)y + itY);
if (sub_080B1AE0(pos, layer) == 0x2e) {
tileType = GetTileType(pos, layer);
if (tileType == 0x368 || tileType == 0x367
/*(tileType < 0x369) && (0x366 < tileType)*/) {
sub_08008796(this, 3, x + itX, y + itY);
} else {
SetTile(0x4022, pos, layer);
}
} else {
sub_08008796(this, 3, x + itX, y + itY);
}
}
}
}
END_NONMATCH
+153
View File
@@ -0,0 +1,153 @@
/**
* @file object21.c
* @ingroup Objects
*
* @brief Object21 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x18];
/*0x80*/ u32 unk_80;
/*0x84*/ u32 unk_84;
} Object21Entity;
void sub_08087A10(Object21Entity*);
void sub_08087AFC(Object21Entity*);
void sub_08087B58(Object21Entity*);
void sub_08087B88(Object21Entity*);
void sub_08087B9C(Object21Entity*);
void sub_08087B9C(Object21Entity*);
void Object21(Object21Entity* this) {
static void (*const gUnk_08120A68[])(Object21Entity*) = {
sub_08087A10,
sub_08087AFC,
NULL,
sub_08087B58,
};
gUnk_08120A68[super->action](this);
GetNextFrame(super);
if (super->actionDelay != 0) {
super->actionDelay--;
} else {
if (super->animIndex == 0xa) {
InitializeAnimation(super, 0xd);
} else if ((super->frame & 0x80) != 0) {
DeleteThisEntity();
}
}
if (super->speed != 0) {
LinearMoveUpdate(super);
if (super->speed > 0x10) {
super->speed -= 0x10;
} else {
super->speed = 0;
}
}
}
extern const Hitbox gUnk_08120A8C;
void sub_08087A10(Object21Entity* this) {
static const u8 gUnk_08120A78[] = {
3,
63,
};
static const u8 gUnk_08120A7A[] = {
15, 24, 30, 35, 0, 0,
};
u32 rand;
u32 tmp;
super->action = 1;
if (super->type2 != 0) {
ChangeObjPalette(super, 3);
}
if (super->type > 2) {
ChangeObjPalette(super, gUnk_08120A78[super->type - 3]);
}
switch (super->type) {
case 4:
super->collisionLayer = 2;
UpdateSpriteForCollisionLayer(super);
case 0:
case 3:
super->flags |= ENT_COLLIDE;
super->health = 1;
super->field_0x3c = 7;
super->hitType = 0xaa;
super->flags2 = 0x0e;
super->hitbox = (Hitbox*)&gUnk_08120A8C;
super->field_0x1c = 0;
case 2:
rand = Random();
super->actionDelay = gUnk_08120A7A[rand & 3];
tmp = (rand >> 8) & 3;
if ((rand & 0x10) != 0) {
tmp = -tmp;
}
super->x.HALF.HI += tmp;
super->y.HALF.HI += tmp;
super->collisionLayer = gPlayerEntity.collisionLayer;
InitializeAnimation(super, 10);
return;
case 1:
break;
}
InitializeAnimation(super, 0x10);
}
void sub_08087AFC(Object21Entity* this) {
Object21Entity* entity;
if ((super->bitfield & 0x80) == 0) {
return;
}
switch (super->bitfield & 0x7f) {
case 0x16:
super->direction = GetFacingDirection(super->field_0x4c, super);
super->speed = 0x100;
break;
case 0x13:
super->action = 3;
super->subAction = 0;
break;
case 0x1b:
case 0x1c:
entity = (Object21Entity*)super->field_0x4c;
super->direction = CalculateDirectionTo(entity->unk_84, entity->unk_80, super->x.WORD, super->y.WORD);
super->speed = 0x100;
break;
}
}
void sub_08087B58(Object21Entity* this) {
static void (*const gUnk_08120A80[])(Object21Entity*) = {
sub_08087B88,
sub_08087B9C,
sub_08087B9C,
};
if ((super->bitfield & 0x80) != 0) {
gUnk_08120A80[super->subAction](this);
} else {
super->action = 1;
}
}
const Hitbox gUnk_08120A8C = { 0, 0, { 6, 3, 3, 6 }, 3, 3 };
void sub_08087B88(Object21Entity* this) {
super->knockbackSpeed = 0x100;
super->subAction = 1;
super->field_0x1d = 1;
}
void sub_08087B9C(Object21Entity* this) {
if (sub_0806F3E4(super)) {
DeleteThisEntity();
}
}
+114
View File
@@ -0,0 +1,114 @@
/**
* @file object30.c
* @ingroup Objects
*
* @brief Object30 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "item.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u16 unk_68;
/*0x6a*/ u16 unk_6a;
/*0x6c*/ u16* unk_6c;
/*0x70*/ u32 unk_70;
} Object30Entity;
extern u32 sub_0806F798(Entity*);
extern const Hitbox gUnk_08121C58;
void Object30_Init(Object30Entity*);
void Object30_Action1(Object30Entity*);
void Object30_Action2(Object30Entity*);
void sub_0808A968(Object30Entity*);
void Object30(Object30Entity* this) {
static void (*const Object30_Actions[])(Object30Entity*) = {
Object30_Init,
Object30_Action1,
Object30_Action2,
};
Object30_Actions[super->action](this);
sub_08080CB4(super);
}
void Object30_Init(Object30Entity* this) {
LayerStruct* data;
const u16* ptr;
switch (super->type) {
case 0:
data = GetLayerByIndex(super->collisionLayer);
ptr = &data->mapData[sub_0806F798(super)];
this->unk_6c = (u16*)ptr;
this->unk_68 = ptr[0];
super->action = 1;
break;
case 1:
sub_0808A968(this);
break;
case 2:
case 3:
sub_0808A968(this);
Object30_Action2(this);
break;
}
}
void Object30_Action1(Object30Entity* this) {
if (this->unk_68 != this->unk_6c[0]) {
sub_0808A968(this);
}
}
void Object30_Action2(Object30Entity* this) {
static const u8 gUnk_08121194[] = {
249, 248, 247, 246, 245, 246, 247, 248,
};
u8 tmp;
switch (super->type) {
case 0:
if (this->unk_70 != 0) {
if (super->zVelocity < 0) {
if (super->z.HALF.HI > -8) {
this->unk_70 = 0;
} else {
if (super->zVelocity < -0x4000) {
this->unk_70 = -0x400;
} else {
this->unk_70 = 0x400;
}
}
}
GravityUpdate(super, this->unk_70);
return;
}
// fallthrough
case 1:
tmp = gUnk_08121194[(super->field_0xf++ >> 3) & 7];
super->z.HALF.HI = tmp << 0x18 >> 0x18;
if (!IsCollidingPlayer(super)) {
return;
}
break;
}
CreateItemEntity(ITEM_KINSTONE, (u32)super->type2, 0);
DeleteThisEntity();
}
void sub_0808A968(Object30Entity* this) {
super->action = 2;
super->actionDelay = 0x1e;
super->spriteSettings.draw = 1;
super->zVelocity = 0x28000;
super->spritePriority.b1 = 3;
super->spriteSettings.shadow = 0;
super->field_0x3c |= 0x10;
super->hitbox = (Hitbox*)&gUnk_08121C58;
SetDefaultPriority(super, 2);
this->unk_70 = 0x2800;
}
+164
View File
@@ -0,0 +1,164 @@
/**
* @file object3A.c
* @ingroup Objects
*
* @brief Object3A object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "screen.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u16 unk_68;
/*0x6a*/ u16 unk_6a;
/*0x6c*/ u8 unk_6c[0x15];
/*0x81*/ u8 unk_81;
/*0x82*/ s8 unk_82;
/*0x83*/ u8 unk_83;
/*0x84*/ u8 unk_84;
/*0x85*/ s8 unk_85;
/*0x86*/ s16 unk_86;
} Object3AEntity;
typedef struct {
u16 unk_0;
u16 unk_1;
u16 unk_2;
s16 unk_3;
u16 unk_4;
u16 unk_5;
s16 unk_6;
u16 unk_7;
u16 unk_8;
u16 unk_9;
} struct_081215E8;
extern void sub_0801E49C(u32, u32, u32, u32);
extern bool32 gUnk_02036BB8;
void sub_0808C6D4(Object3AEntity*);
void sub_0808C74C(Object3AEntity*);
void sub_0808C858(Object3AEntity*);
void sub_0808C8B8(Object3AEntity*);
void sub_0808C840(Object3AEntity*);
const struct_081215E8 gUnk_081215E8[] = {
{ 5, 4, 280, -6, 0, 0, -8, 0, 31, 63 },
{ 6, 2, 0, 4, 0, 0, 8, 0, 63, 31 },
{ 7, 4, 0, 4, 0, 0, -6, 0, 63, 31 },
{ 6, 2, 0, 16, 0, 0, 16, 0, 63, 31 },
};
void Object3A(Object3AEntity* this) {
static void (*const gUnk_08121638[])(Object3AEntity*) = {
sub_0808C6D4,
sub_0808C74C,
};
static void (*const gUnk_08121640[])(Object3AEntity*) = {
sub_0808C858,
sub_0808C8B8,
};
if (super->type == 0) {
gUnk_08121638[super->action](this);
} else {
gUnk_08121640[super->action](this);
}
}
void sub_0808C6D4(Object3AEntity* this) {
Object3AEntity* obj;
const struct_081215E8* ptr = &gUnk_081215E8[super->type2];
this->unk_86 = ptr->unk_2;
this->unk_85 = ptr->unk_3;
this->unk_84 = ptr->unk_4;
this->unk_83 = ptr->unk_5;
this->unk_82 = ptr->unk_6;
this->unk_81 = ptr->unk_7;
sub_0801E1B8((gScreen.controls.windowInsideControl & 0xff00) | ptr->unk_8, ptr->unk_9);
super->action = 1;
sub_0808C74C(this);
obj = (Object3AEntity*)CreateObject(OBJECT_3A, 1, ptr->unk_0);
if (obj != NULL) {
obj->unk_6a = ptr->unk_1;
}
}
void sub_0808C74C(Object3AEntity* this) {
if (super->parent != NULL) {
super->x.HALF.HI = super->parent->x.HALF.HI - gRoomControls.scroll_x;
super->y.HALF.HI = super->parent->y.HALF.HI - gRoomControls.scroll_y;
} else {
super->x.HALF.HI = 0x78;
super->y.HALF.HI = 0x50;
}
if (this->unk_86 < 0) {
sub_0801E49C(super->x.HALF.HI, super->y.HALF.HI, 0, 0);
gUnk_02036BB8 = TRUE;
sub_0808C840(this);
}
if (this->unk_86 > 500) {
sub_0801E49C(super->x.HALF.HI, super->y.HALF.HI, 500, 0);
gUnk_02036BB8 = 1;
sub_0808C840(this);
}
this->unk_86 += this->unk_85;
this->unk_85 += this->unk_84;
if (this->unk_85 > 0x10) {
this->unk_85 = 0x10;
}
if (this->unk_85 < -0x10) {
this->unk_85 = 0xf0;
}
this->unk_83 += this->unk_82;
this->unk_82 += this->unk_81;
if (this->unk_82 > 0x10) {
this->unk_82 = 0x10;
}
if (this->unk_82 < -0x10) {
this->unk_82 = -0x10;
}
sub_0801E49C(super->x.HALF.HI, super->y.HALF.HI, this->unk_86, this->unk_83);
}
void sub_0808C840(Object3AEntity* this) {
gScreen.controls.layerFXControl = 0;
sub_0801E104();
DeleteThisEntity();
}
void sub_0808C858(Object3AEntity* this) {
if ((super->type2 & 2) != 0) {
gScreen.controls.layerFXControl = 0x3fbf;
} else {
gScreen.controls.layerFXControl = 0x3fff;
}
if ((super->type2 & 1) != 0) {
gScreen.controls.layerBrightness = 0;
} else {
gScreen.controls.layerBrightness = 0x10;
}
super->action = 1;
this->unk_68 = 0x100;
}
void sub_0808C8B8(Object3AEntity* this) {
s32 tmp = this->unk_68 -= this->unk_6a;
if (tmp * 0x10000 < 0) {
this->unk_68 = 0;
}
if ((super->type2 & 1) != 0) {
gScreen.controls.layerBrightness = 0x10 - ((s16)this->unk_68 >> 4);
} else {
gScreen.controls.layerBrightness = (s16)this->unk_68 >> 4;
}
if ((s16)this->unk_68 == 0) {
DeleteThisEntity();
}
}
const u16 gUnk_08121648[] = { 264, 252, 256, 256, 248, 260, 240, 264, 248, 260, 256, 256, 264, 252, 272, 248 };
+117
View File
@@ -0,0 +1,117 @@
/**
* @file object3D.c
* @ingroup Objects
*
* @brief Object3D object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "area.h"
#include "screen.h"
#include "main.h"
#include "structures.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u16 unk_68;
} Object3DEntity;
void Object3D_Init(Object3DEntity*);
void Object3D_Action1(Object3DEntity*);
void Object3D_Action2(Object3DEntity*);
void sub_0808D030(void);
void Object3D(Object3DEntity* this) {
static void (*const Object3D_Actions[])(Object3DEntity*) = {
Object3D_Init,
Object3D_Action1,
Object3D_Action2,
};
Object3D_Actions[super->action](this);
}
void Object3D_Init(Object3DEntity* this) {
super->action = 1;
super->x.HALF.HI = gArea.curPortalX - gRoomControls.scroll_x;
super->y.HALF.HI = gArea.curPortalY - gRoomControls.scroll_y;
this->unk_68 = 0x80;
super->updatePriority = 6;
sub_0801E1B8(0x1f17, 0);
sub_0801E1EC(super->x.HALF.HI, super->y.HALF.HI, this->unk_68);
}
void Object3D_Action1(Object3DEntity* this) {
#ifdef EU
static const u16 gUnk_081216C8[] = { 206, 19, 333, 208, 16, 333, 207, 1, 333, 0 };
#else
static const u16 gUnk_081216C8[] = { 206, 19, 334, 208, 16, 334, 207, 1, 334, 0 };
#endif
const u16* ptr;
this->unk_68 -= 2;
if (this->unk_68 >= 0x15) {
sub_0801E1EC(super->x.HALF.HI, super->y.HALF.HI, this->unk_68);
} else {
gScreen.controls.windowOutsideControl = 0x10;
sub_0808D030();
ResetPaletteTable(0);
ResetPalettes();
gGFXSlots.unk0 = 1;
ptr = &gUnk_081216C8[super->type * 3];
LoadFixedGFX(super, ptr[0]);
LoadObjPalette(super, ptr[1]);
super->spriteIndex = ptr[2];
if (super->type == 2) {
super->frameIndex = 2;
}
super->action = 2;
super->spriteSettings.draw = 2;
super->spriteOrientation.flipY = 0;
super->spriteRendering.b3 = 0;
super->spritePriority.b0 = 0;
super->actionDelay = 0x1e;
super->field_0xf = 0xff;
super->spriteRendering.b0 = 3;
sub_0805EC9C(super, 0x100, 0x100, 0);
gArea.field_0x10 = 1;
SetFade(5, 8);
}
}
void sub_0808D030(void) {
struct OamData* ptr;
s32 index;
ptr = gOAMControls.oam;
index = 0x80;
MemClear(&gOAMControls, 0xb74);
while (index != 0) {
// TODO split up into bitfield writes?
*(u16*)ptr = 0x2a0;
ptr++;
index--;
}
gOAMControls.field_0x0 = 1;
}
void Object3D_Action2(Object3DEntity* this) {
u32 tmp = super->actionDelay--;
if (tmp != 0) {
if (this->unk_68 != 0) {
this->unk_68 -= 2;
} else {
this->unk_68 = 0;
}
sub_0801E1EC(super->x.HALF.HI, super->y.HALF.HI, this->unk_68);
if (0x80 < super->field_0xf) {
super->field_0xf -= 8;
}
sub_0805EC9C(super, super->field_0xf, super->field_0xf, 0);
} else {
gArea.filler3[0]++;
gArea.field_0x10 = 0;
DeleteThisEntity();
}
}
+82
View File
@@ -0,0 +1,82 @@
/**
* @file object42.c
* @ingroup Objects
*
* @brief Object42 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[4];
/*0x6c*/ u16 unk_6c;
} Object42Entity;
void sub_0808DDB4(Object42Entity*);
void sub_0808DDE0(Object42Entity*);
void sub_0808DDE8(Object42Entity*);
void Object42(Object42Entity* this) {
static void (*const gUnk_081217A8[])(Object42Entity*) = {
sub_0808DDB4,
sub_0808DDE0,
};
static void (*const gUnk_081217B0[])(Object42Entity*) = {
sub_0808DDB4,
sub_0808DDE8,
};
if (super->type != 0) {
gUnk_081217B0[super->action](this);
} else {
gUnk_081217A8[super->action](this);
}
}
void sub_0808DDB4(Object42Entity* this) {
super->action = 1;
if (super->type != 0) {
super->actionDelay = 0x78;
this->unk_6c = 0xf0;
InitializeAnimation(super, 0);
sub_0808DDE8(this);
}
}
void sub_0808DDE0(Object42Entity* this) {
DeleteThisEntity();
}
void sub_0808DDE8(Object42Entity* this) {
static const s8 gUnk_081217B8[] = { 0, -6, 0, 6 };
Entity* player;
this->unk_6c--;
if (sub_0807953C()) {
super->field_0xf++;
}
if (((0x1e < super->field_0xf) || ((gPlayerState.flags & 0x1810) != 0)) || (this->unk_6c == 0)) {
gPlayerState.flags &= 0xfffffbff;
DeleteThisEntity();
}
player = &gPlayerEntity;
super->x.HALF.HI = (s8)gUnk_081217B8[gPlayerEntity.animationState >> 1] + player->x.HALF.HI;
super->y.HALF.HI = gPlayerEntity.y.HALF.HI + -6;
super->z = gPlayerEntity.z;
super->collisionLayer = gPlayerEntity.collisionLayer;
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
if ((gPlayerState.flags & 0x400) != 0) {
GetNextFrame(super);
} else {
DeleteThisEntity();
}
if (gPlayerEntity.animationState >> 1 == 2) {
sub_0806FEBC(&gPlayerEntity, 3, super);
super->y.HALF.HI -= 5;
} else {
sub_0806FEBC(&gPlayerEntity, 0, super);
}
}
+118
View File
@@ -0,0 +1,118 @@
/**
* @file object4B.c
* @ingroup Objects
*
* @brief Object4B object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "menu.h"
typedef struct {
/*0x00*/ Entity base;
} Object4BEntity;
void Object4B_Init(Object4BEntity*);
void Object4B_Action1(Object4BEntity*);
void Object4B_Action2(Object4BEntity*);
void Object4B_Action3(Object4BEntity*);
void Object4B_Action4(Object4BEntity*);
void Object4B_Action5(Object4BEntity*);
void Object4B_Action6(Object4BEntity*);
void Object4B_Action7(Object4BEntity*);
void Object4B(Object4BEntity* this) {
static void (*const Object4B_Actions[])(Object4BEntity*) = {
Object4B_Init, Object4B_Action1, Object4B_Action2, Object4B_Action3,
Object4B_Action4, Object4B_Action5, Object4B_Action6, Object4B_Action7,
};
Object4B_Actions[super->action](this);
}
void Object4B_Init(Object4BEntity* this) {
super->action = 1;
super->actionDelay = 0x3c;
InitializeAnimation(super, 0);
}
void Object4B_Action1(Object4BEntity* this) {
if (--super->actionDelay == 0) {
super->actionDelay = 0x78;
super->action++;
super->spriteSettings.draw = 1;
}
}
void Object4B_Action2(Object4BEntity* this) {
GetNextFrame(super);
if ((super->frame & 0x80) != 0) {
super->action++;
super->spritePriority.b1 = 3;
InitializeAnimation(super, 2);
}
}
void Object4B_Action3(Object4BEntity* this) {
GetNextFrame(super);
if (--super->actionDelay == 0) {
super->action++;
super->direction = 0;
super->speed = 0x100;
super->zVelocity = 0x20000;
super->spriteOrientation.flipY = 0;
super->actionDelay = 0;
InitializeAnimation(super, 3);
SoundReq(SFX_12B);
}
}
void Object4B_Action4(Object4BEntity* this) {
if ((super->frame & 0x10) != 0) {
LinearMoveUpdate(super);
if (GravityUpdate(super, 0x2000) == 0) {
GetNextFrame(super);
}
} else {
GetNextFrame(super);
}
if ((super->y.HALF.HI - gRoomControls.origin_y) < 0x231) {
super->y.HALF.HI = gRoomControls.origin_y + 0x230;
if ((super->frame & 0x80) != 0) {
super->action++;
super->actionDelay = 0x78;
InitializeAnimation(super, 2);
}
} else if ((super->frame & 0x80) != 0) {
super->zVelocity = 0x20000;
InitializeAnimation(super, 3);
SoundReq(SFX_12B);
}
}
void Object4B_Action5(Object4BEntity* this) {
GetNextFrame(super);
if (--super->actionDelay == 0) {
super->action++;
InitializeAnimation(super, 5);
}
}
void Object4B_Action6(Object4BEntity* this) {
GetNextFrame(super);
if ((super->frame & 0x80) != 0) {
super->action++;
super->actionDelay = 0x3c;
InitializeAnimation(super, 1);
}
}
void Object4B_Action7(Object4BEntity* this) {
GetNextFrame(super);
if (--super->actionDelay == 0) {
gMenu.overlayType++;
DeleteThisEntity();
}
}
+86
View File
@@ -0,0 +1,86 @@
/**
* @file object5B.c
* @ingroup Objects
*
* @brief Object5B object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x1a];
/*0x82*/ u16 unk_82;
/*0x84*/ ScriptExecutionContext* unk_84;
} Object5BEntity;
void sub_080928C8(Object5BEntity*);
void nullsub_119(Object5BEntity*);
void sub_08092930(Object5BEntity*);
void sub_08092940(Object5BEntity*);
void sub_08092958(Object5BEntity*, ScriptExecutionContext*);
void Object5B(Object5BEntity* this) {
static void (*const gUnk_08122794[])(Object5BEntity*) = {
sub_080928C8,
nullsub_119,
};
static void (*const gUnk_0812279C[])(Object5BEntity*) = {
sub_08092930,
sub_08092940,
};
if ((super->flags & 2) != 0) {
gUnk_0812279C[super->action](this);
} else {
gUnk_08122794[super->action](this);
}
}
void sub_080928C8(Object5BEntity* this) {
super->action = 1;
super->spriteSettings.draw = 1;
super->frameIndex = super->type;
super->spriteRendering.b3 = 3;
super->spritePriority.b0 = 6;
super->spriteOrientation.flipY = 2;
switch (super->type) {
case 2:
CreateObjectWithParent(super, OBJECT_5B, 4, 0);
break;
case 4:
super->spritePriority.b0 = 7;
break;
}
}
void nullsub_119(Object5BEntity* this) {
}
void sub_08092930(Object5BEntity* this) {
sub_080928C8(this);
this->unk_82 = 0;
}
void sub_08092940(Object5BEntity* this) {
ExecuteScript(super, this->unk_84);
sub_08092958(this, this->unk_84);
}
void sub_08092958(Object5BEntity* this, ScriptExecutionContext* context) {
u32 tmp;
while (context->postScriptActions != 0) {
tmp = (~context->postScriptActions + 1) & context->postScriptActions;
context->postScriptActions = context->postScriptActions ^ tmp;
switch (tmp) {
case 1:
super->frameIndex = 0;
break;
case 2:
super->frameIndex = context->intVariable;
break;
}
}
}
+120
View File
@@ -0,0 +1,120 @@
/**
* @file object64.c
* @ingroup Objects
*
* @brief Object64 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
} Object64Entity;
void sub_08093E3C(Object64Entity*);
void sub_08093EAC(Object64Entity*);
void sub_08093ED0(Object64Entity*);
void sub_08093EF0(Object64Entity*);
typedef struct {
u16 unk_0;
u8 unk_2;
u8 unk_3;
} struct_08122950;
const struct_08122950 gUnk_08122950[] = {
{ 244, 31, 0 },
{ 0, 31, 0 },
{ 0, 31, 0 },
};
void Object64(Object64Entity* this) {
static void (*const gUnk_0812295C[])(Object64Entity*) = {
sub_08093E3C,
sub_08093EAC,
};
gUnk_0812295C[super->action](this);
}
void sub_08093E3C(Object64Entity* this) {
const u16* ptr;
super->action = 1;
super->flags &= 0x7f;
super->spriteSettings.draw = 1;
if (super->collisionLayer == 0) {
ResolveCollisionLayer(super);
}
InitializeAnimation(super, super->type);
ptr = &gUnk_08122950[super->type].unk_0;
if ((ptr[0] != 0) && ((super->type2 & 0x40) == 0)) {
EnqueueSFX(ptr[0]);
}
if ((super->type2 & 0x20) != 0) {
super->spriteRendering.b3 = 1;
}
}
void sub_08093EAC(Object64Entity* this) {
static void (*const gUnk_08122964[])(Object64Entity*) = {
sub_08093ED0,
sub_08093EF0,
};
gUnk_08122964[gUnk_08122950[super->type].unk_2 >> 4](this);
}
void sub_08093ED0(Object64Entity* this) {
GetNextFrame(super);
if ((super->frame & 0x80) != 0) {
DeleteEntity(super);
}
}
void sub_08093EF0(Object64Entity* this) {
Entity* object;
switch (super->type) {
case 0:
if (super->subAction != 0) {
return;
}
GetNextFrame(super);
if ((super->frame & 0x80) == 0) {
return;
}
object = CreateObject(OBJECT_64, 1, 0);
if (object != NULL) {
object->parent = super->parent;
CopyPosition(super, object);
}
DeleteThisEntity();
break;
case 1:
GetNextFrame(super);
if ((super->frame & 1) != 0) {
super->frame = 0;
object = CreateObject(OBJECT_64, 2, 0);
if (object != NULL) {
object->parent = super->parent;
CopyPosition(super, object);
}
}
if ((super->frame & 0x80) == 0) {
return;
}
if (super->parent == &gPlayerEntity) {
SoundReq(SFX_PLY_VO6);
sub_08079D84();
}
DeleteThisEntity();
break;
case 2:
GetNextFrame(super);
if ((super->frame & 0x80) == 0) {
return;
}
DeleteThisEntity();
break;
}
}
+77
View File
@@ -0,0 +1,77 @@
/**
* @file object70.c
* @ingroup Objects
*
* @brief Object70 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
void Object70_Init(Entity*);
void Object70_Action1(Entity*);
void Object70(Entity* this) {
static void (*const Object70_Actions[])(Entity*) = {
Object70_Init,
Object70_Action1,
};
Object70_Actions[this->action](this);
}
void Object70_Init(Entity* this) {
this->action = 1;
this->spriteSettings.draw = 1;
this->frameIndex = this->type + 0xb;
if (this->type != 0) {
sub_08004168(this);
gPlayerEntity.spriteOrientation.flipY = 3;
if ((gPlayerEntity.spritePriority.b0) != 7) {
this->spritePriority.b0 = gPlayerEntity.spritePriority.b0 + 1;
} else {
this->spritePriority.b0 = 7;
}
}
}
void Object70_Action1(Entity* this) {
u8 bVar1;
if (this->type == 0) {
if (gPlayerEntity.z.WORD == 0) {
if ((((gPlayerState.dash_state & 0x40) == 0) && (gPlayerState.floor_type == 0x11)) &&
((gPlayerEntity.action == 1 || ((gPlayerEntity.action == 0x18 || (gPlayerEntity.action == 4)))))) {
goto _080974FA;
} else {
if (gPlayerEntity.z.WORD == 0) {
CreateFx(&gPlayerEntity, FX_GREEN_SPLASH, 0);
}
}
}
gPlayerEntity.spriteOrientation.flipY = 2;
DeleteThisEntity();
_080974FA:
this->x = gPlayerEntity.x;
this->y = gPlayerEntity.y;
if (gPlayerState.jump_status == 0) {
gPlayerEntity.spriteOrientation.flipY = 3;
if (gPlayerEntity.spritePriority.b0 != 7) {
this->spritePriority.b0 = gPlayerEntity.spritePriority.b0 + 1;
} else {
this->spritePriority.b0 = 7;
}
}
} else {
if (gPlayerEntity.action != 0x1e) {
if (this->collisionLayer == 1) {
gPlayerEntity.spriteOrientation.flipY = 2;
} else {
gPlayerEntity.spriteOrientation.flipY = 1;
}
DeleteThisEntity();
}
}
}
+116
View File
@@ -0,0 +1,116 @@
/**
* @file object74.c
* @ingroup Objects
*
* @brief Object74 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "screen.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x1e];
/*0x86*/ u16 unk_86;
} Object74Entity;
void sub_08097B84(Object74Entity*);
void sub_08097BDC(Object74Entity*);
void sub_08097C18(Object74Entity*);
void sub_08097C20(Object74Entity*);
void sub_08097C1C(Object74Entity*);
void sub_08097CFC(Object74Entity*);
bool32 sub_08097CB0(Object74Entity*);
void sub_08097CB4(Object74Entity*);
const Hitbox gUnk_08123328 = { 0, 0, { 4, 0, 0, 4 }, 18, 18 };
void Object74(Object74Entity* this) {
static void (*const gUnk_08123330[])(Object74Entity*) = {
sub_08097B84, sub_08097BDC, sub_08097C18, sub_08097C20, sub_08097C1C,
};
gUnk_08123330[super->action](this);
}
void sub_08097B84(Object74Entity* this) {
super->action = 1;
super->spritePriority.b0 = 7;
super->hitbox = (Hitbox*)&gUnk_08123328;
if ((this->unk_86 == 0xffff) || (CheckFlags(this->unk_86))) {
super->spriteSettings.draw = 1;
super->action = 4;
sub_08097CFC(this);
} else {
sub_0805BC4C();
}
}
void sub_08097BDC(Object74Entity* this) {
if (CheckFlags(this->unk_86)) {
SetPlayerControl(CONTROL_1);
gUnk_02034490.unk0 = 1;
RequestPriorityDuration(super, 0x1e);
if (sub_08097CB0(this) == FALSE) {
sub_08097CB4(this);
}
}
}
void sub_08097C18(Object74Entity* this) {
}
void sub_08097C1C(Object74Entity* this) {
}
void sub_08097C20(Object74Entity* this) {
u32 tmp;
SetPriorityTimer(0x1e);
sub_0800445C(super);
CreateMagicSparkles(super->x.HALF.HI, super->y.HALF.HI, super->collisionLayer);
if (--super->actionDelay == 0) {
super->actionDelay = 8;
tmp = ++super->field_0xf;
gScreen.controls.alphaBlend = (((0x10 - tmp) * 0x100)) | tmp;
if (gScreen.controls.alphaBlend == 0x10) {
SetPlayerControl(CONTROL_ENABLED);
gUnk_02034490.unk0 = 0;
gScreen.controls.layerFXControl = 0;
sub_08097CFC(this);
super->action = 4;
super->spriteRendering.alphaBlend = 0;
SoundReq(SFX_SECRET);
SetGlobalFlag(TINY_ENTRANCE);
}
}
}
bool32 sub_08097CB0(Object74Entity* this) {
return FALSE;
}
void sub_08097CB4(Object74Entity* this) {
super->action = 3;
super->spriteSettings.draw = 1;
super->spriteRendering.alphaBlend = 1;
super->actionDelay = 0x1e;
super->field_0xf = 0;
gScreen.controls.layerFXControl = 0xf40;
gScreen.controls.alphaBlend = 0x1000;
SoundReq(SFX_14A);
}
void sub_08097CFC(Object74Entity* this) {
static const u16 gUnk_08123344[] = { 16448, 65471, 16449, 65472, 16450, 65473, 16451, 65535, 16452, 0,
16453, 1, 16454, 63, 16455, 64, 16456, 65, 65535 };
static const u16 gUnk_0812336A[] = {
16449, 65471, 16449, 65472, 16452, 65535, 16452, 0, 16455, 63, 16455, 64, 65535
};
if ((super->x.HALF.HI & 0xf) == 0) {
SetMultipleTiles((u16*)gUnk_0812336A, COORD_TO_TILE(super), super->collisionLayer);
} else {
SetMultipleTiles((u16*)gUnk_08123344, COORD_TO_TILE(super), super->collisionLayer);
}
}
+172
View File
@@ -0,0 +1,172 @@
/**
* @file objectB.c
* @ingroup Objects
*
* @brief ObjectB object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "itemMetaData.h"
#include "message.h"
#include "save.h"
#include "game.h"
#include "item.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u16 unk_68;
} ObjectBEntity;
typedef struct {
u8 unk_0[6];
u16 unk_6;
} struct_080FD964;
extern const struct_080FD964 gUnk_080FD964[];
extern const u16 gUnk_080FD5B4[];
void ObjectB_Init(ObjectBEntity*);
void ObjectB_Action1(ObjectBEntity*);
void ObjectB_Action2(ObjectBEntity*);
void ObjectB_Action3(ObjectBEntity*);
void ObjectB(ObjectBEntity* this) {
static void (*const ObjectB_Actions[])(ObjectBEntity*) = { ObjectB_Init, ObjectB_Action1, ObjectB_Action2,
ObjectB_Action3 };
u32 tmp;
ObjectB_Actions[super->action](this);
tmp = (super->parent->frame >> 6);
super->spriteSettings.draw = tmp & 1;
sub_08080CB4(super);
super->spritePriority.b1 = 0;
super->spriteOrientation.flipY = 1;
super->spriteRendering.b3 = 0;
}
void ObjectB_Init(ObjectBEntity* this) {
SetDefaultPriority(super, 6);
super->action = 1;
}
void ObjectB_Action1(ObjectBEntity* this) {
u32 tmp;
const ItemMetaData* ptr;
if ((super->parent)->frame != 0x41) {
return;
}
super->action = 2;
switch (super->actionDelay) {
case 0:
case 1:
this->unk_68 = GiveItem(super->type, super->type2);
switch (super->type) {
case 0x40:
case 0x41:
case 0x42:
case 0x43:
break;
default:
SoundReq(SFX_109);
break;
}
break;
case 2:
GiveItem(super->type, super->type2);
this->unk_68 = gUnk_080FD964[super->type].unk_6;
SoundReq(SFX_109);
break;
case 5:
tmp = GetInventoryValue((u32)super->type);
ptr = &gItemMetaData[super->type];
if (tmp == 0) {
this->unk_68 = *(u16*)&ptr->unk4;
} else {
this->unk_68 = *(u16*)&ptr->unk6;
}
return;
case 3:
case 4:
default:
return;
}
}
void ObjectB_Action2(ObjectBEntity* this) {
u32 messageIndex;
if ((super->parent)->frame == 0x42) {
super->action = 3;
switch (super->actionDelay) {
case 1:
case 3:
case 4:
default:
break;
case 0:
case 2:
case 5:
messageIndex = this->unk_68;
if (messageIndex != 0) {
switch (super->type) {
case 0x63:
messageIndex += gSave.stats.heartPieces;
break;
case 0x3f:
if (super->type2 > 1) {
if (messageIndex == 0x577) {
messageIndex--;
} else {
messageIndex++;
}
}
break;
}
MessageFromTarget(messageIndex);
gMessage.field_0x10 = super->type2;
}
}
}
}
void ObjectB_Action3(ObjectBEntity* this) {
u32 tmp;
if ((super->parent)->action == 8) {
return;
}
switch (super->actionDelay) {
case 0:
case 1:
case 2:
if (super->type != 0x62) {
if (super->type != 0x63) {
break;
}
ModHealth(0xa0);
gSave.stats.heartPieces++;
if (gSave.stats.heartPieces < 4) {
break;
}
gSave.stats.heartPieces = 0;
}
gSave.stats.maxHealth += 8;
if (gSave.stats.maxHealth > 0xa0) {
gSave.stats.maxHealth = 0xa0;
}
ModHealth(0xa0);
break;
case 3:
tmp = GetBottleContaining(super->type);
if (tmp != 0) {
gSave.stats.itemButtons[tmp + 1] = 0x20;
} else {
SetInventoryValue(super->type, ITEM_GREEN_SWORD);
}
break;
case 4:
case 5:
break;
}
DeleteThisEntity();
}
+106
View File
@@ -0,0 +1,106 @@
/**
* @file objectB3.c
* @ingroup Objects
*
* @brief ObjectB3 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "kinstone.h"
void sub_080A0ADC(Entity*);
void sub_080A0AF0(Entity*);
void sub_080A0AC4(Entity*);
void sub_080A0AD0(Entity*);
void sub_080A0B4C(Entity*);
void sub_080A0B60(Entity*);
void sub_080A0B80(Entity*);
void ObjectB3(Entity* this) {
static void (*const gUnk_08124A10[])(Entity*) = {
sub_080A0ADC,
sub_080A0AF0,
};
static void (*const gUnk_08124A18[])(Entity*) = {
sub_080A0AC4,
sub_080A0AD0,
};
static void (*const gUnk_08124A20[])(Entity*) = {
sub_080A0B4C,
sub_080A0B60,
sub_080A0B80,
};
void (*const* ptr)(Entity*);
switch (this->type) {
case 0:
if ((this->flags & 2) != 0) {
ptr = gUnk_08124A10;
} else {
ptr = gUnk_08124A18;
}
break;
case 1:
ptr = gUnk_08124A20;
break;
}
ptr[this->action](this);
if (this->action == 0) {
this->action = 1;
this->spriteRendering.b3 = 1;
this->spritePriority.b0 = 0;
this->spriteOrientation.flipY = 1;
ChangeObjPalette(this, gUnk_080C9CBC[gFuseInfo._3].unk0);
}
GetNextFrame(this);
}
void sub_080A0AC4(Entity* this) {
InitializeAnimation(this, this->type);
}
void sub_080A0AD0(Entity* this) {
GravityUpdate(this, 0x80);
}
void sub_080A0ADC(Entity* this) {
sub_0807DD64(this);
ExecuteScriptForEntity(this, NULL);
}
void sub_080A0AF0(Entity* this) {
ExecuteScriptForEntity(this, NULL);
GetNextFrame(this);
if (this->animIndex == 5) {
if ((this->frame & 0x80) != 0) {
DeleteThisEntity();
}
}
GravityUpdate(this, 0x80);
}
void sub_080A0B28(Entity* this, ScriptExecutionContext* context) {
sub_0807DEDC(this, context, this->x.HALF.HI, this->y.HALF.HI);
this->y.HALF.HI -= 0xb0;
this->spriteSettings.draw = 0;
}
void sub_080A0B4C(Entity* this) {
this->x.HALF.HI = 0x78;
this->y.HALF.HI = 0x50;
InitializeAnimation(this, 0);
}
void sub_080A0B60(Entity* this) {
if ((this->frame & 0x40) != 0) {
this->action = 2;
SoundReq(SFX_136);
}
}
void sub_080A0B80(Entity* this) {
this->y.WORD -= 0x28000;
}
+112
View File
@@ -0,0 +1,112 @@
/**
* @file objectBD.c
* @ingroup Objects
*
* @brief ObjectBD object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
void sub_080A2274(Entity*);
void sub_080A22B0(Entity*);
void sub_080A22C4(Entity*);
void sub_080A2340(Entity*);
typedef struct {
u16 unk_0;
u16 unk_2;
u16 unk_4;
u8 unk_6;
u8 pad;
} struct_08125014;
const struct_08125014 gUnk_08125014[] = {
{ 120, 48, 16, 4, 0 }, { 136, 81, 22, 3, 0 }, { 190, 20, 25, 2, 0 }, { 192, 81, 26, 2, 0 }, { 32, 104, 27, 3, 0 },
};
void ObjectBD(Entity* this) {
static void (*const gUnk_0812503C[])(Entity*) = {
sub_080A2274, sub_080A22B0, sub_080A22B0, sub_080A22B0, sub_080A22C4,
};
gUnk_0812503C[this->type](this);
}
void sub_080A2274(Entity* this) {
u32 addr;
u32 type;
if (this->action == 0) {
sub_080A2340(this);
CreateObject(OBJECT_BD, 1, 0);
addr = 0x02000000; // TODO write to 0x2000007
if (*(u8*)(addr + 7) == 1) {
type = 2;
} else {
type = 3;
}
CreateObject(OBJECT_BD, type, 0);
CreateObject(OBJECT_BD, 4, 0);
}
}
void sub_080A22B0(Entity* this) {
if (this->action == 0) {
sub_080A2340(this);
}
}
NONMATCH("asm/non_matching/objectBD/sub_080A22C4.inc", void sub_080A22C4(Entity* this)) {
u8 bVar1;
u8 uVar2;
s16 sVar3;
u32 uVar4;
u32 tmp1, tmp2, tmp3, tmp4;
switch (this->action) {
case 0:
sub_080A2340(this);
this->actionDelay = 8;
this->field_0xf = 0;
this->subAction = this->frameIndex;
this->speed = (Random() & 3) * 0x10 + 0x1e;
break;
case 1:
if (--this->speed != 0) {
return;
}
this->speed = (Random() & 7) * 0x10 + 0x1e;
this->action = 2;
break;
default:
if (--this->actionDelay != 0) {
return;
}
this->actionDelay = 8;
this->field_0xf = tmp2 = (this->field_0xf + 1) & 3;
tmp3 = this->subAction;
tmp1 = tmp3 + tmp2;
this->frameIndex = tmp1;
if (tmp3 * 0x1000000 != tmp1 * 0x1000000) {
return;
}
this->action = 1;
break;
}
}
END_NONMATCH
void sub_080A2340(Entity* this) {
const struct_08125014* ptr;
ptr = &gUnk_08125014[this->type];
this->x.HALF.HI = ptr->unk_0;
this->y.HALF.HI = ptr->unk_2;
this->frameIndex = ptr->unk_4;
this->spritePriority.b0 = ptr->unk_6;
this->spriteRendering.b3 = 1;
this->spriteOrientation.flipY = 1;
this->spriteSettings.draw = 2;
this->action = 1;
}
+70
View File
@@ -0,0 +1,70 @@
/**
* @file objectD.c
* @ingroup Objects
*
* @brief ObjectD object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x1e];
/*0x86*/ u16 unk_86;
} ObjectDEntity;
void sub_0808434C(ObjectDEntity*);
void sub_080843F8(ObjectDEntity*);
void sub_08084428(ObjectDEntity*);
void (*const gUnk_0811F908[])(ObjectDEntity*) = {
sub_0808434C,
sub_080843F8,
sub_08084428,
(void (*)(ObjectDEntity*))GetNextFrame,
};
void ObjectD(ObjectDEntity* this) {
gUnk_0811F908[super->action](this);
}
void sub_0808434C(ObjectDEntity* this) {
super->action = 1;
super->flags |= 0x80;
super->spriteSettings.draw = 1;
super->field_0x3c = 7;
super->hitType = 1;
super->hurtType = 0x47;
super->flags2 = 2;
super->hitbox = (Hitbox*)&gHitbox_4;
SetTile(0x4050, COORD_TO_TILE(super), super->collisionLayer);
if (super->type == 1 || CheckFlags(this->unk_86)) {
super->action = 3;
SetFlag(this->unk_86);
InitializeAnimation(super, 1);
} else {
InitializeAnimation(super, super->type);
}
}
void sub_080843F8(ObjectDEntity* this) {
if (super->bitfield == 0x9c) {
super->action = 2;
super->flags &= 0x7f;
CreateFx(super, FX_ICE, 0);
EnqueueSFX(SFX_10D);
}
}
void sub_08084428(ObjectDEntity* this) {
GetNextFrame(super);
if ((super->frame & 1) != 0) {
super->action = 3;
SetFlag(this->unk_86);
EnqueueSFX(SFX_BUTTON_PRESS);
}
}
+26
View File
@@ -0,0 +1,26 @@
/**
* @file objectE.c
* @ingroup Objects
*
* @brief ObjectE object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
void ObjectE(Entity* this) {
if (this->action == 0) {
this->action = 1;
this->actionDelay = 0x14;
sub_08004168(this);
} else {
if (this->actionDelay-- == 0) {
sub_0807B7D8(0x35, COORD_TO_TILE(this), this->collisionLayer);
CreateFx(this, FX_FALL_DOWN, 0x40);
SoundReq(SFX_126);
DeleteThisEntity();
}
}
}
+78
View File
@@ -0,0 +1,78 @@
/**
* @file paper.c
* @ingroup Objects
*
* @brief Paper object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
void Paper_Init(Entity*);
void Paper_Action1(Entity*);
void Paper_Type0(Entity*);
void Paper_Type1(Entity*);
void Paper_Type2(Entity*);
void Paper(Entity* this) {
static void (*const Paper_Actions[])(Entity*) = {
Paper_Init,
Paper_Action1,
};
Paper_Actions[this->action](this);
}
void Paper_Init(Entity* this) {
static void (*const Paper_Types[])(Entity*) = {
Paper_Type0,
Paper_Type1,
Paper_Type2,
};
Paper_Types[this->type](this);
}
void Paper_Type0(Entity* this) {
this->action = 1;
this->spriteRendering.b3 = 1;
this->z.HALF.HI -= 8;
if (this->type2 != 1) {
if (this->type2 != 2) {
return;
}
this->spriteSettings.draw = 0;
}
SetTile(0x4051, COORD_TO_TILE(this), 1);
}
void Paper_Type1(Entity* this) {
this->action = 1;
this->frameIndex = this->type2;
switch (this->type2) {
case 0:
this->spriteOffsetY = 2;
break;
case 2:
this->spriteOffsetY = -2;
break;
}
}
void Paper_Type2(Entity* this) {
this->action = 1;
this->y.HALF.HI++;
this->spriteOffsetY = -1;
SetTile(0x4051, COORD_TO_TILE(this) - 1, 1);
SetTile(0x4051, COORD_TO_TILE(this), 1);
}
void Paper_Action1(Entity* this) {
if (this->type == 0) {
if ((gPlayerEntity.y.HALF.HI < this->y.HALF.HI) || (gPlayerEntity.y.HALF.HI) > this->y.HALF.HI + 0x18) {
this->spriteRendering.b3 = 1;
} else {
this->spriteRendering.b3 = 2;
}
}
}
+1 -1
View File
@@ -78,7 +78,7 @@ void PushableGrave_Init(PushableGraveEntity* this) {
super->hitbox = (Hitbox*)&gUnk_080FD570;
SetTile(tileIndex, tilePosition, super->collisionLayer);
if (super->type2 == 2) {
sub_0801AF18((u8*)gUnk_081232C0, tilePosition, super->collisionLayer);
SetMultipleTiles((u16*)gUnk_081232C0, tilePosition, super->collisionLayer);
}
}
}
+5 -10
View File
@@ -15,22 +15,17 @@ void StoneTablet(Entity* this) {
}
void sub_080979CC(Entity* this) {
static const u8 gUnk_081232EC[] = {
0x22, 0x40, 0xFE, 0xFF, 0x22, 0x40, 0xFF, 0xFF, 0x22, 0x40, 0x0, 0x0, 0x22, 0x40, 0x1, 0x0, 0xFF, 0xFF,
};
static const u8 gUnk_081232FE[] = {
0x65, 0x40, 0xBF, 0xFF, 0x22, 0x40, 0xC0, 0xFF, 0x66, 0x40, 0xC1, 0xFF, 0x29,
0x40, 0xFF, 0xFF, 0x26, 0x40, 0x0, 0x0, 0x2A, 0x40, 0x1, 0x0, 0xFF, 0xFF,
};
static const u16 gUnk_081232EC[] = { 0x4022, 0xfffe, 0x4022, 0xffff, 0x4022, 0x0, 0x4022, 0x1, 0xffff };
static const u16 gUnk_081232FE[] = { 0x4065, 0xffbf, 0x4022, 0xffc0, 0x4066, 0xffc1, 0x4029,
0xffff, 0x4026, 0x0, 0x402a, 0x1, 0xffff };
this->action = 1;
this->spriteSettings.draw = 1;
if (this->type == 3) {
this->frameIndex = 0;
sub_0801AF18(gUnk_081232FE, COORD_TO_TILE(this), this->collisionLayer);
SetMultipleTiles((u16*)gUnk_081232FE, COORD_TO_TILE(this), this->collisionLayer);
} else {
this->frameIndex = this->type;
sub_0801AF18(gUnk_081232EC, COORD_TO_TILE(this), this->collisionLayer);
SetMultipleTiles((u16*)gUnk_081232EC, COORD_TO_TILE(this), this->collisionLayer);
}
}