diff options
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/libnds/include/nds/arm9/video.h')
-rw-r--r-- | c/src/lib/libbsp/arm/nds/libnds/include/nds/arm9/video.h | 591 |
1 files changed, 0 insertions, 591 deletions
diff --git a/c/src/lib/libbsp/arm/nds/libnds/include/nds/arm9/video.h b/c/src/lib/libbsp/arm/nds/libnds/include/nds/arm9/video.h deleted file mode 100644 index 9e910c621f..0000000000 --- a/c/src/lib/libbsp/arm/nds/libnds/include/nds/arm9/video.h +++ /dev/null @@ -1,591 +0,0 @@ -/*--------------------------------------------------------------------------------- - Video registers and defines - - Copyright (C) 2005 - Michael Noland (joat) - Jason Rogers (dovoto) - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. - ----------------------------------------------------------------------------------*/ - -#ifndef VIDEO_ARM9_INCLUDE -#define VIDEO_ARM9_INCLUDE - - -#ifndef ARM9 -#error Video is only available on the ARM9 -#endif - -#include <nds/jtypes.h> - -#ifdef __cplusplus -extern "C" { -#endif - -// macro creates a 15 bit color from 3x5 bit components -#define RGB15(r,g,b) ((r)|((g)<<5)|((b)<<10)) -#define RGB5(r,g,b) ((r)|((g)<<5)|((b)<<10)) -#define RGB8(r,g,b) (((r)>>3)|(((g)>>3)<<5)|(((b)>>3)<<10)) - - -#define SCREEN_HEIGHT 192 -#define SCREEN_WIDTH 256 -// Vram Control -#define VRAM_CR (*(vuint32*)0x04000240) -#define VRAM_A_CR (*(vuint8*)0x04000240) -#define VRAM_B_CR (*(vuint8*)0x04000241) -#define VRAM_C_CR (*(vuint8*)0x04000242) -#define VRAM_D_CR (*(vuint8*)0x04000243) -#define VRAM_E_CR (*(vuint8*)0x04000244) -#define VRAM_F_CR (*(vuint8*)0x04000245) -#define VRAM_G_CR (*(vuint8*)0x04000246) -#define WRAM_CR (*(vuint8*)0x04000247) -#define VRAM_H_CR (*(vuint8*)0x04000248) -#define VRAM_I_CR (*(vuint8*)0x04000249) - -#define VRAM_ENABLE (1<<7) - -#define VRAM_OFFSET(n) ((n)<<3) - - -typedef enum { - 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_TYPE; - -typedef enum { - 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_TYPE; - -typedef enum { - 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_SUB_BG_0x06220000 = 4 | VRAM_OFFSET(1), - VRAM_C_SUB_BG_0x06240000 = 4 | VRAM_OFFSET(2), - VRAM_C_SUB_BG_0x06260000 = 4 | VRAM_OFFSET(3), - 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_TYPE; - -typedef enum { - 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_TYPE; - -typedef enum { - 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_OBJ_EXT_PALETTE = 5, -} VRAM_E_TYPE; - -typedef enum { - VRAM_F_LCD = 0, - VRAM_F_MAIN_BG = 1, - VRAM_F_MAIN_SPRITE = 2, - VRAM_F_MAIN_SPRITE_0x06000000 = 2, - VRAM_F_MAIN_SPRITE_0x06004000 = 2 | VRAM_OFFSET(1), - VRAM_F_MAIN_SPRITE_0x06010000 = 2 | VRAM_OFFSET(2), - VRAM_F_MAIN_SPRITE_0x06014000 = 2 | VRAM_OFFSET(3), - VRAM_F_TEX_PALETTE = 3, - VRAM_F_BG_EXT_PALETTE = 4, - VRAM_F_OBJ_EXT_PALETTE = 5, -} VRAM_F_TYPE; - -typedef enum { - VRAM_G_LCD = 0, - VRAM_G_MAIN_BG = 1, - VRAM_G_MAIN_SPRITE = 2, - VRAM_G_MAIN_SPRITE_0x06000000 = 2, - VRAM_G_MAIN_SPRITE_0x06004000 = 2 | VRAM_OFFSET(1), - VRAM_G_MAIN_SPRITE_0x06010000 = 2 | VRAM_OFFSET(2), - VRAM_G_MAIN_SPRITE_0x06014000 = 2 | VRAM_OFFSET(3), - VRAM_G_TEX_PALETTE = 3, - VRAM_G_BG_EXT_PALETTE = 4, - VRAM_G_OBJ_EXT_PALETTE = 5, -} VRAM_G_TYPE; - -typedef enum { - VRAM_H_LCD = 0, - VRAM_H_SUB_BG = 1, - VRAM_H_SUB_BG_EXT_PALETTE = 2, -} VRAM_H_TYPE; - -typedef enum { - VRAM_I_LCD = 0, - VRAM_I_SUB_BG = 1, - VRAM_I_SUB_SPRITE = 2, - VRAM_I_SUB_SPRITE_EXT_PALETTE = 3, -}VRAM_I_TYPE; - - -typedef u16 _palette[256]; -typedef _palette _ext_palette[16]; - -#define VRAM_E_EXT_PALETTE ((_ext_palette *)VRAM_E) -#define VRAM_F_EXT_PALETTE ((_ext_palette *)VRAM_F) -#define VRAM_G_EXT_PALETTE ((_ext_palette *)VRAM_G) -#define VRAM_H_EXT_PALETTE ((_ext_palette *)VRAM_H) - - -uint32 vramSetMainBanks(VRAM_A_TYPE a, VRAM_B_TYPE b, VRAM_C_TYPE c, VRAM_D_TYPE d); -void vramRestoreMainBanks(uint32 vramTemp); - -void vramSetBankA(VRAM_A_TYPE a); -void vramSetBankB(VRAM_B_TYPE b); -void vramSetBankC(VRAM_C_TYPE c); -void vramSetBankD(VRAM_D_TYPE d); -void vramSetBankE(VRAM_E_TYPE e); -void vramSetBankF(VRAM_F_TYPE f); -void vramSetBankG(VRAM_G_TYPE g); -void vramSetBankH(VRAM_H_TYPE h); -void vramSetBankI(VRAM_I_TYPE i); - - -// Display control registers -#define DISPLAY_CR (*(vuint32*)0x04000000) -#define SUB_DISPLAY_CR (*(vuint32*)0x04001000) - -#define MODE_0_2D 0x10000 -#define MODE_1_2D 0x10001 -#define MODE_2_2D 0x10002 -#define MODE_3_2D 0x10003 -#define MODE_4_2D 0x10004 -#define MODE_5_2D 0x10005 - -// main display only -#define MODE_6_2D 0x10006 -#define MODE_FIFO (3<<16) - -#define ENABLE_3D (1<<3) - -#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) - - -// Main display only -#define MODE_0_3D (MODE_0_2D | DISPLAY_BG0_ACTIVE | ENABLE_3D) -#define MODE_1_3D (MODE_1_2D | DISPLAY_BG0_ACTIVE | ENABLE_3D) -#define MODE_2_3D (MODE_2_2D | DISPLAY_BG0_ACTIVE | ENABLE_3D) -#define MODE_3_3D (MODE_3_2D | DISPLAY_BG0_ACTIVE | ENABLE_3D) -#define MODE_4_3D (MODE_4_2D | DISPLAY_BG0_ACTIVE | ENABLE_3D) -#define MODE_5_3D (MODE_5_2D | DISPLAY_BG0_ACTIVE | ENABLE_3D) -#define MODE_6_3D (MODE_6_2D | DISPLAY_BG0_ACTIVE | ENABLE_3D) - -#define MODE_FB0 (0x00020000) -#define MODE_FB1 (0x00060000) -#define MODE_FB2 (0x000A0000) -#define MODE_FB3 (0x000E0000) - -#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_SPR_EXT_PALETTE (1 << 31) -#define DISPLAY_BG_EXT_PALETTE (1 << 30) - -#define DISPLAY_SCREEN_OFF (1 << 7) - -// The next two defines only apply to MAIN 2d engine -// In tile modes, this is multiplied by 64KB and added to BG_TILE_BASE -// In all bitmap modes, it is not used. -#define DISPLAY_CHAR_BASE(n) (((n)&7)<<24) - -// In tile modes, this is multiplied by 64KB and added to BG_MAP_BASE -// In bitmap modes, this is multiplied by 64KB and added to BG_BMP_BASE -// In large bitmap modes, this is not used -#define DISPLAY_SCREEN_BASE(n) (((n)&7)<<27) - -static inline -void videoSetMode( uint32 mode) { DISPLAY_CR = mode; } -static inline -void videoSetModeSub( uint32 mode) { SUB_DISPLAY_CR = mode; } - -#define BRIGHTNESS (*(vuint16*)0x0400006C) -#define SUB_BRIGHTNESS (*(vuint16*)0x0400106C) - -#define BGCTRL ((vuint16*)0x04000008) -#define BG0_CR (*(vuint16*)0x04000008) -#define BG1_CR (*(vuint16*)0x0400000A) -#define BG2_CR (*(vuint16*)0x0400000C) -#define BG3_CR (*(vuint16*)0x0400000E) - -#define BGCTRL_SUB ((vuint16*)0x04001008) -#define SUB_BG0_CR (*(vuint16*)0x04001008) -#define SUB_BG1_CR (*(vuint16*)0x0400100A) -#define SUB_BG2_CR (*(vuint16*)0x0400100C) -#define SUB_BG3_CR (*(vuint16*)0x0400100E) - -#define BG_256_COLOR (BIT(7)) -#define BG_16_COLOR (0) - -#define BG_MOSAIC_ON (BIT(6)) -#define BG_MOSAIC_OFF (0) - -#define BG_PRIORITY(n) (n) -#define BG_PRIORITY_0 (0) -#define BG_PRIORITY_1 (1) -#define BG_PRIORITY_2 (2) -#define BG_PRIORITY_3 (3) - -#define BG_TILE_BASE(base) ((base) << 2) -#define BG_MAP_BASE(base) ((base) << 8) -#define BG_BMP_BASE(base) ((base) << 8) - -#define BG_MAP_RAM(base) (((base)*0x800) + 0x06000000) -#define BG_MAP_RAM_SUB(base) (((base)*0x800) + 0x06200000) - -#define BG_TILE_RAM(base) (((base)*0x4000) + 0x06000000) -#define BG_TILE_RAM_SUB(base) (((base)*0x4000) + 0x06200000) - -#define BG_BMP_RAM(base) (((base)*0x4000) + 0x06000000) -#define BG_BMP_RAM_SUB(base) (((base)*0x4000) + 0x06200000) - -#define BG_WRAP_OFF (0) -#define BG_WRAP_ON (1 << 13) - -#define BG_32x32 (0 << 14) -#define BG_64x32 (1 << 14) -#define BG_32x64 (2 << 14) -#define BG_64x64 (3 << 14) - -#define BG_RS_16x16 (0 << 14) -#define BG_RS_32x32 (1 << 14) -#define BG_RS_64x64 (2 << 14) -#define BG_RS_128x128 (3 << 14) - -#define BG_BMP8_128x128 (BG_RS_16x16 | BG_256_COLOR) -#define BG_BMP8_256x256 (BG_RS_32x32 | BG_256_COLOR) -#define BG_BMP8_512x256 (BG_RS_64x64 | BG_256_COLOR) -#define BG_BMP8_512x512 (BG_RS_128x128 | BG_256_COLOR) -#define BG_BMP8_1024x512 BIT(14) -#define BG_BMP8_512x1024 0 - -#define BG_BMP16_128x128 (BG_RS_16x16 | BG_256_COLOR | BIT(2)) -#define BG_BMP16_256x256 (BG_RS_32x32 | BG_256_COLOR | BIT(2)) -#define BG_BMP16_512x256 (BG_RS_64x64 | BG_256_COLOR | BIT(2)) -#define BG_BMP16_512x512 (BG_RS_128x128 | BG_256_COLOR | BIT(2)) - -#define BG_PALETTE_SLOT0 0 -#define BG_PALETTE_SLOT1 0 -#define BG_PALETTE_SLOT2 BIT(13) -#define BG_PALETTE_SLOT3 BIT(13) - -typedef struct { - u16 x; - u16 y; -} bg_scroll; - -typedef struct { - u16 xdx; - u16 xdy; - u16 ydx; - u16 ydy; - u32 centerX; - u32 centerY; -} bg_rotation; - -typedef struct { - u16 control[4]; - bg_scroll scroll[4]; - bg_rotation bg2_rotation; - bg_rotation bg3_rotation; -} bg_attribute; - -#define BACKGROUND (*((bg_attribute *)0x04000008)) -#define BACKGROUND_SUB (*((bg_attribute *)0x04001008)) - -#define BG_OFFSET ((bg_scroll *)(0x04000010)) - -#define BG0_X0 (*(vuint16*)0x04000010) -#define BG0_Y0 (*(vuint16*)0x04000012) -#define BG1_X0 (*(vuint16*)0x04000014) -#define BG1_Y0 (*(vuint16*)0x04000016) -#define BG2_X0 (*(vuint16*)0x04000018) -#define BG2_Y0 (*(vuint16*)0x0400001A) -#define BG3_X0 (*(vuint16*)0x0400001C) -#define BG3_Y0 (*(vuint16*)0x0400001E) - -#define BG2_XDX (*(vuint16*)0x04000020) -#define BG2_XDY (*(vuint16*)0x04000022) -#define BG2_YDX (*(vuint16*)0x04000024) -#define BG2_YDY (*(vuint16*)0x04000026) -#define BG2_CX (*(vuint32*)0x04000028) -#define BG2_CY (*(vuint32*)0x0400002C) - -#define BG3_XDX (*(vuint16*)0x04000030) -#define BG3_XDY (*(vuint16*)0x04000032) -#define BG3_YDX (*(vuint16*)0x04000034) -#define BG3_YDY (*(vuint16*)0x04000036) -#define BG3_CX (*(vuint32*)0x04000038) -#define BG3_CY (*(vuint32*)0x0400003C) - -#define SUB_BG0_X0 (*(vuint16*)0x04001010) -#define SUB_BG0_Y0 (*(vuint16*)0x04001012) -#define SUB_BG1_X0 (*(vuint16*)0x04001014) -#define SUB_BG1_Y0 (*(vuint16*)0x04001016) -#define SUB_BG2_X0 (*(vuint16*)0x04001018) -#define SUB_BG2_Y0 (*(vuint16*)0x0400101A) -#define SUB_BG3_X0 (*(vuint16*)0x0400101C) -#define SUB_BG3_Y0 (*(vuint16*)0x0400101E) - -#define SUB_BG2_XDX (*(vuint16*)0x04001020) -#define SUB_BG2_XDY (*(vuint16*)0x04001022) -#define SUB_BG2_YDX (*(vuint16*)0x04001024) -#define SUB_BG2_YDY (*(vuint16*)0x04001026) -#define SUB_BG2_CX (*(vuint32*)0x04001028) -#define SUB_BG2_CY (*(vuint32*)0x0400102C) - -#define SUB_BG3_XDX (*(vuint16*)0x04001030) -#define SUB_BG3_XDY (*(vuint16*)0x04001032) -#define SUB_BG3_YDX (*(vuint16*)0x04001034) -#define SUB_BG3_YDY (*(vuint16*)0x04001036) -#define SUB_BG3_CX (*(vuint32*)0x04001038) -#define SUB_BG3_CY (*(vuint32*)0x0400103C) - -// Window 0 -#define WIN0_X0 (*(vuint8*)0x04000041) -#define WIN0_X1 (*(vuint8*)0x04000040) -#define WIN0_Y0 (*(vuint8*)0x04000045) -#define WIN0_Y1 (*(vuint8*)0x04000044) - -// Window 1 -#define WIN1_X0 (*(vuint8*)0x04000042) -#define WIN1_X1 (*(vuint8*)0x04000043) -#define WIN1_Y0 (*(vuint8*)0x04000047) -#define WIN1_Y1 (*(vuint8*)0x04000046) - -#define WIN_IN (*(vuint16*)0x04000048) -#define WIN_OUT (*(vuint16*)0x0400004A) - -// Window 0 -#define SUB_WIN0_X0 (*(vuint8*)0x04001041) -#define SUB_WIN0_X1 (*(vuint8*)0x04001040) -#define SUB_WIN0_Y0 (*(vuint8*)0x04001045) -#define SUB_WIN0_Y1 (*(vuint8*)0x04001044) - -// Window 1 -#define SUB_WIN1_X0 (*(vuint8*)0x04001042) -#define SUB_WIN1_X1 (*(vuint8*)0x04001043) -#define SUB_WIN1_Y0 (*(vuint8*)0x04001047) -#define SUB_WIN1_Y1 (*(vuint8*)0x04001046) - -#define SUB_WIN_IN (*(vuint16*)0x04001048) -#define SUB_WIN_OUT (*(vuint16*)0x0400104A) - -#define MOSAIC_CR (*(vuint16*)0x0400004C) -#define SUB_MOSAIC_CR (*(vuint16*)0x0400104C) - -#define BLEND_CR (*(vuint16*)0x04000050) -#define BLEND_AB (*(vuint16*)0x04000052) -#define BLEND_Y (*(vuint16*)0x04000054) - -#define SUB_BLEND_CR (*(vuint16*)0x04001050) -#define SUB_BLEND_AB (*(vuint16*)0x04001052) -#define SUB_BLEND_Y (*(vuint16*)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) - -// Display capture control - -#define REG_DISPCAPCNT (*(vuint32*)0x04000064) -#define REG_ DISP_MMEM_FIFO (*(vuint32*)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) - - -// 3D core control - -#define GFX_CONTROL (*(vuint16*) 0x04000060) - -#define GFX_FIFO (*(vuint32*) 0x04000400) -#define GFX_STATUS (*(vuint32*) 0x04000600) -#define GFX_COLOR (*(vuint32*) 0x04000480) - -#define GFX_VERTEX10 (*(vuint32*) 0x04000490) -#define GFX_VERTEX_XY (*(vuint32*) 0x04000494) -#define GFX_VERTEX_XZ (*(vuint32*) 0x04000498) -#define GFX_VERTEX_YZ (*(vuint32*) 0x0400049C) -#define GFX_VERTEX_DIFF (*(vuint32*) 0x040004A0) - -#define GFX_VERTEX16 (*(vuint32*) 0x0400048C) -#define GFX_TEX_COORD (*(vuint32*) 0x04000488) -#define GFX_TEX_FORMAT (*(vuint32*) 0x040004A8) -#define GFX_PAL_FORMAT (*(vuint32*) 0x040004AC) - -#define GFX_CLEAR_COLOR (*(vuint32*) 0x04000350) -#define GFX_CLEAR_DEPTH (*(vuint16*) 0x04000354) - -#define GFX_LIGHT_VECTOR (*(vuint32*) 0x040004C8) -#define GFX_LIGHT_COLOR (*(vuint32*) 0x040004CC) -#define GFX_NORMAL (*(vuint32*) 0x04000484) - -#define GFX_DIFFUSE_AMBIENT (*(vuint32*) 0x040004C0) -#define GFX_SPECULAR_EMISSION (*(vuint32*) 0x040004C4) -#define GFX_SHININESS (*(vuint32*) 0x040004D0) - -#define GFX_POLY_FORMAT (*(vuint32*) 0x040004A4) -#define GFX_ALPHA_TEST (*(vuint16*) 0x04000340) - -#define GFX_BEGIN (*(vuint32*) 0x04000500) -#define GFX_END (*(vuint32*) 0x04000504) -#define GFX_FLUSH (*(vuint32*) 0x04000540) -#define GFX_VIEWPORT (*(vuint32*) 0x04000580) -#define GFX_TOON_TABLE ((vuint16*) 0x04000380) -#define GFX_EDGE_TABLE ((vuint16*) 0x04000330) -#define GFX_FOG_COLOR (*(vuint32*) 0x04000358) -#define GFX_FOG_OFFSET (*(vuint32*) 0x0400035C) -#define GFX_FOG_TABLE ((vuint8*) 0x04000360) -#define GFX_BOX_TEST (*(vint32*) 0x040005C0) -#define GFX_POS_TEST (*(vuint32*) 0x040005C4) -#define GFX_POS_RESULT ((vint32*) 0x04000620) - -#define GFX_BUSY (GFX_STATUS & BIT(27)) - -#define GFX_VERTEX_RAM_USAGE (*(uint16*) 0x04000606) -#define GFX_POLYGON_RAM_USAGE (*(uint16*) 0x04000604) - -#define GFX_CUTOFF_DEPTH (*(uint16*)0x04000610) - -// Matrix processor control - -#define MATRIX_CONTROL (*(vuint32*)0x04000440) -#define MATRIX_PUSH (*(vuint32*)0x04000444) -#define MATRIX_POP (*(vuint32*)0x04000448) -#define MATRIX_SCALE (*(vint32*) 0x0400046C) -#define MATRIX_TRANSLATE (*(vint32*) 0x04000470) -#define MATRIX_RESTORE (*(vuint32*)0x04000450) -#define MATRIX_STORE (*(vuint32*)0x0400044C) -#define MATRIX_IDENTITY (*(vuint32*)0x04000454) -#define MATRIX_LOAD4x4 (*(vint32*) 0x04000458) -#define MATRIX_LOAD4x3 (*(vint32*) 0x0400045C) -#define MATRIX_MULT4x4 (*(vint32*) 0x04000460) -#define MATRIX_MULT4x3 (*(vint32*) 0x04000464) -#define MATRIX_MULT3x3 (*(vint32*) 0x04000468) - -//matrix operation results -#define MATRIX_READ_CLIP ((vint32*) (0x04000640)) -#define MATRIX_READ_VECTOR ((vint32*) (0x04000680)) -#define POINT_RESULT ((vint32*) (0x04000620)) -#define VECTOR_RESULT ((vuint16*)(0x04000630)) - -#ifdef __cplusplus -} -#endif - -#endif |