gui: add N64 development board (Ultra64) support#48
Merged
Conversation
Surface the upstream ultra64 devkit (dec9ea2) in iris-gui. - Enable the `ultra64` iris feature in iris-gui (additive, alongside chd/camera/jit/rex-jit). It pulls in shared_memory + raw_sync, both cross-platform, with no runtime cost when the board is off. - Add an "N64 development board (Ultra64)" toggle to the General tab, bound to cfg.ultra64.enabled. It's read once at VM start and persists in the machine store (gui.json) via serde. - Add a Help -> "N64 development board (Ultra64)..." getting-started guide: enable the board, build/run the gopher64 `ultra64` fork, then gload a ROM from IRIX. Includes the `ultra` monitor commands. - Expose build_features::ULTRA64 and report it in the Help build-features list (honest about the sandbox, like jit/rex-jit). The toggle and Help guide are hidden in App Store builds: the sandbox can't open the POSIX shm bridge (no application-groups entitlement) and can't run the external gopher64 process the board talks to. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds GUI support for the N64 development board (Ultra64) introduced in dec9ea2, so it can be enabled and used without hand-editing
iris.toml.The core feature already exposes a single runtime knob (
[ultra64] enabled) gated behind theultra64cargo feature. This wires that intoiris-gui:ultra64iris feature iniris-gui(additive, alongsidechd/camera/jit/rex-jit). Pulls inshared_memory+raw_sync(both cross-platform); no runtime cost when the board is off — the GIO device and POSIX shm bridge are only created when the user enables it.cfg.ultra64.enabled. Read once at VM start; persisted in the machine store via serde.ultra64fork, thengloada ROM from IRIX — plus theultramonitor commands and a link todocs/ultra64.md.build_features::ULTRA64is exposed and reported in the Help build-features list.App Store / sandbox
The toggle and Help guide are hidden in
appstorebuilds (#[cfg(not(feature = "appstore"))]). Under the macOS App Sandbox,shm_openrequires thecom.apple.security.application-groupsentitlement and an app-group-prefixed name — neither of which the sandboxed build has — soUltra64::newcan't create/iris_n64_bridge. The board also depends on an external, separately-compiled gopher64 process that a sandboxed app can't coordinate. (Ultra64::newalready fails gracefully and boots without the board, so this is purely about not surfacing an unusable control.)Testing
cargo build -p iris-gui— clean.cargo build -p iris-gui --features appstore— clean (toggle + Help item compiled out; thecfg.ultra64field and help window still compile).🤖 Generated with Claude Code