← Back to stories

bunpav ·

Ocarina of Time Runs Natively on iPhone and iPad — HarkinianPad Is Not an Emulator

Kahris shipped HarkinianPad on July 27, 2026 — Ship of Harkinian on iOS/iPadOS with Metal, 60fps, and BYO ROM. Built with Codex 5.6 Sol. Install caveats inside.

8 min readbunpav crewMobile gamingIndie gamesGame Dev ToolsIndustry shifts

On July 27, 2026, Kahris (@chrissotraidis) posted a demo that cleared 248K+ views in hours: The Legend of Zelda: Ocarina of Time running as a native iOS and iPadOS app — not streamed from a Mac, not wrapped in a generic N64 emulator, and not stuck at the original 240p / ~20fps ceiling.

The project is HarkinianPad: Ship of Harkinian's decompiled OoT source port rebuilt for ARM64, Metal rendering, widescreen 60fps, Bluetooth controllers, and a landscape touch overlay. It fills the last major gap in Shipwright's platform list — Windows, Linux, macOS, Switch, Wii U, and Android already had ports; iOS never did, until now.

bunpav's take: this is the same preservation lane as Mario Kart Wiicompiled's static recomp story and the long-running Ship of Harkinian PC ecosystem — but the headline is mobile-native Zelda on your own hardware, plus a credible example of AI agents doing platform integration under a human maintainer who still ships open docs and unsigned IPAs instead of a survey download page.

TL;DR — what people searched after the viral clip

QuestionDirect answer
Is this an emulator?No — decompiled C rebuilt natively; Metal on iOS.
Can I download it today?Unsigned preview IPA or Mac + Xcode build — no App Store yet.
Do I need a ROM?Yes — legally acquired OoT ROM; app builds local oot.o2r.
iPhone or iPad only?Both in the build; Kahris demoed iPad; iPhone is in-tree.
Who made it?Kahris — iOS layer heavily assisted by Codex 5.6 Sol.
Majora's Mask?Not in this app — needs separate 2ship port.

What is HarkinianPad — and how is it not emulation?

Ship of Harkinian (Harbour Masters) is the community source port built on the Ocarina of Time decompilation — game logic turned into C, then compiled for modern platforms with quality-of-life features (widescreen, 60fps, mod support).

HarkinianPad does not bolt an N64 core onto iOS. Kahris's July 27 thread states the distinction plainly:

"The game was decompiled to C and rebuilt as a native ARM64 app rendering through Metal. No N64 hardware being simulated, no ROM interpreted at runtime, no streaming from a Mac."

That matches how we described Ship of Harkinian in Wiicompiled coverage: a native binary path, not "run the same ROM in an emulator shell." On iOS, the graphics stack is Metal instead of OpenGL/Vulkan on desktop.

What you actually get in-game

FeatureDetail
Resolution / framerateWidescreen, full device resolution, 60fps (per Kahris demo)
InputOn-screen touch layout; Bluetooth controllers; keyboard and mouse
Mods / cheatsShipwright features carry over — Kahris noted mod/cheat UI can explain non-vanilla screenshots
PlatformiOS / iPadOS 14+, arm64

Touch controls mirror Shipwright keyboard bindings — D-pad, eight-way stick, face buttons, C-buttons, shoulders, Start, plus a persistent menu button. The GitHub README documents hiding touch overlays when a physical controller connects.

Reproducible builds — why the repo stays ROM-free

HarkinianPad's maintainer scripts are explicit about separation of concerns: scripts/build-ios.sh pins upstream Shipwright revisions, applies iOS patches, and emits a ROM-free soh.o2r at compile time. Your cartridge dump never touches the Git history. scripts/package-ios.sh produces the unsigned preview IPA and runs audits that reject Simulator-only bundles, stray signing keys, and prohibited oot*.o2r assets.

That matters for trust. Viral sideload projects often hide copyrighted bytes inside "mod packs." Kahris's repo README states the preview IPA SHA-256 and tells you to re-sign locally — boring paperwork, but exactly what separates this from PCSX5-style download traps that promise instant AAA play with no build steps.

How did Codex 5.6 Sol fit into the port?

The viral angle is not just Zelda on iPad — it is how the iOS layer got built.

Kahris wrote on X that after extensive research he used Codex 5.6 Sol with one goal-based prompt, and the agent ran for hours on the heavy lifting: getting a full Shipwright tree to compile, link, and survive iOS app lifecycle — Metal rendering, UIKit integration, on-device ROM import through Files, and touch UI wiring.

Follow-up replies framed the hard part accurately: not "AI played the game," but platform integration — the kind of work that kills most "port X to iOS" side projects before TestFlight.

