# Artifact Index

## Target Firmware Evidence

These files are unmodified target-root artifacts used for static protocol
recovery.

| SHA-256 | Target path | Notes |
| --- | --- | --- |
| `f8eb96998a32ff86008663f7f07f2df76c32a9c86200f690c215dc36917391a9` | `/games/pokemon_pro/spike3/powerdist/powerdist_ext.hex` | 32,799-byte Intel HEX image; command `0x15` poll and unsolicited sequence-0 cabinet-input report paths are documented in `netbridge-re.md`. |

## Process Emulator Source Artifacts

These are clean-room source files. Their generated capsule, run logs, copied
Mesa runtime, framebuffers, audio, and traced packs live under
`emulation/work/` and are intentionally excluded from Git.

| Path | Notes |
| --- | --- |
| `spike3-emu` | Unified `prepare`, `run`, `debug`, `trace`, `shell`, `pack`, and safe legacy-clean entry point. |
| `emulation/process/spike3_emu.py` | Read-only process capsule builder/runner, Docker/native/qemu-user selection, display/audio sidecars, trace packer, and GDB helper generator. |
| `emulation/process/config.default.json` | Versioned software-only runtime defaults. |
| `emulation/process/Dockerfile` | Host-architecture runtime with ARM64 Mesa libraries, tracing/debug tools, Xvfb, x11vnc, and noVNC. |
| `emulation/process/test_spike3_emu.py` | Launcher, isolation, preload-order, framebuffer-loop, trace, and debugger unit tests. |
| `emulation/stubs/spike3machine_client.c` | AArch64 preload bridge from target SPI/I2C/GPIO calls to the versioned machine broker. |
| `emulation/stubs/spike3emu_display_contract.h` | Shared DMA-BUF attribute and software-decoder contract helpers for the display shim tests. |
| `emulation/tests/spike3emu_display_contract_test.c` | Host/AArch64 contract tests for DMA-BUF attribute parsing and the V4L2-to-software decoder alias. |
| `emulation/tests/mesa_fbo_smoke.c` | Standalone surfaceless Mesa GLES test requiring a complete texture-backed FBO, nonzero readback, and no GL error; source compilation is verified, ARM64 runtime execution remains pending. |
| `analysis/spike-machine-emulator/` | Versioned broker, persistent EEPROM/amplifier models, SPI/GPIO/UART/nodebus cabinet model, replay/fault support, client, and tests. |
| `analysis/spike-machine-emulator/profiles/pokemon-pro.json` | Configurable provisional Pokémon switch/output mapping. |
| `emulation/vpx-plugin/` | Pinned ARM64 macOS VPX ControllerPlugin source, package builder, configuration, and table-side VBS adapter. |

Generated capsule manifests record hashes for `/games/pokemon_pro/game`, both
Radium `image.bin` files, Godot `main.pck`, the menu/display executables, the
extracted loader, both generated preload DSOs, and the copied Mesa overlay.

## VPX Clean Rebuild and Historical Recreation Artifacts

The active clean-room implementation is under `emulation/vpx-rebuild/`. Its
maintained and generated artifacts are:

| Path | Artifact role | Validation and handling caveat |
| --- | --- | --- |
| `emulation/playfield-contract/pokemon-pro-hardware.json` | Canonical geometry-free contract for 45 switches, 11 sensors, 9 cabinet controls, 13 drivers, and 113 logical lamps. | Static contract/consumer validation is recorded in `emulation/playfield-contract/VALIDATION.md`; it is not live-game proof. |
| `emulation/vpx-rebuild/design/geometry.json` | Clean-room Pro XY/Z, mechanism, collision, and physics source of truth. | Top-down placement is registered to official evidence; installed Z, force, friction, clearance, and timing values still need physical-machine measurement. |
| `emulation/vpx-rebuild/design/lights.json` | Independent 113-lamp trace and confidence records. | Exact-address mapping is statically validated; rendered response still needs final integrated capture. |
| `emulation/vpx-rebuild/design/REFERENCE.md` | Edition scope, official/secondary source URLs, and accuracy boundary. | Official Stern evidence wins over secondary sources. |
| `emulation/vpx-rebuild/assets/playfield/pokemon-pro-official-registered.png` | Deterministically registered 952x2115 private-use base image. | Official photograph contains baked-in hardware/lighting; not a licensed bare-playfield scan and not redistributable by this assessment. |
| `emulation/vpx-rebuild/assets/models/` | Original procedural VPX mechanism and toy meshes. | Simulation models, not production CAD or direct physical scans. |
| `emulation/vpx-rebuild/assets/sounds/` | Original procedural CC0 bank containing 69 mechanical/physics source events. | Contains no copied game samples; QEMU remains the source of licensed music, speech, and game effects. |
| `emulation/vpx-rebuild/script/PokemonPro_Rebuild.vbs.in` | Clean standalone/SPIKE3 table behavior and integration template. | Maintained input; generated `source/script.vbs` and distribution sidecar must not be hand-edited. |
| `emulation/vpx-rebuild/tools/generate_table.py` | Deterministic unpacked-VPX source generator and contract binder. | Generator/source checks do not establish live gameplay. |
| `emulation/vpx-rebuild/source/` | Generated diff-friendly VPX source. | Rebuilt from maintained inputs; do not hand-edit. |
| `emulation/vpx-rebuild/dist/PokemonPro_Rebuild.vpx` | Active private-use VPX 10.8.1 assembled table selected by the default launcher; 5,902,336 bytes, SHA-256 `ddce5d48033ee3c6e67248910a73897293e8b9c36eee29df164160a93572a30e`. | Generated output; exact current hash also appears in `qa/rebuild-validation.json` and `qa/runtime-smoke.log`. |
| `emulation/vpx-rebuild/dist/PokemonPro_Rebuild.vbs` | Sidecar matching the active assembled table. | Generated output; round-trip script equality is checked by `build.sh`. |
| `emulation/vpx-rebuild/qa/rebuild-validation.json` | Machine-readable current 359-item build, asset, contract, geometry, lamp, and round-trip report. | A `pass` is static/generated-source evidence, not physical-machine calibration or a complete game. |
| `emulation/vpx-rebuild/qa/runtime-smoke.log` | Exact-current-table VPX 10.8.1 runtime-load record: table/VBS load, script compile/start, Metal initialization, two frames, clean close, and exit code 0. | Uses bounded `CaptureAttract`, not interactive `-Play`; it proves runtime/render startup but not a shot or full mechanism sequence. |
| `emulation/vpx-rebuild/qa/vpx-playfield-capture.png` | 1024x1024 frame from the exact-current-table runtime smoke; SHA-256 `5c99e798e467c8475b2c1aa48a4134881d9293d915aafde4e998ed6ebea5871c`. | Render-review evidence; photographed base art still contains baked-in hardware and lighting. |

The registered photograph, service manual, Pokemon/Stern imagery, and assembled
table must remain within the authorized private-use boundary. The table does
not embed target machine code or the game's scoring rules. See
`vpx-table-recreation.md` for the separated static, VPX-runtime, integrated,
and hardware validation states.

The following SHA-256 table is the preserved earlier VPX/bridge milestone.
Entries under `emulation/vpx/` describe the deprecated greybox/manual workflow;
they are retained for audit and are not inputs or defaults for the clean
rebuild. Shared plugin, launcher, guest-helper, and emulator paths may still be
active, but the hashes below are milestone hashes rather than an assertion
that every shared file is unchanged today.

