summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/CommandProcessor.h
diff options
context:
space:
mode:
authorTillmann Karras <tilkax@gmail.com>2024-11-16 16:08:54 +0000
committerTillmann Karras <tilkax@gmail.com>2025-05-05 21:18:37 +0100
commit6f25e20c6a0c5b4027fffe2bea0116728018e7df (patch)
tree8b2d53116f2fe220829f589ac2a5e36c0eb4b20a /Source/Core/VideoCommon/CommandProcessor.h
parentd2db9d95906de73d704bd0f32bd1ee79f4a442f6 (diff)
VideoCommon: reset some CP registers during PI_FIFO_RESET
This fixes the shutdown error in SpongeBob Globs of Doom.
Diffstat (limited to 'Source/Core/VideoCommon/CommandProcessor.h')
-rw-r--r--Source/Core/VideoCommon/CommandProcessor.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/Source/Core/VideoCommon/CommandProcessor.h b/Source/Core/VideoCommon/CommandProcessor.h
index fcd81a893e..e4bb4cd136 100644
--- a/Source/Core/VideoCommon/CommandProcessor.h
+++ b/Source/Core/VideoCommon/CommandProcessor.h
@@ -60,6 +60,7 @@ enum
CTRL_REGISTER = 0x02,
CLEAR_REGISTER = 0x04,
PERF_SELECT = 0x06,
+ UNK_0A_REGISTER = 0x0A,
FIFO_BASE_LO = 0x20,
FIFO_BASE_HI = 0x22,
FIFO_END_LO = 0x24,
@@ -142,7 +143,8 @@ union UCPClearReg
{
u16 ClearFifoOverflow : 1;
u16 ClearFifoUnderflow : 1;
- u16 ClearMetrices : 1;
+ // set by GXClearGPMetric
+ u16 ClearMetrics : 1;
u16 : 13;
};
u16 Hex;
@@ -178,6 +180,7 @@ public:
void SetCpClearRegister();
void SetCpControlRegister();
void SetCpStatusRegister();
+ void ResetFifo();
void HandleUnknownOpcode(u8 cmd_byte, const u8* buffer, bool preprocess);
@@ -194,6 +197,8 @@ private:
UCPStatusReg m_cp_status_reg;
UCPCtrlReg m_cp_ctrl_reg;
UCPClearReg m_cp_clear_reg;
+ u16 m_perf_select = 0;
+ u16 m_unk_0a_reg = 0;
u16 m_bbox_left = 0;
u16 m_bbox_top = 0;