diff options
| author | fig02 <fig02srl@gmail.com> | 2020-04-05 13:46:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-05 13:46:18 -0400 |
| commit | ab669e16ebaa18fd60a367c9d50be2f2c9800c09 (patch) | |
| tree | 0093367ebf3d67a5351e70d0466ebedafc2aa826 /include | |
| parent | b96c016948539c9a9de28fb9658ec550d59b0f3a (diff) | |
| parent | 43acba22a94c4e90a237dda5a3376c099633cbda (diff) | |
Merge pull request #50 from Random06457/master
Decompile graph.c
Diffstat (limited to 'include')
| -rw-r--r-- | include/functions.h | 37 | ||||
| -rw-r--r-- | include/macros.h | 9 | ||||
| -rw-r--r-- | include/sched.h | 10 | ||||
| -rw-r--r-- | include/ultra64/gbi.h | 10 | ||||
| -rw-r--r-- | include/variables.h | 35 | ||||
| -rw-r--r-- | include/z64.h | 87 |
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 |
