Prima di procere allo sviluppo di software sul nostro amato Nintendo DS, sarebbe cosa buona e giusta dare prima uno sguardo all'hardware su cui andremo a programmare.
Premetto che non è mia intenzione dare un'approfondita descrizione dell'hardware del DS, ma solo di quei componenti che maggiormente andremo ad usare durante la programmazione.
CPUs
ARM9 (66 MHZ)
Elabora il gameplay e la gestione del rendering video.
ARM7 (33 MHZ)
Elabora il suono, il Wi-Fi e i giochi di Game Boy Advance quando è in quella modalità.
Virtual Video Ram
Il termine "virtuale" deriva dal fatto che nel Nintendo DS è del tutto assente la presenza di memoria dedicata alla gestione del 2D.
Per rimediare a questo, è possibile mappare i banchi della video ram come spazio dedicato al 2D.
Motori Grafici
Il Nintendo DS dispone di ben due motori grafici ognuno dei quali collegato ad un solo schermo alla volta.
Il Main Engine è in grado di gestire sia la grafica 2D che la grafica 3D.
Il Sub Engine può gestire solo la grafica 2D.
Entrambi possono gestire fino a 4 layers di background contemporaneamente.
Il framerate è di 60 fps.
Specifiche 2D
Premetto che non è mia intenzione dare un'approfondita descrizione dell'hardware del DS, ma solo di quei componenti che maggiormente andremo ad usare durante la programmazione.
CPUs
ARM9 (66 MHZ)
Elabora il gameplay e la gestione del rendering video.
ARM7 (33 MHZ)
Elabora il suono, il Wi-Fi e i giochi di Game Boy Advance quando è in quella modalità.
Memoria
Main (4 MB): generalmente si occupa di tenere in memoria gli eseguibili e la maggior parte dei dati dei nostri giochi.
Possono accedervi sia l'ARM9 che l' ARM7 in ogni momento.
Ogni conflitto di utilizzo dei bus è gestito dal processore con priorità maggiore (l'ARM7) che mette in attesa l'altro processore fino a quando non ha finito di completare le sue operazioni.
Nonostante ciò, solitamente l'ARM7 utilizza di default la memoria IWRAM che vedremo qui di seguito.
IWRAM (64 KB)
E' la memoria a cui può avere accesso solo l'ARM7 e contiene gli eseguibili e i dati di giochi elaborati da questo processore.
Video RAM (656 KB Totale)
Il Nintendo DS possiede 9 banchi di memoria video. Essi possono contenere le nostre sprites, le textures per i nostri modelli 3D e i tiles.
Di questi 9 banchi di memoria, quelli di nostro principale interesse sono i 4 più grandi, tutti della dimensione di 128 KB:
-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 e fino ad altre 16 palette per gli sprite per entrambi i motori grafici.
Main (4 MB): generalmente si occupa di tenere in memoria gli eseguibili e la maggior parte dei dati dei nostri giochi.
Possono accedervi sia l'ARM9 che l' ARM7 in ogni momento.
Ogni conflitto di utilizzo dei bus è gestito dal processore con priorità maggiore (l'ARM7) che mette in attesa l'altro processore fino a quando non ha finito di completare le sue operazioni.
Nonostante ciò, solitamente l'ARM7 utilizza di default la memoria IWRAM che vedremo qui di seguito.
IWRAM (64 KB)
E' la memoria a cui può avere accesso solo l'ARM7 e contiene gli eseguibili e i dati di giochi elaborati da questo processore.
Video RAM (656 KB Totale)
Il Nintendo DS possiede 9 banchi di memoria video. Essi possono contenere le nostre sprites, le textures per i nostri modelli 3D e i tiles.
Di questi 9 banchi di memoria, quelli di nostro principale interesse sono i 4 più grandi, tutti della dimensione di 128 KB:
- Bank A (128 KB)
- Bank B (128 KB)
- Bank C (128 KB)
- Bank D (128 KB)
- Bank E (64 KB)
- Bank F (16 KB)
- Bank G (16 KB)
- Bank H (32 KB)
- Bank I (16 KB)
-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 e fino ad altre 16 palette per gli sprite per entrambi i motori grafici.
Virtual Video Ram
Il termine "virtuale" deriva dal fatto che nel Nintendo DS è del tutto assente la presenza di memoria dedicata alla gestione del 2D.
Per rimediare a questo, è possibile mappare i banchi della video ram come spazio dedicato al 2D.
Motori Grafici
Il Nintendo DS dispone di ben due motori grafici ognuno dei quali collegato ad un solo schermo alla volta.
Il Main Engine è in grado di gestire sia la grafica 2D che la grafica 3D.
Il Sub Engine può gestire solo la grafica 2D.
Entrambi possono gestire fino a 4 layers di background contemporaneamente.
Il framerate è di 60 fps.
Specifiche 2D
- massimo di 128 sprites per motore grafico
- massimo di 4 layers di background contemporanei
- Massimo di 2048 triangoli o 6144 vertici per frame
- 512 KB di memoria per le texture
- Grandezza massima delle texture 1024x1024 pixels
0 comments:
Post a Comment