- Fixed a possible infinite recursion problem from my last commit (Fixes Dynasty Warriors 4 crashing...)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3299 96395faa-99c1-11dd-bbfe-3dabce05a288
- Fixed some logic for flag propagation. Its a 3% speedup in the titlescreen of GoW (68fps vs 66fps).
- Added a new mVU speedhack which should be very safe. Its a 7% speedup over the new code (73fps vs 68fps), so a 10% speedup over the last revision (73fps vs 66fps).
What the speedhack does:
The VUs have 3 separate flags: Status, Mac, and Clip flags.
Due to the VU's pipeline, there can be up to 4 live instances of these flags during emulation.
The tricky part arises when you're recompiling the end of a block (after a branch), then you must predict if another block will need older flag instances.
These can be accurately predicted in all cases except for indirect jumps, because the destination block is unknown at recompile time.
In this case mVU assumes the worst-case scenario, that all flag instances will be needed, so it performs some flag shuffling to prep the flag instances in such a way that the next block can read them nicely.
What the new "Block Hack" does, is it assumes that the old flag instances won't be needed, which eliminates a lot of flag shuffling causing a speedup.
Currently the Block Hack plays it very safe, in the case of the current block ending with an indirect jump, it still assumes the flag instances will be needed for the subsequent block, so it does nothing different there;
The times the speedhack actually does something is when your current block ends with a branch, and then the following block ends with an indirect jump (or similar cases). In these cases it would be very odd for future blocks to care about old flag instances from 2-blocks ago, which is why this speed hack should be very safe.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3298 96395faa-99c1-11dd-bbfe-3dabce05a288
* Add SkipMpeg for Guilty Gear X Accent Core Plus (Issue 761).
* Set SVN EOL props to LF for the GameIndex.dbf file, since that's what PCSX2 uses when it generates and/or modifies the file.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3297 96395faa-99c1-11dd-bbfe-3dabce05a288
Linux note: There's a chance as usual that this might break something in Linux because Linux and Windows STL headers have different dependencies. Namely <algorithm> might still be needed in on some of the PrecompiledHeaders. If so, just re-add it and commit, and make a note: // yes GCC really needs this one :)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3295 96395faa-99c1-11dd-bbfe-3dabce05a288
* Fix for random crashes when recording movies (F12). It still doesn't seem 100% stable, but it's a heckuva lot better than before.
* Log options dialog behavior bugfixes.
* Cleaned out some old hacks for handling hotkeys from the GS window, and implemented proper use of GSwindow-local hotkey mappings vs. global hotket mappings.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3292 96395faa-99c1-11dd-bbfe-3dabce05a288
* GameDB: Remove the game database from the Settings panel, since it's kinda slow still and it started to drive me nuts. I haven't added another menu option to open it up yet (it will be in its own dialog), but I will soon.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3290 96395faa-99c1-11dd-bbfe-3dabce05a288
- Batman Returns Issue 709 .
- Fixed flashing in Sega Superstars Tennis.
- Clawed back some of the speed loss from the XGKick delays.
Detailed changes:
- CALL Tag DMAs that contain invalid next tag addresses ignore the call (Batman started sending corrupt information from invalid addresses)
- VU1 now flushes any pending transfers if it's trying to send another and doesnt process any packed/list regs
- Batman was checking for OPH to be high, this was a timing thing, something id completely got rid of accidently (same for APATH)
- XGKick will no longer queue if PATH3 is interrupted
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3285 96395faa-99c1-11dd-bbfe-3dabce05a288
DevNote: Adding SysForwardDefs.h, which I'm going to use for forward declaring a bunch of PCSX2 classes and other simple dependency-free include content. This is the SysCore version of AppForwardDefs, and hopefully helps minimize header file hell.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3276 96395faa-99c1-11dd-bbfe-3dabce05a288
Games
- Resident Evil Dead Aim flickering graphics fixed.
- Flatout games should now boot everytime (instead of randomly)
- Sega Superstar Tennis flashing fixed
- Destruction Derby graphics fixed (NTSC confirmed, PAL unsure)
- Tenchu Fatal Shadows flickering textures fixed, Issue 748
- Spyro Hero's Tail should boot again, Issue 746
General Info
- General reworking of the GS paths with all paths prioritizing more correctly.
- XGKICK can stall if another GS transfer is in progress
- Major reworking of Path3 masking, could still be combined with normal Path3 transfers, but lets get it working first :P
- Taken in to account a few conditions which could have caused VIF to lock up/crash when stalling on ends.
- Unreversed GIF and SPR and VIF so its the normal way round
- all DMA paths should now resume correctly after being stopped by hardware
- GIF FIFO now actually transfers stuff :P
- VIF CMD's simulated by the length of the interrupts at the end.
Phew, i think that's everything :S
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3274 96395faa-99c1-11dd-bbfe-3dabce05a288
* Print a fatal_error when users do not source the good CMakeLists file.
* Do not search system libraries if the user force the internal libraries
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3269 96395faa-99c1-11dd-bbfe-3dabce05a288
The problem was that the game does a branch in a branch delay slot, and mVU wasn't setting some pipeline state variable in this case correctly.
This in turn caused the pipeline state comparison for the block to always be wrong, which meant a new block would always be recompiled whenever this specific block was to be executed.
This ended up happening 1000's of times slowing down the game to 1 fps...
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3266 96395faa-99c1-11dd-bbfe-3dabce05a288
* Much header file cleanup and used forward declarations to remove a lot of excess includes; might help improve build times a wee bit.
* Preliminary hash-table implementation for the Game database.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3264 96395faa-99c1-11dd-bbfe-3dabce05a288
Basically:
If a block begins with an illegal instruction then don't continue recompiling the block, instead recompile code that prints an error message if block is taken at execution time, and then exit execution if it is.
Dawn of Mana has a conditional branch which leads to a bunch of illegal instructions, but the branch is never really taken at execution time.
The programmer either left this in for debugging, or possibly because real code is swapped in-place of the illegal instructions at a later time.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3263 96395faa-99c1-11dd-bbfe-3dabce05a288
- Double the audio output volume before sending it to the output modules. Was way too quiet.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3261 96395faa-99c1-11dd-bbfe-3dabce05a288
* add some check on libsparsehash
* print more informative message when a depency miss
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3256 96395faa-99c1-11dd-bbfe-3dabce05a288