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_PLANE_WIDTH_SFT planeWidthSft 00031 #define BMP_PLANE_HEIGHT_SFT planeHeightSft 00032 00036 #define BMP_PLANE_WIDTH 64 00037 00041 #define BMP_PLANE_HEIGHT 64 00042 00043 #define BMP_TILE_WIDTH_SFT 5 00044 00048 #define BMP_TILE_WIDTH (1 << BMP_TILE_WIDTH_SFT) 00049 #define BMP_TILE_WIDTH_MASK (BMP_TILE_WIDTH - 1) 00050 00054 #define BMP_TILE_HEIGHT 20 00055 00056 #define BMP_TILE_XOFFSET (((screenWidth >> 3) - BMP_TILE_WIDTH) / 2) 00057 #define BMP_TILE_YOFFSET (((screenHeight >> 3) - BMP_TILE_HEIGHT) / 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_XPIXPERTILE_MASK (BMP_XPIXPERTILE - 1) 00072 #define BMP_YPIXPERTILE_MASK (BMP_YPIXPERTILE - 1) 00073 00074 #define BMP_WIDTH_SFT (BMP_TILE_WIDTH_SFT + BMP_XPIXPERTILE_SFT) 00075 00079 #define BMP_WIDTH (1 << BMP_WIDTH_SFT) 00080 00084 #define BMP_HEIGHT (BMP_TILE_HEIGHT * BMP_YPIXPERTILE) 00085 #define BMP_WIDTH_MASK (BMP_WIDTH - 1) 00086 00087 #define BMP_PITCH_SFT (BMP_TILE_WIDTH_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) _Pragma("GCC error \"This method is deprecated, use BMP_getPixelFast(..) instead.\"") 00120 00123 #define BMP_SETPIXEL(x, y, col) _Pragma("GCC error \"This method is deprecated, use BMP_setPixelFast(..) instead.\"") 00124 00125 00126 #define BMP_BASE_TILE_INDEX TILE_USER_INDEX 00127 00128 #define BMP_FB0_TILE_INDEX BMP_BASE_TILE_INDEX 00129 #define BMP_FB1_TILE_INDEX (BMP_BASE_TILE_INDEX + (BMP_TILE_WIDTH * BMP_TILE_HEIGHT)) 00130 00131 #define BMP_FB0_END_TILE_INDEX (BMP_FB0_TILE_INDEX + (BMP_TILE_WIDTH * BMP_TILE_HEIGHT)) 00132 #define BMP_FB1_END_TILE_INDEX (BMP_FB1_TILE_INDEX + (BMP_TILE_WIDTH * BMP_TILE_HEIGHT)) 00133 #define BMP_END_TILE_INDEX BMP_FB1_END_TILE_INDEX 00134 00135 #define BMP_BASE_ADDR (BMP_BASE_TILE_INDEX * 32) 00136 #define BMP_FB0_ADDR (BMP_FB0_TILE_INDEX * 32) 00137 #define BMP_FB1_ADDR (BMP_FB1_TILE_INDEX * 32) 00138 #define BMP_END_ADDR (BMP_END_TILE_INDEX * 32) 00139 00140 00160 typedef struct 00161 { 00162 u16 compression; 00163 u16 w; 00164 u16 h; 00165 const Palette *palette; 00166 const u8 *image; 00167 } Bitmap; 00168 00179 typedef struct 00180 { 00181 Vect2D_s16 pt; 00182 u16 col; 00183 } Pixel; 00184 00197 typedef struct 00198 { 00199 Vect2D_s16 pt1; 00200 Vect2D_s16 pt2; 00201 u16 col; 00202 } Line; 00203 00218 typedef struct 00219 { 00220 Vect2D_s16 pt1; 00221 Vect2D_s16 pt2; 00222 Vect2D_s16 pt3; 00223 u16 col; 00224 } Triangle; 00225 00226 00230 extern u8 *bmp_buffer_read; 00234 extern u8 *bmp_buffer_write; 00235 00236 00260 void BMP_init(u16 double_buffer, VDPPlane plane, u16 palette, u16 priority); 00267 void BMP_end(void); 00274 void BMP_reset(void); 00286 void BMP_setBufferCopy(u16 value); 00311 u16 BMP_flip(u16 async); 00312 00317 void BMP_clear(void); 00318 00331 u8* BMP_getWritePointer(u16 x, u16 y); 00344 u8* BMP_getReadPointer(u16 x, u16 y); 00345 00346 00351 u16 BMP_hasFlipRequestPending(void); 00356 void BMP_waitWhileFlipRequestPending(void); 00361 u16 BMP_hasFlipInProgess(void); 00367 void BMP_waitFlipComplete(void); 00368 00380 void BMP_drawText(const char *str, u16 x, u16 y); 00392 void BMP_clearText(u16 x, u16 y, u16 w); 00400 void BMP_clearTextLine(u16 y); 00401 00409 void BMP_showFPS(u16 float_display); 00410 00423 u8 BMP_getPixel(u16 x, u16 y); 00436 u8 BMP_getPixelFast(u16 x, u16 y); 00451 void BMP_setPixel(u16 x, u16 y, u8 col); 00466 void BMP_setPixelFast(u16 x, u16 y, u8 col); 00479 void BMP_setPixels_V2D(const Vect2D_u16 *crd, u8 col, u16 num); 00492 void BMP_setPixelsFast_V2D(const Vect2D_u16 *crd, u8 col, u16 num); 00502 void BMP_setPixels(const Pixel *pixels, u16 num); 00512 void BMP_setPixelsFast(const Pixel *pixels, u16 num); 00513 00524 u16 BMP_clipLine(Line *l); 00533 void BMP_drawLine(Line *l); 00546 u16 BMP_isPolygonCulled(const Vect2D_s16 *pts, u16 num); 00561 u16 BMP_drawPolygon(const Vect2D_s16 *pts, u16 num, u8 col); 00562 00583 void BMP_drawBitmapData(const u8 *data, u16 x, u16 y, u16 w, u16 h, u32 pitch); 00606 bool BMP_drawBitmap(const Bitmap *bitmap, u16 x, u16 y, bool loadpal); 00634 bool BMP_drawBitmapScaled(const Bitmap *bitmap, u16 x, u16 y, u16 w, u16 h, bool loadpal); 00635 00640 #define BMP_loadBitmapData(data, x, y, w, h, pitch) _Pragma("GCC error \"This method is deprecated, use BMP_drawBitmapData(..) instead.\"") 00641 00645 #define BMP_loadBitmap(bitmap, x, y, loadpal) _Pragma("GCC error \"This method is deprecated, use BMP_drawBitmap(..) instead.\"") 00646 00650 #define BMP_loadAndScaleBitmap(bitmap, x, y, w, h, loadpal) _Pragma("GCC error \"This method is deprecated, use BMP_drawBitmapScaled(..) instead.\"") 00651 00656 #define BMP_getBitmapPalette(bitmap, pal) _Pragma("GCC error \"This method is deprecated, use bitmap->palette instead.\"") 00657 00682 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); 00683 00684 00685 #endif // _BMP_H_ 00686