]> 4ch.mooo.com Git - 16.git/blob - 16/keen456/KEEN4-6/ID_CA.H
extrcted keen code remake
[16.git] / 16 / keen456 / KEEN4-6 / ID_CA.H
1 /* Reconstructed Commander Keen 4-6 Source Code\r
2  * Copyright (C) 2021 K1n9_Duk3\r
3  *\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
7  *\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
12  *\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
17  *\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
21  */\r
22 \r
23 // ID_CA.H\r
24 \r
25 #ifndef __TYPES__\r
26 #include "ID_TYPES.H"\r
27 #endif\r
28 \r
29 #ifndef __ID_MM__\r
30 #include "ID_MM.H"\r
31 #endif\r
32 \r
33 #ifndef __ID_GLOB__\r
34 #include "ID_GLOB.H"\r
35 #endif\r
36 \r
37 #define __ID_CA__\r
38 \r
39 //===========================================================================\r
40 \r
41 //#define NOMAPS\r
42 //#define NOGRAPHICS\r
43 //#define NOAUDIO\r
44 \r
45 #define MAPHEADERLINKED\r
46 #define GRHEADERLINKED\r
47 #define AUDIOHEADERLINKED\r
48 \r
49 #define NUMMAPS         30\r
50 #define MAPPLANES       3\r
51 \r
52 #ifndef CAT3D\r
53 //\r
54 // tile info defines, as bytes after tinf the table starts\r
55 //\r
56 \r
57 \r
58 //\r
59 // TILEINFO offsets\r
60 //\r
61 #define SPEED           402\r
62 #define ANIM            (SPEED+NUMTILE16)\r
63 \r
64 //\r
65 // TILEINFOM offsets\r
66 //\r
67 #define NORTHWALL               (ANIM+NUMTILE16)\r
68 #define EASTWALL                (NORTHWALL+NUMTILE16M)\r
69 #define SOUTHWALL               (EASTWALL+NUMTILE16M)\r
70 #define WESTWALL                (SOUTHWALL+NUMTILE16M)\r
71 #define MANIM           (WESTWALL+NUMTILE16M)\r
72 #define INTILE          (MANIM+NUMTILE16M)\r
73 #define MSPEED          (INTILE+NUMTILE16M)\r
74 #endif\r
75 \r
76 //===========================================================================\r
77 \r
78 typedef struct\r
79 {\r
80         long            planestart[3];\r
81         unsigned        planelength[3];\r
82         unsigned        width,height;\r
83         char            name[16];\r
84 } maptype;\r
85 \r
86 //===========================================================================\r
87 \r
88 extern  byte            _seg    *tinf;\r
89 extern  int                     mapon;\r
90 \r
91 extern  unsigned        _seg    *mapsegs[3];\r
92 extern  maptype         _seg    *mapheaderseg[NUMMAPS];\r
93 extern  byte            _seg    *audiosegs[NUMSNDCHUNKS];\r
94 extern  void            _seg    *grsegs[NUMCHUNKS];\r
95 \r
96 extern  byte            far     grneeded[NUMCHUNKS];\r
97 extern  byte            ca_levelbit,ca_levelnum;\r
98 \r
99 extern  char            *titleptr[8];\r
100 \r
101 extern  int                     profilehandle,debughandle;\r
102 \r
103 //\r
104 // hooks for custom cache dialogs\r
105 //\r
106 extern  void    (*drawcachebox)         (char *title, unsigned numcache);\r
107 extern  void    (*updatecachebox)       (void);\r
108 extern  void    (*finishcachebox)       (void);\r
109 \r
110 //===========================================================================\r
111 \r
112 // just for the score box reshifting\r
113 \r
114 void CAL_ShiftSprite (unsigned segment,unsigned source,unsigned dest,\r
115         unsigned width, unsigned height, unsigned pixshift);\r
116 \r
117 //===========================================================================\r
118 \r
119 void CA_OpenDebug (void);\r
120 void CA_CloseDebug (void);\r
121 boolean CA_FarRead (int handle, byte far *dest, long length);\r
122 boolean CA_FarWrite (int handle, byte far *source, long length);\r
123 boolean CA_ReadFile (char *filename, memptr *ptr);\r
124 boolean CA_LoadFile (char *filename, memptr *ptr);\r
125 \r
126 long CA_RLEWCompress (unsigned huge *source, long length, unsigned huge *dest,\r
127   unsigned rlewtag);\r
128 \r
129 void CA_RLEWexpand (unsigned huge *source, unsigned huge *dest,long length,\r
130   unsigned rlewtag);\r
131 \r
132 void CA_Startup (void);\r
133 void CA_Shutdown (void);\r
134 \r
135 void CA_CacheAudioChunk (int chunk);\r
136 void CA_LoadAllSounds (void);\r
137 \r
138 void CA_UpLevel (void);\r
139 void CA_DownLevel (void);\r
140 \r
141 void CA_SetAllPurge (void);\r
142 \r
143 void CA_ClearMarks (void);\r
144 void CA_ClearAllMarks (void);\r
145 \r
146 #define CA_MarkGrChunk(chunk)   grneeded[chunk]|=ca_levelbit\r
147 \r
148 void CA_CacheGrChunk (int chunk);\r
149 void CA_CacheMap (int mapnum);\r
150 \r
151 void CA_CacheMarks (char *title);\r
152 \r