mirror of
https://github.com/zeldaret/oot
synced 2026-08-21 22:40:55 -04:00
Decomp game.c (#129)
* decomp most of game.c * improve GameState_DrawInputDisplay matching * fix merge conflicts * pr suggestions * remove builtin math functions
This commit is contained in:
+20
-30
@@ -80,16 +80,6 @@ s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flag);
|
||||
void __createSpeedParam(void);
|
||||
void __osInitialize_common(void);
|
||||
void __osInitialize_autodetect();
|
||||
// ? __ull_rshift(?);
|
||||
// ? __ull_rem(?);
|
||||
// ? __ull_div(?);
|
||||
// ? __ll_lshift(?);
|
||||
// ? __ll_rem(?);
|
||||
// ? __ll_div(?);
|
||||
// ? __ll_mul(?);
|
||||
// ? __ull_divremi(?);
|
||||
// ? __ll_mod(?);
|
||||
// ? __ll_rshift(?);
|
||||
void __osExceptionPreamble();
|
||||
// ? __osException(?);
|
||||
void __osEnqueueAndYield(OSThread**);
|
||||
@@ -801,9 +791,9 @@ void SaveContext_Init(void);
|
||||
void func_8006375C(s32 arg0, s32 arg1, float* d_80855320);
|
||||
// ? func_8006376C(?);
|
||||
// ? func_80063828(?);
|
||||
// ? func_8006390C(?);
|
||||
void func_8006390C(Input* input);
|
||||
// ? func_80063C04(?);
|
||||
// ? func_80063D7C(?);
|
||||
void func_80063D7C(GraphicsContext* gfxCtx);
|
||||
void DebugDisplay_Init(void);
|
||||
DebugDispObject* DebugDisplay_AddObject(f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, f32 scaleX,
|
||||
f32 scaleY, f32 scaleZ, u8 red, u8 green, u8 blue, u8 alpha, s16 type,
|
||||
@@ -1316,15 +1306,15 @@ s32 func_800ABE74(f32 eyeX, f32 eyeY, f32 eyeZ);
|
||||
// ? func_800ACAF8(?);
|
||||
// ? func_800ACE70(?);
|
||||
// ? func_800ACE90(?);
|
||||
// ? func_800ACE98(?);
|
||||
void func_800ACE98(struct_801664F0*, Gfx**);
|
||||
// ? func_800AD000(?);
|
||||
// ? func_800AD054(?);
|
||||
// ? func_800AD080(?);
|
||||
// ? func_800AD394(?);
|
||||
void func_800AD5C0(UNK_PTR, Gfx**);
|
||||
void func_800AD5C0(VisMonoStruct*, Gfx**);
|
||||
// ? func_800AD920(?);
|
||||
// ? func_800AD950(?);
|
||||
// ? func_800AD958(?);
|
||||
void func_800AD958(struct_801664F0*, Gfx**);
|
||||
// ? func_800ADBB0(?);
|
||||
// ? func_800AE2C0(?);
|
||||
// ? func_800AEFC8(?);
|
||||
@@ -1524,22 +1514,22 @@ void AudioMgr_Start(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedCo
|
||||
void TitleSetup_InitImpl(GameState* gameState);
|
||||
void TitleSetup_Destroy(GameState* gameState);
|
||||
void TitleSetup_Init(GameState* gameState);
|
||||
// ? func_800C4130(?);
|
||||
// ? func_800C41F0(?);
|
||||
void GameState_FaultPrint(void);
|
||||
void GameState_SetFBFilter(Gfx** gfx);
|
||||
// ? func_800C4344(?);
|
||||
// ? func_800C4558(?);
|
||||
// ? func_800C46EC(?);
|
||||
// ? func_800C48CC(?);
|
||||
void GameState_DrawInputDisplay(u16 input, Gfx** gfx);
|
||||
void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx);
|
||||
void GameState_SetFrameBuffer(GraphicsContext* gfxCtx);
|
||||
// ? func_800C49F4(?);
|
||||
// ? func_800C4A98(?);
|
||||
// ? func_800C4AC8(?);
|
||||
// ? func_800C4E80(?);
|
||||
// ? func_800C4F20(?);
|
||||
// ? func_800C5080(?);
|
||||
// ? func_800C5360(?);
|
||||
// ? func_800C546C(?);
|
||||
// ? func_800C547C(?);
|
||||
void* Game_Alloc(GameState* gameState, size_t size, char* file, s32 line);
|
||||
void GameState_ReqPadData(GameState* gameState);
|
||||
void GameState_Update(GameState* gameState);
|
||||
void GameState_InitArena(GameState* gameState, size_t size);
|
||||
void GameState_Realloc(GameState* gameState, size_t size);
|
||||
void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* gfxCtx);
|
||||
void GameState_Destroy(GameState* gameState);
|
||||
GameStateFunc GameState_GetInit(GameState* gameState);
|
||||
u32 GameState_IsRunning(GameState* gameState);
|
||||
void* GameState_AllocEnd(GameState* gameState, size_t size, char* file, s32 line);
|
||||
void func_800C55D0(GameAlloc* this);
|
||||
void* GameAlloc_MallocDebug(GameAlloc* this, u32 size, const char* file, s32 line);
|
||||
void* GameAlloc_Malloc(GameAlloc* this, u32 size);
|
||||
@@ -1550,7 +1540,7 @@ void Graph_FaultClient();
|
||||
void Graph_DisassembleUCode(void* arg0);
|
||||
void Graph_UCodeFaultClient(void* arg0);
|
||||
void* Graph_InitTHGA(GraphicsContext* gfxCtx);
|
||||
GameStateOverlay* Graph_GetNextGameState();
|
||||
GameStateOverlay* Graph_GetNextGameState(GameState* gameState);
|
||||
void Graph_Init(GraphicsContext* gfxCtx);
|
||||
void Graph_Destroy(GraphicsContext* gfxCtx);
|
||||
void Graph_TaskSet00(GraphicsContext* gfxCtx);
|
||||
|
||||
+58
-50
@@ -38,55 +38,63 @@
|
||||
#define kREG(r) BASE_REG(27, r)
|
||||
#define bREG(r) BASE_REG(28, r)
|
||||
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#define R_PAUSE_MENU_MODE SREG(94)
|
||||
#define R_C_UP_ICON_X YREG(88)
|
||||
#define R_C_UP_ICON_Y YREG(89)
|
||||
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
|
||||
#define R_C_BTN_COLOR(i) ZREG(39 + i)
|
||||
#define R_B_BTN_COLOR(i) ZREG(43 + i)
|
||||
#define R_START_LABEL_DD(i) ZREG(48 + i)
|
||||
#define R_START_LABEL_Y(i) ZREG(51 + i)
|
||||
#define R_START_LABEL_X(i) ZREG(54 + i)
|
||||
#define R_C_UP_BTN_X ZREG(62)
|
||||
#define R_C_UP_BTN_Y ZREG(63)
|
||||
#define R_START_BTN_X ZREG(68)
|
||||
#define R_START_BTN_Y ZREG(69)
|
||||
#define R_ITEM_BTN_X(i) ZREG(70 + i)
|
||||
#define R_ITEM_BTN_Y(i) ZREG(74 + i)
|
||||
#define R_ITEM_BTN_DD(i) ZREG(78 + i)
|
||||
#define R_ITEM_ICON_X(i) ZREG(82 + i)
|
||||
#define R_ITEM_ICON_Y(i) ZREG(86 + i)
|
||||
#define R_ITEM_ICON_DD(i) ZREG(90 + i)
|
||||
#define R_A_BTN_Y XREG(16)
|
||||
#define R_A_BTN_X XREG(17)
|
||||
#define R_A_ICON_Y XREG(19)
|
||||
#define R_A_ICON_X XREG(20)
|
||||
#define R_A_BTN_COLOR(i) XREG(22 + i)
|
||||
#define R_MAGIC_BAR_SMALL_Y XREG(48)
|
||||
#define R_MAGIC_BAR_X XREG(49)
|
||||
#define R_MAGIC_BAR_LARGE_Y XREG(50)
|
||||
#define R_MAGIC_FILL_X XREG(51)
|
||||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
#define R_MINIMAP_TOGGLED WREG(31)
|
||||
#define R_B_LABEL_X(i) WREG(40 + i)
|
||||
#define R_B_LABEL_Y(i) WREG(43 + i)
|
||||
#define R_DGN_MINIMAP_X WREG(68)
|
||||
#define R_DGN_MINIMAP_Y WREG(69)
|
||||
#define R_MAP_INDEX VREG(11)
|
||||
#define R_MAP_TEX_INDEX_BASE VREG(12)
|
||||
#define R_MAP_TEX_INDEX VREG(13)
|
||||
#define R_COMPASS_SCALE_X VREG(14)
|
||||
#define R_COMPASS_SCALE_Y VREG(15)
|
||||
#define R_COMPASS_OFFSET_X VREG(16)
|
||||
#define R_COMPASS_OFFSET_Y VREG(17)
|
||||
#define R_MINIMAP_COLOR(i) VREG(18 + i)
|
||||
#define R_ITEM_AMMO_X(i) VREG(64 + i)
|
||||
#define R_ITEM_AMMO_Y(i) VREG(68 + i)
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
#define R_ENABLE_ARENA_DBG SREG(0)
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#define R_ENABLE_AUDIO_DBG SREG(36)
|
||||
#define R_FB_FILTER_TYPE SREG(80)
|
||||
#define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c)
|
||||
#define R_FB_FILTER_A SREG(84)
|
||||
#define R_FB_FILTER_ENV_COLOR(c) SREG(85 + c)
|
||||
#define R_ENABLE_FB_FILTER SREG(88)
|
||||
#define R_PAUSE_MENU_MODE SREG(94)
|
||||
#define R_C_UP_ICON_X YREG(88)
|
||||
#define R_C_UP_ICON_Y YREG(89)
|
||||
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
|
||||
#define R_C_BTN_COLOR(i) ZREG(39 + i)
|
||||
#define R_B_BTN_COLOR(i) ZREG(43 + i)
|
||||
#define R_START_LABEL_DD(i) ZREG(48 + i)
|
||||
#define R_START_LABEL_Y(i) ZREG(51 + i)
|
||||
#define R_START_LABEL_X(i) ZREG(54 + i)
|
||||
#define R_C_UP_BTN_X ZREG(62)
|
||||
#define R_C_UP_BTN_Y ZREG(63)
|
||||
#define R_START_BTN_X ZREG(68)
|
||||
#define R_START_BTN_Y ZREG(69)
|
||||
#define R_ITEM_BTN_X(i) ZREG(70 + i)
|
||||
#define R_ITEM_BTN_Y(i) ZREG(74 + i)
|
||||
#define R_ITEM_BTN_DD(i) ZREG(78 + i)
|
||||
#define R_ITEM_ICON_X(i) ZREG(82 + i)
|
||||
#define R_ITEM_ICON_Y(i) ZREG(86 + i)
|
||||
#define R_ITEM_ICON_DD(i) ZREG(90 + i)
|
||||
#define R_A_BTN_Y XREG(16)
|
||||
#define R_A_BTN_X XREG(17)
|
||||
#define R_A_ICON_Y XREG(19)
|
||||
#define R_A_ICON_X XREG(20)
|
||||
#define R_A_BTN_COLOR(i) XREG(22 + i)
|
||||
#define R_MAGIC_BAR_SMALL_Y XREG(48)
|
||||
#define R_MAGIC_BAR_X XREG(49)
|
||||
#define R_MAGIC_BAR_LARGE_Y XREG(50)
|
||||
#define R_MAGIC_FILL_X XREG(51)
|
||||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
#define R_MINIMAP_TOGGLED WREG(31)
|
||||
#define R_B_LABEL_X(i) WREG(40 + i)
|
||||
#define R_B_LABEL_Y(i) WREG(43 + i)
|
||||
#define R_DGN_MINIMAP_X WREG(68)
|
||||
#define R_DGN_MINIMAP_Y WREG(69)
|
||||
#define R_MAP_INDEX VREG(11)
|
||||
#define R_MAP_TEX_INDEX_BASE VREG(12)
|
||||
#define R_MAP_TEX_INDEX VREG(13)
|
||||
#define R_COMPASS_SCALE_X VREG(14)
|
||||
#define R_COMPASS_SCALE_Y VREG(15)
|
||||
#define R_COMPASS_OFFSET_X VREG(16)
|
||||
#define R_COMPASS_OFFSET_Y VREG(17)
|
||||
#define R_MINIMAP_COLOR(i) VREG(18 + i)
|
||||
#define R_ITEM_AMMO_X(i) VREG(64 + i)
|
||||
#define R_ITEM_AMMO_Y(i) VREG(68 + i)
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
#define R_DISABLE_INPUT_DISPLAY HREG(47)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -88,6 +88,8 @@ extern u8 osAppNmiBuffer[];
|
||||
extern u8 D_80009320[];
|
||||
extern u8 D_800093F0[];
|
||||
extern u8 D_80009430;
|
||||
extern u32 D_80009460;
|
||||
extern u32 gDmaMgrDmaBuffSize;
|
||||
extern volatile u8 gViConfigUseDefault;
|
||||
extern u8 gViConfigAdditionalScanLines;
|
||||
extern u32 gViConfigFeatures;
|
||||
|
||||
+20
-6
@@ -971,11 +971,15 @@ typedef struct {
|
||||
/* 0x10 */ GameAllocEntry* head;
|
||||
} GameAlloc; // size = 0x14
|
||||
|
||||
struct GameState;
|
||||
|
||||
typedef void (*GameStateFunc)(struct GameState* gameState);
|
||||
|
||||
typedef struct GameState {
|
||||
/* 0x00 */ GraphicsContext* gfxCtx;
|
||||
/* 0x04 */ void (*main)(struct GameState*);
|
||||
/* 0x08 */ void (*destroy)(struct GameState*); // "cleanup"
|
||||
/* 0x0C */ void (*init)(struct GameState*);
|
||||
/* 0x04 */ GameStateFunc main;
|
||||
/* 0x08 */ GameStateFunc destroy; // "cleanup"
|
||||
/* 0x0C */ GameStateFunc init;
|
||||
/* 0x10 */ u32 size;
|
||||
/* 0x14 */ Input input[4];
|
||||
/* 0x74 */ TwoHeadArena tha;
|
||||
@@ -1693,11 +1697,21 @@ typedef struct {
|
||||
} JpegContext; // size = 0xB8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ char unk_00[0x08];
|
||||
/* 0x08 */ Color_RGBA8 color;
|
||||
/* 0x0C */ char unk_0C[0x0C];
|
||||
/* 0x00 */ s32 colorFormat;
|
||||
/* 0x04 */ s32 setScissor;
|
||||
/* 0x08 */ Color_RGBA8 primColor;
|
||||
/* 0x0C */ Color_RGBA8 envColor;
|
||||
/* 0x10 */ u16* texture;
|
||||
/* 0x14 */ Gfx* monoDList;
|
||||
} VisMonoStruct; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 type;
|
||||
/* 0x04 */ u32 setScissor;
|
||||
/* 0x08 */ Color_RGBA8 color;
|
||||
/* 0x0C */ Color_RGBA8 envColor;
|
||||
} struct_801664F0; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 rumbleEnable[4];
|
||||
/* 0x004 */ u8 unk_04[0x40];
|
||||
|
||||
Reference in New Issue
Block a user