Commit Graph

11001 Commits

Author SHA1 Message Date
f34651f48d MMIO: Port the DI MMIOs to the new 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
b7a0c34906 MMIO: Port the MI MMIOs to the new interface (and rework that module extensively). 2014-02-16 19:22:40 +01:00
f1dba04be7 MMIO: Port the VI MMIOs to the new interface. 2014-02-16 19:22:39 +01:00
a3f95c1e10 MMIO: Port the PI MMIOs to the new interface. 2014-02-16 19:22:39 +01:00
9fe58d28ba Starting point for the new MMIO interface
Design doc:
    https://docs.google.com/document/d/11qcGCWLne1wYvmtFaSrOKZt_vHxXrcWcZsdWJ-MJnyo/edit

The code is currently not used. Migration plan:
    1. Implement MMIO access via MMIO::Mapping in parallel to the current
       method.
    2. Implement all existing MMIO handlers via the new interface.
    3. Remove the old hwRead/hwReadWii/hwReadIOBridge code.
    4. Implement JIT optimizations for MMIO accesses.
2014-02-16 19:22:39 +01:00
6ae2972444 DSP: add inline opcode documentation
While further increasing the table width doesn't make the code any less
ugly, it makes it easy to generate auto-comments in the IDA processor
plugin. Also, use spaces for alignment instead of tabs.
2014-02-16 18:29:53 +01:00
9f462a00a0 DSP: remove redundant expression 2014-02-16 18:18:23 +01:00
0d6ab2c658 Silence some Windows compiler warnings
by adding explicit type casts.
2014-02-16 16:59:45 +01:00
e5eff6bc1a Remove slowdown warning
Now it's shown as "debug" which is disabled by default.
2014-02-16 12:57:17 +01:00
9b57292395 Fix ARM build 2014-02-15 22:05:12 -06:00
77851edc1b Fix the arbitrary exits. We have to make sure that the block links are cleared entirely. 2014-02-15 20:41:42 -06:00
0a9fd93eda On block unlinking, wipe the address from the valid links. 2014-02-15 20:23:01 -06:00
d2a90e6eab If block linking isn't enabled then make sure there isn't a performance hit from getting a block number. 2014-02-15 20:23:00 -06:00
c5b8c65ddc Initialize linkStatus to false in the ARM JIT cores as well. 2014-02-15 20:23:00 -06:00
22b86e64f5 redo 'jit: change our linking module to be able to handle arbitrary exit addresses' 2014-02-15 20:22:59 -06:00
647aad0a19 inline SetViewport into VertexShaderManager 2014-02-15 21:09:42 +01:00
cbe7656b2f Merge pull request #42 from degasus/latencyFix
audio latency fix
2014-02-15 18:22:57 +01:00
cf736cd5df Merge pull request #73 from lioncash/ArraySize-Cleanup
Kill off some usages of the ArraySize macro.
2014-02-15 18:22:28 +01:00
d5f1f0d4a9 merge some common parts of Swap() into VideoCommon 2014-02-15 11:33:43 +01:00
3551259c7a use EFBRectangle for scissor rect
This one is backend independed. The backend should recalc such things on their own.
2014-02-15 11:33:43 +01:00
1f4219b5b4 move perfquery enable checks into videocommon (caller side) 2014-02-15 11:33:43 +01:00
5a660c27bc rename UpdateViewport to SetViewport like all others setters in RenderBase.h 2014-02-15 11:33:43 +01:00
3cd6918dec fix ogl video config crash
This will happen when playing on any other backend than ogl which have a non-trival GLInterface::GetMode() method.
2014-02-15 11:33:43 +01:00
e5318d2624 move shared parts from VertexManager::vFlush into VideoCommon 2014-02-15 11:33:43 +01:00
655d22512b Kill off some usages of the ArraySize macro.
This required the use of std::array in some cases.
2014-02-15 02:43:54 -05:00
48798d8d34 Merge pull request #70 from lioncash/fifo-unsigned
Kill off some casting in the FifoPlayer.
2014-02-15 20:42:15 +13:00
867d0f01a2 Remove #if 0 statement in lfd() in Jit64/Jit_LoadStoreFloating.cpp 2014-02-14 23:46:09 -05:00
49d6be26cd Remove dead else branch in StoreFromRegister() in Jit64/JitRegCache.cpp 2014-02-14 23:43:51 -05:00
d42e8817a0 Clean out some old left-behind quantizer stuff in Jit64/Jit_LoadStorePaired.cpp and Jit64/Jit_SystemRegisters.cpp. 2014-02-14 23:32:37 -05:00
c78faafeae Kill off some silly casting in the FifoPlayer.
Also makes more sense conceptually, since it's not like we'll ever have negative frames.
2014-02-14 22:07:12 -05:00
d6f6672522 Kill auto usage in CISOBlob.cpp per request. 2014-02-13 16:09:58 -06:00
cec8ac20fc Fixed issue 7020. CISO >4GB failure. Caused by integer overflow. 2014-02-13 15:47:42 -06:00
9e56b1d343 Disable framerate correction for OpenAL
OpenAL itself stretch the time on slowdowns, so the Mixer isn't allowed also to change the rate.
2014-02-13 13:22:29 +01:00
404624bf0b Turn loops into range-based form
and some things suggested by cppcheck and compiler warnings.
2014-02-13 09:05:50 +01:00
2ff794d299 Fix some warnings 2014-02-13 09:02:43 +01:00
88526be3b5 Merge pull request #50 from Parlane/inifile_tidy
Fix IniFile to use string& instead of char*
2014-02-13 19:04:27 +13:00
3fe05e0a9f Fix IniFile to use string& instead of char*
Also removes .c_str() usages where found.
2014-02-13 17:06:30 +13:00
7062cf8657 Interpeter: Fixed ConvertToDouble to match the manual.
Also added some documntation comments.
2014-02-12 23:12:17 +01:00
cf5938c4df x64Emitter: Fix the PSUBQ instruction's opcode 2014-02-12 23:12:17 +01:00
1eb8168488 x64Emitter: Add the xmm, xmm form of PSRLQ instruction. 2014-02-12 23:12:16 +01:00
1f34ed2c25 Re-enable non-IEEE mode support 2014-02-12 23:12:16 +01:00
f6897039c7 Interpreter: fix float conversions
Can't use simple casting, otherwise we get the same problems as in Jit64.
2014-02-12 23:12:15 +01:00
db196d8c5b Jit64[IL]: fix float conversions
Floating-point is complicated...

