Find the sustained action sequence: it breaks both profiles
The open risk since session 2 was "a sustained action sequence could still break the bitrate", with every clip measured so far being 1.2-1.7 s. Closed by measurement rather than by sampling clips by hand. 07_motion_survey.py scans a whole stream at 96x72 for the hottest sliding window of inter-frame difference. On 00223 the spread between the quietest and hottest sustained 10 s windows is 10.6x, which is the argument for not eyeballing it. Hottest is t=539.4s, the Singe endgame. There, with the fixed lam the CLI uses, sasi overshoots 110 -> 129.6 KB/s (+18%) and scsi 280 -> 373.8 KB/s (+34%). Rate control moves from "insurance, not a fix" to required, and is promoted above the full-disc survey. The bus is not broken -- 381.6 KB/s still fits the 488 KB/s figure -- so FINDINGS 21 survives, at 78% of the pipe instead of a comfortable margin. Three further corrections fall out: - The two largest streams on the disc are bonus material. 00216 is the feature with a burned-in commentary PiP; 00215 is the commentary. 00223 is the clean 9.4 min. A size-ranked survey would have encoded live action. - On hard content the 256-colour scene palette (31.33 dB) binds well before the X68000 display (40.81 dB); scsi is already within 0.51 dB of it. - FINDINGS 24.5's architecture question resolves to "both paths, chosen per frame": 30-53% of frames sit above the 70% crossover. Picking per frame costs a median 37.0% of the frame budget and caps at 53.6%. Reporting for this is wired into encode.py, which previously only printed a mean over all frames -- the one statistic that cannot answer a per-frame question. extract.py takes optional start/dur; 08_mode_map.py renders source | decoded | block-mode map to .webm. Claude-Session: https://claude.ai/code/session_01194oWYW8DQXK1SZ2DnChW6
This commit is contained in:
@@ -26,8 +26,13 @@ docs/ findings, status, hardware reference
|
||||
tools/analysis/ measurement scripts, numbered in the order they were written
|
||||
(01/02 marked BROKEN deliberately, kept as regression refs).
|
||||
Run from the repo root — they import from tools/encoder/.
|
||||
07 finds the hottest sustained window in a stream; 08 renders
|
||||
source | decoded | block-mode map as .webm.
|
||||
tools/bench/ MAME Lua injection harness + 68000 benchmark sources.
|
||||
`check.sh` re-runs both display regression tests (~40 s).
|
||||
`blit.s`/`blit.lua` time the full-frame GVRAM blit on the
|
||||
68000 itself (FINDINGS 24) — not part of check.sh, because
|
||||
wall timings would make the green-light check host-sensitive.
|
||||
`crtc_mode.lua` is the single source of truth for CRTC R00-R08
|
||||
and R20 — do not write CRTC values anywhere else.
|
||||
tools/vasm/ vasm m68k assembler (built from source)
|
||||
@@ -62,3 +67,8 @@ python3 tools/encoder/profile_gen.py --bw-mbps 4 --name scsi
|
||||
> pointing to the correction — heed those, especially 18 (reversed by 21).
|
||||
|
||||
Source media (`DRAGONS_LAIR.iso`) and ROMs are gitignored — supply your own.
|
||||
|
||||
**Not every large stream is game footage.** `00216` is the feature with a
|
||||
burned-in commentary picture-in-picture and `00215` is the commentary itself —
|
||||
the two largest files on the disc. The clean 9.4-minute animation is **`00223`**.
|
||||
See FINDINGS 25.1 before running any size-ranked survey.
|
||||
|
||||
Reference in New Issue
Block a user