Dungeon Master Nexus — startup status

This is an evidence report for startup, not a specification for a completed Nexus startup screen. Updated 2026-10-27: an authentic Japanese retail cold boot reaches the native PRESS START BUTTON title prompt and, with scheduled retail controller input, the native three-choice title menu in Ymir. The menu was navigated into its Configuration page from a saved diagnostic state. Separate captures show New Game selected and Down selecting Continue, with five TITLE.BIN sprite draws per state compared with the retail screenshots. The verify_nexus_title_sprite_screenshot.py verifier now checks the five-draw Japanese Continue layout and the English New Game and Continue layouts against authentic retail source bytes and captured CRAM. Ymir also completed Continue-to-gameplay with the corpus-retained BKR image whose SHA-256 is 87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035: the retail Load screen showed B01 0:16 NORMAL, then entered the four-champion dungeon view. The isolated BKR copy retained its hash after loading. A paired Up-input replay changed the rendered gameplay view. These captures verify the retail reference flow in Ymir only. Firestaff now renders authenticated English and Japanese New Game/Continue/Configuration foreground sprites from regional TITLE.BIN data. English Configuration text pixels match its Ymir capture; final marker RGB remains background-dependent. The shared background, full-screen composition, Firestaff menu destination execution, Continue loading, and gameplay HUD/viewport remain unimplemented or unverified.

Verified initialization order

nexus_v1_init() first selects a hash-verified extracted corpus when DM.BIN and the authentic DGN corpus are available as real loose files. LEV00.DGN is a title/entry resource; the first playable level is LEV01.DGN. A valid co-located retail ISO can then be read as a supplementary source for exact ISO members. If only ISO data is available, the ISO reader is used directly.

After source selection, the engine attempts to read real RLOWFIX.BIN, startup surfaces, FACE.BIN, FONT256.S2D, sound metadata, and other source files. Missing or unbound consumers must not be replaced with synthetic surfaces. Title startup must therefore not report a game position until Saturn’s authentic LEV01 position and direction have been captured and bound to the same runtime source.

Verified startup resources

Resource Status
TITLE.CG + TITLE.BIN MAPD/TIBG decoding and five retail images are verified. An authentic Japanese title capture binds the complete TITLE.CG member to its VDP2 upload and the MAPD palette to CRAM; the visible NBG0 bitmap’s producer is also traced. The display consumer, MAPD order, layer placement and timing are still unbound. See title source audit.
LOGOBG.DG2 PP pixels and a 256-entry BGR555 palette are verified. Neither occurs in the measured Japanese title-frame VDP2 memory/CRAM, so it is not admitted as the NBG0 source; no other display role is proven.
WARNING.BIN, GAMEOVER.BIN, STABG.BIN real surfaces are decoded and receive byte provenance; presentation is missing
FACE.BIN The JP retail member is verified as 45,104 bytes (bd9ca16ea68043984e2804067b6cd66f): 20 variable-length, 56×56 PRS3 portraits with source palettes. The PLRD roster-to-portrait ordinal and the VDP1 destination/order are still unobserved.
FONT256.S2D 242 CG tiles are retained in production source; Saturn page/attribute/glyph mapping is missing
MENU.BPK All 162 PRS3 surfaces decode to source-bound bytes. In one complete authentic Japanese menu frame, 86 whole surfaces are byte-resident in VDP1 VRAM, but none of 137 textured command sources starts in those ranges. The capture does not establish that MENU.BPK supplies the visible menu. Ownership, ordering, CLUT and VDP1/VDP2 composition remain unbound; see the menu snapshot join.
Saturn Backup RAM nexus_v1_saturn_bkr_parse reads hash-pinned 32 KiB card directories and block chains, returning exact opaque payload bytes; native save selection, payload interpretation, and runtime loading remain missing
Mednafen visual baseline A clean J-BIOS capture against authentic retail shows black boot followed by the original intro FMV without input; menu/LEV01 identity remains missing

Deterministic title-state replay (2026-10-26)

The system-wide Ymir 0.4.2-dev capture build on TRV2 was run with --debug, the authenticated Japanese BIOS and retail cue, and the retained title-prompt state in CLI slot 2. The isolated profile mapped that state to savestates/5EA76F972566FE6EB667D092CD494BCF/1.savestate; it was removed after the run. One frame after the successful load, the VDP2 outputs matched the retained title-state reference exactly:

Output SHA-256
VDP2 VRAM de1a77427dc62457eb4b59fa0424fd25e9768ce229505445311929d3bdae405c
VDP2 CRAM db282593790dec4a2bf8f76293c0458a1a140adc3351650bd56a417f0359e0de
VDP2 registers 79efa616c2db727749aa9018864d1ad32c1583935652fafb16534ba69f8e1f2d

The capture build also emitted big-endian VDP1 and VDP2 register files (32 and 512 bytes respectively) and a register snapshot. That tooling is proposed in Ymir PR #966. This confirms a repeatable authentic VDP2 title-state checkpoint, not the separate VDP1 title-menu command bundle: the one-frame VDP1 outputs did not match that bundle’s frame-497 hashes. It therefore does not admit the menu compositor, input dispatch, title-to-menu transition, or Firestaff presentation.

The same system build was subsequently checked after its VDP1 trace was reattached following save-state loading. The single captured frame produced a complete ymir-vdp1-capture-bundle-v1: capture frame 0 contained 168 command rows, its snapshot cursor was command 168 at address 0x00000cc0, and the bundle reported zero dropped rows. This proves that the Ymir CLI can now retain frame-aligned VDP1 command evidence across this authentic state load. It still does not identify the displayed menu, establish source ownership or palette composition, or authorize a Firestaff renderer.

Ymir PR #966 also contains a bounded VDP2 VRAM/CRAM write tracer and an export receipt. Its system build and the existing title-state VDP1/VDP2 checkpoint were regression-checked on TRV2. The VDP2 write tracer has not yet produced a retained source-to-write witness for this menu, so it is tooling for the next capture rather than an admission signal.

An input-driven retail probe sent the observed Start key route while retaining the VDP2 trace. It produced 92,288 VRAM-write rows with no trace drops, but its captured VDP1 cursor had only seven commands rather than the authenticated title-menu bundle’s 178. It is therefore negative routing evidence, not a title-menu capture; its untracked raw dump was removed after inspection. Do not use those writes to label a menu resource or relax a presentation gate.

scripts/verify_nexus_ymir_title_state_checkpoint.py verifies this narrow checkpoint from caller-supplied retail CUE, BIOS, title-prompt state, and local Ymir dump files. It pins every CUE-referenced retail track and validates the register snapshot schema. The checkpoint pins VDP2 register bytes; it does not use the emitted VDP1 register file as evidence because this capture record has no independent VDP1-register digest. Nothing in this receipt establishes menu or gameplay presentation.

Deterministic Start-to-menu checkpoint (2026-10-26)

Ymir PR #966 adds a frame-aligned Control Pad 1 Start route for the existing state/frame/dump capture path. On TRV2, a fresh temporary profile used the authenticated Japanese retail CUE, BIOS, and title-prompt state in CLI slot 2. It held Start during capture frames 0 through 59 and captured 120 frames with --debug --load-state 2 --capture-frames 120 --dump-memory --capture-start-frame 0 --capture-start-hold 60. The profile and raw dumps were removed after inspection; the displayed title-menu image and VDP1 receipt are retained in nexus_v1_ymir_deterministic_start_menu_20261026.

The capture completed at VDP1 frame 59 with command cursor 178 and 178 rows for that frame. Its complete trace had 10,668 rows from frames 0 through 59, with zero dropped entries. This is the same command count as the retained retail three-choice title-menu capture, so it is reproducible emulator evidence for the observed Start route rather than host-window timing evidence. The VDP2 title checkpoint remained byte-identical to the retained title-state reference:

Output SHA-256
VDP2 VRAM de1a77427dc62457eb4b59fa0424fd25e9768ce229505445311929d3bdae405c
VDP2 CRAM db282593790dec4a2bf8f76293c0458a1a140adc3351650bd56a417f0359e0de
VDP2 registers 79efa616c2db727749aa9018864d1ad32c1583935652fafb16534ba69f8e1f2d
VDP1 capture receipt 0e5cfa33070e33f24ae0e25ead7ce4fac561ae7c329ef7c59ff12382d3ea519e
VDP1 trace b80c7a118e7f9df4f941804cdc045f4024336080504c512bbdf5c4e0df19d8d3
Retained title-menu image 0ad6bbc433936cd853fef476c8eb14be2c9532efcfcc218a43ca1053500ca55c

This makes title-menu capture reproducible without X11 keyboard injection. It does not bind a retail menu resource to a Saturn consumer, prove the final displayed pixels, or permit Firestaff to present a host-built menu. Those production gates remain closed.

Retail title selection captures (2026-10-27)

A historical Ymir capture at VDP1 frame 59 loaded a retained title-prompt state before Start and shows NEW GAME selected. A source comparison against the authenticated Japanese TITLE.BIN in .firestaff/data/nexus reported 1,495 nontransparent matching sprite pixels across five final title draws: 213/213, 213/213, 313/313, 293/293, and 463/463. This is historical source-comparison evidence, not a cold-boot receipt or a result from the current verifier, which validates the Japanese Continue layout only. The retained capture is ymir_nexus_atomic_menu_20261026 on the external evidence disk; its screenshot SHA-256 is 8721cce3354bc20b1cd367fd44be3d4ecc60ca65fa89c7d00654e83f5ad7db23.

A separate authentic Japanese Ymir capture pressed Down for two emulated frames and shows CONTINUE selected at VDP1 frame 8047. The current verifier matched 1,441 pixels across five TITLE.BIN draws (313/313, 186/186, 186/186, 293/293, and 463/463). Its external evidence receipt is ymir_nexus_coldboot_menu_20261027/menu_continue_input_20261027; screenshot SHA-256 741c620e945b5ab3e05f6bc5d182fc4ada9439071b79718f67326bcdd56c6118. Both checks bind source texture bytes, CRAM colors, sprite priority, and individual screenshot pixels. They do not yet reconstruct or admit the full retail frame for Firestaff’s live renderer.

The retail Continue flow was separately observed in Ymir with a 32 KiB BKR image reported as retail-written. Down selected Continue, Accept opened the native Load panel, and accepting its internal-memory entry reached a four- champion dungeon view. The image digest was 87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035; the capture receipt notes that its transfer/source chain was not retained. This demonstrates the retail route, not Firestaff’s BKR-to-engine handoff. See nexus-continue-real-bup-20261025.

An independent 2,200-frame no-present replay on 2026-10-26 used the same authenticated Japanese IPL, retail CUE, retained title-prompt state, and the hash-verified four-champion BKR (87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035). It scheduled Start, Down, A, and a second A at emulator-frame boundaries rather than through X11. The BKR digest was unchanged after the run. Its final native frame was the Dungeon Master Nexus title image, SHA-256 1c224b148ec5c107569c1c9b30c5dfab24d8110d3e391b0bcb1089cd582dfb13. This is a timing boundary: those inputs occur before the title is receptive and must not be interpreted as a verified menu or Continue route. The temporary profile, dump, and screenshot were removed after inspection.

A later 3,400-frame replay moved the same Start/Down/A/A sequence after the title boundary, but held every control for only eight emulated frames. Its retail endpoint remained the title image (SHA-256 8d495ffa4e8a76ab38a48c3c84a6fcc437db1bc4682aec6ac897609ed2307d95), while the BKR digest again remained unchanged. This is negative timing evidence: an eight-frame post-title hold is not sufficient to establish a retail input transition. It does not authorize a host menu, save route, HUD, or viewport.

A separate 3,400-frame debug replay kept the same post-title frame schedule but extended each Start, Down, A, and second-A press to 60 emulated frames. Its endpoint was still the native title screen, with SHA-256 8d495ffa4e8a76ab38a48c3c84a6fcc437db1bc4682aec6ac897609ed2307d95; the four-champion BKR digest remained 87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035. Both runs ended with the same final title-screen image hash. Extending the post-title hold from eight to 60 frames did not change the final endpoint; no claim is made here about intermediate menu or loading transitions. The temporary profile, X display, memory dump, and inspection copy were removed after verification. This remains negative emulator evidence only: it does not establish menu, save, HUD, or viewport parity.

Ymir PR #966 additionally provides --capture-screenshot for the same capture-owned route. It queues a profile-local framebuffer PNG only after the requested frames and memory receipt have completed; it requires both a frame capture and --dump-memory. A 60-frame retail boot check produced both the VDP1 receipt and that PNG. The generated media was discarded after verification and is not a Firestaff asset or parity admission signal.

Ymir PR #966 now also provides --capture-no-present for deterministic runs where an X11/GLX compositor cannot swap GUI frames reliably. A fresh temporary profile on TRV2 loaded the same authenticated Japanese BIOS, retail CUE, and title-prompt state, then completed --load-state 2 --capture-frames 1 --dump-memory --capture-no-present under Xvfb. It wrote a complete memory dump and exited with status 0 in under three seconds. The profile and dump were removed after the check. This proves the capture transport no longer depends on a successful GUI presentation for this state; it does not supply a framebuffer, prove visual parity, or open any Firestaff presentation gate.

The same state was then captured with --capture-screenshot in no-present mode. The completed dump was followed by a 640×448 RGBA PNG with SHA-256 4b19474395c7192e7e68faf82efe0c240c9da213c4cd36c1ad91f31e68c17d82 before Ymir exited. The temporary image was removed after its dimensions and digest were checked. This validates non-present screenshot delivery for future visual comparisons; it is not itself a pixel-parity admission or a Firestaff asset.

Boot VDP2 writer anchor (2026-10-26)

