Commit Graph

4161 Commits

Author SHA1 Message Date
Rachel Bryk 86ccf13c09 End movie play back immediately if g_currentByte > g_totalBytes.
Also uncomment a PanicAlert in the case of g_currentByte > totalSavedBytes, and add comment explaining how it can happen.
2014-07-05 19:48:44 -04:00
Tillmann Karras ad2aaedd8b Don't install segfault handler in interpreter mode 2014-07-05 11:02:41 +02:00
Tillmann Karras 311e9e655a CoreParameter: add enum CPUBackend 2014-07-05 11:02:41 +02:00
Tillmann Karras 20a16beabd enum CPUState: rename CPU_* to STATE_* 2014-07-05 11:01:49 +02:00
Rachel Bryk e02f680861 Keep device type EXIDEVICE_MEMORYCARDFOLDER for gci folder.
This fixes loading save states when type mismatches.
2014-07-05 00:22:42 -04:00
Tillmann Karras 20dc0e7819 Remove unused variables 2014-07-04 03:56:58 +02:00
Lioncash 9c764eff3a Fix a type-conversion warning in Movie.cpp
Fixes a C4800 warning. 'int' : forcing value to bool 'true' or 'false'
(performance warning)
2014-07-03 02:07:29 -04:00
Lioncash ab6434f616 Merge pull request #551 from lioncash/movie
Clean up string handling in Movie.cpp
2014-07-02 22:57:01 -04:00
Lioncash d649027ec8 Clean up string handling in Movie.cpp 2014-07-02 22:45:50 -04:00
Rachel Bryk de3f587b32 Add support for 2 memory cards for movies. 2014-07-02 22:26:29 -04:00
Lioncash af7efaa461 [Core] Clean up the DSP disassembler
- Get rid of deletes.
- Clean out all of the sprintf calls. Now std::string based.
- Fully explicit function names, etc.
2014-07-02 20:19:39 -04:00
Matthew Brennan Jones 124210c50f Changed lingering header include guards to pragma once.
Some headers where using #ifndef to guard being including multiple times. But most were using pragma once. So for consistency I changed them all to use pragma once.
2014-07-01 22:17:33 -07:00
Rachel Bryk 899274445b Fix patches not being loaded when running real gc bios. 2014-06-30 17:28:45 -04:00
Lioncash 8ada47876a Get rid of a few delete[] calls in sdio_slot0.cpp 2014-06-29 22:55:47 -04:00
galop1n 729758f2f9 Fix an invalid foreach loop over an unordered_map with deletion in WiiSockets 2014-06-27 13:02:28 -04:00
Lioncash bd377b9580 Merge pull request #443 from magumagu/loadstore-cleanup
Loadstore cleanup
2014-06-26 21:32:59 -04:00
Lioncash 11d304ae29 Merge pull request #259 from magumagu/dtk-rewrite
DTK rewrite
2014-06-26 20:01:07 -04:00
magumagu ca0203a1cc AudioCommon: restore support for DTK volume setting. 2014-06-26 16:56:57 -07:00
Lioncash ca5340ebde Centralize the logging code into its own folder in Common. 2014-06-25 22:11:42 -04:00
Ryan Houdek a40ae6883a Move CoreTiming::downcount to PowerPC::ppcState.
This isn't technically the correct place to have the downcount variable, but it is similar to what PPSSPP does to gain a bit of extra speed on ARM.
We access this variable quite a bit, with each exit in a block it is subtracted from.
On ARM this required four instructions to load and store the value, while now it only requires two.

This gives an average of 1FPS gain to most games.
Examples:
Crazy Taxi: 54FPS -> 55FPS
Luigi's Mansion: 20FPS -> 21FPS
Wind Waker(Save Screen): 27FPS -> 28FPS

