EmuCR Feeds
Email Us

Ryu r6 (2026/10/08) is released. A self-contained DLSS 5 graphics stack on top of vanilla Ryubing: upscaling + DLAA in one NGX evaluate, in-game Neural Rendering, and DLSS-G frame generation up to 2x/3x/4x. Upstream master merges in automatically every Monday; every push builds.

KytyPS5 Changelog:
Prebuild Shader Cache from ROM. Game list right-click > Cache Management > "Prebuild Shader Cache from ROM..." reads the game's files with the selected update applied (no mods), finds NVN shader containers (BNSH, standalone or inside .bfsha, .ptcl, SARC/.arc and NSO files, and agl SHARCB archives) through zstd (including game dictionaries such as the ZsDic of Tears of the Kingdom, TOTK), SARC, Yaz0, zlib, LZ4 and HAL .cmp wrappers, translates the vertex/fragment pairs offline and appends them to the game's own shader cache. Existing entries are never modified, and the previous guest/shared files are backed up under cache/shader/prebuild/backup-* (the latest backup is kept). A manifest makes a second run for the same title, build and update a no-op unless forced, a rerun on a cache that has been played adds only programs it does not already hold, and a cache that fails validation is refused and left untouched. It needs prod.keys and the shader cache enabled for the game. Cancelling is cooperative and keeps the cache valid. Starting a game is blocked while it runs, and the menu item is disabled while a game runs. The new menu and dialog strings are localized in 20 languages.
Compiled for your GPU. On Windows with the Vulkan backend, a background helper process then runs the real shader cache loader with the configured GPU and compiles the new programs into the GPU-specific host cache, so the next launch loads them instead of compiling them. The helper runs with DLSS, frame generation and Neural Rendering off. On other platforms or backends this step is skipped and the first launch translates the programs itself.
Command line. --prebuild-shaders runs the same prebuild without the main window. Options: --prebuild-output, --prebuild-dump, --prebuild-force, --prebuild-dry-run, --prebuild-max-pairs, --prebuild-report and --prebuild-skip-host; -r selects the data directory. Exit code 0 is success, 1 failure or cancellation, 3 a failed GPU step after the programs were written.
Unsupported containers are listed. When a ROM holds container families that cannot be read yet, the result names them: Unity bundles and SerializedFiles, Trinity onepack (Oodle, used by Pokémon Scarlet/Violet) and GFLXPACK, Monolith xbc1/arh1/.wishp, Unreal Engine 4 .pak, CRI CPK and Level-5 VFS3.
Masked vertex-attribute matching is now on by default. Shader cache entries are matched on the attribute types of the vertex inputs the shader actually reads, not on all 32 slots. Unused slots do not affect the generated code, and without the mask ROM-generated programs essentially never match (earlier research: 99/99 mismatches only in slots 16-31). This applies to every game. RYUJINX_SHADER_INPUT_MASK=0 restores the full 32-slot check.
Translator query. IGpuAccessor has a new default method, QueryTextureQuerySamplerType, for the sampler type of a texture-size query. It forwards to QuerySamplerType, so generated code and CodeGenVersion are unchanged; the offline accessor overrides it to answer only that query.
Measured on Tears of the Kingdom (v1.2.1, fresh test profile, a build before SHARCB support). Prebuilding 1,381 BNSH containers gave 22,188 pairs and 44,376 programs in about 2 minutes. The first launch translated them in 6 min 40 s; later launches load them from the 1.4 GB host cache in about a minute. In one 10-minute play session without a crash, 562 prebuilt programs were hit by real draws and 163 graphics plus 32 compute programs were still compiled at runtime, so 77.5% of that session's graphics programs came from the prebuild; all 262 stages added at runtime were code that is not in the BNSH containers.
SHARCB archives and state de-duplication (validated offline only). The agl SHARCB archives add 3,953 pairs for TOTK. Of the 163 runtime graphics programs above, up to 140 now have a matching prebuilt record, a projected graphics coverage of about 96.8% that has not been replayed in game. Compiling those 3,953 programs for the GPU took 97 s with the helper peaking at about 6.5 GB (the full TOTK build peaks at about 7.3 GB); a fresh TOTK cache with SHARCB holds 52,282 programs and a host cache of about 1.46 GB. Records are now written with a canonical graphics state and de-duplicated on it, so a rerun on a played cache adds only new content (an earlier development build of this branch duplicated 26,141 records there). On Echoes of Wisdom, merged into a copy of an existing cache, 970 of 970 graphics stages of that cache were reproduced from the ROM, a rerun was a no-op, and four kinds of truncated or corrupted caches were refused with their files unchanged.
The regression harness tests/ShaderPrebuild and the notes in docs/rom-shader-prebuild.md accompany these changes; the harness is outside Ryujinx.sln and is not shipped. The research seed generator tools/TotkTextureSeed is retired in favor of the in-app prebuild.
Known limitations: compute shaders are not prebuilt (all 32 compute programs TOTK compiled in the session above exist in the ROM; this is future work). 19 TOTK programs are rejected because a vertex shader queries a texture size and no sampling instruction shows the texture type. Vulkan pipelines are still created on first use, which remains a source of stutter. Every launch loads the whole cache (about a minute for TOTK). The GPU step needs Windows, Vulkan and several GB of RAM, and it was timed only on the SHARCB increment (97 s); a first launch after a full prebuild plus the GPU step has not been measured. Only some engines are supported. A title whose update changes shader code must be prebuilt again after switching updates. The depth mode is not known before play, so a fresh prebuild writes both. The play-session figures come from a single TOTK session, and the SHARCB and de-duplication changes have not been played in game. No frame-time or stutter improvement is claimed.