| SHA-256 | Path | Notes |
| --- | --- | --- |
| `fd64431a28fb08a880acff091dc752301b785a2c93fe3985f9fb316db01026a0` | `emulation/vpx/PokemonPro_Greybox.vpx` | Deprecated historical VPX 10.8.1 greybox milestone hash; the current working copy may differ. The clean rebuild does not inspect or write it, and it is not an input or runtime default. |
| `652b59cbfa3d38bae9194e096a9a15d6e9e7ea73b077707aced2827a774b8a84` | `emulation/vpx/layout.json` | Historical greybox geometry/mapping manifest; superseded for active electrical mapping by `emulation/playfield-contract/pokemon-pro-hardware.json`. |
| `0e5047593cc1b4f6e53fb9324165c08adf8b1c6d1c7ad430281fd581c1278eeb` | `emulation/vpx-plugin/tests/test_bridge.cpp` | VPX bridge protocol fixture with the live-verified Service Back, Up, Down, and Enter CPU-SPI addresses; exercised by the plugin mapping, reconnect, and 10,000-pulse tests. |
| `18028e0065d4260799264ec255999a8e4ced4c7e4213484379752d360e1f4768` | `emulation/vpx/PokemonPro_Greybox.vbs` | Deprecated historical greybox controller/QA sidecar; not the active clean-table script. |
| `127c653b08aa275afd86141bef1ad7d44a48525f034d1bdd1a0188671d61bd04` | `emulation/vpx/manual/PokemonPro_Manual.vpx` | Historical editor-owned derivative of the greybox workflow; not the active clean-table source of truth. |
| `560f8108ed1224945a5597f8d960e266fea5feea74f813a17b3a6a7ea2233ad8` | `emulation/vpx/prepare-manual-table.sh` | Creates the protected manual table, refreshes only its generated controller sidecar, and backs up before an explicit reset. |
| `1c9826c3c302b24d66ccce780eb65b75ead20be59dcd062667d921e9effb6f11` | `emulation/vpx/edit-manual-macos.sh` | Opens the manual table in standalone VPX with an isolated preferences path and prints Live Editor save guidance. |
| `ebb09dfb3b708f2b1e363c49f59ca78b7e64067ab50a9d598b4d2d5c07dfa972` | `emulation/vpx/test-manual-macos.sh` | Fast standalone physics launcher for the editor-owned table. |
| `95819aec421da92aa2a6305c0b5e9bebb56ad18f86400212e85d6b42badaedc7` | `emulation/scripts/run-playable-manual-macos.sh` | Full native QEMU/HVF and VPX integration launcher using the editor-owned table. |
| `2777d9a83a42a2ef076e6956bd8c15bfc54e1cff99eddbd012385fd5db90db5b` | `emulation/scripts/run-playable-macos.sh` | Native cabinet supervisor with matching VPX/QEMU-focus control instructions and automatic generated-rootfs guest-helper refresh. |
| `b7a864e250907952e83239a6b3dd69923bca86fed0816a3c5a99a026b92edcf5` | `emulation/scripts/run-macos.sh` | Native QEMU/HVF supervisor with playfield bridge and explicit optional/required conagent backend collision handling. |
| `d08a4f577ed481371d16f734e360553ea19f49c8afab83d2c4d528af51abc270` | `emulation/guest-tools/keyboard-switch-relay.c` | AArch64 guest relay using the cabinet map when QEMU Cocoa has focus: Shift flippers, `1` Start, `5` coin, Return/Space Action, and `7`/`8`/`9`/`0` service controls. Installed binary SHA-256 `55054003950873900b5ce203292846f158b861060dbdd2e04b5be4a8afa1869c` was verified from the rebuilt ext4 image. |
| `732437382c6bc88df080e3a9c1cf66803eb35b1e6f736a76896ab35d8f48c0e2` | `emulation/vpx/tools/generate_layout.py` | Deterministic hardware, geometry, physics, asset-registration, live-corrected service CPU-SPI, and power-distribution route manifest generator. |
| `cedb8d18f491d06c1dde2b5aa2fdee9f4786001ac0be029e672d25204e97f709` | `emulation/vpx/tools/generate_table.py` | Rounded collision paths, layered VPX source, controller integration, QA, and exact cabinet-route validation. |
| `836e26f693990680688780befa5d826c37d656d827f9448f68ececcede777230` | `emulation/VPX_EMULATOR_STATUS.md` | Current implementation inventory, repaired CPU-SPI/powerdist input paths, persistent-provisioning stop point, manual geometry workflow, and acceptance checklist for branch `vpx-emulator`. |
| `e13eb92e99a806ea86625de8cc426876929625190f763bfe93cd2e821efd3f88` | `emulation/vpx/tools/verify_collision_topology.py` | Static assertions for continuous collision/visual rail inventory and runtime/editor flags. |
| `829c929b4ed51d2d7544cfae1aeb0b8571b50e1d71de299bcfdc0535844372e1` | `emulation/vpx/qa/collision-topology.json` | Per-path polygon area, winding, vertex, and self-intersection report. |
| `e3ed8627e92c9175791c6aad0a2868df7dd66ac53602663431c6cd0c7a98a52a` | `emulation/vpx/qa/collision-validation.json` | Passing 13-collision/13-visual topology summary with zero legacy segments and intersections. |
| `526e2a4e5695496e6662fe44ddc8406b700a551b142a6da95bd74bb8adc8e00f` | `emulation/vpx/qa-mechanisms.sh` | Live VPX assertions for both outlanes, center drain, Town VUK, Poke Ball hold, and shooter serve. |
| `32b0c8fa4f5330cd9051d456c7209575bbd764f460c9e655d48ffcc89b23ddc1` | `emulation/vpx/qa-plunger.sh` | Full-pull VPX assertion requiring the served ball to clear the shooter mouth into the main playfield. |
| `d66b99d4029b08906549e44b2c0f7ab26153313d2eea1d168e824e4fe75a705e` | `emulation/vpx/layer-map.json` | Stable 16-layer VPX construction/collision/visual/electrical/QA editor map. |
| `254eb1167d1355003fe28fa1becc1209ff7fb1f53544cf696295b546c5c49e0e` | `emulation/vpx/assets/models/star_post.obj` | Blender-authored normalized ten-lobed post mesh. |
| `0c2adad60a3c0b3491f371630013106d18c3327dd2173b2bf238e23705e1c25e` | `emulation/vpx/assets/models/stepped_metal_post.obj` | Blender-authored normalized stepped guide-post mesh. |
| `d58c3f812fa0ba98461abf0220692a72ba3dfaec52b0fcaee0ca3d02ef70bc84` | `emulation/vpx/assets/models/pop_bumper_cap.obj` | Blender-authored normalized pop-bumper cap mesh. |
| `976a2c72f13a654541e8d558b69c2dd6974e33a3f787b5926d98067e34d89f8d` | `emulation/vpx/assets/cad-reference/Star_Post_PL-00172-OT.SLDPRT` | Unmodified Pinball Makers private-development star-post reference. |
| `bb313ef15bf3bcf25f6faa1e3d6a40e0a8d683b828b32572aaaf9752e1697326` | `emulation/vpx/assets/cad-reference/Post_Faceted_1_inch_C-11561-20.SLDPRT` | Unmodified Pinball Makers private-development faceted-post reference. |
| `cb78b416be8f3c946313517766ecd3077dd05fdecea8f6ec162f9c9b0d4d3413` | `emulation/vpx/assets/cad-reference/WPC_Pop_Bumper_Assy_B-9414.zip` | Unmodified Pinball Makers WPC pop-bumper CAD assembly reference. |
| `50a1906b5c609cd3a84970b6a6e9b0be839b4d0a588d8b27361936ab6537d6bb` | `emulation/vpx/reference/Pokemon_Pro_web.pdf` | Preserved 10,227,248-byte service manual. |
| `09477fe9bd50cfeba34bbff2eac5c272fc79eed6a6ed07fc40da636c5fde977b` | `emulation/vpx/reference/pokemon_playfield_pro.png` | Preserved 451x998 target-root playfield locator. |
| `b2804f794eb119712420ad575479fb8febcc39df0e505f9942c162614819819c` | `emulation/vpx/reference/photos/pokemon-pro-overhead.png` | Preserved user-supplied overhead machine photograph. |
| `6ba469672627125d13798d1e80d460f85a5ce4ab9d4798c9947715ebbe1cfe70` | `emulation/vpx/reference/photos/pokemon-pro-lower-detail.png` | Preserved user-supplied lower-playfield detail photograph. |
| `1a1af7fa16dde9c84deb2fbc19de44b9c860cd5ef4dc3a65d48a3cbfdbb214a3` | `emulation/vpx/reference/photos/pokemon-pro-player-view.png` | Preserved user-supplied player-view photograph. |
| `acb797ec6c2a03079c1a427e0350de0dfabb0c33688eb45e60b52824c04317eb` | `emulation/vpx/reference/photos/pokemon-pro-overhead-registered.png` | Reproducible 451x998 overhead-photo crop for locator comparison. |
| `5383b79d5a955b91059ca5d67806d719d89655ec293e4bd0cc84b8a5adede03f` | `emulation/vpx/qa/layout-overlay.png` | Actual buffered collision polygons, centerlines, ramps, mechanisms, and hardware over the locator. |
| `595faa3cc12de55ad10ef3324593140473a3eb3e4778471797845c39a31ae243` | `emulation/vpx/qa/photo-geometry-overlay.png` | The same buffered collision review over the registered overhead photograph. |
| `8084af0ed94f87c20487f0ba02a182015365a3c51c00d0358d679e4e5267d62f` | `emulation/vpx/qa/vpx-playfield-capture.png` | Inspected live desktop render of continuous rounded visual rails and initialized mechanisms. |
| `3351926b55d81ea7c77e3df016aa05167dbf786e3a1985537770a1d95da309b7` | `emulation/vpx/qa/vpx-cabinet-capture.png` | Inspected live fullscreen render rotated into physical portrait orientation. |
| `6b1a65cbbf9569fd720075f60ee3687b99fdf439313fc85bb887231afd44dfbe` | `emulation/vpx/qa/mechanism-runtime.log` | Passing continuous-collision evidence for both outlanes, three drains, both kickers, and shooter service. |
| `06cf7cd0b2a61579ec7bce7637565d1bccd9dcd803a18e0053cce94859005f3b` | `emulation/vpx/qa/plunger-runtime.log` | Passing continuous-shooter-rail main-playfield-entry evidence. |