This seems to average a 6mhz to 16mhz CPU core emulation improvement in the few games I've tested.
2014-06-26 01:48:00 +00:00
Lioncash 177658aed6 Merge pull request #513 from lioncash/vs-x64
Remove the 32-bit config platform from the VS solution file
2014-06-25 21:23:45 -04:00
Lioncash 2db50612b9 Merge pull request #510 from RachelBryk/unused
Remove an unused variable.
2014-06-25 12:41:04 -04:00
Tony Wasserka 416a3201ed Merge pull request #480 from Sonicadvance1/PR371-Revert
Revert "PPCAnalyst now detects internal branches better"
2014-06-25 16:02:52 +02:00
Ryan Houdek a99ad2db7c Merge pull request #499 from magumagu/ipchle-disk-channel
ES_LAUNCH fixes for disk channel etc
2014-06-25 04:00:57 -05:00
Lioncash 8b13afbb8e Remove the 32-bit config platform from the VS solution and projects 2014-06-24 22:07:26 -04:00
LPFaint99 c65a6f5fb0 GCI Folder: correctly identify region of sysmenu 2014-06-23 19:58:27 -07:00
LPFaint99 32b2c40490 first implementation of memcard from directory, creates a memory card from USERDIR/GC/<REGION>/Card <A/B>
Savestates include the entire memorycard, but the only saves that should be modified are the ones that are directly modified by the game the others are preserved merely to avoid changing the memory card header during the game as some games (Zelda) refuse to save

Implement DMA r/w for memcard.
Skips programming buffer for writes

Add a migration feature that auto imports all saves from your default memcard to the new memcard dir if it doesn't exist.

