Repository navigation
Releases
Latest release candidate
The Linux AppImage of the newest release candidate or release, v2.2.0-rc.1, and its .zsync: the same files, here for AppImageUpdate, so that a release candidate's AppImage moves on to the next release candidate and to its version's release. This is not a version.
Download from v2.2.0-rc.1: its notes, the Windows setup and SHA256SUMS are there. For playing, use the latest release.
Latest development build
⬇ Download for Windows
⬇ Download for Linux / Steam Deck
The latest development build of main, made by CI after every push to main. Each file is named by the commit it was built from (Hookshot-<version>-x86_64.AppImage, Hookshot-<version>-Windows-x64.zip; the version is git describe's, ending in -g<commit>). The Windows and Linux builds finish at different times, so while changes are being merged one can be a commit or two behind the other; the nightly tag is at the newest of them.
It is untested and may break your saves or settings. For playing, use the latest release.
Which file do I download?
| On | Download |
|---|---|
| Windows | HookshotBuilder.exe, the setup |
| Linux, Steam Deck | the .AppImage |
You need your own copy of the game. hookshot-setup.txt, hookshot-linux.txt and the .zsync are for the updaters, and the -Windows-x64.zip (the setup and its recomplauncher.json) for RecompLauncher: on Windows, download HookshotBuilder.exe instead. To check a download: sha256sum -c --ignore-missing SHA256SUMS, or gh attestation verify <file> -R NotRexed/Hookshot.
v2.1.0
⬇ 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 pa...
v2.1.0-rc.3
⬇ Download for Windows
⬇ Download for Linux / Steam Deck
2.1.0-rc.3 (2026-11-11)
Features
- update: an update track (Release, Release candidate, Nightly) in the builders and the game (#2061) (6cecdd1)
Which file do I download?
| On | Download |
|---|---|
| Windows | HookshotBuilder.exe, the setup |
| Linux, Steam Deck | Hookshot-v2.1.0-rc.3-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.
v2.1.0-rc.2
⬇ Download for Windows
⬇ Download for Linux / Steam Deck
2.1.0-rc.2 (2026-11-11)
Features
Bug Fixes
Build System
Continuous Integration
Tests
Which file do I download?
| On | Download |
|---|---|
| Windows | HookshotBuilder.exe, the setup |
| Linux, Steam Deck | Hookshot-v2.1.0-rc.2-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.
v2.1.0-rc.1
2.1.0-rc.1 (2026-11-11)
Features
- Add a control to disable camera centering (2dcf210)
- Add an option to disable automatic camera centering (657da4f)
- Audio tab in the Insert menu with Volume and Mute in background (52ca067)
- Audio tab in the Insert menu with Volume and Mute in background (df2d84c)
- builder: let the player choose how much memory a build may take (90055d0)
- builder: the Linux builder looks like the Windows one (8c1b5e9)
- builder: the Linux builder looks like the Windows one (8f2e1a1)
- builder: use the saved build memory choice for updates (86ff22c)
- builder: warn before building on a hard drive (b526a84)
- builder: warn before building on a hard drive (c769305)
- build: Probe for system Vulkan packages, add proper requirements (3b84291)
- build: Probe for system Vulkan packages, add proper requirements.txt (155bfa2)
- linux: opt-in NVIDIA DLSS in Linux Builder and AppImage (484cfd1)
- linux: opt-in NVIDIA DLSS in Linux Builder and AppImage (66b86fb)
- menu: a DualShock 4 or DualSense touchpad click opens the menu as F1 (8790b8f)
- menu: a Mesh shaders row (Automatic, Native, Compute) (#1971) (c8022e7)
- menu: a Text size row for dialogue, Navi and signs (4d0645f)
- menu: a Text size row for dialogue, Navi and signs (4bae30c)
- menu: add 5120x2880 (5K) to Output resolution (ce175ac)
- menu: centre the menu in a 16:9 column on ultrawide (70e2209)
- menu: DLAA as DLSS's Native render resolution, and Render resolution as a slider in real sizes (#2000) (e187859)
- menu: Esc can open the Insert menu (Menu shortcut "Insert, F1 or Esc") (#1998) (d926317)
- menu: let players choose the keyboard shortcut (#1609) (191cfdc)
- menu: put the debug tools on the Debug tab (e256616)
- menu: redesign the Debug tab, Inventory and Teleport pages (c805d9b)
- menu: save Output resolution as a size, and take any size from the config (a78ee4d)
- menu: the debug tools' Teleport row opens the map list (a4c3a8d)
- RecompLauncher support (recomplauncher.json, make_game --game/--prepare) (ab5a1f6)
- startup: lower the start-up screen, smaller text, fade to black at the end (8649805)
- startup: lower the start-up screen, smaller text, fade to black at the end (fb60134)
- vk: add AMD Anti-Lag 2 (VK_AMD_anti_lag) (8ea4e7f)
- vk: add opt-in VRAM compaction and hold the driver's count below its limit (3932421)
- vk: AMD Anti-Lag 2 through VK_AMD_anti_lag (b9e7559)
- vk: Anisotropic filtering option, 16x by default, and the upscalers' texture LOD bias (0af7629)
- vk: Anisotropic filtering row, 16x by default (d9b0ce2)
- vk: draw the menu, FPS counter and start-up screen with Dear ImGui (509579b)
- vk: opt-in VRAM compaction (RX_VK_COMPACT=1): the textures' free space goes back to the driver (d218438)
- vk: trace effective presentation geometry on changes (#1457) (a350759)
- vk: upscalers' texture LOD bias below the game's 3/4 render (3b9ffcd)
- vk: warm the stage libraries from the program cache into the pipeline cache (24ebac7)
Bug Fixes
- a game folder whose deepest file passes 260 characters builds and plays (#1468) (d231d17)
- a game folder whose deepest file passes 260 characters builds and plays (#1468) (45c7418)
- Address camera centering review feedback (103e2cd)
- appimage: copy sysroot library aliases by value for updates (#1536) (ed66422)
- audio: keep 512-frame power-of-two default on SDL2 fallback (#1550) (fa85175)
- build: a game built from extracted folders refuses links in them (233e072)
- builder: --cli says make_game's own error, on stdout too (a3859f1)
- builder: bound writes from compressed NUP members (#1596) (56e31e7)
- builder: constrain the Show details hit area (d45e262)
- builder: constrain the Show details hit area (080bf91), closes #1842
- builder: give the prepare shaders tick its own row (1ace933)
- builder: honor DLSS opt-in when updating a game (#1643) (c3aa9c0)
- builder: report bytes during NUP extraction (#1671) (c4a9085)
- builder: select the saved build memory in BeginUpdate (d08aaed)
- builder: the Linux builder's details box is read-only (b2ac2bf)
- builder: the Linux builder's details box is read-only (d7cc1d4...
v2.0.14
v2.0.14: HDR menu colours, updates from folders with brackets, FPS counter size
A hotfix on top of v2.0.13 with three fixes. Everything else is the same as v2.0.13. If you're on v2.0.13 or earlier, the Builder's update picks this up.
The update stopped with "found 0 times" (#1744)
If the Builder's work folder had [ or ] in its path, the build stopped while translating the game. Every patch reported "found 0 times", then "the output size places were found [0, 0, ...] times". The build now handles brackets in the path. By @BrunoSilvestre00 (#1722).
HDR: the menu, FPS counter and start-up screen in the right colours (#1613)
With HDR on (Expanded or Native), the menu came out solid blue with garbled text, the FPS counter purple, and the start-up screen a blue box. They're now converted to the HDR picture's format at your paper-white brightness, the same way the game's picture is. Nothing changes with HDR off.
The FPS counter keeps its size
On v2.0.13, opening the menu at 1440p or 4K shrank the FPS counter along with the menu, and it stayed small. It now keeps the screen's own size. From @monsterlag's #1665.
Tested
On an RTX card with a 3440x1440 monitor:
- the build finds all its patches;
- the menu is right in fullscreen and in a 1280x720 window;
- 5,829 frames of play with no one-frame flashes and no crash lines.
A folder with brackets now lists its build files (checked: 0 found before the fix, all found after). The HDR conversion was checked numerically (white at a 200-nit paper white, black stays black), not on an HDR display.
v2.0.13
v2.0.13: the menu shows again, and the game keeps real speed above 60 fps
A hotfix on top of v2.0.12 with two fixes. Everything else is the same as v2.0.12. If you're on v2.0.12, the Builder's update picks this up.
F1 / Insert menu missing
On v2.0.12, pressing F1 or Insert in fullscreen at 1440p, 4K or ultrawide showed nothing. Some small windows had the same problem. The menu was open and took the keyboard and mouse, but you couldn't see it.
It's drawn in whole size steps, and at those resolutions it came out taller than the screen. A menu that didn't fit was left out entirely. Now:
- It's drawn a size smaller until it fits.
- In a window too small even for the smallest size, it starts at the window's top. The title, tabs and rows show, and only the help text at the bottom is cut.
Fixes #1603, #1605 (the menu part), #1611, #1656.
The game ran too fast with the Frame rate cap above 60
With the cap above 60, the game drew more frames but still stepped 1/60 s each frame. At 100 fps it ran about 1.7 times too fast, and up to 4 times in the menus. It now keeps real time at any rate up to the cap. At the default 60 nothing changes. By @klimovich008 (#1612).
Fixes #1647.
Tested
On an RTX card with a 3440x1440 monitor:
- Menu: before and after, in fullscreen and in a 1280x720 window.
- Game clock against the wall clock, 240 cap: title screen at 137-146 fps runs at 0.997-1.004 times real speed. Without the fix, it ran 1.71-2.66 times too fast at 100-160 fps.
- Default 60 cap: play stays at real speed.
- No crashes in any run.
Hookshot v2.0.12
Hookshot v2.0.12
The biggest update yet: about 110 pull requests from 40+ contributors, tested together.
Smoother play
- Fewer hitches when new areas load. A frame's texture uploads have a time budget: when an area load sends a burst of
new textures, the rest come in over the next frames instead of one long freeze (RX_VK_UPLOAD_BUDGET_MS). - Render targets are reused from a pool instead of being made and destroyed every time the game's temporary targets
change size (#1416, #1436), and they sit in memory blocks of their own. - 8 GB cards (RTX 3060 Ti, 3070, 4060 and others) keep more VRAM free: the texture budget is 45% of what the driver
allows instead of 70%, so the game no longer spills into system RAM and drops to 14-25 fps after a few minutes. - The pipeline notes are opened before play, not at the first new pipeline in play (#1417); stage libraries the driver
has not compiled yet are built by a worker instead of in the draw (#1429). - Multi-waits only wake for the objects they watch (#1353); the synchronous replay runs on the reserved core (#1158).
Looks
- Sharper shadows: shadow edges are filtered (percentage-closer) instead of showing stair steps.
- Floating trees fixed (#1334), BC render targets drawn through raw views and OoT's noise volume pass no longer
left out (#1338), the Deku Tree's web lighting on NVIDIA (#1442), 40 vertex programs drawn again (#1437), FXAA on
cards without the upscaler network (#1115).
New options (Insert menu)
- Button prompts (Controls page): Auto, Switch, Xbox, PlayStation 4, PlayStation 5 or Steam Deck icons everywhere the
game draws a button, following your own bindings (#1321). A ButtonPrompts mod's own files still win. - AMD FSR 3.1 upscaling and frame generation (#1386), beside NVIDIA DLSS / DLAA / Reflex (#841, builds with the
NVIDIA DLSS tick). Measured on an RTX 4060 Ti at 2560x1440: the game's own upscaler 52-53 fps, DLSS 48-49 fps, DLAA
41-43 fps, with no more stutters than without them. - HDR10 output (Off, On, Native) with paper white and peak brightness.
- Frame rate cap (60, 90, 120, 144, 165, 240; past 60 the game keeps real time). Frame generation Auto (#1121).
- 5120x1440 (32:9) output (#1290); Monitor's shape for 4:3, 16:10 and 5:4 screens (#1224).
- Motion controls with gyro aiming, sensitivity, inverts and deadzone (#1114, #1237, #1302); HD rumble on
Switch Pro Controllers and Joy-Cons (#1213); a Stick dead zone row (#1298); Audio output Auto / Stereo / 5.1. - Discord status: "Playing Hookshot" and the time played (Gameplay > Discord status, on by default).
- Restart and Quit rows (#1266, #1255); a Debug tab for the OoT debug tools (#785).
- Native mouse camera now only turns the active camera: slingshot aiming and shops work (#1462, #1356).
Builder
- Shaders are prepared at the end of the build (a tick, on by default) instead of behind a black window at the first
start (#1026). - Updates are quicker: the compiled objects of the last build stay, so an update compiles only what changed.
- Needs 45 GB of free space, not 60. Many robustness fixes for damaged dumps, interrupted unpacks, read-only folders
and full disks (#1308, #1393, #1395, #1391, #1412, #1397, #1363).
Linux
- UTF-8 text and the right font in the Insert menu (#1389, #1371, #1405); the OoT debug tools (#1292); Wayland mouse
capture (#1251); several update-safety fixes (#1327, #1343).
Security
- Two rounds of hardening of what files, downloads and guest memory hand to host code (#1398, #1422), https-only
downloads in the updaters (#1470).
Tested before release
On an RTX 4060 Ti at 2560x1440 (docked), walking Kokiri Forest, Hyrule Field and Kakariko:
- 52 fps median, 2.6% of frames over twice the median (v2.0.11's build of the same walk: 48 fps, 4.0%).
- A simulated 8 GB card stays inside its VRAM (6.7 of 7.3 GB, textures held to 3.3 GB) at 44 fps, 1.7% stutters.
- Upscalers: the game's own 52-53 fps, DLSS 48-49, DLAA 41-43, AMD FSR 3.1 51 (fewer stutters: 1.8%).
- Shadow filtering and the frame rate cap cost nothing measurable.
- No one-frame flashes and no crashes in 5,000-6,000 recorded frames for every setting checked.
Thanks to everyone who contributed, tested and reported bugs.
Hookshot v2.0.11
Hookshot v2.0.11
Speed is back (and a bit more)
- The write-back diff is on again (it was what made v2.0.8 fast; v2.0.9 turned it off together with the separate present queue after the NVIDIA 621-driver crash). Testing since showed the crash was the present queue alone, which stays off. Measured here (RTX 4060 Ti, 3440x1440, frame generation on): ~48 fps, against ~36 on v2.0.9.
RX_VK_WB_DIFF=0turns it off. - Integrated GPUs (ROG Ally, Legion Go, Steam Deck, laptops with Radeon 780M/890M) get it too: an Ally X's hard reboots stopped with it in v2.0.8 and came back without it (#997).
Memory on integrated GPUs
- An integrated GPU's "VRAM" is your system RAM, which the game's ~10 GB also needs. Textures could take 5 GB+ of it, and 16 GB laptops ran out of memory within minutes in Hyrule Field. Textures are now capped at 2.5 GB on integrated GPUs, and the write-back diff's copy at 512 MB.
RX_VK_VRAM_MB=<MB>sets another cap if you have RAM to spare.
Builder
- A build that fails now throws away its compiled objects too, not only the translated code, so the next try builds everything fresh (a stale cached runtime object failed every Linux update in #1197).
From contributors (tested in this release)
- 1920x1080 output mode (#1144), Rumble strength in the Insert menu (#1169), the game starts from folders with non-English names (#1191), save import/export for other emulators (#1190), a Steam Deck workaround for a GPU hang (
RX_VK_SKIP_CODE, #1165), microphone input for the ocarina (#937), CPU and memory bookkeeping speedups (#1035, #1036, #989).
Update from the launcher (Update next to Play), or download HookshotBuilder.exe below.