diff options
| author | memberTwo.mb2 <memberTwo.mb2@gmail.com> | 2008-11-22 15:25:04 +0000 |
|---|---|---|
| committer | memberTwo.mb2 <memberTwo.mb2@gmail.com> | 2008-11-22 15:25:04 +0000 |
| commit | 36bf2fedf696c0795d0731904346b594a906df54 (patch) | |
| tree | 7cb5bfd93d63928639dabb1f231869c8cc09766d /Source/Core/VideoCommon | |
| parent | 145f80fc0025ea293cb400e4f2c243ff008714cd (diff) | |
More CP/GPFifo work. Fix Super Monkey Ball SC/DC. SMB force us to hack CP differently: CPU really thinks the fifo is always empty and on idle now.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1242 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/VideoCommon')
| -rw-r--r-- | Source/Core/VideoCommon/Src/Fifo.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Source/Core/VideoCommon/Src/Fifo.cpp b/Source/Core/VideoCommon/Src/Fifo.cpp index ef2cab1b07..40b3b4ce80 100644 --- a/Source/Core/VideoCommon/Src/Fifo.cpp +++ b/Source/Core/VideoCommon/Src/Fifo.cpp @@ -114,8 +114,9 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize) //etc...
// check if we are able to run this buffer
- if ((_fifo.bFF_GPReadEnable) && !(_fifo.bFF_BPEnable && _fifo.bFF_Breakpoint))
+ if ((_fifo.bFF_GPReadEnable) && _fifo.CPReadWriteDistance && !(_fifo.bFF_BPEnable && _fifo.bFF_Breakpoint))
{
+ InterlockedExchange((LONG*)&_fifo.CPReadIdle, 0);
#if defined(THREAD_VIDEO_WAKEUP_ONIDLE) && defined(_WIN32)
while(_fifo.CPReadWriteDistance > 0)
#else
@@ -167,6 +168,8 @@ void Fifo_EnterLoop(const SVideoInitialize &video_initialize) Common::InterlockedExchangeAdd((int*)&_fifo.CPReadWriteDistance, -distToSend);
#endif
}
+ //video_initialize.pLog("IDLE",FALSE);
+ InterlockedExchange((LONG*)&_fifo.CPReadIdle, 1);
}
}
#if defined(THREAD_VIDEO_WAKEUP_ONIDLE) && defined(_WIN32)
|
