include/mgba/internal/ds/io.h (view raw)
1/* Copyright (c) 2013-2016 Jeffrey Pfau
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6#ifndef DS_IO_H
7#define DS_IO_H
8
9#include <mgba-util/common.h>
10
11CXX_GUARD_START
12
13#include <mgba/core/log.h>
14
15enum DSIORegisters {
16 // Video
17 DS_REG_DISPSTAT = 0x004,
18 DS_REG_VCOUNT = 0x006,
19
20 // DMA
21 DS_REG_DMA0SAD_LO = 0x0B0,
22 DS_REG_DMA0SAD_HI = 0x0B2,
23 DS_REG_DMA0DAD_LO = 0x0B4,
24 DS_REG_DMA0DAD_HI = 0x0B6,
25 DS_REG_DMA0CNT_LO = 0x0B8,
26 DS_REG_DMA0CNT_HI = 0x0BA,
27 DS_REG_DMA1SAD_LO = 0x0BC,
28 DS_REG_DMA1SAD_HI = 0x0BE,
29 DS_REG_DMA1DAD_LO = 0x0C0,
30 DS_REG_DMA1DAD_HI = 0x0C2,
31 DS_REG_DMA1CNT_LO = 0x0C4,
32 DS_REG_DMA1CNT_HI = 0x0C6,
33 DS_REG_DMA2SAD_LO = 0x0C8,
34 DS_REG_DMA2SAD_HI = 0x0CA,
35 DS_REG_DMA2DAD_LO = 0x0CC,
36 DS_REG_DMA2DAD_HI = 0x0CE,
37 DS_REG_DMA2CNT_LO = 0x0D0,
38 DS_REG_DMA2CNT_HI = 0x0D2,
39 DS_REG_DMA3SAD_LO = 0x0D4,
40 DS_REG_DMA3SAD_HI = 0x0D6,
41 DS_REG_DMA3DAD_LO = 0x0D8,
42 DS_REG_DMA3DAD_HI = 0x0DA,
43 DS_REG_DMA3CNT_LO = 0x0DC,
44 DS_REG_DMA3CNT_HI = 0x0DE,
45 DS_REG_DMA0FILL_LO = 0x0E0,
46 DS_REG_DMA0FILL_HI = 0x0E2,
47 DS_REG_DMA1FILL_LO = 0x0E4,
48 DS_REG_DMA1FILL_HI = 0x0E6,
49 DS_REG_DMA2FILL_LO = 0x0E8,
50 DS_REG_DMA2FILL_HI = 0x0EA,
51 DS_REG_DMA3FILL_LO = 0x0EC,
52 DS_REG_DMA3FILL_HI = 0x0EE,
53
54 // Timers
55 DS_REG_TM0CNT_LO = 0x100,
56 DS_REG_TM0CNT_HI = 0x102,
57 DS_REG_TM1CNT_LO = 0x104,
58 DS_REG_TM1CNT_HI = 0x106,
59 DS_REG_TM2CNT_LO = 0x108,
60 DS_REG_TM2CNT_HI = 0x10A,
61 DS_REG_TM3CNT_LO = 0x10C,
62 DS_REG_TM3CNT_HI = 0x10E,
63
64 // Keypad
65 DS_REG_KEYINPUT = 0x130,
66 DS_REG_KEYCNT = 0x132,
67
68 // IPC
69 DS_REG_IPCSYNC = 0x180,
70 DS_REG_IPCFIFOCNT = 0x184,
71 DS_REG_IPCFIFOSEND_LO = 0x188,
72 DS_REG_IPCFIFOSEND_HI = 0x18A,
73 DS_REG_IPCFIFORECV_LO = 0x100000,
74 DS_REG_IPCFIFORECV_HI = 0x100002,
75
76 // Game card
77 DS_REG_AUXSPICNT = 0x1A0,
78 DS_REG_AUXSPIDATA = 0x1A2,
79 DS_REG_ROMCNT_LO = 0x1A4,
80 DS_REG_ROMCNT_HI = 0x1A6,
81 DS_REG_ROMCMD_0 = 0x1A8,
82 DS_REG_ROMCMD_1 = 0x1A9,
83 DS_REG_ROMCMD_2 = 0x1AA,
84 DS_REG_ROMCMD_3 = 0x1AB,
85 DS_REG_ROMCMD_4 = 0x1AC,
86 DS_REG_ROMCMD_5 = 0x1AD,
87 DS_REG_ROMCMD_6 = 0x1AE,
88 DS_REG_ROMCMD_7 = 0x1AF,
89 DS_REG_ROMDATA_0 = 0x100010,
90 DS_REG_ROMDATA_1 = 0x100011,
91 DS_REG_ROMDATA_2 = 0x100012,
92 DS_REG_ROMDATA_3 = 0x100013,
93
94 // Interrupts
95 DS_REG_IME = 0x208,
96 DS_REG_IE_LO = 0x210,
97 DS_REG_IE_HI = 0x212,
98 DS_REG_IF_LO = 0x214,
99 DS_REG_IF_HI = 0x216,
100
101 DS_REG_POSTFLG = 0x300,
102};
103
104enum DS7IORegisters {
105 // Keypad
106 DS7_REG_EXTKEYIN = 0x136,
107 DS7_REG_RTC = 0x138,
108
109 // SPI
110 DS7_REG_SPICNT = 0x1C0,
111 DS7_REG_SPIDATA = 0x1C2,
112
113 // Etc
114 DS7_REG_EXMEMSTAT = 0x204,
115
116 // Memory control
117 DS7_REG_VRAMSTAT = 0x240,
118 DS7_REG_WRAMSTAT = 0x241,
119 DS7_REG_HALTCNT = 0x301,
120 DS7_REG_POWCNT2 = 0x304,
121 DS7_REG_BIOSPROT_LO = 0x308,
122 DS7_REG_BIOSPROT_HI = 0x30A,
123
124 DS7_REG_MAX = 0x51E,
125
126 DS7_IO_BASE_WIFI = 0x800000,
127 DS7_IO_END_WIFI = 0x810000,
128};
129
130enum DS9IORegisters {
131 // Video
132 DS9_REG_A_DISPCNT_LO = 0x000,
133 DS9_REG_A_DISPCNT_HI = 0x002,
134 DS9_REG_A_BG0CNT = 0x008,
135 DS9_REG_A_BG1CNT = 0x00A,
136 DS9_REG_A_BG2CNT = 0x00C,
137 DS9_REG_A_BG3CNT = 0x00E,
138 DS9_REG_A_BG0HOFS = 0x010,
139 DS9_REG_A_BG0VOFS = 0x012,
140 DS9_REG_A_BG1HOFS = 0x014,
141 DS9_REG_A_BG1VOFS = 0x016,
142 DS9_REG_A_BG2HOFS = 0x018,
143 DS9_REG_A_BG2VOFS = 0x01A,
144 DS9_REG_A_BG3HOFS = 0x01C,
145 DS9_REG_A_BG3VOFS = 0x01E,
146 DS9_REG_A_BG2PA = 0x020,
147 DS9_REG_A_BG2PB = 0x022,
148 DS9_REG_A_BG2PC = 0x024,
149 DS9_REG_A_BG2PD = 0x026,
150 DS9_REG_A_BG2X_LO = 0x028,
151 DS9_REG_A_BG2X_HI = 0x02A,
152 DS9_REG_A_BG2Y_LO = 0x02C,
153 DS9_REG_A_BG2Y_HI = 0x02E,
154 DS9_REG_A_BG3PA = 0x030,
155 DS9_REG_A_BG3PB = 0x032,
156 DS9_REG_A_BG3PC = 0x034,
157 DS9_REG_A_BG3PD = 0x036,
158 DS9_REG_A_BG3X_LO = 0x038,
159 DS9_REG_A_BG3X_HI = 0x03A,
160 DS9_REG_A_BG3Y_LO = 0x03C,
161 DS9_REG_A_BG3Y_HI = 0x03E,
162 DS9_REG_A_WIN0H = 0x040,
163 DS9_REG_A_WIN1H = 0x042,
164 DS9_REG_A_WIN0V = 0x044,
165 DS9_REG_A_WIN1V = 0x046,
166 DS9_REG_A_WININ = 0x048,
167 DS9_REG_A_WINOUT = 0x04A,
168 DS9_REG_A_MOSAIC = 0x04C,
169 DS9_REG_A_BLDCNT = 0x050,
170 DS9_REG_A_BLDALPHA = 0x052,
171 DS9_REG_A_BLDY = 0x054,
172 DS9_REG_DISPCAPCNT_LO = 0x064,
173 DS9_REG_DISPCAPCNT_HI = 0x066,
174 DS9_REG_DISP_MMEM_FIFO_LO = 0x068,
175 DS9_REG_DISP_MMEM_FIFO_HI = 0x06A,
176 DS9_REG_A_MASTER_BRIGHT = 0x06C,
177
178 DS9_REG_B_DISPCNT_LO = 0x1000,
179 DS9_REG_B_DISPCNT_HI = 0x1002,
180 DS9_REG_B_BG0CNT = 0x1008,
181 DS9_REG_B_BG1CNT = 0x100A,
182 DS9_REG_B_BG2CNT = 0x100C,
183 DS9_REG_B_BG3CNT = 0x100E,
184 DS9_REG_B_BG0HOFS = 0x1010,
185 DS9_REG_B_BG0VOFS = 0x1012,
186 DS9_REG_B_BG1HOFS = 0x1014,
187 DS9_REG_B_BG1VOFS = 0x1016,
188 DS9_REG_B_BG2HOFS = 0x1018,
189 DS9_REG_B_BG2VOFS = 0x101A,
190 DS9_REG_B_BG3HOFS = 0x101C,
191 DS9_REG_B_BG3VOFS = 0x101E,
192 DS9_REG_B_BG2PA = 0x1020,
193 DS9_REG_B_BG2PB = 0x1022,
194 DS9_REG_B_BG2PC = 0x1024,
195 DS9_REG_B_BG2PD = 0x1026,
196 DS9_REG_B_BG2X_LO = 0x1028,
197 DS9_REG_B_BG2X_HI = 0x102A,
198 DS9_REG_B_BG2Y_LO = 0x102C,
199 DS9_REG_B_BG2Y_HI = 0x102E,
200 DS9_REG_B_BG3PA = 0x1030,
201 DS9_REG_B_BG3PB = 0x1032,
202 DS9_REG_B_BG3PC = 0x1034,
203 DS9_REG_B_BG3PD = 0x1036,
204 DS9_REG_B_BG3X_LO = 0x1038,
205 DS9_REG_B_BG3X_HI = 0x103A,
206 DS9_REG_B_BG3Y_LO = 0x103C,
207 DS9_REG_B_BG3Y_HI = 0x103E,
208 DS9_REG_B_WIN0H = 0x1040,
209 DS9_REG_B_WIN1H = 0x1042,
210 DS9_REG_B_WIN0V = 0x1044,
211 DS9_REG_B_WIN1V = 0x1046,
212 DS9_REG_B_WININ = 0x1048,
213 DS9_REG_B_WINOUT = 0x104A,
214 DS9_REG_B_MOSAIC = 0x104C,
215 DS9_REG_B_BLDCNT = 0x1050,
216 DS9_REG_B_BLDALPHA = 0x1052,
217 DS9_REG_B_BLDY = 0x1054,
218 DS9_REG_B_MASTER_BRIGHT = 0x106C,
219
220 // Etc
221 DS9_REG_EXMEMCNT = 0x204,
222
223 // Memory control
224 DS9_REG_VRAMCNT_A = 0x240,
225 DS9_REG_VRAMCNT_B = 0x241,
226 DS9_REG_VRAMCNT_C = 0x242,
227 DS9_REG_VRAMCNT_D = 0x243,
228 DS9_REG_VRAMCNT_E = 0x244,
229 DS9_REG_VRAMCNT_F = 0x245,
230 DS9_REG_VRAMCNT_G = 0x246,
231 DS9_REG_WRAMCNT = 0x247,
232 DS9_REG_VRAMCNT_H = 0x248,
233 DS9_REG_VRAMCNT_I = 0x249,
234
235 // Math
236 DS9_REG_DIVCNT = 0x280,
237 DS9_REG_DIV_NUMER_0 = 0x290,
238 DS9_REG_DIV_NUMER_1 = 0x292,
239 DS9_REG_DIV_NUMER_2 = 0x294,
240 DS9_REG_DIV_NUMER_3 = 0x296,
241 DS9_REG_DIV_DENOM_0 = 0x298,
242 DS9_REG_DIV_DENOM_1 = 0x29A,
243 DS9_REG_DIV_DENOM_2 = 0x29C,
244 DS9_REG_DIV_DENOM_3 = 0x29E,
245 DS9_REG_DIV_RESULT_0 = 0x2A0,
246 DS9_REG_DIV_RESULT_1 = 0x2A2,
247 DS9_REG_DIV_RESULT_2 = 0x2A4,
248 DS9_REG_DIV_RESULT_3 = 0x2A6,
249 DS9_REG_DIVREM_RESULT_0 = 0x2A8,
250 DS9_REG_DIVREM_RESULT_1 = 0x2AA,
251 DS9_REG_DIVREM_RESULT_2 = 0x2AC,
252 DS9_REG_DIVREM_RESULT_3 = 0x2AE,
253 DS9_REG_SQRTCNT = 0x2B0,
254 DS9_REG_SQRT_RESULT_LO = 0x2B4,
255 DS9_REG_SQRT_RESULT_HI = 0x2B6,
256 DS9_REG_SQRT_PARAM_0 = 0x2B8,
257 DS9_REG_SQRT_PARAM_1 = 0x2BA,
258 DS9_REG_SQRT_PARAM_2 = 0x2BC,
259 DS9_REG_SQRT_PARAM_3 = 0x2BE,
260
261 // GX
262 DS9_REG_DISP3DCNT = 0x060,
263 DS9_REG_RDLINES_COUNT = 0x320,
264 DS9_REG_EDGE_COLOR_0 = 0x330,
265 DS9_REG_EDGE_COLOR_1 = 0x332,
266 DS9_REG_EDGE_COLOR_2 = 0x334,
267 DS9_REG_EDGE_COLOR_3 = 0x336,
268 DS9_REG_EDGE_COLOR_4 = 0x338,
269 DS9_REG_EDGE_COLOR_5 = 0x33A,
270 DS9_REG_EDGE_COLOR_6 = 0x33C,
271 DS9_REG_EDGE_COLOR_7 = 0x33E,
272 DS9_REG_ALPHA_TEST_REF = 0x340,
273 DS9_REG_CLEAR_COLOR_LO = 0x350,
274 DS9_REG_CLEAR_COLOR_HI = 0x352,
275 DS9_REG_CLEAR_DEPTH = 0x354,
276 DS9_REG_CLRIMAGE_OFFSET = 0x356,
277 DS9_REG_FOG_COLOR_LO = 0x358,
278 DS9_REG_FOG_COLOR_HI = 0x35A,
279 DS9_REG_FOG_OFFSET = 0x35C,
280 DS9_REG_FOG_TABLE_0 = 0x360,
281 DS9_REG_FOG_TABLE_1 = 0x362,
282 DS9_REG_FOG_TABLE_2 = 0x364,
283 DS9_REG_FOG_TABLE_3 = 0x366,
284 DS9_REG_FOG_TABLE_4 = 0x368,
285 DS9_REG_FOG_TABLE_5 = 0x36A,
286 DS9_REG_FOG_TABLE_6 = 0x36C,
287 DS9_REG_FOG_TABLE_7 = 0x36E,
288 DS9_REG_FOG_TABLE_8 = 0x370,
289 DS9_REG_FOG_TABLE_9 = 0x372,
290 DS9_REG_FOG_TABLE_A = 0x374,
291 DS9_REG_FOG_TABLE_B = 0x376,
292 DS9_REG_FOG_TABLE_C = 0x378,
293 DS9_REG_FOG_TABLE_D = 0x37A,
294 DS9_REG_FOG_TABLE_E = 0x37C,
295 DS9_REG_FOG_TABLE_F = 0x37E,
296 DS9_REG_TOON_TABLE_00 = 0x380,
297 DS9_REG_TOON_TABLE_01 = 0x382,
298 DS9_REG_TOON_TABLE_02 = 0x384,
299 DS9_REG_TOON_TABLE_03 = 0x386,
300 DS9_REG_TOON_TABLE_04 = 0x388,
301 DS9_REG_TOON_TABLE_05 = 0x38A,
302 DS9_REG_TOON_TABLE_06 = 0x38C,
303 DS9_REG_TOON_TABLE_07 = 0x38E,
304 DS9_REG_TOON_TABLE_08 = 0x390,
305 DS9_REG_TOON_TABLE_09 = 0x392,
306 DS9_REG_TOON_TABLE_0A = 0x394,
307 DS9_REG_TOON_TABLE_0B = 0x396,
308 DS9_REG_TOON_TABLE_0C = 0x398,
309 DS9_REG_TOON_TABLE_0D = 0x39A,
310 DS9_REG_TOON_TABLE_0E = 0x39C,
311 DS9_REG_TOON_TABLE_0F = 0x39E,
312 DS9_REG_TOON_TABLE_10 = 0x3A0,
313 DS9_REG_TOON_TABLE_11 = 0x3A2,
314 DS9_REG_TOON_TABLE_12 = 0x3A4,
315 DS9_REG_TOON_TABLE_13 = 0x3A6,
316 DS9_REG_TOON_TABLE_14 = 0x3A8,
317 DS9_REG_TOON_TABLE_15 = 0x3AA,
318 DS9_REG_TOON_TABLE_16 = 0x3AC,
319 DS9_REG_TOON_TABLE_17 = 0x3AE,
320 DS9_REG_TOON_TABLE_18 = 0x3B0,
321 DS9_REG_TOON_TABLE_19 = 0x3B2,
322 DS9_REG_TOON_TABLE_1A = 0x3B4,
323 DS9_REG_TOON_TABLE_1B = 0x3B6,
324 DS9_REG_TOON_TABLE_1C = 0x3B8,
325 DS9_REG_TOON_TABLE_1D = 0x3BA,
326 DS9_REG_TOON_TABLE_1E = 0x3BC,
327 DS9_REG_TOON_TABLE_1F = 0x3BE,
328 DS9_REG_GXFIFO_00 = 0x400,
329 DS9_REG_GXFIFO_01 = 0x402,
330 DS9_REG_GXFIFO_02 = 0x404,
331 DS9_REG_GXFIFO_03 = 0x406,
332 DS9_REG_GXFIFO_04 = 0x408,
333 DS9_REG_GXFIFO_05 = 0x40A,
334 DS9_REG_GXFIFO_06 = 0x40C,
335 DS9_REG_GXFIFO_07 = 0x40E,
336 DS9_REG_GXFIFO_08 = 0x410,
337 DS9_REG_GXFIFO_09 = 0x412,
338 DS9_REG_GXFIFO_0A = 0x414,
339 DS9_REG_GXFIFO_0B = 0x416,
340 DS9_REG_GXFIFO_0C = 0x418,
341 DS9_REG_GXFIFO_0D = 0x41A,
342 DS9_REG_GXFIFO_0E = 0x41C,
343 DS9_REG_GXFIFO_0F = 0x41E,
344 DS9_REG_GXFIFO_10 = 0x420,
345 DS9_REG_GXFIFO_11 = 0x422,
346 DS9_REG_GXFIFO_12 = 0x424,
347 DS9_REG_GXFIFO_13 = 0x426,
348 DS9_REG_GXFIFO_14 = 0x428,
349 DS9_REG_GXFIFO_15 = 0x42A,
350 DS9_REG_GXFIFO_16 = 0x42C,
351 DS9_REG_GXFIFO_17 = 0x42E,
352 DS9_REG_GXFIFO_18 = 0x430,
353 DS9_REG_GXFIFO_19 = 0x432,
354 DS9_REG_GXFIFO_1A = 0x434,
355 DS9_REG_GXFIFO_1B = 0x436,
356 DS9_REG_GXFIFO_1C = 0x438,
357 DS9_REG_GXFIFO_1D = 0x43A,
358 DS9_REG_GXFIFO_1E = 0x43C,
359 DS9_REG_GXFIFO_1F = 0x43E,
360 DS9_REG_GXSTAT_LO = 0x600,
361 DS9_REG_GXSTAT_HI = 0x602,
362 DS9_REG_RAM_COUNT_LO = 0x604,
363 DS9_REG_RAM_COUNT_HI = 0x606,
364 DS9_REG_DISP_1DOT_DEPTH = 0x610,
365 DS9_REG_POS_RESULT_0 = 0x620,
366 DS9_REG_POS_RESULT_1 = 0x622,
367 DS9_REG_POS_RESULT_2 = 0x624,
368 DS9_REG_POS_RESULT_3 = 0x626,
369 DS9_REG_POS_RESULT_4 = 0x628,
370 DS9_REG_POS_RESULT_5 = 0x62A,
371 DS9_REG_POS_RESULT_6 = 0x62C,
372 DS9_REG_POS_RESULT_7 = 0x62E,
373 DS9_REG_VEC_RESULT_0 = 0x630,
374 DS9_REG_VEC_RESULT_1 = 0x632,
375 DS9_REG_VEC_RESULT_2 = 0x634,
376 DS9_REG_CLIPMTX_RESULT_00 = 0x640,
377 DS9_REG_CLIPMTX_RESULT_01 = 0x642,
378 DS9_REG_CLIPMTX_RESULT_02 = 0x644,
379 DS9_REG_CLIPMTX_RESULT_03 = 0x646,
380 DS9_REG_CLIPMTX_RESULT_04 = 0x648,
381 DS9_REG_CLIPMTX_RESULT_05 = 0x64A,
382 DS9_REG_CLIPMTX_RESULT_06 = 0x64C,
383 DS9_REG_CLIPMTX_RESULT_07 = 0x64E,
384 DS9_REG_CLIPMTX_RESULT_08 = 0x650,
385 DS9_REG_CLIPMTX_RESULT_09 = 0x652,
386 DS9_REG_CLIPMTX_RESULT_0A = 0x654,
387 DS9_REG_CLIPMTX_RESULT_0B = 0x656,
388 DS9_REG_CLIPMTX_RESULT_0C = 0x658,
389 DS9_REG_CLIPMTX_RESULT_0D = 0x65A,
390 DS9_REG_CLIPMTX_RESULT_0E = 0x65C,
391 DS9_REG_CLIPMTX_RESULT_0F = 0x65E,
392 DS9_REG_CLIPMTX_RESULT_10 = 0x660,
393 DS9_REG_CLIPMTX_RESULT_11 = 0x662,
394 DS9_REG_CLIPMTX_RESULT_12 = 0x664,
395 DS9_REG_CLIPMTX_RESULT_13 = 0x666,
396 DS9_REG_CLIPMTX_RESULT_14 = 0x668,
397 DS9_REG_CLIPMTX_RESULT_15 = 0x66A,
398 DS9_REG_CLIPMTX_RESULT_16 = 0x66C,
399 DS9_REG_CLIPMTX_RESULT_17 = 0x66E,
400 DS9_REG_CLIPMTX_RESULT_18 = 0x670,
401 DS9_REG_CLIPMTX_RESULT_19 = 0x672,
402 DS9_REG_CLIPMTX_RESULT_1A = 0x674,
403 DS9_REG_CLIPMTX_RESULT_1B = 0x676,
404 DS9_REG_CLIPMTX_RESULT_1C = 0x678,
405 DS9_REG_CLIPMTX_RESULT_1D = 0x67A,
406 DS9_REG_CLIPMTX_RESULT_1E = 0x67C,
407 DS9_REG_CLIPMTX_RESULT_1F = 0x67E,
408 DS9_REG_VECMTX_RESULT_00 = 0x680,
409 DS9_REG_VECMTX_RESULT_01 = 0x682,
410 DS9_REG_VECMTX_RESULT_02 = 0x684,
411 DS9_REG_VECMTX_RESULT_03 = 0x686,
412 DS9_REG_VECMTX_RESULT_04 = 0x688,
413 DS9_REG_VECMTX_RESULT_05 = 0x68A,
414 DS9_REG_VECMTX_RESULT_06 = 0x68C,
415 DS9_REG_VECMTX_RESULT_07 = 0x68E,
416 DS9_REG_VECMTX_RESULT_08 = 0x690,
417 DS9_REG_VECMTX_RESULT_09 = 0x692,
418 DS9_REG_VECMTX_RESULT_0A = 0x694,
419 DS9_REG_VECMTX_RESULT_0B = 0x696,
420 DS9_REG_VECMTX_RESULT_0C = 0x698,
421 DS9_REG_VECMTX_RESULT_0D = 0x69A,
422 DS9_REG_VECMTX_RESULT_0E = 0x69C,
423 DS9_REG_VECMTX_RESULT_0F = 0x69E,
424 DS9_REG_VECMTX_RESULT_10 = 0x6A0,
425 DS9_REG_VECMTX_RESULT_11 = 0x6A2,
426 DS9_REG_VECMTX_RESULT_12 = 0x6A4,
427
428 DS9_REG_MAX = 0x106E,
429
430 DS9_REG_POWCNT1 = 0x304,
431};
432
433mLOG_DECLARE_CATEGORY(DS_IO);
434
435extern const char* const DS7IORegisterNames[];
436extern const char* const DS9IORegisterNames[];
437
438struct DS;
439void DS7IOInit(struct DS* ds);
440void DS7IOWrite(struct DS* ds, uint32_t address, uint16_t value);
441void DS7IOWrite8(struct DS* ds, uint32_t address, uint8_t value);
442void DS7IOWrite32(struct DS* ds, uint32_t address, uint32_t value);
443uint16_t DS7IORead(struct DS* ds, uint32_t address);
444uint32_t DS7IORead32(struct DS* ds, uint32_t address);
445
446void DS9IOInit(struct DS* ds);
447void DS9IOWrite(struct DS* ds, uint32_t address, uint16_t value);
448void DS9IOWrite8(struct DS* ds, uint32_t address, uint8_t value);
449void DS9IOWrite32(struct DS* ds, uint32_t address, uint32_t value);
450uint16_t DS9IORead(struct DS* ds, uint32_t address);
451uint32_t DS9IORead32(struct DS* ds, uint32_t address);
452
453CXX_GUARD_END
454
455#endif