github NotRexed/Hookshot v2.1.0

42 minutes ago

⬇ Download for Windows

⬇ Download for Linux / Steam Deck


What's Changed

  • Prevent Castle Town guard-house crashes with a larger render-target pool by @nathanaelries in #1202
  • build: refuse a back end that would not load, and name the symbol by @notquiteog in #1200
  • fix: preserve NUP member names during implicit reads by @klimovich008 in #1185
  • Document AMD courtyard shadow and sky-block workaround by @nathanaelries in #1225
  • Document how to start a new game with the keyboard by @bronze-ff in #1222
  • fix(builder): stop when generated source cleanup fails by @monsterlag in #1218
  • perf(fpx): keep the hardware result for FMUL/FMLA S when the flags are already set by @klimovich008 in #917
  • Motion controls: gyro aiming from SDL pads, with sensitivity and inverts by @wyatt-poole in #1114
  • Mix for 5.1 when the default output has 5.1 speakers by @janvitos in #1182
  • vk: read a pipeline cache over 2 GB on Windows by @jarynclouatre in #1226
  • Run a waited-for pipeline build at once when it is still queued by @duck-paradise in #1129
  • fix(vk): no mirror is made inside a parallel replay's segment by @t0masz407 in #1184
  • Preserve descriptor-array indices across compatible handle Phis by @klimovich008 in #1038
  • fix(vulkan): preserve guest mip levels in partial clears by @Trycky64 in #1084
  • Contain pipeline cache save allocation failures by @monsterlag in #1046
  • Report finished audio buffers at the renderer update, so a speaker no longer goes silent by @janvitos in #1181
  • fix(vulkan): release modules from rejected cache records by @Trycky64 in #1082
  • fix(vk): Linux/Wayland: take an sRGB surface format for the swapchain (#679 rebased) by @metroid98 in #1086
  • Builder: the ready page names both places when the build files are in a folder the player chose (rest of #623) by @amaralthalesalves in #1079
  • NVIDIA DLSS, DLAA and Reflex (NGX + Vulkan, Linux and Windows, opt-in) by @hckrman101 in #841
  • Show the middle 16:9 in the save picture on ultrawide by @janvitos in #1183
  • perf(lift): one page mark per straight-line group of stores through a base register by @klimovich008 in #912
  • fix(vk): Sharpness samples one picture pixel apart, RCAS-style, the same at any window size by @hckrman101 in #1256
  • perf(vk): prepare the seed's compute programs first by @hckrman101 in #1277
  • HD rumble on Switch Pro Controllers and Joy-Cons, through SDL's effect call by @hckrman101 in #1213
  • perf: stream sampled profiles instead of loading every line by @JooaoPedro15 in #1094
  • vk: inline the global-load helper in task and mesh stages (the floating trees, #994) by @blushOFF in #1334
  • Add a controller-accessible Quit option to the Gameplay menu by @bronze-ff in #1255
  • Audio output in the Insert menu: Auto, Stereo or 5.1 by @janvitos in #1240
  • feat: Monitor's shape for screens narrower than 16:9 (4:3, 16:10, 5:4) by @nesrodzair in #1224
  • menu: a Restart row in Gameplay, beside Quit by @bronze-ff in #1266
  • fix(vulkan): bind only bytes accessed by buffer-image copies by @Trycky64 in #1083
  • Clean up rejected mesh argument buffer initialization by @monsterlag in #1107
  • feat(vk): frame generation Auto: a frame for each of the display's refreshes by @t0masz407 in #1121
  • feat(vk): time a capture's GPU wait for its late pages apart in the log by @Nitnek in #1243
  • Vulkan: pool imports take the game pools across a chunk's end whole, and commit their pages in one call by @jordanella in #1267
  • fix(linux): the AppImage's parts list names the repository it is built in by @notquiteog in #1312
  • perf(lift): the interrupt poll before each backward goto, calling a64_poll_cur() with no argument, so a loop's guest registers stay in host registers by @SadTransGirl in #1351
  • vk: land #792's four mesh fallback fixes (the fallback's compute pipelines crashed NVIDIA's Pascal driver) by @CiLiBi18 in #1314
  • fix(builder): copies from a read-only install stay writable by @t0masz407 in #1104
  • Vulkan: the synchronous replay on the reserved core while it replays, and that core the fastest kind (follow-up to #1034) by @jordanella in #1158
  • fix(builder): explain unavailable selected game input by @monsterlag in #1247
  • fix: ignore half-float NaNs when locating flashes by @JooaoPedro15 in #1274
  • Linux: the OoT debug tools (cheats, teleport, flight, free view) by @Joey-Magnus in #1292
  • Raise the Motion sensitivity X limit to 600% by @nicholasgower in #1302
  • Builder: stand in for the damaged textures of a 23.3 GB dump (Water Temple walls, #1002) by @Joey-Magnus in #1308
  • docs: mods that make files bigger need the resource size table grown by @Joey-Magnus in #1325
  • Keep Linux update extraction from writing through symlinks by @bronze-ff in #1327
  • Report Windows display startup failures by @bronze-ff in #1333
  • Reject symlinked Linux update staging folders by @monsterlag in #1343
  • fix(sdl): keep the mouse captured when the pointer leaves the window by @ebarrera89 in #1251
  • Send the held batch before waiting for a recording by @Odrannnn in #1276
  • vk: RX_VK_MESH_NOCULL, the Steam Deck's task shader hang without leaving models out (#817) by @KewinBR in #1300
  • fix(vk): DLSS at handheld Ultra Performance, and NGX paths on Linux by @hckrman101 in #1364
  • test(dlss): four-byte UTF-8 case as a surrogate pair on Windows by @hckrman101 in #1365
  • perf(vk): the retirement sweep's texture write-backs in batches, one submission and one wait each by @SadTransGirl in #840
  • feat(vk): FXAA in the gameplay TAAU stand-in (edges on cards without the network) by @t0masz407 in #1115
  • Stop the replay and exit when the GPU device is lost by @berelels in #1291
  • Stick dead zone: an Insert menu row (stick_dead_zone), issue 752 by @bronze-ff in #1298
  • vk: a mesh fallback program whose compute pipeline failed is not compiled again by @CiLiBi18 in #1317
  • Native mouse look: turn the player camera from its own update, not a heap search by @itaskaev2 in #1356
  • Stop the Builder when its working exefs cannot be cleared by @bronze-ff in #1363
  • fix: harden what files, downloads and guest memory hand to host code by @hckrman101 in #1398
  • fix: hardening part 2, guest sizes and indices in the OS layer and renderer by @hckrman101 in #1422
  • vk: descriptor slotgen and sampler cache by @bibigurl-yum in #1330
  • Motion controls: the full six-axis state as Eden builds it (follow-ups to #1114) by @wyatt-poole in #1237
  • fix(vk): render BC targets through raw views, and stop leaving out OoT's noise volume pass by @Nitnek in #1338
  • Dependabot: a 7-day cooldown before proposing a new action version by @Joey-Magnus in #1464
  • Build: prepare the shaders at the end of the build, not at the first start by @klimovich008 in #1026
  • fix(vk): restore Deku Tree floor web lighting on NVIDIA by @RoksTK in #1442
  • Count the compiler a driver starts in the Windows memory gate by @corentinbonjour in #1089
  • Keep the CPU's newer pages when a remade pool's mirror inherits a retired one by @duck-paradise in #1127
  • Add 5120x1440 (32:9) Output resolution by @mockcomic in #1290
  • fix(audio): align SDL device buffer to audio frame quantum and allow env override by @suarezoscar in #1329
  • perf(os): wake WaitAny only for objects a multi-wait watches by @klimovich008 in #1353
  • fix(vk): prepare again when the shader seed changes by @hckrman101 in #1387
  • fix: measure free space on the NUP extraction volume by @JooaoPedro15 in #1391
  • fix: support fractional profile skips on pipes by @JooaoPedro15 in #1392
  • Free the space left by a failed NUP unpack by @bronze-ff in #1393
  • fix: keep interrupted ROMFS copies out of the destination by @JooaoPedro15 in #1395
  • Leave a mesh shader with no outputs instead of OpUnreachable by @berelels in #1407
  • Reject save backups inside the folder being backed up by @bronze-ff in #1408
  • fix: clean up failed NUP extraction members by @JooaoPedro15 in #1412
  • fix: explain incomplete flash probe captures by @JooaoPedro15 in #1418
  • fix(vk): release frame interpolation resources when setup fails by @Arkex-ai in #1445
  • Release buffers after fallback initialization failure by @monsterlag in #1087
  • fix(vulkan): bound configured frame waits to ring capacity by @monsterlag in #1113
  • fix(linux): exit after unexpected display startup failure by @monsterlag in #1128
  • fix(setup): preserve extractor failure diagnostics by @monsterlag in #1153
  • docs: bring the docs in line with the code, and a reference of the testing switches by @itaskaev2 in #1262
  • fix(vk): preserve the picture display aspect when resizing by @Arkex-ai in #1339
  • Honor the Linux menu font face selected by Fontconfig by @bronze-ff in #1371
  • docs: PR descriptions open with why, screenshots for visible changes, and an AGENTS.md by @hckrman101 in #1466
  • vk: render target images reused from a pool, not made and destroyed for each of OoT's shifting transient targets by @DUDUYG in #1416
  • vk: render targets' images in VMA blocks of their own; dead targets swept every 10 presents (follow-up to #1416) by @DUDUYG in #1436
  • AMD FSR 3.1 upscaling and frame generation (split from #1335) by @notquiteog in #1386
  • Native mouse: only the active player camera takes the mouse (slingshot aim, shops) by @Joey-Magnus in #1462
  • fix: validate cache paths before building from extracted folders by @JooaoPedro15 in #1397
  • fix(vk): recover from failed swapchain replacement by @Arkex-ai in #1403
  • Lowering: LEA.HI with a constant base and no carry (40 vertex programs drawn again) by @Joey-Magnus in #1437
  • vk: the pipeline notes file and the state list opened by the precompile, before play, not at the first new pipeline in play by @DUDUYG in #1417
  • Warn at boot when memory and swap are below what the game needs by @berelels in #1406
  • Stand-ins: check once per unpack, on --update too, skippable frames (follow-up to #1308) by @Joey-Magnus in #1373
  • Linux: skip menu fonts that have no Latin letters by @berelels in #1405
  • vk: share one mesh-fallback record/payload pair per recording thread by @nicholasgower in #1383
  • Leave a stage library the driver has not compiled to a worker by @jarynclouatre in #1429
  • Render UTF-8 names correctly in the Linux Insert menu by @bronze-ff in #1389
  • feat(builder): the Hookshot Builder in Python, the same window without an executable of Hookshot's own by @NotRexed in #1483
  • fix(build): quicker, steadier updates: compiled objects kept, a cut-short lift translated again, 45 GB needed by @NotRexed in #1484
  • feat: smoother play, HDR10, a frame rate cap, Discord status, the Debug tab, sharper shadows by @NotRexed in #1485
  • fix: harden what the security scan flagged (https-only downloads, no strtok, SHA-1 marked not for security) by @NotRexed in #1470
  • build: the release does not carry the Python builder by @NotRexed in #1486
  • Button prompts for Xbox, PlayStation and Steam Deck controllers, following the controls by @gab9281 in #1321
  • ci: retry the AppImage's package install after a fresh apt-get update by @NotRexed in #1491
  • fix(tools): require consecutive frames for flash analysis by @Arkex-ai in #1467
  • fix(vk): remove duplicate motion deadzone formatter by @Arkex-ai in #1496
  • test: restore renderer regressions after main changes by @Arkex-ai in #1498
  • tools: validate the program cache's SPIR-V offline (scripts/validate_spirv.py) by @rakefire-impala in #1508
  • fix(vk): replace menu upload buffers only after successful growth by @Arkex-ai in #1453
  • Avoid overflow in Windows preparation timestamps by @klimovich008 in #1517
  • ci: retry the complete AppImage package bootstrap by @Arkex-ai in #1523
  • fix(menu): Quality presets leave Frame generation alone, so it stays off by default by @hckrman101 in #1526
  • Refuse an absolute-target symlink when unpacking an update part (#1295) by @rockysscenery in #1525
  • feat(vk): draw the menu, FPS counter and start-up screen with Dear ImGui by @hckrman101 in #1459
  • docs: point the Linux install section at the command-line build by @quazardous in #1529
  • fix(appimage): copy sysroot library aliases by value for updates by @Arkex-ai in #1536
  • fix(vk): disable failed frame log sinks and unwind startup by @Arkex-ai in #1531
  • fix: Discord status starts on Windows by @NotRexed in #1539
  • fix(audio): keep 512-frame power-of-two default on SDL2 fallback by @suarezoscar in #1550
  • fix(menu): keep the FPS counter off the banner on a window just wider than 16:9 by @hckrman101 in #1545
  • fix(menu): clarify frame-generation preset help by @Brett-D in #1554
  • fix(linux): safely rebase legacy sysroot links by @Brett-D in #1553
  • fix(vk): preserve brightness in flash sampling across capture sizes by @Arkex-ai in #1537
  • feat(vk): trace effective presentation geometry on changes by @Arkex-ai in #1457
  • fix(vk): preserve pending screenshots before readback slot reuse by @Arkex-ai in #1519
  • fix(vk): publish complete screenshot resource sets by @Arkex-ai in #1472
  • fix: the display stays on while playing with a controller (#1532) by @NotRexed in #1538
  • fix(vk): validate capture dimensions before allocating readbacks by @Arkex-ai in #1551
  • fix(menu): the mouse wheel scrolls, it never changes a value by @hckrman101 in #1557
  • fix(build): the logo and fonts are made only where the Vulkan back end is compiled (AppImage builds failed) by @NotRexed in #1567
  • fix(vk): flush custom UI texture staging before GPU use by @Arkex-ai in #1559
  • fix(build): stop sampling memory for exited compiler roots by @Arkex-ai in #1562
  • tests: the stamp-cache fixture gives the back end's branch its logo and fonts writers by @NotRexed in #1575
  • test(changelog): keep the scratch repository off the user's git config by @mmkzer0 in #1571
  • test(fpx): build with HOOKSHOT_MINGW's clang when it is set by @mmkzer0 in #1570
  • fix(vk): preserve CPU write watches during pool imports by @klimovich008 in #1434
  • fix(linux): keep update symlink targets inside staging by @monsterlag in #1597
  • fix(packaging): include the prompt encoder runtime dependency by @monsterlag in #1598
  • Reject oversized NUP members before writing them by @bronze-ff in #1596
  • ci(appimage): start a player's build from the packaged AppImage before it ships by @NotRexed in #1607
  • fix(display): do not toggle fullscreen on F11 when modifier keys are held (#1309) by @oscarlosu-lab in #1608
  • feat(menu): let players choose the keyboard shortcut by @bronze-ff in #1609
  • fix(vk): publish complete PNG captures and report failures by @Arkex-ai in #1604
  • fix(menu): a save keeps the options file's lines the menu does not write by @NotRexed in #1493
  • fix(menu): F1 always opens the menu by @NotRexed in #1632
  • fix(vk): make frame dump copies visible to host reads by @Arkex-ai in #1621
  • fix(builder): honor DLSS opt-in when updating a game by @Arkex-ai in #1643
  • fix(menu): distinguish game and generated frame rates by @bronze-ff in #1659
  • fix(vi): keep the game at real speed under a Frame rate cap above 60 by @klimovich008 in #1612
  • fix(builder): report bytes during NUP extraction by @bronze-ff in #1671
  • fix(vk): publish texture staging slices before GPU reads by @Arkex-ai in #1672
  • fix(input): a stick axis steers once it has been seen at rest (camera spinning on its own) by @NotRexed in #1677
  • fix(build): invalidate DLSS objects when SDK headers change by @Arkex-ai in #1648
  • Lowering: IMNMX with an immediate wider than 20 bits (vertex programs translate again) by @Joey-Magnus in #1451
  • Lowering: SULD.P on a 1D surface (17 compute programs translate again) by @Joey-Magnus in #1447
  • RX_VK_VRAM_MB and the integrated-GPU cap win over a preset's texture budget by @aquinas22 in #1376
  • Name the member and the drive when NUP extraction runs out of space by @SimonKimDev in #1595
  • fix(vk): multi-second freezes and white foliage without mesh shaders: fallback pipelines on a worker and in the precompile by @rakefire-impala in #1512
  • fix(vk): mesh fallback flicker: wait for the last draw before clearing the shared buffers (#1383 review) by @rakefire-impala in #1509
  • fix(vk): rainbow block-noise textures on low-VRAM cards: a failed BC3 upload is tried again, not drawn as noise by @rakefire-impala in #1505
  • fix(vk): texture noise when system RAM runs low: a staging arena of the size needed when 64 MB can't be pinned by @rakefire-impala in #1514
  • Let a draw run its own queued shader translation by @jarynclouatre in #1714
  • docs: tested configurations, the runs behind the status table by @Joey-Magnus in #1723
  • perf(vk): DLSS keeps its feature through loading screens (a 44-78 ms stutter at each area entry) by @NotRexed in #1520
  • test(vk): cover staging fallback ownership and publication by @Arkex-ai in #1741
  • fix(build): escape the build folder in glob patterns (a work folder with [ ] found no lifted code) by @BrunoSilvestre00 in #1722
  • feat(startup): lower the start-up screen, smaller text, fade to black at the end by @hckrman101 in #1558
  • fix: hardening part 3, updates, shared files, guest buffers and texture sizes by @hckrman101 in #1684
  • docs: a workflow from report to release, with priorities by severity and by the hardware people run by @Joey-Magnus in #1724
  • Game menus: point and click with the mouse in the title, pause menu, panel pages, options and dialogs by @jordanella in #1500
  • os: no vcore checkpoint in WaitAny's scan while it holds mw_lock by @klimovich008 in #1696
  • fix(vk): Read texture handles from stage constant banks by @klimovich008 in #1014
  • fix(vk): mark a clear's targets in the parallel replay's dry pass (the one-frame black scenes) by @SadTransGirl in #1639
  • AMD FSR 4.1 as a second upscaler engine, on #841's frame chain by @madebyjordan in #1008
  • perf(vk): keep four pages for the replay's reads as submitted, not one (Kokiri village view 50 -> 57 fps) by @Joey-Magnus in #1762
  • Builder: the damaged-texture check after an unpack shows its progress by @breakthetargets in #1764
  • linux: the process affinity mask is the process's, not the asking thread's by @leonardochappuis in #1430
  • fix(vk): share validated source crops across presentation paths by @Arkex-ai in #1448
  • feat: RecompLauncher support (recomplauncher.json, make_game --game/--prepare) by @Xarishark in #1102
  • fix(shaders): lower TLD.MS (multisampled texel fetch) to Maxwell TLDS 2D.LZ.MS by @Joey-Magnus in #1769
  • fix(vk): RX_VK_FSR4 and RX_VK_DLSS go over a saved FSR 3.1 (#1008 follow-up) by @madebyjordan in #1773
  • tests: test_nup_stand_in's stand-in takes the progress argument (fixes main's Python checks after #1764) by @breakthetargets in #1780
  • build(deps): bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #1475
  • fix: a game folder whose deepest file passes 260 characters builds and plays (#1468) by @NotRexed in #1497
  • fix(vk): make capture readbacks visible before CPU reads by @Arkex-ai in #1502
  • fix(vk): slow resume and black HUD hearts on 4 GB cards: the texture squeeze waits while VMA's blocks have room by @rakefire-impala in #1506
  • fix(vk): dark lighting and glowing bloom on AMD: 64-lane graphics warps and Lichii #273's fragment shuffle fallback by @rakefire-impala in #1507
  • fix(vk): missing floor grass without mesh shaders: indirect task draws ran no mesh workgroups by @rakefire-impala in #1510
  • fix(vk): dense grass cut off and far trees flickering without mesh shaders: fallback records from an allocator, 65535 slots by @rakefire-impala in #1511
  • fix(vk): coloured specks on fallback foliage (AMD): the generated vertex stage's outputs start at (0,0,0,1) by @rakefire-impala in #1513
  • fix(vk): decode gameplay RGB9E5 upscale fallback by @Brett-D in #1552
  • fix(scripts): the profile readers name and count Linux samples by @Joey-Magnus in #1746
  • fix(vk): publish recording stream writes before GPU submission by @Arkex-ai in #1568
  • perf(vk): FSR 3.1's passes go through the pipeline cache kept across runs by @NotRexed in #1574
  • Warm the stage libraries from the program cache into the pipeline cache by @jarynclouatre in #1586
  • fix(hid): deduplicate gamepad polling when SDL controllers are active (#1480, #1583) by @oscarlosu-lab in #1606
  • perf(vk): copy captured pages with non-temporal stores by @itaskaev2 in #1619
  • perf(vk): Descriptor reuse on by default (options_version 4) by @NotRexed in #1625
  • Translate a texture size query with the type its handle is sampled with by @jarynclouatre in #1627
  • perf(vk): skip write-backs of large GPU-written bindings by @DFN-master in #1629
  • feat(build): Probe for system Vulkan packages, add proper requirements by @kacperoo29 in #1572
  • fix(vk): recover recording stream and descriptor allocation failures by @Arkex-ai in #1658
  • feat(vk): add AMD Anti-Lag 2 (VK_AMD_anti_lag) by @liska1304 in #1729
  • fix(framegen): 2x uses the renderer's own blend again; FSR 3.1 interpolation opt-in (#1635) by @NotRexed in #1730
  • Work around AMD Vulkan task shader timeouts and restore cloth rendering by @lucasmsqt in #1747
  • fix(build): package scripts/ in the Linux AppImage, so NVIDIA DLSS can be fetched by @lucasknutr in #1748
  • fix(vk): admit only successful samplers across cache layers by @Arkex-ai in #1754
  • fix(vk): ask for task and mesh shader counts only where the driver offers them by @mihawk-99 in #1731
  • Ask the pipeline cache for a compute pipeline before queueing its build by @jarynclouatre in #1765
  • docs: collect comparable logs for low FPS reports by @bronze-ff in #1768
  • docs(worklist): garbled textures after play time; Gohma jump and Kokiri stutter rows updated by @Joey-Magnus in #1774
  • fix: write-back stale-shadow edgecase by @ShroomKing in #1776
  • perf(host): write the log in batches, a few writes a second instead of one per line by @DUDUYG in #1675
  • perf(vk): write the pipeline cache only when its data changed (no 1.1 GB rewrite at every start) by @DUDUYG in #1660
  • feat(linux): opt-in NVIDIA DLSS in Linux Builder and AppImage by @suarezoscar in #1585
  • test(vk): restore source fixture dependencies after admission changes by @Arkex-ai in #1819
  • test: each test names its own run_all arguments, skips and modules by @hckrman101 in #1822
  • Ultrawide: pause, item and map menus in the middle 16:9, sides blurred or black by @KrysGG in #1352
  • feat(builder): the Linux builder looks like the Windows one by @hckrman101 in #1838
  • test: two stale tests keep main red (lift cleanup's PREPARE, launcher keys of renamed rows) by @Joey-Magnus in #1836
  • fix(shaders): R2UR's source is one register, not a pair (a vertex program refused) by @Joey-Magnus in #1806
  • Redesign the Debug tab, Inventory and Teleport pages, and add a 5K output by @ArmstrongThomas in #1670
  • feat(builder): warn before building on a hard drive by @nicholasgower in #1835
  • fix(shaders): LDG/STG [URn+imm] with ordering bit 78 lower (2 compute programs) by @Joey-Magnus in #1778
  • fix(shaders): two large compute programs lower (an immediate is not R254) and get their local memory by @Joey-Magnus in #1800
  • perf(vk): less copying of captured memory on the game and replay threads by @valonsodev in #1375
  • docs(menu): the frame rate cap past 60 is experimental (#1742) by @NotRexed in #1805
  • fix(loader): add the addend to GLOB_DAT and JUMP_SLOT relocations by @mmkzer0 in #1646
  • Log a driver fault caught by the Windows pipeline guards by @jarynclouatre in #1766
  • fix(vk): report device loss throughout native presentation by @Arkex-ai in #1515
  • fix(vk): Use host timestamps in frame captures by @klimovich008 in #1763
  • fix(shaders): ISBERD.O, a task program reading back its payload (12 failing pipelines) by @Joey-Magnus in #1789
  • docs(worklist): shader translation 10 -> 2, stutter next step, floating trees verified by @Joey-Magnus in #1802
  • fix(shaders): a loop that leaves by predicated EXITs ends at its closing self-branch (the last program that did not lower) by @Joey-Magnus in #1810
  • Open the window on COSMIC's Wayland with SDL2 by @italloramon in #1839
  • fix(vk): retry transient texture image view failures by @Arkex-ai in #1688
  • fix(vk): tie texel buffer views to their imported backing by @Arkex-ai in #1706
  • fix(vk): submit a 2x set's copies together so its presents keep their times by @mayathaim-hue in #1720
  • feat: Audio tab in the Insert menu with Volume and Mute in background by @bvtterbroot in #1270
  • fix(display): publish coherent pointer and drawable samples by @Arkex-ai in #1428
  • perf(vk): what play makes goes into a pipeline cache of its own, one file per save (no 0.5-1.2 GB rewrite in play) by @DUDUYG in #1772
  • fix(rt): mark an exclusive store's page after the store, not before by @mmkzer0 in #1645
  • fix(menu): hide rows for features this PC lacks, and keep mouse clicks on the row meant by @hckrman101 in #1825
  • docs(worklist): merge duplicate texture rows; owl-intro crash GPU; drop the Ally X menu row (on #1860) by @Joey-Magnus in #1869
  • docs(worklist): shader row to Fixed; the first-cutscene row split into the two RTX 30 crashes by @Joey-Magnus in #1860
  • fix(vk): present ahead's vk_replay.cpp half, lost in #1720's merge (main doesn't link) by @NotRexed in #1858
  • Save Output resolution as a size, and take any size from the config by @ArmstrongThomas in #1814
  • tests: fix four source checks broken on main (PREPARE fixture; ini_key renames; long-path out-of-space folder; DrawParameters Ctx) by @NotRexed in #1793
  • Builder: a game folder it can't write to stops at once with the reason by @NotRexed in #1849
  • feat(vk): Anisotropic filtering option, 16x by default, and the upscalers' texture LOD bias by @hckrman101 in #1898
  • perf(vk): the capture's streaming-store copy opt-in (RX_VK_CAPTURE_NT=1): more stutters, no gain measured by @NotRexed in #1841
  • bake: offline NVN translation harness + live bank writer + verify by @blessedplummer in #1707
  • Builder: the damaged-texture check uses what the extraction saw (no ~100,000 files reopened) by @NotRexed in #1885
  • fix(vi): a cutscene's cues stay with its movie above a 60 cap (#1742) by @klimovich008 in #1875
  • build(release): ship the pipeline state list with every release by @hckrman101 in #1918
  • vk: Add an opt-in recorder thread for the serial replay by @klimovich008 in #1473
  • feat(vk): add opt-in VRAM compaction and hold the driver's count below its limit by @SadTransGirl in #1821
  • fix(vk): prevent aligned uniform words from thrashing the cache by @i-love-computers-dude in #1910
  • fix(vk): retire native FSR images after GPU completion by @Arkex-ai in #1584
  • fix(vk): own native FSR constants for each recording by @Arkex-ai in #1591
  • fix(render): reset temporal history when reprojection is invalid by @Arkex-ai in #1715
  • fix(vk): reject unbound imported buffers and roll back ownership by @Arkex-ai in #1718
  • feat(menu): a Text size row for dialogue, Navi and signs by @getzabelz in #1579
  • fix(vulkan): track writes from direct buffer bindings by @monsterlag in #1133
  • fix(vk): add VMA image allocation retry without WITHIN_BUDGET by @1conver in #1438
  • perf(vk): keep the write-back shadows while VRAM is full of free space inside VMA's blocks by @SadTransGirl in #1637
  • perf(host): keep the game's threads on the 3D V-Cache cores of two-CCD X3D CPUs by @SadTransGirl in #1638
  • fix(render): publish coherent temporal jitter samples by @Arkex-ai in #1691
  • Builder: let the player choose how much memory a build may take by @corentinbonjour in #1090
  • fix(vk): a masked clear whose pipeline the driver did not make is tried again, not cached as null (#1787) by @oscarlosu-lab in #1880
  • Fix background shader and pipeline jobs left pending after exceptions by @SRhartty in #1874
  • fix(security): verify Windows updater asset digests by @monsterlag in #1792
  • fix(setup): explain how to restore missing Windows tar by @monsterlag in #1922
  • fix(builder): constrain the Show details hit area by @monsterlag in #1863
  • A DualShock 4 or DualSense touchpad click opens the menu as F1 by @nicholasgower in #1846
  • build(release): a fuller shipped pipeline list, 4276 pipelines (follow-up to #1918) by @Joey-Magnus in #1935
  • feat: Add an option to disable automatic camera centering by @fatalis in #1921
  • fix(vk): keep adjacent uniform words in separate cache slots by @i-love-computers-dude in #1932
  • tests: main's red bake and ub checks skip where their tool can't run; the ub fixture builds on Windows by @NotRexed in #1939
  • docs: say where the host shaders and the shipped pipeline list come from by @hckrman101 in #1978
  • build: scripts/host_shaders.py makes the host shader headers from their sources by @hckrman101 in #1987
  • Keep the menu Medium on every input, and shrink a long version to fit by @breakthetargets in #1968
  • fix(builder): the Linux builder's details box is read-only by @SimonKimDev in #1966
  • ci(release): release with release-please, and check PR titles by @hckrman101 in #1059
  • test: log_batch "off" takes the fastest of three; bake tests skip on Windows CI (600 s limit) by @NotRexed in #2013
  • Debug tab: a Movement speed choice for Link (1x to 3x) by @ArmstrongThomas in #2020
  • fix(menu): the FPS counter looks as it did (green outlined text in the corner, no plate) by @NotRexed in #1957
  • fix(menu): run the upscalers' one-time probes during the start-up screen, not at the menu's first open (#1886) by @NotRexed in #1916
  • feat(menu): Esc can open the Insert menu (Menu shortcut "Insert, F1 or Esc") by @pmwork-personal in #1998
  • build(release): a shipped pipeline list from most of the game, 11527 pipelines by @jarynclouatre in #2029
  • ci(release): release candidates from release-please, Promote to release, and a nightly of main by @hckrman101 in #2018
  • feat(menu): DLAA as DLSS's Native render resolution, and Render resolution as a slider in real sizes by @pmwork-personal in #2000
  • feat(menu): a Mesh shaders row (Automatic, Native, Compute) by @NotRexed in #1971
  • build(release): the shipped pipeline state list merged from separate sources (tour + contributed lists) by @hckrman101 in #2040
  • fix(vk): build every predicted pipeline before the game (the prediction found nothing on fresh builds; no 90 s budget; one progress bar) by @hckrman101 in #2032
  • fix(host): room in the drivers' shader caches for the prepared pipelines (Linux) by @hckrman101 in #2033
  • ci: run the Windows source checks in two parts, slowest checks first by @hckrman101 in #2025
  • chore(main): release 2.1.0-rc.1 by @github-actions[bot] in #2026
  • build(release): a contributed pipeline list from an AMD card with FSR 4, 1273 pipelines by @madebyjordan in #2044
  • fix(vk): handle RDNA 1 wave32 and wave64 shader stages by @brunobaccari in #1657
  • test(display): the startup fixture stubs driver_cache_room (main is red since #2033) by @NotRexed in #2051
  • ci(release): list every commit type in the changelog by @hckrman101 in #2055
  • feat(vk): GPU- and settings-independent pipeline state list (HKSTATE2) by @hckrman101 in #2046
  • ci(release): big download links for Windows and Linux at the top of each release by @hckrman101 in #2059
  • chore(main): release 2.1.0-rc.2 by @github-actions[bot] in #2053

New Contributors

Full Changelog: v2.0.11...v2.1.0

Which file do I download?

On Download
Windows HookshotBuilder.exe, the setup
Linux, Steam Deck Hookshot-v2.1.0-x86_64.AppImage

You need your own copy of the game. hookshot-setup.txt, hookshot-linux.txt and the .zsync are for the updaters. To check a download: sha256sum -c --ignore-missing SHA256SUMS, or gh attestation verify <file> -R NotRexed/Hookshot.

Don't miss a new Hookshot release

NewReleases is sending notifications on new releases.