From 3a7c596558266045345717e04cddd103d4c517fc Mon Sep 17 00:00:00 2001 From: Henny022p Date: Fri, 26 Nov 2021 06:15:24 +0100 Subject: [PATCH] clean up TreeItem a bit --- data/const/enemy/treeItem.s | 23 ---------------- linker.ld | 2 +- src/enemy/treeItem.c | 54 +++++++++++++++++++++++-------------- 3 files changed, 35 insertions(+), 44 deletions(-) delete mode 100644 data/const/enemy/treeItem.s diff --git a/data/const/enemy/treeItem.s b/data/const/enemy/treeItem.s deleted file mode 100644 index 4f593c92..00000000 --- a/data/const/enemy/treeItem.s +++ /dev/null @@ -1,23 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080D29E0:: @ 080D29E0 - .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 - .byte 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x00, 0x00, 0x00, 0x00 diff --git a/linker.ld b/linker.ld index 486ed6d5..290d527a 100644 --- a/linker.ld +++ b/linker.ld @@ -1174,7 +1174,7 @@ SECTIONS { data/const/enemy/gyorgFemaleMouth.o(.rodata); data/animations/enemy/gyorgFemaleMouth.o(.rodata); data/const/enemy/enemy64.o(.rodata); - data/const/enemy/treeItem.o(.rodata); + src/enemy/treeItem.o(.rodata); data/const/enemy/enemy66.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); diff --git a/src/enemy/treeItem.c b/src/enemy/treeItem.c index acacb7a3..290cac38 100644 --- a/src/enemy/treeItem.c +++ b/src/enemy/treeItem.c @@ -9,22 +9,36 @@ 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[]; +const u8 gTreeItemDropTables[][16] = { + { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }, +}; +const u8 gTreeItemDrops[] = { 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x00, 0x00, 0x00, 0x00 }; + +#define FAIRY_INDEX 8 void TreeItem(Entity* this) { Entity* itemEntity; - int var0; if (this->action == 0) { this->action++; - this->field_0x68.HALF.LO = sub_080028F4(gUnk_080D29E0[this->type]); - if (this->field_0x68.HALF.LO > 8) { + this->field_0x68.HALF.LO = sub_080028F4(gTreeItemDropTables[this->type]); + if (this->field_0x68.HALF.LO > FAIRY_INDEX) { DeleteThisEntity(); } - - if (this->field_0x68.HALF.LO < 8 && GetInventoryValue(0x67) == 0) { - this->field_0x68.HALF.LO = 8; + if (this->field_0x68.HALF.LO < FAIRY_INDEX && GetInventoryValue(0x67 /*KinstoneBag*/) == 0) { + this->field_0x68.HALF.LO = FAIRY_INDEX; } } @@ -32,24 +46,24 @@ void TreeItem(Entity* this) { return; } - var0 = this->field_0x68.HALF.LO; - if (var0 >= 0) { - if (var0 > 7) { - if (var0 == 8) { - itemEntity = CreateObject(FAIRY, 0x60, 0); - if (itemEntity) { - itemEntity->actionDelay = 0; - CopyPosition(this, itemEntity); - } + switch (this->field_0x68.HALF.LO) { + case FAIRY_INDEX: + itemEntity = CreateObject(FAIRY, 0x60, 0); + if (itemEntity) { + itemEntity->actionDelay = 0; + CopyPosition(this, itemEntity); } - } else { - itemEntity = CreateObject(OBJECT_96, 0x7, gUnk_080D2AB0[var0]); + break; + case 0 ...(FAIRY_INDEX - 1): + itemEntity = CreateObject(OBJECT_96, 0x7, gTreeItemDrops[this->field_0x68.HALF.LO]); if (itemEntity) { CopyPosition(this, itemEntity); itemEntity->y.HALF.HI += 16; itemEntity->z.HALF.HI = -32; } - } + break; + default: + break; } sub_08049CF4(this);