EmuNews

KytyPS5 U59

biggsymobile-png/KytyPS5

15 tracked updates · latest 4 days ago

GitHub

Astro Bot DLSS frame generation (astrobot-dlss-int21-23y, experimental)

astrobot-dlss-int21-23y nightly / pre-release
Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564 / PPSA21567 / PPSA21568) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot and Astro's Playroom keep their speed with Decouple built in: no patch file or button combination needed, any version and region. The console shows Decouple: built-in one on. If it says not applied instead, a "Decouple gameplay timers from render FPS" mod in the patch file is used as before; please report that line with your game version. The community "[Fix] Bot rescue" mod is skipped: it slowed the game down (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_ASTRO_UPSCALE=0 Astro Bot: DLSS/FSR upscale only to the game's 2432x1368 TAA output, as before 23q
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, DLSS or FSR upscales the scene to the game's full output size (3840x2160, then scaled to your screen as before) from the render resolution the launcher's Render resolution picks:

Render resolution Works like (at 3840x2160)
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

New in 23q: before, DLSS and FSR only upscaled Astro Bot to 2432x1368: the game's TAA always makes a 2432x1368 image at render resolutions up to 1368p, and the game's last pass then stretched that to 3840x2160. Now, as in Playroom, the game's TAA still runs as usual, DLSS or FSR upscales the scene to the output size beside it, and the last pass reads that (plus what the game drew after its TAA). The HUD is drawn after it, so it stays sharp. At most 3x per axis: at 540p DLSS and FSR go to 2880x1620 and the game stretches the rest.

The console shows DLSS upscaling: 1280x720 to 3840x2160 (...) / FSR upscaling: ... and the last pass reads the 3840x2160 upscaled image ..., then a status line every 600 frames. The first frame may show ... to 2432x1368 once before it. If you see the last pass reads no ... image instead, please report it with your log. "KYTY_ASTRO_UPSCALE": "0", goes back to the 1368p upscale. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018, 01.007 and other versions where it matches; US, European and Asian editions) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

720p and 540p are below the game's lowest size (1080p): the emulator shrinks that size in the game's size tables. Before 23s it missed one of them (stored as 16-bit numbers, used for one render target), which gave bands on bright surfaces and a tinted lower third of the picture at 720p and 540p, with or without DLSS (issue #5). The console's "Astro Bot 720p: ... 16-bit size table(s)" line says it was found.

23u: the cause was the lighting's tile grid. The game splits the picture into 16x16-pixel tiles for its lights and keeps their number per size (120x68 at 1080p) in another table, which stayed at 120x68 below 1080p: the lights of one tile row landed in the next, giving stepped bands at 720p and one edge at 540p. The emulator now sets it to 80x45 (720p) or 60x34 (540p); the console line says "1 lighting tile table(s)".

23y: 01.007 at 540p and 720p. In 01.007 one size the game uses (the base width as a decimal number) is not stored as in 01.018, so it stayed at 1920 and the picture came out softer and slower than it should. The emulator now also sets it on 01.007 (thanks to teogorghin, whose patch file showed where it is), and only where it still finds 1920. The console now says how many of these were found ("float width table(s)") and adds a "patched at game+:" line listing where each size was changed: please include both lines if 540p or 720p looks wrong on your version.

23t (diagnostic, Windows only): KYTY_ASTRO_RES_PROBE=1 logs every 2D image the game creates (64x32 and up) with its address, size, format, tiling and row pitch, up to 800 lines, and marks memory used at two sizes with "SIZE CHANGE". For issue #5: run it once at 720p and once at 1080p on the same screen and attach both logs. Leave it unset otherwise.

Astro's Playroom (PPSA01325)

Everything above works in Playroom too: DLSS-G, FSR frame generation, DLSS and FSR upscaling, the render resolution and the built-in Decouple (tested on version 01.905).

Upscaling works as in Astro Bot. Playroom's TAA runs at the render resolution and a later pass of its own stretches it to the output. So the game renders and runs its TAA as usual, DLSS or FSR upscales the scene to the full output size beside it, and the last pass reads the upscaled image plus what the game drew after its TAA (bloom, particles, motion blur). The idea of a late upscale in Playroom comes from iska0702/DLSSKytyPS5. DLSS and FSR upscale at most 3x per axis: Playroom always outputs 3840x2160, so at 540p they go to 2880x1620 and the game stretches the rest. The console shows the last pass reads the ... upscaled image plus what the game drew after its TAA. The HUD is drawn at the render resolution: sharp at 1080p and above, a little soft at 720p (a full-size HUD is planned). "KYTY_PLAYROOM_UPSCALE": "0", goes back to DLSS/FSR as anti-aliasing at the render resolution; "KYTY_PLAYROOM_MASK": "1", (FSR only) adds a reactive mask for particles and transparency.

Vblank frequency above 60: fine with the built-in Decouple (before build 23b Playroom ran at double speed without a decouple patch, as its game logic steps once per frame). If the console says Decouple: ... not applied for your version, keep the Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60) or use a patch file's decouple mod.

Shader maths profile

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

23y: Linux with AMD (RADV, Mesa 26.3): a crash while drawing (in vkCmdDraw) with recent Mesa drivers is fixed, from mainline KytyPS5 (597137e8). The emulator now switches on the Vulkan extension VK_EXT_extended_dynamic_state wherever the driver has it; other drivers should not notice, though the first start may build the driver's own shader cache again.

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Settings window on small or scaled screens

