+// ID_VL.H\r
+\r
+// wolf compatability\r
+\r
+#define MS_Quit Quit\r
+\r
+void Quit (char *error);\r
+\r
+//===========================================================================\r
+\r
+\r
+#define SC_INDEX 0x3C4\r
+#define SC_RESET 0\r
+#define SC_CLOCK 1\r
+#define SC_MAPMASK 2\r
+#define SC_CHARMAP 3\r
+#define SC_MEMMODE 4\r
+\r
+#define CRTC_INDEX 0x3D4\r
+#define CRTC_H_TOTAL 0\r
+#define CRTC_H_DISPEND 1\r
+#define CRTC_H_BLANK 2\r
+#define CRTC_H_ENDBLANK 3\r
+#define CRTC_H_RETRACE 4\r
+#define CRTC_H_ENDRETRACE 5\r
+#define CRTC_V_TOTAL 6\r
+#define CRTC_OVERFLOW 7\r
+#define CRTC_ROWSCAN 8\r
+#define CRTC_MAXSCANLINE 9\r
+#define CRTC_CURSORSTART 10\r
+#define CRTC_CURSOREND 11\r
+#define CRTC_STARTHIGH 12\r
+#define CRTC_STARTLOW 13\r
+#define CRTC_CURSORHIGH 14\r
+#define CRTC_CURSORLOW 15\r
+#define CRTC_V_RETRACE 16\r
+#define CRTC_V_ENDRETRACE 17\r
+#define CRTC_V_DISPEND 18\r
+#define CRTC_OFFSET 19\r
+#define CRTC_UNDERLINE 20\r
+#define CRTC_V_BLANK 21\r
+#define CRTC_V_ENDBLANK 22\r
+#define CRTC_MODE 23\r
+#define CRTC_LINECOMPARE 24\r
+\r
+\r
+#define GC_INDEX 0x3CE\r
+#define GC_SETRESET 0\r
+#define GC_ENABLESETRESET 1\r
+#define GC_COLORCOMPARE 2\r
+#define GC_DATAROTATE 3\r
+#define GC_READMAP 4\r
+#define GC_MODE 5\r
+#define GC_MISCELLANEOUS 6\r
+#define GC_COLORDONTCARE 7\r
+#define GC_BITMASK 8\r
+\r
+#define ATR_INDEX 0x3c0\r
+#define ATR_MODE 16\r
+#define ATR_OVERSCAN 17\r
+#define ATR_COLORPLANEENABLE 18\r
+#define ATR_PELPAN 19\r
+#define ATR_COLORSELECT 20\r
+\r
+#define STATUS_REGISTER_1 0x3da\r
+\r
+#define PEL_WRITE_ADR 0x3c8\r
+#define PEL_READ_ADR 0x3c7\r
+#define PEL_DATA 0x3c9\r
+\r
+\r
+//===========================================================================\r
+\r
+#define SCREENSEG 0xa000\r
+\r
+#define SCREENWIDTH 80 // default screen width in bytes\r
+#define MAXSCANLINES 200 // size of ylookup table\r
+\r
+#define CHARWIDTH 2\r
+#define TILEWIDTH 4\r
+\r
+//===========================================================================\r
+\r
+extern unsigned bufferofs; // all drawing is reletive to this\r
+extern unsigned displayofs,pelpan; // last setscreen coordinates\r
+\r
+extern unsigned screenseg; // set to 0xa000 for asm convenience\r
+\r
+extern unsigned linewidth;\r
+extern unsigned ylookup[MAXSCANLINES];\r
+\r
+extern boolean screenfaded;\r
+extern unsigned bordercolor;\r
+\r
+//===========================================================================\r
+\r
+//\r
+// VGA hardware routines\r
+//\r
+\r
+#define VGAWRITEMODE(x) asm{\\r
+cli;\\r
+mov dx,GC_INDEX;\\r
+mov al,GC_MODE;\\r
+out dx,al;\\r
+inc dx;\\r
+in al,dx;\\r
+and al,252;\\r
+or al,x;\\r
+out dx,al;\\r
+sti;}\r
+\r
+#define VGAMAPMASK(x) asm{cli;mov dx,SC_INDEX;mov al,SC_MAPMASK;mov ah,x;out dx,ax;sti;}\r
+#define VGAREADMAP(x) asm{cli;mov dx,GC_INDEX;mov al,GC_READMAP;mov ah,x;out dx,ax;sti;}\r
+\r
+\r
+void VL_Startup (void);\r
+void VL_Shutdown (void);\r
+\r
+void VL_SetVGAPlane (void);\r
+void VL_SetTextMode (void);\r
+void VL_DePlaneVGA (void);\r
+void VL_SetVGAPlaneMode (void);\r
+void VL_ClearVideo (byte color);\r
+\r
+void VL_SetLineWidth (unsigned width);\r
+void VL_SetSplitScreen (int linenum);\r
+\r
+void VL_WaitVBL (int vbls);\r
+void VL_CrtcStart (int crtc);\r
+void VL_SetScreen (int crtc, int pelpan);\r
+\r
+void VL_FillPalette (int red, int green, int blue);\r
+void VL_SetColor (int color, int red, int green, int blue);\r
+void VL_GetColor (int color, int *red, int *green, int *blue);\r
+void VL_SetPalette (byte far *palette);\r
+void VL_GetPalette (byte far *palette);\r
+void VL_FadeOut (int start, int end, int red, int green, int blue, int steps);\r
+void VL_FadeIn (int start, int end, byte far *palette, int steps);\r
+void VL_ColorBorder (int color);\r
+\r
+void VL_Plot (int x, int y, int color);\r
+void VL_Hlin (unsigned x, unsigned y, unsigned width, unsigned color);\r
+void VL_Vlin (int x, int y, int height, int color);\r
+void VL_Bar (int x, int y, int width, int height, int color);\r
+\r
+void VL_MungePic (byte far *source, unsigned width, unsigned height);\r
+void VL_DrawPicBare (int x, int y, byte far *pic, int width, int height);\r
+void VL_MemToLatch (byte far *source, int width, int height, unsigned dest);\r
+void VL_ScreenToScreen (unsigned source, unsigned dest,int width, int height);\r
+void VL_MemToScreen (byte far *source, int width, int height, int x, int y);\r
+void VL_MaskedToScreen (byte far *source, int width, int height, int x, int y);\r
+\r
+void VL_DrawTile8String (char *str, char far *tile8ptr, int printx, int printy);\r
+void VL_DrawLatch8String (char *str, unsigned tile8ptr, int printx, int printy);\r
+void VL_SizeTile8String (char *str, int *width, int *height);\r
+void VL_DrawPropString (char *str, unsigned tile8ptr, int printx, int printy);\r
+void VL_SizePropString (char *str, int *width, int *height, char far *font);\r
+\r
+void VL_TestPaletteSet (void);\r
+\r