--- /dev/null
+// ID_VH.H\r
+\r
+\r
+#define WHITE 15 // graphics mode independant colors\r
+#define BLACK 0\r
+#define FIRSTCOLOR 1\r
+#define SECONDCOLOR 12\r
+#define F_WHITE 15\r
+#define F_BLACK 0\r
+#define F_FIRSTCOLOR 1\r
+#define F_SECONDCOLOR 12\r
+\r
+//===========================================================================\r
+\r
+#define MAXSHIFTS 1\r
+\r
+typedef struct\r
+{\r
+ int width,\r
+ height,\r
+ orgx,orgy,\r
+ xl,yl,xh,yh,\r
+ shifts;\r
+} spritetabletype;\r
+\r
+typedef struct\r
+{\r
+ unsigned sourceoffset[MAXSHIFTS];\r
+ unsigned planesize[MAXSHIFTS];\r
+ unsigned width[MAXSHIFTS];\r
+ byte data[];\r
+} spritetype; // the memptr for each sprite points to this\r
+\r
+typedef struct\r
+{\r
+ int width,height;\r
+} pictabletype;\r
+\r
+\r
+typedef struct\r
+{\r
+ int height;\r
+ int location[256];\r
+ char width[256];\r
+} fontstruct;\r
+\r
+\r
+//===========================================================================\r
+\r
+\r
+extern pictabletype _seg *pictable;\r
+extern pictabletype _seg *picmtable;\r
+extern spritetabletype _seg *spritetable;\r
+\r
+extern byte fontcolor;\r
+extern int fontnumber;\r
+extern int px,py;\r
+\r
+//\r
+// Double buffer management routines\r
+//\r
+\r
+void VW_InitDoubleBuffer (void);\r
+int VW_MarkUpdateBlock (int x1, int y1, int x2, int y2);\r
+void VW_UpdateScreen (void);\r
+\r
+//\r
+// mode independant routines\r
+// coordinates in pixels, rounded to best screen res\r
+// regions marked in double buffer\r
+//\r
+\r
+void VWB_DrawTile8 (int x, int y, int tile);\r
+void VWB_DrawTile8M (int x, int y, int tile);\r
+void VWB_DrawTile16 (int x, int y, int tile);\r
+void VWB_DrawTile16M (int x, int y, int tile);\r
+void VWB_DrawPic (int x, int y, int chunknum);\r
+void VWB_DrawMPic(int x, int y, int chunknum);\r
+void VWB_Bar (int x, int y, int width, int height, int color);\r
+\r
+void VWB_DrawPropString (char far *string);\r
+void VWB_DrawMPropString (char far *string);\r
+void VWB_DrawSprite (int x, int y, int chunknum);\r
+void VWB_Plot (int x, int y, int color);\r
+void VWB_Hlin (int x1, int x2, int y, int color);\r
+void VWB_Vlin (int y1, int y2, int x, int color);\r
+\r
+\r
+//\r
+// wolfenstein EGA compatability stuff\r
+//\r
+extern byte far gamepal;\r
+\r
+void VH_SetDefaultColors (void);\r
+\r
+#define VW_Startup VL_Startup\r
+#define VW_Shutdown VL_Shutdown\r
+#define VW_SetCRTC VL_SetCRTC\r
+#define VW_SetScreen VL_SetScreen\r
+#define VW_Bar VL_Bar\r
+#define VW_Plot VL_Plot\r
+#define VW_Hlin(x,z,y,c) VL_Hlin(x,y,(z)-(x)+1,c)\r
+#define VW_Vlin(y,z,x,c) VL_Vlin(x,y,(z)-(y)+1,c)\r
+#define VW_DrawPic VH_DrawPic\r
+#define VW_SetSplitScreen VL_SetSplitScreen\r
+#define VW_SetLineWidth VL_SetLineWidth\r
+#define VW_ColorBorder VL_ColorBorder\r
+#define VW_WaitVBL VL_WaitVBL\r
+#define VW_FadeIn() VL_FadeIn(0,255,&gamepal,30);\r
+#define VW_FadeOut() VL_FadeOut(0,255,0,0,0,30);\r
+#define VW_ScreenToScreen VL_ScreenToScreen\r
+#define VW_SetDefaultColors VH_SetDefaultColors\r
+void VW_MeasurePropString (char far *string, word *width, word *height);\r
+#define EGAMAPMASK(x) VGAMAPMASK(x)\r
+#define EGAWRITEMODE(x) VGAWRITEMODE(x)\r
+\r
+//#define VW_MemToScreen VL_MemToLatch\r
+\r
+#define MS_Quit Quit\r
+\r
+\r
+#define LatchDrawChar(x,y,p) VL_LatchToScreen(latchpics[0]+(p)*16,2,8,x,y)\r
+#define LatchDrawTile(x,y,p) VL_LatchToScreen(latchpics[1]+(p)*64,4,16,x,y)\r
+\r
+void LatchDrawPic (unsigned x, unsigned y, unsigned picnum);\r
+void LoadLatchMem (void);\r
+boolean FizzleFade (unsigned source, unsigned dest,\r
+ unsigned width,unsigned height, unsigned frames,boolean abortable);\r
+\r
+\r
+#define NUMLATCHPICS 100\r
+extern unsigned latchpics[NUMLATCHPICS];\r
+extern unsigned freelatch;\r
+\r