00001 #ifndef _PA_Palette
00002 #define _PA_Palette
00003
00004
00005
00006 void PA_LoadSpriteExtPal(bool screen, u16 palette_number, void* palette);
00007 void PA_LoadBgExtPal(bool screen, u16 palette_number, void* palette);
00008
00009
00016
00017
00018
00020
00022 #define PAL_BG0 0x05000000
00023 #define PAL_SPRITE0 0x05000200
00024 #define PAL_BG1 0x05000400
00025 #define PAL_SPRITE1 0x05000600
00026
00027 #define REG_BRIGHT 0x0400006C // Brightness
00028
00029
00030
00048 #define PA_LoadPal(palette, source) {\
00049 DMA_Copy((void*)source, (void*)palette, 256, DMA_16NOW);\
00050 if (palette == PAL_SPRITE0) PA_LoadSpritePal(0, 0, (void*)source);\
00051 if (palette == PAL_SPRITE1) PA_LoadSpritePal(1, 0, (void*)source);\
00052 if (palette == PAL_BG0) {u8 itemp; for (itemp = 0; itemp < 4; itemp++) PA_LoadBgPal(0, itemp, (void*)source);}\
00053 if (palette == PAL_BG1) {u8 itemp; for (itemp = 0; itemp < 4; itemp++) PA_LoadBgPal(1, itemp, (void*)source);}}
00054
00055
00071 #define PA_LoadPal16(palette, n_palette, source) DMA_Copy((void*)source, (void*)(palette + (n_palette << 5)), 16, DMA_16NOW);
00072
00073
00089 #define PA_RGB(r,g,b) ((1 << 15) + (r) + ((g)<<5) + ((b)<<10))
00090
00104 void PA_SetBrightness(bool screen, s8 bright);
00105
00106
00107
00116 extern inline void PA_SetPalNeg(u32 palette) {
00117 u16* pal = (u16*)palette;
00118 u16 i;
00119
00120 for (i = 0; i < 256; i++) pal[i] = ~pal[i];
00121 }
00122
00123
00124
00125
00137 extern inline void PA_SetPal16Neg(u32 palette, u8 n_palette) {
00138 u16* pal = (u16*)palette;
00139 u16 i;
00140
00141 for (i = (n_palette << 4); i < ((n_palette + 1) << 4); i++) pal[i] = ~pal[i];
00142 }
00143
00144
00150 void PA_InitSpriteExtPal(void);
00151
00152
00153
00159 void PA_InitBgExtPal(void);
00160
00161
00162
00177 extern inline void PA_LoadSpritePal(bool screen, u8 palette_number, void* palette)
00178 {
00179 PA_LoadSpriteExtPal(screen, palette_number, palette);
00180 }
00181
00182
00183
00184
00199 extern inline void PA_LoadBgPal(bool screen, u16 bg_number, void* palette){
00200 PA_LoadBgExtPal(screen, bg_number, palette);
00201 }
00202
00203
00204 void PA_LoadBgPalN(bool screen, u8 bg_number, u8 pal_number, void* palette);
00205
00206
00207
00208
00223 #define PA_SetBgPalCol(screen, color_number, colorRGB) BG_PALETTE[color_number + (screen << 9)] = colorRGB
00224
00225
00226
00247 void PA_SetBgPalNCol(bool screen, u8 bg_number, u8 pal_number, u8 color_number, u16 color);
00248
00249
00264 #define PA_SetSpritePalCol(screen, color_number, colorRGB) BG_PALETTE[256 + color_number + (screen << 9)] = colorRGB
00265
00266
00267
00279 extern inline void PA_SetBgColor(bool screen, u16 color){
00280 BG_PALETTE[screen<<7] = color;
00281 }
00282
00283
00284 extern inline void* PA_GetBgPal(bool screen, u8 bg_number){
00285 if (screen == 0) return (void*)(VRAM_E + (bg_number << 12));
00286 else return (void*)(VRAM_H + (bg_number << 12));
00287 }
00288
00289
00290
00293
00294
00295 #endif
00296
00297