2732 Commits

Author SHA1 Message Date
rog
7f624cda10 fix recording from save state 2012-10-18 04:03:12 -04:00
Pierre Bourdon
3990002250 Optimize JitCache::InvalidateICache by maintaining a "valid blocks" bitset
Most of the InvalidateICache calls are for a 32 bytes block: this is the
number of bytes invalidated by PowerPC dcb*/icb* instructions. Profiling
shows that a lot of CPU time is spent checking if there are any JIT blocks
covered by these 32 bytes (using std::map::lower_bound).

This patch adds a bitset containing the state of every 32 bytes block in
RAM (JIT cached/not JIT cached). Using that, a 32 bytes InvalidateICache
can check in the bitset if any JIT block might be invalidated. A bitset
check is a lot faster than an std::map::lower_bound operation, improving
performance of JitCache::InvalidateICache by more than 100%.

Some practical numbers:

* Xenoblade Chronicles (PAL)
  56.04FPS -> 59.28FPS (+5.78%)
* The Last Story (PAL)
  30.9FPS -> 32.83FPS (+6.25%)
* Super Mario Galaxy (PAL)
  59.76FPS -> 62.46FPS (+4.52%)

This function still takes more time than it should - more optimization in
this area might be possible (specializing for 32 bytes blocks to avoid
useless memcpy, for example).
2012-10-06 01:49:09 +02:00
Ryan Houdek
41266129ba Should fix issue 5630. 2012-09-24 17:16:34 -05:00
Ryan Houdek
3229bf824c Should actually load the backend when it changes via game INI 2012-09-23 17:54:23 -05:00
Ryan Houdek
f8f8aea577 Allow the user to set graphics backend from Game INI. Zero GUI option available for setting. 2012-09-23 16:02:11 -05:00
sulokuTDCmago
1e174ad31a F-Zero and Phantasy Star Online Memory Card Manager support. Thanks to Ralf from GS Central
Original information:
http://board.gscentral.org/retro-hacking/53093.htm

Signed-off-by: LPFaint99 <lpfaint99@gmail.com>
2012-09-21 21:41:04 -07:00
Pierre Bourdon
208d25c3f5 Revert merges of aram-dma-fixes and memcard-delay
These merges, while in theory improving emulation accuracy, cause issues
in other parts of the emulator based on invalid assumptions. memcard-delay
fixed some of these issues in the EXI memcard code, but several other
problems still exist and I don't have the time to debug that right now.
2012-09-07 01:11:38 +02:00
Pierre Bourdon
60aed4e5b0 Merge branch 'memcard-delay' 2012-08-24 12:45:45 +02:00
NeoBrainX
bab9b5d3ce FifoPlayer: Fix fifo log playback in dual-core mode. 2012-08-22 01:04:09 +02:00
Pierre Bourdon
0b00c95b79 Simulate a small delay on GC Memcard operations
This was not needed for most games before because the external exception was
itself delayed. aram-dma-fixes changed that and made the external exception
happen a lot quicker, breaking games that relied on the memcard operations
delay.

Fixes issue 5583.
2012-08-20 13:49:12 +02:00
Pierre Bourdon
54fc4029dd Use do { ... } while (0) for the *_LOG macros
Without this patch, such code would not compile:

if (cond)
    WARN_LOG(FOO, "msg");
else
    WARN_LOG(FOO, "msg2");
