|
#define | ARGB16(a, r, g, b) (((a) << 15) | (r) | ((g) << 5) | ((b) << 10)) |
| Macro to convert 5 bit r, g, b components plus 1 bit alpha into a single 16 bit ARGB triplet.
|
|
#define | BG_GFX ((u16 *)0x6000000) |
| Background graphics memory.
|
|
#define | BG_GFX_SUB ((u16 *)0x6200000) |
| Background graphics memory (sub engine)
|
|
#define | BG_PALETTE ((u16 *)0x5000000) |
| Background palette memory.
|
|
#define | BG_PALETTE_SUB ((u16 *)0x5000400) |
| Background palette memory (sub engine)
|
|
#define | OAM ((u16 *)0x7000000) |
| Pointer to Object Attribute Memory.
|
|
#define | OAM_SUB ((u16 *)0x7000400) |
| Pointer to Object Attribute Memory (Sub engine)
|
|
#define | RGB15(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) |
| Macro to convert 5 bit r, g, b components into a single 15 bit RGB triplet.
|
|
#define | SPRITE_GFX ((u16 *)0x6400000) |
| Sprite graphics memory.
|
|
#define | SPRITE_GFX_SUB ((u16 *)0x6600000) |
| Sprite graphics memory (sub engine)
|
|
#define | SPRITE_PALETTE ((u16 *)0x5000200) |
| Sprite palette memory.
|
|
#define | SPRITE_PALETTE_SUB ((u16 *)0x5000600) |
| Sprite palette memory (sub engine)
|
|
#define | VRAM_A ((u16 *)0x6800000) |
| Pointer to VRAM bank A mapped as LCD.
|
|
#define | VRAM_B ((u16 *)0x6820000) |
| Pointer to VRAM bank B mapped as LCD.
|
|
#define | VRAM_C ((u16 *)0x6840000) |
| Pointer to VRAM bank C mapped as LCD.
|
|
#define | VRAM_D ((u16 *)0x6860000) |
| Pointer to VRAM bank D mapped as LCD.
|
|
#define | VRAM_E ((u16 *)0x6880000) |
| Pointer to VRAM bank E mapped as LCD.
|
|
#define | VRAM_E_EXT_PALETTE ((_ext_palette *)VRAM_E) |
| Used for accessing VRAM E as an extended palette.
|
|
#define | VRAM_F ((u16 *)0x6890000) |
| Pointer to VRAM bank F mapped as LCD.
|
|
#define | VRAM_F_EXT_PALETTE ((_ext_palette *)VRAM_F) |
| Used for accessing VRAM F as an extended palette.
|
|
#define | VRAM_F_EXT_SPR_PALETTE ((_palette *)VRAM_F) |
| Used for accessing VRAM F as an extended sprite palette.
|
|
#define | VRAM_G ((u16 *)0x6894000) |
| Pointer to VRAM bank G mapped as LCD.
|
|
#define | VRAM_G_EXT_PALETTE ((_ext_palette *)VRAM_G) |
| Used for accessing VRAM G as an extended palette.
|
|
#define | VRAM_G_EXT_SPR_PALETTE ((_palette *)VRAM_G) |
| Used for accessing VRAM G as an extended sprite palette.
|
|
#define | VRAM_H ((u16 *)0x6898000) |
| Pointer to VRAM bank H mapped as LCD.
|
|
#define | VRAM_H_EXT_PALETTE ((_ext_palette *)VRAM_H) |
| Used for accessing VRAM H as an extended palette.
|
|
#define | VRAM_I ((u16 *)0x68A0000) |
| Pointer to VRAM bank I mapped as LCD.
|
|
#define | VRAM_I_EXT_SPR_PALETTE ((_palette *)VRAM_I) |
| Used for accessing VRAM I as an extended sprite palette.
|
|
|
enum | VideoMode {
MODE_0_2D = 0x10000
,
MODE_1_2D = 0x10001
,
MODE_2_2D = 0x10002
,
MODE_3_2D = 0x10003
,
MODE_4_2D = 0x10004
,
MODE_5_2D = 0x10005
,
MODE_6_2D = 0x10006
,
MODE_0_3D = (0x10000 | (1 << 8) | (1 << 3) )
,
MODE_1_3D = (0x10001 | (1 << 8) | (1 << 3) )
,
MODE_2_3D = (0x10002 | (1 << 8) | (1 << 3) )
,
MODE_3_3D = (0x10003 | (1 << 8) | (1 << 3) )
,
MODE_4_3D = (0x10004 | (1 << 8) | (1 << 3) )
,
MODE_5_3D = (0x10005 | (1 << 8) | (1 << 3) )
,
MODE_6_3D = (0x10006 | (1 << 8) | (1 << 3) )
,
MODE_FIFO = (3 << 16)
,
MODE_FB0 = (0x00020000)
,
MODE_FB1 = (0x00060000)
,
MODE_FB2 = (0x000A0000)
,
MODE_FB3 = (0x000E0000)
} |
| The allowed video modes of the 2D processors. More...
|
|
enum | VRAM_A_TYPE {
VRAM_A_LCD = 0
,
VRAM_A_MAIN_BG = 1
,
VRAM_A_MAIN_BG_0x06000000 = 1 | (( 0 ) << 3)
,
VRAM_A_MAIN_BG_0x06020000 = 1 | (( 1 ) << 3)
,
VRAM_A_MAIN_BG_0x06040000 = 1 | (( 2 ) << 3)
,
VRAM_A_MAIN_BG_0x06060000 = 1 | (( 3 ) << 3)
,
VRAM_A_MAIN_SPRITE = 2
,
VRAM_A_MAIN_SPRITE_0x06400000 = 2 | (( 0 ) << 3)
,
VRAM_A_MAIN_SPRITE_0x06420000 = 2 | (( 1 ) << 3)
,
VRAM_A_TEXTURE = 3
,
VRAM_A_TEXTURE_SLOT0 = 3 | (( 0 ) << 3)
,
VRAM_A_TEXTURE_SLOT1 = 3 | (( 1 ) << 3)
,
VRAM_A_TEXTURE_SLOT2 = 3 | (( 2 ) << 3)
,
VRAM_A_TEXTURE_SLOT3 = 3 | (( 3 ) << 3)
} |
| Allowed VRAM bank A modes. More...
|
|
enum | VRAM_B_TYPE {
VRAM_B_LCD = 0
,
VRAM_B_MAIN_BG = 1 | (( 1 ) << 3)
,
VRAM_B_MAIN_BG_0x06000000 = 1 | (( 0 ) << 3)
,
VRAM_B_MAIN_BG_0x06020000 = 1 | (( 1 ) << 3)
,
VRAM_B_MAIN_BG_0x06040000 = 1 | (( 2 ) << 3)
,
VRAM_B_MAIN_BG_0x06060000 = 1 | (( 3 ) << 3)
,
VRAM_B_MAIN_SPRITE = 2
,
VRAM_B_MAIN_SPRITE_0x06400000 = 2 | (( 0 ) << 3)
,
VRAM_B_MAIN_SPRITE_0x06420000 = 2 | (( 1 ) << 3)
,
VRAM_B_TEXTURE = 3 | (( 1 ) << 3)
,
VRAM_B_TEXTURE_SLOT0 = 3 | (( 0 ) << 3)
,
VRAM_B_TEXTURE_SLOT1 = 3 | (( 1 ) << 3)
,
VRAM_B_TEXTURE_SLOT2 = 3 | (( 2 ) << 3)
,
VRAM_B_TEXTURE_SLOT3 = 3 | (( 3 ) << 3)
} |
| Allowed VRAM bank B modes. More...
|
|
enum | VRAM_C_TYPE {
VRAM_C_LCD = 0
,
VRAM_C_MAIN_BG = 1 | (( 2 ) << 3)
,
VRAM_C_MAIN_BG_0x06000000 = 1 | (( 0 ) << 3)
,
VRAM_C_MAIN_BG_0x06020000 = 1 | (( 1 ) << 3)
,
VRAM_C_MAIN_BG_0x06040000 = 1 | (( 2 ) << 3)
,
VRAM_C_MAIN_BG_0x06060000 = 1 | (( 3 ) << 3)
,
VRAM_C_ARM7 = 2
,
VRAM_C_ARM7_0x06000000 = 2 | (( 0 ) << 3)
,
VRAM_C_ARM7_0x06020000 = 2 | (( 1 ) << 3)
,
VRAM_C_SUB_BG = 4
,
VRAM_C_SUB_BG_0x06200000 = 4 | (( 0 ) << 3)
,
VRAM_C_TEXTURE = 3 | (( 2 ) << 3)
,
VRAM_C_TEXTURE_SLOT0 = 3 | (( 0 ) << 3)
,
VRAM_C_TEXTURE_SLOT1 = 3 | (( 1 ) << 3)
,
VRAM_C_TEXTURE_SLOT2 = 3 | (( 2 ) << 3)
,
VRAM_C_TEXTURE_SLOT3 = 3 | (( 3 ) << 3)
} |
| Allowed VRAM bank C modes. More...
|
|
enum | VRAM_D_TYPE {
VRAM_D_LCD = 0
,
VRAM_D_MAIN_BG = 1 | (( 3 ) << 3)
,
VRAM_D_MAIN_BG_0x06000000 = 1 | (( 0 ) << 3)
,
VRAM_D_MAIN_BG_0x06020000 = 1 | (( 1 ) << 3)
,
VRAM_D_MAIN_BG_0x06040000 = 1 | (( 2 ) << 3)
,
VRAM_D_MAIN_BG_0x06060000 = 1 | (( 3 ) << 3)
,
VRAM_D_ARM7 = 2 | (( 1 ) << 3)
,
VRAM_D_ARM7_0x06000000 = 2 | (( 0 ) << 3)
,
VRAM_D_ARM7_0x06020000 = 2 | (( 1 ) << 3)
,
VRAM_D_SUB_SPRITE = 4
,
VRAM_D_SUB_SPRITE_0x06600000 = 4
,
VRAM_D_TEXTURE = 3 | (( 3 ) << 3)
,
VRAM_D_TEXTURE_SLOT0 = 3 | (( 0 ) << 3)
,
VRAM_D_TEXTURE_SLOT1 = 3 | (( 1 ) << 3)
,
VRAM_D_TEXTURE_SLOT2 = 3 | (( 2 ) << 3)
,
VRAM_D_TEXTURE_SLOT3 = 3 | (( 3 ) << 3)
} |
| Allowed VRAM bank D modes. More...
|
|
enum | VRAM_E_TYPE {
VRAM_E_LCD = 0
,
VRAM_E_MAIN_BG = 1
,
VRAM_E_MAIN_BG_0x06000000 = 1
,
VRAM_E_MAIN_SPRITE = 2
,
VRAM_E_MAIN_SPRITE_0x06400000 = 2
,
VRAM_E_TEX_PALETTE = 3
,
VRAM_E_BG_EXT_PALETTE = 4
} |
| Allowed VRAM bank E modes. More...
|
|
enum | VRAM_F_TYPE {
VRAM_F_LCD = 0
,
VRAM_F_MAIN_BG = 1
,
VRAM_F_MAIN_BG_0x06000000 = 1 | (( 0 ) << 3)
,
VRAM_F_MAIN_BG_0x06004000 = 1 | (( 1 ) << 3)
,
VRAM_F_MAIN_BG_0x06010000 = 1 | (( 2 ) << 3)
,
VRAM_F_MAIN_BG_0x06014000 = 1 | (( 3 ) << 3)
,
VRAM_F_MAIN_SPRITE = 2
,
VRAM_F_MAIN_SPRITE_0x06400000 = 2 | (( 0 ) << 3)
,
VRAM_F_MAIN_SPRITE_0x06404000 = 2 | (( 1 ) << 3)
,
VRAM_F_MAIN_SPRITE_0x06410000 = 2 | (( 2 ) << 3)
,
VRAM_F_MAIN_SPRITE_0x06414000 = 2 | (( 3 ) << 3)
,
VRAM_F_TEX_PALETTE = 3
,
VRAM_F_TEX_PALETTE_SLOT0 = 3 | (( 0 ) << 3)
,
VRAM_F_TEX_PALETTE_SLOT1 = 3 | (( 1 ) << 3)
,
VRAM_F_TEX_PALETTE_SLOT4 = 3 | (( 2 ) << 3)
,
VRAM_F_TEX_PALETTE_SLOT5 = 3 | (( 3 ) << 3)
,
VRAM_F_BG_EXT_PALETTE = 4
,
VRAM_F_BG_EXT_PALETTE_SLOT01 = 4 | (( 0 ) << 3)
,
VRAM_F_BG_EXT_PALETTE_SLOT23 = 4 | (( 1 ) << 3)
,
VRAM_F_SPRITE_EXT_PALETTE = 5
} |
| Allowed VRAM bank F modes. More...
|
|
enum | VRAM_G_TYPE {
VRAM_G_LCD = 0
,
VRAM_G_MAIN_BG = 1
,
VRAM_G_MAIN_BG_0x06000000 = 1 | (( 0 ) << 3)
,
VRAM_G_MAIN_BG_0x06004000 = 1 | (( 1 ) << 3)
,
VRAM_G_MAIN_BG_0x06010000 = 1 | (( 2 ) << 3)
,
VRAM_G_MAIN_BG_0x06014000 = 1 | (( 3 ) << 3)
,
VRAM_G_MAIN_SPRITE = 2
,
VRAM_G_MAIN_SPRITE_0x06400000 = 2 | (( 0 ) << 3)
,
VRAM_G_MAIN_SPRITE_0x06404000 = 2 | (( 1 ) << 3)
,
VRAM_G_MAIN_SPRITE_0x06410000 = 2 | (( 2 ) << 3)
,
VRAM_G_MAIN_SPRITE_0x06414000 = 2 | (( 3 ) << 3)
,
VRAM_G_TEX_PALETTE = 3
,
VRAM_G_TEX_PALETTE_SLOT0 = 3 | (( 0 ) << 3)
,
VRAM_G_TEX_PALETTE_SLOT1 = 3 | (( 1 ) << 3)
,
VRAM_G_TEX_PALETTE_SLOT4 = 3 | (( 2 ) << 3)
,
VRAM_G_TEX_PALETTE_SLOT5 = 3 | (( 3 ) << 3)
,
VRAM_G_BG_EXT_PALETTE = 4
,
VRAM_G_BG_EXT_PALETTE_SLOT01 = 4 | (( 0 ) << 3)
,
VRAM_G_BG_EXT_PALETTE_SLOT23 = 4 | (( 1 ) << 3)
,
VRAM_G_SPRITE_EXT_PALETTE = 5
} |
| Allowed VRAM bank G modes. More...
|
|
enum | VRAM_H_TYPE {
VRAM_H_LCD = 0
,
VRAM_H_SUB_BG = 1
,
VRAM_H_SUB_BG_0x06200000 = 1
,
VRAM_H_SUB_BG_EXT_PALETTE = 2
} |
| Allowed VRAM bank H modes. More...
|
|
enum | VRAM_I_TYPE {
VRAM_I_LCD = 0
,
VRAM_I_SUB_BG_0x06208000 = 1
,
VRAM_I_SUB_SPRITE = 2
,
VRAM_I_SUB_SPRITE_0x06600000 = 2
,
VRAM_I_SUB_SPRITE_EXT_PALETTE = 3
} |
| Allowed VRAM bank I modes. More...
|
|
Contains the basic defnitions for controlling the video hardware.
Intro
video.h contains the basic defnitions for controlling the video hardware.
Video Ram Banks
The Nintendo DS has nine banks of video memory which may be put to a variety of uses. They can hold the graphics for your sprites, the textures for your 3D space ships, the tiles for your 2D platformer, or a direct map of pixels to render to the screen. Figuring out how to effectively utilize this flexible but limited amount of memory will be one the most challenging endeavors you will face early homebrew development.
The nine banks can be utilized as enumerated by the VRAM types. Banks are labeled A-I. In order to utilize 2D or 3D texture graphics, memory must be mapped for these purposes.
For instance: If you initialize a 2D background on the main engine you will be expected to define both an offset for its map data and an offset for its tile graphics (bitmapped backgrounds differ slightly). These offsets are referenced from the start of 2D background graphics memory. On the main display 2D background graphics begin at 0x6000000.
Without mapping a VRAM bank to this location data written to your background tile and map offsets will be lost.
VRAM banks can be mapped to specific addresses for specific purposes. In our case, any of the 4 main banks and several of the smaller ones can be mapped to the main 2D background engine. A, B, C and D banks are referred to collectivly as main because they are 128KB and flexible in usage.
@ VRAM_A_MAIN_BG
Main engine background slot 0.
Definition video.h:140
static void vramSetBankA(VRAM_A_TYPE a)
Set VRAM bank A to the indicated mapping.
Definition video.h:407
The above would map the 128KB of VRAM_A to 0x6000000 for use as main background graphics and maps. You can offset the mapping as well and the available offsets are defined in the VRAM_A_TYPE enumeration.
Video Ram Bank sizes
- VRAM A: 128kb
- VRAM B: 128kb
- VRAM C: 128kb
- VRAM D: 128kb
- VRAM E: 64kb
- VRAM F: 16kb
- VRAM G: 16kb
- VRAM H: 32kb
- VRAM I: 16kb