Key source hashes for the 2026-07-11 process/VPX milestone:

| SHA-256 | Path |
| --- | --- |
| `502868bdf619ef66a2af612f1d70ac5c7d8811e8999a8b55039c10aff7d56f40` | `emulation/process/spike3_emu.py` |
| `31ca5928aefb1d17ec4153a35ec01f87cb84bf5e8e3059b82efd37bd1ae7f2ea` | `analysis/spike-machine-emulator/service.py` |
| `a6065c0b13beca83fb9c1a64702ba163b5e1664cdfb3bb64985a4b6b326cf91e` | `analysis/spike-machine-emulator/machine.py` |
| `57be1144bafd4dfe3ba852e36ba015487b548df1229dcb2869884abd67bf6101` | `emulation/dashboard/server.py` |
| `1da09b43b43e920f8f95183281cf3c3291f7d013a0da8e6ac60cc0f776b6dbee` | `emulation/vpx-plugin/Spike3Controller.cpp` |
| `5c8bb043378669334b587d0e443b7a6ded5530c886d87f9bd1e30fb7fe7cb12c` | `emulation/tests/mesa_fbo_smoke.c` |

## Main Game Artifacts

| SHA-256 | Path |
| --- | --- |
| `1e5becb85840d0cc7a1d334b7cc43bdb83e51c7c7f8243bead8db679e9ffb22d` | `/games/pokemon_pro/game` |
| `a76da91f0cfdaecceb579ef27d223ab8a86c313d0eefa5217b96823c43c97e69` | `/games/pokemon_pro/conagent` |
| `2f1a958c1f859c339c716e53cc9ee752412373c486ea2a1bfd116eefce4617a3` | `/games/pokemon_pro/image.bin` |
| `a7df00dbbfb75838fd19d57ada30f4247d2ef1bc4b357ca0a64ab60f3a679af0` | `/games/pokemon_pro/spike3/spike_menu/image.bin` |
| `04af0fd78866ec3ae60b10311dedb3df2f3877595d19ee7bb01665ab10512778` | `/games/pokemon_pro/assets/godot/main.pck` |
| `caf06531ca1b969b6d727d76af7ace8931277dbdb6584ecb5a238f427fe0a76a` | `/games/spk/index/pokemon_pro-0_83_0.sidx` |

## Generated Asset Extraction Artifacts

These files are workspace-local generated artifacts, not target-root files.

