
Hookshot项目将《塞尔达传说:时之笛》Switch 2版静态重编译为PC原生程序
来源标题:Ocarina of Time (Switch 2) PC Recompilation
Hookshot项目通过静态重编译将《塞尔达传说:时之笛》Switch 2版转为C代码并编译为Windows程序,可在Windows和Linux上原生运行,无需模拟器。该项目需用户自备游戏副本,构建产物均保留在本地,目前为实验性版本,仅在Ryzen 5 7600X配RTX 4060 Ti的一台PC上测试过。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
《塞尔达传说:时之笛》(Nintendo Switch 2)原生运行于 Windows 和 Linux,无需模拟器。
状态 |
如何构建 |
游戏内菜单 |
工作原理 |
想要帮忙? |
致谢 |
许可证
Hookshot 是一个静态重编译项目。游戏的代码被翻译成 C 并编译为 Windows 程序,主机的系统软件被重新实现,Switch 2 的图形在 Vulkan 上重建。所有这些都在你的 PC 上、使用你自己的游戏副本完成。
本仓库不包含游戏、密钥或可执行文件,也不说明如何获取它们。你需要自己的游戏副本。构建产生的一切(hookshot.exe、生成的代码、着色器缓存和你的存档)都来自你的游戏并留在你的 PC 上。切勿分享这些文件。
实验性。仅在单台 PC(Ryzen 5 7600X、RTX 4060 Ti 16 GB)上测试过,主要测试了游戏起始区域。
游戏并非现成提供:它是在你的 PC 上从你的副本构建的。
python -I nx2/make_game.py --nup "C:\path\your-game.nup" --out "C:\Games\Hookshot" --language en-US
或者使用文件夹:
python -I nx2/make_game.py --romfs "C:\path\romfs" --exefs "C:\path\exefs" --out "C:\Games\Hookshot" --language en-US
在 .nup 或 --exefs 后加上 --check 可以仅检查游戏版本。不会构建任何内容。
一次构建大约需要 40 分钟,期间你可以正常使用 PC。
从 Releases 页面下载 Hookshot-<version>-x86_64.AppImage(或 Linux AppImage workflow 的 artifact),使其可执行(chmod +x)并启动它。它就是 Hookshot Builder,内含所需的一切:编译器、库和 Vulkan 渲染器。无需安装其他东西。
选择你的 .nup(或你的 romfs 和 exefs 文件夹)、语言和游戏文件夹,然后构建。
完成后,按 Play。游戏也会添加到你的应用程序菜单中。同一个 AppImage 可以在不打开构建器的情况下启动该游戏:./Hookshot-<version>-x86_64.AppImage --play,或使用 --play ~/Games/Hookshot 指定其他文件夹。游戏本身就是你选定文件夹中的 hookshot:它无需 AppImage 即可运行。
从命令行:./Hookshot-<version>-x86_64.AppImage --cli --nup ~/your-game.nup --out ~/Games/Hookshot(选项与 make_game.py 相同)。
你需要一台 64 位 x86 PC,glibc 2.35 或更新版本(Ubuntu 22.04、Debian 12、Fedora、Arch、SteamOS 等),一个支持 mesh shader 的 Vulkan 1.3 驱动(Mesa 或 NVIDIA),以及与 Windows 上相同的内存和磁盘空间。构建自身的文件存放在 /.cache/hookshot-builder。存档存放在 $XDG_DATA_HOME/hookshot(/.local/share/hookshot)。早期构建在游戏旁的用户文件夹会被一次性迁移到那里。HOOKSHOT_JOBS 设置同时编译的文件数量。
用于测试的开关(RX_VK_NOOPT=1 及其他)放在游戏旁的 hookshot_env.txt 中,每行一个 NAME=VALUE,与 Windows 上相同。
RX_VK_MOVIE_UPSCALE=linear 用现有的线性路径替换影片的神经网络放大。默认的 auto 行为保留神经网络,仅在影片 GPU 时间超过现有的 40 ms 触发条件时回退。此开关不改变游戏画面的放大器,并且可能使影片图像看起来更柔和。它在 Windows 和 Linux 上都有效;RX_VK_NETWORK_KEEP=all 优先,并保持影片神经网络启用。
不使用 AppImage 自行构建:clang 和 lld(LLVM 23 或更新版本可读取 play profile;较旧版本会在没有它的情况下构建)、带 lz4、numpy、capstone、unicorn 和 zstandard 的 Python 3、FFmpeg 的开发文件(带 dav1d,用于影片)以及 SDL2。然后如上所述运行 python -I nx2/make_game.py ...,并将 RX_CPM 指向一个按 CPM 布局包含 Vulkan-Headers、SPIRV-Headers 和 VulkanMemoryAllocator 的文件夹(scripts/linux/deps.sh 会生成一个)。
scripts/linux/deps.sh 和 scripts/linux/appimage.sh 用于制作 AppImage。
新版本不是对你游戏文件夹的补丁:游戏会用新代码从你的副本重新构建。你的存档和设置会保留。每个版本的变化见 changelog.txt。
新构建在游戏文件夹中保留什么、替换什么:
构建本身无需安装任何东西:Hookshot Builder 自带编译器(llvm-mingw,与 TotK Recomp 相同)、Python 和库。不再需要 Visual Studio 和 Windows SDK。
64 位 Windows 10 或 11。
支持 Vulkan 1.3 和 mesh shader 的显卡,以及最新的驱动。仅测试过 NVIDIA。
16 GB 或更多内存。一次运行约使用 10 GB。
构建期间约需 60 GB 可用空间。
你的游戏副本需为受支持的版本:program 0400486024DEC000、update v131072、build e0f3ccfa。
其他版本无法使用。
从命令行构建还需要:
构建过程只读取你的游戏,从不修改它。它会写入你选择的文件夹和 %LOCALAPPDATA%\HookshotBuilder。
在磁盘允许的情况下,romfs 会被硬链接而不是复制。
卸载时,删除游戏文件夹和 %LOCALAPPDATA%\HookshotBuilder。
如果出现问题
问题
怎么办
"Hookshot supports build e0f3ccfa"
检查你是否选择了正确的游戏并安装了其更新
游戏打开后立即关闭
更新你的显卡驱动
第一次看到某物时卡顿
目前属正常:着色器正在准备中。再次经过同一地点时会改善
游戏语言不对
更改游戏旁 language.txt 中的代码。该文件列出了所有语言
如果问题持续存在,请报告你当时在游戏中的位置、你的显卡以及截图或视频。
切勿发送游戏文件。
在游戏中按 Insert,或手柄上的 Home 键(或同时按 Select 和 Start)。默认全部关闭,你的选择保存在游戏旁的 hookshot_options.ini 中。在手柄上,方向键选择和更改,底部面键也可更改,右键关闭菜单。
当游戏速度设为 Per frame 时,只要低于 60 fps 游戏就会变慢。Real time 则保持正常速度。
使用手柄,或键盘和鼠标。在键盘上,W A S D 移动,方向键转动视角。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。