summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Src/CommandProcessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoCommon/Src/CommandProcessor.cpp')
-rw-r--r--Source/Core/VideoCommon/Src/CommandProcessor.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/Src/CommandProcessor.cpp b/Source/Core/VideoCommon/Src/CommandProcessor.cpp
index e6a0589ba5..0adbf42b9b 100644
--- a/Source/Core/VideoCommon/Src/CommandProcessor.cpp
+++ b/Source/Core/VideoCommon/Src/CommandProcessor.cpp
@@ -118,6 +118,7 @@ volatile bool interruptSet= false;
volatile bool interruptWaiting= false;
volatile bool interruptTokenWaiting = false;
volatile bool interruptFinishWaiting = false;
+volatile bool OnOverflow = false;
void FifoCriticalEnter()
{
@@ -669,6 +670,26 @@ void STACKALIGN GatherPipeBursted()
UpdateInterruptsScMode();
}
}
+ else
+ {
+ if(fifo.CPReadWriteDistance == fifo.CPEnd - fifo.CPBase - 32)
+ {
+ if(!OnOverflow)
+ NOTICE_LOG(COMMANDPROCESSOR,"FIFO is almost in overflown, BreakPoint: %i", fifo.bFF_Breakpoint);
+ OnOverflow = true;
+ while (!CommandProcessor::interruptWaiting && fifo.bFF_GPReadEnable &&
+ fifo.CPReadWriteDistance > fifo.CPEnd - fifo.CPBase - 64)
+ Common::YieldCPU();
+
+
+
+
+ }
+ else
+ {
+ OnOverflow = false;
+ }
+ }
_assert_msg_(COMMANDPROCESSOR, fifo.CPReadWriteDistance <= fifo.CPEnd - fifo.CPBase,