| SHA-256 | Path | Notes |
| --- | --- | --- |
| `36fb0f000743093338a4994b75ce0de40611154dfc1d43f3d2d4b539036c9b79` | `assets/manifest.json` | Manifest for `main.pck` extraction into `assets/godot_raw/` and `assets/openable/`. |
| `e97b226472d7531464f8a95c0d01a2661c0486f21beb74216acd9d8c737cc436` | `assets/loose_manifest.json` | Manifest for openable copies harvested from loose `/games/pokemon_pro/assets` files. |
| `ad44ee65ddbd7f0a44e0a4b7f15332460fa48185fc45b12dc74b10f9dece9334` | `project.zip` | Improved Godot editor reconstruction with restored PNG source paths and loose `lcd`/`nuk` assets; 980,835,332 bytes. |
| `ad44ee65ddbd7f0a44e0a4b7f15332460fa48185fc45b12dc74b10f9dece9334` | `project_reconstructed.zip` | Same improved archive as `project.zip`, kept under an explicit reconstruction name. |
| `05d2606f23e694c369c855a232a787e03b8c838b346558df615598f01519cca1` | `project_basic_exported.zip` | First-pass exported-resource-only Godot wrapper; 255,346,627 bytes. |
| `bf673928249f53f763ebeb56bda55fab75128523194c41188b2df529eddcec98` | `godot_editor_project_reconstructed/project.godot` | Reconstructed Godot 4.4.1 project settings wrapper based on `project.binary`; autoload uses the compiled `SpikeSoundIds` global name. |
| `d56d6efd7a5b6cbf26cd1a2fcf1292b11ba3131fdefc3e821edde1b6f8be240e` | `godot_editor_project_reconstructed/RECONSTRUCTION_MANIFEST.json` | Manifest for the improved reconstruction: 1,050 restored PNG sources and media-audio scan summary. |
| `256ffb7711beecdc9f165e40d8f84fd2b1e474798bc4b497ab64558129f94964` | `analysis/media-audio-scan.tsv` | `ffprobe` scan of Godot and loose media containers; one AAC-bearing MP4 found. |
| `a89999280fcf84a7e757c88246c35dcf3c49f7ec548c40b3b051aec3f2336ac1` | `rootfs-triage-wiki/scripts/build_godot_editor_reconstruction.py` | Static reconstruction builder for restored PNG sources, loose asset copy, media scan, autoload wrapper names, and zip packaging. |
| `19187f77af51093e2262ba8a042ec5a41cb5be20f9f12d19ef8855055567b952` | `rootfs-triage-wiki/scripts/search_audio_assets.py` | Whole-target-root static audio search helper; scans filenames, `file(1)`, magic signatures, strings, and `ffprobe` stream metadata. |
| `fafbd090ed03f1f0bb10e319ac01028a8f1120c3fd02c931415671377c1fe6ee` | `rootfs-triage-wiki/scripts/parse_radium_image.py` | Static Radium `image.bin` parser; validates section 8 CRC, extracts PCM chunk metadata, resolves section 5 opcode `0x0b` sound references, decodes generic section 5 opcode streams with image-specific table offsets, records opcode payload fields, and writes full/capped WAV exports. |
| `db6cdbd7d35da08cd432f27137aa7bd5e427981dc62151059e28cfd9526a774c` | `rootfs-triage-wiki/scripts/dump_radium_opcode_tables.py` | Static native opcode table dumper for Radium command streams; writes handler addresses, payload lengths, observed command counts, and common payloads for the main and SPIKE menu images. |
| `fa9da51e188771fd5ce1f9e0df0f586ab14948e6aa5d3d155df20f081d04cb8e` | `rootfs-triage-wiki/scripts/build_media_preview_pages.py` | Generates split wiki preview pages for exported sounds, Pokedex voice labels, catalog-matched ASR labels, low-confidence ASR review candidates, catalog-offset candidate labels, unresolved structural review rows, SPIKE menu sounds, best-named sound aliases, confirmed native sound-name aliases, sound-test-adjacent candidate rows, ASR draft labels, openable image/video/text/font assets, and Radium section 3 bitmap previews. |
| `f5c6d5046dd7c3591b4de9201c7cd7254e1fa0ff6d6363ed09c19ccceebc050b` | `rootfs-triage-wiki/scripts/export_radium_section3_bitmaps.py` | Static section 3 bitmap-record exporter; writes raw-indexed PNG previews when payload length supports `width * height` pixels and marks compact records as undecoded. |
| `e972f7bdbec246c3bf50f783cdb6dfcd8638c501450a0335c422971f762b9673` | `rootfs-triage-wiki/scripts/build_best_named_sound_aliases.py` | Builds one best-available named alias per exported main-game and SPIKE-menu WAV while preserving confirmed/aligned/catalog-ASR/ASR-review/catalog-offset-candidate/draft/duplicate-hash/hash-match/structural name provenance. |
| `01e3abd11d6bb77763b9043c226e0f0ae9b6b7dc8c2cddd4658efb4af36c4df0` | `rootfs-triage-wiki/scripts/build_asr_review_sound_labels.py` | Filters rejected Whisper ASR rows into low-confidence content-derived review candidates; these labels are weaker than accepted ASR and not native-confirmed. |
| `02a5df386d57609d8ed58d244bd3a8c0da2612d9615a3b51bb93316227214319` | `rootfs-triage-wiki/scripts/build_asr_catalog_sound_labels.py` | Matches accepted ASR transcripts to known Godot `SE_PK_VO_*` catalog constants using exact phrase matches and narrow documented ASR error variants. |
| `02033a942c02c8e8277ab6d97ca914f6b45be3f05b494b48c5b4389fda4ac5cf` | `rootfs-triage-wiki/scripts/build_pokedex_voice_aliases.py` | Aligns Radium objects `409` through `1545` to Pokedex description/name/category clips using `pokemon_data.txt` and ASR evidence, including six duplicate description variants. |
| `e09b6d47a3fb9a91f9e1236bf5fb95b36252f3fddbd52878c2f8dc79e482a2a1` | `rootfs-triage-wiki/scripts/build_catalog_offset_candidate_labels.py` | Builds an audit-only catalog-order offset candidate table from the two Ghidra-confirmed native anchor blocks; candidates are not promoted into best-name aliases. |
| `b6602ee951006b784fa0c2e75287ff7cb4d45f989b1d1f6155375888b6c0a5e3` | `rootfs-triage-wiki/scripts/transcribe_sound_draft_labels.py` | Local Whisper ASR helper for draft content labels on exported WAVs; output labels are triage aids, not native symbols. |
| `53fc124eb6ed43c8f93acb44495db55be1a15c7785d06ce964861851e7f964f7` | `rootfs-triage-wiki/scripts/extract_native_sound_registrations.py` | Static AArch64 extractor for native `GodotSpikeBridge` sound registration calls in `/games/pokemon_pro/game`. |
| `a0cf4cad90fcccfd97140599935e56d8e49ef68560aff6e25813e731ac3c20c0` | `rootfs-triage-wiki/scripts/build_native_named_sound_aliases.py` | Builds confirmed-name hardlink aliases for native sound registrations. |
| `e9a156d4371e03232c6826bd70e1576e34b6720352beafb06a9f41321c32cf1e` | `rootfs-triage-wiki/scripts/extract_native_sound_test_labels.py` | Extracts native sound-test-adjacent candidate rows and builds audit hardlink aliases for the candidate WAVs. |
| `ac0f243ec3fb29e1cd61cdd8b807ac1578bc1202e03538be3314c4380dbea723` | `rootfs-triage-wiki/scripts/extract_godot_gdc_strings.py` | Static decoder for exported Godot `.gdc` files: strips `GDSC` header, decompresses Zstandard payloads, and recovers plain plus XOR-`0xb6` strings. |
| `94e7de1da3f5183a457c4d26e6e93b8249bac9c4c6fe83f37802fc465b1ddfd2` | `rootfs-triage-wiki/scripts/build_viewer.py` | Static wiki viewer builder with media directives, a deterministic 2,545-sound index, scoped page search, and inline sound preview/download results. |
| `4bcc7c331f3d9cb28248ee1479941bbbfc7dc5a2708fd50b137fb036e92301ba` | `rootfs-triage-wiki/sound-index.json` | Generated canonical sound-search index with title, filename, provenance metadata, source gallery, and WAV path for all 2,545 best-named sounds. |
| `975df239ca2930e91abf7af5e53cb24a865ce31faf11a2bba9adae6e61995c3a` | `analysis/audio-search/summary.json` | Broad target-root audio scan summary: 7,375 files scanned, 281 stream-bearing files, 0 target-root files with audio streams. |
| `9f0132e612f2a6aafb5b00335cbf74b7f5fb57c5b34a4f9bda21e02b6ad0f91b` | `analysis/audio-search/filename-hits.tsv` | Audio-related filename hits; system audio stack files and images, not gameplay sound content. |
| `818e61772280cd597c3b101aa90b90764630bd8d7892ea5c20bf5e48f34d408c` | `analysis/audio-search/file-type-hits.tsv` | `file(1)` media/audio-looking hits; target-root video containers plus firmware false positives. |
| `8707c33b9ce6b33c693dcf187f277b474d0abd4086858096b041d3e1f2abd0eb` | `analysis/audio-search/magic-hits.tsv` | Binary magic signature hits, including expected codec/library false positives and invalid Ogg-like executable offsets. |
| `b93b2019c8b021267e96c77fee7932f30e8d8f8f71b0c424e4f74f9e02f3c9d9` | `analysis/audio-search/ffprobe-streams.tsv` | `ffprobe` stream metadata for target-root files; all parsed streams are video/non-audio. |
| `0587eb42a19459c99f35574b0892ea20a97737ad11c498189698392e7c7cc95a` | `analysis/audio-search/audio-related-strings.json` | Audio-related string samples from target-root support files and game binaries. |
| `6e87e7e5fb591d23336026299c3f2d8122b21fbebaa179dceee39227d6b68dc1` | `analysis/radium-image/header.json` | Parsed `/games/pokemon_pro/image.bin` header, section 8 CRC summary, command-reference summary, and generic command-stream summary; stored and calculated CRC32 both `0x3f401e79`. |
| `0c0d5c62f99def85df6cc2bd897e49cbc7f6940faf8598b5190632681e2711ec` | `analysis/radium-image/section4_table.tsv` | First-pass section 4 table parse: 27 rows, 32 bytes each. |
| `6c978cc5aca4b033ab5d805943e0dab395734c1506689c1c917496337bb5f7e8` | `analysis/radium-image/section3_bitmap_manifest.tsv` | Section 3 bitmap-record manifest: 1,477 pointer records, 1,449 raw indexed PNG previews, and 28 compact payload records left undecoded. |
| `5166347f4071c06e9aba93c150544b6bd1b4b3c7940dc039b517a429e100e137` | `analysis/radium-image/section3-bitmaps/` | Combined checksum over 1,449 generated section 3 bitmap preview PNG files. |
| `6bae024f109b39e5c07caff4cd9f51b43b4c33ec9f23b1d8f537e1e829d6500f` | `analysis/radium-image/section8_entries.tsv` | Parsed section 8 table: 2,491 rows of offset/key/count metadata for headerless PCM chunks. |
| `6bae024f109b39e5c07caff4cd9f51b43b4c33ec9f23b1d8f537e1e829d6500f` | `analysis/radium-image/pcm_candidates.tsv` | PCM candidates derived from section 8; all 2,491 rows produce bounded nonzero PCM lengths. |
| `35eb78ca13b2ba60bd861f4c4d1ba5245cfc35c101c58e6fadba33b11de17299` | `analysis/radium-image/command_sound_refs.tsv` | Static section 5 command-stream references: 12,710 opcode `0x0b` rows resolving local object IDs and variants to all 2,491 section 8 PCM chunks. |
| `2b831075a86f2d6b4bd7a939abd091325d39744f3850c69a4acda52749c7016f` | `analysis/radium-image/command_stream_summary.tsv` | Generic section 5 stream decode summary: 12,655 stream rows, 2,531 unique stream offsets, no malformed streams. |
| `027f6d19feff25b61244dea05bb2210368918c667bf4dac7f9cb278e8f95d16d` | `analysis/radium-image/command_opcode_rows.tsv` | Per-opcode section 5 decode rows with payload hex and generic little-endian field views: 108,765 command rows across 13 observed opcodes. |
| `fc061d33187c619ce75b9c321b2c5a08bdb938b142ffcc7fbcbfa566370f1d4d` | `analysis/radium-image/command_opcode_payload_summary.tsv` | Compact section 5 opcode payload summary for the main game image: command counts, unique payload counts, and common payload field values. |
| `51b1321758abf11f32dfe58dbb8906f1e36dcf2be028e367fd52fccab11d8131` | `analysis/radium-image/command_opcode_histogram.tsv` | Compact histogram of observed main-game section 5 opcodes and payload sizes. |
| `904a2146f0cd98560887cbbc0298a19b43d25020ae0c4a4598bc96728e1afcc2` | `analysis/radium-image/opcode_handler_table.tsv` | Main-game native opcode table dump: 19 entries with handler addresses, payload lengths, observed command counts, sound-reference counts, and common payloads. |
| `2cd69dd62290e99b015fdb4c819d9afc08999e6f1c55398e3847466ccc3a22a4` | `analysis/radium-image/sound_export_manifest.tsv` | Full sound export manifest: 2,491 deterministic WAV names, object/chunk refs, durations, channels, and offsets. |
| `78527ee3196c931b9d4856c90370cc0a34ed78feb849e2f42a40938a49ba8ac4` | `analysis/radium-image/sound_export_manifest.json` | JSON version of the full sound export manifest. |
| `c13f5856e4d513d880ca0b11d7bf3b673d021b7c1ba943289bab0ec834c8f5fe` | `analysis/radium-image/native_sound_id_map.tsv` | Ghidra-confirmed native sound-name map: 25 `GodotSpikeBridge` names, native IDs, registration call offsets, and string offsets. |
| `23da581619acf17232111a64d9883342c751308a402cb81899aca8d38f64de76` | `analysis/radium-image/native_named_sound_manifest.tsv` | Confirmed-name alias manifest linking native IDs to full-export WAVs and alias paths. |
| `64ea65706b60f89bfa8324eb3672951e8ac395bb7c184383128c842e39f3cfe0` | `analysis/radium-image/native_sound_test_label_manifest.tsv` | Native sound-test-adjacent candidate manifest linking 4 raw candidate rows to full-export WAVs and audit alias paths. |
| `d35eeca159a84358072bc0dea34feeacd1c6031a16ed492e4bacdae41e74f0a2` | `analysis/radium-image/asr_draft_sound_labels.tsv` | Local Whisper draft-label manifest: 2,486 rows transcribed, 1,705 accepted draft content labels. |
| `1ec01c850fd65aa5553cae652be493da64e36d702cfa677740ea93af331bc0d9` | `analysis/radium-image/asr_catalog_sound_label_candidates.tsv` | Catalog-match overlay: 220 accepted ASR rows matched to 90 known `SE_PK_VO_*` Godot voice catalog constants; inferred, not native-confirmed. |
| `35562e1c0e46c839bf7557f5659b0e4465f1321febb997134d53420f8b025cb8` | `analysis/radium-image/asr_review_sound_label_candidates.tsv` | Low-confidence review overlay: 169 rejected-ASR rows retained as weak content-derived candidates for human audit. |
| `31b767ed38401765c06c0d333739cb1218d6dfd598f8939237517e353fd133a3` | `analysis/radium-image/catalog_offset_candidate_labels.tsv` | Catalog-order offset audit: 225 rows with 25 confirmed native anchors, 199 unpromoted neighboring candidates, and 1 sound-test-candidate disagreement. |
| `d0d4a3894bb734ab0461baffa07918ffb3c9f47292a72e0f842aec682b368fa5` | `analysis/radium-image/sounds/` | Combined checksum over the per-file SHA-256 list for all 2,491 exported WAV files; directory size about 1.1 GiB. |
| `2513e32787cce9333a68481a3e9ba61d39affcc2990dce6e34b89704ac846aa8` | `analysis/radium-image/sounds-native-named/` | Combined checksum over the 25 confirmed-name WAV aliases; hardlinks to full-export WAV payloads. |
| `79ab3d3633c2d2034785dd49b855f8e5fedc2cf1512284c57699cc2a8a671717` | `analysis/radium-image/sounds-native-sound-test/` | Combined checksum over the 4 sound-test-adjacent candidate WAV aliases; hardlinks to full-export WAV payloads for audit. |
| `c53d2b82c1a26803ea40ac8b71b0fbde5335601f5e955f98bec45cf985b6694a` | `analysis/radium-image/pokedex_voice_label_manifest.tsv` | Pokedex voice alignment manifest: 1,137 rows for objects `409` through `1545`, with six duplicate description variants. |
| `3c1a9d36e1ca402bc183aa240b41df2fd788244354fa7043445221daec6ae89c` | `analysis/radium-image/sounds-pokedex-voice/` | Combined checksum over 1,137 aligned Pokedex voice WAV aliases. |
| `30a7cbf8c9dc0ee228ad1e481fb6096da848162c8a62905f28c81e35802d6ab3` | `analysis/all-sound-best-name-manifest.tsv` | Complete best-available named sound manifest: 2,545 rows covering 2,491 main-game WAVs and 54 SPIKE-menu WAVs with confirmed, aligned, catalog-ASR, low-confidence ASR-review, catalog-offset-candidate, draft, duplicate-hash, hash-match, or structural name provenance. |
| `900249bd3dc788ffac90060361cbf4b0b3e08e2d914108e66d30a68c84c072a4` | `analysis/radium-image/sounds-best-named/` | Combined checksum over 2,491 best-named main-game WAV aliases, including 220 catalog-matched ASR names, 34 low-confidence ASR-review names, 196 catalog-offset candidate names, and 1 duplicate-hash inherited confirmed name. |
| `0e270c384a14139587e7d5e1fe5ff23efb4631bd2093446eea96f5667328c893` | `analysis/radium-spike-menu-image/header.json` | Parsed SPIKE menu `/games/pokemon_pro/spike3/spike_menu/image.bin` header; section 8 CRC `0xb8fe11f9` matches, with 300 resolved command sound refs and generic stream summary. |
| `25b1d867ec76a08c5d98516a6022355aeb7671e82f4c5350d0e82c854b5ec51f` | `analysis/radium-spike-menu-image/section4_table.tsv` | First-pass section 4 table parse for the SPIKE menu image: 27 rows, 32 bytes each. |
| `a30feeef50cc2b26a4b5f32661202265f5a37306bcb35ec27a716190fce9dfd1` | `analysis/radium-spike-menu-image/section8_entries.tsv` | Parsed SPIKE menu section 8 table: 54 rows, all bounded PCM candidates. |
| `a30feeef50cc2b26a4b5f32661202265f5a37306bcb35ec27a716190fce9dfd1` | `analysis/radium-spike-menu-image/pcm_candidates.tsv` | SPIKE menu PCM candidates derived from section 8; all 54 rows produce bounded nonzero PCM lengths. |
| `8ddfd47fd6d066e9da4573bceb1cace9eee976476fd178301dfe817e9035bd48` | `analysis/radium-spike-menu-image/command_sound_refs.tsv` | Static SPIKE menu section 5 command-stream references: 300 opcode `0x0b` rows resolving local object IDs and variants to all 54 section 8 PCM chunks. |
| `e37ea95cd4b83827975ae1986255c3f580cfda20dfc9a8e8031d9a99454a07d7` | `analysis/radium-spike-menu-image/command_stream_summary.tsv` | Generic SPIKE menu section 5 stream decode summary: 340 stream rows, 68 unique stream offsets, no malformed streams. |
| `86274559c18487e6ea1b717ed5e114608e3dcdeddd68531469e8e52f21f790d1` | `analysis/radium-spike-menu-image/command_opcode_rows.tsv` | Per-opcode SPIKE menu section 5 decode rows with payload hex and generic little-endian field views: 2,065 command rows across 10 observed opcodes. |
| `fc0b051db9df47287a0827be5e48cc0ceaa84e6acbc63491a86045d70c804149` | `analysis/radium-spike-menu-image/command_opcode_payload_summary.tsv` | Compact section 5 opcode payload summary for the SPIKE menu image: command counts, unique payload counts, and common payload field values. |
| `21970c852818377c528c6b5d3324f3573786aa9bb885fbec492decc6381660ac` | `analysis/radium-spike-menu-image/command_opcode_histogram.tsv` | Compact histogram of observed SPIKE menu section 5 opcodes and payload sizes. |
| `0e10b997cf1beee324d2ed59fb6df17960c5ef4ffabbd2cd7211e0965bc9a406` | `analysis/radium-spike-menu-image/opcode_handler_table.tsv` | SPIKE menu native opcode table dump: 19 entries with handler addresses, payload lengths, observed command counts, sound-reference counts, and common payloads. |
| `13c87842755d123b4e1f28e176fa65cf636b10f6db4f8176b6e0c55907879cd0` | `analysis/radium-spike-menu-image/sound_export_manifest.tsv` | SPIKE menu sound export manifest: 54 deterministic WAV names, object/chunk refs, durations, channels, and offsets. |
| `1e4368123b723716567cf77e4029878cad4caa7e6c1cad41eadbcac4d7978820` | `analysis/radium-spike-menu-image/sound_export_manifest.json` | JSON version of the SPIKE menu sound export manifest. |
| `7d75cb16331405ae0179ebc0e765c30f5c81bfc073948d984dd1cbcbf537a744` | `analysis/radium-spike-menu-image/sounds/` | Combined checksum over 54 exported SPIKE menu WAV files. |
| `1cb6cd892f6ac5ae0bba76fee0933dd077417b4073d79ae6aad99f3469dc68a3` | `analysis/radium-spike-menu-image/sounds-best-named/` | Combined checksum over 54 best-named SPIKE-menu WAV aliases. |
| `f3d5a11da30d91b75757a411b23e14319e9fd09883b80a5318ef24e8875a0326` | `analysis/godot-introspection/gdc_script_summary.tsv` | Summary of 93 decoded `.gdc` scripts, decompressed sizes, recovered token counts, and validated sound-reference counts. |
| `8bf24ccb9ddaaab578bd50313232df3b2f55f286e5a2820e4ad1d4bf487a536a` | `analysis/godot-introspection/gdc_strings.tsv` | Recovered plain and XOR-`0xb6` string tokens from compiled Godot scripts. |
| `0db013f19c74d3bade949b59ce6dfeda68d35def01c78e1cd374f02b17705d3b` | `analysis/godot-introspection/gdc_sound_refs.tsv` | Validated `SE_*` references from compiled Godot scripts: 760 catalog constants and 12 direct Pokedex scene references. |
| `6eafaeeb0bc59a5d05a9a22f60a432a3b0e9fb21b0725609b20e25f6547c41ab` | `analysis/radium-image/wav-preview-manifest.json` | Manifest for 20 capped WAV previews generated from section 8 PCM chunks at 44.1 kHz. |
| `b39a9123afb9c65da5babf6b8531a7597f0008c94c3d34e5480647676efaeb26` | `analysis/media-preview-pages.json` | Generated preview-page summary: 2,491 main sounds, 1,137 Pokedex voice labels, 220 catalog-matched ASR labels, 169 low-confidence ASR review candidates, 225 catalog-offset candidate rows, 345 unresolved structural review rows, 54 SPIKE menu sounds, 2,545 complete best-named sound aliases, 25 confirmed native sound aliases, 4 sound-test-adjacent candidate rows, 1,705 draft ASR labels, 1,212 images, 273 videos, 1,170 text files, 5 fonts, and 1,449 Radium section 3 bitmap previews. |
| `e7833d43c8cbbe1225fd61f6b2e68d4849931a0f2ae1c7d8def9c92105bb8a1f` | `rootfs-triage-wiki/sound-catalog-offset-candidates.md` | Generated preview page with 225 audit-only catalog-offset candidate audio entries. |
| `3f35647f82fd9257351dd687c1614318e4def57efa6b0182f66a1278e3979300` | `rootfs-triage-wiki/sound-asr-review-candidates.md` | Generated preview page with 169 low-confidence ASR review candidate audio entries. |
| `c710013ae59cea8451c4211954678b835da98613aa6687d7a88116f5e92eb5d3` | `rootfs-triage-wiki/sound-unresolved-review.md` | Generated preview page with 345 remaining structural object-reference audio entries grouped by duration/channel review buckets. |
| `0899658ff2760be786ba4f682c4920a99a55c51350801c602528f47cecf2ffa2` | `rootfs-triage-wiki/radium-section3-bitmaps.md` | Generated preview index for 1,449 decoded Radium section 3 bitmap PNGs and 28 undecoded compact payload rows. |
| `e33480f3c18c1e81096fa029b671765f13316b0bad33b9718de5587e316d3137` | `rootfs-triage-wiki/scripts/extract_godot_pck_assets.py` | Static Godot PCK extractor and converter. |
| `b5ddb933f125cf6b54b81c56f4e3430ded50d843c045a49f0727a1f7ebc5f66f` | `rootfs-triage-wiki/scripts/harvest_loose_openable_assets.py` | Static loose-asset copier for PNG, TTF, MP4, and MOV files. |
| `257cb2d9ba653385aba63157a3bc143bb479c5188071ef529996d3f5da258b71` | `analysis/topper-emulator/topper_emulator.py` | MicroPython SPIKE node-board emulator for the Magikarp topper serial-key path; 6,452 bytes. |
| `32263b75f49aefba04596c196f85cc4ae4477eb536f767fcdeac7c0d5fc40e9b` | `analysis/topper-emulator/README.md` | Emulator notes and recovered command summary; 5,820 bytes. |
| `75c5c40ec0835140c3ee26474144777e69eb0947f57d428b72000470f0a77aaa` | `analysis/netbridge-emulator/netbridge_emu.py` | Live netbridge and `spike3-playfield/v1` service with manifest cabinet aliases, CPU-SPI routing, polled and unsolicited powerdist input reports, ordered output, and safe QEMU synchronization. |
| `7fcbb6b3752ddf7212d996660871d4b96b3f83666266e82fb027e4478bd46769` | `analysis/netbridge-emulator/test_netbridge_emu.py` | Sixty-eight protocol, routing, active-low wire-state, unsolicited UART, event-pump, output, synchronization, and recovery tests. |
| `e4e8828d0a0bcf7c533f67d03d69e83fd9bab93278d6ac8f084a2699b12be8f0` | `analysis/netbridge-emulator/README.md` | Runbook and porting notes for the host-side netbridge emulator. |
| `a27f5e00f09a014391418f6822dc6c5481c224ef0cf42786b8b290ecd508d9c3` | `analysis/netbridge-pico-firmware/CMakeLists.txt` | Pico SDK and portable host-test build file for the RP2040 netbridge firmware recreation. |
| `d01867dc66873799b966cf24b7574d9e389277f1556d88b92fd61342ea760222` | `analysis/netbridge-pico-firmware/include/netbridge_protocol.h` | Shared host-frame protocol and model API for the Pico firmware recreation. |
| `918b434ad6c8b4a0455b4eea0bd7ed8c341fb4e709bc6012c0aa43b4c074601e` | `analysis/netbridge-pico-firmware/src/netbridge_protocol.c` | Portable STX/ETX/ESC frame encoder/decoder for the Pico firmware recreation. |
| `6ea214bb401d325a90721630f156bd917ca83a09a1782d9acb85a24e0ff8016c` | `analysis/netbridge-pico-firmware/src/netbridge_model.c` | Portable bridge command and stub nodebus model for the Pico firmware recreation. |
| `708aff6ad0d42b5893c69acf3e7553b710869209fd9404e6c752ccb74cb9b182` | `analysis/netbridge-pico-firmware/src/pico_main.c` | Pico SDK entry point using UART0 on GPIO 16/17 at 2,000,000 baud with GPIO 25 heartbeat. |
| `838c17c4d290be3131cda58dbba8b58e7fa7048313462bc86570f71c88a43e71` | `analysis/netbridge-pico-firmware/tests/host_protocol_test.c` | Portable C host test for frame escaping, version, CRC, and node serial-key responses. |
| `b55cae30a3b97d2d7f6c412cb2a899cac54674417805791fae101e5547e6ecd9` | `analysis/netbridge-pico-firmware/README.md` | Build, wiring, and scope notes for the Pico firmware recreation. |

