shithub: wl3d

ref: a0c3c62fcd25dd62d5c69353a604d3f6afbaa75b
dir: /vh.h/

View raw version
// ID_VH.H


#define WHITE			15			// graphics mode independant colors
#define BLACK			0
#define FIRSTCOLOR		1
#define SECONDCOLOR		12
#define F_WHITE			15
#define F_BLACK			0
#define F_FIRSTCOLOR	1
#define F_SECONDCOLOR	12

//===========================================================================

#define MAXSHIFTS	1

typedef struct
{
  s16int	width,
	height,
	orgx,orgy,
	xl,yl,xh,yh,
	shifts;
} spritetabletype;

typedef	struct
{
	u16int	sourceoffset[MAXSHIFTS];
	u16int	planesize[MAXSHIFTS];
	u16int	width[MAXSHIFTS];
	u8int		data[];
} spritetype;		// the uchar* for each sprite points to this

typedef struct
{
	s16int width,height;
} pictabletype;


typedef struct
{
	s16int height;
	s16int location[256];
	char width[256];
} fontstruct;


//===========================================================================


extern	pictabletype	_seg *pictable;
extern	pictabletype	_seg *picmtable;
extern	spritetabletype _seg *spritetable;

extern	u8int	fontcolor;
extern	s16int	fontnumber;
extern	s16int	px,py;

//
// Double buffer management routines
//

void VW_InitDoubleBuffer (void);
s16int	 VW_MarkUpdateBlock (s16int x1, s16int y1, s16int x2, s16int y2);
void VW_UpdateScreen (void);

//
// mode independant routines
// coordinates in pixels, rounded to best screen res
// regions marked in double buffer
//

void VWB_DrawTile8 (s16int x, s16int y, s16int tile);
void VWB_DrawTile8M (s16int x, s16int y, s16int tile);
void VWB_DrawTile16 (s16int x, s16int y, s16int tile);
void VWB_DrawTile16M (s16int x, s16int y, s16int tile);
void VWB_DrawPic (s16int x, s16int y, s16int chunknum);
void VWB_DrawMPic(s16int x, s16int y, s16int chunknum);
void VWB_Bar (s16int x, s16int y, s16int width, s16int height, s16int color);

void VWB_DrawPropString	 (char far *string);
void VWB_DrawMPropString (char far *string);
void VWB_DrawSprite (s16int x, s16int y, s16int chunknum);
void VWB_Plot (s16int x, s16int y, s16int color);
void VWB_Hlin (s16int x1, s16int x2, s16int y, s16int color);
void VWB_Vlin (s16int y1, s16int y2, s16int x, s16int color);


//
// wolfenstein EGA compatability stuff
//
extern u8int far gamepal;

void VH_SetDefaultColors (void);

#define VW_Startup		VL_Startup
#define VW_Shutdown		VL_Shutdown
#define VW_SetCRTC		VL_SetCRTC
#define VW_SetScreen	VL_SetScreen
#define VW_Bar			VL_Bar
#define VW_Plot			VL_Plot
#define VW_Hlin(x,z,y,c)	VL_Hlin(x,y,(z)-(x)+1,c)
#define VW_Vlin(y,z,x,c)	VL_Vlin(x,y,(z)-(y)+1,c)
#define VW_DrawPic		VH_DrawPic
#define VW_SetSplitScreen	VL_SetSplitScreen
#define VW_SetLineWidth		VL_SetLineWidth
#define VW_ColorBorder	VL_ColorBorder
#define VW_WaitVBL		VL_WaitVBL
#define VW_FadeIn()		VL_FadeIn(0,255,&gamepal,30);
#define VW_FadeOut()	VL_FadeOut(0,255,0,0,0,30);
#define VW_ScreenToScreen	VL_ScreenToScreen
#define VW_SetDefaultColors	VH_SetDefaultColors
void	VW_MeasurePropString (char far *string, u16int *width, u16int *height);
#define EGAMAPMASK(x)	VGAMAPMASK(x)
#define EGAWRITEMODE(x)	VGAWRITEMODE(x)

//#define VW_MemToScreen	VL_MemToLatch

#define MS_Quit			Quit


#define LatchDrawChar(x,y,p) VL_LatchToScreen(latchpics[0]+(p)*16,2,8,x,y)
#define LatchDrawTile(x,y,p) VL_LatchToScreen(latchpics[1]+(p)*64,4,16,x,y)

void LatchDrawPic (u16int x, u16int y, u16int picnum);
void 	LoadLatchMem (void);
int 	FizzleFade (u16int source, u16int dest,
	u16int width,u16int height, u16int frames,int abortable);


#define NUMLATCHPICS	100
extern	u16int	latchpics[NUMLATCHPICS];
extern	u16int freelatch;