1 /* Catacomb Armageddon Source Code
\r
2 * Copyright (C) 1993-2014 Flat Rock Software
\r
4 * This program is free software; you can redistribute it and/or modify
\r
5 * it under the terms of the GNU General Public License as published by
\r
6 * the Free Software Foundation; either version 2 of the License, or
\r
7 * (at your option) any later version.
\r
9 * This program is distributed in the hope that it will be useful,
\r
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
12 * GNU General Public License for more details.
\r
14 * You should have received a copy of the GNU General Public License along
\r
15 * with this program; if not, write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
28 =============================================================================
\r
32 =============================================================================
\r
39 #define MAPBORDER 2 // map border must be at least 1
\r
41 #define MAXSPRITES 50 // max tracked sprites
\r
42 #define MAXANIMTILES 90 // max animating tiles on screen
\r
43 #define MAXANIMTYPES 50 // max different unique anim tiles on map
\r
45 #define MAXMAPHEIGHT 200
\r
47 #define PRIORITIES 4
\r
48 #define MASKEDTILEPRIORITY 3 // planes go: 0,1,2,MTILES,3
\r
50 #define TILEGLOBAL 256
\r
51 #define PIXGLOBAL 16
\r
53 #define G_T_SHIFT 8 // global >> ?? = tile
\r
54 #define G_P_SHIFT 4 // global >> ?? = pixels
\r
55 #define P_T_SHIFT 4 // pixels >> ?? = tile
\r
57 #define PORTTILESWIDE 21 // all drawing takes place inside a
\r
58 #define PORTTILESHIGH 14 // non displayed port of this size
\r
60 //#define PORTGLOBALWIDE (21*TILEGLOBAL)
\r
61 //#define PORTGLOBALHIGH (14*TILEGLOBAL)
\r
63 #define UPDATEWIDE (PORTTILESWIDE+1)
\r
64 #define UPDATEHIGH PORTTILESHIGH
\r
67 //===========================================================================
\r
69 typedef enum {spritedraw,maskdraw} drawtype;
\r
72 =============================================================================
\r
76 =============================================================================
\r
80 extern boolean compatability; // crippled refresh for wierdo SVGAs
\r
82 extern unsigned tics;
\r
83 extern long lasttimecount;
\r
85 extern unsigned originxglobal,originyglobal;
\r
86 extern unsigned originxtile,originytile;
\r
87 extern unsigned originxscreen,originyscreen;
\r
89 extern unsigned mapwidth,mapheight,mapbyteswide,mapwordswide
\r
90 ,mapbytesextra,mapwordsextra;
\r
91 extern unsigned mapbwidthtable[MAXMAPHEIGHT];
\r
93 extern unsigned originxmin,originxmax,originymin,originymax;
\r
95 extern unsigned masterofs;
\r
98 // the floating update window is also used by the view manager for
\r
99 // double buffer tracking
\r
102 extern byte *updateptr; // current start of update window
\r
104 #if GRMODE == CGAGR
\r
105 extern byte *baseupdateptr;
\r
108 extern unsigned blockstarts[UPDATEWIDE*UPDATEHIGH];
\r
109 extern unsigned updatemapofs[UPDATEWIDE*UPDATEHIGH];
\r
110 extern unsigned uwidthtable[UPDATEHIGH]; // lookup instead of multiple
\r
112 #define UPDATETERMINATE 0x0301
\r
115 =============================================================================
\r
119 =============================================================================
\r
122 void RF_Startup (void);
\r
123 void RF_Shutdown (void);
\r
125 void RF_FixOfs (void);
\r
126 void RF_NewMap (void);
\r
127 void RF_MarkTileGraphics (void);
\r
128 void RF_SetScrollBlock (int x, int y, boolean horizontal);
\r
129 void RF_NewPosition (unsigned x, unsigned y);
\r
130 void RF_Scroll (int x, int y);
\r
132 void RF_MapToMap (unsigned srcx, unsigned srcy,
\r
133 unsigned destx, unsigned desty,
\r
134 unsigned width, unsigned height);
\r
135 void RF_MemToMap (unsigned far *source, unsigned plane,
\r
136 unsigned destx, unsigned desty,
\r
137 unsigned width, unsigned height);
\r
139 void RF_ClearBlock (int x, int y, int width, int height);
\r
140 void RF_RedrawBlock (int x, int y, int width, int height);
\r
142 void RF_PlaceSprite (void **user,unsigned globalx,unsigned globaly,
\r
143 unsigned spritenumber, drawtype draw, int priority);
\r
144 void RF_RemoveSprite (void **user);
\r
146 void RF_CalcTics (void);
\r
148 void RF_Refresh (void);
\r
149 void RF_ForceRefresh (void);
\r
150 void RF_SetRefreshHook (void (*func) (void) );
\r
152 unsigned RF_FindFreeBuffer (void);
\r