* test(matrix): score a black run whose 68K is stuck in an exception loop as a crash
The cart matrix called a run GAME_CODE when the final 68K PC was in
RAM, cart space or the boot ROM. Two crash states pass that test and
were published as "Runs; video undetermined headlessly":
- parked in the loader's ILLEGAL guard ($1000: BRA.S *, vector 4),
e.g. Mandelbrot Demo, Painter (bin), Gorf 2000, the Jaguar Server
examples;
- an RTE ping-pong between one faulting PC and the HLE RTE stub at
$404, e.g. Rayman Demo, Phase Zero (PD), Hubble Nebula.
The probe now reads the pcQueue ring and the RAM vector table every
frame and reports trap_frames (consecutive frames, up to the last, in
which every ring PC is inside an RTE / BRA.S * handler that one of
vectors 2-11 names, or is one single other PC), trap_pc (the faulting
PC; for a parked guard, the PC saved in the exception frame) and
trap_handler. cart_classify.sh turns 30+ such frames into
"? (trap_loop)" when the run also never put a picture up. With video
the row stays GAME_CODE and the notes say the 68K is parked: BJL demos
(DEMO1, DEMO1B, DEMO1C, Ladybug) end their 68K main on purpose and let
the GPU/OP run the demo. A legitimate idle loop is not caught: Jaguar
Server JAGOS's 14-PC wait loop reads trap_frames=0. The classifier's
final-PC extraction is now anchored to the field so trap_pc= cannot
match it.
matrix_diff reads GAME_CODE -> "? (trap_loop)" as backward (rank 1);
the baseline refresh that lands with this records those rows.
Refs #975
Co-Authored-By: Claude Opus 5.5 <[email protected]>
* docs(matrix): refresh the cart matrix baseline for ? (trap_loop)
Full cart sweep on the corpus host (155 titles, both modes, FAST
blitter, develop + the classifier change). Against the previous
baseline, matrix_diff reports 29 cells GAME_CODE -> "? (trap_loop)":
the 18 HLE rows the matrix triage found crashed in frame 1-60 and the
BIOS cells of the 11 RAM-loaded ones (the boot ROM is not used there,
so they mirror HLE). These are the scoring being corrected, not a
regression: every one had 0 lit frames and a 68K parked in the $1000
ILLEGAL guard or ping-ponging with the HLE RTE stub. Each is ticketed:
#971 Mandelbrot Demo, Jaguar Server INTRO / INTROMOD
#972 Painter (bin), Hubble Nebula (HLE)
#973 Rayman Demo x2, BadCode4 (Metal)/(Modified) (rom)
#974 Phase Zero (PD) (HLE)
#975 authentic, no loader fix possible: Jaguar Server 50HZ / 60HZ /
KEYB (helpers that need the resident server), Gorf 2000 (a
stale-A0 address error in the game's own startup), BadCode4
(Metal) (bin) [a1] (an incomplete build), Assassin (for BJL),
FFYL [a2], Kasumi Ninja [a1] (bad / altered dumps)
Seven GPU/OP-driven BJL demos (DEMO1 x2, DEMO1B x2, DEMO1C, Ladybug
x2) keep GAME_CODE with video; their notes now say the 68K is parked.
Every other row is unchanged apart from the build stamp. The legend
gains the new stage.
Refs #975
Co-Authored-By: Claude Opus 5.5 <[email protected]>
---------
Co-authored-by: Claude Opus 5.5 <[email protected]>