## Docker/QEMU Emulation Scaffold

These files are workspace-local generated support artifacts, not target-root evidence files. Runtime disk images under `emulation/work/` are mutable and intentionally not treated as durable hashes here.

| SHA-256 | Path | Notes |
| --- | --- | --- |
| `0bd0dbb8078c5a5cc7a8131523cc7475732681a908c1542136f9aa3c73af915f` | `emulation/compose.yaml` | Docker Compose entry point for QEMU, noVNC, dashboard, conagent backend ports, and optional netbridge emulator env. |
| `62449c2a30e70eacb59e65edaa581d0e43859ce72aa7d0cebf4ee9bda81d6957` | `emulation/docker/Dockerfile` | Debian-based emulator image with QEMU, noVNC, ffmpeg, qemu-user-static, initramfs tools, AArch64 cross tools, ARM64 Mesa EGL/GLVND runtime packages, and ARM64 Mesa Vulkan/lavapipe drivers. |
| `86d366aaadc007f2479b117dd1bca3c2799d90eb9ca0a37f13880cfee1694ffb` | `emulation/docker/fetch-debian-arm64-kernel.sh` | Downloads Debian ARM64 kernel/modules and builds an initramfs with DRM/`virtio_gpu` modules. |
| `dc0dfa3a01323f80d6e902a7df082b1dc1a5c973ef211c8d805889200609c739` | `emulation/docker/entrypoint.sh` | Container entrypoint for image preparation, noVNC, conagent backend, dashboard, optional netbridge emulator, and QEMU startup. |
| `6ea31e7664c1179516caa8fb9435667442444b10901d9d564ddc86aa4b429489` | `emulation/scripts/prepare-rootfs-image.sh` | Builds the generated ext4 guest image from target-root entries and injects guest helpers, Mesa fallback drivers/runtime libraries, Vulkan ICD metadata, GLVND descriptor, and stubs. |
| `878427ff0b8930097f28ef17cb27d7314e0dba8198f9de091fbef7ca630c1ef9` | `emulation/scripts/run-qemu.sh` | Starts QEMU `virt` with `virtio-blk`, multi-output `virtio-gpu`, noVNC-facing VNC, serial logs, networking, a control socket, and optional netbridge serial. |
| `19218459e198a1e21bcbd720b32568c4873d2fb074a3920504b773e63f179c19` | `emulation/guest/emu-init` | Guest init for mounts, diagnostics, `/dev/dri/card1` compatibility symlink, hardware placeholders, control agent startup, and target launch. |
| `a02dba6a4793386aea46715c71e0ac617daeebdc089611928051601eab60a59e` | `emulation/guest/setup-fake-devices.sh` | Creates early inert device placeholders, optional `/dev/ttyAMA5` netbridge serial mapping, and hardware setup log. |
| `0212843e592f9fb87d2110c4f468df580cc56c1c118d2a4a87dc19e50c754abb` | `emulation/guest/guest-control-agent.sh` | Guest virtio-serial event logger for dashboard switch events. |
| `ceee33ca3ce178067fdc8993f5cc2ef54dcbdc9277fe9b682f3f77505fe690ec` | `emulation/guest/launch-target.sh` | Launches `boot_display`, SPIKE menu, main game, monitor scripts, or shell with emulator Mesa/EGL and optional real-netbridge-serial environment. |
| `b8b289eeccb83d3036cbb06ebacedcb2807333ff735097717cc473cac8f21e96` | `emulation/dashboard/server.py` | Browser dashboard and JSON switch-event API. |
| `ae65658eb53d8e116a0c1b342140e4267211bd3752a25e1e65b28547cb4df7a5` | `emulation/stubs/spike3emu_stub.c` | AArch64 `LD_PRELOAD` stub for logging/faking selected device opens/ioctls, DRM connector compatibility, GBM/EGL tracing/fallbacks, and optional `/dev/ttyAMA5` passthrough. |
| `1062b060d4bf6a4798bcca3ee188d4c53322271cd882f8ef36b6996b716572a0` | `emulation/scripts/capture-vnc.py` | Raw RFB/VNC framebuffer capture helper used to verify browser-visible QEMU output. |
| `61f62ec692e91cddcd1dd81d7edb32aaeb7951f80c82f64b472fa54f9009e217` | `emulation/README.md` | User-facing emulator runbook, optional netbridge mode, and current limitations. |
| `239ddcc7b6928582df66273cd557bf939dbc14f792f554c6ee2e6d4844ac00ca` | `rootfs-triage-wiki/docker-qemu-emulation.md` | Wiki page documenting implementation, verified progress, optional netbridge wiring, and the current display and hardware blockers. |
| `62eddb1582076ca9e07b3910e71673e7d15e4cd3599d73ce51e3a4148e5b95ad` | `rootfs-triage-wiki/analysis-evidence-map.md` | Cross-reference from durable `analysis/` outputs to wiki findings, confidence boundaries, and open enrichment work. |
| `3ec9bb35a9fc74f992f84fc71405b5dda9c8c096312263902dfc850597ff8a98` | `rootfs-triage-wiki/netbridge-re.md` | Wiki page documenting Ghidra-backed netbridge and power-distribution protocol recovery, emulator use, Docker wiring, and Pico firmware recreation. |

