Track exact StarletOS bootstrap integration and checkpoint provenance
Recover 16 modified and 6 previously untracked integration files. All 22 source SHA-256s match the pre-publication StarletOS snapshot. Add handoff instructions, byte-preserving attributes and private backup exclusion. This commit publishes existing behavior; it does not claim a new full build or hardware qualification. The two preceding local commits and staged files were screened before publication.
This commit is contained in:
1 parent
a8dbbab62d
commit
54f5a74bbf
28 files changed
+9161
-7407
No files matched your search
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"recordedAt": "2026-10-03",
|
||||
"purpose": "Publish the exact existing StarletOS integration, without emulator behavior changes",
|
||||
"sourceBaseCommit": "a8dbbab62de0ec429d9d887c39b9669c75f51c21",
|
||||
"previousRemoteMaster": "b931671fde1e0461cbca37eeb8348a25d44ab76e",
|
||||
"companionRepository": "https://git.yaya48.xyz/Yaya48/StarletOS",
|
||||
"companionCheckpoint": "efa8b310da2c3e3bd36d762080d42d410a5413c9",
|
||||
"files": [
|
||||
{
|
||||
"path": "CMakeLists.txt",
|
||||
"sha256": "1ed308f4ccc9d6a4405d9ec232a4ac64fb88aa9c69a4773ee93fe7c62b357d4d",
|
||||
"bytes": 34657
|
||||
},
|
||||
{
|
||||
"path": "Run-Wii-Starlet-Bootstrap.ps1",
|
||||
"sha256": "486f99f899fde18371b7bfc2b67fcf12a64ceb748285cc00ae4a71716349d07a",
|
||||
"bytes": 18583
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/Boot/Boot.cpp",
|
||||
"sha256": "43a0b1c2e60c9a362fe3637ba0aa7b23e8b75ce5e5517cd3515b50ec596c43a5",
|
||||
"bytes": 27009
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/CMakeLists.txt",
|
||||
"sha256": "32dc85b995c9beb3739cc1ea554c308042e16b6c270071550728d18c85ada79e",
|
||||
"bytes": 24388
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/Config/MainSettings.cpp",
|
||||
"sha256": "e331e8f7145ebfce5cd3d2be1b3dabe1dce597e8040132402f04a0152526ce56",
|
||||
"bytes": 47583
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/Config/MainSettings.h",
|
||||
"sha256": "9052fbc4a1da18ea3e8a11a93d62ef06423da74671b1f9b1091bb62f1fcff62b",
|
||||
"bytes": 18437
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/ConfigManager.cpp",
|
||||
"sha256": "7d369d0264f5a1ad0df5ac44e9b6ea0f514a196ec7f80952218f9439ab17ea10",
|
||||
"bytes": 19807
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/HW/HW.cpp",
|
||||
"sha256": "7e9bcfff87f526510aad149e781ae57140e32f7b32beafec00271fbcdb152848",
|
||||
"bytes": 4526
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/IOS/Starlet/ARMCore.cpp",
|
||||
"sha256": "40d45aed7c5edb4540105dcdee4dd8dcde88c21ba7f3279eff0a9564f2d02a29",
|
||||
"bytes": 75597
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/IOS/Starlet/BootstrapELF.cpp",
|
||||
"sha256": "344e6e38922b64fa58d9755c2df5fd752b00cf3dc73114809f6e9cada724c42a",
|
||||
"bytes": 8554
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/IOS/Starlet/BootstrapELF.h",
|
||||
"sha256": "b25184cb4d3934e02220417b8e4b8005fc57010f4d3ab7af697c98f11afb305f",
|
||||
"bytes": 943
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/IOS/Starlet/Starlet.cpp",
|
||||
"sha256": "78e3b006501af06fbef220d95213690f8a31ed5b3c36699c6e07ba58be3ba852",
|
||||
"bytes": 26039
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/IOS/Starlet/Starlet.h",
|
||||
"sha256": "5dbdd1a854fd17377a339886949d80ebb1969d6453a4bdfd5a6f9a503bbb4f2a",
|
||||
"bytes": 3553
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/IOS/Starlet/StarletMemory.cpp",
|
||||
"sha256": "34900b6c340e412f99ddb3ce6ba17bdb4d85ba7b27b2adc522315b158b675fca",
|
||||
"bytes": 189757
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/Core/IOS/Starlet/StarletMemory.h",
|
||||
"sha256": "cfa3aee13f260590ae9f7cdd48f8f08d1c67e4e6d647ef3eca6e01d472dbdd29",
|
||||
"bytes": 14873
|
||||
},
|
||||
{
|
||||
"path": "Source/Core/DolphinNoGUI/PlatformHeadless.cpp",
|
||||
"sha256": "1390cff0a139f0b0a90559e0fda855446d279190827a6c5079718421924f4041",
|
||||
"bytes": 2533
|
||||
},
|
||||
{
|
||||
"path": "Source/UnitTests/CMakeLists.txt",
|
||||
"sha256": "bb0aeb694c2f328b891e5e961fe0af16c5b30ff1a5f02d4a8d84bdfa5930b581",
|
||||
"bytes": 1659
|
||||
},
|
||||
{
|
||||
"path": "Source/UnitTests/Core/CMakeLists.txt",
|
||||
"sha256": "563899ae142ba4d0e146bb125bd35c8387a77d25db5ac48cf8ba48a32cb30314",
|
||||
"bytes": 2043
|
||||
},
|
||||
{
|
||||
"path": "Source/UnitTests/Core/IOS/Starlet/BootstrapELFTest.cpp",
|
||||
"sha256": "62d483a737b68cca00e51c4a93511b4863022ed2f4b90e721ff36325630cfc3a",
|
||||
"bytes": 7057
|
||||
},
|
||||
{
|
||||
"path": "Source/UnitTests/Core/IOS/Starlet/DMATest.cpp",
|
||||
"sha256": "15b0816292fff6dcf48d485466f7bf495f2128ba625f3e7c1f225614be631e84",
|
||||
"bytes": 16450
|
||||
},
|
||||
{
|
||||
"path": "Tools/StarletBootstrapProbe/StarletBootstrapProbe.cpp",
|
||||
"sha256": "83873691164d9b92e3be62f699146feaf8ab713bcb45d25821975e7454f56ede",
|
||||
"bytes": 6179
|
||||
},
|
||||
{
|
||||
"path": "docs/Wii_Starlet_Bootstrap.md",
|
||||
"sha256": "bd7ec585472dc44815da8fcb2be6d726b91f04dd0964d82097842fb4ba764021",
|
||||
"bytes": 4937
|
||||
}
|
||||
],
|
||||
"checks": {
|
||||
"sourceSnapshotMatchesPriorStarletOSArchive": true,
|
||||
"unpublishedHistoricalFileVersionsScanned": 67,
|
||||
"privateFindings": 0,
|
||||
"newFullBuildOrHardwareTest": "NOT RUN: publication of existing qualified bytes only; see companion phase reports"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
# 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.
|
||||
@@ -0,0 +1,98 @@
|
||||
# Starlet Rust bootstrap in this Dolphin fork
|
||||
|
||||
This fork can load the Phase 01 Revolution IOS ELF directly into Starlet SRAM. The loader uses
|
||||
the ELF's two `PT_LOAD` segments, zeroes their uninitialized tails, starts the ARM core at
|
||||
`0xffff0000` in big-endian supervisor mode, and publishes `REV_TRACE` lines in the IOS log.
|
||||
No boot0, keys, or NAND dump is needed for the standalone probe.
|
||||
|
||||
## Fast development loop
|
||||
|
||||
Build the Rust ELF from `starlet-ios-rust`:
|
||||
|
||||
```powershell
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
Configure this Dolphin fork with `ENABLE_TESTS=ON`, then build `StarletBootstrapProbe`. Run
|
||||
the build commands from an x64 Native Tools Command Prompt (or after `vcvars64.bat`). For the
|
||||
local MSVC configuration:
|
||||
|
||||
```powershell
|
||||
cmake --build .starlet_msvc2 --target StarletBootstrapProbe
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File .\Run-Wii-Starlet-Bootstrap.ps1
|
||||
```
|
||||
|
||||
The script defaults to the sibling Rust repository's release ELF. It prints every trace line,
|
||||
the stopping PC, and the ARM instruction count; it exits nonzero for a missing marker, fault,
|
||||
or invalid ELF. `-JIT` exercises the fork's ARM JIT.
|
||||
|
||||
To check the panic path without replacing the ordinary release artifact:
|
||||
|
||||
```powershell
|
||||
cd ..\starlet-ios-rust
|
||||
cargo build --release --features panic-smoke --target-dir target/panic-smoke
|
||||
cd ..\dolphin
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File .\Run-Wii-Starlet-Bootstrap.ps1 `
|
||||
-ELF '../starlet-ios-rust/target/panic-smoke/armebv5te-none-eabi/release/revolution-ios-bootstrap' `
|
||||
-ExpectedOutcome Panic
|
||||
```
|
||||
|
||||
To exercise a Rust fatal check and a synchronous ARM exception, derive two diagnostic
|
||||
ELF copies from the release artifact:
|
||||
|
||||
```powershell
|
||||
cd ..\starlet-ios-rust
|
||||
py -3 tools/make_smoke_elf.py target/armebv5te-none-eabi/release/revolution-ios-bootstrap target/phase01-smoke
|
||||
cd ..\dolphin
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File .\Run-Wii-Starlet-Bootstrap.ps1 `
|
||||
-ELF '../starlet-ios-rust/target/phase01-smoke/fatal-data.elf' -ExpectedOutcome Fatal
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File .\Run-Wii-Starlet-Bootstrap.ps1 `
|
||||
-ELF '../starlet-ios-rust/target/phase01-smoke/undefined-entry.elf' -ExpectedOutcome Fault
|
||||
```
|
||||
|
||||
Each command also accepts `-JIT` and `-FullDolphin`. The fatal image changes only the loaded
|
||||
`.data` probe, producing `REV:FATAL:DATA`. The exception image replaces the reset branch with
|
||||
an undefined instruction; the fault record reports code 1 and raw LR/SPSR. Both passed in the
|
||||
standalone probe and full Dolphin, with interpreter and JIT, on 2026-09-23. The source release
|
||||
ELF remains unchanged.
|
||||
|
||||
The probe uses the actual `ARMCore` and `StarletMemory` implementations. It initializes the
|
||||
high SRAM mapping, runs 4096-cycle slices, checks `__fault_code`, and decodes `REV_TRACE`. It
|
||||
does not start Broadway, graphics, USB, or a Wii title. The two ELF parser unit tests run with:
|
||||
|
||||
```powershell
|
||||
cmake --build .starlet_msvc2 --target tests
|
||||
.starlet_msvc2\Binaries\Tests\tests.exe --gtest_filter=BootstrapELFTest.*
|
||||
```
|
||||
|
||||
## Full Dolphin run
|
||||
|
||||
Set `Dolphin.General.WiiStarletBootstrapELF` to the absolute ELF path and
|
||||
`Dolphin.Core.WiiIOSLLE=True`. This bypasses the boot0/keys/NAND dump initialization in
|
||||
`StarletMemory` and starts the loaded program at its ELF entry. To run through `DolphinNoGUI`
|
||||
using the existing `.starlet_user3` Wii profile:
|
||||
|
||||
```powershell
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File .\Run-Wii-Starlet-Bootstrap.ps1 -FullDolphin
|
||||
```
|
||||
|
||||
This mode launches the Wii System Menu title only to initialize the full emulator; the Starlet
|
||||
runtime is the supplied Rust ELF. It uses the Null video backend and headless platform, reads
|
||||
new IOS log lines, and stops its own process after the expected marker. A populated Wii user
|
||||
profile is required for this full frontend path. The standalone probe is the reproducible path
|
||||
for the Phase 01 CPU and SRAM contract.
|
||||
|
||||
The accepted ELF is ELF32, big-endian ARM `ET_EXEC`, entry `0xffff0000`, with exactly one
|
||||
executable segment at `0xffff0000` (up to 64 KiB) and one writable segment at `0xfffe0000`
|
||||
(up to 16 KiB). It must expose `REV_TRACE`, `__fault_code`, `__fault_lr`, and
|
||||
`__fault_spsr` in the data segment's loaded memory span. Rejected images never write to SRAM.
|
||||
|
||||
The Rust code reaches `REV:BOOT:IDLE` in both interpreter and JIT; the panic-smoke image
|
||||
reaches `REV:PANIC`, and the diagnostic images reach fatal and fault states. All four outcomes
|
||||
pass through the full `DolphinNoGUI` path. An initial
|
||||
incremental MSVC build crashed before the first slice because `HW.cpp` still allocated the old
|
||||
`Starlet` class size; AddressSanitizer identified the overflow. A forced rebuild fixed it,
|
||||
and `Starlet::Create` now keeps allocation in the same translation unit as the class definition.
|
||||
The CMake configuration also corrects a French MSVC `/showIncludes` prefix that made Ninja
|
||||
record zero header dependencies. After rebuilding `HW.cpp`, Ninja records `Starlet.h` as a
|
||||
dependency.
|
||||
Reference in new issue
Block a user