KytyPlus est un fork de KytyPS5, lui-même dérivé du projet original Kyty. Il reprend son émulation de la PlayStation 5 tout en ajoutant plusieurs améliorations, notamment le support expérimental des jeux PS4 via shadPS4, le FSR 1.0, un cache Vulkan permettant de conserver les pipelines compilés et différentes optimisations destinées aux GPU intégrés (iGPU). Il permet également l’installation des fichiers PKG depuis son interface et propose une gestion unifiée des jeux PS4 et PS5. Le projet est encore en développement et de nombreux jeux peuvent rencontrer des plantages, des écrans noirs ou des problèmes graphiques.

Les changements:
New features:
🔧 GPU & Rendering Improvements
– Fence wait timeouts: Added 10-second timeout to fence waits in CommandBuffer::WaitForFenceOnly() to prevent infinite hangs on driver issues or fence signaling problems.
– Master semaphore timeouts: Added 30-second timeout to MasterSemaphore::Wait() to prevent hanging indefinitely on semaphore wait issues.
– Command buffer reuse: Improved BeginNext() logic with progressive fallback attempts before growing the command buffer pool. Added last-resort wait for master semaphore before creating new buffers.
🔊 Audio Improvements
– Tighter audio buffering: Reduced target latency from 40ms to 30ms for more responsive audio.
– Faster buffer management: Reduced max queued buffers from 16 to 8, decreased wait timeout from 200ms to 100ms, and increased check frequency (500μs sleep vs 1000μs).
– Improved audio underrun handling: More aggressive clearing of queued audio when waiting too long to prevent stutter during heavy GPU load.
🛡️ Debugging & Validation
– Vulkan validation enabled by default: Vulkan validation layers are now enabled by default to catch spec violations, resource state errors, and synchronization issues. This helps identify problems earlier and provides better diagnostic information in logs.
To disable validation for performance testing, use –vulkan-validation false.
🌐 HTTP/HTTPS
– HTTP busy-loop fix (v3.1, maintained): HttpWaitRequest now sleeps 10ms between polls instead of returning immediately, preventing CPU spinning and excessive log growth. Deadline-based timeout support added.
🌐 Networking
– Added: A real HTTP/1.1 client. sceHttpSendRequest now actually connects: DNS resolve, TCP connect, request send, and full status/headers/body response parsing over the existing netstack (16 MiB body safety cap). Games’ network worker threads no longer stall on requests that can never complete.
– Added: sceHttpWaitRequest now wakes as soon as the request it watches completes, instead of idle-sleeping to the timeout.
📜 Logging
Added: Duplicate-line collapsing. Consecutive identical log lines are written once, followed by [previous message repeated N times] when a different line arrives (or on shutdown). Nothing is lost — but a runaway stub can no longer produce a multi-GB log; the same information fits in kilobytes.
Bug fixes:
🗂️ File handling (PKG / PFS)
Fixed: Zero block pointers in PFS inodes are treated as « unused » again — the v3.1 bounds-check change accidentally made them valid, which could read the superblock as file data on images that don’t terminate block lists with -1. Caught by the new parser test suite.
🎨 Graphics
Fixed: The Vulkan pipeline cache is no longer discarded after a driver update. The cache header identifies the device (vendor/device ID); the driver UUID only identifies the cache format, so the cache is now validated and reused across driver versions, with the driver validating individual entries. A .uuid sidecar file is written next to the cache for debugging.
🔧 Compatibility
Fixed: Oodle core discovery now also searches the emulator’s executable directory on Linux/macOS (dlopen does not search it natively, unlike Windows). KYTY_OODLE_LIB still overrides everything.



















