nds_test2

annotate src/dsregs.h @ 2:dd8c9847bae9

cube
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 29 Jan 2018 14:40:45 +0200
parents abcaf667f2bd
children
rev   line source
nuclear@0 1 #ifndef DSREGS_H_
nuclear@0 2 #define DSREGS_H_
nuclear@0 3
nuclear@0 4 #include <stdint.h>
nuclear@0 5
nuclear@0 6 #define REG_BASE 0x4000000
nuclear@0 7 #define REG8(x) (*(volatile int8_t*)(REG_BASE + (x)))
nuclear@0 8 #define REG16(x) (*(volatile int16_t*)(REG_BASE + (x)))
nuclear@0 9 #define REG32(x) (*(volatile int32_t*)(REG_BASE + (x)))
nuclear@0 10 #define REG64(x) (*(volatile int64_t*)(REG_BASE + (x)))
nuclear@0 11
nuclear@0 12 /* ---- display engine A ---- */
nuclear@0 13 #define REG_DISPCNT REG32(0x00)
nuclear@0 14 #define REG_DISPSTAT REG16(0x04)
nuclear@0 15 #define REG_VCOUNT REG16(0x06)
nuclear@0 16 #define REG_BG0CNT REG16(0x08)
nuclear@0 17 #define REG_BG1CNT REG16(0x0a)
nuclear@0 18 #define REG_BG2CNT REG16(0x0c)
nuclear@0 19 #define REG_BG3CNT REG16(0x0e)
nuclear@0 20 /* scrolling registers */
nuclear@0 21 #define REG_BG0HOFS REG16(0x10)
nuclear@0 22 #define REG_BG0VOFS REG16(0x12)
nuclear@0 23 #define REG_BG1HOFS REG16(0x14)
nuclear@0 24 #define REG_BG1VOFS REG16(0x16)
nuclear@0 25 #define REG_BG2HOFS REG16(0x18)
nuclear@0 26 #define REG_BG2VOFS REG16(0x1a)
nuclear@0 27 #define REG_BG3HOFS REG16(0x1c)
nuclear@0 28 #define REG_BG3VOFS REG16(0x1e)
nuclear@0 29 /* BG rotation and scaling registers */
nuclear@0 30 #define REG_BG2PA REG16(0x20)
nuclear@0 31 #define REG_BG2PB REG16(0x22)
nuclear@0 32 #define REG_BG2PC REG16(0x24)
nuclear@0 33 #define REG_BG2PD REG16(0x26)
nuclear@0 34 #define REG_BG2X REG32(0x28)
nuclear@0 35 #define REG_BG2Y REG32(0x2c)
nuclear@0 36 #define REG_BG3PA REG16(0x30)
nuclear@0 37 #define REG_BG3PB REG16(0x32)
nuclear@0 38 #define REG_BG3PC REG16(0x34)
nuclear@0 39 #define REG_BG3PD REG16(0x36)
nuclear@0 40 #define REG_BG3X REG32(0x38)
nuclear@0 41 #define REG_BG3Y REG32(0x3c)
nuclear@0 42 /* window registers */
nuclear@0 43 #define REG_WIN0H REG16(0x40)
nuclear@0 44 #define REG_WIN1H REG16(0x42)
nuclear@0 45 #define REG_WIN0V REG16(0x44)
nuclear@0 46 #define REG_WIN1V REG16(0x46)
nuclear@0 47 #define REG_WININ REG16(0x48)
nuclear@0 48 #define REG_WINOUT REG16(0x4a)
nuclear@0 49 /* mosaic */
nuclear@0 50 #define REG_MOSAIC REG16(0x4c)
nuclear@0 51 /* color effects */
nuclear@0 52 #define REG_BLDCNT REG16(0x50)
nuclear@0 53 #define REG_BLDALPHA REG16(0x52)
nuclear@0 54 #define REG_BLDY REG16(0x54)
nuclear@0 55
nuclear@0 56 #define REG_DISP3DCNT REG16(0x60)
nuclear@0 57 #define REG_DISPCAPCNT REG32(0x64)
nuclear@0 58 #define REG_DISP_MMEM_FIFO REG32(0x68)
nuclear@0 59 #define REG_MASTER_BRIGHT REG16(0x6c)
nuclear@0 60
nuclear@0 61 /* ---- display engine B ---- */
nuclear@0 62 #define REG_B_DISPCNT REG32(0x1000)
nuclear@0 63 #define REG_B_BG0CNT REG16(0x1008)
nuclear@0 64 #define REG_B_BG1CNT REG16(0x100a)
nuclear@0 65 #define REG_B_BG2CNT REG16(0x100c)
nuclear@0 66 #define REG_B_BG3CNT REG16(0x100e)
nuclear@0 67 /* scrolling registers */
nuclear@0 68 #define REG_B_BG0HOFS REG16(0x1010)
nuclear@0 69 #define REG_B_BG0VOFS REG16(0x1012)
nuclear@0 70 #define REG_B_BG1HOFS REG16(0x1014)
nuclear@0 71 #define REG_B_BG1VOFS REG16(0x1016)
nuclear@0 72 #define REG_B_BG2HOFS REG16(0x1018)
nuclear@0 73 #define REG_B_BG2VOFS REG16(0x101a)
nuclear@0 74 #define REG_B_BG3HOFS REG16(0x101c)
nuclear@0 75 #define REG_B_BG3VOFS REG16(0x101e)
nuclear@0 76 /* BG rotation and scaling registers */
nuclear@0 77 #define REG_B_BG2PA REG16(0x1020)
nuclear@0 78 #define REG_B_BG2PB REG16(0x1022)
nuclear@0 79 #define REG_B_BG2PC REG16(0x1024)
nuclear@0 80 #define REG_B_BG2PD REG16(0x1026)
nuclear@0 81 #define REG_B_BG2X REG32(0x1028)
nuclear@0 82 #define REG_B_BG2Y REG32(0x102c)
nuclear@0 83 #define REG_B_BG3PA REG16(0x1030)
nuclear@0 84 #define REG_B_BG3PB REG16(0x1032)
nuclear@0 85 #define REG_B_BG3PC REG16(0x1034)
nuclear@0 86 #define REG_B_BG3PD REG16(0x1036)
nuclear@0 87 #define REG_B_BG3X REG32(0x1038)
nuclear@0 88 #define REG_B_BG3Y REG32(0x103c)
nuclear@0 89 /* window registers */
nuclear@0 90 #define REG_B_WIN0H REG16(0x1040)
nuclear@0 91 #define REG_B_WIN1H REG16(0x1042)
nuclear@0 92 #define REG_B_WIN0V REG16(0x1044)
nuclear@0 93 #define REG_B_WIN1V REG16(0x1046)
nuclear@0 94 #define REG_B_WININ REG16(0x1048)
nuclear@0 95 #define REG_B_WINOUT REG16(0x104a)
nuclear@0 96 /* mosaic */
nuclear@0 97 #define REG_B_MOSAIC REG16(0x104c)
nuclear@0 98 /* color effects */
nuclear@0 99 #define REG_B_BLDCNT REG16(0x1050)
nuclear@0 100 #define REG_B_BLDALPHA REG16(0x1052)
nuclear@0 101 #define REG_B_BLDY REG16(0x1054)
nuclear@0 102
nuclear@0 103 #define REG_B_MASTER_BRIGHT REG16(0x106c)
nuclear@0 104
nuclear@0 105
nuclear@0 106 #define DISPCNT_BGMODE(x) (x)
nuclear@0 107 #define DISPCNT_MODE(x) ((uint32_t)(x) << 16)
nuclear@0 108 #define DISPCNT_BG0_3D 0x00000008
nuclear@0 109 #define DISPCNT_TILE_OBJ_1DMAP 0x00000010
nuclear@0 110 #define DISPCNT_BM_OBJ_256X256 0x00000020
nuclear@0 111 #define DISPCNT_BM_OBJ_1DMAP 0x00000040
nuclear@0 112 #define DISPCNT_BLANK 0x00000080
nuclear@0 113 #define DISPCNT_BG0 0x00000100
nuclear@0 114 #define DISPCNT_BG1 0x00000200
nuclear@0 115 #define DISPCNT_BG2 0x00000400
nuclear@0 116 #define DISPCNT_BG3 0x00000800
nuclear@0 117 #define DISPCNT_OBJ 0x00001000
nuclear@0 118 #define DISPCNT_WIN0 0x00002000
nuclear@0 119 #define DISPCNT_WIN1 0x00004000
nuclear@0 120 #define DISPCNT_OBJWIN 0x00008000
nuclear@0 121
nuclear@0 122 #define BGXCNT_PRIO(x) (x)
nuclear@0 123 #define BGXCNT_CHARBASE(x) ((x) << 2)
nuclear@0 124 #define BGXCNT_MOSAIC 0x0040
nuclear@0 125 #define BGXCNT_COL_256 0x0080
nuclear@0 126 #define BGXCNT_BM 0x0080
nuclear@0 127 #define BGXCNT_SCRBASE(x) ((x) << 8)
nuclear@0 128 #define BGXCNT_OVF_WRAP 0x2000
nuclear@0 129 #define BGXCNT_SCRSIZE(x) ((x) << 14)
nuclear@0 130 #define BGXCNT_TX_256X256 BGXCNT_SCRSIZE(0)
nuclear@0 131 #define BGXCNT_TX_512X256 BGXCNT_SCRSIZE(1)
nuclear@0 132 #define BGXCNT_TX_256X512 BGXCNT_SCRSIZE(2)
nuclear@0 133 #define BGXCNT_TX_512X512 BGXCNT_SCRSIZE(3)
nuclear@0 134 #define BGXCNT_RS_128X128 BGXCNT_SCRSIZE(0)
nuclear@0 135 #define BGXCNT_RS_256X256 BGXCNT_SCRSIZE(1)
nuclear@0 136 #define BGXCNT_RS_512X512 BGXCNT_SCRSIZE(2)
nuclear@0 137 #define BGXCNT_RS_1024X1024 BGXCNT_SCRSIZE(3)
nuclear@0 138 #define BGXCNT_BM_128X128 (BGXCNT_SCRSIZE(0) | BGXCNT_BM)
nuclear@0 139 #define BGXCNT_BM_256X256 (BGXCNT_SCRSIZE(1) | BGXCNT_BM)
nuclear@0 140 #define BGXCNT_BM_512X256 (BGXCNT_SCRSIZE(2) | BGXCNT_BM)
nuclear@0 141 #define BGXCNT_BM_512X512 (BGXCNT_SCRSIZE(3) | BGXCNT_BM)
nuclear@0 142 #define BGXCNT_BM8 0
nuclear@0 143 #define BGXCNT_BM16 0x0004
nuclear@0 144
nuclear@0 145 #define VRAM_OFFSET(x) ((x) << 3)
nuclear@0 146 #define VRAM_ENABLE 0x80
nuclear@0 147
nuclear@0 148 /* ---- DMA registers ---- */
nuclear@0 149 #define REG_DMA0SAD REG32(0xb0)
nuclear@0 150 #define REG_DMA0DAD REG32(0xb4)
nuclear@0 151 #define REG_DMA0CNT_L REG16(0xb8)
nuclear@0 152 #define REG_DMA0CNT_H REG16(0xba)
nuclear@0 153 #define REG_DMA1SAD REG32(0xbc)
nuclear@0 154 #define REG_DMA1DAD REG32(0xc0)
nuclear@0 155 #define REG_DMA1CNT_L REG16(0xc4)
nuclear@0 156 #define REG_DMA1CNT_H REG16(0xc6)
nuclear@0 157 #define REG_DMA2SAD REG32(0xc8)
nuclear@0 158 #define REG_DMA2DAD REG32(0xcc)
nuclear@0 159 #define REG_DMA2CNT_L REG16(0xd0)
nuclear@0 160 #define REG_DMA2CNT_H REG16(0xd2)
nuclear@0 161 #define REG_DMA3SAD REG32(0xd4)
nuclear@0 162 #define REG_DMA3DAD REG32(0xd8)
nuclear@0 163 #define REG_DMA3CNT_L REG16(0xdc)
nuclear@0 164 #define REG_DMA3CNT_H REG16(0xde)
nuclear@0 165 #define REG_DMA0FILL REG32(0xe0)
nuclear@0 166 #define REG_DMA1FILL REG32(0xe4)
nuclear@0 167 #define REG_DMA2FILL REG32(0xe8)
nuclear@0 168 #define REG_DMA3FILL REG32(0xec)
nuclear@0 169
nuclear@0 170 /* ---- timer registers ---- */
nuclear@0 171 #define REG_TM0CNT_L REG16(0x100)
nuclear@0 172 #define REG_TM0CNT_H REG16(0x102)
nuclear@0 173 #define REG_TM1CNT_L REG16(0x104)
nuclear@0 174 #define REG_TM1CNT_H REG16(0x106)
nuclear@0 175 #define REG_TM2CNT_L REG16(0x108)
nuclear@0 176 #define REG_TM2CNT_H REG16(0x10a)
nuclear@0 177 #define REG_TM3CNT_L REG16(0x10c)
nuclear@0 178 #define REG_TM3CNT_H REG16(0x10e)
nuclear@0 179
nuclear@0 180 /* ---- keypad registers ---- */
nuclear@0 181 #define REG_KEYINPUT REG16(0x130)
nuclear@0 182 #define REG_KEYCNT REG16(0x132)
nuclear@0 183
nuclear@0 184 /* ---- IPC/ROM registers ---- */
nuclear@0 185 #define REG_IPCSYNC REG16(0x180)
nuclear@0 186 #define REG_IPCFIFOCNT REG16(0x184)
nuclear@0 187 #define REG_IPCFIFOSEND REG32(0x188)
nuclear@0 188 #define REG_AUXSPICNT REG16(0x1a0)
nuclear@0 189 #define REG_AUXSPIDATA REG16(0x1a2)
nuclear@0 190 #define REG_GCARDCNT REG32(0x1a4)
nuclear@0 191 #define REG_GCARDCMD64 REG64(0x1a8)
nuclear@0 192 #define REG_GCARDSEED0 REG32(0x1b0)
nuclear@0 193 #define REG_GCARDSEED1 REG32(0x1b4)
nuclear@0 194 #define REG_GCARDSEED0X REG16(0x1b8)
nuclear@0 195 #define REG_GCARDSEED1X REG16(0x1ba)
nuclear@0 196
nuclear@0 197 /* ---- memory & IRQ control registers ---- */
nuclear@0 198 #define REG_EXMEMCNT REG16(0x204)
nuclear@0 199 #define REG_IME REG16(0x208)
nuclear@0 200 #define REG_IE REG32(0x210)
nuclear@0 201 #define REG_IF REG32(0x214)
nuclear@0 202 #define REG_VRAMCNT_A REG8(0x240)
nuclear@0 203 #define REG_VRAMCNT_B REG8(0x241)
nuclear@0 204 #define REG_VRAMCNT_C REG8(0x242)
nuclear@0 205 #define REG_VRAMCNT_D REG8(0x243)
nuclear@0 206 #define REG_VRAMCNT_E REG8(0x244)
nuclear@0 207 #define REG_VRAMCNT_F REG8(0x245)
nuclear@0 208 #define REG_VRAMCNT_G REG8(0x246)
nuclear@0 209 #define REG_WRAMCNT REG8(0x247)
nuclear@0 210 #define REG_VRAMCNT_H REG8(0x248)
nuclear@0 211 #define REG_VRAMCNT_I REG8(0x249)
nuclear@0 212
nuclear@0 213 /* ---- math hardware registers ---- */
nuclear@2 214 #define REG_DIVCNT REG32(0x280)
nuclear@2 215 #define REG_DIV_NUMER REG64(0x290)
nuclear@2 216 #define REG_DIV_NUMERL REG32(0x290)
nuclear@2 217 #define REG_DIV_NUMERH REG32(0x294)
nuclear@2 218 #define REG_DIV_DENOM REG64(0x298)
nuclear@2 219 #define REG_DIV_DENOML REG32(0x298)
nuclear@2 220 #define REG_DIV_DENOMH REG32(0x29c)
nuclear@2 221 #define REG_DIV_RESULT REG64(0x2a0)
nuclear@2 222 #define REG_DIV_RESULTL REG32(0x2a0)
nuclear@2 223 #define REG_DIV_RESULTH REG32(0x2a4)
nuclear@0 224 #define REG_DIVREM_RESULT REG64(0x2a8)
nuclear@2 225 #define REG_DIVREM_RESULTL REG32(0x2a8)
nuclear@2 226 #define REG_DIVREM_RESULTH REG32(0x2ac)
nuclear@2 227 #define REG_SQRTCNT REG16(0x2b0)
nuclear@2 228 #define REG_SQRT_RESULT REG32(0x2b4)
nuclear@2 229 #define REG_SQRT_PARAM REG64(0x2b8)
nuclear@2 230 #define REG_POSTFLG REG32(0x300)
nuclear@2 231 #define REG_POWCNT1 REG16(0x304)
nuclear@2 232 #define REG_POWCNT2 REG16(0x304)
nuclear@2 233
nuclear@2 234 #define DIVCNT_32_32 0
nuclear@2 235 #define DIVCNT_64_32 1
nuclear@2 236 #define DIVCNT_64_64 2
nuclear@2 237 #define DIVCNT_DIV0 0x4000
nuclear@2 238 #define DIVCNT_BUSY 0x8000
nuclear@0 239
nuclear@0 240 #define POWCNT1_LCD 0x0001
nuclear@0 241 #define POWCNT1_2DA 0x0002
nuclear@0 242 #define POWCNT1_3DREND 0x0004
nuclear@0 243 #define POWCNT1_3DGEOM 0x0008
nuclear@0 244 #define POWCNT1_2DB 0x0200
nuclear@0 245 #define POWCNT1_DSWAP 0x8000
nuclear@0 246
nuclear@0 247 #define POWCNT2_SOUND 0x0001
nuclear@0 248 #define POWCNT2_WIFI 0x0002
nuclear@0 249
nuclear@0 250 /* ---- sound registers ---- */
nuclear@0 251 #define REG_SOUNDXCNT(x) REG32(0x400 | ((x) << 4))
nuclear@0 252 #define REG_SOUNDXSAD(x) REG32(0x404 | ((x) << 4))
nuclear@0 253 #define REG_SOUNDXTMR(x) REG32(0x408 | ((x) << 4))
nuclear@0 254 #define REG_SOUNDXPNT(x) REG32(0x40a | ((x) << 4))
nuclear@0 255 #define REG_SOUNDXLEN(x) REG32(0x40c | ((x) << 4))
nuclear@0 256 #define REG_SOUNDCNT REG32(0x500)
nuclear@0 257 #define REG_SOUNDBIAS REG32(0x504)
nuclear@0 258
nuclear@0 259 /* ---- 3D hardware registers ---- */
nuclear@0 260 /* rendering engine */
nuclear@0 261 #define REG_RDLINES_COUNR REG8(0x320)
nuclear@0 262 #define REG_EDGE_COLOR0 REG16(0x330)
nuclear@0 263 #define REG_EDGE_COLOR1 REG16(0x332)
nuclear@0 264 #define REG_EDGE_COLOR2 REG16(0x334)
nuclear@0 265 #define REG_EDGE_COLOR3 REG16(0x336)
nuclear@0 266 #define REG_EDGE_COLOR4 REG16(0x338)
nuclear@0 267 #define REG_EDGE_COLOR5 REG16(0x33a)
nuclear@0 268 #define REG_EDGE_COLOR6 REG16(0x33c)
nuclear@0 269 #define REG_EDGE_COLOR7 REG16(0x33e)
nuclear@0 270 #define REG_ALPHA_TEST_REF REG8(0x340)
nuclear@0 271 #define REG_CLEAR_COLOR REG32(0x350)
nuclear@0 272 #define REG_CLEAR_DEPTH REG16(0x354)
nuclear@0 273 #define REG_CLRIMAGE_OFFSET REG16(0x356)
nuclear@0 274 #define REG_FOG_COLOR REG32(0x358)
nuclear@0 275 #define REG_FOG_OFFSET REG16(0x35c)
nuclear@0 276 #define FOG_TABLE_ADDR ((uint8_t*)(REG_BASE + 0x360))
nuclear@0 277 #define TOON_TABLE_ADDR ((uint16_t*)(REG_BASE + 0x380))
nuclear@0 278 /* geometry engine */
nuclear@0 279 #define GXFIFO_ADDR ((uint8_t*)(REG_BASE + 0x400))
nuclear@0 280 #define REG_GXSTAT REG32(0x600)
nuclear@0 281 #define REG_RAM_COUNT REG32(0x604)
nuclear@0 282 #define REG_DISP_1DOT_DEPTH REG16(0x610)
nuclear@0 283 #define POS_RESULT_ADDR ((uint8_t*)(REG_BASE + 0x620))
nuclear@0 284 #define VEC_RESULT_ADDR ((uint8_t*)(REG_BASE + 0x630))
nuclear@0 285 #define CLIPMTX_RESULT_ADDR ((uint32_t*)(REG_BASE + 0x640))
nuclear@0 286 #define VECMTX_RESULT_ADDR ((uint32_t*)(REG_BASE + 0x680))
nuclear@0 287 /* geometry command ports */
nuclear@0 288 #define REG_MTX_MODE REG32(0x440) /* 1 */
nuclear@0 289 #define REG_MTX_PUSH REG32(0x444) /* 0 */
nuclear@0 290 #define REG_MTX_POP REG32(0x448) /* 1 */
nuclear@0 291 #define REG_MTX_STORE REG32(0x44c) /* 1 */
nuclear@0 292 #define REG_MTX_RESTORE REG32(0x450) /* 1 */
nuclear@0 293 #define REG_MTX_IDENTITY REG32(0x454) /* 0 */
nuclear@0 294 #define REG_MTX_LOAD_4X4 REG32(0x458) /* 16 */
nuclear@0 295 #define REG_MTX_LOAD_4X3 REG32(0x45c) /* 12 */
nuclear@0 296 #define REG_MTX_MULT_4X4 REG32(0x460) /* 16 */
nuclear@0 297 #define REG_MTX_MULT_4X3 REG32(0x464) /* 12 */
nuclear@0 298 #define REG_MTX_MULT_3X3 REG32(0x468) /* 9 */
nuclear@0 299 #define REG_MTX_SCALE REG32(0x46c) /* 3 */
nuclear@0 300 #define REG_MTX_TRANS REG32(0x470) /* 3 */
nuclear@0 301 #define REG_COLOR REG32(0x480) /* 1 */
nuclear@0 302 #define REG_NORMAL REG32(0x484) /* 1 */
nuclear@0 303 #define REG_TEXCOORD REG32(0x488) /* 1 */
nuclear@0 304 #define REG_VTX_16 REG32(0x48c) /* 2 */
nuclear@0 305 #define REG_VTX_10 REG32(0x490) /* 1 */
nuclear@0 306 #define REG_VTX_XY REG32(0x494) /* 1 */
nuclear@0 307 #define REG_VTX_XZ REG32(0x498) /* 1 */
nuclear@0 308 #define REG_VTX_YZ REG32(0x49c) /* 1 */
nuclear@0 309 #define REG_VTX_DIFF REG32(0x4a0) /* 1 */
nuclear@0 310 #define REG_POLYGON_ATTR REG32(0x4a4) /* 1 */
nuclear@0 311 #define REG_TEXIMAGE_PARAM REG32(0x4a8) /* 1 */
nuclear@0 312 #define REG_PLTT_BASE REG32(0x4ac) /* 1 */
nuclear@0 313 #define REG_DIF_AMB REG32(0x4c0) /* 1 */
nuclear@0 314 #define REG_SPE_EMI REG32(0x4c4) /* 1 */
nuclear@0 315 #define REG_LIGHT_VECTOR REG32(0x4c8) /* 1 */
nuclear@0 316 #define REG_LIGHT_COLOR REG32(0x4cc) /* 1 */
nuclear@0 317 #define REG_SHININESS REG32(0x4d0) /* 32 */
nuclear@0 318 #define REG_BEGIN_VTXS REG32(0x500) /* 1 */
nuclear@0 319 #define REG_END_VTXS REG32(0x504) /* 0 */
nuclear@0 320 #define REG_SWAP_BUFFERS REG32(0x540) /* 1 */
nuclear@0 321 #define REG_VIEWPORT REG32(0x580) /* 1 */
nuclear@0 322 #define REG_BOX_TEST REG32(0x5c0) /* 3 */
nuclear@0 323 #define REG_POS_TEST REG32(0x5c4) /* 2 */
nuclear@0 324 #define REG_VEC_TEST REG32(0x5c8) /* 1 */
nuclear@0 325
nuclear@0 326 /* geometry commands */
nuclear@0 327 #define GCMD_MTX_MODE 0x10 /* 1 */
nuclear@0 328 #define GCMD_MTX_PUSH 0x11 /* 0 */
nuclear@0 329 #define GCMD_MTX_POP 0x12 /* 1 */
nuclear@0 330 #define GCMD_MTX_STORE 0x13 /* 1 */
nuclear@0 331 #define GCMD_MTX_RESTORE 0x14 /* 1 */
nuclear@0 332 #define GCMD_MTX_IDENTITY 0x15 /* 0 */
nuclear@0 333 #define GCMD_MTX_LOAD_4X4 0x16 /* 16 */
nuclear@0 334 #define GCMD_MTX_LOAD_4X3 0x17 /* 12 */
nuclear@0 335 #define GCMD_MTX_MULT_4X4 0x18 /* 16 */
nuclear@0 336 #define GCMD_MTX_MULT_4X3 0x19 /* 12 */
nuclear@0 337 #define GCMD_MTX_MULT_3X3 0x1a /* 9 */
nuclear@0 338 #define GCMD_MTX_SCALE 0x1b /* 3 */
nuclear@0 339 #define GCMD_MTX_TRANS 0x1c /* 3 */
nuclear@0 340 #define GCMD_COLOR 0x20 /* 1 */
nuclear@0 341 #define GCMD_NORMAL 0x21 /* 1 */
nuclear@0 342 #define GCMD_TEXCOORD 0x22 /* 1 */
nuclear@0 343 #define GCMD_VTX_16 0x23 /* 2 */
nuclear@0 344 #define GCMD_VTX_10 0x24 /* 1 */
nuclear@0 345 #define GCMD_VTX_XY 0x25 /* 1 */
nuclear@0 346 #define GCMD_VTX_XZ 0x26 /* 1 */
nuclear@0 347 #define GCMD_VTX_YZ 0x27 /* 1 */
nuclear@0 348 #define GCMD_VTX_DIFF 0x28 /* 1 */
nuclear@0 349 #define GCMD_POLYGON_ATTR 0x29 /* 1 */
nuclear@0 350 #define GCMD_TEXIMAGE_PARAM 0x2a /* 1 */
nuclear@0 351 #define GCMD_PLTT_BASE 0x2b /* 1 */
nuclear@0 352 #define GCMD_DIF_AMB 0x30 /* 1 */
nuclear@0 353 #define GCMD_SPE_EMI 0x31 /* 1 */
nuclear@0 354 #define GCMD_LIGHT_VECTOR 0x32 /* 1 */
nuclear@0 355 #define GCMD_LIGHT_COLOR 0x33 /* 1 */
nuclear@0 356 #define GCMD_SHININESS 0x34 /* 32 */
nuclear@0 357 #define GCMD_BEGIN_VTXS 0x40 /* 1 */
nuclear@0 358 #define GCMD_END_VTXS 0x41 /* 0 */
nuclear@0 359 #define GCMD_SWAP_BUFFERS 0x50 /* 1 */
nuclear@0 360 #define GCMD_VIEWPORT 0x60 /* 1 */
nuclear@0 361 #define GCMD_BOX_TEST 0x70 /* 3 */
nuclear@0 362 #define GCMD_POS_TEST 0x71 /* 2 */
nuclear@0 363 #define GCMD_VEC_TEST 0x72 /* 1 */
nuclear@0 364
nuclear@0 365 /* addresses of interest */
nuclear@0 366 #define SHARED_WRAM_PTR ((void*)0x3000000)
nuclear@0 367 #define VRAM_BGA_PTR ((void*)0x6000000)
nuclear@0 368 #define VRAM_BGB_PTR ((void*)0x6200000)
nuclear@0 369 #define VRAM_OBJA_PTR ((void*)0x6400000)
nuclear@0 370 #define VRAM_OBJB_PTR ((void*)0x6600000)
nuclear@0 371 #define VRAM_LCDC_PTR ((void*)0x6800000)
nuclear@0 372 #define OAM_PTR ((void*)0x7000000)
nuclear@0 373
nuclear@0 374 #endif /* DSREGS_H_ */