OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
registers.h
Go to the documentation of this file.
1
32
33#ifndef OPENSNES_REGISTERS_H
34#define OPENSNES_REGISTERS_H
35
36#include <snes/types.h>
37
38/*============================================================================
39 * PPU Registers ($2100-$213F)
40 *============================================================================*/
41
47
49#define REG_INIDISP (*(vu8*)0x2100)
50
52#define REG_OBJSEL (*(vu8*)0x2101)
53
55#define REG_OAMADDL (*(vu8*)0x2102)
56
58#define REG_OAMADDH (*(vu8*)0x2103)
59
61#define REG_OAMDATA (*(vu8*)0x2104)
62
64#define REG_BGMODE (*(vu8*)0x2105)
65
67#define REG_MOSAIC (*(vu8*)0x2106)
68
70#define REG_BG1SC (*(vu8*)0x2107)
71
73#define REG_BG2SC (*(vu8*)0x2108)
74
76#define REG_BG3SC (*(vu8*)0x2109)
77
79#define REG_BG4SC (*(vu8*)0x210A)
80
82#define REG_BG12NBA (*(vu8*)0x210B)
83
85#define REG_BG34NBA (*(vu8*)0x210C)
86
88#define REG_BG1HOFS (*(vu8*)0x210D)
89
91#define REG_BG1VOFS (*(vu8*)0x210E)
92
94#define REG_BG2HOFS (*(vu8*)0x210F)
95
97#define REG_BG2VOFS (*(vu8*)0x2110)
98
100#define REG_BG3HOFS (*(vu8*)0x2111)
101
103#define REG_BG3VOFS (*(vu8*)0x2112)
104
106#define REG_BG4HOFS (*(vu8*)0x2113)
107
109#define REG_BG4VOFS (*(vu8*)0x2114)
110
112#define REG_VMAIN (*(vu8*)0x2115)
115#define VMAIN_INC1 0x80
118#define VMAIN_INC32 0x81
119
121#define REG_VMADDL (*(vu8*)0x2116)
122
124#define REG_VMADDH (*(vu8*)0x2117)
125
127#define REG_VMDATAL (*(vu8*)0x2118)
128
130#define REG_VMDATAH (*(vu8*)0x2119)
131
133#define REG_M7SEL (*(vu8*)0x211A)
134
136#define REG_M7A (*(vu8*)0x211B)
137
139#define REG_M7B (*(vu8*)0x211C)
140
142#define REG_M7C (*(vu8*)0x211D)
143
145#define REG_M7D (*(vu8*)0x211E)
146
148#define REG_M7X (*(vu8*)0x211F)
149
151#define REG_M7Y (*(vu8*)0x2120)
152
154#define REG_CGADD (*(vu8*)0x2121)
155
157#define REG_CGDATA (*(vu8*)0x2122)
158
160#define REG_W12SEL (*(vu8*)0x2123)
161
163#define REG_W34SEL (*(vu8*)0x2124)
164
166#define REG_WOBJSEL (*(vu8*)0x2125)
167
169#define REG_WH0 (*(vu8*)0x2126)
170
172#define REG_WH1 (*(vu8*)0x2127)
173
175#define REG_WH2 (*(vu8*)0x2128)
176
178#define REG_WH3 (*(vu8*)0x2129)
179
181#define REG_WBGLOG (*(vu8*)0x212A)
182
184#define REG_WOBJLOG (*(vu8*)0x212B)
185
187#define REG_TM (*(vu8*)0x212C)
188
190#define REG_TS (*(vu8*)0x212D)
191
193#define REG_TMW (*(vu8*)0x212E)
194
196#define REG_TSW (*(vu8*)0x212F)
197
199#define REG_CGWSEL (*(vu8*)0x2130)
200
202#define REG_CGADSUB (*(vu8*)0x2131)
203
205#define REG_COLDATA (*(vu8*)0x2132)
206
208#define REG_SETINI (*(vu8*)0x2133)
209
211#define REG_MPYL (*(vu8*)0x2134)
212
214#define REG_MPYM (*(vu8*)0x2135)
215
217#define REG_MPYH (*(vu8*)0x2136)
218
220#define REG_SLHV (*(vu8*)0x2137)
221
223#define REG_OAMDATAREAD (*(vu8*)0x2138)
224
226#define REG_RDVRAML (*(vu8*)0x2139)
227
229#define REG_RDVRAMH (*(vu8*)0x213A)
230
232#define REG_RDCGRAM (*(vu8*)0x213B)
233
235#define REG_OPHCT (*(vu8*)0x213C)
236
238#define REG_OPVCT (*(vu8*)0x213D)
239
241#define REG_STAT77 (*(vu8*)0x213E)
242
244#define REG_STAT78 (*(vu8*)0x213F)
245 /* end of ppu_regs */
247
248/*============================================================================
249 * CPU Registers ($4200-$421F)
250 *============================================================================*/
251
257
259#define REG_NMITIMEN (*(vu8*)0x4200)
260
262#define REG_WRIO (*(vu8*)0x4201)
263
265#define REG_WRMPYA (*(vu8*)0x4202)
266
268#define REG_WRMPYB (*(vu8*)0x4203)
269
271#define REG_WRDIVL (*(vu8*)0x4204)
272
274#define REG_WRDIVH (*(vu8*)0x4205)
275
277#define REG_WRDIVB (*(vu8*)0x4206)
278
280#define REG_HTIMEL (*(vu8*)0x4207)
281
283#define REG_HTIMEH (*(vu8*)0x4208)
284
286#define REG_VTIMEL (*(vu8*)0x4209)
287
289#define REG_VTIMEH (*(vu8*)0x420A)
290
292#define REG_MDMAEN (*(vu8*)0x420B)
293
295#define REG_HDMAEN (*(vu8*)0x420C)
296
298#define REG_MEMSEL (*(vu8*)0x420D)
299
301#define REG_RDNMI (*(vu8*)0x4210)
302
304#define REG_TIMEUP (*(vu8*)0x4211)
305
307#define REG_HVBJOY (*(vu8*)0x4212)
308
310#define REG_RDIO (*(vu8*)0x4213)
311
313#define REG_RDDIVL (*(vu8*)0x4214)
314
316#define REG_RDDIVH (*(vu8*)0x4215)
317
319#define REG_RDMPYL (*(vu8*)0x4216)
320
322#define REG_RDMPYH (*(vu8*)0x4217)
323
325#define REG_JOYA (*(vu8*)0x4016)
326
328#define REG_JOYB (*(vu8*)0x4017)
329
331#define REG_JOY1L (*(vu8*)0x4218)
332
334#define REG_JOY1H (*(vu8*)0x4219)
335
337#define REG_JOY2L (*(vu8*)0x421A)
338
340#define REG_JOY2H (*(vu8*)0x421B)
341
343#define REG_JOY3L (*(vu8*)0x421C)
344
346#define REG_JOY3H (*(vu8*)0x421D)
347
349#define REG_JOY4L (*(vu8*)0x421E)
350
352#define REG_JOY4H (*(vu8*)0x421F)
353 /* end of cpu_regs */
355
356/*============================================================================
357 * DMA Registers ($43x0-$43xF)
358 *============================================================================*/
359
365
367#define REG_DMAP(n) (*(vu8*)(0x4300 + ((n) << 4)))
368
370#define REG_BBAD(n) (*(vu8*)(0x4301 + ((n) << 4)))
371
373#define REG_A1TL(n) (*(vu8*)(0x4302 + ((n) << 4)))
374
376#define REG_A1TH(n) (*(vu8*)(0x4303 + ((n) << 4)))
377
379#define REG_A1B(n) (*(vu8*)(0x4304 + ((n) << 4)))
380
382#define REG_DASL(n) (*(vu8*)(0x4305 + ((n) << 4)))
383
385#define REG_DASH(n) (*(vu8*)(0x4306 + ((n) << 4)))
386 /* end of dma_regs */
388
389/*============================================================================
390 * APU Registers ($2140-$2143)
391 *============================================================================*/
392
404
406#define REG_APUIO0 (*(vu8*)0x2140)
407
409#define REG_APUIO1 (*(vu8*)0x2141)
410
412#define REG_APUIO2 (*(vu8*)0x2142)
413
415#define REG_APUIO3 (*(vu8*)0x2143)
416 /* end of apu_regs */
418
419/*============================================================================
420 * Register Value Constants
421 *============================================================================*/
422
428
429/* INIDISP values */
430#define INIDISP_FORCE_BLANK 0x80
431#define INIDISP_BRIGHTNESS(n) ((n) & 0x0F)
432
433/* BGMODE values */
434#define BGMODE_MODE0 0
435#define BGMODE_MODE1 1
436#define BGMODE_MODE2 2
437#define BGMODE_MODE3 3
438#define BGMODE_MODE7 7
439
440/* NMITIMEN values */
441#define NMITIMEN_NMI_ENABLE 0x80
442#define NMITIMEN_JOY_ENABLE 0x01
443
444/* TM/TS values (main/sub screen enable) */
445#define TM_BG1 BIT(0)
446#define TM_BG2 BIT(1)
447#define TM_BG3 BIT(2)
448#define TM_BG4 BIT(3)
449#define TM_OBJ BIT(4)
450 /* end of reg_const */
452
453#endif /* OPENSNES_REGISTERS_H */
OpenSNES Standard Types.