IOS LLE: checkpoint NAND conformance and diagnostic tooling
Preserve formatted NAND boot and Wii Remote pairing, add DMA/SRAM conformance tests and a Wii comparison probe. Keep P1 profiling tools and native update A/B evidence; reject the unhelpful targeted SRAM shortcut.
This commit is contained in:
1 parent
b931671fde
commit
c230971f07
64 files changed
+6488
-238
No files matched your search
@@ -0,0 +1,59 @@
|
||||
# Wii IOS conformance probe
|
||||
|
||||
This is the first black-box comparison probe for the original IOS running on a
|
||||
real Wii and under this fork's Starlet LLE mode. Build **one** DOL and run that
|
||||
same file in both places. It records 64 rounds of IPC-backed resource-manager
|
||||
open/close calls in all four open modes, missing-device errors, root directory
|
||||
counts, installed-title counts, and an SD write/read/hash/cleanup round trip.
|
||||
The output contains 1,860 numbered observations. The probe requests no NAND
|
||||
writes, installs no IOS, and does not blindly scan MMIO registers. It creates and
|
||||
removes only `sd:/wii-conformance-data.bin` on the SD card.
|
||||
|
||||
## Build
|
||||
|
||||
Install devkitPPC and libogc/libfat using devkitPro, set `DEVKITPRO` and
|
||||
`DEVKITPPC` in the build shell, then run `make` in this directory. The output is
|
||||
`wii-conformance.dol`. On this Windows machine, the following command was used
|
||||
successfully from this directory in PowerShell:
|
||||
|
||||
```powershell
|
||||
& 'C:\devkitPro\msys2\usr\bin\bash.exe' -c 'export DEVKITPRO=/c/devkitPro DEVKITPPC=/c/devkitPro/devkitPPC; export PATH=/c/devkitPro/devkitPPC/bin:/c/devkitPro/tools/bin:/usr/bin:/bin; make'
|
||||
```
|
||||
|
||||
The ready-to-copy Homebrew Channel folder is `apps/wii-conformance/`, containing
|
||||
`boot.dol` and `meta.xml`. This build has not yet been run on a physical Wii.
|
||||
|
||||
## Capture
|
||||
|
||||
1. Use a Wii and a Dolphin LLE profile with the same IOS version and revision.
|
||||
For exact directory/title counts, use the same NAND snapshot, starting state,
|
||||
and loaded title. The SD cards need enough free space for a 4 KiB test file
|
||||
and the CSV output.
|
||||
2. Copy `apps/wii-conformance/` to the `apps/` folder on each SD card and launch
|
||||
it through the Homebrew Channel. Use the exact same `boot.dol` on both runs.
|
||||
Dolphin LLE requires a configured writable virtual SD image.
|
||||
3. After the program returns, copy `sd:/wii-conformance.csv` from each SD card
|
||||
to separate files such as `wii.csv` and `dolphin.csv`.
|
||||
4. Compare them with `python compare.py wii.csv dolphin.csv`. Exit code 0 means
|
||||
all recorded observations agree, 1 reports differences, and 2 means the
|
||||
captures are invalid or use different IOS versions.
|
||||
|
||||
The CSV contains no keys or NAND contents. An allocated IOS file descriptor is
|
||||
normalized to success/failure because its numeric value depends on unrelated
|
||||
open handles. Call return codes and output counts remain exact. Time is not
|
||||
compared in this first suite because scheduling and output I/O introduce noise.
|
||||
`captures/` is kept local and ignored by Git until each capture's console or
|
||||
emulator provenance, IOS revision, probe binary hash, and initial NAND state
|
||||
are documented. A filename alone is not evidence that a capture came from a
|
||||
physical Wii.
|
||||
|
||||
## Interpretation and next suites
|
||||
|
||||
A mismatch identifies a reproducible behavior to investigate; it does not by
|
||||
itself locate a bad register. Trace the first failing request inside Dolphin's
|
||||
Wii IPC, Starlet memory bus, and the relevant device. The next test suites
|
||||
should use explicit stimulus/response cases for IPC flag acknowledgements,
|
||||
shared-memory cache visibility, DMA, IRQ ordering, and individual devices.
|
||||
PPC homebrew cannot inspect every Starlet register while Nintendo IOS is
|
||||
running. A separate Starlet-side probe under MINI/BootMii can test raw
|
||||
hardware registers, but its results must be labeled as MINI-mode tests.
|
||||
Reference in new issue
Block a user