Commit Graph

27 Commits

Author SHA1 Message Date
86b6dfe4b3 Added a instant ARAM DMA mode which is enabled automatically when required.
Detects a situation where the game is writing to the dcache at the address being DMA'd. As we do not have dcache emulation, invalid data is being DMA'd causing audio glitches. The following code detects this and enables the DMA to complete instantly before the invalid data is written.
Added accurate ARAM DMA transfer timing.
Removed the addition of DSP exception checking.
2014-09-27 20:47:29 +10:00
4b37fdfa45 Added a CompileExceptionCheck function to the JitInterface and re-routed the existing code to utilise the interface. 2014-09-27 20:16:26 +10:00
945d431171 Added OPTYPE_LOADPS and OPTYPE_STOREPS instruction types to the PPC table.
Updated ARAM DMA and FIFO write exception checking to uses these types.

Conflicts:
	Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp
	Source/Core/Core/PowerPC/PPCTables.h
2014-09-27 20:16:26 +10:00
0f256715e0 Re-added the ARAM DMA exception check. This fixes the audio cutting in and out of Resident Evil 2 and 3. Removed the special case for short transfers as it is no longer required. 2014-09-27 20:16:26 +10:00
d09e2abb0d Compile the ARAM DMA exception checks into the JIT block in a similar style to FIFO writes. This ensures that the ARAM DMA is handled soon after the DMA completes. Fixes issue 7122 and issue 7342. 2014-09-27 20:16:25 +10:00
eb535be874 Core: Clean up brace placements 2014-08-30 18:06:49 -04:00
34bf0a4ab7 DSP: General cleanup. No behaviour change. 2014-08-14 09:45:05 +08:00
72179f98b6 DSP: Use completion event for ARAM interrupt 2014-08-13 18:26:02 +08:00
adf2ae2ac9 DSP: Add minor delay to initial AIDMA interrupt
When AIDMA begins, the first thing it does is load the source address
and length into internal registers. It then triggers the AID interrupt.
Some begin the AIDMA process without all the data necessary for the
interrupt callback being set up already - they require a few more cycles
to set it up (the delay between the DMA being set to begin and the
interrupt firing). The value of this delay was approximated by tests on real
hardware.
2014-08-13 00:20:13 +08:00
a4bc15e7ba DSP: Do updates to DSP interrupt bits asap
This was being scheduled on the next possible event, which caused
timing issues (in FFCC, AI interrupt would fire before DSP interrupt)
2014-08-11 02:04:08 +08:00
92064d1025 DSP: Fixes behaviour for audio dmas of length 0
This behaviour was tested on a real (wii) console.
2014-08-11 02:02:18 +08:00
35dfe57bc1 DSP: copy audio dma samples as early as possible 2014-08-03 05:24:19 +08:00
47ba8cc4c1 DSP: latch dma parameters 2014-08-02 05:59:36 +08:00
6d3f249dcc mark all local variables as static 2014-07-11 16:10:20 +02:00
22e1aa5bb4 mark all local functions as static 2014-07-11 16:07:23 +02:00
3afa17f752 Move audio handling out of DSP emulation.
This is good for a couple of reasons: one, it gets rid of duplicated code,
and two, DSP emulation shouldn't need to interact with audio in the first
place.
2014-03-29 11:19:32 -07:00
aac4206664 Move UDSPControl structure into DSP.h . 2014-03-29 11:19:19 -07:00
d802d39281 clang-modernize -use-nullptr
and s/\bNULL\b/nullptr/g for *.cpp/h/mm files not compiled on my machine
2014-03-09 21:14:26 +01:00
315a8ba1c0 Various changes suggested by cppcheck
- remove unused variables
- reduce the scope where it makes sense
- correct limits (did you know that strcat()'s last parameter does not
  include the \0 that is always added?)
- set some free()'d pointers to NULL
2014-02-28 12:43:20 +01:00
2afe215271 Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00
3fd87a7636 Second and final pass of clearing out tabs. 2014-02-17 02:19:41 -05:00
6c4ee1753a Fix some vertical alignments
ie. uses spaces for alignment.
2014-02-16 20:12:05 -05:00
92f8d93e96 Remove the old MMIO access "interface". 2014-02-16 19:22:40 +01:00
63990787fd MMIO: Port the DSP/ARAM/AI MMIOs to the new interface. 2014-02-16 19:22:40 +01:00
ebb48d019e Clean up some struct indentations
Also cleaned up the indentations of some variable declarations.
2014-02-09 19:40:11 -05:00
40182a48a5 Cleanup enum indentations. 2014-02-09 16:16:10 -05:00
34692ab826 Remove unnecessary Src/ folders 2013-12-31 14:03:19 -05:00