KytyPlus v3.1
Tag: v3.1 · License: GPL-2.0 · Platforms: Windows, macOS, Linux
Bug fixes
🗂️ File handling (PKG / PFS)
- Fixed: Dirent padding double-skip caused the first entry of every directory to be skipped.
- Fixed: 64-bit inode mode detection — high inode numbers wrapped and were misclassified as directories.
- Fixed: Path-traversal guard now blocks drive-letter prefixes and Zip Slip-style escapes during extraction.
- Fixed: Direct block pointers were not bounds-checked; the emulator could read past the end of a file.
- Fixed: PKG name-table offset was not bounded to the file extent.
- Fixed: PFSC-compressed images are now fully decoded — proper header parsing with the per-block offset table, a stored-uncompressed fast path, and full bounds checks — instead of being rejected.
🎨 Graphics (FSR upscaler)
- Fixed: Storage-image format mismatch produced a black frame on some systems.
- Fixed: Image views were not cached and could be freed while the GPU still referenced them, causing a crash.
- Fixed: RCAS UBO offset was not aligned to
minUniformBufferOffsetAlignment, breaking compatibility with some drivers.
⚙️ Kernel & background tasks
- Fixed:
eventFlagsingle-thread wait-slot TOCTOU could leave two threads blocked forever. - Fixed:
HttpWaitRequestbusy-spin pinned the CPU at 100% and flooded the log with hundreds of millions of duplicate lines (9.8 GB in a single session); it now blocks for the requested timeout and no longer logs on the hot path.
🔧 Build & portability
- Fixed:
std::expectedpolyfill rewritten — no longer declares types innamespace std(collided with libstdc++'s legacystd::unexpected()), and is fully exception-free so it compiles under the project-wide-fno-exceptionson macOS and Linux. All call sites updated; macOS/Linux CI builds pass again. - Fixed: The Oodle loader on Windows — a member named
LoadLibrarywas macro-expanded bywindows.h(#define LoadLibrary LoadLibraryA) and never resolved; renamed andNOMINMAXadded. - Fixed: Missing
ZlibDecompressor::TryInflatedeclaration broke the Windows build.
✨ New internals
- Added: PFS volume layer (
pfsVolume) and a decompression provider (Decompressor) backing the PFSC decoder — zlib/deflate in-build, optional user-supplied Oodle core (see Known limitations). - Changed:
.gitignorehardened so emulator logs can no longer be committed accidentally.
Known limitations
- Compressed game files: zlib/deflate (algo 0) is decompressed in-build, Oodle/Kraken (algo 1) requires a user-supplied core, and any unsupported codec is detected and skipped cleanly rather than misread.
- Encrypted files are not supported.
- The upscaler requires a modern graphics driver; otherwise it is disabled automatically.
- The graphics cache is not shared between driver versions.
Legal
KytyPlus is a clean, KytyPS5-Based emulator. It ships no Sony code or keys, does not decrypt or bypass DRM, and requires you to supply your own already-decrypted content. Released under GPL-2.0.