10 KiB
StarletOS integration handoff — 2026-10-03
This checkpoint publishes the existing emulator changes used by the companion StarletOS repository. 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) anda8dbbab62d(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.jsonrecords 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,testssucceeded. Qt, X11/EGL, desktop audio/input, LLVM disassembly and optional integrations were disabled; headless and tests enabled. The complete configuration is in the companiondocs/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 variableDOLPHIN_IPC_TRACE=1and the original IOS running on the emulated Starlet (WiiIOSLLE), every request Broadway posts (PPCCTRL X1) is logged asIPCTRACE RQ <addr> C <command> FD <fd> A <five argument words>(an OPEN addsP <path>), and every reply Starlet posts (ARMCTRL Y1) asIPCTRACE RP <addr> C <original command> RC <result>. Notice level,WII_IPClog 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 indocs/StarletOS_Checkpoint.json, 23 files). - Build:
.starlet_linuxdolphin-emu-noguiandtestsrebuilt; the 95 selected Starlet tests (filter in the companiondocs/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
xidevelopment package), so no one can point and click in it yet. A separate X11 build directory is the next step oncelibxi-devis 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.
Emulated Wii Remotes for a Revolution session — 2026-10-06
Companion proposal M1 (approved by the user): replay the reference launch with Revolution instead of the original IOS, to see where Broadway stops.
REV_BOOTSTRAP_WIIMOTE=1(bootstrap-ELF mode, after the NAND and keys attaches):StarletMemory::EnableBootstrapWiimotesselects the identities paired in the attached NAND's SYSCONF (BT.DINF, decrypted with the keys) and creates the emulated Wii Remotes exactly as the original-IOS mode does.InstallEmulatedWiimotePairings(false)never rewrites SYSCONF: without a paired identity the remotes keep their default addresses. Without the variable nothing changes (the remotes stay absent, as before).- Checkpoint hashes updated for
Starlet.cpp,StarletMemory.cpp,StarletMemory.h. - Build:
.starlet_linux(dolphin-emu-nogui,tests) and.starlet_linux_x11; the 95 selected Starlet tests passed. - Without the variable, the companion's headless P11-H06 Menu regression
(
tools/regression/phase11_menu.py --step H06 --outcome Phase9Running --timeout 600) still passes on this build, NAND source and disposable copy identical.
Next: the companion's M1b (smoke test with the variable, no window) and M1c (the user launches the Mii Channel under Revolution in the X11 window).
Filesystem paths in the IPC trace — 2026-10-06
Companion proposal M1e (approved): under Revolution in the window the System
Menu's save before a launch got -106 on its second CREATE_DIR, and no trace
had the path. IPCTRACE RQ lines now end with F <path> for IOCTLs whose
input is a 64-byte path (DELETE, GET_ATTR), a 76-byte attribute record (path
at +6: CREATE_DIR, CREATE_FILE, SET_ATTR) or two paths ( F a > b, RENAME),
and for IOCTLVs whose first input vector is 64 bytes (READ_DIR, GET_USAGE);
F - when that field holds no valid path. Read from memory when X1 is
rung, like the OPEN path; nothing else of the buffers. Checked headless under
Revolution: /shared2/test2, /title/00000001/00000002/data/cache.dat, the
GET_USAGE directories. 95 Starlet tests passed.