This commit is contained in:
21aslade
2020-08-23 13:24:39 -06:00
622 changed files with 72091 additions and 88604 deletions
+17 -2
View File
@@ -3,16 +3,31 @@
#include "global.h"
typedef struct {
u8 areaMetadata;
u8 locationIndex;
u8 unk;
u16 localFlagOffset;
u8 filler[19];
u8 filler[10];
u16 field_0x10;
u16 field_0x12;
u16 field_0x14;
u8 field_0x16;
u8 field_0x17;
u8 field_0x18;
//u8 filler3[7];
u8 fadeOut;
u8 filler2[14];
u8 filler4[0x835];
u32 musicIndex;
u32 pMusicIndex;
u8 filler5[0x20];
u32 unk2;
u32 unk3;
u32 unk4;
} Area;
extern Area gArea;
#endif
#endif
+3 -2
View File
@@ -4,8 +4,6 @@
#include "global.h"
#include "entity.h"
extern u32 GetNextFunction(Entity*);
extern void Octorok(Entity*);
extern void Chuchu(Entity*);
extern void Leever(Entity*);
@@ -109,4 +107,7 @@ extern void GyorgFemaleMouth(Entity*);
extern void Enemy64(Entity*);
extern void TreeItem(Entity*);
extern void Enemy66(Entity*);
extern u32 GetNextFunction(Entity*);
extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*));
#endif
+133 -134
View File
@@ -1,3 +1,4 @@
// clang-format off
#ifndef ENTITY_H
#define ENTITY_H
@@ -24,147 +25,129 @@ typedef struct {
u8 unknown2[4];
} BoundingBox;
union SplitWord {
s32 WORD;
struct {
s16 LO, HI;
} HALF;
};
union SplitHWord {
u16 HWORD;
struct {
u8 LO, HI;
} PACKED HALF;
} 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*/ struct Entity* prev;
/*0x04*/ struct Entity* next;
/*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 spriteIndex;
/*0x14*/ u8 animationState;
/*0x15*/ u8 direction;
/*0x16*/ u8 field_0x16;
/*0x17*/ u8 field_0x17;
/*0x18*/ union {
/* */ u8 raw;
/* */ struct {
/* */ u8 draw : 2; // 1-2
/* */ u8 ss2 : 1; // 4
/* */ u8 ss3 : 1; // 8
/* */ u8 shadow : 2; //0x10-0x20
/* */ u8 flipX : 1; //0x40
/* */ u8 flipY : 1; //0x80
/* */ } PACKED b;
/* */ } PACKED spriteSettings;
/*0x19*/ struct {
/* */ u8 b0 : 2; // 1-2
/* */ u8 alphaBlend : 2; // 4-8
/* */ u8 b2 : 2; //0x10
/* */ u8 b3 : 2; //0x40
/* */ } PACKED spriteRendering;
/*0x1a*/ union {
/* */ u8 raw;
/* */ struct {
/* */ u8 b0 : 4;
/* */ u8 b4 : 4;
/* */ } PACKED b;
/* */} PACKED palette;
/*0x1b*/ struct {
/* */ u8 b0 : 4;
/* */ u8 flipX : 2; //0x10
/* */ u8 flipY : 2; //0x40
/* */ } PACKED spriteOrientation;
/*0x1c*/ u8 field_0x1c;
/*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; // 1-4
/* */ u8 b1 : 3; // 8
/* */ u8 b2 : 2; //0x40
/* */ } PACKED spritePriority;
/*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*/ s8 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; //0x40
/* */ u8 f3 : 1; //0x80
/* */ } PACKED b;
/* */ } PACKED frames;
/*0x5b*/ u8 frameSpriteSettings;
/*0x5c*/ Frame* animPtr;
/*0x60*/ u16 spriteVramOffset;
/*0x62*/ u8 spriteOffsetX;
/*0x63*/ u8 spriteOffsetY;
/*0x64*/ u32* otherEntity;
/*0x68*/ union SplitHWord field_0x68;
/*0x6a*/ union SplitHWord field_0x6a;
/*0x6c*/ union SplitHWord field_0x6c;
/*0x6e*/ u8 filler4[2];
/*0x70*/ union SplitWord field_0x70;
/*0x74*/ union SplitHWord field_0x74;
/*0x76*/ union SplitHWord field_0x76;
/*0x78*/ union SplitHWord field_0x78;
/*0x7a*/ union SplitHWord field_0x7a;
/*0x7c*/ union SplitWord field_0x7c;
/*0x80*/ union SplitHWord field_0x80;
/*0x82*/ union SplitHWord field_0x82;
/*0x84*/ union SplitHWord cutsceneBeh;
/*0x86*/ u16 field_0x86;
} Entity;
#define COORD_TO_TILE(entity) \
((((entity->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
(((entity->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
extern void InitializeAnimation(Entity*, u32);
extern void InitAnimationForceUpdate(Entity*, u32);
extern void UpdateAnimationSingleFrame(Entity*);
extern void UpdateSpriteOrderAndFlip(Entity*);
extern void GetNextFrame(Entity*);
extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*);
extern void SetExtraSpriteFrame(Entity*, u32, u32);
extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32);
#define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \
((((entity->x.HALF.HI - xOff - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
(((entity->y.HALF.HI - yOff - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
extern Entity* CreateEnemy(u32 subtype, u32 form);
extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter);
@@ -172,4 +155,20 @@ extern Entity* CreateNPC(u32 subtype, u32 form, u32 parameter);
extern Entity* CreateObjectWithParent(Entity* parent, u32 subtype, u32 form, u32 parameter);
extern Entity* CreateFx(Entity* parent, u32 form, u32 parameter);
extern void InitializeAnimation(Entity*, u32);
extern void InitAnimationForceUpdate(Entity*, u32);
extern void UpdateAnimationSingleFrame(Entity*);
extern void UpdateSpriteForCollisionLayer(Entity*);
extern void GetNextFrame(Entity*);
extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*);
extern void SetExtraSpriteFrame(Entity*, u32, u32);
extern void SetSpriteSubEntryOffsetData1(Entity*, u32, u32);
extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32);
extern u32 GetFacingDirection(Entity*, Entity*);
extern void DeleteThisEntity();
extern Entity gUnk_03003DA0;
#endif
+104
View File
@@ -28,4 +28,108 @@ void SetRoomFlag(u32);
extern u32 gGlobalFlags;
extern u32 gRoomFlags;
enum {
NONE,
/*0x01*/ LV0_CLEAR, /* */
/*0x02*/ LV1_CLEAR, /* */
/*0x03*/ LV2_CLEAR, /* */
/*0x04*/ LV3_CLEAR, /* */
/*0x05*/ LV4_CLEAR, /* */
/*0x06*/ LV5_CLEAR, /* */
/*0x07*/ LV6_CLEAR, /* */
/*0x08*/ LV7_CLEAR, /* */
/*0x09*/ LV8_CLEAR, /* */
/*0x0a*/ MACHI_SET_1, /* Defeated Big Green Chuchu */
/*0x0b*/ MACHI_SET_2, /* Defeated Gleerok */
/*0x0c*/ MACHI_SET_3, /* */
/*0x0d*/ MACHI_SET_4, /* Defeated Big Octorok */
/*0x0e*/ MACHI_SET_5, /* Defeated Gyorg Pair */
/*0x0f*/ MACHI_SET_6, /* */
/*0x10*/ MACHI_SET_7, /* */
/*0x11*/ MACHI_SET_8, /* */
/*0x12*/ MACHI_MACHIHOKORI, /* Sucked dust from carpet */
/*0x13*/ START, /* Met Zelda */
/*0x14*/ EZERO_1ST, /* Met Ezlo */
/*0x15*/ TABIDACHI, /* Talked to Daltus and Smith */
/*0x16*/ LV1TARU, /* */
/*0x17*/ LV1TARU_OPEN, /* Sucked barrel web */
/*0x18*/ TATEKAKE_HOUSE, /* Red house complete */
/*0x19*/ TATEKAKE_TOCHU, /* Red house frame */
/*0x1a*/ WATERBEAN_OUT, /* Holding bean */
/*0x1b*/ WATERBEAN_PUT, /* Threw bean in hole */
/*0x1c*/ ZELDA_CHASE, /* Enter town festival */
/*0x1d*/ INLOCK, /* Gave key to Talon */
/*0x1e*/ DASHBOOTS, /* Read Castor Wilds sign */
/*0x1f*/ LEFT_DOOR_OPEN, /* Spoke to Dr. Left */
/*0x20*/ HAKA_KEY_LOST, /* Graveyard key stolen */
/*0x21*/ HAKA_KEY_FOUND, /* Graveyard key obtained back */
/*0x22*/ ENTRANCE_OK, /* */
/*0x23*/ TATSUMAKI, /* */
/*0x24*/ KUMOTATSUMAKI, /* Vortex spawned */
/*0x25*/ KAITENGIRI, /* */
/*0x26*/ DAIKAITENGIRI, /* */
/*0x27*/ GATOTSU, /* */
/*0x28*/ KABUTOWARI, /* */
/*0x29*/ MIZUKAKI_START, /* Spoke to Lake Hylia Minish */
/*0x2a*/ MIZUKAKI_HARIFALL, /* Library book falling */
/*0x2b*/ RENTED_HOUSE_DIN, /* Din moves to blue house */
/*0x2c*/ RENTED_HOUSE_NAYRU, /* Nayru moves to blue house */
/*0x2d*/ RENTED_HOUSE_FARORE, /* Farore moves to blue house */
/*0x2e*/ NEW_HOUSE_DIN, /* Din moves to red house */
/*0x2f*/ NEW_HOUSE_NAYRU, /* Nayru moves to red house */
/*0x30*/ NEW_HOUSE_FARORE, /* Farore moves to red house */
/*0x31*/ OUGONTEKI_A, /* Golden Octorok defeated */
/*0x32*/ OUGONTEKI_B, /* Golden Tektite defeated */
/*0x33*/ OUGONTEKI_C, /* Golden Rope defeated */
/*0x34*/ OUGONTEKI_D, /* Golden Rope defeated */
/*0x35*/ OUGONTEKI_E, /* Golden Rope defeated */
/*0x36*/ OUGONTEKI_F, /* Golden Tektite defeated */
/*0x37*/ OUGONTEKI_G, /* Golden Tektite defeated */
/*0x38*/ OUGONTEKI_H, /* Golden Octorok defeated */
/*0x39*/ OUGONTEKI_I, /* Golden Octorok defeated */
/*0x3a*/ KAKERA_COMPLETE, /* All fusions complete */
/*0x3b*/ DRUG_1, /* Yellow pico bloomed */
/*0x3c*/ DRUG_2, /* Blue pico bloomed */
/*0x3d*/ DRUG_3, /* Orange pico bloomed */
/*0x3e*/ GORON_KAKERA_LV2, /* Goron merchant restock 1 */
/*0x3f*/ GORON_KAKERA_LV3, /* Goron merchant restock 2 */
/*0x40*/ GORON_KAKERA_LV4, /* Goron merchant restock 3 */
/*0x41*/ GORON_KAKERA_LV5, /* Goron merchant restock 4 */
/*0x42*/ GORON_KAKERA_L, /* Red kinstone sold out */
/*0x43*/ GORON_KAKERA_M, /* Blue kinstone sold out */
/*0x44*/ GORON_KAKERA_R, /* Green kinstone sold out */
/*0x45*/ CHIKATSURO_SHUTTER, /* Castle basement door open */
/*0x46*/ ENTRANCE_USED, /* */
/*0x47*/ GOMAN_RENTED_HOUSE, /* Spoke to Gorman blue house */
/*0x48*/ GOMAN_NEW_HOUSE, /* Spoke to Gorman red house */
/*0x49*/ OUTDOOR, /* Exited Link's house */
/*0x4a*/ POWERGLOVE_HINT, /* Spoke to Dr. Left Minish */
/*0x4b*/ ANJU_LV_BIT0, /* Cucco game 1 bit */
/*0x4c*/ ANJU_LV_BIT1, /* Cucco game 2 bit */
/*0x4d*/ ANJU_LV_BIT2, /* Cucco game 4 bit */
/*0x4e*/ ANJU_LV_BIT3, /* Cucco game 8 bit */
/*0x4f*/ ANJU_HEART, /* Cucco heart piece */
/*0x50*/ MAROYA_WAKEUP, /* */
/*0x51*/ ENDING, /* Vaati's wrath defeated */
/*0x52*/ WARP_1ST, /* Wind ocarina unlocked */
/*0x53*/ WARP_MONUMENT, /* First windcrest discovered */
/*0x54*/ DRUG_COUNT, /* Pico bloom minish items */
/*0x55*/ GAMECLEAR, /* Watched end cutscene */
/*0x56*/ WHITE_SWORD_END, /* Exit mines with white sword */
/*0x57*/ SOUGEN_06_HASHIGO, /* Boomerang cave ladder */
/*0x58*/ WARP_EVENT_END, /* Wind tribe tower state */
/*0x59*/ FIGURE_ALLCOMP, /* Obtained Carlov Medal */
/*0x5a*/ AKINDO_BOTTLE_SELL, /* Bought bottle from scrub */
/*0x5b*/ BIN_DOGFOOD, /* */
/*0x5c*/ TINGLE_TALK1ST, /* Spoke to Tingle */
/*0x5d*/ SEIIKI_BGM, /* Elemental sanctuary BGM */
/*0x5e*/ ENTRANCE_0, /* Trunk entrance cutscene */
/*0x5f*/ ENTRANCE_1, /* Rock entrance cutscene */
/*0x60*/ ENTRANCE_2, /* Pot entrance cutscene */
/*0x61*/ MIZUKAKI_NECHAN, /* Spoke to librarian */
/*0x62*/ MAZE_CLEAR, /* Cleared Castle maze */
/*0x63*/ TINY_ENTRANCE, /* Ezlo described entrances */
/*0x64*/ CASTLE_BGM, /* Castle intro BGM */
};
#endif
+193 -9
View File
@@ -4,7 +4,11 @@
#include "global.h"
#include "entity.h"
#include "manager.h"
#include "position.h"
#include "player.h"
#include "structures.h"
#include "room.h"
// Identified - to be sorted into header files
extern u32 Random(void);
@@ -21,7 +25,25 @@ extern void LoadRoomEntityList();
void CopyPosition(Entity*, Entity*);
extern u32* StartCutscene(Entity*, u8*);
extern void ResolveEntityOnTop(Entity*, Entity*);
extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*));
extern u32 GetAnimationState(Entity*);
extern void SetChildOffset(Entity*, s32, s32, s32);
extern u32 GetFacingDirection(Entity*, Entity*);
extern Entity* CreatePlayerItem(u32, u32, u32, u32);
extern Entity* GetEmptyEntity(void);
extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
extern void _DmaZero(void* src, u32 count);
extern void EraseAllEntities(void);
extern void SetTile(u32, u32, u32);
extern void SetDirtTile(u32);
extern void LoadRoomTileEntities(); //tba
extern Entity* CreateDeathFx(Entity*, u32, u32);
extern void UpdateAnimationVariableFrames(Entity*, u32);
extern void CopyPositionAndSpriteOffset(Entity*, Entity*);
extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32);
extern u32 LoadFixedGFX(Entity*, u32);
extern void ExecuteScriptCommandSet(Entity*, void *);
extern void _DmaFill32(u32, void*, u32);
// Unidentified
extern void sub_0806ED78(Entity*);
@@ -29,7 +51,8 @@ extern void sub_0806920C(Entity*);
extern u32 sub_0805ACC0(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0806924C(Entity*);
extern void sub_080AEF88(Entity*);
extern u32 sub_080AEF88(Entity*);
extern Entity* sub_080873AC(Entity*, u32, u32);
extern void sub_08078778(Entity*);
extern void sub_080787A8(Entity*, u32);
extern void sub_0806F118(Entity*);
@@ -37,21 +60,20 @@ extern void sub_080791D0();
extern void sub_0805EC9C();
extern void sub_0805EC60();
extern void sub_080873D0();
extern void sub_080045D4();
extern void sub_0806F69C();
extern void sub_0805E3A0(Entity*, u32);
extern u8 sub_080045D4(s16, s16, u16, u16);
extern void sub_0806F69C(Entity*);
extern void sub_0805E3A0(void*, u32);
extern void sub_0806D0B0(Entity*);
extern void sub_0807DD64(Entity*);
extern void sub_0807DDAC(Entity*, u32);
extern void sub_0807DDE4(Entity*);
extern void sub_0806D02C(Entity*);
extern u32 sub_0806F5A4(u32);
extern u32 sub_080045C4(Entity*, Entity*);
extern void sub_08078784(Entity*, u32);
extern void sub_0807DD50(Entity*);
extern void sub_0807DD94(Entity*, u32);
extern Entity* sub_0805EB00(u32, u32, u32);
extern Entity* sub_0805EB2C(u32, u32, u32, u32, u32);
extern Entity* FindEntityInListBySubtype(u32, u32, u32);
extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32);
extern s32 sub_0806ED9C(Entity*, u32, u32);
extern void sub_0807000C(Entity*);
extern void sub_0805E47C(Entity*);
@@ -65,10 +87,172 @@ extern void sub_0801D2B4(Entity*, u32);
extern void sub_0806FD3C(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0807DD50(Entity*);
extern u32 sub_080045C4(Entity*, Entity*);
extern void sub_0806F118(Entity*);
extern void sub_0807DD94(Entity*, u32);
extern void sub_0805ED14(u32*);
extern void sub_080A7C18(u32, u32, u32);
extern void sub_08068BEC(Entity*, u32);
extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*));
extern void sub_0804A9FC(Entity*, u32);
extern void sub_0804A720(Entity*);
extern u32 sub_080AEFE0(Entity*);
extern u32 sub_08049FA0(Entity*);
extern u32 sub_08049FDC(Entity*, u32);
extern u32 sub_080041A0(Entity *, Entity *, u32, u32);
extern u32 sub_08049EE4(Entity*);
extern Entity *sub_0804A98C(Entity *, u8, u8);
extern u32 sub_080544DC(u8);
extern void sub_08077E54(Entity*);
extern void sub_080042BA(Entity*);
extern void _DmaZero(void*, u32);
extern void sub_08077F24(ItemBehavior*, u32);
extern void sub_08079184();
extern void sub_08077F50(ItemBehavior *beh, u32 arg1);
extern void sub_0807AA80(Entity*);
extern s32 sub_0807887C(Entity*, u32, u32);
extern s32 sub_08078904();
extern void sub_0805E5A8(void);
extern void sub_0805E5C0(void);
extern void sub_080AD90C(void);
extern void sub_080AD9B0(void);
extern void sub_080AD918(void);
extern void sub_0801E104(void);
extern void MenuFadeIn(u32, u32);
extern void sub_080A57F4(void);
extern void sub_0804B29C(void*);
extern void sub_08030118(u32);
extern void sub_080575C8(u32);
extern void sub_08057688(void);
extern void sub_080580B0(u32);
extern void sub_080751E8(u32, u32, void*);
extern void sub_08052CA4(u32, u32, u32, u32);
extern void sub_08052878(void);
extern void sub_0808091C(ScreenTransitionData*, u32);
extern void sub_0805BC4C(void);
extern void sub_0807BB68(u32*, u32, u32);
extern void sub_08054570(void);
extern void sub_08059278(void);
extern void sub_0804C128(u32);
extern void sub_08058324(u32);
extern void sub_0804C2F0(void);
extern void sub_0801AFE4(void);
extern u32 sub_08060354(void);
extern void sub_08057E64(void);
extern void LoadAssetAsync(void*, u32, u32);
extern void LoadPaletteGroup(u32);
extern void sub_0809F814(u32);
extern void sub_080300E8(void);
extern void sub_0801DA90(u32);
extern void sub_08058D34(void);
extern void sub_0807AABC(Entity*);
extern void sub_08078A90(u32);
extern void sub_080530C8(void);
extern void sub_0805B4D0(u32);
extern void sub_0804D0B4(void);
extern void sub_0805308C(u32);
extern void sub_0805AF60();
extern void sub_0805D3C8(u32);
extern void sub_080534AC();
extern void sub_0807BA8C(u32, u32);
extern void sub_0804D9B0();
extern void sub_0807BB98(u32, u32, u32, u32);
extern void TryLoadPrologueHyruleTown(void);
extern void sub_0801D000(u32);
extern void sub_08018C58(u32);
extern void sub_0804E150(void);
extern void sub_080AF284(void);
extern void sub_080A71C4(u32, u32, u32, u32);
extern void sub_08054564();
extern void sub_0801DD58(u32, u32);
extern void sub_0804ED18();
extern void sub_080AF2E4(void);
extern void sub_0805ADD8(u32);
extern void sub_0804F578(void);
extern void sub_08059994(void);
extern void LoadGfxGroup(u32);
extern s32 sub_0801CFA8(u32);
extern void sub_080A3210(void);
extern void sub_080ADA14(u32, u32);
extern void sub_0801E1B8(u32, u32);
extern void sub_0801E1EC(s32, s32, s32);
extern void sub_08050008(void);
extern void sub_080A3B74(void);
extern void sub_080A4054(void);
extern void sub_0801C1D4(void);
extern void sub_0801C208(void);
extern void sub_080A4D34(void);
extern u32 sub_080A4494(void);
extern void sub_080A4528(void);
extern void sub_080A4398(void);
extern void sub_0801E738(u32);
extern void sub_080A70AC(const void*);
extern void sub_080A7114(u32);
extern void sub_08001242(Entity*);
extern u32 sub_08003FC4(Entity*, u32);
extern u32 sub_080043E8(Entity*);
extern void sub_08001290(Entity*, u32);
extern void sub_08004488(u32);
extern void sub_08004596(Entity*, u32);
extern u32 sub_0807953C(void);
extern void ResetPlayer(void);
extern void sub_080A29BC(Entity*);
extern void sub_080AE068(Entity*);
extern Manager* GetEmptyManager(void);
extern void AppendEntityToList(void*, u32);
extern u32 sub_0800445C(Entity*);
extern void sub_0807A108(void);
extern void sub_0801766C(Entity*);
extern void sub_08004168(Entity*);
extern u32 sub_08052638(u32);
extern void sub_0805616C(void);
extern u32 sub_0807CF08(u32, u8*);
extern void sub_0807CF48(u32);
extern u32 sub_0807CF10(u8 *);
extern void sub_08056208(void);
extern void sub_08050384();
extern void sub_080B1520(u32);
extern struct_0807D1C4* sub_0807D1C4(u32);
extern u32 sub_0807D24C(u32, char*, u32);
extern void sub_0807CF68(u32);
extern void sub_0807D20C(u32, char*, u32);
extern u32 sub_0807CF88(u32, u8*);
extern u32 sub_0807D008(u32, void*);
extern void sub_0807D184(u32, char*);
extern u32 sub_0806F520();
extern void sub_0806F4E8();
extern u32 sub_0806F3E4(Entity*);
extern void sub_0804A7D4(Entity*);
extern void sub_08033744(Entity*);
extern void sub_0800417E(Entity*, u32);
extern void sub_080784C8();
extern void sub_08017640();
extern u32 sub_0808288C(Entity*, u32, u32, u32);
extern void sub_0806FDA0(Entity*);
extern void sub_080AE008(Entity*, u32, u32);
extern u32 sub_08016A30(Entity*);
extern u32 IsItemEquipped(u32);
extern void sub_08077728();
extern void sub_0807AEE4();
extern u32 sub_08078EFC();
extern void sub_0807921C();
extern void sub_0807A1B8();
extern void sub_08079938();
extern void sub_0807ACCC(Entity*);
extern void HandleIntroScreen(void);
extern void HandleChooseFileScreen(void);
extern void HandleGameplayScreen(void);
extern void HandleGameOverScreen(void);
extern void HandleCreditsScreen(void);
extern void HandleDebugTextScreen(void);
extern void sub_080A2BE4(Entity*, u32);
extern u32 sub_08097ADC(Entity*);
extern void sub_08097B24(Entity*);
extern u32 sub_08079F8C(void);
extern void sub_080787CC(Entity*);
extern void sub_080526F8(s32);
extern int sub_0807CF28(u32, SaveFile*);
extern u32 sub_080044EC(Entity*, u32);
extern u32 sub_080002B8(Entity*);
extern u32 sub_08049F84(Entity*, u32);
extern void sub_0802F45C(Entity*);
#endif
+21 -9
View File
@@ -47,16 +47,28 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
struct Coords16
{
s16 x;
s16 y;
} PACKED;
typedef union {
s32 WORD;
struct {
s16 x, y;
} HALF;
} Coords;
struct UCoords16
{
u16 x;
u16 y;
union SplitWord {
s32 WORD;
struct {
s16 LO, HI;
} HALF;
struct {
u8 byte0, byte1, byte2, byte3;
} BYTES;
};
union SplitHWord {
u16 HWORD;
struct {
u8 LO, HI;
} PACKED HALF;
} PACKED;
#endif // GUARD_GLOBAL_H
+14 -17
View File
@@ -15,24 +15,13 @@ extern void sub_0805EC9C();
extern void sub_0805EC60();
extern void sub_080873D0();
extern void DeleteEntity();
extern void sub_080045D4();
extern u32 sub_080045D4();
extern void sub_0806F69C();
extern u32 Random();
enum {
BEHAVIORS,
WINGS,
WAKE,
MINI,
MINIAFFINE,
DROPLET,
RIPPLE,
BIGRIPPLE,
FORM8,
FORM9,
};
extern void sub_0805E3A0(Entity*, u32);
extern Entity* FindEntityInListBySubtype(u32, u32, u32);
extern void sub_080791D0();
extern u32 FindEntityInListByForm(u32, u32, u32, u32, u32);
extern void (*const GreatFairy_Main[])(Entity*);
extern void (*const GreatFairy_Behaviors[])(Entity*);
extern void (*const GreatFairy_WingsBehaviors[])(Entity*);
@@ -49,12 +38,20 @@ extern void (*const gUnk_081207A4[])(Entity*);
extern u32 gUnk_0810C2E4;
extern RoomControls gRoomControls;
extern Entity gLinkEntity;
extern Entity gPlayerEntity;
extern const s16 GreatFairy_RippleOffsets[10];
extern u32 gUnk_02034350;
extern RoomVars gRoomVars;
extern Screen gScreen;
extern u32 gUnk_02033280;
extern u8 gUnk_0812079C[8];
extern s16 gSineTable[];
extern s8 gUnk_081207AC[];
typedef struct {
s32 unk0;
s32 unk4;
} struct_08087424;
#endif
+1 -12
View File
@@ -3,18 +3,7 @@
#include "global.h"
#include "entity.h"
typedef struct {
u8 unk;
u8 behaviorID;
u8 unk2;
u8 unk3;
u8 stateID;
u8 filler[4];
u8 unk4;
u8 filler2[4];
u8 unk5;
} ItemBehavior;
#include "player.h"
void extern DebugItem(ItemBehavior*, u32);
void extern Sword(ItemBehavior*, u32);
+3 -3
View File
@@ -3,7 +3,7 @@
// Lakitu
extern void EnemyFunctionHandler(Entity *, void (*const funcs[])(Entity*));
extern void SetChildOffset(Entity *, u32, u32, u32);
extern void SetChildOffset(Entity *, s32, s32, s32);
// sub_0803C784
extern void sub_0804A9FC(Entity *, u32);
@@ -26,10 +26,10 @@ extern u32 sub_080041A0(Entity *, Entity *, u32, u32);
// sub_0803CAD0
extern u8 sub_080045D4(s16, s16, u16, u16);
extern void sub_080AEFE0(Entity *);
extern u32 sub_080AEFE0(Entity *);
// Lakitu_SpawnLightning
extern void PositionRelative(Entity *, Entity *, u32, u32);
void PositionRelative(Entity*, Entity*, s32, s32);
extern void sub_08004488(u32);
// sub_0803CC08
-83
View File
@@ -1,83 +0,0 @@
#ifndef LINK_H
#define LINK_H
#include "global.h"
#include "entity.h"
typedef struct {
u8 filler[2];
u8 jumpStatus;
u8 filler2[2];
u8 heldObject;
u8 pushedObject;
u8 unk;
u16 unk2;
u8 unk3;
u8 keepFacing;
u8 linkAction;
u8 filler3[2];
u8 hurtBlinkSpeed;
u8 filler4[4];
u16 filler5[3];
u8 filler6[2];
u8 field_0x1c;
u8 filler9[2];
u16 filler7[2];
u8 swimState;
u8 filler8[5];
u8* unk4;
union {
u32 all;
struct {
u32 filler9 : 3;
u32 noMinishCap : 1;
u32 pullingState : 1;
u32 windyState : 1;
u32 filler10 : 4;
u32 slipperyState : 1;
u32 filler11 : 5;
u32 filler11b : 16;
} PACKED b;
} flags;
u8 filler12[6];
u16 unk5;
u8 filler13[2];
u8 swordGoldParticle : 1;
u8 swordBlueParticle : 1;
u8 filler14 : 6;
u8 unk6;
u8 filler15[75];
u8 unk7;
u32 filler16[7];
u8 filler17[3];
u8 unk71;
u32 unk8;
} LinkState;
typedef struct {
u8 walletType;
u8 heartPieces;
u8 health;
u8 maxHealth;
u8 bombCount;
u8 arrowCount;
u8 bombBagType;
u8 quiverType;
u8 filler[4];
u8 itemOnA;
u8 itemOnB;
u8 filler2[10];
u16 rupees;
u8 filler3[12];
} Stats;
extern LinkState gLinkState;
extern Stats gStats;
extern Entity gLinkEntity;
extern u32 GetInventoryValue(u32);
extern s32 ModHealth(s32);
#endif
+58 -25
View File
@@ -11,34 +11,67 @@ typedef struct { // 0x03001000
u8 field_0x9;
u8 field_0xa;
u8 field_0xb;
u32 ticks;
u32 spritePriority;
} MainStruct;
extern s32 sub_08055F70();
extern s32 sub_080A3204(s32);
extern s32 sub_0805616C(s32);
extern s32 sub_0807CE90(s32);
extern s32 sub_080560B8(s32);
extern void sub_08056208(s32);
extern void sub_0804FFE4();
extern s32 sub_0804FF84(s32);
extern s32 sub_08056418(s32);
extern void sub_080ADD30(s32);
extern s32 sub_0801D630(s32, u32, u32);
extern s32 sub_08056010(s32);
extern s32 sub_08016E78(s32);
extern s32 ReadKeyInput();
extern s32 sub_08055FF4(u8);
extern void sub_080560A8();
extern s32 sub_08056260();
enum {
SCREEN_INTRO,
SCREEN_CHOOSE_FILE,
SCREEN_GAMEPLAY,
SCREEN_GAME_OVER,
SCREEN_CREDITS,
SCREEN_DEBUG_TEXT,
};
typedef struct {
u8 interruptFlag;
u8 field_0x1;
u8 screen;
u8 funcIndex;
u8 transition;
u8 field_0x5;
u8 muteAudio;
u8 field_0x7;
u8 countdown;
u8 field_0x9;
u8 field_0xa;
u16 ticks;
} Main;
typedef struct {
/*0x00*/ u16 nextToLoad;
/*0x02*/ u8 transitionType;
/*0x03*/ u8 field_0x3;
/*0x04*/ u8 state;
/*0x05*/ u8 field_0x5;
/*0x06*/ u8 field_0x6;
/*0x07*/ u8 pauseFadeIn;
/*0x08*/ u16 isLoading;
/*0x0A*/ u16 fadeInTime;
/*0x0C*/ u8 fillerC[0x3A8];
} UI;
extern Main gUnk_03001000;
extern UI gUnk_02032EC0;
extern void sub_080A3204(void);
extern void sub_0807CE90(void);
extern void sub_080560B8(void);
extern void sub_08056208(void);
extern void sub_0804FFE4(void);
extern void sub_08056418(void);
extern void sub_080ADD30(void);
extern void InitScreen(u32);
extern void sub_08016E78(void);
extern void ReadKeyInput(void);
extern void DoSoftReset(void);
extern void sub_08056260(void);
extern void VBlankIntrWait();
extern s32 _call_via_r0(s32);
extern s32 sub_08056458(s32);
extern s32 sub_08050154(s32);
extern s32 sub_080A3480(s32);
extern void sub_08056458(void);
extern void sub_08050154(void);
extern void sub_080A3480(void);
extern s32 gUnk_02000010;
extern s32 gRand;
extern MainStruct gUnk_03001000;
extern s32 gUnk_08100CBC;
#endif
+126
View File
@@ -0,0 +1,126 @@
#ifndef MANAGER_H
#define MANAGER_H
#include "global.h"
#include "entity.h"
union SplitSHWord {
s16 SHWORD;
struct {
u8 LO, HI;
} PACKED HALF;
} PACKED;
typedef struct Manager {
/*0x00*/ struct Manager* previous;
/*0x00*/ struct Manager* next;
/*0x08*/ u8 type;
/*0x09*/ u8 subtype;
/*0x0a*/ u8 unk_0a;
/*0x0b*/ u8 unk_0b;
/*0x0c*/ u8 action;
/*0x0d*/ u8 unk_0d;
/*0x0e*/ u8 unk_0e;
/*0x0f*/ u8 unk_0f;
/*0x10*/ u8 unk_10[0x4];
/*0x14*/ struct Manager * parent;
/*0x18*/ u8 unk_18[0x8];
// union SplitHWord unk_20;
// u16 unk_22;
// u16 unk_24;
// u16 unk_26;
// u8 unk_28[0x0D];
// u8 unk_35;
// u16 unk_36;
// union SplitSHWord unk_38;
// union SplitSHWord unk_3a;
// u16 unk_3c;
// u16 unk_3e;
} Manager;
typedef struct {
u16 posX;
u16 posY;
u8 width;
u8 height;
u8 unk_06;
union {
u8 all;
struct {
u8 layer : 2;
u8 unk1 : 2;
u8 unk2 : 1;
u8 unk3 : 3;
} PACKED b;
} PACKED unk_07;
} Manager6WarpData;
typedef struct {
Manager manager;
Manager6WarpData* warpList;
} Manager6;
typedef struct {
Manager manager;
u16 unk_20;
u16 unk_22;
u16 unk_24;
u16 unk_26;
u8 unk_28[0x0D];
u8 unk_35;
u16 unk_36;
u8 unk_38;
u8 unk_39;
u8 unk_3a;
u8 unk_3b;
u16 unk_3c;
u16 unk_3e;
} ManagerA;
typedef struct {
Manager manager;
u8 unk_20;
u8 unk_21[0x14];
u8 unk_35;
u8 unk_36[0x4];
u16 unk_3a;
u16 unk_3c;
u16 unk_3e;
} ManagerB;
typedef struct {
Manager manager;
Entity* enemies[8];
} ManagerBHelper;
typedef struct {
Manager manager;
u8 unk_20[0x18];
s16 unk_38;
s16 unk_3a;
u16 unk_3c;
u16 unk_3e;
} ManagerE;
typedef struct {
u16 unk_00;
u8 source_roomID;
u8 unk_03;
u8 target_areaID;
u8 target_roomID;
u16 unk_06;
} DiggingCaveEntrance;
extern struct {
DiggingCaveEntrance* unk_00;
u16 unk_04;
u16 unk_06;
u8 unk_08;
u8 unk_09;
u8 unk_0a;
u8 unk_0b;
} gUnk_03004030;
extern DiggingCaveEntrance* gUnk_08107DC0[];
#endif
+24
View File
@@ -15,6 +15,30 @@ typedef struct {
u16 fadeInTime;
u8 filler2[4];
u32 filler3[3];
} MenuControls;
typedef struct {
u8 field_0x0;
u8 field_0x1;
u8 field_0x2;
u8 field_0x3;
u8 field_0x4;
u8 menuType;
u8 overlayType;
u8 storyPanelIndex;
u16 transitionTimer;
u16 field_0xa;
u8 field_0xc[0x4];
u8 unk10[2];
u8 field_0x12;
u8 unk13;
u8 filler14[0x2];
u8 unk16;
u8 filler17[0x13];
u8 unk2a;
int field_0x2c;
} Menu;
extern Menu gMenu;
#endif
+3 -1
View File
@@ -1,5 +1,6 @@
#include "global.h"
#include "entity.h"
#include "player.h"
#ifndef NPC_H
#define NPC_H
@@ -169,7 +170,8 @@ extern void Phonograph(Entity*);
extern void NPC58(Entity*);
extern void NPC58_Head(Entity*);
extern u32 UpdateFuseInteraction(Entity*);
extern void ShowNPCDialogue(Entity*, u32*);
#endif
+1 -1
View File
@@ -64,7 +64,7 @@ extern void JarPortal(Entity*);
extern void BossDoor(Entity*);
extern void Object3A(Entity*);
extern void MacroMushromStalks(Entity*);
extern void MacroLink(Entity*);
extern void MacroPlayer(Entity*);
extern void Object3D(Entity*);
extern void Object3E(Entity*);
extern void GiantLeaf(Entity*);
+113
View File
@@ -0,0 +1,113 @@
// clang-format off
#ifndef PLAYER_H
#define PLAYER_H
#include "global.h"
#include "entity.h"
typedef struct {
/*0x00*/ u8 field_0x0[2];
/*0x02*/ u8 jumpStatus;
/*0x03*/ u8 field_0x3[2];
/*0x05*/ u8 heldObject;
/*0x06*/ u8 pushedObject;
/*0x07*/ u8 field_0x7;
/*0x08*/ u16 field_0x8;
/*0x0a*/ u8 field_0xa;
/*0x0b*/ u8 keepFacing;
/*0x0c*/ u8 playerAction;
/*0x0d*/ u8 field_0xd[2];
/*0x0f*/ u8 hurtBlinkSpeed;
/*0x10*/ u8 field_0x10[4];
/*0x11*/ u8 field_0x14;
/*0x11*/ u8 field_0x15;
/*0x14*/ u16 field_0x16[2];
/*0x1a*/ u8 field_0x1a[2];
/*0x1c*/ u8 field_0x1c;
/*0x1d*/ u8 field_0x1d[5];
/*0x22*/ u16 field_0x22[2];
/*0x26*/ u8 swimState;
/*0x27*/ u8 field_0x27[5];
/*0x2c*/ u8* field_0x2c;
/*0x30*/ union {
/* */ u32 all;
/* */ struct {
/* */ u32 filler9 : 3;
/* */ u32 noMinishCap : 1;
/* */ u32 pullingState : 1;
/* */ u32 windyState : 1;
/* */ u32 filler6 : 1;
/* */ u32 unk7 : 1;
/* */ u32 filler8 : 2;
/* */ u32 slipperyState : 1;
/* */ u32 filler11 : 5;
/* */ u32 filler11b : 16;
/* */ } PACKED b;
/* */ } flags;
/*0x34*/ u8 field_0x34[6];
/*0x3a*/ u16 field_0x3a;
/*0x3c*/ u8 field_0x3c[2];
/*0x3e*/ u8 swordGoldParticle : 1;
/* */ u8 swordBlueParticle : 1;
/* */ u8 filler14 : 6;
/*0x3f*/ u8 field_0x3f;
/*0x40*/ u8 field_0x40[75];
/*0x8b*/ u8 field_0x8b;
/*0x8c*/ u32 field_0x8c;
/*0x90*/ union SplitWord field_0x90;
/*0x94*/ u32 field_0x94[5];
/*0xa8*/ u8 field_0xa8;
/*0xa9*/ u8 field_0xa9;
/*0xaa*/ u8 field_0xaa;
/*0xab*/ u8 field_0xab;
/*0xac*/ u32 field_0xac;
} PlayerState;
typedef struct {
u8 walletType;
u8 heartPieces;
u8 health;
u8 maxHealth;
u8 bombCount;
u8 arrowCount;
u8 bombBagType;
u8 quiverType;
u8 filler[4];
u8 itemOnA;
u8 itemOnB;
u8 filler2[10];
u16 rupees;
u8 field_0x1a;
u8 field_0x1b;
u8 field_0x1c;
u8 field_0x1d;
u8 field_0x1e;
u8 field_0x1f;
u16 field_0x20;
u8 filler4[4];
} Stats;
typedef struct {
/*0x0*/ u8 field_0x0;
/*0x1*/ u8 behaviorID;
/*0x2*/ u8 field_0x2[2];
/*0x4*/ u8 stateID;
/*0x5*/ u8 field_0x5[10];
/*0xf*/ u8 field_0xf;
} ItemBehavior;
extern u8 gBombBagSizes[];
extern PlayerState gPlayerState;
extern Stats gStats;
extern Entity gPlayerEntity;
extern u32 GetInventoryValue(u32);
extern s32 ModHealth(s32);
extern void ModRupees(s32);
#endif
// clang-format on
+1
View File
@@ -9,5 +9,6 @@ void PositionEntityOnTop(Entity*, Entity*);
void PositionRelative(Entity*, Entity*, s32, s32);
void sub_0806FA90(Entity*, Entity*, s32, s32);
void ResolveEntityOnTop(Entity*, Entity*);
void sub_0806FAD8(Entity*, Entity*);
#endif
+8 -8
View File
@@ -1,9 +1,9 @@
struct Input {
u16 unk0;
u16 unk1;
u16 unk2;
u8 unk3;
u8 unk4;
};
typedef struct {
u16 heldKeys;
u16 newKeys;
u16 unk4;
u8 unk6;
u8 unk7;
} Input;
// void ReadKeyInput(void);
extern Input gUnk_03000FF0;
+19 -7
View File
@@ -29,14 +29,17 @@ typedef struct {
u16 screenShakeTime;
u16 filler2[6];
u8 filler3[4];
u16 filler4[4];
union SplitWord bg3OffsetX;
union SplitWord bg3OffsetY;
Entity* cameraTarget;
} RoomControls;
typedef struct {
u8 filler[6];
u8 itemForSaleIndex;
u16 unk;
u8 field_0x7;
u8 field_0x8;
u8 field_0x9;
u8 unk2;
u16 filler2[3];
u32 roomFlags;
@@ -44,15 +47,24 @@ typedef struct {
u8 filler4[48];
u8 filler5[28];
u32 greatFairyState;
u32* field_0x6c;
u32* field_0x70;
u32* field_0x74;
u32 field_0x78;
u8 field_0x79[10];
void* field_0x88;
} RoomVars;
//Packets used to store which entities to load in a room
typedef struct {
u8 entityType;
u8 field_0x1;
u8 entitySubtype;
u8 entityform;
u32 entityparameter;
u8 type : 4;
u8 layer : 4;
u8 flags : 4;
u8 unk : 4;
u8 subtype;
u8 form;
u32 parameter;
u16 xPos;
u16 yPos;
u32 spritePtr;
+22 -11
View File
@@ -4,17 +4,25 @@
#include "global.h"
typedef struct {
u16 lcdControl2;
u32 unk;
u16 lcdControl1;
u16 displayControl;
u8 filler2[0x2];
u16 unk4;
u16 unk6;
} LcdControls;
typedef struct {
u16 bg0Control;
u16 bg1Control;
u16 bg2Control;
u16 bg3Control;
u16 bg0xOffset;
u16 bg0yOffset;
u16 bg0Updated;
u32 unk;
u16 bg1xOffset;
u16 bg1yOffset;
u16 bg2xOffset;
u16 bg2yOffset;
u16 bg3xOffset;
u16 bg3yOffset;
} BgSettings;
typedef struct {
@@ -22,7 +30,8 @@ typedef struct {
u16 bg2xOffset;
u16 bg2yOffset;
u16 unk;
u32 unk2;
u16 unk2;
u16 unk3;
u16 bg3Control;
u16 bg3xOffset;
u16 bg3yOffset;
@@ -60,11 +69,13 @@ typedef struct {
} BgControls;
typedef struct {
LcdControls lcd;
BgSettings bg1;
BgSettings bg2;
BgAffSettings affine;
BgControls controls;
/*0x00*/ LcdControls lcd;
/*0x08*/ BgSettings bg;
/*0x20*/ BgAffSettings affine;
/*0x38*/ BgControls controls;
} Screen;
extern BgControls gBgControls;
extern Screen gScreen;
#endif
+163
View File
@@ -0,0 +1,163 @@
#ifndef STRUCTURES_H
#define STRUCTURES_H
#include "global.h"
#include "entity.h"
#include "player.h"
typedef struct {
char header[4];
u8 saveFileId;
u8 messageSpeed;
u8 brightnessPref;
u8 gameLanguage;
} struct_02000000;
typedef struct {
u16 field_0x0;
u16 field_0x2;
u16 field_0x4;
u16 field_0x6;
u16 field_0x8;
u16 field_0xa;
} struct_0807D1C4;
#define gUnk_02000000 ((struct_02000000*)(0x2000000))
//extern struct_02000000 gUnk_02000000;
typedef struct {
u8 filler0[0x4];
u8 field_0x4;
u8 listenForKeyPresses;
} struct_02000010;
extern struct_02000010 gUnk_02000010;
typedef struct {
/*0x000*/ u8 filler0[0x2];
/*0x002*/ u8 messageSpeed;
/*0x003*/ u8 brightnessPref;
/*0x004*/ u8 filler4[0x2];
/*0x006*/ u8 unk6;
/*0x007*/ u8 unk7;
/*0x008*/ u8 unk8;
/*0x009*/ u8 field_0x9[0x34];
/*0x040*/ u32 windcrests;
/*0x044*/ u8 filler44[0xC];
/*0x050*/ u32 unk50;
/*0x054*/ u8 filler54[0x2C];
/*0x080*/ u8 playerName[6];
/*0x086*/ u8 filler86[0x22];
/*0x0A8*/ Stats stats;
/*0x0D0*/ u8 fillerD0[0x3c0];
/*0x490*/ u32 unk490;
/*0x494*/ u8 filler494[0x20];
} SaveFile;
extern SaveFile gUnk_02002A40;
typedef struct {
u32 frameCount; // regular frame count? does anything reset it?
u8 field_0x4[0x4];
bool8 transitioningOut;
u8 transitionType; // transition when changing areas
u8 field_0xa; // seems to be a tile type
u8 field_0xb;
u8 areaID;
u8 roomID;
u8 playerState;
u8 field_0xf;
Coords playerStartPos;
u8 playerLayer;
u8 field_0x13;
u8 field_0x14[0xa];
u16 field_0x20;
u16 field_0x22;
u8 field_0x24[0x14];
u8 field_0x38;
u8 field_0x39;
u16 field_0x3a;
u8 field_0x3c;
u8 filler[6];
u16 field_0x44;
u16 field_0x46;
u16 field_0x48;
u16 field_0x4a;
u8 field_0x4c[0x60];
u16 field_0xac;
u16 field_0xae;
} ScreenTransition;
extern ScreenTransition gScreenTransition;
typedef struct {
u16 transitionType;
u8 field_0x2[4];
s16 playerXPos;
s16 playerYPos;
u8 field_0xa;
u8 areaID;
u8 roomID;
u8 playerLayer;
u8 field_0xe;
u8 playerState;
u16 transitionSFX;
} ScreenTransitionData;
typedef struct {
/*0x00*/ u8 unk0;
/*0x01*/ u8 unk1;
/*0x02*/ u8 unk2;
/*0x03*/ u8 unk3;
/*0x04*/ u8 filler4[0x2];
/*0x06*/ u8 unk6;
/*0x07*/ u8 unk7;
/*0x08*/ s8 unk8[0xE20];
} struct_02019EE0;
extern struct_02019EE0 gUnk_02019EE0;
typedef struct {
u8 active;
u8 field_0x1;
u8 field_0x2;
u8 field_0x3;
u32 field_0x4;
u16 fadeType; // fade in or out, are there others?
u16 fadeSpeed; // subtracted from duration
u16 fadeDuration;
u16 field_0xe;
s16 field_0x10;
s16 field_0x12;
s16 field_0x14;
u16 field_0x16;
u16 field_0x18;
} struct_03000FD0;
extern struct_03000FD0 gFadeControl;
typedef struct {
u8 filler0[0x1A];
u16 unk1A;
u8 filler1C[0x4];
u16 unk20;
u8 filler22[0x2];
u8 ezloNagFuncIndex;
u8 filler25[0x30F];
} struct_0200AF00;
extern struct_0200AF00 gUnk_0200AF00;
typedef struct {
u8 unk0;
} struct_02024490;
extern struct_02024490 gUnk_02024490;
typedef struct {
u16 unk_00;
u8 unk_02[0xE];
} struct_02034480;
extern struct_02034480 gUnk_02034480;
#endif
+3
View File
@@ -14,6 +14,9 @@ typedef struct {
u8 textWindowPosY;
u16 textIndex;
u16 unk2; // HI?
u16 field_0xc;
u16 field_0xe;
u32 field_0x10;
} TextBox;
extern TextBox gTextBox;