X-Git-Url: http://4ch.mooo.com/gitweb/?p=16.git;a=blobdiff_plain;f=16%2Fkeen456%2FKEEN4-6%2FID_RF.H;fp=16%2Fkeen456%2FKEEN4-6%2FID_RF.H;h=5648034b6c0fcf420f80109900289a7cf3c54652;hp=0000000000000000000000000000000000000000;hb=7d1948e210bb7b58af0a0412e71f2a0a0a2010af;hpb=ebc247a0a67daa69a027f31d9d7d9572db765e56 diff --git a/16/keen456/KEEN4-6/ID_RF.H b/16/keen456/KEEN4-6/ID_RF.H new file mode 100755 index 00000000..5648034b --- /dev/null +++ b/16/keen456/KEEN4-6/ID_RF.H @@ -0,0 +1,169 @@ +/* Reconstructed Commander Keen 4-6 Source Code + * Copyright (C) 2021 K1n9_Duk3 + * + * This file is primarily based on: + * Catacomb 3-D Source Code + * Copyright (C) 1993-2014 Flat Rock Software + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +// ID_RF.H + +#define __ID_RF__ + +#ifndef __ID_MM__ +#include "ID_MM.H" +#endif + +/* +============================================================================= + + CONSTANTS + +============================================================================= +*/ + +#define MINTICS 2 +#define MAXTICS 5 +#define DEMOTICS 3 + +#define MAPBORDER 2 // map border must be at least 1 + +#ifdef KEEN5 + +#define MAXSPRITES 60 // max tracked sprites +#define MAXANIMTILES 90 // max animating tiles on screen +#define MAXANIMTYPES 80 // max different unique anim tiles on map + +#define MAXMAPHEIGHT 250 + +#else + +#define MAXSPRITES 60 // max tracked sprites +#define MAXANIMTILES 90 // max animating tiles on screen +#define MAXANIMTYPES 65 // max different unique anim tiles on map + +#define MAXMAPHEIGHT 200 + +#endif + +#define PRIORITIES 4 +#define MASKEDTILEPRIORITY 3 // planes go: 0,1,2,MTILES,3 + +#define TILEGLOBAL 256 +#define PIXGLOBAL 16 + +#define G_T_SHIFT 8 // global >> ?? = tile +#define G_P_SHIFT 4 // global >> ?? = pixels +#define P_T_SHIFT 4 // pixels >> ?? = tile + +#define PORTTILESWIDE 21 // all drawing takes place inside a +#define PORTTILESHIGH 14 // non displayed port of this size + +//#define PORTGLOBALWIDE (21*TILEGLOBAL) +//#define PORTGLOBALHIGH (14*TILEGLOBAL) + +#define UPDATEWIDE (PORTTILESWIDE+1) +#define UPDATEHIGH PORTTILESHIGH + + +//=========================================================================== + +typedef enum {spritedraw,maskdraw} drawtype; + +/* +============================================================================= + + PUBLIC VARIABLES + +============================================================================= +*/ + + +extern boolean compatability; // crippled refresh for wierdo SVGAs + +extern unsigned tics; +extern long lasttimecount; + +extern unsigned originxglobal,originyglobal; +extern unsigned originxtile,originytile; +extern unsigned originxscreen,originyscreen; + +extern unsigned mapwidth,mapheight,mapbyteswide,mapwordswide + ,mapbytesextra,mapwordsextra; +extern unsigned mapbwidthtable[MAXMAPHEIGHT]; + +extern unsigned originxmin,originxmax,originymin,originymax; + +extern unsigned masterofs; + +// +// the floating update window is also used by the view manager for +// double buffer tracking +// + +extern byte *updateptr; // current start of update window + +#if GRMODE == CGAGR +extern byte *baseupdateptr; +#endif + +extern unsigned blockstarts[UPDATEWIDE*UPDATEHIGH]; +extern unsigned updatemapofs[UPDATEWIDE*UPDATEHIGH]; +extern unsigned uwidthtable[UPDATEHIGH]; // lookup instead of multiple + +#define UPDATETERMINATE 0x0301 + +/* +============================================================================= + + PUBLIC FUNCTIONS + +============================================================================= +*/ + +void RF_Startup (void); +void RF_Shutdown (void); + +void RF_FixOfs (void); +void RF_NewMap (void); +void RF_MarkTileGraphics (void); +void RF_SetScrollBlock (int x, int y, boolean horizontal); +void RF_NewPosition (unsigned x, unsigned y); +void RF_Scroll (int x, int y); + +void RF_MapToMap (unsigned srcx, unsigned srcy, + unsigned destx, unsigned desty, + unsigned width, unsigned height); +void RF_MemToMap (unsigned far *source, unsigned plane, + unsigned destx, unsigned desty, + unsigned width, unsigned height); + +void RF_ClearBlock (int x, int y, int width, int height); +void RF_RedrawBlock (int x, int y, int width, int height); + +void RF_PlaceSprite (void **user,unsigned globalx,unsigned globaly, + unsigned spritenumber, drawtype draw, int priority); +void RF_RemoveSprite (void **user); + +void RF_CalcTics (void); + +void RF_Refresh (void); +void RF_ForceRefresh (void); +void RF_SetRefreshHook (void (*func) (void) ); + +unsigned RF_FindFreeBuffer (void); +