KytyPlus v2.1 — Release Notes
🎯 What's New
v2.1 adds new emulation subsystems and build/CI hardening. The headline changes:
- Cross-platform build — the emulator now builds on Windows, macOS, and Linux with a portable Vulkan loader
- Memory subsystems — virtual memory management + open-world streaming pool scaffolding
- Extended syscalls, audio framework, video decoder framework, collision, texture streaming
- HLE scaffolding for select modern titles (generic framework, no specific game support)
- Runtime decompression loader for user-supplied libraries (replaces the mock stub)
⬇️ Downloads
- Windows (x64) —
KytyPlus-Windows-x64.zip - macOS (x86_64) —
KytyPlus-macOS-x86_64.zip - Linux (x86_64) —
KytyPlus-Linux-x86_64.zip
✨ New Emulation Systems
Core / Platform
| System | Files | Status at v2.1 | Highlights |
|---|---|---|---|
| Virtual Memory | mmuVirtualMemory.{h,cpp} |
Scaffolding (not driven by a guest workload) | 16 GB VA space, 4 KB pages, R/W/X protection, demand paging, 2 MB large pages, file mapping |
| Extended Syscalls | syscallExtended.{h,cpp} |
Compiled in | 200+ syscalls: process/thread, memory, file I/O, network, audio/video, input, system |
| Audio Framework | tempest3D.{h,cpp} |
Compiled in, unvalidated | HRTF table, 128 objects + 16 beds, room acoustics, 7.1.4 Atmos, Audio3D API |
| Video Decoder | videoDecoder.{h,cpp} |
Compiled in, unvalidated | H.264/AVC, H.265/HEVC, VP9, Bink; frame queue; HW-accel stub |
| JIT Optimizer | jitOptimizer.{h,cpp} |
128 MB block cache, block linking, hot/cold detection, PGO, SIMD stub. Present in repo but not in the kyty_emulator CMake glob and not called by anything. No runtime effect at this tag. |
HLE Scaffolding
| Module | Files | Highlights |
|---|---|---|
| Open-World Memory | common/openWorldMemory.{h,cpp} |
Streaming pool groundwork for asset-heavy titles |
| Scripting Natives | rageScripting.{h,cpp} |
30+ generic scripting natives (entity/vehicle/ped, mission triggers) |
| Network Stubs | networkStubs.{h,cpp} |
PSN stubs sufficient for story-mode boot |
| Modern-Engine HLE | ue4HLE.{h,cpp} + ue4ClassesExtended, ue4Animation, ue4MissionNatives |
Generic object/class/function/property model, spawn/destroy, property access, map/level mgmt, console cmds, input binding |
| Legacy Title Save Data | gta3SaveData.{h,cpp} + saveDataChecksum |
Binary format, 10 slots, player/mission/vehicle/world state, checksum validation |
| Legacy Title Mission System | gta3Mission.{h,cpp} |
Story + side missions, state machine, objective tracking, prerequisites |
Additional modules
- Physics Collision —
physicsCollision.{h,cpp} - Texture Streaming —
textureStreaming.{h,cpp} - Audio Downmix Fix —
tempestAudioFix.{h,cpp}(fallback path)
All HLE modules are scaffolding: compiled in, not yet dispatched from the guest export table, and not validated against any real title. They are groundwork, not playable game support.
🐛 Fixes & Improvements
- Runtime decompression loader (
src/IO/Decompressor.hpp) — loads user-supplied decompression libraries at runtime, searched in the game directory thenPATH. Ships no proprietary code (any required library must be supplied by the user from their own content). Thread-safe by default with error reporting. Not validated against a live title. - File I/O edge cases (
sysWindowsFileIO.cpp) —dwDesiredAccess=0handled viaFILE_READ_ATTRIBUTES; directories opened withFILE_FLAG_BACKUP_SEMANTICS; metadata queries no longer require read/write access. - Configurable save-data path (
libSaveData.cpp) —KYTY_SAVE_DATA_DIRenv var overrides default_SaveDatalocation; backward compatible. - Shader disk-cache key collisions — key now incorporates
descriptor_setandlane_mask_modeto avoid cross-permutation reuse. - Shader program cache — PS cache hits rejected when paired VS descriptor-set presence differs.
- Cross-platform Vulkan / ray tracing —
GetBufferDeviceAddressmoved out of the header intovma.cpp; RT now builds cross-platform instead of Windows-only.
🚧 Known Limitations
- JIT Optimizer is dead source at this tag —
core/jitOptimizer.*is not in thekyty_emulatorCMake glob and has no callers. It will not compile or link into the emulator and has no runtime effect until a follow-up wires it in. - Decompression requires user-supplied libraries — the project ships no decompression code or binaries. Without those, packed titles won't decompress.
- Shader cache warm-up: first launch is slow (no pre-compilation pass).
- Audio may fall back to stereo rather than full spatialization, depending on the title.
- Online / PSN features are stubbed (single-player only).
- The HLE modules are scaffolding, not dispatched from the guest export table.
- Not implemented: full PSN emulation, USB peripherals, advanced audio effects, DLC/PlayGo, power management, system-settings UI.