- Python 68.1%
- Rust 30%
- PowerShell 1%
- C++ 0.9%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Exact source tree of local 7cf5996f6e515a006af39f8fe27c47bdd2873665 with the tested afa7b8c Peliarch toolkit exported as relative dependencies. Player-owned game image required. |
||
| fixtures | ||
| players | ||
| src | ||
| tests | ||
| tools | ||
| vendor/peliarch-toolkit | ||
| .gitattributes | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| PORTABLE-README.txt | ||
| README.md | ||
| supported-scope.json | ||
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.