Merge pull request #412 from octorock/objects

Decompile some objects
This commit is contained in:
notyourav
2022-02-27 14:23:32 -08:00
committed by GitHub
92 changed files with 1955 additions and 4736 deletions
-156
View File
@@ -1,156 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start EnemyItem
EnemyItem: @ 0x080A2448
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _080A245E
adds r0, r5, #0
bl sub_080A2500
_080A245E:
ldrb r0, [r5, #0xc]
adds r1, r0, #0
cmp r1, #0
bne _080A24CE
adds r0, #1
strb r0, [r5, #0xc]
ldrb r0, [r5, #0xe]
strb r0, [r5, #0xa]
str r1, [r5, #0x54]
ldr r2, _080A24B4 @ =gEntityLists + 32
ldr r4, [r2, #4]
cmp r4, r2
beq _080A24BE
_080A2478:
ldrb r0, [r4, #8]
cmp r0, #3
bne _080A24B8
ldrb r0, [r5, #0xb]
ldrb r1, [r4, #9]
cmp r0, r1
bne _080A24B8
movs r3, #0x2e
ldrsh r0, [r4, r3]
movs r3, #0x2e
ldrsh r1, [r5, r3]
subs r0, r0, r1
adds r0, #0x10
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x1f
bhi _080A24B8
movs r1, #0x32
ldrsh r0, [r4, r1]
movs r3, #0x32
ldrsh r1, [r5, r3]
subs r0, r0, r1
adds r0, #0x10
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x1f
bhi _080A24B8
str r4, [r5, #0x54]
b _080A24BE
.align 2, 0
_080A24B4: .4byte gEntityLists + 32
_080A24B8:
ldr r4, [r4, #4]
cmp r4, r2
bne _080A2478
_080A24BE:
ldr r0, [r5, #0x54]
cmp r0, #0
bne _080A24CA
adds r0, r5, #0
bl sub_080A2534
_080A24CA:
bl sub_08054564
_080A24CE:
ldr r4, [r5, #0x54]
cmp r4, #0
beq _080A24F6
movs r2, #0x80
lsls r2, r2, #0xb
movs r3, #0x80
lsls r3, r3, #9
adds r0, r4, #0
adds r1, r5, #0
bl PositionRelative
ldrh r0, [r5, #0x36]
subs r0, #4
strh r0, [r5, #0x36]
ldr r0, [r4, #4]
cmp r0, #0
bne _080A24F6
adds r0, r5, #0
bl sub_080A2508
_080A24F6:
adds r0, r5, #0
bl sub_08080CB4
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080A2500
sub_080A2500: @ 0x080A2500
push {lr}
bl DeleteThisEntity
pop {pc}
thumb_func_start sub_080A2508
sub_080A2508: @ 0x080A2508
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xa]
movs r1, #0
movs r3, #0
bl CreateObjectWithParent
adds r2, r0, #0
cmp r2, #0
beq _080A252C
movs r0, #5
strb r0, [r2, #0xe]
adds r0, r4, #0
adds r0, #0x86
ldrh r1, [r0]
adds r0, r2, #0
adds r0, #0x86
strh r1, [r0]
_080A252C:
adds r0, r4, #0
bl sub_080A2500
pop {r4, pc}
thumb_func_start sub_080A2534
sub_080A2534: @ 0x080A2534
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xa]
movs r1, #0
movs r3, #0
bl CreateObjectWithParent
adds r2, r0, #0
cmp r2, #0
beq _080A2558
movs r0, #4
strb r0, [r2, #0xe]
adds r0, r4, #0
adds r0, #0x86
ldrh r1, [r0]
adds r0, r2, #0
adds r0, #0x86
strh r1, [r0]
_080A2558:
adds r0, r4, #0
bl sub_080A2500
pop {r4, pc}
-370
View File
@@ -1,370 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start FourElements
FourElements: @ 0x080A01C0
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A01DC @ =gUnk_08124898
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
_080A01DC: .4byte gUnk_08124898
thumb_func_start sub_080A01E0
sub_080A01E0: @ 0x080A01E0
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r3, #1
strb r3, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x10
orrs r0, r1
strb r0, [r2]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x19]
ldr r0, _080A027C @ =gHitbox_6
str r0, [r4, #0x48]
ldr r0, _080A0280 @ =0x0000FF40
strh r0, [r4, #0x36]
adds r1, r4, #0
adds r1, #0x6a
movs r0, #0x40
strb r0, [r1]
ldrb r0, [r4, #0xa]
cmp r0, #0x43
bgt _080A0246
cmp r0, #0x42
bge _080A0246
cmp r0, #0x40
beq _080A0246
cmp r0, #0x41
bne _080A0246
ldr r2, _080A0284 @ =gScreen
ldrh r1, [r2]
ldr r0, _080A0288 @ =0x0000FDFF
ands r0, r1
strh r0, [r2]
adds r0, r4, #0
adds r0, #0x38
strb r3, [r0]
_080A0246:
ldr r0, _080A028C @ =script_PlayerGetElement
bl StartPlayerScript
ldr r1, _080A0284 @ =gScreen
adds r2, r1, #0
adds r2, #0x66
movs r0, #0xc8
lsls r0, r0, #3
strh r0, [r2]
adds r1, #0x68
movs r0, #0x80
lsls r0, r0, #5
strh r0, [r1]
bl sub_0805BC4C
ldrb r2, [r4, #0xa]
subs r2, #0x40
adds r0, r4, #0
movs r1, #0xad
movs r3, #0
bl CreateObjectWithParent
cmp r0, #0
beq _080A027A
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_080A027A:
pop {r4, pc}
.align 2, 0
_080A027C: .4byte gHitbox_6
_080A0280: .4byte 0x0000FF40
_080A0284: .4byte gScreen
_080A0288: .4byte 0x0000FDFF
_080A028C: .4byte script_PlayerGetElement
thumb_func_start sub_080A0290
sub_080A0290: @ 0x080A0290
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _080A02BC @ =gActiveScriptInfo
ldr r0, [r5]
movs r1, #4
ands r0, r1
cmp r0, #0
beq _080A02CA
adds r0, r4, #0
bl sub_080A0424
ldrh r2, [r4, #0x36]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #8
rsbs r0, r0, #0
cmp r1, r0
bge _080A02C0
adds r0, r2, #1
strh r0, [r4, #0x36]
b _080A02CA
.align 2, 0
_080A02BC: .4byte gActiveScriptInfo
_080A02C0:
movs r1, #2
strb r1, [r4, #0xc]
ldr r0, [r5]
orrs r0, r1
str r0, [r5]
_080A02CA:
pop {r4, r5, pc}
thumb_func_start sub_080A02CC
sub_080A02CC: @ 0x080A02CC
push {r4, lr}
adds r4, r0, #0
bl sub_080A0424
adds r0, r4, #0
bl sub_080A0444
adds r0, r4, #0
bl IsCollidingPlayer
cmp r0, #0
beq _080A0342
ldr r0, [r4, #0x54]
bl DeleteEntity
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
movs r2, #0
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x2d
strb r0, [r4, #0xe]
ldr r0, _080A0344 @ =gScreen
adds r3, r0, #0
adds r3, #0x66
movs r1, #0xc8
lsls r1, r1, #3
strh r1, [r3]
adds r0, #0x68
strh r2, [r0]
ldrb r0, [r4, #0xa]
movs r1, #0
movs r2, #1
bl sub_080A7C18
adds r0, r4, #0
movs r1, #1
bl sub_0808C650
movs r0, #6
movs r1, #2
bl SetFade
movs r0, #0xf8
bl SoundReq
movs r0, #0xa4
lsls r0, r0, #1
bl SoundReq
movs r0, #5
bl SoundReq
ldr r0, _080A0348 @ =0x80110000
bl SoundReq
_080A0342:
pop {r4, pc}
.align 2, 0
_080A0344: .4byte gScreen
_080A0348: .4byte 0x80110000
thumb_func_start sub_080A034C
sub_080A034C: @ 0x080A034C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080A0378
adds r0, r4, #0
bl sub_080A0424
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A038C
ldr r0, _080A0374 @ =gPlayerEntity
movs r1, #0
bl SetDefaultPriority
b _080A038C
.align 2, 0
_080A0374: .4byte gPlayerEntity
_080A0378:
movs r0, #0
movs r1, #0x3c
bl RequestPriorityDuration
bl sub_0808C67C
cmp r0, #0
beq _080A038C
movs r0, #4
strb r0, [r4, #0xc]
_080A038C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0390
sub_080A0390: @ 0x080A0390
push {r4, lr}
adds r4, r0, #0
movs r0, #0
movs r1, #0x3c
bl RequestPriorityDuration
ldr r0, _080A03B4 @ =gFadeControl
ldrb r0, [r0]
cmp r0, #0
bne _080A03B2
movs r0, #5
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x68
movs r0, #0xd2
lsls r0, r0, #1
strh r0, [r1]
_080A03B2:
pop {r4, pc}
.align 2, 0
_080A03B4: .4byte gFadeControl
thumb_func_start sub_080A03B8
sub_080A03B8: @ 0x080A03B8
push {r4, lr}
adds r4, r0, #0
movs r0, #0
movs r1, #0xa
bl RequestPriorityDuration
adds r1, r4, #0
adds r1, #0x68
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A03E4
movs r0, #6
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xa]
bl sub_0805429C
adds r1, r4, #0
bl MessageNoOverlap
_080A03E4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A03E8
sub_080A03E8: @ 0x080A03E8
push {lr}
movs r0, #0
movs r1, #0xa
bl RequestPriorityDuration
ldr r0, _080A041C @ =gMessage
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _080A041A
movs r0, #0x5a
bl SetPriorityTimer
ldr r0, _080A0420 @ =gPlayerState
adds r0, #0x8b
movs r1, #1
strb r1, [r0]
bl sub_0807DF50
movs r0, #0
bl SetRoomFlag
bl DeleteThisEntity
_080A041A:
pop {pc}
.align 2, 0
_080A041C: .4byte gMessage
_080A0420: .4byte gPlayerState
thumb_func_start sub_080A0424
sub_080A0424: @ 0x080A0424
push {lr}
adds r1, r0, #0
adds r1, #0x6a
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0442
movs r0, #0x40
strb r0, [r1]
movs r0, #0xbc
lsls r0, r0, #1
bl SoundReq
_080A0442:
pop {pc}
thumb_func_start sub_080A0444
sub_080A0444: @ 0x080A0444
ldr r3, _080A0460 @ =gUnk_081248B4
ldrb r1, [r0, #0xf]
adds r2, r1, #1
strb r2, [r0, #0xf]
lsls r1, r1, #0x18
lsrs r1, r1, #0x1b
movs r2, #7
ands r1, r2
adds r1, r1, r3
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
strh r1, [r0, #0x36]
bx lr
.align 2, 0
_080A0460: .4byte gUnk_081248B4
thumb_func_start sub_080A0464
sub_080A0464: @ 0x080A0464
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
movs r0, #6
movs r1, #0xac
movs r2, #6
bl FindEntityByID
cmp r0, #0
beq _080A048A
movs r1, #0x2e
ldrsh r2, [r0, r1]
movs r1, #0x32
ldrsh r3, [r0, r1]
adds r3, #0x18
adds r0, r4, #0
adds r1, r5, #0
bl sub_0807DEDC
_080A048A:
pop {r4, r5, pc}
-364
View File
@@ -1,364 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ItemForSale
ItemForSale: @ 0x08081814
push {r4, lr}
adds r4, r0, #0
ldr r1, _08081850 @ =gUnk_0811EE28
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 CheckOnScreen
cmp r0, #0
beq _08081838
adds r0, r4, #0
bl sub_08080CB4
_08081838:
ldrb r0, [r4, #0xe]
cmp r0, #2
bgt _0808184E
cmp r0, #1
blt _0808184E
ldrb r0, [r4, #0xc]
cmp r0, #1
bne _0808184E
adds r0, r4, #0
bl sub_0800445C
_0808184E:
pop {r4, pc}
.align 2, 0
_08081850: .4byte gUnk_0811EE28
thumb_func_start sub_08081854
sub_08081854: @ 0x08081854
push {r4, lr}
adds r4, r0, #0
movs r3, #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]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
strb r3, [r4, #0x16]
.ifdef EU
adds r0, r4, #0x0
movs r1, #0x6
bl SetDefaultPriority
.endif
str r4, [r4, #0x54]
adds r0, r4, #0
bl sub_08081A5C
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0808188E
cmp r0, #1
beq _08081898
b _0808189C
_0808188E:
ldr r0, _08081894 @ =gUnk_080FD328
b _0808189A
.align 2, 0
_08081894: .4byte gUnk_080FD328
_08081898:
ldr r0, _080818A0 @ =gHitbox_5
_0808189A:
str r0, [r4, #0x48]
_0808189C:
pop {r4, pc}
.align 2, 0
_080818A0: .4byte gHitbox_5
thumb_func_start sub_080818A4
sub_080818A4: @ 0x080818A4
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xd]
cmp r2, #0
beq _080818C0
movs r1, #2
strb r1, [r4, #0xc]
ldr r0, _080818BC @ =gUnk_0200AF00
adds r0, #0x2f
strb r1, [r0]
b _08081920
.align 2, 0
_080818BC: .4byte gUnk_0200AF00
_080818C0:
ldrb r0, [r4, #0xa]
cmp r0, #0x36
bne _080818F0
adds r1, r4, #0
adds r1, #0x39
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
beq _08081920
strb r2, [r1]
movs r0, #3
strb r0, [r4, #0xc]
ldr r1, _080818E8 @ =gRoomVars
movs r0, #1
str r0, [r1, #0x68]
ldr r1, _080818EC @ =gPlayerState
movs r0, #7
strb r0, [r1, #0xc]
b _08081920
.align 2, 0
_080818E8: .4byte gRoomVars
_080818EC: .4byte gPlayerState
_080818F0:
adds r1, r4, #0
adds r1, #0x39
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
beq _08081920
strb r2, [r1]
movs r0, #1
strb r0, [r4, #0xd]
bl sub_08078B48
bl ResetPlayer
ldr r1, _08081924 @ =gPlayerState
movs r0, #4
strb r0, [r1, #5]
ldr r0, _08081928 @ =gPlayerEntity
str r4, [r0, #0x74]
ldr r0, _0808192C @ =gUnk_0200AF00
adds r0, #0x2f
movs r1, #2
strb r1, [r0]
bl MessageClose
_08081920:
pop {r4, pc}
.align 2, 0
_08081924: .4byte gPlayerState
_08081928: .4byte gPlayerEntity
_0808192C: .4byte gUnk_0200AF00
thumb_func_start sub_08081930
sub_08081930: @ 0x08081930
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, _08081968 @ =gUnk_0200AF00
adds r6, r0, #0
adds r6, #0x2f
movs r0, #2
strb r0, [r6]
ldr r3, _0808196C @ =gPlayerEntity
ldrb r1, [r3, #0x18]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1e
ldrb r2, [r4, #0x18]
subs r0, #6
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
ldr r5, _08081970 @ =gPlayerState
ldrb r0, [r5, #5]
cmp r0, #0
beq _0808195E
ldr r0, [r3, #0x74]
cmp r4, r0
beq _08081974
_0808195E:
adds r0, r4, #0
bl sub_080819B4
b _080819AC
.align 2, 0
_08081968: .4byte gUnk_0200AF00
_0808196C: .4byte gPlayerEntity
_08081970: .4byte gPlayerState
_08081974:
bl sub_080784E4
adds r1, r0, #0
ldr r0, [r1, #8]
cmp r0, #0
beq _08081998
ldrb r0, [r1, #1]
cmp r0, #1
bne _08081998
movs r0, #7
strb r0, [r6]
adds r0, r5, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x88
ands r0, r1
cmp r0, #0
bne _080819AC
_08081998:
ldr r0, _080819B0 @ =gPlayerState
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x98
ands r0, r1
cmp r0, #0
beq _080819AC
adds r0, r4, #0
bl sub_080819B4
_080819AC:
pop {r4, r5, r6, pc}
.align 2, 0
_080819B0: .4byte gPlayerState
thumb_func_start sub_080819B4
sub_080819B4: @ 0x080819B4
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _08081A48 @ =gRoomVars
ldrb r0, [r0, #6]
cmp r0, #0
bne _080819D4
ldr r0, [r5, #0x50]
cmp r0, #0
beq _080819D0
adds r0, #0x20
ldrb r1, [r5, #0xf]
adds r0, r0, r1
movs r1, #0xff
strb r1, [r0]
_080819D0:
bl DeleteThisEntity
_080819D4:
ldr r0, _08081A4C @ =gPlayerState
movs r2, #0
strb r2, [r0, #5]
ldr r4, _08081A50 @ =gPlayerEntity
str r2, [r4, #0x74]
ldr r1, _08081A54 @ =gUnk_0200AF00
ldr r3, _08081A48 @ =gRoomVars
strb r2, [r3, #6]
adds r0, r1, #0
adds r0, #0x2c
strb r2, [r0]
adds r1, #0x2f
strb r2, [r1]
strb r2, [r3, #7]
adds r1, r5, #0
adds r1, #0x80
ldr r3, _08081A58 @ =gRoomControls
ldrh r0, [r3, #6]
ldrh r1, [r1]
adds r0, r0, r1
movs r1, #0
strh r0, [r5, #0x2e]
movs r6, #0x82
ldrh r0, [r3, #8]
ldrh r3, [r6, r5]
adds r0, r0, r3
strh r0, [r5, #0x32]
str r2, [r5, #0x34]
movs r3, #1
strb r3, [r5, #0xc]
strb r1, [r5, #0xd]
ldrb r1, [r4, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r5, #0x1b]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x1b]
adds r0, r5, #0
adds r0, #0x38
strb r3, [r0]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
adds r0, r5, #0
bl UpdateSpriteForCollisionLayer
adds r0, r5, #0
bl sub_08081A5C
pop {r4, r5, r6, pc}
.align 2, 0
_08081A48: .4byte gRoomVars
_08081A4C: .4byte gPlayerState
_08081A50: .4byte gPlayerEntity
_08081A54: .4byte gUnk_0200AF00
_08081A58: .4byte gRoomControls
thumb_func_start sub_08081A5C
sub_08081A5C: @ 0x08081A5C
push {r4, lr}
adds r4, r0, #0
bl sub_080787D8
adds r2, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #1
bne _08081A7A
ldr r0, _08081A7C @ =gUnk_03003DF0
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
movs r0, #0
strb r0, [r1, #0xa]
_08081A7A:
pop {r4, pc}
.align 2, 0
_08081A7C: .4byte gUnk_03003DF0
thumb_func_start sub_08081A80
sub_08081A80: @ 0x08081A80
push {lr}
adds r2, r0, #0
ldr r0, _08081A98 @ =gRoomVars
ldr r0, [r0, #0x68]
cmp r0, #0
bne _08081A9C
bl sub_08081AB0
bl DeleteThisEntity
b _08081AAC
.align 2, 0
_08081A98: .4byte gRoomVars
_08081A9C:
cmp r0, #2
bne _08081AAC
movs r1, #0
movs r0, #1
strb r0, [r2, #0xc]
strb r1, [r2, #0xd]
bl sub_08081AB0
_08081AAC:
pop {pc}
.align 2, 0
thumb_func_start sub_08081AB0
sub_08081AB0: @ 0x08081AB0
push {lr}
ldr r1, _08081AC4 @ =gRoomVars
movs r0, #0
str r0, [r1, #0x68]
strb r0, [r1, #6]
strb r0, [r1, #7]
bl SetPlayerControl
pop {pc}
.align 2, 0
_08081AC4: .4byte gRoomVars
-452
View File
@@ -1,452 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start MinecartDoor
MinecartDoor: @ 0x08096AD4
push {lr}
ldr r2, _08096AE8 @ =gUnk_0812323C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08096AE8: .4byte gUnk_0812323C
thumb_func_start sub_08096AEC
sub_08096AEC: @ 0x08096AEC
push {r4, r5, r6, lr}
adds r4, r0, #0
bl sub_080837B0
cmp r0, #0
beq _08096BB6
ldrb r1, [r4, #0xa]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _08096B12
adds r1, r4, #0
adds r1, #0x7e
movs r0, #1
strb r0, [r1]
ldrb r1, [r4, #0xa]
movs r0, #3
ands r0, r1
strb r0, [r4, #0xa]
_08096B12:
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r4, #0x24]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x70
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x72
strh r0, [r1]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _08096B90 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r5, #0x32
ldrsh r0, [r4, r5]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r5, r4, #0
adds r5, #0x76
strh r1, [r5]
ldrh r0, [r5]
adds r6, r4, #0
adds r6, #0x38
ldrb r1, [r6]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x74
strh r0, [r1]
ldrb r0, [r4, #0xa]
strb r0, [r4, #0x1e]
adds r0, r4, #0
bl sub_08096CEC
cmp r0, #0
beq _08096B9C
adds r0, r4, #0
adds r0, #0x7e
ldrb r0, [r0]
cmp r0, #0
beq _08096B94
bl DeleteThisEntity
b _08096BB6
.align 2, 0
_08096B90: .4byte gRoomControls
_08096B94:
adds r0, r4, #0
bl sub_08096E04
b _08096BB6
_08096B9C:
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]
ldr r0, _08096BB8 @ =0x00004022
ldrh r1, [r5]
ldrb r2, [r6]
bl SetTile
_08096BB6:
pop {r4, r5, r6, pc}
.align 2, 0
_08096BB8: .4byte 0x00004022
thumb_func_start sub_08096BBC
sub_08096BBC: @ 0x08096BBC
push {r4, lr}
adds r4, r0, #0
bl sub_08096CEC
cmp r0, #0
beq _08096BF2
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #7
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xa]
lsls r0, r0, #3
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x76
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
ldr r0, _08096BF4 @ =0x0000010B
bl EnqueueSFX
_08096BF2:
pop {r4, pc}
.align 2, 0
_08096BF4: .4byte 0x0000010B
thumb_func_start sub_08096BF8
sub_08096BF8: @ 0x08096BF8
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 _08096C3A
adds r0, r4, #0
bl sub_08096E04
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x72
ldrh r0, [r0]
strh r0, [r4, #0x32]
adds r0, r4, #0
adds r0, #0x7e
ldrb r0, [r0]
cmp r0, #0
beq _08096C3A
bl DeleteThisEntity
_08096C3A:
pop {r4, pc}
thumb_func_start sub_08096C3C
sub_08096C3C: @ 0x08096C3C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7e
ldrb r0, [r0]
cmp r0, #0
beq _08096C56
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
bne _08096CAE
_08096C56:
ldr r0, _08096C80 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
lsls r1, r1, #5
ands r0, r1
cmp r0, #0
beq _08096C92
ldrb r2, [r4, #0xa]
lsls r1, r2, #1
ldr r0, _08096C84 @ =gPlayerEntity
ldrb r0, [r0, #0x14]
cmp r1, r0
bne _08096C88
adds r0, r4, #0
adds r1, r2, #0
bl sub_08083734
cmp r0, #0
beq _08096CAE
b _08096C9C
.align 2, 0
_08096C80: .4byte gPlayerState
_08096C84: .4byte gPlayerEntity
_08096C88:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
b _08096C98
_08096C92:
adds r0, r4, #0
bl sub_08096D84
_08096C98:
cmp r0, #0
bne _08096CAE
_08096C9C:
movs r0, #4
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xa]
adds r0, r4, #0
adds r0, #0x76
ldrh r2, [r0]
adds r0, r4, #0
bl sub_080836DC
_08096CAE:
pop {r4, pc}
thumb_func_start sub_08096CB0
sub_08096CB0: @ 0x08096CB0
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 _08096CE6
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x72
ldrh r0, [r0]
strh r0, [r4, #0x32]
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_08083814
ldr r0, _08096CE8 @ =0x0000010B
bl EnqueueSFX
_08096CE6:
pop {r4, pc}
.align 2, 0
_08096CE8: .4byte 0x0000010B
thumb_func_start sub_08096CEC
sub_08096CEC: @ 0x08096CEC
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x7e
ldrb r0, [r0]
cmp r0, #0
beq _08096D06
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
bne _08096D60
_08096D06:
ldr r0, _08096D40 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
lsls r1, r1, #5
ands r0, r1
cmp r0, #0
beq _08096D64
ldr r3, _08096D44 @ =gPlayerEntity
ldrb r2, [r4, #0xa]
lsls r0, r2, #1
ldrb r1, [r3, #0x14]
eors r0, r1
movs r1, #2
ands r0, r1
cmp r0, #0
bne _08096D64
movs r0, #1
ands r2, r0
cmp r2, #0
beq _08096D48
movs r1, #0x32
ldrsh r0, [r3, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
movs r5, #0x2e
ldrsh r2, [r3, r5]
movs r5, #0x2e
ldrsh r3, [r4, r5]
b _08096D58
.align 2, 0
_08096D40: .4byte gPlayerState
_08096D44: .4byte gPlayerEntity
_08096D48:
movs r1, #0x2e
ldrsh r0, [r3, r1]
movs r2, #0x2e
ldrsh r1, [r4, r2]
movs r5, #0x32
ldrsh r2, [r3, r5]
movs r5, #0x32
ldrsh r3, [r4, r5]
_08096D58:
bl sub_08096D68
cmp r0, #0
beq _08096D64
_08096D60:
movs r0, #1
b _08096D66
_08096D64:
movs r0, #0
_08096D66:
pop {r4, r5, pc}
thumb_func_start sub_08096D68
sub_08096D68: @ 0x08096D68
push {lr}
subs r0, r0, r1
adds r0, #8
cmp r0, #0x10
bhi _08096D7E
subs r0, r2, r3
adds r0, #0x30
cmp r0, #0x60
bhi _08096D7E
movs r0, #1
b _08096D80
_08096D7E:
movs r0, #0
_08096D80:
pop {pc}
.align 2, 0
thumb_func_start sub_08096D84
sub_08096D84: @ 0x08096D84
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xa]
cmp r0, #1
beq _08096DB4
cmp r0, #1
bgt _08096D98
cmp r0, #0
beq _08096DA2
b _08096E00
_08096D98:
cmp r0, #2
beq _08096DC8
cmp r0, #3
beq _08096DE4
b _08096E00
_08096DA2:
movs r0, #0x32
ldrsh r1, [r1, r0]
ldr r0, _08096DB0 @ =gPlayerEntity
movs r2, #0x32
ldrsh r0, [r0, r2]
b _08096DEE
.align 2, 0
_08096DB0: .4byte gPlayerEntity
_08096DB4:
ldr r0, _08096DC4 @ =gPlayerEntity
movs r2, #0x2e
ldrsh r0, [r0, r2]
adds r0, #0xa
movs r2, #0x2e
ldrsh r1, [r1, r2]
b _08096DD4
.align 2, 0
_08096DC4: .4byte gPlayerEntity
_08096DC8:
ldr r0, _08096DE0 @ =gPlayerEntity
movs r2, #0x32
ldrsh r0, [r0, r2]
adds r0, #0xa
movs r2, #0x32
ldrsh r1, [r1, r2]
_08096DD4:
subs r0, r0, r1
cmp r0, #0x64
bhi _08096E00
movs r0, #1
b _08096E02
.align 2, 0
_08096DE0: .4byte gPlayerEntity
_08096DE4:
movs r0, #0x2e
ldrsh r1, [r1, r0]
ldr r0, _08096DFC @ =gPlayerEntity
movs r2, #0x2e
ldrsh r0, [r0, r2]
_08096DEE:
subs r0, #0xa
subs r1, r1, r0
cmp r1, #0x64
bhi _08096E00
movs r0, #1
b _08096E02
.align 2, 0
_08096DFC: .4byte gPlayerEntity
_08096E00:
movs r0, #0
_08096E02:
pop {pc}
thumb_func_start sub_08096E04
sub_08096E04: @ 0x08096E04
movs r1, #3
strb r1, [r0, #0xc]
movs r1, #8
strb r1, [r0, #0xe]
bx lr
.align 2, 0
-373
View File
@@ -1,373 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object35
Object35: @ 0x0808B86C
push {lr}
ldr r2, _0808B880 @ =gUnk_081213C4
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808B880: .4byte gUnk_081213C4
thumb_func_start sub_0808B884
sub_0808B884: @ 0x0808B884
push {lr}
ldr r2, _0808B898 @ =gUnk_081213D0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808B898: .4byte gUnk_081213D0
thumb_func_start sub_0808B89C
sub_0808B89C: @ 0x0808B89C
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
strb r0, [r4, #0xb]
adds r1, r4, #0
adds r1, #0x38
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteForCollisionLayer
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2]
movs r0, #0xb4
strb r0, [r4, #0xe]
ldrb r1, [r4, #0xb]
adds r0, r4, #0
bl InitializeAnimation
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808B8D4
sub_0808B8D4: @ 0x0808B8D4
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 _0808B904
movs r0, #0xb4
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xb]
adds r0, #1
strb r0, [r4, #0xb]
ldrb r0, [r4, #0xb]
movs r1, #3
bl __modsi3
strb r0, [r4, #0xb]
ldrb r1, [r4, #0xb]
adds r0, r4, #0
bl InitializeAnimation
_0808B904:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808B908
sub_0808B908: @ 0x0808B908
push {lr}
bl GetNextFrame
pop {pc}
thumb_func_start sub_0808B910
sub_0808B910: @ 0x0808B910
push {lr}
ldr r2, _0808B92C @ =gUnk_081213DC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
ldr r2, _0808B930 @ =gPlayerState
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x1a]
pop {pc}
.align 2, 0
_0808B92C: .4byte gUnk_081213DC
_0808B930: .4byte gPlayerState
thumb_func_start sub_0808B934
sub_0808B934: @ 0x0808B934
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
movs r7, #0
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r4, #0x24]
strb r7, [r4, #0x1e]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x70
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x72
strh r0, [r1]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _0808B9B8 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r5, #0x32
ldrsh r0, [r4, r5]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r5, r4, #0
adds r5, #0x76
strh r1, [r5]
ldrh r0, [r5]
adds r6, r4, #0
adds r6, #0x38
ldrb r1, [r6]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x74
strh r0, [r1]
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _0808B9C0
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xf]
ldr r0, _0808B9BC @ =0x00004022
ldrh r1, [r5]
ldrb r2, [r6]
bl SetTile
b _0808B9D2
.align 2, 0
_0808B9B8: .4byte gRoomControls
_0808B9BC: .4byte 0x00004022
_0808B9C0:
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #7
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x18]
strb r7, [r4, #0xe]
_0808B9D2:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0808B9D4
sub_0808B9D4: @ 0x0808B9D4
push {r4, lr}
adds r4, r0, #0
movs r0, #0
bl CheckRoomFlag
cmp r0, #0
beq _0808BA0A
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #7
strb r0, [r4, #0xe]
strb r1, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x76
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
ldr r0, _0808BA0C @ =0x0000010B
bl EnqueueSFX
_0808BA0A:
pop {r4, pc}
.align 2, 0
_0808BA0C: .4byte 0x0000010B
thumb_func_start sub_0808BA10
sub_0808BA10: @ 0x0808BA10
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 _0808BA44
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #0xc
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x72
ldrh r0, [r0]
strh r0, [r4, #0x32]
_0808BA44:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808BA48
sub_0808BA48: @ 0x0808BA48
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08083734
cmp r0, #0
beq _0808BA68
movs r0, #4
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x76
ldrh r2, [r0]
adds r0, r4, #0
movs r1, #2
bl sub_080836DC
_0808BA68:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808BA6C
sub_0808BA6C: @ 0x0808BA6C
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 _0808BAA4
movs r0, #5
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #2
bl sub_08083814
ldr r0, _0808BAA8 @ =0x0000010B
bl EnqueueSFX
ldr r0, _0808BAAC @ =0x00004022
adds r1, r4, #0
adds r1, #0x76
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
_0808BAA4:
pop {r4, pc}
.align 2, 0
_0808BAA8: .4byte 0x0000010B
_0808BAAC: .4byte 0x00004022
thumb_func_start nullsub_520
nullsub_520: @ 0x0808BAB0
bx lr
.align 2, 0
thumb_func_start sub_0808BAB4
sub_0808BAB4: @ 0x0808BAB4
push {lr}
ldr r2, _0808BAC8 @ =gUnk_081213F4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808BAC8: .4byte gUnk_081213F4
thumb_func_start sub_0808BACC
sub_0808BACC: @ 0x0808BACC
push {r4, lr}
adds r2, r0, #0
movs r4, #1
strb r4, [r2, #0xc]
movs r3, #0x10
strb r3, [r2, #0xe]
ldrh r0, [r2, #0x36]
subs r0, #0x10
strh r0, [r2, #0x36]
ldrb r0, [r2, #0xb]
cmp r0, #0
bne _0808BAEA
movs r0, #2
strb r0, [r2, #0x1e]
b _0808BAFC
_0808BAEA:
movs r0, #0
strb r0, [r2, #0x1e]
ldr r0, [r2, #0x50]
ldrh r1, [r0, #0x2e]
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _0808BAFC
strb r4, [r2, #0x1e]
_0808BAFC:
adds r0, r2, #0
bl CreateDust
pop {r4, pc}
thumb_func_start sub_0808BB04
sub_0808BB04: @ 0x0808BB04
push {lr}
ldrb r1, [r0, #0xe]
subs r1, #1
strb r1, [r0, #0xe]
lsls r1, r1, #0x18
cmp r1, #0
bne _0808BB16
bl DeleteThisEntity
_0808BB16:
pop {pc}
-499
View File
@@ -1,499 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object43
Object43: @ 0x0808DED0
push {lr}
ldr r2, _0808DEE4 @ =gUnk_081217BC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808DEE4: .4byte gUnk_081217BC
thumb_func_start sub_0808DEE8
sub_0808DEE8: @ 0x0808DEE8
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #0
movs r0, #1
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x10]
movs r0, #0x20
orrs r0, r1
strb r0, [r5, #0x10]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
ldr r3, _0808DF74 @ =gPlayerEntity
ldrb r1, [r3, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r5, #0x1b]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x1b]
ldrb r0, [r3, #0x14]
lsrs r0, r0, #1
strb r0, [r5, #0x14]
adds r0, #1
movs r1, #3
ands r0, r1
lsls r0, r0, #3
strb r0, [r5, #0x15]
movs r3, #6
movs r0, #6
strb r0, [r5, #0xf]
movs r0, #0xa0
lsls r0, r0, #1
strh r0, [r5, #0x24]
adds r1, r5, #0
adds r1, #0x60
movs r0, #0x3c
strh r0, [r1]
ldrb r1, [r5, #0x1a]
movs r2, #0x10
rsbs r2, r2, #0
adds r0, r2, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r5, #0x1a]
adds r0, r5, #0
adds r0, #0x72
strh r4, [r0]
subs r0, #6
strh r4, [r0]
ldrb r0, [r5, #0x11]
ands r2, r0
orrs r2, r3
strb r2, [r5, #0x11]
adds r0, r5, #0
movs r1, #7
bl InitializeAnimation
ldrb r0, [r5, #0xb]
cmp r0, #0
beq _0808DF78
movs r0, #0x28
strb r0, [r5, #0xe]
b _0808DFAA
.align 2, 0
_0808DF74: .4byte gPlayerEntity
_0808DF78:
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r5, #0x18]
ldr r0, _0808DF9C @ =gPlayerState
adds r0, #0xac
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #2
ands r0, r1
cmp r0, #0
beq _0808DFA0
movs r0, #0x28
b _0808DFA2
.align 2, 0
_0808DF9C: .4byte gPlayerState
_0808DFA0:
movs r0, #0x50
_0808DFA2:
strb r0, [r5, #0xe]
adds r0, r5, #0
bl sub_0808DFAC
_0808DFAA:
pop {r4, r5, pc}
thumb_func_start sub_0808DFAC
sub_0808DFAC: @ 0x0808DFAC
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _0808E00E
ldr r1, _0808DFF0 @ =gPlayerState
adds r0, r1, #0
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
beq _0808DFCC
ldrb r1, [r1, #4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808DFD0
_0808DFCC:
bl DeleteThisEntity
_0808DFD0:
ldr r0, _0808DFF0 @ =gPlayerState
adds r2, r0, #0
adds r2, #0x21
ldrb r0, [r2]
cmp r0, #0x4f
bls _0808DFF8
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
ldrb r6, [r2]
ldr r7, _0808DFF4 @ =gUnk_081217D8
b _0808E038
.align 2, 0
_0808DFF0: .4byte gPlayerState
_0808DFF4: .4byte gUnk_081217D8
_0808DFF8:
cmp r0, #0
beq _0808E008
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
b _0808E1BA
_0808E008:
bl DeleteThisEntity
b _0808E038
_0808E00E:
ldr r5, _0808E02C @ =gPlayerState
ldrb r0, [r5, #4]
cmp r0, #0
bne _0808E01A
bl DeleteThisEntity
_0808E01A:
ldrb r1, [r5, #0x1b]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0808E034
ldrb r6, [r5, #0x1b]
ldr r7, _0808E030 @ =gUnk_081217D0
b _0808E038
.align 2, 0
_0808E02C: .4byte gPlayerState
_0808E030: .4byte gUnk_081217D0
_0808E034:
bl DeleteThisEntity
_0808E038:
cmp r6, #0
bne _0808E03E
b _0808E1B6
_0808E03E:
adds r0, r4, #0
bl GetNextFrame
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0808E084
subs r0, #1
strb r0, [r4, #0xe]
movs r2, #3
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _0808E068
ldr r0, _0808E080 @ =gPlayerState
adds r0, #0xac
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #2
ands r0, r1
cmp r0, #0
bne _0808E068
movs r2, #7
_0808E068:
ldrb r0, [r4, #0xe]
ands r0, r2
adds r5, r4, #0
adds r5, #0x6c
adds r6, r4, #0
adds r6, #0x38
cmp r0, #0
bne _0808E0E4
ldrh r0, [r5]
adds r0, #1
strh r0, [r5]
b _0808E0E4
.align 2, 0
_0808E080: .4byte gPlayerState
_0808E084:
adds r5, r4, #0
adds r5, #0x72
ldrh r0, [r5]
cmp r0, #0
beq _0808E0BC
ldr r0, _0808E0B8 @ =gRoomTransition
ldr r1, [r0]
movs r0, #0x1f
ands r1, r0
subs r5, #6
adds r6, r4, #0
adds r6, #0x38
cmp r1, #0
bne _0808E0E4
adds r0, r4, #0
movs r1, #7
movs r2, #0
bl CreateFx
cmp r0, #0
beq _0808E0E4
ldrb r1, [r6]
adds r0, #0x38
strb r1, [r0]
b _0808E0E4
.align 2, 0
_0808E0B8: .4byte gRoomTransition
_0808E0BC:
ldr r0, _0808E140 @ =0x00000115
bl EnqueueSFX
adds r0, r4, #0
movs r1, #0x12
movs r2, #0
bl CreateFx
adds r6, r4, #0
adds r6, #0x38
cmp r0, #0
beq _0808E0DA
ldrb r1, [r6]
adds r0, #0x38
strb r1, [r0]
_0808E0DA:
ldrh r0, [r5]
adds r0, #1
strh r0, [r5]
adds r5, r4, #0
adds r5, #0x6c
_0808E0E4:
ldr r2, _0808E144 @ =gPlayerEntity
ldrb r1, [r2, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r3, [r4, #0x19]
movs r0, #0x3f
ands r0, r3
orrs r0, r1
strb r0, [r4, #0x19]
ldrb r0, [r4, #0x14]
lsls r0, r0, #1
adds r0, r7, r0
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r2, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
ldrb r0, [r4, #0x14]
lsls r0, r0, #1
adds r0, r0, r7
ldrb r0, [r0, #1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
ldrh r0, [r2, #0x36]
strh r0, [r4, #0x36]
adds r2, #0x38
ldrb r0, [r2]
strb r0, [r6]
ldrb r0, [r4, #0x14]
cmp r0, #1
beq _0808E148
cmp r0, #1
ble _0808E136
cmp r0, #2
beq _0808E150
cmp r0, #3
beq _0808E15A
_0808E136:
ldrh r0, [r4, #0x32]
ldrh r1, [r5]
subs r0, r0, r1
strh r0, [r4, #0x32]
b _0808E162
.align 2, 0
_0808E140: .4byte 0x00000115
_0808E144: .4byte gPlayerEntity
_0808E148:
ldrh r0, [r5]
ldrh r1, [r4, #0x2e]
adds r0, r0, r1
b _0808E160
_0808E150:
ldrh r0, [r5]
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
b _0808E162
_0808E15A:
ldrh r0, [r4, #0x2e]
ldrh r1, [r5]
subs r0, r0, r1
_0808E160:
strh r0, [r4, #0x2e]
_0808E162:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _0808E17A
movs r0, #6
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x15]
movs r1, #0x10
eors r0, r1
strb r0, [r4, #0x15]
_0808E17A:
adds r0, r4, #0
bl LinearMoveUpdate
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _0808E1BA
ldr r0, _0808E1AC @ =gPlayerState
ldrb r1, [r0, #0x1b]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0808E1BA
ldrb r0, [r4, #0x10]
movs r1, #0xdf
ands r1, r0
strb r1, [r4, #0x10]
movs r0, #6
bl GetInventoryValue
cmp r0, #1
bne _0808E1B0
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
b _0808E1BA
.align 2, 0
_0808E1AC: .4byte gPlayerState
_0808E1B0:
bl DeleteThisEntity
b _0808E1BA
_0808E1B6:
bl DeleteThisEntity
_0808E1BA:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0808E1BC
sub_0808E1BC: @ 0x0808E1BC
push {r4, lr}
adds r4, r0, #0
bl sub_08079BD8
ldrb r0, [r4, #0xc]
adds r0, #1
movs r2, #0
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldr r0, _0808E204 @ =gPlayerEntity
ldrb r0, [r0, #0x14]
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x60
strh r2, [r0]
ldrb r1, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r4, #0x1a]
movs r0, #0xaf
strh r0, [r4, #0x12]
ldrb r1, [r4, #0x14]
lsrs r1, r1, #1
adds r0, r4, #0
bl InitializeAnimation
pop {r4, pc}
.align 2, 0
_0808E204: .4byte gPlayerEntity
thumb_func_start sub_0808E208
sub_0808E208: @ 0x0808E208
push {r4, lr}
adds r4, r0, #0
bl sub_08079BD8
adds r0, r4, #0
bl GetNextFrame
ldr r0, _0808E240 @ =gPlayerState
ldrb r0, [r0, #0x1b]
cmp r0, #0
beq _0808E248
ldr r0, _0808E244 @ =gRoomTransition
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0808E24C
ldrb r2, [r4, #0x1a]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1c
movs r0, #4
eors r1, r0
subs r0, #0x14
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
b _0808E24C
.align 2, 0
_0808E240: .4byte gPlayerState
_0808E244: .4byte gRoomTransition
_0808E248:
bl DeleteThisEntity
_0808E24C:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0808E260
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
_0808E260:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808E264
sub_0808E264: @ 0x0808E264
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r4, #0x5a
ldrb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808E27C
bl DeleteThisEntity
_0808E27C:
pop {r4, pc}
.align 2, 0
-434
View File
@@ -1,434 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object61
Object61: @ 0x08093428
push {r4, lr}
adds r4, r0, #0
ldr r0, _0809345C @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
lsls r1, r1, #0x11
ands r0, r1
cmp r0, #0
bne _0809344A
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08093446
ldr r1, _08093460 @ =gRoomControls
ldr r0, _08093464 @ =gPlayerEntity
str r0, [r1, #0x30]
_08093446:
bl DeleteThisEntity
_0809344A:
ldr r0, _08093468 @ =gUnk_081228C8
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_0809345C: .4byte gPlayerState
_08093460: .4byte gRoomControls
_08093464: .4byte gPlayerEntity
_08093468: .4byte gUnk_081228C8
thumb_func_start sub_0809346C
sub_0809346C: @ 0x0809346C
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0xff
strb r0, [r4, #0x1f]
ldr r0, _080934C0 @ =gPlayerEntity
ldrb r1, [r0, #0x1a]
lsls r1, r1, #0x1c
lsrs r1, r1, #0x1c
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080934B8
ldr r0, _080934C4 @ =gRoomControls
str r4, [r0, #0x30]
ldrb r0, [r4, #0x19]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x19]
adds r1, r4, #0
adds r1, #0x6e
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
adds r1, #4
strh r0, [r1]
adds r0, r4, #0
movs r1, #0x61
movs r2, #1
movs r3, #0
bl CreateObjectWithParent
_080934B8:
adds r0, r4, #0
bl sub_080934C8
pop {r4, pc}
.align 2, 0
_080934C0: .4byte gPlayerEntity
_080934C4: .4byte gRoomControls
thumb_func_start sub_080934C8
sub_080934C8: @ 0x080934C8
push {lr}
ldr r2, _080934DC @ =gUnk_081228D0
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080934DC: .4byte gUnk_081228D0
thumb_func_start sub_080934E0
sub_080934E0: @ 0x080934E0
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r4, r5, #0
adds r4, #0x6e
ldrh r1, [r4]
movs r2, #0
ldrsh r0, [r4, r2]
cmp r0, #0
bge _080934F6
rsbs r0, r1, #0
strh r0, [r4]
_080934F6:
ldr r0, _08093518 @ =gPlayerEntity
ldrb r0, [r0, #0xd]
cmp r0, #2
beq _0809351C
cmp r0, #2
bgt _080935B0
cmp r0, #1
bne _080935B0
adds r1, r5, #0
adds r1, #0x72
ldrh r0, [r1]
subs r0, #4
strh r0, [r1]
adds r6, r4, #0
adds r7, r1, #0
b _080935BE
.align 2, 0
_08093518: .4byte gPlayerEntity
_0809351C:
ldrb r2, [r5, #0xf]
adds r0, r2, #0
cmp r0, #0
bne _08093560
adds r0, r5, #0
adds r0, #0x72
ldrh r1, [r0]
adds r7, r0, #0
cmp r1, #0x80
bls _08093538
adds r0, r1, #0
subs r0, #0x20
strh r0, [r7]
b _08093544
_08093538:
adds r0, r2, #1
strb r0, [r5, #0xf]
movs r0, #0x92
lsls r0, r0, #1
bl SoundReq
_08093544:
adds r0, r5, #0
adds r0, #0x6e
ldrh r2, [r0]
ldr r1, _0809355C @ =0x0000011F
adds r6, r0, #0
cmp r2, r1
bhi _080935BE
adds r0, r2, #0
adds r0, #0x40
strh r0, [r6]
b _080935BE
.align 2, 0
_0809355C: .4byte 0x0000011F
_08093560:
cmp r0, #0xff
beq _080935A6
adds r0, r5, #0
adds r0, #0x72
ldrh r1, [r0]
adds r7, r0, #0
cmp r1, #0xff
bhi _08093576
adds r0, r1, #0
adds r0, #0x20
b _0809357A
_08093576:
movs r0, #0x80
lsls r0, r0, #1
_0809357A:
strh r0, [r7]
adds r0, r5, #0
adds r0, #0x6e
ldrh r1, [r0]
movs r2, #0x80
lsls r2, r2, #1
adds r6, r0, #0
cmp r1, r2
bls _08093594
adds r0, r1, #0
subs r0, #0x20
strh r0, [r6]
b _08093596
_08093594:
strh r2, [r6]
_08093596:
ldrh r1, [r6]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
bne _080935BE
movs r0, #0xff
strb r0, [r5, #0xf]
b _080935BE
_080935A6:
adds r0, r5, #0
bl sub_080936C8
adds r6, r4, #0
b _080935BA
_080935B0:
adds r0, r5, #0
bl sub_080936C8
adds r6, r5, #0
adds r6, #0x6e
_080935BA:
adds r7, r5, #0
adds r7, #0x72
_080935BE:
ldr r0, _080935E4 @ =gPlayerEntity
ldrb r1, [r0, #0x14]
movs r0, #2
ands r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _080935E8
movs r0, #1
strb r0, [r5, #0x1e]
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #2
bne _080935EA
ldrh r0, [r6]
rsbs r0, r0, #0
strh r0, [r6]
b _080935EA
.align 2, 0
_080935E4: .4byte gPlayerEntity
_080935E8:
strb r0, [r5, #0x1e]
_080935EA:
ldrb r0, [r5, #0x1e]
ldrb r1, [r5, #0x1f]
cmp r0, r1
beq _080935FE
strb r0, [r5, #0x1f]
ldrb r1, [r5, #0x1e]
ldrh r2, [r5, #0x12]
adds r0, r5, #0
bl sub_080042D0
_080935FE:
ldr r4, _0809364C @ =gPlayerEntity
adds r0, r4, #0
adds r1, r5, #0
bl CopyPosition
ldrb r2, [r4, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r4, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r5, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r5, #0x19]
ldrh r1, [r7]
adds r0, r5, #0
movs r2, #0xa
movs r3, #2
bl sub_0806FCF4
ldrh r1, [r6]
ldrh r2, [r7]
adds r0, r5, #0
movs r3, #0
bl sub_0805EC9C
adds r0, r4, #0
movs r1, #1
adds r2, r5, #0
bl sub_0806FEBC
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809364C: .4byte gPlayerEntity
thumb_func_start sub_08093650
sub_08093650: @ 0x08093650
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _080936C4 @ =gPlayerEntity
ldrb r0, [r5, #0x15]
lsrs r1, r0, #1
adds r0, r0, r1
asrs r0, r0, #2
adds r0, #2
strb r0, [r4, #0x1e]
ldrb r1, [r4, #0x1f]
cmp r0, r1
beq _08093674
strb r0, [r4, #0x1f]
ldrb r1, [r4, #0x1e]
ldrh r2, [r4, #0x12]
adds r0, r4, #0
bl sub_080042D0
_08093674:
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
ldrb r2, [r5, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r5, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r4, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r4, #0x19]
ldr r0, [r4, #0x50]
adds r0, #0x72
ldrh r1, [r0]
adds r0, r4, #0
movs r2, #0x18
movs r3, #0
bl sub_0806FCF4
adds r1, r4, #0
adds r1, #0x63
ldrb r0, [r1]
rsbs r0, r0, #0
strb r0, [r1]
adds r0, r5, #0
movs r1, #0
adds r2, r4, #0
bl sub_0806FEBC
pop {r4, r5, pc}
.align 2, 0
_080936C4: .4byte gPlayerEntity
thumb_func_start sub_080936C8
sub_080936C8: @ 0x080936C8
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _08093714 @ =gPlayerEntity
ldr r0, [r0, #0x7c]
lsrs r2, r0, #2
movs r3, #0x9c
lsls r3, r3, #1
adds r1, r3, #0
subs r1, r1, r2
adds r5, r4, #0
adds r5, #0x76
strh r1, [r5]
movs r1, #0x3c
bl __divsi3
movs r1, #8
subs r1, r1, r0
adds r0, r4, #0
adds r0, #0x74
strh r1, [r0]
ldrb r3, [r4, #0xe]
cmp r3, #0
bne _0809372C
adds r1, r4, #0
adds r1, #0x6e
ldrh r2, [r1]
ldrh r0, [r5]
cmp r0, r2
bhs _08093718
adds r0, r2, #0
subs r0, #8
strh r0, [r1]
adds r1, #4
ldrh r0, [r1]
adds r0, #8
strh r0, [r1]
b _0809375C
.align 2, 0
_08093714: .4byte gPlayerEntity
_08093718:
adds r0, r3, #1
strb r0, [r4, #0xe]
ldrh r0, [r5]
strh r0, [r1]
ldrh r0, [r5]
adds r0, #0x30
adds r1, r4, #0
adds r1, #0x72
strh r0, [r1]
b _0809375C
_0809372C:
ldrh r0, [r5]
adds r0, #0x30
adds r1, r4, #0
adds r1, #0x6e
ldrh r2, [r1]
cmp r0, r2
ble _0809374A
adds r0, r2, #0
adds r0, #8
strh r0, [r1]
adds r1, #4
ldrh r0, [r1]
subs r0, #8
strh r0, [r1]
b _0809375C
_0809374A:
movs r0, #0
strb r0, [r4, #0xe]
ldrh r0, [r5]
adds r0, #0x30
strh r0, [r1]
ldrh r1, [r5]
adds r0, r4, #0
adds r0, #0x72
strh r1, [r0]
_0809375C:
pop {r4, r5, pc}
.align 2, 0
-337
View File
@@ -1,337 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object68
Object68: @ 0x0809475C
push {lr}
ldr r2, _08094770 @ =gUnk_08122A10
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08094770: .4byte gUnk_08122A10
thumb_func_start sub_08094774
sub_08094774: @ 0x08094774
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #1
strb r0, [r5, #0xc]
ldrb r0, [r5, #0xa]
cmp r0, #8
bls _08094784
b _080948C6
_08094784:
lsls r0, r0, #2
ldr r1, _08094790 @ =_08094794
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08094790: .4byte _08094794
_08094794: @ jump table
.4byte _080947B8 @ case 0
.4byte _08094824 @ case 1
.4byte _080948B0 @ case 2
.4byte _080948C6 @ case 3
.4byte _080948C6 @ case 4
.4byte _080948C6 @ case 5
.4byte _080948C6 @ case 6
.4byte _080948C6 @ case 7
.4byte _080948C6 @ case 8
_080947B8:
adds r0, r5, #0
movs r1, #0xb
movs r2, #0
bl CreateFx
adds r6, r0, #0
str r6, [r5, #0x54]
cmp r6, #0
beq _080947EE
ldr r0, _0809480C @ =gPlayerEntity
ldr r4, _08094810 @ =gUnk_08122A18
ldrb r3, [r0, #0x14]
movs r1, #6
ands r1, r3
adds r1, r1, r4
movs r2, #0
ldrsb r2, [r1, r2]
lsls r2, r2, #0x10
movs r1, #1
orrs r1, r3
adds r1, r1, r4
movs r3, #0
ldrsb r3, [r1, r3]
lsls r3, r3, #0x10
adds r1, r6, #0
bl PositionRelative
_080947EE:
ldr r0, [r5, #0x54]
adds r1, r5, #0
bl CopyPosition
ldr r1, _08094814 @ =0x00004032
ldr r2, _08094818 @ =0x00004033
adds r0, r5, #0
bl sub_08094980
ldr r1, _0809481C @ =0x00004061
ldr r2, _08094820 @ =0x00004022
adds r0, r5, #0
bl sub_08094980
b _080948C6
.align 2, 0
_0809480C: .4byte gPlayerEntity
_08094810: .4byte gUnk_08122A18
_08094814: .4byte 0x00004032
_08094818: .4byte 0x00004033
_0809481C: .4byte 0x00004061
_08094820: .4byte 0x00004022
_08094824:
adds r0, r5, #0
movs r1, #0x2b
movs r2, #0
bl CreateFx
adds r6, r0, #0
str r6, [r5, #0x54]
cmp r6, #0
beq _0809485A
ldr r0, _08094898 @ =gPlayerEntity
ldr r4, _0809489C @ =gUnk_08122A18
ldrb r3, [r0, #0x14]
movs r1, #6
ands r1, r3
adds r1, r1, r4
movs r2, #0
ldrsb r2, [r1, r2]
lsls r2, r2, #0x10
movs r1, #1
orrs r1, r3
adds r1, r1, r4
movs r3, #0
ldrsb r3, [r1, r3]
lsls r3, r3, #0x10
adds r1, r6, #0
bl PositionRelative
_0809485A:
ldrb r4, [r5, #0xb]
cmp r4, #0
bne _080948C6
ldr r0, [r5, #0x54]
adds r1, r5, #0
bl CopyPosition
strb r4, [r5, #0xe]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
ldrb r1, [r5, #0x19]
movs r0, #0x3f
ands r0, r1
strb r0, [r5, #0x19]
ldr r1, _080948A0 @ =0x0000403B
ldr r2, _080948A4 @ =0x0000403C
adds r0, r5, #0
bl sub_08094980
ldr r1, _080948A8 @ =0x00004061
ldr r2, _080948AC @ =0x00004022
adds r0, r5, #0
bl sub_08094980
b _080948CA
.align 2, 0
_08094898: .4byte gPlayerEntity
_0809489C: .4byte gUnk_08122A18
_080948A0: .4byte 0x0000403B
_080948A4: .4byte 0x0000403C
_080948A8: .4byte 0x00004061
_080948AC: .4byte 0x00004022
_080948B0:
ldr r0, _080948CC @ =gPlayerEntity
movs r1, #0x60
movs r2, #0
bl sub_080A2A20
adds r1, r0, #0
str r1, [r5, #0x54]
cmp r1, #0
beq _080948C6
movs r0, #1
strb r0, [r1, #0xe]
_080948C6:
bl DeleteThisEntity
_080948CA:
pop {r4, r5, r6, pc}
.align 2, 0
_080948CC: .4byte gPlayerEntity
thumb_func_start sub_080948D0
sub_080948D0: @ 0x080948D0
push {lr}
ldr r2, _080948E4 @ =gUnk_08122A20
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080948E4: .4byte gUnk_08122A20
thumb_func_start sub_080948E8
sub_080948E8: @ 0x080948E8
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xe]
cmp r1, #0x3b
bhi _08094978
ldr r0, [r4, #0x34]
ldr r2, _0809495C @ =0xFFFFC000
adds r0, r0, r2
str r0, [r4, #0x34]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _08094970
adds r0, r4, #0
movs r1, #0x11
movs r2, #0x40
bl CreateFx
adds r3, r0, #0
str r3, [r4, #0x54]
cmp r3, #0
beq _08094970
ldrb r1, [r4, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x19]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x19]
ldr r2, [r4, #0x54]
adds r0, r4, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
adds r2, #0x29
lsrs r1, r1, #0x1d
ldrb r3, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r3
orrs r0, r1
strb r0, [r2]
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _08094960
bl Random
ldr r2, [r4, #0x54]
movs r1, #0xf
ands r0, r1
ldrh r1, [r2, #0x2e]
adds r0, r0, r1
strh r0, [r2, #0x2e]
b _08094970
.align 2, 0
_0809495C: .4byte 0xFFFFC000
_08094960:
bl Random
ldr r2, [r4, #0x54]
movs r1, #0xf
ands r0, r1
ldrh r1, [r2, #0x2e]
subs r1, r1, r0
strh r1, [r2, #0x2e]
_08094970:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
b _0809497C
_08094978:
bl DeleteThisEntity
_0809497C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08094980
sub_08094980: @ 0x08094980
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
adds r6, r0, #0
str r1, [sp]
str r2, [sp, #4]
movs r0, #0
mov r8, r0
ldr r1, _08094A04 @ =gRoomControls
mov sl, r1
movs r2, #0x3f
mov sb, r2
ldr r7, _08094A08 @ =gUnk_08122A28
_080949A0:
movs r4, #0
ldrsb r4, [r7, r4]
movs r5, #1
ldrsb r5, [r7, r5]
adds r0, r6, #0
adds r1, r4, #0
adds r2, r5, #0
bl sub_0800029C
ldr r3, [sp]
cmp r3, r0
bne _080949EC
movs r0, #0x2e
ldrsh r1, [r6, r0]
adds r1, r1, r4
mov r2, sl
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
mov r3, sb
ands r1, r3
movs r2, #0x32
ldrsh r0, [r6, r2]
adds r0, r0, r5
mov r3, sl
ldrh r2, [r3, #8]
subs r0, r0, r2
asrs r0, r0, #4
mov r2, sb
ands r0, r2
lsls r0, r0, #6
orrs r1, r0
adds r0, r6, #0
adds r0, #0x38
ldrb r2, [r0]
ldr r0, [sp, #4]
bl SetTile
_080949EC:
adds r7, #2
movs r3, #2
add r8, r3
mov r0, r8
cmp r0, #9
bls _080949A0
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08094A04: .4byte gRoomControls
_08094A08: .4byte gUnk_08122A28
-40
View File
@@ -1,40 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Object69
Object69: @ 0x08094A0C
push {lr}
adds r2, r0, #0
ldrb r1, [r2, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08094A3E
ldrb r0, [r2, #0xc]
cmp r0, #0
bne _08094A34
movs r0, #1
strb r0, [r2, #0xc]
ldr r0, _08094A30 @ =gHitbox_2
str r0, [r2, #0x48]
adds r0, r2, #0
bl sub_0807DD50
b _08094A42
.align 2, 0
_08094A30: .4byte gHitbox_2
_08094A34:
adds r0, r2, #0
movs r1, #0
bl sub_0807DD94
b _08094A42
_08094A3E:
movs r0, #1
strb r0, [r2, #0xc]
_08094A42:
pop {pc}
-12
View File
@@ -1,12 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectBF
ObjectBF: @ 0x080A2444
bx lr
.align 2, 0
-272
View File
@@ -1,272 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ObjectC1
ObjectC1: @ 0x080A2560
push {lr}
ldr r2, _080A2574 @ =gUnk_08125084
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A2574: .4byte gUnk_08125084
thumb_func_start sub_080A2578
sub_080A2578: @ 0x080A2578
push {lr}
movs r1, #8
strb r1, [r0, #0xc]
bl sub_080A259C
pop {pc}
thumb_func_start sub_080A2584
sub_080A2584: @ 0x080A2584
push {lr}
bl ResetPlayerEventPriority
ldr r1, _080A2598 @ =gUnk_02034490
movs r0, #0
strb r0, [r1]
bl DeleteThisEntity
pop {pc}
.align 2, 0
_080A2598: .4byte gUnk_02034490
thumb_func_start sub_080A259C
sub_080A259C: @ 0x080A259C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldr r5, _080A25DC @ =gPlayerEntity
ldrb r1, [r5, #0x10]
movs r7, #0x7f
adds r0, r7, #0
ands r0, r1
strb r0, [r5, #0x10]
ldrb r1, [r5, #0x18]
movs r6, #4
rsbs r6, r6, #0
adds r0, r6, #0
ands r0, r1
strb r0, [r5, #0x18]
ldrb r1, [r5, #0x1a]
lsls r1, r1, #0x1c
lsrs r1, r1, #0x1c
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r0, [r4, #0xd]
cmp r0, #1
beq _080A269C
cmp r0, #1
bgt _080A25E0
cmp r0, #0
beq _080A25E6
b _080A273C
.align 2, 0
_080A25DC: .4byte gPlayerEntity
_080A25E0:
cmp r0, #2
beq _080A26B4
b _080A273C
_080A25E6:
movs r0, #1
movs r2, #1
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
adds r0, r6, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r5, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
adds r3, r4, #0
adds r3, #0x29
lsrs r1, r1, #0x1d
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrb r2, [r5, #0x19]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r5, #0x1b]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r4, #0x1b]
ands r1, r2
orrs r1, r0
strb r1, [r4, #0x1b]
ldrb r1, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
movs r0, #4
strb r0, [r4, #0x14]
adds r0, r4, #0
movs r1, #6
bl SetDefaultPriority
ldr r0, _080A2670 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #8
ands r0, r1
cmp r0, #0
beq _080A2678
ldrb r0, [r4, #0xa]
bl sub_080542AC
ldr r1, _080A2674 @ =0x0000045B
cmp r0, #0
beq _080A2688
adds r1, #3
b _080A2688
.align 2, 0
_080A2670: .4byte gPlayerState
_080A2674: .4byte 0x0000045B
_080A2678:
ldrb r0, [r4, #0xa]
bl sub_080542AC
ldr r1, _080A2698 @ =0x000001B9
cmp r0, #0
beq _080A2688
movs r1, #0xb8
lsls r1, r1, #2
_080A2688:
lsrs r0, r1, #8
strh r0, [r4, #0x12]
movs r0, #0xff
ands r1, r0
adds r0, r4, #0
bl InitAnimationForceUpdate
b _080A273C
.align 2, 0
_080A2698: .4byte 0x000001B9
_080A269C:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #0
beq _080A273C
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080A273C
_080A26B4:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
ldr r0, _080A2764 @ =gMessage
ldrb r1, [r0]
adds r0, r7, #0
ands r0, r1
cmp r0, #0
bne _080A2762
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080A273C
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x69
ldrb r0, [r0]
strb r0, [r5, #0x10]
adds r0, r4, #0
adds r0, #0x68
ldrb r1, [r0]
movs r0, #3
ands r1, r0
ldrb r2, [r5, #0x18]
adds r0, r6, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
adds r0, r4, #0
adds r0, #0x6a
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x3d
strb r1, [r0]
ldr r1, _080A2768 @ =gPlayerState
adds r0, r4, #0
adds r0, #0x6b
ldrb r0, [r0]
strb r0, [r1, #7]
adds r0, r4, #0
adds r0, #0x6c
ldrb r0, [r0]
strb r0, [r1, #0xb]
adds r0, r4, #0
adds r0, #0x6d
ldrb r0, [r0]
strb r0, [r1, #0xa]
adds r0, r4, #0
adds r0, #0x6e
ldrb r0, [r0]
adds r2, r1, #0
adds r2, #0x27
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x6f
ldrb r0, [r0]
strb r0, [r1, #0x1a]
ldr r0, [r4, #0x70]
str r0, [r1, #0x30]
adds r0, r4, #0
adds r0, #0x74
ldrb r0, [r0]
adds r1, #0x8a
strb r0, [r1]
_080A273C:
ldr r5, [r4, #0x50]
cmp r5, #0
beq _080A2762
adds r0, r4, #0
adds r1, r5, #0
bl PositionEntityOnTop
ldrh r0, [r4, #0x12]
ldrb r1, [r4, #0x1e]
bl GetSpriteSubEntryOffsetDataPointer
ldrb r1, [r0]
adds r2, r5, #0
adds r2, #0x62
strb r1, [r2]
ldrb r1, [r0, #1]
adds r0, r5, #0
adds r0, #0x63
strb r1, [r0]
_080A2762:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A2764: .4byte gMessage
_080A2768: .4byte gPlayerState
-282
View File
@@ -1,282 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Whirlwind
Whirlwind: @ 0x08092CA0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x45
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
beq _08092CC0
ldr r0, _08092CD4 @ =gUnk_020342F8
subs r1, #1
bl ReadBit
cmp r0, #0
bne _08092CC0
bl DeleteThisEntity
_08092CC0:
ldr r0, _08092CD8 @ =gUnk_081227F4
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_08092CD4: .4byte gUnk_020342F8
_08092CD8: .4byte gUnk_081227F4
thumb_func_start sub_08092CDC
sub_08092CDC: @ 0x08092CDC
push {r4, lr}
adds r4, r0, #0
movs r2, #1
strb r2, [r4, #0xc]
ldr r0, _08092D48 @ =gUnk_080FD320
str r0, [r4, #0x48]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
adds r0, #0x3f
strb r2, [r0]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #0x47
strb r0, [r1]
adds r1, #4
movs r0, #0x44
strb r0, [r1]
subs r1, #5
movs r0, #0x80
strb r0, [r1]
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
ldrb r0, [r4, #0xa]
strb r0, [r4, #0x14]
lsls r0, r0, #3
strb r0, [r4, #0x15]
movs r0, #0xe0
lsls r0, r0, #3
strh r0, [r4, #0x24]
ldrb r0, [r4, #0xb]
cmp r0, #1
bne _08092D50
ldr r1, _08092D4C @ =0x00000161
adds r0, r4, #0
bl ChangeObjPalette
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
b _08092D5C
.align 2, 0
_08092D48: .4byte gUnk_080FD320
_08092D4C: .4byte 0x00000161
_08092D50:
ldr r0, _08092D78 @ =0x0000FFE8
strh r0, [r4, #0x36]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
_08092D5C:
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08092D74
adds r0, r4, #0
bl sub_0807DD64
adds r0, r4, #0
movs r1, #0
bl ExecuteScriptForEntity
_08092D74:
pop {r4, pc}
.align 2, 0
_08092D78: .4byte 0x0000FFE8
thumb_func_start sub_08092D7C
sub_08092D7C: @ 0x08092D7C
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r1, [r5, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08092D92
adds r0, r5, #0
movs r1, #0
bl ExecuteScriptForEntity
_08092D92:
ldrb r0, [r5, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
beq _08092E84
adds r0, r5, #0
bl GetNextFrame
ldr r6, _08092E04 @ =gPlayerState
ldr r0, [r6, #0x30]
movs r3, #0x80
ands r0, r3
cmp r0, #0
bne _08092E84
adds r0, r6, #0
adds r0, #0x3c
ldrb r0, [r0]
cmp r0, #0
bne _08092E84
ldr r4, _08092E08 @ =gPlayerEntity
ldrb r2, [r4, #0xc]
cmp r2, #4
beq _08092DC8
ldrb r1, [r4, #0x10]
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _08092E84
_08092DC8:
cmp r2, #6
beq _08092E84
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0xc
movs r3, #0xc
bl sub_0800419C
cmp r0, #0
beq _08092E84
ldr r0, [r6, #0x30]
movs r1, #0x80
lsls r1, r1, #0x11
ands r0, r1
cmp r0, #0
bne _08092E0C
ldrb r0, [r4, #0xc]
cmp r0, #4
beq _08092E0C
ldrb r0, [r5, #0xb]
cmp r0, #1
beq _08092E16
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #0x10
rsbs r0, r0, #0
cmp r1, r0
bgt _08092E84
b _08092E16
.align 2, 0
_08092E04: .4byte gPlayerState
_08092E08: .4byte gPlayerEntity
_08092E0C:
ldr r0, _08092E88 @ =gPlayerEntity
movs r1, #0x36
ldrsh r0, [r0, r1]
cmp r0, #0
beq _08092E84
_08092E16:
ldr r4, _08092E88 @ =gPlayerEntity
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
adds r0, r5, #0
bl sub_08004542
adds r0, r4, #0
bl sub_08004542
adds r1, r4, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldr r1, _08092E8C @ =gPlayerState
movs r0, #0x1f
strb r0, [r1, #0xc]
ldrb r2, [r5, #0xb]
adds r0, r1, #0
adds r0, #0x38
strb r2, [r0]
adds r1, #0x39
movs r0, #0xff
strb r0, [r1]
adds r4, #0x29
ldrb r1, [r4]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
subs r1, #1
adds r3, r5, #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]
ldrb r0, [r5, #0xc]
adds r0, #1
strb r0, [r5, #0xc]
bl sub_08077B20
ldr r0, _08092E90 @ =0x00000153
bl SoundReq
movs r0, #0x79
bl SoundReq
_08092E84:
pop {r4, r5, r6, pc}
.align 2, 0
_08092E88: .4byte gPlayerEntity
_08092E8C: .4byte gPlayerState
_08092E90: .4byte 0x00000153
thumb_func_start sub_08092E94
sub_08092E94: @ 0x08092E94
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
ldr r1, _08092ED0 @ =gPlayerEntity
adds r0, r4, #0
movs r2, #0xc
movs r3, #0xc
bl sub_0800419C
cmp r0, #0
bne _08092ECE
adds r0, r4, #0
bl ResetCollisionLayer
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
ldrb r0, [r4, #0xc]
subs r0, #1
strb r0, [r4, #0xc]
_08092ECE:
pop {r4, pc}
.align 2, 0
_08092ED0: .4byte gPlayerEntity
-741
View File
@@ -1,741 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start WindTribeTeleporter
WindTribeTeleporter: @ 0x080A0F24
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A0F40 @ =gUnk_08124C10
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_080A11E0
pop {r4, pc}
.align 2, 0
_080A0F40: .4byte gUnk_08124C10
thumb_func_start sub_080A0F44
sub_080A0F44: @ 0x080A0F44
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r6, #1
strb r6, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x59
movs r0, #8
strb r0, [r1]
adds r2, r5, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
ldr r0, _080A0FA8 @ =gHitbox_22
str r0, [r5, #0x48]
adds r0, r5, #0
movs r1, #6
bl SetDefaultPriority
adds r0, r5, #0
bl sub_080A11C0
cmp r0, #0
beq _080A0FA4
ldr r1, _080A0FAC @ =gPlayerEntity
ldrh r0, [r5, #0x2e]
movs r4, #0
strh r0, [r1, #0x2e]
ldrh r0, [r5, #0x32]
strh r0, [r1, #0x32]
movs r0, #3
bl SetPlayerControl
bl sub_08078B48
bl SetPlayerEventPriority
movs r0, #0x89
lsls r0, r0, #1
bl SoundReq
movs r0, #3
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
adds r0, r5, #0
adds r0, #0x68
strb r6, [r0]
_080A0FA4:
pop {r4, r5, r6, pc}
.align 2, 0
_080A0FA8: .4byte gHitbox_22
_080A0FAC: .4byte gPlayerEntity
thumb_func_start sub_080A0FB0
sub_080A0FB0: @ 0x080A0FB0
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080A11C0
adds r1, r0, #0
cmp r1, #0
beq _080A0FF8
adds r0, r5, #0
adds r0, #0x68
ldrb r0, [r0]
cmp r0, #0
bne _080A0FFE
ldr r1, _080A0FF4 @ =gPlayerEntity
ldrh r0, [r5, #0x2e]
movs r4, #0
strh r0, [r1, #0x2e]
ldrh r0, [r5, #0x32]
strh r0, [r1, #0x32]
movs r0, #3
bl SetPlayerControl
bl sub_08078B48
bl SetPlayerEventPriority
movs r0, #0x89
lsls r0, r0, #1
bl SoundReq
movs r0, #2
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
b _080A0FFE
.align 2, 0
_080A0FF4: .4byte gPlayerEntity
_080A0FF8:
adds r0, r5, #0
adds r0, #0x68
strb r1, [r0]
_080A0FFE:
pop {r4, r5, pc}
thumb_func_start sub_080A1000
sub_080A1000: @ 0x080A1000
.ifdef DEMO_JP
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xd]
cmp r1, #1
beq _080A0B52
cmp r1, #1
bgt _080A0B3C
cmp r1, #0
beq _080A0B46
b _080A0BB0
_080A0B3C:
cmp r1, #2
beq _080A0B60
cmp r1, #3
beq _080A0B8C
b _080A0BB0
_080A0B46:
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080A0BF0
_080A0B52:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0BF0
b _080A0B98
_080A0B60:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0B7E
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A0BF0
_080A0B7E:
ldr r0, _080A0B88 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
b _080A0BDE
.align 2, 0
_080A0B88: .4byte gRoomTransition
_080A0B8C:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0BA4
_080A0B98:
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _080A0BF0
_080A0BA4:
ldr r0, _080A0BAC @ =gRoomTransition
ldr r0, [r0]
b _080A0BDE
.align 2, 0
_080A0BAC: .4byte gRoomTransition
_080A0BB0:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0BD8
movs r0, #0xfc
bl SetLocalFlag
ldrb r1, [r4, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A0BD4 @ =0x0813AA10
adds r0, r0, r1
bl DoExitTransition
b _080A0BF0
.align 2, 0
_080A0BD4: .4byte 0x0813AA10
_080A0BD8:
ldr r0, _080A0BF4 @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
_080A0BDE:
ands r0, r1
cmp r0, #0
bne _080A0BF0
ldr r0, _080A0BF8 @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A0BF0:
pop {r4, pc}
.align 2, 0
_080A0BF4: .4byte gRoomTransition
_080A0BF8: .4byte gPlayerEntity
.else
.ifdef JP
push {lr}
adds r1, r0, #0
ldrb r2, [r1, #0xd]
cmp r2, #1
beq _080A0DF2
cmp r2, #1
bgt _080A0DDC
cmp r2, #0
beq _080A0DE6
b _080A0E50
_080A0DDC:
cmp r2, #2
beq _080A0E00
cmp r2, #3
beq _080A0E2C
b _080A0E50
_080A0DE6:
movs r0, #0x1e
strb r0, [r1, #0xe]
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
b _080A0E8C
_080A0DF2:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E8C
b _080A0E38
_080A0E00:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E1E
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A0E8C
_080A0E1E:
ldr r0, _080A0E28 @ =0x030010A0
ldr r0, [r0]
movs r1, #7
b _080A0E7A
.align 2, 0
_080A0E28: .4byte 0x030010A0
_080A0E2C:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E44
_080A0E38:
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
b _080A0E8C
_080A0E44:
ldr r0, _080A0E4C @ =0x030010A0
ldr r0, [r0]
ands r0, r2
b _080A0E7C
.align 2, 0
_080A0E4C: .4byte 0x030010A0
_080A0E50:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0E74
ldrb r1, [r1, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A0E70 @ =gUnk_0813ADEC
adds r0, r0, r1
bl DoExitTransition
b _080A0E8C
.align 2, 0
_080A0E70: .4byte gUnk_0813ADEC
_080A0E74:
ldr r0, _080A0E90 @ =0x030010A0
ldr r0, [r0]
movs r1, #1
_080A0E7A:
ands r0, r1
_080A0E7C:
cmp r0, #0
bne _080A0E8C
ldr r0, _080A0E94 @ =0x03001160
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A0E8C:
pop {pc}
.align 2, 0
_080A0E90: .4byte 0x030010A0
_080A0E94: .4byte 0x03001160
.else
.ifdef EU
push {lr}
adds r1, r0, #0
ldrb r2, [r1, #0xd]
cmp r2, #1
beq _080A0876
cmp r2, #1
bgt _080A0860
cmp r2, #0
beq _080A086A
b _080A08D4
_080A0860:
cmp r2, #2
beq _080A0884
cmp r2, #3
beq _080A08B0
b _080A08D4
_080A086A:
movs r0, #0x1e
strb r0, [r1, #0xe]
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
b _080A0910
_080A0876:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0910
b _080A08BC
_080A0884:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A08A2
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A0910
_080A08A2:
ldr r0, _080A08AC @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
b _080A08FE
.align 2, 0
_080A08AC: .4byte gRoomTransition
_080A08B0:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A08C8
_080A08BC:
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
movs r0, #0x1e
strb r0, [r1, #0xe]
b _080A0910
_080A08C8:
ldr r0, _080A08D0 @ =gRoomTransition
ldr r0, [r0]
ands r0, r2
b _080A0900
.align 2, 0
_080A08D0: .4byte gRoomTransition
_080A08D4:
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A08F8
ldrb r1, [r1, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A08F4 @ =gUnk_0813ADEC
adds r0, r0, r1
bl DoExitTransition
b _080A0910
.align 2, 0
_080A08F4: .4byte gUnk_0813ADEC
_080A08F8:
ldr r0, _080A0914 @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
_080A08FE:
ands r0, r1
_080A0900:
cmp r0, #0
bne _080A0910
ldr r0, _080A0918 @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A0910:
pop {pc}
.align 2, 0
_080A0914: .4byte gRoomTransition
_080A0918: .4byte gPlayerEntity
.else
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xd]
cmp r1, #1
beq _080A102A
cmp r1, #1
bgt _080A1014
cmp r1, #0
beq _080A101E
b _080A1088
_080A1014:
cmp r1, #2
beq _080A1038
cmp r1, #3
beq _080A1064
b _080A1088
_080A101E:
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080A10D4
_080A102A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A10D4
b _080A1070
_080A1038:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A1056
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
adds r0, #0xf5
bl SoundReq
b _080A10D4
_080A1056:
ldr r0, _080A1060 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
b _080A10C2
.align 2, 0
_080A1060: .4byte gRoomTransition
_080A1064:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A107C
_080A1070:
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _080A10D4
_080A107C:
ldr r0, _080A1084 @ =gRoomTransition
ldr r0, [r0]
b _080A10C2
.align 2, 0
_080A1084: .4byte gRoomTransition
_080A1088:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A10BC
ldr r0, _080A10B4 @ =gRoomControls
ldrb r0, [r0, #4]
cmp r0, #3
bne _080A10A2
movs r0, #0xf9
bl SetLocalFlag
_080A10A2:
ldrb r1, [r4, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A10B8 @ =gUnk_0813ADEC
adds r0, r0, r1
bl DoExitTransition
b _080A10D4
.align 2, 0
_080A10B4: .4byte gRoomControls
_080A10B8: .4byte gUnk_0813ADEC
_080A10BC:
ldr r0, _080A10D8 @ =gRoomTransition
ldr r0, [r0]
movs r1, #1
_080A10C2:
ands r0, r1
cmp r0, #0
bne _080A10D4
ldr r0, _080A10DC @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A10D4:
pop {r4, pc}
.align 2, 0
_080A10D8: .4byte gRoomTransition
_080A10DC: .4byte gPlayerEntity
.endif
.endif
.endif
thumb_func_start sub_080A10E0
sub_080A10E0: @ 0x080A10E0
push {r4, lr}
adds r2, r0, #0
ldrb r1, [r2, #0xd]
cmp r1, #1
beq _080A110E
cmp r1, #1
bgt _080A10F4
cmp r1, #0
beq _080A10FE
b _080A1180
_080A10F4:
cmp r1, #2
beq _080A1124
cmp r1, #3
beq _080A1148
b _080A1180
_080A10FE:
movs r0, #1
strb r0, [r2, #0xd]
movs r0, #0x1e
strb r0, [r2, #0xe]
adds r0, #0xf6
bl SoundReq
b _080A11BA
_080A110E:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _080A1130
ldr r0, _080A1120 @ =gRoomTransition
ldr r0, [r0]
b _080A1162
.align 2, 0
_080A1120: .4byte gRoomTransition
_080A1124:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A113C
_080A1130:
ldrb r0, [r2, #0xd]
adds r0, #1
strb r0, [r2, #0xd]
movs r0, #0x1e
strb r0, [r2, #0xe]
b _080A11BA
_080A113C:
ldr r0, _080A1144 @ =gRoomTransition
ldr r0, [r0]
movs r1, #3
b _080A1162
.align 2, 0
_080A1144: .4byte gRoomTransition
_080A1148:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A115C
ldrb r0, [r2, #0xd]
adds r0, #1
strb r0, [r2, #0xd]
b _080A11BA
_080A115C:
ldr r0, _080A1178 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
_080A1162:
ands r0, r1
cmp r0, #0
bne _080A11BA
ldr r0, _080A117C @ =gPlayerEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
b _080A11BA
.align 2, 0
_080A1178: .4byte gRoomTransition
_080A117C: .4byte gPlayerEntity
_080A1180:
ldr r4, _080A11A0 @ =gPlayerEntity
ldrb r3, [r4, #0x14]
cmp r3, #4
beq _080A11A8
ldr r0, _080A11A4 @ =gRoomTransition
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _080A11BA
adds r0, r3, #2
movs r1, #6
ands r0, r1
strb r0, [r4, #0x14]
b _080A11BA
.align 2, 0
_080A11A0: .4byte gPlayerEntity
_080A11A4: .4byte gRoomTransition
_080A11A8:
movs r0, #0
movs r1, #1
strb r1, [r2, #0xc]
strb r0, [r2, #0xd]
ldr r0, _080A11BC @ =gPlayerState
adds r0, #0x8b
strb r1, [r0]
bl ResetPlayerEventPriority
_080A11BA:
pop {r4, pc}
.align 2, 0
_080A11BC: .4byte gPlayerState
thumb_func_start sub_080A11C0
sub_080A11C0: @ 0x080A11C0
push {lr}
adds r1, r0, #0
ldr r0, _080A11D8 @ =gPlayerEntity
movs r2, #0x36
ldrsh r0, [r0, r2]
cmp r0, #0
bne _080A11DC
adds r0, r1, #0
bl IsCollidingPlayer
b _080A11DE
.align 2, 0
_080A11D8: .4byte gPlayerEntity
_080A11DC:
movs r0, #0
_080A11DE:
pop {pc}
thumb_func_start sub_080A11E0
sub_080A11E0: @ 0x080A11E0
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x59
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A1202
movs r0, #8
strb r0, [r1]
ldrb r0, [r2, #0x1e]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r2, #0x1e]
_080A1202:
pop {pc}
-30
View File
@@ -43551,16 +43551,6 @@
"size": 36,
"type": "animation"
},
{
"path": "object43/gUnk_081217D0.bin",
"start": 1185744,
"size": 8
},
{
"path": "object43/gUnk_081217D8.bin",
"start": 1185752,
"size": 8
},
{
"path": "animations/gSpriteAnimations_Object44_0.bin",
"start": 1186708,
@@ -44191,21 +44181,6 @@
"start": 1190384,
"size": 32
},
{
"path": "object68/gUnk_08122A18.bin",
"start": 1190424,
"size": 8
},
{
"path": "object68/gUnk_08122A20.bin",
"start": 1190432,
"size": 4
},
{
"path": "object68/gUnk_08122A28.bin",
"start": 1190440,
"size": 12
},
{
"path": "animations/gSpriteAnimations_Object6A_10_0.bin",
"start": 1190732,
@@ -45255,11 +45230,6 @@
"size": 24,
"type": "animation"
},
{
"path": "fourElements/gUnk_081248B4.bin",
"start": 1198260,
"size": 8
},
{
"path": "animations/gSpriteAnimations_ObjectAF_0.bin",
"start": 1198288,
-17
View File
@@ -1,17 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08124898:: @ 08124898
.4byte sub_080A01E0
.4byte sub_080A0290
.4byte sub_080A02CC
.4byte sub_080A034C
.4byte sub_080A0390
.4byte sub_080A03B8
.4byte sub_080A03E8
gUnk_081248B4:: @ 081248B4
.incbin "fourElements/gUnk_081248B4.bin"
-11
View File
@@ -1,11 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811EE28:: @ 0811EE28
.4byte sub_08081854
.4byte sub_080818A4
.4byte sub_08081930
.4byte sub_08081A80
-12
View File
@@ -1,12 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0812323C:: @ 0812323C
.4byte sub_08096AEC
.4byte sub_08096BBC
.4byte sub_08096BF8
.4byte sub_08096C3C
.4byte sub_08096CB0
-27
View File
@@ -1,27 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081213C4:: @ 081213C4
.4byte sub_0808B884
.4byte sub_0808B910
.4byte sub_0808BAB4
gUnk_081213D0:: @ 081213D0
.4byte sub_0808B89C
.4byte sub_0808B8D4
.4byte sub_0808B908
gUnk_081213DC:: @ 081213DC
.4byte sub_0808B934
.4byte sub_0808B9D4
.4byte sub_0808BA10
.4byte sub_0808BA48
.4byte sub_0808BA6C
.4byte nullsub_520
gUnk_081213F4:: @ 081213F4
.4byte sub_0808BACC
.4byte sub_0808BB04
-18
View File
@@ -1,18 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081217BC:: @ 081217BC
.4byte sub_0808DEE8
.4byte sub_0808DFAC
.4byte sub_0808E1BC
.4byte sub_0808E208
.4byte sub_0808E264
gUnk_081217D0:: @ 081217D0
.incbin "object43/gUnk_081217D0.bin"
gUnk_081217D8:: @ 081217D8
.incbin "object43/gUnk_081217D8.bin"
-13
View File
@@ -1,13 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081228C8:: @ 081228C8
.4byte sub_0809346C
.4byte sub_080934C8
gUnk_081228D0:: @ 081228D0
.4byte sub_080934E0
.4byte sub_08093650
-20
View File
@@ -1,20 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08122A10:: @ 08122A10
.4byte sub_08094774
.4byte sub_080948D0
gUnk_08122A18:: @ 08122A18
.incbin "object68/gUnk_08122A18.bin"
gUnk_08122A20:: @ 08122A20
.incbin "object68/gUnk_08122A20.bin"
.4byte sub_080948E8
gUnk_08122A28:: @ 08122A28
.incbin "object68/gUnk_08122A28.bin"
-39
View File
@@ -1,39 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08125084:: @ 08125084
.4byte sub_080A2578
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A259C
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
.4byte sub_080A2584
-10
View File
@@ -1,10 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081227F4:: @ 081227F4
.4byte sub_08092CDC
.4byte sub_08092D7C
.4byte sub_08092E94
-11
View File
@@ -1,11 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08124C10:: @ 08124C10
.4byte sub_080A0F44
.4byte sub_080A0FB0
.4byte sub_080A1000
.4byte sub_080A10E0
+1 -1
View File
@@ -23,7 +23,7 @@ typedef struct {
u16 unk_02;
union SplitWord unk_04;
union SplitWord unk_08;
union SplitWord unk_0C;
u32 unk_0C;
} struct_gUnk_020000C0_1;
typedef struct {
struct_gUnk_020000C0_1 unk_00[4];
+2
View File
@@ -142,6 +142,7 @@ extern bool32 sub_0806FC80(Entity*, Entity*, s32);
extern void sub_0806FCF4(Entity*, s32, s32, s32);
extern void sub_0806FD3C(Entity*);
extern bool32 sub_0806FDA0(Entity*);
extern void sub_0806FEBC(Entity*, u32, Entity*);
extern void sub_080751E8(u32, u32, void*);
extern void sub_08077BB8(ItemBehavior*);
extern Entity* sub_08077C0C(ItemBehavior*, u32);
@@ -197,6 +198,7 @@ extern void sub_0809EABC(Entity*);
extern void sub_0809EAD8(Entity*);
extern void sub_0809EB30(Entity*);
extern void sub_080A1ED0(u32, u32, u32);
extern Entity* sub_080A2A20(Entity*, u32, u32);
extern Entity* sub_080A2A3C(Entity*, u32, u32, u32);
extern Entity* sub_080A2AD4(Entity*);
extern void sub_080A2AF4(Entity*, u32, u32);
+70 -25
View File
@@ -31,45 +31,89 @@ extern const Hitbox gHitbox_27;
extern const Hitbox gHitbox_28;
extern const Hitbox gHitbox_29;
extern const Hitbox gHitbox_30;
extern const Hitbox gHitbox_32;
extern const Hitbox gUnk_080FD190;
extern const Hitbox gUnk_080FD1A8;
extern const Hitbox gUnk_080FD1A8;
extern const Hitbox gUnk_080FD1A8;
extern const Hitbox gUnk_080FD1A8;
extern const Hitbox gUnk_080FD1B4;
extern const Hitbox gUnk_080FD330;
extern const Hitbox gUnk_080FD258;
extern const Hitbox gUnk_080FD490;
extern const Hitbox gUnk_080FD488;
extern const Hitbox gUnk_080FD538;
extern const Hitbox gUnk_080FD530;
extern const Hitbox gUnk_080FD544;
extern const Hitbox gUnk_080FD588;
extern const Hitbox gUnk_080FD37C;
extern const Hitbox gUnk_080FD1D4;
extern const Hitbox gUnk_080FD1DC;
extern const Hitbox gUnk_080FD1E4;
extern const Hitbox gUnk_080FD1E4;
extern const Hitbox gUnk_080FD1EC;
extern const Hitbox gUnk_080FD1F4;
extern const Hitbox gUnk_080FD1F4;
extern const Hitbox gUnk_080FD1FC;
extern const Hitbox gUnk_080FD204;
extern const Hitbox gUnk_080FD20C;
extern const Hitbox gUnk_080FD214;
extern const Hitbox gUnk_080FD21C;
extern const Hitbox gUnk_080FD224;
extern const Hitbox gUnk_080FD22C;
extern const Hitbox gUnk_080FD238;
extern const Hitbox gUnk_080FD240;
extern const Hitbox gUnk_080FD248;
extern const Hitbox gUnk_080FD1EC;
extern const Hitbox gUnk_080FD258;
extern const Hitbox gUnk_080FD260;
extern const Hitbox gUnk_080FD270;
extern const Hitbox gUnk_080FD278;
extern const Hitbox gUnk_080FD280;
extern const Hitbox gUnk_080FD290;
extern const Hitbox gUnk_080FD298;
extern const Hitbox gUnk_080FD2A0;
extern const Hitbox gUnk_080FD2A8;
extern const Hitbox gUnk_080FD2D0;
extern const Hitbox gUnk_080FD2D8;
extern const Hitbox gUnk_080FD2E0;
extern const Hitbox gUnk_080FD2D0;
extern const Hitbox gUnk_080FD2F0;
extern const Hitbox gUnk_080FD308;
extern const Hitbox gUnk_080FD310;
extern const Hitbox gUnk_080FD320;
extern const Hitbox gUnk_080FD328;
extern const Hitbox gUnk_080FD330;
extern const Hitbox gUnk_080FD340;
extern const Hitbox gUnk_080FD340;
extern const Hitbox gUnk_080FD34C;
extern const Hitbox gUnk_080FD354;
extern const Hitbox gUnk_080FD35C;
extern const Hitbox gUnk_080FD35C;
extern const Hitbox gUnk_080FD364;
extern const Hitbox gUnk_080FD36C;
extern const Hitbox gUnk_080FD36C;
extern const Hitbox gUnk_080FD374;
extern const Hitbox gUnk_080FD37C;
extern const Hitbox gUnk_080FD384;
extern const Hitbox gUnk_080FD38C;
extern const Hitbox gUnk_080FD394;
extern const Hitbox gUnk_080FD39C;
extern const Hitbox gUnk_080FD3A4;
extern const Hitbox gUnk_080FD3AC;
extern const Hitbox gUnk_080FD3B4;
extern const Hitbox gUnk_080FD3BC;
extern const Hitbox gUnk_080FD3C4;
extern const Hitbox gUnk_080FD3CC;
extern const Hitbox gUnk_080FD3DC;
extern const Hitbox gUnk_080FD3E4;
extern const Hitbox gUnk_080FD3EC;
extern const Hitbox gUnk_080FD580;
extern const Hitbox gUnk_080FD35C;
extern const Hitbox gUnk_080FD36C;
extern const Hitbox gUnk_080FD384;
extern const Hitbox gUnk_080FD558;
extern const Hitbox gUnk_080FD3F4;
extern const Hitbox gUnk_080FD3FC;
extern const Hitbox gUnk_080FD408;
extern const Hitbox gUnk_080FD41C;
extern const Hitbox gUnk_080FD424;
extern const Hitbox gUnk_080FD42C;
extern const Hitbox gUnk_080FD434;
extern const Hitbox gUnk_080FD43C;
extern const Hitbox gUnk_080FD450;
extern const Hitbox gUnk_080FD488;
extern const Hitbox gUnk_080FD490;
extern const Hitbox gUnk_080FD4B8;
extern const Hitbox gUnk_080FD4C0;
extern const Hitbox gUnk_080FD4C8;
extern const Hitbox gUnk_080FD4D0;
extern const Hitbox gUnk_080FD4D8;
extern const Hitbox gUnk_080FD4E0;
extern const Hitbox gUnk_080FD4E8;
extern const Hitbox gUnk_080FD4F0;
extern const Hitbox gUnk_080FD4F8;
@@ -78,15 +122,16 @@ extern const Hitbox gUnk_080FD508;
extern const Hitbox gUnk_080FD510;
extern const Hitbox gUnk_080FD518;
extern const Hitbox gUnk_080FD520;
extern const Hitbox gUnk_080FD530;
extern const Hitbox gUnk_080FD538;
extern const Hitbox gUnk_080FD538;
extern const Hitbox gUnk_080FD544;
extern const Hitbox gUnk_080FD558;
extern const Hitbox gUnk_080FD560;
extern const Hitbox gUnk_080FD4B8;
extern const Hitbox gUnk_080FD4C0;
extern const Hitbox gUnk_080FD4C8;
extern const Hitbox gUnk_080FD4D0;
extern const Hitbox gUnk_080FD4D8;
extern const Hitbox gUnk_080FD4E0;
extern const Hitbox gUnk_080FD3F4;
extern const Hitbox gUnk_080FD3FC;
extern const Hitbox gUnk_080FD43C;
extern const Hitbox gUnk_080FD570;
extern const Hitbox gUnk_080FD578;
extern const Hitbox gUnk_080FD580;
extern const Hitbox gUnk_080FD588;
extern const Hitbox gPlayerHitbox;
#endif
+1 -1
View File
@@ -8,7 +8,7 @@ extern void sub_08018C58(u32);
typedef struct {
u8 unk[4];
u8* unk2;
u32 unk4;
u8 unk4[4];
} Unk_struct;
extern Unk_struct gUnk_03003DF0[];
+14
View File
@@ -0,0 +1,14 @@
#include "entity.h"
// TODO Use new player entity struct everywhere once it is fully discovered.
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0xc];
/*0x74*/ Entity* unk_74;
/*0x78*/ u8 unk_78[0x4];
/*0x7c*/ u32 unk_7c;
/*0x80*/ u8 unk_80[8];
} PlayerEntity;
#define gNewPlayerEntity (*(PlayerEntity*)&gPlayerEntity)
+10 -10
View File
@@ -228,7 +228,7 @@ typedef enum {
void ItemOnGround(Entity*);
void DeathFx(Entity*);
void ItemForSale(Entity*);
void ItemForSale();
void Button(Entity*);
void MinishEmoticon(Entity*);
void Pot(Entity*);
@@ -279,7 +279,7 @@ void FrozenFlower(Entity*);
void PullableMushroom();
void Bollard(Entity*);
void WarpPoint(Entity*);
void Object35(Entity*);
void Object35();
void Object36(Entity*);
void Object37(Entity*);
void JarPortal(Entity*);
@@ -293,7 +293,7 @@ void GiantLeaf(Entity*);
void Fairy();
void LadderUp(Entity*);
void Object42(Entity*);
void Object43(Entity*);
void Object43();
void Object44(Entity*);
void Object45(Entity*);
void GiantBookLadder(Entity*);
@@ -323,18 +323,18 @@ void HouseDoorInterior(Entity*);
void Whirlwind(Entity*);
void ObjectBlockingStairs(Entity*);
void SwordsmanNewsletter(Entity*);
void Object61(Entity*);
void Object61();
void GiantTwig();
void Object63(Entity*);
void Object64(Entity*);
void LadderHoleInBookshelf(Entity*);
void Object66(Entity*);
void Object67(Entity*);
void Object68(Entity*);
void Object68();
void Object69(Entity*);
void Object6A(Entity*);
void CrenelBeanSprout();
void MinecartDoor(Entity*);
void MinecartDoor();
void ObjectOnPillar();
void MineralWaterSource(Entity*);
void MinishSizedArchway(Entity*);
@@ -398,7 +398,7 @@ void ObjectA8();
void ObjectA9(Entity*);
void WaterfallOpening(Entity*);
void ObjectAB(Entity*);
void FourElements(Entity*);
void FourElements();
void ObjectAD(Entity*);
void FloatingBlock(Entity*);
void ObjectAF(Entity*);
@@ -410,7 +410,7 @@ void ObjectB4(Entity*);
void ObjectB5(Entity*);
void ObjectB6(Entity*);
void Well(Entity*);
void WindTribeTeleporter(Entity*);
void WindTribeTeleporter();
void ObjectB9(Entity*);
void GyorgBossObject(Entity*);
void Windcrest(Entity*);
@@ -418,8 +418,8 @@ void LitArea(Entity*);
void ObjectBD(Entity*);
void Pinwheel(Entity*);
void ObjectBF(Entity*);
void EnemyItem(Entity*);
void ObjectC1(Entity*);
void EnemyItem();
void ObjectC1();
extern void (*const gObjectFunctions[194])(Entity*);
+23 -23
View File
@@ -644,7 +644,7 @@ SECTIONS {
/* objects */
src/object/itemOnGround.o(.text);
src/object/deathFx.o(.text);
asm/object/itemForSale.o(.text);
src/object/itemForSale.o(.text);
src/object/button.o(.text);
asm/object/minishEmoticon.o(.text);
src/object/pot.o(.text);
@@ -695,7 +695,7 @@ SECTIONS {
src/object/pullableMushroom.o(.text);
src/object/bollard.o(.text);
src/object/warpPoint.o(.text);
asm/object/object35.o(.text);
src/object/object35.o(.text);
asm/object/object36.o(.text);
asm/object/object37.o(.text);
src/object/jarPortal.o(.text);
@@ -712,7 +712,7 @@ SECTIONS {
src/object/fairy.o(.text);
src/object/ladderUp.o(.text);
asm/object/object42.o(.text);
asm/object/object43.o(.text);
src/object/object43.o(.text);
asm/object/object44.o(.text);
asm/object/object45.o(.text);
src/object/giantBookLadder.o(.text);
@@ -740,21 +740,21 @@ SECTIONS {
asm/object/object5B.o(.text);
src/object/mask.o(.text);
asm/object/houseDoorInterior.o(.text);
asm/object/whirlwind.o(.text);
src/object/whirlwind.o(.text);
asm/object/objectBlockingStairs.o(.text);
src/object/swordsmanNewsletter.o(.text);
asm/object/object61.o(.text);
src/object/object61.o(.text);
src/object/giantTwig.o(.text);
asm/object/object63.o(.text);
asm/object/object64.o(.text);
asm/object/ladderHoleInBookshelf.o(.text);
asm/object/object66.o(.text);
asm/object/object67.o(.text);
asm/object/object68.o(.text);
asm/object/object69.o(.text);
src/object/object68.o(.text);
src/object/object69.o(.text);
src/object/object6A.o(.text);
src/object/crenelBeanSprout.o(.text);
asm/object/minecartDoor.o(.text);
src/object/minecartDoor.o(.text);
src/object/objectOnPillar.o(.text);
src/object/mineralWaterSource.o(.text);
src/object/minishSizedArchway.o(.text);
@@ -819,7 +819,7 @@ SECTIONS {
asm/object/objectA9.o(.text);
asm/object/waterfallOpening.o(.text);
asm/object/objectAB.o(.text);
asm/object/fourElements.o(.text);
src/object/fourElements.o(.text);
asm/object/objectAD.o(.text);
src/object/floatingBlock.o(.text);
src/object/objectAF.o(.text);
@@ -831,16 +831,16 @@ SECTIONS {
src/object/objectB5.o(.text);
asm/object/objectB6.o(.text);
src/object/well.o(.text);
asm/object/windTribeTeleporter.o(.text);
src/object/windTribeTeleporter.o(.text);
asm/object/objectB9.o(.text);
src/object/gyorgBossObject.o(.text);
src/object/windcrest.o(.text);
asm/object/litArea.o(.text);
asm/object/objectBD.o(.text);
src/object/pinwheel.o(.text);
asm/object/objectBF.o(.text);
asm/object/enemyItem.o(.text);
asm/object/objectC1.o(.text);
src/object/objectBF.o(.text);
src/object/enemyItem.o(.text);
src/object/objectC1.o(.text);
/* END objects */
src/objectUtils.o(.text);
asm/objectUtils.o(.text);
@@ -1359,7 +1359,7 @@ SECTIONS {
data/const/object/itemOnGround.o(.rodata);
src/object/deathFx.o(.rodata);
data/animations/object/deathFx.o(.rodata);
data/const/object/itemForSale.o(.rodata);
src/object/itemForSale.o(.rodata);
data/const/object/button.o(.rodata);
data/const/object/minishEmoticon.o(.rodata);
data/animations/object/minishEmoticon.o(.rodata);
@@ -1428,7 +1428,7 @@ SECTIONS {
data/animations/object/bollard.o(.rodata);
src/object/warpPoint.o(.rodata);
data/animations/object/warpPoint.o(.rodata);
data/const/object/object35.o(.rodata);
src/object/object35.o(.rodata);
data/animations/object/object35.o(.rodata);
data/const/object/object36.o(.rodata);
data/const/object/object37.o(.rodata);
@@ -1446,7 +1446,7 @@ SECTIONS {
data/const/object/giantLeaf.o(.rodata);
src/object/fairy.o(.rodata);
data/const/object/object42.o(.rodata);
data/const/object/object43.o(.rodata);
src/object/object43.o(.rodata);
data/animations/object/object43.o(.rodata);
data/const/object/object44.o(.rodata);
data/animations/object/object44.o(.rodata);
@@ -1483,24 +1483,24 @@ SECTIONS {
data/const/object/object5B.o(.rodata);
data/const/object/mask.o(.rodata);
data/const/object/houseDoorInterior.o(.rodata);
data/const/object/whirlwind.o(.rodata);
src/object/whirlwind.o(.rodata);
data/animations/object/whirlwind.o(.rodata);
data/const/object/objectBlockingStairs.o(.rodata);
data/const/object/swordsmanNewsletter.o(.rodata);
data/const/object/object61.o(.rodata);
src/object/object61.o(.rodata);
src/object/giantTwig.o(.rodata);
data/const/object/object63.o(.rodata);
data/const/object/object64.o(.rodata);
data/animations/object/object64.o(.rodata);
data/const/object/ladderHoleInBookshelf.o(.rodata);
data/const/object/object67.o(.rodata);
data/const/object/object68.o(.rodata);
src/object/object68.o(.rodata);
src/object/object6A.o(.rodata);
data/const/object/object6A.o(.rodata);
data/animations/object/object6A.o(.rodata);
src/object/crenelBeanSprout.o(.rodata);
data/animations/object/crenelBeanSprout.o(.rodata);
data/const/object/minecartDoor.o(.rodata);
src/object/minecartDoor.o(.rodata);
src/object/objectOnPillar.o(.rodata);
data/const/object/mineralWaterSource.o(.rodata);
data/const/object/object70.o(.rodata);
@@ -1574,7 +1574,7 @@ SECTIONS {
data/const/object/waterfallOpening.o(.rodata);
data/const/object/objectAB.o(.rodata);
data/animations/object/objectAB.o(.rodata);
data/const/object/fourElements.o(.rodata);
src/object/fourElements.o(.rodata);
data/const/object/objectAD.o(.rodata);
data/const/object/objectAF.o(.rodata);
data/animations/object/objectAF.o(.rodata);
@@ -1587,14 +1587,14 @@ SECTIONS {
data/const/object/objectB4.o(.rodata);
data/animations/object/objectB4.o(.rodata);
data/const/object/well.o(.rodata);
data/const/object/windTribeTeleporter.o(.rodata);
src/object/windTribeTeleporter.o(.rodata);
data/const/object/objectB9.o(.rodata);
src/object/gyorgBossObject.o(.rodata);
data/const/object/windcrest.o(.rodata);
data/const/object/objectBD.o(.rodata);
data/const/object/pinwheel.o(.rodata);
data/animations/object/pinwheel.o(.rodata);
data/const/object/objectC1.o(.rodata);
src/object/objectC1.o(.rodata);
src/objectDefinitions.o(.rodata);
src/playerItemDefinitions.o(.rodata);
data/data_08125104.o(.rodata);
+1 -1
View File
@@ -72,6 +72,6 @@ void sub_08078850(Entity* arg0, u32 arg1, u32 arg2, void* arg3) {
if (iVar1 >= 0) {
gUnk_03003DF0[iVar1].unk[8] = arg1;
gUnk_03003DF0[iVar1].unk[10] = arg2;
*(&gUnk_03003DF0[iVar1].unk4 + 1) = (u32)arg3;
*((u32*)&gUnk_03003DF0[iVar1].unk4 + 1) = (u32)arg3;
}
}
+3 -3
View File
@@ -556,12 +556,12 @@ void sub_0806FE84(Entity* ent) {
}
}
void sub_0806FEBC(Entity* ent, u32 param_2, u32 param_3) {
void sub_0806FEBC(Entity* ent, u32 param_2, Entity* param_3) {
struct_gUnk_020000C0_1* ptr = &gUnk_020000C0[ent->spriteAnimation[2]].unk_00[param_2];
*((u32*)ptr) = 0;
ptr->unk_04.WORD = 0;
ptr->unk_08.WORD = 0;
ptr->unk_0C.WORD = param_3;
ptr->unk_0C = (u32)param_3;
ptr->unk_00.unk0 = 1;
ptr->unk_00.unk1 = 1;
}
@@ -669,7 +669,7 @@ bool32 sub_0807007C(struct_gUnk_020000C0* this, u32 param_2) {
ptr3 = &ptr2[ptr1->unk_01 * 4];
ptr1->unk_08.BYTES.byte1 = *ptr3;
ptr1->unk_0C.WORD = spritePtr[2] + ((*(u16*)&ptr3[2]) << 5);
ptr1->unk_0C = spritePtr[2] + ((*(u16*)&ptr3[2]) << 5);
return 1;
}
+1 -2
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "enemy.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -23,8 +24,6 @@ typedef struct {
/*0x84*/ u32 unk_84;
} ArmosEntity;
extern Hitbox gUnk_080FD2F0;
extern Hitbox gHitbox_15;
extern Entity* gUnk_020000B0;
extern Entity gUnk_02027EB4;
extern Entity gUnk_0200D654;
+1 -1
View File
@@ -297,7 +297,7 @@ bool32 sub_0803EF20(Enemy4DEntity* this) {
sub_0803EF70, sub_0803EFAC, sub_0803EFAC, sub_0803EFAC, sub_0803EF70, sub_0803EF70, sub_0803EFAC,
};
Entity* it;
LinkedList* list = ((LinkedList*)&gEntityLists + 2);
LinkedList* list = &gEntityLists[2];
for (it = list->first; it != (Entity*)list; it = it->next) {
if ((it->kind == 8) && gUnk_080D08C8[it->id](super, it)) {
+1 -1
View File
@@ -11,6 +11,7 @@
#include "functions.h"
#include "fade.h"
#include "object.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -35,7 +36,6 @@ typedef struct {
extern Entity* sub_08017A90(Entity*, Entity*);
extern Entity* gUnk_020000B0;
extern Hitbox gUnk_080FD308;
extern const u8 gUnk_080B3E80[];
void sub_08031344(EyegoreEntity*);
+3 -4
View File
@@ -2,6 +2,7 @@
#include "entity.h"
#include "enemy.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
Entity base;
@@ -11,8 +12,6 @@ typedef struct {
} FlyingSkullEntity;
extern void (*const gUnk_080012C8[])(Entity*);
extern Hitbox gUnk_080FD340; // TODO should be const
extern Hitbox gUnk_080FD34C;
void (*const FlyingSkull_Functions[])(Entity*);
void (*const gUnk_080CFB9C[])(FlyingSkullEntity*);
@@ -161,7 +160,7 @@ void sub_08039EE4(FlyingSkullEntity* this) {
super->subAction = 1;
COLLISION_OFF(super);
super->collisions = 0;
super->hitbox = &gUnk_080FD340;
super->hitbox = (Hitbox*)&gUnk_080FD340;
gPlayerEntity.animationState;
this->unk_0x76 = gPlayerEntity.animationState;
SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer);
@@ -196,7 +195,7 @@ void sub_08039FAC(FlyingSkullEntity* this) {
super->spriteOffsetX = 0;
super->hitType = 0xa0;
super->flags2 = 0xf;
super->hitbox = &gUnk_080FD34C;
super->hitbox = (Hitbox*)&gUnk_080FD34C;
SetTile(this->unk_0x74, COORD_TO_TILE(super), super->collisionLayer);
}
}
+2 -4
View File
@@ -7,9 +7,7 @@
#include "enemy.h"
#include "functions.h"
extern Hitbox gUnk_080FD298;
extern Hitbox gUnk_080FD2A0;
#include "hitbox.h"
void sub_08029E0C(Entity*);
void sub_08029EEC(Entity*);
@@ -283,7 +281,7 @@ void sub_08029D14(Entity* this) {
this->action = 4;
this->actionDelay = 0x78;
this->hitType = 0x6c;
this->hitbox = &gUnk_080FD298;
this->hitbox = (Hitbox*)&gUnk_080FD298;
EnqueueSFX(SFX_6B);
}
}
+4 -9
View File
@@ -8,6 +8,7 @@
#include "enemy.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
void sub_0803B538(Entity*);
u32 sub_0803B4E4(Entity*);
@@ -92,12 +93,6 @@ void sub_0803B978(Entity*);
void sub_0803BA6C(Entity*);
void sub_0803BA80(Entity*);
// these are not with the rest of this files constant data
extern Hitbox gUnk_080FD35C;
extern Hitbox gUnk_080FD364;
extern Hitbox gUnk_080FD36C;
extern Hitbox gUnk_080FD374;
void (*const MazaalBracelet_Functions[])(Entity*) = { MazaalBracelet_OnTick, MazaalBracelet_OnCollision,
GenericKnockback, GenericDeath,
GenericConfused, MazaalBracelet_OnGrabbed };
@@ -920,9 +915,9 @@ void sub_0803B100(Entity* this) {
this->action = 0x29;
this->zVelocity = Q_16_16(1.25);
if (this->type == 0) {
this->hitbox = &gUnk_080FD364;
this->hitbox = (Hitbox*)&gUnk_080FD364;
} else {
this->hitbox = &gUnk_080FD374;
this->hitbox = (Hitbox*)&gUnk_080FD374;
}
temp = *(Entity**)&this->field_0x74;
temp->action = 3;
@@ -1074,7 +1069,7 @@ void sub_0803B3F4(Entity* this) {
if (this->type == 0) {
this->hitbox = (Hitbox*)&gUnk_080FD35C;
} else {
this->hitbox = &gUnk_080FD36C;
this->hitbox = (Hitbox*)&gUnk_080FD36C;
}
temp = this->parent;
value = (this->type == 0) ? 1 : 2;
+1 -8
View File
@@ -6,17 +6,10 @@
*/
#include "entity.h"
#include "hitbox.h"
void sub_08035194(Entity*);
extern const Hitbox gUnk_080FD394;
extern const Hitbox gUnk_080FD39C;
extern const Hitbox gUnk_080FD3A4;
extern const Hitbox gUnk_080FD3AC;
extern const Hitbox gUnk_080FD3B4;
extern const Hitbox gUnk_080FD3BC;
extern const Hitbox gUnk_080FD3C4;
const Hitbox* const gUnk_080CEF34[] = {
&gUnk_080FD394, &gUnk_080FD394, &gUnk_080FD394, &gUnk_080FD39C, &gUnk_080FD3A4,
&gUnk_080FD3AC, &gUnk_080FD3AC, &gUnk_080FD3AC, &gUnk_080FD3AC,
+2 -2
View File
@@ -13,6 +13,7 @@
#include "object.h"
#include "functions.h"
#include "save.h"
#include "hitbox.h"
extern void sub_080293DC(Entity*);
extern void sub_080296D8(Entity*);
@@ -28,7 +29,6 @@ extern void (*const gUnk_080CCC3C[])(Entity*);
extern const u8 gUnk_080CCC34[];
extern const s8 gUnk_080CCC44[];
extern const u8 gUnk_080CCC47[];
extern Hitbox gUnk_080FD260;
void RupeeLike(Entity* this) {
u32 uVar1;
@@ -265,7 +265,7 @@ void sub_08029770(Entity* this) {
temp = this->field_0x82.HALF.LO;
this->palette.b.b0 = temp;
this->hitType = 0x8d;
this->hitbox = &gUnk_080FD260;
this->hitbox = (Hitbox*)&gUnk_080FD260;
InitializeAnimation(this, 2);
this->child->spriteSettings.draw = TRUE;
InitializeAnimation(this->child, 6);
+4 -6
View File
@@ -7,6 +7,7 @@
#include "enemy.h"
#include "functions.h"
#include "hitbox.h"
extern void sub_08001318(Entity*);
extern u32 PlayerInRange(Entity*, u32, u32);
@@ -21,9 +22,6 @@ extern void (*const gUnk_080CBA40[])(Entity*);
extern const u8 gUnk_080CBA60[];
extern Hitbox gHitbox_23;
extern Hitbox gHitbox_32;
extern Entity* gUnk_020000B0;
void SpinyChuchu(Entity* this) {
@@ -44,7 +42,7 @@ void SpinyChuchu_OnCollision(Entity* this) {
this->action = 2;
this->field_0xf = 0x3c;
this->hitType = 0x5c;
this->hitbox = &gHitbox_23;
this->hitbox = (Hitbox*)&gHitbox_23;
InitializeAnimation(this, 0);
break;
case 8:
@@ -193,9 +191,9 @@ void sub_08022780(Entity* this) {
void sub_080227AC(Entity* this) {
GetNextFrame(this);
if (this->frame & 1) {
this->hitbox = &gHitbox_32;
this->hitbox = (Hitbox*)&gHitbox_32;
} else {
this->hitbox = &gHitbox_23;
this->hitbox = (Hitbox*)&gHitbox_23;
}
if (this->frame & 2) {
+1 -3
View File
@@ -8,6 +8,7 @@
#include "enemy.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct VaatiArm_HeapStruct1 {
union SplitHWord unk00;
@@ -170,9 +171,6 @@ const u16 gUnk_080D140E[] = { -0x6000, -0x5000, -0x4000 };
const u8 gUnk_080D1414[] = { 0, 0xc, 0xe, 0x10, 0x1c };
const u8 gUnk_080D1419[] = { 0, 0xa, 0xa, 0xa, 0x1c };
extern const Hitbox gUnk_080FD450;
extern const Hitbox gUnk_080FD538;
void VaatiArm(Entity* this) {
VaatiArm_Functions[GetNextFunction(this)](this);
}
-1
View File
@@ -16,7 +16,6 @@ void ClearAllDeletedEntities(void);
void DeleteAllEntities(void);
void sub_0805E98C(void);
extern void sub_0806FE84(Entity*);
extern void sub_08078954(Entity*);
extern void sub_08017744(Entity*);
extern void UnloadHitbox(Entity*);
extern void sub_0804AA1C(Entity*);
+2 -2
View File
@@ -1,6 +1,7 @@
#include "npc.h"
#include "functions.h"
#include "screen.h"
#include "hitbox.h"
extern void (*gUnk_081140D4[])(Entity*);
@@ -28,7 +29,6 @@ extern void InitBiggoronTimer(void);
void sub_0806D110(void);
void sub_0806D164(Entity* this);
extern Hitbox gHitbox_3;
Entity* sub_0806D00C(Entity* this);
void sub_0806D4C0(Entity*, u32);
@@ -241,7 +241,7 @@ void sub_0806D3C0(Entity* this) {
DeleteThisEntity();
}
this->action = 1;
this->hitbox = &gHitbox_3;
this->hitbox = (Hitbox*)&gHitbox_3;
SetDefaultPriority(this, PRIO_MESSAGE);
sub_0807DD64(this);
} else {
+2 -2
View File
@@ -7,8 +7,8 @@
#include "object.h"
#include "npc.h"
#include "game.h"
#include "hitbox.h"
extern Hitbox gHitbox_2;
typedef struct {
u32 unk_00;
s8 unk_04;
@@ -33,7 +33,7 @@ void NPC4E(Entity* this) {
if (this->action == 0) {
this->action = 1;
this->spriteSettings.draw = 4;
this->hitbox = &gHitbox_2;
this->hitbox = (Hitbox*)&gHitbox_2;
sub_0807DD50(this);
} else {
sub_0807DD94(this, 0);
+2 -3
View File
@@ -1,6 +1,7 @@
#include "functions.h"
#include "message.h"
#include "npc.h"
#include "hitbox.h"
typedef struct {
u8 unk_0; // u8
@@ -15,8 +16,6 @@ typedef struct {
u16 unk_8; // u16
} UnkHeap;
extern Hitbox gHitbox_0;
void sub_08060E70(Entity*, u32);
u32 sub_08061230(Entity*);
@@ -152,7 +151,7 @@ void sub_08060AE0(Entity* this) {
this->hurtType = 0x48;
this->hitType = 0x49;
this->flags2 = 3;
this->hitbox = &gHitbox_0;
this->hitbox = (Hitbox*)&gHitbox_0;
this->field_0x17 &= 0xfe;
this->field_0x6c.HALF.LO = 0xff;
sub_08060E70(this, this->animationState);
+2 -3
View File
@@ -6,6 +6,7 @@
#include "message.h"
#include "object.h"
#include "npc.h"
#include "hitbox.h"
typedef struct {
Entity base;
@@ -27,8 +28,6 @@ void nullsub_111(PicolyteBottleEntity* this);
extern void sub_08078828(Entity*);
extern Hitbox gHitbox_0;
void PicolyteBottle(Entity* this) {
static void (*const PicolyteBottle_Actions[])(PicolyteBottleEntity*) = {
PicolyteBottle_Init,
@@ -63,7 +62,7 @@ void PicolyteBottle_Init(PicolyteBottleEntity* this) {
sub_0806E014(this);
sub_0807DD50(super);
} else {
super->hitbox = &gHitbox_0;
super->hitbox = (Hitbox*)&gHitbox_0;
super->collisionLayer = 1;
sub_0806E0DC(this);
}
+1 -2
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -19,8 +20,6 @@ typedef struct {
/*0x86*/ u16 unk_86;
} BigIceBlockEntity;
extern const Hitbox gUnk_080FD190;
extern void (*const BigIceBlock_Actions[])(BigIceBlockEntity*);
extern const u16 gUnk_081237B0[];
+1 -1
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -25,7 +26,6 @@ typedef struct {
/*0x86*/ u16 unk_86;
} BossDoorEntity;
extern Hitbox gHitbox_3;
extern bool32 gUnk_02036BB8;
extern const u8 gUnk_0811F740[];
+1 -2
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -19,8 +20,6 @@ typedef struct {
extern u32 sub_080002BC(s32, s32, u32);
extern Hitbox gUnk_080FD2A8;
void sub_080969A4(CrenelBeanSproutEntity*);
void sub_08096A78(CrenelBeanSproutEntity*);
void CrenelBeanSprout_Init(CrenelBeanSproutEntity*);
+83
View File
@@ -0,0 +1,83 @@
/**
* @file enemyItem.c
* @ingroup Objects
*
* @brief Enemy Item object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x1e];
/*0x86*/ u16 unk_86;
} EnemyItemEntity;
void sub_080A2500(EnemyItemEntity*);
void sub_080A2534(EnemyItemEntity*);
void sub_080A2508(EnemyItemEntity*);
void EnemyItem(EnemyItemEntity* this) {
Entity* entity;
LinkedList* list;
if (CheckFlags(this->unk_86)) {
sub_080A2500(this);
}
if (super->action == 0) {
super->action++;
super->type = super->actionDelay;
super->child = NULL;
list = &gEntityLists[4];
for (entity = list->first; entity != (Entity*)list; entity = entity->next) {
if ((((entity->kind == 3) && (super->type2 == entity->id)) &&
(((entity->x.HALF.HI - super->x.HALF.HI) + 0x10U) << 0x10 >> 0x10 < 0x20)) &&
(((entity->y.HALF.HI - super->y.HALF.HI) + 0x10U) << 0x10 >> 0x10 < 0x20)) {
super->child = entity;
break;
}
}
if (super->child == NULL) {
sub_080A2534(this);
}
sub_08054564();
}
entity = super->child;
if (entity != NULL) {
PositionRelative(entity, super, 0x40000, 0x10000);
super->z.HALF.HI -= 4;
if (entity->next == NULL) {
sub_080A2508(this);
}
}
sub_08080CB4(super);
}
void sub_080A2500(EnemyItemEntity* this) {
DeleteThisEntity();
}
void sub_080A2508(EnemyItemEntity* this) {
EnemyItemEntity* entity;
entity = (EnemyItemEntity*)CreateObjectWithParent(super, GROUND_ITEM, super->type, 0);
if (entity != NULL) {
(entity->base).actionDelay = 5;
entity->unk_86 = this->unk_86;
}
sub_080A2500(this);
}
void sub_080A2534(EnemyItemEntity* this) {
EnemyItemEntity* entity;
entity = (EnemyItemEntity*)CreateObjectWithParent(super, GROUND_ITEM, super->type, 0);
if (entity != NULL) {
(entity->base).actionDelay = 4;
entity->unk_86 = this->unk_86;
}
sub_080A2500(this);
}
+1 -2
View File
@@ -10,6 +10,7 @@
#include "object.h"
#include "functions.h"
#include "item.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -21,8 +22,6 @@ typedef struct {
/*0x87*/ u8 unk_87;
} FairyEntity;
extern Hitbox gUnk_080FD1A8;
void sub_0808D76C(FairyEntity*);
void sub_0808DAD0(FairyEntity*);
void sub_0808DB2C(FairyEntity*);
+170
View File
@@ -0,0 +1,170 @@
/**
* @file fourElements.c
* @ingroup Objects
*
* @brief Four Elements object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
#include "screen.h"
#include "message.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u16 unk_68;
/*0x6a*/ u8 unk_6a;
} FourElementsEntity;
extern u32 sub_0805429C(u32);
extern void sub_0807DF50(void);
extern u16 script_PlayerGetElement[];
void FourElements_Init(FourElementsEntity*);
void FourElements_Action1(FourElementsEntity*);
void FourElements_Action2(FourElementsEntity*);
void FourElements_Action3(FourElementsEntity*);
void FourElements_Action4(FourElementsEntity*);
void FourElements_Action5(FourElementsEntity*);
void FourElements_Action6(FourElementsEntity*);
void sub_080A0424(FourElementsEntity*);
void sub_080A0444(FourElementsEntity*);
void FourElements(FourElementsEntity* this) {
static void (*const FourElements_Actions[])(FourElementsEntity*) = {
FourElements_Init, FourElements_Action1, FourElements_Action2, FourElements_Action3,
FourElements_Action4, FourElements_Action5, FourElements_Action6,
};
FourElements_Actions[super->action](this);
sub_08080CB4(super);
}
void FourElements_Init(FourElementsEntity* this) {
Entity* objectAD;
super->action = 1;
super->spriteSettings.draw = 1;
super->spritePriority.b1 = 2;
super->spriteRendering.b3 = 1;
super->hitbox = (Hitbox*)&gHitbox_6;
super->z.HALF.HI = 0xff40;
this->unk_6a = 0x40;
switch (super->type) {
case 0x41:
gScreen.lcd.displayControl &= 0xfdff;
super->collisionLayer = 1;
break;
case 0x40:
case 0x42:
case 0x43:
break;
}
StartPlayerScript(script_PlayerGetElement);
gScreen.controls.layerFXControl = 0x640;
gScreen.controls.alphaBlend = 0x1000;
sub_0805BC4C();
objectAD = CreateObjectWithParent(super, OBJECT_AD, super->type - 0x40, 0);
if (objectAD != NULL) {
objectAD->parent = super;
super->child = objectAD;
}
}
void FourElements_Action1(FourElementsEntity* this) {
if ((gActiveScriptInfo.syncFlags & 4) != 0) {
sub_080A0424(this);
if (super->z.HALF.HI < -8) {
super->z.HALF.HI++;
} else {
super->action = 2;
gActiveScriptInfo.syncFlags |= 2;
}
}
}
void FourElements_Action2(FourElementsEntity* this) {
sub_080A0424(this);
sub_080A0444(this);
if (IsCollidingPlayer(super)) {
DeleteEntity(super->child);
super->spriteSettings.draw = 0;
super->action = 3;
super->actionDelay = 0x2d;
gScreen.controls.layerFXControl = 0x640;
gScreen.controls.alphaBlend = 0;
sub_080A7C18(super->type, 0, 1);
sub_0808C650(super, 1);
SetFade(6, 2);
SoundReq(SFX_F8);
SoundReq(SFX_148);
SoundReq(BGM_ELEMENT_GET);
SoundReq(SONG_BGM_0);
}
}
void FourElements_Action3(FourElementsEntity* this) {
if (super->actionDelay != 0) {
sub_080A0424(this);
if (--super->actionDelay == 0) {
SetDefaultPriority(&gPlayerEntity, 0);
}
} else {
RequestPriorityDuration(NULL, 0x3c);
if (sub_0808C67C()) {
super->action = 4;
}
}
}
void FourElements_Action4(FourElementsEntity* this) {
RequestPriorityDuration(NULL, 0x3c);
if (gFadeControl.active == 0) {
super->action = 5;
this->unk_68 = 0x1a4;
}
}
void FourElements_Action5(FourElementsEntity* this) {
u32 index;
RequestPriorityDuration(NULL, 10);
if (--this->unk_68 == 0) {
super->action = 6;
index = sub_0805429C(super->type);
MessageNoOverlap(index, super);
}
}
void FourElements_Action6(FourElementsEntity* this) {
RequestPriorityDuration(NULL, 10);
if ((gMessage.doTextBox & 0x7f) == 0) {
SetPriorityTimer(0x5a);
gPlayerState.controlMode = 1;
sub_0807DF50();
SetRoomFlag(0);
DeleteThisEntity();
}
}
void sub_080A0424(FourElementsEntity* this) {
if (--this->unk_6a == 0) {
this->unk_6a = 0x40;
SoundReq(SFX_178);
}
}
void sub_080A0444(FourElementsEntity* this) {
static const u8 gUnk_081248B4[] = {
249, 248, 247, 246, 245, 246, 247, 248,
};
super->z.HALF.HI = gUnk_081248B4[(super->field_0xf++ >> 3) & 7] << 0x18 >> 0x18;
}
void sub_080A0464(FourElementsEntity* this, ScriptExecutionContext* context) {
Entity* element = FindEntityByID(6, FOUR_ELEMENTS, 6);
if (element != NULL) {
sub_0807DEDC(super, context, element->x.HALF.HI, element->y.HALF.HI + 0x18);
}
}
+182
View File
@@ -0,0 +1,182 @@
/**
* @file itemForSale.c
* @ingroup Objects
*
* @brief Item for Sale object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
#include "new_player.h"
#include "message.h"
#include "kinstone.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x18];
/*0x80*/ u16 unk_80;
/*0x82*/ u16 unk_82;
} ItemForSaleEntity;
typedef struct {
u8 before[0x20];
u8 unk_20[0x4]; // TODO for Entity this is zVelocity which is not an array. spriteAnimation[super->field_0xf-6] does
// not match.
} ModifiedParentEntity;
extern u32 sub_080787D8(Entity*);
extern void* sub_080784E4(void);
void ItemForSale_Init(ItemForSaleEntity*);
void ItemForSale_Action1(ItemForSaleEntity*);
void ItemForSale_Action2(ItemForSaleEntity*);
void ItemForSale_Action3(ItemForSaleEntity*);
void sub_08081A5C(ItemForSaleEntity*);
void sub_080819B4(ItemForSaleEntity*);
void sub_08081AB0(void);
void ItemForSale(ItemForSaleEntity* this) {
static void (*const ItemForSale_Actions[])(ItemForSaleEntity*) = {
ItemForSale_Init,
ItemForSale_Action1,
ItemForSale_Action2,
ItemForSale_Action3,
};
ItemForSale_Actions[super->action](this);
if (CheckOnScreen(super)) {
sub_08080CB4(super);
}
switch (super->actionDelay) {
case 1:
case 2:
if (super->action == 1) {
sub_0800445C(super);
}
break;
case 0:
case 3:
break;
}
}
void ItemForSale_Init(ItemForSaleEntity* this) {
super->action = 1;
super->spriteSettings.draw = 1;
super->spritePriority.b1 = 0;
super->field_0x16 = 0;
#ifdef EU
SetDefaultPriority(super, 6);
#endif
super->child = super;
sub_08081A5C(this);
switch (super->actionDelay) {
case 0:
super->hitbox = (Hitbox*)&gUnk_080FD328;
break;
case 1:
super->hitbox = (Hitbox*)&gHitbox_5;
break;
}
}
void ItemForSale_Action1(ItemForSaleEntity* this) {
if (super->subAction != 0) {
super->action = 2;
gUnk_0200AF00.filler25[10] = 2;
} else {
if (super->type == 0x36) {
if (super->interactType != 0) {
super->interactType = 0;
super->action = 3;
gRoomVars.animFlags = 1;
gPlayerState.queued_action = 7;
}
} else {
if (super->interactType != 0) {
super->interactType = 0;
super->subAction = 1;
sub_08078B48();
ResetPlayer();
gPlayerState.heldObject = 4;
gNewPlayerEntity.unk_74 = super;
gUnk_0200AF00.filler25[10] = 2;
MessageClose();
}
}
}
}
void ItemForSale_Action2(ItemForSaleEntity* this) {
void* ptr;
gUnk_0200AF00.filler25[10] = 2;
super->spriteSettings.draw = gPlayerEntity.spriteSettings.draw;
if ((gPlayerState.heldObject == 0) || (super != gNewPlayerEntity.unk_74)) {
sub_080819B4(this);
} else {
ptr = sub_080784E4();
if (((*(int*)(ptr + 8) == 0) ||
((*(u8*)(ptr + 1) != 1 || (gUnk_0200AF00.filler25[10] = 7, (gPlayerState.field_0x92 & 0x88) == 0)))) &&
((gPlayerState.field_0x92 & 0x98) != 0)) {
sub_080819B4(this);
}
}
}
void sub_080819B4(ItemForSaleEntity* this) {
Entity* parent;
u8* puVar2;
struct_0200AF00* ptr;
if (gRoomVars.shopItemType == 0) {
if (super->parent != NULL) {
((ModifiedParentEntity*)super->parent)->unk_20[super->field_0xf] = 0xff;
}
DeleteThisEntity();
}
gPlayerState.heldObject = 0;
gNewPlayerEntity.unk_74 = 0;
ptr = &gUnk_0200AF00;
gRoomVars.shopItemType = 0;
ptr->filler25[7] = 0;
ptr->filler25[10] = 0;
gRoomVars.shopItemType2 = 0;
super->x.HALF.HI = this->unk_80 + gRoomControls.origin_x;
super->y.HALF.HI = this->unk_82 + gRoomControls.origin_y;
super->z.WORD = 0;
super->action = 1;
super->subAction = 0;
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
super->collisionLayer = 1;
super->spritePriority.b0 = 4;
UpdateSpriteForCollisionLayer(super);
sub_08081A5C(this);
}
void sub_08081A5C(ItemForSaleEntity* this) {
u32 tmp = sub_080787D8(super);
if (super->actionDelay == 1) {
gUnk_03003DF0[tmp].unk4[2] = 0;
}
}
void ItemForSale_Action3(ItemForSaleEntity* this) {
if (gRoomVars.animFlags == 0) {
sub_08081AB0();
DeleteThisEntity();
} else if (gRoomVars.animFlags == 2) {
super->action = 1;
super->subAction = 0;
sub_08081AB0();
}
}
void sub_08081AB0(void) {
gRoomVars.animFlags = 0;
gRoomVars.shopItemType = 0;
gRoomVars.shopItemType2 = 0;
SetPlayerControl(CONTROL_ENABLED);
}
+2 -2
View File
@@ -7,6 +7,7 @@
#include "item.h"
#include "itemMetaData.h"
#include "functions.h"
#include "hitbox.h"
void sub_08081150(Entity*);
u8 sub_0808147C(u32);
@@ -23,7 +24,6 @@ extern void (*const gUnk_0811E7D4[])(Entity*);
extern void (*const gUnk_0811E7E8[])(Entity*);
extern void (*const gUnk_0811E814[])(Entity*);
extern void (*const gUnk_0811E840[])(Entity*);
extern Hitbox gUnk_080FD1A8;
typedef struct {
u8 unk0[2];
@@ -86,7 +86,7 @@ void sub_08080F20(Entity* this) {
this->field_0x3c = 0x47;
this->hurtType = 0x44;
this->health = 0xFF;
this->hitbox = &gUnk_080FD1A8;
this->hitbox = (Hitbox*)&gUnk_080FD1A8;
switch (this->type) {
case ITEM_SHELLS:
case ITEM_RUPEE1:
+1 -1
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -32,7 +33,6 @@ typedef struct {
} LavaPlatformEntry;
extern void sub_080A2CC0(Entity*, Entity**, u16*);
extern Hitbox gUnk_080FD280;
void sub_08092278(LavaPlatformEntity*);
void sub_08092344(LavaPlatformEntity*);
+3 -4
View File
@@ -5,13 +5,12 @@
#include "room.h"
#include "flags.h"
#include "functions.h"
#include "hitbox.h"
extern void (*const gUnk_081243B4[])(Entity*);
extern void (*const gUnk_081243BC[])(Entity*);
extern void (*const gUnk_081243C4[])(Entity*);
extern Hitbox gHitbox_0;
void LightableSwitch(Entity* this) {
gUnk_081243B4[this->type](this);
sub_0809EB30(this);
@@ -29,7 +28,7 @@ void sub_0809EA34(Entity* this) {
this->hurtType = 0x48;
this->hitType = 0x28;
this->flags2 = 10;
this->hitbox = &gHitbox_0;
this->hitbox = (Hitbox*)&gHitbox_0;
sub_0809EAD8(this);
UpdateSpriteForCollisionLayer(this);
sub_0809EABC(this);
@@ -101,7 +100,7 @@ void sub_0809EB80(Entity* this) {
this->hurtType = 0x48;
this->hitType = 0x28;
this->flags2 = 10;
this->hitbox = &gHitbox_0;
this->hitbox = (Hitbox*)&gHitbox_0;
sub_0809EAD8(this);
UpdateSpriteForCollisionLayer(this);
if (CheckFlags(this->cutsceneBeh.HWORD) != 0) {
+2 -3
View File
@@ -7,6 +7,7 @@
#include "effects.h"
#include "game.h"
#include "common.h"
#include "hitbox.h"
void sub_08083338(Entity*);
void sub_080834B4(Entity*);
@@ -35,8 +36,6 @@ void LockedDoor(Entity* this) {
gUnk_0811F65C[this->action](this);
}
extern Hitbox gHitbox_2;
typedef struct PACKED {
s8 x;
s8 y;
@@ -95,7 +94,7 @@ void sub_08083338(Entity* this) {
this->field_0x70.HALF.LO = this->x.HALF.HI;
this->field_0x70.HALF.HI = this->y.HALF.HI;
this->field_0x7c.BYTES.byte2 = this->type & 3;
this->hitbox = &gHitbox_2;
this->hitbox = (Hitbox*)&gHitbox_2;
this->spritePriority.b0 = 5;
this->frame = this->type & 0xF;
this->field_0x76.HWORD = TILE(this->x.HALF.HI, this->y.HALF.HI);
+2 -3
View File
@@ -6,6 +6,7 @@
#include "sound.h"
#include "functions.h"
#include "effects.h"
#include "hitbox.h"
extern u32 sub_08083734(Entity*, u32);
extern void sub_080A080C(Entity*);
@@ -13,8 +14,6 @@ extern void sub_080A0870(Entity*);
extern void (*const gUnk_0812493C[])(Entity*);
extern Hitbox gHitbox_3;
void MetalDoor(Entity* this) {
gUnk_0812493C[this->action](this);
}
@@ -28,7 +27,7 @@ void sub_080A0684(Entity* this) {
this->spriteSettings.draw = 0;
this->frameIndex = 0;
this->spriteSettings.flipY = 1;
this->hitbox = &gHitbox_3;
this->hitbox = (Hitbox*)&gHitbox_3;
this->spritePriority.b0 = 5;
this->field_0x70.HALF.LO = this->x.HALF.HI;
this->field_0x70.HALF.HI = this->y.HALF.HI;
+2 -3
View File
@@ -1,5 +1,6 @@
#include "object.h"
#include "functions.h"
#include "hitbox.h"
extern u32 sub_08091DDC(Entity*);
extern u32 sub_08007DD6(u32, u32);
@@ -8,8 +9,6 @@ extern void sub_08091C0C(Entity*);
extern void (*const gUnk_081223A8[])(Entity*);
extern Hitbox gUnk_080FD310;
extern const s8 gUnk_081223C8[];
extern const u32 gUnk_081223D8[];
@@ -30,7 +29,7 @@ void sub_080916EC(Entity* this) {
this->animationState = unk->field_0x5;
this->type2 = unk->field_0x6;
this->action = 1;
this->hitbox = &gUnk_080FD310;
this->hitbox = (Hitbox*)&gUnk_080FD310;
COLLISION_ON(this);
this->hitType = 1;
this->field_0x3c = 0x47;
+194
View File
@@ -0,0 +1,194 @@
/**
* @file minecartDoor.c
* @ingroup Objects
*
* @brief Minecart Door object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[8];
/*0x70*/ u16 unk_70;
/*0x72*/ u16 unk_72;
/*0x74*/ u16 unk_74;
/*0x76*/ u16 unk_76;
/*0x78*/ u8 unk_78[0x6];
/*0x7e*/ u8 unk_7e;
/*0x7f*/ u8 unk_7f[0x7];
/*0x86*/ u16 unk_86;
} MinecartDoorEntity;
extern bool32 sub_080837B0(Entity*); // lockedDoor
extern void sub_080836DC(Entity*, u32, u32); // lockedDoor
extern void sub_08083814(Entity*, u32); // lockedDoor
bool32 sub_08096CEC(MinecartDoorEntity*);
void sub_08096E04(MinecartDoorEntity*);
bool32 sub_08096D84(MinecartDoorEntity*);
bool32 sub_08096D68(s32, s32, s32, s32);
void MinecartDoor_Init(MinecartDoorEntity*);
void MinecartDoor_Action1(MinecartDoorEntity*);
void MinecartDoor_Action2(MinecartDoorEntity*);
void MinecartDoor_Action3(MinecartDoorEntity*);
void MinecartDoor_Action4(MinecartDoorEntity*);
void MinecartDoor(MinecartDoorEntity* this) {
static void (*const MinecartDoor_Actions[])(MinecartDoorEntity*) = { MinecartDoor_Init, MinecartDoor_Action1,
MinecartDoor_Action2, MinecartDoor_Action3,
MinecartDoor_Action4 };
MinecartDoor_Actions[super->action](this);
}
void MinecartDoor_Init(MinecartDoorEntity* this) {
if (sub_080837B0(super)) {
if ((super->type & 4) != 0) {
this->unk_7e = 1;
super->type &= 3;
}
super->speed = 0x300;
this->unk_70 = super->x.HALF.HI;
this->unk_72 = super->y.HALF.HI;
super->spritePriority.b0 = 5;
this->unk_76 = COORD_TO_TILE(super);
this->unk_74 = GetTileIndex(this->unk_76, super->collisionLayer);
super->frameIndex = super->type;
if (sub_08096CEC(this)) {
if (this->unk_7e != 0) {
DeleteThisEntity();
} else {
sub_08096E04(this);
}
} else {
super->action = 1;
super->spriteSettings.draw = 1;
SetTile(0x4022, this->unk_76, super->collisionLayer);
}
}
}
void MinecartDoor_Action1(MinecartDoorEntity* this) {
if (sub_08096CEC(this)) {
super->action = 2;
super->actionDelay = 7;
super->direction = super->type << 3;
SetTile(this->unk_74, this->unk_76, super->collisionLayer);
EnqueueSFX(SFX_10B);
}
}
void MinecartDoor_Action2(MinecartDoorEntity* this) {
LinearMoveUpdate(super);
if (--super->actionDelay == 0) {
sub_08096E04(this);
super->spriteSettings.draw = 0;
super->x.HALF.HI = this->unk_70;
super->y.HALF.HI = this->unk_72;
if (this->unk_7e != 0) {
DeleteThisEntity();
}
}
}
void MinecartDoor_Action3(MinecartDoorEntity* this) {
bool32 bVar3;
if ((this->unk_7e != 0) && (CheckFlags(this->unk_86))) {
return;
}
if ((gPlayerState.flags & PL_IN_MINECART) != 0) {
if (super->type * 2 - (u32)gPlayerEntity.animationState == 0) {
if (sub_08083734(super, super->type) == 0) {
return;
}
goto label;
} else {
bVar3 = --super->actionDelay * 0x1000000;
}
} else {
bVar3 = sub_08096D84(this);
}
if (bVar3 == FALSE) {
label:
super->action = 4;
sub_080836DC(super, super->type, this->unk_76);
}
}
void MinecartDoor_Action4(MinecartDoorEntity* this) {
LinearMoveUpdate(super);
if (--super->actionDelay == 0) {
super->action = 1;
super->x.HALF.HI = this->unk_70;
super->y.HALF.HI = this->unk_72;
sub_08083814(super, super->type);
EnqueueSFX(SFX_10B);
}
}
bool32 sub_08096CEC(MinecartDoorEntity* this) {
if (this->unk_7e != 0 && CheckFlags(this->unk_86)) {
return TRUE;
} else {
if ((gPlayerState.flags & PL_IN_MINECART) != 0) {
Entity* player = &gPlayerEntity;
if ((((super->type << 1) ^ player->animationState) & 2) == 0) {
if ((super->type & 1) != 0) {
if (sub_08096D68(gPlayerEntity.y.HALF.HI, super->y.HALF.HI, gPlayerEntity.x.HALF.HI,
super->x.HALF.HI)) {
return TRUE;
}
} else {
if (sub_08096D68(gPlayerEntity.x.HALF.HI, super->x.HALF.HI, gPlayerEntity.y.HALF.HI,
super->y.HALF.HI)) {
return TRUE;
}
}
}
}
}
return FALSE;
}
bool32 sub_08096D68(s32 param_1, s32 param_2, s32 param_3, s32 param_4) {
if (((param_1 - param_2) + 8U < 0x11) && ((param_3 - param_4) + 0x30U < 0x61)) {
return TRUE;
} else {
return FALSE;
}
}
bool32 sub_08096D84(MinecartDoorEntity* this) {
switch (super->type) {
case 0:
if (((super->y.HALF.HI + 10) - (gPlayerEntity.y.HALF.HI)) < 0x65U) {
return TRUE;
}
break;
case 1:
if (((gPlayerEntity.x.HALF.HI) - (super->x.HALF.HI - 10)) < 0x65U) {
return TRUE;
}
break;
case 2:
if (((gPlayerEntity.y.HALF.HI) - (super->y.HALF.HI - 10)) < 0x65U) {
return TRUE;
}
break;
case 3:
if (((super->x.HALF.HI + 10) - (gPlayerEntity.x.HALF.HI)) < 0x65U) {
return TRUE;
}
break;
}
return FALSE;
}
void sub_08096E04(MinecartDoorEntity* this) {
super->action = 3;
super->actionDelay = 8;
}
+180
View File
@@ -0,0 +1,180 @@
/**
* @file object35.c
* @ingroup Objects
*
* @brief Object35 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[8];
/*0x70*/ u16 unk_70;
/*0x72*/ u16 unk_72;
/*0x74*/ u16 unk_74;
/*0x76*/ u16 unk_76;
} Object35Entity;
extern void sub_080836DC(Entity*, u32, u32); // lockedDoor
extern void sub_08083814(Entity*, u32); // lockedDoor
void Object35_Type0(Object35Entity*);
void Object35_Type1(Object35Entity*);
void Object35_Type2(Object35Entity*);
void Object35_Type0Init(Object35Entity*);
void Object35_Type0Action1(Object35Entity*);
void Object35_Type0Action2(Object35Entity*);
void Object35_Type1Init(Object35Entity*);
void Object35_Type1Action1(Object35Entity*);
void Object35_Type1Action2(Object35Entity*);
void Object35_Type1Action3(Object35Entity*);
void Object35_Type1Action4(Object35Entity*);
void Object35_Type1Action5(Object35Entity*);
void Object35_Type2Init(Object35Entity*);
void Object35_Type2Action1(Object35Entity*);
void Object35(Object35Entity* this) {
static void (*const Object35_Types[])(Object35Entity*) = {
Object35_Type0,
Object35_Type1,
Object35_Type2,
};
Object35_Types[super->type](this);
}
void Object35_Type0(Object35Entity* this) {
static void (*const Object35_Type0Actions[])(Object35Entity*) = {
Object35_Type0Init,
Object35_Type0Action1,
Object35_Type0Action2,
};
Object35_Type0Actions[super->action](this);
}
void Object35_Type0Init(Object35Entity* this) {
super->action = 2;
super->type2 = 2;
super->collisionLayer = 2;
UpdateSpriteForCollisionLayer(super);
super->spritePriority.b0 = 1;
super->actionDelay = -0x4c;
InitializeAnimation(super, super->type2);
}
void Object35_Type0Action1(Object35Entity* this) {
s8 tmp;
GetNextFrame(super);
if (--super->actionDelay == 0) {
super->actionDelay = -0x4c;
super->type2++;
tmp = 3;
super->type2 = super->type2 % tmp;
InitializeAnimation(super, super->type2);
}
}
void Object35_Type0Action2(Object35Entity* this) {
GetNextFrame(super);
}
void Object35_Type1(Object35Entity* this) {
static void (*const Object35_Type1Actions[])(Object35Entity*) = {
Object35_Type1Init, Object35_Type1Action1, Object35_Type1Action2,
Object35_Type1Action3, Object35_Type1Action4, Object35_Type1Action5,
};
Object35_Type1Actions[super->action](this);
gPlayerState.mobility |= 0x80;
}
void Object35_Type1Init(Object35Entity* this) {
super->speed = 0x300;
super->frameIndex = 0;
this->unk_70 = super->x.HALF.HI;
this->unk_72 = super->y.HALF.HI;
super->spritePriority.b0 = 5;
this->unk_76 = COORD_TO_TILE(super);
this->unk_74 = GetTileIndex(this->unk_76, super->collisionLayer);
if (super->actionDelay == 0) {
super->action = 1;
super->field_0xf = 0x78;
SetTile(0x4022, this->unk_76, super->collisionLayer);
} else {
super->action = 3;
super->spriteSettings.draw = 0;
super->spriteSettings.flipY = 1;
super->actionDelay = 0;
}
}
void Object35_Type1Action1(Object35Entity* this) {
if (CheckRoomFlag(0)) {
super->action = 2;
super->actionDelay = 7;
super->direction = 0;
SetTile(this->unk_74, this->unk_76, super->collisionLayer);
EnqueueSFX(SFX_10B);
}
}
void Object35_Type1Action2(Object35Entity* this) {
LinearMoveUpdate(super);
if (--super->actionDelay == 0) {
super->action = 5;
super->actionDelay = 8;
super->spriteSettings.draw = 0;
super->x.HALF.HI = this->unk_70;
super->y.HALF.HI = this->unk_72;
}
}
void Object35_Type1Action3(Object35Entity* this) {
if (sub_08083734(super, 2)) {
super->action = 4;
sub_080836DC(super, 2, this->unk_76);
}
}
void Object35_Type1Action4(Object35Entity* this) {
LinearMoveUpdate(super);
if (--super->actionDelay == 0) {
super->action = 5;
sub_08083814(super, 2);
EnqueueSFX(SFX_10B);
SetTile(0x4022, this->unk_76, super->collisionLayer);
}
}
void Object35_Type1Action5(Object35Entity* this) {
}
void Object35_Type2(Object35Entity* this) {
static void (*const Object35_Type2Actions[])(Object35Entity*) = {
Object35_Type2Init,
Object35_Type2Action1,
};
Object35_Type2Actions[super->action](this);
}
void Object35_Type2Init(Object35Entity* this) {
super->action = 1;
super->actionDelay = 0x10;
super->z.HALF.HI -= 0x10;
if (super->type2 == 0) {
super->frameIndex = 2;
} else {
super->frameIndex = 0;
if (((super->parent)->x.HALF.HI & 0x10) != 0) {
super->frameIndex = 1;
}
}
CreateDust(super);
}
void Object35_Type2Action1(Object35Entity* this) {
if (--super->actionDelay == 0) {
DeleteThisEntity();
}
}
+203
View File
@@ -0,0 +1,203 @@
/**
* @file object43.c
* @ingroup Objects
*
* @brief Object43 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "item.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[4];
/*0x6c*/ u16 unk_6c;
/*0x6e*/ u8 unk_7e[4];
/*0x72*/ u16 unk_72;
} Object43Entity;
void Object43_Init(Object43Entity*);
void Object43_Action1(Object43Entity*);
void Object43_Action2(Object43Entity*);
void Object43_Action3(Object43Entity*);
void Object43_Action4(Object43Entity*);
void Object43(Object43Entity* this) {
static void (*const Object43_Actions[])(Object43Entity*) = {
Object43_Init, Object43_Action1, Object43_Action2, Object43_Action3, Object43_Action4,
};
Object43_Actions[super->action](this);
}
void Object43_Init(Object43Entity* this) {
super->action = 1;
super->flags |= ENT_PERSIST;
super->spritePriority.b0 = 0;
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
super->animationState = gPlayerEntity.animationState >> 1;
super->direction = (((super->animationState + 1) & 3) << 3);
super->field_0xf = 6;
super->speed = 0x140;
super->spriteVramOffset = 0x3c;
super->palette.b.b0 = 4;
this->unk_72 = 0;
this->unk_6c = 0;
super->updatePriority = 6;
InitializeAnimation(super, 7);
if (super->type2 != 0) {
super->actionDelay = 0x28;
} else {
super->spriteSettings.draw = 1;
if ((gPlayerState.field_0xac & 0x200) != 0) {
super->actionDelay = 0x28;
} else {
super->actionDelay = 0x50;
}
Object43_Action1(this);
}
}
void Object43_Action1(Object43Entity* this) {
static const s8 gUnk_081217D0[] = { -1, -14, 8, -4, 4, 4, -8, -4 };
static const s8 gUnk_081217D8[] = { -1, -14, 4, -4, 4, -1, -4, -4 };
Entity* effect;
const s8* ptr;
const s8* ptr2;
u32 tmp1;
u32 tmp2;
if (super->type2 != 0) {
if ((gPlayerState.field_0x1f[2] == 0) || ((gPlayerState.field_0x3[1] & 0x80) != 0)) {
DeleteThisEntity();
}
if (gPlayerState.field_0x1f[2] >= 0x50) {
super->spriteSettings.draw = 1;
tmp1 = gPlayerState.field_0x1f[2];
ptr = gUnk_081217D8;
} else {
if (gPlayerState.field_0x1f[2] != 0) {
super->spriteSettings.draw = 0;
return;
}
DeleteThisEntity();
}
} else {
if (gPlayerState.field_0x3[1] == 0) {
DeleteThisEntity();
}
if ((gPlayerState.sword_state & 1) != 0) {
tmp1 = gPlayerState.sword_state;
ptr = gUnk_081217D0;
} else {
DeleteThisEntity();
}
}
if (tmp1 != 0) {
GetNextFrame(super);
if (super->actionDelay != 0) {
super->actionDelay--;
tmp2 = 3;
if ((super->type2 == 0) && ((gPlayerState.field_0xac & 0x200) == 0)) {
tmp2 = 7;
}
if ((super->actionDelay & tmp2) == 0) {
this->unk_6c++;
}
} else {
if (this->unk_72 != 0) {
if (((gRoomTransition.frameCount & 0x1fU) == 0) &&
(effect = CreateFx(super, FX_SPARKLE, 0), effect != NULL)) {
effect->collisionLayer = super->collisionLayer;
}
} else {
EnqueueSFX(SFX_115);
effect = CreateFx(super, FX_BLUE_SPARKLE, 0);
if (effect != NULL) {
effect->collisionLayer = super->collisionLayer;
}
this->unk_72++;
}
}
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
ptr2 = &ptr[super->animationState * 2];
super->x.HALF.HI = ptr2[0] + gPlayerEntity.x.HALF.HI;
super->y.HALF.HI = ptr[super->animationState * 2 + 1] + gPlayerEntity.y.HALF.HI;
super->z.HALF.HI = gPlayerEntity.z.HALF.HI;
super->collisionLayer = gPlayerEntity.collisionLayer;
switch (super->animationState) {
default:
super->y.HALF.HI -= this->unk_6c;
break;
case 0:
super->y.HALF.HI -= this->unk_6c;
break;
case 1:
super->x.HALF.HI += this->unk_6c;
break;
case 2:
super->y.HALF.HI += this->unk_6c;
break;
case 3:
super->x.HALF.HI -= this->unk_6c;
break;
}
if (--super->field_0xf == 0) {
super->field_0xf = 6;
super->direction ^= 0x10;
}
LinearMoveUpdate(super);
if ((super->type2 == 0) && ((gPlayerState.sword_state & 0x40) != 0)) {
super->flags &= ~ENT_PERSIST;
if (GetInventoryValue(ITEM_FOURSWORD) == 1) {
super->action++;
} else {
DeleteThisEntity();
}
}
} else {
DeleteThisEntity();
return;
}
}
void Object43_Action2(Object43Entity* this) {
sub_08079BD8(super);
super->action += 1;
super->spriteSettings.draw = 1;
super->animationState = gPlayerEntity.animationState;
super->spriteVramOffset = 0;
super->palette.b.b0 = 4;
super->spriteIndex = 0xaf;
InitializeAnimation(super, super->animationState >> 1);
}
void Object43_Action3(Object43Entity* this) {
sub_08079BD8(super);
GetNextFrame(super);
if (gPlayerState.sword_state != 0) {
if ((gRoomTransition.frameCount & 3U) == 0) {
u32 tmp = super->palette.b.b0;
tmp ^= 4;
super->palette.b.b0 = tmp;
}
} else {
DeleteThisEntity();
}
if ((super->frame & 1) != 0) {
super->action++;
}
}
void Object43_Action4(Object43Entity* this) {
GetNextFrame(super);
if ((super->frame & 0x80) != 0) {
DeleteThisEntity();
}
}
+168
View File
@@ -0,0 +1,168 @@
/**
* @file object61.c
* @ingroup Objects
*
* @brief Object61 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "new_player.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[6];
/*0x6e*/ u16 unk_6e;
/*0x70*/ u8 unk_70[2];
/*0x72*/ u16 unk_72;
/*0x74*/ u16 unk_74;
/*0x76*/ u16 unk_76;
} Object61Entity;
void Object61_Init(Object61Entity*);
void Object61_Action1(Object61Entity*);
void Object61_Action1Type0(Object61Entity*);
void Object61_Action1Type1(Object61Entity*);
void sub_080936C8(Object61Entity*);
void Object61(Object61Entity* this) {
static void (*const Object61_Actions[])(Object61Entity*) = {
Object61_Init,
Object61_Action1,
};
if ((gPlayerState.flags & PL_PARACHUTE) == 0) {
if (super->type == 0) {
gRoomControls.camera_target = &gPlayerEntity;
}
DeleteThisEntity();
}
Object61_Actions[super->action](this);
}
void Object61_Init(Object61Entity* this) {
super->action = 1;
super->lastFrameIndex = 0xff;
super->palette.b.b0 = gPlayerEntity.palette.b.b0;
if (super->type == 0) {
gRoomControls.camera_target = super;
super->spriteRendering.b0 = 3;
this->unk_6e = 0x180;
this->unk_72 = 0x180;
CreateObjectWithParent(super, OBJECT_61, 1, 0);
}
Object61_Action1(this);
}
void Object61_Action1(Object61Entity* this) {
static void (*const Object61_Action1Types[])(Object61Entity*) = {
Object61_Action1Type0,
Object61_Action1Type1,
};
Object61_Action1Types[super->type](this);
}
void Object61_Action1Type0(Object61Entity* this) {
u32 tmp;
if ((s16)this->unk_6e < 0) {
this->unk_6e = -this->unk_6e;
}
switch (gPlayerEntity.subAction) {
case 1:
this->unk_72 -= 4;
break;
case 2:
if (super->field_0xf == 0) {
if (this->unk_72 > 0x80) {
this->unk_72 -= 0x20;
} else {
super->field_0xf += 1;
SoundReq(SFX_124);
}
if (this->unk_6e < 0x120) {
this->unk_6e += 0x40;
}
} else if (super->field_0xf != 0xff) {
if (this->unk_72 < 0x100) {
this->unk_72 += 0x20;
} else {
this->unk_72 = 0x100;
}
if (this->unk_6e > 0x100) {
this->unk_6e -= 0x20;
} else {
this->unk_6e = 0x100;
}
if (this->unk_6e == 0x100) {
super->field_0xf = 0xff;
}
} else {
sub_080936C8(this);
}
break;
case 3:
default:
sub_080936C8(this);
break;
}
tmp = gPlayerEntity.animationState & 2;
if (tmp != 0) {
super->frameIndex = 1;
if (gPlayerEntity.animationState == 2) {
this->unk_6e = -this->unk_6e;
}
} else {
super->frameIndex = tmp;
}
if (super->frameIndex != super->lastFrameIndex) {
super->lastFrameIndex = super->frameIndex;
sub_080042D0(super, super->frameIndex, super->spriteIndex);
}
CopyPosition(&gPlayerEntity, super);
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
sub_0806FCF4(super, this->unk_72, 10, 2);
sub_0805EC9C(super, this->unk_6e, this->unk_72, 0);
sub_0806FEBC(&gPlayerEntity, 1, super);
}
void Object61_Action1Type1(Object61Entity* this) {
super->frameIndex = ((gPlayerEntity.direction + (gPlayerEntity.direction >> 1)) >> 2) + 2;
if (super->frameIndex != super->lastFrameIndex) {
super->lastFrameIndex = super->frameIndex;
sub_080042D0(super, super->frameIndex, super->spriteIndex);
}
CopyPosition(&gPlayerEntity, super);
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
sub_0806FCF4(super, ((Object61Entity*)super->parent)->unk_72, 0x18, 0);
super->spriteOffsetY = -super->spriteOffsetY;
sub_0806FEBC(&gPlayerEntity, 0, super);
}
void sub_080936C8(Object61Entity* this) {
s32 tmp = gNewPlayerEntity.unk_7c;
this->unk_76 = 0x138 - (gNewPlayerEntity.unk_7c >> 2);
this->unk_74 = 8 - (tmp / 0x3c);
if (super->actionDelay == 0) {
if (this->unk_76 < this->unk_6e) {
this->unk_6e -= 8;
this->unk_72 += 8;
} else {
super->actionDelay++;
this->unk_6e = this->unk_76;
this->unk_72 = this->unk_76 + 0x30;
}
} else {
if (this->unk_76 + 0x30 > this->unk_6e) {
this->unk_6e += 8;
this->unk_72 -= 8;
} else {
super->actionDelay = 0;
this->unk_6e = this->unk_76 + 0x30;
this->unk_72 = this->unk_76;
}
}
}
+126
View File
@@ -0,0 +1,126 @@
/**
* @file object68.c
* @ingroup Objects
*
* @brief Object68 object
* Handles effects of using water, mineral water or a fairy in a bottle in PlayerItemBottle_UseOther.
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68;
} Object68Entity;
extern u32 sub_0800029C(Entity*, s32, s32);
void sub_08094774(Object68Entity*);
void sub_080948D0(Object68Entity*);
void sub_080948E8(Object68Entity*);
void sub_08094980(Object68Entity*, u32, u32);
void Object68(Object68Entity* this) {
static void (*const gUnk_08122A10[])(Object68Entity*) = {
sub_08094774,
sub_080948D0,
};
gUnk_08122A10[super->action](this);
}
void sub_08094774(Object68Entity* this) {
static const s8 gUnk_08122A18[] = { 0, -8, 8, 1, 2, 8, -8, 1 };
Entity* effect;
Entity* child;
super->action = 1;
switch (super->type) {
case 0:
effect = CreateFx(super, FX_WATER_SPLASH, 0);
super->child = effect;
if (effect != NULL) {
PositionRelative(&gPlayerEntity, effect, gUnk_08122A18[gPlayerEntity.animationState & 6] << 0x10,
gUnk_08122A18[gPlayerEntity.animationState | 1] << 0x10);
}
CopyPosition(super->child, super);
sub_08094980(this, 0x4032, 0x4033);
sub_08094980(this, 0x4061, 0x4022);
break;
case 1:
effect = CreateFx(super, FX_GREEN_SPLASH2, 0);
super->child = effect;
if (effect != NULL) {
PositionRelative(&gPlayerEntity, effect, gUnk_08122A18[gPlayerEntity.animationState & 6] << 0x10,
gUnk_08122A18[gPlayerEntity.animationState | 1] << 0x10);
}
if (super->type2 == 0) {
CopyPosition(super->child, super);
super->actionDelay = 0;
super->spritePriority.b0 = 0;
super->spriteRendering.b3 = 0;
sub_08094980(this, 0x403b, 0x403c);
sub_08094980(this, 0x4061, 0x4022);
return;
}
break;
case 2:
child = sub_080A2A20(&gPlayerEntity, 0x60, 0);
super->child = child;
if (child != NULL) {
child->actionDelay = 1;
}
break;
case 3 ... 8:
break;
}
DeleteThisEntity();
}
void sub_080948D0(Object68Entity* this) {
static void (*const gUnk_08122A20[])(Object68Entity*) = {
NULL,
sub_080948E8,
};
gUnk_08122A20[super->type](this);
}
void sub_080948E8(Object68Entity* this) {
if (super->actionDelay < 0x3c) {
super->z.WORD -= 0x4000;
if ((super->actionDelay & 3) == 0) {
super->child = CreateFx(super, FX_DASH, 0x40);
if (super->child != NULL) {
super->child->spriteRendering.b3 = super->spriteRendering.b3;
super->child->spritePriority.b0 = super->spritePriority.b0;
if ((Random() & 1) != 0) {
super->child->x.HALF.HI += (Random() & 0xf);
} else {
super->child->x.HALF.HI -= (Random() & 0xf);
}
}
}
super->actionDelay++;
} else {
DeleteThisEntity();
}
}
void sub_08094980(Object68Entity* this, u32 searchTileIndex, u32 replaceTileIndex) {
static const s8 gUnk_08122A28[] = {
0, 0, -8, 0, 8, 0, 0, 8, 0, -8, 0, 0,
};
s32 xOffset;
s32 yOffset;
u32 index = 0;
while (index < 10) {
xOffset = gUnk_08122A28[index];
yOffset = gUnk_08122A28[index + 1];
if (searchTileIndex == sub_0800029C(super, xOffset, yOffset)) {
SetTile(replaceTileIndex, TILE(super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset),
super->collisionLayer);
}
index += 2;
}
}
+23
View File
@@ -0,0 +1,23 @@
/**
* @file object69.c
* @ingroup Objects
*
* @brief Object69 object
*/
#include "entity.h"
#include "hitbox.h"
#include "functions.h"
void Object69(Entity* this) {
if ((this->flags & ENT_SCRIPTED) != 0) {
if (this->action == 0) {
this->action = 1;
this->hitbox = (Hitbox*)&gHitbox_2;
sub_0807DD50(this);
} else {
sub_0807DD94(this, NULL);
}
} else {
this->action = 1;
}
}
+2 -3
View File
@@ -5,8 +5,7 @@
#include "object.h"
#include "functions.h"
#include "game.h"
extern Hitbox gHitbox_2;
#include "hitbox.h"
extern u8 gUpdateVisibleTiles;
@@ -15,7 +14,7 @@ void ObjectA(Entity* this) {
if (this->action == 0) {
this->action = 1;
this->hitbox = &gHitbox_2;
this->hitbox = (Hitbox*)&gHitbox_2;
if (this->collisionLayer == 1) {
uVar2 = 0x26;
} else {
+1 -2
View File
@@ -10,6 +10,7 @@
#include "object.h"
#include "functions.h"
#include "item.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -20,8 +21,6 @@ typedef struct {
/*0x87*/ u8 unk_87;
} ObjectA8Entity;
extern Hitbox gUnk_080FD1A8;
void sub_0809FECC(ObjectA8Entity*);
bool32 sub_0809FE9C(ObjectA8Entity*);
void ObjectA8_Init(ObjectA8Entity*);
+4
View File
@@ -0,0 +1,4 @@
#include "entity.h"
void ObjectBF(Entity* this) {
}
+127
View File
@@ -0,0 +1,127 @@
/**
* @file objectC1.c
* @ingroup Objects
*
* @brief ObjectC1 object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "message.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68;
/*0x69*/ u8 unk_69;
/*0x6a*/ u8 unk_6a;
/*0x6b*/ u8 unk_6b;
/*0x6c*/ u8 unk_6c;
/*0x6d*/ u8 unk_6d;
/*0x6e*/ u8 unk_6e;
/*0x6f*/ u8 unk_6f;
/*0x70*/ u32 unk_70;
/*0x74*/ u8 unk_74;
} ObjectC1Entity;
void ObjectC1_Init(ObjectC1Entity*);
void ObjectC1_Action1(ObjectC1Entity*);
void ObjectC1_Action8(ObjectC1Entity*);
void ObjectC1(ObjectC1Entity* this) {
static void (*const ObjectC1_Actions[])(ObjectC1Entity*) = {
ObjectC1_Init, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1,
ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action8, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1,
ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1,
ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1,
ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1, ObjectC1_Action1,
ObjectC1_Action1, ObjectC1_Action1,
};
ObjectC1_Actions[super->action](this);
}
void ObjectC1_Init(ObjectC1Entity* this) {
super->action = 8;
ObjectC1_Action8(this);
}
void ObjectC1_Action1(ObjectC1Entity* this) {
ResetPlayerEventPriority();
gUnk_02034490.unk0 = 0;
DeleteThisEntity();
}
void ObjectC1_Action8(ObjectC1Entity* this) {
u32 one;
u32 tmp;
Entity* parent;
u8* ptr;
gPlayerEntity.flags &= ~ENT_COLLIDE;
gPlayerEntity.spriteSettings.draw = 0;
super->palette.b.b0 = gPlayerEntity.palette.b.b0;
switch (super->subAction) {
case 0:
one = 1;
super->subAction = one;
super->spriteSettings.draw = one;
super->collisionLayer = gPlayerEntity.collisionLayer;
super->spritePriority.b0 = gPlayerEntity.spritePriority.b0;
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
super->spriteSettings.flipX = 0;
super->animationState = 4;
SetDefaultPriority(super, 6);
if ((gPlayerState.flags & PL_NO_CAP) != 0) {
if (sub_080542AC(super->type)) {
tmp = 0x45e;
} else {
tmp = 0x45b;
}
} else {
if (sub_080542AC(super->type)) {
tmp = 0x2e0;
} else {
tmp = 0x1b9;
}
}
super->spriteIndex = (tmp >> 8);
InitAnimationForceUpdate(super, tmp & 0xff);
break;
case 1:
UpdateAnimationSingleFrame(super);
if (super->frame != 0) {
super->subAction++;
}
break;
case 2:
UpdateAnimationSingleFrame(super);
if ((gMessage.doTextBox & 0x7f) != 0) {
return;
}
if ((super->frame & 0x80) != 0) {
super->action = 1;
gPlayerEntity.flags = this->unk_69;
gPlayerEntity.spriteSettings.draw = this->unk_68;
gPlayerEntity.iframes = this->unk_6a;
gPlayerState.field_0x7 = this->unk_6b;
gPlayerState.keepFacing = this->unk_6c;
gPlayerState.field_0xa = this->unk_6d;
gPlayerState.field_0x27[0] = this->unk_6e;
gPlayerState.mobility = this->unk_6f;
gPlayerState.flags = this->unk_70;
gPlayerState.field_0x82[8] = this->unk_74;
}
break;
}
parent = super->parent;
if (parent != NULL) {
PositionEntityOnTop(super, parent);
ptr = GetSpriteSubEntryOffsetDataPointer((u16)super->spriteIndex, super->frameIndex);
parent->spriteOffsetX = *ptr;
parent->spriteOffsetY = ptr[1];
}
}
+1 -1
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -29,7 +30,6 @@ typedef struct {
extern bool32 sub_080896B0(void); // pushableStatue
extern Hitbox gUnk_080FD1F4;
extern s16 gUnk_080B4488[];
typedef struct {
+3 -5
View File
@@ -6,6 +6,7 @@
#include "room.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
void sub_08082824(Entity*);
static void sub_08082850(Entity*, Entity*);
@@ -15,9 +16,6 @@ extern void (*const gUnk_0811F090[])(Entity*);
extern void (*const gUnk_0811F0A8[])(Entity*);
extern void (*const gUnk_0811F0C4[])(Entity*);
extern Hitbox gHitbox_18; // TODO: should be const
extern Hitbox gUnk_080FD340; // TODO: should be const
extern void sub_08078930(Entity*);
extern void sub_08016A6C(Entity*);
@@ -32,7 +30,7 @@ void sub_0808222C(Entity* this) {
}
this->action = 1;
this->hitbox = &gHitbox_18;
this->hitbox = (Hitbox*)&gHitbox_18;
this->speed = 0x80;
this->y.HALF.HI += 3;
this->field_0x16 = 0;
@@ -118,7 +116,7 @@ void sub_080824F8(Entity* this) {
void sub_08082510(Entity* this) {
COLLISION_ON(this);
this->hitbox = &gUnk_080FD340;
this->hitbox = (Hitbox*)&gUnk_080FD340;
this->field_0x3c = 7;
this->hitType = 1;
this->flags2 = gPlayerEntity.flags2;
+2 -5
View File
@@ -1,8 +1,7 @@
#define NENT_DEPRECATED
#include "object.h"
#include "functions.h"
u32 IsColliding(Entity*, Entity*);
#include "hitbox.h"
typedef struct {
Entity base;
@@ -22,8 +21,6 @@ PressurePlateAction sub_08088840;
PressurePlateAction sub_0808886C;
PressurePlateAction sub_080888F4;
extern Hitbox gUnk_080FD1D4;
static u32 sub_08088938(PressurePlateEntity*);
static u32 get_standing_count(PressurePlateEntity*);
@@ -50,7 +47,7 @@ void sub_08088840(PressurePlateEntity* this) {
super->action = 1;
super->spriteSettings.draw = 1;
super->spritePriority.b0 = 7;
super->hitbox = &gUnk_080FD1D4;
super->hitbox = (Hitbox*)&gUnk_080FD1D4;
this->dir = super->animationState;
}
+3 -4
View File
@@ -10,6 +10,7 @@
#include "object.h"
#include "functions.h"
#include "sound.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -31,8 +32,6 @@ typedef struct {
enum PullableLeverPart { HANDLE, MIDDLE, SOCKET };
extern u16 gUnk_02021F00[];
extern Hitbox gUnk_080FD270;
extern Hitbox gUnk_080FD278;
extern void (*const PullableLever_HandleActions[])(PullableLeverEntity*);
extern void (*const PullableLever_MiddleActions[])(PullableLeverEntity*);
@@ -76,9 +75,9 @@ void PullableLever_HandleInit(PullableLeverEntity* this) {
super->spriteSettings.draw = 1;
super->speed = 0x60;
if ((super->type2 & 1)) {
super->hitbox = &gUnk_080FD278;
super->hitbox = (Hitbox*)&gUnk_080FD278;
} else {
super->hitbox = &gUnk_080FD270;
super->hitbox = (Hitbox*)&gUnk_080FD270;
}
super->field_0x16 = 1;
super->x.HALF.HI += PullableLever_InitialOffsets[super->type2 * 2];
+1 -1
View File
@@ -10,6 +10,7 @@
#include "object.h"
#include "functions.h"
#include "game.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -20,7 +21,6 @@ typedef struct {
/*0x7c*/ u32 unk_7c;
} PullableMushroomEntity;
extern const Hitbox gUnk_080FD224;
extern const u8 gUnk_08126EE4[];
void PullableMushroom_Init(PullableMushroomEntity*);
+1 -3
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -26,9 +27,6 @@ typedef struct {
/*0x86*/ u16 pushedFlag;
} PushableGraveEntity;
extern const Hitbox gUnk_080FD578;
extern const Hitbox gUnk_080FD570;
extern void (*const gUnk_081232AC[])(PushableGraveEntity*);
extern const u8 gUnk_081232C0[];
extern const u16 PushableGrave_Tiles[];
+1 -1
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -20,7 +21,6 @@ typedef struct {
/*0x86*/ u16 unk_86;
} PushableStatueEntity;
extern const Hitbox gUnk_080FD1F4;
extern const s16 gUnk_080B4488[];
extern const s16 gUnk_080B4468[];
+2 -3
View File
@@ -1,12 +1,11 @@
#include "object.h"
#include "functions.h"
#include "hitbox.h"
void sub_08086A6C(Entity*);
void (*const gUnk_081206C4[])(Entity*);
extern Hitbox gUnk_080FD1A8;
// Main
void Rupee(Entity* ent) {
gUnk_081206C4[ent->action](ent);
@@ -17,7 +16,7 @@ void sub_080869DC(Entity* ent) {
ent->action = 1;
ent->spriteSettings.draw = 0;
ent->hitbox = &gUnk_080FD1A8;
ent->hitbox = (Hitbox*)&gUnk_080FD1A8;
ent->field_0x3c |= 16;
itemEntity = CreateObject(GROUND_ITEM, ent->type, 0);
if (itemEntity != NULL) {
+1 -1
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "object.h"
#include "functions.h"
#include "hitbox.h"
typedef struct {
/*0x00*/ Entity base;
@@ -20,7 +21,6 @@ typedef struct {
/*0x86*/ u16 unk_86;
} SmallIceBlockEntity;
extern const Hitbox gUnk_080FD408;
extern const s16 gUnk_080B4488[];
void sub_080996AC(SmallIceBlockEntity*);
+2 -3
View File
@@ -3,8 +3,7 @@
#include "coord.h"
#include "room.h"
#include "object.h"
extern Hitbox gHitbox_1;
#include "hitbox.h"
void TreeThorns(Entity* this) {
Entity* ent;
@@ -23,7 +22,7 @@ void TreeThorns(Entity* this) {
this->hurtType = 0x48;
this->hitType = 0x7a;
this->flags2 = 1;
this->hitbox = &gHitbox_1;
this->hitbox = (Hitbox*)&gHitbox_1;
tilePos = COORD_TO_TILE(this);
SetTile(0x4066, tilePos - 1, *layer);
SetTile(0x4065, tilePos, *layer);
+2 -3
View File
@@ -2,8 +2,7 @@
#include "object.h"
#include "game.h"
#include "functions.h"
extern Hitbox gHitbox_1;
#include "hitbox.h"
extern void sub_0807CAC8(u32);
extern u32 sub_0807CAEC(u32);
@@ -39,7 +38,7 @@ void sub_0808B474(Entity* this) {
tmp = gUnk_08121380[this->type];
this->palette.b.b0 = tmp;
this->spritePriority.b0 = 6;
this->hitbox = &gHitbox_1;
this->hitbox = (Hitbox*)&gHitbox_1;
this->updatePriority = PRIO_NO_BLOCK;
InitializeAnimation(this, 0);
if (CheckFlags(this->field_0x86.HWORD)) {
+99
View File
@@ -0,0 +1,99 @@
/**
* @file whirlwind.c
* @ingroup Objects
*
* @brief Whirlwind object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "area.h"
#include "hitbox.h"
void Whirlwind_Init(Entity*);
void Whirlwind_Action1(Entity*);
void Whirlwind_Action2(Entity*);
void Whirlwind(Entity* this) {
static void (*const Whirlwind_Actions[])(Entity*) = {
Whirlwind_Init,
Whirlwind_Action1,
Whirlwind_Action2,
};
u32 tmp = this->health;
if (((tmp & 0x7f) != 0) && (ReadBit(gArea.filler5, tmp - 1) == 0)) {
DeleteThisEntity();
}
Whirlwind_Actions[this->action](this);
}
void Whirlwind_Init(Entity* this) {
this->action = 1;
this->hitbox = (Hitbox*)&gUnk_080FD320;
this->flags |= ENT_COLLIDE;
this->hitType = 1;
this->field_0x3c = 0x47;
this->hurtType = 0x44;
this->flags2 = 0x80;
this->spriteOrientation.flipY = 1;
this->spriteRendering.b3 = 1;
this->animationState = this->type;
this->direction = this->type << 3;
this->speed = 0x700;
if (this->type2 == 1) {
ChangeObjPalette(this, 0x161);
InitializeAnimation(this, 1);
} else {
this->z.HALF.HI = 0xffe8;
InitializeAnimation(this, 1);
}
if ((this->flags & ENT_SCRIPTED) != 0) {
sub_0807DD64(this);
ExecuteScriptForEntity(this, NULL);
}
}
void Whirlwind_Action1(Entity* this) {
if ((this->flags & ENT_SCRIPTED) != 0) {
ExecuteScriptForEntity(this, NULL);
}
if (this->spriteSettings.draw != 0) {
GetNextFrame(this);
if ((((((gPlayerState.flags & PL_MINISH) == 0)) && (gPlayerState.field_0x3c[0] == 0)) &&
((gPlayerEntity.action == 4 || ((gPlayerEntity.flags & ENT_COLLIDE) != 0)))) &&
((gPlayerEntity.action != 6 && (sub_0800419C(this, &gPlayerEntity, 0xc, 0xc) != 0)))) {
if (((gPlayerState.flags & PL_PARACHUTE) == 0) && (gPlayerEntity.action != 4)) {
if ((this->type2 != 1) && (-0x10 < gPlayerEntity.z.HALF.HI)) {
return;
}
} else if (gPlayerEntity.z.HALF.HI == 0) {
return;
}
CopyPosition(this, &gPlayerEntity);
sub_08004542(this);
sub_08004542(&gPlayerEntity);
gPlayerEntity.collisionLayer = 1;
gPlayerEntity.flags |= ENT_COLLIDE;
gPlayerState.queued_action = 0x1f;
gPlayerState.field_0x38 = this->type2;
gPlayerState.field_0x39 = 0xff;
this->spritePriority.b0 = gPlayerEntity.spritePriority.b0 - 1;
this->action++;
sub_08077B20();
SoundReq(SFX_153);
SoundReq(SFX_PLY_VO5);
}
}
}
void Whirlwind_Action2(Entity* this) {
UpdateAnimationSingleFrame(this);
if (sub_0800419C(this, &gPlayerEntity, 0xc, 0xc) == 0) {
ResetCollisionLayer(this);
this->spriteOrientation.flipY = 1;
this->spriteRendering.b3 = 1;
this->action--;
}
}
+195
View File
@@ -0,0 +1,195 @@
/**
* @file windTribeTeleporter.c
* @ingroup Objects
*
* @brief WindTribeTeleporter 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;
} WindTribeTeleporterEntity;
extern ScreenTransitionData gUnk_0813ADEC[];
void WindTribeTeleporter_Init(WindTribeTeleporterEntity*);
void WindTribeTeleporter_Action1(WindTribeTeleporterEntity*);
void WindTribeTeleporter_Action2(WindTribeTeleporterEntity*);
void WindTribeTeleporter_Action3(WindTribeTeleporterEntity*);
void sub_080A11E0(WindTribeTeleporterEntity*);
bool32 sub_080A11C0(WindTribeTeleporterEntity*);
void WindTribeTeleporter(WindTribeTeleporterEntity* this) {
static void (*const WindTribeTeleporter_Actions[])(WindTribeTeleporterEntity*) = {
WindTribeTeleporter_Init,
WindTribeTeleporter_Action1,
WindTribeTeleporter_Action2,
WindTribeTeleporter_Action3,
};
WindTribeTeleporter_Actions[super->action](this);
sub_080A11E0(this);
}
void WindTribeTeleporter_Init(WindTribeTeleporterEntity* this) {
super->action = 1;
super->frameDuration = 8;
super->spritePriority.b0 = 7;
super->hitbox = (Hitbox*)&gHitbox_22;
SetDefaultPriority(super, 6);
if (sub_080A11C0(this)) {
gPlayerEntity.x.HALF.HI = super->x.HALF.HI;
gPlayerEntity.y.HALF.HI = super->y.HALF.HI;
SetPlayerControl(CONTROL_DISABLED);
sub_08078B48();
SetPlayerEventPriority();
SoundReq(SFX_112);
super->action = 3;
super->subAction = 0;
this->unk_68 = 1;
}
}
void WindTribeTeleporter_Action1(WindTribeTeleporterEntity* this) {
if (sub_080A11C0(this)) {
if (this->unk_68 == 0) {
gPlayerEntity.x.HALF.HI = super->x.HALF.HI;
gPlayerEntity.y.HALF.HI = super->y.HALF.HI;
SetPlayerControl(CONTROL_DISABLED);
sub_08078B48();
SetPlayerEventPriority();
SoundReq(SFX_112);
super->action = 2;
super->subAction = 0;
}
} else {
this->unk_68 = 0;
}
}
void WindTribeTeleporter_Action2(WindTribeTeleporterEntity* this) {
switch (super->subAction) {
case 0:
super->actionDelay = 0x1e;
super->subAction++;
break;
case 1:
if (--super->actionDelay == 0) {
super->subAction++;
super->actionDelay = 0x1e;
}
break;
case 2:
if (--super->actionDelay == 0) {
super->subAction++;
super->actionDelay = 0x1e;
SoundReq(SFX_113);
} else {
if ((gRoomTransition.frameCount & 7) == 0) {
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
}
}
break;
case 3:
if (--super->actionDelay == 0) {
super->subAction++;
super->actionDelay = 0x1e;
} else {
if ((gRoomTransition.frameCount & 3) == 0) {
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
}
}
break;
default:
if (--super->actionDelay == 0) {
#if defined(DEMO_JP) || defined(JP) || defined(EU)
#ifdef DEMO_JP
SetLocalFlag(0xfc);
#endif
DoExitTransition(&gUnk_0813ADEC[super->type2]);
#else
if (gRoomControls.area == 3) {
SetLocalFlag(0xf9);
}
DoExitTransition(&gUnk_0813ADEC[super->type2]);
#endif
} else {
if ((gRoomTransition.frameCount & 1) == 0) {
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
}
}
break;
}
}
void WindTribeTeleporter_Action3(WindTribeTeleporterEntity* this) {
switch (super->subAction) {
case 0:
super->subAction = 1;
super->actionDelay = 0x1e;
SoundReq(SFX_114);
break;
case 1:
if (--super->actionDelay != 0) {
if ((gRoomTransition.frameCount & 1) == 0) {
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
}
} else {
super->subAction++;
super->actionDelay = 0x1e;
}
break;
case 2:
if (--super->actionDelay == 0) {
super->subAction++;
super->actionDelay = 0x1e;
} else {
if ((gRoomTransition.frameCount & 3) == 0) {
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
}
}
break;
case 3:
if (--super->actionDelay == 0) {
super->subAction++;
} else {
if ((gRoomTransition.frameCount & 7) == 0) {
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
}
}
break;
default:
if (gPlayerEntity.animationState != 4) {
if ((gRoomTransition.frameCount & 7U) != 0) {
return;
}
gPlayerEntity.animationState = (gPlayerEntity.animationState + 2) & 6;
} else {
super->action = 1;
super->subAction = 0;
gPlayerState.controlMode = 1;
ResetPlayerEventPriority();
}
break;
}
}
bool32 sub_080A11C0(WindTribeTeleporterEntity* this) {
if (gPlayerEntity.z.HALF.HI != 0) {
return FALSE;
} else {
return IsCollidingPlayer(super);
}
}
void sub_080A11E0(WindTribeTeleporterEntity* this) {
if (--super->frameDuration == 0) {
super->frameDuration = 8;
super->frameIndex = (super->frameIndex + 1) & 3;
}
}
-2
View File
@@ -3133,8 +3133,6 @@ static void PlayerMinish(Entity* this) {
sPlayerMinishStates[this->subAction](this);
}
extern Hitbox gUnk_0811BC80;
static void sub_08073C80(Entity* this) {
static const Hitbox sMinishHitbox = { 0, -1, { 3, 2, 2, 3 }, 2, 2 };
-3
View File
@@ -3,14 +3,11 @@
#include "functions.h"
extern void (*const gUnk_080B77C8[])(Entity*);
extern void sub_08078954(Entity*);
void sub_0801B418(Entity*);
void sub_0801B3A4(Entity*);
extern void (*const gUnk_080B77D8[])(Entity*);
extern void sub_08079BD8(Entity*);
void PlayerItemBomb(Entity* this) {
u8 uVar1, uVar2;
-1
View File
@@ -3,7 +3,6 @@
#include "player.h"
#include "functions.h"
extern void sub_08079BD8(Entity*);
extern Entity* sub_08008782(Entity*, u32, s32, s32);
void sub_0801B8FC(Entity*);
-2
View File
@@ -5,8 +5,6 @@
#include "coord.h"
#include "functions.h"
extern void sub_08078954(Entity*);
extern void (*const DirtBallProjectile_Functions[])(Entity*);
extern void (*const DirtBallProjectile_Actions[])(Entity*);
extern const Hitbox3D gUnk_08129764;
+1 -1
View File
@@ -3,10 +3,10 @@
#include "coord.h"
#include "functions.h"
#include "projectile.h"
#include "hitbox.h"
extern u32 sub_080644C8(Entity*);
extern u8 gUnk_02027EB4[];
extern const Hitbox gUnk_080FD1E4;
extern const u8 gUnk_081299C8[];
+4 -6
View File
@@ -4,11 +4,9 @@
#include "sound.h"
#include "functions.h"
#include "projectile.h"
#include "hitbox.h"
extern u8 gEntCount;
extern Hitbox gHitbox_21;
extern Hitbox gHitbox_1;
extern Hitbox gHitbox_20;
extern void (*const gUnk_0812A994[])(Entity*);
extern void (*const GyorgTail_Actions[])(Entity*);
@@ -96,7 +94,7 @@ void sub_080AC510(Entity* this) {
this->spriteSettings.draw = 1;
this->collisionLayer = 2;
if (*(u16*)&this->type == 0x300) {
this->hitbox = &gHitbox_21;
this->hitbox = (Hitbox*)&gHitbox_21;
}
}
}
@@ -113,9 +111,9 @@ void sub_080AC560(Entity* this) {
this->action = 1;
this->collisionLayer = 2;
if (this->type == 0) {
this->hitbox = &gHitbox_1;
this->hitbox = (Hitbox*)&gHitbox_1;
} else {
this->hitbox = &gHitbox_20;
this->hitbox = (Hitbox*)&gHitbox_20;
}
this->frameIndex = 0xff;
this->spriteSettings.draw = 1;
+3 -4
View File
@@ -3,8 +3,7 @@
#include "coord.h"
#include "functions.h"
#include "game.h"
extern Hitbox gHitbox_0;
#include "hitbox.h"
extern void (*const MandiblesProjectile_Functions[])(Entity*);
extern void (*const MandiblesProjectile_Actions[])(Entity*);
@@ -141,9 +140,9 @@ void MandiblesProjectile_Action3(Entity* this) {
this->animationState = uVar1 << 0x1a >> 0x1a;
#ifdef EU
this->spriteOrientation.flipY = 1;
this->hitbox = &gHitbox_0;
this->hitbox = (Hitbox*)&gHitbox_0;
#else
this->hitbox = &gHitbox_0;
this->hitbox = (Hitbox*)&gHitbox_0;
if (AreaIsDungeon() != 0) {
this->spriteOrientation.flipY = 1;
}
+2 -4
View File
@@ -2,6 +2,7 @@
#include "enemy.h"
#include "functions.h"
#include "object.h"
#include "hitbox.h"
typedef struct {
u8 b0;
@@ -234,10 +235,7 @@ void (*const SpiderWeb_Actions[])(Entity*) = {
const u8 gUnk_0812A03C[] = {
248, 252, 6, 1, 4, 245, 253, 3, 249, 253, 6, 4, 252, 245, 3, 3,
};
extern const Hitbox gUnk_080FD41C;
extern const Hitbox gUnk_080FD424;
extern const Hitbox gUnk_080FD42C;
extern const Hitbox gUnk_080FD434;
const Hitbox* const gUnk_0812A04C[] = {
&gUnk_080FD41C,
&gUnk_080FD424,