github biggsymobile-png/KytyPS5 astrobot-dlss-int21-23y
Astro Bot DLSS frame generation (astrobot-dlss-int21-23y, experimental)

pre-release13 days ago

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.

Don't miss a new KytyPS5 release

NewReleases is sending notifications on new releases.