+++ /dev/null
-/* 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_RF.H\r
-\r
-#define __ID_RF__\r
-\r
-#ifndef __ID_MM__\r
-#include "ID_MM.H"\r
-#endif\r
-\r
-/*\r
-=============================================================================\r
-\r
- CONSTANTS\r
-\r
-=============================================================================\r
-*/\r
-\r
-#define MINTICS 2\r
-#define MAXTICS 5\r
-#define DEMOTICS 3\r
-\r
-#define MAPBORDER 2 // map border must be at least 1\r
-\r
-#ifdef KEEN5\r
-\r
-#define MAXSPRITES 60 // max tracked sprites\r
-#define MAXANIMTILES 90 // max animating tiles on screen\r
-#define MAXANIMTYPES 80 // max different unique anim tiles on map\r
-\r
-#define MAXMAPHEIGHT 250\r
-\r
-#else\r
-\r
-#define MAXSPRITES 60 // max tracked sprites\r
-#define MAXANIMTILES 90 // max animating tiles on screen\r
-#define MAXANIMTYPES 65 // max different unique anim tiles on map\r
-\r
-#define MAXMAPHEIGHT 200\r
-\r
-#endif\r
-\r
-#define PRIORITIES 4\r
-#define MASKEDTILEPRIORITY 3 // planes go: 0,1,2,MTILES,3\r
-\r
-#define TILEGLOBAL 256\r
-#define PIXGLOBAL 16\r
-\r
-#define G_T_SHIFT 8 // global >> ?? = tile\r
-#define G_P_SHIFT 4 // global >> ?? = pixels\r
-#define P_T_SHIFT 4 // pixels >> ?? = tile\r
-\r
-#define PORTTILESWIDE 21 // all drawing takes place inside a\r
-#define PORTTILESHIGH 14 // non displayed port of this size\r
-\r
-//#define PORTGLOBALWIDE (21*TILEGLOBAL)\r
-//#define PORTGLOBALHIGH (14*TILEGLOBAL)\r
-\r
-#define UPDATEWIDE (PORTTILESWIDE+1)\r
-#define UPDATEHIGH PORTTILESHIGH\r
-\r
-\r
-//===========================================================================\r
-\r
-typedef enum {spritedraw,maskdraw} drawtype;\r
-\r
-/*\r
-=============================================================================\r
-\r
- PUBLIC VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-\r
-\r
-extern boolean compatability; // crippled refresh for wierdo SVGAs\r
-\r
-extern unsigned tics;\r
-extern long lasttimecount;\r
-\r
-extern unsigned originxglobal,originyglobal;\r
-extern unsigned originxtile,originytile;\r
-extern unsigned originxscreen,originyscreen;\r
-\r
-extern unsigned mapwidth,mapheight,mapbyteswide,mapwordswide\r
- ,mapbytesextra,mapwordsextra;\r
-extern unsigned mapbwidthtable[MAXMAPHEIGHT];\r
-\r
-extern unsigned originxmin,originxmax,originymin,originymax;\r
-\r
-extern unsigned masterofs;\r
-\r
-//\r
-// the floating update window is also used by the view manager for\r
-// double buffer tracking\r
-//\r
-\r
-extern byte *updateptr; // current start of update window\r
-\r
-#if GRMODE == CGAGR\r
-extern byte *baseupdateptr;\r
-#endif\r
-\r
-extern unsigned blockstarts[UPDATEWIDE*UPDATEHIGH];\r
-extern unsigned updatemapofs[UPDATEWIDE*UPDATEHIGH];\r
-extern unsigned uwidthtable[UPDATEHIGH]; // lookup instead of multiple\r
-\r
-#define UPDATETERMINATE 0x0301\r
-\r
-/*\r
-=============================================================================\r
-\r
- PUBLIC FUNCTIONS\r
-\r
-=============================================================================\r
-*/\r
-\r
-void RF_Startup (void);\r
-void RF_Shutdown (void);\r
-\r
-void RF_FixOfs (void);\r
-void RF_NewMap (void);\r
-void RF_MarkTileGraphics (void);\r
-void RF_SetScrollBlock (int x, int y, boolean horizontal);\r
-void RF_NewPosition (unsigned x, unsigned y);\r
-void RF_Scroll (int x, int y);\r
-\r
-void RF_MapToMap (unsigned srcx, unsigned srcy,\r
- unsigned destx, unsigned desty,\r
- unsigned width, unsigned height);\r
-void RF_MemToMap (unsigned far *source, unsigned plane,\r
- unsigned destx, unsigned desty,\r
- unsigned width, unsigned height);\r
-\r
-void RF_ClearBlock (int x, int y, int width, int height);\r
-void RF_RedrawBlock (int x, int y, int width, int height);\r
-\r
-void RF_PlaceSprite (void **user,unsigned globalx,unsigned globaly,\r
- unsigned spritenumber, drawtype draw, int priority);\r
-void RF_RemoveSprite (void **user);\r
-\r
-void RF_CalcTics (void);\r
-\r
-void RF_Refresh (void);\r
-void RF_ForceRefresh (void);\r
-void RF_SetRefreshHook (void (*func) (void) );\r
-\r
-unsigned RF_FindFreeBuffer (void);\r
-\r