Some background: Denormals are floats that are too close to zero to be
stored in a normalized way (their exponent would need more bits). Since
they are stored unnormalized, they are hard to work with, even in
hardware.  That's why both PowerPC and SSE can be configured to operate
in faster but non-standard-conpliant modes in which these numbers are
simply rounded ('flushed') to zero.

Internally, we do the same as the PowerPC CPU and store all floats in
double format. This means that for loading and storing singles we need a
conversion. The PowerPC CPU does this in hardware. We previously did
this using CVTSS2SD/CVTSD2SS. Unfortunately, these instructions are
considered arithmetic and therefore flush denormals to zero if non-IEEE
mode is active. This normally wouldn't be a problem since the next
arithmetic floating-point instruction would do the same anyway but as it
turns out some games actually use floating-point instructions for
copying arbitrary data.

My idea for fixing this problem was to use x87 instructions since the
x87 FPU never supported flush-to-zero and thus doesn't mangle denormals.
However, there is one more problem to deal with: SNaNs are automatically
converted to QNaNs (by setting the most-significant bit of the
fraction). I opted to fix this by manually resetting the QNaN bit of all
values with all-1s exponent.
2014-02-12 23:12:15 +01:00
c25c4a6e20 x64: add support for some x87 instructions 2014-02-12 22:45:01 +01:00
5e0b8b3477 Rename "JITIL experimental recompiler"
This changes it to "JITIL Recompiler (experimental)"
2014-02-12 10:21:02 -05:00
bbd58b8f6a change AI sampling rate based on framelimit 2014-02-11 14:53:53 +01:00
ca9fd64df9 controll the interpolation frac by the fifo size 2014-02-11 14:35:19 +01:00
d20dbbc92f audiocommon: sync mixer by fifo instead of estimate values 2014-02-11 07:25:58 +01:00
2956ffa5be audiocommon: remove 1:1 interpolation
The usual one is 32->48 khz interpolation. So there is no need in a special 1:1 interpolation only for performance.
2014-02-11 07:25:58 +01:00