Emulator Issues #7641
closedFIFO-BP merger breaks pausing in Star Wars Rogue Squadron 2 - Rogue Leader
0%
Description
Game Name?
Star Wars Rogue Squadron 2: Rogue Leader - GSWE64
What's the problem? Describe what went wrong in few words.
When you pause the game, it hangs instead of bringing up the pause menu. Very, very, very rarely it will successfully pause, but will crash on the way out of the pause. I'd say about 1/50 chances actually let you pause.
What did you expect to happen instead?
I expected to successfully pause the game.
What steps will reproduce the problem?
[Don't assume we have ever played the game and know any level names. Be as
specific as possible.]
1.Start up the game.
2.Head to the Training grounds.
3.Attempt to Pause the game.
Dolphin 3.5 and 3.5-367 are old versions of Dolphin that have
known issues and bugs, so don't report issues about them and test the
latest Dolphin version first.
Which versions of Dolphin did you test on?
All of them. Okay, that may be an exaggeration, but there are many, many difficulties bisecting this.
In Dolphin 3.5, Single core doesn't work at all with this game, it will always hang. JIT isn't guaranteed to work on earlier 3.5 builds, at some point it gets fixed. It made bisecting this a total nightmare. Interpreter isn't even guaranteed to work; the only one that always worked was JITIL for some reason.
Dolphin 3.5 - Good
Dolphin 3.5-78 - Good
Dolphin 3.5-253 - Good
Dolphin 3.5-316 - Good
Dolphin 3.5-330 - Good (This is semi-important)
Dolphin 3.5-429 - Good
Dolphin 3.5-547 - Good
Dolphin 3.5-600 - Good
Dolphin 3.5-608 - Good
Dolphin 3.5-644 - Bad (FIFO-BP Merger - https://dolphin-emu.org/download/dev/83fc5f4747f9c8c6066bf002730827ecc17458aa/)
Dolphin 3.5-663 - Bad
Dolphin 3.5-1025 - Bad
Dolphin 4.0 - Bad
Dolphin 4.0-3106 - Bad
I tested tons more, but, those are the notable ones.
So, following all of the rules I could in order to narrow it down, I discovered that FIFO-BP was the culprit. Following skidau's advice, I decided to bisect within it.
https://dolphin-emu.org/download/list/FIFO-BP/1/
It didn't take long; the very first commit (https://dolphin-emu.org/download/dev/1b6240f7f972caef7c53a7a51ff71b4653b3f00a/) did not work with the pause screen following all of the rules into getting it working. The build it's based on, 3.5-330, does work. That leads me to believe the very first commit of FIFO-BP broke Rogue Squadron 2's pause screens. I tested other builds within the branch to see if it ever worked, but it does not appear any work.
What are your PC specifications? (including, but not limited to: Operating
System, CPU and GPU)
Core i5 3570K, GTX 760, Windows 7 x64
Updated by skidau over 10 years ago
To fix the pause screen, change this line in CommandProcessor.cpp, SetCpStatusRegister():
m_CPStatusReg.CommandIdle = !fifo.CPReadWriteDistance || AtBreakpoint() || !fifo.bFF_GPReadEnable;
to
m_CPStatusReg.CommandIdle = !fifo.CPReadWriteDistance || !fifo.bFF_GPReadEnable;
This will break Gladius and cause issue 5518. Whether the current code is correct or not is hard to tell as the documentation we have is unclear on this feature and it is hard to test on real HW.
Updated by tueidj over 10 years ago
Many Bothans died for that documentation, show some respect.
Updated by JMC4789 over 10 years ago
This fixes the targeting computer as well. I'm beginning to think gladius isn't that important now. We could have perfectly emulated Rogue Leader, except for that silly little zfreeze thing. Think about it... gladius... or rogue leader. Choose wisely.
Updated by JMC4789 over 10 years ago
- Status changed from New to Accepted
The patch posted by skid_au also makes it so Rogue Leader doesn't require fast-disc speed to work. I decided to check if Gladius maybe needed fast-disc speed with the patch, but alas, that wasn't the case.
So, this patch in some form is kind of needed for Rogue Leader, or at least the underlying issue fixed. No idea what the actual fix is though.
The other fast-disc speed game I know of, Sonic Riders, is not fixed by this.