sgdk
|
00001 00022 #include "maths.h" 00023 #include "vdp.h" 00024 #include "pal.h" 00025 00026 #ifndef _BMP_H_ 00027 #define _BMP_H_ 00028 00029 00030 #define BMP_PLANWIDTH_SFT planeWidthSft 00031 #define BMP_PLANHEIGHT_SFT planeHeightSft 00032 00036 #define BMP_PLANWIDTH 64 00037 00041 #define BMP_PLANHEIGHT 64 00042 00043 #define BMP_CELLWIDTH_SFT 5 00044 00048 #define BMP_CELLWIDTH (1 << BMP_CELLWIDTH_SFT) 00049 00053 #define BMP_CELLHEIGHT 20 00054 #define BMP_CELLWIDTHMASK (BMP_CELLWIDTH - 1) 00055 00056 #define BMP_CELLXOFFSET (((screenWidth >> 3) - BMP_CELLWIDTH) / 2) 00057 #define BMP_CELLYOFFSET (((screenHeight >> 3) - BMP_CELLHEIGHT) / 2) 00058 00059 #define BMP_XPIXPERTILE_SFT 3 00060 #define BMP_YPIXPERTILE_SFT 3 00061 00065 #define BMP_XPIXPERTILE (1 << BMP_XPIXPERTILE_SFT) 00066 00070 #define BMP_YPIXPERTILE (1 << BMP_YPIXPERTILE_SFT) 00071 #define BMP_XPIXPERTILEMASK (BMP_XPIXPERTILE - 1) 00072 #define BMP_YPIXPERTILEMASK (BMP_YPIXPERTILE - 1) 00073 00074 #define BMP_WIDTH_SFT (BMP_CELLWIDTH_SFT + BMP_XPIXPERTILE_SFT) 00075 00079 #define BMP_WIDTH (1 << BMP_WIDTH_SFT) 00080 00084 #define BMP_HEIGHT (BMP_CELLHEIGHT * BMP_YPIXPERTILE) 00085 #define BMP_WIDTH_MASK (BMP_WIDTH - 1) 00086 00087 #define BMP_PITCH_SFT (BMP_CELLWIDTH_SFT + 2) 00088 00092 #define BMP_PITCH (1 << BMP_PITCH_SFT) 00093 #define BMP_PITCH_MASK (BMP_PITCH - 1) 00094 00099 #define BMP_GENBMP16_WIDTH(genbmp16) ((genbmp16)[0]) 00100 00104 #define BMP_GENBMP16_HEIGHT(genbmp16) ((genbmp16)[1]) 00105 00109 #define BMP_GENBMP16_PALETTE(genbmp16) (&((genbmp16)[2])) 00110 00114 #define BMP_GENBMP16_IMAGE(genbmp16) (&((genbmp16)[18])) 00115 00119 #define BMP_GETPIXEL(x, y) BMP_getPixelFast(x, y) 00120 00124 #define BMP_SETPIXEL(x, y, col) BMP_setPixelFast(x, y, col) 00125 00126 00127 #define BMP_BASETILEINDEX TILE_USERINDEX 00128 00129 #define BMP_FB0TILEINDEX BMP_BASETILEINDEX 00130 #define BMP_FB1TILEINDEX (BMP_BASETILEINDEX + (BMP_CELLWIDTH * BMP_CELLHEIGHT)) 00131 00132 #define BMP_FB0ENDTILEINDEX (BMP_FB0TILEINDEX + (BMP_CELLWIDTH * BMP_CELLHEIGHT)) 00133 #define BMP_FB1ENDTILEINDEX (BMP_FB1TILEINDEX + (BMP_CELLWIDTH * BMP_CELLHEIGHT)) 00134 00135 #define BMP_BASETILE (BMP_BASETILEINDEX * 32) 00136 #define BMP_FB0TILE (BMP_FB0TILEINDEX * 32) 00137 #define BMP_FB1TILE (BMP_FB1TILEINDEX * 32) 00138 00139 00159 typedef struct 00160 { 00161 u16 compression; 00162 u16 w; 00163 u16 h; 00164 const Palette *palette; 00165 const u8 *image; 00166 } Bitmap; 00167 00178 typedef struct 00179 { 00180 Vect2D_s16 pt; 00181 u16 col; 00182 } Pixel; 00183 00196 typedef struct 00197 { 00198 Vect2D_s16 pt1; 00199 Vect2D_s16 pt2; 00200 u16 col; 00201 } Line; 00202 00217 typedef struct 00218 { 00219 Vect2D_s16 pt1; 00220 Vect2D_s16 pt2; 00221 Vect2D_s16 pt3; 00222 u16 col; 00223 } Triangle; 00224 00225 00229 extern u8 *bmp_buffer_read; 00233 extern u8 *bmp_buffer_write; 00234 00235 00259 void BMP_init(u16 double_buffer, VDPPlane plane, u16 palette, u16 priority); 00266 void BMP_end(); 00273 void BMP_reset(); 00285 void BMP_setBufferCopy(u16 value); 00310 u16 BMP_flip(u16 async); 00311 00316 void BMP_clear(); 00317 00330 u8* BMP_getWritePointer(u16 x, u16 y); 00343 u8* BMP_getReadPointer(u16 x, u16 y); 00344 00345 00350 u16 BMP_hasFlipRequestPending(); 00355 void BMP_waitWhileFlipRequestPending(); 00360 u16 BMP_hasFlipInProgess(); 00366 void BMP_waitFlipComplete(); 00367 00379 void BMP_drawText(const char *str, u16 x, u16 y); 00391 void BMP_clearText(u16 x, u16 y, u16 w); 00399 void BMP_clearTextLine(u16 y); 00400 00408 void BMP_showFPS(u16 float_display); 00409 00422 u8 BMP_getPixel(u16 x, u16 y); 00435 u8 BMP_getPixelFast(u16 x, u16 y); 00450 void BMP_setPixel(u16 x, u16 y, u8 col); 00465 void BMP_setPixelFast(u16 x, u16 y, u8 col); 00478 void BMP_setPixels_V2D(const Vect2D_u16 *crd, u8 col, u16 num); 00491 void BMP_setPixelsFast_V2D(const Vect2D_u16 *crd, u8 col, u16 num); 00501 void BMP_setPixels(const Pixel *pixels, u16 num); 00511 void BMP_setPixelsFast(const Pixel *pixels, u16 num); 00512 00523 u16 BMP_clipLine(Line *l); 00532 void BMP_drawLine(Line *l); 00545 u16 BMP_isPolygonCulled(const Vect2D_s16 *pts, u16 num); 00560 u16 BMP_drawPolygon(const Vect2D_s16 *pts, u16 num, u8 col); 00561 00582 void BMP_drawBitmapData(const u8 *data, u16 x, u16 y, u16 w, u16 h, u32 pitch); 00605 u16 BMP_drawBitmap(const Bitmap *bitmap, u16 x, u16 y, u16 loadpal); 00633 u16 BMP_drawBitmapScaled(const Bitmap *bitmap, u16 x, u16 y, u16 w, u16 h, u16 loadpal); 00634 00639 void BMP_loadBitmapData(const u8 *data, u16 x, u16 y, u16 w, u16 h, u32 pitch); 00644 void BMP_loadBitmap(const Bitmap *bitmap, u16 x, u16 y, u16 loadpal); 00649 void BMP_loadAndScaleBitmap(const Bitmap *bitmap, u16 x, u16 y, u16 w, u16 h, u16 loadpal); 00650 00655 void BMP_getBitmapPalette(const Bitmap *bitmap, u16 *pal); 00656 00681 void BMP_scale(const u8 *src_buf, u16 src_wb, u16 src_h, u16 src_pitch, u8 *dst_buf, u16 dst_wb, u16 dst_h, u16 dst_pitch); 00682 00683 00684 #endif // _BMP_H_ 00685