Ymir PR #966 was extended with a bounded direct SH-2 VDP2-write trace and a normal-disc boot capture route. A 60-frame --debug --capture-boot-frames 60 --dump-memory --trace-vdp2-writes run against the authenticated Japanese retail CUE and BIOS recorded one direct master-SH-2 write: PC 0x0602e12e wrote the 16-bit value 0x0000 to VDP2 VRAM bus address 0x05e7fffe at VDP1 frame 21. The current call-site was return address 0x06032c24, targeting the generic word-copy routine at 0x0602e120. The trace had zero dropped entries. Its CSV and receipt hashes were respectively 47b98193f1b7615aad2326f5fc8386b502a214c6a244fece30e3a6580a0efc46 and 7efd6c70e83aea4178fa013ce59dfe7149e05727c26e81b64f736897356646fd.

This is a real SH-2 routine anchor for subsequent disassembly of a retail VDP2 writer. It does not identify the source resource, establish a complete upload sequence, or prove title-menu ownership. The temporary memory dump was removed after the PC, address, width, value, and receipts were checked.

Big-endian SH-2 disassembly of the captured high WRAM identifies the inner call at 0x06032c20: the wrapper masks r4 with 0x0007ffff, maps it into the uncached Saturn bus (0x25e00000 | r4), and calls 0x0602e120 with a one-word count. A static cross-reference at 0x060282d4 calls that wrapper with destination 0x25e7fffe. This explains the recorded address, but its source is a stack temporary. It therefore remains an initialization anchor, not source-resource provenance or permission to draw a host menu.

Delayed title-menu confirm observation (2026-10-26)

An authenticated Japanese retail title-prompt state was replayed in Ymir with the deterministic capture route for 360 frames. Start was held for frames 0..59; Control Pad 1 A was held for frames 240..249. The captured final frame was VDP1 frame 231 with 112 command records, rather than the earlier title-menu capture’s 139 records. A window capture made immediately after the dump showed the retail door-opening transition; its SHA-256 was abdd1e9f65c0999d967fced4dad456856751cd9afcb46080616f617470ffc55a.

This is an observed response to a delayed input schedule, not sufficient proof that A semantically confirms New Game. A matching no-A control was then run from the same retained state with Start held for 0..59 and no other scheduled input through the same requested 360-frame capture. Its final profile-local framebuffer was the native three-choice title menu, with SHA-256 20801648c86a5cbbe2a0e6c9cc90e625579fb52ba41f0b2234a51d3b0b17ecfe. The control capture produced an undropped VDP1 trace (32,028 rows), but its bounded trace buffer ended at frame 179; it therefore cannot be used to compare a final VDP1 command stream to the delayed-A capture. The framebuffer is nevertheless emitted after the requested capture-owned frame loop, so this is evidence that the observed door transition depends on the delayed A schedule rather than on the Start-only title timeline.

This still does not establish which retail menu item A confirms, the next stable game state, source-resource joins, or palette/compositor evidence. Do not enable a host menu, gameplay, HUD, or synthetic confirmation rule from this observation. The temporary screenshots, dumps, profile, and emulator process were removed after their hashes and receipt limits were checked.

The same real state and input schedule was also captured for 600 requested frames. Its final framebuffer showed the retail Now Loading screen (SHA-256 07a6f3a612ca75209cd6308852a7cf25b3d1f35943ce2f5774e720376ef7c61c), and the VDP1 receipt retained 48,380 undropped trace rows through frame 391. This extends the observed route from the door transition to the native loading state. It does not yet reach or bind a stable playable level, the party pose, viewport, HUD, level source, or palette/compositor route; it must not be used to synthesize any of those Firestaff states.

After the no-present capture path was added to Ymir PR #966, the same authenticated state and input schedule was repeated under Xvfb without GUI presentation. The 600-frame run exited with status 0, wrote its memory dump, and saved a 640×448 RGBA screenshot with the same Now Loading SHA-256 07a6f3a612ca75209cd6308852a7cf25b3d1f35943ce2f5774e720376ef7c61c. Its VDP1 trace and receipt digests were respectively d529f883b686b7c3fc83db929e3e1b476527799ca3fbda35ba41a4ef48a1079e and 45d384f8b6d8c4a5ab48941bcea462cbe1624ea57f8679ebfe4f8c8c1baf3a22. The temporary profile, dump, screenshot, process, and result receipt were removed after verification. This independently reproduces the observed loading checkpoint but does not extend its presentation admission.

Ymir PR #966 also adds --capture-save-state N. A real title-prompt capture saved slot 3 after its dump, and a second isolated Ymir process loaded slot 3 and completed a further one-frame dump. This makes long retail transitions inspectable through short, repeatable follow-up captures. The temporary state and both profiles were removed after the round trip; a saved emulator state is diagnostic transport, not a Firestaff asset or an admission signal.

An authenticated 900-frame Start/A capture saved such a checkpoint and reached a 640×448 first-person dungeon viewport with SHA-256 8ede95f1fd777eda69ebcfc91d0268194e501f145306eb1fc2971ed0113a2274. Reloading slot 3 in a fresh isolated process and capturing one frame reproduced the same digest exactly. The image has no party HUD, so it is evidence for this narrow rendered viewport checkpoint only. It does not identify the level or room source, establish input semantics, authorize a host compositor, or prove the HUD route.

On 2026-10-26, the system-wide Ymir build on TRV2 reproduced that route from the retained Japanese title-prompt state: Start held for capture frames 0..59, then A for 240..249, over 900 --debug frames. The framebuffer again hashed to 8ede95f1fd777eda69ebcfc91d0268194e501f145306eb1fc2971ed0113a2274; the isolated four-champion BKR remained 87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035. Saving that endpoint in CLI slot 3 and reloading it in a second isolated profile reproduced the framebuffer hash after one frame. Both temporary profiles, dumps, screenshots, and X displays were removed. This verifies the current Ymir capture tooling and the bounded retail viewport route, not a Firestaff renderer, menu consumer, or HUD admission.

Bounded candidate-state-window SH-2 read witness (2026-10-26)

Using the same hash-pinned Japanese retail CUE, BIOS, title-prompt state, and four-champion BKR, an isolated system-wide Ymir run advanced the observed Start/Down/A route, saved a fresh slot-3 checkpoint, and replayed one debug frame from that checkpoint. The source BKR remained 87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035 before and after both captures. A bounded SH-2 data-read trace over 0x060476d0..0x06048000 recorded twelve master-SH-2 16-bit reads, all in the 0x06047ca0..0x06047cb6 range, without dropped rows. The captured checkpoint has SHA-256 48ca0feb12432dde6748124a9e639ad4e466efc307520268356a16c00fd5b2ce; the retained CSV has SHA-256 e45ad64fa89ce263b51c0579167a35fcfacdce840a438854b48b8df5100dd9ee.

Disassembly against the retained high-WRAM image identifies two real 16-bit field reads at offsets +4 and +6 from the observed eight-byte records, and the caller dereferences a table entry in the same address range. For example, the trace reads the 0x0124 and 0x00b0 fields from the record beginning at 0x06047cb0; the next observed records have the same packed layout. This is evidence of structured runtime state, not evidence of a particular UI role. The high-WRAM image used for this disassembly has SHA-256 344b6a15bdac95a8e698c9a9ccc336f6f225fb3a4c60eec9788102c57b2e197d.

The raw CSV, its completed Ymir bundle, VDP1 command trace, VDP register snapshot, VDP2 registers, high-WRAM image, and checkpoint are retained in the TRV2 verification store as nexus_v1_ymir_sh2_read_trace_hud_20261026. This is an authentic execution witness for the specified RAM window. It is not an ownership join from a Firestaff source resource to a HUD element, does not label those reads semantically, and does not permit a host HUD, viewport compositor, save route, or input implementation.

SH-2 to VDP1 command handoff (2026-10-26)

Ymir PR #966 now exposes a bounded SH-2 data-write trace independently of the older VDP2-only trace. A two-frame replay from the same authentic checkpoint traced physical VDP1 RAM at 0x05c00000..0x05c80000. It retained 176 master-SH-2 writes with no drops. In frame 0, the master SH-2 completed the command at physical address 0x05c000a0 by writing 0x5000 to offset zero and 0x0018 to offset two. In frame 1, the VDP1 command trace executed the command at VDP1 address 0x00a0 with word 0 0x5000 and word 1 0x0018.

This is a same-checkpoint, temporal CPU-to-VDP1 handoff: it proves that the retail SH-2 authored the VDP1 command consumed on the next captured frame. The two-frame SH-2 write trace and VDP1 command trace have SHA-256 58c9d41740a75063543c70b6cb11e336268cfb47486df1ffdcbe19718f12bc66 and c93f3a8f86263ded3b79d081f15771bce4331ab31ec6a0ce37d3b4691b628f32 respectively. The corresponding completed receipts are retained with the checkpoint. This does not identify the source resource, texture, palette, or semantic role of that command, so it does not by itself admit a Firestaff HUD, viewport, or renderer.

Title-menu VDP1 source-span join (2026-10-19 capture; analyzed 2026-10-26)

A read-only source-join analysis on TRV2 used the retained Ymir v0.4.0 Japanese title-menu VDP1 capture (VRAM SHA-256 0f484877f5c5ef300fcbcaec6948b50c8b7aed7945e448a9f8281b2da46a2f21) and read the Japanese retail CUE/ISO members directly from the authentic Nexus media root. The analysis identified 137 active texture draws: 124 indexed image/CLUT pairs exactly matched to LEV00.DGN, eight direct-color spans matched to LEV00.DGN, and five spans matched to TITLE.BIN. No active draw was left byte-unbound. Of the 124 indexed DGN draws, 108 had a matching static FACE selector; 16 did not.

This narrows source-byte provenance for that single Ymir menu frame. It does not establish SH-2 upload ownership, the semantic use of the 16 draws without static FACE selectors, menu input progression, complete pixel composition, or production renderer permission. It is a different capture from the 2026-10-25 VDP command bundle above. Keep Nexus startup gated until a same-session source, input, command, palette, and displayed-frame route is bound; do not infer that MENU.BPK owns these observed draws or that it is unused in other frames.

The five matched TITLE.BIN source spans fall within the verified TITL resource-directory entry with class-local id 3 (record beginning at file offset 0x0d068, before the MAPD record at 0x0e278). This adds record-level ownership only. The exact subresource role, upload path, and menu label/pixel association remain unbound. The 16 LEV00.DGN draws without static FACE selectors likewise have byte and material matches, but no evidenced semantic owner; do not label them from dimensions or geometry alone.

The BKR parser has been checked against all four hash-pinned images in the private corpus, which are reported as retail-written. It reproduces each 20,480-byte payload hash from the existing read-only Python reader. These images use 64-byte card blocks (512 blocks per 32 KiB image); each game entry claims 354 blocks. The parser deliberately returns payload bytes without interpreting game fields. This supports container-level Continue work but is not yet a save-load path into the Nexus engine. The opaque Saturn capture receipt remains a separate API and is not a BKR parser. The BUP used in the Ymir Continue run has no retained transfer chain, so its retail provenance is reported rather than independently established.

Retail title-menu evidence (2026-10-25)

An isolated Ymir --debug run with the authenticated Japanese BIOS and retail disc reaches the native Nexus title menu. The retained 2026-10-25 screenshot shows the three actual choices: NEW GAME, CONTINUE, and CONFIGURATION, with New Game selected. Its SHA-256 is d1ec79c6b1e3abcd16837781a1212eedb3cb157562356593ab3ce069b18f2ab4. The 2026-10-24 keyboard run records Start opening the menu and confirming NEW GAME entering the dungeon. In a separate fresh-profile attempt, selecting Continue left the screen unchanged because no save was present; that attempt did not verify save loading. Together, these are retail startup/input observations, not Firestaff parity. The capture environment, key mapping, and per-action limitations are recorded in parity-evidence/verification/keyboard-mouse-debug-20261024/README.md.

Firestaff title-menu keyboard state (2026-10-27)

M11 now has a separate state for the observed Japanese retail title menu. The ready title prompt accepts the configured Action input to open the retail menu with New Game selected. Up/Down and W/S now navigate between the three choices. An authentic English retail Ymir replay shows Down selecting Continue; a subsequent Up returns to the original New Game screenshot pixel-for-pixel. F matches the observed Ymir desktop binding for Saturn Start; Enter, keypad Enter, and Space are Firestaff keyboard aliases. These keys feed Action only while the Nexus title is active. At this stage, the menu choice was not drawn; subsequent capture-backed work added regional foreground sprites for selected menu states, while the shared background and full-screen composition remain unbound. Accepting New Game, Continue, or Configuration still does not execute a production destination. Continue execution remains unavailable until Firestaff reads authentic Saturn BKR media; the generic Firestaff save-file mask is deliberately not reused. This is an input-state increment, not title-menu or gameplay parity. See the Nexus input status and menu audit. The paired emulator screenshot hashes and exact replay schedule are in the vertical navigation capture receipt.

Retail Continue with an authentic save (2026-10-25)

A second isolated Ymir --debug run used a reported retail-written 32 KiB Saturn backup image (SHA-256 87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035) with the same hash-verified Japanese retail disc and BIOS. The title menu showed NEW GAME, CONTINUE, and CONFIGURATION. Selecting CONTINUE opened the retail LOAD panel, which listed the internal-memory entry B01 0:06 NORMAL. Confirming it displayed Now Loading, then entered the dungeon with the four-champion HUD. The BUP image retained its original SHA-256 after loading.

