Dolphin, the GameCube and Wii emulator - Forums

Full Version: Hyrule Field Slowdown Observation
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Skid, I've held a firm hunch that the Hyrule Field slowdowns were related to the issue that caused the Deku Tree Room slowdown in Windwaker with dual core mode enabled, but not the same exact issue. If you would like, you can take a look at the commit that fixed the Deku Tree Room slowdowns and other commits where Fifo changes were committed to try to find similarities:

Revision 3513: http://code.google.com/p/dolphin-emu/source/detail?r=3513

Revisions with Fifo Changes: http://code.google.com/p/dolphin-emu/source/list?path=/trunk/Source/Core/VideoCommon/Src/Fifo.cpp&start=748

So it's likely a combination of threading and Fifo issue(s) as was thought, now is the challenge of fixing the problem now that there is a general idea of what is wrong.

Good Luck! Tongue
(04-05-2010, 08:58 AM)Xtreme2damax Wrote: [ -> ]Skid, I've held a firm hunch that the Hyrule Field slowdowns were related to the issue that caused the Deku Tree Room slowdown in Windwaker with dual core mode enabled, but not the same exact issue. If you would like, you can take a look at the commit that fixed the Deku Tree Room slowdowns and other commits where Fifo changes were committed to try to find similarities
And it affected ( oh god ) the Fifo_EnterLoop function Tongue
Not sure what I said that was funny or prompted that response, I'm a bit confused as to what you mean??? I'm trying my best to provide developers with as much information as possible to finally tackle this issue despite my lack of coding knowledge. Undecided
Check your last post in the page 13 ( The last line in the first paragraph )
Well yeah I know I mentioned that before..

I also just provided some additional information to try to nail this issue and am still testing some things. It obviously seems tha _mm_pause and thread.h isn't the cause of this issue and it might be solely related to the Fifo.
Maybe is related to how many times it is called ( the YieldProcessor() function is being called all the time while the game is running , Could it be called at the end of the frame or something like that ? Or It would cause an immediate crash in the fifo ? )
If you can give me a suggestion of what to change, I can test it out and report back.

Something j4ck.frost mentioned in a comment for revision 5272:

Quote:D3D Video_BeginField and OGL Video_BeginField are backwards. OGL does AtomicLoad first, D3D does AtomicStore first.

That whole looping and spin-waiting looks odd to me, especially the way YieldCPU is now. Shouldn't we rather look into way to make it different, rather than moving statements before/behind loops?

I can't find where Video_BeginField is located at, what file has this function and what is backwards?
look at /trunk/Source/Plugins/Plugin_VideoOGL/Src/main.cpp
Xtreme, try to change some of the FIFO timing and see what happens. This may even fix Eternal Darkness in some ways.
But what does he mean by backwards?
(04-05-2010, 12:21 PM)[SS] Starscream Wrote: [ -> ]Xtreme, try to change some of the FIFO timing and see what happens. This may even fix Eternal Darkness in some ways.

I wish I knew how, cause I would do that. Tongue

Well I asked another fellow coder that contributes to Pcsx2, he is not sure and not all that familiar with the Dolphin code, but seems to also think that the issue lies in the Fifo_EnterLoop function. Bleh, it's probably a combination of things that could be rewritten with more efficient and faster code.