summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorfig02 <fig02srl@gmail.com>2020-04-05 13:46:18 -0400
committerGitHub <noreply@github.com>2020-04-05 13:46:18 -0400
commitab669e16ebaa18fd60a367c9d50be2f2c9800c09 (patch)
tree0093367ebf3d67a5351e70d0466ebedafc2aa826 /include
parentb96c016948539c9a9de28fb9658ec550d59b0f3a (diff)
parent43acba22a94c4e90a237dda5a3376c099633cbda (diff)
Merge pull request #50 from Random06457/master
Decompile graph.c
Diffstat (limited to 'include')
-rw-r--r--include/functions.h37
-rw-r--r--include/macros.h9
-rw-r--r--include/sched.h10
-rw-r--r--include/ultra64/gbi.h10
-rw-r--r--include/variables.h35
-rw-r--r--include/z64.h87
6 files changed, 136 insertions, 52 deletions
diff --git a/include/functions.h b/include/functions.h
index 96671cda1..b1c8fcbbf 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -1419,7 +1419,7 @@ s32 func_800BC56C(GlobalContext*, s16);
// ? func_800BC5E0(?);
void func_800BC88C(GlobalContext*);
Gfx* func_800BC8A0(GlobalContext* globalCtx, Gfx* a1);
-// ? func_800BC8EC(?);
+void func_800BC8EC(GlobalContext*);
UNK_TYPE func_800BCA64(UNK_ARGS);
// ? func_800BD314(?);
// ? func_800BED40(?);
@@ -1529,22 +1529,23 @@ void* GameAlloc_Malloc(GameAlloc* this, u32 size);
void GameAlloc_Free(GameAlloc* this, void* data);
void GameAlloc_Cleanup(GameAlloc* this);
void GameAlloc_Init(GameAlloc* this);
-// ? func_800C5850(?);
-// ? func_800C58BC(?);
-// ? func_800C5AB0(?);
-// ? func_800C5B14(?);
-// ? func_800C5C2C(?);
-// ? func_800C5D08(?);
-// ? func_800C5D94(?);
-// ? func_800C5DC0(?);
-// ? func_800C61D8(?);
+void Graph_FaultClient();
+void Graph_DisassembleUCode(void* arg0);
+void Graph_UCodeFaultClient(void* arg0);
+void* Graph_InitTHGA(GraphicsContext* gfxCtx);
+GameStateOverlay* Graph_GetNextGameState();
+void Graph_Init(GraphicsContext* gfxCtx);
+void Graph_Destroy(GraphicsContext* gfxCtx);
+void Graph_TaskSet00(GraphicsContext* gfxCtx);
+void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState);
void Graph_ThreadEntry(void*);
void* Graph_Alloc(GraphicsContext* gfxCtx, size_t size);
-void func_800C6AC4(Gfx** a0, GraphicsContext* gfxCtx, char* file, s32 line);
-void func_800C6B54(Gfx** a0, GraphicsContext* gfxCtx, char* file, s32 line);
-Gfx* func_800C6C20(Gfx* a0);
-Gfx* func_800C6C28(Gfx* a0, Gfx* dlist); // branch dlist
-Gfx* func_800C6C3C(Gfx** a0, u32 size);
+void* Graph_Alloc2(GraphicsContext* gfxCtx, size_t size);
+void Graph_OpenDisps(Gfx** dispRefs, GraphicsContext* gfxCtx, const char* file, s32 line);
+void Graph_CloseDisps(Gfx** dispRefs, GraphicsContext* gfxCtx, const char* file, s32 line);
+Gfx* Graph_GfxPlusOne(Gfx* gfx);
+Gfx* Graph_BranchDlist(Gfx* gfx, Gfx* dst);
+void* Graph_DlistAlloc(Gfx** gfx, u32 size);
ListAlloc* ListAlloc_Init(ListAlloc* this);
void* ListAlloc_Alloc(ListAlloc* this, u32 size);
void ListAlloc_Free(ListAlloc* this, void* data);
@@ -2455,6 +2456,12 @@ void func_80110F68(GlobalContext* globalCtx);
void func_80112098(GlobalContext* globalCtx);
void Title_Init(TitleContext*);
+void Title_Destroy(TitleContext* this);
+void func_80801E44(GameState*); // Select_Init
+void func_80801E0C(GameState*); // Select_Destroy
void Opening_Init(OpeningContext* this);
+void Opening_Destroy(OpeningContext* this);
+void func_80811A20(GameState*); // FileChoose_Init
+void func_80811A18(GameState*); // FileChoose_Destroy
#endif
diff --git a/include/macros.h b/include/macros.h
index 217d01f84..ecd8c5acf 100644
--- a/include/macros.h
+++ b/include/macros.h
@@ -39,4 +39,13 @@
(curState)->init = newInit; \
(curState)->size = sizeof(newStruct);
+#define LOG(exp, value, format, file, line) \
+ LogUtils_LogThreadId(file, line); \
+ osSyncPrintf(exp " = " format "\n", value);
+
+#define LOG_ADDRESS(exp, value, file, line) LOG(exp, value, "%08x", file, line)
+#define LOG_STRING(string, file, line) LOG(#string, string, "%s", file, line)
+#define LOG_TIME(exp, value, file, line) LOG(exp, value, "%lld", file, line)
+#define LOG_NUM(exp, value, file, line) LOG(exp, value, "%d", file, line)
+
#endif
diff --git a/include/sched.h b/include/sched.h
index 656e55661..2873a310d 100644
--- a/include/sched.h
+++ b/include/sched.h
@@ -13,16 +13,6 @@
#define OS_SC_RCP_MASK 0x0003
#define OS_SC_TYPE_MASK 0x0007
-typedef struct OSScTask {
- /* 0x00 */ struct OSScTask* next;
- /* 0x04 */ u32 state;
- /* 0x08 */ u32 flags;
- /* 0x0C */ void* framebuffer;
- /* 0x10 */ OSTask list;
- /* 0x50 */ OSMesgQueue* msgQ;
- /* 0x54 */ OSMesg msg;
-} OSScTask;
-
typedef struct {
/* 0x00 */ char unk_00[0x12];
/* 0x12 */ s8 unk_12;
diff --git a/include/ultra64/gbi.h b/include/ultra64/gbi.h
index 541ad155d..f3f797e81 100644
--- a/include/ultra64/gbi.h
+++ b/include/ultra64/gbi.h
@@ -4482,6 +4482,16 @@ _DW({ \
#define gDPNoOpTag(pkt, tag) gDPParam(pkt, G_NOOP, tag)
#define gsDPNoOpTag(tag) gsDPParam(G_NOOP, tag)
+#define gDPNoOpHere(pkt, file, line) gDma1p(pkt, G_NOOP, file, line, 1)
+#define gDPNoOpString(pkt, data, n) gDma1p(pkt, G_NOOP, data, n, 2)
+#define gDPNoOpWord(pkt, data, n) gDma1p(pkt, G_NOOP, data, n, 3)
+#define gDPNoOpFloat(pkt, data, n) gDma1p(pkt, G_NOOP, data, n, 4)
+#define gDPNoOpQuiet(pkt) gDma1p(pkt, G_NOOP, 0, 0, 5)
+#define gDPNoOpVerbose(pkt, n) gDma1p(pkt, G_NOOP, 0, n, 5)
+#define gDPNoOpCallBack(pkt, callback) gDma1p(pkt, G_NOOP, callback, 0, 6)
+#define gDPNoOpOpenDisp(pkt, file, line) gDma1p(pkt, G_NOOP, file, line, 7)
+#define gDPNoOpCloseDisp(pkt, file, line) gDma1p(pkt, G_NOOP, file, line, 8)
+
#endif
/* Private macro to wrap other macros in do {...} while (0) */
diff --git a/include/variables.h b/include/variables.h
index 511f738f7..4b7c8d30a 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -137,6 +137,7 @@ extern u32 __osTimerCounter;
extern OSPiHandle __CartRomHandle;
extern DmaEntry gDmaDataTable[0x60C];
//extern ? D_800D7288;
+extern u8 D_801120C0[];
//extern ? D_80115440;
//extern ? D_80115760;
//extern ? D_80115770;
@@ -263,12 +264,7 @@ extern s32 D_8011D3AC;
extern s16 D_8011E0B0;
extern Color_RGBA8 D_8011E0B4[];
//extern ? D_8011E0D4;
-//extern ? D_8011F830;
-//extern ? D_8011F860;
-//extern ? D_8011F890;
-//extern ? D_8011F8C0;
-//extern ? D_8011F8F0;
-//extern ? D_8011F920;
+extern GameStateOverlay gGameStateOverlayTable[6];
//extern ? D_8011FA60;
//extern ? D_8011FA64;
//extern ? D_8011FA68;
@@ -3302,7 +3298,7 @@ extern char D_80146238[];
//extern ? D_80155500;
//extern ? D_80155BF0;
//extern ? D_80155C70;
-//extern ? D_80155F50;
+extern u8 D_80155F50[];
extern GlobalContext* D_80157DA0;
//extern ? D_80157DA4;
//extern ? D_80157DA8;
@@ -3531,22 +3527,19 @@ extern u32 gSegments[];
//extern ? D_8016A514;
//extern ? D_8016A518;
//extern ? D_8016A51C;
-//extern ? D_8016A520;
-//extern ? D_8016A528;
-//extern ? D_8016A530;
-//extern ? D_8016A538;
-//extern ? D_8016A540;
-//extern ? D_8016A548;
-//extern ? D_8016A550;
-//extern ? D_8016A558;
-//extern ? D_8016A55C;
-//extern ? D_8016A560;
-//extern ? D_8016A564;
-//extern ? D_8016A568;
-//extern ? D_8016A56C;
+extern volatile OSTime D_8016A520;
+extern volatile OSTime D_8016A528;
+extern volatile OSTime D_8016A530;
+extern volatile OSTime D_8016A538;
+extern volatile OSTime D_8016A540;
+extern volatile OSTime D_8016A548;
+extern volatile OSTime D_8016A550;
+extern volatile OSTime D_8016A558;
+extern volatile OSTime D_8016A560;
+extern volatile OSTime D_8016A568;
//extern ? D_8016A570;
//extern ? D_8016A574;
-//extern ? D_8016A580;
+extern volatile OSTime D_8016A580;
//extern ? D_8016A588;
//extern ? D_8016A590;
//extern ? D_8016A594;
diff --git a/include/z64.h b/include/z64.h
index 3d2f71391..ce839ef67 100644
--- a/include/z64.h
+++ b/include/z64.h
@@ -235,16 +235,48 @@ typedef struct {
/* 0x000C */ Gfx* d;
} TwoHeadGfxArena; // size = 0x10
-typedef struct {
- /* 0x0000 */ char unk_00[0x01B4];
+typedef struct OSScTask {
+ /* 0x00 */ struct OSScTask* next;
+ /* 0x04 */ u32 state;
+ /* 0x08 */ u32 flags;
+ /* 0x0C */ void* framebuffer;
+ /* 0x10 */ OSTask list;
+ /* 0x50 */ OSMesgQueue* msgQ;
+ /* 0x54 */ OSMesg msg;
+} OSScTask;
+
+typedef struct GraphicsContext {
+ /* 0x0000 */ Gfx* polyOpaBuffer;
+ /* 0x0004 */ Gfx* polyXluBuffer;
+ /* 0x0008 */ char unk_008[0x08];
+ /* 0x0010 */ Gfx* overlayBuffer;
+ /* 0x0014 */ u32 unk_014;
+ /* 0x0018 */ char unk_018[0x20];
+ /* 0x0038 */ OSMesg msgBuff[0x08];
+ /* 0x0058 */ OSMesgQueue* schedMsgQ;
+ /* 0x005C */ OSMesgQueue queue;
+ /* 0x0074 */ char unk_074[0x04];
+ /* 0x0078 */ OSScTask task; // size of OSScTask might be wrong
+ /* 0x00D0 */ char unk_0D0[0xE0];
+ /* 0x01B0 */ Gfx* workBuffer;
/* 0x01B4 */ TwoHeadGfxArena work;
- /* 0x01C4 */ char unk_1C4[0x00E4];
+ /* 0x01C4 */ char unk_01C4[0xC0];
+ /* 0x0284 */ OSViMode* viMode;
+ /* 0x0288 */ char unk_0288[0x20];
/* 0x02A8 */ TwoHeadGfxArena overlay;
/* 0x02B8 */ TwoHeadGfxArena polyOpa;
/* 0x02C8 */ TwoHeadGfxArena polyXlu;
- /* 0x02D8 */ char unk_2D8[0x0004];
- /* 0x02DC */ UNK_TYPE unk_2DC;
-} GraphicsContext;
+ /* 0x02D8 */ u32 gfxPoolIdx;
+ /* 0x02DC */ u16* curFrameBuffer;
+ /* 0x02E0 */ char unk_2E0[0x04];
+ /* 0x02E4 */ u32 viFeatures;
+ /* 0x02E8 */ s32 fbIdx;
+ /* 0x02EC */ void (*callback)(struct GraphicsContext*, u32);
+ /* 0x02F0 */ u32 callbackParam;
+ /* 0x02F4 */ f32 xScale;
+ /* 0x02F8 */ f32 yScale;
+ /* 0x02FC */ char unk_2FC[0x04];
+} GraphicsContext; // size = 0x300
typedef struct {
/* 0x00 */ union {
@@ -1326,4 +1358,47 @@ typedef struct {
/* 0x20 */ f32 unk_20;
} UnkQuakeCalcStruct; // size = 0x24
+typedef struct {
+ /* 0x00 */ u32 idx;
+ /* 0x04 */ void* ptr;
+} UCodeInfo; // size = 0x8
+
+typedef struct {
+ /* 0x00 */ u32 segments[NUM_SEGMENTS];
+ /* 0x40 */ u32 dlStack[18];
+ /* 0x88 */ u32 dlDepth;
+ /* 0x8C */ u32 dlCnt;
+ /* 0x90 */ u32 vtxCnt;
+ /* 0x94 */ u32 spvtxCnt;
+ /* 0x98 */ u32 tri1Cnt;
+ /* 0x9C */ u32 tri2Cnt;
+ /* 0xA0 */ u32 quadCnt;
+ /* 0xA4 */ u32 lineCnt;
+ /* 0xA8 */ u32 loaducodeCnt;
+ /* 0xAC */ u32 pipeSyncRequired;
+ /* 0xB0 */ u32 tileSyncRequired;
+ /* 0xB4 */ u32 loadSyncRequired;
+ /* 0xB8 */ u32 syncErr;
+ /* 0xBC */ u32 enableLog;
+ /* 0xC0 */ u32 ucodeInfoIdx;
+ /* 0xC4 */ u32 ucodeInfoCount;
+ /* 0xC8 */ UCodeInfo* ucodeInfo;
+ /* 0xCC */ u32 modeH;
+ /* 0xD0 */ u32 modeL;
+ /* 0xD4 */ u32 geometryMode;
+} UCodeDisas; // size = 0xD8
+
+typedef struct {
+ /* 0x00 */ u16* fb1;
+ /* 0x04 */ u16* swapbuffer;
+ /* 0x08 */ OSViMode* viMode;
+ /* 0x0C */ u32 features;
+ /* 0x10 */ u8 unk_10;
+ /* 0x11 */ u8 updateRate;
+ /* 0x12 */ u8 updateRate2;
+ /* 0x13 */ u8 unk_13;
+ /* 0x14 */ f32 xScale;
+ /* 0x18 */ f32 yScale;
+} CfbInfo; // size = 0x1C
+
#endif