diff options
Diffstat (limited to 'src/code/graph.c')
| -rw-r--r-- | src/code/graph.c | 63 |
1 files changed, 35 insertions, 28 deletions
diff --git a/src/code/graph.c b/src/code/graph.c index ba683b267..1c9093dc9 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -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 { |
