ビデオハードウェアを制御するための基礎的な定義が記述されています。 [詳細]
#include <nds/ndstypes.h>
#include <nds/arm9/sassert.h>
マクロ定義 | |
#define | BG_PALETTE ((u16*)0x05000000) |
バックグラウンド パレットメモリ | |
#define | BG_PALETTE_SUB ((u16*)0x05000400) |
バックグラウンド パレットメモリ (サブエンジン) | |
#define | SPRITE_PALETTE ((u16*)0x05000200) |
スプライトパレットメモリ | |
#define | SPRITE_PALETTE_SUB ((u16*)0x05000600) |
スプライトパレットメモリ (サブエンジン) | |
#define | BG_GFX ((u16*)0x6000000) |
バックグラウンド グラフィックメモリ | |
#define | BG_GFX_SUB ((u16*)0x6200000) |
バックグラウンド グラフィックメモリ (サブエンジン) | |
#define | SPRITE_GFX ((u16*)0x6400000) |
スプライト グラフィックメモリ | |
#define | SPRITE_GFX_SUB ((u16*)0x6600000) |
スプライト グラフィックメモリ (サブエンジン) | |
#define | VRAM_0 ((u16*)0x6000000) |
#define | VRAM ((u16*)0x6800000) |
#define | VRAM_A ((u16*)0x6800000) |
LCD にマップされたvramバンク A のポインタ. | |
#define | VRAM_B ((u16*)0x6820000) |
LCD にマップされたvramバンク B のポインタ. | |
#define | VRAM_C ((u16*)0x6840000) |
LCD にマップされたvramバンク C のポインタ. | |
#define | VRAM_D ((u16*)0x6860000) |
LCD にマップされたvramバンク D のポインタ. | |
#define | VRAM_E ((u16*)0x6880000) |
LCD にマップされたvramバンク E のポインタ. | |
#define | VRAM_F ((u16*)0x6890000) |
LCD にマップされたvramバンク F のポインタ. | |
#define | VRAM_G ((u16*)0x6894000) |
LCD にマップされたvramバンク G のポインタ. | |
#define | VRAM_H ((u16*)0x6898000) |
LCD にマップされたvramバンク H のポインタ. | |
#define | VRAM_I ((u16*)0x68A0000) |
LCD にマップされたvramバンク I のポインタ. | |
#define | OAM ((u16*)0x07000000) |
オブジェクトアトリビュートメモリのポインタ | |
#define | OAM_SUB ((u16*)0x07000400) |
オブジェクトアトリビュートメモリのポインタ (サブエンジン) | |
#define | RGB15(r, g, b) ((r)|((g)<<5)|((b)<<10)) |
R G B それぞれ5bit(0~31)の色情報から、15bitのRGBカラーを作成するマクロ. | |
#define | RGB5(r, g, b) ((r)|((g)<<5)|((b)<<10)) |
#define | RGB8(r, g, b) (((r)>>3)|(((g)>>3)<<5)|(((b)>>3)<<10)) |
#define | ARGB16(a, r, g, b) ( ((a) << 15) | (r)|((g)<<5)|((b)<<10)) |
R G B それぞれ5bit(0~31)の色情報と1bitのα値から、16bitのARGBカラーを作成するマクロ. | |
#define | SCREEN_HEIGHT 192 |
画面ピクセルの高さ | |
#define | SCREEN_WIDTH 256 |
画面ピクセルの幅 | |
#define | VRAM_CR (*(vu32*)0x04000240) |
VRAM コントロールレジスタ. | |
#define | VRAM_A_CR (*(vu8*)0x04000240) |
VRAM A コントロールレジスタ. | |
#define | VRAM_B_CR (*(vu8*)0x04000241) |
VRAM B コントロールレジスタ. | |
#define | VRAM_C_CR (*(vu8*)0x04000242) |
VRAM C コントロールレジスタ. | |
#define | VRAM_D_CR (*(vu8*)0x04000243) |
VRAM D コントロールレジスタ. | |
#define | VRAM_E_CR (*(vu8*)0x04000244) |
VRAM E コントロールレジスタ. | |
#define | VRAM_F_CR (*(vu8*)0x04000245) |
VRAM F コントロールレジスタ. | |
#define | VRAM_G_CR (*(vu8*)0x04000246) |
VRAM G コントロールレジスタ. | |
#define | WRAM_CR (*(vu8*)0x04000247) |
WRAM コントロールレジスタ. | |
#define | VRAM_H_CR (*(vu8*)0x04000248) |
VRAM H コントロールレジスタ. | |
#define | VRAM_I_CR (*(vu8*)0x04000249) |
VRAM I コントロールレジスタ. | |
#define | VRAM_ENABLE (1<<7) |
#define | VRAM_OFFSET(n) ((n)<<3) |
#define | VRAM_E_EXT_PALETTE ((_ext_palette *)VRAM_E) |
拡張パレットとしてVRAM E にアクセスするために使用 | |
#define | VRAM_F_EXT_PALETTE ((_ext_palette *)VRAM_F) |
拡張パレットとしてVRAM F にアクセスするために使用 | |
#define | VRAM_G_EXT_PALETTE ((_ext_palette *)VRAM_G) |
拡張パレットとしてVRAM G にアクセスするために使用 | |
#define | VRAM_H_EXT_PALETTE ((_ext_palette *)VRAM_H) |
拡張パレットとしてVRAM H にアクセスするために使用 | |
#define | VRAM_F_EXT_SPR_PALETTE ((_palette *)VRAM_F) |
拡張スプライトパレットとしてVRAM F にアクセスするために使用 | |
#define | VRAM_G_EXT_SPR_PALETTE ((_palette *)VRAM_G) |
拡張スプライトパレットとしてVRAM G にアクセスするために使用 | |
#define | VRAM_I_EXT_SPR_PALETTE ((_palette *)VRAM_I) |
拡張スプライトパレットとしてVRAM I にアクセスするために使用 | |
#define | REG_DISPCNT (*(vu32*)0x04000000) |
ディスプレイコントロールレジスタ | |
#define | REG_DISPCNT_SUB (*(vu32*)0x04001000) |
#define | ENABLE_3D (1<<3) |
#define | DISPLAY_ENABLE_SHIFT 8 |
#define | DISPLAY_BG0_ACTIVE (1 << 8) |
#define | DISPLAY_BG1_ACTIVE (1 << 9) |
#define | DISPLAY_BG2_ACTIVE (1 << 10) |
#define | DISPLAY_BG3_ACTIVE (1 << 11) |
#define | DISPLAY_SPR_ACTIVE (1 << 12) |
#define | DISPLAY_WIN0_ON (1 << 13) |
#define | DISPLAY_WIN1_ON (1 << 14) |
#define | DISPLAY_SPR_WIN_ON (1 << 15) |
#define | DISPLAY_SPR_HBLANK (1 << 23) |
#define | DISPLAY_SPR_1D_LAYOUT (1 << 4) |
#define | DISPLAY_SPR_1D (1 << 4) |
#define | DISPLAY_SPR_2D (0 << 4) |
#define | DISPLAY_SPR_1D_BMP (4 << 4) |
#define | DISPLAY_SPR_2D_BMP_128 (0 << 4) |
#define | DISPLAY_SPR_2D_BMP_256 (2 << 4) |
#define | DISPLAY_SPR_1D_SIZE_32 (0 << 20) |
#define | DISPLAY_SPR_1D_SIZE_64 (1 << 20) |
#define | DISPLAY_SPR_1D_SIZE_128 (2 << 20) |
#define | DISPLAY_SPR_1D_SIZE_256 (3 << 20) |
#define | DISPLAY_SPR_1D_BMP_SIZE_128 (0 << 22) |
#define | DISPLAY_SPR_1D_BMP_SIZE_256 (1 << 22) |
#define | DISPLAY_SPRITE_ATTR_MASK ((7 << 4) | (7 << 20) | (1 << 31)) |
#define | DISPLAY_SPR_EXT_PALETTE (1 << 31) |
#define | DISPLAY_BG_EXT_PALETTE (1 << 30) |
#define | DISPLAY_SCREEN_OFF (1 << 7) |
#define | DISPLAY_CHAR_BASE(n) (((n)&7)<<24) |
#define | DISPLAY_SCREEN_BASE(n) (((n)&7)<<27) |
#define | REG_MASTER_BRIGHT (*(vu16*)0x0400006C) |
#define | REG_MASTER_BRIGHT_SUB (*(vu16*)0x0400106C) |
#define | WIN0_X0 (*(vu8*)0x04000041) |
#define | WIN0_X1 (*(vu8*)0x04000040) |
#define | WIN0_Y0 (*(vu8*)0x04000045) |
#define | WIN0_Y1 (*(vu8*)0x04000044) |
#define | WIN1_X0 (*(vu8*)0x04000043) |
#define | WIN1_X1 (*(vu8*)0x04000042) |
#define | WIN1_Y0 (*(vu8*)0x04000047) |
#define | WIN1_Y1 (*(vu8*)0x04000046) |
#define | WIN_IN (*(vu16*)0x04000048) |
#define | WIN_OUT (*(vu16*)0x0400004A) |
#define | SUB_WIN0_X0 (*(vu8*)0x04001041) |
#define | SUB_WIN0_X1 (*(vu8*)0x04001040) |
#define | SUB_WIN0_Y0 (*(vu8*)0x04001045) |
#define | SUB_WIN0_Y1 (*(vu8*)0x04001044) |
#define | SUB_WIN1_X0 (*(vu8*)0x04001043) |
#define | SUB_WIN1_X1 (*(vu8*)0x04001042) |
#define | SUB_WIN1_Y0 (*(vu8*)0x04001047) |
#define | SUB_WIN1_Y1 (*(vu8*)0x04001046) |
#define | SUB_WIN_IN (*(vu16*)0x04001048) |
#define | SUB_WIN_OUT (*(vu16*)0x0400104A) |
#define | REG_MOSAIC (*(vu16*)0x0400004C) |
#define | REG_MOSAIC_SUB (*(vu16*)0x0400104C) |
#define | REG_BLDCNT (*(vu16*)0x04000050) |
#define | REG_BLDY (*(vu16*)0x04000054) |
#define | REG_BLDALPHA (*(vu16*)0x04000052) |
#define | REG_BLDCNT_SUB (*(vu16*)0x04001050) |
#define | REG_BLDALPHA_SUB (*(vu16*)0x04001052) |
#define | REG_BLDY_SUB (*(vu16*)0x04001054) |
#define | BLEND_NONE (0<<6) |
#define | BLEND_ALPHA (1<<6) |
#define | BLEND_FADE_WHITE (2<<6) |
#define | BLEND_FADE_BLACK (3<<6) |
#define | BLEND_SRC_BG0 (1<<0) |
#define | BLEND_SRC_BG1 (1<<1) |
#define | BLEND_SRC_BG2 (1<<2) |
#define | BLEND_SRC_BG3 (1<<3) |
#define | BLEND_SRC_SPRITE (1<<4) |
#define | BLEND_SRC_BACKDROP (1<<5) |
#define | BLEND_DST_BG0 (1<<8) |
#define | BLEND_DST_BG1 (1<<9) |
#define | BLEND_DST_BG2 (1<<10) |
#define | BLEND_DST_BG3 (1<<11) |
#define | BLEND_DST_SPRITE (1<<12) |
#define | BLEND_DST_BACKDROP (1<<13) |
#define | REG_DISPCAPCNT (*(vu32*)0x04000064) |
#define | REG_DISP_MMEM_FIFO (*(vu32*)0x04000068) |
#define | DCAP_ENABLE BIT(31) |
#define | DCAP_MODE(n) (((n) & 3) << 29) |
#define | DCAP_DST(n) (((n) & 3) << 26) |
#define | DCAP_SRC(n) (((n) & 3) << 24) |
#define | DCAP_SIZE(n) (((n) & 3) << 20) |
#define | DCAP_OFFSET(n) (((n) & 3) << 18) |
#define | DCAP_BANK(n) (((n) & 3) << 16) |
#define | DCAP_B(n) (((n) & 0x1F) << 8) |
#define | DCAP_A(n) (((n) & 0x1F) << 0) |
#define | GFX_CONTROL (*(vu16*) 0x04000060) |
#define | GFX_FIFO (*(vu32*) 0x04000400) |
#define | GFX_STATUS (*(vu32*) 0x04000600) |
#define | GFX_COLOR (*(vu32*) 0x04000480) |
#define | GFX_VERTEX10 (*(vu32*) 0x04000490) |
#define | GFX_VERTEX_XY (*(vu32*) 0x04000494) |
#define | GFX_VERTEX_XZ (*(vu32*) 0x04000498) |
#define | GFX_VERTEX_YZ (*(vu32*) 0x0400049C) |
#define | GFX_VERTEX_DIFF (*(vu32*) 0x040004A0) |
#define | GFX_VERTEX16 (*(vu32*) 0x0400048C) |
#define | GFX_TEX_COORD (*(vu32*) 0x04000488) |
#define | GFX_TEX_FORMAT (*(vu32*) 0x040004A8) |
#define | GFX_PAL_FORMAT (*(vu32*) 0x040004AC) |
#define | GFX_CLEAR_COLOR (*(vu32*) 0x04000350) |
#define | GFX_CLEAR_DEPTH (*(vu16*) 0x04000354) |
#define | GFX_LIGHT_VECTOR (*(vu32*) 0x040004C8) |
#define | GFX_LIGHT_COLOR (*(vu32*) 0x040004CC) |
#define | GFX_NORMAL (*(vu32*) 0x04000484) |
#define | GFX_DIFFUSE_AMBIENT (*(vu32*) 0x040004C0) |
#define | GFX_SPECULAR_EMISSION (*(vu32*) 0x040004C4) |
#define | GFX_SHININESS (*(vu32*) 0x040004D0) |
#define | GFX_POLY_FORMAT (*(vu32*) 0x040004A4) |
#define | GFX_ALPHA_TEST (*(vu16*) 0x04000340) |
#define | GFX_BEGIN (*(vu32*) 0x04000500) |
#define | GFX_END (*(vu32*) 0x04000504) |
#define | GFX_FLUSH (*(vu32*) 0x04000540) |
#define | GFX_VIEWPORT (*(vu32*) 0x04000580) |
#define | GFX_TOON_TABLE ((vu16*) 0x04000380) |
#define | GFX_EDGE_TABLE ((vu16*) 0x04000330) |
#define | GFX_FOG_COLOR (*(vu32*) 0x04000358) |
#define | GFX_FOG_OFFSET (*(vu32*) 0x0400035C) |
#define | GFX_FOG_TABLE ((vu8*) 0x04000360) |
#define | GFX_BOX_TEST (*(vs32*) 0x040005C0) |
#define | GFX_POS_TEST (*(vu32*) 0x040005C4) |
#define | GFX_POS_RESULT ((vs32*) 0x04000620) |
#define | GFX_VEC_TEST (*(vu32*) 0x040005C8) |
#define | GFX_VEC_RESULT ((vs16*) 0x04000630) |
#define | GFX_BUSY (GFX_STATUS & BIT(27)) |
#define | GFX_VERTEX_RAM_USAGE (*(u16*) 0x04000606) |
#define | GFX_POLYGON_RAM_USAGE (*(u16*) 0x04000604) |
#define | GFX_CUTOFF_DEPTH (*(u16*)0x04000610) |
#define | MATRIX_CONTROL (*(vu32*)0x04000440) |
#define | MATRIX_PUSH (*(vu32*)0x04000444) |
#define | MATRIX_POP (*(vu32*)0x04000448) |
#define | MATRIX_SCALE (*(vs32*) 0x0400046C) |
#define | MATRIX_TRANSLATE (*(vs32*) 0x04000470) |
#define | MATRIX_RESTORE (*(vu32*)0x04000450) |
#define | MATRIX_STORE (*(vu32*)0x0400044C) |
#define | MATRIX_IDENTITY (*(vu32*)0x04000454) |
#define | MATRIX_LOAD4x4 (*(vs32*) 0x04000458) |
#define | MATRIX_LOAD4x3 (*(vs32*) 0x0400045C) |
#define | MATRIX_MULT4x4 (*(vs32*) 0x04000460) |
#define | MATRIX_MULT4x3 (*(vs32*) 0x04000464) |
#define | MATRIX_MULT3x3 (*(vs32*) 0x04000468) |
#define | MATRIX_READ_CLIP ((vs32*) (0x04000640)) |
#define | MATRIX_READ_VECTOR ((vs32*) (0x04000680)) |
#define | POINT_RESULT ((vs32*) (0x04000620)) |
#define | VECTOR_RESULT ((vu16*)(0x04000630)) |
型定義 | |
typedef u16 | _palette [256] |
15ビットRGB 256パレットの配列 | |
typedef _palette | _ext_palette [16] |
256パレット 16個の配列 | |
列挙型 | |
enum | VRAM_A_TYPE { VRAM_A_LCD = 0, VRAM_A_MAIN_BG = 1, VRAM_A_MAIN_BG_0x06000000 = 1 | VRAM_OFFSET(0), VRAM_A_MAIN_BG_0x06020000 = 1 | VRAM_OFFSET(1), VRAM_A_MAIN_BG_0x06040000 = 1 | VRAM_OFFSET(2), VRAM_A_MAIN_BG_0x06060000 = 1 | VRAM_OFFSET(3), VRAM_A_MAIN_SPRITE = 2, VRAM_A_MAIN_SPRITE_0x06400000 = 2, VRAM_A_MAIN_SPRITE_0x06420000 = 2 | VRAM_OFFSET(1), VRAM_A_TEXTURE = 3, VRAM_A_TEXTURE_SLOT0 = 3 | VRAM_OFFSET(0), VRAM_A_TEXTURE_SLOT1 = 3 | VRAM_OFFSET(1), VRAM_A_TEXTURE_SLOT2 = 3 | VRAM_OFFSET(2), VRAM_A_TEXTURE_SLOT3 = 3 | VRAM_OFFSET(3) } |
使用可能な VRAMバンク A のモード | |
enum | VRAM_B_TYPE { VRAM_B_LCD = 0, VRAM_B_MAIN_BG = 1 | VRAM_OFFSET(1), VRAM_B_MAIN_BG_0x06000000 = 1 | VRAM_OFFSET(0), VRAM_B_MAIN_BG_0x06020000 = 1 | VRAM_OFFSET(1), VRAM_B_MAIN_BG_0x06040000 = 1 | VRAM_OFFSET(2), VRAM_B_MAIN_BG_0x06060000 = 1 | VRAM_OFFSET(3), VRAM_B_MAIN_SPRITE = 2 | VRAM_OFFSET(1), VRAM_B_MAIN_SPRITE_0x06400000 = 2, VRAM_B_MAIN_SPRITE_0x06420000 = 2 | VRAM_OFFSET(1), VRAM_B_TEXTURE = 3 | VRAM_OFFSET(1), VRAM_B_TEXTURE_SLOT0 = 3 | VRAM_OFFSET(0), VRAM_B_TEXTURE_SLOT1 = 3 | VRAM_OFFSET(1), VRAM_B_TEXTURE_SLOT2 = 3 | VRAM_OFFSET(2), VRAM_B_TEXTURE_SLOT3 = 3 | VRAM_OFFSET(3) } |
使用可能な VRAMバンク B のモード | |
enum | VRAM_C_TYPE { VRAM_C_LCD = 0, VRAM_C_MAIN_BG = 1 | VRAM_OFFSET(2), VRAM_C_MAIN_BG_0x06000000 = 1 | VRAM_OFFSET(0), VRAM_C_MAIN_BG_0x06020000 = 1 | VRAM_OFFSET(1), VRAM_C_MAIN_BG_0x06040000 = 1 | VRAM_OFFSET(2), VRAM_C_MAIN_BG_0x06060000 = 1 | VRAM_OFFSET(3), VRAM_C_ARM7 = 2, VRAM_C_ARM7_0x06000000 = 2, VRAM_C_ARM7_0x06020000 = 2 | VRAM_OFFSET(1), VRAM_C_SUB_BG = 4, VRAM_C_SUB_BG_0x06200000 = 4 | VRAM_OFFSET(0), VRAM_C_TEXTURE = 3 | VRAM_OFFSET(2), VRAM_C_TEXTURE_SLOT0 = 3 | VRAM_OFFSET(0), VRAM_C_TEXTURE_SLOT1 = 3 | VRAM_OFFSET(1), VRAM_C_TEXTURE_SLOT2 = 3 | VRAM_OFFSET(2), VRAM_C_TEXTURE_SLOT3 = 3 | VRAM_OFFSET(3) } |
使用可能な VRAMバンク C のモード | |
enum | VRAM_D_TYPE { VRAM_D_LCD = 0, VRAM_D_MAIN_BG = 1 | VRAM_OFFSET(3), VRAM_D_MAIN_BG_0x06000000 = 1 | VRAM_OFFSET(0), VRAM_D_MAIN_BG_0x06020000 = 1 | VRAM_OFFSET(1), VRAM_D_MAIN_BG_0x06040000 = 1 | VRAM_OFFSET(2), VRAM_D_MAIN_BG_0x06060000 = 1 | VRAM_OFFSET(3), VRAM_D_ARM7 = 2 | VRAM_OFFSET(1), VRAM_D_ARM7_0x06000000 = 2, VRAM_D_ARM7_0x06020000 = 2 | VRAM_OFFSET(1), VRAM_D_SUB_SPRITE = 4, VRAM_D_TEXTURE = 3 | VRAM_OFFSET(3), VRAM_D_TEXTURE_SLOT0 = 3 | VRAM_OFFSET(0), VRAM_D_TEXTURE_SLOT1 = 3 | VRAM_OFFSET(1), VRAM_D_TEXTURE_SLOT2 = 3 | VRAM_OFFSET(2), VRAM_D_TEXTURE_SLOT3 = 3 | VRAM_OFFSET(3) } |
使用可能な VRAMバンク D のモード | |
enum | VRAM_E_TYPE { VRAM_E_LCD = 0, VRAM_E_MAIN_BG = 1, VRAM_E_MAIN_SPRITE = 2, VRAM_E_TEX_PALETTE = 3, VRAM_E_BG_EXT_PALETTE = 4 } |
使用可能な VRAMバンク E のモード | |
enum | VRAM_F_TYPE { VRAM_F_LCD = 0, VRAM_F_MAIN_BG = 1, VRAM_F_MAIN_BG_0x06000000 = 1, VRAM_F_MAIN_BG_0x06004000 = 1 | VRAM_OFFSET(1), VRAM_F_MAIN_BG_0x06010000 = 1 | VRAM_OFFSET(2), VRAM_F_MAIN_BG_0x06014000 = 1 | VRAM_OFFSET(3), VRAM_F_MAIN_SPRITE = 2, VRAM_F_MAIN_SPRITE_0x06400000 = 2, VRAM_F_MAIN_SPRITE_0x06404000 = 2 | VRAM_OFFSET(1), VRAM_F_MAIN_SPRITE_0x06410000 = 2 | VRAM_OFFSET(2), VRAM_F_MAIN_SPRITE_0x06414000 = 2 | VRAM_OFFSET(3), VRAM_F_TEX_PALETTE = 3, VRAM_F_BG_EXT_PALETTE = 4, VRAM_F_BG_EXT_PALETTE_SLOT01 = 4 | VRAM_OFFSET(0), VRAM_F_BG_EXT_PALETTE_SLOT23 = 4 | VRAM_OFFSET(1), VRAM_F_SPRITE_EXT_PALETTE = 5 } |
使用可能な VRAMバンク F のモード | |
enum | VRAM_G_TYPE { VRAM_G_LCD = 0, VRAM_G_MAIN_BG = 1, VRAM_G_MAIN_BG_0x06000000 = 1, VRAM_G_MAIN_BG_0x06004000 = 1 | VRAM_OFFSET(1), VRAM_G_MAIN_BG_0x06010000 = 1 | VRAM_OFFSET(2), VRAM_G_MAIN_BG_0x06014000 = 1 | VRAM_OFFSET(3), VRAM_G_MAIN_SPRITE = 2, VRAM_G_MAIN_SPRITE_0x06400000 = 2, VRAM_G_MAIN_SPRITE_0x06404000 = 2 | VRAM_OFFSET(1), VRAM_G_MAIN_SPRITE_0x06410000 = 2 | VRAM_OFFSET(2), VRAM_G_MAIN_SPRITE_0x06414000 = 2 | VRAM_OFFSET(3), VRAM_G_TEX_PALETTE = 3, VRAM_G_BG_EXT_PALETTE = 4, VRAM_G_BG_EXT_PALETTE_SLOT01 = 4 | VRAM_OFFSET(0), VRAM_G_BG_EXT_PALETTE_SLOT23 = 4 | VRAM_OFFSET(1), VRAM_G_SPRITE_EXT_PALETTE = 5 } |
使用可能な VRAMバンク G のモード | |
enum | VRAM_H_TYPE { VRAM_H_LCD = 0, VRAM_H_SUB_BG = 1, VRAM_H_SUB_BG_EXT_PALETTE = 2 } |
使用可能な VRAMバンク H のモード | |
enum | VRAM_I_TYPE { VRAM_I_LCD = 0, VRAM_I_SUB_BG_0x06208000 = 1, VRAM_I_SUB_SPRITE = 2, VRAM_I_SUB_SPRITE_EXT_PALETTE = 3 } |
使用可能な VRAMバンク I のモード | |
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 | DISPLAY_BG0_ACTIVE | ENABLE_3D), MODE_1_3D = (0x10001 | DISPLAY_BG0_ACTIVE | ENABLE_3D), MODE_2_3D = (0x10002 | DISPLAY_BG0_ACTIVE | ENABLE_3D), MODE_3_3D = (0x10003 | DISPLAY_BG0_ACTIVE | ENABLE_3D), MODE_4_3D = (0x10004 | DISPLAY_BG0_ACTIVE | ENABLE_3D), MODE_5_3D = (0x10005 | DISPLAY_BG0_ACTIVE | ENABLE_3D), MODE_6_3D = (0x10006 | DISPLAY_BG0_ACTIVE | ENABLE_3D), MODE_FIFO = (3<<16), MODE_FB0 = (0x00020000), MODE_FB1 = (0x00060000), MODE_FB2 = (0x000A0000), MODE_FB3 = (0x000E0000) } |
2Dエンジンのビデオモード | |
関数 | |
u32 | vramSetMainBanks (VRAM_A_TYPE a, VRAM_B_TYPE b, VRAM_C_TYPE c, VRAM_D_TYPE d) |
メインの4つのVRAMバンクの割り当てを行う。 | |
void | vramRestoreMainBanks (u32 vramTemp) |
メインの4つのVRAMバンクの割り当てを行う。 | |
void | setBrightness (int screen, int level) |
ブライトネス設定 | |
変数 | |
u16 | mosaicShadow |
u16 | mosaicShadowSub |
ビデオハードウェアを制御するための基礎的な定義が記述されています。
Video.h ビデオハードウェアを制御するための基礎的な定義が記述されています。
任天堂DSはビデオメモリのバンクを9つ持っており、さまざまな用途に使用します。 ビデオメモリは、あなたのスプライトグラフィックや宇宙船の3Dテクスチャ、 タイルで書かれた2Dステージ、スクリーンのピクセルに直接描画された画像などを保持します。 このフレキシブルで、限られていたメモリのもっとも効率的な利用方法を見つけることは やりがいがあることで、homebrew開発の早い段階で直面するでしょう。
VRAMタイプで列挙されている、9つのバンクが使用することができます。バンクにはA-Iのラベルがついています。 2Dや3Dのテクスチャグラフィックを使用するなら、この目的の為にメモリ割り当てなければなりません。
たとえば:もしあなたがメインエンジンで2Dバックグラウンドを初期化すると、タイルグラフィックデータとマップデータ のオフセットの両方が定義されるように期待するでしょう。(ビットマップバックグラウンドは若干異なります)。 これらのオフセットは2Dバックグラウンドグラフィックメモリの先頭から参照つけられます。 メインディスプレイの2Dバックグラウンドグラフィックメモリの先頭は0x6000000から始まります。
VRAMバンクの割り当てを行わずにVRAMに書き込みを行えば、バックグラウンドタイルやマップオフセットは失われるでしょう。
特定の目的でVRAMバンクを特定のアドレスに割り付けることが出来ます。 私たちの場合では、4つの主要メモリバンクのいずれかといくつかの小さいバンクをメイン2Dバックグラウンドエンジンに割り付けられます。 (A,B,C,Dバンクはそれぞれ128KBあり多種な使用方法があるので、メインバンクと呼んでいます)
vramSetBankA(VRAM_A_MAIN_BG);
これは、VRAM_Aの128KBを0x6000000に割り当てて、メインバックグラウンドのグラフィックとマップに使用可能にします。 (割り当てを解除することも出来ます。割り当て可能なオフセットはVRAM_A_TYPE 列挙体で定義されています。)
#define REG_DISPCNT (*(vu32*)0x04000000) |
ディスプレイコントロールレジスタ
Bit Engine Expl. 0-2 A+B BGモード 3 A BG0 2D/3D 選択 (instead CGB Mode) (0=2D, 1=3D) 4 A+B タイル OBJ マッピング (0=2D; max 32KB, 1=1D; max 32KB..256KB) 5 A+B Bitmap OBJ 2D-Dimension (0=128x512 dots, 1=256x256 dots) 6 A+B Bitmap OBJ Mapping (0=2D; max 128KB, 1=1D; max 128KB..256KB) 7-15 A+B Same as GBA 16-17 A+B Display Mode (Engine A: 0..3, Engine B: 0..1, GBA: Green Swap) 18-19 A VRAM block (0..3=VRAM A..D) (For Capture & above Display Mode=2) 20-21 A+B Tile OBJ 1D-Boundary (see Bit4) 22 A Bitmap OBJ 1D-Boundary (see Bit5-6) 23 A+B OBJ Processing during H-Blank (was located in Bit5 on GBA) 24-26 A Character Base (in 64K steps) (merged with 16K step in BGxCNT) 27-29 A Screen Base (in 64K steps) (merged with 2K step in BGxCNT) 30 A+B BG Extended Palettes (0=Disable, 1=Enable) 31 A+B OBJ Extended Palettes (0=Disable, 1=Enable)
#define VRAM ((u16*)0x6800000) |
LCD にマップされたvramバンク先頭
#define VRAM_0 ((u16*)0x6000000) |
LCD にマップされたvramバンク先頭
enum VideoMode |
2Dエンジンのビデオモード
メイン 2D エンジン ______________________________ |Mode | BG0 | BG1 | BG2 |BG3 | T = テキスト | 0 | T | T | T | T | R = 回転 | 1 | T | T | T | R | E = 拡張回転 | 2 | T | T | R | R | L = 大型ビットマップバックグラウンド | 3 | T | T | T | E | | 4 | T | T | R | E | | 5 | T | T | E | E | | 6 | | L | | | -----------------------------
サブ 2D エンジン ______________________________ |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 | -----------------------------
void setBrightness | ( | int | screen, | |
int | level | |||
) |
ブライトネス設定
screen | 1 = メインスクリーン, 2 = サブスクリーン, 3 = 両方 | |
level | -16 = 黒, 0 = 通常, 16 = 白 |
void vramRestoreMainBanks | ( | u32 | vramTemp | ) |
メインの4つのVRAMバンクの割り当てを行う。
vramTemp | vramSetMainBanksの戻り値を指定し、メインの4つのバンクを元に戻します。 |
u32 vramSetMainBanks | ( | VRAM_A_TYPE | a, | |
VRAM_B_TYPE | b, | |||
VRAM_C_TYPE | c, | |||
VRAM_D_TYPE | d | |||
) |
メインの4つのVRAMバンクの割り当てを行う。
a | VRAMバンク A の割り当て | |
b | VRAMバンク B の割り当て | |
c | VRAMバンク C の割り当て | |
d | VRAMバンク D の割り当て |