]> 4ch.mooo.com Git - 16.git/blob - src/lib/16_rf.h
==== animation fram walk ==== i polished the shit out of it and it works MUCH better...
[16.git] / src / lib / 16_rf.h
1 /* Keen Dreams Source Code\r
2  * Copyright (C) 2014 Javier M. Chavez\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 // 16_RF.H\r
20 \r
21 #define __16_RF__\r
22 \r
23 #ifndef __16_MM__\r
24 #include "src/lib/16_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 \r
38 #define MAPBORDER                       2               // map border must be at least 1\r
39 \r
40 #define MAXSPRITES                      100             // max tracked sprites\r
41 #define MAXANIMTILES            90              // max animating tiles on screen\r
42 #define MAXANIMTYPES            50              // max different unique anim tiles on map\r
43 \r
44 #define MAXMAPHEIGHT            128\r
45 \r
46 #define PRIORITIES                      4\r
47 #define MASKEDTILEPRIORITY      3               // planes go: 0,1,2,MTILES,3\r
48 \r
49 #define TILEGLOBAL                      256\r
50 #define PIXGLOBAL                       16\r
51 \r
52 #define G_T_SHIFT                       8               // global >> ?? = tile\r
53 #define G_P_SHIFT                       4               // global >> ?? = pixels\r
54 #define P_T_SHIFT                       4               // pixels >> ?? = tile\r
55 \r
56 #define PORTTILESWIDE           21      // all drawing takes place inside a\r
57 #define PORTTILESHIGH           14              // non displayed port of this size\r
58 \r
59 //#define       PORTGLOBALWIDE          (21*TILEGLOBAL)\r
60 //#define       PORTGLOBALHIGH          (14*TILEGLOBAL)\r
61 \r
62 #define UPDATEWIDE                      (PORTTILESWIDE+1)\r
63 #define UPDATEHIGH                      PORTTILESHIGH\r
64 \r
65 //from others\r
66 #define SCREENWIDTH     64\r
67 #define NUMTILE16       1440\r
68 #define STARTTILE16  370\r
69 #define STARTTILE16M 1810\r
70 #define NUMTILE16M   1206\r
71 #define SPEED   502\r
72 #define ANIM    (SPEED+NUMTILE16)\r
73 \r
74 #define NORTHWALL       (ANIM+NUMTILE16)\r
75 #define EASTWALL        (NORTHWALL+NUMTILE16M)\r
76 #define SOUTHWALL   (EASTWALL+NUMTILE16M)\r
77 #define WESTWALL    (SOUTHWALL+NUMTILE16M)\r
78 #define MANIM       (WESTWALL+NUMTILE16M)\r
79 #define INTILE      (MANIM+NUMTILE16M)\r
80 #define MSPEED      (INTILE+NUMTILE16M)\r
81 #define CGAGR   1\r
82 #define EGAGR   2\r
83 #define MAXSHIFTS       1\r
84 #define TILEWIDTH       TILEWH\r
85 typedef enum {NOcard,MDAcard,CGAcard,EGAcard,MCGAcard,VGAcard,\r
86                   HGCcard=0x80,HGCPcard,HICcard} cardtype;\r
87 typedef enum {CGAgr,EGAgr,VGAgr} grtype;\r
88 typedef struct\r
89 {\r
90   int   width,\r
91         height,\r
92         orgx,orgy,\r
93         xl,yl,xh,yh,\r
94         shifts;\r
95 } spritetabletype;\r
96 \r
97 typedef struct\r
98 {\r
99         unsigned        sourceoffset[MAXSHIFTS];\r
100         unsigned        planesize[MAXSHIFTS];\r
101         unsigned        width[MAXSHIFTS];\r
102         byte            data[];\r
103 } spritetype;           // the memptr for each sprite points to this\r
104 //\r
105 \r
106 //===========================================================================\r
107 \r
108 typedef enum {spritedraw,maskdraw} drawtype;\r
109 \r
110 /*\r
111 =============================================================================\r
112 \r
113                                                  PUBLIC VARIABLES\r
114 \r
115 =============================================================================\r
116 */\r
117 \r
118 \r
119 extern  boolean         compatability;                  // crippled refresh for wierdo SVGAs\r
120 \r
121 extern  unsigned        tics;\r
122 extern  long            lasttimecount;\r
123 \r
124 extern  unsigned        originxglobal,originyglobal;\r
125 extern  unsigned        originxtile,originytile;\r
126 extern  unsigned        originxscreen,originyscreen;\r
127 \r
128 extern  unsigned        mapwidth,mapheight,mapbyteswide,mapwordswide\r
129                                         ,mapbytesextra,mapwordsextra;\r
130 extern  unsigned        mapbwidthtable[MAXMAPHEIGHT];\r
131 \r
132 extern  unsigned        originxmin,originxmax,originymin,originymax;\r
133 \r
134 extern  unsigned        masterofs;\r
135 \r
136 //\r
137 // the floating update window is also used by the view manager for\r
138 // double buffer tracking\r
139 //\r
140 \r
141 extern  byte            *updateptr;                             // current start of update window\r
142 \r
143 #if GRMODE == CGAGR\r
144 extern  byte            *baseupdateptr;\r
145 #endif\r
146 \r
147 extern unsigned blockstarts[UPDATEWIDE*UPDATEHIGH];\r
148 extern unsigned updatemapofs[UPDATEWIDE*UPDATEHIGH];\r
149 extern unsigned uwidthtable[UPDATEHIGH];                // lookup instead of multiple\r
150 \r
151 #define UPDATETERMINATE 0x0301\r
152 \r
153 /*\r
154 =============================================================================\r
155 \r
156                                                  PUBLIC FUNCTIONS\r
157 \r
158 =============================================================================\r
159 */\r
160 \r
161 void RF_Startup (void);\r
162 void RF_Shutdown (void);\r
163 \r
164 void RF_NewMap (void);\r
165 void RF_MarkTileGraphics (void);\r
166 void RF_NewPosition (unsigned x, unsigned y);\r
167 void RF_Scroll (int x, int y);\r
168 \r
169 void RF_PlaceSprite (void **user,unsigned globalx,unsigned globaly,\r
170         unsigned spritenumber, drawtype draw, int priority);\r
171 void RF_RemoveSprite (void **user);\r
172 \r
173 void RF_Refresh (void);\r
174 void RF_ForceRefresh (void);\r
175 void RF_SetRefreshHook (void (*func) (void) );\r
176 \r
177 \r