dolphin-emu/dolphin — pull request #1778 by JMC47 (2014-12-28 00:11:48+00:00)
Title: Remove AtBreakpoint() from ReadIdle re:  RS2 and Gladius

All the credit in the world goes to [Unknown] who held my hand as we added logs throughout CommandProcessor.cpp and Fifo.cpp. Without those logs, I wouldn't have found this change.

Basically, what's been going on is that under CommandIdle (The line directly below the one I edited,) there was a fix Rogue Squadron 2 (makes Pausing/Targeting Computer/Regular Disc Speeds work) by removing AtBreakpoint() from that line. This unfortunately would break Gladius. When I got annoyed about this bug again while testing the zfreeze branch, I decided to beg in the IRC for help debugging this while I randomly plugged away. [Unknown] showed up and gave me some logging lines which revealed something that didn't seem right to me.

If we removed AtBreakpoint() in line 498 of CommandProcessor.cpp we were essentially making ReadIdle set to on. This broke Gladius, but Fixed RS2. By removing it from ReadIdle instead of CommandIdle, both games work without breaking the other (and I tested other Fifo sensitive games I tested, like Battalion Wars 2.)

Considering this Pull Request touches the Fifo, I know it needs a lot of testing. There's a chance it fixes other bugs, or causes other bugs.