video.h

ビデオハードウェアを制御するための基礎的な定義が記述されています。 [詳細]

#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 ビデオハードウェアを制御するための基礎的な定義が記述されています。

VRAMバンク

任天堂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 |
-----------------------------
列挙型の値:
MODE_1_2D 

4枚の 2D バックグラウンド

MODE_2_2D 

4枚の 2D バックグラウンド

MODE_3_2D 

4枚の 2D バックグラウンド

MODE_4_2D 

4枚の 2D バックグラウンド

MODE_5_2D 

4枚の 2D バックグラウンド

MODE_6_2D 

4枚の 2D バックグラウンド

MODE_0_3D 

4枚の 2D バックグラウンド

MODE_1_3D 

3枚の 2D バックグラウンド 1枚の 3D バックグラウンド (メインエンジンのみ)

MODE_2_3D 

3枚の 2D バックグラウンド 1枚の 3D バックグラウンド (メインエンジンのみ)

MODE_3_3D 

3枚の 2D バックグラウンド 1枚の 3D バックグラウンド (メインエンジンのみ)

MODE_4_3D 

3枚の 2D バックグラウンド 1枚の 3D バックグラウンド (メインエンジンのみ)

MODE_5_3D 

3枚の 2D バックグラウンド 1枚の 3D バックグラウンド (メインエンジンのみ)

MODE_6_3D 

3枚の 2D バックグラウンド 1枚の 3D バックグラウンド (メインエンジンのみ)

MODE_FIFO 

3枚の 2D バックグラウンド 1枚の 3D バックグラウンド (メインエンジンのみ)

MODE_FB0 

メインメモリディスプレイ(メインメモリからビットマップをDMA転送)

MODE_FB1 

LCDモードでVRAM Aから直接表示.

MODE_FB2 

LCDモードでVRAM Bから直接表示.

MODE_FB3 

LCDモードでVRAM Cから直接表示.


関数

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 の割り当て
戻り値:
前回の値を返却します。
例:
Graphics/Sprites/fire_and_sprites/source/main.cpp, と input/Touch_Pad/touch_test/source/main.c.
 全て クラス ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義
libndsに対してMon Apr 26 23:39:50 2010に生成されました。  doxygen 1.6.3