]> 4ch.mooo.com Git - 16.git/blobdiff - 16/keen456/KEEN4-6/ID_VW.H
added keen 4-6 rebuild code for reference.... i need to stop doing this... xD
[16.git] / 16 / keen456 / KEEN4-6 / ID_VW.H
diff --git a/16/keen456/KEEN4-6/ID_VW.H b/16/keen456/KEEN4-6/ID_VW.H
deleted file mode 100755 (executable)
index 65e9867..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-/* Reconstructed Commander Keen 4-6 Source Code\r
- * Copyright (C) 2021 K1n9_Duk3\r
- *\r
- * This file is primarily based on:\r
- * Catacomb 3-D Source Code\r
- * Copyright (C) 1993-2014 Flat Rock Software\r
- *\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License along\r
- * with this program; if not, write to the Free Software Foundation, Inc.,\r
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
- */\r
-\r
-// ID_VW.H\r
-\r
-#ifndef __TYPES__\r
-#include "ID_TYPES.H"\r
-#endif\r
-\r
-#ifndef __ID_MM__\r
-#include "ID_MM.H"\r
-#endif\r
-\r
-#ifndef __ID_GLOB__\r
-#include "ID_GLOB.H"\r
-#endif\r
-\r
-#define __ID_VW__\r
-\r
-//===========================================================================\r
-\r
-#define        G_P_SHIFT               4       // global >> ?? = pixels\r
-\r
-#if GRMODE == EGAGR\r
-#ifdef CAT3D\r
-#define        SCREENWIDTH             40\r
-#else\r
-#define        SCREENWIDTH             64\r
-#endif\r
-#define CHARWIDTH              1\r
-#define TILEWIDTH              2\r
-#define GRPLANES               4\r
-#define BYTEPIXELS             8\r
-#endif\r
-\r
-#if GRMODE == CGAGR\r
-#define        SCREENWIDTH             128\r
-#define CHARWIDTH              2\r
-#define TILEWIDTH              4\r
-#define GRPLANES               1\r
-#define BYTEPIXELS             4\r
-#endif\r
-\r
-#define VIRTUALHEIGHT  300\r
-#define        VIRTUALWIDTH    512\r
-\r
-\r
-#if GRMODE == CGAGR\r
-\r
-#define        MAXSHIFTS               1\r
-\r
-#define WHITE                  3                       // graphics mode independant colors\r
-#define BLACK                  0\r
-#define FIRSTCOLOR             1\r
-#define SECONDCOLOR            2\r
-#define F_WHITE                        0                       // for XOR font drawing\r
-#define F_BLACK                        3\r
-#define F_FIRSTCOLOR   2\r
-#define F_SECONDCOLOR  1\r
-\r
-#endif\r
-\r
-#if GRMODE == EGAGR\r
-\r
-#define        MAXSHIFTS               4\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                        0                       // for XOR font drawing\r
-#define F_BLACK                        15\r
-#define F_FIRSTCOLOR   14\r
-#define F_SECONDCOLOR  3\r
-\r
-#endif\r
-\r
-#if GRMODE == EGAGR\r
-#define SCREENXMASK            (~7)\r
-#define SCREENXPLUS            (7)\r
-#define SCREENXDIV             (8)\r
-#endif\r
-\r
-#if GRMODE == CGAGR\r
-#define SCREENXMASK            (~3)\r
-#define SCREENXDIV             (4)\r
-#endif\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
-//===========================================================================\r
-\r
-typedef enum {NOcard,MDAcard,CGAcard,EGAcard,MCGAcard,VGAcard,\r
-                 HGCcard=0x80,HGCPcard,HICcard} cardtype;\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
-typedef enum {CGAgr,EGAgr,VGAgr} grtype;\r
-\r
-//===========================================================================\r
-\r
-extern cardtype        videocard;              // set by VW_Startup\r
-extern grtype          grmode;                 // CGAgr, EGAgr, VGAgr\r
-\r
-extern unsigned        bufferofs;              // hidden port to draw to before displaying\r
-extern unsigned        displayofs;             // origin of port on visable screen\r
-extern unsigned        panx,pany;              // panning adjustments inside port in pixels\r
-extern unsigned        pansx,pansy;\r
-extern unsigned        panadjust;              // panx/pany adjusted by screen resolution\r
-\r
-extern unsigned        screenseg;              // normally 0xa000 or buffer segment\r
-\r
-extern unsigned        linewidth;\r
-extern unsigned        ylookup[VIRTUALHEIGHT];\r
-\r
-extern boolean         screenfaded;\r
-extern char            colors[7][17];  // pallets for fades\r
-\r
-extern pictabletype    _seg *pictable;\r
-extern pictabletype    _seg *picmtable;\r
-extern spritetabletype _seg *spritetable;\r
-\r
-extern unsigned        fontnumber;             // 0 based font number for drawing\r
-extern int                     px,py;\r
-extern byte            pdrawmode,fontcolor;\r
-\r
-extern int                     bordercolor;\r
-extern boolean                 nopan;\r
-\r
-//\r
-// asm globals\r
-//\r
-\r
-extern unsigned        *shifttabletable[8];\r
-extern unsigned        bufferwidth,bufferheight,screenspot;    // used by font drawing stuff\r
-\r
-\r
-\r
-//===========================================================================\r
-\r
-\r
-void   VW_Startup (void);\r
-void   VW_Shutdown (void);\r
-\r
-cardtype       VW_VideoID (void);\r
-\r
-//\r
-// EGA hardware routines\r
-//\r
-\r
-#define EGAWRITEMODE(x) asm{cli;mov dx,GC_INDEX;mov ax,GC_MODE+256*x;out dx,ax;sti;}\r
-#define EGABITMASK(x) asm{cli;mov dx,GC_INDEX;mov ax,GC_BITMASK+256*x;out dx,ax;sti;}\r
-#define EGAMAPMASK(x) asm{cli;mov dx,SC_INDEX;mov ax,SC_MAPMASK+x*256;out dx,ax;sti;}\r
-#define EGAREADMAP(x) asm{cli;mov dx,GC_INDEX;mov ax,GC_READMAP+x*256;out dx,ax;sti;}\r
-\r
-void   VW_SetLineWidth(int width);\r
-void   VW_SetSplitScreen(int width);\r
-void   VW_SetScreen (unsigned CRTC, unsigned pelpan);\r
-\r
-void   VW_SetScreenMode (int grmode);\r
-void   VW_ClearVideo (int color);\r
-void   VW_WaitVBL (int number);\r
-\r
-void   VW_ColorBorder (int color);\r
-void   VW_SetPalette(byte *palette);\r
-void   VW_SetDefaultColors(void);\r
-void   VW_FadeOut(void);\r
-void   VW_FadeIn(void);\r
-void   VW_FadeUp(void);\r
-void   VW_FadeDown(void);\r
-\r
-void   VW_SetAtrReg (int reg, int value);\r
-\r
-//\r
-// block primitives\r
-//\r
-\r
-void VW_MaskBlock(memptr segm,unsigned ofs,unsigned dest,\r
-       unsigned wide,unsigned height,unsigned planesize);\r
-void VW_InverseMask(memptr segm,unsigned ofs,unsigned dest,\r
-       unsigned wide,unsigned height);\r
-void VW_MemToScreen(memptr source,unsigned dest,unsigned width,unsigned height);\r
-void VW_ScreenToMem(unsigned source,memptr dest,unsigned width,unsigned height);\r
-void VW_ScreenToScreen(unsigned source,unsigned dest,unsigned width,unsigned height);\r
-\r
-\r
-//\r
-// block addressable routines\r
-//\r
-\r
-void VW_DrawTile8(unsigned x, unsigned y, unsigned tile);\r
-\r
-#if GRMODE == EGAGR\r
-\r
-#define VW_DrawTile8M(x,y,t) \\r
-       VW_MaskBlock(grsegs[STARTTILE8M],(t)*40,bufferofs+ylookup[y]+(x),1,8,8)\r
-#define VW_DrawTile16(x,y,t) \\r
-       VW_MemToScreen(grsegs[STARTTILE16+t],bufferofs+ylookup[y]+(x),2,16)\r
-#define VW_DrawTile16M(x,y,t) \\r
-       VW_MaskBlock(grsegs[STARTTILE16M],(t)*160,bufferofs+ylookup[y]+(x),2,16,32)\r
-\r
-#endif\r
-\r
-#if GRMODE == CGAGR\r
-\r
-#define VW_DrawTile8M(x,y,t) \\r
-       VW_MaskBlock(grsegs[STARTTILE8M],(t)*32,bufferofs+ylookup[y]+(x),2,8,16)\r
-#define VW_DrawTile16(x,y,t) \\r
-       VW_MemToScreen(grsegs[STARTTILE16+t],bufferofs+ylookup[y]+(x),4,16)\r
-#define VW_DrawTile16M(x,y,t) \\r
-       VW_MaskBlock(grsegs[STARTTILE16M],(t)*128,bufferofs+ylookup[y]+(x),4,16,64)\r
-\r
-#endif\r
-\r
-void VW_DrawPic(unsigned x, unsigned y, unsigned chunknum);\r
-void VW_DrawMPic(unsigned x, unsigned y, unsigned chunknum);\r
-void VW_ClipDrawMPic(unsigned x, int y, unsigned chunknum);\r
-\r
-//\r
-// pixel addressable routines\r
-//\r
-void   VW_MeasurePropString (char far *string, word *width, word *height);\r
-void   VW_MeasureMPropString  (char far *string, word *width, word *height);\r
-\r
-void VW_DrawPropString (char far *string);\r
-void VW_DrawMPropString (char far *string);\r
-void VW_DrawSprite(int x, int y, unsigned sprite);\r
-void VW_Plot(unsigned x, unsigned y, unsigned color);\r
-void VW_Hlin(unsigned xl, unsigned xh, unsigned y, unsigned color);\r
-void VW_Vlin(unsigned yl, unsigned yh, unsigned x, unsigned color);\r
-void VW_Bar (unsigned x, unsigned y, unsigned width, unsigned height,\r
-       unsigned color);\r
-\r
-//===========================================================================\r
-\r
-//\r
-// Double buffer management routines\r
-//\r
-\r
-void VW_InitDoubleBuffer (void);\r
-void VW_FixRefreshBuffer (void);\r
-int     VW_MarkUpdateBlock (int x1, int y1, int x2, int y2);\r
-void VW_UpdateScreen (void);\r
-void VW_CGAFullUpdate (void);\r
-\r
-//\r
-// cursor\r
-//\r
-\r
-void VW_ShowCursor (void);\r
-void VW_HideCursor (void);\r
-void VW_MoveCursor (int x, int y);\r
-void VW_SetCursor (int spritenum);\r
-void VW_FreeCursor (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