Skip to content

Build SunPad's iPhone game module through PadMint, also on Linux - #57

Draft
chrissotraidis wants to merge 12 commits into
mainfrom
codex/padmint-ios-module
Draft

chrissotraidis wants to merge 12 commits into
mainfrom
codex/padmint-ios-module

Conversation

@chrissotraidis

@chrissotraidis chrissotraidis commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

Build the player’s iPhone/iPad game module through PadMint’s shared open-source iPhone SDK on Linux ARM64, Linux x86-64, or Apple silicon. The recipe bootstraps sources, validates and translates the owner’s disc, builds the module, checks imports, and inserts it into the published app. Linux preparation uses its local compiler for the temporary host module and fetches cpp-ipc; Xcode/xcrun requirements apply only to Mac hosts.

Validation

Game builds below use SunPad 81a66cb, PadMint main 7758cf4, the supported owner-provided disc and the checksum-verified v0.2.1 base app. Code head 8ad8283 integrates the Mac packaging fix (#72), host probe guards (#73), save-import fix (#74) and a corrected descriptive recipe note. The module build commands, compiler pin, module template, GXRuntime and StaticRecomp ABI inputs remain unchanged. The recipe still adds the personal module to the published v0.2.1 app; newer app features are tested separately. The combined source suite passes. All three hosted checks pass at code head 8ad8283 (run 38374324679): source safety, clean iOS and clean tvOS. Final head 4871238 adds only the verified desktop save/reload record in two documentation files; all three hosted source, iOS and tvOS checks also pass at this exact final revision (run 38378723642). Host probe guards #73 and save-import fix #74 are now merged; the draft remains mergeable with the same tested tree. No fresh personal game build is claimed at 4871238.

  • Mac: scripts/player-check.sh passed with Apple Python 3.9.6, an empty PadMint folder and a fresh checkout. Translation, generated-code audit, host/iPhone module compilation, imports and IPA checks all passed. Personal IPA SHA-256: 8eacbf71a403ad2843a85ba85101abab83ca82f4e8910d37fcbdeefca3ffedd0.
  • Linux ARM64: the refreshed Ubuntu 24.04 / LLVM 21.1.8 build passed. The first run was deliberately interrupted after native preparation to change module parallelism from two to six jobs. Its exit-130 record is retained. The completed rerun reused native preparation, refreshed the SDK and recompiled the module with unchanged source/flags; it is not an uninterrupted empty-cache result.
  • Linux x86-64: one uninterrupted build passed using a separate Ubuntu 24.04 container, separate native caches and LLVM 21.1.8. This container ran under emulation on Apple silicon; timing is not native-Linux performance evidence.
  • All 225 generated files match across the three hosts. Both Linux hosts produced byte-identical modules and personal IPAs. Linux IPA SHA-256: 0d74389bb27aea7ab654f85d6d28aad30ee4dfe920c6d3e10e6b20c2422a205c.
  • Independent artifact readbacks verified ZIP integrity, all 2,797 original base-app entries unchanged, and exactly one added arm64 iOS module with minimum OS 16.0. Each module imports zero app symbols and three device C/C++ symbols. Artifacts and full records remain private and personal-only.
  • The fresh Mac check exposed missing tool setup and base-app forwarding in PadMint’s player-check helper. Merged PadMint #152 fixes both; 333 tests passed on Apple Python and all ten CI checks passed.

Device evidence and remaining gate

USB AFC backup plus an independent traversal verified all 423 regular Documents/Library files. Only a confirmed nonpersistent runtime FIFO was excluded; a recursive copy had stopped there despite exiting successfully. A further local readback rechecked every saved hash.

The verified Mac-built candidate was signed with the installed app’s team and application entitlements, passed strict signature verification, and was installed in place on an iPhone 14 running iOS 26.6.2. Saves and preferences were unchanged after installation; the save stayed unchanged after launch. The opening scene rendered. QuickTime caused an audio interruption; closing the preview and relaunching cleared it. Short startup observations are not hands-on audio/gameplay or controlled performance acceptance.

The maintainer will check the existing save, movement, camera and sound later. Keep this PR draft until that verdict and a physical check of a Linux-built module, with a refreshed backup before any further install. A refreshed private app at 0373950 for the save/controller/profile checks is built, signed and independently verified, but has not replaced the installed candidate. It uses the unchanged personal module and includes the save-import failure guard from #74. The separate Mac packaging fix is merged in #72.

A separate desktop check now completes improvement task 1.3: a private copied save loaded into Delfino Plaza, the in-game menu reported Save complete, and a fresh process loaded the newly written save again with its Shine intact and responsive movement/pause controls. Save hashes stayed unchanged across shutdown/reload. A backup was present; no recovery event was triggered. Screenshots, runtime logs and independent hash review remain private. Task 1.4 still requires the physical-device termination/recovery session.

No new release is published or authorized by these results. Existing content/provenance gates and the controlled Noki measurement remain open.

@tssmtyb-ui

Copy link
Copy Markdown

Huge thanks for working on Linux support! Really excited to see this progress and looking forward to trying it out once it's ready :D

@pzjk3t

pzjk3t commented Oct 10, 2026

Copy link
Copy Markdown

Linux support ? Lets gooooo!

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.

3 participants