clean up TreeItem a bit

This commit is contained in:
Henny022p 2021-11-26 06:15:24 +01:00
parent d572b9b64c
commit 3a7c596558
3 changed files with 35 additions and 44 deletions

View File

@ -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

View File

@ -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);

View File

@ -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);