mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-05 15:34:41 +00:00
Merge commit 'eb0a82c513
' into doc_pause_menu
This commit is contained in:
commit
5e38f2cfaa
12 changed files with 370 additions and 188 deletions
|
@ -45,23 +45,28 @@ void UCodeDisas_Disassemble(UCodeDisas*, Gfx*);
|
|||
void Graph_DisassembleUCode(Gfx* workBuf) {
|
||||
UCodeDisas disassembler;
|
||||
|
||||
if (HREG(80) == 7 && HREG(81) != 0) {
|
||||
if (R_HREG_MODE == HREG_MODE_UCODE_DISAS && R_UCODE_DISAS_TOGGLE != 0) {
|
||||
UCodeDisas_Init(&disassembler);
|
||||
disassembler.enableLog = HREG(83);
|
||||
disassembler.enableLog = R_UCODE_DISAS_LOG_LEVEL;
|
||||
|
||||
UCodeDisas_RegisterUCode(&disassembler, ARRAY_COUNT(D_8012D230), D_8012D230);
|
||||
UCodeDisas_SetCurUCode(&disassembler, gspF3DZEX2_NoN_PosLight_fifoTextStart);
|
||||
|
||||
UCodeDisas_Disassemble(&disassembler, workBuf);
|
||||
HREG(93) = disassembler.dlCnt;
|
||||
HREG(84) = disassembler.tri2Cnt * 2 + disassembler.tri1Cnt + (disassembler.quadCnt * 2) + disassembler.lineCnt;
|
||||
HREG(85) = disassembler.vtxCnt;
|
||||
HREG(86) = disassembler.spvtxCnt;
|
||||
HREG(87) = disassembler.tri1Cnt;
|
||||
HREG(88) = disassembler.tri2Cnt;
|
||||
HREG(89) = disassembler.quadCnt;
|
||||
HREG(90) = disassembler.lineCnt;
|
||||
HREG(91) = disassembler.syncErr;
|
||||
HREG(92) = disassembler.loaducodeCnt;
|
||||
if (HREG(82) == 1 || HREG(82) == 2) {
|
||||
|
||||
R_UCODE_DISAS_DL_COUNT = disassembler.dlCnt;
|
||||
R_UCODE_DISAS_TOTAL_COUNT =
|
||||
disassembler.tri2Cnt * 2 + disassembler.tri1Cnt + (disassembler.quadCnt * 2) + disassembler.lineCnt;
|
||||
R_UCODE_DISAS_VTX_COUNT = disassembler.vtxCnt;
|
||||
R_UCODE_DISAS_SPVTX_COUNT = disassembler.spvtxCnt;
|
||||
R_UCODE_DISAS_TRI1_COUNT = disassembler.tri1Cnt;
|
||||
R_UCODE_DISAS_TRI2_COUNT = disassembler.tri2Cnt;
|
||||
R_UCODE_DISAS_QUAD_COUNT = disassembler.quadCnt;
|
||||
R_UCODE_DISAS_LINE_COUNT = disassembler.lineCnt;
|
||||
R_UCODE_DISAS_SYNC_ERROR_COUNT = disassembler.syncErr;
|
||||
R_UCODE_DISAS_LOAD_COUNT = disassembler.loaducodeCnt;
|
||||
|
||||
if (R_UCODE_DISAS_LOG_MODE == 1 || R_UCODE_DISAS_LOG_MODE == 2) {
|
||||
osSyncPrintf("vtx_cnt=%d\n", disassembler.vtxCnt);
|
||||
osSyncPrintf("spvtx_cnt=%d\n", disassembler.spvtxCnt);
|
||||
osSyncPrintf("tri1_cnt=%d\n", disassembler.tri1Cnt);
|
||||
|
@ -73,6 +78,7 @@ void Graph_DisassembleUCode(Gfx* workBuf) {
|
|||
osSyncPrintf("dl_depth=%d\n", disassembler.dlDepth);
|
||||
osSyncPrintf("dl_cnt=%d\n", disassembler.dlCnt);
|
||||
}
|
||||
|
||||
UCodeDisas_Destroy(&disassembler);
|
||||
}
|
||||
}
|
||||
|
@ -181,12 +187,13 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) {
|
|||
|
||||
SREG(6) = -1;
|
||||
if (sPrevTaskWorkBuffer != NULL) {
|
||||
HREG(80) = 7;
|
||||
HREG(81) = 1;
|
||||
HREG(83) = 2;
|
||||
R_HREG_MODE = HREG_MODE_UCODE_DISAS;
|
||||
R_UCODE_DISAS_TOGGLE = 1;
|
||||
R_UCODE_DISAS_LOG_LEVEL = 2;
|
||||
sPrevTaskWorkBuffer = sPrevTaskWorkBuffer;
|
||||
Graph_DisassembleUCode(sPrevTaskWorkBuffer);
|
||||
}
|
||||
|
||||
Fault_AddHungupAndCrashImpl("RCP is HUNG UP!!", "Oh! MY GOD!!");
|
||||
}
|
||||
|
||||
|
@ -303,30 +310,30 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) {
|
|||
|
||||
CLOSE_DISPS(gfxCtx, "../graph.c", 1028);
|
||||
|
||||
if (HREG(80) == 10 && HREG(93) == 2) {
|
||||
HREG(80) = 7;
|
||||
HREG(81) = -1;
|
||||
HREG(83) = HREG(92);
|
||||
if (R_HREG_MODE == HREG_MODE_PLAY && R_PLAY_ENABLE_UCODE_DISAS == 2) {
|
||||
R_HREG_MODE = HREG_MODE_UCODE_DISAS;
|
||||
R_UCODE_DISAS_TOGGLE = -1;
|
||||
R_UCODE_DISAS_LOG_LEVEL = R_PLAY_UCODE_DISAS_LOG_LEVEL;
|
||||
}
|
||||
|
||||
if (HREG(80) == 7 && HREG(81) != 0) {
|
||||
if (HREG(82) == 3) {
|
||||
if (R_HREG_MODE == HREG_MODE_UCODE_DISAS && R_UCODE_DISAS_TOGGLE != 0) {
|
||||
if (R_UCODE_DISAS_LOG_MODE == 3) {
|
||||
Fault_AddClient(&sGraphUcodeFaultClient, Graph_UCodeFaultClient, gfxCtx->workBuffer, "do_count_fault");
|
||||
}
|
||||
|
||||
Graph_DisassembleUCode(gfxCtx->workBuffer);
|
||||
|
||||
if (HREG(82) == 3) {
|
||||
if (R_UCODE_DISAS_LOG_MODE == 3) {
|
||||
Fault_RemoveClient(&sGraphUcodeFaultClient);
|
||||
}
|
||||
|
||||
if (HREG(81) < 0) {
|
||||
if (R_UCODE_DISAS_TOGGLE < 0) {
|
||||
LogUtils_LogHexDump((void*)PHYS_TO_K1(SP_BASE_REG), 0x20);
|
||||
LogUtils_LogHexDump((void*)PHYS_TO_K1(DPC_BASE_REG), 0x20);
|
||||
}
|
||||
|
||||
if (HREG(81) < 0) {
|
||||
HREG(81) = 0;
|
||||
if (R_UCODE_DISAS_TOGGLE < 0) {
|
||||
R_UCODE_DISAS_TOGGLE = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -475,7 +482,7 @@ void* Graph_Alloc2(GraphicsContext* gfxCtx, size_t size) {
|
|||
}
|
||||
|
||||
void Graph_OpenDisps(Gfx** dispRefs, GraphicsContext* gfxCtx, const char* file, s32 line) {
|
||||
if (HREG(80) == 7 && HREG(82) != 4) {
|
||||
if (R_HREG_MODE == HREG_MODE_UCODE_DISAS && R_UCODE_DISAS_LOG_MODE != 4) {
|
||||
dispRefs[0] = gfxCtx->polyOpa.p;
|
||||
dispRefs[1] = gfxCtx->polyXlu.p;
|
||||
dispRefs[2] = gfxCtx->overlay.p;
|
||||
|
@ -487,7 +494,7 @@ void Graph_OpenDisps(Gfx** dispRefs, GraphicsContext* gfxCtx, const char* file,
|
|||
}
|
||||
|
||||
void Graph_CloseDisps(Gfx** dispRefs, GraphicsContext* gfxCtx, const char* file, s32 line) {
|
||||
if (HREG(80) == 7 && HREG(82) != 4) {
|
||||
if (R_HREG_MODE == HREG_MODE_UCODE_DISAS && R_UCODE_DISAS_LOG_MODE != 4) {
|
||||
if (dispRefs[0] + 1 == gfxCtx->polyOpa.p) {
|
||||
gfxCtx->polyOpa.p = dispRefs[0];
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue