- FINALLY, T3K can be played with no hangs on music transitions, and with proper music looping!
Also the level select hang (with DynamicCompiler enabled) is resolved (see GameCompatibility.txt/MPE3PacketHack-option though for the caveats)! - Merlin Racing's AI drivers now follow the course as intended (with DynamicCompiler enabled).
- Add Linux port with CMake build system, X11/GLX backend and miniaudio audio output.
- Add libretro port.
- 32-bit build supports the x86 JIT dynamic recompiler on Linux via
__attribute__((fastcall)). - 64-bit builds employ asmjit instead.
- Static linking of glew (no more
glew32.dllneeded). - Replace FMOD 3.75 with miniaudio. No more outdated FMOD SDK /
fmod.dlldependency. - Due to this, decouple host audio from Nuon DMA via a ring buffer (which was implicitly done by FMOD under the hood).
- Audio interrupts are kept intact while muted (matches previous behavior, needs to be verified on real HW).
- Drag and drop support for the UI.
- Can load games directly from ZIP/ISO files on Windows.
- On Linux additionally supports RAR/7z via FUSE tools.
- All "with carry" opcodes (=addwc/subwc/cmpwc variants) should now behave as written in the ISA spec.
- MSB JIT bug fixed.
- Fix bug in JIT versions of MULScalarShiftAcshift, MULImmediateShiftAcshift, MULScalarShiftScalar and MULImmediateShiftScalar (shift broken if left shift >= 32 used).
- Fix bug in JIT version of MULImmediateShiftLeftImmediate (wrong dependency used).
- Fix bug in ANDImmediateShiftScalar, ANDScalarShiftScalar, FTSTImmediateShiftScalar, FTSTScalarShiftScalar, ORImmediateShiftScalar, ORScalarShiftScalar, EORImmediateShiftScalar, EORScalarShiftScalar (shift broken if left shift == 32 used).
- Fix wrong flag setting for large numbers (highest bit set) in JIT versions of DECRc0 and DECRc1.
- Fix missing JIT implementations for loading odmactl,odmacptr,mdmactl,mdmacptr,comminfo,commctl,commxmit0/1/2/3,commrecv0/1/2/3 and configa/configb/dcachectl/icachectl.
- BTST is still not same as ISA spec (as apparently a real HW bug, at least on Aries 2 (=tested there)).
- Multiple bugs in the "CompilerConstantPropagation"-enabled path fixed, so enabled by default now, leading to more performance.
- Fix "_MPEAlloc()" logic to match original BIOS.
- Correct Audio Buffer sizes used for all configurations (via GetBufferSize()).
- Unfortunately, Tetris now sounds even worse than before.
- Fix (re)loading of 2ndary games: reset audio + MPE states.
- To make (at least) T3K work better, the whole MediaRead (and partially MediaWrite) implementation has been redone
to better match the spec (incl. proper return values, proper callback mode handling, and not filling up buffers too early),
at the tradeoff that now the loads actually need some time to arrive (incl. potential stutter). - Fix "_MediaGetInfo()" byte-swapped fields.
- Fix uninitialized framebuffer (e.g. when starting fullscreen from command line).
- Optimize most JIT code that needs to do bswap/endian change.
- Enforce rz/rzi1/rzi2 (matching the Nuon hardware) to have bit 0 as 0 (due to 16-bit alignment).
- Some JIT instructions now are implemented correctly on non-SSE4.1 capable hardware (MUL_SVScalarShiftSvshift, MUL_SVRuShiftSvshift and MUL_SVRvShiftSvshift had vector-lane swaps for 2 components).
- Fix JIT for PVectorShiftSvshift (had wrong z component).
- Handle ITAGS and CTRL tags correctly in the JIT versions of StoreScalarLinear & StoreVectorLinear.
- Handle vdma* loads in JIT.
- Fix a potential correctness issue in the JIT MULScalarShiftLeftImmediate and MULImmediateShiftLeftImmediate with shifts > 32.
- Fix JIT RangeOnly and ModuloOnly register indices.
- instructiontest.cof has been updated with more tests (verified to match real HW / Samsung DVD-N501).