1 /* Reconstructed Commander Keen 4-6 Source Code
\r
2 * Copyright (C) 2021 K1n9_Duk3
\r
4 * This file is primarily based on:
\r
5 * Catacomb 3-D Source Code
\r
6 * Copyright (C) 1993-2014 Flat Rock Software
\r
8 * This program is free software; you can redistribute it and/or modify
\r
9 * it under the terms of the GNU General Public License as published by
\r
10 * the Free Software Foundation; either version 2 of the License, or
\r
11 * (at your option) any later version.
\r
13 * This program is distributed in the hope that it will be useful,
\r
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
16 * GNU General Public License for more details.
\r
18 * You should have received a copy of the GNU General Public License along
\r
19 * with this program; if not, write to the Free Software Foundation, Inc.,
\r
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
32 =============================================================================
\r
36 =============================================================================
\r
43 #define MAPBORDER 2 // map border must be at least 1
\r
47 #define MAXSPRITES 60 // max tracked sprites
\r
48 #define MAXANIMTILES 90 // max animating tiles on screen
\r
49 #define MAXANIMTYPES 80 // max different unique anim tiles on map
\r
51 #define MAXMAPHEIGHT 250
\r
55 #define MAXSPRITES 60 // max tracked sprites
\r
56 #define MAXANIMTILES 90 // max animating tiles on screen
\r
57 #define MAXANIMTYPES 65 // max different unique anim tiles on map
\r
59 #define MAXMAPHEIGHT 200
\r
63 #define PRIORITIES 4
\r
64 #define MASKEDTILEPRIORITY 3 // planes go: 0,1,2,MTILES,3
\r
66 #define TILEGLOBAL 256
\r
67 #define PIXGLOBAL 16
\r
69 #define G_T_SHIFT 8 // global >> ?? = tile
\r
70 #define G_P_SHIFT 4 // global >> ?? = pixels
\r
71 #define P_T_SHIFT 4 // pixels >> ?? = tile
\r
73 #define PORTTILESWIDE 21 // all drawing takes place inside a
\r
74 #define PORTTILESHIGH 14 // non displayed port of this size
\r
76 //#define PORTGLOBALWIDE (21*TILEGLOBAL)
\r
77 //#define PORTGLOBALHIGH (14*TILEGLOBAL)
\r
79 #define UPDATEWIDE (PORTTILESWIDE+1)
\r
80 #define UPDATEHIGH PORTTILESHIGH
\r
83 //===========================================================================
\r
85 typedef enum {spritedraw,maskdraw} drawtype;
\r
88 =============================================================================
\r
92 =============================================================================
\r
96 extern boolean compatability; // crippled refresh for wierdo SVGAs
\r
98 extern unsigned tics;
\r
99 extern long lasttimecount;
\r
101 extern unsigned originxglobal,originyglobal;
\r
102 extern unsigned originxtile,originytile;
\r
103 extern unsigned originxscreen,originyscreen;
\r
105 extern unsigned mapwidth,mapheight,mapbyteswide,mapwordswide
\r
106 ,mapbytesextra,mapwordsextra;
\r
107 extern unsigned mapbwidthtable[MAXMAPHEIGHT];
\r
109 extern unsigned originxmin,originxmax,originymin,originymax;
\r
111 extern unsigned masterofs;
\r
114 // the floating update window is also used by the view manager for
\r
115 // double buffer tracking
\r
118 extern byte *updateptr; // current start of update window
\r
120 #if GRMODE == CGAGR
\r
121 extern byte *baseupdateptr;
\r
124 extern unsigned blockstarts[UPDATEWIDE*UPDATEHIGH];
\r
125 extern unsigned updatemapofs[UPDATEWIDE*UPDATEHIGH];
\r
126 extern unsigned uwidthtable[UPDATEHIGH]; // lookup instead of multiple
\r
128 #define UPDATETERMINATE 0x0301
\r
131 =============================================================================
\r
135 =============================================================================
\r
138 void RF_Startup (void);
\r
139 void RF_Shutdown (void);
\r
141 void RF_FixOfs (void);
\r
142 void RF_NewMap (void);
\r
143 void RF_MarkTileGraphics (void);
\r
144 void RF_SetScrollBlock (int x, int y, boolean horizontal);
\r
145 void RF_NewPosition (unsigned x, unsigned y);
\r
146 void RF_Scroll (int x, int y);
\r
148 void RF_MapToMap (unsigned srcx, unsigned srcy,
\r
149 unsigned destx, unsigned desty,
\r
150 unsigned width, unsigned height);
\r
151 void RF_MemToMap (unsigned far *source, unsigned plane,
\r
152 unsigned destx, unsigned desty,
\r
153 unsigned width, unsigned height);
\r
155 void RF_ClearBlock (int x, int y, int width, int height);
\r
156 void RF_RedrawBlock (int x, int y, int width, int height);
\r
158 void RF_PlaceSprite (void **user,unsigned globalx,unsigned globaly,
\r
159 unsigned spritenumber, drawtype draw, int priority);
\r
160 void RF_RemoveSprite (void **user);
\r
162 void RF_CalcTics (void);
\r
164 void RF_Refresh (void);
\r
165 void RF_ForceRefresh (void);
\r
166 void RF_SetRefreshHook (void (*func) (void) );
\r
168 unsigned RF_FindFreeBuffer (void);
\r