Files
dolphin/docs/StarletOS_Handoff.md
T

138 lines
7.9 KiB
Markdown

# StarletOS integration handoff — 2026-10-03
This checkpoint publishes the existing emulator changes used by the companion
[StarletOS repository](https://git.yaya48.xyz/Yaya48/StarletOS). It is a recovered
source checkpoint, not a new claim that stock IOS or physical hardware is fully
supported. The Rust project's current phase is 10C, stock NCD probe H02B awaiting
SD staging and its physical result; consult its HANDOFF and phase reports.
## Published work
- The existing local commits c230971f07 (NAND conformance/diagnostic tools) and
a8dbbab62d (SD CMD6/conformance report) precede this integration checkpoint.
- 16 modified files and 6 previously untracked files are now tracked here:
ARM bootstrap ELF loader and tests, direct PPC/Starlet launch, read-only NAND
and explicit disposable-copy support, diagnostics and regression runner,
ARMv5TE LDRD/STRD handling, and the existing MSVC dependency-detection fix.
- `docs/StarletOS_Checkpoint.json` records SHA-256s of the 22 exact source files.
The companion repository also pins the published Dolphin commit.
- Every runtime byte matches the source snapshot captured before publication.
Only Git attributes, ignore rules and handoff metadata were added this turn.
- Inspection of 67 changed file versions in the two pending commits found no
available private NAND key/content markers, device identifiers or credentials.
The staged integration files were inspected separately before publication.
- No full rebuild, new emulator test or Wii test is claimed by this Git import.
Historical qualification remains in the companion project's phase reports.
## Other computers
Clone this fork beside `starlet-ios-rust`, checkout the commit pinned in
`StarletOS/support/dolphin/manifest.json`, then follow the companion
`docs/DEVELOPMENT.md`. The previous private base bundle and source overlay are
no longer needed to retrieve these sources: their commits are on this server.
Use `docs/Wii_Starlet_Bootstrap.md` for the existing build and test runner.
NAND, keys, user profiles, traces and generated builds remain local/ignored.
The `.starlet_user3` profile is needed only for the full Menu scenarios; the
standalone Starlet bootstrap probe does not need a NAND or keys.
The old `.before-p10a-h07b` script is retained locally as an ignored backup.
## Future sessions
Read AGENTS.md. Record the starting commit, changed behavior, actual tests and
remaining work. Update this handoff and any changed file hashes, commit to this
fork, then update the pinned dependency in StarletOS. Never label a build, a
source comparison or a fake emulator device as a physical Wii observation.
## Linux qualification — 2026-10-03
Starting checkout: master `54f5a74bbf4e3be8418a3e98d006436c16a23e40`, clean;
fetch and fast-forward-only pull found no divergence. All recursive submodules
were initialized at their recorded commits. No runtime/source bytes changed;
this addition records the first build on the destination Linux PC.
- Debian 13 x86_64, GCC 14.2.0, CMake 3.31.6, Ninja 1.12.1. Release build in
`.starlet_linux`: `StarletBootstrapProbe`, `dolphin-nogui`, `tests` succeeded.
Qt, X11/EGL, desktop audio/input, LLVM disassembly and optional integrations
were disabled; headless and tests enabled. The complete configuration is in
the companion `docs/LINUX_QUALIFICATION.md`. This is not a GUI qualification.
- 95 selected tests of bootstrap ELF loading, ARM execution, SRAM, DMA,
timer, register and IPC behavior passed. Google Test also reports two
existing disabled tests; they were not enabled. The rest of Dolphin's
unit suite was not run.
- Ten standalone bootstrap runs passed: idle, panic, fatal data, undefined
instruction and Phase 02 self-test, each in interpreter and JIT. Rust used
the companion's pinned nightly-2026-09-20. The Phase 02 trace still says
IRQ delivery deferred and timer flag relatch untested; no hardware inference.
- SHA-256 of Linux `StarletBootstrapProbe`:
`a536e5125c193d3ae23f3a5028e2f34df0359785d86191500c65ce7bcd9610f9`.
Tests: `6acf5f26206e5afee2b3fbe3fd149b7c7c4dcd1f035d4dc12b89193df1d13a6f`.
NoGUI: `bd0f9420428f07a1c8785c131f430cc0f9eed88a5723e2e56546291fa3b72544`.
- Logs are private/local in companion `target/linux-qualification-20261003/`;
their hashes and commands are summarized in its public traceability report.
All 22 pinned integration file hashes still match. The private Menu profile
and NAND were not used or modified by these standalone tests. No full Menu
replay or physical Wii test is established by this build.
Next: use the companion handoff. Stock-IOS H02B has now been copied to the
identified SD and verified after remount; the console result is pending.
Rebuilding its PPC binary under Linux remains unqualified (the exact devkitPro
packages could not be downloaded: HTTP 403). Preserve the archived probe.
This documentation commit changes the dependency pin, not the built code;
the executables above still report their build's original commit.
## Phase 11 IPC trace for the original IOS — 2026-10-06
Starting checkout: master `78738093ece433e9198213f91d43a3a0d60e3fa2`, clean;
fetch found no divergence. Companion: StarletOS Phase 11 proposal L2
(`docs/PHASE11_PROPOSAL.md`), approved by the user.
- `Source/Core/Core/HW/WII_IPC.cpp`: with the environment variable
`DOLPHIN_IPC_TRACE=1` and the original IOS running on the emulated Starlet
(`WiiIOSLLE`), every request Broadway posts (PPCCTRL X1) is logged as
`IPCTRACE RQ <addr> C <command> FD <fd> A <five argument words>` (an OPEN
adds ` P <path>`), and every reply Starlet posts (ARMCTRL Y1) as
`IPCTRACE RP <addr> C <original command> RC <result>`. Notice level, `WII_IPC`
log type. Metadata only: buffer contents are never read. Without the
variable, or in HLE mode, nothing changes.
- The file is now an exact integration file (`.gitattributes -text`, hash in
`docs/StarletOS_Checkpoint.json`, 23 files).
- Build: `.starlet_linux` `dolphin-emu-nogui` and `tests` rebuilt; the 95
selected Starlet tests (filter in the companion `docs/LINUX_QUALIFICATION.md`)
passed.
- Emulation smoke run (supporting evidence only, private log in the companion
`target/phase11/l2/`): headless, Null video, the companion's Phase 10C NAND
read-only behind a private profile's COW journal, original boot chain to the
System Menu for 5 minutes: 74342 requests and 74337 replies traced (5
asynchronous requests still pending at the stop).
- Limitation: this Linux build has no window platform (X11 disabled; the
system lacks the `xi` development package), so no one can point and click in
it yet. A separate X11 build directory is the next step once `libxi-dev` is
installed; the qualified headless build stays unchanged.
Next: the companion's Phase 11 L2c (the user launches the Mii Channel from the
Menu in a window with the trace on); analysis stays in the companion.
## X11 window build and the reference launch — 2026-10-06
No source change. The user installed `libxi-dev` and `libxrandr-dev`; a
separate build directory `.starlet_linux_x11` (the qualified options with
`ENABLE_X11=ON`, tests off) built `dolphin-nogui` in 2 min 53 s
(SHA-256 `a7d372f47e7265a4ebe20c71bde6f8dd63f22416b422551b960f526a604ebda4`).
The qualified headless `.starlet_linux` build is unchanged. On KDE Plasma
Wayland the window runs through XWayland (`-p x11`, Vulkan); the emulated
Wii Remote reads the mouse through XInput2.
Companion session L2c (emulation, supporting only): original boot chain and
IOS80, the companion's Phase 10C NAND read-only (hash unchanged after), no
Ethernet NAT; the user launched the Mii Channel from the System Menu and it
started. The `IPCTRACE` log shows ES LAUNCH right after the WiiConnect24
shutdown request; analysis is in the companion's Phase 11 STATUS (finding 9).
Known limit for the next companion step: in bootstrap (Revolution) mode the
emulated Wii Remotes are not initialized (`m_initialized` stays false), so
nobody can point at a channel there. Changing that is proposed in the
companion (proposal M1), not done.