Since 23w the settings windows (Global settings and each game's settings) scroll, and open no larger than the screen's free area, Windows display scaling included. Before, Global settings could not be made shorter than everything on its General tab, so on a 1080p screen at 125% scaling Save and Cancel were below the bottom of the screen (issue #6). The window can be resized freely; it remembers the size you leave it at.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • Build 23q (test): DLSS and FSR upscale Astro Bot to the full output size (issue #4). Before, they stopped at 2432x1368 and the game stretched that to a 4K screen, so 720p, 1080p and 1368p all looked like 1368p. See DLSS and FSR upscaling above. (23p did not switch it on: Astro Bot's last pass is a different shader from Playroom's; 23q finds it.) New: please report how Astro Bot looks (and any the last pass reads no ... image line).

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.

  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.

  • Astro's Playroom at double speed with a Vblank frequency above 60, only if the built-in Decouple says not applied for your version and no patch file decouples it: then set the Vblank frequency to 60 (see Astro's Playroom above).

  • Build 23o (test): fewer physics crashes with the built-in Decouple, and launcher options for it. After a stutter (for example a level loading on a slower PC), Decouple let one game step last up to 1/20 s, and some physics failed: Playroom stopped with Assertion failed: !pos.IsNan() (PhysicsRigidBody.cpp, seen in the clock level), and Astro Bot crashed picking up the bow from a chest. A step now lasts at most 1/30 s by default. The game's settings in the launcher (Graphics) have three new options, for Astro Bot and Astro's Playroom:

    • Built-in Decouple: on by default. Off gives the game's own fixed 60 fps timing (slow motion below 60 fps), or the patch file's Decouple mod if you enabled it.
    • Decouple step limit: 1/20, 1/25, 1/30 (default), 1/35 or 1/40 s. If the game crashes on your PC, pick a smaller step: it is safer for the physics, but below that frame rate the game slows down a little (at 1/40 s and 30 fps it runs at 75% speed). Before 23r the settings window showed 1/20 and 1/25 as 1/30 and saved 1/30 the next time you pressed Save; they now stay selected.
    • Decouple on/off key (default F10): switches Decouple off and back on while you play, for a place that still crashes. The console says which state it is in.

    The launcher's choices win over the same lines in u59-preset.json (KYTY_ASTRO_DECOUPLE, KYTY_ASTRO_DECOUPLE_DT_CAP, KYTY_ASTRO_DECOUPLE_KEY), so you can remove any you added.

  • Build 23m (test): Playroom no longer wobbles while standing still with DLSS or FSR. Playroom gives its camera jitter with the opposite sign to Astro Bot, and its motion vectors include the jitter, so DLSS and FSR added the jitter instead of removing it: the whole picture, trees and animations included, shook slightly whenever Astro stood still (in motion it was hidden). Both are now handled for Playroom automatically, at every render resolution. Remove any KYTY_DLSS_JITTER_X, KYTY_DLSS_JITTER_Y or KYTY_DLSS_MV_JITTERED lines you added for this from u59-preset.json ("KYTY_DLSS_MV_JITTERED": "0", still turns the second part off).

  • Astro's Playroom with the game's own TAA at a lower render resolution: a slight wobble while standing still remains (it is in the game's TAA, which the built-in render resolution does not correct yet). Use DLSS or FSR at a lower render resolution, or the game's choice with its TAA.

  • New in this build (23l): built-in Decouple, real upscaling in Playroom, more game versions.

    • Decouple built in for Astro Bot (any version and region) and Astro's Playroom (01.905 and versions where it matches): game time follows the real frame time, with the community v3 mod's smoothing and a 1/30 s delta-time cap since 23o (the launcher's Decouple step limit changes it). It finds the game's frame update by its code, so no patch file or button combination is needed. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it is on; use the launcher's Frame rate limit instead of the precise caps. Playroom is smoother than with its patch file's mod, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on, or not applied with the patch file's mod as before. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.
    • No more slow motion at level starts or mid-stage. The community "[Fix] Bot rescue" mod is skipped: its hooks mark entering and leaving a level, not rescues, so it switched Decouple off for whole stretches of play. Rescues work normally without it. "KYTY_ASTRO_RESCUE_FIX": "1", turns on the built-in version with a 6 s safety timer; if a rescue goes wrong without it, please report it with your log.
    • Real DLSS/FSR upscaling in Astro's Playroom: the scene is upscaled to the output size instead of only anti-aliased at the render resolution (see Astro's Playroom above).
    • More Astro Bot versions for the render resolution and the command-buffer fix (the "too many objects/batches in this scene" crash in busy scenes): 01.007.000, the version on many discs and unpatched copies, thanks to moooohung (pull request #3); other versions, found by what the code does and only changed when exactly one match is found; and the Asian edition (PPSA21568) alongside US and EU. The console says where each change was made, e.g. Game patch: Astro Bot fixed render resolution 1080p (01.007.000, code at game+0x...) and draw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or the not applied / not found line.
    • Gyro centred from the start, and a re-centre key. The learned resting offset is saved per controller in gyro-calibration.txt and loaded at the next start (put the pad down for 3 s in the first session). Hold the controller the way you play and press the re-centre key in the game window (launcher: the game's settings, Graphics & display, "Gyro re-centre key"; default F9) to make that its neutral position.
    • From moooohung (pull request #2): Korean and Japanese text no longer shows as ? (every installed CJK font is tried), and FSR frame generation enables the Vulkan extensions it needs without FSR upscaling.
  • Fixed in build 20: the DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).

  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 6 s (15 s before build 22), it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "6", (2 to 600). Since build 23 the mod is skipped instead and the built-in fix is off by default (see above).

  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.

  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.

  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.

  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Report problems on the fork's Issues page: the form asks for the build, game version, GPU and settings, and the console log. Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash). From 23y a crash inside the game's own checks shows a game assert: line with the game's whole message: please include it.

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Astro Bot DLSS frame generation (astrobot-dlss-int21-23w, experimental)

astrobot-dlss-int21-23w nightly / pre-release
Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564 / PPSA21567 / PPSA21568) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot and Astro's Playroom keep their speed with Decouple built in: no patch file or button combination needed, any version and region. The console shows Decouple: built-in one on. If it says not applied instead, a "Decouple gameplay timers from render FPS" mod in the patch file is used as before; please report that line with your game version. The community "[Fix] Bot rescue" mod is skipped: it slowed the game down (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_ASTRO_UPSCALE=0 Astro Bot: DLSS/FSR upscale only to the game's 2432x1368 TAA output, as before 23q
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, DLSS or FSR upscales the scene to the game's full output size (3840x2160, then scaled to your screen as before) from the render resolution the launcher's Render resolution picks:

Render resolution Works like (at 3840x2160)
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

New in 23q: before, DLSS and FSR only upscaled Astro Bot to 2432x1368: the game's TAA always makes a 2432x1368 image at render resolutions up to 1368p, and the game's last pass then stretched that to 3840x2160. Now, as in Playroom, the game's TAA still runs as usual, DLSS or FSR upscales the scene to the output size beside it, and the last pass reads that (plus what the game drew after its TAA). The HUD is drawn after it, so it stays sharp. At most 3x per axis: at 540p DLSS and FSR go to 2880x1620 and the game stretches the rest.

The console shows DLSS upscaling: 1280x720 to 3840x2160 (...) / FSR upscaling: ... and the last pass reads the 3840x2160 upscaled image ..., then a status line every 600 frames. The first frame may show ... to 2432x1368 once before it. If you see the last pass reads no ... image instead, please report it with your log. "KYTY_ASTRO_UPSCALE": "0", goes back to the 1368p upscale. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018, 01.007 and other versions where it matches; US, European and Asian editions) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

720p and 540p are below the game's lowest size (1080p): the emulator shrinks that size in the game's size tables. Before 23s it missed one of them (stored as 16-bit numbers, used for one render target), which gave bands on bright surfaces and a tinted lower third of the picture at 720p and 540p, with or without DLSS (issue #5). The console's "Astro Bot 720p: ... 16-bit size table(s)" line says it was found.

23u: the cause was the lighting's tile grid. The game splits the picture into 16x16-pixel tiles for its lights and keeps their number per size (120x68 at 1080p) in another table, which stayed at 120x68 below 1080p: the lights of one tile row landed in the next, giving stepped bands at 720p and one edge at 540p. The emulator now sets it to 80x45 (720p) or 60x34 (540p); the console line says "1 lighting tile table(s)".

23t (diagnostic, Windows only): KYTY_ASTRO_RES_PROBE=1 logs every 2D image the game creates (64x32 and up) with its address, size, format, tiling and row pitch, up to 800 lines, and marks memory used at two sizes with "SIZE CHANGE". For issue #5: run it once at 720p and once at 1080p on the same screen and attach both logs. Leave it unset otherwise.

Astro's Playroom (PPSA01325)

Everything above works in Playroom too: DLSS-G, FSR frame generation, DLSS and FSR upscaling, the render resolution and the built-in Decouple (tested on version 01.905).

Upscaling works as in Astro Bot. Playroom's TAA runs at the render resolution and a later pass of its own stretches it to the output. So the game renders and runs its TAA as usual, DLSS or FSR upscales the scene to the full output size beside it, and the last pass reads the upscaled image plus what the game drew after its TAA (bloom, particles, motion blur). The idea of a late upscale in Playroom comes from iska0702/DLSSKytyPS5. DLSS and FSR upscale at most 3x per axis: Playroom always outputs 3840x2160, so at 540p they go to 2880x1620 and the game stretches the rest. The console shows the last pass reads the ... upscaled image plus what the game drew after its TAA. The HUD is drawn at the render resolution: sharp at 1080p and above, a little soft at 720p (a full-size HUD is planned). "KYTY_PLAYROOM_UPSCALE": "0", goes back to DLSS/FSR as anti-aliasing at the render resolution; "KYTY_PLAYROOM_MASK": "1", (FSR only) adds a reactive mask for particles and transparency.

Vblank frequency above 60: fine with the built-in Decouple (before build 23b Playroom ran at double speed without a decouple patch, as its game logic steps once per frame). If the console says Decouple: ... not applied for your version, keep the Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60) or use a patch file's decouple mod.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Settings window on small or scaled screens

Since 23w the settings windows (Global settings and each game's settings) scroll, and open no larger than the screen's free area, Windows display scaling included. Before, Global settings could not be made shorter than everything on its General tab, so on a 1080p screen at 125% scaling Save and Cancel were below the bottom of the screen (issue #6). The window can be resized freely; it remembers the size you leave it at.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • Build 23q (test): DLSS and FSR upscale Astro Bot to the full output size (issue #4). Before, they stopped at 2432x1368 and the game stretched that to a 4K screen, so 720p, 1080p and 1368p all looked like 1368p. See DLSS and FSR upscaling above. (23p did not switch it on: Astro Bot's last pass is a different shader from Playroom's; 23q finds it.) New: please report how Astro Bot looks (and any the last pass reads no ... image line).

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.

  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.

  • Astro's Playroom at double speed with a Vblank frequency above 60, only if the built-in Decouple says not applied for your version and no patch file decouples it: then set the Vblank frequency to 60 (see Astro's Playroom above).

  • Build 23o (test): fewer physics crashes with the built-in Decouple, and launcher options for it. After a stutter (for example a level loading on a slower PC), Decouple let one game step last up to 1/20 s, and some physics failed: Playroom stopped with Assertion failed: !pos.IsNan() (PhysicsRigidBody.cpp, seen in the clock level), and Astro Bot crashed picking up the bow from a chest. A step now lasts at most 1/30 s by default. The game's settings in the launcher (Graphics) have three new options, for Astro Bot and Astro's Playroom:

    • Built-in Decouple: on by default. Off gives the game's own fixed 60 fps timing (slow motion below 60 fps), or the patch file's Decouple mod if you enabled it.
    • Decouple step limit: 1/20, 1/25, 1/30 (default), 1/35 or 1/40 s. If the game crashes on your PC, pick a smaller step: it is safer for the physics, but below that frame rate the game slows down a little (at 1/40 s and 30 fps it runs at 75% speed). Before 23r the settings window showed 1/20 and 1/25 as 1/30 and saved 1/30 the next time you pressed Save; they now stay selected.
    • Decouple on/off key (default F10): switches Decouple off and back on while you play, for a place that still crashes. The console says which state it is in.

    The launcher's choices win over the same lines in u59-preset.json (KYTY_ASTRO_DECOUPLE, KYTY_ASTRO_DECOUPLE_DT_CAP, KYTY_ASTRO_DECOUPLE_KEY), so you can remove any you added.

  • Build 23m (test): Playroom no longer wobbles while standing still with DLSS or FSR. Playroom gives its camera jitter with the opposite sign to Astro Bot, and its motion vectors include the jitter, so DLSS and FSR added the jitter instead of removing it: the whole picture, trees and animations included, shook slightly whenever Astro stood still (in motion it was hidden). Both are now handled for Playroom automatically, at every render resolution. Remove any KYTY_DLSS_JITTER_X, KYTY_DLSS_JITTER_Y or KYTY_DLSS_MV_JITTERED lines you added for this from u59-preset.json ("KYTY_DLSS_MV_JITTERED": "0", still turns the second part off).

  • Astro's Playroom with the game's own TAA at a lower render resolution: a slight wobble while standing still remains (it is in the game's TAA, which the built-in render resolution does not correct yet). Use DLSS or FSR at a lower render resolution, or the game's choice with its TAA.

  • New in this build (23l): built-in Decouple, real upscaling in Playroom, more game versions.

    • Decouple built in for Astro Bot (any version and region) and Astro's Playroom (01.905 and versions where it matches): game time follows the real frame time, with the community v3 mod's smoothing and a 1/30 s delta-time cap since 23o (the launcher's Decouple step limit changes it). It finds the game's frame update by its code, so no patch file or button combination is needed. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it is on; use the launcher's Frame rate limit instead of the precise caps. Playroom is smoother than with its patch file's mod, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on, or not applied with the patch file's mod as before. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.
    • No more slow motion at level starts or mid-stage. The community "[Fix] Bot rescue" mod is skipped: its hooks mark entering and leaving a level, not rescues, so it switched Decouple off for whole stretches of play. Rescues work normally without it. "KYTY_ASTRO_RESCUE_FIX": "1", turns on the built-in version with a 6 s safety timer; if a rescue goes wrong without it, please report it with your log.
    • Real DLSS/FSR upscaling in Astro's Playroom: the scene is upscaled to the output size instead of only anti-aliased at the render resolution (see Astro's Playroom above).
    • More Astro Bot versions for the render resolution and the command-buffer fix (the "too many objects/batches in this scene" crash in busy scenes): 01.007.000, the version on many discs and unpatched copies, thanks to moooohung (pull request #3); other versions, found by what the code does and only changed when exactly one match is found; and the Asian edition (PPSA21568) alongside US and EU. The console says where each change was made, e.g. Game patch: Astro Bot fixed render resolution 1080p (01.007.000, code at game+0x...) and draw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or the not applied / not found line.
    • Gyro centred from the start, and a re-centre key. The learned resting offset is saved per controller in gyro-calibration.txt and loaded at the next start (put the pad down for 3 s in the first session). Hold the controller the way you play and press the re-centre key in the game window (launcher: the game's settings, Graphics & display, "Gyro re-centre key"; default F9) to make that its neutral position.
    • From moooohung (pull request #2): Korean and Japanese text no longer shows as ? (every installed CJK font is tried), and FSR frame generation enables the Vulkan extensions it needs without FSR upscaling.
  • Fixed in build 20: the DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).

  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 6 s (15 s before build 22), it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "6", (2 to 600). Since build 23 the mod is skipped instead and the built-in fix is off by default (see above).

  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.

  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.

  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.

  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Report problems on the fork's Issues page: the form asks for the build, game version, GPU and settings, and the console log. Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Astro Bot DLSS frame generation (astrobot-dlss-int21-23v, experimental)

astrobot-dlss-int21-23v nightly / pre-release
Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564 / PPSA21567 / PPSA21568) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot and Astro's Playroom keep their speed with Decouple built in: no patch file or button combination needed, any version and region. The console shows Decouple: built-in one on. If it says not applied instead, a "Decouple gameplay timers from render FPS" mod in the patch file is used as before; please report that line with your game version. The community "[Fix] Bot rescue" mod is skipped: it slowed the game down (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_ASTRO_UPSCALE=0 Astro Bot: DLSS/FSR upscale only to the game's 2432x1368 TAA output, as before 23q
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, DLSS or FSR upscales the scene to the game's full output size (3840x2160, then scaled to your screen as before) from the render resolution the launcher's Render resolution picks:

Render resolution Works like (at 3840x2160)
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

New in 23q: before, DLSS and FSR only upscaled Astro Bot to 2432x1368: the game's TAA always makes a 2432x1368 image at render resolutions up to 1368p, and the game's last pass then stretched that to 3840x2160. Now, as in Playroom, the game's TAA still runs as usual, DLSS or FSR upscales the scene to the output size beside it, and the last pass reads that (plus what the game drew after its TAA). The HUD is drawn after it, so it stays sharp. At most 3x per axis: at 540p DLSS and FSR go to 2880x1620 and the game stretches the rest.

The console shows DLSS upscaling: 1280x720 to 3840x2160 (...) / FSR upscaling: ... and the last pass reads the 3840x2160 upscaled image ..., then a status line every 600 frames. The first frame may show ... to 2432x1368 once before it. If you see the last pass reads no ... image instead, please report it with your log. "KYTY_ASTRO_UPSCALE": "0", goes back to the 1368p upscale. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018, 01.007 and other versions where it matches; US, European and Asian editions) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

720p and 540p are below the game's lowest size (1080p): the emulator shrinks that size in the game's size tables. Before 23s it missed one of them (stored as 16-bit numbers, used for one render target), which gave bands on bright surfaces and a tinted lower third of the picture at 720p and 540p, with or without DLSS (issue #5). The console's "Astro Bot 720p: ... 16-bit size table(s)" line says it was found.

23u: the cause was the lighting's tile grid. The game splits the picture into 16x16-pixel tiles for its lights and keeps their number per size (120x68 at 1080p) in another table, which stayed at 120x68 below 1080p: the lights of one tile row landed in the next, giving stepped bands at 720p and one edge at 540p. The emulator now sets it to 80x45 (720p) or 60x34 (540p); the console line says "1 lighting tile table(s)".

23t (diagnostic, Windows only): KYTY_ASTRO_RES_PROBE=1 logs every 2D image the game creates (64x32 and up) with its address, size, format, tiling and row pitch, up to 800 lines, and marks memory used at two sizes with "SIZE CHANGE". For issue #5: run it once at 720p and once at 1080p on the same screen and attach both logs. Leave it unset otherwise.

Astro's Playroom (PPSA01325)

Everything above works in Playroom too: DLSS-G, FSR frame generation, DLSS and FSR upscaling, the render resolution and the built-in Decouple (tested on version 01.905).

Upscaling works as in Astro Bot. Playroom's TAA runs at the render resolution and a later pass of its own stretches it to the output. So the game renders and runs its TAA as usual, DLSS or FSR upscales the scene to the full output size beside it, and the last pass reads the upscaled image plus what the game drew after its TAA (bloom, particles, motion blur). The idea of a late upscale in Playroom comes from iska0702/DLSSKytyPS5. DLSS and FSR upscale at most 3x per axis: Playroom always outputs 3840x2160, so at 540p they go to 2880x1620 and the game stretches the rest. The console shows the last pass reads the ... upscaled image plus what the game drew after its TAA. The HUD is drawn at the render resolution: sharp at 1080p and above, a little soft at 720p (a full-size HUD is planned). "KYTY_PLAYROOM_UPSCALE": "0", goes back to DLSS/FSR as anti-aliasing at the render resolution; "KYTY_PLAYROOM_MASK": "1", (FSR only) adds a reactive mask for particles and transparency.

Vblank frequency above 60: fine with the built-in Decouple (before build 23b Playroom ran at double speed without a decouple patch, as its game logic steps once per frame). If the console says Decouple: ... not applied for your version, keep the Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60) or use a patch file's decouple mod.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • Build 23q (test): DLSS and FSR upscale Astro Bot to the full output size (issue #4). Before, they stopped at 2432x1368 and the game stretched that to a 4K screen, so 720p, 1080p and 1368p all looked like 1368p. See DLSS and FSR upscaling above. (23p did not switch it on: Astro Bot's last pass is a different shader from Playroom's; 23q finds it.) New: please report how Astro Bot looks (and any the last pass reads no ... image line).

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.

  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.

  • Astro's Playroom at double speed with a Vblank frequency above 60, only if the built-in Decouple says not applied for your version and no patch file decouples it: then set the Vblank frequency to 60 (see Astro's Playroom above).

  • Build 23o (test): fewer physics crashes with the built-in Decouple, and launcher options for it. After a stutter (for example a level loading on a slower PC), Decouple let one game step last up to 1/20 s, and some physics failed: Playroom stopped with Assertion failed: !pos.IsNan() (PhysicsRigidBody.cpp, seen in the clock level), and Astro Bot crashed picking up the bow from a chest. A step now lasts at most 1/30 s by default. The game's settings in the launcher (Graphics) have three new options, for Astro Bot and Astro's Playroom:

    • Built-in Decouple: on by default. Off gives the game's own fixed 60 fps timing (slow motion below 60 fps), or the patch file's Decouple mod if you enabled it.
    • Decouple step limit: 1/20, 1/25, 1/30 (default), 1/35 or 1/40 s. If the game crashes on your PC, pick a smaller step: it is safer for the physics, but below that frame rate the game slows down a little (at 1/40 s and 30 fps it runs at 75% speed). Before 23r the settings window showed 1/20 and 1/25 as 1/30 and saved 1/30 the next time you pressed Save; they now stay selected.
    • Decouple on/off key (default F10): switches Decouple off and back on while you play, for a place that still crashes. The console says which state it is in.

    The launcher's choices win over the same lines in u59-preset.json (KYTY_ASTRO_DECOUPLE, KYTY_ASTRO_DECOUPLE_DT_CAP, KYTY_ASTRO_DECOUPLE_KEY), so you can remove any you added.

  • Build 23m (test): Playroom no longer wobbles while standing still with DLSS or FSR. Playroom gives its camera jitter with the opposite sign to Astro Bot, and its motion vectors include the jitter, so DLSS and FSR added the jitter instead of removing it: the whole picture, trees and animations included, shook slightly whenever Astro stood still (in motion it was hidden). Both are now handled for Playroom automatically, at every render resolution. Remove any KYTY_DLSS_JITTER_X, KYTY_DLSS_JITTER_Y or KYTY_DLSS_MV_JITTERED lines you added for this from u59-preset.json ("KYTY_DLSS_MV_JITTERED": "0", still turns the second part off).

  • Astro's Playroom with the game's own TAA at a lower render resolution: a slight wobble while standing still remains (it is in the game's TAA, which the built-in render resolution does not correct yet). Use DLSS or FSR at a lower render resolution, or the game's choice with its TAA.

  • New in this build (23l): built-in Decouple, real upscaling in Playroom, more game versions.

    • Decouple built in for Astro Bot (any version and region) and Astro's Playroom (01.905 and versions where it matches): game time follows the real frame time, with the community v3 mod's smoothing and a 1/30 s delta-time cap since 23o (the launcher's Decouple step limit changes it). It finds the game's frame update by its code, so no patch file or button combination is needed. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it is on; use the launcher's Frame rate limit instead of the precise caps. Playroom is smoother than with its patch file's mod, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on, or not applied with the patch file's mod as before. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.
    • No more slow motion at level starts or mid-stage. The community "[Fix] Bot rescue" mod is skipped: its hooks mark entering and leaving a level, not rescues, so it switched Decouple off for whole stretches of play. Rescues work normally without it. "KYTY_ASTRO_RESCUE_FIX": "1", turns on the built-in version with a 6 s safety timer; if a rescue goes wrong without it, please report it with your log.
    • Real DLSS/FSR upscaling in Astro's Playroom: the scene is upscaled to the output size instead of only anti-aliased at the render resolution (see Astro's Playroom above).
    • More Astro Bot versions for the render resolution and the command-buffer fix (the "too many objects/batches in this scene" crash in busy scenes): 01.007.000, the version on many discs and unpatched copies, thanks to moooohung (pull request #3); other versions, found by what the code does and only changed when exactly one match is found; and the Asian edition (PPSA21568) alongside US and EU. The console says where each change was made, e.g. Game patch: Astro Bot fixed render resolution 1080p (01.007.000, code at game+0x...) and draw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or the not applied / not found line.
    • Gyro centred from the start, and a re-centre key. The learned resting offset is saved per controller in gyro-calibration.txt and loaded at the next start (put the pad down for 3 s in the first session). Hold the controller the way you play and press the re-centre key in the game window (launcher: the game's settings, Graphics & display, "Gyro re-centre key"; default F9) to make that its neutral position.
    • From moooohung (pull request #2): Korean and Japanese text no longer shows as ? (every installed CJK font is tried), and FSR frame generation enables the Vulkan extensions it needs without FSR upscaling.
  • Fixed in build 20: the DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).

  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 6 s (15 s before build 22), it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "6", (2 to 600). Since build 23 the mod is skipped instead and the built-in fix is off by default (see above).

  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.

  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.

  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.

  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Report problems on the fork's Issues page: the form asks for the build, game version, GPU and settings, and the console log. Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Astro Bot DLSS frame generation (astrobot-dlss-int21-23r, experimental)

astrobot-dlss-int21-23r nightly / pre-release
Release notes · 1 file

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564 / PPSA21567 / PPSA21568) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot and Astro's Playroom keep their speed with Decouple built in: no patch file or button combination needed, any version and region. The console shows Decouple: built-in one on. If it says not applied instead, a "Decouple gameplay timers from render FPS" mod in the patch file is used as before; please report that line with your game version. The community "[Fix] Bot rescue" mod is skipped: it slowed the game down (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_ASTRO_UPSCALE=0 Astro Bot: DLSS/FSR upscale only to the game's 2432x1368 TAA output, as before 23q
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, DLSS or FSR upscales the scene to the game's full output size (3840x2160, then scaled to your screen as before) from the render resolution the launcher's Render resolution picks:

Render resolution Works like (at 3840x2160)
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

New in 23q: before, DLSS and FSR only upscaled Astro Bot to 2432x1368: the game's TAA always makes a 2432x1368 image at render resolutions up to 1368p, and the game's last pass then stretched that to 3840x2160. Now, as in Playroom, the game's TAA still runs as usual, DLSS or FSR upscales the scene to the output size beside it, and the last pass reads that (plus what the game drew after its TAA). The HUD is drawn after it, so it stays sharp. At most 3x per axis: at 540p DLSS and FSR go to 2880x1620 and the game stretches the rest.

The console shows DLSS upscaling: 1280x720 to 3840x2160 (...) / FSR upscaling: ... and the last pass reads the 3840x2160 upscaled image ..., then a status line every 600 frames. The first frame may show ... to 2432x1368 once before it. If you see the last pass reads no ... image instead, please report it with your log. "KYTY_ASTRO_UPSCALE": "0", goes back to the 1368p upscale. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018, 01.007 and other versions where it matches; US, European and Asian editions) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Everything above works in Playroom too: DLSS-G, FSR frame generation, DLSS and FSR upscaling, the render resolution and the built-in Decouple (tested on version 01.905).

Upscaling works as in Astro Bot. Playroom's TAA runs at the render resolution and a later pass of its own stretches it to the output. So the game renders and runs its TAA as usual, DLSS or FSR upscales the scene to the full output size beside it, and the last pass reads the upscaled image plus what the game drew after its TAA (bloom, particles, motion blur). The idea of a late upscale in Playroom comes from iska0702/DLSSKytyPS5. DLSS and FSR upscale at most 3x per axis: Playroom always outputs 3840x2160, so at 540p they go to 2880x1620 and the game stretches the rest. The console shows the last pass reads the ... upscaled image plus what the game drew after its TAA. The HUD is drawn at the render resolution: sharp at 1080p and above, a little soft at 720p (a full-size HUD is planned). "KYTY_PLAYROOM_UPSCALE": "0", goes back to DLSS/FSR as anti-aliasing at the render resolution; "KYTY_PLAYROOM_MASK": "1", (FSR only) adds a reactive mask for particles and transparency.

Vblank frequency above 60: fine with the built-in Decouple (before build 23b Playroom ran at double speed without a decouple patch, as its game logic steps once per frame). If the console says Decouple: ... not applied for your version, keep the Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60) or use a patch file's decouple mod.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • Build 23q (test): DLSS and FSR upscale Astro Bot to the full output size (issue #4). Before, they stopped at 2432x1368 and the game stretched that to a 4K screen, so 720p, 1080p and 1368p all looked like 1368p. See DLSS and FSR upscaling above. (23p did not switch it on: Astro Bot's last pass is a different shader from Playroom's; 23q finds it.) New: please report how Astro Bot looks (and any the last pass reads no ... image line).

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.

  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.

  • Astro's Playroom at double speed with a Vblank frequency above 60, only if the built-in Decouple says not applied for your version and no patch file decouples it: then set the Vblank frequency to 60 (see Astro's Playroom above).

  • Build 23o (test): fewer physics crashes with the built-in Decouple, and launcher options for it. After a stutter (for example a level loading on a slower PC), Decouple let one game step last up to 1/20 s, and some physics failed: Playroom stopped with Assertion failed: !pos.IsNan() (PhysicsRigidBody.cpp, seen in the clock level), and Astro Bot crashed picking up the bow from a chest. A step now lasts at most 1/30 s by default. The game's settings in the launcher (Graphics) have three new options, for Astro Bot and Astro's Playroom:

    • Built-in Decouple: on by default. Off gives the game's own fixed 60 fps timing (slow motion below 60 fps), or the patch file's Decouple mod if you enabled it.
    • Decouple step limit: 1/20, 1/25, 1/30 (default), 1/35 or 1/40 s. If the game crashes on your PC, pick a smaller step: it is safer for the physics, but below that frame rate the game slows down a little (at 1/40 s and 30 fps it runs at 75% speed). Before 23r the settings window showed 1/20 and 1/25 as 1/30 and saved 1/30 the next time you pressed Save; they now stay selected.
    • Decouple on/off key (default F10): switches Decouple off and back on while you play, for a place that still crashes. The console says which state it is in.

    The launcher's choices win over the same lines in u59-preset.json (KYTY_ASTRO_DECOUPLE, KYTY_ASTRO_DECOUPLE_DT_CAP, KYTY_ASTRO_DECOUPLE_KEY), so you can remove any you added.

  • Build 23m (test): Playroom no longer wobbles while standing still with DLSS or FSR. Playroom gives its camera jitter with the opposite sign to Astro Bot, and its motion vectors include the jitter, so DLSS and FSR added the jitter instead of removing it: the whole picture, trees and animations included, shook slightly whenever Astro stood still (in motion it was hidden). Both are now handled for Playroom automatically, at every render resolution. Remove any KYTY_DLSS_JITTER_X, KYTY_DLSS_JITTER_Y or KYTY_DLSS_MV_JITTERED lines you added for this from u59-preset.json ("KYTY_DLSS_MV_JITTERED": "0", still turns the second part off).

  • Astro's Playroom with the game's own TAA at a lower render resolution: a slight wobble while standing still remains (it is in the game's TAA, which the built-in render resolution does not correct yet). Use DLSS or FSR at a lower render resolution, or the game's choice with its TAA.

  • New in this build (23l): built-in Decouple, real upscaling in Playroom, more game versions.

    • Decouple built in for Astro Bot (any version and region) and Astro's Playroom (01.905 and versions where it matches): game time follows the real frame time, with the community v3 mod's smoothing and a 1/30 s delta-time cap since 23o (the launcher's Decouple step limit changes it). It finds the game's frame update by its code, so no patch file or button combination is needed. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it is on; use the launcher's Frame rate limit instead of the precise caps. Playroom is smoother than with its patch file's mod, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on, or not applied with the patch file's mod as before. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.
    • No more slow motion at level starts or mid-stage. The community "[Fix] Bot rescue" mod is skipped: its hooks mark entering and leaving a level, not rescues, so it switched Decouple off for whole stretches of play. Rescues work normally without it. "KYTY_ASTRO_RESCUE_FIX": "1", turns on the built-in version with a 6 s safety timer; if a rescue goes wrong without it, please report it with your log.
    • Real DLSS/FSR upscaling in Astro's Playroom: the scene is upscaled to the output size instead of only anti-aliased at the render resolution (see Astro's Playroom above).
    • More Astro Bot versions for the render resolution and the command-buffer fix (the "too many objects/batches in this scene" crash in busy scenes): 01.007.000, the version on many discs and unpatched copies, thanks to moooohung (pull request #3); other versions, found by what the code does and only changed when exactly one match is found; and the Asian edition (PPSA21568) alongside US and EU. The console says where each change was made, e.g. Game patch: Astro Bot fixed render resolution 1080p (01.007.000, code at game+0x...) and draw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or the not applied / not found line.
    • Gyro centred from the start, and a re-centre key. The learned resting offset is saved per controller in gyro-calibration.txt and loaded at the next start (put the pad down for 3 s in the first session). Hold the controller the way you play and press the re-centre key in the game window (launcher: the game's settings, Graphics & display, "Gyro re-centre key"; default F9) to make that its neutral position.
    • From moooohung (pull request #2): Korean and Japanese text no longer shows as ? (every installed CJK font is tried), and FSR frame generation enables the Vulkan extensions it needs without FSR upscaling.
  • Fixed in build 20: the DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).

  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 6 s (15 s before build 22), it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "6", (2 to 600). Since build 23 the mod is skipped instead and the built-in fix is off by default (see above).

  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.

  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.

  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.

  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Report problems on the fork's Issues page: the form asks for the build, game version, GPU and settings, and the console log. Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Astro Bot DLSS frame generation (astrobot-dlss-int21-23q, experimental)

astrobot-dlss-int21-23q nightly / pre-release
Release notes · 2 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564 / PPSA21567 / PPSA21568) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot and Astro's Playroom keep their speed with Decouple built in: no patch file or button combination needed, any version and region. The console shows Decouple: built-in one on. If it says not applied instead, a "Decouple gameplay timers from render FPS" mod in the patch file is used as before; please report that line with your game version. The community "[Fix] Bot rescue" mod is skipped: it slowed the game down (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_ASTRO_UPSCALE=0 Astro Bot: DLSS/FSR upscale only to the game's 2432x1368 TAA output, as before 23q
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, DLSS or FSR upscales the scene to the game's full output size (3840x2160, then scaled to your screen as before) from the render resolution the launcher's Render resolution picks:

Render resolution Works like (at 3840x2160)
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

New in 23q: before, DLSS and FSR only upscaled Astro Bot to 2432x1368: the game's TAA always makes a 2432x1368 image at render resolutions up to 1368p, and the game's last pass then stretched that to 3840x2160. Now, as in Playroom, the game's TAA still runs as usual, DLSS or FSR upscales the scene to the output size beside it, and the last pass reads that (plus what the game drew after its TAA). The HUD is drawn after it, so it stays sharp. At most 3x per axis: at 540p DLSS and FSR go to 2880x1620 and the game stretches the rest.

The console shows DLSS upscaling: 1280x720 to 3840x2160 (...) / FSR upscaling: ... and the last pass reads the 3840x2160 upscaled image ..., then a status line every 600 frames. The first frame may show ... to 2432x1368 once before it. If you see the last pass reads no ... image instead, please report it with your log. "KYTY_ASTRO_UPSCALE": "0", goes back to the 1368p upscale. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018, 01.007 and other versions where it matches; US, European and Asian editions) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Everything above works in Playroom too: DLSS-G, FSR frame generation, DLSS and FSR upscaling, the render resolution and the built-in Decouple (tested on version 01.905).

Upscaling works as in Astro Bot. Playroom's TAA runs at the render resolution and a later pass of its own stretches it to the output. So the game renders and runs its TAA as usual, DLSS or FSR upscales the scene to the full output size beside it, and the last pass reads the upscaled image plus what the game drew after its TAA (bloom, particles, motion blur). The idea of a late upscale in Playroom comes from iska0702/DLSSKytyPS5. DLSS and FSR upscale at most 3x per axis: Playroom always outputs 3840x2160, so at 540p they go to 2880x1620 and the game stretches the rest. The console shows the last pass reads the ... upscaled image plus what the game drew after its TAA. The HUD is drawn at the render resolution: sharp at 1080p and above, a little soft at 720p (a full-size HUD is planned). "KYTY_PLAYROOM_UPSCALE": "0", goes back to DLSS/FSR as anti-aliasing at the render resolution; "KYTY_PLAYROOM_MASK": "1", (FSR only) adds a reactive mask for particles and transparency.

Vblank frequency above 60: fine with the built-in Decouple (before build 23b Playroom ran at double speed without a decouple patch, as its game logic steps once per frame). If the console says Decouple: ... not applied for your version, keep the Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60) or use a patch file's decouple mod.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • Build 23q (test): DLSS and FSR upscale Astro Bot to the full output size (issue #4). Before, they stopped at 2432x1368 and the game stretched that to a 4K screen, so 720p, 1080p and 1368p all looked like 1368p. See DLSS and FSR upscaling above. (23p did not switch it on: Astro Bot's last pass is a different shader from Playroom's; 23q finds it.) New: please report how Astro Bot looks (and any the last pass reads no ... image line).

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.

  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.

  • Astro's Playroom at double speed with a Vblank frequency above 60, only if the built-in Decouple says not applied for your version and no patch file decouples it: then set the Vblank frequency to 60 (see Astro's Playroom above).

  • Build 23o (test): fewer physics crashes with the built-in Decouple, and launcher options for it. After a stutter (for example a level loading on a slower PC), Decouple let one game step last up to 1/20 s, and some physics failed: Playroom stopped with Assertion failed: !pos.IsNan() (PhysicsRigidBody.cpp, seen in the clock level), and Astro Bot crashed picking up the bow from a chest. A step now lasts at most 1/30 s by default. The game's settings in the launcher (Graphics) have three new options, for Astro Bot and Astro's Playroom:

    • Built-in Decouple: on by default. Off gives the game's own fixed 60 fps timing (slow motion below 60 fps), or the patch file's Decouple mod if you enabled it.
    • Decouple step limit: 1/20, 1/25, 1/30 (default), 1/35 or 1/40 s. If the game crashes on your PC, pick a smaller step: it is safer for the physics, but below that frame rate the game slows down a little (at 1/40 s and 30 fps it runs at 75% speed).
    • Decouple on/off key (default F10): switches Decouple off and back on while you play, for a place that still crashes. The console says which state it is in.

    The launcher's choices win over the same lines in u59-preset.json (KYTY_ASTRO_DECOUPLE, KYTY_ASTRO_DECOUPLE_DT_CAP, KYTY_ASTRO_DECOUPLE_KEY), so you can remove any you added.

  • Build 23m (test): Playroom no longer wobbles while standing still with DLSS or FSR. Playroom gives its camera jitter with the opposite sign to Astro Bot, and its motion vectors include the jitter, so DLSS and FSR added the jitter instead of removing it: the whole picture, trees and animations included, shook slightly whenever Astro stood still (in motion it was hidden). Both are now handled for Playroom automatically, at every render resolution. Remove any KYTY_DLSS_JITTER_X, KYTY_DLSS_JITTER_Y or KYTY_DLSS_MV_JITTERED lines you added for this from u59-preset.json ("KYTY_DLSS_MV_JITTERED": "0", still turns the second part off).

  • Astro's Playroom with the game's own TAA at a lower render resolution: a slight wobble while standing still remains (it is in the game's TAA, which the built-in render resolution does not correct yet). Use DLSS or FSR at a lower render resolution, or the game's choice with its TAA.

  • New in this build (23l): built-in Decouple, real upscaling in Playroom, more game versions.

    • Decouple built in for Astro Bot (any version and region) and Astro's Playroom (01.905 and versions where it matches): game time follows the real frame time, with the community v3 mod's smoothing and a 1/30 s delta-time cap since 23o (the launcher's Decouple step limit changes it). It finds the game's frame update by its code, so no patch file or button combination is needed. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it is on; use the launcher's Frame rate limit instead of the precise caps. Playroom is smoother than with its patch file's mod, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on, or not applied with the patch file's mod as before. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.
    • No more slow motion at level starts or mid-stage. The community "[Fix] Bot rescue" mod is skipped: its hooks mark entering and leaving a level, not rescues, so it switched Decouple off for whole stretches of play. Rescues work normally without it. "KYTY_ASTRO_RESCUE_FIX": "1", turns on the built-in version with a 6 s safety timer; if a rescue goes wrong without it, please report it with your log.
    • Real DLSS/FSR upscaling in Astro's Playroom: the scene is upscaled to the output size instead of only anti-aliased at the render resolution (see Astro's Playroom above).
    • More Astro Bot versions for the render resolution and the command-buffer fix (the "too many objects/batches in this scene" crash in busy scenes): 01.007.000, the version on many discs and unpatched copies, thanks to moooohung (pull request #3); other versions, found by what the code does and only changed when exactly one match is found; and the Asian edition (PPSA21568) alongside US and EU. The console says where each change was made, e.g. Game patch: Astro Bot fixed render resolution 1080p (01.007.000, code at game+0x...) and draw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or the not applied / not found line.
    • Gyro centred from the start, and a re-centre key. The learned resting offset is saved per controller in gyro-calibration.txt and loaded at the next start (put the pad down for 3 s in the first session). Hold the controller the way you play and press the re-centre key in the game window (launcher: the game's settings, Graphics & display, "Gyro re-centre key"; default F9) to make that its neutral position.
    • From moooohung (pull request #2): Korean and Japanese text no longer shows as ? (every installed CJK font is tried), and FSR frame generation enables the Vulkan extensions it needs without FSR upscaling.
  • Fixed in build 20: the DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).

  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 6 s (15 s before build 22), it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "6", (2 to 600). Since build 23 the mod is skipped instead and the built-in fix is off by default (see above).

  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.

  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.

  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.

  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Report problems on the fork's Issues page: the form asks for the build, game version, GPU and settings, and the console log. Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564 / PPSA21567 / PPSA21568) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot and Astro's Playroom keep their speed with Decouple built in: no patch file or button combination needed, any version and region. The console shows Decouple: built-in one on. If it says not applied instead, a "Decouple gameplay timers from render FPS" mod in the patch file is used as before; please report that line with your game version. The community "[Fix] Bot rescue" mod is skipped: it slowed the game down (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, that step is done by DLSS or FSR instead of the game's TAA, from the render resolution the launcher's Render resolution picks:

Render resolution Works like
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance/Quality (for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

The console shows DLSS upscaling: 1920x1080 to ... / FSR upscaling: 1920x1080 to ..., then ... upscaling: on and a status line every 600 frames. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018, 01.007 and other versions where it matches; US, European and Asian editions) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Everything above works in Playroom too: DLSS-G, FSR frame generation, DLSS and FSR upscaling, the render resolution and the built-in Decouple (tested on version 01.905).

Upscaling works differently from Astro Bot. Playroom's TAA runs at the render resolution and a later pass of its own stretches it to the output. So the game renders and runs its TAA as usual, DLSS or FSR upscales the scene to the full output size beside it, and the last pass reads the upscaled image plus what the game drew after its TAA (bloom, particles, motion blur). The idea of a late upscale in Playroom comes from iska0702/DLSSKytyPS5. DLSS and FSR upscale at most 3x per axis: Playroom always outputs 3840x2160, so at 540p they go to 2880x1620 and the game stretches the rest. The console shows the last pass reads the ... upscaled image plus what the game drew after its TAA. The HUD is drawn at the render resolution: sharp at 1080p and above, a little soft at 720p (a full-size HUD is planned). "KYTY_PLAYROOM_UPSCALE": "0", goes back to DLSS/FSR as anti-aliasing at the render resolution; "KYTY_PLAYROOM_MASK": "1", (FSR only) adds a reactive mask for particles and transparency.

Vblank frequency above 60: fine with the built-in Decouple (before build 23b Playroom ran at double speed without a decouple patch, as its game logic steps once per frame). If the console says Decouple: ... not applied for your version, keep the Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60) or use a patch file's decouple mod.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.

  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.

  • Astro's Playroom at double speed with a Vblank frequency above 60, only if the built-in Decouple says not applied for your version and no patch file decouples it: then set the Vblank frequency to 60 (see Astro's Playroom above).

  • Build 23o (test): fewer physics crashes with the built-in Decouple, and launcher options for it. After a stutter (for example a level loading on a slower PC), Decouple let one game step last up to 1/20 s, and some physics failed: Playroom stopped with Assertion failed: !pos.IsNan() (PhysicsRigidBody.cpp, seen in the clock level), and Astro Bot crashed picking up the bow from a chest. A step now lasts at most 1/30 s by default. The game's settings in the launcher (Graphics) have three new options, for Astro Bot and Astro's Playroom:

    • Built-in Decouple: on by default. Off gives the game's own fixed 60 fps timing (slow motion below 60 fps), or the patch file's Decouple mod if you enabled it.
    • Decouple step limit: 1/20, 1/25, 1/30 (default), 1/35 or 1/40 s. If the game crashes on your PC, pick a smaller step: it is safer for the physics, but below that frame rate the game slows down a little (at 1/40 s and 30 fps it runs at 75% speed).
    • Decouple on/off key (default F10): switches Decouple off and back on while you play, for a place that still crashes. The console says which state it is in.

    The launcher's choices win over the same lines in u59-preset.json (KYTY_ASTRO_DECOUPLE, KYTY_ASTRO_DECOUPLE_DT_CAP, KYTY_ASTRO_DECOUPLE_KEY), so you can remove any you added.

  • Build 23m (test): Playroom no longer wobbles while standing still with DLSS or FSR. Playroom gives its camera jitter with the opposite sign to Astro Bot, and its motion vectors include the jitter, so DLSS and FSR added the jitter instead of removing it: the whole picture, trees and animations included, shook slightly whenever Astro stood still (in motion it was hidden). Both are now handled for Playroom automatically, at every render resolution. Remove any KYTY_DLSS_JITTER_X, KYTY_DLSS_JITTER_Y or KYTY_DLSS_MV_JITTERED lines you added for this from u59-preset.json ("KYTY_DLSS_MV_JITTERED": "0", still turns the second part off).

  • Astro's Playroom with the game's own TAA at a lower render resolution: a slight wobble while standing still remains (it is in the game's TAA, which the built-in render resolution does not correct yet). Use DLSS or FSR at a lower render resolution, or the game's choice with its TAA.

  • New in this build (23l): built-in Decouple, real upscaling in Playroom, more game versions.

    • Decouple built in for Astro Bot (any version and region) and Astro's Playroom (01.905 and versions where it matches): game time follows the real frame time, with the community v3 mod's smoothing and a 1/30 s delta-time cap since 23o (the launcher's Decouple step limit changes it). It finds the game's frame update by its code, so no patch file or button combination is needed. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it is on; use the launcher's Frame rate limit instead of the precise caps. Playroom is smoother than with its patch file's mod, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on, or not applied with the patch file's mod as before. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.
    • No more slow motion at level starts or mid-stage. The community "[Fix] Bot rescue" mod is skipped: its hooks mark entering and leaving a level, not rescues, so it switched Decouple off for whole stretches of play. Rescues work normally without it. "KYTY_ASTRO_RESCUE_FIX": "1", turns on the built-in version with a 6 s safety timer; if a rescue goes wrong without it, please report it with your log.
    • Real DLSS/FSR upscaling in Astro's Playroom: the scene is upscaled to the output size instead of only anti-aliased at the render resolution (see Astro's Playroom above).
    • More Astro Bot versions for the render resolution and the command-buffer fix (the "too many objects/batches in this scene" crash in busy scenes): 01.007.000, the version on many discs and unpatched copies, thanks to moooohung (pull request #3); other versions, found by what the code does and only changed when exactly one match is found; and the Asian edition (PPSA21568) alongside US and EU. The console says where each change was made, e.g. Game patch: Astro Bot fixed render resolution 1080p (01.007.000, code at game+0x...) and draw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or the not applied / not found line.
    • Gyro centred from the start, and a re-centre key. The learned resting offset is saved per controller in gyro-calibration.txt and loaded at the next start (put the pad down for 3 s in the first session). Hold the controller the way you play and press the re-centre key in the game window (launcher: the game's settings, Graphics & display, "Gyro re-centre key"; default F9) to make that its neutral position.
    • From moooohung (pull request #2): Korean and Japanese text no longer shows as ? (every installed CJK font is tried), and FSR frame generation enables the Vulkan extensions it needs without FSR upscaling.
  • Fixed in build 20: the DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).

  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 6 s (15 s before build 22), it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "6", (2 to 600). Since build 23 the mod is skipped instead and the built-in fix is off by default (see above).

  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.

  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.

  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.

  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Report problems on the fork's Issues page: the form asks for the build, game version, GPU and settings, and the console log. Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564 / PPSA21567 / PPSA21568) and Astro's Playroom (PPSA01325):

New in this release -

  1. Built-in Decouple

Decouple is now built into the emulator for Astro Bot (any version and region) and Astro's Playroom. It finds the game's timing code itself, so you don't need the patch file or a button combo. It uses the v3 smoothing and the 1/20 s delta-time cap. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it's on, so use the launcher's Frame rate limit instead. Playroom is smoother too, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.

  1. No more slow motion at level starts

The "[Fix] Bot rescue" mod is now skipped. Its hooks fire when you enter and leave a level, not on rescues, so it was switching Decouple off mid-stage. Rescues work fine without it.

  1. Real DLSS/FSR upscaling in Astro's Playroom

Before, DLSS/FSR only anti-aliased Playroom at the render resolution. Now they upscale the scene to the full output size, with the game's own effects (bloom, particles) kept on top. 540p works too, upscaled 3x and stretched the rest of the way. The HUD is drawn at the render resolution for now: sharp at 1080p and above, a little soft at 720p.

  1. More Astro Bot versions supported

The built-in render resolution and the "too many objects" crash fix now work on:

  • 01.007.000, the disc / unpatched version (thanks to moooohung, PR #3)
  • other versions, found by what the code does and only patched when there's exactly one match
  • the Asian edition (PPSA21568), alongside US and EU

If you're on anything other than 01.018, please post your console's fixed render resolution ... and command buffers x2 ... lines (or the not applied / not found line).

  1. Gyro

The gyro is centred from the start: the resting offset is saved per controller. There's also a new re-centre key (F9 by default, set in the launcher).

  1. Fixes from moooohung (PR #2)

Korean and Japanese text no longer shows as ?, and FSR frame generation now works without FSR upscaling.

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all
  1. Jitter bug squashed in Astro's playroom - thanks to TomiSharked for flagging

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot and Astro's Playroom keep their speed with Decouple built in: no patch file or button combination needed, any version and region. The console shows Decouple: built-in one on. If it says not applied instead, a "Decouple gameplay timers from render FPS" mod in the patch file is used as before; please report that line with your game version. The community "[Fix] Bot rescue" mod is skipped: it slowed the game down (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, that step is done by DLSS or FSR instead of the game's TAA, from the render resolution the launcher's Render resolution picks:

Render resolution Works like
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance/Quality (for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

The console shows DLSS upscaling: 1920x1080 to ... / FSR upscaling: 1920x1080 to ..., then ... upscaling: on and a status line every 600 frames. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018, 01.007 and other versions where it matches; US, European and Asian editions) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Everything above works in Playroom too: DLSS-G, FSR frame generation, DLSS and FSR upscaling, the render resolution and the built-in Decouple (tested on version 01.905).

Upscaling works differently from Astro Bot. Playroom's TAA runs at the render resolution and a later pass of its own stretches it to the output. So the game renders and runs its TAA as usual, DLSS or FSR upscales the scene to the full output size beside it, and the last pass reads the upscaled image plus what the game drew after its TAA (bloom, particles, motion blur). The idea of a late upscale in Playroom comes from iska0702/DLSSKytyPS5. DLSS and FSR upscale at most 3x per axis: Playroom always outputs 3840x2160, so at 540p they go to 2880x1620 and the game stretches the rest. The console shows the last pass reads the ... upscaled image plus what the game drew after its TAA. The HUD is drawn at the render resolution: sharp at 1080p and above, a little soft at 720p (a full-size HUD is planned). "KYTY_PLAYROOM_UPSCALE": "0", goes back to DLSS/FSR as anti-aliasing at the render resolution; "KYTY_PLAYROOM_MASK": "1", (FSR only) adds a reactive mask for particles and transparency.

Vblank frequency above 60: fine with the built-in Decouple (before build 23b Playroom ran at double speed without a decouple patch, as its game logic steps once per frame). If the console says Decouple: ... not applied for your version, keep the Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60) or use a patch file's decouple mod.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.
  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.
  • Astro's Playroom at double speed with a Vblank frequency above 60, only if the built-in Decouple says not applied for your version and no patch file decouples it: then set the Vblank frequency to 60 (see Astro's Playroom above).
  • New in this build (23l): built-in Decouple, real upscaling in Playroom, more game versions.
    • Decouple built in for Astro Bot (any version and region) and Astro's Playroom (01.905 and versions where it matches): game time follows the real frame time, with the community v3 mod's smoothing and its 1/20 s delta-time cap ("KYTY_ASTRO_DECOUPLE_DT_CAP": "30", for 1/30 s). It finds the game's frame update by its code, so no patch file or button combination is needed. The patch file's Decouple and the mods that need it (frame-limiter sleep, precise frame caps, delta-time caps) are skipped while it is on; use the launcher's Frame rate limit instead of the precise caps. Playroom is smoother than with its patch file's mod, and no longer runs at double speed above Vblank 60. The console shows Decouple: built-in one on, or not applied with the patch file's mod as before. "KYTY_ASTRO_DECOUPLE": "0", goes back to the patch file.
    • No more slow motion at level starts or mid-stage. The community "[Fix] Bot rescue" mod is skipped: its hooks mark entering and leaving a level, not rescues, so it switched Decouple off for whole stretches of play. Rescues work normally without it. "KYTY_ASTRO_RESCUE_FIX": "1", turns on the built-in version with a 6 s safety timer; if a rescue goes wrong without it, please report it with your log.
    • Real DLSS/FSR upscaling in Astro's Playroom: the scene is upscaled to the output size instead of only anti-aliased at the render resolution (see Astro's Playroom above).
    • More Astro Bot versions for the render resolution and the command-buffer fix (the "too many objects/batches in this scene" crash in busy scenes): 01.007.000, the version on many discs and unpatched copies, thanks to moooohung (pull request #3); other versions, found by what the code does and only changed when exactly one match is found; and the Asian edition (PPSA21568) alongside US and EU. The console says where each change was made, e.g. Game patch: Astro Bot fixed render resolution 1080p (01.007.000, code at game+0x...) and draw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or the not applied / not found line.
    • Gyro centred from the start, and a re-centre key. The learned resting offset is saved per controller in gyro-calibration.txt and loaded at the next start (put the pad down for 3 s in the first session). Hold the controller the way you play and press the re-centre key in the game window (launcher: the game's settings, Graphics & display, "Gyro re-centre key"; default F9) to make that its neutral position.
    • From moooohung (pull request #2): Korean and Japanese text no longer shows as ? (every installed CJK font is tried), and FSR frame generation enables the Vulkan extensions it needs without FSR upscaling.
  • Fixed in build 20: the DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).
  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 6 s (15 s before build 22), it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "6", (2 to 600). Since build 23 the mod is skipped instead and the built-in fix is off by default (see above).
  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.
  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.
  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.
  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.
  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.
  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.
  • Generated frames need a decent base frame rate: about 40 fps or more looks good.
  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.
  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Report problems on the fork's Issues page: the form asks for the build, game version, GPU and settings, and the console log. Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564) and Astro's Playroom (PPSA01325):

New in this release -

  1. Continuous gyro calibration

What it does: whenever the controller has been still for half a second (barely rotating, with gravity steady), the emulator learns the gyro’s resting offset and removes it from every reading. That covers both the rotation speed the game reads and the orientation the emulator works out from it, so aim and tilt should stop creeping sideways. When it adjusts: the first estimate is ready after about a second of stillness. After that it adjusts slowly, so it follows the sensor warming up but doesn’t eat intentional slow movements. Each controller learns its own offset. What you’ll see: the console prints Gyro calibration: resting offset x, y, z degrees/s removed ... once it has learned the offset, so you’ll see your controller’s actual drift figure. "KYTY_GYRO_CALIBRATION": "0", turns it off.

This fixes the gyro drifting out of sync in Astro Bot

2.Minor Housekeeping

Re-ordered some elements of the launcher.

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot needs a "Decouple gameplay timers from render FPS" patch to keep its speed. The community "[Fix] Bot rescue" mod that goes with it could leave Decouple switched off for a whole level (Pumpkin Peril played in slow motion until the level was left); this build replaces that mod with a built-in version that switches Decouple back on by itself (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO. Astro's Playroom: keep the Vblank frequency at 60 (see below).

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, that step is done by DLSS or FSR instead of the game's TAA, from the render resolution the launcher's Render resolution picks:

Render resolution Works like
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance/Quality (for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

The console shows DLSS upscaling: 1920x1080 to ... / FSR upscaling: 1920x1080 to ..., then ... upscaling: on and a status line every 600 frames. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018 and other versions where it matches) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Playroom uses the same kind of TAA pass as Astro Bot, so everything above works in it: DLSS-G, FSR frame generation, DLSS and FSR upscaling and the render resolution (tested on version 01.905). One difference: Playroom's TAA runs at the render resolution and a later pass of its own does the upscale, so DLSS and FSR work there as anti-aliasing at the render resolution (DLAA / native AA), not as the upscaler. The console's lines are the same as for Astro Bot.

Playroom runs at double speed with a Vblank frequency above 60 unless a "Decouple gameplay timers from render FPS" patch is applied (its game logic steps once per frame). Keep Playroom's Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60). DLSS-G and FSR frame generation on Windows do not need more. With the decouple patch (the console shows Successfully applied cheat: Decouple gameplay timers from render FPS) a higher rate is fine.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.
  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.
  • Astro's Playroom at double speed: a Vblank frequency above 60 without the decouple patch. Set it to 60 for Playroom (see Astro's Playroom above).
  • New in this build: DualSense gyro no longer drifts. Every gyro reads a small rotation even at rest, and passed straight to the game it made aiming and tilt creep sideways during play (the accelerometer correction already fixed tilt, but nothing can correct heading that way). The emulator now measures that resting offset whenever the controller is held still for a moment and removes it from every reading (the console shows Gyro calibration: resting offset ...; "KYTY_GYRO_CALIBRATION": "0", turns it off). The launcher's render resolutions are now listed smallest to largest (saved choices are kept).
  • Fixed in build 19: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 15 s, it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "15",, and "KYTY_ASTRO_RESCUE_FIX": "0", to use the patch file's mod as before.
  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.
  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.
  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.
  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.
  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.
  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.
  • Generated frames need a decent base frame rate: about 40 fps or more looks good.
  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.
  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency 60, with frame generation on top (2x: 120 fps on screen) at a matching Frame rate limit. Lower the render resolution if your PC cannot hold 60 in the busiest levels: evenly timed frames feel far smoother than a rate that keeps dipping.

Below 60 (40 or 45 gives beautifully even frames) Astro Bot needs a "Decouple gameplay timers from render FPS" patch to keep its speed. The community "[Fix] Bot rescue" mod that goes with it could leave Decouple switched off for a whole level (Pumpkin Peril played in slow motion until the level was left); this build replaces that mod with a built-in version that switches Decouple back on by itself (see Known issues). If you still see slow motion below 60, go back to 60 and please report the level.

Without a variable-refresh display keep FIFO. Astro's Playroom: keep the Vblank frequency at 60 (see below).

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, that step is done by DLSS or FSR instead of the game's TAA, from the render resolution the launcher's Render resolution picks:

Render resolution Works like
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance/Quality (for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

The console shows DLSS upscaling: 1920x1080 to ... / FSR upscaling: 1920x1080 to ..., then ... upscaling: on and a status line every 600 frames. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018 and other versions where it matches) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Playroom uses the same kind of TAA pass as Astro Bot, so everything above works in it: DLSS-G, FSR frame generation, DLSS and FSR upscaling and the render resolution (tested on version 01.905). One difference: Playroom's TAA runs at the render resolution and a later pass of its own does the upscale, so DLSS and FSR work there as anti-aliasing at the render resolution (DLAA / native AA), not as the upscaler. The console's lines are the same as for Astro Bot.

Playroom runs at double speed with a Vblank frequency above 60 unless a "Decouple gameplay timers from render FPS" patch is applied (its game logic steps once per frame). Keep Playroom's Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60). DLSS-G and FSR frame generation on Windows do not need more. With the decouple patch (the console shows Successfully applied cheat: Decouple gameplay timers from render FPS) a higher rate is fine.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.
  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.
  • Astro's Playroom at double speed: a Vblank frequency above 60 without the decouple patch. Set it to 60 for Playroom (see Astro's Playroom above).
  • Fixed in this build: slow motion for a whole level below 60 fps with the decouple patch (Pumpkin Peril at Vblank 40). The community "[Fix] Bot rescue plays with the game's own 60 fps timing" mod switches Decouple off when a rescue starts and only back on when it ends; some levels start one without ending it. The emulator now applies that fix itself, automatically (no button combination), in place of the mod (it is skipped, enabled or not), with a safety net: if Decouple stays off for 15 s, it is switched back on (the console then shows Game patch: bot rescue fix: Decouple was off ...). Settings: "KYTY_ASTRO_RESCUE_TIMEOUT_S": "15",, and "KYTY_ASTRO_RESCUE_FIX": "0", to use the patch file's mod as before.
  • Fixed in build 18: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.
  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.
  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.
  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.
  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.
  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.
  • Generated frames need a decent base frame rate: about 40 fps or more looks good.
  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.
  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Astro Bot DLSS/FSR frame generation and upscaling(astrobot-dlss-int21-18, experimental)

astrobot-dlss-int21-18 nightly / pre-release
Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564) and Astro's Playroom (PPSA01325):

What's new in build 18

Silky-smooth frame times on G-Sync / FreeSync displays Set Present mode: Immediate with Smooth frame pacing ticked. A late frame is now shown the moment it's ready instead of being doubled, so frame times stay remarkably even. In a busy Astro Bot level (Sky Garden) the visible hitches dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.

Then pick a Vblank frequency your PC holds even in the busiest levels: a steady lower rate feels far smoother than a higher one that keeps dipping. Tester's setup (RTX 5080), smooth all the way through: Vblank 40, Frame generation 2x, Frame rate limit 80, Immediate, Smooth frame pacing, G-Sync on.

Fixed: slow motion with frame generation With Smooth frame pacing on, frames that took a little too long to present (most often with DLSS-G 3x) cost the game vblanks, so Astro Bot could drop into slow motion until the next load. The game now gets every vblank on time, at 2x, 3x and 4x.

Also since build 17

  • 960x540 and 1280x720 render resolutions for both Astro Bot and Astro's Playroom (launcher: Render resolution, no patch needed)
  • Playroom no longer runs too fast with Immediate + Smooth frame pacing
  • FSR 3.1 frame generation on Linux and macOS (new, untested on real hardware)

Without a variable-refresh display, keep Present mode on FIFO. Astro's Playroom: keep Vblank at 60. Full notes, setup and known issues below.

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back. Only the display skips it: the game still counts the vblank, so its speed stays right.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

Recommended on a G-Sync / FreeSync display: the smoothest way to play

With these settings the frame times are remarkably even: no judder and no hitching, just a steady, fluid picture. In the tester's words, "ultra smooth because of the perfect frame times".

  1. Present mode: Immediate, with Smooth frame pacing ticked. A frame that misses its vblank is shown the moment it is ready, instead of a whole vblank later, and the variable refresh shows it evenly. Measured in a busy Astro Bot level (Sky Garden) against FIFO: the visible hitches (doubled 33 ms frames) dropped from 97 a minute to 7, and the slowest 1% of frames went from 33 ms to 23 ms.
  2. Vblank frequency: one your PC holds even in the busiest levels. A lower rate that never dips feels far smoother than a higher one that keeps missing it: every frame then takes exactly the same time. Astro Bot keeps its normal speed below 60.
  3. Frame generation on top, at a matching Frame rate limit.

The tester's setup (RTX 5080), smooth all the way through: Vblank frequency 40, Frame generation 2x, Frame rate limit 80, Present mode Immediate, Smooth frame pacing on, G-Sync on.

Without a variable-refresh display keep FIFO. Astro's Playroom: keep the Vblank frequency at 60 (see below).

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, that step is done by DLSS or FSR instead of the game's TAA, from the render resolution the launcher's Render resolution picks:

Render resolution Works like
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance/Quality (for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

The console shows DLSS upscaling: 1920x1080 to ... / FSR upscaling: 1920x1080 to ..., then ... upscaling: on and a status line every 600 frames. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018 and other versions where it matches) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Playroom uses the same kind of TAA pass as Astro Bot, so everything above works in it: DLSS-G, FSR frame generation, DLSS and FSR upscaling and the render resolution (tested on version 01.905). One difference: Playroom's TAA runs at the render resolution and a later pass of its own does the upscale, so DLSS and FSR work there as anti-aliasing at the render resolution (DLAA / native AA), not as the upscaler. The console's lines are the same as for Astro Bot.

Playroom runs at double speed with a Vblank frequency above 60 unless a "Decouple gameplay timers from render FPS" patch is applied (its game logic steps once per frame). Keep Playroom's Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60). DLSS-G and FSR frame generation on Windows do not need more. With the decouple patch (the console shows Successfully applied cheat: Decouple gameplay timers from render FPS) a higher rate is fine.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.
  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.
  • Astro's Playroom at double speed: a Vblank frequency above 60 without the decouple patch. Set it to 60 for Playroom (see Astro's Playroom above).
  • Fixed in this build: slow motion with frame generation and Smooth frame pacing. When a frame took longer to present than one vblank (DLSS-G pacing its generated frames, more often at 3x than 2x), the skipped vblank was also lost to the game, which then ran slower, in Astro Bot until the next load. The display still skips it, but the game now receives every vblank on time (the console shows Vblank catch-up: ... when it happens; "KYTY_VBLANK_CATCH_UP": "0", restores the old behaviour). With older builds: untick Smooth frame pacing when using frame generation.
  • Fixed in build 17: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.
  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.
  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.
  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.
  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.
  • Generated frames need a decent base frame rate: about 40 fps or more looks good.
  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.
  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows, Linux, macOS
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 540p / 720p / 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling, FSR frame generation and the render resolution).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 540, 720, 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: the game's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working on Windows in both Astro Bot and Playroom.

On Linux and macOS (new in this build, untested by us) FSR frame generation is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources, so the same launcher choice (or "KYTY_FRAMEGEN": "1", with "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json) works on any Vulkan GPU, no extra file needed. AMD's frame generation swapchain is Windows only, so there the emulator shows the frames itself, on its vblank ticks: the generated frame at the tick a new game frame arrives, the game's frame at the next tick. So set Vblank frequency to twice the game's frame rate (e.g. 120 for 60 fps, with a display that shows 120 Hz); if the game reaches the vblank rate itself, no frame is generated. The console shows Frame generation: AMD FSR 3.1 frame generation asked for (2x, built in), FSR 3.1 ready (..., built in), FSR on and FSR 2x on (...; built in, shown at the vblank ticks). It needs SDR output (not HDR). Please report whether it works, with those lines.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, that step is done by DLSS or FSR instead of the game's TAA, from the render resolution the launcher's Render resolution picks:

Render resolution Works like
960x540 / 1280x720 Ultra Performance / Performance (fastest; for low-end GPUs and handhelds)
1920x1080 Performance/Quality (for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

The console shows DLSS upscaling: 1920x1080 to ... / FSR upscaling: 1920x1080 to ..., then ... upscaling: on and a status line every 600 frames. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018 and other versions where it matches) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Playroom uses the same kind of TAA pass as Astro Bot, so everything above works in it: DLSS-G, FSR frame generation, DLSS and FSR upscaling and the render resolution (tested on version 01.905). One difference: Playroom's TAA runs at the render resolution and a later pass of its own does the upscale, so DLSS and FSR work there as anti-aliasing at the render resolution (DLAA / native AA), not as the upscaler. The console's lines are the same as for Astro Bot.

Playroom runs at double speed with a Vblank frequency above 60 unless a "Decouple gameplay timers from render FPS" patch is applied (its game logic steps once per frame). Keep Playroom's Vblank frequency at 60 (launcher: the game's settings, Graphics & display; frontends: --vblank-frequency 60). DLSS-G and FSR frame generation on Windows do not need more. With the decouple patch (the console shows Successfully applied cheat: Decouple gameplay timers from render FPS) a higher rate is fine.

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G) and Reflex are Windows only and not in them. FSR upscaling and FSR frame generation are: there they are built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR and Frame generation: 2x (AMD FSR 3.1) in the launcher, or "KYTY_FSR": "1", and "KYTY_FRAMEGEN_BACKEND": "fsr", in u59-preset.json, work on any Vulkan GPU (frame generation: see above, Vblank frequency at twice the game's frame rate). The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: and Frame generation: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • The HUD can smear a little with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady.
  • FSR frame generation on Linux and macOS is new and untested: it needs the Vblank frequency at about twice the game's frame rate and a display that refreshes that fast.
  • Astro's Playroom at double speed: a Vblank frequency above 60 without the decouple patch. Set it to 60 for Playroom (see Astro's Playroom above).
  • Fixed in this build: Astro's Playroom too fast with Present mode Immediate and Smooth frame pacing. That combination showed every frame as soon as it was ready, so the Vblank frequency no longer capped the frame rate, and Playroom's game logic (one step per frame) sped up with it. It now shows at most one frame per vblank ("KYTY_PRESENT_IMMEDIATE_UNCAPPED": "1", restores the old behaviour). With older builds: use Present mode FIFO or untick Smooth frame pacing.
  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.
  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.
  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.
  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.
  • Generated frames need a decent base frame rate: about 40 fps or more looks good.
  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.
  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Astro Bot DLSS frame generation (astrobot-dlss-int21-11, experimental)

astrobot-dlss-int21-11 nightly / pre-release
Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS frame generation for Astro Bot

An experimental, unofficial test build of Jetsku/KytyPS5 that adds NVIDIA DLSS frame generation (DLSS-G) and, new and experimental, DLSS upscaling (DLSS super resolution) to ASTRO BOT (PPSA21564). Everything else is Jetsku's U59 int21 release (24 October 2026).

Frame generation only switches on where it finds Astro Bot's inputs; in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it).
  • An NVIDIA RTX 40 or RTX 50 graphics card and a recent driver (tested: RTX 5080, 617.42).
  • NVIDIA's Streamline v2.14.1 runtime files (not included, see below).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. Download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. In the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (the two clash).

  5. Start Astro Bot from the launcher as usual.

Checking it works

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: Astro Bot's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which DLSS-G does not change.

Settings

In the launcher, a game's Graphics & display settings have Frame generation (Off, 2x, 3x, 4x; 3x and 4x need an RTX 50 card), Upscaling (the game's own TAA, NVIDIA DLSS or AMD FSR 3.1) and Render resolution (Astro Bot's; lower is faster), and Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK: after a slow frame a vblank is skipped instead of the next frames being shown back to back) and Frame rate limit (KYTY_FRAMEGEN_FPS_CAP: with frame generation, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120). They take precedence over u59-preset.json.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (RTX 50 only)
KYTY_DLSS=1 DLSS upscaling in place of the game's anti-aliasing (TAA), see below (launcher: Upscaling)
KYTY_ASTRO_RENDER_RES=1080 Astro Bot's render resolution: 1080, 1368, 1872 or 2160 (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With frame generation: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths, see below (launcher: Relaxed shader maths)

Shader maths profile (KYTY_FLOAT_PROFILE, experimental): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

DLSS upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS upscaling on, NVIDIA's DLSS does that step instead of the game's TAA (any RTX card), from the render resolution the launcher's Render resolution picks:

Render resolution DLSS works like
1920x1080 Performance/Quality (fastest; for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA (native resolution, best image, a little slower than the game's TAA)

The render resolution needs no patch file: the emulator applies it itself (Astro Bot 01.018, and other versions where it finds the game's resolution code; the console says which). An enabled "Fixed render resolution" patch in a patch file takes precedence.

The console shows DLSS upscaling: 1920x1080 to ... and DLSS upscaling: on, then a status line every 600 frames. It works with or without frame generation. Your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll (both in the SDK's bin\x64).

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. Please report which one looked right.

AMD FSR 3.1 upscaling (experimental)

Upscaling: AMD FSR 3.1 in the launcher (KYTY_FSR=1) does the same as DLSS upscaling with AMD's FidelityFX Super Resolution 3.1, on any GPU (AMD, Intel, older NVIDIA) and without the Streamline files. Its runtime, amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence), is included next to the emulator. The console shows FSR upscaling: 1920x1080 to ... and FSR upscaling: on. "KYTY_FSR_SHARPNESS": "0.5", in u59-preset.json adds FSR's sharpening (0 to 1; default off). The jitter switches of DLSS above apply to FSR too.

AMD FSR 3.1 frame generation (experimental, Windows)

Frame generation: 2x (AMD FSR 3.1, any GPU) in the launcher (KYTY_FRAMEGEN=1 with KYTY_FRAMEGEN_BACKEND=fsr) generates frames with AMD's FSR 3.1 instead of NVIDIA's DLSS-G: on any GPU (AMD, Intel, RTX 20/30), from the same depth, motion vectors and camera. It uses the amd_fidelityfx_vk.dll already next to the emulator; no Streamline files are needed. Use it with FSR upscaling or the game's own (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. The HUD is generated along with the scene (it may smear a little in motion).

Astro's Playroom (experimental)

Astro's Playroom (PPSA01325, version 01.905) uses the same kind of TAA pass as Astro Bot, so DLSS and FSR upscaling and DLSS frame generation are set up for it too, untested so far. The launcher's Render resolution works for it as well (no patch file needed; an enabled "Fixed render resolution" patch wins). The console shows the same DLSS upscaling: / FSR upscaling: and Frame generation: lines; 0 of the last presents had inputs means its camera was not found: please report it with the log.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation and Reflex are Windows only and not in them. FSR upscaling is: there it is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR in the launcher, or "KYTY_FSR": "1", in u59-preset.json, works on any Vulkan GPU. The built-in render resolution (KYTY_ASTRO_RENDER_RES, e.g. 1080) and everything else from Jetsku's int21 are in them too. The macOS build is the first one and untested too. FSR on Linux and macOS is new and untested by us: please report whether it works (and the console's FSR upscaling: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • Game patches are separate and up to you. Frame generation does not depend on them: it works with or without the usual Astro Bot patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on version 01.018 (PPSA21564). Other regions or updates very likely work the same, but if the console never shows Astro Bot's inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • The HUD can smear slightly in generated frames: the game image is given to DLSS-G with its HUD (no HUD-less image yet).

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; DLSS-G only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

Reporting problems

Please include your GPU, driver version, and all the Frame generation: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls - many thanks. Astro Bot's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. This build is not affiliated with Sony, NVIDIA, the KytyPS5 project or Jetsku.

Release notes · 3 files

KytyPS5 (Jetsku U59) with DLSS and FSR for Astro Bot and Astro's Playroom

An experimental, unofficial test build of Jetsku/KytyPS5 that adds frame generation and modern upscaling to ASTRO BOT (PPSA21564) and Astro's Playroom (PPSA01325):

What it does GPU Platforms
NVIDIA DLSS frame generation (DLSS-G) 2x, 3x, 4x generated frames, with Reflex RTX 40 / 50 (3x/4x: RTX 50) Windows
AMD FSR 3.1 frame generation 2x generated frames any GPU (AMD, Intel, RTX 20/30, ...) Windows
NVIDIA DLSS upscaling (super resolution) replaces the game's TAA any RTX Windows
AMD FSR 3.1 upscaling replaces the game's TAA any Vulkan GPU Windows, Linux, macOS
Built-in render resolution 1080p / 1368p / 1872p / 2160p, no patch file needed any all

Everything else is Jetsku's U59 int21 release (24 October 2026).

All of this only switches on where it finds Astro Bot's or Playroom's inputs (depth, motion vectors and camera); in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it), for frame generation.
  • DLSS-G and DLSS upscaling: an NVIDIA RTX card (RTX 40 or 50 for frame generation) with a recent driver (tested: RTX 5080, 617.42), and NVIDIA's Streamline v2.14.1 runtime files (not included, see below).
  • FSR upscaling and FSR frame generation: any GPU. Nothing to download: AMD's amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence) is included next to the emulator.
  • Linux / macOS: see below (FSR upscaling and render resolution only).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. For DLSS only: download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. For DLSS only: in the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── amd_fidelityfx_vk.dll
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.dlss.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        ├── nvngx_dlss.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).

  5. Pick your settings in the launcher (below) and start the game as usual.

Settings

In the launcher, a game's Graphics & display settings have:

  • Frame generation: Off, 2x, 3x, 4x (NVIDIA DLSS-G; 3x and 4x need an RTX 50 card), or 2x (AMD FSR 3.1, any GPU).
  • Upscaling: the game's own TAA, NVIDIA DLSS or AMD FSR 3.1.
  • Render resolution: the game's 3D resolution, for both Astro Bot and Playroom (lower is faster).
  • Relaxed shader maths: simpler shader maths, see below.
  • Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK): after a slow frame a vblank is skipped instead of the next frames being shown back to back.
  • Frame rate limit (KYTY_FRAMEGEN_FPS_CAP): with DLSS-G, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120.

They take precedence over u59-preset.json.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (DLSS-G, RTX 50 only)
KYTY_FRAMEGEN_BACKEND=fsr AMD FSR 3.1 frame generation instead of DLSS-G (launcher: 2x AMD FSR 3.1)
KYTY_DLSS=1 DLSS upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR=1 FSR 3.1 upscaling in place of the game's TAA (launcher: Upscaling)
KYTY_FSR_SHARPNESS=0.5 FSR upscaling's sharpening, 0 to 1 (default off)
KYTY_ASTRO_RENDER_RES=1080 Render resolution: 1080, 1368, 1872 or 2160, both games (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With DLSS-G: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_FLOAT_PROFILE=relaxed Simpler shader maths (launcher: Relaxed shader maths)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)
KYTY_PORTABLE=0 Use the shared Kyty.ini instead of this build's own (see below)

NVIDIA DLSS frame generation (DLSS-G)

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: Astro Bot's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which frame generation does not change.

AMD FSR 3.1 frame generation (experimental, Windows)

Frame generation: 2x (AMD FSR 3.1, any GPU) generates frames with AMD's FSR 3.1 instead of DLSS-G, on any GPU, from the same depth, motion vectors and camera. No Streamline files are needed. Use it with FSR upscaling or the game's own TAA (not with DLSS upscaling). The console shows Frame generation: FSR swapchain ..., FSR 3.1 ready ..., then FSR on and FSR 2x on (render ..., display ...) in the 3D view; it switches off during videos and menus and back on in the 3D view. "KYTY_FRAMEGEN_DEBUG": "1", draws FSR's tear and reset lines, "2" its debug view. Tested working in both Astro Bot and Playroom.

DLSS and FSR upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS (any RTX card) or FSR 3.1 (any GPU) upscaling on, that step is done by DLSS or FSR instead of the game's TAA, from the render resolution the launcher's Render resolution picks:

Render resolution Works like
1920x1080 Performance/Quality (fastest; for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA / native AA (best image, a little slower than the game's TAA)

The console shows DLSS upscaling: 1920x1080 to ... / FSR upscaling: 1920x1080 to ..., then ... upscaling: on and a status line every 600 frames. Both work with or without frame generation. For DLSS your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll.

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. These apply to FSR too. Please report which one looked right.

Built-in render resolution

The launcher's Render resolution (KYTY_ASTRO_RENDER_RES) needs no patch file: the emulator finds the game's resolution code itself, in Astro Bot (01.018 and other versions where it matches) and Astro's Playroom (found by its instructions, so other versions should match too). The console says whether it was applied, and why not if it was not. An enabled "Fixed render resolution" patch in a patch file takes precedence.

Astro's Playroom (PPSA01325)

Playroom uses the same kind of TAA pass as Astro Bot, so everything above works in it: DLSS-G, FSR frame generation, DLSS and FSR upscaling and the render resolution (tested on version 01.905). One difference: Playroom's TAA runs at the render resolution and a later pass of its own does the upscale, so DLSS and FSR work there as anti-aliasing at the render resolution (DLAA / native AA), not as the upscaler. The console's lines are the same as for Astro Bot (including the wording "Astro Bot's inputs found").

Shader maths profile (experimental)

Relaxed shader maths (KYTY_FLOAT_PROFILE): precise (the default) copies the PS5 GPU's exact floating-point rules, which takes several instructions for things like min/max with NaNs, tiny (denormal) numbers and rounding modes. relaxed maps those to the PC GPU's own instructions instead: smaller shaders that compile and run a little faster, which can mean less stutter when new shaders appear. Most games never notice; if you see sparkles, black or white pixels, flicker or broken effects with it, go back to precise. The first start after changing it compiles the game's shaders again.

Linux, Batocera / Steam Deck and macOS

The release also has a Linux build (...-Linux-x86_64.tar.gz) and a macOS build (...-macOS-x86_64.zip, Intel Macs; Apple Silicon through Rosetta, with MoltenVK). DLSS, frame generation (DLSS-G and FSR) and Reflex are Windows only and not in them. FSR upscaling is: there it is built into the emulator from AMD's FidelityFX SDK 1.1.4 sources (no extra file), so Upscaling: AMD FSR in the launcher, or "KYTY_FSR": "1", in u59-preset.json, works on any Vulkan GPU. The built-in render resolution, the shader maths profile and everything else from Jetsku's int21 are in them too. The macOS build is new and untested by us: please report whether it works (and the console's FSR upscaling: lines if it does not).

Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080", and "KYTY_FSR": "1",. On macOS, keep u59-preset.json next to KytyPS5.app.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Separate settings per build (portable)

These builds keep their own Kyty.ini (game folders, per-game settings) next to the launcher (on macOS next to KytyPS5.app), so another Kyty build no longer overwrites them. The first start copies the shared one, so nothing has to be set up again. KYTY_PORTABLE=0 goes back to the shared file; a folder the launcher cannot write to (e.g. Program Files) does too.

Known issues

  • The HUD can wobble or smear with FSR frame generation. The game draws its HUD into the same image as the 3D scene, so FSR generates it along with the scene. With DLSS-G it is steady. A fix is being worked on.
  • FSR frame generation does not work together with DLSS upscaling. Use FSR upscaling or the game's TAA with it.
  • Game patches are separate and up to you. Frame generation and upscaling do not depend on them: they work with or without the usual patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.
  • Tested on Astro Bot 01.018 (PPSA21564) and Astro's Playroom 01.905 (PPSA01325). Other regions or updates very likely work the same, but if the console never shows inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.
  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; frame generation only adds frames on top of what is rendered.
  • Generated frames need a decent base frame rate: about 40 fps or more looks good.
  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.
  • A "DLSSG SDK - DO NOT DISTRIBUTE" watermark means the Streamline files came from the SDK's development folder: use the ones from bin\x64 instead.

Reporting problems

Please include your GPU, driver version, game and version, and all the Frame generation:, DLSS upscaling:, FSR upscaling:, Game patch: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls, and the Linux/macOS FSR build uses the FidelityFX source integration from chenxiao07's work too - many thanks. FSR 3.1 upscaling and frame generation use AMD's FidelityFX SDK 1.1.4 (MIT licence). Astro Bot's and Playroom's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. AMD FidelityFX is AMD's, under the MIT licence. This build is not affiliated with Sony, NVIDIA, AMD, the KytyPS5 project or Jetsku.

Astro Bot DLSS frame generation (astrobot-dlss-int21-7, experimental)

astrobot-dlss-int21-7 nightly / pre-release
Release notes · 1 file

KytyPS5 (Jetsku U59) with DLSS frame generation for Astro Bot

An experimental, unofficial test build of Jetsku/KytyPS5 that adds NVIDIA DLSS frame generation (DLSS-G) and, new and experimental, DLSS upscaling (DLSS super resolution) to ASTRO BOT (PPSA21564). Everything else is Jetsku's U59 int21 release (24 October 2026).

Frame generation only switches on where it finds Astro Bot's inputs; in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it).
  • An NVIDIA RTX 40 or RTX 50 graphics card and a recent driver (tested: RTX 5080, 617.42).
  • NVIDIA's Streamline v2.14.1 runtime files (not included, see below).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. Download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. In the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (the two clash).

  5. Start Astro Bot from the launcher as usual.

Checking it works

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: Astro Bot's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which DLSS-G does not change.

Settings

In the launcher, a game's Graphics & display settings have Frame generation (Off, 2x, 3x, 4x; 3x and 4x need an RTX 50 card), Upscaling (the game's own TAA, NVIDIA DLSS or AMD FSR 3.1) and Render resolution (Astro Bot's; lower is faster), and Smooth frame pacing (KYTY_PRESENT_ABS_VBLANK: after a slow frame a vblank is skipped instead of the next frames being shown back to back) and Frame rate limit (KYTY_FRAMEGEN_FPS_CAP: with frame generation, NVIDIA Reflex holds the rendered frames to that rate so generated frames are evenly spaced; pick one your PC holds, e.g. 40 or 60 with Vblank frequency 120). They take precedence over u59-preset.json.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (RTX 50 only)
KYTY_DLSS=1 DLSS upscaling in place of the game's anti-aliasing (TAA), see below (launcher: Upscaling)
KYTY_ASTRO_RENDER_RES=1080 Astro Bot's render resolution: 1080, 1368, 1872 or 2160 (launcher: Render resolution)
KYTY_FRAMEGEN_FPS_CAP=40 With frame generation: Reflex limits the rendered frames to 40 fps (launcher: Frame rate limit)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)

DLSS upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS upscaling on, NVIDIA's DLSS does that step instead of the game's TAA (any RTX card), from the render resolution the launcher's Render resolution picks:

Render resolution DLSS works like
1920x1080 Performance/Quality (fastest; for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA (native resolution, best image, a little slower than the game's TAA)

The render resolution needs no patch file: the emulator applies it itself (Astro Bot 01.018, and other versions where it finds the game's resolution code; the console says which). An enabled "Fixed render resolution" patch in a patch file takes precedence.

The console shows DLSS upscaling: 1920x1080 to ... and DLSS upscaling: on, then a status line every 600 frames. It works with or without frame generation. Your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll (both in the SDK's bin\x64).

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. Please report which one looked right.

AMD FSR 3.1 upscaling (experimental)

Upscaling: AMD FSR 3.1 in the launcher (KYTY_FSR=1) does the same as DLSS upscaling with AMD's FidelityFX Super Resolution 3.1, on any GPU (AMD, Intel, older NVIDIA) and without the Streamline files. Its runtime, amd_fidelityfx_vk.dll (FidelityFX SDK v1.1.4, MIT licence), is included next to the emulator. The console shows FSR upscaling: 1920x1080 to ... and FSR upscaling: on. "KYTY_FSR_SHARPNESS": "0.5", in u59-preset.json adds FSR's sharpening (0 to 1; default off). The jitter switches of DLSS above apply to FSR too.

Linux and Batocera / Steam Deck

The release also has a Linux build (...-Linux-x86_64.tar.gz). DLSS, frame generation, Reflex and FSR are Windows only and not in it; the built-in render resolution (KYTY_ASTRO_RENDER_RES, e.g. 1080) and everything else from Jetsku's int21 are. Started without the launcher (as frontends do), the emulator applies u59-preset.json from its folder itself, so add settings there, e.g. "KYTY_ASTRO_RENDER_RES": "1080",.

Batocera: run the community install_ps5_kyty.sh with this release's Linux file: KYTY_URL=<the .tar.gz's download link> bash install_ps5_kyty.sh.

Known issues

  • Game patches are separate and up to you. Frame generation does not depend on them: it works with or without the usual Astro Bot patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on version 01.018 (PPSA21564). Other regions or updates very likely work the same, but if the console never shows Astro Bot's inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • The HUD can smear slightly in generated frames: the game image is given to DLSS-G with its HUD (no HUD-less image yet).

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; DLSS-G only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

Reporting problems

Please include your GPU, driver version, and all the Frame generation: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls - many thanks. Astro Bot's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. This build is not affiliated with Sony, NVIDIA, the KytyPS5 project or Jetsku.

Astro Bot DLSS frame generation (astrobot-dlss-int21-3, experimental)

astrobot-dlss-int21-3 nightly / pre-release
Release notes · 1 file

KytyPS5 (Jetsku U59) with DLSS frame generation for Astro Bot

An experimental, unofficial test build of Jetsku/KytyPS5 that adds NVIDIA DLSS frame generation (DLSS-G) and, new and experimental, DLSS upscaling (DLSS super resolution) to ASTRO BOT (PPSA21564). Everything else is Jetsku's U59 int21 release (24 October 2026).

Frame generation only switches on where it finds Astro Bot's inputs; in other games it stays off. With the streamline folder present Streamline still sits between the emulator and the driver, so if another game misbehaves with this build, set KYTY_FRAMEGEN=0 or remove the folder.

Requirements

  • Windows 10/11 with hardware-accelerated GPU scheduling on (Settings > System > Display > Graphics > Advanced graphics settings; restart after changing it).
  • An NVIDIA RTX 40 or RTX 50 graphics card and a recent driver (tested: RTX 5080, 617.42).
  • NVIDIA's Streamline v2.14.1 runtime files (not included, see below).

Setup

  1. Download this release's zip and unzip it into a new folder.

  2. Download NVIDIA Streamline v2.14.1: https://github.com/NVIDIA-RTX/Streamline/releases/tag/v2.14.1 - pick streamline-sdk-v2.14.1.zip (not the aarch64/arm64ec ones).

  3. In the unzipped emulator folder, next to kyty_emulator.exe, make a folder named exactly streamline and copy into it the files from the Streamline zip's bin\x64 folder (the files themselves; the development subfolder is not needed).

    KytyPS5-AstroBot-DLSSG\
    ├── kyty_emulator.exe
    ├── kyty_launcher.exe
    ├── ...
    └── streamline\
        ├── sl.interposer.dll
        ├── sl.common.dll
        ├── sl.dlss_g.dll
        ├── sl.reflex.dll
        ├── sl.pcl.dll
        ├── nvngx_dlssg.dll
        └── ...
    
  4. Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (the two clash).

  5. Start Astro Bot from the launcher as usual.

Checking it works

The emulator's console window shows, in order:

Frame generation: Streamline loaded from ...\streamline (1 generated frame(s) per frame)
Frame generation: Streamline offers DLSS-G with this GPU, driver and Windows
Frame generation: Vulkan is loaded from sl.interposer.dll (Streamline's interposer, as needed)
Frame generation: DLSS-G ready (1 generated frame(s) per frame); it turns on in the game's 3D view
Frame generation: Astro Bot's inputs found (motion and depth 3840x2160, ...)
Frame generation: DLSS-G on

Use the NVIDIA overlay (Alt+R) to see the frame rate on screen: it counts the generated frames. The emulator's own counter shows the game's real frame rate, which DLSS-G does not change.

Settings

In the launcher, a game's Graphics & display settings have Frame generation (Off, 2x, 3x, 4x; 3x and 4x need an RTX 50 card), Upscaling (the game's own TAA or NVIDIA DLSS) and Render resolution (Astro Bot's; lower is faster). They take precedence over u59-preset.json.

This build is made like Jetsku's U59 releases (profile-guided optimisation trained on Astro Bot, the emulator's diagnostics compiled out) and ships Jetsku's tuned u59-preset.json next to the launcher. While that file is there, the launcher ignores KYTY_... environment variables and uses the file instead: add settings to it, one "NAME": "value", line each, for example "KYTY_FRAMEGEN": "2", or "KYTY_VRAM_BUDGET_MB": "12000",.

Variable Effect
KYTY_FRAMEGEN=0 Frame generation off
KYTY_FRAMEGEN=1 2x (default)
KYTY_FRAMEGEN=2 / 3 3x / 4x multi frame generation (RTX 50 only)
KYTY_DLSS=1 DLSS upscaling in place of the game's anti-aliasing (TAA), see below (launcher: Upscaling)
KYTY_ASTRO_RENDER_RES=1080 Astro Bot's render resolution: 1080, 1368, 1872 or 2160 (launcher: Render resolution)
KYTY_STREAMLINE_DIR=<folder> Use Streamline files from another folder
KYTY_VRAM_BUDGET_MB=12000 Leave video memory for DLSS-G (helps on 16 GB cards at 4K)

DLSS upscaling (experimental)

Astro Bot draws its 3D image at a render resolution and its own TAA pass upscales that to the output resolution. With DLSS upscaling on, NVIDIA's DLSS does that step instead of the game's TAA (any RTX card), from the render resolution the launcher's Render resolution picks:

Render resolution DLSS works like
1920x1080 Performance/Quality (fastest; for lower-end GPUs)
2432x1368 Quality
3328x1872 between Ultra Quality and DLAA
Game's choice / 3840x2160 DLAA (native resolution, best image, a little slower than the game's TAA)

The render resolution needs no patch file: the emulator applies it itself (Astro Bot 01.018, and other versions where it finds the game's resolution code; the console says which). An enabled "Fixed render resolution" patch in a patch file takes precedence.

The console shows DLSS upscaling: 1920x1080 to ... and DLSS upscaling: on, then a status line every 600 frames. It works with or without frame generation. Your streamline folder needs Streamline's sl.dlss.dll and nvngx_dlss.dll (both in the SDK's bin\x64).

If the image shimmers or looks soft and wobbly, the camera jitter's direction may be wrong: try "KYTY_DLSS_JITTER_X": "-1", and/or "KYTY_DLSS_JITTER_Y": "-1",, or "KYTY_DLSS_JITTER": "projection", in u59-preset.json; trails behind moving things: "KYTY_DLSS_MV_JITTERED": "1",. Please report which one looked right.

Known issues

  • Game patches are separate and up to you. Frame generation does not depend on them: it works with or without the usual Astro Bot patches (ultrawide, fixed resolution, FPS unlock / decouple and so on). Patches that replace the game's renderer or its anti-aliasing could stop it finding its inputs; it then just stays off.

  • Tested on version 01.018 (PPSA21564). Other regions or updates very likely work the same, but if the console never shows Astro Bot's inputs found in the game's 3D view, your version draws differently: please report it with your title ID and version.

  • The HUD can smear slightly in generated frames: the game image is given to DLSS-G with its HUD (no HUD-less image yet).

  • Frame generation does not fix game slowdown. If the game itself runs below the frame rate its patches expect, it still slows down; DLSS-G only adds frames on top of what is rendered.

  • Generated frames need a decent base frame rate: about 40 fps or more looks good.

  • The bundled u59-preset.json turns on KYTY_CUDA_EARLY_INIT (CUDA set up before the emulator's memory): without it an RTX 5080 refused the Vulkan device with Streamline ("Could not create device"). In this build CUDA's memory then sits above 512 GiB, inside the emulator's address range; Astro Bot does not use that part of it, but other games might. If the device is still refused, set Bottom-up ASLR on for kyty_emulator.exe in Windows Security > App & browser control > Exploit protection > Program settings.

Reporting problems

Please include your GPU, driver version, and all the Frame generation: and Streamline lines from the console (or the lines just before a crash).

How it works

The DLSS-G integration through NVIDIA Streamline (loading sl.interposer.dll as the Vulkan loader, DLSS-G options, constants, resource tags and Reflex/PCL markers at the present) follows chenxiao07/KytyPS5's src/local/frame-gen.cpp, which does this for Demon's Souls - many thanks. Astro Bot's motion vectors, depth and camera constants were found with a capture tool in this build (KYTY_FG_DISCOVER=1); the details are in docs/RE-ASTRO-BOT-FG.md, the code in src/graphics/host_gpu/renderer/frameGenDlssg.{h,cpp}.

KytyPS5 is free software under the GPL-2.0 (see LICENSE). NVIDIA Streamline and DLSS are NVIDIA's; their files are not distributed here. This build is not affiliated with Sony, NVIDIA, the KytyPS5 project or Jetsku.