3.5 KiB
3.5 KiB
013 Tile Bank Runtime Contract Alignment
Briefing
O runtime hoje tem divergencia entre especificacao e implementacao para tile bank.
O objetivo desta PR e fechar o contrato runtime-side que o packer deve atender antes de prosseguir com a materializacao definitiva de tile bank em assets.pa.
Em especial, o repositorio precisa alinhar:
- representacao serializada de indices de pixel;
- cardinalidade de paletas por bank;
- shape minimo de metadata usado pelo loader;
- e semantica de
codec/decoded_sizeparaTILES.
Decisions de Origem
docs/packer/decisions/Pack Wizard Pack Execution Semantics Decision.md- discussao em andamento no packer sobre
Tile Bank Packing Materialization
Alvo
Alinhar o contrato normativo do runtime para tile bank v1 com a direcao:
- indices serializados como
u4packed emassets.pa; - paletas serializadas como
RGB565 (u16 little-endian); - baseline v1 com
64paletas por bank; palette_idvalido em0..63;codec = RAWpara tile bank no primeiro wave;- metadata minima suficiente para o loader reconstruir o bank em memoria.
Escopo
- revisar
docs/runtime/specs/04-gfx-peripheral.md - revisar
docs/runtime/specs/15-asset-management.md - revisar
docs/runtime/specs/13-cartridge.mdsomente se necessario para coerencia de referencia - explicitar o contrato runtime-facing de tile bank em termos de:
- layout serializado;
- layout em memoria;
- limites de paleta;
- metadata minima;
decoded_size
Fora de Escopo
- implementar codigo do loader ou do driver
- ampliar o numero de paletas para
256 - definir formatos comprimidos para
tile bank - definir
tilemap bank - redesenhar o modelo de GFX alem do necessario para coerencia do contrato
Plano de Execucao
- Auditar e registrar as divergencias atuais entre
specs/04,specs/15e o codigo runtime. - Consolidar um baseline unico para
tile bankv1:- payload serializado com indices
u4packed - paletas
64 * 16 * u16 palette_idem0..63
- payload serializado com indices
- Explicitar que a representacao em memoria pode continuar expandida para
u8por pixel mesmo quando a forma serializada usau4. - Definir metadata minima obrigatoria em
AssetEntry.metadatapara tiles:tile_sizewidthheightpalette_count- outros campos apenas se realmente necessarios para reconstruir o bank
- Fechar a semantica de
decoded_sizeparatile bankv1. - Revisar exemplos e linguagem normativa para remover contradicoes internas.
Criterios de Aceite
docs/runtime/specs/04-gfx-peripheral.mdnao contradiz mais o limite de paletas efetivo detile bankdocs/runtime/specs/04-gfx-peripheral.mddefine4bpppacked como forma serializada do payloaddocs/runtime/specs/15-asset-management.mddeixa claro o contrato runtime-facing necessario para reconstruirTileBank- a distincao entre forma serializada e forma em memoria fica explicita
- a semantica de
palette_idedecoded_sizefica fechada paratile bankv1
Tests / Validacao
- revisao editorial cruzada entre
specs/04,specs/13especs/15 - checklist de coerencia contra o codigo existente do loader/runtime
- validacao com a agenda/decision do packer para garantir que o contrato e implementavel pelo
assets.pa
Riscos
- cristalizar cedo demais um limite de paletas que depois precise ser ampliado
- documentar
decoded_sizede forma utilitaria demais e gerar custo futuro em telemetry/budget - deixar ambiguo o que pertence ao payload versus o que pertence ao
metadata