4191 Commits

Author SHA1 Message Date
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
shuffle2
c4e60d5353 Merge pull request #356 from Sonicadvance1/Fix-MMUAnalyst
Fixes games that use the MMU to page in code(Rogue Leader).
2014-05-21 20:59:25 -07:00
magumagu
5dffa28f0a DVDInterface: make fast disc speed faster.
Fixes workaround for crash in Star Wars Rogue Leader.
2014-05-18 20:03:55 -07:00
Pierre Bourdon
826a9e0152 MMIO: Lazy-initialize read/write handlers since most are not actually used 2014-05-18 17:37:33 +02:00
Pierre Bourdon
0f1b1dd3cf CheckExceptions: add TODO and remove a wrong comment 2014-05-18 00:56:18 +02:00
Pierre Bourdon
5391b2dd9c Merge pull request #327 from magumagu/dvd-seek-time
DVD emulation: make seek timing more accurate.
2014-05-17 18:48:35 +02:00
Toad King
1ba5ffeea3 remove trailing whitespace 2014-05-16 20:10:30 -04:00
Toad King
e7e6021414 changed IOCTL_SO_GETHOSTID to remove malloc()/free() calls
account for GetIpForwardTable() returning ERROR_MORE_DATA
2014-05-16 19:13:52 -04:00
Toad King
ce64885a66 make IOCTL_SO_GETHOSTID more accurate on Windows 2014-05-15 20:33:21 -04:00
Fredrik Ehnbom
31ec57ab81 PPCAnalyst now detects internal branches better
For example:

```
addr     opcode    disasm
80026584 48000054  b	->0x800265D8 
```
2014-05-15 16:36:44 +02:00
shuffle2
36720e6822 Merge pull request #351 from Tilka/make_unique
Add a std::make_unique implementation (Common/StdMakeUnique.h)
2014-05-11 01:46:09 -07:00
Tillmann Karras
fd94ce5210 fixmeup use 2014-05-11 10:40:18 +02:00
Ryan Houdek
004af614cf Merge pull request #335 from Tilka/twx
Jit64: implement tw/twi more accurately
2014-05-10 22:26:02 -05:00
Ryan Houdek
cdec575bef Fixes games that use the MMU to page in code(Rogue Leader).
The issue was that on memory exception we wouldn't call in to PPCAnalyst and our code_block would retain the previous blocks information.
This would cause us to compile the previous blocks instructions in prior to the exception exit.
2014-05-09 09:10:45 -05:00
magumagu
4f5421ffb5 DVDInterface: code cleanup. 2014-05-08 11:47:38 -07:00
Shawn Hoffman
fa65eeb492 Apparently the debug build has not been freeing memory since 2008. Undo that. 2014-05-08 00:58:55 -07:00
Tillmann Karras
452cdefaa3 Use std::make_unique where it makes sense to
(and improve some other unique_ptr initializations).

Adapted from delroth's pull request.
2014-05-06 12:35:50 +02:00
magumagu
f123e08731 DVDInterface: tweak buffered reads to be a bit faster.
A read finishes when the result is complete in the drive's buffer, not
main memory.
2014-05-05 14:52:15 -07:00
magumagu
8014795d56 DVD emulation: make seek timing more accurate.
Based on real measurements of a Gamecube disk on a Wii.  (If anyone else
is interested in running more tests, I can upload my code; it's a mess at
the moment.)

This isn't a complete model, but it's a step in the right direction:
in Metroid Prime, the loading times are sane, and I think I managed to do it
without breaking anything.
2014-05-05 14:33:00 -07:00
Ryan Houdek
0bfec024e9 Merge pull request #330 from LPFaint99/GCMemcard_addsave_fix
GCMemcard: fix edge case of adding to a fragmented memcard.
2014-05-05 16:31:33 -05:00
magumagu
727ef4a625 JIT: unify JitAsm for JIT64 and JIT64IL.
Having a bunch of nearly identical code sitting around isn't a good idea,
so fix that. JITIL had a couple of extra entry points into the JIT main
loop, so adjust the code appropriately.

Also fixes Issue 7186.
2014-05-05 11:12:22 -07:00