ItsAdeline / NVSmooth30
git clone https://github.com/ItsAdeline/NVSmooth30.git
—
+0
stars, 24h · #29,074
+~0
stars, 7 days · #29,549
+~0
stars, 30 days · #35,902
125
★ total
4
forks · 1 open issues
Star history (as recorded here)
LanguageC++
LicenseMIT
Created2026-09-20 (1mo ago)
Last push1mo ago
Watchers4
OwnerUser
Links
README excerpt
# NVSmooth30 NVSmooth30 is a clean-room, source-available compatibility experiment for running NVIDIA's `NvPresent64.dll` Smooth Motion path on SM86/RTX 30-series hardware. It is not NVIDIA software and contains no NVIDIA binaries or copied source code. ##Download Release## https://www.nexusmods.com/site/mods/2344 1. Extract the version.dll into the game folder with the executable (Rename the version.dll into a .asi if needed, use Ultimate ASI Loader only if using ASI). 2. Download Nvidia Profile Inspector. 3. Open up Nvidia Profile Inspector and enable Smooth motion for your game and hit "Apply Changes" (You will need to do this everytime your drivers are updated) 4. Launch your game. ## Status and safety This is an **alpha interoperability project**. It was designed against the observed behavior of one reference `NvPresent64.dll` build, SHA-256: `cd395d58f41c6e393c31a9898f2be3da83f7bc109a2228935c23e8c89b944c15` It does not hard-code that build's internal RVAs. Runtime scanners require the validated compare/capability structure used by the reference path and abort without patching when that structure is unknown. New NVIDIA versions can still change semantics, kernel formats, or presentation behavior. The CUDA step is conservative metadata retargeting, not a general SASS binary translator. It is suitable only while the shipped SM89 kernels use instructions that are valid on SM86. Unknown fatbin layouts are rejected instead of edited. Do not use this in competitive or anti-cheat-protected games. Keep a backup of every replaced file. A driver reset, game crash, corrupted frame, or black screen remains possible. ## Building Requirements: - 64-bit Windows 10 or 11; - Visual Studio 2022 with **Desktop development with C++**; - Windows 10/11 SDK; - CMake 3.24 or newer. Run: [code] The result is `build\Release\version.dll`. Copy it beside the game's main executable. Do not copy `NvPresent64.dll`; NVSmooth30 loads the installed driver copy from DriverStore. ## Configuration Set environment variables before launching the game: | Variable | Default | Purpose | |---|---:|---| | `SM86_ENABLE_OSD` | `0` | Draw the lightweight status OSD; F11 toggles it. | | `SM86_ENABLE_D3D11_BRIDGE` | `1` | Enable the experimental D3D11-to-D3D12 bridge; set to `0` to disable it. | | `SM86_FORCE_VSYNC` | `0` | Force swapchain sync interval 1. | | `SM86_DIAGNOSTICS` | `0` | Reserve verbose diagnostic behavior. | | `SM86_LOW_LATENCY` | `1` | Request maximum frame latency 1 when supported. | | `SM86_HALF_REFRESH_CAP` | `0` | Pace base frames at half the active refresh rate. | | `SM86_BASE_FPS_CAP` | `0` | Explicit base-frame cap; zero disables it. | | `SM86_BRIDGE_LINEARIZE` | `0` | Map sRGB source formats to linear for the bridge; default keeps source format. | | `SM86_NVPRESENT_PATH` | auto | Override the full path to `NvPresent64.dll`. | Example launcher: [code] Diagnostics are written to `nvsmooth30.log` beside the game executable. ## Offline driver inspection The regres