We Didn't Check 0x0008000 in PowerPC::ppcState.msr this was killing the performance, this also fix a hang when this check is performed.
SMG for example.
Deleted the HiWatermark condition from GPFifo.
Please test games affected in this Revision 9e649ce798, and games affected in this Revision b0f75f17ae.
I do not want to excite the game players of 'The Las Story', but Could test again the random hangs with this rev?
Thanks
This fix is not related with the previous commits, but the previous commits help me to see that because in the new scenery SMB was hanging. May be in the past also doesn't boot some times because of that.
Please Test FZero boot also. Thanks.
The external exceptions in dolphin are checking frequently but is different to real HW, so sometime the game is in a loop checking GPU STATUS, the exceptions doesn't checked, and the game hang.\
For solve this I need a trick: still waiting for the exception handler be linked but if CommandProcecsor is reading the GPStatus, resume this.
This fixed "TimeSplitters: Future Perfect" broken in the Revision c2e6fdf09f and surely others games.
That happens because FIFO_RW_DISTANCE_HI must be written first, for checking fifo.CPReadWriteDistance == 0, so some fifo resets was not managed in the right way.
I didn't test Metroid 2 desync reported in Issue 4336 but I think is the same.
About the flickering in MP2, I don't know for my is not related or yes, but you can test anyway.
Fixed Issue 3902
Well now the FIFO is 99.99% finished :)
- I've fixed hangs in DC mode in (Simpsons, Monkey Island, Pokemon XD, etc)
- I've implemented accurate manage of Pixel Engine Interrupts, now the GPU loop is stopped when a PE Interrupt needs to be managed and resume when Pixel Engine finish,
I think now, the Fifo in DC mode is more accurate than SC mode. :)
Time to close the big fifo Issue 3694 (snif), please if you have a possible fifo issue report this like a game issue.
I was working with Skid_AU together, especially thanks for him.
Test a lot all games, and compare the performance with the master maybe this accuracy has a cost (not a lot).
I think now the fifo is very stable, overflow fixed, random hang fixed, if you have a game with a hang with this rev and not in master please report this.
For example you can test Tutorial moves at the beginning of The last history now is fluid 30/60.
Shuffle2: I've delete the hacky line, I think is not necessary anymore. Additional some clean in CommandProcessor.
Please test The Last Story and others games affected in the previous commits and give me a feedback.
This patch makes a few changes necessary for support for the new Wii
Remotes:
- For all OSes:
- Adds a new bool member variable m_motion_plus_inside to identify
the new Wii Remotes.
- If we have a new Wii Remote, use a head byte of 0xa2. We could
just change this behavior for all Wii Remotes, but an existing
comment suggests that would break 3rd party Wii Remotes.
- On Mac OS X:
- Expand the search criteria for the bluetooth scan. This is
necessary because the new Wii Remote identifies with minor class
kBluetoothDeviceClassMinorPeripheral2Gamepad, but the old Wii
Remotes use minor class
kBluetoothDeviceClassMinorPeripheral2Joystick (1).
- Send commands on the interrupt channel, not the control
channel. The new Wii Remotes require this; old ones are compatible
with this. Note: 3rd party Wii Remots are untested with this
change; the hope is they are still functional.
- Get the name of the bluetooth device and see if it ends in
"-TR". If so, set a member variable so we know it's the new kind
of Wii Remote.
This should fix issue 5011 for Mac OS X:
http://code.google.com/p/dolphin-emu/issues/detail?id=5011