summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Src/CommandProcessor.cpp
diff options
context:
space:
mode:
authorMarcos Vitali <marcosvitali@gmail.com>2011-02-08 01:11:11 +0000
committerMarcos Vitali <marcosvitali@gmail.com>2011-02-08 01:11:11 +0000
commitf0adc3adb46cb74b71bc2c95d82a4c0662f65d9a (patch)
treec6ac4ec13e856ceaee2867a68565d93ca0b24afc /Source/Core/VideoCommon/Src/CommandProcessor.cpp
parentfc370c51364f459706e2c1157f789988fc182f3a (diff)
Speed back to dolpihn: - Revert Read16 CPRead fifo hack for fix RE0. This hack only solve RE0 but brings slowdown in games like RE Umbrella, etc. - Move isFifoBusy again in the fifo loop and use s_fifoIdleEvent for AbortFrame. Note: if you can play RE0 only deactivate PanicAlert. These opdecoding error seems harmless. Some day this wiil be fixed in right way.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7107 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/VideoCommon/Src/CommandProcessor.cpp')
-rw-r--r--Source/Core/VideoCommon/Src/CommandProcessor.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/Source/Core/VideoCommon/Src/CommandProcessor.cpp b/Source/Core/VideoCommon/Src/CommandProcessor.cpp
index efc0c35ed9..bdafa67fc1 100644
--- a/Source/Core/VideoCommon/Src/CommandProcessor.cpp
+++ b/Source/Core/VideoCommon/Src/CommandProcessor.cpp
@@ -288,15 +288,15 @@ void Read16(u16& _rReturnValue, const u32 _Address)
return;
case FIFO_READ_POINTER_LO:
- //_rReturnValue = ReadLow (fifo.CPReadPointer);
+ _rReturnValue = ReadLow (fifo.CPReadPointer);
// hack: CPU will always believe fifo is empty and on idle
- _rReturnValue = ReadLow (fifo.CPWritePointer);
+ //_rReturnValue = ReadLow (fifo.CPWritePointer);
DEBUG_LOG(COMMANDPROCESSOR, "read FIFO_READ_POINTER_LO : %04x", _rReturnValue);
return;
case FIFO_READ_POINTER_HI:
- //_rReturnValue = ReadHigh(fifo.CPReadPointer);
+ _rReturnValue = ReadHigh(fifo.CPReadPointer);
// hack: CPU will always believe fifo is empty and on idle
- _rReturnValue = ReadHigh(fifo.CPWritePointer);
+ //_rReturnValue = ReadHigh(fifo.CPWritePointer);
DEBUG_LOG(COMMANDPROCESSOR, "read FIFO_READ_POINTER_HI : %04x", _rReturnValue);
return;
@@ -503,11 +503,6 @@ void Write16(const u16 _Value, const u32 _Address)
if (!tmpCtrl.ClearFifoUnderflow && tmpCtrl.ClearFifoOverflow)
bProcessFifoToLoWatemark = true;
- if (tmpCtrl.ClearFifoUnderflow && tmpCtrl.ClearFifoOverflow)
- ProcessFifoAllDistance();
-
- if (!tmpCtrl.ClearFifoUnderflow && !tmpCtrl.ClearFifoOverflow)
- ProcessFifoAllDistance();
}
else
{
@@ -814,8 +809,7 @@ void SetFifoIdleFromVideoPlugin()
void AbortFrame()
{
fifo.bFF_GPReadEnable = false;
- while (CommandProcessor::isFifoBusy)
- Common::YieldCPU();
+ s_fifoIdleEvent.Wait();
GPFifo::ResetGatherPipe();
ResetVideoBuffer();
fifo.CPReadPointer = fifo.CPWritePointer;