Jo Engine  9
Jo Sega Saturn Engine
sega_saturn.h
Go to the documentation of this file.
1 /*
2 ** Jo Sega Saturn Engine
3 ** Copyright (c) 2012-2017, Johannes Fetz (johannesfetz@gmail.com)
4 ** All rights reserved.
5 **
6 ** Redistribution and use in source and binary forms, with or without
7 ** modification, are permitted provided that the following conditions are met:
8 ** * Redistributions of source code must retain the above copyright
9 ** notice, this list of conditions and the following disclaimer.
10 ** * Redistributions in binary form must reproduce the above copyright
11 ** notice, this list of conditions and the following disclaimer in the
12 ** documentation and/or other materials provided with the distribution.
13 ** * Neither the name of the Johannes Fetz nor the
14 ** names of its contributors may be used to endorse or promote products
15 ** derived from this software without specific prior written permission.
16 **
17 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18 ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 ** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 ** DISCLAIMED. IN NO EVENT SHALL Johannes Fetz BE LIABLE FOR ANY
21 ** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 ** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 ** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
35 #ifndef __JO_SEGA_SATURN_H__
36 # define __JO_SEGA_SATURN_H__
37 
38 /*
39 
40 -------------------------------------------------|-----------------------------|------------------------------
41 | Function | Normal Scroll Screen | Rotation Scroll Screen |
42 | |-----------------------------|-----------------------------|------------------------------
43 | | NBG0 | NBG1 | NBG2 | NBG3 | RBG0 | RBG1 |
44 -------------------------------------------------|-----------------------------|------------------------------
45 | Character Colour | 16 colours | 16 colours | 16 colours | 16 colours | 16 colours | 16 colours |
46 | Count | 256 " " | 256 " " | 256 " " | 256 " " | 256 " " | 256 " " |
47 | | 2048 " " | 2048 " " | | | 2048 " " | 2048 " " |
48 | | 32768 " " | 32768 " " | | | 32768 " " | 32768 " " |
49 | | 16770000 " " | | | | 16770000 " " | 16770000 " " |
50 -------------------------------------------------|-----------------------------|------------------------------
51 | Character Size | 1x1 Cells , 2x2 Cells |
52 -------------------------------------------------|-----------------------------|------------------------------
53 | Pattern Name | 1 word , 2 words |
54 | Data Size | |
55 -------------------------------------------------|-----------------------------|------------------------------
56 | Plane Size | 1 H x 1 V 1 Pages ; 2 H x 1 V 1 Pages ; 2 H x 2 V Pages (I don't understand ... ) |
57 -------------------------------------------------|-----------------------------|------------------------------
58 | Plane Count | 4 | 16 |
59 -------------------------------------------------|-----------------------------|------------------------------
60 | Bitmap Possible | Yes | No | Yes | No |
61 -------------------------------------------------|-----------------------------|------------------------------
62 | Bitmap Size | 512 x 256 | N/A | 512x256 | N/A |
63 | | 512 x 512 | | 512x512 | |
64 | | 1024 x 256 | | | |
65 | | 1024 x 512 | | | |
66 -------------------------------------------------|-----------------------------|------------------------------
67 | Scale | 0.25 x - 256 x | None | Any ? |
68 -------------------------------------------------|-----------------------------|------------------------------
69 | Rotation | No | Yes |
70 -------------------------------------------------|-----------------------------|-----------------------------|
71 | Linescroll | Yes | No |
72 -------------------------------------------------|-----------------------------|------------------------------
73 | Column Scroll | Yes | No |
74 -------------------------------------------------|-----------------------------|------------------------------
75 | Mosaic | Yes | Horizontal Only |
76 -------------------------------------------------|-----------------------------|------------------------------
77 */
78 
79 /*
80  __ _______ _____ __
81  \ \ / / __ \| __ \ /_ |
82  \ \ / /| | | | |__) | | |
83  \ \/ / | | | | ___/ | |
84  \ / | |__| | | | |
85  \/ |_____/|_| |_|
86 */
87 
89 # define JO_VDP1_VRAM (0x25C00000)
90 
91 # define JO_VDP1_FB (0x25C80000)
92 
93 # define JO_VDP1_REG (0x25D00000)
94 
95 # define JO_VDP1_LAST_REG (0x25D00016)
96 
98 # define JO_VDP1_TVMR (*(volatile unsigned short *)0x25D00000) // 0x0
99 
100 # define JO_VDP1_FBCR (*(volatile unsigned short *)0x25D00002) // 0x0
101 
102 # define JO_VDP1_PTMR (*(volatile unsigned short *)0x25D00004) // 0x2
103 
104 # define JO_VDP1_EWDR (*(volatile unsigned short *)0x25D00006) // 0x0
105 
106 # define JO_VDP1_EWLR (*(volatile unsigned short *)0x25D00008) // 0x0
107 
108 # define JO_VDP1_EWRR (*(volatile unsigned short *)0x25D0000A) // 0x58FF
109 
110 # define JO_VDP1_ENDR (*(volatile unsigned short *)0x25D0000C) // 0x0
111 
112 # define JO_VDP1_EDSR (*(volatile unsigned short *)0x25D00010) // 0x3
113 
114 # define JO_VDP1_LOPR (*(volatile unsigned short *)0x25D00012) // N/A
115 
116 # define JO_VDP1_COPR (*(volatile unsigned short *)0x25D00014) // N/A
117 
118 # define JO_VDP1_MODR (*(volatile unsigned short *)0x25D00016) // 0x1100
119 
120 # define JO_VDP1_USER_AREA_SIZE (0x71D38)
121 
122 # define JO_VDP1_USER_AREA_END_ADDR (0x25C7FEF8)
123 
124 # define JO_VDP1_TEXTURE_DEF_BASE_ADDRESS (0x10000)
125 
126 /*
127  __ _______ _____ ___
128  \ \ / / __ \| __ \ |__ \
129  \ \ / /| | | | |__) | ) |
130  \ \/ / | | | | ___/ / /
131  \ / | |__| | | / /_
132  \/ |_____/|_| |____|
133 */
135 # define JO_VDP2_REG (0x25F80000)
136 
137 # define JO_VDP2_LAST_REG (0x25F8011E)
138 
139 # define JO_VDP2_VRAM (0x25E00000)
140 
141 # define JO_VDP2_VRAM_A0 (JO_VDP2_VRAM)
142 
143 # define JO_VDP2_VRAM_A1 (0x25E20000)
144 
145 # define JO_VDP2_VRAM_B0 (0x25E40000)
146 
147 # define JO_VDP2_VRAM_B1 (0x25E60000)
148 
149 # define JO_VDP2_CRAM (0x25F00000)
150 
151 # define JO_VDP2_NBG1_CEL_ADR (JO_VDP2_VRAM_B1 + 0x02000)
152 # define JO_VDP2_NBG1_MAP_ADR (JO_VDP2_VRAM_B1 + 0x12000)
153 
154 /* 180002 - r/w - EXTEN - External Signal Enable Register
155  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
156  | -- | -- | -- | -- | -- | -- | EXLTEN | EXSYEN |
157  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
158  | -- | -- | -- | -- | -- | -- | DASEL | EXBGEN |
159  \----------|----------|----------|----------|----------|----------|----------|---------*/
160 # define JO_VDP2_TVMD (*(volatile unsigned short *)0x25F80000) // 0x8110 0x8120
161 # define JO_VDP2_EXTEN (*(volatile unsigned short *)0x25F80002) // 0x0
162 # define JO_VDP2_TVSTAT (*(volatile unsigned short *)0x25F80004) // N/A
163 
164 /* 180006 - r/w - VRSIZE - VRAM Size
165  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
166  | VRAMSZ | -- | -- | -- | -- | -- | -- | -- |
167  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
168  | -- | -- | -- | -- | VER3 | VER2 | VER1 | VER0 |
169  \----------|----------|----------|----------|----------|----------|----------|---------*/
170 # define JO_VDP2_VRSIZE (*(volatile unsigned short *)0x25F80006) // 0x0
171 
172 /* 180008 - r/o - HCNT - H-Counter
173  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
174  | -- | -- | -- | -- | -- | -- | HCT9 | HCT8 |
175  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
176  | HCT7 | HCT6 | HCT5 | HCT4 | HCT3 | HCT2 | HCT1 | HCT0 |
177  \----------|----------|----------|----------|----------|----------|----------|---------*/
178 # define JO_VDP2_HCNT (*(volatile unsigned short *)0x25F80008) // 0x275 0x26B
179 
180 /* 18000A - r/o - VCNT - V-Counter
181  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
182  | -- | -- | -- | -- | -- | -- | VCT9 | VCT8 |
183  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
184  | VCT7 | VCT6 | VCT5 | VCT4 | VCT3 | VCT2 | VCT1 | VCT0 |
185  \----------|----------|----------|----------|----------|----------|----------|---------*/
186 # define JO_VDP2_VCNT (*(volatile unsigned short *)0x25F8000A) // 0x36
187 
188 /* 18000E - r/w - RAMCTL - RAM Control
189  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
190  | CRKTE | -- | CRMD1 | CRMD0 | -- | -- | VRBMD | VRAMD |
191  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
192  | RDBSB11 | RDBSB10 | RDBSB01 | RDBSB00 | RDBSA11 | RDBSA10 | RDBSA01 | RDBSA00 |
193  \----------|----------|----------|----------|----------|----------|----------|---------*/
194 # define JO_VDP2_RAMCTL (*(volatile unsigned short *)0x25F8000E) // 0x1327
195 
196 # define JO_VDP2_CYCA0L (*(volatile unsigned short *)0x25F80010) // 0x5555
197 # define JO_VDP2_CYCA0U (*(volatile unsigned short *)0x25F80012) // 0xFEEE
198 # define JO_VDP2_CYCA1L (*(volatile unsigned short *)0x25F80014) // 0x5555
199 # define JO_VDP2_CYCA1U (*(volatile unsigned short *)0x25F80016) // 0xFEEE
200 # define JO_VDP2_CYCB0L (*(volatile unsigned short *)0x25F80018) // 0xFFFF
201 # define JO_VDP2_CYCB0U (*(volatile unsigned short *)0x25F8001A) // 0xEEEE
202 # define JO_VDP2_CYCB1L (*(volatile unsigned short *)0x25F8001C) // 0x44F
203 # define JO_VDP2_CYCB1U (*(volatile unsigned short *)0x25F8001E) // 0xEEEE
204 
205 /* 180020 - r/w - BGON - SCREEN DISPLAY ENABLE
206 
207  this register allows each tilemap to be enabled or disabled and also which layers are solid
208 
209  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
210  | -- | -- | -- | R0TPON | N3TPON | N2TPON | N1TPON | N0TPON |
211  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
212  | -- | -- | R1ON | R0ON | N3ON | N2ON | N1ON | N0ON |
213  \----------|----------|----------|----------|----------|----------|----------|---------*/
214 # define JO_VDP2_BGON (*(volatile unsigned short *)0x25F80020) // 0x3
215 
216 /*
217 180022 - MZCTL - Mosaic Control
218 bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
219  | -- | -- | -- | -- | -- | -- | -- | -- |
220  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
221  | -- | -- | -- | -- | -- | -- | -- | -- |
222  \----------|----------|----------|----------|----------|----------|----------|---------*/
223 # define JO_VDP2_MZCTL (*(volatile unsigned short *)0x25F80022) // 0x0
224 # define JO_VDP2_SFSEL (*(volatile unsigned short *)0x25F80024) // 0x0
225 # define JO_VDP2_SFCODE (*(volatile unsigned short *)0x25F80026) // 0x0
226 # define JO_VDP2_CHCTLA (*(volatile unsigned short *)0x25F80028) // 0x3210
227 # define JO_VDP2_CHCTLB (*(volatile unsigned short *)0x25F8002A) // 0x1000
228 /*
229 18002C - BMPNA - Bitmap Palette Number (NBG0, NBG1)
230  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
231  | -- | -- | -- | -- | -- | -- | -- | -- |
232  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
233  | -- | -- | -- | -- | -- | -- | -- | -- |
234  \----------|----------|----------|----------|----------|----------|----------|---------*/
235 # define JO_VDP2_BMPNA (*(volatile unsigned short *)0x25F8002C) // 0x0
236 
237 /* 18002E - Bitmap Palette Number (RBG0)
238  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
239  | -- | -- | -- | -- | -- | -- | -- | -- |
240  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
241  | -- | -- | -- | -- | -- | -- | -- | -- |
242  \----------|----------|----------|----------|----------|----------|----------|---------*/
243 # define JO_VDP2_BMPNB (*(volatile unsigned short *)0x25F8002E) // 0x0
244 
245 /* 180030 - PNCN0 - Pattern Name Control (NBG0)
246  bit-> /----15----|----14----|----13----|----12----|----11----|----10----|----09----|----08----\
247  | N0PNB | N0CNSM | -- | -- | -- | -- | N0SPR | N0SCC |
248  |----07----|----06----|----05----|----04----|----03----|----02----|----01----|----00----|
249  | N0SPLT6 | N0SPLT5 | N0SPLT4 | N0SPCN4 | N0SPCN3 | N0SPCN2 | N0SPCN1 | N0SPCN0 |
250  \----------|----------|----------|----------|----------|----------|----------|---------*/
251 # define JO_VDP2_PNCN0 (*(volatile unsigned short *)0x25F80030) // 0x800C
252 # define JO_VDP2_PNCN1 (*(volatile unsigned short *)0x25F80032) // 0xC00E
253 # define JO_VDP2_PNCN2 (*(volatile unsigned short *)0x25F80034) // 0xC000
254 # define JO_VDP2_PNCN3 (*(volatile unsigned short *)0x25F80036) // 0xC000
255 # define JO_VDP2_PNCR (*(volatile unsigned short *)0x25F80038) // 0xC000
256 # define JO_VDP2_PLSZ (*(volatile unsigned short *)0x25F8003A) // 0x0
257 # define JO_VDP2_MPOFN (*(volatile unsigned short *)0x25F8003C) // 0x0
258 # define JO_VDP2_MPOFR (*(volatile unsigned short *)0x25F8003E) // 0x0
259 
260 # define JO_VDP2_MPABN0 (*(volatile unsigned short *)0x25F80040) // 0x3B3B
261 # define JO_VDP2_MPCDN0 (*(volatile unsigned short *)0x25F80042) // 0x3B3B
262 # define JO_VDP2_MPABN1 (*(volatile unsigned short *)0x25F80044) // 0x3939
263 # define JO_VDP2_MPCDN1 (*(volatile unsigned short *)0x25F80046) // 0x3939
264 # define JO_VDP2_MPABN2 (*(volatile unsigned short *)0x25F80048) // 0x0
265 # define JO_VDP2_MPCDN2 (*(volatile unsigned short *)0x25F8004A) // 0x0
266 # define JO_VDP2_MPABN3 (*(volatile unsigned short *)0x25F8004C) // 0x0
267 # define JO_VDP2_MPCDN3 (*(volatile unsigned short *)0x25F8004E) // 0x0
268 
269 # define JO_VDP2_MPABRA (*(volatile unsigned short *)0x25F80050) // 0x2020
270 # define JO_VDP2_MPCDRA (*(volatile unsigned short *)0x25F80052) // 0x2020
271 # define JO_VDP2_MPEFRA (*(volatile unsigned short *)0x25F80054) // 0x2020
272 # define JO_VDP2_MPGHRA (*(volatile unsigned short *)0x25F80056) // 0x2020
273 # define JO_VDP2_MPIJRA (*(volatile unsigned short *)0x25F80058) // 0x2020
274 # define JO_VDP2_MPKLRA (*(volatile unsigned short *)0x25F8005A) // 0x2020
275 # define JO_VDP2_MPMNRA (*(volatile unsigned short *)0x25F8005C) // 0x2020
276 # define JO_VDP2_MPOPRA (*(volatile unsigned short *)0x25F8005E) // 0x2020
277 
278 # define JO_VDP2_MPABRB (*(volatile unsigned short *)0x25F80060) // 0x2828
279 # define JO_VDP2_MPCDRB (*(volatile unsigned short *)0x25F80062) // 0x2828
280 # define JO_VDP2_MPEFRB (*(volatile unsigned short *)0x25F80064) // 0x2828
281 # define JO_VDP2_MPGHRB (*(volatile unsigned short *)0x25F80066) // 0x2838
282 # define JO_VDP2_MPIJRB (*(volatile unsigned short *)0x25F80068) // 0x2828
283 # define JO_VDP2_MPKLRB (*(volatile unsigned short *)0x25F8006A) // 0x2828
284 # define JO_VDP2_MPMNRB (*(volatile unsigned short *)0x25F8006C) // 0x2828
285 # define JO_VDP2_MPOPRB (*(volatile unsigned short *)0x25F8006E) // 0x2828
286 
287 # define JO_VDP2_SCXIN0 (*(volatile unsigned short *)0x25F80070) // 0x0
288 # define JO_VDP2_SCXDN0 (*(volatile unsigned short *)0x25F80072) // 0x0
289 # define JO_VDP2_SCYIN0 (*(volatile unsigned short *)0x25F80074) // 0x0
290 # define JO_VDP2_SCYDN0 (*(volatile unsigned short *)0x25F80076) // 0x0
291 # define JO_VDP2_ZMXIN0 (*(volatile unsigned short *)0x25F80078) // 0x1
292 # define JO_VDP2_ZMXDN0 (*(volatile unsigned short *)0x25F8007A) // 0x0
293 # define JO_VDP2_ZMYIN0 (*(volatile unsigned short *)0x25F8007C) // 0x1
294 # define JO_VDP2_ZMYDN0 (*(volatile unsigned short *)0x25F8007E) // 0x0
295 
296 # define JO_VDP2_SCXIN1 (*(volatile unsigned short *)0x25F80080) // 0x0
297 # define JO_VDP2_SCXDN1 (*(volatile unsigned short *)0x25F80082) // 0x0
298 # define JO_VDP2_SCYIN1 (*(volatile unsigned short *)0x25F80084) // 0x0
299 # define JO_VDP2_SCYDN1 (*(volatile unsigned short *)0x25F80086) // 0x0
300 # define JO_VDP2_ZMXIN1 (*(volatile unsigned short *)0x25F80088) // 0x1
301 # define JO_VDP2_ZMXDN1 (*(volatile unsigned short *)0x25F8008A) // 0x0
302 # define JO_VDP2_ZMYIN1 (*(volatile unsigned short *)0x25F8008C) // 0x1
303 # define JO_VDP2_ZMYDN1 (*(volatile unsigned short *)0x25F8008E) // 0x0
304 
305 # define JO_VDP2_SCXN2 (*(volatile unsigned short *)0x25F80090) // 0x0
306 # define JO_VDP2_SCYN2 (*(volatile unsigned short *)0x25F80092) // 0x0
307 # define JO_VDP2_SCXN3 (*(volatile unsigned short *)0x25F80094) // 0x0
308 # define JO_VDP2_SCYN3 (*(volatile unsigned short *)0x25F80096) // 0x0
309 # define JO_VDP2_ZMCTL (*(volatile unsigned short *)0x25F80098) // 0x0
310 # define JO_VDP2_SCRCTL (*(volatile unsigned short *)0x25F8009A) // 0x0
311 # define JO_VDP2_VCSTAU (*(volatile unsigned short *)0x25F8009C) // 0x0
312 # define JO_VDP2_VCSTAL (*(volatile unsigned short *)0x25F8009E) // 0x0
313 
314 # define JO_VDP2_LSTA0U (*(volatile unsigned short *)0x25F800A0) // 0x0
315 # define JO_VDP2_LSTA0L (*(volatile unsigned short *)0x25F800A2) // 0x0
316 # define JO_VDP2_LSTA1U (*(volatile unsigned short *)0x25F800A4) // 0x0
317 # define JO_VDP2_LSTA1L (*(volatile unsigned short *)0x25F800A6) // 0x0
318 # define JO_VDP2_LCTAU (*(volatile unsigned short *)0x25F800A8) // 0x0
319 # define JO_VDP2_LCTAL (*(volatile unsigned short *)0x25F800AA) // 0x0
320 # define JO_VDP2_BKTAU (*(volatile unsigned short *)0x25F800AC) // 0x12F1
321 # define JO_VDP2_BKTAL (*(volatile unsigned short *)0x25F800AE) // 0xFFFF
322 
323 # define JO_VDP2_RPMD (*(volatile unsigned short *)0x25F800B0) // 0x0
324 # define JO_VDP2_RPRCTL (*(volatile unsigned short *)0x25F800B2) // 0x0
325 # define JO_VDP2_KTCTL (*(volatile unsigned short *)0x25F800B4) // 0x0
326 # define JO_VDP2_KTAOF (*(volatile unsigned short *)0x25F800B6) // 0x0
327 # define JO_VDP2_OVPNRA (*(volatile unsigned short *)0x25F800B8) // 0x0
328 # define JO_VDP2_OVPNRB (*(volatile unsigned short *)0x25F800BA) // 0x0
329 # define JO_VDP2_RPTAU (*(volatile unsigned short *)0x25F800BC) // 0x1
330 # define JO_VDP2_RPTAL (*(volatile unsigned short *)0x25F800BE) // 0xFF80
331 
332 # define JO_VDP2_WPSX0 (*(volatile unsigned short *)0x25F800C0) // 0x0
333 # define JO_VDP2_WPSY0 (*(volatile unsigned short *)0x25F800C2) // 0x0
334 # define JO_VDP2_WPEX0 (*(volatile unsigned short *)0x25F800C4) // 0x27E SCRW-1
335 # define JO_VDP2_WPEY0 (*(volatile unsigned short *)0x25F800C6) // 0x1BE SCRH-1
336 # define JO_VDP2_WPSX1 (*(volatile unsigned short *)0x25F800C8) // 0x0
337 # define JO_VDP2_WPSY1 (*(volatile unsigned short *)0x25F800CA) // 0x0
338 # define JO_VDP2_WPEX1 (*(volatile unsigned short *)0x25F800CC) // 0x27E SCRW-1
339 # define JO_VDP2_WPEY1 (*(volatile unsigned short *)0x25F800CE) // 0x1BE SCRH-1
340 
341 # define JO_VDP2_WCTLA (*(volatile unsigned short *)0x25F800D0) // 0x0
342 # define JO_VDP2_WCTLB (*(volatile unsigned short *)0x25F800D2) // 0x0
343 # define JO_VDP2_WCTLC (*(volatile unsigned short *)0x25F800D4) // 0x0
344 # define JO_VDP2_WCTLD (*(volatile unsigned short *)0x25F800D6) // 0x0
345 # define JO_VDP2_LWTA0U (*(volatile unsigned short *)0x25F800D8) // 0x0
346 # define JO_VDP2_LWTA0L (*(volatile unsigned short *)0x25F800DA) // 0x0
347 # define JO_VDP2_LWTA1U (*(volatile unsigned short *)0x25F800DC) // 0x0
348 # define JO_VDP2_LWTA1L (*(volatile unsigned short *)0x25F800DE) // 0x0
349 
350 # define JO_VDP2_SPCTL (*(volatile unsigned short *)0x25F800E0) // 0x23
351 # define JO_VDP2_SDCTL (*(volatile unsigned short *)0x25F800E2) // 0x0
352 # define JO_VDP2_CRAOFA (*(volatile unsigned short *)0x25F800E4) // 0x0
353 # define JO_VDP2_CRAOFB (*(volatile unsigned short *)0x25F800E6) // 0x0
354 # define JO_VDP2_LNCLEN (*(volatile unsigned short *)0x25F800E8) // 0x0
355 # define JO_VDP2_SFPRMD (*(volatile unsigned short *)0x25F800EA) // 0x0
356 # define JO_VDP2_CCCTL (*(volatile unsigned short *)0x25F800EC) // 0x0
357 # define JO_VDP2_SFCCMD (*(volatile unsigned short *)0x25F800EE) // 0x0
358 
359 # define JO_VDP2_PRISA (*(volatile unsigned short *)0x25F800F0) // 0x506
360 # define JO_VDP2_PRISB (*(volatile unsigned short *)0x25F800F2) // 0x505
361 # define JO_VDP2_PRISC (*(volatile unsigned short *)0x25F800F4) // 0x505
362 # define JO_VDP2_PRISD (*(volatile unsigned short *)0x25F800F6) // 0x505
363 # define JO_VDP2_PRINA (*(volatile unsigned short *)0x25F800F8) // 0x607
364 # define JO_VDP2_PRINB (*(volatile unsigned short *)0x25F800FA) // 0x102
365 # define JO_VDP2_PRIR (*(volatile unsigned short *)0x25F800FC) // 0x4
366 # define JO_VDP2_RESERVE (*(volatile unsigned short *)0x25F800FE) // 0x0
367 
368 # define JO_VDP2_CCRSA (*(volatile unsigned short *)0x25F80100) // 0x0
369 # define JO_VDP2_CCRSB (*(volatile unsigned short *)0x25F80102) // 0x0
370 # define JO_VDP2_CCRSC (*(volatile unsigned short *)0x25F80104) // 0x0
371 # define JO_VDP2_CCRSD (*(volatile unsigned short *)0x25F80106) // 0x0
372 # define JO_VDP2_CCRNA (*(volatile unsigned short *)0x25F80108) // 0x0
373 # define JO_VDP2_CCRNB (*(volatile unsigned short *)0x25F8010A) // 0x0
374 # define JO_VDP2_CCRR (*(volatile unsigned short *)0x25F8010C) // 0x0
375 # define JO_VDP2_CCRLB (*(volatile unsigned short *)0x25F8010E) // 0x0
376 
377 # define JO_VDP2_CLOFEN (*(volatile unsigned short *)0x25F80110) // 0x0
378 # define JO_VDP2_CLOFSL (*(volatile unsigned short *)0x25F80112) // 0x0
379 # define JO_VDP2_COAR (*(volatile unsigned short *)0x25F80114) // 0x0
380 # define JO_VDP2_COAG (*(volatile unsigned short *)0x25F80116) // 0x0
381 # define JO_VDP2_COAB (*(volatile unsigned short *)0x25F80118) // 0x0
382 # define JO_VDP2_COBR (*(volatile unsigned short *)0x25F8011A) // 0x0
383 # define JO_VDP2_COBG (*(volatile unsigned short *)0x25F8011C) // 0x0
384 # define JO_VDP2_COBB (*(volatile unsigned short *)0x25F8011E) // 0x0
385 
386 #endif /* !__JO_SEGA_SATURN_H__ */
387 
388 /*
389 ** END OF FILE
390 */