Download:Ryu r6 (2026/10/08)
Source:Here

Ryu r5 (2026/09/10) is released. A self-contained DLSS 5 graphics stack on top of vanilla Ryubing: upscaling + DLAA in one NGX evaluate, in-game Neural Rendering, and DLSS-G frame generation up to 2x/3x/4x. Upstream master merges in automatically every Monday; every push builds.

KytyPS5 Changelog:
r5 - 2026-09-10
SPIR-V call arguments. The AST optimizer no longer propagates an expression into a function-call argument when targeting SPIR-V, so the argument temporaries inserted by the structured program survive. This fixes translation of shaders whose texture helper calls take non-normalized coordinates. The fix is active by default. Covered by tests/ShaderCallArguments.
Vulkan graphics pipeline libraries (research, default off). RYUJINX_VULKAN_GPL=1 requests VK_EXT_graphics_pipeline_library on NVIDIA (non-macOS) devices. Ordinary VS+FS pipelines are then built from four cached libraries and linked without LTO; any unsupported state, cap or native failure falls back to the existing monolithic path, and device creation retries without the extension if it fails. Startup provisional libraries are capped at 512 and runtime libraries at 16,384. The game renderer still uses traditional renderpasses, so startup libraries have not yet been reused by real draws; see docs/totk-gpl-integration-2026-09-06.md.
ROM shader warmup and sharing (research, default off). RYUJINX_SHADER_ROM_WARMUP=1 builds a bounded synthetic pipeline for restored graphics programs that have no stored pipeline state (RYUJINX_SHADER_ROM_WARMUP_LIMIT, default 32). RYUJINX_SHADER_ROM_MODULE_SHARE=1 shares identical SPIR-V modules between such programs, and RYUJINX_SHADER_ROM_BINARY_SHARE=1 interns identical packed host binaries during cache loading. None of these read or write the user's shader cache contents.
Pipeline diagnostics (research, default off). With RYUJINX_SHADER_CACHE_PROBE=1, shader readiness and runtime hit messages carry a process-local hostObject identity, and the Vulkan backend logs first pipeline lookups, creation API times, GPL attempts and first-use key differences. The threaded program wrapper forwards the host identity without waiting.
Configurable shader cache loading parallelism. The disk shader cache loader's translation workers and in-flight host compile limit (previously a fixed 8) are now min(logical threads − 1, 8) by default and can be overridden with RYUJINX_SHADER_COMPILE_THREADS= (1–64). The uncapped threads − 1 setting was measured on a Ryzen 9800X3D (8 cores / 16 threads): 15 threads loaded a 100,792-record cache in 8:09 against 6:51 with 8, so the cap keeps the faster value on that class of machine; smaller machines get threads − 1.
Disk cache loader worker stack. The shader cache loader's translation threads now run with a 16 MiB stack (default was 1 MiB). A ROM-seeded Echoes of Wisdom cache crashed the process with an AccessViolationException inside the recursive SPIR-V generator during load; with the larger stack the same 37,232 records load completely. With RYUJINX_SHADER_CACHE_PROBE=1 the loader also logs disk program N translating before each record so a process-level crash can be attributed.
Uniform buffer binding guard. DescriptorSetUpdater.SetUniformBuffers now logs and skips a binding beyond the descriptor arrays instead of crashing the render thread with IndexOutOfRangeException (seen once with a ROM-seeded cache on Pokémon Violet; not reproduced since).
Standalone harnesses under tests/ and research tools under tools/ accompany these changes; they are outside Ryujinx.sln and are not shipped.

