fix(tiles): early status on dictionary failure, decode-time field, chunk bound

This commit is contained in:
opencode.energia.arti.ee committed 2026-10-31 03:35:14 +00:00
1 parent b995c2caaa
commit a84f5f2811
11 files changed
+527 -68

No files matched your search

@@ -182,8 +182,9 @@ frame start, so a frame never straddles the ring wrap and slot ownership is expl
* **Dictionary**: 256 × 32×32 1-bpp (128 B each = 32 KB), built offline by k-means
over the video's tiles, uploaded in chunks, held in the startup allocation.
* **Frame**: header + 1,280 index bytes (40×32 grid, row major). `kind = TILES_FULL`.
* **Delta**: `kind = TILES_DELTA` + a changed-tile list (run-length list of tile
indices, 1–2 bytes per entry) and their new indices. Deltas are the normal case.
* **Delta**: `kind = TILES_DELTA` + a changed-tile list: `count u16`, then
`count` × (`pos u16`, `index u8`) little-endian, where `pos` is the row-major
tile position and `index` its new dictionary entry. Deltas are the normal case.
* Decoder: one cached loop; `PIXBLT B,XY` from `dict + index*128`, `DYDX=(32,32)`,
`SPTCH=32` (a 32-px row is **two** words), destination XY `(ty*32, tx*32)`.
* **Repair**: a `TILES_FULL` keyframe every 2 s (and on the host's first frame), so