mirror of https://github.com/zeldaret/tmc.git
Decompile treeItem.c
This commit is contained in:
parent
c9c88c1d56
commit
82654cd402
|
|
@ -2,35 +2,64 @@
|
|||
.set GUARD_ASM_MACROS_ENTITY_INC, 1
|
||||
|
||||
.set ENTITY_TYPE_ENEMY, 0x3
|
||||
.set ENTITY_OCTOROK, 0x0
|
||||
.set ENTITY_CHUCHU, 0x1
|
||||
.set ENTITY_TREE_ITEM, 0x65
|
||||
.set ENTITY_TYPE_SIGN, 0x5
|
||||
.set ENTITY_TYPE_OBJECT, 0x6
|
||||
|
||||
.macro entity_octorok x, y, bound_x, bound_y, bound_tile_width, bound_tile_height
|
||||
.byte ENTITY_TYPE_ENEMY
|
||||
.set OBJECT_ITEM, 0x0
|
||||
.set OBJECT_MINISH_LILYPAD, 0x73
|
||||
|
||||
.set ENEMY_OCTOROK, 0x0
|
||||
.set ENEMY_CHUCHU, 0x1
|
||||
.set ENEMY_TREE_ITEM, 0x65
|
||||
|
||||
.macro object_minish_lilypad x, y, room_property, collision=0
|
||||
.byte ENTITY_TYPE_OBJECT | ((\collision) << 4)
|
||||
.byte 0x0F
|
||||
.byte ENTITY_OCTOROK
|
||||
.byte OBJECT_MINISH_LILYPAD
|
||||
.byte 0x00
|
||||
.byte \room_property
|
||||
.byte 0x00, 0x00, 0x00
|
||||
.2byte \x, \y
|
||||
.2byte 0x0, 0x0
|
||||
.endm
|
||||
|
||||
.macro object_item x, y, item, flag, collision=0
|
||||
.byte ENTITY_TYPE_OBJECT | ((\collision) << 4)
|
||||
.byte 0x0F
|
||||
.byte OBJECT_ITEM
|
||||
.byte \item
|
||||
.byte 0x00
|
||||
.byte 0x04 @ stationary item
|
||||
.byte 0x00, 0x00
|
||||
.2byte \x, \y
|
||||
.2byte 0x0, \flag
|
||||
.endm
|
||||
|
||||
.macro enemy_octorok x, y, bound_x, bound_y, bound_tile_width, bound_tile_height, collision=0
|
||||
.byte ENTITY_TYPE_ENEMY | ((\collision) << 4)
|
||||
.byte 0x0F
|
||||
.byte ENEMY_OCTOROK
|
||||
.byte 0x00, 0x00, 0x00
|
||||
.byte \bound_tile_width, \bound_tile_height
|
||||
.2byte \x, \y
|
||||
.2byte \bound_x, \bound_y
|
||||
.endm
|
||||
|
||||
.macro entity_chuchu x, y, bound_x, bound_y, bound_tile_width, bound_tile_height
|
||||
.byte ENTITY_TYPE_ENEMY
|
||||
.macro enemy_chuchu x, y, bound_x, bound_y, bound_tile_width, bound_tile_height, collision=0
|
||||
.byte ENTITY_TYPE_ENEMY | ((\collision) << 4)
|
||||
.byte 0x0F
|
||||
.byte ENTITY_CHUCHU
|
||||
.byte ENEMY_CHUCHU
|
||||
.byte 0x00, 0x00, 0x00
|
||||
.byte \bound_tile_width, \bound_tile_height
|
||||
.2byte \x, \y
|
||||
.2byte \bound_x, \bound_y
|
||||
.endm
|
||||
|
||||
.macro entity_tree_item x, y, unused
|
||||
.byte ENTITY_TYPE_ENEMY
|
||||
.macro enemy_tree_item x, y, unknown, collision=0
|
||||
.byte ENTITY_TYPE_ENEMY | ((\collision) << 4)
|
||||
.byte 0x0F
|
||||
.byte ENTITY_TREE_ITEM
|
||||
.byte \unused, 0x00, 0x00, 0x00, 0x00
|
||||
.byte ENEMY_TREE_ITEM
|
||||
.byte \unknown, 0x00, 0x00, 0x00, 0x00
|
||||
.2byte \x, \y
|
||||
.2byte 0x00, 0x00
|
||||
.endm
|
||||
|
|
|
|||
170
asm/treeItem.s
170
asm/treeItem.s
|
|
@ -1,170 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start TreeItem
|
||||
TreeItem: @ 0x08049B70
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #0xc]
|
||||
cmp r0, #0
|
||||
bne _08049BB0
|
||||
adds r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
ldrb r0, [r5, #0xa]
|
||||
lsls r0, r0, #4
|
||||
ldr r1, _08049BEC @ =gUnk_080D29E0
|
||||
adds r0, r0, r1
|
||||
bl sub_080028F4
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x68
|
||||
strb r0, [r4]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #8
|
||||
bls _08049B9C
|
||||
bl DeleteThisEntity
|
||||
_08049B9C:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #7
|
||||
bhi _08049BB0
|
||||
movs r0, #0x67 @ Kinstone Bag
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
bne _08049BB0
|
||||
movs r0, #8
|
||||
strb r0, [r4]
|
||||
_08049BB0:
|
||||
adds r0, r5, #0
|
||||
bl sub_08049C2C
|
||||
cmp r0, #0
|
||||
beq _08049C20
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x68
|
||||
ldrb r1, [r0]
|
||||
cmp r1, #0
|
||||
blt _08049C16
|
||||
cmp r1, #7
|
||||
ble _08049BF0
|
||||
cmp r1, #8
|
||||
bne _08049C16
|
||||
movs r0, #0x40 @ Small Fairy
|
||||
movs r1, #0x60
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08049C16
|
||||
movs r0, #0
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
b _08049C16
|
||||
.align 2, 0
|
||||
_08049BEC: .4byte gUnk_080D29E0
|
||||
_08049BF0:
|
||||
ldr r0, _08049C24 @ =gUnk_080D2AB0
|
||||
adds r0, r1, r0
|
||||
ldrb r2, [r0]
|
||||
movs r0, #0x96 @ Kinstone
|
||||
movs r1, #7
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08049C16
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
ldrh r0, [r4, #0x32]
|
||||
adds r0, #0x10
|
||||
strh r0, [r4, #0x32]
|
||||
ldr r0, _08049C28 @ =0x0000FFE0
|
||||
strh r0, [r4, #0x36]
|
||||
_08049C16:
|
||||
adds r0, r5, #0
|
||||
bl sub_08049CF4
|
||||
bl DeleteThisEntity
|
||||
_08049C20:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08049C24: .4byte gUnk_080D2AB0
|
||||
_08049C28: .4byte 0x0000FFE0
|
||||
|
||||
thumb_func_start sub_08049C2C
|
||||
sub_08049C2C: @ 0x08049C2C
|
||||
push {r4, r5, r6, lr}
|
||||
adds r2, r0, #0
|
||||
ldr r3, _08049CA4 @ =gPlayerEntity
|
||||
ldrb r0, [r3, #0xc]
|
||||
cmp r0, #6
|
||||
bne _08049CA8
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r3, r0]
|
||||
movs r4, #0x2e
|
||||
ldrsh r0, [r2, r4]
|
||||
subs r1, r1, r0
|
||||
movs r5, #6
|
||||
movs r4, #0x80
|
||||
lsls r4, r4, #8
|
||||
adds r0, r1, #0
|
||||
ands r0, r4
|
||||
cmp r0, #0
|
||||
beq _08049C52
|
||||
movs r5, #2
|
||||
_08049C52:
|
||||
adds r1, #0x28
|
||||
lsls r0, r1, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, #0x4f
|
||||
bhi _08049CA8
|
||||
movs r6, #0x32
|
||||
ldrsh r1, [r3, r6]
|
||||
movs r6, #0x32
|
||||
ldrsh r0, [r2, r6]
|
||||
subs r1, r1, r0
|
||||
adds r0, r1, #0
|
||||
ands r0, r4
|
||||
rsbs r0, r0, #0
|
||||
asrs r2, r0, #0x1f
|
||||
movs r0, #4
|
||||
ands r2, r0
|
||||
adds r1, #0x28
|
||||
lsls r0, r1, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r0, #0x4f
|
||||
bhi _08049CA8
|
||||
ldrb r0, [r3, #0x14]
|
||||
cmp r0, #0
|
||||
bne _08049C86
|
||||
cmp r2, #0
|
||||
beq _08049C9E
|
||||
_08049C86:
|
||||
cmp r0, #4
|
||||
bne _08049C8E
|
||||
cmp r2, #4
|
||||
beq _08049C9E
|
||||
_08049C8E:
|
||||
cmp r0, #6
|
||||
bne _08049C96
|
||||
cmp r5, #6
|
||||
beq _08049C9E
|
||||
_08049C96:
|
||||
cmp r0, #2
|
||||
bne _08049CA8
|
||||
cmp r5, #2
|
||||
bne _08049CA8
|
||||
_08049C9E:
|
||||
movs r0, #1
|
||||
b _08049CAA
|
||||
.align 2, 0
|
||||
_08049CA4: .4byte gPlayerEntity
|
||||
_08049CA8:
|
||||
movs r0, #0
|
||||
_08049CAA:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
|
@ -4906,10 +4906,22 @@ gUnk_080D29C0:: @ 080D29C0
|
|||
.incbin "baserom.gba", 0x0D29C0, 0x0000020
|
||||
|
||||
gUnk_080D29E0:: @ 080D29E0
|
||||
.incbin "baserom.gba", 0x0D29E0, 0x00000D0
|
||||
.byte 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
|
||||
gUnk_080D2AB0:: @ 080D2AB0
|
||||
.incbin "baserom.gba", 0x0D2AB0, 0x000000C
|
||||
.byte 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
gUnk_080D2ABC:: @ 080D2ABC
|
||||
.incbin "baserom.gba", 0x0D2ABC, 0x000019C
|
||||
|
|
|
|||
|
|
@ -8975,11 +8975,11 @@ gUnk_080F4CDC:: @ 080F4CDC
|
|||
.incbin "baserom.gba", 0x0F4CDC, 0x0000024
|
||||
|
||||
gEntityList0_MinishWoods_0:: @ 080F4D00
|
||||
.byte 0x06, 0x0F, 0x73, 0x00, 0x12, 0x00, 0x00, 0x00, 0xF8, 0x01, 0xD8, 0x03, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x06, 0x0F, 0x73, 0x00, 0x13, 0x00, 0x00, 0x00, 0xA8, 0x01, 0xB8, 0x03, 0x00, 0x00, 0x00, 0x00
|
||||
.byte 0x16, 0x0F, 0x00, 0x63, 0x00, 0x04, 0x00, 0x00, 0xC8, 0x00, 0x34, 0x01, 0x00, 0x00, 0x3C, 0x00
|
||||
.byte 0x16, 0x0F, 0x00, 0x63, 0x00, 0x04, 0x00, 0x00, 0x98, 0x01, 0xB4, 0x02, 0x00, 0x00, 0x3D, 0x00
|
||||
.byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
object_minish_lilypad x=0x1F8, y=0x3D8, room_property=0x12
|
||||
object_minish_lilypad x=0x1A8, y=0x3B8, room_property=0x13
|
||||
object_item x=0xC8, y=0x134, item=0x63, flag=0x3C, collision=1
|
||||
object_item x=0x198, y=0x2B4, item=0x63, flag=0x3D, collision=1
|
||||
entity_list_end
|
||||
|
||||
gUnk_080F4D50:: @ 080F4D50
|
||||
.incbin "baserom.gba", 0x0F4D50, 0x0000060
|
||||
|
|
@ -9013,29 +9013,29 @@ gUnk_080F4F10:: @ 080F4F10
|
|||
.incbin "baserom.gba", 0x0F4F10, 0x0000020
|
||||
|
||||
gEntityList2_MinishWoods_0:: @ 080F4F30
|
||||
entity_octorok 0x148, 0x38, 0xA0, 0x20, 0x1A, 0x16
|
||||
entity_octorok 0x118, 0x98, 0xA0, 0x20, 0x1A, 0x16
|
||||
entity_octorok 0x1B8, 0x1A8, 0x160, 0x160, 0x1C, 0x14
|
||||
entity_octorok 0x208, 0x1F8, 0x1C0, 0x1B0, 0x12, 0xA
|
||||
entity_octorok 0x288, 0x188, 0x250, 0x140, 0xC, 0x1A
|
||||
entity_octorok 0x148, 0x1E8, 0x120, 0x180, 0x10, 0x12
|
||||
entity_octorok 0xA8, 0x198, 0x30, 0x180, 0x1A, 0xC
|
||||
entity_chuchu 0x3A0, 0x1D0, 0x320, 0x1D0, 0x14, 0xC
|
||||
entity_chuchu 0x3A0, 0x250, 0x330, 0x200, 0x12, 0xE
|
||||
entity_chuchu 0x340, 0x270, 0x320, 0x240, 0x20, 0x12
|
||||
entity_chuchu 0x380, 0x2E0, 0x350, 0x2B0, 0xC, 0xA
|
||||
entity_chuchu 0x1A8, 0x2C8, 0x190, 0x2B0, 0xE, 0x6
|
||||
entity_chuchu 0x280, 0x2F0, 0x240, 0x2C0, 0xC, 0xE
|
||||
entity_chuchu 0x3B0, 0x100, 0x390, 0xE0, 0x6, 0x14
|
||||
entity_chuchu 0x248, 0x2D8, 0x0, 0x0, 0x0, 0x0
|
||||
entity_tree_item 0x120, 0x60, 0x5
|
||||
entity_tree_item 0xE0, 0xB0, 0x6
|
||||
entity_tree_item 0x190, 0x1A0, 0x7
|
||||
entity_tree_item 0x1B0, 0x1E0, 0x8
|
||||
entity_tree_item 0x250, 0x180, 0x9
|
||||
entity_tree_item 0x280, 0x1C0, 0xA
|
||||
entity_tree_item 0x380, 0x210, 0xB
|
||||
entity_tree_item 0x370, 0x290, 0xC
|
||||
enemy_octorok x=0x148, y=0x38, bound_x=0xA0, bound_y=0x20, bound_tile_width=0x1A, bound_tile_height=0x16
|
||||
enemy_octorok x=0x118, y=0x98, bound_x=0xA0, bound_y=0x20, bound_tile_width=0x1A, bound_tile_height=0x16
|
||||
enemy_octorok x=0x1B8, y=0x1A8, bound_x=0x160, bound_y=0x160, bound_tile_width=0x1C, bound_tile_height=0x14
|
||||
enemy_octorok x=0x208, y=0x1F8, bound_x=0x1C0, bound_y=0x1B0, bound_tile_width=0x12, bound_tile_height=0xA
|
||||
enemy_octorok x=0x288, y=0x188, bound_x=0x250, bound_y=0x140, bound_tile_width=0xC, bound_tile_height=0x1A
|
||||
enemy_octorok x=0x148, y=0x1E8, bound_x=0x120, bound_y=0x180, bound_tile_width=0x10, bound_tile_height=0x12
|
||||
enemy_octorok x=0xA8, y=0x198, bound_x=0x30, bound_y=0x180, bound_tile_width=0x1A, bound_tile_height=0xC
|
||||
enemy_chuchu x=0x3A0, y=0x1D0, bound_x=0x320, bound_y=0x1D0, bound_tile_width=0x14, bound_tile_height=0xC
|
||||
enemy_chuchu x=0x3A0, y=0x250, bound_x=0x330, bound_y=0x200, bound_tile_width=0x12, bound_tile_height=0xE
|
||||
enemy_chuchu x=0x340, y=0x270, bound_x=0x320, bound_y=0x240, bound_tile_width=0x20, bound_tile_height=0x12
|
||||
enemy_chuchu x=0x380, y=0x2E0, bound_x=0x350, bound_y=0x2B0, bound_tile_width=0xC, bound_tile_height=0xA
|
||||
enemy_chuchu x=0x1A8, y=0x2C8, bound_x=0x190, bound_y=0x2B0, bound_tile_width=0xE, bound_tile_height=0x6
|
||||
enemy_chuchu x=0x280, y=0x2F0, bound_x=0x240, bound_y=0x2C0, bound_tile_width=0xC, bound_tile_height=0xE
|
||||
enemy_chuchu x=0x3B0, y=0x100, bound_x=0x390, bound_y=0xE0, bound_tile_width=0x6, bound_tile_height=0x14
|
||||
enemy_chuchu x=0x248, y=0x2D8, bound_x=0x0, bound_y=0x0, bound_tile_width=0x0, bound_tile_height=0x0
|
||||
enemy_tree_item x=0x120, y=0x60, unknown=0x5
|
||||
enemy_tree_item x=0xE0, y=0xB0, unknown=0x6
|
||||
enemy_tree_item x=0x190, y=0x1A0, unknown=0x7
|
||||
enemy_tree_item x=0x1B0, y=0x1E0, unknown=0x8
|
||||
enemy_tree_item x=0x250, y=0x180, unknown=0x9
|
||||
enemy_tree_item x=0x280, y=0x1C0, unknown=0xA
|
||||
enemy_tree_item x=0x380, y=0x210, unknown=0xB
|
||||
enemy_tree_item x=0x370, y=0x290, unknown=0xC
|
||||
entity_list_end
|
||||
|
||||
gUnk_080F50B0:: @ 080F50B0
|
||||
|
|
|
|||
|
|
@ -432,7 +432,7 @@ SECTIONS {
|
|||
asm/enemy62.o(.text);
|
||||
asm/gyorgFemaleMouth.o(.text);
|
||||
asm/enemy64.o(.text);
|
||||
asm/treeItem.o(.text);
|
||||
src/enemy/treeItem.o(.text);
|
||||
asm/enemy66.o(.text);
|
||||
/* END enemies */
|
||||
asm/code_08049CD4.o(.text);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,98 @@
|
|||
#include "global.h"
|
||||
#include "enemy.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
static bool32 ShouldSpawnTreeItem(Entity*);
|
||||
|
||||
extern u32 sub_080028F4(const u8*);
|
||||
extern void sub_08049CF4(Entity*);
|
||||
|
||||
extern const u8 gUnk_080D29E0[][16];
|
||||
extern const u8 gUnk_080D2AB0[];
|
||||
|
||||
void TreeItem(Entity* this) {
|
||||
Entity* itemEntity;
|
||||
int var0;
|
||||
|
||||
if (this->action == 0) {
|
||||
this->action++;
|
||||
this->field_0x68.HALF.LO = sub_080028F4(gUnk_080D29E0[this->entityType.form]);
|
||||
if (this->field_0x68.HALF.LO > 8) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
if (this->field_0x68.HALF.LO < 8 && GetInventoryValue(0x67) == 0) {
|
||||
this->field_0x68.HALF.LO = 8;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ShouldSpawnTreeItem(this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var0 = this->field_0x68.HALF.LO;
|
||||
if (var0 >= 0) {
|
||||
if (var0 > 7) {
|
||||
if (var0 == 8) {
|
||||
itemEntity = CreateObject(0x40, 0x60, 0);
|
||||
if (itemEntity) {
|
||||
itemEntity->actionDelay = 0;
|
||||
CopyPosition(this, itemEntity);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
itemEntity = CreateObject(0x96, 0x7, gUnk_080D2AB0[var0]);
|
||||
if (itemEntity) {
|
||||
CopyPosition(this, itemEntity);
|
||||
itemEntity->y.HALF.HI += 16;
|
||||
itemEntity->height.HALF.HI = -32;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub_08049CF4(this);
|
||||
DeleteThisEntity();
|
||||
}
|
||||
|
||||
static bool32 ShouldSpawnTreeItem(Entity* this) {
|
||||
int diff;
|
||||
int expectedStateX, expectedStateY;
|
||||
int playerState;
|
||||
|
||||
if (gPlayerEntity.action != 0x6) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
diff = gPlayerEntity.x.HALF.HI - this->x.HALF.HI;
|
||||
expectedStateX = 6;
|
||||
if (diff & 0x8000) {
|
||||
expectedStateX = 2;
|
||||
}
|
||||
|
||||
diff += 40;
|
||||
if ((u16)diff >= 80) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
diff = gPlayerEntity.y.HALF.HI - this->y.HALF.HI;
|
||||
expectedStateY = 0;
|
||||
if (diff & 0x8000) {
|
||||
expectedStateY = 4;
|
||||
}
|
||||
|
||||
diff += 40;
|
||||
if ((u16)diff >= 80) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
playerState = gPlayerEntity.animationState;
|
||||
if ((playerState == 0 && expectedStateY == 0) ||
|
||||
(playerState == 4 && expectedStateY == 4) ||
|
||||
(playerState == 6 && expectedStateX == 6) ||
|
||||
(playerState == 2 && expectedStateX == 2)) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
Loading…
Reference in New Issue