libnds
|
contains the basic defnitions for controlling the video hardware. More...
Macros | |
#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*)0x05000000) |
background palette memory | |
#define | BG_PALETTE_SUB ((u16*)0x05000400) |
background palette memory (sub engine) | |
#define | OAM ((u16*)0x07000000) |
pointer to Object Attribute Memory | |
#define | OAM_SUB ((u16*)0x07000400) |
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 | SCREEN_HEIGHT 192 |
Screen height in pixels. | |
#define | SCREEN_WIDTH 256 |
Screen width in pixels. | |
#define | SPRITE_GFX ((u16*)0x6400000) |
sprite graphics memory | |
#define | SPRITE_GFX_SUB ((u16*)0x6600000) |
sprite graphics memory (sub engine) | |
#define | SPRITE_PALETTE ((u16*)0x05000200) |
sprite palette memory | |
#define | SPRITE_PALETTE_SUB ((u16*)0x05000600) |
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. | |
Typedefs | |
typedef _palette | _ext_palette[16] |
An array of 16 256-color palettes. | |
typedef u16 | _palette[256] |
an array of 256 15-bit RGB values | |
Enumerations |
Functions | |
static void | setBackdropColor (const u16 color) |
sets the backdrop color of the main engine. More... | |
static void | setBackdropColorSub (const u16 color) |
sets the backdrop color of the sub engine. More... | |
void | setBrightness (int screen, int level) |
sets the screens brightness. More... | |
static bool | video3DEnabled () |
determine if 3D is enabled More... | |
static void | videoBgDisable (int number) |
disables the specified background on the main engine More... | |
static void | videoBgDisableSub (int number) |
disables the specified background on the sub engine More... | |
static void | videoBgEnable (int number) |
enables the specified background on the main engine More... | |
static void | videoBgEnableSub (int number) |
enables the specified background on the sub engine More... | |
static int | videoGetMode () |
return the main 2D engine video mode More... | |
static int | videoGetModeSub () |
return the main 2D engine video mode More... | |
static void | videoSetMode (u32 mode) |
the main 2D engine video mode More... | |
static void | videoSetModeSub (u32 mode) |
the sub 2D engine video mode More... | |
u32 | vramDefault () |
Set VRAM banks to basic default. More... | |
void | vramRestoreBanks_EFG (u32 vramTemp) |
Restore the E,F,G bank modes. More... | |
void | vramRestorePrimaryBanks (u32 vramTemp) |
Restore the main 4 bank modes. More... | |
static void | vramSetBankA (VRAM_A_TYPE a) |
Set bank A to the indicated mapping. More... | |
static void | vramSetBankB (VRAM_B_TYPE b) |
Set bank B to the indicated mapping. More... | |
static void | vramSetBankC (VRAM_C_TYPE c) |
Set bank C to the indicated mapping. More... | |
static void | vramSetBankD (VRAM_D_TYPE d) |
Set bank D to the indicated mapping. More... | |
static void | vramSetBankE (VRAM_E_TYPE e) |
Set bank E to the indicated mapping. More... | |
static void | vramSetBankF (VRAM_F_TYPE f) |
Set bank F to the indicated mapping. More... | |
static void | vramSetBankG (VRAM_G_TYPE g) |
Set bank G to the indicated mapping. More... | |
static void | vramSetBankH (VRAM_H_TYPE h) |
Set bank H to the indicated mapping. More... | |
static void | vramSetBankI (VRAM_I_TYPE i) |
Set bank I to the indicated mapping. More... | |
u32 | vramSetBanks_EFG (VRAM_E_TYPE e, VRAM_F_TYPE f, VRAM_G_TYPE g) |
Set E,F,G bank modes. More... | |
u32 | vramSetPrimaryBanks (VRAM_A_TYPE a, VRAM_B_TYPE b, VRAM_C_TYPE c, VRAM_D_TYPE d) |
Set the main 4 bank modes. More... | |
contains the basic defnitions for controlling the video hardware.
Video.h contains the basic defnitions for controlling the video hardware.
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)
vramSetBankA(VRAM_A_MAIN_BG);
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)
enum VideoMode |
The allowed video modes of the 2D processors
Main 2D engine ______________________________ |Mode | BG0 | BG1 | BG2 |BG3 | T = Text | 0 | T | T | T | T | R = Rotation | 1 | T | T | T | R | E = Extended Rotation | 2 | T | T | R | R | L = Large Bitmap background | 3 | T | T | T | E | | 4 | T | T | R | E | | 5 | T | T | E | E | | 6 | | L | | | -----------------------------
Sub 2D engine ______________________________ |Mode | BG0 | BG1 | BG2 |BG3 | | 0 | T | T | T | T | | 1 | T | T | T | R | | 2 | T | T | R | R | | 3 | T | T | T | E | | 4 | T | T | R | E | | 5 | T | T | E | E | -----------------------------
enum VRAM_A_TYPE |
Allowed VRAM bank A modes.
enum VRAM_B_TYPE |
Allowed VRAM bank B modes.
enum VRAM_C_TYPE |
Allowed VRAM bank C modes.
enum VRAM_D_TYPE |
Allowed VRAM bank D modes.
enum VRAM_E_TYPE |
Allowed VRAM bank E modes.
enum VRAM_F_TYPE |
Allowed VRAM bank F modes.
enum VRAM_G_TYPE |
Allowed VRAM bank G modes.
enum VRAM_H_TYPE |
enum VRAM_I_TYPE |
|
inlinestatic |
sets the backdrop color of the main engine.
the backdrop color is displayed when all pixels at a given location are transparent (no sprite or background is visible there).
color | the color that the backdrop of the main engine should display. |
<background palette memory
|
inlinestatic |
sets the backdrop color of the sub engine.
the backdrop color is displayed when all pixels at a given location are transparent (no sprite or background is visible there).
color | the color that the backdrop of the sub engine should display. |
<background palette memory (sub engine)
void setBrightness | ( | int | screen, |
int | level | ||
) |
sets the screens brightness.
screen | 1 = main screen, 2 = subscreen, 3 = both |
level | -16 = black, 0 = full brightness, 16 = white |
|
inlinestatic |
determine if 3D is enabled
|
inlinestatic |
disables the specified background on the main engine
number | the background number (0-3) |
|
inlinestatic |
disables the specified background on the sub engine
number | the background number (0-3) |
|
inlinestatic |
enables the specified background on the main engine
number | the background number (0-3) |
|
inlinestatic |
enables the specified background on the sub engine
number | the background number (0-3) |
|
inlinestatic |
return the main 2D engine video mode
|
inlinestatic |
return the main 2D engine video mode
|
inlinestatic |
the main 2D engine video mode
mode | the video mode to set |
|
inlinestatic |
the sub 2D engine video mode
mode | the video mode to set |
u32 vramDefault | ( | ) |
Set VRAM banks to basic default.
void vramRestoreBanks_EFG | ( | u32 | vramTemp | ) |
Restore the E,F,G bank modes.
vramTemp | restores the E,F,G bank modes to the value encoded in vramTemp (returned from vramSetBanks_EFG) |
void vramRestorePrimaryBanks | ( | u32 | vramTemp | ) |
Restore the main 4 bank modes.
vramTemp | restores the main 4 banks to the value encoded in vramTemp (returned from vramSetMainBanks) |
|
inlinestatic |
Set bank A to the indicated mapping.
a | the mapping of the bank |
|
inlinestatic |
Set bank B to the indicated mapping.
b | the mapping of the bank |
|
inlinestatic |
Set bank C to the indicated mapping.
c | the mapping of the bank |
|
inlinestatic |
Set bank D to the indicated mapping.
d | the mapping of the bank |
|
inlinestatic |
Set bank E to the indicated mapping.
e | the mapping of the bank |
|
inlinestatic |
Set bank F to the indicated mapping.
f | the mapping of the bank |
|
inlinestatic |
Set bank G to the indicated mapping.
g | the mapping of the bank |
|
inlinestatic |
Set bank H to the indicated mapping.
h | the mapping of the bank |
|
inlinestatic |
Set bank I to the indicated mapping.
i | the mapping of the bank |
u32 vramSetBanks_EFG | ( | VRAM_E_TYPE | e, |
VRAM_F_TYPE | f, | ||
VRAM_G_TYPE | g | ||
) |
Set E,F,G bank modes.
e | mapping mode of VRAM_E |
f | mapping mode of VRAM_F |
g | mapping mode of VRAM_G |
u32 vramSetPrimaryBanks | ( | VRAM_A_TYPE | a, |
VRAM_B_TYPE | b, | ||
VRAM_C_TYPE | c, | ||
VRAM_D_TYPE | d | ||
) |
Set the main 4 bank modes.
a | mapping mode of VRAM_A |
b | mapping mode of VRAM_B |
c | mapping mode of VRAM_C |
d | mapping mode of VRAM_D |