## Generated Static Triage Artifacts

These files are workspace-local generated artifacts, not target-root files.

| Path | Notes |
| --- | --- |
| `analysis/static-triage/game.strings` | Offset strings for `/games/pokemon_pro/game`. |
| `analysis/static-triage/game.objdump-p.txt` | Dynamic section/program metadata for `/games/pokemon_pro/game`. |
| `analysis/static-triage/game-image-bin.binwalk.txt` | `binwalk` report for `/games/pokemon_pro/image.bin`. |
| `analysis/static-triage/spike-menu-image-bin.binwalk.txt` | `binwalk` report for `/games/pokemon_pro/spike3/spike_menu/image.bin`. |
| `analysis/static-triage/netbridge.strings` | Offset strings for `/games/pokemon_pro/spike3/netbridge/netbridge.elf`. |
| `analysis/static-triage/netbridge.objdump-p.txt` | Program headers for `/games/pokemon_pro/spike3/netbridge/netbridge.elf`. |
| `analysis/static-triage/node-firmware-ranges.md` | Parsed Intel HEX record/range summary for top-level node firmware. |
| `analysis/static-triage/pokemon_pro_0_83_0_sidx.strings` | Offset strings for `/games/spk/index/pokemon_pro-0_83_0.sidx`. |
| `analysis/static-triage/sidx-path-summary.txt` | Summary of package paths found in the `.sidx` strings. |

