This commit is contained in:
21aslade
2020-06-19 13:34:22 -06:00
337 changed files with 54674 additions and 48556 deletions
+2 -2
View File
@@ -5,12 +5,12 @@
typedef struct {
u8 areaMetadata;
u32 locationIndex;
u8 locationIndex;
u8 unk;
u16 localFlagOffset;
u8 filler[19];
u8 fadeOut;
u8 filler[14];
u8 filler2[14];
} Area;
extern Area gArea;
+2
View File
@@ -4,6 +4,8 @@
#include "global.h"
#include "entity.h"
extern u32 GetNextFunction(Entity*);
extern void Octorok(Entity*);
extern void Chuchu(Entity*);
extern void Leever(Entity*);
+18 -17
View File
@@ -1,8 +1,9 @@
#include "global.h"
#ifndef ENTITY_H
#define ENTITY_H
#include "global.h"
#include "sprite.h"
typedef struct {
void* entity1;
void* entity2;
@@ -12,8 +13,8 @@ typedef struct {
typedef struct {
u8 type;
u8 subtype;
u8 parameter1;
u8 parameter2;
u8 form;
u8 parameter;
} EntityType;
union SplitWord {
@@ -36,7 +37,7 @@ typedef struct Entity {
EntityType entityType;
u8 action;
u8 previousActionFlag;
u8 parameter3;
u8 actionDelay;
u8 field_0xf;
u8 flags;
u8 scriptedScene : 4;
@@ -69,18 +70,19 @@ typedef struct Entity {
u8 palette;
struct {
u8 b0 : 4;
u8 b1 : 1;
u8 b2 : 3;
u8 b1 : 2;
u8 b2 : 2;
} PACKED spriteOrientation;
u8 filler[2];
u8 animationList;
u8 field_1f;
u8 frameIndex;
u8 lastFrameIndex;
s32 field_0x20;
s16 nonPlanarMovement;
u8 spriteAnimation[3];
struct {
u8 b0 : 3;
u8 b1 : 5;
u8 b1 : 3;
u8 b2 : 2;
} PACKED ticks;
u16 collisions;
union SplitWord x;
@@ -108,8 +110,8 @@ typedef struct Entity {
u8 field_0x4f;
struct Entity* parent;
struct Entity* attachedEntity;
u8 field_0x58;
u8 field_0x59;
u8 animIndex;
u8 frameDuration;
union {
u8 all;
struct {
@@ -119,11 +121,8 @@ typedef struct Entity {
u8 f3 : 1;
} PACKED b;
} PACKED frames;
u8 gfx;
u8 field_0x5c;
u8 field_0x5d;
u8 field_0x5e;
u8 field_0x5f;
u8 frameSpriteSettings;
Frame* animPtr;
u16 spriteVramOffset;
u8 spriteOffsetX;
u8 spriteOffsetY;
@@ -145,4 +144,6 @@ typedef struct Entity {
} Entity;
#define COORD_TO_TILE(entity) ((((entity->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3fU) | (((entity->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
#endif
+18 -17
View File
@@ -3,28 +3,29 @@
#include "global.h"
extern u32 CheckFlags(u32);
extern u32 CheckGlobalFlag(u32);
extern u32 CheckGlobalFlags(u32);
u32 CheckFlags(u32);
u32 CheckGlobalFlag(u32);
u32 CheckGlobalFlags(u32, u32);
extern u32 CheckLocalFlag(u32);
extern u32 CheckLocalFlagByOffset(u32, u32);
extern u32 CheckLocalFlags(u32);
extern u32 CheckLocalFlagsByOffset(u32, u32);
extern u32 CheckRoomFlag(u32);
extern u32 CheckRoomFlags(u32);
u32 CheckLocalFlags(u32, u32);
u32 CheckLocalFlagsByOffset(u32, u32, u32);
u32 CheckRoomFlag(u32);
u32 CheckRoomFlags(u32, u32);
extern void ClearFlag(u32);
extern void ClearGlobalFlag(u32);
extern void ClearLocalFlag(u32);
extern void ClearLocalFlagByOffset(u32, u32);
extern void ClearRoomFlag(u32);
void ClearFlag(u32);
void ClearGlobalFlag(u32);
void ClearLocalFlag(u32);
void ClearLocalFlagByOffset(u32, u32);
void ClearRoomFlag(u32);
extern void SetFlag(u32);
extern void SetGlobalFlag(u32);
extern void SetLocalFlag(u32);
extern void SetLocalFlagByOffset(u32, u32);
extern void SetRoomFlag(u32);
void SetFlag(u32);
void SetGlobalFlag(u32);
void SetLocalFlag(u32);
void SetLocalFlagByOffset(u32, u32);
void SetRoomFlag(u32);
extern u32 gGlobalFlags;
extern u32 gRoomFlags;
#endif
+24 -9
View File
@@ -4,6 +4,7 @@
#include "global.h"
#include "entity.h"
#include "position.h"
// Identified
extern u32 Random(void);
@@ -12,17 +13,22 @@ extern void UpdateSpriteOrderAndFlip(Entity*);
extern void InitAnimationForceUpdate(Entity*, u32);
extern void ShowNPCDialogue(Entity*, u32*);
extern u32 UpdateFuseInteraction();
extern void CopyPosition(Entity*, Entity*);
extern void PositionRelative(Entity*, Entity*, u32, u32);
extern void InitializeAnimation(Entity*, u32);
extern void DeleteEntity(Entity*);
extern u32 __modsi3(u32, u32);
extern void DoFade(u32, u32);
extern void UpdateAnimationSingleFrame(Entity*);
extern u32 GetInventoryValue(u32);
extern void TextboxNoOverlapFollow(u32 index);
extern Entity* CreateFx(Entity*, u32, u32);
extern u32 CheckKinstoneFused(u32);
extern void ForceEquipItem(u8, u8);
extern void LoadRoomEntityList();
void ModHealth(s32);
void CopyPosition(Entity*, Entity*);
extern u32* StartCutscene(Entity*, u8*);
extern void GetNextFrame(Entity*);
extern u32 LoadExtraSpriteData(Entity*, u32*);
extern void ResolveEntityOnTop(Entity*, Entity*);
// Unidentified
extern void sub_0806ED78(Entity*);
@@ -31,13 +37,10 @@ extern u32 sub_0805ACC0(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0806924C(Entity*);
extern void 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*);
extern void sub_080791D0();
extern void sub_08087380();
extern void sub_08004274();
extern void sub_0805EC9C();
extern void sub_0805EC60();
extern void sub_080873D0();
@@ -56,13 +59,25 @@ 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 u32 sub_0806FDEC(Entity*, u32*);
extern s32 sub_0806ED9C(Entity*, u32, u32);
extern s32* sub_0807DAD0(Entity*, u8*);
extern void sub_0806FF60(Entity*, u32, u32);
extern void sub_0806FF88(Entity*, u32, u32);
extern void sub_0807000C(Entity*);
extern void sub_0805E47C(Entity*);
extern void sub_0805E584(Entity*);
extern void sub_0806FAB0(Entity*, Entity*);
extern void sub_0806ED78(Entity*);
extern void sub_08068BEC(Entity*, u32);
extern void sub_08078778(Entity*);
extern s32 sub_0806ED9C(Entity*, u32, u32);
extern s32 sub_0806F078(Entity*, s32);
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);
#endif
+12
View File
@@ -47,4 +47,16 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
struct Coords16
{
s16 x;
s16 y;
} PACKED;
struct UCoords16
{
u16 x;
u16 y;
};
#endif // GUARD_GLOBAL_H
+31 -17
View File
@@ -3,14 +3,14 @@
extern u32 __modsi3(u32, u32);
extern void InitializeAnimation(Entity*, u32);
extern void sub_08087380();
extern void GreatFairy_InitializeAnimation(Entity*);
extern u32 CheckRoomFlag();
extern Entity* sub_080873AC(Entity*, u32, u32);
extern Entity* GreatFairy_CreateForm(Entity*, u32, u32);
extern void PositionRelative();
extern void CopyPosition();
extern void DoFade();
extern void PlaySFX();
extern void sub_08004274();
extern void GetNextFrame();
extern void sub_0805EC9C();
extern void sub_0805EC60();
extern void sub_080873D0();
@@ -19,24 +19,38 @@ extern void sub_080045D4();
extern void sub_0806F69C();
extern u32 Random();
extern void (*gGreatFairy[11])(Entity*);
extern void (*gGreatFairyBehaviors[6])(Entity*);
extern void (*gGreatFairyWings[3])(Entity*);
extern void (*gGreatFairyWake[2])(Entity*);
extern void (*gGreatFairyMini[3])(Entity*);
extern void (*gGreatFairyMiniAnim[3])(Entity*);
extern void (*gGreatFairyDrip[2])(Entity*);
extern void (*gGreatFairyRipple[2])(Entity*);
extern void (*gGreatFairyBigRipple[2])(Entity*);
extern void (*gGreatFairyEnergy[2])(Entity*);
extern void (*gGreatFairyInteract1[4])(Entity*);
extern void (*gGreatFairyInteract2[5])(Entity*);
extern void (*gUnk_081207A4[2])(Entity*);
enum {
BEHAVIORS,
WINGS,
WAKE,
MINI,
MINIAFFINE,
DROPLET,
RIPPLE,
BIGRIPPLE,
FORM8,
FORM9,
};
extern void (*const GreatFairy_Main[])(Entity*);
extern void (*const GreatFairy_Behaviors[])(Entity*);
extern void (*const GreatFairy_WingsBehaviors[])(Entity*);
extern void (*const GreatFairy_WakeBehaviors[])(Entity*);
extern void (*const GreatFairy_MiniBehaviors[])(Entity*);
extern void (*const GreatFairy_MiniAffineBehaviors[])(Entity*);
extern void (*const GreatFairy_DropletBehaviors[])(Entity*);
extern void (*const GreatFairy_RippleBehaviors[])(Entity*);
extern void (*const GreatFairy_BigRippleBehaviors[])(Entity*);
extern void (*const GreatFairy_EnergyBehaviors[])(Entity*);
extern void (*const GreatFairy_Form1Behaviors[])(Entity*);
extern void (*const GreatFairy_Form2Behaviors[])(Entity*);
extern void (*const gUnk_081207A4[])(Entity*);
extern u32 gUnk_0810C2E4;
extern RoomControls gRoomControls;
extern Entity gLinkEntity;
extern s16 gGreatFairyRippleOffsets[10];
extern const s16 GreatFairy_RippleOffsets[10];
extern u32 gUnk_02034350;
extern RoomVars gRoomVars;
extern Screen gScreen;
+48 -13
View File
@@ -1,8 +1,54 @@
#include "global.h"
#ifndef ITEM_H
#define ITEM_H
#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;
void extern CellOverwriteSet(ItemBehavior*, u32);
void extern Sword(ItemBehavior*, u32);
void extern Sword(ItemBehavior*, u32);
void extern Sword(ItemBehavior*, u32);
void extern Sword(ItemBehavior*, u32);
void extern Sword(ItemBehavior*, u32);
void extern Sword(ItemBehavior*, u32);
void extern Bomb(ItemBehavior*, u32);
void extern Bomb(ItemBehavior*, u32);
void extern Bow(ItemBehavior*, u32);
void extern Bow(ItemBehavior*, u32);
void extern sub_08075D14(ItemBehavior*, u32);
void extern sub_08075D14(ItemBehavior*, u32);
void extern Shield(ItemBehavior*, u32);
void extern Shield(ItemBehavior*, u32);
void extern Lantern(ItemBehavior*, u32);
void extern Lantern(ItemBehavior*, u32);
void extern GustJar(ItemBehavior*, u32);
void extern PacciCane(ItemBehavior*, u32);
void extern MoleMitts(ItemBehavior*, u32);
void extern RocsCape(ItemBehavior*, u32);
void extern sub_08076800(ItemBehavior*, u32);
void extern CellOverwriteSet(ItemBehavior*, u32);
void Ocarina(ItemBehavior*, u32);
void extern CellOverwriteSet(ItemBehavior*, u32);
void extern CellOverwriteSet(ItemBehavior*, u32);
void extern CellOverwriteSet(ItemBehavior*, u32);
void extern TryPickupObject(ItemBehavior*, u32);
void extern JarEmpty(ItemBehavior*, u32);
void extern JarEmpty(ItemBehavior*, u32);
void extern JarEmpty(ItemBehavior*, u32);
void extern JarEmpty(ItemBehavior*, u32);
/* On hold until naming conflicts are resolved */
/*
enum
@@ -127,15 +173,4 @@
LongSpin = 0x75
} ItemType;
*/
typedef struct {
u8 unk;
u8 behaviorID;
u8 unk2;
u8 unk3;
u8 stateID;
u8 filler[4];
u8 unk4;
u8 filler2[4];
u8 unk5;
} ItemBehavior;
#endif
+4 -1
View File
@@ -19,7 +19,9 @@ typedef struct {
u8 hurtBlinkSpeed;
u8 filler4[4];
u16 filler5[3];
u8 filler6[8];
u8 filler6[2];
u8 field_0x1c;
u8 filler9[2];
u16 filler7[2];
u8 swimState;
u8 filler8[5];
@@ -52,6 +54,7 @@ typedef struct {
u32 unk8;
} LinkState;
typedef struct {
u8 walletType;
u8 heartPieces;
+169 -4
View File
@@ -5,9 +5,174 @@
#define NPC_H
typedef struct {
u16 palette;
u8 animIndex;
u8 unk;
} SpriteLoadThing;
u16 palette;
u8 animIndex;
u8 unk;
} SpriteLoadData;
extern void Gentari(Entity*);
extern void Gentari_Fusion(Entity*);
extern void Festari(Entity*);
extern void Festari_Fusion(Entity*);
extern void ForestMinish(Entity*);
extern void ForestMinish_Head(Entity*);
extern void ForestMinish_Fusion(Entity*);
extern void Postman(Entity*);
extern void Postman_Fusion(Entity*);
extern void NPC5(Entity*);
extern void Townsperson(Entity*);
extern void Townsperson_Head(Entity*);
extern void Townsperson_Fusion(Entity*);
extern void Kid(Entity*);
extern void Kid_Head(Entity*);
extern void Kid_Fusion(Entity*);
extern void Guard(Entity*);
extern void Guard_Head(Entity*);
extern void NPC9(Entity*);
extern void Stamp(Entity*);
extern void Maid(Entity*);
extern void Maid_Head(Entity*);
extern void Marcy(Entity*);
extern void Wheaton(Entity*);
extern void Pita(Entity*);
extern void MinishEzlo(Entity*);
extern void MinishEzlo_Head(Entity*);
extern void Mailbox(Entity*);
extern void Beedle(Entity*);
extern void Beedle_Head(Entity*);
extern void Brocco(Entity*);
extern void Brocco_Fusion(Entity*);
extern void SittingPerson(Entity*);
extern void SittingPerson_Head(Entity*);
extern void SittingPerson_Fusion(Entity*);
extern void Pina(Entity*);
extern void Pina_Fusion(Entity*);
extern void Guard(Entity*);
extern void Guard_Head(Entity*);
extern void Maid(Entity*);
extern void Maid_Head(Entity*);
extern void Din(Entity*);
extern void Din_Fusion(Entity*);
extern void Nayru(Entity*);
extern void Nayru_Fusion(Entity*);
extern void Farore(Entity*);
extern void Farore_Fusion(Entity*);
extern void Sturgeon(Entity*);
extern void Sturgeon_Head(Entity*);
extern void Sturgeon_Fusion(Entity*);
extern void TingleSiblings(Entity*);
extern void TingleSiblings_Fusion(Entity*);
extern void Stockwell(Entity*);
extern void Talon(Entity*);
extern void Talon_Head(Entity*);
extern void Talon_Fusion(Entity*);
extern void Malon(Entity*);
extern void Malon_Fusion(Entity*);
extern void Epona(Entity*);
extern void Epona_Fusion(Entity*);
extern void MilkCart(Entity*);
extern void GhostBrothers(Entity*);
extern void GhostBrothers_Fusion(Entity*);
extern void Smith(Entity*);
extern void Smith_Head(Entity*);
extern void Smith_Fusion(Entity*);
extern void NPC23(Entity*);
extern void KingDaltus(Entity*);
extern void KingDaltus_Fusion(Entity*);
extern void MinisterPotho(Entity*);
extern void MinisterPotho_Fusion(Entity*);
extern void NPC26(Entity*);
extern void Vaati(Entity*);
extern void Zelda(Entity*);
extern void Mutoh(Entity*);
extern void Mutoh_Head(Entity*);
extern void Mutoh_Fusion(Entity*);
extern void Carpenter(Entity*);
extern void Carpenter_Head(Entity*);
extern void Carpenter_Fusion(Entity*);
extern void CastorWildsStatue(Entity*);
extern void CastorWildsStatue_Fusion(Entity*);
extern void Cat(Entity*);
extern void Cat_Fusion(Entity*);
extern void MountainMinish(Entity*);
extern void MountainMinish_Head(Entity*);
extern void MountainMinish_Fusion(Entity*);
extern void ZeldaFollower(Entity*);
extern void Melari(Entity*);
extern void Melari_Head(Entity*);
extern void Melari_Fusion(Entity*);
extern void BladeBrothers(Entity*);
extern void BladeBrothers_Fusion(Entity*);
extern void Cow(Entity*);
extern void Cow_Fusion(Entity*);
extern void Goron(Entity*);
extern void Goron_Fusion(Entity*);
extern void GoronMerchant(Entity*);
extern void Gorman(Entity*);
extern void Gorman_Head(Entity*);
extern void Dog(Entity*);
extern void Dog_Head(Entity*);
extern void Dog_Fusion(Entity*);
extern void Syrup(Entity*);
extern void Syrup_Head(Entity*);
extern void Rem(Entity*);
extern void TownMinish(Entity*);
extern void TownMinish_Head(Entity*);
extern void TownMinish_Fusion(Entity*);
extern void Librari(Entity*);
extern void Librari_Fusion(Entity*);
extern void Percy(Entity*);
extern void Percy_Head(Entity*);
extern void Percy_Fusion(Entity*);
extern void VaatiReborn(Entity*);
extern void MoblinLady(Entity*);
extern void Librarians(Entity*);
extern void Farmers(Entity*);
extern void Farmers_Head(Entity*);
extern void Farmers_Fusion(Entity*);
extern void Carlov(Entity*);
extern void Dampe(Entity*);
extern void Dampe_Fusion(Entity*);
extern void DrLeft(Entity*);
extern void KingGustaf(Entity*);
extern void Gina(Entity*);
extern void Gina_Fusion(Entity*);
extern void Simon(Entity*);
extern void Anju(Entity*);
extern void Anju_Fusion(Entity*);
extern void Mama(Entity*);
extern void Mama_Head(Entity*);
extern void Mama_Fusion(Entity*);
extern void Emma(Entity*);
extern void Teachers(Entity*);
extern void Teachers_Head(Entity*);
extern void Teachers_Fusion(Entity*);
extern void WindTribespeople(Entity*);
extern void WindTribespeople_Head(Entity*);
extern void WindTribespeople_Fusion(Entity*);
extern void Gregal(Entity*);
extern void Gregal_Fusion(Entity*);
extern void MayorHagen(Entity*);
extern void MayorHagen_Fusion(Entity*);
extern void BigGoron(Entity*);
extern void EzloCap(Entity*);
extern void NPC4E(Entity*);
extern void NPC4E_Fusion(Entity*);
extern void NPC4F(Entity*);
extern void ClothesRack(Entity*);
extern void PicolyteBottle(Entity*);
extern void SmallTownMinish(Entity*);
extern void HurdyGurdyMan(Entity*);
extern void HurdyGurdyMan_Head(Entity*);
extern void HurdyGurdyMan_Fusion(Entity*);
extern void Cucco(Entity*);
extern void Cucco_Fusion(Entity*);
extern void CuccoChick(Entity*);
extern void CuccoChick_Fusion(Entity*);
extern void FusionMenuNPC(Entity*);
extern void FusionMenuNPC_Head(Entity*);
extern void Phonograph(Entity*);
extern void NPC58(Entity*);
extern void NPC58_Head(Entity*);
#endif
+1 -1
View File
@@ -90,7 +90,7 @@ extern void Object52(Entity*);
extern void Object53(Entity*);
extern void PullableLever(Entity*);
extern void Minecart(Entity*);
extern void Object56(Entity*);
extern void ThoughtBubble(Entity*);
extern void HiddenLadderDown(Entity*);
extern void GentariCurtain(Entity*);
extern void LavaPlatform(Entity*);
+13
View File
@@ -0,0 +1,13 @@
#ifndef POSITION_H
#define POSITION_H
#include "global.h"
#include "entity.h"
void CopyPosition(Entity*, Entity*);
void PositionEntityOnTop(Entity*, Entity*);
void PositionRelative(Entity*, Entity*, s32, s32);
void sub_0806FA90(Entity*, Entity*, s32, s32);
void ResolveEntityOnTop(Entity*, Entity*);
#endif
+2 -2
View File
@@ -51,8 +51,8 @@ typedef struct {
u8 entityType;
u8 field_0x1;
u8 entitySubtype;
u8 entityParameter1;
u32 entityParameter2;
u8 entityform;
u32 entityparameter;
u16 xPos;
u16 yPos;
u32 spritePtr;
+26
View File
@@ -0,0 +1,26 @@
#ifndef SPRITE_H
#define SPRITE_H
#include "global.h"
typedef struct {
u8 index;
u8 duration;
union {
u8 raw;
struct {
u8 unk : 6;
u8 hFlip : 1;
u8 vFlip : 1;
} PACKED b;
} PACKED spriteSettings;
union {
u8 raw;
struct {
u8 extraFrameIndex : 6;
u8 unk : 1;
u8 endOfAnimation : 1;
} PACKED b;
} PACKED frameSettings;
} Frame;
#endif
+1
View File
@@ -20,4 +20,5 @@ extern TextBox gTextBox;
void TextboxNoOverlap(u32 index, Entity* ent);
void extern TextboxNoOverlapFollow(u32 index);
#endif