2012-08-20 13:12:49 +02:00
skidau
28bc5eca37 Added a check for out of bounds memory accesses. Fixes Avatar: The Last Airbender (GC). 2012-08-17 22:14:35 +10:00
Pierre Bourdon
80bf3c2c0b Add VTune profiling support for Dolphin's JIT 2012-08-05 16:39:15 +02:00
Pierre Bourdon
d44a3471be Fix DSP LLE thread affinity being set to the wrong core
Patch from konpie: http://forums.dolphin-emulator.com/showthread.php?tid=24658
2012-08-05 04:24:00 +02:00
Pierre Bourdon
e42c6214d9 Fix a typo in GenQuantizedLoads causing issues with SSSE3 in x86 builds
Patch from konpie: http://forums.dolphin-emulator.com/showthread.php?tid=24658
2012-08-05 04:23:46 +02:00
skidau
00df727d2f Optimised the JitCache struct size from 88 bytes to 80 bytes. Thanks to Lioncash for the patch. 2012-07-23 22:15:34 +10:00
Pierre Bourdon
174c1b00f8 Use the right modifier for hotkeys on Mac
Fixes issue 5324.
2012-07-22 19:22:50 +02:00
sktsqrl
c0060f9ef8 Merge branch 'bba'
OS X support not impl
2012-07-21 12:53:46 -07:00
sktsqrl
601b9fc03b typo fix 2012-07-21 12:50:40 -07:00
sktsqrl
9442d334d8 bba: stub the os x impl 2012-07-21 12:21:55 -07:00
sktsqrl
1d44de53b5 reset samples_avail when stopping gc mic sampling. fixes Mario Party 7 2012-07-11 01:03:25 -07:00
sktsqrl
a02cbedb0f bba: generate MAC if needed 2012-07-07 13:44:26 -07:00
Pierre Bourdon
dd48b246b2 Reduce logging verbosity in the Linux BBA code 2012-07-05 01:30:37 +02:00
Pierre Bourdon
5db70f452b Remove the now unneeded recv sleep hack and fixes game exit by implementing a timeout on read(2) calls in the read thread. 2012-07-05 01:29:42 +02:00
sktsqrl
bb84043de0 bba: (windows) fix games which stop and restart recving, such as logging off of PSO and loggin on again without stopping dolphin 2012-07-04 16:17:47 -07:00
sktsqrl
6cccbb91ec bba: implement recv buffer full interrupt
(windows) hopefully fix crashes from closing dolphin while recving
2012-07-04 16:02:05 -07:00
sktsqrl
9cff8316d2 code cleanup for win32/tap/eth 2012-07-04 16:02:04 -07:00
Pierre Bourdon
9a3dd778cb Preliminary BBA support for Linux. Assumes that a TAP interface named 'Dolphin' exists and is preconfigured. Contains some dirty hacks. 2012-07-04 04:34:40 +02:00
sktsqrl
3cb6e4a864 Redo BBA once again. Now it works on windows, if crappily.
To use, install OpenVPN's TAP device driver. Then create a network bridge between the TAP and your device connected to the internet.
TODO:
proper overlapped read - can look at qemu impl
non-windows impl
2012-06-29 17:33:56 -07:00
Pierre Bourdon
fa2ee1f4a0 Only call CheckExceptions in dcbz in interpreter mode, use FL_ENDBLOCK for Jit64. Now RS3 demo disc does ingame with Jit and block_size = 1 2012-06-20 18:33:23 +02:00
Pierre Bourdon
30de244050 Check for DSI exceptions after a dcbz instruction. Fixes Rogue Squadron 3 in interpreter mode. 2012-06-20 12:15:22 +02:00
Pierre Bourdon
e550623b11 Added a button to dump the FakeVMEM from the memory debugger if the game uses it 2012-06-19 13:51:29 +02:00
Pierre Bourdon
34606f34a9 Allow disassembly of FakeVMEM with the dolphin debugger 2012-06-19 11:57:57 +02:00
Pierre Bourdon
76a13604ef Optimize mtmsr by going to an exception exit only if EE are enabled and some
exceptions are pending.
2012-06-19 06:35:30 +02:00
Pierre Bourdon
bfc797ede1 Removed an obsolete comment 2012-06-16 14:39:17 +02:00
Pierre Bourdon
e1ddbdd214 Use WriteExceptionExit and implement the change for JitIL 2012-06-16 14:38:48 +02:00
Pierre Bourdon
da4141aa9f Simulate ARAM DMAState correctly and check for external exceptions after
MTMSR is executed.

This commits fixes issue 617. WWE Day of Reckoning 1 and 2 are now playable
with Dolphin.

The changes are not implemented for JitIL yet.
2012-06-16 14:38:44 +02:00
skidau
1d9ac2f6e1 Removed the check for changed JIT blocks before invalidation. Fixes the slow speed in Zelda: Ocarina of Time Master Quest.
Fixes issue 5454.
2012-06-09 18:48:15 +10:00
skidau
b0d271db3c Changed MOVDDUP to use MOVSD on non-SSE3 CPU's.
Added DMA wait time under DSP HLE mode.

Fixes Knockout Kings 2003.
2012-06-02 10:06:47 +10:00
skidau
99b7c91df5 Checked if dcbst instructions are preceded by dcbt. If it is, the game is prefetching memory into the data cache, and not loading new code. In these cases, the JIT cache will no longer be flushed. Fixes the frequent "Clearing code cache" issue in games like "The Last Story". 2012-05-31 22:09:33 +10:00
nitsuja
9ea8d54343 remove some code that was made unused by rca287e7957c7 2012-05-26 13:19:57 +10:00
nitsuja
1f9586a8ba compile fix for my merging of rca287e7957c7 2012-05-26 13:19:57 +10:00
nitsuja
19b0b02ad7 add some missing IPC HLE data to savestates 2012-05-26 13:14:15 +10:00
nitsuja
c9059c708e save events in a safer way. the old way assumed that event type indices remain constant (they don't always), which could result in running arbitrary events or crashing upon loading. 2012-05-26 13:09:39 +10:00
nitsuja
a81631b58e made savestates synchronous and immediate. this allows saving or loading while the emulator is paused, fixes issues where savestate hotkeys would get ignored if pressed too close together, might speed up savestates in some cases, and hopefully makes savestates more stable too.
the intent is to replace the haphazard scheduling and finger-crossing associated with saving/loading with the correct and minimal necessary wait for each thread to reach a known safe location before commencing the savestate operation, and for any already-paused components to not need to be resumed to do so.
2012-05-26 13:09:38 +10:00
nitsuja
108f69eaa9 to help movie sync, added some more wiimote data to savestates and disabled auto-reconnect. although I think this is basically just removing hacks and should be more correct, I don't know what side effects this could cause for normal players, so for now these changes ONLY take effect when an input movie is playing back or being recorded. 2012-05-26 12:59:08 +10:00
nitsuja
d19c389246 clean up some savestate code 2012-05-26 12:59:08 +10:00
nitsuja
8ef75dac67 add missing SI device state to saves 2012-05-26 12:59:07 +10:00
nitsuja
5423bca79c add some more missing dsp ucode data to savestates 2012-05-26 12:59:07 +10:00
nitsuja
aa674a65f1 implement PointerWrap::DoLinkedList and use it to simplify saving CoreTiming events 2012-05-26 12:59:06 +10:00