00001 #ifndef _PA_Buffer
00002 #define _PA_Buffer
00003
00004
00005
00011 #include "PA9.h"
00012 #include "PA_Interrupt.h"
00013
00014
00015
00016 extern u16 PA_oldx[2];
00017 extern u16 PA_oldy[2];
00018 extern u8 PA_drawsize[2];
00019 extern u16 *PA_DrawBg[2];
00020
00021
00039 void PA_Init8bitBg(bool screen, u8 bg_priority);
00040
00041
00053 void PA_Init16bitBg(bool screen, u8 bg_priority);
00054
00055
00056
00074 extern inline void PA_Put8bitPixel(bool screen, s16 x, s16 y, u8 color) {
00075 u16 pos = (x >> 1) + (y << 7);
00076 if (x&1){
00077 PA_DrawBg[screen][pos] &= 255;
00078 PA_DrawBg[screen][pos] |= color << 8;
00079 }
00080 else {
00081 PA_DrawBg[screen][pos] &= 255 << 8;
00082 PA_DrawBg[screen][pos] |= color;
00083 }
00084 }
00085
00086
00105 extern inline void PA_Put2_8bitPixels(bool screen, s16 x, s16 y, u16 colors) { PA_DrawBg[screen][(x >> 1) + (y << 7)] = colors;
00106 }
00107
00128 extern inline void PA_PutDouble8bitPixels(bool screen, s16 x, s16 y, u8 color1, u8 color2) {
00129 PA_Put2_8bitPixels(screen, x, y, color1 + (color2 << 8));
00130 }
00131
00132
00133
00152 extern inline void PA_Put4_8bitPixels(bool screen, s16 x, s16 y, u32 colors) {
00153
00154
00155 }
00156
00157
00172 extern inline u8 PA_Get8bitPixel(bool screen, u8 x, u8 y) {
00173 u16 pos = (x >> 1) + (y << 7);
00174 if (x&1){
00175 return (PA_DrawBg[screen][pos] >> 8);
00176 }
00177 else {
00178 return (PA_DrawBg[screen][pos]);
00179 }
00180 }
00181
00182
00183
00184
00202 extern inline void PA_Put16bitPixel(bool screen, s16 x, s16 y, u16 color) {
00203 PA_DrawBg[screen][x + (y << 8)] = color;
00204 }
00205
00206
00221 #define PA_Get16bitPixel(screen, x, y) PA_DrawBg[screen][x + (y << 8)]
00222
00223
00224
00225
00226
00227
00251 void PA_Draw8bitLine(bool screen, u16 x1, u16 y1, u16 x2, u16 y2, u8 color);
00252
00253
00254
00255
00256
00280 void PA_Draw16bitLine(bool screen, u16 x1, u16 y1, u16 x2, u16 y2, u16 color);
00281
00282
00283
00284
00296 void PA_8bitDraw(bool screen, u8 color);
00297
00298
00310 void PA_16bitDraw(bool screen, u16 color);
00311
00312
00324 #define PA_SetDrawSize(screen, draw_size) PA_drawsize[screen] = draw_size;
00325
00326
00327
00328
00329
00341 #define PA_Load8bitBitmap(screen, bitmap) DMA_Copy(bitmap, (void*)PA_DrawBg[screen], 256*96, DMA_16NOW);
00342
00354 #define PA_Load16bitBitmap(screen, bitmap) {u32 PA_temp; \
00355 for (PA_temp = 0; PA_temp < 256*192; PA_temp++)\
00356 PA_DrawBg[screen][PA_temp] = bitmap[PA_temp] + (1 << 15);}
00357
00358
00367 #define PA_Clear8bitBg(screen) DMA_Copy(Blank, (void*)PA_DrawBg[screen], 256*96, DMA_16NOW);
00368
00377 #define PA_Clear16bitBg(screen) DMA_Copy(Blank, (void*)PA_DrawBg[screen], 256*192, DMA_16NOW)
00378
00379
00391 extern inline void PA_LoadJpeg(bool screen, void *jpeg) {
00392 REG_IME = 0x00;
00393 JPEG_DecompressImage((u8*)jpeg, PA_DrawBg[screen], 256, 192);
00394 REG_IME = 0x01;
00395 }
00396
00397
00398
00399
00400
00401
00402 void PA_Draw16bitLineEx(bool screen, s16 basex, s16 basey, s16 endx, s16 endy, u16 color, s8 size);
00403
00404 void PA_Draw16bitRect(bool screen, s16 basex, s16 basey, s16 endx, s16 endy, u16 color);
00405
00406
00407
00408
00409
00410
00412
00413
00414 extern inline void PA_8bit8x8Image(bool screen, u16 basex, u16 basey, u8* data){
00415 s16 x, y;
00416
00417 for (x = 0; x < 8; x++)
00418 for (y = 0; y < 8; y++)
00419 PA_Put8bitPixel(screen, x + basex, y + basey, data[x + (y << 3)]);
00420 }
00421
00422
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468 #endif
00469
00470