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
-
Download this release's zip and unzip it into a new folder.
-
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). -
For DLSS only: in the unzipped emulator folder, next to
kyty_emulator.exe, make a folder named exactlystreamlineand copy into it the files from the Streamline zip'sbin\x64folder (the files themselves; thedevelopmentsubfolder 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 └── ... -
Turn NVIDIA Smooth Motion off for kyty_emulator.exe in the NVIDIA App (it clashes with frame generation).
-
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".
- 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.
- 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 ... imageline). -
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 appliedfor 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_YorKYTY_DLSS_MV_JITTEREDlines you added for this fromu59-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, ornot appliedwith 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...)anddraw-thread command buffers x2 (...; table at game+0x...). On a version other than 01.018, please report those two lines, or thenot applied/not foundline. - Gyro centred from the start, and a re-centre key. The learned resting offset is saved per
controller in
gyro-calibration.txtand 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.
- 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
-
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 foundin 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.jsonturns onKYTY_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
developmentfolder: use the ones frombin\x64instead.
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.