Super Mario Sunshine native Archipelago WIP client, portable launcher and supported solo campaign.
  • Python 68.1%
  • Rust 30%
  • PowerShell 1%
  • C++ 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Alaric McKenzie-Boone c71d1e3e5d Publish Sunshine Archipelago Windows WIP source snapshot
Exact source tree of local 7cf5996f6e515a006af39f8fe27c47bdd2873665 with the tested afa7b8c Peliarch toolkit exported as relative dependencies. Player-owned game image required.
2026-10-14 13:51:45 -04:00
fixtures Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
players Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
src Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
tests Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
tools Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
vendor/peliarch-toolkit Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
.gitattributes Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
.gitignore Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
Cargo.lock Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
Cargo.toml Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
LICENSE Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
PORTABLE-README.txt Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
README.md Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00
supported-scope.json Publish Sunshine Archipelago Windows WIP source snapshot 2026-10-14 13:51:45 -04:00

Sunshine Archipelago WIP

An independent native Super Mario Sunshine Archipelago integration, with a Windows playable package and inspectable client source. A full campaign on the current playable binaries has not been played.

Download the Windows ZIP from this repository's WIP releases. Extract the whole ZIP to a writable folder and open Sunshine Archipelago.cmd. It asks for your own USA GMSE01 revision 0 ISO/NKit image. No game image, extracted Nintendo assets, player saves or credentials are included. The package includes the native port, Peliarch GUI client, embedded Python and a local AP server; no compiler, Python or AP installation is required to use it.

The included SunshinePlayable solo example uses normal randomization: 87 active checks, 70 Shine items, 50 Shines required for Corona. It needs no partner, plando or server item commands. The original world model reaches every active check and Victory in eight progression spheres. Play normally, choose the save for this run and save once to enroll. Subsequent launches resume its paired native card, bridge journal and AP server save in runs/solo. Preserve that whole folder when moving or backing up the package. Use a separate complete profile for another seed/slot; the player chooses the matching save.

Keyboard: Enter pauses, Space confirms, Escape quits. After receiving the capabilities, 3 / D-pad left equips Hover, 2 / D-pad down Rocket and 4 / D-pad right Turbo. If a ticket or Yoshi arrives while already in Plaza, Save & Continue and reopen the game to refresh entrances and objects.

Supported scope and evidence

The supported profile uses tickets, normal starting Spray, normal difficulty, Shine quantity, all four nozzle capabilities, Yoshi and 1-UP. Blue Coinsanity, nozzle-box checks, 100-coin checks, selectable-all episodes, alternate starting nozzles, higher difficulty and DeathLink are outside this WIP profile. Exact option values and limitations are in supported-scope.json. Runtime reachability is unknown; generation uses the original world logic.

Evidence is deliberately bounded:

  • Generation and original-world contract coverage: 87 checks, 70 Shines, 50-Shine Corona, every active check and Victory reachable in the model.
  • Actual AP server and compiled production-bridge harness: all 87 check receipts, 89 item tuples including two starting items, seven applied 1-UP receipts, reconnect/restart and AP completion status 30. Physical/save callbacks are substituted in that harness; this is not a game playthrough.
  • Player-confirmed physical partner Airstrip pickup and receiver Shine count 0 to 1 on the earlier two-slot profile. A normal save serialized that Shine; a fresh headless process loaded a copy and retained it, the same GUID, checks [1,63] and four receipts. That reload used no AP connection or new grants.
  • Rendered Rocket firing, ordinary Save & Continue, fresh normal card load and Rocket firing again passed on an isolated earlier profile. The current playable executable also passed bounded normal menu/load compatibility on a copied card.
  • Portable package real AP authentication and native runtime relocation tests launch no visible game or GUI. Save B/C isolation remains deferred optional testing. The complete current solo campaign remains unplayed.

fixtures retains the generation, server, contract and native load reports. package.json inside the download pins every distributed file. The download uses the previously tested playable client and native executable; the bundled matching SDK source is independently compiled and tested.

Connect your own supported AP room

The included solo seed is an example. From the extracted package in PowerShell:

& '.\Sunshine Archipelago.cmd' --server 'ws://HOST:PORT' --slot 'YourSlot' `
  --profile 'my-room' --disc 'C:\games\my-owned-sunshine.iso'

This creates a separate runs/remote-my-room native card/bridge pair and does not start the bundled solo server. Keep that pair for reconnects. Use the existing Super Mario Sunshine world and the exact supported options; the client refuses unsupported contracts. For a passworded room, set an environment variable and add --password-env NAME; passwords are not stored in the launcher arguments. Use wss:// when the server provides TLS. Headless remote preflight is available by adding --verify-server; it opens no game or GUI. Remote auth uses the same client but arbitrary external rooms have not been manually played through.

For the included local seed, these open no game or GUI:

& '.\Sunshine Archipelago.cmd' --plan
& '.\Sunshine Archipelago.cmd' --verify-server

The second command creates/resumes real local AP state. Logs are under the run's launches directory. To restart the fixed seed from scratch, preserve and move the entire runs/solo folder aside first. Never mix its component saves.

Build the client source

The repository includes a neutral MIT-licensed Peliarch toolkit export under vendor/peliarch-toolkit, derived from revision afa7b8c290a2502de70971072f75d16675b45252. Cargo dependencies use relative paths; no private server or developer checkout is needed. The export manifest records its files and independent lockfile. The public websocket fork is pinned by revision in that SDK. Install the Rust nightly MSVC toolchain and Windows MSVC build tools, then from the repository root:

cargo build --features gui --locked
cargo test --features gui --locked
cargo clippy --features gui --all-targets --locked -- -D warnings
cargo fmt -- --check

Native source/build and licenses are published alongside this integration. The tested native code revision is ac40c4b26771ab44d6182e6a938271fbf001f789 (docs revision 64a547e). Its upstream decompilation uses CC0; the port and integration use MIT, with additional runtime and embedded-code notices shipped in the package. No bundled disc is enabled.

The existing SMS world is Joshark/archipelago-sms, pinned at 20cc30b58613ee28a7fe3dd4143f96c33fdadf72; this source snapshot differs from the published world 0.6.2 release. The client preserves that world's network identities and ordered IDs rather than creating a replacement APWorld.

Packaging and historical engineering tools

tools/package_wip.py builds a fresh package from explicit tested client/game/seed, native DLL/license, AP core runtime and shared server helper inputs. It refuses changed binary pins or an existing destination and downloads official CPython 3.12.10 embedded plus pinned Windows wheels. The distributed AP 0.6.8 runtime's source and individual hashes are included. Run python tools/package_wip.py --help for its complete input list. tools/portable.py is the package's independent launcher; it discovers everything relative to its extracted root, authenticates freshly before native launch, keeps run saves paired and stops only its own children.

The older launch_test, preparation and fixture tools retain historical local workspace defaults for reproducing earlier experiments. They are not the download's entry point. Historical fixture paths identify evidence locations, not installation requirements. No complete campaign claim is inferred from those records.