Dolphin, the GameCube and Wii emulator - Forums

Full Version: Synchronised FIFO patch (for Eternal Darkness)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
I am making available my work-in-progress patch for synchronising the FIFO. Synchronising the FIFO allows games like Eternal Darkness to run by making the GPU run in step with the CPU.

The code is more stable in Single Core mode than Dual Core. However, Dual Core does work and is faster. The Zelda Bloom Projection Hack needs to be turned on to see the game menu.

I am looking for test reports on this FIFO. I am most interested in games that work in SVN r5688 (x64 and Win32) but do not work with this version. However, all reports are welcome. In the report, please list the game and whether you used Single Core or Dual Core mode. Also, the FIFO BP Hack takes new meaning with this patch. If a game does not work, try toggling the FIFO BP Hack setting in the game properties. The FIFO BP Hack makes the FIFO work similar to the old FIFO.

I have found that Wii Sports, SMG, Pokemon XD, and Starfox Adventures do not work.

If you compile your own build, there are some special parameters that you can adjust to possibly make games work. Let me know if you have changed these parameters.

These are the parameters:

In CommandProcessor.h:
Code:
#define FIFO_PERIOD 13000

The FIFO period is how closely stepped the GPU and CPU are. The lower the number, the more accurate. The higher the number, the faster the emulation. Range should be 1000 - 30000

In OpcodeDecoding.cpp, there are a few lines that are in the following format:
Code:
cycleTime = XX; // TODO

This sets the amount of time that it takes to execute a GPU command. The ones marked with TODO have not been verified on the real hardware. The range should be between 5 - 50. Experiment with this value up to 1000.

If you compile your own builds, there is a patch file attached. If you cannot compile builds, here are the Win32 and x64 builds with default settings (they work with Eternal Darkness)

Synchronised FIFO Win32
Synchronised FIFO x64
Nice, thanks for the patch Smile
nice! thanks for making it public Smile
Cool, thanks skid!
Just test the 32bit version for me. SMG does work for me in single core mode.
And dual core mode no game can run...
All games 0FPS 0VPS SPEED0% and dolphin just freeze.
I need to use task manager to shut it down.
I will check it out later.
Just tested all the game I have, and here is the result:
Final Fantasy Cristal Chronicles Series can't even run in single core.
0FPS 60VPS SPEED 100%
Include:
[NGC]Final Fantasy Cristal Chronicles
Final_Fantasy_Crystal_Bearers
Final_Fantasy_Crystal_Chronicles_Echoes_Of_Time
Also, Tales_of_Graces can't run.

Others games running alright in single core.
This causes a lot of games to hang or freeze, needs some work, props to getting Eternal Darkness working so far. Wink

Also seems to be incompatible with the latest fifo commits, with the latest revision(s) all games seem to hang with this patch.

NSMB is about 25 - 30 FPS slower with this patch, other games I've tried so far seem to hang. Also causes other games to run slower as well, understandable as it's an early wip patch, thought I would pass the report along though.

Seems this doesn't help Sonic Unleashed though, this game still hangs when loading just as in previous revisions.
I thought I would be clear and rephrase that this patch seems to be incompatible with the GPFifo.cpp changes that were committed earlier today, all games seem to hang no matter what.
Xtreme2damax, are you running Single Core mode? Would you please list the games that you have tested?
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18