HarkinianPad 是一个把 Ship of Harkinian(《塞尔达传说:时之笛》源码移植项目)集成为原生 iOS/iPadOS 应用的仓库。它面向 iPhone/iPad,使用 Metal 渲染,支持触控虚拟手柄、键盘、鼠标/触控板以及 iOS 游戏手柄,并通过 iOS Files 应用导入用户自备的合法 Ocarina of Time ROM。仓库重点是移动端适配、可复现构建脚本、签名/打包流程和 ROM-free 发布边界,不包含游戏 ROM 或可游玩的游戏数据。
适用领域
iOS/iPadOS 原生应用开发 / 游戏源码移植 / Metal 图形渲染 / SDL2 输入与控制器支持 / 复古游戏与主机游戏移植 / 可复现构建 / 侧载 IPA 与 Apple 签名流程 / 开源游戏工具链
配置难度
中高。对于熟悉 macOS、Xcode、Homebrew、iOS 签名和 C/C++ 构建链的开发者,按脚本构建并不复杂;但对普通玩家而言,ROM 合规、IPA 重签名、真机 provisioning、Files 导入和问题排查都有一定门槛。如果要参与开发或维护 Metal/SDL/iOS 移植层,难度会更高。
商业价值
该项目的直接商业化价值有限,因为它涉及第三方游戏 IP、用户 ROM、未明确顶层许可证和 Apple 分发限制,不适合直接作为商业 App 发布。它的主要价值在技术和社区层面:展示如何将成熟桌面游戏源码移植项目适配到 iOS/iPadOS,如何处理 Metal 渲染、触控控制、手柄输入、ROM-free 构建和可审计打包流程。对游戏移植团队、复古游戏社区、移动端引擎适配研究者具有较高参考价值。
01
技术亮点
- 原生 iOS/iPadOS 应用,而不是通用 N64 模拟器。
- 基于 Ship of Harkinian,面向 Ocarina of Time 的源码移植体验。
- 使用 Metal 渲染,支持模拟器和实体 iPad。
- 支持 iOS Files 应用导入 ROM,游戏数据只在本地生成和保存。
- 内置横屏触控控制器,包含摇杆、D-pad、A/B/Z、C 键、肩键、Start 和菜单按钮。
- 触控控制可在设置中隐藏或恢复,连接实体手柄时可以减少屏幕遮挡。
- 支持键盘、鼠标/触控板和 SDL iOS controller path。
- 提供可复现构建脚本,构建过程不读取用户 ROM。
- 打包脚本包含 ROM、ROM 衍生文件和签名材料的审计排除机制。
- 已有 unsigned developer-preview IPA 可供用户自行重签名测试。
- README 对版权边界、ROM-free 原则和发布前检查说明较清晰。
02
目标用户
- 希望在 iPhone 或 iPad 上运行 Ocarina of Time 源码移植版的玩家
- 熟悉 Xcode、签名、侧载流程的 iOS 开发者
- Ship of Harkinian/Shipwright 社区开发者
- 研究游戏移植到移动平台的工程师
- 关注 Metal、SDL2、触控控制器适配的游戏开发者
- 具备合法 ROM 且能自行处理版权合规的复古游戏爱好者
03
配置要求
- macOS 开发环境
- Xcode 与 Xcode Command Line Tools
- Homebrew
- Apple ID;真机安装需要可用的签名团队 ID
- 自定义且归自己控制的 Bundle ID
- iOS/iPadOS 14+ 设备或 iOS Simulator
- 合法获取且受支持的 Ocarina of Time ROM
- 构建依赖包括 cmake、ninja、pkgconf、sdl2、glew、nlohmann-json、libpng、libzip、tinyxml2、libogg、libvorbis、opus、opusfile、sdl2_net
- 如使用预览 IPA,需要 AltStore Classic 或类似侧载/重签名工具
04
适用场景
- 在 iPad/iPhone 上原生运行 Ship of Harkinian 版 Ocarina of Time
- 使用触控虚拟按键在无外接手柄情况下游玩
- 连接 iOS 兼容游戏手柄以获得更接近主机的操作体验
- 在 iOS Simulator 中进行 UI、输入和构建流程测试
- 研究如何把桌面端 C/C++ 游戏源码移植到 iOS
- 构建 ROM-free 的可分发 IPA,并让用户本地导入自己的 ROM
- 验证可复现构建、签名、打包和游戏数据排除策略
05
部署与配置
- 准备一台安装了 Xcode 和 Xcode Command Line Tools 的 Mac。
- 安装 Homebrew。
- 在 Xcode 中配置 Apple ID;如果要真机安装,需要可用于签名的 Apple 开发团队 Team ID。
- 准备自己合法获取且受支持的 Ocarina of Time ROM;仓库不会提供 ROM。
- 安装依赖:brew install cmake ninja pkgconf sdl2 glew nlohmann-json libpng libzip tinyxml2 libogg libvorbis opus opusfile sdl2_net。
- 克隆仓库:git clone https://github.com/chrissotraidis/harkinianpad.git && cd harkinianpad。
- 构建模拟器版本:scripts/build-ios.sh --simulator。
- 构建真机版本:DEVELOPMENT_TEAM=ABCDE12345 BUNDLE_ID=com.yourname.harkinianpad scripts/build-ios.sh --device。
- 真机 app 输出路径通常为 build-ios-soh/soh/Release-iphoneos/HarkinianPad.app。
- 如果 Xcode 需要注册设备或生成 provisioning profile,打开 build-ios-soh/Ship.xcodeproj,选择 soh target、目标设备和签名团队。
- 也可以下载官方 unsigned developer-preview IPA,然后按 docs/INSTALL_IPA.md 使用 AltStore Classic 重新签名并安装。
- 首次启动后,在 Files → On My iPad → HarkinianPad 中放入自己的 ROM,回到 App 点击 Rescan,等待本地生成 oot.o2r 后开始游戏。
06
风险与注意事项
- 许可证状态不清晰:仓库元数据为 NOASSERTION,README 也说明没有单一顶层项目许可证;商业或二次分发风险较高。
- 版权与合规风险明显:用户必须自备合法 ROM,不能分发游戏数据、ROM 或 ROM 衍生档案。
- 不是 App Store/TestFlight 发布,普通用户安装门槛较高,需要侧载、重签名或本地构建。
- 当前仍是 developer preview,部分硬件场景未完全验证。
- 音频虽然已在实体 iPad 听到,但耳机、蓝牙、系统中断恢复等矩阵测试仍不完整。
- 控制器路径已包含,但实体手柄重连、震动、motion 等功能仍需具体型号验证。
- 触控摇杆目前是八方向控制,无法完全替代实体摇杆的模拟精度。
- 只支持 Ocarina of Time,不支持 Majora's Mask,也不是通用 N64 模拟器。
- 需要 Xcode、签名、Bundle ID、provisioning profile 等 Apple 生态知识,对非开发者不友好。
- 上游 Shipwright、libultraship、SDL 等依赖较多,后续维护可能受上游变更影响。
2026-07-31
第23名
新收录 · github_search
2026-07-30
第27名
新收录 · github_search