mirror of
https://github.com/zeldaret/tmc
synced 2026-07-08 14:36:41 -04:00
Merge pull request #341 from Henny022p/subtask
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include "entity.h"
|
||||
#include "projectile.h"
|
||||
|
||||
bool32 EnemyInit(Entity* this);
|
||||
extern u32 GetNextFunction(Entity*);
|
||||
extern void EnemyFunctionHandler(Entity*, EntityActionArray);
|
||||
extern void sub_08001324(Entity*);
|
||||
|
||||
@@ -285,37 +285,4 @@ typedef enum {
|
||||
GAMEMAIN_SUBTASK,
|
||||
} EGameMainState;
|
||||
|
||||
/** Subtasks override the game task for short periods */
|
||||
typedef enum {
|
||||
SUBTASK_EXIT,
|
||||
SUBTASK_PAUSEMENU,
|
||||
SUBTASK_EXIT2,
|
||||
SUBTASK_MAPHINT,
|
||||
SUBTASK_KINSTONEMENU,
|
||||
SUBTASK_AUXCUTSCENE, /* cutscene without presence of player */
|
||||
SUBTASK_PORTALCUTSCENE, /* player "falling" down portal cutscene */
|
||||
SUBTASK_FIGURINEMENU,
|
||||
SUBTASK_WORLDEVENT,
|
||||
SUBTASK_FASTTRAVEL,
|
||||
SUBTASK_LOCALMAPHINT,
|
||||
} ESubtask;
|
||||
|
||||
typedef void(Subtask)(void);
|
||||
|
||||
/** @name Subtask entrypoints */
|
||||
///@{
|
||||
/** Subtask entrypoint. */
|
||||
Subtask Subtask_Exit;
|
||||
Subtask Subtask_PauseMenu;
|
||||
Subtask Subtask_Exit;
|
||||
Subtask Subtask_MapHint;
|
||||
Subtask Subtask_KinstoneMenu;
|
||||
Subtask Subtask_AuxCutscene;
|
||||
Subtask Subtask_PortalCutscene;
|
||||
Subtask Subtask_FigurineMenu;
|
||||
Subtask Subtask_WorldEvent;
|
||||
Subtask Subtask_FastTravel;
|
||||
Subtask Subtask_LocalMapHint;
|
||||
///@}
|
||||
|
||||
#endif // GAME_H
|
||||
|
||||
+12
-1
@@ -7,7 +7,7 @@ extern void sub_08018C58(u32);
|
||||
|
||||
typedef struct {
|
||||
u8 unk[4];
|
||||
u32 unk2;
|
||||
u8* unk2;
|
||||
u32 unk4;
|
||||
} Unk_struct;
|
||||
extern Unk_struct gUnk_03003DF0[];
|
||||
@@ -27,4 +27,15 @@ typedef struct {
|
||||
static_assert(sizeof(FuseInfo) == 0x10);
|
||||
extern FuseInfo gFuseInfo;
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 evt_type;
|
||||
u8 unk5;
|
||||
u8 _5[2];
|
||||
} struct_080C9CBC;
|
||||
extern struct_080C9CBC gUnk_080C9CBC[];
|
||||
|
||||
#endif // KINSTONE_H
|
||||
|
||||
+70
-7
@@ -44,9 +44,17 @@ typedef struct {
|
||||
/*0x08*/ u16 transitionTimer;
|
||||
/*0x0a*/ u16 field_0xa;
|
||||
/*0x0c*/ u8* field_0xc;
|
||||
/*0x10*/ u8 focusCoords[2];
|
||||
/*0x12*/ u8 field_0x12;
|
||||
/*0x13*/ u8 unk13;
|
||||
} Menu;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Menu base;
|
||||
/*0x10*/ union {
|
||||
s32 i;
|
||||
u16 h[2];
|
||||
u8 a[4];
|
||||
} unk10;
|
||||
/*0x12*/ // u8 field_0x12;
|
||||
/*0x13*/ // u8 unk13;
|
||||
/*0x14*/ u8 unk14;
|
||||
/*0x15*/ u8 unk15;
|
||||
/*0x16*/ u8 unk16;
|
||||
@@ -54,12 +62,67 @@ typedef struct {
|
||||
/* */ // directly in the code. This happens when you take the address off the field with '&`.
|
||||
/* */ // Perhaps they had a macro to cast this to different sized arrays.
|
||||
/*0x17*/ u8 selectMtx;
|
||||
/*0x18*/ u8 filler18[0x12];
|
||||
/*0x18*/ u16 unk18;
|
||||
/*0x1a*/ union SplitHWord unk1a;
|
||||
/*0x1c*/ u8 unk1c;
|
||||
/*0x1s*/ u8 unk1d;
|
||||
/*0x1e*/ u8 unk1e;
|
||||
/*0x1f*/ s8 unk1f;
|
||||
/*0x20*/ u8 unk20;
|
||||
/*0x21*/ u8 unk21;
|
||||
/*0x22*/ u8 filler22[6];
|
||||
/*0x28*/ u8 unk28;
|
||||
/*0x29*/ u8 unk29;
|
||||
/*0x2a*/ u8 unk2a;
|
||||
/*0x2c*/ int field_0x2c;
|
||||
} Menu;
|
||||
static_assert(sizeof(Menu) == 0x30);
|
||||
/*0x2b*/ u8 unk2b;
|
||||
/*0x2c*/ s8 unk2c;
|
||||
/*0x2d*/ u8 unk2d;
|
||||
/*0x2e*/ union SplitHWord unk2e;
|
||||
} GenericMenu;
|
||||
static_assert(sizeof(GenericMenu) == 0x30);
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Menu base;
|
||||
/*0x10*/ union SplitWord unk10;
|
||||
/*0x14*/ u8 filler14[4];
|
||||
/*0x18*/ u16 unk18;
|
||||
/*0x1a*/ u16 unk1a;
|
||||
/*0x1c*/ u8 filler1c[14];
|
||||
/*0x2a*/ u8 unk2a;
|
||||
/*0x2b*/ u8 filler2b[1];
|
||||
/*0x2c*/ s8 unk2c;
|
||||
/*0x2d*/ u8 filler2d[2];
|
||||
/*0x2f*/ s8 unk2f;
|
||||
} KinstoneMenu;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Menu base;
|
||||
/*0x10*/ union {
|
||||
u16 h[2];
|
||||
u8 a[4];
|
||||
} unk10;
|
||||
/*0x14*/ u8 filler14[6];
|
||||
/*0x1a*/ u8 unk1a;
|
||||
/*0x1b*/ u8 filler1b[1];
|
||||
/*0x1c*/ u8 unk1c;
|
||||
/*0x1d*/ u8 unk1d;
|
||||
/*0x1e*/ u8 unk1e;
|
||||
/*0x1f*/ s8 unk1f;
|
||||
/*0x20*/ u8 unk20;
|
||||
/*0x21*/ u8 unk21;
|
||||
/*0x22*/ u8 filler22[0xc];
|
||||
/*0x2e*/ u16 unk2e;
|
||||
} FigurineMenu;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Menu base;
|
||||
/*0x10*/ u8 items[17]; // unsure about size
|
||||
} PauseMenu;
|
||||
|
||||
extern Menu gMenu;
|
||||
#define gGenericMenu (*(GenericMenu*)&gMenu)
|
||||
#define gKinstoneMenu (*(KinstoneMenu*)&gMenu)
|
||||
#define gFigurineMenu (*(FigurineMenu*)&gMenu)
|
||||
#define gPauseMenu (*(PauseMenu*)&gMenu)
|
||||
|
||||
#endif
|
||||
|
||||
+2
-2
@@ -125,8 +125,8 @@ typedef struct {
|
||||
/* 0x0e */ s16 dungeon_y;
|
||||
/* 0x10 */ u16 dungeon_map_x;
|
||||
/* 0x12 */ u16 dungeon_map_y;
|
||||
/* 0x14 */ s16 overworld_map_x;
|
||||
/* 0x16 */ s16 overworld_map_y;
|
||||
/* 0x14 */ u16 overworld_map_x;
|
||||
/* 0x16 */ u16 overworld_map_y;
|
||||
/* 0x18 */ u8 field_0x24[0x8];
|
||||
} PlayerRoomStatus;
|
||||
static_assert(sizeof(PlayerRoomStatus) == 0x20);
|
||||
|
||||
+2
-2
@@ -68,8 +68,8 @@ typedef struct {
|
||||
} Screen;
|
||||
|
||||
typedef struct {
|
||||
u16 x;
|
||||
u16 y;
|
||||
s16 x;
|
||||
s16 y;
|
||||
u16 _4;
|
||||
u16 _6;
|
||||
u16 _8;
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#define NUM_BGM 99
|
||||
|
||||
void SoundReq(u32 sound);
|
||||
void SetBgmVolume(u32 volume);
|
||||
extern void EnqueueSFX(u32);
|
||||
|
||||
void InitSound(void);
|
||||
|
||||
+13
-1
@@ -99,7 +99,19 @@ typedef struct {
|
||||
} PriorityHandler;
|
||||
extern PriorityHandler gPriorityHandler;
|
||||
|
||||
extern u8 gUnk_02034490[];
|
||||
extern struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2[0xf];
|
||||
u8 unk11;
|
||||
u8 unk12;
|
||||
u8 unk13;
|
||||
s8 unk14;
|
||||
u8 unk15;
|
||||
s8 unk16;
|
||||
u8 unk17;
|
||||
} gUnk_02034490;
|
||||
static_assert(sizeof(gUnk_02034490) == 0x18);
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
|
||||
+43
-5
@@ -3,14 +3,52 @@
|
||||
|
||||
#include "global.h"
|
||||
|
||||
/** Subtasks override the game task for short periods */
|
||||
typedef enum {
|
||||
SUBTASK_EXIT,
|
||||
SUBTASK_PAUSEMENU,
|
||||
SUBTASK_EXIT2,
|
||||
SUBTASK_MAPHINT,
|
||||
SUBTASK_KINSTONEMENU,
|
||||
SUBTASK_AUXCUTSCENE, /* cutscene without presence of player */
|
||||
SUBTASK_PORTALCUTSCENE, /* player "falling" down portal cutscene */
|
||||
SUBTASK_FIGURINEMENU,
|
||||
SUBTASK_WORLDEVENT,
|
||||
SUBTASK_FASTTRAVEL,
|
||||
SUBTASK_LOCALMAPHINT,
|
||||
} ESubtask;
|
||||
|
||||
typedef void(Subtask)(void);
|
||||
|
||||
/** @name Subtask entrypoints */
|
||||
///@{
|
||||
/** Subtask entrypoint. */
|
||||
Subtask Subtask_Exit;
|
||||
Subtask Subtask_PauseMenu;
|
||||
Subtask Subtask_Exit;
|
||||
Subtask Subtask_MapHint;
|
||||
Subtask Subtask_KinstoneMenu;
|
||||
Subtask Subtask_AuxCutscene;
|
||||
Subtask Subtask_PortalCutscene;
|
||||
Subtask Subtask_FigurineMenu;
|
||||
Subtask Subtask_WorldEvent;
|
||||
Subtask Subtask_FastTravel;
|
||||
Subtask Subtask_LocalMapHint;
|
||||
///@}
|
||||
|
||||
// todo: separate headers for each subtask?
|
||||
|
||||
extern void sub_080A4528(void);
|
||||
extern void sub_080A4398(void);
|
||||
extern void sub_080A7114(u32);
|
||||
extern void sub_080A3B74(void);
|
||||
extern void sub_080A4054(void);
|
||||
extern void SetMenuType(u32);
|
||||
extern void sub_080A4D34(void);
|
||||
extern u32 sub_080A4494(void);
|
||||
extern void sub_080A4E90(u8);
|
||||
extern void sub_080A4E84(u8);
|
||||
|
||||
extern const struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 filler[2];
|
||||
void (*func)(void);
|
||||
} gUnk_08128A38[];
|
||||
|
||||
#endif // SUBTASK_H
|
||||
|
||||
Reference in New Issue
Block a user