Shell · 项目报告

chrissotraidis/harkinianpad

Ocarina of Time native on iOS and iPadOS via Ship of Harkinian with Metal rendering, touch controls, controller support, and ROM-free reproducible builds.

已完成 打开 GitHub
C
297星标
22Fork
0Issue
NOASSERTION许可证

分析结果

项目分析

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