Skip to content

Releases: Coder787-source/KytyPlus

v1.9

Choose a tag to compare

@Coder787-source Coder787-source released this 31 Jul 17:40

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 launches kyty_emulator.exe directly instead of wrapping it in cmd.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

Choose a tag to compare

@Coder787-source Coder787-source released this 31 Jul 02:18
9f50f52

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 for cmd.exe /K — forward slashes (/) on external drives no longer cause 'G:/Emulators/...' is not recognized errors; launcher now works from any drive (internal, external, USB, network)

Kernel / Core Fixes

  • eventFlag.cpp: Clear() bitmask inversion fixed — m_bits &= bitsm_bits &= ~bits; KernelClearEventFlag now correctly clears specified bits instead of clearing everything else
  • singleton.h: Thread-unsafe malloc+placement-new replaced with C++11 thread-safe static local — no more race condition on boot
  • elf.h: GetDynamicData<T>() compile error fixed — ternary nullptr return for non-pointer T now uses if constexpr (std::is_pointer_v<T>) to return T{} for value types
  • fileSystem.cpp: CloseAll() now sets opened=false before delete; FillRandomBuffer uses thread_local std::random_device instead of re-creating entropy source per call
  • emulator.cpp: std::quick_exit(0) replaced with explicit KytyClose() + std::_Exit(0)atexit handlers now run on shutdown
  • uniqueFunction.h: operator() const-correctness — mutable lambdas now work
  • eventQueue.cpp: KernelWaitEqueue control flow merged from if/if to if/else if; SetName parameter shadow renamed

DualSense / HD Haptics

  • window.cpp / controller.h: DualSenseSendHapticReport() + ControllerSetHapticEffect() — frequency-controlled voice-coil actuators (20-500 Hz, per-actuator amplitude); legacy ControllerSetRumble now maps through HD haptics path for automatic frequency-rich feedback

Graphics / Ray Tracing

  • vma.cpp: AppendHardwareRayTracingDeviceExtensions() + LoadHardwareRayTracingFunctions() — loads VK_KHR_acceleration_structure, VK_KHR_ray_tracing_pipeline, VK_KHR_ray_query, VK_KHR_deferred_host_operations if driver supports them; sets rt_extensions_enabled flag; 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

Choose a tag to compare

@Coder787-source Coder787-source released this 29 Jul 22:40
9f50f52

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

Choose a tag to compare

@Coder787-source Coder787-source released this 29 Jul 17:47
bd74aff

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 $\rightarrow$ HVA memory mapping, optimizing the Vulkan backend pipeline, and stabilizing the JIT compilation layer for increased execution reliability.


🛠 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

Choose a tag to compare

@Coder787-source Coder787-source released this 28 Jul 20:24

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 JITMemoryManager to 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 Sce calls to host handlers, significantly reducing "Illegal Instruction" crashes.
  • Critical Boot-Path Handlers: Added core implementations for SceKernelAllocateMemory and SceKernelCreateThread to 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

Choose a tag to compare

@Coder787-source Coder787-source released this 27 Jul 04:20

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 / KernelMapNamedFlexibleMemory return EFAULT on 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

  • AppContentAddcontMount reports 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

Choose a tag to compare

@Coder787-source Coder787-source released this 26 Jul 17:41

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 delete
  • AvPlayer: 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 match
  • AvPlayer: fixed missing locks on Pause/Resume/CurrentTime/Enable/Disable/Change that could race with playback decode
  • AvPlayer: 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 PadRead call 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

Choose a tag to compare

@Coder787-source Coder787-source released this 24 Jul 17:05

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

Choose a tag to compare

@Coder787-source Coder787-source released this 23 Jul 18:12

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

Choose a tag to compare

@Coder787-source Coder787-source released this 22 Jul 16:04
bcf6054

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_data and null-page guest faults; compute SPIR-V failures retry dispatcher then fall back to a no-op stub
  • HLE: richer libSysmodule load state + soft-success for unknown IDs; NGS2 rack 0x4003
  • 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 KytyPlus v1.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. Tag v1.0, GPL-2.0.