dm2-graphics: decode the residual ~2% FM-Towns-specific image variants #267

Closed
opened 2026-07-17 18:51:35 +02:00 by jqueuniet · 1 comment
jqueuniet commented 2026-07-17 18:51:35 +02:00 (Migrated from codeberg.org)

Context

Image::parse_fm_towns decodes all 4,415 format-4 (0x8004) records engine-faithfully, but a ~2% tail of FM-Towns-specific image variants is deferred (ROADMAP.md:154, 1227–1228). fixtures/fm-towns-jp/ is the only local format-4 fixture. Container + ENT1 + non-image decoders are smoke-tested in crates/dm2-graphics/tests/fm_towns_jp_archive.rs.

Scope

  • Identify which records make up the ~2% tail and how their layout diverges from the mainline format-4 path.
  • Extend parse_fm_towns to cover them.
  • Extend the FM-Towns archive test to assert full image coverage.

Acceptance

  • 100% of format-4 image records decode (matching the 100%-coverage bar the other five format-5 ports already meet).
## Context `Image::parse_fm_towns` decodes all 4,415 format-4 (`0x8004`) records engine-faithfully, but a ~2% tail of FM-Towns-specific image variants is deferred (ROADMAP.md:154, 1227–1228). `fixtures/fm-towns-jp/` is the only local format-4 fixture. Container + ENT1 + non-image decoders are smoke-tested in `crates/dm2-graphics/tests/fm_towns_jp_archive.rs`. ## Scope - Identify which records make up the ~2% tail and how their layout diverges from the mainline format-4 path. - Extend `parse_fm_towns` to cover them. - Extend the FM-Towns archive test to assert full image coverage. ## Acceptance - 100% of format-4 image records decode (matching the 100%-coverage bar the other five format-5 ports already meet).
jqueuniet commented 2026-07-19 10:48:25 +02:00 (Migrated from codeberg.org)

Investigated: the ~2% tail was already decoded — the ROADMAP lines this issue cites are stale.

  • The "~2 % of records deferred" phrase entered ROADMAP.md in 6dc0791c, before the FM-Towns image decoders existed. The ~2% is the 80 Y-mark = -32 records (80/4,415 ≈ 1.8 %), implemented in 3f1f99c3 (ReadImgU4towns port); the other 4,335 records in 25d27ec4 (ReadImgDM2C4towns port). f2fa1fea closed the Phase 1.d bullet but missed the fixture-table row and Phase 2 bullet.
  • Empirical check: dm2 extract on the FM-Towns fixture emits all 4,415 image records as PNGs; the 80 raw .bin leftovers are cls3=0x0E LUT records, not images.
  • The acceptance bar (100 % of format-4 image records decode) was already met; the coverage test now asserts it strictly (zero Err records, not just an ok-count), and the stale ROADMAP/docs/rustdoc claims are corrected on branch chore/267-fm-towns-image-tail.
Investigated: the ~2% tail was already decoded — the ROADMAP lines this issue cites are stale. - The "~2 % of records deferred" phrase entered ROADMAP.md in 6dc0791c, before the FM-Towns image decoders existed. The ~2% is the 80 `Y-mark = -32` records (80/4,415 ≈ 1.8 %), implemented in 3f1f99c3 (ReadImgU4towns port); the other 4,335 records in 25d27ec4 (ReadImgDM2C4towns port). f2fa1fea closed the Phase 1.d bullet but missed the fixture-table row and Phase 2 bullet. - Empirical check: `dm2 extract` on the FM-Towns fixture emits all 4,415 image records as PNGs; the 80 raw `.bin` leftovers are cls3=0x0E LUT records, not images. - The acceptance bar (100 % of format-4 image records decode) was already met; the coverage test now asserts it strictly (zero `Err` records, not just an ok-count), and the stale ROADMAP/docs/rustdoc claims are corrected on branch `chore/267-fm-towns-image-tail`.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jqueuniet/dm2-tools#267
No description provided.