Changes since build 177Built from nx2 9fbffe2 plus 11 pull requests that merged into nx2 after it (the test/all-in-one-3 branch at be1f4d9). Build 177 was 87d84d5. That's 152 merged changes, 69 of them from community contributors.The first launch of each game after updating takes longer. A lot of shader code changed in this release, so caches are partly rebuilt once: the compute precache runs its pass once more (#1620), pipelines that an older cache saved with the wrong texture type are rebuilt (#1443), NVIDIA on Linux fills a new, larger driver cache folder (#1301), and the LSFG shader cache rebuilds (#1625). Later launches should be fast again. If a second launch of the same build still rebuilds most shaders, send the log from Help → Report a Bug (Ctrl+F12): we're looking into reports of this.Big fixesOcarina of Time: the full-screen white flashing from build 177 is gone. Build 177's groundwork for higher frame rates in Mario Kart World let shaders read stale data with Skip CPU Inner Invalidation on, and the screen flashed white. Players traced it to that change on an RX 6900 XT, and it showed up on an RTX 3090 too. The change is reverted; it gained Mario Kart World only about 0.5-1.2 fps (#1651).Ocarina of Time no longer freezes for good after an ocarina warp. Warping to a place you'd visited (Temple of Time, Desert Colossus) froze picture and sound within a minute or two, and a forced stop then showed error 2010-0212. A game thread, the GPU thread and its second half were waiting on each other's locks. GPU memory updates are now handed off after the locks are released. On the author's RX 7900 GRE (RADV) it froze almost every time before; afterwards, warp loops and a long session ran without one. From Nanoc6 (#1218).Mario Kart World: steady resolution and a higher frame rate. The game sizes its dynamic resolution from GPU timestamps, and in the form Lichii reported them the GPU looked almost out of time, so the resolution flipped every few frames and render targets were rebuilt over and over. Mario Kart World gets real GPU ticks again; other games are unchanged. On Mario Bros. Circuit with an RDNA 2 GPU on RADV it went from 18.6 to 22.1 fps, and image creations dropped from about 40 to about 1.3 per frame. Ported from Rhys Denno's upstream Eglantine change (#1817).Donkey Kong Bananza no longer crashes on AMD right after the golden-banana loading screen. The game's voxel-world pipeline uses a geometry shader feature AMD doesn't have, and Lichii's emulated version declared inputs it can't pass and more outputs than AMD's limit of 128. AMD's Windows driver doesn't report that; it kills the process, so the log just stopped. The emulated shader now passes only what the previous stage writes. On an RX 6700 XT the unpatched build crashed every time. From sopedound (#1110).AMD on Linux: no more GPU hang on RDNA 3 and RDNA 4 with Mesa older than 26.2.5. A RADV bug kept stale state when binding a mesh shader that doesn't read its grid size, and none of Lichii's native mesh shaders read it, so the GPU hung a few seconds into Ocarina of Time's intro. On those drivers mesh shaders now read the grid size once, which avoids the bug, and native mesh shaders stay on. On an RX 9070 XT with RADV 26.2.4 it hung 2 out of 2 times before and not at all after. From Molier (#1203).Ocarina of Time on RX 6000 cards (Linux): no more GPU crash on mesh draws. RDNA 2 cards on RADV lost the device with a GPU read fault at a fixed address, on several players' RX 6600, 6650 XT and 6950 XT machines, always on native mesh draws. RDNA 2 on RADV now uses the slower but safer compute fallback for mesh draws. The root cause isn't known yet; RDNA 3 and newer, AMD's Windows driver and other GPUs are unchanged (#1732). That fallback also draws grass and bush shadows again: it only drew triangles, so the point program that fills the foliage shadow map was dropped on every GPU that takes it. From nemiward (#863).Ocarina of Time: a likely fix for the GPU hang on NVIDIA. Two compute shaders could hang NVIDIA GPUs a few minutes into play. The way they pick the buffer behind each memory access was the one unusual thing in them. First every branch was merged into a single return (#1681), which still hung after about 390 s on an RTX 5090; now, on NVIDIA's driver only, the shaders pick the buffer with one select instead of a branch per buffer. rtrevisanuto found and tested that approach: a 529 s run had no hang, with falling leaves and particles drawn right. It was tested on Linux, so players still need to confirm it on Windows (#1757).Ocarina of Time on Intel Linux (Mesa): no more black screen after the intro movie. One compute shader never finished compiling, because each memory access checked all 32 buffers the shader binds and the compiler spilled without end. Each access now checks only the buffers its address can come from, and the shader builds in about 9 s. The reporter confirmed the compile hang is gone (#1807).AMD on Windows: boots no longer rebuild thousands of pipelines. AMD's own driver cache doesn't keep the kind of pipelines Lichii builds, so every boot rebuilt about 5,800 of them at about 120 ms each. Lichii's own pipeline binary store now stays on for AMD's Windows driver: on an RX 6650 XT the time to the graphics device went from 867-876 s to 17-30 s from the second boot on. From Reiixan (#1406). Closing a game no longer trims that store hard enough to drop a third of a precache's pipelines: the boot after a precache went from about 14 minutes of rebuilding to a first frame in about 30 s. From Reiixan (#1407). And Loading Shaders now waits only for compute pipelines and the last two sessions' pipelines, and builds older ones in the background, so a returning player no longer waits for every pipeline of the last 16 sessions; "Build all cached shaders" still builds everything first (#1803).Yoshi and the Mysterious Book: the book page no longer slows to 2 fps and crashes. On the Chapter 1 book page one GPU buffer kept swallowing its neighbours, grew past 3.5 GiB and was copied whole each time, until memory ran out. Large buffers that only share a page with a new one are no longer joined to it. On an RTX 5070 Ti the page went from 2-12 fps and 21 GB of memory to 57-61 fps at 6.6-7.8 GB. From JohnsGoated (#1534).Donkey Kong Bananza: a likely fix for the random freeze. Presenting a frame could block while holding a lock the rest of the GPU syncing needed, and the picture stopped. Those actions now run with the lock released. It isn't confirmed in the game yet. Ported from MythosOfs's banachii fix, which adapts Andrew's Eglantine change (#1700).Mario Kart World on Intel: no more GPU crash while loading on Linux. Two of the game's loading shaders run a barrier that part of the workgroup never reaches. NVIDIA lets that through, but on Intel's Linux driver the rest of the workgroup waited forever and the device was lost about 40 s into loading. Lichii now finds the barriers only part of the workgroup reaches and loosens only those, so the barriers the game's lighting needs stay (#1677). On Intel's Windows driver, barriers are now kept whenever the whole group takes the same path, a likely fix for the washed-out, overexposed picture there. Neither is tested on Intel hardware yet (#1742).Ocarina of Time: no more green and red speckles on RTX 20 cards. With Ocarina of Time anti-aliasing set to Game, Turing GPUs (RTX 2060 to 2080 Ti) showed speckles because NVIDIA's compiler miscompiles the cooperative-matrix path on Turing, which NVIDIA has confirmed. Turing now runs those operations in shader emulation, which on an RTX 2070 removed the speckles at about the same fps. RTX 30, 40 and 50 keep the faster path. From Maximel3105's patch and A/B test, with pamontoya-coder's bisect (#1694).Kirby Air Riders: no more GPU thread crash a few minutes in. Textures with no memory behind them get placeholder addresses past the end of device memory, and a memory hint read far out of bounds at those addresses. Such hints are now ignored. On a Steam Deck, the route that crashed about four minutes into the first lesson ran into a race for over twelve minutes. From cerroverb (#1568). A crash while translating one of its shaders is fixed too: an analysis walked deep loops recursively and ran out of stack. From kdegonia-star (#1616).Closing a game during "Loading Shaders" no longer freezes Lichii. The close stopped the shader load, but the guest cores still started, and the services starting on them deadlocked with the services being shut down. That's fixed, along with what it left behind, so launching a game again in the same window boots normally. From PantACRO4life (#1417).New featuresMario Kart World: 60 FPS mode at normal game speed. A new "Mario Kart World: 60 FPS mode" setting, off by default, runs races at 60 fps instead of only cutscenes, one 1/60 s step per frame, so the game never runs fast. "Drop to 30 FPS when slow", on by default with it, switches to the game's 30 fps mode at normal speed after three slow frames in a row and tries 60 again later, so a slower PC gets 30 fps instead of slow motion. On an RTX 4070 Laptop GPU, races ran at 96-100% of normal speed with the fallback on. It applies after restarting the game. From thatrandomalt (#1704).Report a Bug. Help → Report a Bug, or Ctrl+F12 (rebindable), writes one zip under 19 MiB with your description, logs, system and GPU details, settings, mods, the last 10 s of frame times, a screenshot and the next frame with its shaders. User names are removed, but the zip holds the game's textures and shaders, so send it privately to the maintainers and never in a public channel (#1647).Solid NSZ files play. Their sections are unpacked through a small temporary file, and a failure is logged with the file's name. Ported from n0ctbyte (#1734). Idle solid NSZ files give their decoder memory back, so a base game with several updates no longer fails to open (#1737), and the game list opens a file's parts only when needed: two solid NSZ games with 2 GiB programs went from about 44 s and 8.5 GB of temp files to under 2 s to scan (#1784).Custom artwork and names for every game format, without rewriting the game. Changing a game's icon or name used to rewrite the whole NUP file, about 25 GB for Ocarina of Time, and froze the window. Both are now stored per program ID in the data folder and can be changed while a game runs. From PantACRO4life (#1401).Game artwork from SteamGridDB, with your own API key. Off by default. With a key in Configure → UI, games with no icon get artwork, saved as their custom artwork. Ported from PantACRO4life (#1717).Trigger rumble on controllers with trigger motors. A new Trigger rumble option in Controls → Vibration (off by default, strength 1-100%) plays the light-motor part of each side's rumble on that trigger. On Windows it needs Controls → Advanced → "Enable XInput 8 player support". Tested on an Xbox Wireless Controller over Bluetooth. From samaBR85 (#1583).PerformanceHigh GPU accuracy keeps the faster split GPU thread. High is the desktop default, and it turned the GPU thread split off. The split now runs at every accuracy level and keeps the safety checks High adds. danieljesus measured Ocarina of Time on a Steam Deck at High: 16.61 to 18.57 fps standing and 13.32 to 15.01 fps panning. Built on danieljesus's tests, compared against sof006's split-at-High branch (#1808).Linux AMD (RADV): Mesa keeps its own shader cache. Lichii no longer keeps a second pipeline cache on top of Mesa's, as it already did on NVIDIA and AMD's own driver. The original PR measured Ocarina of Time's Castle Town going from 34 to 51 fps. Setting MESA_SHADER_CACHE_DISABLE brings the old behaviour back. Ported from jschert's port of upstream Eglantine PR 714 (#1653).Integrated GPUs and Steam Deck: the texture cache no longer gets stuck clearing itself. It compared all of Lichii's GPU memory, not just textures, against a limit meant for textures, so it stayed in its most aggressive mode and kept deleting and re-creating thousands of images. Now only textures count. On a Steam Deck OLED in Kokiri Forest, panning went from 11.62 to 14.74 fps and peak GPU memory from 2.3-2.9 GB to about 1.7-1.8 GB. From janvitos (#823).Older AMD cards on Linux: no full image decompress after every copy. On RADV with Polaris and Vega GPUs, every copy into or out of an image made the driver decompress the whole image, which cost Ocarina of Time about 40 ms a frame on an RX 580. Colour images are now created uncompressed on those GPUs. On its own this took Kokiri Forest from 9.5 to 13.8 fps on an RX 580. From blackxzin (#950).Windows: fewer stutters after zone changes. Thousands of memory protection changes a second waited on one lock while the game remapped memory in bulk, so the GPU thread stalled after every zone change. They now try without the lock first. In Ocarina of Time on an RX 6650 XT, frames over 100 ms went from 37 to 10 on the same route, and the worst 10 s window from 25 to 35 fps. From Reiixan (#1780).Faster with High GPU accuracy or a single GPU thread. Draw-state reuse now also works when the GPU runs on one thread. In Donkey Kong Bananza at High it went from 39.10 to 42.33 fps, measured with some of the author's other changes in both runs. From DuskDarf1 (#1641).Ocarina of Time: fewer waits when the game reads GPU results back. The game reads about 220 GPU-written pages every 5 to 40 frames, more than the early-download limits allowed, so most reads waited behind the GPU's queued work. The limits are raised. jpkto measured Castle Town's heavy route going from 19.10 to 17.75 ms per frame, with p99 from 31.7 to 28.2 ms. Ported from jpkto (#1795).Ocarina of Time: no more 2-3 second freezes when a compute shader rebuilds. When a compute program had to be translated again mid-game (Hyrule Field grass culling), every GPU channel waited for the driver to compile it; the three worst freezes of a 66-minute session were these rebuilds. The rebuild now compiles on a worker while the old version keeps running. From VirusEx (#995).Guest writes skip the texture cache lock on pages that never held a texture. In The Duskbloods on a Steam Deck, standing still in the City Streets went from 119-125 to 134-142 frames per 10 s. From cerroverb (#1789).Faster software matrix maths on GPUs without matrix cores. The results are rounded to half precision with one native conversion: on a Steam Deck in The Duskbloods those passes went from 21.1 to 14.7 ms of GPU time per frame, with the same picture. From cerroverb (#1283).Smaller cuts: waiting for a frame's GPU fence no longer blocks a guest CPU core, from DuskDarf1 (#1639); GPU memory range lookups for large bindings use data kept at map time, ported from Kurebayashi (#1820); Ocarina of Time's new pipelines translate on the shader workers instead of the GPU thread, from PantACRO4life, found by zmckenney (#1155); and on Linux the JIT skips perf-map work when you aren't profiling, from ne1i (#1265).Ocarina of TimeFPS Unlock fixes:Sound and music no longer cut out above 60 fps. The sound engine got less than a full step per update, so some sounds were never released and piled up until sound stopped; above 60 fps the sound manager now runs at 60 Hz. Ported from auz466 (#1660).Above 100 fps, moving platforms such as the Deku Tree raft no longer slide away under Link, and above 60 fps Gohma no longer turns more and more slowly. Ported from atk3001 (#1679).Movie cutscenes stay in sync at 30 or 120 fps. They timed voices and overlays by counting frames, so the sages' lines played over each other; the count now follows the real frame step. The approach follows NotRexed's Hookshot (#1743).The Scarecrow's Song plays past its first note: recording rounded each note's length down to nothing (#1745).Water ripples keep moving with FPS Unlock and Dynamic FPS, from auz466 (#1180).Four more counters keep real speed above 60 fps: the pickup count-up and ocarina playback no longer stall, and the step rate countdown and ambient waves no longer run fast. Ported from atk3001 (#1663).Clothes and hair sway at normal speed above 60 fps, instead of about twice as fast at 120 fps. From atk3001 (#1793).Two compute programs that blacked out the world now run. Lichii didn't know four instructions write a single register and rejected the programs, which left the world black on an RX 6700 XT. From kafasam (#1008).Steam Deck and small AMD cards: far less memory for some textures. AMD GPUs kept ASTC textures with uneven mip sizes uncompressed, at 4-16x the size: on a Steam Deck that took about 1.9 GB for 113 MB of game data, and the system killed the emulator while walking out of Link's house. Integrated GPUs and cards with less than 6 GiB of VRAM now keep them compressed. From danieljesus (#948).A huge texture array no longer fails over and over when video memory is full. Decoding one 90-layer ASTC texture needed an 890 MiB image in one piece; on a nearly full card that failed and was retried until the emulator exited. It's now decoded a few layers at a time when it doesn't fit. From marcochiusso-lgtm (#1083). Integrated GPUs use batches of about 230 MiB for it (#1823).No ripple band along the right and bottom edges with Ocarina FSR on AMD's driver. AMD's driver cuts the viewport to whole pixels, so FSR's camera jitter dropped the last column and row on half the frames and the water refraction spread that edge inward (#1744).No sharpening works on version 1.0.0. It left the HUD over a black scene because the base game's output shaders were rejected; they're now matched, also with dynamic resolution. From simonMettler2000 (#1137, #1778).Two rejected mesh shaders now run, so their draws are no longer skipped. From snoozedDev (#1181).Other gamesPokémon Legends Z-A: the picture no longer goes flat after the train station. The tonemap shader was first built while its texture slot was empty, an empty slot was compiled as a 1D texture, and that wrong type was saved in the shader cache. Empty slots now compile as 2D textures and the affected cached pipelines are rebuilt once, so you don't need to delete your cache. From JohnsGoated (#1443).Orbitals has sound on 5.1 and 7.1 audio devices. On a device with six channels the game asks for 5.1 output, which Lichii refused, so it stayed silent. Lichii now plays 5.1, downmixed for stereo devices. ghzeni's test with a 7.1 headset went from no sound to normal sound. Ported from ghzeni (#1676).New Super Mario Bros. U Deluxe: no black screen at Start without Mii system data. Lichii's stand-in files were empty headers and the game crashed reading them. They're now valid blank parts, so the game plays; Mii faces stay blank. From DuskDarf1, ported from ScarletNX (#1695).Pokémon Pokopia and Yoshi and the Mysterious Book should hold 60 fps instead of 58.7. Lichii's timer thread sleeps through the OS, which wakes it about 0.4 ms late on Windows, and the games' timers carried that delay into every frame. Just before a game timer is due, the thread now waits the last stretch in hardware. It isn't measured on hardware yet (#1733).Star Fox: no more brief audio dropouts, from myshadowww (#1298); text no longer goes missing with native async draws set to Bounded or Skip, from myshadowww, porting upstream Eglantine PR 785 (#1296); no black rectangles in the docked opening cutscene, ported from myshadowww (#1684); and the GameChat camera and chat services answer at boot, ported from Takoroka's upstream work with layouts from MythosOfs (#1750).The Duskbloods: no black and purple blocks in the bloom, ported from kurebeyashi-noah (#1714), and the game keeps its own DLSS upscale instead of dropping it minutes into play, ported from kurebeyashi-noah (#1689).Hyrule Warriors: Age of Imprisonment: movies no longer drop frames. The game paces its own movie frames, so Lichii now drops frames only for games that don't. Upstream measured 843 dropped frames to 0 on the title movie. Ported from Rhys Denno's upstream Eglantine change (#1818).Shader cache and loadingLinux NVIDIA: the driver's shader cache no longer fills up. The driver's disk cache is capped at 1 GiB, so a large Ocarina of Time cache (about 20,000 pipelines) spilled over and every boot compiled the rest again. Lichii now gives the driver its own cache folder with a 10 GiB limit, unless you set those variables yourself. On an RTX 3050 Laptop the shader load went from 541 s plus 106 s of compute precache to 39 s from the second boot on. From espaker (#1301).Cached pipelines the boot skips are built in the background, newest first. The background prebuild stopped at a memory cap and went oldest first, so on large Ocarina of Time caches 10,800 to 31,500 pipelines were left to build during play. Now every skipped pipeline goes to the prebuild, read back from the cache file instead of held in RAM. Built on Frizti's Fritchii work (#1619).Pipelines a game needs right now no longer wait behind the boot prebuild (#1621).The compute shader precache reruns only when it has to. It now goes by the file's contents, the shader generator and the settings baked into it, so an update that changes the shaders reruns it once on the loading screen, and an unchanged file isn't redone (Reiixan measured 508 s for 2,948 programs). Ported from Reiixan and PantACRO4life (#1620).Upgrading an old shader cache no longer eats huge amounts of RAM: a legacy Vulkan cache is converted in pieces instead of held three times over. Ported from puppywang (#1654).Graphics and GPU driversCards out of video memory free textures instead of spilling them to system RAM. The texture cache now forces up to four clean-ups and then keeps a margin free. The author's RTX 4050 Laptop had spilled 290-420 MiB for minutes in Castle Town, dropping from 50-57 to 20-26 fps. Ported from Reiixan (#1686).No more shiny, wrong-coloured textures for a few seconds on GPUs without native ASTC. The temporary buffer of an ASTC conversion could be handed to the next texture too early, so two textures' data mixed. Seen on an RX 6650 XT in Hyrule Field, and gone on the same route after the fix. From Reiixan (#1796).Shaders that use matrix cores no longer race on shared memory on RTX 30, 40 and 50 and RDNA 3 and 4 (#1698).Intel on Windows: the driver cache save at the end of loading, which can crash Intel's driver while background builds run, is skipped; the cache is still written when the game stops. From GoatTech-42 (#1685).Snapdragon (Adreno): no 8x8 holes where the sky shows through in Ocarina of Time. Ported from Terobyte (#1682).The texture cache clean-up no longer ends a pass with nothing deleted when the oldest images can't be evicted. From moonzzeyy (#1731).GPU command lists aren't read stale after DMA copies and clears (#1736).Upscaling and frame generationLSFG frame generation runs on AMD and Intel GPUs on Windows. It needed 16-bit floats, which Lichii turns off on those drivers, so AMD sessions reported "unsupported GPU". Lichii now loads the 32-bit LSFG shaders from Lossless.dll when 16-bit floats aren't available. It needs a Lossless.dll that carries them (the 3.2.2 one, about 7 MB); the one Lossless Scaling ships today doesn't. Restores the path from Eden (#1625).DLSS super resolution works without the NVIDIA app. The NVIDIA DLSS panel downloaded only two of the four files DLSS needs, so DLSS fell back to FSR 3.1 while the panel showed a green check. It now installs the missing plugins and only shows ready when everything is there. Found by marcochiusso-lgtm (#1753).Ocarina of Time: no black squares around far birds and particles with DLSS. NaN and out-of-range pixels in the colour sent to DLSS spread into black blocks; they're now zeroed and clamped, which removed the squares on an RTX 5080. From darknagel's patch (#1672).Ocarina of Time: FSR 4 and DLSS no longer drop out when you turn the camera in the Water Temple. From njmdietrich (#1659).Frame generation no longer drops into slow motion at high refresh rates. With FSR3 4x at 240 Hz, Ocarina of Time fell to 11-17 fps after the menu, because each generated frame's wait was added on top of the wait for the screen. The spacing now counts from each frame's deadline (#1779).FSR 3.1 updated to 3.1.6. With sharpening on, it can no longer push pixels negative, which should mean fewer black specks and dark halos next to bright edges (#1624).Crashes and stabilityA stop that gets stuck no longer freezes Lichii. When a game's teardown stopped making progress, Lichii killed the emulation thread, which could leave a lock held: 2 of 3 Ocarina of Time closes froze in testing. It now saves play time and settings and exits. Settings and play time are written to a new file first, so a crash mid-save keeps the old ones, and one more kind of Windows crash leaves a log line and a crash dump. Ported from pabCMX (#1728).No crash when a render target gets no GPU memory. On a ROG Ally with a 512 MB graphics memory carve-out, the driver crashed on the empty attachment it was handed. The draw now runs without that target (#1766).A GPU reset the Linux driver recovers from silently no longer hangs Lichii. Occlusion query reads waited up to 20 s each, for minutes. Lichii now reports a device loss after 1 s, with the driver's fault address in the log (#1809).Crashes inside JIT code say what happened. A fault that wasn't a fast memory access ended in "FastmemCallback: unreachable"; the log and crash dump now carry the real fault and the code bytes around it (#1751).Logs keep their last lines after a hang or kill: the log is flushed once a second (#1771).Guest memory spans are checked page by page, so a span can't point into the wrong host memory after a partial remap. Ported from k1r4ct's Eden change (#1783).Two places that could submit GPU work in the middle of a draw no longer do (#1812); no crash when a game moves a missing file to another folder, ported from Marssvoodoo (#1658); Install keys no longer crashes when you pick keys already in the keys folder, from danieljesus (#891); worker threads finish cleaning up a task before they report it done, from jfhutchi, a port of Marssvoodoo's fix (#1105).Audio and inputGameCube controllers rumble in HD rumble games. On a GameCube adapter the faint, short HD rumble turned into pulses the motor can't spin up on; the motor now runs fully for any rumble above a small cut-off. From davidgith1 (#543).Motion controls stop when the controller stops. After a swing, the orientation kept turning for 1-4 seconds and then snapped still. In a replay of recorded motion it now turned 8° at rest instead of 1,544°. From Lancito01 (#1396).Linux: a warning when a controller connects but sends no input and its HID device can't be opened, with a udev rule to try (#1747).Smaller fixesLinux: a 16 GB Steam Deck no longer gets the low-RAM warning on every boot, from danieljesus (#1506); on Wayland the picture follows the window to another screen, from goof787lord (#1615); fast guest memory turns on on ARM Linux (#1669); the Nix shell is pinned to nixpkgs 26.05 and loads every Mesa Vulkan driver, from zibiax (#1250); builds against newer cpp-httplib, from bclaud (#1610).Windows: the loading screen no longer freezes in borderless fullscreen, from BrunoSilvestre00 (#1558); the programs carry version resources and the updater isn't built with the PGO profile, which lowers the risk of antivirus false positives (#1617); the MSVC build compiles again, from sanchodecuba11-del (#1596).macOS: the network interface list is filled, from krim404 (#617); MoltenVK's portability subset is turned on as Vulkan requires, from krim404 (#1368); buffer reads near a buffer's end stay in bounds on MoltenVK, from krim404, taken from dylkw's Macchii (#1375); screenshots reuse one capture frame, from krim404 (#1374); the build compiles again after warnings from the GPU trace code, one from auz466 (#1701, #1702).Settings and UI: importing an old profile folder that is a link to another drive works again, from PantACRO4life (#1393); the Configure dialog fits the Controls page, from PantACRO4life (#1394); each Lichii Dark status bar chip has its own colour, from PantACRO4life (#1395); loose dump games show their size, from BrunoSilvestre00 (#1408); "Limit Speed Percent" stays as you set it after a game closes, ported from BrunoSilvestre00 (#1687); F2 opens Load/Remove Amiibo again, ported from Velken (#1716); game titles in the grid wrap to the cover's width, ported from inxomnyaa (#1718); saved room bans are no longer erased at startup, from goof787lord (#1788); About shows the commit a build was made from, from StiensWout (#1603).Game files: short reads from game files and failed install copies are reported as errors, and an incomplete install is removed, from n0ctbyte (#1674); system services no longer hand games leftover bytes they didn't fill (#1802).Security: the bundled certificate list drops eMudhra's emSign roots, from ctborg (#1498).Android (Lichii ships no Android build): the Ocarina of Time anti-aliasing option shows in settings, ported from marinsalinas (#1720).CodebaseGPU traces: a trace format with headless replay (eden-cli --replay, any Vulkan device, lavapipe included) (#1648), a recorder in the debug server and EDEN_NX2_GPU_TRACE (#1655), and replay checks with a lavapipe CI step (#1656).An offline AMD (RADV) shader compiler that builds Lichii's shaders for six RDNA 2-4 chips and checks the SPIR-V for driver differences (#1650).Diagnostics, all off unless their variable is set: EDEN_NX2_TC_TRACE for texture cache image life, from liomaroliveira (#1130); EDEN_NX2_VULKAN_CACHE_FLUSH, ported from Gunzmo (#1712); GPU frame time by source line, ported from josh-wirick (#1723); JIT blocks named by guest address in the Windows sampler, ported from Xiphias1337 (#1724), which no longer crashes on a bad stack walk, ported from hellasleeper108 (#1722); emulated mesh pipeline waits in the stutter trace, ported from myshadowww (#1721); debug server input for Switch 1 games, from DuskDarf1 (#1696); warm-cache tools, ported from PantACRO4life (#1713).Default logs say what still builds on the GPU thread mid-game and why (#1626), and the startup log names the Qt platform and Wayland or XWayland, from goof787lord (#1268).Fixes: SPIR-V dumps are no longer spliced together, from myshadowww (#1052); the verify tools give no false mismatches, from 6c696e6b (#1081); PGO training builds load Ocarina of Time again, from liomaroliveira (#1204); tests link with OpenGL off, ported from jschert (#1715); an nx2 build break is fixed (#1668); the sockets service answers numeric IPv4 name lookups, ported from n0ctbyte (#1666).CI and repository: one GitHub bug report form that asks for the log, GPU driver and a video (#1644); CircleCI build checks were added and then turned off again (#1652, #1669, #1705, #1735); the AMD notes mark the FP16 switch as closed (#1726).Known issuesLinux: the packages still bundle the Vulkan loader (libvulkan.so.1), which can cause Vulkan start-up problems. Affected: linux-x86_64, linux-x86_64-pgo and linux-aarch64-pgo. The workaround is to delete it so the system loader is used: for the tar.gz, delete usr/lib/libvulkan.so.1 from the extracted lichii/ folder; for the AppImage, run it with --appimage-extract, delete squashfs-root/usr/lib/libvulkan.so.1 and start squashfs-root/AppRun. A packaging fix is coming (issue #1767).The first shader load after updating is slow, because many shader changes landed in this build (see the note at the top).Intel Arc on Windows: pipeline builds are slow. Being worked on.Ocarina of Time: purple speckles reported on some AMD GPUs.Donkey Kong Bananza: black stripes on distant landscape on some AMD Linux setups.Fire Emblem: Fortune's Weave: crashes on Linux with RDNA 3 GPUs (RADV).Splatoon Raiders: black flickering at the development stations and in hideout cutscenes since build 130.Mario Tennis Fever: characters and the court are missing on some setups.Ocarina of Time on RX 6000 cards (Linux): #1732 avoids the GPU crash, but a separate freeze is still reported.DownloadsBuilt from test/all-in-one-3 at be1f4d9: nx2 9fbffe2 plus 11 fixes that have since been merged into nx2 as well.LinuxLinux packages come as an AppImage and a tar.gz. Both are self-contained and need glibc 2.39 or newer (Ubuntu 24.04, Fedora 40, Debian 13, Arch). The tar.gz holds the same files unpacked, for systems without FUSE: extract it and run lichii/lichii.Build TypeStandardPGO (Recommended)Notesamd64AppImage · tar.gzAppImage · tar.gzMake the AppImage executable (chmod +x) and run itARM (aarch64)AppImage · tar.gzAppImage · tar.gzWindowsWindows packages are in-place zip files: extract and run lichii.exe, or eden-cli.exe from a terminal.Build TypeStandardPGO (Recommended)Notesamd64 / x86_64zipPGO zipBoth built with clang-cl and ThinLTO; the PGO zip adds a profile trained on Ocarina of TimemacOSBuild TypeStandardPGO (Recommended)Notesarm64 (Apple Silicon)zipmacOS 15 or newer. Not notarized: right-click and choose Open the first time, or run xattr -dr com.apple.quarantine lichii.app. eden-cli is inside the app, in Contents/MacOSThe PGO builds are the same programs compiled with profile-guided optimization. Linux uses clang with Eglantine's profile; Windows uses clang-cl and ThinLTO with a profile trained in Lichii on Ocarina of Time, so other games gain less. Prefer them when your CPU supports it.