* Improved constant folding/propagation in integer instructions
* Merged boolean instructions
Fixes NeobrainX’s new method for toggling the ZTP Hack. The game properties is a much more appropriate place for the hack (I didn’t even know about that menu:) ) Thanks to NeobrainX for the code cleanup, and to Mandrix999 for the fix. Also noticed a minor typo.
Opengl and D3D are doing the perspective division differently
Thanks to glennricster for catching this.
Move the ZTP hack to the game properties (reverted all changes from r6057 to the video plugins) due to some obvious reasons. Also some fixes to the coding style.
Remove a member variable which I introduced in r5907 although it never actually got used. Restores binary compatibility (at least in that regard) to pre-r5907 video plugins, but breaks any binaries after that :P
Update FIFO watermark tightness recommendations. 1000 is quite a high value I guess, but some people seem to need it.
dsp stuff – the same ucode hash under lle and hle now (had to rename couple of dissasms), ucode dumping under hle (debug only), small dsp:read32 change (needed for some homebrew)
Stability fix for JIT load/stores
This commit addresses the Hyrule field slowdown issue in Zelda: Twilight Princess, as discussed in Xtreme2damax’s thread: http://forums.dolphin-emu.com/thread-10638.html. It can be activated in the DX9, DX11, and OpenGL plugin GUI’s. Enabling the hack while playing other games besides ZTP will likely have either an undesirable or no(more likely) effect.
The code changes disable the usual pipeline flush for certain BP Writes that occur while the minimap is being drawn in Zelda: twilight princess. This significantly increases speed while in hyrule field. The way this is accomplished is described more in depth on page 42 of Xtreme’s thread. Big thanks to Xtreme for doing a great job hosting that thread, and Kiesel-stein for initial work on the hack
Also, I used the resource editor in Visual studio to generate the GUI code for the DX11 plugin, and some code appeared to be removed, although the behavior of the GUI did not seem to change. Hopefully someone more experienced with resource files (forms?) can double check that no code was damaged
Set z-position for opengl, too
Added missing unlocks from r6053 (thanks mylek4)
Fix the linux debug build in a better way so that wxWidgets debugging is still enabled.
Silence gcc warnings about empty statements and out-of-order initializers.
Increase ISO properties window size to make room for the new Gecko codes.
small optimization for gba ucode hle
hopefully quiet gcc about IUCode ctor…
small scons fix
I said DEBUG_LOG!!
allow “swapping” of hle’d ucodes
hle the gba ucode
Brings back any speed lost from r6040 while maintaining all speed gains.
* Some fixes to linear interpolation
* Adds interpolation to ADPCM samples
* Relaxed a volume limit in ADPCM_Vol
– Frac rolls over one iteration before samplePos advances. Can introduce noise similar to flipping samples (1234 => 1214). Introduced oldFrac to fix this. This isn’t as noticeable as it probably should be because of below.
– When samplePos doesn’t advance it interpolates between two copies of the same sample which actually does nothing. Changed it to always use the current and next sample.
– When frac is 0 you should get 100% of yn2 instead of ~99% added a +yn2 to balance it.
– Added linear interpolation for ADPCM. Sounds like a good idea.
– Set ADPCM_Vol to clamp to x8000 instead of x4e20. Some games will play some sounds at x8000 volume anyways since the volume is applied before this. Lower limit can result in quiet music (x4e20) but some loud ambient sounds (0x8000).
MMMU Speed Optimisations:
* Optimised the memory bounds check in MMU and MMU speed hack games.
Stub out glGetError() calls from the release build of the OpenGL plug-in (found by ector, code by LordMark). Gives a speed-up in the OpenGL plug-in.
* Fixed a careless mistake of mine with SetJumpTarget
* Changed ABI_PARAM back to ECX/EDX. Thanks for the tip, Soren
* Reverted r6035
Revert parts of r6032 that break OS X and probably other non-Windows
platforms as well. It would seem that ABI_PARAMx will have to be
used more consistently elsewhere to match up with a change to use
Not sure yet why I still need the final section of Jit64::stX.
MMU Speed Optimisations:
* Un-cleaned the Load/Store code. I think this will fix the stability issues from r6032
* Added memory exception checking to a couple more JIT FPU instructions
* Optimised the 64bit fast memory access slightly
* Optimised the MMU speed hack.
The rest of the speed optimisations from r6032 have been retained.
make “show pc” in dsp lle debugger actually work again
code cleanup in Hash.cpp
MMU Speed Optimisations:
* Added memory exception checking to JIT instructions
* Cleaned up Load/Store code (thanks dok.slade)
* Consolidated memory access routines
* Fixed graphics corruption in some games (dcbz instruction)
* F-Zero GX in 32bit JIT mode now works
* Removed temporary slow hack in JITIL (introduced in r4839)
Spelling fixes, etc
Fixes issue 2954.
Marginally improve FPS counting logic in the video plugins.
Should fix DX11 peaking at 59 FPS instead of 60 FPS.
DX9: Create textures needed for CPU->EFB access even if it’s disabled.
That way, one can toggle that option during emulation.
Clean up and fix some issues with the dialogs for compression and decompression of iso and gcm images. Also added a confirmation to overwrite existing files.
JitIL: Reverted “lbzu” added in r6018.
JitIL: Fixed comment out style reviewed in r6017.
fix small bug with dsp lle debugger: now it will highlight regs which just changed, instead of the ones which changed last step.
JitIL: Added “lbzu” instruction and “crXX” instructions. “crXX” are ported from Jit_SystemRegisteres.cpp. “lbzu” may cause crush in GFZP01 (F-Zero GX PAL). I could not test with GFZP01 because I don’t have it. I tested “lbzu” with other games, though.
JitIL: Commented out the code which cause bugs in STGJAF OP movie.
Newer versions of GCC’s
No matter. We don’t actually need it for our purposes.
MaxOSX build fix. Thanks soren.
Make the SSE3.1 VideoCommon code available in GCC builds.
The GCC model for extended instructions like these is that you compile
with -msse3 etc. These affect code generation for whole compilation units,
so the idea is that you have a separate .c file for each instruction set
class and then indirect to the desired one at runtime.
Without e.g. -msse4.1, the GCC built-ins used by
available. However, in our specific case of compiling with -msse2 and
wanting to use SSE3.1 code, enough built-ins are available that we only
need to provide a little hack for pshufb.
Upgrading this to also use SSE4.1 instructions doesn’t appear feasible
without a lot of undesirable duplication of GCC built-in functions and
headers, so we’d probably have to move to the GCC model of separate
source files for that.