Introduzione sugli sprite e i background pt. 2
Proseguiamo con la parte finale dell’introduzione e, come accennato nella scorsa parte, parliamo dei charblocks.
Charblocks
Tutti i tile sono contenuti nei charblocks.
Ogni charblock è grande 16 kb (4000h) quindi c’è spazio per 512 s-tile (4000/20h) o 256 d-tile (4000h/40h).
Potete anche considerare i charblock come matrici di tile; 32x16 s-tile, 16x16 (o 32x8) d-tile.
I 96 kb di VRAM possono essere visti come 6 charblock: 4 per i background (0 – 3) e 2 per gli sprite (4 – 5).
Per i tiled backgrounds, il conteggio dei tile parte da un character base block fissato (in breve: CBB), che è indicato dal 2° e 3° bit del REG_BGxCNT.
L’indicizzazione dei tile degli sprite parte sempre dallo sprite block inferiore (il blocco 4, che inizia all’indirizzo 0601:0000h).
Purtroppo l’indicizzazione dei tile dei background e degli sprite non funziona allo stesso modo.
Per gli sprite, la numerazione segue sempre quella degli s-tile (offset di 20h) anche per i d-tile.
Per i background, l’offset è di 20h in modalità 4bpp e di 40h se la modalità è in 8bpp.
Sia i background che gli sprite regolari hanno 10 bit disponibili per gli indici dei tile. Cioè 1024 indici disponibili.
Poiché ogni charblock contiene 512 s-tile, potete accedere non solo al CBB ma anche a quello successivo. E se il vostro background usa i d-tile potete accedere a un totale di 4 blocchi!
Inoltre in una delle modalità bitmap, le bitmap si estendono fino allo sprite block inferiore. Per questo motivo, è possibile usare solo lo sprite block superiore (che contiene i tile dal 512 al 1023) in questo caso.
Palette e colore dei tile
Gli sprite e i background hanno palette separate.
La background palette si trova all’indirizzo 0500:0000h, seguita dalla sprite palette all’indirizzo 0500:0200h.
Entrambe le palette contengono 256 elementi di colori a 15 bit.
In modalità 8 bit, il valore del pixel nei tile è l’indice della palette per quel pixel.
In modalità 4 bit, il valore del pixel contiene il nybble inferiore dell’indice della palette; il nybble superiore è l’indice della palbank, che può essere trovato sia negli attributi degli sprite che nel nybble superiore dei tile.
Se il valore del pixel è 0 allora quel pixel sarà trasparente.
A causa della questione dei colore a 16 bit e la trasparenza, è essenziale che il programma che usate per la grafica lasci la palette intatta. Programmi popolari a tale scopo sono Gimp e Aseprite.
Tabella riassuntiva
Vi lascio anche una tabella riassuntiva degli attributi che vedremo nel dettaglio più avanti.
Come ho detto nella prima parte, non è importante capire tutto subito perché vedremo nel dettaglio come funzionano i background e gli sprite, nei prossimi capitoli.
Con questo capitoletto si conclude l’introduzione. Nel prossimo capitolo, vedremo gli sprite più nel dettaglio. Alla prossima!
Fonte: https://gbadev.net/tonc/objbg.html
Tag: @evilespeon @ZedeFire @VincyDarkHeart @Macca