game.c doc

This commit is contained in:
theo3
2022-01-04 18:39:32 -08:00
parent 52db70bb9d
commit 7036ec73af
49 changed files with 563 additions and 488 deletions
+2 -2
View File
@@ -43,8 +43,8 @@ typedef struct {
RoomResInfo roomResInfos[MAX_ROOMS];
RoomResInfo currentRoomInfo;
RoomResInfo* pCurrentRoomInfo;
u32 musicIndex;
u32 pMusicIndex;
u32 bgm;
u32 queued_bgm;
u8 filler5[0x20];
void* transitionManager;
void (*onEnter)();
+1 -1
View File
@@ -100,7 +100,7 @@ extern void sub_0804ED18();
extern void sub_080AF2E4(void);
extern void sub_0804F578(void);
extern void sub_08059994(void);
extern void sub_080ADA14(u32, u32); // trampoline to sub_080B27F4
extern void DrawDirect(u32, u32); // trampoline to sub_080B27F4
extern void sub_0801E1B8(u32, u32);
extern void sub_080A3B74(void);
extern void sub_080A4054(void);
+83 -48
View File
@@ -4,60 +4,50 @@
#include "global.h"
#include "area.h"
enum {
GAMETASK_TRANSITION,
GAMETASK_INIT,
GAMETASK_MAIN,
GAMETASK_EXIT,
};
enum {
GAMEMAIN_INITROOM,
GAMEMAIN_CHANGEROOM,
GAMEMAIN_UPDATE,
GAMEMAIN_CHANGEAREA,
GAMEMAIN_MINISHPORTAL,
GAMEMAIN_BARRELUPDATE,
GAMEMAIN_RESERVED,
GAMEMAIN_SUBTASK,
};
void ChangeLightLevel(s32);
void ChangeLightLevel(s32 level);
void SetPopupState(u32 type, u32 choice_idx);
bool32 CheckIsOverworld(void);
bool32 sub_08052638(u32 r0);
bool32 CheckAreaOverworld(u32 area);
bool32 AreaIsOverworld(void);
bool32 AreaIsDungeon(void);
bool32 AreaHasEnemies(void);
bool32 AreaHasNoEnemies(void);
bool32 AreaHasMap(void);
bool32 AreaHasKeys(void);
#ifndef EU
u32 sub_08052654(void);
#endif
u32 CheckIsDungeon(void);
u32 CheckIsInteriorWithEnemies(void);
u32 CheckIsInteriorNoEnemies(void);
u32 CheckHasMap(void);
// This function was introduced to allow warping from indoor areas (palace of winds).
u32 AreaAllowsWarp(void);
u32 ItemIsSword(u32 item);
void sub_080526F8(s32 a1);
u32 sub_08052724(void);
u32 HasDungeonMap(void);
u32 HasDungeonCompass(void);
u32 HasDungeonBigKey(void);
u32 HasDungeonSmallKey(void);
void sub_080527FC(u32 a1, u32 a2);
#ifndef EU
// related to a music bug?
void sub_08052878(void);
#endif
void RoomExitCallback(void);
void sub_080526F8(s32 a1);
bool32 HasDungeonMap(void);
bool32 HasDungeonCompass(void);
bool32 HasDungeonBigKey(void);
bool32 HasDungeonSmallKey(void);
bool32 ItemIsSword(u32 item);
bool32 ItemIsShield(u32 item);
u32 GetBottleContaining(u32 item);
void LoadGfxGroups(void);
void LoadCutsceneRoom(u32 room, u32 area);
void InitRoom(void);
void InitParachuteRoom(void);
u32 sub_08052B24(void);
void RegisterTransitionManager(void* mgr, void (*onEnter)(void), void (*onExit)(void));
void RoomExitCallback(void);
void RestoreGameTask(u32 a1);
bool32 CanDispEzloMessage(void);
void DisplayEzloMessage(void);
void sub_08052CA4(u32 area, u32 room, u32 x, u32 y);
void sub_08052CD0(u32 area, u32 room, u32 x, u32 y);
void InitRoom(void);
void SetWorldMapPos(u32 area, u32 room, u32 x, u32 y);
void SetDungeonMapPos(u32 area, u32 room, u32 x, u32 y);
/**
* @brief Get bank offset for area
@@ -66,14 +56,59 @@ u32 GetFlagBankOffset(u32 idx);
RoomResInfo* GetCurrentRoomInfo(void);
void sub_08052EA0(void);
void sub_08052FD8(u32 room, u32 area);
void sub_08053250(void);
void LoadGfxGroups(void);
void sub_080533CC(void);
void sub_08053494(void);
void sub_080534AC(void);
void sub_08053500(void);
void InitBiggoronTimer(void);
u32 GetBottleContaining(u32);
enum {
GAMETASK_TRANSITION, /* transition from fileselect task */
GAMETASK_INIT,
GAMETASK_MAIN,
GAMETASK_EXIT, /* gameover task or reset */
};
enum {
GAMEMAIN_INITROOM,
GAMEMAIN_CHANGEROOM,
GAMEMAIN_UPDATE,
GAMEMAIN_CHANGEAREA,
GAMEMAIN_MINISHPORTAL, /* moments after viewing portal cutscene */
GAMEMAIN_BARRELUPDATE, /* barrel in deepwood shrine */
GAMEMAIN_RESERVED,
GAMEMAIN_SUBTASK,
};
/**
* @brief Subtasks override the game task for short periods
*/
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,
};
typedef void(Subtask)(void);
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
+1 -1
View File
@@ -280,7 +280,7 @@ extern u16 gWalletSizes[];
extern PlayerState gPlayerState;
extern Entity gPlayerEntity;
u32 CheckPlayerActivity(void);
u32 CheckPlayerInactive(void);
void SetPlayerControl(PlayerControlMode mode);
void ResetPlayer(void);
void ResetPlayerVelocity(void);
+1 -1
View File
@@ -51,7 +51,7 @@ typedef struct {
/*0x25C*/ u8 flags[0x200];
/*0x45C*/ u8 unk45C[0x10];
/*0x46C*/ u8 unk46C[0x20];
/*0x48C*/ u32 unk48C[7];
/*0x48C*/ u32 timers[7];
/*0x4A8*/ u32 demo_timer;
/*0x4AC*/ u8 filler4ac[0x8];
} SaveFile;