The isolated profile was /dev/shm/ymir-nexus-real-bup-menu-20261025; the source/transfer chain was not retained, so the save’s retail provenance is reported rather than independently established. The source BUP was copied into that profile and was not edited directly. Ymir 0.4.1 ran with --debug on TRV2 against the Japanese retail cue (SHA-256 878b3bc223bb56e99626dbaa2946d17fb349a2a67a10cd4423742d8ab30b8699). The retained screenshots and their hashes are in parity-evidence/verification/nexus-continue-real-bup-20261025/README.md. This demonstrates the retail save-load route under Ymir with a BUP reported as retail-written. Because its transfer chain was not retained, the save’s retail provenance is not independently established. It does not prove Firestaff implements that title menu or save selection; the production startup route remains blocked by the consumer-evidence gates described below.

On 2026-10-26, a fresh TRV2 Ymir profile copied the same hash-verified four-champion BKR and replayed the retained Japanese title-prompt state with Start at frames 0..59, Down at 180..189, and A at 240..249. At frame 900, the authentic framebuffer showed the native Japanese LOAD panel and its B01 0:06 NORMAL internal-memory row (SHA-256 b95cdc24ae30705648533dba1e1a1a304196a8fbb449bd069df513be85c0928b). A saved checkpoint was loaded into a second isolated profile; A at frames 0..9 then reached a four-character HUD plus first-person viewport at frame 900 (SHA-256 68de1c7898d79d70d7f3b9fd8f220485fd5ffa75b8aefad9f491eeb3d16a2a76). Both profiles retained the BKR SHA-256 87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035. This authentic two-stage route binds a real UI checkpoint and HUD witness for future capture consumers; it does not yet admit a Firestaff menu compositor, HUD compositor, or save-format implementation. The profiles, dumps, screenshots, and X displays were removed after verification.

Firestaff’s source-level startup helpers do not implement the retail title menu. nexus_v1_startup_boot_handle_input uses the synthetic warning/title schedule and selects a host save or champion action from the available slot mask. That helper logic is not proof of a reachable production menu: the authentic launch route remains blocked by its menu-surface and consumer evidence gates, as described below. The retail title instead opens its three-choice menu before New Game or Continue proceeds. Configuration behavior and the Saturn consumer that draws the retail menu have not yet been bound to a same-session VDP1/VDP2 capture. Do not treat the existing host save/champion panels as equivalent to the retail title menu, and do not synthesize the missing choices or Saturn presentation from decoded MENU.BPK surfaces alone.

Runtime boundary

firestaff_nexus must not present a host-built title, champion menu, portrait placement or a text footer as though it were Saturn output. M11 handoff and viewport remain fail-closed until authenticated Saturn captures bind the relevant resource, palette, destination, input action, and timing. Startup has separate gates for title presentation, title-to-menu dispatch, menu surface presentation, New Game/Continue selection, and start-pose/level handoff. Passing a decoder or later handoff gate does not prove the earlier transitions.

Champion portraits are a later champion-select consumer question, not evidence that the title menu is ready. A future champion-select capture must bind a PLRD row to its FACE ordinal, VDP1 command destination, palette/CRAM state, and displayed frame timing. Presence or hash of FACE.BIN alone cannot relax that gate.

Title-menu evidence (2026-10-25)

An isolated Ymir 0.4.1 --debug run with the authenticated Japanese BIOS and retail disc shows the native title menu after holding Start. The screen contains NEW GAME, CONTINUE, and CONFIGURATION; New Game is initially selected. Down selects Continue, and A confirms New Game into the dungeon. A fresh profile with no game save leaves Continue on the same menu and does not prove a save-load route. This establishes retail behavior only; it is not Firestaff parity. Capture details and screenshots are recorded in parity-evidence/verification/keyboard-mouse-debug-20261024/README.md.

The historical direct-CLI probe in parity-evidence/verification/nexus_cli_direct_start_block_20261024/README.md reached the ready title frame but reported menu=0 and levelLoaded=0 after one scripted Return. It did not start Nexus. That receipt names a MENU.BPK PRS3 capture blocker for that build; it should not be read as proof that decoding MENU.BPK alone implements the title-menu transition.

An inspection of the hash-verified Japanese retail MENU.BPK confirms that its 162 PRS3 surfaces decode, and visually identifies save/load panels, Japanese configuration panels, labels, and small button glyphs. The inspected contact sheets did not identify the three English title-menu choices shown by Ymir. This is a content observation, not proof those assets are absent from the game or that MENU.BPK is unrelated to the title menu. Surface ordering, CLUT, consumer, placement, and input-to-action dispatch still require a same-session Saturn trace.

Native title-menu command/source observation (2026-10-27; startup provenance limited)

A retained Ymir menu-state capture has a frame-aligned VDP1 VRAM snapshot and a complete command trace. The available record does not establish that its three-choice screen followed a fresh cold boot in the same run; treat it as a native menu-state reference, not cold-boot-to-menu proof. In that captured menu frame, five textured VDP1 commands reference byte spans that each match exactly once in the authentic Japanese TITLE.BIN: two 24×24 spans at file offset 0x15f6 and three 4bpp text-sized spans at offsets 0x0446, 0x0576, and 0x07d6. The screenshot shows paired selector graphics and three menu labels, making these strong candidate source spans for those visible elements. This observation does not establish each source span’s semantic identity, the Saturn upload route, or the palette’s source owner.

The same capture’s VDP1 VRAM was checked against every decoded surface in the hash-pinned Japanese MENU.BPK (SHA-256 740ab2a864f04b89cddb172ce2560044fcc8c6a7f98ae2fe50461aa8da886636). Although 162 PRS3 surfaces decode, none of the captured textured command source starts falls within an exact matched MENU.BPK surface range. This narrows the current menu asset lead toward TITLE.BIN; it does not prove MENU.BPK is unrelated or that Firestaff can yet compose the menu. The captured data and trace remain external at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/.

The four distinct 32-byte VDP1 CLUT blocks used by these commands were also compared directly and word-swapped against all 126 hash-accepted Japanese retail files in the local corpus. None matched; five files with unaccepted hashes were excluded. A full VDP1-window SH-2 write trace hit its 250,000-row limit and dropped 45,183,915 master-SH-2 rows, so it cannot establish upload ownership. A second cold boot narrowed tracing to 0x05c29000..0x05c48000 and completed 205,300 rows with zero drops. The final VDP1 VRAM hash matched the visual capture, but the trace values do not reconstruct the final texture spans and the trace has no per-frame markers. Thus the SH-2 writer path and CLUT source remain open.

The narrowed trace provides disassembly anchors in authentic Japanese DM.BIN (SHA-256 3bbca125e0bfb486897e4926541e7c31adbff010d01a9b0c736637f432aad124) under the historical static code mapping 0x06010040: its call-target field is 0x0602623c (file offset 0x161fc), and its caller-return field is 0x06027064 (offset 0x17024). The trace labels write rows with PCs 0x0602625c and 0x0602626c (offsets 0x1621c and 0x1622c), but static SH-2 disassembly exposes an attribution mismatch: 0x0602625c is tst r0,r0, while 0x0602626c is mov.b r5,@r4 inside a loop that advances r4 by 16. The trace reports four-byte writes at both PCs, despite the latter instruction being a byte store. Therefore these PCs and call fields identify a candidate routine for further tracing; they do not yet identify the exact store instruction or authenticate a graphics upload routine. The function also copies a 256-byte block through a helper before modifying its local buffer, but the trace does not join that buffer to the observed texture spans. The separate frame-correlated SCU DMA evidence below joins TITLE.BIN ranges to final VDP1 memory and command reads; it does not resolve this SH-2 trace’s PC attribution or rule out later CPU writes. The four captured 32-byte CLUTs also have no direct or word-swapped exact match in the 126 hash-accepted Japanese retail files, so their palette source remains unbound.

Raw DM.BIN placement in the later Ymir capture

A separate authentic JP Ymir debug capture reached VDP1 capture frame 13,096. Its 1 MiB wram-hi.bin is the raw WorkRAMH image at 0x06000000; the first 256 bytes at 0x06010000 exactly equal bytes 0x0000–0x00ff of the hash-verified retail DM.BIN. The initial SH-2 instructions at that address load the stack pointer and jump to 0x06010014, so this is a concrete raw image placement and entry-vector observation, not a synthetic fixture.

Static SH-2 decoding of the authenticated bytes gives a concrete early boot sequence. The vector at 0x06010000 loads SP=0x060ffffc and jumps to 0x06010014. That entry calls a byte-clear helper at 0x06010026; the helper reads its start and end pointers from 0x060465b0 and 0x060465b4 and writes zero bytes up to the end pointer. The entry then clears the word at 0x06082ea8 and calls the function pointer stored at 0x0601005c, whose retail value is 0x06010f44. If that call returns, the entry branches to a self-loop at 0x06010022. This establishes the static boot path in authentic code; this no-render memory capture does not by itself prove which initializer branches run or what the display shows.

The same image matches DM.BIN at 0x0602623c, 0x0608ba34, and 0x0608b940 when offsets are calculated from 0x06010000. At 0x0608ba46, the matching retail instruction is mov.l r5,@r4; the complete 2,447-row trace records 2,446 four-byte zero writes from that PC into VDP1 CLUT addresses 0x05c01000 and 0x05c01010, plus one earlier two-byte 0x8000 write. The trace has zero dropped rows. In the matched retail body at 0x0608ba34, the routine masks its start pointer with 0x1ffffff0, ORs in 0x40000000, sets the store value to zero, then writes one longword and advances the pointer by 16 bytes until it reaches the computed end. This is a strided initialization clear, not evidence of a palette upload or palette ownership.

This raw image placement must not be conflated with the older frame-12596 title-copy receipt’s static 0x06010040 code mapping. The newer snapshot has different bytes at runtime PCs 0x0602312c, 0x0602625c, and 0x0602626c; thus the old mapping and instruction attribution are capture-specific and do not establish a global DM.BIN executable base. The older SH-2 trace still does not identify its exact store instruction or prove a texture upload. Selected raw evidence is retained at /Volumes/Extern-disk/firestaff-data/nexus-menu-clut-writer-trace-20261027/.

FONT256’s authenticated Character Generator bytes now remain in the engine’s source object for the future Saturn consumer. This does not admit glyph coding, page/PND attributes, layer placement, or text writing; font_loaded remains closed until those parts are bound by the same runtime witness.

Debug boot memory receipt (2026-10-26)

A system-built Ymir 0.4.2-dev run on TRV2 booted the hash-verified Japanese retail cue for 600 deterministic frames with --debug. It used the verified Japanese BIOS (SHA-256 dcfef4b99605f872b6c3b6d05c045385cdea3d1b702906a0ed930df7bcb7deac) and recorded bounded SH-2 writes to 0x05c00000..0x05c80000. The resulting VDP1 VRAM dump is SHA-256 0e0a67c1eec3c0bf61e7358ded889d3df343a5cb7bd1154b6422636d57bf1d74.

The capture used Ymir’s explicit no-render mode so that it could retain real emulated memory and CPU-write evidence without producing a synthetic host frame. It must not be used for visual parity, title/menu placement, or HUD claims. The raw dump and write trace are retained outside the repository on the external evidence volume; only their reproducible receipt is recorded here.

Long boot memory trace (2026-10-26)

A separate Ymir --debug --capture-boot-frames 13000 run retained a full memory snapshot after normal disc boot. The final VDP1 counter was 12947; its complete command trace had four terminal records and no VDP1 trace drops. The bounded source scanner found no supported textured draw commands in that final frame. VDP2 had NBG0, NBG1, and NBG2 enabled (BGON=0x0007, CHCTLA=0x1212). The SH-2 write trace reached its 250,000-row cap and reports 420,006 dropped master-SH-2 rows, so it cannot establish complete writer provenance.

Both NBG0 and NBG1 were 8bpp bitmap layers at VRAM offsets 0x00000 and 0x20000. Comparison with the authentic retail TITLE.BIN and MENU.BPK data found no exact pixel-span or palette joins. The largest partial byte matches were 118 bytes to TITLE.BIN map 4, 99 bytes to a repeated MENU.BPK surface sequence, and 35 bytes to TITLE.BIN maps 1 and 3; these do not prove asset ownership. A diagnostic decode of the captured NBG0 bytes and CRAM shows Japanese date/time settings, the date 2026-10-26, and Cancel / Confirm labels. This looks like a system date/time page and is not evidence that Nexus reached its title menu.

This capture used --capture-no-render: both VDP1 framebuffers are zeroed and there is no screenshot. It is useful as a register and memory checkpoint only; it does not identify what appeared on screen or prove that Nexus reached a particular game menu. The raw files, SHA-256 list, and clearly labelled layer diagnostic previews are retained off-repository.

Captured title-menu frame reconstruction (2026-10-26)

The atomic frame-59 Ymir capture loaded a previously saved Japanese retail title-prompt state, held Start for 60 of 120 capture frames, and dumped memory and the VDP1 trace in the same run. It was not a cold boot. A bounded C replay combines the retained VDP1 display framebuffer, NBG0 8bpp bitmap, CRAM, registers, and verified zero back-screen table. Its output matches all 286,720 pixels of the hash-pinned 640×448 Ymir screenshot exactly. This confirms static composition for the captured menu frame; the screenshot was saved after the memory dump, so exact frame identity is still unproven.

The replay remains capture-only and does not feed the Firestaff viewport or establish cold-boot-to-menu behavior, title-to-menu input handling, or gameplay HUD. Separately, a 13,000-loop cold boot with --capture-no-render stopped on a Japanese date/time settings page. That run has no screenshot and incomplete SH-2 write tracing; it does not prove that Nexus reached the game title. See the boot-dump receipt on the external evidence disk and full capture receipt and SHA-256 identities for the menu-state reproduction command and exact scope.

