RPCS3 v0.0.3 Alpha is released. RPCS3 is an open-source Sony PlayStation 3 emulator and debugger written in C++ for Windows and Linux. The emulator has been in development since early 2011 and currently supports modern DirectX 12, Vulkan and OpenGL renderers. The emulator is capable of booting and playing a decent amount of commercial games and PlayStation 3 SDK samples. Many more titles are also becoming playable with future development by contributors.
RPCS3 v0.0.3 Alpha Changelog:
PPU
– Fixed instructions FCTIW, FCTID, FCTIWZ, FCTIDZ, MULLW, DIVD, DIVDU, DIVW, DIVWU, MULHW;
– Removed HACK instruction;
– Updated VREFP, VRSQRTEFP instructions;
– Optimized MTOCRF instruction;
– Analyser: TOC detection logic improved;
– Analyser: Several bugfixes;
– Opcodes: Added RLDICR, STFD, STVX, LFD, LVX, CLRRDI;
– Debug Mode Implemented;
– Interpreter Precise: SAT bit implemented;
– Recompiler updated from LLVM 3.8 to LLVM 4.0;
– Recompiler: Implemented STSWI, LSWI;
– Recompiler: compiles only one block at time, uses tail calls to move between blocks and fully writes PPU context, except CIA;
– Recompiler: Implemented multi-threaded compilation;
– Recompiler: Optimized MFCR;
– Recompiler: Improved FlushRegisters;
– Recompiler: Disabled some LLVM passes;
– Recompiler: SSA reordering (Fetches indirect jump target, flushes registers earlier);
– Recompiler: Relocation support;
– Patch engine for PPU executables implemented.
SPU
– Speedboost: Lower SPU priority and Bind SPU threads to secondary cores added (prevents PPU threads from being starved, Windows-only for now);
– Interpreter: Fix isdenormal, Fix MFC_WrTagUpdate;
– Disable SPUJIT.log by default;
– Patch engine for SPU images implemented;
– SPU Recompiler: Updated ASMJIT submodule, adding 1 year worth of fixes from upstream;
– Checks exponent bits in FMA ops: Modifies the result of SPU FMA if exponents in a or b are at max and discards the value. This is by no means even close to accurate handling of corner cases in the SPU, but rather a fast workaround;
Discards the result of (a * b) if either a or b has extended exp bits (usually inf) without degrading performance too much.;
– Properly implement FCGT and FCMGT SPU opcodes;
– Minor tweaks to SPU wait loops and DMA transfers to improve stalling behavior;
– ASMJIT Recompiler: Avoid aggressively locking the asmjit db and make compilation step multi-threaded. It takes a much shorter time to compile a function than it does to wait on a lock especially with non-spurs-type kernels;
– ASMJIT Recompiler: Cache compiled functions and avoid calling database analyze function when not needed;
– Add loop condition detection by triggering an OS scheduler update on RdDec - this function can only be sensibly used as part of a loop. [Disabled by default for now];
– Add concurrent execution analysis. This only affects spurs-type kernels where multiple threads are executing the exact same code at the exact same time. Introduces a small delay to racing threads so that they are effectively desynchronized whenever they enter a sensitive function. [Disabled by default].
Core
– Fixes to SPRX Relocation;
– Removed throw cpu_flag;
– Auto load LLE improvements: added libdtslbrdec, libssl, libhttp, libfs, various encoders;
– Implemented sys_ppu_thread_register_atexit, strncasecmp, strrchr;
– Configuration code simplified;
– LV2 Load: Don't LLE savedata modules, preventsbroken saves;
– Enhancements to VirtualMemory;
– Implemented FREFS/Weak Imports;
– Implemented REF 4, REF 6 and REF 57;
– Fixed hex_to_bytes;
– Added ror8/16/32;
– Added moving disc games to outside of /dev_hdd0/game on boot if they're there;
– Fixes to dev_bdvd mounting;
– cellSaveData: Only return data for dir and bind where requested;
– Reduce watchdog memory footprint by using the segment address as a base + 256K;
– Check AVX for Intel processors;
– Use RTM instructions when available.
HLE
– HLE linkage rewritten;
– Fixes for module initialization;
– Improvements to cellSave, sceNpTrophy and cellVdec modules;
– Big improvements to sys_fs;
– Rewritten sys_spu_image loading and sys_ppu_thread_once;
– Implemented _sys_sprintf, cellHddGameGetSizeKB, cellGameDataGetSizeKB, cellGameGetSizeKB, cellPadGetDataExtra, cellPadPeriphGetData, cellHttpUtilParseUri, sys_fs_disk_free;
– Fixed cellGameContentErrorDialog, cellPadGetData, sceNpTrophyGetRequiredDiskSpace, sceNpBasicGetEvent;
– Fixed max_connect on cellKbInit and cellMouseInit;
– cellVideoOut: Add 59.94 Hz support required by some games;
– Registered many unknown new modules/functions such as sys_lv2coredump, sys_crashdump, cellDaisy.
RSX
– Workaround for src type 3 as we gather more information;
– Workaround for invalid/unknown methods;
– Fix TXP when performed on a cubemap texture;
– Do not always assume a tex variable exists when doing alphakill checks (Variable may have been optimized away).
– Adds in support for immediate mode rendering between begin/end command pairs;
– Fixes missing draw calls in most homebew games;
– Clamp mipmap count to always > 0;
– Throw if user attempts to use Vulkan/DX12 without driver support;
– Re-implements vertex shader output control; adding in options for more complex conditions;
– Added a workaround for intel drivers which don't report their capabilities via extensions for some reason;
– Include strict vertex shader output declaration for compatibility with mesa drivers which are very strict;
– Rewrites vertex upload, removing the slower methods used before. The old code is improved as well and kept around for debugging until its state is known to be mature enough (performance is up anywhere from 10-300% for geometry heavy scenes);
– Lifts some restrictions on vertex register formats and adds a fix for register type data uploads when using a vertex buffer stream;
– Fix BRK/RET fp instruction;
– Image clipping fixes. Fixes software mode clipping in nv3089::image_in. Fixes cropped graphics in some games.
– Fix stencil clear values;
– Fix some buffer misalignment crashes when using debuggers or faulty drivers;
– Fix OpenGL clip space conversion (Z symmetry);
– Add a workaround to fix shadow map generation;
– Add hardware PCF shadow support;
– Fix stencil buffer reset;
– Remove several hundred compilation warnings from RSX code;
– Improve SPIRV compilation speed by avoiding unnecessary SH context (re)creation;
– Register NV4097_SET_COLOR_KEY_COLOR method;
– Fix index buffer generation when using a non-zero base offset;
– Added a toggle to ensure strict rendering mode. Currently only affects framebuffer feedback loops. When disabled, we ignore the feedback loop in Vulkan and issue a texture barrier in ogl. When enabled, a duplicate texture is created to ensure this is not an issue but there is a tangible performance penalty (Defaults to OFF).;
– Fix a regression when emulating index buffers for generated primitives. Removes the 'first' parameter since rpcs3 does not support disjoint vertex ranges at the moment anyway;
– Added a 'speed hack' - not really a hack - for games that share memory regions between textures and other GPU resources such as shaders. Significantly boosts performance in games where the cache is invalidated often. Can be disabled by setting 'Strict Rendering Mode' to true;
– Small to moderate speedup on games with many draw calls due to some minor tweaks to c++ object management;
– Implement frame skipping (config file option only for now);
– WIP: Batch together draw calls using the same geometry with different translation matrices;
– Allow multi-threaded vertex processing;
– Fixed some fragment shader instructions;
– Implement RSX framebuffer memory persistence;
– Avoid aggressive resource create/delete cycles when using Vulkan. Moderate speedup in some games and fixes flickering in some cases;
– Fix an RSX crash when a null address is provided for the fragment shader location;
– Improved multithreaded vertex processing so that the penalty is much lower if there are no resources available. Its also tunable now allowing the threshold to be set.
OpenGL
– Actually bind a stencil attachment on FBO creation;
– Implement glArrayElement indexing scheme;
– Force align DXT compressed textures to block_edge size;
– Fix legacy clamp mode: The meaning of texture border has changed starting with GL 3+ due to the resulting confusion from broken and incomplete implementations on hardware of the GL 1.x era. As such, legacy clamp is closer to the modern edge clamp than border clamp as it once was. Border pixels in textures are not supported on newer hardware and never truly worked in the past either, especially on NV cards. Should hopefully fix any games showing visible grid lines in OpenGL;
– Implements texture blitting and scaling using the GPU to avoid texture readback whenever possible;
– Use sampler objects instead of binding sampler state to texture handles;
– Adds some simple driver capabilities checks to determine if the driver can run the emulator or if we need to disable some features. Also adds in other fallback paths;
– Fix for the mix-and-match nature of ps3 shaders causing issues with mesa's linker;
– Minor typo fix affecting intel GPUs with OGL;
– Fix a rare OpenGL crash when trying to capture traces with renderdoc;
– A minor behavior fix for OpenGL when strict mode is not enabled. Makes behaviour alot more reliable to debug now;
– Added Stretch to Display area as an optional setting.
Vulkan
– Silence useless error on vk::program destructor;
– Fix stencil clear value on Vulkan;
– Fixes gsl::span errors with Vulkan as well as not throwing an exception if an attribute/texture is enabled, but not active in the shader;
– Added a fix for LINE_LOOP rendering using Vulkan;
– Re-enable layout transitions in Vulkan: Image layout transitions were disabled at some point during code refactoring. The impact on Nvidia drivers is not too bad, but horrible moire artefacts appear on AMD, especially newer cards;
– Lay foundation for GPU scaling implementation;
– Implements synchronized framebuffer r/w for Vulkan. Still missing some important pieces such as hw accelerated image_in, but that will get merged in later;
– Minor fixes for broken contexts on unsupported devices;
– Fix a few Vulkan API spec violations. Fixes a free-during-use on a leaky handle when the debug overlay is enabled. Also clips clear rects to always fit within the current render target;
– Monitor buffer usage to prevent running out of working space on Vulkan. Also reorganizes some of the buffer init process on Vulkan;
– Fix a rare Vulkan shader compiler bug;
– Adds 'add_signed' in blend ops;
– Added Stretch to Display area as an optional setting;
– Fix Vulkan layout transitions;
– Fix a Vulkan crash about undeclared fog_c. Also fixes default parameter initialization that should fix some games that have broken graphics with Vulkan but work fine with OpenGL.
D3D12
– Lay foundation for GPU scaling implementation;
– Adds in a very old bugfix that makes D3D12 crash properly instead of throwing a cryptic range error. This DOES NOT fix D3D12 crashing, merely generates a more useful fatal error message.
Crypto
– Fix SPRX/SELF check in npDrm;
– EDAT fixes;
– C00 SPRX Loading fixed.
Input
– Implemented Native DualShock 4 Support;
– XInput/MMJoystick: Fix connection status;
– XInput: Vibration support;
– DualShock 4: Use controller calibration values for accel/gyro.
Audio
– Added Downmix to Stereo option.
Linux
– Mutexes fixed (cause of constant freezes);
– Added installation;
– Initial support for Linux AppImages;
– Reimplemented Vulkan Render on Linux;
– Implemented low-latency ALSA Audio Renderer for Linux;
– Added compatibility with mesa drivers;
– Fixed LLVM compatibility on Linux with gallium based drivers (mesa): llvm_map_components_to_libnames provides a list of static libraries to link our target to. Unfortunately, on linux, this causes llvm to be initialized once on program launch and then when any component loads shared llvm, e.g mesa resulting in the "inconsistent commandline options" error. This changed links against dynamic llvm library when compiling on linux;
– Added instructions and support for Fedora;
– Enable optimizations on TravisCI.
BSD
– Improved portability for BSDs.
GUI
– Icon updated;
– GUI rewrite: Replaced wxWidgets 3.1 with Qt 5.7;
– GUI Redesigned;
– Added Grid View;
– Added Tiny, Small and Huge Sizes;
– Added Welcome Screen;
– Debugger is now hidden by default;
– DPI Scaling issues fixed;
– Re-implemented VFS manager;
– Re-organized the graphics options tab a bit to separate main options from debugging options;
– Improved Debugger and Disassembly;
– Improved Categories in Gamelist;
– Added stacking option for same log messages to log contextmenu;
– Added sort indicator to Gamelist;
– Added background color to icons for better readability;
– Added default layout for better looks on first start;
– Added Resolution, Sound Format and Parental Level columns to Gamelist;
– Added Save Manager;
– Added tooltips and descriptions to Settings;
– Check system for SSSE3 presence and throw error message when opening the emulator;
– Added Toolbar Icon Color Picker;
– Added Game window resize on boot.
Download: RPCS3 v0.0.3 Alpha
Source: Here
0 Comments
Post a Comment