## SPIKE Support Artifacts

| SHA-256 | Path |
| --- | --- |
| `022619c279d51d0efc9a3ba289140ebc05c202b11b6c26d4685503feb7ada8d8` | `/games/pokemon_pro/spike3/bin/dprint` |
| `4b189cabd04c27ccf3583c6d708fe48dde8c17e2b5ad0056610d45a915868a04` | `/games/pokemon_pro/spike3/bin/boot_display` |
| `5e12b2e65d077ca0fa0ad18df2fc302d350dfc91b716c41967015db6e964a755` | `/games/pokemon_pro/spike3/bin/bttest` |
| `05b7f7c329da79fb24078df69c8401c7a47be5c8a855b73fb937e052bce28d85` | `/games/pokemon_pro/spike3/netbridge/netbridge.elf` |
| `624c999309240592979ddeb839258f21cb46633a6b2bbbd43543a55fd97157dc` | `/games/pokemon_pro/spike3/netbridge/rp2040.cfg` |
| `5777f6f0db066335e619ecd1ee8b3f1fc594ebff072d52b7ada4f89370eaa96a` | `/games/pokemon_pro/spike3/netbridge/spike3-swd.cfg` |
| `b6b795fddf4a593d98595f71bf5638f6737d18b364eae657337147dc075148af` | `/games/pokemon_pro/spike3/netbridge/version.txt` |
| `3928411d136f58197dc6fd8dd9a9f2f2f5150c55dd3fa1637ad68a6931eb01f6` | `/games/pokemon_pro/spike3/spike_menu/game` |

