]> 4ch.mooo.com Git - 16.git/blob - 16/cawat/ID_RF.H
8a3b0e236f4d8c8adb0b2abebea9729db27fc592
[16.git] / 16 / cawat / ID_RF.H
1 /* Catacomb Armageddon Source Code\r
2  * Copyright (C) 1993-2014 Flat Rock Software\r
3  *\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
8  *\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
13  *\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
17  */\r
18 \r
19 // ID_RF.H\r
20 \r
21 #define __ID_RF__\r
22 \r
23 #ifndef __ID_MM__\r
24 #include "ID_MM.H"\r
25 #endif\r
26 \r
27 /*\r
28 =============================================================================\r
29 \r
30                                                         CONSTANTS\r
31 \r
32 =============================================================================\r
33 */\r
34 \r
35 #define MINTICS                         2\r
36 #define MAXTICS                         6\r
37 #define DEMOTICS                        3\r
38 \r
39 #define MAPBORDER                       2               // map border must be at least 1\r
40 \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
44 \r
45 #define MAXMAPHEIGHT            200\r
46 \r
47 #define PRIORITIES                      4\r
48 #define MASKEDTILEPRIORITY      3               // planes go: 0,1,2,MTILES,3\r
49 \r
50 #define TILEGLOBAL                      256\r
51 #define PIXGLOBAL                       16\r
52 \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
56 \r
57 #define PORTTILESWIDE           21      // all drawing takes place inside a\r
58 #define PORTTILESHIGH           14              // non displayed port of this size\r
59 \r
60 //#define       PORTGLOBALWIDE          (21*TILEGLOBAL)\r
61 //#define       PORTGLOBALHIGH          (14*TILEGLOBAL)\r
62 \r
63 #define UPDATEWIDE                      (PORTTILESWIDE+1)\r
64 #define UPDATEHIGH                      PORTTILESHIGH\r
65 \r
66 \r
67 //===========================================================================\r
68 \r
69 typedef enum {spritedraw,maskdraw} drawtype;\r
70 \r
71 /*\r
72 =============================================================================\r
73 \r
74                                                  PUBLIC VARIABLES\r
75 \r
76 =============================================================================\r
77 */\r
78 \r
79 \r
80 extern  boolean         compatability;                  // crippled refresh for wierdo SVGAs\r
81 \r
82 extern  unsigned        tics;\r
83 extern  long            lasttimecount;\r
84 \r
85 extern  unsigned        originxglobal,originyglobal;\r
86 extern  unsigned        originxtile,originytile;\r
87 extern  unsigned        originxscreen,originyscreen;\r
88 \r
89 extern  unsigned        mapwidth,mapheight,mapbyteswide,mapwordswide\r
90                                         ,mapbytesextra,mapwordsextra;\r
91 extern  unsigned        mapbwidthtable[MAXMAPHEIGHT];\r
92 \r
93 extern  unsigned        originxmin,originxmax,originymin,originymax;\r
94 \r
95 extern  unsigned        masterofs;\r
96 \r
97 //\r
98 // the floating update window is also used by the view manager for\r
99 // double buffer tracking\r
100 //\r
101 \r
102 extern  byte            *updateptr;                             // current start of update window\r
103 \r
104 #if GRMODE == CGAGR\r
105 extern  byte            *baseupdateptr;\r
106 #endif\r
107 \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
111 \r
112 #define UPDATETERMINATE 0x0301\r
113 \r
114 /*\r
115 =============================================================================\r
116 \r
117                                                  PUBLIC FUNCTIONS\r
118 \r
119 =============================================================================\r
120 */\r
121 \r
122 void RF_Startup (void);\r
123 void RF_Shutdown (void);\r
124 \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
131 \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
138 \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
141 \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
145 \r
146 void RF_CalcTics (void);\r
147 \r
148 void RF_Refresh (void);\r
149 void RF_ForceRefresh (void);\r
150 void RF_SetRefreshHook (void (*func) (void) );\r
151 \r
152 unsigned RF_FindFreeBuffer (void);\r
153 \r