Actually "delete" save files by renaming to s/*.gci/*.gci.deleted/
2014-06-22 18:03:52 -07:00
LPFaint99 404e9ce3ee move memorycard handling to its own class 2014-06-22 17:59:08 -07:00
Pierre Bourdon add090bde6 DSP: Add support for PCAP logging of CPU<->DSP communications 2014-06-22 20:04:46 +02:00
Pierre Bourdon 7889d90633 DSPLLE: Improve initialization by using an options structure instead of individual params 2014-06-22 20:04:46 +02:00
Lioncash 3c51c75b3e Merge pull request #526 from RachelBryk/input-label
Fix an incorrect label in fps display string.
2014-06-22 13:31:31 -04:00
Rachel Bryk addbbf11d7 Allow progressive scan to be set by game ini. 2014-06-22 12:29:16 -04:00
Rachel Bryk 93a215c9e7 Fix an incorrect label in fps display string. 2014-06-22 12:21:11 -04:00
Pierre Bourdon 5dff577339 Merge pull request #500 from lioncash/ini
Use only section-based ini reading.
2014-06-22 17:21:45 +02:00
Lioncash 86d6455391 Merge pull request #505 from RachelBryk/wiimote-state
Save an unsaved wiimote variable to save states.
2014-06-21 19:59:24 -04:00
Lioncash 72050d455d Merge pull request #521 from RisingFog/dtm-update
Removed unused variable, Added tick count check
2014-06-21 19:19:02 -04:00
Fog 76c5fa084b Removed unused variable, added tick count check 2014-06-21 11:43:33 -04:00
Rachel Bryk 3e60979000 Abort loading a save state if emulation isn't running. 2014-06-20 21:22:54 -04:00
magumagu eeb7fc25f4 JIT: Make lmw/stmw use safe load/stores. 2014-06-20 12:54:10 -07:00
magumagu 6c9095ebab JITIL: fix some unsafe loads.
I'm planning on making changes to the memory code, so I don't want this
stuff to get in the way.  The slight performance hit to JITIL isn't really
important at the moment.
2014-06-20 12:53:22 -07:00
magumagu 85724dd78a JIT: Remove dead code. 2014-06-20 12:53:21 -07:00
magumagu 06864e9fee JIT: Clean up float loads and stores.
Less code is good, and this should make future changes to memory handling
easier.
2014-06-20 12:52:39 -07:00
Rachel Bryk 0d60389d03 Save an unsaved wiimote variable to save states. 2014-06-20 09:35:47 -04:00
Tony Wasserka ddce7e9778 Merge pull request #508 from RisingFog/upstream
Add Tick Count to Movie Files
2014-06-20 13:47:05 +02:00
Fog c6e1a19e61 Add Tick Count to Movie Files
Added tick count to .dtm movie files for more accurate time calculations
2014-06-19 12:11:09 -04:00
Tony Wasserka 0e0238eccf Merge pull request #498 from magumagu/remove-daz
Don't set DAZ on x86 in non-IEEE mode.
2014-06-19 16:53:21 +02:00
Tony Wasserka 9f22b2378d Merge pull request #485 from magumagu/packed-fp-reciprocal
Interpreter: return single-precision results for ps_rsqrte.
2014-06-19 16:51:33 +02:00
Tony Wasserka 0b1cb1ee45 Merge pull request #436 from RachelBryk/netplay-kick
Add an option to kick players from netplay.
2014-06-19 14:57:00 +02:00
Tillmann Karras feef0bbd2b JITs: add a macro for easy interpreter fallback 2014-06-19 14:39:01 +02:00
Tillmann Karras f351ec64db Jit64[IL]: remove code leftover from x86-32 2014-06-19 14:32:53 +02:00
Tillmann Karras e684e902ef Jit64IL: remove unused macro 2014-06-19 14:32:53 +02:00
Rachel Bryk e519b05e7a Remove an unused variable.
It's never been used since it was added except to check the value, which is always false.
2014-06-18 20:25:21 -04:00
Lioncash ce54c1e571 Kill off replaceable usages of s[n]printf. 2014-06-18 19:53:38 -04:00
magumagu 1f604e87be Try to make DTK rewrite handle events the same way as the old code. 2014-06-18 13:09:55 -07:00
Rachel Bryk dbcd40111f Add an option to kick players from netplay. 2014-06-18 13:22:45 -04:00
Ryan Houdek ee690fe401 Merge pull request #468 from RachelBryk/remove-exi-update
Remove unused EXI update functions.
2014-06-16 16:36:13 -05:00
Lioncash f05d3f6e5d Use only section-based ini reading. 2014-06-16 01:31:23 -04:00
magumagu 31b950325d HLE: Remove ES_LAUNCH HLE.
It isn't necessary anymore now that we emulate ES_LAUNCH correctly in
IPCHLE.  This fixes launching MP2 multiplayer in Metroid Prime Trilogy.
2014-06-15 20:08:15 -07:00
magumagu b423004ab3 IPCHLE: use only one CoreTiming event. 2014-06-15 20:08:14 -07:00
magumagu f9b72d0891 IPCHLE: Fix ES_LAUNCH so it works for disk titles.
Among other things, this makes the Disk Channel fully functional.
2014-06-15 20:08:14 -07:00
magumagu a282f181cd Streaming/DTK audio: fix pausing playback. 2014-06-15 15:08:47 -07:00
Ryan Houdek 78d2322aa0 Fix ARM Jit's subfic when d != a.
Missed this path previously, Crazy Taxi hits it.
2014-06-15 15:37:17 +00:00
Ryan Houdek 83157ba350 Fix the ARM JIT's subfic implementation. 2014-06-15 09:40:31 -05:00
Pierre Bourdon 020b4fde1e Merge pull request #492 from Armada651/master
Remove EmuWindow
2014-06-15 14:16:53 +02:00
magumagu d905cbfd5d Don't set DAZ on x86 in non-IEEE mode.
I have no idea why we were using it in the first place; it doesn't match
the behavior of PPC NI flag.
2014-06-15 03:51:51 -07:00
Tony Wasserka a6395ae5b3 Merge pull request #432 from magumagu/ipchle-timing
IPC-HLE event handling improvements
2014-06-15 12:00:54 +02:00
magumagu d43ecd0bd1 Rewrite handling of DTK (streaming) audio.
The primary motivation here is to make sure we submit samples from the
CPU thread. This makes sure the timing of related interrupts accurate,
and generally keeps the different kinds of audio synchronized.  This will also
allow improvements to audio dumping functionality.

The new code is also more concise because it gets rid of some duplicated
audio mixing code.
2014-06-14 15:55:20 -07:00
Armada f2759ffe65 Remove EmuWindow.
All it did was raise complexity.
2014-06-15 00:49:49 +02:00
Pierre Bourdon a0ff868c34 Merge pull request #488 from Tilka/dead_code
Jit64: remove dead code
2014-06-14 22:39:50 +02:00
magumagu 58e9b65f9b IPCHLE: clean up spelling. 2014-06-14 10:03:49 -07:00
magumagu 063ab30e3d IPCHLE: improve HLE timing.
This change attempts to make calls to WII_IPC_HLE_Interface::Update()
more consistent.  We should be calling it whenever there is something we
can pop from a queue, and this patch does that.

DeviceUpdate() now works independently of Update(): it's now just a periodic
timer for devices which need to regularly update state.

With this change, we need a non-zero default delay for IPC replies because
replies are popped off the queue much more aggressively.

This fixes launching channels from the the System Menu.
2014-06-14 10:02:46 -07:00
Tony Wasserka a8f32adcab Merge pull request #470 from pauldacheez/s-Gamecube-GameCube
Fix the capitalization of "GameCube" throughout the project.
2014-06-13 21:52:08 +02:00
Tillmann Karras 32e427cd73 Jit64: remove dead code 2014-06-13 20:15:31 +02:00
Ryan Houdek 2152e812fc Fix conditional branching on x86_64.
The register cache can be filled to the point that when dumping them the FixupBranch goes over the maximum size of 0x80.
Force them to use the "5byte" variant of the jump.

If we were able to determine if the length we had to jump was <0x80 in the future this could be a slight optimization.
This has to be done in bcctrx, bclrx, and twx. It was already done in bcx before.
This fixes issue 7378.
2014-06-13 12:41:50 -05:00
magumagu 3da52018dc Interpreter: return single-precision results for ps_rsqrte. 2014-06-11 19:50:33 -07:00
Ryan Houdek 1db93db474 Merge pull request #474 from Sonicadvance1/conditional-branch
Support conditional register cache flushing on ARMv7.
2014-06-10 07:21:07 -05:00
Ryan Houdek be4b544bf6 Merge pull request #479 from Sonicadvance1/x86-regcache
Jit64 RegCache cleanup
2014-06-10 07:20:55 -05:00
Ryan Houdek 5147e721ae Revert "PPCAnalyst now detects internal branches better"
This reverts commit 31ec57ab81.
2014-06-10 04:58:56 -05:00
Ryan Houdek c2b6a41e6b Fix a few code style remarks.
Removes some casting of size_t to int.
2014-06-10 02:52:15 -05:00
Ryan Houdek b4ec70f0ac Add conditional register cache flushing to JIT64's twx instruction. 2014-06-10 02:46:10 -05:00
Ryan Houdek 06e8c7d7c9 Add conditional register cache flushing to JIT64's bcx instruction. 2014-06-10 02:45:04 -05:00
Ryan Houdek b99edd6202 Add conditional register cache flushing to JIT64's bcctrx conditional route. 2014-06-10 02:44:16 -05:00
Ryan Houdek 5e1a465d50 Change register cache to using an enum to determine flush mode.
This is easier to identify what the flush is doing rather than a "true" as argument.
2014-06-10 02:42:00 -05:00
Ryan Houdek 2989ccff79 Support conditional register cache flushing on ARMv7.
Similar to PR #451, but for ARM as well.
2014-06-09 06:08:13 -05:00
Tony Wasserka 489534bc7c Merge pull request #248 from RachelBryk/dsp-rom-hash
Add DSP rom hashes to movie header.
2014-06-08 11:27:55 +02:00
Paul Olszewski 5d793881b0 Fix the capitalization of "GameCube" throughout the project. 2014-06-08 11:24:49 +09:00
Ryan Houdek b778b43992 Merge pull request #404 from magumagu/jitcache-cleanup
JitCache cleanup
2014-06-07 01:49:07 -05:00
Ryan Houdek b591184e4b Merge pull request #437 from lioncash/netplay
Minor netplay server cleanup
2014-06-07 01:08:52 -05:00
Ryan Houdek b6db0d0ab8 Merge pull request #457 from Tilka/jcc
x64Emitter: J_CC: use 32 bit offset automatically
2014-06-06 20:53:50 -05:00
Ryan Houdek c118632cde Merge pull request #450 from Tilka/fmrx
Jit64: revert fmrx revert
2014-06-06 20:53:21 -05:00
Rachel Bryk 525965a873 Remove unused EXI update functions. 2014-06-06 20:30:36 -04:00
Ryan Houdek db08f7bf4a Merge pull request #371 from quarnster/patch-1
PPCAnalyst now detects internal branches better
2014-06-06 02:45:24 -05:00
Pierre Bourdon 834bc85e1f Merge pull request #458 from Tilka/warnings
Fix some warnings
2014-06-06 00:58:37 +02:00
Pierre Bourdon b780ef950c Merge pull request #435 from YourGamesBeOver/master
Options for selecting which columns are visible in the game list.
2014-06-06 00:46:26 +02:00
yourgamesbeover 91840cb4c7 added option for selecting which column are displayed in the game list, added optional game id column, and added config entry to disable making compressed games blue 2014-06-05 15:34:20 -04:00
Tillmann Karras 0eb341e542 Fix some warnings.
The 'offset' variable needs to stay because the disabled code below uses it.
2014-06-04 01:04:52 +02:00
Tillmann Karras f8280401f6 x64Emitter: J_CC: use 32 bit offset automatically 2014-06-03 23:08:58 +02:00
degasus 541bfd071e Jit64: Don't flush the regcache on bcx 2014-06-02 18:12:54 +02:00
degasus 0cd9eea99e RegCache: make state clear optional on flushes 2014-06-02 18:12:53 +02:00
degasus 38c3812a60 RegCache: merge fpr+gpr BindToRegister 2014-06-02 18:12:53 +02:00
degasus 9e9b71fa87 RegCache: merge fpr+gpr StoreFromRegister 2014-06-02 18:12:53 +02:00
degasus fd9bfddde7 RegCache64: devirtualize RegCache::Start 2014-06-02 18:12:53 +02:00
degasus 8693e0abaa RegCache64: Use std::array 2014-06-02 18:11:26 +02:00
degasus 6089812482 RegCache64: move x?locks into register structs 2014-06-02 13:02:52 +02:00
degasus c800918fd8 RegCache64: remove unused functions 2014-06-02 09:53:44 +02:00
Tillmann Karras 2cf27e4de8 Jit64: revert fmrx revert
The AVX revert was not supposed to touch fmrx.

Partially reverts 2fad2a3e88.
2014-06-02 08:53:02 +02:00
Ryan Houdek e0a60a40a5 Remove unused mojs array from ppcState.
This was some unused array just sitting in our global ppcState struct.
I've got no idea what its use was /supposed/ to be used for if ever implemented.
2014-06-02 01:39:07 -05:00
degasus 4545fa589d Jit64: remove unused FlushMode enum 2014-06-02 08:24:25 +02:00
Lioncash 7babc635cb Compress a for loop in NetPlayServer.
Also gets rid of a redundant return from a void function.
2014-05-29 22:14:50 -04:00
Lioncash 49b0eef393 Remove the min/max functions in CommonFuncs.
The algorithm header has the same functions.
2014-05-29 21:44:41 -04:00
Lioncash a3ae20fc15 Remove the use of a delete[] in NetPlayServer.
We just use a vector instead of a raw pointer.
2014-05-29 20:39:09 -04:00
shuffle2 7c09f07f36 Merge pull request #399 from magumagu/bsemu-bat
BS2 emulation: set up a reasonable BAT during startup.
2014-05-29 15:36:28 -07:00
shuffle2 e9975cdd63 Merge pull request #419 from magumagu/jit-load-store-cleanup
Jit load store cleanup
2014-05-29 15:25:00 -07:00
shuffle2 3b23f4bbd6 Merge pull request #420 from magumagu/backpatch-s8
JIT: make backpatch handle sign-extend from 8 bits correctly.
2014-05-29 14:09:59 -07:00
shuffle2 d18bc31e74 Merge pull request #429 from RachelBryk/netplay-pid
Make sure netplay player IDs are actually unique.
2014-05-29 14:02:24 -07:00
Pierre Bourdon 2a14c55279 Merge pull request #409 from lioncash/lolmemset
Explicitly center the X and Y joystick values.
2014-05-28 12:19:48 +02:00
Rachel Bryk 8c70ee7194 Make sure netplay player IDs are actually unique.
Fixes issue 7329.
2014-05-28 06:04:08 -04:00
Pierre Bourdon 0602dacfde Merge pull request #423 from lioncash/dsp-clarification
Clarify what FindBrackets does in the DSP assembler
2014-05-28 12:01:05 +02:00
Pierre Bourdon 3c722b6be7 Merge pull request #417 from magumagu/jit-unused-flags
Jit: Remove unused members from JitState.
2014-05-28 12:00:46 +02:00
Pierre Bourdon 5abd518eb9 Merge pull request #427 from magumagu/interpreter-hle
Interpreter: correctly support HLE functions.
2014-05-28 11:59:02 +02:00
lioncash 4cb111e5db Clarify what FindBrackets does in the DSP assembler 2014-05-26 17:04:58 -04:00
Pierre Bourdon f5e1dee230 Merge pull request #413 from delroth/flags-opt
PowerPC: Get rid of the 'cr' field which was obsoleted by the new 'cr_fast'
2014-05-26 22:37:01 +02:00
magumagu 2599cd545e JIT: make backpatch handle sign-extend from 8 bits correctly.
I don't think this is actually possible to trigger at the moment... but
it matches the implementation of SafeLoadToReg.
2014-05-26 01:45:07 -07:00
magumagu e5ebf22161 JIT: unify two branches in SafeLoadToReg.
Should behave the same as it did before.
2014-05-25 21:14:06 -07:00
magumagu 68a327c246 JIT: Simplify redundant if statements for memcheck. 2014-05-25 21:13:39 -07:00
magumagu e239e82ea3 Jit: Remove unused members from JitState. 2014-05-25 18:19:47 -07:00
magumagu ec9dd80b7f Memmap: get rid of unused junk.
This should make it a bit more clear what interfaces we're actually
exposing for memory access at the moment.
2014-05-25 18:07:09 -07:00
magumagu 44f481ec13 PPCCache: Get rid of FAST_ICACHE define.
There's no reason to keep around the ifdefs.
2014-05-25 18:06:52 -07:00
magumagu 98dd99a696 Interpreter: correctly support HLE functions.
m_EndBlock is always false at the beginning of SingleStepInner in the
normal interpreter loop.
2014-05-25 15:39:46 -07:00
Pierre Bourdon 3a76c0c8f5 PowerPC: Get rid of the 'cr' field which was obsoleted by the new 'cr_fast' 2014-05-25 22:59:51 +02:00
Pierre Bourdon 010ca048df Merge pull request #408 from lioncash/bool
Use a bool instead of an int to represent the initialized state in IOWin.cpp
2014-05-25 02:25:56 +02:00
Lioncash 9e7c5c0e58 Explicitly center the X and Y joystick values.
More self-explanatory at a glance than a memset.
2014-05-24 20:10:41 -04:00
Lioncash 728078bc09 Use a bool instead of an int to represent the initialized state in IOWin.cpp 2014-05-24 19:43:11 -04:00
Lioncash dd35a968f8 Fix a struct overflow case in WII_IPC_HLE_Device_hid.cpp
WiiHIDDeviceDescriptor is 20 bytes in size (2 of which are padding bytes)
libusb_device_descriptor on the other hand is 18 bytes (does not have the
2 padding bytes).

So we were pulling 20 bytes out of an 18 byte struct, which isn't really
correct.
2014-05-24 18:36:28 -04:00
magumagu 282e9bd292 JitCache: use a custom bit-set class.
Unfortunately, this appears to be necessary for the sake of performance;
the standard library equivalents don't work well enough on Visual Studio
2013. vector<bool>::insert() is way too slow in debug
builds to be usable, and std::bitset generates inefficient code in release
builds.
2014-05-24 14:17:53 -07:00
magumagu 6bb08de8a0 JIT: get rid of useless code in JitCache.cpp. 2014-05-24 11:04:24 -07:00
magumagu 336b55bbc4 BS2 emulation: set up a reasonable BAT during startup.
It doesn't really matter much at the moment given our current terrible MMU
emulation, but it will start mattering once our MMU emulation gets more
accurate.
2014-05-24 03:46:12 -07:00
magumagu 440246a190 Interpreter: use numeric_limits instead of FLT_MAX.
Minor cleanup, and fixes compilation on some systems.
2014-05-24 10:58:15 +02:00
Tony Wasserka cffa848b99 Merge pull request #390 from magumagu/fp-reciprocal
Add accurate implementations of frsqrte and fres
2014-05-24 10:45:01 +02:00
magumagu 6955fef161 Interpreter: Code style fixes. 2014-05-23 15:06:09 -07:00
magumagu d0ed3b8192 Jit: Use infinity and NaN from numeric_limits.
MSVC's implementation of INFINITY is unusable.
2014-05-23 14:59:03 -07:00
magumagu a9a2d3d98d New frsqrte implementation; verified accurate.
This is similar to the old implementation, but it uses smaller tables, and
handles more edge cases correctly.  (hwtest coming soon.)
2014-05-23 14:59:02 -07:00
magumagu 129e76e60d Interpreter: refactor the rsqrte code, and use it for ps_rsqrte. 2014-05-23 14:59:00 -07:00
magumagu 567724b2f8 Jit: get rid of incorrect implementations of fres and frsqrte.
The existing implementations produce answers which aren't consistent with
the hardware, and games care about correct floating point math.

These can be reimplemented at some point in the future, if someone cares
enough, but the general case is probably too much code to inline.

(I'm leaving the ARM implementations in place by request, even though they
suffer the same issues.)
2014-05-23 14:57:34 -07:00
Yuriy O'Donnell ac75766c25 removed trailing whitespace 2014-05-23 21:14:48 +02:00
Yuriy O'Donnell d08abfc14e JIT: JitBaseBlockCache::InvalidateICache no longer memsets iCache memory to INVALID_BYTE.
This is redundant, since we reset the valid_block bits any way.
However, this was a source of a significant performance issues in some games.
In particular, Metal Gear Solid: Twin Snakes.
2014-05-23 20:40:45 +02:00
Yuriy O'Donnell de1e2127dc JIT: JitBaseBlockCache::valid_block is now std::vector<bool>
This was previously a std::bitset, which resulted in generation of suboptimal code by VS2013 compiler.
See https://gist.github.com/kayru/753db9607d680e26194b
2014-05-23 20:32:25 +02:00
magumagu 2f8a147eda Interpreter: make fres match hardware.
New table-based implementation written based on actual hardware behavior.
(hwtest coming soon).
2014-05-22 19:48:48 -07:00
magumagu ad4ad7c1ed Use accurate frsqrte in Interpreter.
The implementation of frsqrte exposed by this change isn't completely
correct; that will be fixed in a later commit.
2014-05-22 19:46:27 -07:00
shuffle2 fc41a53b46 Merge pull request #309 from magumagu/jit-unify-asm
JIT: unify JitAsm for JIT64 and JIT64IL.
2014-05-21 23:10:08 -07:00