## SPIKE Scripts

| SHA-256 | Path |
| --- | --- |
| `e35a3b97ab3d2ff515d777d83f78da0256bf5d4d1c1e4af5f2b89c977d69299a` | `/games/pokemon_pro/spike3/scripts/find_trusted_devices.sh` |
| `58f888ae6049962adfee980cfe500f5d01a812fe07b0ee4e223625205513620c` | `/games/pokemon_pro/spike3/scripts/find_untrusted_devices.sh` |
| `2be517c5b1b4f6f1dae01d00935db964e98639b6a82dc707240ea39f2390b05c` | `/games/pokemon_pro/spike3/scripts/copy_newest_corefile_to_usb.sh` |

## Node Firmware Images

| SHA-256 | Path |
| --- | --- |
| `6ab4f2d8c6e2e4f10ae7c61dcc2c994dbbf490669cf014626577659cbe709314` | `/games/pokemon_pro/coil4node-LPC1112_101-1_33_0.hex` |
| `f3bd45e05f693b8bb99931f0bc9f65a9f6046de5a97d6157cf1ac4d38868ac1e` | `/games/pokemon_pro/pinnode-LPC1112_101-1_33_0.hex` |
| `6a073cd25469dfa0db41c9ec80e877f3cebaa9ffcc0c4c1afe81e110b86ac7ad` | `/games/pokemon_pro/hdmi_ws2812node-LPC1313-1_33_0.hex` |
| `f09048aae0f29852430d60f2316fde89459735d6f840c1d5ff467c3a2db48439` | `/games/pokemon_pro/tmc5041node-LPC1313-1_33_0.hex` |
| `7724048f99cb0bd41718cff45a2dd0c346e96ccd469ff0167fd5f8c3da558fdd` | `/games/pokemon_pro/pinnode-LPC1313-1_33_0.hex` |
| `8726374ef31843c04741467ec222e3866151ef4af01fca3d51de056016d0698f` | `/games/pokemon_pro/lcdnode-LPC1113_302-1_33_0.hex` |
| `9714787bf448873914c1a6fb1ddb89acb272e563f782d25ebc995f8672a3d416` | `/games/pokemon_pro/coil4_lednode-LPC1313-1_33_0.hex` |
| `f92a011475196fef8b7cd73c49a557022c46cfb60af96999b769a7144ed31861` | `/games/pokemon_pro/coil4node-LPC1313-1_33_0.hex` |
| `2226aedfa289ecca610e29de38418fa9df1319fdc20cbb45bf4e6a2cfda26651` | `/games/pokemon_pro/magsensornode-LPC812-1_33_0.hex` |
| `d44012247c045c5ad1502f0c68b903a25186195f23ee07d8948c6f045c143c1f` | `/games/pokemon_pro/hdminode-LPC1313-1_33_0.hex` |
| `97bd462868f9e9a1ac6a2dca2c3f14f277f621d6f4b43022f6e9f8184d062746` | `/games/pokemon_pro/ws2812pinnode-LPC1313-1_33_0.hex` |
| `4ea55b676552c2eb7c6256dd0cb8994e09fc553781a77afac8816423c5760982` | `/games/pokemon_pro/node4-LPC1124_303-1_33_0.hex` |
| `eb14c9ab8e730510b1f2b75f27c39be2345228561075c0d7334584e01d6082e1` | `/games/pokemon_pro/node4-LPC812-1_33_0.hex` |
| `f8c4af570b7419dee7ccffd4c0d219b4cad3a7fe785f934c2a864cbb100dde03` | `/games/pokemon_pro/ws2812node-LPC1313-1_33_0.hex` |
| `a59efe815648fce1316e11c05881ba3c05edd4bc0d857359a07fc902f61fdf4c` | `/games/pokemon_pro/pinnode-LPC1112_201-1_33_0.hex` |
| `21fb36da50792beca06372a27c122c4f6a45739d4e92a688f74217eb4311a8b9` | `/games/pokemon_pro/coil4node-LPC1112_201-1_33_0.hex` |
| `5ca73eb8f6c1fe2574f2fb5ed1b4fe383c91db28e9ac463fb91af42812a2fa42` | `/games/pokemon_pro/tmc2590node-LPC1313-1_33_0.hex` |

## Sensitive / Handle Carefully

The following file exists and is referenced by tooling, but its value is intentionally omitted:

- `/games/pokemon_pro/spike3/scripts/corefile_passphrase.txt`
