Asset Pipeline Gap

tools/extract_d2_menu_assets.py now supports two modes: - Default mode: backward-compatible extraction of 0GDTEX.PVR + NLOGO.PVM W/A/R/P tiles - Manifest mode (--manifest): arbitrary PVM/PVR extraction driven by tools/title_menu_manifest.json, with auto-detection of PVRT formats (ARGB4444 twiddled, RGB565 twiddled, VQ/SMALLVQ RGB565, ARGB1555 twiddled)

Remaining pipeline gaps: 1. The title-menu candidate PVMs/PVRs have not been extracted from the raw disc image yet 2. The manifest entry names are speculative placeholders (e.g. Q_TITLEBGMT0.PVM:BGMT0) and must be validated against real files 3. .CTS companion files for animation frames are not yet handled

Build System Gap

Makefile targets d2-assets and flycast-image exist, but: - make d2-assets calls a Python tool that cannot yet process title-menu assets - make flycast-image builds the old proof screen ELF - No target exists for the D2 title menu validation image