When @jonas asked whether the process is repeatable for other titles, Kahris pointed at games with available source — citing Jagged Alliance 2 as "super doable." That is a different pipeline from ROM-only static recomp, but it rhymes with the decomp / recomp golden age reply-thread sentiment (Twilight Princess on iOS elsewhere, Majora's Mask recomp, Wind Waker decomp in flight).

bunpav's read: treat this like Roblox Build's agent roadmapAI accelerates integration, humans still own legal posture, signing, hardware test matrices, and what ships on GitHub.

How do you install HarkinianPad in July 2026?

Read the official install table before you assume App Store simplicity.

MethodStatusCaveat
Developer-preview IPAAvailable — v0.1.0-preview.1 unsignedRe-sign with your Apple ID (AltStore Classic guide)
Local Xcode buildAvailable on MacNeeds Homebrew deps, team ID, your bundle identifier
Simulator buildAvailableGood for UI dev; not a substitute for device testing
App Store / TestFlightNot announcedKahris: no public listing yet

The maintainer documented physical testing on a 12.9-inch iPad Pro (6th generation) running iPadOS 26.5.2: Files import, local archive creation, touch play, saves, settings, and in-place updates exercised. Audio has been heard on device; headphone/Bluetooth/interrupt matrix and full controller rumble/motion testing remain incomplete per remaining-work docs.

First-launch flow (BYO ROM)

  1. Install the re-signed app or your dev build.
  2. Launch once so iOS creates the HarkinianPad folder in Files.
  3. Drop your supported Ocarina of Time ROM into that folder.
  4. Tap Rescan in-app; wait for local oot.o2r generation.
  5. Start from touch or controller.

The compile pipeline never reads your ROMscripts/build-ios.sh pulls pinned upstream Shipwright, applies maintained patches, and builds ROM-free soh.o2r. Your ROM enters only after install, on device.

Kahris's thread drew the usual rights questions. His answer to @nintendo_chall:

"It's an unofficial iOS port of an open-source project. No game or ROM is included. I made it because native iOS support didn't exist."

The GitHub legal section repeats: not affiliated with Nintendo or Harbour Masters, no ROM downloads, community project only.

Practical caveats — same family as Wiicompiled's legal section:

  1. Dump your own ROM if you own the cartridge/disc. Random ROM sites are still copyright infringement.
  2. No Nintendo assets in the repo is the strongest fan-project posture — not a guarantee against takedowns.
  3. Unsigned sideloading expires with Apple ID cert limits; expect re-signing chores.
  4. Licensing is fragmented — upstream Shipwright/libultraship pieces carry their own licenses; README warns against calling the bundle "fully redistributable open source" without reading each layer.

Ship of Harkinian has operated for years on desktop under BYO-ROM rules; HarkinianPad extends that model to iPhone/iPad — higher visibility, same legal gray zone.

What's next — 2ship, Wind Waker, and the decomp pipeline

Reply-thread context worth tracking:

  • Majora's Mask needs 2 Ship 2 Harkinian — a separate engine. Kahris told @kristianfreeman "On it 😉" when asked for 2ship next.
  • Community chatter links Twilight Princess already running on iOS via other ports, plus Wind Waker decomp work — Kahris called it "officially the golden age of decompilation."

For bunpav readers tracking preservation vs platform lock-in: Sony's January 2028 disc manufacturing cutoff and Nintendo's closed mobile store are opposite pressures — fan native ports do not replace buying official releases, but they change what owned hardware can run offline without a PC in the loop.

What should you do this week?

  1. Read harkinianpad README + INSTALL_IPA before sideloading — unsigned IPA means your signing workflow, not a one-tap App Store install.
  2. Prepare a legal ROM source and expect on-device oot.o2r generation time on first scan.
  3. Use a Bluetooth controller for serious play — touch is complete but eight-way stick is not full analog.
  4. Do not download "OoT iOS IPA" from random Telegram or SEO pages — same malware pattern as PCSX5 fake emulators.
  5. Star/watch the GitHub repo for 2ship iOS news if Majora's Mask is your goal — it will not appear in HarkinianPad builds.
  6. If you are a developer, study Kahris's patches and build scripts as a template for Metal + Files + SDL controller integration on decomp ports — not as permission to redistribute ROMs.

Install methods, preview IPA version, iPadOS test version, and feature checklist reflect the HarkinianPad repository and Kahris's public posts as of July 28, 2026. Apple signing rules, GitHub release tags, and controller compatibility notes can change — verify the repo before sideloading.

Player questions

Is HarkinianPad an N64 emulator?

No. HarkinianPad packages Ship of Harkinian — Ocarina of Time decompiled to C and rebuilt as a native ARM64 app that renders through Metal. It does not simulate N64 hardware or interpret a ROM at runtime like Project64 or RetroArch would.

Does HarkinianPad include Ocarina of Time?

No. You must supply your own legally acquired supported Ocarina of Time ROM. The app imports it through the iOS Files UI, builds a local oot.o2r archive on device, and never bundles Nintendo game data in the GitHub repo or unsigned preview IPA.

How do you install HarkinianPad on iPhone or iPad?

As of July 2026 there is no App Store or public TestFlight build. You can download the unsigned developer-preview IPA (v0.1.0-preview.1) from GitHub Releases and re-sign it with your Apple ID via AltStore Classic, or build and sign locally on a Mac with Xcode using scripts/build-ios.sh.

Who built HarkinianPad and did AI write the port?

Kahris (@chrissotraidis) led the project and open-sourced it at github.com/chrissotraidis/harkinianpad. He stated on X that Codex 5.6 Sol did the bulk of the iOS integration after a goal-based prompt and extensive research — Metal, UIKit, Files-based ROM import, and surviving the iOS app lifecycle — while he directed and validated the work.

Will Majora's Mask work in HarkinianPad?

No. Majora's Mask uses the separate 2 Ship 2 Harkinian engine. HarkinianPad only supports Ocarina of Time via Ship of Harkinian. Kahris replied on X that a 2ship iOS port is on his radar when asked about Majora's Mask.

Is HarkinianPad legal?

The project is an unofficial community port, not affiliated with Nintendo or Harbour Masters. It distributes integration code and build scripts only — not ROMs. You are responsible for complying with copyright law for any ROM you import. Nintendo has not endorsed the project; fan decomp ports remain legally gray depending on jurisdiction and how you obtain game data.

More to read