Skip to content

Build BlueWake for iPhone and iPad on Windows (and Linux) through PadMint - #100

Draft
chrissotraidis wants to merge 13 commits into
mainfrom
codex/ios-module-windows
Draft

chrissotraidis wants to merge 13 commits into
mainfrom
codex/ios-module-windows

Conversation

@chrissotraidis

@chrissotraidis chrissotraidis commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Lets players build BlueWake's iPhone/iPad copy on a Windows PC (and Linux) through PadMint, with no Mac. First game in PadMint's plan for iPhone and iPad copies from Windows (chrissotraidis/padmint#135). Includes #42 (the Linux route). Not for 0.6.0: see "Before this can leave draft".

What changes

  • padmint.json (ios target): Windows x64/ARM64 and Linux hosts. On Windows and Linux the translate stage makes the game's source (scripts/windows/build.py --source-only, scripts/builder/build.sh --source-only), then the module is compiled with PadMint's open-source iPhone toolchain and BlueWake's bundled optimization profile, and PadMint adds it to the published app without game code. On a Mac the step runs the usual trained Xcode build with --app.
  • scripts/windows/build.py: runs on Windows on ARM (x64 tools under emulation); --source-only skips the app's optimization profile, which Visual Studio's clang 19 can't read.
  • scripts/builder/build.sh and the profile: --source-only off a Mac needs no Xcode, only a C compiler for the disc tool; disc_import.c gets a plain SHA-1 off Apple platforms.
  • README, docs/BUILD_YOUR_OWN.md ("On a Windows PC"), docs/WINDOWS_TASKS.md and the 0.6.0 release record describe the route. They say "from 0.6.0" and need the version that actually ships it.

What I checked (Windows 11 on ARM in Parallels on an M3 Max, my own GZLE01 disc; iPad Pro 12.9" M2, iPadOS 27.0.1, as a separate test app beside my normal install)

  • Windows translation makes the same verified source as the Mac and Linux builds (digest 54f54434…).
  • 43a8bd8 built on Windows in 285 minutes (0.6.0 build 5, against the 0.6.0 app without game code made with --app-only, which passes padmint audit). PadMint's import check, insertion, IPA check and publication gate passed. On the iPad it loads and runs the title and its automatic demo at 30 FPS with sound. Not played.
  • The Mac step with --app built through PadMint in about 3 hours, but the copy didn't open: PadMint's insert step leaves Xcode-built modules with a misaligned string table (mis-aligned LINKEDIT string pool on iOS 27). With PadMint Clouds and waves flickering (v0.5.0) #136's fix the same module loads and runs at 30 FPS.

Before this can leave draft

  • Mods: the source-only route stops before the mods step, so Windows-built copies have no Widescreen or Better Wind Waker options ([mods] available=0; the Mac copy has 3).
  • Speed: in the title demo the game thread is 69–82% busy in the Windows-built copy against 48–55% in the Mac-built one. The bundled profile made no measurable difference with PadMint's LLVM. An A13 device has much less headroom.
  • Mac players on older PadMint: with this recipe, PadMint 0.4.10 and older would give Mac players a copy that doesn't open. The Mac step should stay as it was until that's solved.
  • Play on the iPad, Sideloadly from Windows, and a native Windows x64 PC.

Two LLVM passes are superlinear on the composite chunks (one function each): the SLP vectorizer and the register coalescer. scripts/windows/build.py already passes -fno-slp-vectorize and -mllvm -large-interval-freq-threshold=10 for this reason. With PadMint clang 22.1.8 on an M3 Max, d_a_mgameboard chunk 0 took 155 s with them, against more than 3 h 49 min (still running) without.
@chrissotraidis chrissotraidis changed the title Build BlueWake's iPhone module on Windows too, through PadMint (includes #42) Build BlueWake for iPhone and iPad on Windows (and Linux) through PadMint Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant