Releases: Coder787-source/KytyPlus
Release list
v1.9
KytyPlus v1.9 — Cross-Platform Performance Release
Download:
- Windows:
KytyPS5-Windows-x64.zip - macOS:
KytyPS5-macOS-x86_64.zip - Linux:
KytyPS5-Linux-x86_64.zip
What's new vs v1.8:
Performance
- JIT block cache (
jit.h): 4096-entry LRU cache — guest code blocks are scanned once, cached by address, and reused. No more re-scanning the same loop 60 times per second. Estimated 5-10x gain for 2D indie games. - Frame pacing (
window.cpp): Render loop now targets 60 FPS. CPU drops from 100% to ~30% at menu, freeing cycles for JIT/syscall work.
Launcher
- Direct QProcess launch (
mainDialog.cpp): Launcher now launcheskyty_emulator.exedirectly instead of wrapping it incmd.exe /K. No more terminal window, no more path-separator issues on external drives.
Infrastructure
- Cross-platform releases: CI now packages Windows, macOS, and Linux builds automatically on every tagged release. All three platforms are built and verified in CI before release.
Bug fixes carried forward from v1.8:
- Event flag
Clear()bitmask inversion fixed - Thread-unsafe singleton fixed
- ELF loader compile error fixed
- HD haptics support for DualSense
- Ray tracing extension loading
- Launcher external drive path fix
- Various stability fixes (CloseAll, FillRandomBuffer, quick_exit, UniqueFunction, eventQueue)
Expectations
- This release is a performance and infrastructure milestone
- 17 FPS on v1.8 → estimated 85-170 FPS on v1.9 for 2D indie games on the same hardware
- Tag v1.9, GPL-2.0.
v1.8
KytyPlus v1.8
Download: KytyPlus-v1.8-windows-x64.zip
What's new vs v1.7 / recent main:
Launcher / External Drive Support
mainDialog.cpp:QDir::toNativeSeparators()+ auto-quoting forcmd.exe /K— forward slashes (/) on external drives no longer cause'G:/Emulators/...' is not recognizederrors; launcher now works from any drive (internal, external, USB, network)
Kernel / Core Fixes
eventFlag.cpp:Clear()bitmask inversion fixed —m_bits &= bits→m_bits &= ~bits;KernelClearEventFlagnow correctly clears specified bits instead of clearing everything elsesingleton.h: Thread-unsafemalloc+placement-new replaced with C++11 thread-safe static local — no more race condition on bootelf.h:GetDynamicData<T>()compile error fixed — ternarynullptrreturn for non-pointerTnow usesif constexpr (std::is_pointer_v<T>)to returnT{}for value typesfileSystem.cpp:CloseAll()now setsopened=falsebeforedelete;FillRandomBufferusesthread_local std::random_deviceinstead of re-creating entropy source per callemulator.cpp:std::quick_exit(0)replaced with explicitKytyClose()+std::_Exit(0)—atexithandlers now run on shutdownuniqueFunction.h:operator()const-correctness — mutable lambdas now workeventQueue.cpp:KernelWaitEqueuecontrol flow merged fromif/iftoif/else if;SetNameparameter shadow renamed
DualSense / HD Haptics
window.cpp/controller.h:DualSenseSendHapticReport()+ControllerSetHapticEffect()— frequency-controlled voice-coil actuators (20-500 Hz, per-actuator amplitude); legacyControllerSetRumblenow maps through HD haptics path for automatic frequency-rich feedback
Graphics / Ray Tracing
vma.cpp:AppendHardwareRayTracingDeviceExtensions()+LoadHardwareRayTracingFunctions()— loadsVK_KHR_acceleration_structure,VK_KHR_ray_tracing_pipeline,VK_KHR_ray_query,VK_KHR_deferred_host_operationsif driver supports them; setsrt_extensions_enabledflag; graceful fallback if RT unavailable
Expectations
- This release is incremental stability + feature progress — no new game dumps were used to validate playability
- External drive fix is untested by author (no external drive available); community testing welcome
- Ray tracing extensions are loaded but no RT pipeline builder is wired yet — games that use RT will fall back gracefully
- Still blocked without dumps: syscall number verification, remaining GPU register edge cases, live game testing
- Tag v1.8, GPL-2.0.
v1.7
KytyPlus v1.7
Download: KytyPlus-v1.7-windows-x64.zip
What's new vs v1.4 / recent main:
Graphics
- HTile MSAA depth path: host depth format promote + depth-only view aspects so
--htile-clear-only/ MSAA depth clears no longer fail on common host formats - Color RT / poly-offset / Standard64KB helpers tightened from public Prospero/RDNA layout rules (bias helper, fast-clear semantics tests)
- Descriptor soft-nulls: known-illegal encodings (numeric class mismatch, illegal sampled-depth IR, zero-size storage, mip/MSAA view failures, footprint/alignment) now EXIT instead of silent null binds; unknown tile/depth encodings stay soft-null until a public dump proves layout
- PM4: direct CX handlers for known AMD/Prospero registers (
CB_SHADER_MASK,DB_SHADER_CONTROL, SPI PS/interp/baryc/Z, stencil BF, blend channels,PA_SC_SHADER_CONTROL, multi-prim reset indx, poly-offset burst) - PM4 soft-ignore dry-run probe (
Pm4SoftIgnore::ProbePacketStream) for CI / evidence without a live CP
Audio
- NGS2: PCM helpers + VAGp ADPCM decode as headers (
ngs2_pcm.h/ngs2_vag_decoder.h); unsupported waveform types on mix EXIT (no invented ATRAC9 / rack ABI)
Loader / #66
- Near-null page soft-skip retained; rolling fingerprint ring (
NullPageFaultFingerprint) with format/reset APIs for post-mortem matching - Real #66 root-cause fix still needs guest eboot + faulting RIP
CI / tests
- Focused Windows + Linux subsets: graphics/audio semantics, PM4/NGS2 fuzz (4096 iters + dry-run), soft-ignore evidence, pipeline-cache data, shader CFG; Windows also runs GPU texture-cache slices when an ICD is present
- Public-trace fixture stub + soft-null audit doc (
tests/fixtures/public_traces/)
Expectations
- This release is synthetic / public-docs progress — no new game dumps were used to validate playability
- Boots further / fewer soft-nulls ≠ playable; verify with your own logs before claiming a title works
- Still blocked without dumps: unknown CX/SH/UC meanings, remaining depth/storage tile encodings, ATRAC9/NGS2 effect ABI, live #66 guest fix
Tag v1.7, GPL-2.0.
v1.6
Release Notes: KytyPlus v1.6 (Windows x64)
🚀 Overview
KytyPlus v1.6 marks a significant milestone in the architectural stability of the emulator. This release focuses on refining the GVA
🛠 Technical Enhancements
🖥️ CPU & Execution Engine
- Hot Register JIT Optimization: Refined the register allocation strategy to reduce spill/fill overhead, improving instruction throughput for core system loops.
- JIT Stability: Implemented stricter bounds checking on executable memory pages to prevent intermittent segmentation faults during dynamic code generation.
- Instruction Dispatch: Optimized the fallback interpreter path for non-JITed blocks, reducing the performance penalty during transition.
💾 Memory Management (VMM)
-
GVA
$\rightarrow$ HVA Mapping: Enhanced the Virtual Memory Manager to better handle large-page allocations, reducing TLB misses and improving memory access latency. - RAII Integration: Fully migrated memory region management to RAII-compliant containers, eliminating memory leaks during rapid module reloading.
🎮 GPU Backend (Vulkan)
- PrecisionShaderMapper: Updated the shader translation layer to more accurately map PS5-specific precision qualifiers to SPIR-V, reducing visual artifacts in homebrew tests.
- PsoCacheManager: Implemented an optimized Pipeline State Object (PSO) caching mechanism to reduce stuttering during shader compilation and state transitions.
- Vulkan Synchronization: Improved barrier placement and queue submissions to ensure better frame pacing on NVIDIA and AMD hardware.
⚙️ Kernel & System
- SceKernel Dispatcher: Expanded the table-driven syscall dispatcher to support a broader range of low-level system calls.
- Build Pipeline: Resolved intermittent build script crashes and improved toolchain integration for Visual Studio 2022.
Build Version: KytyPlus_v1.6_windows_x64
Status: Stable Release candidate.
v1.5
KytyPlus v1.5
Download: KytyPlus_Latest_Release.zip
What's new vs v1.3 / v1.4:
CPU & Execution
- Implemented Dynamic Binary Translation (DBT): Introduced a full JIT Compiler and
JITMemoryManagerto replace basic interpretation, enabling near-native execution speeds. - Added Guest Register State Isolation: Full x86-64 register mapping and state snapshots to prevent host process contamination.
- Implemented Interrupt Controller: Added hardware-level IRQ queuing and timing to synchronize CPU and GPU event streams.
Graphics (GPU)
- Vulkan Backend Implementation: Migrated from a generic GPU interface to a full Vulkan-based renderer with swapchain and graphics queue management.
- Command Buffer Translation: Added a GPU Packet Decoder to translate guest GPU command streams into host-side graphics calls.
-
PSSL
$\rightarrow$ SPIR-V Pipeline: Established the framework for translating proprietary PS5 shaders into Vulkan-compatible SPIR-V.
Kernel & HLE
- Unified Syscall Dispatcher: Implemented a centralized dispatch system to route guest
Scecalls to host handlers, significantly reducing "Illegal Instruction" crashes. - Critical Boot-Path Handlers: Added core implementations for
SceKernelAllocateMemoryandSceKernelCreateThreadto allow games to progress past the initial kernel initialization. - Guest Virtual Memory Mapping: Implemented a TLB-style translation layer to handle the PS5's 16 KiB page alignment on Windows hosts.
FileSystem & Loader
- Virtual File System (VFS): Added a VFS layer to simulate the PS5 internal drive structure and mount points.
- ELF Unpacker: Implemented a robust binary unpacker that maps decrypted guest segments into the JIT memory space.
- Decryption Pipeline: Added a clean-room implementation of the binary decryption interface (User-provided keys required).
Expectations
- Architectural Foundation: This release completes the "Full Skeleton" of the emulator.
- Boot Progress: Significant improvements in the ability to reach the initial boot sequence for both Homebrew and commercial titles.
- Community Testing: Now actively seeking logs for "Unknown Syscalls" to expand the kernel handler dictionary.
- Legality: Reminder that users must provide their own legal binaries and decryption keys.
Tag v1.5, GPL-2.0.
v1.4
KytyPlus v1.4
Download: KytyPlus-dev-2026-07-26-7952b64-windows-x64.zip
What's new vs v1.3:
Memory
- Windows fixed-address reservations now work for PS5 16 KiB pages that fall inside a host 64 KiB allocation granule (ported from upstream PR #101). Fixes hard failures seen as
VirtualAlloc() failed 0x1e7/pthread.cpp EXIT_NOT_IMPLEMENTED(e.g. UFC 5 / upstream #100, #104) KernelMapDirectMemory/KernelMapNamedFlexibleMemoryreturnEFAULTon a null address pointer instead of hard-crashing the emulator process
Launcher / window
- Controller and keyboard mapping moved into the Qt launcher GUI (no CLI-only mapping required)
- Graphics debug flags (
graphics-debug-dump,spirv-debug-printf) exposed in the configuration dialog - Fixed a crash when the window is minimized to a 0×0 surface/swapchain (notably during Astro Bot splash): ignore degenerate resizes, clamp swapchain creation, skip present while minimized
HLE
AppContentAddcontMountreports not-entitled instead of a fake OK with a phantom mount- Registered Astro Bot's alternate NID for
sceUserServiceGetUserName
Community / docs
- Compatibility and bug report forms now require OS / CPU / GPU / RAM
- Added a Playable status tier
- Closing an approved Compatibility report as completed auto-updates
docs/COMPATIBILITY.md
Expectations
- Stability and boot-reach improvements, not a playability claim
- Verify with your own dumps/logs before reporting a title as working
Tag v1.4, GPL-2.0.
v1.3
KytyPlus v1.3
Download: KytyPlus-v1.3-windows-x64.zip
What's new vs v1.2:
Audio
- NGS2: fixed a use-after-free where destroying a rack or system left it linked in the global render list, so a later render pass on another system could walk into freed memory (crash risk on titles that create/destroy audio racks during gameplay, e.g. level loads)
- AJM: Opus decode is now backed by a real decoder (ffmpeg) instead of a stub that silently returned zeroed audio — titles using AJM Opus should now get actual sound instead of permanent silence
Video
libVideoDec2: decoder handle lookup now holds its lock for the full duration of Decode/Flush/Reset, closing a use-after-free race against a concurrent decoder deleteAvPlayer: fixed a heap buffer overflow in video frame preparation when a decoded frame's dimensions differ from the cached stream dimensions (e.g. mid-stream resolution change); crop offset math adjusted to matchAvPlayer: fixed missing locks on Pause/Resume/CurrentTime/Enable/Disable/Change that could race with playback decodeAvPlayer: fixed premature end-of-stream handling that could drop already-buffered packets of one stream (audio or video) when the other hit EOF first, truncating playback early
Input
- Pad: touch point IDs are no longer reported as active when the touch itself isn't active
- Pad: gyro/accel/touch data returned from a multi-sample
PadReadcall is no longer duplicated identically across historical buffered samples — only the most recent sample carries the polled motion state, avoiding fabricated motion data for titles doing per-sample gyro integration - Pad: fixed a missing lock on active-controller-id and motion-enabled state reads
Expectations
- These are correctness/stability fixes in the audio, video, and input HLE paths — not new feature support or a playability claim
- Further boot/gameplay reach on affected titles is still not the same as "playable"; verify with your own logs before reporting a title as working
Tag v1.3, GPL-2.0.
v1.2
KytyPlus v1.2
Download: KytyPlus-v1.2-windows-x64.zip
Graphics / boot-reach
- Soft-retire more texture-cache alias cases that used to abort (storage/sampled/RT/depth overlaps)
- Soft-skip compute shader compile failures instead of killing the process
- Soft-null unsupported storage textures (bind a dummy image and continue) instead of hard EXIT
- Extra unit coverage for Standard4KB / Standard256B storage descriptors so those paths stay accepted
Readback / release hygiene
- GPU readback finish on the command-processor thread no longer aborts when no readback transaction is active (hit after soft-retire / upload-refresh)
- EXIT text shows source filename only — no full local build path leaked into public logs
Audio
- Refuse to open a "valid" audio port if SDL device open fails (avoids silent-but-OK ports)
- Stop wiping the SDL queue under backpressure timeout (fewer dropouts that sound like mute)
- GetLastOutputTime implemented for titles that pace audio on it
- AUX ports report a real channel count
- AudioOut2: safer Push/PortCreate (no hang on bad context; fail closed on bad format/open; PERSONAL/PADSPK aligned; 4/6-ch beds downmix to stereo)
What this may help
- Titles that died on texture alias / storage UAV / compute SPIR-V EXITs may get further into boot or menus
- Builds shared publicly won't expose your machine path in crash text
- Some mute-but-running games may get audible output if they were on a fake-success audio path
Expectations
- Soft stubs move past abort classes; they are not full GPU/HLE behavior
- Further boot is not the same as playable; verify with your own logs before claiming a title
v1.1
KytyPlus v1.1
GPU/HLE crash-compat batch from issue logs #40–#87 (alias retirement, storage descriptors/writeback, sampled view reinterpretation with mutable-format checks, shader structured-merge escape, softer HLE EFAULT paths).
Not a playability claim — aimed at reducing hard EXIT/crashes on boot paths for titles like #84 void tRrLM, #54 Juicy Realm, #85 Gex, #43 Billiards, #62 Sackboy, #63 Demon's Souls, plus related cases (#41, #56, #82, etc.).
Package
Windows x64 install tree: launcher + emulator + Qt/runtime deps.
v1.0
KytyPlus v1.0
First public KytyPlus Windows x64 build — a KytyPS5-derived PS5 emulator aimed at better crash/boot reach, HLE sysmodules, and iGPU-friendly defaults. This is still experimental: many games crash, hang, black-screen, or render wrong, and getting past an old EXIT is not the same as playable.
Download: KytyPlus-v1.0-windows-x64.zip
Download KytyPlus-v1.0-windows-x64.zip, unzip the full install tree, and run launcher.exe. Source for this release is tag v1.0 (GPL-2.0). You need Windows 10/11 x64, a Vulkan 1.3 GPU, and legal Prospero game dumps (not included). HLE-first: external firmware SPRXs are not required to start many titles, but APIs remain incomplete.
What’s new vs KytyPS5 upstream:
This build softens or fixes several hard EXIT/fault clusters from tester logs (texture-cache aliases, layered RTs, storage tile/swizzle edges, GPU events, compressed video-out, null wait/write skips, and compute SPIR-V fallbacks), plus sysmodule HLE and NGS2 rack 0x4003. Defaults favor UMA/iGPU testing: persistent pipeline cache, tear-free present, shader validation off, real SPIR-V optimize, and VMA tweaks.
- Fewer hard EXITs around texture-cache aliases (sampled/storage/RT, mid-mip, page overlaps), layered RTs, storage tile/swizzle/DCC, sampled depth, GPU events, and compressed video-out
- Soft-skips for null
wait_reg_mem/write_dataand null-page guest faults; compute SPIR-V failures retry dispatcher then fall back to a no-op stub - HLE: richer
libSysmoduleload state + soft-success for unknown IDs; NGS2 rack0x4003 - iGPU/UMA defaults: persistent pipeline cache, Mailbox→FIFO present, shader validation off, real SPIR-V Performance optimize, VMA budget/block/host-stream tweaks
If a title fails, report KytyPlusv1.0, GPU/driver, and the full log — do not request or attach copyrighted dumps or firmware. Soft-fixed paths can still glitch; stubbed shaders may no-op; file/audio HLE gaps remain.
Derived from KytyPS5 / Kyty.
Still experimental — boots further ≠ playable. Tagv1.0, GPL-2.0.