diff options
| author | Tal Hayon <talhayon1@gmail.com> | 2022-02-25 06:21:44 +0200 |
|---|---|---|
| committer | Tal Hayon <talhayon1@gmail.com> | 2022-02-25 06:21:44 +0200 |
| commit | ecaeaabdcae11f4dbd9c07a43e71b3222d61b2d5 (patch) | |
| tree | dda0cab3284d9513dfb2b3f84a78124d30efeff4 /src/object | |
| parent | abe6053a4f3dcaa511035baba764609464eadc46 (diff) | |
Decompile cabinFurniture
Diffstat (limited to 'src/object')
| -rw-r--r-- | src/object/cabinFurniture.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/object/cabinFurniture.c b/src/object/cabinFurniture.c new file mode 100644 index 00000000..d3cff8fa --- /dev/null +++ b/src/object/cabinFurniture.c @@ -0,0 +1,83 @@ +#define NENT_DEPRECATED +#include "entity.h" +#include "room.h" +#include "flags.h" +#include "asm.h" + +typedef struct { + Entity base; + u8 filler[0x18]; + u16 tile; +} CabinFurnitureEntity; + +void CabinFurniture_Init(CabinFurnitureEntity* this); +void nullsub_535(CabinFurnitureEntity* this); +void nullsub_2a(CabinFurnitureEntity* this); +void nullsub_2(CabinFurnitureEntity* this); + +void CabinFurniture(Entity* this) { + static void (*const actionFuncs[])(CabinFurnitureEntity*) = { + CabinFurniture_Init, + nullsub_535, + nullsub_2a, + }; + actionFuncs[this->action]((CabinFurnitureEntity*)this); +} + +void CabinFurniture_Init(CabinFurnitureEntity* this) { + u32 uVar1; + u32 uVar6; + u32 uVar7; + + this->tile = COORD_TO_TILE(super); + uVar1 = super->collisionLayer; + UpdateSpriteForCollisionLayer(super); + switch (super->type) { + case 0: + super->action = 2; + super->spritePriority.b0 = 6; + uVar7 = this->tile; + uVar6 = uVar7 - 1; + SetTile(0x4022, uVar6, uVar1); + SetTile(0x4022, uVar7, uVar1); + SetTile(0x4022, uVar7 + 1, uVar1); + SetTile(0x4022, uVar7 + 0x3f, uVar1); + SetTile(0x4022, uVar7 + 0x40, uVar1); + SetTile(0x4022, uVar7 + 0x41, uVar1); + SetTile(0x403d, uVar7 - 0x41, uVar1); + SetTile(0x403d, uVar7 - 0x40, uVar1); + SetTile(0x4026, uVar7 - 0x3f, uVar1); + SetTile(0x4026, uVar7 - 0x81, uVar1); + SetTile(0x4026, uVar7 - 0x80, uVar1); + break; + case 1: + super->action = 1; + uVar6 = this->tile; + SetTile(0x4022, uVar6, uVar1); + SetTile(0x4022, uVar6 + 0x40, uVar1); + SetTile(0x4025, uVar6 + 0x41, uVar1); + if (CheckLocalFlag(0x4f) == 0) { + SetTile(0x402f, uVar6 + 1, uVar1); + } else { + SetTile(0x402d, uVar6 + 1, uVar1); + } + break; + case 2: + super->action = 1; + uVar7 = this->tile; + uVar6 = uVar7 - 0x41; + SetTile(0x4022, uVar6, uVar1); + SetTile(0x4022, uVar7 - 0x40, uVar1); + SetTile(0x4022, uVar7 - 1, uVar1); + SetTile(0x4022, uVar7, uVar1); + break; + } +} + +void nullsub_535(CabinFurnitureEntity* this) {} + +void nullsub_2a(CabinFurnitureEntity* this) { + nullsub_2(this); +} + +void nullsub_2(CabinFurnitureEntity* this) {} |