Download:Ryu r5 (2026/09/10)
Source:Here

Ryu (2026/09/01) is released. A self-contained DLSS 5 graphics stack on top of vanilla Ryubing: upscaling + DLAA in one NGX evaluate, in-game Neural Rendering, and DLSS-G frame generation up to 2x/3x/4x. Upstream master merges in automatically every Monday; every push builds.

KytyPS5 Changelog:
r2 - 2026-09-01
Startup & reliability
ReadyToRun publish: cold start roughly halved (5.4s → 2.5s to the main window on the reference machine); the executable grows to ~181 MB.
A config file written by a newer build (upstream, or another fork sharing the portable dir) is no longer wiped back to defaults: all recognized settings are kept, the newer file is preserved as a .bak, and the config is rewritten at this build's version.
Auto-update
The updater now follows this fork's own CI feed: it reads latest.json from the download wall and fetches the update zip from dl.dotslash.pro (the source repo is private; nothing points at it anymore).
CI stamps real version numbers (YYYY.MDD.RUN), which also unlocks the in-app updater (locally compiled builds show 1.0.0-dirty and keep it disabled).
Fixed the download step: upstream's updater rewrites the artifact URL from .zip to .7z, which our feed does not host (404). The install step now also matches this fork's flat zip layout and preserves an existing ReShade.ini across updates.
Fixed the install step: the extracted archive handle was never disposed, so deleting the downloaded file failed and aborted the update (and the single-threaded fallback could crash the app; it now fails soft).
Stability
Streamline is now fully shut down when the graphics device is destroyed. Before this, launching a second game within one emulator session crashed natively inside the DLSS-G swapchain (the interposer still held plugin state for the dead device) — and the hard crash could poison the game's shader/PPTC caches, making that game crash on every following launch until its caches were cleared.
The config file is written atomically (temp file + rename), so a second emulator instance can no longer read a half-written config and reset it to defaults.
UI
Status bar: new NR indicator mirroring the live Neural Rendering state, and a floating "NR ON/OFF" notification on every toggle. Ground truth comes from tailing ReShade.log (the RenoDX addon logs every toggle), so changes made from the ReShade overlay are caught too, not just F6.
ReShade OSD notifications (screenshot saved, preset transition) are disabled in the bundled ReShade.ini.
The bundled ReShade64.dll is now built from the official v6.8.0 source (BSD-3) with one change: the startup banner is removed (it is hard-coded upstream with no configuration switch). The build recipe: clone crosire/reshade at v6.8.0, set every _show_splash assignment/default to false, build Release|64-bit.
Packaging
The bundle README ships inside the zip again.
Fixed after investigation
Per-game configuration overrides now really control the DLSS pipeline: the native machinery (NR stage, Streamline, the swapchain proxy) is armed through environment variables, which were previously set once at startup from the global config. They are now re-applied on every game launch from the resolved (global + per-game) config, so a per-game "DLSS off" disarms everything, not just the render path.
Not-a-DLSS-bug, documented for posterity: Xenoblade Chronicles DE crashes at boot (null read in its font-tag loading) when the system language is set to the legacy Chinese value — a leftover from very old configs. SimplifiedChinese / TraditionalChinese work fine. The emulator does not translate the legacy value; pick one of the modern ones in system settings if your config predates them.

Download:Ryu (2026/09/01)
Source:Here