1
0
Fork 0
mirror of https://github.com/imjasonh/nescript synced 2026-07-16 12:12:04 +00:00
nescript/tests/emulator/goldens/auto_chr_background.audio.hash

2 lines
16 B
Text
Raw Normal View History

assets: auto-generate CHR data from @nametable() PNG sources `background Foo @nametable("file.png")` previously decoded the PNG into a tile-index table and an attribute table but left CHR generation to the user — they had to supply matching tiles via a separate `sprite Tileset @chr(...)` declaration in the same deduplication order, which was both error-prone and the main thing keeping the shortcut form from being a one-liner. The CHR pipeline now closes the gap. `png_to_nametable_with_chr` returns a `PngNametable` carrying the tile-index table, the attribute table, *and* a per-tile CHR blob encoded with the same brightness-bucketing `png_to_chr` already uses for sprites. The resolver passes `next_sprite_tile` (computed from the resolved sprite list) so each background's CHR allocation slots in immediately after the sprite range, and rewrites the nametable indices to point at the actual physical tile numbers. The linker copies each background's `chr_bytes` into CHR ROM at `chr_base_tile * 16`, so the final image renders without any user-supplied CHR. `BackgroundData` carries `chr_bytes` and `chr_base_tile` so the linker has everything it needs at a glance. Inline `tiles:` / `attributes:` declarations leave them empty and behave exactly like before — that path doesn't auto-generate CHR because the user is implicitly opting into "I'll provide tiles myself" by typing the indices out by hand. The new `examples/auto_chr_background.ne` is a 256×240 grayscale gradient committed alongside its `auto_chr_bg.png` source; the emulator harness verifies the rendered output against a committed golden so a regression in the dedupe/encode/linker plumbing fails CI loudly. Existing example ROMs are byte- identical because their backgrounds either have no PNG source or already provided their own CHR. https://claude.ai/code/session_01KEczoNUX3WmcFLfq6iAQxB
2026-04-15 03:29:58 +00:00
a82b6ff5 132084