Skip to content

v2.1

Latest

Choose a tag to compare

@Coder787-source Coder787-source released this 04 Aug 19:10

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} ⚠️ Dead source — not in build, no callers 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 CollisionphysicsCollision.{h,cpp}
  • Texture StreamingtextureStreaming.{h,cpp}
  • Audio Downmix FixtempestAudioFix.{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 then PATH. 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=0 handled via FILE_READ_ATTRIBUTES; directories opened with FILE_FLAG_BACKUP_SEMANTICS; metadata queries no longer require read/write access.
  • Configurable save-data path (libSaveData.cpp) — KYTY_SAVE_DATA_DIR env var overrides default _SaveData location; backward compatible.
  • Shader disk-cache key collisions — key now incorporates descriptor_set and lane_mask_mode to avoid cross-permutation reuse.
  • Shader program cache — PS cache hits rejected when paired VS descriptor-set presence differs.
  • Cross-platform Vulkan / ray tracingGetBufferDeviceAddress moved out of the header into vma.cpp; RT now builds cross-platform instead of Windows-only.

🚧 Known Limitations

  • JIT Optimizer is dead source at this tagcore/jitOptimizer.* is not in the kyty_emulator CMake 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.