merge PR 4

This commit is contained in:
Henny022p
2021-03-02 10:35:40 +01:00
353 changed files with 4345 additions and 5250 deletions
+2 -2
View File
@@ -145,7 +145,7 @@ typedef enum {
SFX_VO_MINISH2,
SFX_VO_MINISH3,
SFX_VO_MINISH4,
SFX_REM_SLEEP = 0xCC,
SFX_TASK_COMPLETE,
SFX_KEY_APPEAR,
@@ -183,7 +183,7 @@ typedef enum {
SFX_APPARATE,
SFX_F8,
SFX_TELEPORTER,
SFX_ITEM_BOMB_EXPLODE = 0xFD,
SFX_HIT,
+18 -12
View File
@@ -5,26 +5,29 @@
#include "global.h"
#include "sprite.h"
typedef enum {
PLAYER = 1,
ENEMY = 3,
PROJECTILE = 4,
OBJECT = 6,
NPC = 7,
PLAYER_ITEM = 8,
MANAGER = 9,
} EntityType;
typedef struct {
void* entity1;
void* entity2;
u8 filler[14];
} UnkStruct;
typedef struct {
u8 type;
u8 subtype;
u8 form;
u8 parameter;
} EntityType;
typedef struct {
s8 offset_x;
s8 offset_y;
u8 unk2[4];
u8 width;
u8 height;
} BoundingBox;
} Hitbox;
typedef struct {
s8 offset_x;
@@ -34,12 +37,15 @@ typedef struct {
u8 height;
u8 depth;
u8 unknown2[3];
} BoundingBox3D;
} Hitbox3D;
typedef struct Entity {
/*0x00*/ struct Entity* prev;
/*0x04*/ struct Entity* next;
/*0x08*/ EntityType entityType;
/*0x08*/ u8 kind; // was: type
/*0x09*/ u8 id; // was: subtype
/*0x0a*/ u8 type; // was: form
/*0x0b*/ u8 type2; // was: parameter
/*0x0c*/ u8 action;
/*0x0d*/ u8 previousActionFlag;
/*0x0e*/ u8 actionDelay;
@@ -112,7 +118,7 @@ typedef struct Entity {
/*0x44*/ u8 field_0x44;
/*0x45*/ u8 currentHealth;
/*0x46*/ u16 field_0x46;
/*0x48*/ BoundingBox* boundingBox;
/*0x48*/ Hitbox* hitbox;
/*0x4c*/ struct Entity* field_0x4c;
/*0x50*/ struct Entity* parent;
/*0x54*/ struct Entity* attachedEntity;
@@ -132,7 +138,7 @@ typedef struct Entity {
/*0x60*/ u16 spriteVramOffset;
/*0x62*/ u8 spriteOffsetX;
/*0x63*/ s8 spriteOffsetY;
/*0x64*/ u32* otherEntity;
/*0x64*/ u32* myHeap;
/*0x68*/ union SplitHWord field_0x68;
/*0x6a*/ union SplitHWord field_0x6a;
/*0x6c*/ union SplitHWord field_0x6c;
+14 -14
View File
@@ -12,7 +12,7 @@
// Identified - to be sorted into header files
extern u32 Random(void);
extern void PlaySFX(u32);
extern void SoundReq(u32);
extern void ShowNPCDialogue(Entity*, Dialog*);
extern u32 UpdateFuseInteraction();
extern void DeleteEntity(Entity*);
@@ -20,7 +20,7 @@ extern u32 __modsi3(u32, u32);
extern void DoFade(u32, u32);
extern u32 GetInventoryValue(u32);
extern u32 CheckKinstoneFused(u32);
extern void ForceEquipItem(u8, u8);
extern void ForceEquipItem(u32, u8);
extern void LoadRoomEntityList();
void CopyPosition(Entity*, Entity*);
extern void ResolveEntityOnTop(Entity*, Entity*);
@@ -32,7 +32,7 @@ extern Entity* CreatePlayerItem(u32, u32, u32, u32);
extern Entity* GetEmptyEntity(void);
extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
extern u32 GetTileType(u32 pos, u32 layer);
extern void _DmaZero(void* src, u32 count);
extern void MemClear32(void* src, u32 count);
extern void EraseAllEntities(void);
extern void SetTile(u32, u32, u32);
extern void SetDirtTile(u32);
@@ -42,15 +42,15 @@ extern void UpdateAnimationVariableFrames(Entity*, u32);
extern void CopyPositionAndSpriteOffset(Entity*, Entity*);
extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32);
extern u32 LoadFixedGFX(Entity*, u32);
extern void _DmaFill32(u32, void*, u32);
extern void MemFill32(u32, void*, u32);
extern Entity* CreateItemEntity(u32, u32, u32);
void _DmaCopy(const void* src, void* dst, u32 size);
void MemCopy(const void* src, void* dst, u32 size);
extern u32 ProcessMovement(Entity*);
extern Entity* FindEntityInListBySubtype(u32, u32, u32);
extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32);
extern void _DmaZero(void*, u32);
extern void MemClear32(void*, u32);
extern void MenuFadeIn(u32, u32);
extern void LoadAssetAsync(const void*, u32, u32);
extern void LoadResourceAsync(const void*, u32, u32);
extern void LoadPaletteGroup(u32);
extern void TryLoadPrologueHyruleTown(void);
extern Manager* GetEmptyManager(void);
@@ -226,7 +226,7 @@ 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 void RegisterPlayerHitbox();
extern u32 sub_0808288C(Entity*, u32, u32, u32);
extern void sub_0806FDA0(Entity*);
extern void sub_080AE008(Entity*, u32, u32);
@@ -283,10 +283,10 @@ extern void sub_0801E00C();
extern void sub_08050038(u32);
extern void sub_080500F4(u32);
extern void sub_08050110(u32, u32, u32, u32);
extern u32 sub_08052734(); //has Dungeon Map?
extern u32 sub_08052764(); //has Dungeon Compass?
extern u32 sub_0805279C(); //has Dungeon Big Key?
extern u32 sub_080527CC(); //num Dungeon small keys?
extern u32 sub_08052734(); // has Dungeon Map?
extern u32 sub_08052764(); // has Dungeon Compass?
extern u32 sub_0805279C(); // has Dungeon Big Key?
extern u32 sub_080527CC(); // num Dungeon small keys?
extern u32 sub_08053FE0();
extern void sub_08078790(Entity*, u32);
extern void sub_080788E0(Entity*);
@@ -311,8 +311,8 @@ extern u32 sub_08056134(void);
extern void sub_08004484(Entity*, Entity*);
extern void sub_080564C8(u32);
extern void sub_08056F70(void);
extern void sub_08056C68(void);
extern void sub_08056D70(void);
extern void DeleteWindow(void);
extern void CreateWindow(void);
extern void sub_0805EEB4(u8*, u32, u32);
extern void sub_08056FBC(void*);
extern void sub_08056C54(u32);
+6 -5
View File
@@ -167,11 +167,12 @@
#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16)
#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32)
#define DmaWait(DmaNo) \
{ \
vu32 *(DmaCntp) = (vu32 *)REG_ADDR_DMA##DmaNo; \
while (DmaCntp[2] & (DMA_ENABLE << 16)) ; \
}
#define DmaWait(DmaNo) \
{ \
vu32*(DmaCntp) = (vu32*)REG_ADDR_DMA##DmaNo; \
while (DmaCntp[2] & (DMA_ENABLE << 16)) \
; \
}
#define IntrEnable(flags) \
{ \
+8 -7
View File
@@ -11,17 +11,18 @@
#define RESET_REGS 0x80
#define RESET_ALL 0xFF
#define SystemCall(x) { asm("svc " #x); }
#define SystemCall(x) \
{ asm("svc " #x); }
extern void SoundBiasReset();
extern void SoundBiasSet();
#define Stop() \
{ \
SoundBiasReset(); \
SystemCall(3); \
SoundBiasSet(); \
}
#define Stop() \
{ \
SoundBiasReset(); \
SystemCall(3); \
SoundBiasSet(); \
}
void SoftReset(u32 resetFlags);
+1 -1
View File
@@ -11,7 +11,7 @@ extern Entity* GreatFairy_CreateForm(Entity*, u32, u32);
extern void PositionRelative();
extern void CopyPosition();
extern void DoFade();
extern void PlaySFX();
extern void SoundReq();
extern void GetNextFrame();
extern void sub_0805EC9C();
extern void sub_0805EC60();
+4 -4
View File
@@ -74,7 +74,7 @@ typedef struct {
} UI;
static_assert(sizeof(UI) == 0x3b4);
extern Main gUnk_03001000;
extern Main gMain;
extern UI gUnk_02032EC0;
void InitScreen();
@@ -84,16 +84,16 @@ 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 MessageInitialize(void);
extern void sub_080ADD30(void);
extern void InitScreen(u32);
extern void sub_08016E78(void);
extern void PrepNextFrame(void);
extern void ReadKeyInput(void);
extern void DoSoftReset(void);
extern void sub_08056260(void);
extern void VBlankIntrWait();
extern void sub_08056458(void);
extern void MessageUpdate(void);
extern void sub_08050154(void);
extern void sub_080A3480(void);
-1
View File
@@ -193,5 +193,4 @@ extern void sub_0805E0FC();
void (*const gManagerFunctions[58])();
#endif
-1
View File
@@ -172,7 +172,6 @@ extern void NPC58_Head(Entity*);
extern u32 UpdateFuseInteraction(Entity*);
void (*const gNPCFunctions[128][3])(Entity*);
#endif
+197
View File
@@ -4,6 +4,203 @@
#include "global.h"
#include "entity.h"
typedef enum {
GROUND_ITEM,
DEATH_FX,
SHOP_ITEM,
BUTTON,
OBJECT_4,
POT,
OBJECT_6,
PUSHED_BLOCK,
LOCKED_DOOR,
OBJECT_9,
OBJECT_A,
OBJECT_B,
CHEST_SPAWNER,
OBJECT_D,
OBJECT_E,
SPECIAL_FX,
OBJECT_10,
OBJECT_11,
OBJECT_12,
RAILTRACK,
LILYPAD_LARGE,
OBJECT_15,
FLOATING_PLATFORM,
OBJECT_17,
EVIL_SPIRIT,
HOUSE_DOOR_EXT,
OBJECT_1A,
GREAT_FAIRY,
OBJECT_1C,
OBJECT_1D,
OBJECT_1E,
OBJECT_1F,
OBJECT_20,
OBJECT_21,
FIGURINE_DEVICE,
EYE_SWITCH,
OBJECT_24,
BIG_BARREL,
OBJECT_26,
PUSHABLE_STATUE,
OBJECT_28,
OBJECT_29,
OBJECT_2A,
OBJECT_2B,
BEANSTALK,
SMOKE,
PUSHABLE_ROCK,
HITTABLE_LEVER,
OBJECT_30,
OBJECT_31,
PULLABLE_MUSHROOM,
BOLLARD,
WARP_POINT,
OBJECT_35,
OBJECT_36,
OBJECT_37,
JAR_PORTAL,
BOSS_DOOR,
OBJECT_3A,
PORTAL_MUSHROOM_STALKS,
PORTAL_FALLING_PLAYER,
OBJECT_3D,
OBJECT_3E,
GIANT_LEAF,
FAIRY,
LADDER_UP,
OBJECT_42,
OBJECT_43,
OBJECT_44,
OBJECT_45,
GIANT_BOOK_LADDER,
HEART_CONTAINER,
FILE_SCREEN_OBJECTS,
OBJECT_49,
BACKGROUND_CLOUD,
OBJECT_4B,
PUSHABLE_FURNITURE,
FURNITURE,
MINISH_SIZED_ENTRANCE,
ARCHWAY,
GIANT_ROCK,
OBJECT_51,
OBJECT_52,
OBJECT_53,
PULLABLE_LEVER,
MINECART,
THOUGHT_BUBBLE,
HIDDEN_LADDER_DOWN,
GENTARI_CURTAIN,
LAVA_PLATFORM,
OBJECT_5A,
OBJECT_5B,
MASK,
HOUSE_DOOR_INT,
WHIRLWIND,
OBJECT_BLOCKING_STAIRS,
SWORDSMAN_NEWSLETTER,
OBJECT_61,
GIANT_TWIG,
OBJECT_63,
OBJECT_64,
LADDER_HOLE,
OBJECT_66,
OBJECT_67,
OBJECT_68,
OBJECT_69,
OBJECT_6A,
CRENAL_BEAN_SPROUT,
MINECART_DOOR,
OBJECT_ON_PILLAR,
MINERAL_WATER_SOURCE,
MINISH_SIZED_ARCHWAY,
OBJECT_70,
PUSHABLE_GRAVE,
OBJECT_72,
LILYPAD_SMALL,
OBJECT_74,
OBJECT_75,
OBJECT_76,
BELL,
HUGE_DECORATION,
OBJECT_79,
STEAM,
PUSHABLE_LEVER,
HUGE_SHOES,
OBJECT_ON_BEETLE,
OBJECT_7E,
PICO_BLOOM,
OBJECT_80,
OBJECT_81,
BIG_VORTEX,
BIG_PUSHABLE_LEVER,
SMALL_ICE_BLOCK,
BIG_ICE_BLOCK,
OBJECT_86,
OBJECT_87,
HUGE_BOOK,
OBJECT_89,
OBJECT_8A,
OBJECT_8B,
BOOK,
FIREPLACE,
OBJECT_8E,
FROZEN_WATER_ELEMENT,
OBJECT_90,
OBJECT_91,
BAKER_OVEN,
OBJECT_93,
WIND_TRIBE_FLAG,
BIRD,
OBJECT_96,
OBJECT_97,
OBJECT_98,
OBJECT_99,
HUGE_ACORN,
OBJECT_9B,
TREE_HIDING_PORTAL,
LIGHTABLE_SWITCH,
OBJECT_9E,
FAN,
OBJECT_A0,
PALACE_ARCHWAY,
OBJECT_A2,
CLOUD,
MINISH_LIGHT,
OBJECT_A5,
OBJECT_A6,
OBJECT_A7,
OBJECT_A8,
OBJECT_A9,
WATERFALL_OPENING,
OBJECT_AB,
FOUR_ELEMENTS,
OBJECT_AD,
FLOATING_BLOCK,
OBJECT_AF,
METAL_DOOR,
JAIL_BARS,
OBJECT_B2,
OBJECT_B3,
OBJECT_B4,
OBJECT_B5,
OBJECT_B6,
WELL,
WIND_TRIBE_TELEPORTER,
OBJECT_B9,
OBJECT_BA,
WINDCREST,
LIT_AREA,
OBJECT_BD,
PINWHEEL,
OBJECT_BF,
ENEMY_ITEM,
OBJECT_C1,
} Object;
extern void ItemOnGround(Entity*);
extern void DeathFx(Entity*);
extern void ItemForSale(Entity*);
+9 -6
View File
@@ -33,8 +33,9 @@ typedef struct {
/*0x30*/ union {
/* */ u32 all;
/* */ struct {
/* */ u32 filler9 : 2;
/* */ u32 unk1 : 1;
/* */ u32 unk2 : 1;
/* */ u32 unk4 : 1;
/* */ u32 noMinishCap : 1;
/* */ u32 pullingState : 1;
/* */ u32 windyState : 1;
@@ -87,17 +88,19 @@ typedef struct {
/*0x05*/ u8 arrowCount;
/*0x06*/ u8 bombBagType;
/*0x07*/ u8 quiverType;
/*0x08*/ u8 filler[4];
/*0x08*/ u8 filler[2];
/*0x0a*/ u8 charm;
/*0x0b*/ u8 unkB;
/*0x0c*/ u8 itemOnA;
/*0x0d*/ u8 itemOnB;
/*0x0e*/ u8 bottles[4];
/*0x12*/ u8 floorType;
/*0x12*/ u8 effect;
/*0x13*/ u8 filler3[5];
/*0x18*/ u16 rupees;
/*0x1a*/ u16 field_0x1a;
/*0x1c*/ u16 field_0x1c;
/*0x1e*/ u16 field_0x1e;
/*0x20*/ u16 field_0x20;
/*0x1c*/ u16 charmTimer;
/*0x1e*/ u16 unkTimer;
/*0x20*/ u16 effectTimer;
/*0x22*/ u8 filler4[4];
} Stats;
+1 -1
View File
@@ -11,7 +11,7 @@
typedef enum {
SAVE_BUSY = 0,
SAVE_OK = 1,
SAVE_OK = 1,
SAVE_ERROR = -1,
} SaveResult;
+9 -11
View File
@@ -12,30 +12,28 @@ typedef struct {
typedef struct {
u16 bg0Control;
u16 bg1Control;
u16 bg2Control;
u16 bg3Control;
u16 bg0xOffset;
u16 bg0yOffset;
u16 bg0Updated;
void* bg0Tilemap;
u16 bg1Control;
u16 bg1xOffset;
u16 bg1yOffset;
u16 bg2xOffset;
u16 bg2yOffset;
void* unk_14;
u16 bg1Updated;
void* bg1Tilemap;
} BgSettings;
typedef struct {
u16 bg2Control;
u16 bg2xOffset;
u16 bg2yOffset;
u16 unk;
u16 unk2;
u16 unk3;
u16 bg2Updated;
void* bg2Tilemap;
u16 bg3Control;
s16 bg3xOffset;
s16 bg3yOffset;
u16 unk4;
void* unk5;
u16 bg3Updated;
void* bg3Tilemap;
} BgAffSettings;
typedef struct {
+2 -2
View File
@@ -31,6 +31,6 @@ extern void StartPlayerScript(u16*);
extern void sub_0807DEDC(Entity*, ScriptExecutionContext*, u32, u32);
extern ScriptExecutionContext* StartCutscene(Entity*, u16*);
extern void sub_0807DDAC(Entity*, void(*function)(Entity*, ScriptExecutionContext*));
extern void sub_0807DD94(Entity*, void(*function)(Entity*, ScriptExecutionContext*));
extern void sub_0807DDAC(Entity*, void (*function)(Entity*, ScriptExecutionContext*));
extern void sub_0807DD94(Entity*, void (*function)(Entity*, ScriptExecutionContext*));
#endif