Deterministic cold boot reaches the native title prompt (2026-10-27)

Ymir 0.4.2-dev was built on TRV2 with the repeatable --capture-pad-input FRAME:BUTTON:HOLD option (submitted to the Yeager Ymir fork in PR #1). A fresh isolated Ymir profile used the authenticated Japanese Saturn BIOS (SHA-256 dcfef4b99605f872b6c3b6d05c045385cdea3d1b702906a0ed930df7bcb7deac) and the real Japanese retail cue /home/trv2/.firestaff/data/nexus/Dungeon Master Nexus (Japan).cue. The isolated profile was marked onboarded to bypass Ymir’s first-run UI; no game state or saved game was loaded.

The deterministic boot schedule pressed Right at frames 700, 720, 740, 760, 780, and 800, then A at frame 830 to confirm the Japanese BIOS date/time screen. It sent Start for 2 frames at frame 7000 to advance past the opening intro, then held Start for 60 frames at frame 9000 on the title prompt. The 9,120-frame rendered capture shows the native PRESS START BUTTON title prompt. It does not show the three-choice NEW GAME / CONTINUE / CONFIGURATION menu. The run loaded no emulator state and no game save, so it verifies cold boot to the title prompt only.

The emulator was Ymir 0.4.2-dev with --debug, built on TRV2 from the branch that adds repeatable --capture-pad-input FRAME:BUTTON:HOLD scheduling. The authentic Japanese cue SHA-256 is 878b3bc223bb56e99626dbaa2946d17fb349a2a67a10cd4423742d8ab30b8699. The controller-scheduler change is submitted to the Yeager Ymir fork in PR #1.

The rendered title-prompt screenshot, complete raw memory dump, source-join report, and bounded SH-2 write traces are retained on the external evidence volume. SHA256SUMS.txt covers the screenshot, all 30 dump files, the Japanese MENU.BPK, the source-join report, and both write-trace captures. The separate three-choice menu screenshot is a retained menu-state reference whose clean cold-boot provenance is not established.

Artifact Location SHA-256
Native three-choice menu-state reference (not cold-boot evidence) /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/title-menu.png 8721cce3354bc20b1cd367fd44be3d4ecc60ca65fa89c7d00654e83f5ad7db23
Source-join report /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/vdp1-source-join.txt 5df73daf4a37f187e0f3e4805d68d7f4870703839e5fb9b2d4c26f8cf12dc3a3
Complete narrowed SH-2 write trace /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/sh2-write-narrow/sh2-memory-write-trace.csv 53502102c1dcdc0c511983bfaf0ce7e017fe711f26a393e353eea162a82f001d
Trace receipt /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/sh2-write-narrow/sh2-memory-write-trace-bundle.txt c463f5d77a57c7883fd2e22ae3bf69aa41823264ad25f804f0535b634b560166
Dump and screenshot manifest /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/SHA256SUMS.txt 30d4c019f5dccf090553a1e9328b185c1e90305d5c89f50a2f554fef87bc403b

The exact command was:

ymir-sdl3 --debug --capture-boot-frames 9120 --dump-memory --capture-screenshot \
  --capture-pad-input 700:right:2 --capture-pad-input 720:right:2 \
  --capture-pad-input 740:right:2 --capture-pad-input 760:right:2 \
  --capture-pad-input 780:right:2 --capture-pad-input 800:right:2 \
  --capture-pad-input 830:a:2 --capture-pad-input 7000:start:2 \
  --capture-pad-input 9000:start:60 \
  "/home/trv2/.firestaff/data/nexus/Dungeon Master Nexus (Japan).cue"

This closes the Ymir cold-boot-to-native-menu evidence gap. The separate New Game replay also reaches a native 3D viewport, as recorded below. These emulator results do not establish Firestaff menu rendering or control, a stable interactive gameplay route, real-save loading through Continue, or HUD parity. Those remain separate production-parity gates.

Cold-boot follow-up: exact retail FMV frame match (2026-10-27)

A rendered 19,000-frame Ymir run used the authentic Japanese retail disc and Japanese IPL in the isolated TRV2 profile. It loaded no emulator save state or game save; the profile retained its BIOS setup configuration. With --debug --fast-forward, Start was held for two frames at capture-loop frames 9,000, 13,000, and 15,000.

The endpoint screenshot is an exact match to zero-based frame 626 of the authentic Japanese retail DMV0.AVI video. The AVI SHA-256 is eafb4c638db9ffada9e929d82299562e0a9d3eb73fb2a47858c0de0dc0fa57bb; it is RIFF AVI using TrueMotion 1.0 at 320×180 and approximately 15 fps. The native Ymir screenshot is 640×448. Its centered crop image[42:402:2, ::2] matches all 57,600 decoded frame pixels after Saturn RGB5 quantization (& 0xF8), with zero mismatches.

The final VDP1 capture is frame 15,907, with four command rows and 785,986 retained trace rows with zero drops. The video draw at command offset 0x40 uses PMOD 0x0028 (colour mode 5), SRCA 0x8f80 (VRAM byte offset 0x47c00), and SIZE 0x28b4 (320×180), placing the image at y=21–200. Capture-loop frame 19,000 and VDP1 frame 15,907 are separate counters. The SCU DMA trace retained 16,384 rows but dropped 4,485 (trace_data_complete=0), so it cannot provide complete transfer provenance.

This confirms authentic full-screen video output, likely the opening FMV in this boot sequence. It does not prove which input selected or started the video, the three-choice menu transition, a stable playable level, gameplay, or HUD.

The Ymir executable SHA-256 is f5d94ee84762d81e97f950d6cfc4253b4f72c61dc5c4f376b4296235ed46dcc3. At inspection, its source worktree was based on commit 534ed10c6f7f13a3ba752476eea191be3ab553b4 with tracked-diff SHA-256 2442944df961bf0079f61a032b2ca09f3252be4416a28471aee72573b49e4d5d. These identify the observed executable and source worktree state; they do not independently prove the binary was built from that exact source snapshot.

The screenshot, raw Ymir dumps, run log, reproducible RGB5 comparison, and retail TM.BIN disassembly receipts are retained at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_rendered_20261027/rendered_menu_candidate_19000/. The screenshot SHA-256 is 903e710b455df66a1df79adcdf1e1a9a6c8fdc257833f0eed9e80def840d541a; the run log SHA-256 is caf636e378d9888b4c97e01b12ddd864b0564e292fceb6f5ffc97b14f442d282; the DMV0_FRAME_MATCH.txt SHA-256 is 51081a26e28878ac6f90a102fe79c76a51c519d3aba5c23f7e9b4612364d298f; the TM_BIN_AVI_DISPATCH.txt SHA-256 is 884a62d68879edec2239fcafb0addec581c3e27ae252ddc606c4240303658d40; README.md SHA-256 is 42ee176d4a06c539864fbcd4e68a176ea1ea579627be31ea0699faa5d0ade67a; and SHA256SUMS.txt SHA-256 is 6d831e2f30bbf32031ae0586f152a5ee0aef80d67cec0183a76fba8a7ed27ae1. All 37 listed bundle files passed checksum verification. This is diagnostic evidence; it is not a Firestaff asset or a parity admission.

Retail TM.BIN video dispatcher disassembly (2026-10-27)

The authentic Japanese retail TM.BIN is 160,044 bytes with SHA-256 d87485fe6eba1f6e9fbbf487f5fcdd994911136905e6172e5bb5bc0122407eb6. With load base 0x06010000, the three embedded video-name strings map to: DMV0.AVI at file offset 0x1968c / runtime 0x0602968c, DMV1.AVI at 0x19698 / 0x06029698, and DMV2.AVI at 0x196a4 / 0x060296a4.

The module entry routine at file offset 0x00 reads the selector at SH-2 address 0x00200000 at PC 0x0601006c. It branches on values 0, 1, or 2 and loads the corresponding AVI pointer from its literal pool at offsets 0x260, 0x264, and 0x268. It calls the shared playback routine at 0x06010eec; the DMV0 branch passes 0x000a0000 in r5. After the shared playback call returns, the routine makes further calls and reads the word at 0x06029978. If it is not 2, control branches to 0x060100e0. If it is 2, the code tests the word addressed by r14: when nonzero, it clears byte 0x0020000b and branches to 0x060100e0; when zero, it loads a call target from 0x0600026c and calls through that pointer. These are static control-flow observations, not proof of the values used during cold boot or the following menu transition.

The retained excerpt was produced with GNU objdump’s -m sh4 decoder setting. The retail Saturn CPU is SH-2; this evidence claims only the displayed opcode bytes and their compatible control flow, not an SH-4 execution target. The reproducible command and raw output are retained at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_rendered_20261027/rendered_menu_candidate_19000/TM_BIN_AVI_DISPATCH.txt.

This is high-confidence static evidence of a retail three-video dispatcher and shared playback call. Together with the exact DMV0 frame-626 pixel match above, it connects the rendered screenshot to the authentic video path. It does not show which caller sets selector 0x00200000 during cold boot, establish selector 0 as the startup default, identify the Start skip behavior, or prove how the three-choice menu is entered. The load base is supported by the AVI pointer arithmetic and the documented TM overlay mapping at file offset 0x4500 to runtime 0x06014500; it remains a disassembly load hypothesis.

DM.BIN contains resource-string anchors for MENU.BPK, yam\menu.c, FONT256.S2D, and STABG.BIN at offsets 0x373b4–0x373d8, and TITLE.CG / TITLE.BIN at 0x38e6c / 0x38e78. These strings do not identify the title-menu entry routine. The next useful dynamic trace should capture SH-2 call/branch edges and selector/return globals around cold-boot loop frames 6,900–7,100 and 8,900–9,120, then correlate them with Start reads and frame-indexed VDP1 commands.

Complete cold-boot SCU DMA trace (2026-10-27)

A follow-up run used Ymir’s explicit SCU DMA trace route with the same hash-verified Japanese retail cue, BIOS, and deterministic cold-boot pad schedule described above. Ymir was run with --debug --capture-boot-frames 9120 --dump-memory --capture-no-present --capture-no-render --trace-scu-dma. The emulator loaded no save state or game save. Input timing was recorded in the retained run log. The full capture retained 8,399 SCU DMA transfers in an 8,400-line CSV including its header; the manifest reports a 16,384-row capacity, zero dropped rows, no overflow, and complete trace data.

The retained SCU DMA table records transfer metadata; it does not contain the transferred payload bytes. The listed source addresses were compared with the final captured high-WRAM image, final VDP1 VRAM, and the authentic Japanese TITLE.BIN (SHA-256 51f1f18b68acf5993b00ffcb458ef2a7372b21595656f3ed5b95520c9a305fc3, 112,216 bytes). Several final high-WRAM spans at the recorded source addresses match exactly:

Transfer Captured WRAM source VDP1 destination Size Exact TITLE.BIN offset
3777 0x060ab376 0x05c44060 288 bytes 0x15f6
3764 0x060aa1c6 0x05c47de0 256 bytes 0x0446
3765 0x060aa2f6 0x05c479e0 256 bytes 0x0576
3767 0x060aa556 0x05c46f60 416 bytes 0x07d6

The 288-byte source address of transfer 3778 (0x060ab4c6) corresponds to VDP1 VRAM address 0x05c43be0 in the trace, but its final WRAM bytes do not match the cited TITLE.BIN span; its source ownership remains unassigned. The SCU trace records transfer order, source/destination addresses, and counts, not payload bytes or a per-transfer frame number. These comparisons are final-state byte/address evidence from one deterministic run. They do not prove that a DMA payload matched TITLE.BIN or timestamp a transfer to the VDP1 menu frame.

The external evidence bundle is retained at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/scu_dma_complete_20261027/. Its manifest SHA-256 is 5b2ede0748d3a4b009f4d6d781e1fbc9897c114be270e69a567daf277cefed36; the trace CSV SHA-256 is 718f10d71fcae26437224362abf245f594fdb07d15cb3732ddebbd4d7322039c. The bundle’s SHA256SUMS.txt was checked against every retained artifact. The same trace functionality is proposed in Yeager Ymir PR #2, stacked on its deterministic input capture PR #1.

The retained README does not record the Ymir source revision used to build this capture. The TRV2 worktree inspected during this follow-up has base commit bf68a2fdb13e533e7b6c6c9a511701ec52609220 and an uncommitted tracked diff whose SHA-256 is ec59cfa728cb73f032836eaa5d8782bdfdf1bc1702d906af6b3ef627a2e95082. This identifies the inspected worktree state, but the retained capture does not bind that state to the executable; the exact build revision is therefore unverified.

This adds reproducible evidence linking recorded DMA source addresses to matching bytes in the final WRAM snapshot for the authentic cold boot. It does not prove the payload bytes transferred, label the exact semantic role of each texture, bind the palette source, prove transfer-to-frame timing, or admit a Firestaff title-menu renderer. The existing production gates remain in force.

SCU DMA transfers indexed by deterministic capture frame (2026-10-27)

A follow-up authentic cold-boot run added a zero-based CLI capture-loop frame to every SCU DMA transfer row. It used the same hash-verified Japanese retail disc and BIOS, with no save state or game save. The capture ran 9,120 frames with --debug --capture-no-present --capture-no-render --trace-scu-dma and the same deterministic date/time, intro-skip, and title-prompt inputs documented above. The no-render run has no screenshot and cannot establish displayed pixels.

The SCU manifest reports 7,986 retained transfers, zero dropped rows, and complete trace data. The CSV has 7,987 lines including its header. Transfer rows 3347, 3348, 3350, and 3360 are each indexed to capture-loop frame 7564. At each listed source address in the final high-WRAM snapshot and destination range in the final VDP1 VRAM snapshot, the bytes independently match the corresponding authentic Japanese TITLE.BIN span. The metadata row counts and addresses align these snapshots; the trace itself does not contain transfer payload bytes:

Transfer Capture-loop frame WRAM source VDP1 destination Bytes TITLE.BIN offset
3347 7564 0x060aa1c6 0x05c47de0 1,024 0x0446
3348 7564 0x060aa2f6 0x05c479e0 1,024 0x0576
3350 7564 0x060aa556 0x05c46f60 1,664 0x07d6
3360 7564 0x060ab376 0x05c44060 1,152 0x15f6

These values are capture-loop frames, not VDP1 frame numbers. The VDP1 receipt for this dump ends at VDP1 frame 8037 with 178 commands for that frame; the run does not provide an exact mapping between the two counters. The data therefore strengthens byte provenance and deterministic timing, but does not assign semantic labels to texture spans, identify palette ownership, or prove a transfer-to-displayed-frame relation.

The raw dump bundle and reproducible receipt are retained at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/scu_dma_frame_index_20261027/. Its README SHA-256 is 65c2fe206b937c3dc2a4e09cb1626389db458c9b9f5ca89a01b678a044a07c7d, its checksum-list SHA-256 is e9716f9f444789cba25613cab128e8a92a1400a49888f0948e3ac315e359f849, and the SCU CSV SHA-256 is 77e3e2e1e667956092e1fd75b183e5e0929f1dd698d22364171be90561e4a4bb. All 31 dump files were verified after transfer to the external evidence disk.

This capture uses the frame-indexed exporter proposed in Yeager Ymir PR #2. It remains diagnostic evidence; the Firestaff title-menu rendering and interaction gates stay closed.

SCU DMA to VDP1 frame correlation (2026-10-27)

A subsequent run used Ymir’s trace-bundle v4, which records the VDP1 frame index immediately before and after each deterministic capture-loop frame. Four SCU DMA transfers at capture-loop frame 7564 all have VDP1 frame 6890 both before and after the emulated frame. This pins the transfers to VDP1 frame 6890, rather than estimating their VDP1 time from the overall capture length.

The final high-WRAM source spans and final VDP1 VRAM destination spans for transfers 3347, 3348, 3350, and 3360 independently match authentic Japanese TITLE.BIN offsets 0x0446, 0x0576, 0x07d6, and 0x15f6. The trace records addresses, counts, and timing metadata, not the bytes on the DMA bus.

The same run’s final VDP1 frame is 8037. Its 178-command trace has five textured draws at indices 171–175 reading from those four VDP1 destinations: two 192×3 draws at 0x44060, then 64×8 at 0x47de0, 64×8 at 0x479e0, and 64×13 at 0x46f60. The source byte counts and addresses match the transfer destinations and TITLE.BIN joins. A check of the SCU trace found no later SCU DMA writes overlapping these four destination ranges. This correlates the final snapshot bytes with VDP1 command reads in one cold-boot run. It does not prove that the SCU DMA bus transferred those exact bytes, because the trace is metadata-only and later CPU writes are not excluded. CLUT ownership also remains unresolved.

The five corresponding command records in the earlier rendered native-menu capture at VDP1 frame 8050 match these draw words, geometry, and source addresses; only their VDP1 link word differs. That separate rendered capture has the retained menu screenshot at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/title-menu.png, SHA-256 8721cce3354bc20b1cd367fd44be3d4ecc60ca65fa89c7d00654e83f5ad7db23. The current trace-v4 run used no-render mode and has no screenshot, so it cannot establish its own displayed pixels.

The complete raw capture and receipt are retained at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_menu_20261027/scu_dma_vdp1_frame_map_20261027/. Its README SHA-256 is 5fb18214931b5837b9e7fcaf02d933cc91f7f741d45d59c4fffce6a0033875bb, the checksum-list SHA-256 is ccb38a615a5ae0f5d1dbf514431a2ad17e77f0b21877852e213140b30ac21a18, and the SCU trace CSV SHA-256 is 2b008715262da43fb9d675a87cc92695a36eb64a26a3e014af3dda89a6e7b6e8. All 32 dump files were verified after copying to the external evidence disk. The supporting exporter update is in Yeager Ymir PR #2.

This is stronger source-to-command evidence for the native menu path, but it still does not provide CLUT source ownership or admit a Firestaff renderer.

Sources

Cold-boot title menu and retail menu navigation (2026-10-27)

A rendered Ymir 0.4.2-dev run on TRV2 used the authentic Japanese retail disc and BIOS in an isolated profile. It loaded no emulator state or game save. After confirming the BIOS date/time screen, the deterministic schedule sent Start for two frames at capture-loop frames 9,000 and 13,000, then one frame at 15,000. At 16,000 capture-loop frames, the rendered retail screen is the native three-choice menu: NEW GAME, CONTINUE, and CONFIGURATION. This extends the clean-boot evidence beyond the title prompt; it remains an emulator capture, not a Firestaff menu implementation.

The endpoint was saved as diagnostic emulator slot 3. Reloading that state and advancing two frames with no input leaves the main menu visible. From the same state, one frame of Down moves the selection from NEW GAME to CONTINUE. Two one-frame Down pulses followed by a one-frame A pulse open the native CONFIGURATION page, which displays Music, Sound, Game level, Monster gauge, and Exit. These short replay captures establish that Ymir’s frame-indexed input route drives these visible menu transitions from this authentic retail state. The saved emulator state contains no game save.

The final capture receipt reports VDP1 frame 13,108 and command cursor 168. These are distinct from the 16,000-loop-frame capture counter. The evidence bundle, screenshots, run log, VDP dumps, and saved state are retained on the external evidence disk at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_rendered_20261027/. The cold-boot menu screenshot SHA-256 is 2b64c0baeb8f006f68176eb1f70bc7e4c626db9ec77f2157a1d20daef89387ec; the no-input replay is 4476cc68722372b9f57b237374801a12bcfdac6d2e8aa068f575aa8bc87960c4; the Down replay is 70ef5517ba73309fb63722a2af3c553e7863e02ab10ebf1414bc19a1cf9548a1; and the Configuration replay is dffac2f786b92b543ddfed7b6eb969d50b5f2b7e115a5e1a2423537c01e18427. All 24 retained files in the new bundle pass its SHA-256 manifest.

The original run used --debug --capture-boot-frames 16000 --dump-memory --capture-screenshot --capture-save-state 3 with deterministic Start pulses at frames 9,000, 13,000, and 15,000. The navigation replays used --load-state 3 --capture-frames with no input, Down, or Down/Down/A respectively. The full commands and hashes are recorded in the external bundle README.

This establishes a native retail menu and a narrow menu-navigation route in Ymir after a no-save cold boot. It does not prove the semantic purpose of every input across regions, a stable New Game transition to a playable level, Continue behavior with real save data, Firestaff menu input or destination execution, or gameplay HUD/viewport parity. The English foreground sprite rendering is implemented as described below; the background and full-screen composition remain open.

New Game reaches the native 3D viewport (2026-10-27)

A short Ymir replay loaded diagnostic slot 3 from the no-save cold-boot menu capture, where NEW GAME was selected. It pressed Control Pad 1 A for two capture frames and advanced 1,200 frames with --debug --fast-forward --capture-no-present. The final 640×448 image is the native first-person corridor viewport. Its SHA-256 is 8ede95f1fd777eda69ebcfc91d0268194e501f145306eb1fc2971ed0113a2274, matching the previously retained retail viewport checkpoint.

The complete VDP1 trace retained 137,849 rows with zero drops. The final capture is VDP1 frame 1,005 with 151 command rows; the 1,200-frame Ymir capture-loop counter is separate. The screenshot shows no party HUD. The diagnostic profile was isolated under TRV2 /dev/shm; no retail save or Firestaff data was modified.

The screenshot, VDP1 register/trace receipts, run log, and checksum manifest are retained at /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_coldboot_rendered_20261027/replay_new_game_from_menu/. The screenshot SHA-256 is 8ede95f1fd777eda69ebcfc91d0268194e501f145306eb1fc2971ed0113a2274; the checksum manifest SHA-256 is c10afefda0c76e2786a321b40942939bd252c31dee6bcdfb11f2c8978ee5b845. Every listed artifact passed verification.

This verifies that selecting NEW GAME from the native retail menu reached a native 3D viewport in this run. It does not establish a stable or fully interactive level, exact room/resource identity, the full gameplay input route, the party HUD, or Firestaff presentation parity. Those remain separate gates.

Additional menu-candidate VDP1 source join (2026-10-27)

A separate Ymir debug dump from the authentic Japanese retail corpus records 178 VDP1 commands at frame 8050 with no dropped rows. Its command records are 175/178 identical to the retained title-menu capture at frame 497 when live local-coordinate fields are excluded. The three differences occur at command indices 171, 172, and 177. Because this dump has no paired screenshot or input schedule receipt, it remains a menu candidate rather than a new menu-state admission.

Against the hash-verified Japanese retail corpus, 121 of 137 textured VDP1 commands have informative exact-byte joins, including LEV00.DGN Structure2 spans; 16 command spans remain ambiguous across repeated retail bytes. The real Japanese MENU.BPK decodes to 162 PRS3 surfaces, of which 86 exact whole surface byte sequences are resident in the captured VDP1 VRAM. None of the 137 textured commands starts inside those matched surface ranges. This establishes byte residency and command-source observations only; it does not prove that the menu draws MENU.BPK, identify the remaining command owners, or authorize Firestaff rendering.

Raw capture bytes remain outside Git under /Volumes/Extern-disk/firestaff-data/. Hashes, analyzer output, and reproduction commands are recorded in nexus_v1_menu_candidate_source_join_20261027.

English-version boot attempt and menu-asset residency (2026-10-27)

A separate run used the authenticated English-version ISO and the installed system Ymir executable on TRV2. The earlier empty-profile attempt stalled before reading the game startup file. A follow-up profile reused the Japanese profile’s saved SMPC persistence bytes as emulator setup state, with the English disc and USA 1.01a BIOS. This changed no disc or game-save data.

Ymir logged a read of authentic 0DMSTRT.BIN (SHA-256 8a026f155af27cfd43a33b29f7da5b75ee7b09b2c4f016fc3be1ebb4787d20b6) followed by a CD Block soft reset. It did not log a DM.BIN read. The resulting VDP1 snapshot is frame 12467 with 168 command rows, but the trace ends before the last command’s CMDLINK target and has no END command. The complete-command source join therefore rejects it.

The installed English MENU.BPK matches the authentic retail SHA-256 f2f78dddfe37a5ff414775ae888f164624e987059934b034ba36299cc769d2ca. Of its 162 bounded PRS3 surfaces, 86 have exact byte matches in the captured VDP1 VRAM using direct or word-swapped comparisons; all 86 include a direct match, and none matches only after word swapping. In that frame, 132 commands are textured sprites and none starts inside the matched surface ranges. This proves only that those retail bytes are resident in VDP1 VRAM; it does not prove that the title menu is displayed or that those surfaces are drawn. The regional snapshot analyzer now accepts the authenticated Japanese, English, and French MENU.BPK hashes; its English report records these counts and keeps semantic_admission=blocked. All three authentic regional packages decode all 162 PRS3 surfaces with this analyzer. The VDP2 write trace dropped 1,376,570 rows, and the SCU DMA trace reports unknown overflow, so neither trace establishes complete transfer provenance.

The full capture and analysis are retained on the external evidence volume at /Volumes/Extern-disk/firestaff-data/nexus-english-boot-20261027/english-us-smem-13310/. A later controlled run supersedes that conclusion. Its full VDP1 command list and native English menu are documented below; the earlier run remains useful only as an incomplete capture receipt.

English cold boot reaches the native title menu (2026-10-27)

A fresh controlled run used the authenticated English-version disc image, USA 1.01a IPL ROM, and the installed Ymir 0.4.2-dev executable on TRV2 with debug tracing enabled. The ISO SHA-256 is 16786e6165d8cbf7f6394dd9bc7171fbb561c1ba40b77ad7cba3c275fde2804e, the CUE SHA-256 is b96f01e2f8ce3ab9c8e4a33d5a0c7076cdc1bfd247a85a1454e6c36c8a616f33, and the IPL ROM SHA-256 is 96e106f740ab448cf89f0dd49dfbac7fe5391cb6bd6e14ad5e3061c13330266f. The emulator profile reused Japanese SMPC persistence bytes for setup; no emulator save state was loaded and no game save was present. No disc or save data was modified.

The retained screenshot shows the English-version title screen and all three native choices: NEW GAME, CONTINUE, and CONFIGURATION. Its SHA-256 is 341cb38191bfbb563912d6ef0c6e2989d51eb6136d48fcffee197cafd7264810. A read-only replay of the same-frame VDP1 display framebuffer, NBG0 bitmap, VDP2 CRAM, and registers reconstructs a 320×224 image that matches every RGB pixel when scaled 2× to the screenshot. The registers enable only NBG0 as an 8bpp bitmap (BGON=0x0001, CHCTLA=0x0013). This verifies same-frame composition but does not identify the bitmap’s retail source or admit the capture-only replay as a production renderer. The frame-aligned VDP1 bundle is frame 13106 with 178 command rows, a complete trace, and zero dropped rows. The retail source join binds nonzero texture bytes for 126 of 137 textured draws; the other 11 source spans are all zero and are excluded as uninformative padding. This is partial byte provenance, not complete surface, palette, order, or consumer ownership.

The authentic English MENU.BPK still has 86 of 162 decoded PRS3 surfaces whose bytes occur in VDP1 VRAM, but none of the 137 textured command source starts falls inside those matched surface ranges. The capture therefore does not establish that MENU.BPK supplies the visible menu. The native screen is visible in Ymir, while Firestaff’s production title/menu composition and presentation remain unimplemented or unadmitted by the existing evidence gates.

Ymir’s log records 0DMSTRT.BIN and a CD Block soft reset, but no DM.BIN file-read event. Independently, the captured wram-hi.bin contains an exact 230,669-byte prefix of the authenticated 555,144-byte English DM.BIN at raw dump offset 0x10000; this proves that this prefix was resident in WRAM, not that the full file was loaded or that the log’s read path is understood. The retained evidence is stored outside Git in the local external capture bundle. This establishes the English-version emulator’s cold-boot-to-menu path. It does not establish complete Firestaff menu composition or input, Continue/save loading, or playable-level, viewport, or HUD parity. See the English cold-boot evidence receipt for hashes and reproduction commands.

English retail title-menu sprite ownership (2026-10-27)

Firestaff now has a bounded renderer for the authenticated English NEW GAME and CONTINUE VDP1 sprites described below. It accepts only the exact hash-pinned English retail TITLE.BIN, retains that source buffer with the loaded title, and draws the five captured sprites and their captured palette colors at the verified positions over the existing title framebuffer. This implements those foreground sprites only. The background bitmap remains unbound, and the renderer does not claim full-screen composition, Japanese New Game, Configuration, or destination execution. The runtime menu reducer remains responsible for selection; an unsupported selection is left to the existing title renderer.

A follow-up used a copy of the authentic English menu savestate (a997636cb5b40745e1065827361d3653c07475e716c8397542f36c372514f62b) in a separate Ymir profile on TRV2. The copied savestate, English retail ISO and CUE, and USA 1.01a IPL hashes are recorded in the sprite source receipt. One 12-frame run held no input and retained New Game. A second run held Down for four frames beginning at capture frame 4 and retained Continue. Both frame-aligned VDP1 bundles identify frame 5, contain all 178 command rows, and report zero dropped rows.

The retail TITLE.BIN SHA-256 is a634e8daf2a581df154b454919ee2ed44e937371668219d7cdf6d0983a613e44. For New Game, the five visible VDP1 draws read retail offsets 0x14a6, 0x14a6, 0x0446, 0x0576, and 0x07d6. For Continue, they read 0x0316, 0x14a6, 0x14a6, 0x06a6, and 0x07d6. Their two distinct 16-color palettes match captured CRAM bytes to TITLE.BIN: the icon palette matches uniquely at 0x1486, while the identical text palette occurs at 0x02f6, 0x0426, 0x0556, 0x0686, 0x07b6, 0x0986, and 0x1f06. The capture cannot distinguish which identical text-palette copy was uploaded. Captured dimensions, VDP1 placement, sprite priority, CRAM colors, and VDP2 back-screen composition reproduce all 1,451 visible pixels in each screenshot. The external captures and extracted retail TITLE.BIN are retained at /Volumes/Extern-disk/firestaff-evidence/nexus/nexus_english_menu_source_join_20261027/.

This binds the five English menu sprites and both palette tables to authentic TITLE.BIN data and the captured display colors. Firestaff renders the two verified foreground layouts, but this does not bind the background bitmap, full-screen composition, upload timing, the Configuration page, or the complete menu interaction route. The wider English VDP1 source join remains partial at 126 of 137 informative draws; its remaining 11 spans are zero padding. A byte-for-byte pair comparison of the separate New Game and Continue savestate replays shows identical full VDP2 VRAM, CRAM, and register snapshots at capture frame 5. Their NBG0 bitmap is unchanged (SHA-256 b802a3196a9d2183b336ab5c770028670ed658e8ed9ba582046096fc01d23f91); only the compared VDP1 VRAM, framebuffer, and command trace differ. This isolates the observed selection change to VDP1 state without identifying the shared background’s retail producer. Exact VDP2 hashes and changed-byte counts are in the English sprite receipt. The bounded retail-source scan reports zero exact NBG0 matches across 410 decoded sources from the authenticated English disc members; its result remains source_join=unbound and semantic_admission=blocked. An additional raw-byte scan finds one sparse 1,603-byte overlap between TITLE.BIN (0xa2b6) and NBG0 (0x102b0); the same bytes appear once in the captured SH-2 WRAM-high snapshot. Only 23 bytes are nonzero, and no VDP2 write trace links that buffer to the bitmap, so the overlap remains an unproven producer candidate. Details and hashes are in the English sprite receipt.

Japanese New Game and Continue foreground rendering (2026-10-28)

The Japanese New Game and Continue layouts are admitted only for the authenticated Japanese retail TITLE.BIN (SHA-256 51f1f18b68acf5993b00ffcb458ef2a7372b21595656f3ed5b95520c9a305fc3, FNV-1a64 064414f722d0409c). Firestaff draws five source-bound foreground sprites for both observed Japanese menu selections. The New Game frame 8,050 markers use source offset 0x15f6, with their palette uniquely at 0x15d6; Continue frame 8,047 uses marker source 0x1b36, with its palette uniquely at 0x1b16. Text CRAM palette bytes match seven identical copies in TITLE.BIN (0x02f6, 0x0426, 0x0556, 0x0686, 0x07b6, 0x0986, and 0x1f06). The renderer uses those regional palette bytes and the captured 31/32 blend over the verified black back-screen. It does not substitute English art or color.

verify_nexus_title_sprite_screenshot.py confirms all five source spans, regional palette bytes, and all 1,495 visible New Game texels and 1,441 visible Continue texels against their retained Japanese screenshots. The screenshot’s exact acquisition-frame identity remains unproven. The background, full-screen composition, Configuration page controls, Continue loading, and gameplay HUD/viewport remain open. Both regional Configuration renderers and all three regional title-row mouse selections are source-bound. See the Japanese sprite evidence receipt.

The two captures have byte-identical first 128 KiB of VDP2 VRAM (NBG0), SHA-256 0a3b8b5ba0bd9e9c4b549d136961b44439d2534cbb7060c5bcbdca6da9c53d08, with 18,513 nonzero bytes. No complete decoded Japanese retail source matches that bitmap. A separate, complete frame-tagged VDP2 trace joins a 921-byte raw span from Japanese TITLE.BIN TITL record 2 (0xb438 + 0x46a) to NBG0 offset 0xd404. Retail frame 6,869 clears that span; frame 7,729 writes 608 matching byte lanes, and replaying the intervening writes reconstructs all 921 source bytes. The bound snapshot is frame 8,060. Its 295 nonzero pixels occupy native NBG0 coordinates x=13..307, y=106, the blue divider below the logo in the paired Ymir screenshot. This verifies a partial source-to-VRAM transport, not the full bitmap decode, layer meaning, or presentation. See the NBG0 source-trace receipt.

Authentic Japanese title-menu Down selection (2026-10-27)

A fresh isolated Ymir profile cold-booted the hash-verified Japanese retail disc with the authenticated Japanese IPL. After the established BIOS date/time and title-prompt input schedule, Control Pad 1 Down was held for two frames at capture frame 9,100. The native screenshot shows CONTINUE selected. The run loaded no emulator state or game save; Ymir created a new internal backup-RAM image in the fresh profile. No retail data was modified.

The 8,047 VDP1 frame contains 178 commands, and the command trace is complete with no dropped rows. The final five active texture draws have exact byte matches in the authentic Japanese TITLE.BIN: command 171 at VDP1 source 0x481e0 reads 256 bytes matching offset 0x0316; commands 172 and 173 at 0x42e60 each read 288 bytes matching offset 0x1b36; command 174 at 0x475e0 reads 256 bytes matching offset 0x06a6; and command 175 at 0x46f60 reads 416 bytes matching offset 0x07d6. The command table relocates between runs, so the screenshot verifier selects roles by retail source offset, dimensions, screen position and visible-pixel count rather than command address. The earlier retained cold-boot image with NEW GAME selected has a separate four-draw source-offset observation at TITLE.BIN offsets 0x15f6, 0x0446, 0x0576, and 0x07d6; this verifier does not claim to validate that capture.

The verifier reads TITLE.BIN from the authentic CUE/BIN in memory and checks the Japanese CONTINUE layout plus English NEW GAME and CONTINUE layouts. For each it requires the captured retail offsets, dimensions, positions, and visible-pixel counts, then checks the 4bpp CRAM lookup, priority 5, and 31/32 top-screen ratio over the captured VDP2 back screen. The English layouts each match 1,451 visible pixels. These remain sprite-level source and color joins; whole-screen composition and screenshot-to-dump frame identity remain unproven.

A repeated cold boot with the same schedule retained VDP1 frame 8,060. The frame-aligned VDP1 receipt again contains 178 commands with no dropped rows, and the screenshot has the same SHA-256 as the earlier Continue capture (741c620e945b5ab3e05f6bc5d182fc4ada9439071b79718f67326bcdd56c6118). The current screenshot verifier passes all five sprite roles and all 1,441 visible pixels for this repeat capture. A snapshot-only bitmap-source analysis found zero exact retail-source matches for NBG0’s 131,072-byte bitmap, despite its enabled 8bpp bitmap mode and 1,024 title-palette CRAM word matches. It reports source_join=unbound and semantic_admission=blocked.

The accompanying VDP2 memory-write trace is not complete at the displayed endpoint: its 250,000 retained rows stop at VDP1 frame 7,729 and it reports 1,309,722 dropped rows before frame 8,060. The SH-2 VDP2-write trace also reports 1,046,883 dropped rows. The SCU DMA trace reached its 1,024-row cap without an overflow receipt, so it cannot be treated as complete. These traces do not identify the NBG0 bitmap producer or authorize semantic/display admission. Raw capture files and reports are kept outside Git in the ymir_nexus_menu_vdp2_provenance_20261027 external evidence bundle; its SHA256SUMS.txt validates the retained files.

A follow-up authentic Japanese capture retained a complete SH-2 trace (796,230 rows, capacity 1,000,000, zero dropped) and a VDP2 trace window covering frames 7,550–7,716. An exploratory offline scan reported that the 15,264 width-one VDP2 writes below address 0x20000 at frame 7,716 appear as one ordered sequence in the SH-2 master trace, starting at row 780,966, with one call context (PC 0x06023128, caller return 0x06023176, target 0x06023108). This is a candidate sequence match, not a frame-scoped producer join: SH-2 rows have no frame tags and the retained SH-2 receipt contains no frame bounds. The final VDP2 VRAM snapshot is frame 8,047, after the VDP2 trace ends, so its byte agreement cannot establish which frame produced the SH-2 sequence. The committed analyzer therefore fails closed on this retained bundle instead of reproducing the exploratory attribution.

Read-only Ghidra decompilation of hash-verified Japanese DM.BIN (3bbca125e0bfb486897e4926541e7c31adbff010d01a9b0c736637f432aad124) shows FUN_06023108 as a byte-wise row copier that advances the destination by a runtime pitch; FUN_06023144 dispatches to it for the observed call path. This identifies a plausible retail copy routine but does not prove it generated the frame-7,716 writes, recover the source asset ownership, cover the full 131,072-byte bitmap, or establish renderer semantics. The independent bitmap comparison remains source_join=unbound and semantic_admission=blocked. The analyzer’s rejection is reproducible with scripts/analyze_nexus_vdp2_sh2_write_join.py; raw captures, the exploratory report, and Ghidra output are retained in /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_nbg0_sh2_complete_20261027/. The frame-bounded capture below supplies the missing SH-2 bounds. It also checks for a later but byte-equivalent VDP2 VRAM snapshot by requiring a complete zero-drop VRAM write trace through the snapshot frame.

A frame-filtered repeat capture now records SH-2 writes only during VDP1 frame 7,716. The Ymir receipt reports exact frame bounds 7,716..7,716, 3,866 master rows, and zero dropped rows; the VDP2 trace and VRAM/register snapshot identify the same frame. The analyzer confirms one contiguous ordered match across all 3,866 writes, all 3,866 final byte values agree with the selected-frame VRAM snapshot, and there are zero mismatches. The call chain is 0x06023108|0x06023144|0x06040150. This removes timing ambiguity in the earlier unfiltered SH-2 trace. The raw capture is retained in /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_frame_aligned_20261027/.

A repeat capture added four nested call targets to each SH-2 write row. Its frame-7716 match has the single chain 0x06023108|0x06023144|0x06040150, identifying FUN_06040150 as the active outer caller. Read-only Ghidra xrefs show FUN_06040150 is reached by a computed call in FUN_0601128e at 0x0601153a; the latter is a per-frame runtime loop. This establishes the caller path seen during the capture, but does not assign a title-menu semantic name or identify the copy source. The repeat screenshot is pixel-identical to the prior Continue capture, and the current verifier again matches all 1,441 TITLE.BIN sprite pixels. The extended trace and xref output are retained in /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_callstack_20261027/.

A matched cold-boot menu capture keeps the SH-2 trace filtered to frame 7,716 while continuing to the complete native menu frame 8,047. The bounded VDP2 VRAM-write trace covers the frame window 7,000–8,049, retains 41,443 rows with zero drops, and records no VRAM writes after frame 7,716. The trace contains VRAM writes only, so it does not establish CRAM stability. The final VRAM, CRAM, and register snapshots are from frame 8,047; the complete VRAM write trace therefore establishes that the observed memory bytes remain unchanged through that snapshot. It does not independently bind the PNG to frame 8,047. The SH-2 frame receipt contains 15,264 master rows with exact bounds 7,716..7,716, zero drops, and one contiguous ordered match for all 15,264 byte writes. All 14,784 distinct written VRAM bytes agree with the later, unchanged snapshot. The matching call chain is 0x06023108|0x06023144|0x06040150. The VDP1 receipt identifies menu frame 8,047, with 178 commands and zero dropped rows; the authentic screenshot matches the five verified Japanese TITLE.BIN sprite roles at 1,441/1,441 nontransparent pixels. The screenshot verifier conservatively reports timing as unproven because its PNG does not carry an independent frame number. Raw files, verifier output, trace analysis, and hashes are retained in /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_menu_sh2_bound_20261027/.

This is authentic input-correlated source evidence for the Japanese menu selection state. It does not establish complete TITLE.BIN decoding, mouse hit regions, Firestaff input handling, or full-menu renderer admission. The Japanese Continue foreground sprites have since been admitted and rendered as described above. The full external capture, hashes, and reproduction command are in the Japanese Down-selection capture receipt.

A fresh repeat cold boot on the frame-tracing Ymir fork captured the Continue screenshot and VDP1 receipt in one run. The retained image is pixel-identical to the earlier screenshot, and the complete VDP1 receipt identifies frame 8,047 with 178 commands and zero dropped rows. Its SH-2 trace is byte-for-byte identical to the frame-7716 trace in the paired VDP2 analysis. The screenshot was saved to an ephemeral /dev/shm path recorded in run.log, then retained under the external evidence bundle. Because that retained copy is no longer at the logged full path, verify_nexus_title_sprite_screenshot.py --run-log rejects it; verification without --run-log matches all five authentic Japanese sprites and reports timing=unproven. The log does not bind the screenshot save event to frame 8,047, so exact screenshot-frame identity is unproven. This repeat confirms the menu image and source-write sequence, but it does not replace the paired VDP2 trace or admit a Firestaff renderer. The capture and hashes are retained in /Volumes/Extern-disk/firestaff-evidence/ymir_nexus_menu_frame_windowed_sh2_20261027/.

Full Japanese title-menu capture replay (2026-10-27)

The retained frame-8047 Ymir run now reproduces the complete 320×224 display from its captured VDP1 framebuffer, VDP2 VRAM, CRAM and registers. The C replay matches every pixel in the same-run 640×448 screenshot (286,720 subpixels) after 2× scaling. Its VDP1 trace contains 178 frame-8047 commands and reports zero dropped rows. The VDP1 register receipt also names frame 8047. Five Japanese TITLE.BIN menu-sprite roles account for 1,441 visible texels; the remaining output is accounted for by captured VDP1 direct pixels, captured VDP1 palette pixels and NBG0 overlays. The pixel counts and input digests are recorded in NEXUS_MENU_BPK_VDP1_SNAPSHOT_JOIN.md.

Japanese Configuration selection rendering (2026-10-28)

A --debug Ymir replay loaded the authenticated Japanese retail title-menu state in an isolated TRV2 profile and captured the main menu with Configuration selected. The same-run VDP1 receipt records 168 traced commands and zero dropped rows. Its next command cursor is 168, so the following VDP1 display list begins at 168 * 32 = 0x1500. Five menu sprite records at 0x1560 through 0x15e0 join byte-for-byte to the Japanese retail TITLE.BIN:

Role TITLE.BIN offset Position Screenshot texels
New Game, inactive 0x0316 (129,153) 313/313
Continue, inactive 0x0576 (128,165) 293/293
Configuration marker, left 0x1746 (85,168) 192/192
Configuration marker, right, flipped 0x1746 (211,168) 192/192
Configuration, selected 0x09a6 (109,177) 463/463

The two marker palettes match the retail palette at TITLE.BIN offset 0x1726. Text CRAM palette bytes match the identical retail palette copies at 0x02f6, 0x0426, 0x0556, 0x0686, 0x07b6, 0x0986, and 0x1f06. The verifier scripts/verify_nexus_japanese_configuration_capture.py checks command bytes, source spans, palettes, sprite priority, blend ratio, placement, horizontal flip, and all 1,453 nontransparent pixels against the retained 640×448 image. An isolated C probe ran Firestaff’s production renderer against the authentic Japanese TITLE.BIN; all 1,453 emitted sprite pixels match the Ymir screenshot.

Firestaff renders the five Japanese Configuration-selected foreground sprites and accepts mouse clicks in the source-bound native row rectangle (109,177,104,8). The screenshot, complete VDP1/VDP2 dumps, logs, and hashes are retained under /Volumes/Extern-disk/firestaff-evidence/nexus/nexus_jp_config_selection_preaccept_20261028/. The English Configuration capture and production-renderer check are documented below. The shared title background, full-screen composition, menu destination execution, Continue/save loading, and gameplay viewport/HUD parity remain open.

English Configuration selection rendering (2026-10-28)

A Ymir 0.4.2-dev --debug replay used the authentic English retail Saturn disc, USA 1.01a IPL, and a copied diagnostic profile. The loaded Ymir state opens the native title menu with Continue selected. One Control Pad 1 Up pulse at capture frame 30 selects Configuration. This is a menu-state replay, not cold-boot evidence. The paired screenshot SHA-256 is 725fdfb6ef795606ffeebb34d734dccfc9e813aff9c23a4628149ce61dc76304.

The same-run trace ends at VDP1 frame 59 and contains 178 commands with zero dropped rows. Five commands join to the hash-verified English retail TITLE.BIN (SHA-256 a634e8daf2a581df154b454919ee2ed44e937371668219d7cdf6d0983a613e44):

Role TITLE.BIN offset Position Visible texels Screenshot check
New Game, inactive 0x0316 (129,153) 313 313/313
Continue, inactive 0x0576 (128,165) 293 293/293
Configuration marker, left 0x1dd6 (85,168) 195 Background-dependent
Configuration marker, right, flipped 0x1dd6 (211,168) 195 Background-dependent
Configuration, selected 0x09a6 (109,177) 463 463/463

The marker palettes match the retail palette at TITLE.BIN offset 0x1db6. The text palettes match the seven identical retail copies at 0x02f6, 0x0426, 0x0556, 0x0686, 0x07b6, 0x0986, and 0x1f06. The marker source, palette, position, horizontal flip, VDP2 priority and 31/32 color calculation are verified. The screenshot’s marker RGB also includes the underlying NBG0 image, whose full source and composition remain unbound.

scripts/verify_nexus_english_configuration_capture.py checks the complete VDP1 frame trace, exact source spans, CRAM palettes, registers and all 1,069 visible text pixels. A separate C probe compiled Firestaff’s production renderer against authentic English TITLE.BIN; its 320x224 framebuffer index map matches all 1,459 source-visible sprite texels from the Ymir commands with zero differing pixels. English Configuration row selection and foreground rendering are now enabled. The complete screenshot, dumps, log, reproduction command and hashes are retained under /Volumes/Extern-disk/firestaff-evidence/nexus/nexus_english_config_menu_20261028/.

These capture-backed renderer checks do not establish the NBG0 title background, full-screen composition, or gameplay viewport/HUD parity. The following section records the later M11 New Game loader receipt; reaching that receipt still does not pass the presentation gate. Continue/save loading also remains open.

Retail New Game input reaches the authenticated level loader (2026-10-28)

The authenticated retail menu reducer returns NEXUS_V1_RETAIL_TITLE_MENU_RESULT_START_NEW_GAME when Accept is pressed on New Game. M11 now sends that result to the retail start path for both keyboard/controller Accept and the retail mouse row. The path authenticates the supplied DM.BIN, parses its level-1 record, loads the selected hash-verified LEV01.DGN, validates the retail start cell, and asks the existing source-gated runtime handoff to prepare the viewport and HUD.

The older Firestaff startup-action path is not used as a substitute: its NEXUS_V1_STARTUP_ACTION_NEW_GAME execution opens Firestaff’s champion-select mode. The retail path retains the parser’s authenticated level-start receipt and does not open champion selection. If downstream DGN, viewport, or HUD receipts still block presentation, M11 restores the observed title menu and reports the source-backed blocker; a repeated New Game action can retry the handoff without reloading or inventing a start pose. The parser and launcher probes pass with authentic media. The M11 retail-menu regression also starts the launcher from the real extracted corpus, accepts New Game once through keyboard input and once through the mouse row, and verifies the committed level-1 receipt and (29,47,North) engine pose in both cases. Both paths pass locally with the authentic retail corpus. There is still no Ymir capture of the M11 handoff, and this test establishes the loader route rather than a playable viewport or complete gameplay parity.

Retail Up input changes the first viewport (2026-10-28)

Ymir 0.4.2-dev was replayed on TRV2 from the authenticated Japanese retail New Game menu state, with no retail save loaded. Two runs loaded the same state, accepted New Game for two frames, and advanced 1,800 capture frames to VDP1 frame 1,605. The control run had no further input. The paired run asserted Control Pad 1 Up for one frame at capture frame 1,500.

The control screenshot is byte-identical to the earlier A-only viewport capture (8ede95f1fd777eda69ebcfc91d0268194e501f145306eb1fc2971ed0113a2274). The Up screenshot differs (f1dd18e6aec0560c5144739d17adfdde4c5d67dc9796db0890b9ceac57dc8657). Both selected-frame VDP1 traces contain 151 ordered commands with zero drops; 106 command records have changed words after Up, mainly vertex coordinates. The VDP1 framebuffer differs at 136,598 bytes, and WRAM-HI differs at 956 bytes. This confirms that the retail game reacts to Up after New Game. It does not establish a stable room, exact party coordinates, HUD behavior, or a Firestaff gameplay route.

The DGN join matches 78 of 138 textured draws, with 55 face-owner matches; semantic admission remains blocked. The complete trace also contains pre-frame records after an earlier END command, so whole-file trace auditing rejects it; the selected frame’s extracted command chain passes. Full logs, screenshots, memory dumps, frame audits, and the reproduction command are retained at /Volumes/Extern-disk/firestaff-evidence/nexus/nexus_new_game_capture_20261028/.

Follow-up timing probes show that Up at capture frame 100 is too early: at frame 120 the screenshot is still in the transition and is pixel-identical to the control; only three WRAM-HI bytes differ. Up at frame 400 also leaves the frame-600 screenshot identical to control. Up at frame 1,000 produces the same final screenshot as the frame-1,500 Up run. These probes bound the observed response to after frame 400 and by frame 1,000, but do not identify the exact transition frame. The paired captures are retained in the paired-up-120/, paired-up-400-600/, and paired-up-1000-1800/ subdirectories. The frame-120 SH-2 trace dropped records and is not used.

A separate complete ten-frame high-WRAM SH-2 trace contains 174,354 writes with no drops, but its final screenshot still shows the title menu. Ghidra maps its frequent writers to buffer clearing, entity-grid/list setup, fixed- point transforms, and polygon emission. In the later 1,800-frame dumps, four active type-0x0f rows in the 20-entry entity pool have object tile coordinates (9,24), (7,26), (38,25), and (36,27); these remain unchanged between control and Up. No source evidence binds those rows to the controlled player or identifies a New Game writer for player position and facing. The captured transition therefore still does not provide a safe Firestaff start pose. The complete short trace and the timing-probe notes are retained in startup-sh2-trace-10frames/ and the paired subdirectories above.

New Game loads the retail per-level start record (2026-10-28)

A follow-up Ymir --debug replay traced SH-2 reads and writes in [0x06064000,0x06065000) for 1,800 frames. The accepted run loaded the same New Game-selected state, held A for two frames at capture frame 0, and held Up for one frame at frame 1,000. Its complete trace recorded 61,982 reads and 5,850 writes with zero dropped rows. A no-input replay of the same state and duration recorded 40,295 reads and 3,007 writes, also with zero drops.

Only the accepted run recorded the one-time parser writes to the structure at 0x06064544: words 1, 0x8000, 29, and 47 at offsets +0, +2, +4, and +6, followed by zeroed dwords at +0x0c and +0x10. Ghidra on the hash-verified DM.BIN maps those stores to FUN_0602022c; the function copies the fields from an input record. FUN_06020fee later reads offsets +4 and +6 and passes them, along with other fields, to an indirect initializer. Its caller chain reaches FUN_060110ac from FUN_06010f44. These trace and decompilation receipts bind the values to the accepted New Game execution and the generic level-loader path.

Follow-up static analysis found the source table at DM.BIN+0x39550 (0x06049550 at the analyzed load base). It contains 16 eight-byte entries. FUN_06011984 checks the selected entry’s word at +2, then copies its level, coordinates and angle into the loader structure; it is called from FUN_0601128e. The level-1 bytes are 00 01 00 01 1d 2f 80 00, yielding level 1, enabled flag 1, (29,47), and angle word 0x8000. This agrees with the accepted New Game trace through FUN_0602022c. The (29,47) LEV01 cell is passable in the hash-verified retail DGN, confirming a source-authored level-1 loader coordinate. A separate FUN_060110ac branch writes (32,39) for a zero argument; those stores did not appear in the accepted New Game trace and are not substituted for the selected table entry.

Enabled table entries use angle words 0x0000, 0x4000, 0x8000, and 0xc000, consistent with quarter-turns in a 16-bit angle field. FUN_0601f584 stores the value in an object field, but its analyzed caller chain does not bind 0x8000 to a world axis or Firestaff’s north/east/south/west enum. The native runtime therefore still blocks starting gameplay until that mapping is established. Raw Ymir traces and Ghidra exports are retained externally in nexus_new_game_capture_20261028/config-struct-sh2-trace-1800/ with the no-input control beside it.

Paired left/right input from the New Game scene (2026-10-28)

Two isolated Ymir --debug --fast-forward replays loaded the same retained New Game savestate and scheduled the same A press at frame 0. One pressed left for one frame at frame 1,500; the other pressed right for one frame at the same point. Both captured frame 1,800. The screenshots differ at 216,860 pixels, WRAM-HI at 3,011 bytes, VDP1 framebuffer at 209,996 bytes, and VDP1 VRAM at 3,808 bytes; WRAM-LO and VDP2 VRAM are byte-identical. The generic loader record at 0x06064544..0x0606456f is identical and retains level 1, angle 0x8000, and (29,47). The angle word at WRAM-HI offsets 0x746d0, 0x792be, and 0x9705e is 0x8000 in the no-turn baseline, 0x8064 after left, and 0x7f9c after right. The companion word at 0x746ca changes to +100 and -100. The frame-10 SH-2 trace records PC 0x06010cfa initializing 0x060792be to 0x8000 in FUN_06010cf4, with object base 0x060792b0. An Up/control pair changes the big-endian 32-bit field at object offset +8 (0x060792b8) from 0x003b6000 to 0x003b5c00 while the angle remains 0x8000; the +0 position field remains 0x0024e000. These are 16.16 coordinates: the retail table cell center (29,47) maps exactly to ((29+0.5)*1.25, (47+0.5)*1.25) = (0x0024e000, 0x003b6000). The Up input moves only Y by -0x400, with angle unchanged. In this captured level-1 start, Up therefore moves toward decreasing DGN Y, which is Firestaff North; the retail heading 0x8000 maps to North. The one-frame left/right angle changes (+100/-100) are consistent with that mapping. This binds the level-1 retail start heading, but does not establish mappings for every angle word or the complete gameplay ownership path.

The launcher now parses the selected eight-byte record from hash-verified DM.BIN and admits only this calibrated level-1 heading to a New Game start. It loads the hash-verified LEV01.DGN, checks (29,47) against the loaded cell geometry, and creates the dungeon-start receipt before producing the runtime handoff. Other raw headings remain unmapped and are rejected. The viewport, material, and HUD routes retain their independent evidence gates; this loader change does not establish complete playability. The firestaff target compiled successfully on TRV2. The real-data nexus_v1_launch_smoke_probe passed 22/22 checks, including this launcher start receipt. It does not exercise the interactive M11 route or provide a Ymir capture of that handoff.

A read-only pass through the existing DGN parser on authentic LEV01 shows an open chamber at (29,47) and a single square-type-8 passage at (29,48), bounded by walls at (28,48) and (30,48). The frame-1800 scene shows a narrow opening ahead, visually consistent with facing toward the single passage. A 164-frame left hold instead ends at angle 0x293d and a close wall view, not at the simple expected quarter-turn value; an immediate frame-1665 capture reproduces that result. The long-hold comparison remains confounded and is not used to establish the heading mapping; the paired one-frame input plus exact fixed-point start coordinates provide the level-1 direction evidence. Screenshots, complete memory dumps, reproduction details, and artifact hashes are retained in external evidence at nexus_start_heading_turn_20261028/.

This is a full captured-frame composition check, not a renderer admission. The replay consumes Ymir display and VDP snapshots, not a Firestaff runtime upload from retail assets. The screenshot has no embedded frame number, so exact acquisition-frame identity remains unproven. The Japanese SH-2 read receipt observes a full 31,616-address source pass at frame 6,893 but records no values and dropped 860,856 unrelated master rows; the NBG0 storage join remains partial. Full runtime menu composition, keyboard behavior beyond verified selection, Configuration page controls, save loading, and playable-level/HUD parity remain open. New Game, Continue, and Configuration foregrounds and mouse rows are source-bound for both authenticated regions as described above.

English Configuration page foreground (2026-10-28)

An isolated Ymir 0.4.2-dev --debug run used the authenticated English retail disc and USA 1.01a IPL. A copied diagnostic profile entered the native Configuration page, saved deterministic state slots, and replayed each input from the same menu state. The retail TITLE.BIN SHA-256 is a634e8daf2a581df154b454919ee2ed44e937371668219d7cdf6d0983a613e44. The reproduction captures and raw data are retained in /Volumes/Extern-disk/firestaff-evidence/nexus/nexus-english-configuration-page-evidence-20261028/.

The page defaults are Music ON, Sound STEREO, Game Level NORMAL, and Monster Gauge ON, with Music focused. Up/down changes the focused row; A/Right changes the selected value; A on Exit and B return to the title menu. The captured Ymir foreground has 189 VDP1 commands and zero dropped rows. Its text, values, and animated focus markers join to authentic TITLE.BIN; the production C renderer probe reproduces the complete 320x224 indexed foreground and all 256 palette entries for seven captured states. Run python3 scripts/verify_nexus_english_configuration_page.py <evidence-dir> <TITLE.BIN> to repeat the byte-level checks.

M11 initializes these reducer defaults when it initializes the game view. While Configuration is active, the renderer leaves the back-screen clear instead of reusing the five-plane title image. The authentic capture shows a different scene behind this page, and its DGN/VDP2 background composition is still unbound.

Firestaff’s English- and Japanese-region reducer and renderer draw that authentic page foreground, animate its source-bound focus marker, route keyboard and mouse selection, and return to the title menu on Exit/B. The Japanese configuration foreground uses the hash-verified Japanese retail TITLE.BIN; all 71 retained text, palette, and marker spans used by the page are byte-identical to their English-file counterparts. Its 14 visible text sprites match all 12,518 pixels in the authentic Japanese Ymir screenshot. Run `python3 scripts/verify_nexus_japanese_configuration_page.py

--english-title ` to repeat the production-renderer, screenshot, and 71-span comparison checks. The captured Japanese page is only the initial state; it does not establish Japanese input interaction captures, marker-animation pixels, the 3D/DGN page background, setting persistence across cold boot, audio switching, difficulty effects, HUD effects, or full startup composition. New Game/Continue destination execution also remains open. Evidence uses authentic retail data; no synthetic game assets are used. ## English Configuration scene texture-source receipt (2026-10-28) A source scan of the authentic English Ymir page capture at frame 119 examined 148 textured VDP1 draws. Exact DGN Structure2 image spans bind 121 informative draws; 11 other draws are transparent all-zero textures. The broader join matches 137 informative spans across all hash-admitted retail resources, and 113 image spans also occur byte-for-byte in `LEV00.DGN`. Sixteen informative draws have no exact DGN Structure2 match. This advances texture-source identification for the scene visible behind the Configuration UI. Repeated image bytes across the level files leave some joins ambiguous. The receipt does not yet bind the active level instance, map-cell and face ownership, CLUT, palette, geometry placement, camera, complete composition, or Firestaff output. It does not admit a guessed DGN scene as a runtime background. See the [source-join receipt](https://github.com/yeager/firestaff/blob/main/parity-evidence/verification/nexus_english_configuration_scene_dgn_join_20261028/README.md) and its retained external capture bundle. A second pass joins the Ymir command chain's indexed source bytes and CLUTs, as well as direct-color pixels, against authentic DGN Structure2 materials. Of 132 textured draws, 11 are transparent all-zero textures; all remaining 121 informative draws match (113 indexed image/CLUT pairs and 8 direct-color spans). Of those matched draws, 105 have one or more Structure3 face-owner rows, while 16 have none. Because material bytes are reused across levels and face rows, these are candidate owners rather than active-instance assignments. See the expanded [source-join receipt](https://github.com/yeager/firestaff/blob/main/parity-evidence/verification/nexus_english_configuration_scene_dgn_join_20261028/README.md). ## Japanese Configuration scene trace prefix (2026-10-28) An authentic Japanese retail capture at frame 599 shows the Configuration page over its dungeon scene. Its complete Ymir trace file contains 168 executed commands and no dropped rows, but the observed frame prefix ends before VDP1 END. A new analyzer mode validates the trace receipt and captured command cursor without treating that prefix as a completed display list. Of the 132 textured draws in the observed prefix, 11 use transparent all-zero textures and contain no visible texels. The other 121 draws join exact image/CLUT or direct-colour spans to the 16 canonical retail DGN files; 105 matches have at least one candidate Structure3 face owner, while 16 have none. Those 16 are early distorted-sprite quads using five 48x48 materials from `LEV00.DGN`; their vertices form a receding tiled plane in the lower scene, consistent with a floor or menu backdrop. The active level/map selector and geometry owner remain unproven. Camera transform, culling, display origin, VDP2 composition and other settings states also remain unproven, so renderer admission stays blocked. See the [trace-prefix receipt](https://github.com/yeager/firestaff/blob/main/parity-evidence/verification/nexus_japanese_configuration_dgn_trace_prefix_20261028/README.md) and the authentic Japanese retail capture retained in operator-managed external evidence storage. ## Continue reaches gameplay with the retained authentic BKR (2026-10-28) ### Save-slot time discrepancy The retained 2025 capture `parity-evidence/verification/nexus-continue-real-bup-20261025/03-load-screen.png` (SHA-256 `5e20c31980926e599343b25dbdc1bc75b945ee382e9c313439996fc08b633444`) shows `B01 0:06 NORMAL`. The 2028 capture `/Volumes/Extern-disk/firestaff-evidence/nexus/nexus_authentic_bkr_continue_20261028/authentic-bkr-continue-device.png` (SHA-256 `2b86fe32898e79009ac2cc5cf33f961e0ebcd61489c9f93a9717f9e0c13ea8fb`) shows `B01 0:16 NORMAL`. Both reports identify the same 32 KiB BKR SHA-256 `87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035`; the 2028 run also verified that the source image and profile copy were unchanged after loading. The runs used different Ymir versions (0.4.1 and 0.4.2-dev) and different boot/input schedules. The available evidence does not determine why the displayed time differs. These are capture-specific observations; do not treat either time as an established property of the BKR or infer a BKR mutation. Resolving the cause requires a controlled replay with the same Ymir build, profile initialization, and frame-exact input schedule. Ymir `0.4.2-dev` was run on TRV2 with the hash-verified Japanese retail disc, Japanese IPL and an isolated profile. The profile's internal backup RAM was a byte-for-byte copy of `nexus-four-champion-retail-written-20260926.bkr` from the authentic Nexus data corpus (SHA-256 `87d041baecca76a629b18b34e13b47adca1d5995a69bcac769aaca54c8f34035`). No emulator save state or game save was loaded during the cold boot. After the retail title menu appeared, Down and A opened Continue's Load screen, which listed the internal-memory entry `B01 0:16 NORMAL`. A second A accepted that entry. The next capture shows a dungeon view with four champion HUD panels. The BKR source and isolated profile copy retained the same SHA-256 after the load. From the accepted-save emulator state, equal 300-frame replays were captured with no input and with Control Pad Up held for 60 frames. The two 640x448 images differ at 239,180 pixels. This confirms that the loaded retail view responds visibly to the scheduled input; it does not identify the complete movement mapping or prove Firestaff input parity. A repeated Load-screen capture at VDP1 frame 559 has 17 command rows and zero dropped rows. All three textured VDP1 source starts fall in exact-resident Japanese `MENU.BPK` PRS3 surfaces: entries 90, 96, and 97, each 16x16. This binds those image bytes to the Load-screen display list, but not their CLUT palette, visible role, save-row text, or complete panel composition. A bounded SH-2 read trace started from the saved title-menu state recorded zero BUP reads; the save list had already been discovered before that state was saved. A same-run coldboot trace on TRV2 now covers frames 0–11,999 with the authentic BKR installed. It records 10,849 one-byte reads in bus range `0x180000..0x200000`, 1,328 distinct addresses, and zero dropped rows. The trace's most frequent PCs are `0x06003d68` and `0x0600289c` (2,550 reads each), `0x060034b0` (2,040), and `0x060028f2`/`0x06002900` (1,770 each). Same-run WRAM-HI disassembly shows byte reads and subsequent stores at these sites, consistent with early BUP enumeration/copy work. Ymir's trace records no read values, so it does not prove payload bytes were consumed as game state or identify a Nexus save field. A later checkpoint at boot frame 14,900 shows the Japanese title logo. A replay from that checkpoint with Start, Down and A reaches the authentic Load screen row `B01 0:16 NORMAL`, but records zero new BUP-window reads. This narrowly places the observed BUP read activity earlier in startup than this checkpoint; it does not tie those reads to the later Continue action. The BKR loader and its payload-to-runtime mapping remain unbound. Full trace, disassembly and checkpoint receipts are recorded in the external evidence folder's `coldboot-readtrace-boot12000/` and `coldboot-title-checkpoint/` subdirectories. The accepted-save capture's VDP1 snapshot is frame 2,173 with 83 commands. Its complete command trace contains 175,042 rows with zero dropped rows. The capture commands, logs, screenshots, memory/VDP dumps, hashes and scope limits are recorded at `/Volumes/Extern-disk/firestaff-evidence/nexus/nexus_authentic_bkr_continue_20261028/README.md`; the Load-screen source-start receipt is in `load-screen-menu-bpk-source-join.md` within that evidence folder. For the same-frame Load-screen VDP2 snapshot (frame 559), a bounded exact-byte scan checked 410 verified retail bitmap candidates from `MENU.BPK`, `FONT256.S2D`, `TITLE.BIN`/`TITLE.CG`, and `STABG.BIN` against the active NBG0 bitmap span. It found no exact source span. A separate scan parsed 1,266 Structure2 palettes from all 16 authenticated DGN levels and found no exact raw or word-swapped match in captured CRAM; the `MENU.BPK` palette also had no exact match. This leaves NBG0's producer and palette unresolved. The broader partial-byte scan exceeded its 10-minute limit, so no negative conclusion is drawn from partial matches. The bounded-scan results are recorded in the external evidence folder's `load-screen-menu-bpk-source-join.md`. The bundle contains no BKR payload. This establishes the retail game's Continue-to-gameplay behavior in Ymir with the retained corpus save; it does not establish that Firestaff loads the BKR, executes Continue, or renders the captured viewport and HUD. Those production routes remain gated on their own source-bound parsing, composition and input evidence.