mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-21 05:09:34 -06:00
- Fixed Metroid Prime 2 "GFX FIFO: Unknown Opcode (0x%x).\n" This was happened because FIFO_RESET is executed, but at this moment the Write Gather Pipe is not empty. (maybe also fix the same problem reported in MP1, i dont have this game for testing)
- Reimplemented AbortFrame. Now the Write Gather Pipe buffer is reseted and Read Write Distances is reseted before the game do it instead the process all GP CPRWDistance for prevent CP wrong pointers. This fifo reset should be more accurate, efficient and smooth the FPS when happens. Please, test regresion of SMG1 and SMG2 or others games with FIFO RESETS. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6971 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -805,10 +805,16 @@ void SetFifoIdleFromVideoPlugin()
|
||||
// to 0 when PI_FIFO_RESET occurs.
|
||||
void AbortFrame()
|
||||
{
|
||||
|
||||
Fifo_SetRendering(false);
|
||||
ProcessFifoAllDistance();
|
||||
Fifo_SetRendering(true);
|
||||
g_VideoInitialize.pResetGatherPipe();
|
||||
fifo.bFF_GPReadEnable = false;
|
||||
while (CommandProcessor::isFifoBusy)
|
||||
Common::YieldCPU();
|
||||
g_VideoInitialize.pResetGatherPipe();
|
||||
fifo.CPReadPointer = fifo.CPWritePointer;
|
||||
fifo.CPReadWriteDistance = 0;
|
||||
fifo.CPBreakpoint = 0;
|
||||
fifo.bFF_Breakpoint = false;
|
||||
fifo.CPCmdIdle = false;
|
||||
PixelEngine::ResetSetToken();
|
||||
PixelEngine::ResetSetFinish();
|
||||
}
|
||||
|
Reference in New Issue
Block a user