Come abbiamo visto nell'articolo dedicato all'hardware il Nintendo DS dispone di un totale di 656 KB di memoria video suddiviso in 9 banchi di diversa dimensione e funzionalità.
Di questi 9 banchi, i principali sono i primi 4 (A, B, C e D) e sono tutti di dimensione pari a 128 KB.
I restanti banchi hanno dimensioni che variano da 16 KB a 64 KB.
Andiamo ora ad analizzare le diverse funzioni che è possibile assegnare ai vari banchi:
-LCD (nessuna funzione): il banco è mappato ad un indirizzo fisso, diverso per ognuno, in modo da comporre un unico continuo blocco di memoria, se dovesse servire. Tutti i banchi sono in grado di lavorare in questa modalità.
-Texture memory: il banco viene utilizzato come memoria per le texture che verranno usate per i modelli 3D. Solo i 4 banchi principali A, B, C e D.
-Palette texture memory: il banco viene utilizzato come memoria per le palette (tavolozze colori) delle texture (per quelle texture che ne hanno bisogno). Solo i banchi E, F e G.
-Background memory (Main Engine): il banco viene utilizzato come memoria per i background (indipendentemente da quanti se ne useranno) del motore principale. Tutti i banchi tranne H e I.
-Background memory (Sub Engine): il banco viene utilizzato come memoria per i background del motore secondario.
Solo i banchi C, H e I.
-Sprite memory (Main Engine): il banco viene utilizzato come memoria per gli sprite del motore principale. Solo i banchi A, B, E, F e G.
-Sprite memory (Sub Engine): il banco viene utilizzato come memoria per gli sprite del motore secondario. Solo i banchi D e I.
-Memoria per le palette estese dei background e degli sprite (Main/Sub Engine): è possibile dichiarare fino a 16 palette (da 16 o da 256 colori) per ogni background ed altre 16 palette per gli sprite. Questo per entrambi i motori grafici.
Le funzioni per impostare le modalità di funzionamento dei vari banchi hanno la seguente sintassi:
void vramSetBankx(VRAM_x_y)
dove x sta per il nome del banco e y sta per il tipo di modalità.
es.
void vramSetBankA(VRAM_A_LCD)
void vramSetBankD(VRAM_D_MAIN_SPRITE)
Riassumiamo qui di seguito le modalità possibili per ogni banco:
Di questi 9 banchi, i principali sono i primi 4 (A, B, C e D) e sono tutti di dimensione pari a 128 KB.
I restanti banchi hanno dimensioni che variano da 16 KB a 64 KB.
Andiamo ora ad analizzare le diverse funzioni che è possibile assegnare ai vari banchi:
-LCD (nessuna funzione): il banco è mappato ad un indirizzo fisso, diverso per ognuno, in modo da comporre un unico continuo blocco di memoria, se dovesse servire. Tutti i banchi sono in grado di lavorare in questa modalità.
-Texture memory: il banco viene utilizzato come memoria per le texture che verranno usate per i modelli 3D. Solo i 4 banchi principali A, B, C e D.
-Palette texture memory: il banco viene utilizzato come memoria per le palette (tavolozze colori) delle texture (per quelle texture che ne hanno bisogno). Solo i banchi E, F e G.
-Background memory (Main Engine): il banco viene utilizzato come memoria per i background (indipendentemente da quanti se ne useranno) del motore principale. Tutti i banchi tranne H e I.
-Background memory (Sub Engine): il banco viene utilizzato come memoria per i background del motore secondario.
Solo i banchi C, H e I.
-Sprite memory (Main Engine): il banco viene utilizzato come memoria per gli sprite del motore principale. Solo i banchi A, B, E, F e G.
-Sprite memory (Sub Engine): il banco viene utilizzato come memoria per gli sprite del motore secondario. Solo i banchi D e I.
-Memoria per le palette estese dei background e degli sprite (Main/Sub Engine): è possibile dichiarare fino a 16 palette (da 16 o da 256 colori) per ogni background ed altre 16 palette per gli sprite. Questo per entrambi i motori grafici.
Le funzioni per impostare le modalità di funzionamento dei vari banchi hanno la seguente sintassi:
void vramSetBankx(VRAM_x_y)
dove x sta per il nome del banco e y sta per il tipo di modalità.
es.
void vramSetBankA(VRAM_A_LCD)
void vramSetBankD(VRAM_D_MAIN_SPRITE)
Riassumiamo qui di seguito le modalità possibili per ogni banco:
Memoria (dimensione) | Modalità utilizzabili |
VRAM_BANK_A (128 KB) | VRAM_A_LCD |
VRAM_BANK_B (128 KB) | VRAM_B_LCD |
VRAM_BANK_C (128 KB) | VRAM_C_LCD |
VRAM_BANK_D (128 KB) | VRAM_D_LCD |
VRAM_BANK_E (64 KB) | VRAM_E_LCD |
VRAM_BANK_F (16 KB) | VRAM_F_LCD |
VRAM_BANK_G (16 KB) | VRAM_G_LCD |
VRAM_BANK_H (32 KB) | VRAM_H_LCD |
VRAM_BANK_I (16 KB) | VRAM_I_LCD
|