1 /*---------------------------------------------------------------------------*
2 Project: TwlSDK - G2 -
3 File: gx_bgcnt.h
4
5 Copyright 2003-2009 Nintendo. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 $Date:: 2009-06-19#$
14 $Rev: 10786 $
15 $Author: okajima_manabu $
16 *---------------------------------------------------------------------------*/
17
18 #ifndef NITRO_GX_BGCNT_H_
19 #define NITRO_GX_BGCNT_H_
20
21 #include <nitro/gx/gxcommon.h>
22 #ifndef SDK_TWL
23 #include <nitro/hw/ARM9/ioreg_GX.h>
24 #include <nitro/hw/ARM9/ioreg_G2.h>
25 #include <nitro/hw/ARM9/ioreg_GXS.h>
26 #include <nitro/hw/ARM9/ioreg_G2S.h>
27 #else
28 #include <twl/hw/ARM9/ioreg_GX.h>
29 #include <twl/hw/ARM9/ioreg_G2.h>
30 #include <twl/hw/ARM9/ioreg_GXS.h>
31 #include <twl/hw/ARM9/ioreg_G2S.h>
32 #endif
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 //----------------------------------------------------------------------------
39 // Type definition
40 //----------------------------------------------------------------------------
41
42 typedef union
43 {
44 u16 raw;
45 struct
46 {
47 u16 priority:2;
48 u16 charBase:4;
49 u16 mosaic:1;
50 u16 colorMode:1;
51 u16 screenBase:5;
52 u16 bgExtPltt:1;
53 u16 screenSize:2;
54 };
55 }
56 GXBg01Control;
57
58 typedef union
59 {
60 u16 raw;
61 struct
62 {
63 u16 priority:2;
64 u16 charBase:4;
65 u16 mosaic:1;
66 u16 colorMode:1;
67 u16 screenBase:5;
68 u16 _reserve:1;
69 u16 screenSize:2;
70 };
71 }
72 GXBg23ControlText;
73
74 typedef union
75 {
76 u16 raw;
77 struct
78 {
79 u16 priority:2;
80 u16 charBase:4;
81 u16 mosaic:1;
82 u16 _reserve:1;
83 u16 screenBase:5;
84 u16 areaOver:1;
85 u16 screenSize:2;
86 };
87 }
88 GXBg23ControlAffine;
89
90 typedef union
91 {
92 u16 raw;
93 struct
94 {
95 u16 priority:2;
96 u16 _reserve1:1;
97 u16 charBase:3;
98 u16 mosaic:1;
99 u16 _reserve2:1;
100 u16 screenBase:5;
101 u16 areaOver:1;
102 u16 screenSize:2;
103 };
104 }
105 GXBg23Control256x16Pltt;
106
107 typedef union
108 {
109 u16 raw;
110 struct
111 {
112 u16 priority:2;
113 u16 charBase:4;
114 u16 mosaic:1;
115 u16 _reserve:1;
116 u16 screenBase:5;
117 u16 areaOver:1;
118 u16 screenSize:2;
119 };
120 }
121 GXBg23Control256x16Affine;
122
123
124 typedef union
125 {
126 u16 raw;
127 struct
128 {
129 u16 priority:2;
130 u16 _reserve1:4;
131 u16 mosaic:1;
132 u16 _reserve2:1;
133 u16 screenBase:5;
134 u16 areaOver:1;
135 u16 screenSize:2;
136 };
137 }
138 GXBg23Control256Bmp, GXBg23ControlDCBmp;
139
140 typedef union
141 {
142 u16 raw;
143 struct
144 {
145 u16 priority:2;
146 u16 _reserve1:4;
147 u16 mosaic:1;
148 u16 _reserve2:6;
149 u16 areaOver:1;
150 u16 screenSize:2;
151 };
152 }
153 GXBg2ControlLargeBmp;
154
155
156
157 typedef enum
158 {
159 GX_BG_SCRSIZE_TEXT_256x256 = 0,
160 GX_BG_SCRSIZE_TEXT_512x256 = 1,
161 GX_BG_SCRSIZE_TEXT_256x512 = 2,
162 GX_BG_SCRSIZE_TEXT_512x512 = 3
163 }
164 GXBGScrSizeText;
165
166 #define GX_BG_SCRSIZE_TEXT_ASSERT(x) \
167 SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_TEXT_256x256, GX_BG_SCRSIZE_TEXT_512x512)
168
169 typedef enum
170 {
171 GX_BG_SCRSIZE_AFFINE_128x128 = 0,
172 GX_BG_SCRSIZE_AFFINE_256x256 = 1,
173 GX_BG_SCRSIZE_AFFINE_512x512 = 2,
174 GX_BG_SCRSIZE_AFFINE_1024x1024 = 3
175 }
176 GXBGScrSizeAffine;
177
178 #define GX_BG_SCRSIZE_AFFINE_ASSERT(x) \
179 SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_AFFINE_128x128, GX_BG_SCRSIZE_AFFINE_1024x1024)
180
181 typedef enum
182 {
183 GX_BG_SCRSIZE_256x16PLTT_128x128 = 0,
184 GX_BG_SCRSIZE_256x16PLTT_256x256 = 1,
185 GX_BG_SCRSIZE_256x16PLTT_512x512 = 2,
186 GX_BG_SCRSIZE_256x16PLTT_1024x1024 = 3
187 }
188 GXBGScrSize256x16Pltt;
189
190 #define GX_BG_SCRSIZE_256x16PLTT_ASSERT(x) \
191 SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_256x16PLTT_128x128, GX_BG_SCRSIZE_256x16PLTT_1024x1024)
192
193 typedef enum
194 {
195 GX_BG_SCRSIZE_256BMP_128x128 = 0,
196 GX_BG_SCRSIZE_256BMP_256x256 = 1,
197 GX_BG_SCRSIZE_256BMP_512x256 = 2,
198 GX_BG_SCRSIZE_256BMP_512x512 = 3
199 }
200 GXBGScrSize256Bmp;
201
202 #define GX_BG_SCRSIZE_256BMP_ASSERT(x) \
203 SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_256BMP_128x128, GX_BG_SCRSIZE_256BMP_512x512)
204
205 typedef enum
206 {
207 GX_BG_SCRSIZE_DCBMP_128x128 = 0,
208 GX_BG_SCRSIZE_DCBMP_256x256 = 1,
209 GX_BG_SCRSIZE_DCBMP_512x256 = 2,
210 GX_BG_SCRSIZE_DCBMP_512x512 = 3
211 }
212 GXBGScrSizeDcBmp;
213
214 #define GX_BG_SCRSIZE_DCBMP_ASSERT(x) \
215 SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_DCBMP_128x128, GX_BG_SCRSIZE_DCBMP_512x512)
216
217 typedef enum
218 {
219 GX_BG_SCRSIZE_LARGEBMP_512x1024 = 0,
220 GX_BG_SCRSIZE_LARGEBMP_1024x512 = 1
221 }
222 GXBGScrSizeLargeBmp;
223
224 #define GX_BG_SCRSIZE_LARGEBMP_ASSERT(x) \
225 SDK_MINMAX_ASSERT(x, GX_BG_SCRSIZE_LARGEBMP_512x1024, GX_BG_SCRSIZE_LARGEBMP_1024x512)
226
227 typedef enum
228 {
229 GX_BG_COLORMODE_16 = 0,
230 GX_BG_COLORMODE_256 = 1
231 }
232 GXBGColorMode;
233
234 #define GX_BG_COLORMODE_ASSERT(x) \
235 SDK_MINMAX_ASSERT(x, GX_BG_COLORMODE_16, GX_BG_COLORMODE_256)
236
237
238 typedef enum
239 {
240 GX_BG_AREAOVER_XLU = 0,
241 GX_BG_AREAOVER_REPEAT = 1
242 }
243 GXBGAreaOver;
244
245 #define GX_BG_AREAOVER_ASSERT(x) \
246 SDK_MINMAX_ASSERT(x, GX_BG_AREAOVER_XLU, GX_BG_AREAOVER_REPEAT)
247
248 typedef enum
249 {
250 GX_BG_CHARBASE_0x00000 = 0,
251 GX_BG_CHARBASE_0x04000 = 1,
252 GX_BG_CHARBASE_0x08000 = 2,
253 GX_BG_CHARBASE_0x0c000 = 3,
254 GX_BG_CHARBASE_0x10000 = 4,
255 GX_BG_CHARBASE_0x14000 = 5,
256 GX_BG_CHARBASE_0x18000 = 6,
257 GX_BG_CHARBASE_0x1c000 = 7,
258 GX_BG_CHARBASE_0x20000 = 8,
259 GX_BG_CHARBASE_0x24000 = 9,
260 GX_BG_CHARBASE_0x28000 = 10,
261 GX_BG_CHARBASE_0x2c000 = 11,
262 GX_BG_CHARBASE_0x30000 = 12,
263 GX_BG_CHARBASE_0x34000 = 13,
264 GX_BG_CHARBASE_0x38000 = 14,
265 GX_BG_CHARBASE_0x3c000 = 15
266 }
267 GXBGCharBase;
268
269 #define GX_BG_CHARBASE_ASSERT(x) \
270 SDK_MINMAX_ASSERT(x, GX_BG_CHARBASE_0x00000, GX_BG_CHARBASE_0x3c000)
271
272 typedef enum
273 {
274 GX_BG_SCRBASE_0x0000 = 0,
275 GX_BG_SCRBASE_0x0800 = 1,
276 GX_BG_SCRBASE_0x1000 = 2,
277 GX_BG_SCRBASE_0x1800 = 3,
278 GX_BG_SCRBASE_0x2000 = 4,
279 GX_BG_SCRBASE_0x2800 = 5,
280 GX_BG_SCRBASE_0x3000 = 6,
281 GX_BG_SCRBASE_0x3800 = 7,
282 GX_BG_SCRBASE_0x4000 = 8,
283 GX_BG_SCRBASE_0x4800 = 9,
284 GX_BG_SCRBASE_0x5000 = 10,
285 GX_BG_SCRBASE_0x5800 = 11,
286 GX_BG_SCRBASE_0x6000 = 12,
287 GX_BG_SCRBASE_0x6800 = 13,
288 GX_BG_SCRBASE_0x7000 = 14,
289 GX_BG_SCRBASE_0x7800 = 15,
290 GX_BG_SCRBASE_0x8000 = 16,
291 GX_BG_SCRBASE_0x8800 = 17,
292 GX_BG_SCRBASE_0x9000 = 18,
293 GX_BG_SCRBASE_0x9800 = 19,
294 GX_BG_SCRBASE_0xa000 = 20,
295 GX_BG_SCRBASE_0xa800 = 21,
296 GX_BG_SCRBASE_0xb000 = 22,
297 GX_BG_SCRBASE_0xb800 = 23,
298 GX_BG_SCRBASE_0xc000 = 24,
299 GX_BG_SCRBASE_0xc800 = 25,
300 GX_BG_SCRBASE_0xd000 = 26,
301 GX_BG_SCRBASE_0xd800 = 27,
302 GX_BG_SCRBASE_0xe000 = 28,
303 GX_BG_SCRBASE_0xe800 = 29,
304 GX_BG_SCRBASE_0xf000 = 30,
305 GX_BG_SCRBASE_0xf800 = 31
306 }
307 GXBGScrBase;
308
309 #define GX_BG_SCRBASE_ASSERT(x) \
310 SDK_MINMAX_ASSERT(x, GX_BG_SCRBASE_0x0000, GX_BG_SCRBASE_0xf800)
311
312 typedef enum
313 {
314 GX_BG_BMPSCRBASE_0x00000 = 0,
315 GX_BG_BMPSCRBASE_0x04000 = 1,
316 GX_BG_BMPSCRBASE_0x08000 = 2,
317 GX_BG_BMPSCRBASE_0x0c000 = 3,
318 GX_BG_BMPSCRBASE_0x10000 = 4,
319 GX_BG_BMPSCRBASE_0x14000 = 5,
320 GX_BG_BMPSCRBASE_0x18000 = 6,
321 GX_BG_BMPSCRBASE_0x1c000 = 7,
322 GX_BG_BMPSCRBASE_0x20000 = 8,
323 GX_BG_BMPSCRBASE_0x24000 = 9,
324 GX_BG_BMPSCRBASE_0x28000 = 10,
325 GX_BG_BMPSCRBASE_0x2c000 = 11,
326 GX_BG_BMPSCRBASE_0x30000 = 12,
327 GX_BG_BMPSCRBASE_0x34000 = 13,
328 GX_BG_BMPSCRBASE_0x38000 = 14,
329 GX_BG_BMPSCRBASE_0x3c000 = 15,
330 GX_BG_BMPSCRBASE_0x40000 = 16,
331 GX_BG_BMPSCRBASE_0x44000 = 17,
332 GX_BG_BMPSCRBASE_0x48000 = 18,
333 GX_BG_BMPSCRBASE_0x4c000 = 19,
334 GX_BG_BMPSCRBASE_0x50000 = 20,
335 GX_BG_BMPSCRBASE_0x54000 = 21,
336 GX_BG_BMPSCRBASE_0x58000 = 22,
337 GX_BG_BMPSCRBASE_0x5c000 = 23,
338 GX_BG_BMPSCRBASE_0x60000 = 24,
339 GX_BG_BMPSCRBASE_0x64000 = 25,
340 GX_BG_BMPSCRBASE_0x68000 = 26,
341 GX_BG_BMPSCRBASE_0x6c000 = 27,
342 GX_BG_BMPSCRBASE_0x70000 = 28,
343 GX_BG_BMPSCRBASE_0x74000 = 29,
344 GX_BG_BMPSCRBASE_0x78000 = 30,
345 GX_BG_BMPSCRBASE_0x7c000 = 31
346 }
347 GXBGBmpScrBase;
348
349 #define GX_BG_BMPSCRBASE_ASSERT(x) \
350 SDK_MINMAX_ASSERT(x, GX_BG_BMPSCRBASE_0x00000, GX_BG_BMPSCRBASE_0x7c000)
351
352 typedef enum
353 {
354 GX_BG_EXTPLTT_01 = 0,
355 GX_BG_EXTPLTT_23 = 1
356 }
357 GXBGExtPltt;
358
359 #define GX_BG_EXTPLTT_ASSERT(x) \
360 SDK_MINMAX_ASSERT(x, GX_BG_EXTPLTT_01, GX_BG_EXTPLTT_23)
361
362 #define GX_BG_PRIORITY_ASSERT(x) SDK_MINMAX_ASSERT(x, 0, 3)
363
364
365 typedef enum
366 {
367 GX_BG_EXTMODE_256x16PLTT =
368 (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (0 << REG_G2_BG2CNT_COLORMODE_SHIFT),
369 GX_BG_EXTMODE_256BITMAP =
370 (0 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT),
371 GX_BG_EXTMODE_DCBITMAP =
372 (1 << REG_G2_BG2CNT_CHARBASE_SHIFT) | (1 << REG_G2_BG2CNT_COLORMODE_SHIFT)
373 }
374 GXBGExtMode;
375
376
377 /* if include from Other Environment for exsample VC or BCB, */
378 /* please define SDK_FROM_TOOL */
379 #if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL))
380
381 //----------------------------------------------------------------------------
382 // Declaration of function
383 //----------------------------------------------------------------------------
384
385 //
386 // Main 2D engine
387 //
388
389 // BG0CNT
390 static void G2_SetBG0Control(GXBGScrSizeText screenSize,
391 GXBGColorMode colorMode,
392 GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt);
393
394 // BG1CNT
395 static void G2_SetBG1Control(GXBGScrSizeText screenSize,
396 GXBGColorMode colorMode,
397 GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt);
398
399 // BG2CNT
400 static void G2_SetBG2ControlText(GXBGScrSizeText screenSize,
401 GXBGColorMode colorMode,
402 GXBGScrBase screenBase, GXBGCharBase charBase);
403
404 static void G2_SetBG2ControlAffine(GXBGScrSizeAffine screenSize,
405 GXBGAreaOver areaOver,
406 GXBGScrBase screenBase, GXBGCharBase charBase);
407
408 #define G2_SetBG2Control256x16Pltt G2_SetBG2Control256x16Affine
409 static void G2_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
410 GXBGAreaOver areaOver,
411 GXBGScrBase screenBase, GXBGCharBase charBase);
412
413 static void G2_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize,
414 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
415
416 static void G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize,
417 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
418
419 static void G2_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver);
420
421 // BG3CNT
422 static void G2_SetBG3ControlText(GXBGScrSizeText screenSize,
423 GXBGColorMode colorMode,
424 GXBGScrBase screenBase, GXBGCharBase charBase);
425
426 static void G2_SetBG3ControlAffine(GXBGScrSizeAffine screenSize,
427 GXBGAreaOver areaOver,
428 GXBGScrBase screenBase, GXBGCharBase charBase);
429
430 #define G2_SetBG3Control256x16Pltt G2_SetBG3Control256x16Affine
431 static void G2_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
432 GXBGAreaOver areaOver,
433 GXBGScrBase screenBase, GXBGCharBase charBase);
434
435 static void G2_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize,
436 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
437
438 static void G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize,
439 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
440
441 static void G2_SetBG0Priority(int priority);
442 static void G2_SetBG1Priority(int priority);
443 static void G2_SetBG2Priority(int priority);
444 static void G2_SetBG3Priority(int priority);
445
446 static void G2_BG0Mosaic(BOOL enable);
447 static void G2_BG1Mosaic(BOOL enable);
448 static void G2_BG2Mosaic(BOOL enable);
449 static void G2_BG3Mosaic(BOOL enable);
450
451 // Utilities
452 void *G2_GetBG0ScrPtr(void);
453 void *G2_GetBG1ScrPtr(void);
454 void *G2_GetBG2ScrPtr(void);
455 void *G2_GetBG3ScrPtr(void);
456 void *G2_GetBG0CharPtr(void);
457 void *G2_GetBG1CharPtr(void);
458 void *G2_GetBG2CharPtr(void);
459 void *G2_GetBG3CharPtr(void);
460 static void *G2_GetOBJCharPtr(void); // fixed(always returns (void*)HW_OBJ_VRAM)
461
462 //
463 // Sub 2D engine
464 //
465
466 // BG0CNT
467 static void G2S_SetBG0Control(GXBGScrSizeText screenSize,
468 GXBGColorMode colorMode,
469 GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt);
470
471 // BG1CNT
472 static void G2S_SetBG1Control(GXBGScrSizeText screenSize,
473 GXBGColorMode colorMode,
474 GXBGScrBase screenBase, GXBGCharBase charBase, GXBGExtPltt bgExtPltt);
475
476 // BG2CNT
477 static void G2S_SetBG2ControlText(GXBGScrSizeText screenSize,
478 GXBGColorMode colorMode,
479 GXBGScrBase screenBase, GXBGCharBase charBase);
480
481 static void G2S_SetBG2ControlAffine(GXBGScrSizeAffine screenSize,
482 GXBGAreaOver areaOver,
483 GXBGScrBase screenBase, GXBGCharBase charBase);
484
485 #define G2S_SetBG2Control256x16Pltt G2S_SetBG2Control256x16Affine
486 static void G2S_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
487 GXBGAreaOver areaOver,
488 GXBGScrBase screenBase, GXBGCharBase charBase);
489
490 static void G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize,
491 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
492
493 static void G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize,
494 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
495
496 // BG3CNT
497 static void G2S_SetBG3ControlText(GXBGScrSizeText screenSize,
498 GXBGColorMode colorMode,
499 GXBGScrBase screenBase, GXBGCharBase charBase);
500
501 static void G2S_SetBG3ControlAffine(GXBGScrSizeAffine screenSize,
502 GXBGAreaOver areaOver,
503 GXBGScrBase screenBase, GXBGCharBase charBase);
504
505 #define G2S_SetBG3Control256x16Pltt G2S_SetBG3Control256x16Affine
506 static void G2S_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
507 GXBGAreaOver areaOver,
508 GXBGScrBase screenBase, GXBGCharBase charBase);
509
510 static void G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize,
511 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
512
513 static void G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize,
514 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase);
515
516 static void G2S_SetBG0Priority(int priority);
517 static void G2S_SetBG1Priority(int priority);
518 static void G2S_SetBG2Priority(int priority);
519 static void G2S_SetBG3Priority(int priority);
520
521 static void G2S_BG0Mosaic(BOOL enable);
522 static void G2S_BG1Mosaic(BOOL enable);
523 static void G2S_BG2Mosaic(BOOL enable);
524 static void G2S_BG3Mosaic(BOOL enable);
525
526
527 void *G2S_GetBG0ScrPtr(void);
528 void *G2S_GetBG1ScrPtr(void);
529 void *G2S_GetBG2ScrPtr(void);
530 void *G2S_GetBG3ScrPtr(void);
531 void *G2S_GetBG0CharPtr(void);
532 void *G2S_GetBG1CharPtr(void);
533 void *G2S_GetBG2CharPtr(void);
534 void *G2S_GetBG3CharPtr(void);
535 static void *G2S_GetOBJCharPtr(void); // fixed(always returns (void*)HW_DB_OBJ_VRAM)
536
537
538 //----------------------------------------------------------------------------
539 // Implementation of inline function
540 //----------------------------------------------------------------------------
541
542 #define GX_BG0_2D_CHECK_WARNING \
543 SDK_WARNING(!(reg_GX_DISPCNT & REG_GX_DISPCNT_BG02D3D_MASK), \
544 "G2_SetBG0Control: BG #0 assigned to 3D now.")
545 #ifdef SDK_DEBUG
546 #define GX_BGMODE_WARNING1(name, mode1) \
547 do { \
548 u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; \
549 SDK_WARNING(tmp == mode1, \
550 #name ## ": BG mode should be %d", mode1); \
551 (void)0; \
552 } while(0)
553
554 #define GX_BGMODE_WARNING2(name, mode1, mode2) \
555 do { \
556 u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; \
557 SDK_WARNING(tmp == mode1 || tmp == mode2, \
558 #name ## ": BG mode should be %d or %d", mode1, mode2); \
559 (void)0; \
560 } while(0)
561
562 #define GX_BGMODE_WARNING3(name, mode1, mode2, mode3) \
563 do { \
564 u32 tmp = (reg_GX_DISPCNT & REG_GX_DISPCNT_BGMODE_MASK) >> REG_GX_DISPCNT_BGMODE_SHIFT; \
565 SDK_WARNING(tmp == mode1 || tmp == mode2 || tmp == mode3, \
566 #name ## ": BG mode should be %d, %d, or %d", mode1, mode2, mode3); \
567 (void)0; \
568 } while(0)
569
570 #define GXS_BGMODE_WARNING1(name, mode1) \
571 do { \
572 u32 tmp = (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> REG_GXS_DB_DISPCNT_BGMODE_SHIFT; \
573 SDK_WARNING(tmp == mode1, \
574 #name ## ": BG mode should be %d", mode1); \
575 (void)0; \
576 } while(0)
577
578 #define GXS_BGMODE_WARNING2(name, mode1, mode2) \
579 do { \
580 u32 tmp = (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> REG_GXS_DB_DISPCNT_BGMODE_SHIFT; \
581 SDK_WARNING(tmp == mode1 || tmp == mode2, \
582 #name ## ": BG mode should be %d or %d", mode1, mode2); \
583 (void)0; \
584 } while(0)
585
586 #define GXS_BGMODE_WARNING3(name, mode1, mode2, mode3) \
587 do { \
588 u32 tmp = (reg_GXS_DB_DISPCNT & REG_GXS_DB_DISPCNT_BGMODE_MASK) >> REG_GXS_DB_DISPCNT_BGMODE_SHIFT; \
589 SDK_WARNING(tmp == mode1 || tmp == mode2 || tmp == mode3, \
590 #name ## ": BG mode should be %d, %d, or %d", mode1, mode2, mode3); \
591 (void)0; \
592 } while(0)
593
594 #else
595 #define GX_BGMODE_WARNING1(name, mode1) ((void) 0)
596 #define GX_BGMODE_WARNING2(name, mode1, mode2) ((void) 0)
597 #define GX_BGMODE_WARNING3(name, mode1, mode2, mode3) ((void) 0)
598 #define GXS_BGMODE_WARNING1(name, mode1) ((void) 0)
599 #define GXS_BGMODE_WARNING2(name, mode1, mode2) ((void) 0)
600 #define GXS_BGMODE_WARNING3(name, mode1, mode2, mode3) ((void) 0)
601 #endif
602
603 /*---------------------------------------------------------------------------*
604 Name: G2_SetBG0Control
605
606 Description: Sets up BG #0(MAIN engine)
607
608 Arguments: screenSize screen size
609 colorMode color mode
610 screenBase screen base
611 charBase character base
612 bgExtPltt ext. palette select
613
614 Returns: none
615 *---------------------------------------------------------------------------*/
G2_SetBG0Control(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase,GXBGExtPltt bgExtPltt)616 static inline void G2_SetBG0Control(GXBGScrSizeText screenSize,
617 GXBGColorMode colorMode,
618 GXBGScrBase screenBase,
619 GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
620 {
621 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
622 GX_BG_COLORMODE_ASSERT(colorMode);
623 GX_BG_SCRBASE_ASSERT(screenBase);
624 GX_BG_CHARBASE_ASSERT(charBase);
625 GX_BG_EXTPLTT_ASSERT(bgExtPltt);
626 GX_BG0_2D_CHECK_WARNING;
627
628 reg_G2_BG0CNT =
629 (u16)((reg_G2_BG0CNT & (REG_G2_BG0CNT_PRIORITY_MASK | REG_G2_BG0CNT_MOSAIC_MASK)) |
630 (screenSize << REG_G2_BG0CNT_SCREENSIZE_SHIFT) | (colorMode <<
631 REG_G2_BG0CNT_COLORMODE_SHIFT) |
632 (screenBase << REG_G2_BG0CNT_SCREENBASE_SHIFT) | (charBase <<
633 REG_G2_BG0CNT_CHARBASE_SHIFT) |
634 (bgExtPltt << REG_G2_BG0CNT_BGPLTTSLOT_SHIFT));
635 }
636
637
638 /*---------------------------------------------------------------------------*
639 Name: G2_GetBG0Control
640
641 Description: Get BG #0 Control State(MAIN engine)
642
643 Arguments: BG Control structure.
644
645 Returns: none
646 *---------------------------------------------------------------------------*/
G2_GetBG0Control(void)647 static inline GXBg01Control G2_GetBG0Control(void)
648 {
649 GX_BG0_2D_CHECK_WARNING;
650
651 return *(volatile GXBg01Control *)REG_BG0CNT_ADDR;
652 }
653
654
655 /*---------------------------------------------------------------------------*
656 Name: G2S_SetBG0Control
657
658 Description: Sets up BG #0(SUB engine)
659
660 Arguments: screenSize screen size
661 colorMode color mode
662 screenBase screen base
663 charBase character base
664 bgExtPltt ext. palette select
665
666 Returns: none
667 *---------------------------------------------------------------------------*/
G2S_SetBG0Control(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase,GXBGExtPltt bgExtPltt)668 static inline void G2S_SetBG0Control(GXBGScrSizeText screenSize,
669 GXBGColorMode colorMode,
670 GXBGScrBase screenBase,
671 GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
672 {
673 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
674 GX_BG_COLORMODE_ASSERT(colorMode);
675 GX_BG_SCRBASE_ASSERT(screenBase);
676 GX_BG_CHARBASE_ASSERT(charBase);
677 GX_BG_EXTPLTT_ASSERT(bgExtPltt);
678
679 reg_G2S_DB_BG0CNT =
680 (u16)((reg_G2S_DB_BG0CNT &
681 (REG_G2S_DB_BG0CNT_PRIORITY_MASK | REG_G2S_DB_BG0CNT_MOSAIC_MASK)) | (screenSize <<
682 REG_G2S_DB_BG0CNT_SCREENSIZE_SHIFT)
683 | (colorMode << REG_G2S_DB_BG0CNT_COLORMODE_SHIFT) | (screenBase <<
684 REG_G2S_DB_BG0CNT_SCREENBASE_SHIFT)
685 | (charBase << REG_G2S_DB_BG0CNT_CHARBASE_SHIFT) | (bgExtPltt <<
686 REG_G2S_DB_BG0CNT_BGPLTTSLOT_SHIFT));
687 }
688
689 /*---------------------------------------------------------------------------*
690 Name: G2S_GetBG0Control
691
692 Description: Get BG #0 Control State(SUB engine)
693
694 Arguments: BG Control structure.
695
696 Returns: none
697 *---------------------------------------------------------------------------*/
G2S_GetBG0Control(void)698 static inline GXBg01Control G2S_GetBG0Control(void)
699 {
700 return *(volatile GXBg01Control *)REG_DB_BG0CNT_ADDR;
701 }
702
703
704 /*---------------------------------------------------------------------------*
705 Name: G2_SetBG1Control
706
707 Description: Sets up BG #1(MAIN engine).
708
709 Arguments: screenSize screen size
710 colorMode color mode
711 screenBase screen base
712 charBase character base
713 bgExtPltt ext. palette select
714
715 Returns: none
716 *---------------------------------------------------------------------------*/
G2_SetBG1Control(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase,GXBGExtPltt bgExtPltt)717 static inline void G2_SetBG1Control(GXBGScrSizeText screenSize,
718 GXBGColorMode colorMode,
719 GXBGScrBase screenBase,
720 GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
721 {
722 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
723 GX_BG_COLORMODE_ASSERT(colorMode);
724 GX_BG_SCRBASE_ASSERT(screenBase);
725 GX_BG_CHARBASE_ASSERT(charBase);
726 GX_BG_EXTPLTT_ASSERT(bgExtPltt);
727
728 reg_G2_BG1CNT =
729 (u16)((reg_G2_BG1CNT & (REG_G2_BG1CNT_PRIORITY_MASK | REG_G2_BG1CNT_MOSAIC_MASK)) |
730 (screenSize << REG_G2_BG1CNT_SCREENSIZE_SHIFT) | (colorMode <<
731 REG_G2_BG1CNT_COLORMODE_SHIFT) |
732 (screenBase << REG_G2_BG1CNT_SCREENBASE_SHIFT) | (charBase <<
733 REG_G2_BG1CNT_CHARBASE_SHIFT) |
734 (bgExtPltt << REG_G2_BG1CNT_BGPLTTSLOT_SHIFT));
735 }
736
737
738 /*---------------------------------------------------------------------------*
739 Name: G2_GetBG1Control
740
741 Description: Get BG #1 Control State(MAIN engine)
742
743 Arguments: BG Control structure.
744
745 Returns: none
746 *---------------------------------------------------------------------------*/
G2_GetBG1Control(void)747 static inline GXBg01Control G2_GetBG1Control(void)
748 {
749 return *(volatile GXBg01Control *)REG_BG1CNT_ADDR;
750 }
751
752
753 /*---------------------------------------------------------------------------*
754 Name: G2S_SetBG1Control
755
756 Description: Sets up BG #1(SUB engine).
757
758 Arguments: screenSize screen size
759 colorMode color mode
760 screenBase screen base
761 charBase character base
762 bgExtPltt ext. palette select
763
764 Returns: none
765 *---------------------------------------------------------------------------*/
G2S_SetBG1Control(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase,GXBGExtPltt bgExtPltt)766 static inline void G2S_SetBG1Control(GXBGScrSizeText screenSize,
767 GXBGColorMode colorMode,
768 GXBGScrBase screenBase,
769 GXBGCharBase charBase, GXBGExtPltt bgExtPltt)
770 {
771 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
772 GX_BG_COLORMODE_ASSERT(colorMode);
773 GX_BG_SCRBASE_ASSERT(screenBase);
774 GX_BG_CHARBASE_ASSERT(charBase);
775 GX_BG_EXTPLTT_ASSERT(bgExtPltt);
776
777 reg_G2S_DB_BG1CNT =
778 (u16)((reg_G2S_DB_BG1CNT &
779 (REG_G2S_DB_BG1CNT_PRIORITY_MASK | REG_G2S_DB_BG1CNT_MOSAIC_MASK)) | (screenSize <<
780 REG_G2S_DB_BG1CNT_SCREENSIZE_SHIFT)
781 | (colorMode << REG_G2S_DB_BG1CNT_COLORMODE_SHIFT) | (screenBase <<
782 REG_G2S_DB_BG1CNT_SCREENBASE_SHIFT)
783 | (charBase << REG_G2S_DB_BG1CNT_CHARBASE_SHIFT) | (bgExtPltt <<
784 REG_G2S_DB_BG1CNT_BGPLTTSLOT_SHIFT));
785 }
786
787
788 /*---------------------------------------------------------------------------*
789 Name: G2S_GetBG1Control
790
791 Description: Get BG #1 Control State(SUB engine)
792
793 Arguments: BG Control structure.
794
795 Returns: none
796 *---------------------------------------------------------------------------*/
G2S_GetBG1Control(void)797 static inline GXBg01Control G2S_GetBG1Control(void)
798 {
799 return *(volatile GXBg01Control *)REG_DB_BG1CNT_ADDR;
800 }
801
802
803 /*---------------------------------------------------------------------------*
804 Name: G2_GetBG2ExtMode
805
806 Description: Get BG #2 Affine Ex mode(MAIN engine)
807
808 Arguments: none.
809
810 Returns: Affine Ex mode
811 *---------------------------------------------------------------------------*/
G2_GetBG2ExtMode(void)812 static inline GXBGExtMode G2_GetBG2ExtMode(void)
813 {
814 GX_BGMODE_WARNING1(G2_GetBG2ExtMode, 5);
815
816 //return (GXBGExtMode)(reg_G2_BG2CNT &
817 // ((1 << REG_G2_BG2CNT_CHARBASE_SHIFT) | REG_G2_BG2CNT_COLORMODE_MASK));
818 return (GXBGExtMode)(reg_G2_BG2CNT &
819 (((reg_G2_BG2CNT & REG_G2_BG2CNT_COLORMODE_MASK) >> 5) |
820 REG_G2_BG2CNT_COLORMODE_MASK));
821 }
822
823 /*---------------------------------------------------------------------------*
824 Name: G2S_GetBG2ExtMode
825
826 Description: Get BG #2 Affine Ex mode(SUB engine)
827
828 Arguments: none.
829
830 Returns: Affine Ex mode
831 *---------------------------------------------------------------------------*/
G2S_GetBG2ExtMode(void)832 static inline GXBGExtMode G2S_GetBG2ExtMode(void)
833 {
834 GXS_BGMODE_WARNING1(G2S_GetBG2ExtMode, 5);
835
836 //return (GXBGExtMode)(reg_G2S_DB_BG2CNT &
837 // ((1 << REG_G2_BG2CNT_CHARBASE_SHIFT) | REG_G2_BG2CNT_COLORMODE_MASK));
838 return (GXBGExtMode)(reg_G2S_DB_BG2CNT &
839 (((reg_G2S_DB_BG2CNT & REG_G2S_DB_BG2CNT_COLORMODE_MASK) >> 5) |
840 REG_G2S_DB_BG2CNT_COLORMODE_MASK));
841 }
842
843
844 /*---------------------------------------------------------------------------*
845 Name: G2_SetBG2ControlText
846
847 Description: Sets up BG #2 as a text BG(MAIN engine).
848
849 Arguments: screenSize screen size
850 colorMode color mode
851 screenBase screen base
852 charBase character base
853
854 Returns: none
855 *---------------------------------------------------------------------------*/
G2_SetBG2ControlText(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase)856 static inline void G2_SetBG2ControlText(GXBGScrSizeText screenSize,
857 GXBGColorMode colorMode,
858 GXBGScrBase screenBase, GXBGCharBase charBase)
859 {
860 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
861 GX_BG_COLORMODE_ASSERT(colorMode);
862 GX_BG_SCRBASE_ASSERT(screenBase);
863 GX_BG_CHARBASE_ASSERT(charBase);
864 GX_BGMODE_WARNING3(G2_SetBG2ControlText, 0, 1, 3);
865
866 reg_G2_BG2CNT =
867 (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) |
868 (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (colorMode <<
869 REG_G2_BG2CNT_COLORMODE_SHIFT) |
870 (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (charBase <<
871 REG_G2_BG2CNT_CHARBASE_SHIFT));
872 }
873
874
875 /*---------------------------------------------------------------------------*
876 Name: G2_GetBG2ControlText
877
878 Description: Get BG #2 Control State(MAIN engine)
879
880 Arguments: BG Control structure.
881
882 Returns: none
883 *---------------------------------------------------------------------------*/
G2_GetBG2ControlText(void)884 static inline GXBg23ControlText G2_GetBG2ControlText(void)
885 {
886 GX_BGMODE_WARNING3(G2_GetBG2ControlText, 0, 1, 3);
887
888 return *(volatile GXBg23ControlText *)REG_BG2CNT_ADDR;
889 }
890
891
892 /*---------------------------------------------------------------------------*
893 Name: G2S_SetBG2ControlText
894
895 Description: Sets up BG #2 as a text BG(SUB engine).
896
897 Arguments: screenSize screen size
898 colorMode color mode
899 screenBase screen base
900 charBase character base
901
902 Returns: none
903 *---------------------------------------------------------------------------*/
G2S_SetBG2ControlText(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase)904 static inline void G2S_SetBG2ControlText(GXBGScrSizeText screenSize,
905 GXBGColorMode colorMode,
906 GXBGScrBase screenBase, GXBGCharBase charBase)
907 {
908 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
909 GX_BG_COLORMODE_ASSERT(colorMode);
910 GX_BG_SCRBASE_ASSERT(screenBase);
911 GX_BG_CHARBASE_ASSERT(charBase);
912 GXS_BGMODE_WARNING3(G2S_SetBG2ControlText, 0, 1, 3);
913
914 reg_G2S_DB_BG2CNT =
915 (u16)((reg_G2S_DB_BG2CNT &
916 (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize <<
917 REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT)
918 | (colorMode << REG_G2S_DB_BG2CNT_COLORMODE_SHIFT) | (screenBase <<
919 REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT)
920 | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT));
921 }
922
923
924 /*---------------------------------------------------------------------------*
925 Name: G2S_GetBG2ControlText
926
927 Description: Get BG #2 Control State(MAIN engine)
928
929 Arguments: BG Control structure.
930
931 Returns: none
932 *---------------------------------------------------------------------------*/
G2S_GetBG2ControlText(void)933 static inline GXBg23ControlText G2S_GetBG2ControlText(void)
934 {
935 GXS_BGMODE_WARNING3(G2S_GetBG2ControlText, 0, 1, 3);
936
937 return *(volatile GXBg23ControlText *)REG_DB_BG2CNT_ADDR;
938 }
939
940
941 /*---------------------------------------------------------------------------*
942 Name: G2_SetBG2ControlAffine
943
944 Description: Sets up BG #2 as an affine BG(MAIN engine).
945
946 Arguments: screenSize screen size
947 areaOver select repeat or not repeat
948 screenBase screen base block
949 charBase character base block
950
951 Returns: none
952 *---------------------------------------------------------------------------*/
G2_SetBG2ControlAffine(GXBGScrSizeAffine screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)953 static inline void G2_SetBG2ControlAffine(GXBGScrSizeAffine screenSize,
954 GXBGAreaOver areaOver,
955 GXBGScrBase screenBase, GXBGCharBase charBase)
956 {
957 GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize);
958 GX_BG_AREAOVER_ASSERT(areaOver);
959 GX_BG_SCRBASE_ASSERT(screenBase);
960 GX_BG_CHARBASE_ASSERT(charBase);
961 GX_BGMODE_WARNING2(G2_SetBG2ControlAffine, 2, 4);
962
963 reg_G2_BG2CNT =
964 (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) |
965 (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (screenBase <<
966 REG_G2_BG2CNT_SCREENBASE_SHIFT) |
967 (charBase << REG_G2_BG2CNT_CHARBASE_SHIFT) | (areaOver <<
968 REG_G2_BG2CNT_AREAOVER_SHIFT));
969 }
970
971
972 /*---------------------------------------------------------------------------*
973 Name: G2_GetBG2ControlAffine
974
975 Description: Get BG #2 Control State(MAIN engine)
976
977 Arguments: BG Control structure.
978
979 Returns: none
980 *---------------------------------------------------------------------------*/
G2_GetBG2ControlAffine(void)981 static inline GXBg23ControlAffine G2_GetBG2ControlAffine(void)
982 {
983 GX_BGMODE_WARNING2(G2_GetBG2ControlAffine, 2, 4);
984
985 return *(volatile GXBg23ControlAffine *)REG_BG2CNT_ADDR;
986 }
987
988
989 /*---------------------------------------------------------------------------*
990 Name: G2S_SetBG2ControlAffine
991
992 Description: Sets up BG #2 as an affine BG(SUB engine).
993
994 Arguments: screenSize screen size
995 areaOver select repeat or not repeat
996 screenBase screen base block
997 charBase character base block
998
999 Returns: none
1000 *---------------------------------------------------------------------------*/
G2S_SetBG2ControlAffine(GXBGScrSizeAffine screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)1001 static inline void G2S_SetBG2ControlAffine(GXBGScrSizeAffine screenSize,
1002 GXBGAreaOver areaOver,
1003 GXBGScrBase screenBase, GXBGCharBase charBase)
1004 {
1005 GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize);
1006 GX_BG_AREAOVER_ASSERT(areaOver);
1007 GX_BG_SCRBASE_ASSERT(screenBase);
1008 GX_BG_CHARBASE_ASSERT(charBase);
1009 GXS_BGMODE_WARNING2(G2S_SetBG2ControlAffine, 2, 4);
1010
1011 reg_G2S_DB_BG2CNT =
1012 (u16)((reg_G2S_DB_BG2CNT &
1013 (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize <<
1014 REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT)
1015 | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (charBase <<
1016 REG_G2S_DB_BG2CNT_CHARBASE_SHIFT)
1017 | (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
1018 }
1019
1020
1021 /*---------------------------------------------------------------------------*
1022 Name: G2S_GetBG2ControlAffine
1023
1024 Description: Get BG #2 Control State(SUB engine)
1025
1026 Arguments: BG Control structure.
1027
1028 Returns: none
1029 *---------------------------------------------------------------------------*/
G2S_GetBG2ControlAffine(void)1030 static inline GXBg23ControlAffine G2S_GetBG2ControlAffine(void)
1031 {
1032 GXS_BGMODE_WARNING2(G2S_GetBG2ControlAffine, 2, 4);
1033
1034 return *(volatile GXBg23ControlAffine *)REG_DB_BG2CNT_ADDR;
1035 }
1036
1037
1038 /*---------------------------------------------------------------------------*
1039 Name: G2_SetBG2Control256x16Affine
1040
1041 Description: Sets up BG #2 as an extended affine 256 colors x 16 palettes
1042 character BG(MAIN engine).
1043
1044 Arguments: screenSize screen size
1045 areaOver select repeat or not repeat
1046 screenBase screen base block
1047 charBase character base block
1048
1049 Returns: none
1050 *---------------------------------------------------------------------------*/
G2_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)1051 static inline void G2_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
1052 GXBGAreaOver areaOver,
1053 GXBGScrBase screenBase, GXBGCharBase charBase)
1054 {
1055 GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize);
1056 GX_BG_AREAOVER_ASSERT(areaOver);
1057 GX_BG_SCRBASE_ASSERT(screenBase);
1058 GX_BG_CHARBASE_ASSERT(charBase);
1059 GX_BGMODE_WARNING1(G2_SetBG2Control256x16Affine, 5);
1060
1061 reg_G2_BG2CNT =
1062 (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) |
1063 (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (charBase <<
1064 REG_G2_BG2CNT_CHARBASE_SHIFT) |
1065 GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG2CNT_SCREENBASE_SHIFT) | (areaOver
1066 <<
1067 REG_G2_BG2CNT_AREAOVER_SHIFT));
1068 }
1069
1070
1071 /*---------------------------------------------------------------------------*
1072 Name: G2_GetBG2Control256x16Pltt
1073
1074 Description: Get BG #2 Control State(MAIN engine)
1075
1076 Arguments: BG Control structure.
1077
1078 Returns: none
1079 *---------------------------------------------------------------------------*/
G2_GetBG2Control256x16Pltt(void)1080 static inline GXBg23Control256x16Pltt G2_GetBG2Control256x16Pltt(void)
1081 {
1082 GX_BGMODE_WARNING1(G2_GetBG2Control256x16Pltt, 5);
1083
1084 return *(volatile GXBg23Control256x16Pltt *)REG_BG2CNT_ADDR;
1085 }
1086
1087 /*---------------------------------------------------------------------------*
1088 Name: G2_GetBG2Control256x16Affine
1089
1090 Description: Get BG #2 Control State(MAIN engine)
1091
1092 Arguments: BG Control structure.
1093
1094 Returns: none
1095 *---------------------------------------------------------------------------*/
G2_GetBG2Control256x16Affine(void)1096 static inline GXBg23Control256x16Affine G2_GetBG2Control256x16Affine(void)
1097 {
1098 GX_BGMODE_WARNING1(G2_GetBG2Control256x16Affine, 5);
1099
1100 return *(volatile GXBg23Control256x16Affine *)REG_BG2CNT_ADDR;
1101 }
1102
1103
1104 /*---------------------------------------------------------------------------*
1105 Name: G2S_SetBG2Control256x16Affine
1106
1107 Description: Sets up BG #2 as an extended affine 256 colors x 16 palettes
1108 character BG(SUB engine).
1109
1110 Arguments: screenSize screen size
1111 areaOver select repeat or not repeat
1112 screenBase screen base block
1113 charBase character base block
1114
1115 Returns: none
1116 *---------------------------------------------------------------------------*/
G2S_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)1117 static inline void G2S_SetBG2Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
1118 GXBGAreaOver areaOver,
1119 GXBGScrBase screenBase, GXBGCharBase charBase)
1120 {
1121 GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize);
1122 GX_BG_AREAOVER_ASSERT(areaOver);
1123 GX_BG_SCRBASE_ASSERT(screenBase);
1124 GX_BG_CHARBASE_ASSERT(charBase);
1125 GXS_BGMODE_WARNING1(G2S_SetBG2Control256x16Affine, 5);
1126
1127 reg_G2S_DB_BG2CNT =
1128 (u16)((reg_G2S_DB_BG2CNT &
1129 (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize <<
1130 REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT)
1131 | (charBase << REG_G2S_DB_BG2CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT |
1132 (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) | (areaOver <<
1133 REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
1134 }
1135
1136
1137 /*---------------------------------------------------------------------------*
1138 Name: G2S_GetBG2Control256x16Pltt
1139
1140 Description: Get BG #2 Control State(MAIN engine)
1141
1142 Arguments: BG Control structure.
1143
1144 Returns: none
1145 *---------------------------------------------------------------------------*/
G2S_GetBG2Control256x16Pltt(void)1146 static inline GXBg23Control256x16Pltt G2S_GetBG2Control256x16Pltt(void)
1147 {
1148 GXS_BGMODE_WARNING1(G2S_GetBG2Control256x16Pltt, 5);
1149
1150 return *(volatile GXBg23Control256x16Pltt *)REG_DB_BG2CNT_ADDR;
1151 }
1152
1153 /*---------------------------------------------------------------------------*
1154 Name: G2S_GetBG2Control256x16Affine
1155
1156 Description: Get BG #2 Control State(MAIN engine)
1157
1158 Arguments: BG Control structure.
1159
1160 Returns: none
1161 *---------------------------------------------------------------------------*/
G2S_GetBG2Control256x16Affine(void)1162 static inline GXBg23Control256x16Affine G2S_GetBG2Control256x16Affine(void)
1163 {
1164 GXS_BGMODE_WARNING1(G2S_GetBG2Control256x16Affine, 5);
1165
1166 return *(volatile GXBg23Control256x16Affine *)REG_DB_BG2CNT_ADDR;
1167 }
1168
1169
1170 /*---------------------------------------------------------------------------*
1171 Name: G2_SetBG2Control256Bmp
1172
1173 Description: Sets up BG #2 as an extended affine 256 colors bitmap
1174 BG(MAIN engine).
1175
1176 Arguments: screenSize screen size
1177 areaOver select repeat or not repeat
1178 screenBase screen base block
1179
1180 Returns: none
1181 *---------------------------------------------------------------------------*/
G2_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1182 static inline void G2_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize,
1183 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1184 {
1185 GX_BG_SCRSIZE_256BMP_ASSERT(screenSize);
1186 GX_BG_AREAOVER_ASSERT(areaOver);
1187 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1188 GX_BGMODE_WARNING1(G2_SetBG2Control256Bmp, 5);
1189
1190 reg_G2_BG2CNT =
1191 (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) |
1192 (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase
1193 <<
1194 REG_G2_BG2CNT_SCREENBASE_SHIFT)
1195 | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
1196 }
1197
1198
1199 /*---------------------------------------------------------------------------*
1200 Name: G2_GetBG2Control256Bmp
1201
1202 Description: Get BG #2 Control State(MAIN engine)
1203
1204 Arguments: BG Control structure.
1205
1206 Returns: none
1207 *---------------------------------------------------------------------------*/
G2_GetBG2Control256Bmp(void)1208 static inline GXBg23Control256Bmp G2_GetBG2Control256Bmp(void)
1209 {
1210 GX_BGMODE_WARNING1(G2_GetBG2Control256Bmp, 5);
1211
1212 return *(volatile GXBg23Control256Bmp *)REG_BG2CNT_ADDR;
1213 }
1214
1215
1216 /*---------------------------------------------------------------------------*
1217 Name: G2S_SetBG2Control256Bmp
1218
1219 Description: Sets up BG #2 as an extended affine 256 colors bitmap
1220 BG(SUB engine).
1221
1222 Arguments: screenSize screen size
1223 areaOver select repeat or not repeat
1224 screenBase screen base block
1225
1226 Returns: none
1227 *---------------------------------------------------------------------------*/
G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1228 static inline void G2S_SetBG2Control256Bmp(GXBGScrSize256Bmp screenSize,
1229 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1230 {
1231 GX_BG_SCRSIZE_256BMP_ASSERT(screenSize);
1232 GX_BG_AREAOVER_ASSERT(areaOver);
1233 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1234 SDK_TASSERTMSG(screenSize != GX_BG_SCRSIZE_256BMP_512x512,
1235 "SUB 2D engine does not support GX_BG_SCRSIZE_256BMP_512x512");
1236 GXS_BGMODE_WARNING1(G2S_SetBG2Control256Bmp, 5);
1237
1238 reg_G2S_DB_BG2CNT =
1239 (u16)((reg_G2S_DB_BG2CNT &
1240 (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize <<
1241 REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT)
1242 | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) |
1243 (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
1244 }
1245
1246
1247 /*---------------------------------------------------------------------------*
1248 Name: G2S_GetBG2Control256Bmp
1249
1250 Description: Get BG #2 Control State(SUB engine)
1251
1252 Arguments: BG Control structure.
1253
1254 Returns: none
1255 *---------------------------------------------------------------------------*/
G2S_GetBG2Control256Bmp(void)1256 static inline GXBg23Control256Bmp G2S_GetBG2Control256Bmp(void)
1257 {
1258 GXS_BGMODE_WARNING1(G2S_GetBG2Control256Bmp, 5);
1259
1260 return *(volatile GXBg23Control256Bmp *)REG_DB_BG2CNT_ADDR;
1261 }
1262
1263
1264 /*---------------------------------------------------------------------------*
1265 Name: G2_SetBG2ControlDCBmp
1266
1267 Description: Sets up BG #2 as an extended affine direct color bitmap BG(MAIN engine).
1268
1269 Arguments: screenSize screen size
1270 areaOver select repeat or not repeat
1271 screenBase screen base block
1272
1273 Returns: none
1274 *---------------------------------------------------------------------------*/
G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1275 static inline void G2_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize,
1276 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1277 {
1278 GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize);
1279 GX_BG_AREAOVER_ASSERT(areaOver);
1280 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1281 GX_BGMODE_WARNING1(G2_SetBG2ControlDCBmp, 5);
1282
1283 reg_G2_BG2CNT =
1284 (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) |
1285 (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase
1286 <<
1287 REG_G2_BG2CNT_SCREENBASE_SHIFT)
1288 | (areaOver << REG_G2_BG2CNT_AREAOVER_SHIFT));
1289 }
1290
1291
1292 /*---------------------------------------------------------------------------*
1293 Name: G2_GetBG2ControlDCBmp
1294
1295 Description: Get BG #2 Control State(MAIN engine)
1296
1297 Arguments: BG Control structure.
1298
1299 Returns: none
1300 *---------------------------------------------------------------------------*/
G2_GetBG2ControlDCBmp(void)1301 static inline GXBg23ControlDCBmp G2_GetBG2ControlDCBmp(void)
1302 {
1303 GX_BGMODE_WARNING1(G2_SetBG2ControlDCBmp, 5);
1304
1305 return *(volatile GXBg23ControlDCBmp *)REG_BG2CNT_ADDR;
1306 }
1307
1308
1309 /*---------------------------------------------------------------------------*
1310 Name: G2S_SetBG2ControlDCBmp
1311
1312 Description: Sets up BG #2 as an extended affine direct color bitmap BG(SUB engine).
1313
1314 Arguments: screenSize screen size
1315 areaOver select repeat or not repeat
1316 screenBase screen base block
1317
1318 Returns: none
1319 *---------------------------------------------------------------------------*/
G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1320 static inline void G2S_SetBG2ControlDCBmp(GXBGScrSizeDcBmp screenSize,
1321 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1322 {
1323 GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize);
1324 GX_BG_AREAOVER_ASSERT(areaOver);
1325 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1326 SDK_TASSERTMSG(screenSize != GX_BG_SCRSIZE_DCBMP_512x256,
1327 "SUB 2D engine does not support GX_BG_SCRSIZE_DCBMP_512x256");
1328 SDK_TASSERTMSG(screenSize != GX_BG_SCRSIZE_DCBMP_512x512,
1329 "SUB 2D engine does not support GX_BG_SCRSIZE_DCBMP_512x512");
1330 GXS_BGMODE_WARNING1(G2S_SetBG2ControlDCBmp, 5);
1331
1332 reg_G2S_DB_BG2CNT =
1333 (u16)((reg_G2S_DB_BG2CNT &
1334 (REG_G2S_DB_BG2CNT_PRIORITY_MASK | REG_G2S_DB_BG2CNT_MOSAIC_MASK)) | (screenSize <<
1335 REG_G2S_DB_BG2CNT_SCREENSIZE_SHIFT)
1336 | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG2CNT_SCREENBASE_SHIFT) |
1337 (areaOver << REG_G2S_DB_BG2CNT_AREAOVER_SHIFT));
1338 }
1339
1340
1341 /*---------------------------------------------------------------------------*
1342 Name: G2S_GetBG2ControlDCBmp
1343
1344 Description: Get BG #2 Control State(SUB engine)
1345
1346 Arguments: BG Control structure.
1347
1348 Returns: none
1349 *---------------------------------------------------------------------------*/
G2S_GetBG2ControlDCBmp(void)1350 static inline GXBg23ControlDCBmp G2S_GetBG2ControlDCBmp(void)
1351 {
1352 GXS_BGMODE_WARNING1(G2S_GetBG2ControlDCBmp, 5);
1353
1354 return *(volatile GXBg23ControlDCBmp *)REG_DB_BG2CNT_ADDR;
1355 }
1356
1357
1358 /*---------------------------------------------------------------------------*
1359 Name: G2_SetBG2ControlLargeBmp
1360
1361 Description: Sets up BG #2 as a large 256 colors bitmap BG(MAIN engine).
1362
1363 Arguments: screenSize screen size
1364 areaOver select repeat or not repeat
1365
1366 Returns: none
1367 *---------------------------------------------------------------------------*/
G2_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize,GXBGAreaOver areaOver)1368 static inline void G2_SetBG2ControlLargeBmp(GXBGScrSizeLargeBmp screenSize, GXBGAreaOver areaOver)
1369 {
1370 GX_BG_SCRSIZE_LARGEBMP_ASSERT(screenSize);
1371 GX_BG_AREAOVER_ASSERT(areaOver);
1372 GX_BGMODE_WARNING1(G2_SetBG2ControlLargeBmp, 6);
1373
1374 reg_G2_BG2CNT =
1375 (u16)((reg_G2_BG2CNT & (REG_G2_BG2CNT_PRIORITY_MASK | REG_G2_BG2CNT_MOSAIC_MASK)) |
1376 (screenSize << REG_G2_BG2CNT_SCREENSIZE_SHIFT) | (areaOver <<
1377 REG_G2_BG2CNT_AREAOVER_SHIFT));
1378 }
1379
1380
1381 /*---------------------------------------------------------------------------*
1382 Name: G2_GetBG2ControlLargeBmp
1383
1384 Description: Get BG #2 Control State(MAIN engine)
1385
1386 Arguments: BG Control structure.
1387
1388 Returns: none
1389 *---------------------------------------------------------------------------*/
G2_GetBG2ControlLargeBmp(void)1390 static inline GXBg2ControlLargeBmp G2_GetBG2ControlLargeBmp(void)
1391 {
1392 GX_BGMODE_WARNING1(G2_GetBG2ControlLargeBmp, 6);
1393
1394 return *(volatile GXBg2ControlLargeBmp *)REG_BG2CNT_ADDR;
1395 }
1396
1397
1398 /*---------------------------------------------------------------------------*
1399 Name: G2_GetBG3ExtMode
1400
1401 Description: Get BG #3 Affine Ex mode(MAIN engine)
1402
1403 Arguments: none.
1404
1405 Returns: Affine Ex mode
1406 *---------------------------------------------------------------------------*/
G2_GetBG3ExtMode(void)1407 static inline GXBGExtMode G2_GetBG3ExtMode(void)
1408 {
1409 GX_BGMODE_WARNING3(G2_GetBG3ExtMode, 3, 4, 5);
1410
1411 //return (GXBGExtMode)(reg_G2_BG3CNT &
1412 // ((1 << REG_G2_BG3CNT_CHARBASE_SHIFT) | REG_G2_BG3CNT_COLORMODE_MASK));
1413 return (GXBGExtMode)(reg_G2_BG3CNT &
1414 (((reg_G2_BG3CNT & REG_G2_BG3CNT_COLORMODE_MASK) >> 5) |
1415 REG_G2_BG3CNT_COLORMODE_MASK));
1416 }
1417
1418
1419 /*---------------------------------------------------------------------------*
1420 Name: G2S_GetBG3ExtMode
1421
1422 Description: Get BG #3 Affine Ex mode(SUB engine)
1423
1424 Arguments: none.
1425
1426 Returns: Affine Ex mode
1427 *---------------------------------------------------------------------------*/
G2S_GetBG3ExtMode(void)1428 static inline GXBGExtMode G2S_GetBG3ExtMode(void)
1429 {
1430 GXS_BGMODE_WARNING3(G2S_GetBG3ExtMode, 3, 4, 5);
1431
1432 //return (GXBGExtMode)(reg_G2S_DB_BG3CNT &
1433 // ((1 << REG_G2_BG3CNT_CHARBASE_SHIFT) | REG_G2_BG3CNT_COLORMODE_MASK));
1434 return (GXBGExtMode)(reg_G2S_DB_BG3CNT &
1435 (((reg_G2S_DB_BG3CNT & REG_G2S_DB_BG3CNT_COLORMODE_MASK) >> 5) |
1436 REG_G2S_DB_BG3CNT_COLORMODE_MASK));
1437 }
1438
1439
1440 /*---------------------------------------------------------------------------*
1441 Name: G2_SetBG3ControlText
1442
1443 Description: Sets up BG #3 as a text BG(MAIN engine).
1444
1445 Arguments: screenSize screen size
1446 colorMode color mode
1447 screenBase screen base
1448 charBase character base
1449
1450 Returns: none
1451 *---------------------------------------------------------------------------*/
G2_SetBG3ControlText(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase)1452 static inline void G2_SetBG3ControlText(GXBGScrSizeText screenSize,
1453 GXBGColorMode colorMode,
1454 GXBGScrBase screenBase, GXBGCharBase charBase)
1455 {
1456 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
1457 GX_BG_COLORMODE_ASSERT(colorMode);
1458 GX_BG_SCRBASE_ASSERT(screenBase);
1459 GX_BG_CHARBASE_ASSERT(charBase);
1460 GX_BGMODE_WARNING1(G2_SetBG3ControlText, 0);
1461
1462 reg_G2_BG3CNT =
1463 (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) |
1464 (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (colorMode <<
1465 REG_G2_BG3CNT_COLORMODE_SHIFT) |
1466 (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (charBase <<
1467 REG_G2_BG3CNT_CHARBASE_SHIFT));
1468 }
1469
1470
1471 /*---------------------------------------------------------------------------*
1472 Name: G2_GetBG3ControlText
1473
1474 Description: Get BG #3 Control State(MAIN engine)
1475
1476 Arguments: BG Control structure.
1477
1478 Returns: none
1479 *---------------------------------------------------------------------------*/
G2_GetBG3ControlText(void)1480 static inline GXBg23ControlText G2_GetBG3ControlText(void)
1481 {
1482 return *(volatile GXBg23ControlText *)REG_BG3CNT_ADDR;
1483 }
1484
1485
1486 /*---------------------------------------------------------------------------*
1487 Name: G2S_SetBG3ControlText
1488
1489 Description: Sets up BG #3 as a text BG(SUB engine).
1490
1491 Arguments: screenSize screen size
1492 colorMode color mode
1493 screenBase screen base
1494 charBase character base
1495
1496 Returns: none
1497 *---------------------------------------------------------------------------*/
G2S_SetBG3ControlText(GXBGScrSizeText screenSize,GXBGColorMode colorMode,GXBGScrBase screenBase,GXBGCharBase charBase)1498 static inline void G2S_SetBG3ControlText(GXBGScrSizeText screenSize,
1499 GXBGColorMode colorMode,
1500 GXBGScrBase screenBase, GXBGCharBase charBase)
1501 {
1502 GX_BG_SCRSIZE_TEXT_ASSERT(screenSize);
1503 GX_BG_COLORMODE_ASSERT(colorMode);
1504 GX_BG_SCRBASE_ASSERT(screenBase);
1505 GX_BG_CHARBASE_ASSERT(charBase);
1506 GXS_BGMODE_WARNING1(G2S_SetBG3ControlText, 0);
1507
1508 reg_G2S_DB_BG3CNT =
1509 (u16)((reg_G2S_DB_BG3CNT &
1510 (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize <<
1511 REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT)
1512 | (colorMode << REG_G2S_DB_BG3CNT_COLORMODE_SHIFT) | (screenBase <<
1513 REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT)
1514 | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT));
1515 }
1516
1517
1518 /*---------------------------------------------------------------------------*
1519 Name: G2S_GetBG3ControlText
1520
1521 Description: Get BG #3 Control State(SUB engine)
1522
1523 Arguments: BG Control structure.
1524
1525 Returns: none
1526 *---------------------------------------------------------------------------*/
G2S_GetBG3ControlText(void)1527 static inline GXBg23ControlText G2S_GetBG3ControlText(void)
1528 {
1529 return *(volatile GXBg23ControlText *)REG_DB_BG3CNT_ADDR;
1530 }
1531
1532
1533 /*---------------------------------------------------------------------------*
1534 Name: G2_SetBG3ControlAffine
1535
1536 Description: Sets up BG #3 as an affine BG(MAIN engine).
1537
1538 Arguments: screenSize screen size
1539 areaOver select repeat or not repeat
1540 screenBase screen base block
1541 charBase character base block
1542
1543 Returns: none
1544 *---------------------------------------------------------------------------*/
G2_SetBG3ControlAffine(GXBGScrSizeAffine screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)1545 static inline void G2_SetBG3ControlAffine(GXBGScrSizeAffine screenSize,
1546 GXBGAreaOver areaOver,
1547 GXBGScrBase screenBase, GXBGCharBase charBase)
1548 {
1549 GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize);
1550 GX_BG_AREAOVER_ASSERT(areaOver);
1551 GX_BG_SCRBASE_ASSERT(screenBase);
1552 GX_BG_CHARBASE_ASSERT(charBase);
1553 GX_BGMODE_WARNING2(G2_SetBG3ControlAffine, 1, 2);
1554
1555 reg_G2_BG3CNT =
1556 (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) |
1557 (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (screenBase <<
1558 REG_G2_BG3CNT_SCREENBASE_SHIFT) |
1559 (charBase << REG_G2_BG3CNT_CHARBASE_SHIFT) | (areaOver <<
1560 REG_G2_BG3CNT_AREAOVER_SHIFT));
1561 }
1562
1563
1564 /*---------------------------------------------------------------------------*
1565 Name: G2_GetBG3ControlAffine
1566
1567 Description: Get BG #3 Control State(MAIN engine)
1568
1569 Arguments: BG Control structure.
1570
1571 Returns: none
1572 *---------------------------------------------------------------------------*/
G2_GetBG3ControlAffine(void)1573 static inline GXBg23ControlAffine G2_GetBG3ControlAffine(void)
1574 {
1575 return *(volatile GXBg23ControlAffine *)REG_BG3CNT_ADDR;
1576 }
1577
1578
1579 /*---------------------------------------------------------------------------*
1580 Name: G2S_SetBG3ControlAffine
1581
1582 Description: Sets up BG #3 as an affine BG(SUB engine).
1583
1584 Arguments: screenSize screen size
1585 areaOver select repeat or not repeat
1586 screenBase screen base block
1587 charBase character base block
1588
1589 Returns: none
1590 *---------------------------------------------------------------------------*/
G2S_SetBG3ControlAffine(GXBGScrSizeAffine screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)1591 static inline void G2S_SetBG3ControlAffine(GXBGScrSizeAffine screenSize,
1592 GXBGAreaOver areaOver,
1593 GXBGScrBase screenBase, GXBGCharBase charBase)
1594 {
1595 GX_BG_SCRSIZE_AFFINE_ASSERT(screenSize);
1596 GX_BG_AREAOVER_ASSERT(areaOver);
1597 GX_BG_SCRBASE_ASSERT(screenBase);
1598 GX_BG_CHARBASE_ASSERT(charBase);
1599 GXS_BGMODE_WARNING2(G2S_SetBG3ControlAffine, 1, 2);
1600
1601 reg_G2S_DB_BG3CNT =
1602 (u16)((reg_G2S_DB_BG3CNT &
1603 (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize <<
1604 REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT)
1605 | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (charBase <<
1606 REG_G2S_DB_BG3CNT_CHARBASE_SHIFT)
1607 | (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
1608 }
1609
1610
1611 /*---------------------------------------------------------------------------*
1612 Name: G2S_GetBG3ControlAffine
1613
1614 Description: Get BG #3 Control State(SUB engine)
1615
1616 Arguments: BG Control structure.
1617
1618 Returns: none
1619 *---------------------------------------------------------------------------*/
G2S_GetBG3ControlAffine(void)1620 static inline GXBg23ControlAffine G2S_GetBG3ControlAffine(void)
1621 {
1622 return *(volatile GXBg23ControlAffine *)REG_DB_BG3CNT_ADDR;
1623 }
1624
1625
1626 /*---------------------------------------------------------------------------*
1627 Name: G2_SetBG3Control256x16Affine
1628
1629 Description: Sets up BG #3 as an extended affine 256 colors x 16 palettes
1630 character BG(MAIN engine).
1631
1632 Arguments: screenSize screen size
1633 areaOver select repeat or not repeat
1634 screenBase screen base block
1635 charBase character base block
1636
1637 Returns: none
1638 *---------------------------------------------------------------------------*/
G2_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)1639 static inline void G2_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
1640 GXBGAreaOver areaOver,
1641 GXBGScrBase screenBase, GXBGCharBase charBase)
1642 {
1643 GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize);
1644 GX_BG_AREAOVER_ASSERT(areaOver);
1645 GX_BG_SCRBASE_ASSERT(screenBase);
1646 GX_BG_CHARBASE_ASSERT(charBase);
1647 GX_BGMODE_WARNING3(G2_SetBG3Control256x16Affine, 3, 4, 5);
1648
1649 reg_G2_BG3CNT =
1650 (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) |
1651 (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | (charBase <<
1652 REG_G2_BG3CNT_CHARBASE_SHIFT) |
1653 GX_BG_EXTMODE_256x16PLTT | (screenBase << REG_G2_BG3CNT_SCREENBASE_SHIFT) | (areaOver
1654 <<
1655 REG_G2_BG3CNT_AREAOVER_SHIFT));
1656 }
1657
1658
1659 /*---------------------------------------------------------------------------*
1660 Name: G2_GetBG3Control256x16Pltt
1661
1662 Description: Get BG #3 Control State(MAIN engine)
1663
1664 Arguments: BG Control structure.
1665
1666 Returns: none
1667 *---------------------------------------------------------------------------*/
G2_GetBG3Control256x16Pltt(void)1668 static inline GXBg23Control256x16Pltt G2_GetBG3Control256x16Pltt(void)
1669 {
1670 return *(volatile GXBg23Control256x16Pltt *)REG_BG3CNT_ADDR;
1671 }
1672
1673 /*---------------------------------------------------------------------------*
1674 Name: G2_GetBG3Control256x16Affine
1675
1676 Description: Get BG #3 Control State(MAIN engine)
1677
1678 Arguments: BG Control structure.
1679
1680 Returns: none
1681 *---------------------------------------------------------------------------*/
G2_GetBG3Control256x16Affine(void)1682 static inline GXBg23Control256x16Affine G2_GetBG3Control256x16Affine(void)
1683 {
1684 return *(volatile GXBg23Control256x16Affine *)REG_BG3CNT_ADDR;
1685 }
1686
1687
1688 /*---------------------------------------------------------------------------*
1689 Name: G2S_SetBG3Control256x16Affine
1690
1691 Description: Sets up BG #3 as an extended affine 256 colors x 16 palettes
1692 character BG(SUB engine).
1693
1694 Arguments: screenSize screen size
1695 areaOver select repeat or not repeat
1696 screenBase screen base block
1697
1698 Returns: none
1699 *---------------------------------------------------------------------------*/
G2S_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize,GXBGAreaOver areaOver,GXBGScrBase screenBase,GXBGCharBase charBase)1700 static inline void G2S_SetBG3Control256x16Affine(GXBGScrSize256x16Pltt screenSize,
1701 GXBGAreaOver areaOver,
1702 GXBGScrBase screenBase, GXBGCharBase charBase)
1703 {
1704 GX_BG_SCRSIZE_256x16PLTT_ASSERT(screenSize);
1705 GX_BG_AREAOVER_ASSERT(areaOver);
1706 GX_BG_SCRBASE_ASSERT(screenBase);
1707 GX_BG_CHARBASE_ASSERT(charBase);
1708 GXS_BGMODE_WARNING3(G2S_SetBG3Control256x16Affine, 3, 4, 5);
1709
1710 reg_G2S_DB_BG3CNT =
1711 (u16)((reg_G2S_DB_BG3CNT &
1712 (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize <<
1713 REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT)
1714 | (charBase << REG_G2S_DB_BG3CNT_CHARBASE_SHIFT) | GX_BG_EXTMODE_256x16PLTT |
1715 (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) | (areaOver <<
1716 REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
1717 }
1718
1719
1720 /*---------------------------------------------------------------------------*
1721 Name: G2S_GetBG3Control256x16Pltt
1722
1723 Description: Get BG #3 Control State(SUB engine)
1724
1725 Arguments: BG Control structure.
1726
1727 Returns: none
1728 *---------------------------------------------------------------------------*/
G2S_GetBG3Control256x16Pltt(void)1729 static inline GXBg23Control256x16Pltt G2S_GetBG3Control256x16Pltt(void)
1730 {
1731 return *(volatile GXBg23Control256x16Pltt *)REG_DB_BG3CNT_ADDR;
1732 }
1733
1734 /*---------------------------------------------------------------------------*
1735 Name: G2S_GetBG3Control256x16Affine
1736
1737 Description: Get BG #3 Control State(SUB engine)
1738
1739 Arguments: BG Control structure.
1740
1741 Returns: none
1742 *---------------------------------------------------------------------------*/
G2S_GetBG3Control256x16Affine(void)1743 static inline GXBg23Control256x16Affine G2S_GetBG3Control256x16Affine(void)
1744 {
1745 return *(volatile GXBg23Control256x16Affine *)REG_DB_BG3CNT_ADDR;
1746 }
1747
1748
1749 /*---------------------------------------------------------------------------*
1750 Name: G2_SetBG3ControlExt256Bmp
1751
1752 Description: Sets up BG #3 as an extended affine 256 colors bitmap BG(MAIN engine).
1753
1754 Arguments: screenSize screen size
1755 areaOver select repeat or not repeat
1756 screenBase screen base block
1757
1758 Returns: none
1759 *---------------------------------------------------------------------------*/
G2_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1760 static inline void G2_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize,
1761 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1762 {
1763 GX_BG_SCRSIZE_256BMP_ASSERT(screenSize);
1764 GX_BG_AREAOVER_ASSERT(areaOver);
1765 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1766 GX_BGMODE_WARNING3(G2_SetBG3Control256Bmp, 3, 4, 5);
1767
1768 reg_G2_BG3CNT =
1769 (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) |
1770 (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_256BITMAP | (screenBase
1771 <<
1772 REG_G2_BG3CNT_SCREENBASE_SHIFT)
1773 | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
1774 }
1775
1776
1777 /*---------------------------------------------------------------------------*
1778 Name: G2_GetBG3Control256Bmp
1779
1780 Description: Get BG #3 Control State(MAIN engine)
1781
1782 Arguments: BG Control structure.
1783
1784 Returns: none
1785 *---------------------------------------------------------------------------*/
G2_GetBG3Control256Bmp(void)1786 static inline GXBg23Control256Bmp G2_GetBG3Control256Bmp(void)
1787 {
1788 return *(volatile GXBg23Control256Bmp *)REG_BG3CNT_ADDR;
1789 }
1790
1791
1792 /*---------------------------------------------------------------------------*
1793 Name: G2S_SetBG3ControlExt256Bmp
1794
1795 Description: Sets up BG #3 as an extended affine 256 colors bitmap BG(SUB engine).
1796
1797 Arguments: screenSize screen size
1798 areaOver select repeat or not repeat
1799 screenBase screen base block
1800
1801 Returns: none
1802 *---------------------------------------------------------------------------*/
G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1803 static inline void G2S_SetBG3Control256Bmp(GXBGScrSize256Bmp screenSize,
1804 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1805 {
1806 GX_BG_SCRSIZE_256BMP_ASSERT(screenSize);
1807 GX_BG_AREAOVER_ASSERT(areaOver);
1808 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1809 SDK_TASSERTMSG(screenSize != GX_BG_SCRSIZE_256BMP_512x512,
1810 "SUB 2D engine does not support GX_BG_SCRSIZE_256BMP_512x512");
1811 GXS_BGMODE_WARNING3(G2S_SetBG3Control256Bmp, 3, 4, 5);
1812
1813 reg_G2S_DB_BG3CNT =
1814 (u16)((reg_G2S_DB_BG3CNT &
1815 (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize <<
1816 REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT)
1817 | GX_BG_EXTMODE_256BITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) |
1818 (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
1819 }
1820
1821
1822 /*---------------------------------------------------------------------------*
1823 Name: G2S_GetBG3Control256Bmp
1824
1825 Description: Get BG #3 Control State(SUB engine)
1826
1827 Arguments: BG Control structure.
1828
1829 Returns: none
1830 *---------------------------------------------------------------------------*/
G2S_GetBG3Control256Bmp(void)1831 static inline GXBg23Control256Bmp G2S_GetBG3Control256Bmp(void)
1832 {
1833 return *(volatile GXBg23Control256Bmp *)REG_DB_BG3CNT_ADDR;
1834 }
1835
1836
1837 /*---------------------------------------------------------------------------*
1838 Name: G2_SetBG3ControlDCBmp
1839
1840 Description: Sets up BG #3 as an extended affine direct color bitmap BG(MAIN engine).
1841
1842 Arguments: screenSize screen size
1843 areaOver select repeat or not repeat
1844 screenBase screen base block
1845
1846 Returns: none
1847 *---------------------------------------------------------------------------*/
G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1848 static inline void G2_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize,
1849 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1850 {
1851 GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize);
1852 GX_BG_AREAOVER_ASSERT(areaOver);
1853 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1854 GX_BGMODE_WARNING3(G2_SetBG3ControlDCBmp, 3, 4, 5);
1855
1856 reg_G2_BG3CNT =
1857 (u16)((reg_G2_BG3CNT & (REG_G2_BG3CNT_PRIORITY_MASK | REG_G2_BG3CNT_MOSAIC_MASK)) |
1858 (screenSize << REG_G2_BG3CNT_SCREENSIZE_SHIFT) | GX_BG_EXTMODE_DCBITMAP | (screenBase
1859 <<
1860 REG_G2_BG3CNT_SCREENBASE_SHIFT)
1861 | (areaOver << REG_G2_BG3CNT_AREAOVER_SHIFT));
1862 }
1863
1864
1865 /*---------------------------------------------------------------------------*
1866 Name: G2_GetBG3ControlDCBmp
1867
1868 Description: Get BG #3 Control State(MAIN engine)
1869
1870 Arguments: BG Control structure.
1871
1872 Returns: none
1873 *---------------------------------------------------------------------------*/
G2_GetBG3ControlDCBmp(void)1874 static inline GXBg23ControlDCBmp G2_GetBG3ControlDCBmp(void)
1875 {
1876 return *(volatile GXBg23ControlDCBmp *)REG_BG3CNT_ADDR;
1877 }
1878
1879
1880
1881
1882 /*---------------------------------------------------------------------------*
1883 Name: G2S_SetBG3ControlDCBmp
1884
1885 Description: Sets up BG #3 as an extended affine direct color bitmap BG(SUB engine).
1886
1887 Arguments: screenSize screen size
1888 areaOver select repeat or not repeat
1889 screenBase screen base block
1890
1891 Returns: none
1892 *---------------------------------------------------------------------------*/
G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize,GXBGAreaOver areaOver,GXBGBmpScrBase screenBase)1893 static inline void G2S_SetBG3ControlDCBmp(GXBGScrSizeDcBmp screenSize,
1894 GXBGAreaOver areaOver, GXBGBmpScrBase screenBase)
1895 {
1896 GX_BG_SCRSIZE_DCBMP_ASSERT(screenSize);
1897 GX_BG_AREAOVER_ASSERT(areaOver);
1898 GX_BG_BMPSCRBASE_ASSERT(screenBase);
1899 GXS_BGMODE_WARNING3(G2S_SetBG3ControlDCBmp, 3, 4, 5);
1900
1901 reg_G2S_DB_BG3CNT =
1902 (u16)((reg_G2S_DB_BG3CNT &
1903 (REG_G2S_DB_BG3CNT_PRIORITY_MASK | REG_G2S_DB_BG3CNT_MOSAIC_MASK)) | (screenSize <<
1904 REG_G2S_DB_BG3CNT_SCREENSIZE_SHIFT)
1905 | GX_BG_EXTMODE_DCBITMAP | (screenBase << REG_G2S_DB_BG3CNT_SCREENBASE_SHIFT) |
1906 (areaOver << REG_G2S_DB_BG3CNT_AREAOVER_SHIFT));
1907 }
1908
1909
1910 /*---------------------------------------------------------------------------*
1911 Name: G2S_GetBG3ControlDCBmp
1912
1913 Description: Get BG #3 Control State(MAIN engine)
1914
1915 Arguments: BG Control structure.
1916
1917 Returns: none
1918 *---------------------------------------------------------------------------*/
G2S_GetBG3ControlDCBmp(void)1919 static inline GXBg23ControlDCBmp G2S_GetBG3ControlDCBmp(void)
1920 {
1921 return *(volatile GXBg23ControlDCBmp *)REG_DB_BG3CNT_ADDR;
1922 }
1923
1924
1925 /*---------------------------------------------------------------------------*
1926 Name: G2_BG0Mosaic
1927
1928 Description: Enable/Disable mosaic on BG #0(MAIN engine).
1929
1930 Arguments: enable if FALSE, mosaic is disabled,
1931 otherwise, mosaic is enabled.
1932 Returns: none
1933 *---------------------------------------------------------------------------*/
G2_BG0Mosaic(BOOL enable)1934 static inline void G2_BG0Mosaic(BOOL enable)
1935 {
1936 if (enable)
1937 {
1938 reg_G2_BG0CNT |= REG_G2_BG0CNT_MOSAIC_MASK;
1939 }
1940 else
1941 {
1942 reg_G2_BG0CNT &= ~REG_G2_BG0CNT_MOSAIC_MASK;
1943 }
1944 }
1945
1946
1947 /*---------------------------------------------------------------------------*
1948 Name: G2S_BG0Mosaic
1949
1950 Description: Enable/Disable mosaic on BG #0(SUB engine).
1951
1952 Arguments: enable if FALSE, mosaic is disabled,
1953 otherwise, mosaic is enabled.
1954 Returns: none
1955 *---------------------------------------------------------------------------*/
G2S_BG0Mosaic(BOOL enable)1956 static inline void G2S_BG0Mosaic(BOOL enable)
1957 {
1958 if (enable)
1959 {
1960 reg_G2S_DB_BG0CNT |= REG_G2S_DB_BG0CNT_MOSAIC_MASK;
1961 }
1962 else
1963 {
1964 reg_G2S_DB_BG0CNT &= ~REG_G2S_DB_BG0CNT_MOSAIC_MASK;
1965 }
1966 }
1967
1968
1969 /*---------------------------------------------------------------------------*
1970 Name: G2_BG1Mosaic
1971
1972 Description: Enable/Disable mosaic on BG #1(MAIN engine).
1973
1974 Arguments: enable if FALSE, mosaic is disabled,
1975 otherwise, mosaic is enabled.
1976 Returns: none
1977 *---------------------------------------------------------------------------*/
G2_BG1Mosaic(BOOL enable)1978 static inline void G2_BG1Mosaic(BOOL enable)
1979 {
1980 if (enable)
1981 {
1982 reg_G2_BG1CNT |= REG_G2_BG1CNT_MOSAIC_MASK;
1983 }
1984 else
1985 {
1986 reg_G2_BG1CNT &= ~REG_G2_BG1CNT_MOSAIC_MASK;
1987 }
1988 }
1989
1990
1991 /*---------------------------------------------------------------------------*
1992 Name: G2S_BG1Mosaic
1993
1994 Description: Enable/Disable mosaic on BG #1(SUB engine).
1995
1996 Arguments: enable if FALSE, mosaic is disabled,
1997 otherwise, mosaic is enabled.
1998 Returns: none
1999 *---------------------------------------------------------------------------*/
G2S_BG1Mosaic(BOOL enable)2000 static inline void G2S_BG1Mosaic(BOOL enable)
2001 {
2002 if (enable)
2003 {
2004 reg_G2S_DB_BG1CNT |= REG_G2S_DB_BG1CNT_MOSAIC_MASK;
2005 }
2006 else
2007 {
2008 reg_G2S_DB_BG1CNT &= ~REG_G2S_DB_BG1CNT_MOSAIC_MASK;
2009 }
2010 }
2011
2012
2013 /*---------------------------------------------------------------------------*
2014 Name: G2_BG2Mosaic
2015
2016 Description: Enable/Disable mosaic on BG #2(MAIN engine).
2017
2018 Arguments: enable if FALSE, mosaic is disabled,
2019 otherwise, mosaic is enabled.
2020 Returns: none
2021 *---------------------------------------------------------------------------*/
G2_BG2Mosaic(BOOL enable)2022 static inline void G2_BG2Mosaic(BOOL enable)
2023 {
2024 if (enable)
2025 {
2026 reg_G2_BG2CNT |= REG_G2_BG2CNT_MOSAIC_MASK;
2027 }
2028 else
2029 {
2030 reg_G2_BG2CNT &= ~REG_G2_BG2CNT_MOSAIC_MASK;
2031 }
2032 }
2033
2034
2035 /*---------------------------------------------------------------------------*
2036 Name: G2S_BG2Mosaic
2037
2038 Description: Enable/Disable mosaic on BG #2(SUB engine).
2039
2040 Arguments: enable if FALSE, mosaic is disabled,
2041 otherwise, mosaic is enabled.
2042 Returns: none
2043 *---------------------------------------------------------------------------*/
G2S_BG2Mosaic(BOOL enable)2044 static inline void G2S_BG2Mosaic(BOOL enable)
2045 {
2046 if (enable)
2047 {
2048 reg_G2S_DB_BG2CNT |= REG_G2S_DB_BG2CNT_MOSAIC_MASK;
2049 }
2050 else
2051 {
2052 reg_G2S_DB_BG2CNT &= ~REG_G2S_DB_BG2CNT_MOSAIC_MASK;
2053 }
2054 }
2055
2056
2057 /*---------------------------------------------------------------------------*
2058 Name: G2_BG3Mosaic
2059
2060 Description: Enable/Disable mosaic on BG #3(MAIN engine).
2061
2062 Arguments: enable if FALSE, mosaic is disabled,
2063 otherwise, mosaic is enabled.
2064 Returns: none
2065 *---------------------------------------------------------------------------*/
G2_BG3Mosaic(BOOL enable)2066 static inline void G2_BG3Mosaic(BOOL enable)
2067 {
2068 if (enable)
2069 {
2070 reg_G2_BG3CNT |= REG_G2_BG3CNT_MOSAIC_MASK;
2071 }
2072 else
2073 {
2074 reg_G2_BG3CNT &= ~REG_G2_BG3CNT_MOSAIC_MASK;
2075 }
2076 }
2077
2078
2079 /*---------------------------------------------------------------------------*
2080 Name: G2S_BG3Mosaic
2081
2082 Description: Enable/Disable mosaic on BG #3(SUB engine).
2083
2084 Arguments: enable if FALSE, mosaic is disabled,
2085 otherwise, mosaic is enabled.
2086 Returns: none
2087 *---------------------------------------------------------------------------*/
G2S_BG3Mosaic(BOOL enable)2088 static inline void G2S_BG3Mosaic(BOOL enable)
2089 {
2090 if (enable)
2091 {
2092 reg_G2S_DB_BG3CNT |= REG_G2S_DB_BG3CNT_MOSAIC_MASK;
2093 }
2094 else
2095 {
2096 reg_G2S_DB_BG3CNT &= ~REG_G2S_DB_BG3CNT_MOSAIC_MASK;
2097 }
2098 }
2099
2100
2101 /*---------------------------------------------------------------------------*
2102 Name: G2_SetBG0Priority
2103
2104 Description: Specifies the priority of BG #0(MAIN engine)
2105
2106 Arguments: priority the priority of BG #0 plane
2107
2108 Returns: none
2109 *---------------------------------------------------------------------------*/
G2_SetBG0Priority(int priority)2110 static inline void G2_SetBG0Priority(int priority)
2111 {
2112 GX_BG_PRIORITY_ASSERT(priority);
2113
2114 reg_G2_BG0CNT = (u16)((reg_G2_BG0CNT & ~REG_G2_BG0CNT_PRIORITY_MASK) |
2115 (priority << REG_G2_BG0CNT_PRIORITY_SHIFT));
2116 }
2117
2118
2119 /*---------------------------------------------------------------------------*
2120 Name: G2S_SetBG0Priority
2121
2122 Description: Specifies the priority of BG #0(SUB engine)
2123
2124 Arguments: priority the priority of BG #0 plane
2125
2126 Returns: none
2127 *---------------------------------------------------------------------------*/
G2S_SetBG0Priority(int priority)2128 static inline void G2S_SetBG0Priority(int priority)
2129 {
2130 GX_BG_PRIORITY_ASSERT(priority);
2131
2132 reg_G2S_DB_BG0CNT = (u16)((reg_G2S_DB_BG0CNT & ~REG_G2S_DB_BG0CNT_PRIORITY_MASK) |
2133 (priority << REG_G2S_DB_BG0CNT_PRIORITY_SHIFT));
2134 }
2135
2136
2137 /*---------------------------------------------------------------------------*
2138 Name: G2_SetBG1Priority
2139
2140 Description: Specifies the priority of BG #1(MAIN engine)
2141
2142 Arguments: priority the priority of BG #1 plane
2143
2144 Returns: none
2145 *---------------------------------------------------------------------------*/
G2_SetBG1Priority(int priority)2146 static inline void G2_SetBG1Priority(int priority)
2147 {
2148 GX_BG_PRIORITY_ASSERT(priority);
2149
2150 reg_G2_BG1CNT = (u16)((reg_G2_BG1CNT & ~REG_G2_BG1CNT_PRIORITY_MASK) |
2151 (priority << REG_G2_BG1CNT_PRIORITY_SHIFT));
2152 }
2153
2154
2155 /*---------------------------------------------------------------------------*
2156 Name: G2S_SetBG1Priority
2157
2158 Description: Specifies the priority of BG #1(SUB engine)
2159
2160 Arguments: priority the priority of BG #1 plane
2161
2162 Returns: none
2163 *---------------------------------------------------------------------------*/
G2S_SetBG1Priority(int priority)2164 static inline void G2S_SetBG1Priority(int priority)
2165 {
2166 GX_BG_PRIORITY_ASSERT(priority);
2167
2168 reg_G2S_DB_BG1CNT = (u16)((reg_G2S_DB_BG1CNT & ~REG_G2S_DB_BG1CNT_PRIORITY_MASK) |
2169 (priority << REG_G2S_DB_BG1CNT_PRIORITY_SHIFT));
2170 }
2171
2172
2173 /*---------------------------------------------------------------------------*
2174 Name: G2_SetBG2Priority
2175
2176 Description: Specifies the priority of BG #2(MAIN engine)
2177
2178 Arguments: priority the priority of BG #2 plane
2179
2180 Returns: none
2181 *---------------------------------------------------------------------------*/
G2_SetBG2Priority(int priority)2182 static inline void G2_SetBG2Priority(int priority)
2183 {
2184 GX_BG_PRIORITY_ASSERT(priority);
2185
2186 reg_G2_BG2CNT = (u16)((reg_G2_BG2CNT & ~REG_G2_BG2CNT_PRIORITY_MASK) |
2187 (priority << REG_G2_BG2CNT_PRIORITY_SHIFT));
2188 }
2189
2190
2191 /*---------------------------------------------------------------------------*
2192 Name: G2S_SetBG2Priority
2193
2194 Description: Specifies the priority of BG #2(SUB engine)
2195
2196 Arguments: priority the priority of BG #2 plane
2197
2198 Returns: none
2199 *---------------------------------------------------------------------------*/
G2S_SetBG2Priority(int priority)2200 static inline void G2S_SetBG2Priority(int priority)
2201 {
2202 GX_BG_PRIORITY_ASSERT(priority);
2203
2204 reg_G2S_DB_BG2CNT = (u16)((reg_G2S_DB_BG2CNT & ~REG_G2S_DB_BG2CNT_PRIORITY_MASK) |
2205 (priority << REG_G2S_DB_BG2CNT_PRIORITY_SHIFT));
2206 }
2207
2208
2209 /*---------------------------------------------------------------------------*
2210 Name: G2_SetBG3Priority
2211
2212 Description: Specifies the priority of BG #3(MAIN engine)
2213
2214 Arguments: priority the priority of BG #3 plane
2215
2216 Returns: none
2217 *---------------------------------------------------------------------------*/
G2_SetBG3Priority(int priority)2218 static inline void G2_SetBG3Priority(int priority)
2219 {
2220 GX_BG_PRIORITY_ASSERT(priority);
2221
2222 reg_G2_BG3CNT = (u16)((reg_G2_BG3CNT & ~REG_G2_BG3CNT_PRIORITY_MASK) |
2223 (priority << REG_G2_BG3CNT_PRIORITY_SHIFT));
2224 }
2225
2226
2227 /*---------------------------------------------------------------------------*
2228 Name: G2S_SetBG3Priority
2229
2230 Description: Specifies the priority of BG #3(SUB engine)
2231
2232 Arguments: priority the priority of BG #3 plane
2233
2234 Returns: none
2235 *---------------------------------------------------------------------------*/
G2S_SetBG3Priority(int priority)2236 static inline void G2S_SetBG3Priority(int priority)
2237 {
2238 GX_BG_PRIORITY_ASSERT(priority);
2239
2240 reg_G2S_DB_BG3CNT = (u16)((reg_G2S_DB_BG3CNT & ~REG_G2S_DB_BG3CNT_PRIORITY_MASK) |
2241 (priority << REG_G2S_DB_BG3CNT_PRIORITY_SHIFT));
2242 }
2243
2244
2245 /*---------------------------------------------------------------------------*
2246 Name: G2_GetOBJCharPtr
2247
2248 Description: Always returns (void*)HW_OBJ_VRAM
2249
2250 Arguments: none
2251
2252 Returns: a pointer to the character data of OBJs
2253 *---------------------------------------------------------------------------*/
G2_GetOBJCharPtr()2254 static inline void *G2_GetOBJCharPtr()
2255 {
2256 return (void *)HW_OBJ_VRAM;
2257 }
2258
2259
2260 /*---------------------------------------------------------------------------*
2261 Name: G2S_GetOBJCharPtr
2262
2263 Description: Always returns (void*)HW_DB_OBJ_VRAM
2264
2265 Arguments: none
2266
2267 Returns: a pointer to the character data of OBJs
2268 *---------------------------------------------------------------------------*/
G2S_GetOBJCharPtr()2269 static inline void *G2S_GetOBJCharPtr()
2270 {
2271 return (void *)HW_DB_OBJ_VRAM;
2272 }
2273
2274
2275 #endif // SDK_FROM_TOOL
2276
2277 #ifdef __cplusplus
2278 }/* extern "C" */
2279 #endif
2280
2281 #endif
2282