object86.c OK

This commit is contained in:
theo3
2020-07-08 19:45:04 -07:00
parent 6f08201b71
commit bde7b45adb
8 changed files with 365 additions and 630 deletions
+110 -112
View File
@@ -1,3 +1,4 @@
// clang-format off
#ifndef ENTITY_H
#define ENTITY_H
@@ -39,118 +40,115 @@ union SplitHWord {
} PACKED;
typedef struct Entity {
u32* field_0x0;
u32* field_0x4;
EntityType entityType;
u8 action;
u8 previousActionFlag;
u8 actionDelay;
u8 field_0xf;
u8 flags;
u8 scriptedScene : 4;
u8 scriptedScene2 : 4;
s16 spriteTileSize;
u8 animationState;
u8 direction;
u8 possibleBool;
u8 field_0x17;
union {
u8 raw;
struct {
u8 ss0 : 2;
u8 ss2 : 1;
u8 ss3 : 1;
u8 ss4 : 1;
u8 ss5 : 1;
u8 ss6 : 1;
u8 ss7 : 1;
} PACKED b;
} PACKED spriteSettings;
struct {
u8 b0 : 2;
u8 b1 : 2;
u8 b2 : 2;
u8 b3 : 2;
} PACKED spriteOrder;
u8 palette;
struct {
u8 b0 : 4;
u8 b1 : 2;
u8 b2 : 2;
} PACKED spriteOrientation;
u8 filler[1];
u8 field_0x1d;
u8 frameIndex;
u8 lastFrameIndex;
s32 field_0x20;
s16 nonPlanarMovement;
u8 spriteAnimation[3];
struct {
u8 b0 : 3;
u8 b1 : 3;
u8 b2 : 2;
} PACKED ticks;
u16 collisions;
union SplitWord x;
union SplitWord y;
union SplitWord height; // todo
u8 collisionLayer;
s8 interactType;
u8 field_0x3a;
u8 flags2;
u8 field_0x3c;
u8 field_0x3d;
u8 field_0x3e;
u8 damageType;
u8 field_0x40;
u8 bitfield;
u8 field_0x42;
u8 field_0x43;
u8 field_0x44;
u8 currentHealth;
s16 field_0x46;
BoundingBox* boundingBox;
u8 field_0x4c;
u8 field_0x4d;
u8 field_0x4e;
u8 field_0x4f;
struct Entity* parent;
struct Entity* attachedEntity;
u8 animIndex;
u8 frameDuration;
union {
u8 all;
struct {
u8 f0 : 1;
u8 f1 : 5;
u8 f2 : 1;
u8 f3 : 1;
} PACKED b;
} PACKED frames;
u8 frameSpriteSettings;
Frame* animPtr;
u16 spriteVramOffset;
u8 spriteOffsetX;
u8 spriteOffsetY;
u32* otherEntity;
u8 field_0x68;
u8 field_0x69;
union SplitHWord field_0x6a;
u8 field_0x6c;
u8 field_0x6d;
u8 filler4[6];
u16 field_0x74;
u16 field_0x76;
union SplitHWord field_0x78;
u16 field_0x7a;
union SplitWord field_0x7c;
u16 field_0x80;
u16 field_0x82;
union SplitHWord cutsceneBeh;
u16 field_0x86;
/*0x00*/ u32* field_0x0;
/*0x04*/ u32* field_0x4;
/*0x08*/ EntityType entityType;
/*0x0c*/ u8 action;
/*0x0d*/ u8 previousActionFlag;
/*0x0e*/ u8 actionDelay;
/*0x0f*/ u8 field_0xf;
/*0x10*/ u8 flags;
/*0x11*/ u8 scriptedScene : 4;
/* */ u8 scriptedScene2 : 4;
/*0x12*/ s16 spriteTileSize;
/*0x14*/ u8 animationState;
/*0x15*/ u8 direction;
/*0x16*/ u8 possibleBool;
/*0x17*/ u8 field_0x17;
/*0x18*/ union {
/* */ u8 raw;
/* */ struct {
/* */ u8 ss0 : 2;
/* */ u8 ss2 : 1;
/* */ u8 ss3 : 1;
/* */ u8 ss4 : 1;
/* */ u8 ss5 : 1;
/* */ u8 ss6 : 1;
/* */ u8 ss7 : 1;
/* */ } PACKED b;
/* */ } PACKED spriteSettings;
/*0x19*/ struct {
/* */ u8 b0 : 2;
/* */ u8 b1 : 2;
/* */ u8 b2 : 2;
/* */ u8 b3 : 2;
/* */ } PACKED spriteOrder;
/*0x1a*/ u8 palette;
/*0x1b*/ struct {
/* */ u8 b0 : 4;
/* */ u8 b1 : 2;
/* */ u8 b2 : 2;
/* */ } PACKED spriteOrientation;
/*0x1c*/ u8 filler[1];
/*0x1d*/ u8 field_0x1d;
/*0x1e*/ u8 frameIndex;
/*0x1f*/ u8 lastFrameIndex;
/*0x20*/ s32 field_0x20;
/*0x24*/ s16 nonPlanarMovement;
/*0x26*/ u8 spriteAnimation[3];
/*0x29*/ struct {
/* */ u8 b0 : 3;
/* */ u8 b1 : 3;
/* */ u8 b2 : 2;
/* */ } PACKED ticks;
/*0x2a*/ u16 collisions;
/*0x2c*/ union SplitWord x;
/*0x30*/ union SplitWord y;
/*0x34*/ union SplitWord height; // todo
/*0x38*/ u8 collisionLayer;
/*0x39*/ s8 interactType;
/*0x3a*/ u8 field_0x3a;
/*0x3b*/ u8 flags2;
/*0x3c*/ u8 field_0x3c;
/*0x3d*/ u8 hurtBlinkTime;
/*0x3e*/ u8 field_0x3e;
/*0x3f*/ u8 damageType;
/*0x40*/ u8 field_0x40;
/*0x41*/ u8 bitfield;
/*0x42*/ u8 field_0x42;
/*0x43*/ u8 field_0x43;
/*0x44*/ u8 field_0x44;
/*0x45*/ u8 currentHealth;
/*0x46*/ s16 field_0x46;
/*0x48*/ BoundingBox* boundingBox;
/*0x4c*/ u8 field_0x4c;
/*0x4d*/ u8 field_0x4d;
/*0x4e*/ u8 field_0x4e;
/*0x4f*/ u8 field_0x4f;
/*0x50*/ struct Entity* parent;
/*0x54*/ struct Entity* attachedEntity;
/*0x58*/ u8 animIndex;
/*0x59*/ u8 frameDuration;
/*0x5a*/ union {
/* */ u8 all;
/* */ struct {
/* */ u8 f0 : 1;
/* */ u8 f1 : 5;
/* */ u8 f2 : 1;
/* */ u8 f3 : 1;
/* */ } PACKED b;
/* */ } PACKED frames;
/*0x5b*/ u8 frameSpriteSettings;
/*0x5c*/ Frame* animPtr;
/*0x60*/ u16 spriteVramOffset;
/*0x62*/ u8 spriteOffsetX;
/*0x64*/ u8 spriteOffsetY;
/*0x64*/ u32* otherEntity;
/*0x68*/ u8 field_0x68;
/*0x69*/ u8 field_0x69;
/*0x6a*/ union SplitHWord field_0x6a;
/*0x6c*/ u8 field_0x6c;
/*0x6d*/ u8 field_0x6d;
/*0x6e*/ u8 filler4[6];
/*0x74*/ u16 field_0x74;
/*0x76*/ u16 field_0x76;
/*0x78*/ union SplitHWord field_0x78;
/*0x7a*/ u16 field_0x7a;
/*0x7c*/ union SplitWord field_0x7c;
/*0x80*/ u16 field_0x80;
/*0x82*/ u16 field_0x82;
/*0x84*/ union SplitHWord cutsceneBeh;
/*0x86*/ u16 field_0x86;
} Entity;
#define COORD_TO_TILE(entity) \