VBE.H
上传用户:junwei_58
上传日期:2007-05-15
资源大小:79k
文件大小:11k
源码类别:

其他智力游戏

开发平台:

Visual C++

  1. #ifndef VBE_H
  2. #define VBE_H
  3. /*===============================================*
  4. Super VGA VBE 2.0 Driver Level
  5. Head file
  6. Group. Birdmen
  7. included in vbeasm.c
  8. *===============================================*/
  9. //#pragma inline
  10. #define VBE_SUCCESS     0x4F
  11. #define false 0
  12. #define true  1
  13. #ifdef EXTERN
  14. #undef EXTERN
  15. #endif
  16. #define EXTERN extern
  17. #ifdef VBE_CPP
  18. #undef EXTERN
  19. #define EXTERN
  20. #endif
  21. #define PRIVATE static
  22. #define PUBLIC
  23. #ifdef NULL
  24. #undef NULL
  25. #endif
  26. #define NULL 0
  27. #define returnMode() setMode(oldmode)
  28. typedef unsigned long   ulong;
  29. typedef unsigned short  ushort;
  30. typedef unsigned char   uchar;
  31. typedef unsigned long   color;
  32. #define getmaxx()         (xres-1)
  33. #define getmaxy()         (yres-1)
  34. #define getcolor()        COLOR
  35. #define getbkcolor()      BKCOLOR
  36. #define setcolor(color)   COLOR=color
  37. #define setbkcolor(color) BKCOLOR=color
  38. typedef struct {
  39. char    VESASignature[4];       /* 'VESA' 4 byte signature          */
  40. short   VESAVersion;            /* VBE version number               */
  41. char far *OemStringPtr;          /* Pointer to OEM string            */
  42. ulong Capabilities;           /* Capabilities of video card       */
  43. ushort far *VideoModePtr;          /* Pointer to supported modes       */
  44. short   TotalMemory;            /* Number of 64kb memory blocks     */
  45. /* VBE 2.0 extension information */
  46. short OemSoftwareRev; /* OEM Software revision number */
  47. char far *OemVendorNamePtr; /* Pointer to Vendor Name string */
  48. char far *OemProductNamePtr; /* Pointer to Product Name string */
  49. char far *OemProductRevPtr; /* Pointer to Product Revision str */
  50. char  reserved[222];          /* Pad to 256 byte block size       */
  51. char OemDATA[256]; /* Scratch pad for OEM data */
  52. }Struct_VBE_vgaInfo;
  53. typedef struct {
  54. short   ModeAttributes;         /* Mode attributes                  */
  55. char    WinAAttributes;         /* Window A attributes              */
  56. char    WinBAttributes;         /* Window B attributes              */
  57. short   WinGranularity;         /* Window granularity in k          */
  58. short   WinSize;                /* Window size in k                 */
  59. ushort  WinASegment;            /* Window A segment                 */
  60. ushort  WinBSegment;            /* Window B segment                 */
  61. void * bankfunc;            /* Pointer to window function       */
  62. short   BytesPerScanLine;       /* Bytes per scanline               */
  63. short   XResolution;            /* Horizontal resolution            */
  64. short   YResolution;            /* Vertical resolution              */
  65. char    XCharSize;              /* Character cell width             */
  66. char    YCharSize;              /* Character cell height            */
  67. char    NumberOfPlanes;         /* Number of memory planes          */
  68. char    BitsPerPixel;           /* Bits per pixel                   */
  69. char    NumberOfBanks;          /* Number of CGA style banks        */
  70. char    MemoryModel;            /* Memory model type                */
  71. char    BankSize;               /* Size of CGA style banks          */
  72. char    NumberOfImagePages;     /* Number of images pages (Max)     */
  73. char    res1;                   /* Reserved                         */
  74. char    RedMaskSize;            /* Size of direct color red mask    */
  75. char    RedFieldPosition;       /* Bit posn of lsb of red mask      */
  76. char    GreenMaskSize;          /* Size of direct color green mask  */
  77. char    GreenFieldPosition;     /* Bit posn of lsb of green mask    */
  78. char    BlueMaskSize;           /* Size of direct color blue mask   */
  79. char    BlueFieldPosition;      /* Bit posn of lsb of blue mask     */
  80. char    RsvdMaskSize;           /* Size of direct color res mask    */
  81. char    RsvdFieldPosition;      /* Bit posn of lsb of res mask      */
  82. char    DirectColorModeInfo;    /* Direct color mode attributes     */
  83. /* VBE 2.0 extension information */
  84. ulong PhysBasePtr; /* Physical address for linear buf */
  85. ulong OffScreenMemOffset; /* Pointer to start of offscreen mem*/
  86. short   OffScreenMemSize; /* Amount of offscreen mem in 1K's */
  87. /* VBE 2.1 extension information */
  88. short   LinBytesPerScanLine;    /* Bytes per scanline               */
  89. char    BnkNumberOfImagePages;  /* Number of images pages (banked)  */
  90. char    LinNumberOfImagePages;  /* Number of images pages (linear)  */
  91. char    LinRedMaskSize;         /* Size of direct color red mask    */
  92. char    LinRedFieldPosition;    /* Bit posn of lsb of red mask      */
  93. char    LinGreenMaskSize;       /* Size of direct color green mask  */
  94. char    LinGreenFieldPosition;  /* Bit posn of lsb of green mask    */
  95. char    LinBlueMaskSize;        /* Size of direct color blue mask   */
  96. char    LinBlueFieldPosition;   /* Bit posn of lsb of blue mask     */
  97. char    LinRsvdMaskSize;        /* Size of direct color res mask    */
  98. char    LinRsvdFieldPosition;  /* Bit posn of lsb of res mask      */
  99. char    res2[194];         /* Pad to 256 byte block size       */
  100. }Struct_VBE_modeInfo;
  101. /* 32 bit protected mode info block */
  102. typedef struct {
  103. short   setWindow; /* Offset of Set Window call */
  104. short setDisplayStart; /* Offset of Set Display Start call */
  105. short   setPalette; /* Offset of Set Primary Palette */
  106. short   IOPrivInfo; /* Offset of I/O priveledge info */
  107. /* VBE 2.1 extensions */
  108. long extensionSig; /* Identify extension (0xFBADFBAD) */
  109. long setWindowLen; /* Used to virtualise framebuffer */
  110. long setDisplayStartLen;
  111. long setPaletteLen;
  112. /* ... code and tables located in here */
  113. } VBE_pmInfo;
  114. typedef struct {
  115. uchar blue;                         /* Blue component of color */
  116. uchar green;                        /* Green component of color*/
  117. uchar red;                          /* Red component of color */
  118. uchar alpha;                        /* Alpha or alignment byte */
  119. }SvgaDAC;
  120. typedef struct {
  121. ushort width,height;  // word ptr [bp+n] / [bp+n]+2
  122. char far *imgbuf;     // dword ptr [bp+n]+4
  123. ushort where;         // word ptr [bp+n]+8
  124. uchar  bytesperpixel; // word ptr [bp+n]+10
  125. uchar reserved[5];    // word ptr [bp+n]+11
  126. }Image;
  127. typedef struct{
  128. long x,y;
  129. }point;
  130. EXTERN enum {COPY_PUT=0,XOR_PUT,AND_PUT,OR_PUT}WriteMode;
  131. EXTERN char far const *ScreenPtr;
  132. EXTERN ushort oldmode;
  133. EXTERN ushort xres,yres;
  134. EXTERN void *bankfunc;
  135. EXTERN ushort bytesperline;
  136. EXTERN ushort bytesperpixel;
  137. EXTERN ushort maxpage;
  138. EXTERN ushort VRAMStartX,VRAMStartY;
  139. EXTERN ushort waitVR;
  140. EXTERN ushort bankshift;
  141. EXTERN ushort curbank;
  142. EXTERN ulong COLOR,BKCOLOR;
  143. EXTERN void    (*setbank) (short);
  144. EXTERN void    (*setpixel)(int,int,ulong);//x,y,c
  145. EXTERN ulong   (*getpixel)(int,int);//return color
  146. EXTERN ulong   (*rgbcolor)(uchar,uchar,uchar);
  147. EXTERN int (*setpalette)(ushort start,ushort num,SvgaDAC far * pal);
  148. EXTERN int (*getpalette)(ushort start,ushort num,SvgaDAC far * pal);
  149. EXTERN Struct_VBE_vgaInfo VBE_vgaInfo;
  150. EXTERN Struct_VBE_modeInfo VBE_modeInfo;
  151. //in levelsup.c
  152. extern void (*Imgsetpixel)(Image img,int x,int y,ulong color);
  153. extern ulong (*Imggetpixel)(Image img,int x,int y);
  154. /*== functions ==*/
  155. #ifdef __cplusplus
  156. extern "C"{
  157. #endif
  158. PUBLIC EXTERN void       lineH(int x,int y,int dy,ulong c=COLOR);
  159. PUBLIC EXTERN void       lineV(int x,int y,int dx,ulong c=COLOR);
  160. PUBLIC EXTERN void        line(int left,int top,int right,int bottom,ulong c=COLOR);
  161. PUBLIC EXTERN void     rectant(int left,int top,ushort width,ushort height,ulong c=COLOR);
  162. PUBLIC EXTERN void    rectantB(int left,int top,ushort width,ushort height,ulong c=COLOR);
  163. PUBLIC EXTERN void         bar(int left,int top,ushort width,ushort height,ulong c=COLOR,ulong cB=BKCOLOR);
  164. PUBLIC EXTERN void      circle(int centerx,int centery,ushort radius,ulong c=COLOR);
  165. PUBLIC EXTERN void     circleB(int centerx,int centery,ushort radius,ulong c=COLOR);
  166. PUBLIC EXTERN void     circleb(int centerx,int centery,ushort radius,ulong c=COLOR,ulong cB=BKCOLOR);
  167. PUBLIC EXTERN char *getModeName();
  168. PUBLIC EXTERN char *sprintVBEInfo();
  169. PUBLIC EXTERN int  initVBEMode(int mode);
  170. PUBLIC EXTERN void        fill(int x,int y,ulong colorB,ulong color);
  171. // in vbeasm.c
  172. extern int   getVBEInfo();
  173. extern int  getModeInfo(int mode);
  174. extern int      setMode(int mode);
  175. extern int   getVBEMode();
  176. extern ushort rgbcolor32k(uchar r,uchar g,uchar b);
  177. extern ushort rgbcolor64k(uchar r,uchar g,uchar b);
  178. extern ulong  rgbcolor16m(uchar r,uchar g,uchar b);
  179. extern void        clrScr(ulong c=BKCOLOR);
  180. extern void   putIreImage(int left,int top,Image img,uchar color);//ushort  getImgWidth(Img *img);//asm//ushort getImgHeight(Img *img);//asm//void storeImgHead(char far *imgbuf,ushort width,ushort height);//asm
  181. extern int setpaletteVGA(ushort start,ushort num,SvgaDAC far * pal);
  182. extern int getpaletteVGA(ushort start,ushort num,SvgaDAC far * pal);
  183. extern int setpaletteVBE(ushort start,ushort num,SvgaDAC far * pal);
  184. extern int getpaletteVBE(ushort start,ushort num,SvgaDAC far * pal);
  185. extern void       setpal(uchar ColorNo, uchar R,uchar G,uchar B);
  186. extern void   setpixel256(int x,int y,ulong color);
  187. extern ulong  getpixel256(int x,int y);
  188. extern void   setpixel64k(int x,int y,ulong color);
  189. extern ulong  getpixel64k(int x,int y);
  190. extern void   setpixel16m(int x,int y,ulong color);
  191. extern ulong  getpixel16m(int x,int y);
  192. extern void      setBankA(short bank);
  193. extern void     setBankAB(short bank);
  194. extern void      getimage(int left,int top,Image img);
  195. extern void      putimage(int left,int top,Image img,uchar op);
  196. #ifdef __cplusplus
  197.  }
  198. #endif
  199. #include "c:languagezzksvga.libvbefont.h"
  200. EXTERN void      textxy(int x,int y,char *str,int mode=1);
  201. EXTERN void     ctextxy(int x,int y,uchar *hzstr,int mode=1);
  202. EXTERN void      besaer(point *,point *,point *,color);
  203. EXTERN void     besaerL(point s[],color,int);
  204. EXTERN void      bezier(point *p0,const unsigned n,const unsigned t);
  205. PUBLIC EXTERN void    setpixelM(point p,color);
  206. //in gui
  207. extern void initSystemColor();
  208. //in levelsup.c
  209. extern void  Imgsetpixel256(Image dimg,int x,int y,ulong color);
  210. extern ulong Imggetpixel256(Image dimg,int x,int y);
  211. extern void  Imgsetpixel64k(Image dimg,int x,int y,ulong color);
  212. extern ulong Imggetpixel64k(Image dimg,int x,int y);
  213. extern void Imggetimage(Image dimg,int left,int top,Image img);
  214. extern void Imgputimage(Image dimg,int left,int top,Image img,uchar op);
  215. extern void ImgputIreImage(Image dimg,int left,int top,Image img,ulong color);
  216. //in vbefont.cpp
  217. extern void Imgtextxy(Image dimg,int x,int y,char *str,int mode);
  218. extern void Imgctextxy(Image dimg,int x,int y,uchar *hzstr,int mode);
  219. #endif