1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - GX -
3   File:     gx_vramcnt.h
4 
5   Copyright 2003-2008 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:: 2008-09-18#$
14   $Rev: 8573 $
15   $Author: okubata_ryoma $
16  *---------------------------------------------------------------------------*/
17 
18 #ifndef NITRO_GX_VRAMCNT_H_
19 #define NITRO_GX_VRAMCNT_H_
20 
21 #include <nitro/gx/gxcommon.h>
22 #include <nitro/os/ARM9/vramExclusive.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 //----------------------------------------------------------------------------
29 // Type definition
30 //----------------------------------------------------------------------------
31 
32 //----------------------------------------------------------------------------
33 //    Parameters for VRAM
34 //----------------------------------------------------------------------------
35 typedef enum
36 {
37     GX_VRAM_A = OS_VRAM_BANK_ID_A,     // VRAM-A
38     GX_VRAM_B = OS_VRAM_BANK_ID_B,     // VRAM-B
39     GX_VRAM_C = OS_VRAM_BANK_ID_C,     // VRAM-C
40     GX_VRAM_D = OS_VRAM_BANK_ID_D,     // VRAM-D
41     GX_VRAM_E = OS_VRAM_BANK_ID_E,     // VRAM-E
42     GX_VRAM_F = OS_VRAM_BANK_ID_F,     // VRAM-F
43     GX_VRAM_G = OS_VRAM_BANK_ID_G,     // VRAM-G
44     GX_VRAM_H = OS_VRAM_BANK_ID_H,     // VRAM-H
45     GX_VRAM_I = OS_VRAM_BANK_ID_I,     // VRAM-I
46     GX_VRAM_ALL = OS_VRAM_BANK_ID_ALL
47 }
48 GXVRam;
49 
50 //----------------------------------------------------------------------------
51 //    Parameters for GX_SetBankForLCDC etc.
52 //----------------------------------------------------------------------------
53 typedef enum
54 {
55     GX_VRAM_LCDC_NONE = 0x0000,
56     GX_VRAM_LCDC_A = GX_VRAM_A,        // ARM9: HW_LCDC_VRAM_A  -->  HW_LCDC_VRAM_B
57     GX_VRAM_LCDC_B = GX_VRAM_B,        // ARM9: HW_LCDC_VRAM_B  -->  HW_LCDC_VRAM_C
58     GX_VRAM_LCDC_C = GX_VRAM_C,        // ARM9: HW_LCDC_VRAM_C  -->  HW_LCDC_VRAM_D
59     GX_VRAM_LCDC_D = GX_VRAM_D,        // ARM9: HW_LCDC_VRAM_D  -->  HW_LCDC_VRAM_E
60     GX_VRAM_LCDC_E = GX_VRAM_E,        // ARM9: HW_LCDC_VRAM_E  -->  HW_LCDC_VRAM_F
61     GX_VRAM_LCDC_F = GX_VRAM_F,        // ARM9: HW_LCDC_VRAM_F  -->  HW_LCDC_VRAM_G
62     GX_VRAM_LCDC_G = GX_VRAM_G,        // ARM9: HW_LCDC_VRAM_G  -->  HW_LCDC_VRAM_H
63     GX_VRAM_LCDC_H = GX_VRAM_H,        // ARM9: HW_LCDC_VRAM_H  -->  HW_LCDC_VRAM_I
64     GX_VRAM_LCDC_I = GX_VRAM_I,        // ARM9: HW_LCDC_VRAM_I  -->  HW_LCDC_VRAM_END
65 
66     GX_VRAM_LCDC_ALL = GX_VRAM_ALL     // ARM9: HW_LCDC_VRAM_A  -->  HW_LCDC_VRAM_END
67 }
68 GXVRamLCDC;
69 
70 #define GX_VRAM_LCDC_ASSERT(x)             \
71     SDK_MINMAX_ASSERT(x, GX_VRAM_LCDC_NONE, GX_VRAM_LCDC_ALL)
72 
73 //----------------------------------------------------------------------------
74 //    Parameters for GX_SetBankForBG etc.
75 //----------------------------------------------------------------------------
76 typedef enum
77 {
78     GX_VRAM_BG_NONE = 0x0000,
79     GX_VRAM_BG_16_F = GX_VRAM_F,       // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_F_SIZE
80     GX_VRAM_BG_16_G = GX_VRAM_G,       // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_G_SIZE
81     GX_VRAM_BG_32_FG = GX_VRAM_F | GX_VRAM_G,   // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_F_SIZE + HW_VRAM_G_SIZE
82     GX_VRAM_BG_64_E = GX_VRAM_E,       // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_E_SIZE
83     GX_VRAM_BG_80_EF = GX_VRAM_E | GX_VRAM_F,   // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_E_SIZE + HW_VRAM_F_SIZE
84     GX_VRAM_BG_96_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G,      // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_E_SIZE + HW_VRAM_F_SIZE + HW_VRAM_G_SIZE
85     GX_VRAM_BG_128_A = GX_VRAM_A,      // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE
86     GX_VRAM_BG_128_B = GX_VRAM_B,      // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_B_SIZE
87     GX_VRAM_BG_128_C = GX_VRAM_C,      // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_C_SIZE
88     GX_VRAM_BG_128_D = GX_VRAM_D,      // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_D_SIZE
89     GX_VRAM_BG_256_AB = GX_VRAM_A | GX_VRAM_B,  // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE + HW_VRAM_B_SIZE
90     GX_VRAM_BG_256_BC = GX_VRAM_B | GX_VRAM_C,  // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_B_SIZE + HW_VRAM_C_SIZE
91     GX_VRAM_BG_256_CD = GX_VRAM_C | GX_VRAM_D,  // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_C_SIZE + HW_VRAM_D_SIZE
92     GX_VRAM_BG_384_ABC = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C,     // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE + HW_VRAM_B_SIZE + HW_VRAM_C_SIZE
93     GX_VRAM_BG_384_BCD = GX_VRAM_B | GX_VRAM_C | GX_VRAM_D,     // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_B_SIZE + HW_VRAM_C_SIZE + HW_VRAM_D_SIZE
94     GX_VRAM_BG_512_ABCD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C | GX_VRAM_D,        // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE + HW_VRAM_B_SIZE + HW_VRAM_C_SIZE + HW_VRAM_D_SIZE
95 
96     // discontinuous on LCDC memory
97     GX_VRAM_BG_80_EG = GX_VRAM_E | GX_VRAM_G,   // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_E_SIZE + HW_VRAM_G_SIZE
98     GX_VRAM_BG_256_AC = GX_VRAM_A | GX_VRAM_C,  // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE + HW_VRAM_C_SIZE
99     GX_VRAM_BG_256_AD = GX_VRAM_A | GX_VRAM_D,  // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE + HW_VRAM_D_SIZE
100     GX_VRAM_BG_256_BD = GX_VRAM_B | GX_VRAM_D,  // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_B_SIZE + HW_VRAM_D_SIZE
101     GX_VRAM_BG_384_ABD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_D,     // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE + HW_VRAM_B_SIZE + HW_VRAM_D_SIZE
102     GX_VRAM_BG_384_ACD = GX_VRAM_A | GX_VRAM_C | GX_VRAM_D      // ARM9: HW_BG_VRAM   -->   HW_BG_VRAM + HW_VRAM_A_SIZE + HW_VRAM_C_SIZE + HW_VRAM_D_SIZE
103 }
104 GXVRamBG;
105 
106 #define GX_VRAM_BG_ASSERT(x)                  \
107     SDK_ASSERT( (x) == GX_VRAM_BG_NONE     || \
108                 (x) == GX_VRAM_BG_16_F     || \
109                 (x) == GX_VRAM_BG_16_G     || \
110                 (x) == GX_VRAM_BG_32_FG    || \
111                 (x) == GX_VRAM_BG_64_E     || \
112                 (x) == GX_VRAM_BG_80_EF    || \
113                 (x) == GX_VRAM_BG_80_EG    || \
114                 (x) == GX_VRAM_BG_96_EFG   || \
115                 (x) == GX_VRAM_BG_128_A    || \
116                 (x) == GX_VRAM_BG_128_B    || \
117                 (x) == GX_VRAM_BG_128_C    || \
118                 (x) == GX_VRAM_BG_128_D    || \
119                 (x) == GX_VRAM_BG_256_AB   || \
120                 (x) == GX_VRAM_BG_256_BC   || \
121                 (x) == GX_VRAM_BG_256_CD   || \
122                 (x) == GX_VRAM_BG_384_ABC  || \
123                 (x) == GX_VRAM_BG_384_BCD  || \
124                 (x) == GX_VRAM_BG_512_ABCD || \
125                 (x) == GX_VRAM_BG_256_AC   || \
126                 (x) == GX_VRAM_BG_256_AD   || \
127                 (x) == GX_VRAM_BG_256_BD   || \
128                 (x) == GX_VRAM_BG_384_ABD  || \
129                 (x) == GX_VRAM_BG_384_ACD)
130 
131 #define GX_VRAM_BG_ASSERT_EX_1(x)                  \
132     SDK_ASSERT( (x) == GX_VRAM_BG_16_F     || \
133                 (x) == GX_VRAM_BG_16_G     || \
134                 (x) == GX_VRAM_BG_32_FG    || \
135                 (x) == GX_VRAM_BG_64_E     || \
136                 (x) == GX_VRAM_BG_80_EF    || \
137                 (x) == GX_VRAM_BG_80_EG    || \
138                 (x) == GX_VRAM_BG_96_EFG )
139 
140 #define GX_VRAM_BG_ASSERT_EX_2(x)                  \
141     SDK_ASSERT( (x) == GX_VRAM_BG_NONE     || \
142                 (x) == GX_VRAM_BG_128_A    || \
143                 (x) == GX_VRAM_BG_128_B    || \
144                 (x) == GX_VRAM_BG_128_C    || \
145                 (x) == GX_VRAM_BG_128_D    || \
146                 (x) == GX_VRAM_BG_256_AB   || \
147                 (x) == GX_VRAM_BG_256_BC   || \
148                 (x) == GX_VRAM_BG_256_CD   || \
149                 (x) == GX_VRAM_BG_384_ABC  || \
150                 (x) == GX_VRAM_BG_384_BCD  || \
151                 (x) == GX_VRAM_BG_256_AC   || \
152                 (x) == GX_VRAM_BG_256_AD   || \
153                 (x) == GX_VRAM_BG_256_BD   || \
154                 (x) == GX_VRAM_BG_384_ABD  || \
155                 (x) == GX_VRAM_BG_384_ACD )
156 
157 //----------------------------------------------------------------------------
158 //    Parameters for GX_SetBankForOBJ etc.
159 //----------------------------------------------------------------------------
160 typedef enum
161 {
162     GX_VRAM_OBJ_NONE = 0x0000,
163     GX_VRAM_OBJ_16_F = GX_VRAM_F,      // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_F_SIZE
164     GX_VRAM_OBJ_16_G = GX_VRAM_G,      // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_G_SIZE
165     GX_VRAM_OBJ_32_FG = GX_VRAM_F | GX_VRAM_G,  // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_F_SIZE + HW_VRAM_G_SIZE
166     GX_VRAM_OBJ_64_E = GX_VRAM_E,      // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_E_SIZE
167     GX_VRAM_OBJ_80_EF = GX_VRAM_E | GX_VRAM_F,  // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_E_SIZE + HW_VRAM_F_SIZE
168     GX_VRAM_OBJ_80_EG = GX_VRAM_E | GX_VRAM_G,  // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_E_SIZE + HW_VRAM_G_SIZE
169     GX_VRAM_OBJ_96_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G,     // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_E_SIZE + HW_VRAM_F_SIZE + HW_VRAM_G_SIZE
170     GX_VRAM_OBJ_128_A = GX_VRAM_A,     // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_A_SIZE
171     GX_VRAM_OBJ_128_B = GX_VRAM_B,     // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_B_SIZE
172     GX_VRAM_OBJ_256_AB = GX_VRAM_A | GX_VRAM_B  // ARM9: HW_OBJ_VRAM  -->   HW_OBJ_VRAM + HW_VRAM_A_SIZE + HW_VRAM_B_SIZE
173 }
174 GXVRamOBJ;
175 
176 #define GX_VRAM_OBJ_ASSERT(x)                \
177     SDK_ASSERT( (x) == GX_VRAM_OBJ_NONE   || \
178                 (x) == GX_VRAM_OBJ_16_F   || \
179                 (x) == GX_VRAM_OBJ_16_G   || \
180                 (x) == GX_VRAM_OBJ_32_FG  || \
181                 (x) == GX_VRAM_OBJ_64_E   || \
182                 (x) == GX_VRAM_OBJ_80_EF  || \
183                 (x) == GX_VRAM_OBJ_80_EG  || \
184                 (x) == GX_VRAM_OBJ_96_EFG || \
185                 (x) == GX_VRAM_OBJ_128_A  || \
186                 (x) == GX_VRAM_OBJ_128_B  || \
187                 (x) == GX_VRAM_OBJ_256_AB )
188 
189 //----------------------------------------------------------------------------
190 //    Parameters for GX_SetBankForARM7 etc.
191 //----------------------------------------------------------------------------
192 typedef enum
193 {
194     GX_VRAM_ARM7_NONE = 0x0000,
195     GX_VRAM_ARM7_128_C = GX_VRAM_C,    // ARM7: 0x06000000   -->   0x06020000
196     GX_VRAM_ARM7_128_D = GX_VRAM_D,    // ARM7: 0x06000000   -->   0x06020000
197     GX_VRAM_ARM7_256_CD = GX_VRAM_C | GX_VRAM_D // ARM7: 0x06000000   -->   0x06040000
198 }
199 GXVRamARM7;
200 
201 #define GX_VRAM_ARM7_ASSERT(x)               \
202     SDK_ASSERT( (x) == GX_VRAM_ARM7_NONE  || \
203                 (x) == GX_VRAM_ARM7_128_C || \
204                 (x) == GX_VRAM_ARM7_128_D || \
205                 (x) == GX_VRAM_ARM7_256_CD )
206 
207 //----------------------------------------------------------------------------
208 //    Parameters for GX_SetBankForTex etc.
209 //----------------------------------------------------------------------------
210 typedef enum
211 {
212     GX_VRAM_TEX_NONE = 0x0000,         // none
213     GX_VRAM_TEX_0_A = GX_VRAM_A,       // TextureImageSlot 0
214     GX_VRAM_TEX_0_B = GX_VRAM_B,       // TextureImageSlot 0
215     GX_VRAM_TEX_0_C = GX_VRAM_C,       // TextureImageSlot 0
216     GX_VRAM_TEX_0_D = GX_VRAM_D,       // TextureImageSlot 0
217     GX_VRAM_TEX_01_AB = GX_VRAM_A | GX_VRAM_B,  // TextureImageSlot 01
218     GX_VRAM_TEX_01_BC = GX_VRAM_B | GX_VRAM_C,  // TextureImageSlot 01
219     GX_VRAM_TEX_01_CD = GX_VRAM_C | GX_VRAM_D,  // TextureImageSlot 01
220     GX_VRAM_TEX_012_ABC = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C,    // TextureImageSlot 012
221     GX_VRAM_TEX_012_BCD = GX_VRAM_B | GX_VRAM_C | GX_VRAM_D,    // TextureImageSlot 012
222     GX_VRAM_TEX_0123_ABCD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_C | GX_VRAM_D,      // TextureImageSlot 0123
223 
224     // discontinuous on LCDC memory
225     GX_VRAM_TEX_01_AC = GX_VRAM_A | GX_VRAM_C,  // TextureImageSlot 01
226     GX_VRAM_TEX_01_AD = GX_VRAM_A | GX_VRAM_D,  // TextureImageSlot 01
227     GX_VRAM_TEX_01_BD = GX_VRAM_B | GX_VRAM_D,  // TextureImageSlot 01
228     GX_VRAM_TEX_012_ABD = GX_VRAM_A | GX_VRAM_B | GX_VRAM_D,    // TextureImageSlot 012
229     GX_VRAM_TEX_012_ACD = GX_VRAM_A | GX_VRAM_C | GX_VRAM_D     // TextureImageSlot 012
230 }
231 GXVRamTex;
232 
233 #define GX_VRAM_TEX_ASSERT(x)                   \
234     SDK_ASSERT( (x) == GX_VRAM_TEX_NONE      || \
235                 (x) == GX_VRAM_TEX_0_A       || \
236                 (x) == GX_VRAM_TEX_0_B       || \
237                 (x) == GX_VRAM_TEX_0_C       || \
238                 (x) == GX_VRAM_TEX_0_D       || \
239                 (x) == GX_VRAM_TEX_01_AB     || \
240                 (x) == GX_VRAM_TEX_01_BC     || \
241                 (x) == GX_VRAM_TEX_01_CD     || \
242                 (x) == GX_VRAM_TEX_012_ABC   || \
243                 (x) == GX_VRAM_TEX_012_BCD   || \
244                 (x) == GX_VRAM_TEX_0123_ABCD || \
245                 (x) == GX_VRAM_TEX_01_AC     || \
246                 (x) == GX_VRAM_TEX_01_AD     || \
247                 (x) == GX_VRAM_TEX_01_BD     || \
248                 (x) == GX_VRAM_TEX_012_ABD   || \
249                 (x) == GX_VRAM_TEX_012_ACD )
250 
251 //----------------------------------------------------------------------------
252 //    Parameters for GX_SetBankForClearImage etc.
253 //----------------------------------------------------------------------------
254 typedef enum
255 {
256     GX_VRAM_CLEARIMAGE_NONE = 0x0000,
257     GX_VRAM_CLEARIMAGE_256_AB = GX_VRAM_A | GX_VRAM_B,
258     GX_VRAM_CLEARIMAGE_256_CD = GX_VRAM_C | GX_VRAM_D,  // TextureImageSlot 23
259     GX_VRAM_CLEARDEPTH_128_A = GX_VRAM_A,
260     GX_VRAM_CLEARDEPTH_128_B = GX_VRAM_B,
261     GX_VRAM_CLEARDEPTH_128_C = GX_VRAM_C,
262     GX_VRAM_CLEARDEPTH_128_D = GX_VRAM_D
263 }
264 GXVRamClearImage;
265 
266 #define GX_VRAM_CLRIMG_ASSERT(x)                    \
267     SDK_ASSERT( (x) == GX_VRAM_CLEARIMAGE_NONE   || \
268                 (x) == GX_VRAM_CLEARIMAGE_256_AB || \
269                 (x) == GX_VRAM_CLEARIMAGE_256_CD || \
270                 (x) == GX_VRAM_CLEARDEPTH_128_A  || \
271                 (x) == GX_VRAM_CLEARDEPTH_128_B  || \
272                 (x) == GX_VRAM_CLEARDEPTH_128_C  || \
273                 (x) == GX_VRAM_CLEARDEPTH_128_D )
274 
275 //----------------------------------------------------------------------------
276 //    Parameters for GX_SetBankForTexPltt etc.
277 //----------------------------------------------------------------------------
278 typedef enum
279 {
280     GX_VRAM_TEXPLTT_NONE = 0x0000,
281     GX_VRAM_TEXPLTT_0_F = GX_VRAM_F,   // TexturePltt 0
282     GX_VRAM_TEXPLTT_0_G = GX_VRAM_G,   // TexturePltt 0
283     GX_VRAM_TEXPLTT_01_FG = GX_VRAM_F | GX_VRAM_G,      // TexturePltt 01
284     GX_VRAM_TEXPLTT_0123_E = GX_VRAM_E, // TexturePltt 0-3
285     GX_VRAM_TEXPLTT_01234_EF = GX_VRAM_E | GX_VRAM_F,   // TexturePltt 0-3,4
286     GX_VRAM_TEXPLTT_012345_EFG = GX_VRAM_E | GX_VRAM_F | GX_VRAM_G      // TexturePltt 0-3,45
287 }
288 GXVRamTexPltt;
289 
290 #define GX_VRAM_TEXPLTT_ASSERT(x)                    \
291     SDK_ASSERT( (x) == GX_VRAM_TEXPLTT_NONE       || \
292                 (x) == GX_VRAM_TEXPLTT_0_F        || \
293                 (x) == GX_VRAM_TEXPLTT_0_G        || \
294                 (x) == GX_VRAM_TEXPLTT_01_FG      || \
295                 (x) == GX_VRAM_TEXPLTT_0123_E     || \
296                 (x) == GX_VRAM_TEXPLTT_01234_EF   || \
297                 (x) == GX_VRAM_TEXPLTT_012345_EFG )
298 
299 //----------------------------------------------------------------------------
300 //    Parameters for GX_SetBankForBGExtPltt etc.
301 //----------------------------------------------------------------------------
302 typedef enum
303 {
304     GX_VRAM_BGEXTPLTT_NONE = 0x0000,
305     GX_VRAM_BGEXTPLTT_01_F = GX_VRAM_F, // BGExtPltt 0-1 <--- Caution
306     GX_VRAM_BGEXTPLTT_23_G = GX_VRAM_G, // BGExtPltt 2-3 <--- Caution
307     GX_VRAM_BGEXTPLTT_0123_E = GX_VRAM_E,       // BGExtPltt 0-3
308     GX_VRAM_BGEXTPLTT_0123_FG = GX_VRAM_F | GX_VRAM_G   // BGExtPltt 0-1,2-3
309 }
310 GXVRamBGExtPltt;
311 
312 #define GX_VRAM_BGEXTPLTT_ASSERT(x)                 \
313     SDK_ASSERT( (x) == GX_VRAM_BGEXTPLTT_NONE    || \
314                 (x) == GX_VRAM_BGEXTPLTT_01_F    || \
315                 (x) == GX_VRAM_BGEXTPLTT_23_G    || \
316                 (x) == GX_VRAM_BGEXTPLTT_0123_E  || \
317                 (x) == GX_VRAM_BGEXTPLTT_0123_FG )
318 
319 //----------------------------------------------------------------------------
320 //    Parameters for GX_SetBankForOBJExtPltt etc.
321 //----------------------------------------------------------------------------
322 #define GX_VRAM_OBJEXTPLTT_8_F    GX_VRAM_OBJEXTPLTT_0_F
323 #define GX_VRAM_OBJEXTPLTT_8_G    GX_VRAM_OBJEXTPLTT_0_G
324 
325 typedef enum
326 {
327     GX_VRAM_OBJEXTPLTT_NONE = 0,
328     GX_VRAM_OBJEXTPLTT_0_F = GX_VRAM_F, // OBJExtPltt
329     GX_VRAM_OBJEXTPLTT_0_G = GX_VRAM_G // OBJExtPltt
330 }
331 GXVRamOBJExtPltt;
332 
333 #define GX_VRAM_OBJEXTPLTT_ASSERT(x)              \
334     SDK_ASSERT( (x) == GX_VRAM_OBJEXTPLTT_NONE || \
335                 (x) == GX_VRAM_OBJEXTPLTT_0_F  || \
336                 (x) == GX_VRAM_OBJEXTPLTT_0_G )
337 
338 //----------------------------------------------------------------------------
339 //    Parameters for GXS_SetBankForSubBG etc.
340 //----------------------------------------------------------------------------
341 typedef enum
342 {
343     GX_VRAM_SUB_BG_NONE = 0x0000,
344     GX_VRAM_SUB_BG_128_C = GX_VRAM_C,
345     GX_VRAM_SUB_BG_32_H = GX_VRAM_H,
346     GX_VRAM_SUB_BG_48_HI = GX_VRAM_H | GX_VRAM_I
347 }
348 GXVRamSubBG;
349 
350 #define GX_VRAM_SUB_BG_ASSERT(x)               \
351     SDK_ASSERT( (x) == GX_VRAM_SUB_BG_NONE  || \
352                 (x) == GX_VRAM_SUB_BG_128_C || \
353                 (x) == GX_VRAM_SUB_BG_32_H  || \
354                 (x) == GX_VRAM_SUB_BG_48_HI )
355 
356 //----------------------------------------------------------------------------
357 //    Parameters for GX_SetBankForSubOBJ etc.
358 //----------------------------------------------------------------------------
359 typedef enum
360 {
361     GX_VRAM_SUB_OBJ_NONE = 0x0000,
362     GX_VRAM_SUB_OBJ_128_D = GX_VRAM_D,
363     GX_VRAM_SUB_OBJ_16_I = GX_VRAM_I
364 }
365 GXVRamSubOBJ;
366 
367 #define GX_VRAM_SUB_OBJ_ASSERT(x)               \
368     SDK_ASSERT( (x) == GX_VRAM_SUB_OBJ_NONE  || \
369                 (x) == GX_VRAM_SUB_OBJ_128_D || \
370                 (x) == GX_VRAM_SUB_OBJ_16_I )
371 
372 //----------------------------------------------------------------------------
373 //    Parameters for GX_SetBankForSubBGExtPltt etc.
374 //----------------------------------------------------------------------------
375 
376 #define GX_VRAM_SUB_BGEXTPLTT_32_H GX_VRAM_SUB_BGEXTPLTT_0123_H
377 
378 typedef enum
379 {
380     GX_VRAM_SUB_BGEXTPLTT_NONE = 0x0000,
381     GX_VRAM_SUB_BGEXTPLTT_0123_H = GX_VRAM_H
382 }
383 GXVRamSubBGExtPltt;
384 
385 #define GX_VRAM_SUB_BGEXTPLTT_ASSERT(x)              \
386     SDK_ASSERT( (x) == GX_VRAM_SUB_BGEXTPLTT_NONE || \
387                 (x) == GX_VRAM_SUB_BGEXTPLTT_0123_H )
388 
389 //----------------------------------------------------------------------------
390 //    Parameters for GX_SetBankForSubOBJExtPltt etc.
391 //----------------------------------------------------------------------------
392 
393 #define GX_VRAM_SUB_OBJEXTPLTT_16_I GX_VRAM_SUB_OBJEXTPLTT_0_I
394 
395 typedef enum
396 {
397     GX_VRAM_SUB_OBJEXTPLTT_NONE = 0x0000,
398     GX_VRAM_SUB_OBJEXTPLTT_0_I = GX_VRAM_I
399 }
400 GXVRamSubOBJExtPltt;
401 
402 #define GX_VRAM_SUB_OBJEXTPLTT_ASSERT(x)              \
403     SDK_ASSERT( (x) == GX_VRAM_SUB_OBJEXTPLTT_NONE || \
404                 (x) == GX_VRAM_SUB_OBJEXTPLTT_0_I )
405 
406 
407 
408 /* if include from Other Environment for exsample VC or BCB, */
409 /* please define SDK_FROM_TOOL                               */
410 #if !(defined(SDK_WIN32) || defined(SDK_FROM_TOOL))
411 
412 //----------------------------------------------------------------------------
413 // Declaration of function
414 //----------------------------------------------------------------------------
415 
416 //----------------------------------------------------------------------------
417 //
418 // Main engine
419 //
420 //----------------------------------------------------------------------------
421 void    GX_SetBankForBG(GXVRamBG bg);
422 BOOL    GX_TrySetBankForBG(GXVRamBG bg);
423 void    GX_SetBankForBGEx(GXVRamBG bg1, GXVRamBG bg2);
424 BOOL    GX_TrySetBankForBGEx(GXVRamBG bg1, GXVRamBG bg2);
425 void    GX_SetBankForOBJ(GXVRamOBJ obj);
426 BOOL    GX_TrySetBankForOBJ(GXVRamOBJ obj);
427 void    GX_SetBankForBGExtPltt(GXVRamBGExtPltt bgExtPltt);
428 BOOL    GX_TrySetBankForBGExtPltt(GXVRamBGExtPltt bgExtPltt);
429 void    GX_SetBankForOBJExtPltt(GXVRamOBJExtPltt objExtPltt);
430 BOOL    GX_TrySetBankForOBJExtPltt(GXVRamOBJExtPltt objExtPltt);
431 void    GX_SetBankForTex(GXVRamTex tex);
432 BOOL    GX_TrySetBankForTex(GXVRamTex tex);
433 void    GX_SetBankForTexPltt(GXVRamTexPltt texPltt);
434 BOOL    GX_TrySetBankForTexPltt(GXVRamTexPltt texPltt);
435 void    GX_SetBankForClearImage(GXVRamClearImage clrImg);
436 BOOL    GX_TrySetBankForClearImage(GXVRamClearImage clrImg);
437 
438 GXVRamBG GX_GetBankForBG(void);
439 GXVRamOBJ GX_GetBankForOBJ(void);
440 GXVRamBGExtPltt GX_GetBankForBGExtPltt(void);
441 GXVRamOBJExtPltt GX_GetBankForOBJExtPltt(void);
442 GXVRamTex GX_GetBankForTex(void);
443 GXVRamTexPltt GX_GetBankForTexPltt(void);
444 GXVRamClearImage GX_GetBankForClearImage(void);
445 
446 GXVRamBG GX_ResetBankForBG(void);
447 GXVRamOBJ GX_ResetBankForOBJ(void);
448 GXVRamBGExtPltt GX_ResetBankForBGExtPltt(void);
449 GXVRamOBJExtPltt GX_ResetBankForOBJExtPltt(void);
450 GXVRamTex GX_ResetBankForTex(void);
451 GXVRamTexPltt GX_ResetBankForTexPltt(void);
452 GXVRamClearImage GX_ResetBankForClearImage(void);
453 
454 GXVRamBG GX_DisableBankForBG(void);
455 GXVRamOBJ GX_DisableBankForOBJ(void);
456 GXVRamBGExtPltt GX_DisableBankForBGExtPltt(void);
457 GXVRamOBJExtPltt GX_DisableBankForOBJExtPltt(void);
458 GXVRamTex GX_DisableBankForTex(void);
459 GXVRamTexPltt GX_DisableBankForTexPltt(void);
460 GXVRamClearImage GX_DisableBankForClearImage(void);
461 
462 u32     GX_GetSizeOfBG(void);
463 u32     GX_GetSizeOfOBJ(void);
464 u32     GX_GetSizeOfBGExtPltt(void);
465 u32     GX_GetSizeOfOBJExtPltt(void);
466 u32     GX_GetSizeOfTex(void);
467 u32     GX_GetSizeOfTexPltt(void);
468 u32     GX_GetSizeOfClearImage(void);
469 
470 //----------------------------------------------------------------------------
471 // Sub engine
472 //----------------------------------------------------------------------------
473 void    GX_SetBankForSubBG(GXVRamSubBG sub_bg);
474 BOOL    GX_TrySetBankForSubBG(GXVRamSubBG sub_bg);
475 void    GX_SetBankForSubOBJ(GXVRamSubOBJ sub_obj);
476 BOOL    GX_TrySetBankForSubOBJ(GXVRamSubOBJ sub_obj);
477 void    GX_SetBankForSubBGExtPltt(GXVRamSubBGExtPltt sub_bgExtPltt);
478 BOOL    GX_TrySetBankForSubBGExtPltt(GXVRamSubBGExtPltt sub_bgExtPltt);
479 void    GX_SetBankForSubOBJExtPltt(GXVRamSubOBJExtPltt sub_objExtPltt);
480 BOOL    GX_TrySetBankForSubOBJExtPltt(GXVRamSubOBJExtPltt sub_objExtPltt);
481 
482 GXVRamSubBG GX_GetBankForSubBG(void);
483 GXVRamSubOBJ GX_GetBankForSubOBJ(void);
484 GXVRamSubBGExtPltt GX_GetBankForSubBGExtPltt(void);
485 GXVRamSubOBJExtPltt GX_GetBankForSubOBJExtPltt(void);
486 
487 GXVRamSubBG GX_ResetBankForSubBG(void);
488 GXVRamSubOBJ GX_ResetBankForSubOBJ(void);
489 GXVRamSubBGExtPltt GX_ResetBankForSubBGExtPltt(void);
490 GXVRamSubOBJExtPltt GX_ResetBankForSubOBJExtPltt(void);
491 
492 GXVRamSubBG GX_DisableBankForSubBG(void);
493 GXVRamSubOBJ GX_DisableBankForSubOBJ(void);
494 GXVRamSubBGExtPltt GX_DisableBankForSubBGExtPltt(void);
495 GXVRamSubOBJExtPltt GX_DisableBankForSubOBJExtPltt(void);
496 
497 u32     GX_GetSizeOfSubBG(void);
498 u32     GX_GetSizeOfSubOBJ(void);
499 u32     GX_GetSizeOfSubBGExtPltt(void);
500 u32     GX_GetSizeOfSubOBJExtPltt(void);
501 
502 //----------------------------------------------------------------------------
503 // Others
504 //----------------------------------------------------------------------------
505 void    GX_SetBankForARM7(GXVRamARM7 arm7);
506 BOOL    GX_TrySetBankForARM7(GXVRamARM7 arm7);
507 void    GX_SetBankForLCDC(int lcdc);
508 BOOL    GX_TrySetBankForLCDC(int lcdc);
509 
510 GXVRamARM7 GX_GetBankForARM7(void);
511 GXVRamLCDC GX_GetBankForLCDC(void);
512 
513 GXVRamARM7 GX_ResetBankForARM7(void);
514 
515 GXVRamARM7 GX_DisableBankForARM7(void);
516 GXVRamLCDC GX_DisableBankForLCDC(void);
517 
518 u32     GX_GetSizeOfARM7(void);
519 
520 
521 
522 #endif // SDK_FROM_TOOL
523 
524 #ifdef __cplusplus
525 }/* extern "C" */
526 #endif
527 
528 #endif
529