From 86d672ceead66ad31a3ee0ecef9d347f4719c1a5 Mon Sep 17 00:00:00 2001 From: chrg6 Date: Fri, 13 Nov 2026 21:32:45 -0500 Subject: [PATCH] Make the release 0.10.2, with its notes: the stability and frame-pacing pass, the translator built from the release's own sources (the see-through ground of issues #569 and #824), the AMD device-loss fixes, and the items the user approved. Co-Authored-By: Claude Opus 5.5 --- VERSION | 2 +- docs/releases/v0.10.2.md | 80 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 docs/releases/v0.10.2.md diff --git a/VERSION b/VERSION index 57121573..5eef0f10 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.10.1 +0.10.2 diff --git a/docs/releases/v0.10.2.md b/docs/releases/v0.10.2.md new file mode 100644 index 00000000..828614c9 --- /dev/null +++ b/docs/releases/v0.10.2.md @@ -0,0 +1,80 @@ +## Install or update + +- **Already have 0.6.0 or newer:** start the launcher; it offers 0.10.2, updates itself and keeps your saves and + settings. This update translates the game's code once more (for the ocarina recorder's fix) and prepares every shader + again with the fixed shader translator: a few minutes, once. +- **New install:** download **`NX2navi-Setup-0.10.2.exe`** below, put it next to your `.nup` dump of the game and start + it. Windows SmartScreen warns on the first start because the setup is not signed: choose *More info* and *Run + anyway*. The launcher checks your game files, builds the game (10 to 25 minutes, once), prepares every shader and + starts it. + +**Requirements:** as for 0.10.0: Windows 10 or 11; an x86-64 CPU with SSE4.2; 16 GB of RAM; about 30 GB free for the +game and 1.5 GB for the launcher; a GPU with Vulkan 1.3 and `VK_EXT_external_memory_host` (current NVIDIA and AMD +cards). + +## Fixed + +- **See-through ground** (issues #569 and #824). 0.10.0 and 0.10.1 shipped an older shader translator, whose shaders + could not reach the newest texture slots, so ground and walls could turn see-through after some play. 0.10.2 ships + the translator built from its own sources, prepares the shaders again with it, and no longer uses translations kept + from the old one. The release tools now refuse a translator that was not built from the release's sources. +- **AMD Radeon RX 5000 and 6000 cards losing the device** (the game ending with code 72): on AMD's driver these cards + now take the mesh shader fallback by default (`mesh_fallback = auto`), and a lost device is noticed and reported + sooner. Not yet confirmed by players with these cards: please report how it goes. +- **Crashes and hangs found in a review of the whole runtime**; none was seen in our own play, and each fix has a check + of its own: + - a crash when the game read memory the lazy write-back was just handing to the GPU (NVIDIA and Intel cards); + - a game thread reading a frame's record another thread had just freed, when two threads submitted at once; + - a race between a system event's signal and its destruction, and full event tables (vsync events after 16, host + events), each of which ended the game; + - a movie ending the game when memory for a picture ran short; + - game sessions closed while another thread still used them; + - after 15 to 66 hours in one session, textures the game writes stopping to update (the counters behind them are + now 64-bit); + - audio settings the game sends that our audio renderer did not accept ended the game; now the one effect is left + out and one line goes into the log (`audio_strict = 1` brings the old behaviour back for bug reports); + - a stuck shader translation no longer holds the game for four minutes; + - a save file could be closed while another thread was still reading it. +- **Crash reports and exits:** a second crash no longer cuts the first one's report short; a stack overflow writes a + report; an error or a lost device ends the game without running every library's shutdown, where DLSS's could crash; + HD rumble stops at every end; the end of the log is written even past its 64 MiB cap. A hang watch writes a report + to the log when no frame is shown with the window in front, or the GPU does not finish, for 20 seconds + (`hang_watch_s`, 0 turns it off). The launcher + explains code 72 (the graphics device was lost) and shows the game's error line after a restart and from the Steam + shortcut. + +## Frame pacing and RivaTuner Statistics Server + +- **RivaTuner's profile is put back** when the game closes, before the slow save of its pipelines, and no frame drawn + after that writes the game's limit into it again. After a crash or a Task Manager kill, the next start puts it back + from **`rtss-profile.txt`** next to the game, unless you changed the profile since. If you never made a RivaTuner + profile for the game yourself, delete `Profiles\ocarina.exe.cfg` in RivaTuner's folder once: earlier versions could + leave a frozen copy of the global profile there. +- **The game hands the limit to RivaTuner only once RivaTuner is seen holding it**, and takes it back while a movie + plays, while the window is minimised or no picture goes out, and for the run when RivaTuner lets frames through + faster than the limit or never shows its hold. A limit set in RivaTuner itself on top of the game's is named in the + log and in the menu's frame rate row. +- A limit change reaches RivaTuner's profile once it stays, not at every switch of low latency; `display` on a 59.94 Hz + monitor is rounded down for RivaTuner versions without fractional limits. +- **With DLSS Frame Generation, Reflex now holds the frame limit** (`reflex_limit = 1`), so the game waits once per + frame instead of twice; the game's limiter takes over during movies and when Reflex does not hold it. +- **Fewer stutters:** turning DLSS or FSR on or off, changing its mode, pausing and resizing no longer stop the + graphics card until it is idle; fewer memory freezes right after an area load; pipelines are remembered as soon as + they are first built; the shipped list of pipelines built before play grew to 10,230. + +## Fixed above 60 fps + +- **The ocarina's song recorder keeps its timing at any frame rate** (`ocarina_timing`, on by default). Above 60 fps + its clock stood still: a song taught to the scarecrow lost its pauses and the recorder's time limits never came. + Songs recorded above 60 fps in earlier versions keep their missing pauses. +- **The shake key** swings at the game's own pace at any frame rate. +- **Dynamic resolution** (`dyn_res = 1`) aims at the frame limit you set, not at 60 fps. + +## Settings + +- In `nx2navi.ini`, a comment after a value (`pace_smooth = 0 ; off`) and the words `off`, `false` and `no` now mean + what they say for on/off settings; before, such a line could turn the setting on. Paths and names keep their whole + text. +- New: `reflex_limit`, `ocarina_timing`, `audio_strict`, `hang_watch_s`, and switches that bring back the earlier + behaviour of this release's larger changes should one cause trouble: `upscaler_idle_wait`, `present_order`, + `wb_lazy_unlocked`. See `nx2navi.ini.example`.