ScummVM API documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
luredefs.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef LUREDEFS_H
23 #define LUREDEFS_H
24 
25 
26 #include "common/scummsys.h"
27 #include "common/list.h"
28 
29 namespace Lure {
30 
31 #define SUPPORT_FILENAME "lure.dat"
32 #define LURE_DAT_MAJOR 1
33 #define LURE_DAT_MINOR 31
34 #define LURE_MIN_SAVEGAME_MINOR 25
35 #define LURE_SAVEGAME_MINOR 33
36 
37 #define LURE_DEBUG 1
38 
39 enum {
40  kLureDebugScripts = 1,
41  kLureDebugAnimations,
42  kLureDebugHotspots,
43  kLureDebugFights,
44  kLureDebugSounds,
45  kLureDebugStrings,
46 };
47 
48 #define ERROR_BASIC 1
49 #define ERROR_INTERMEDIATE 2
50 #define ERROR_DETAILED 3
51 
52 enum {
53  GI_LURE = 0
54 };
55 
56 enum Action {
57  NONE = 0,
58  GET = 1,
59  DROP = 0,
60  PUSH = 3,
61  PULL = 4,
62  OPERATE = 5,
63  OPEN = 6,
64  CLOSE = 7,
65  LOCK = 8,
66  UNLOCK = 9,
67  USE = 10,
68  GIVE = 11,
69  TALK_TO = 12,
70  TELL = 13,
71  BUY = 14,
72  LOOK = 15,
73  LOOK_AT = 16,
74  LOOK_THROUGH = 17,
75  ASK = 18,
76  EAT = 0,
77  DRINK = 20,
78  STATUS = 21,
79  GO_TO = 22,
80  RETURN = 23,
81  BRIBE = 24,
82  EXAMINE = 25,
83  NPC_SET_ROOM_AND_OFFSET = 28,
84  NPC_TALK_TO_PLAYER = 29,
85  NPC_EXEC_SCRIPT = 30,
86  NPC_RESET_PAUSED_LIST = 31,
87  NPC_SET_RAND_DEST = 32,
88  NPC_WALKING_CHECK = 33,
89  NPC_SET_SUPPORT_OFFSET = 34,
90  NPC_SUPPORT_OFFSET_COND = 35,
91  NPC_DISPATCH_ACTION = 36,
92  NPC_TALK_NPC_TO_NPC = 37,
93  NPC_PAUSE = 38,
94  NPC_START_TALKING = 39,
95  NPC_JUMP_ADDRESS = 40
96 };
97 
98 // Basic game dimensions
99 #define FULL_SCREEN_WIDTH 320
100 #define FULL_SCREEN_HEIGHT 200
101 #define GAME_COLORS 256
102 #define SCREEN_SIZE (FULL_SCREEN_HEIGHT * FULL_SCREEN_WIDTH)
103 
104 // Some resources include multiple packed palettes of 64 entries each
105 #define SUB_PALETTE_SIZE 64
106 // Palette resources have 220 palette entries
107 #define RES_PALETTE_ENTRIES 220
108 // Main working palette size
109 #define MAIN_PALETTE_SIZE 228
110 // Palette color increment amouns for palette fade in/outs
111 #define PALETTE_FADE_INC_SIZE 4
112 
113 // EGA constants
114 #define EGA_PALETTE_SIZE 16
115 #define EGA_NUM_LAYERS 4
116 #define EGA_PIXELS_PER_BYTE 8
117 
118 // Palette and animation for Skorl catching player
119 #define SKORL_CATCH_PALETTE_ID 0x4060
120 #define SKORL_CATCH_ANIM_ID 0x4061
121 // Palette and animation for chute animation
122 #define CHUTE_PALETTE_ID 0x404C
123 #define CHUTE_ANIM_ID 0x404D
124 #define CHUTE2_ANIM_ID 0x404f
125 #define CHUTE3_ANIM_ID 0x4051
126 // Palette and animation for hiding in barrel
127 #define BARREL_PALETTE_ID 0xE9F0
128 #define BARREL_ANIM_ID 0xE9F1
129 // Endgame animation constants
130 #define ENDGAME_PALETTE_ID 0xFF00
131 #define ENDGAME_ANIM_ID 0xFF01
132 // Miscellaneous resources
133 #define COPY_PROTECTION_RESOURCE_ID 0x4139
134 #define CREDITS_RESOURCE_ID 0x7800
135 #define RESTART_RESOURCE_ID 0x7900
136 
137 // Specifies the maximum buffer sized allocated for decoding animation data
138 #define MAX_ANIM_DECODER_BUFFER_SIZE 300000
139 
140 #define MAX_DESC_SIZE 1024
141 #define MAX_HOTSPOT_NAME_SIZE 80
142 #define MAX_ACTION_NAME_SIZE 15
143 
144 // Menubar constants
145 #define MENUBAR_Y_SIZE 8
146 
147 // Cursor definitions
148 #define CURSOR_WIDTH 16
149 #define CURSOR_HEIGHT 16
150 #define CURSOR_SIZE 256
151 #define CURSOR_RESOURCE_ID 1
152 
153 enum CursorType {CURSOR_ARROW = 0, CURSOR_DISK = 1, CURSOR_TIME_START = 2,
154  CURSOR_TIME_END = 9, CURSOR_CROSS = 10, CURSOR_UP_ARROW = 11, CURSOR_DOWN_ARROW = 12,
155  CURSOR_LEFT_ARROW = 13, CURSOR_RIGHT_ARROW = 14, CURSOR_CAMERA = 15, CURSOR_TALK = 16,
156  CURSOR_MENUBAR = 17, CURSOR_FIGHT_UPPER = 23, CURSOR_FIGHT_MIDDLE = 24,
157  CURSOR_FIGHT_LOWER = 25};
158 
159 // Font details
160 #define FONT_RESOURCE_ID 4
161 #define FONT_WIDTH 8
162 #define FONT_HEIGHT 8
163 
164 // Menu constants
165 #define MENU_RESOURCE_ID 5
166 #define MENUITEM_NONE 0
167 #define MENUITEM_CREDITS 1
168 #define MENUITEM_RESTART_GAME 2
169 #define MENUITEM_SAVE_GAME 3
170 #define MENUITEM_RESTORE_GAME 4
171 #define MENUITEM_QUIT 5
172 #define MENUITEM_TEXT_SPEED 6
173 #define MENUITEM_SOUND 7
174 
175 // Mouse change needed to change an item in a popup menu
176 #define POPMENU_CHANGE_SENSITIVITY 5
177 
178 // Dialog related defines
179 #define EGA_DIALOG_TEXT_COLOR 6
180 #define EGA_DIALOG_WHITE_COLOR 2
181 #define VGA_DIALOG_TEXT_COLOR 0xe2
182 #define VGA_DIALOG_WHITE_COLOR 0xe3
183 #define EGA_DIALOG_BG_COLOR 13
184 #define INFO_DIALOG_X 69
185 #define INFO_DIALOG_Y 61
186 #define INFO_DIALOG_WIDTH 191
187 #define TALK_DIALOG_WIDTH 130
188 #define TALK_DIALOG_EDGE_SIZE 3
189 #define TALK_DIALOG_Y 33
190 #define SAVE_DIALOG_X 69
191 #define SAVE_DIALOG_Y 28
192 
193 // Strings defines
194 #define STRINGS_RESOURCE_ID 0x10
195 #define STRINGS_2_RESOURCE_ID 0x11
196 #define STRINGS_3_RESOURCE_ID 0x12
197 #define STRING_ID_RANGE 0x7d0
198 #define STRING_ID_UPPER 0xfa0
199 
200 // Custom resources stored in lure.dat
201 #define GAME_PALETTE_RESOURCE_ID 0x3f01
202 #define ALT_PALETTE_RESOURCE_ID 0x3f02
203 #define DIALOG_RESOURCE_ID 0x3f03
204 #define TALK_DIALOG_RESOURCE_ID 0x3f04
205 #define ROOM_DATA_RESOURCE_ID 0x3f05
206 #define NPC_SCHEDULES_RESOURCE_ID 0x3f06
207 #define HOTSPOT_DATA_RESOURCE_ID 0x3f07
208 #define HOTSPOT_OVERRIDE_DATA_RESOURCE_ID 0x3f08
209 #define ROOM_EXITS_RESOURCE_ID 0x3f09
210 #define ROOM_EXIT_JOINS_RESOURCE_ID 0x3f0a
211 #define ANIM_DATA_RESOURCE_ID 0x3f0b
212 #define SCRIPT_DATA_RESOURCE_ID 0x3f0c
213 #define SCRIPT2_DATA_RESOURCE_ID 0x3f0d
214 #define HOTSPOT_SCRIPT_LIST_RESOURCE_ID 0x3f0e
215 #define MESSAGES_LIST_RESOURCE_ID 0x3f0f
216 #define ACTION_LIST_RESOURCE_ID 0x3f10
217 #define TALK_HEADER_RESOURCE_ID 0x3f11
218 #define TALK_DATA_RESOURCE_ID 0x3f12
219 #define ROOM_PATHS_RESOURCE_ID 0x3f13
220 #define EXIT_COORDINATES_RESOURCE_ID 0x3f14
221 #define EXIT_HOTSPOT_ID_LIST 0x3f15
222 #define FIGHT_DATA_RESOURCE_ID 0x3f16
223 #define STRING_LIST_RESOURCE_ID 0x3f17
224 #define SOUND_DESC_RESOURCE_ID 0x3f18
225 #define STRING_DECODER_RESOURCE_ID 0x3f19
226 #define AUDIO_INIT_ICON_RESOURCE_ID 0x3F1A
227 
228 // Script constants
229 #define STARTUP_SCRIPT 0x23FC
230 
231 // Miscellaneous resources
232 #define NAMES_RESOURCE_ID 9
233 #define ROLAND_MAIN_SYSEX_RESOURCE_ID 0xB
234 #define ROLAND_MAIN_SOUND_RESOURCE_ID 0xC
235 #define ADLIB_MAIN_SOUND_RESOURCE_ID 0xD
236 #define ROLAND_INTRO_SOUND_RESOURCE_ID 0x30
237 #define ADLIB_INTRO_SOUND_RESOURCE_ID 0x31
238 #define ROLAND_ENDGAME_SOUND_RESOURCE_ID 0xff10
239 #define ADLIB_ENDGAME_SOUND_RESOURCE_ID 0xff11
240 
241 #define NOONE_ID 0x3E7
242 #define PLAYER_ID 0x3E8
243 #define RATPOUCH_ID 0x3E9
244 #define SKORL_ID 0x3EA
245 #define BLACKSMITH_ID 0x3EB
246 #define GWEN_ID 0x3EC
247 #define MALLIN_ID 0x3ED
248 #define MONK1_ID 0x3EE
249 #define GOEWIN_ID 0x3EF
250 #define MONK2_ID 0x3F0
251 #define WAYNE_ID 0x3f1
252 #define CASTLE_SKORL_ID 0x3F3
253 #define FIRST_NONCHARACTER_ID 0x408
254 #define SACK_ID 0x40D
255 #define RACK_SERF_ID 0x411
256 #define PRISONER_ID 0x412
257 #define SID_ID 0x420
258 #define OIL_BURNER_ID 0x424
259 #define TRANSFORM_ID 0x425
260 #define NELLIE_ID 0x429
261 #define EWAN_ID 0x436
262 #define PIG_ID 0x43F
263 #define SKORL_FIGHTER_ID 0x444
264 #define START_EXIT_ID 0x2710
265 #define BOTTLE_HOTSPOT_ID 0x2710
266 #define CELL_DOOR_HOTSPOT_ID 0x2712
267 #define BRICKS_ID 0x2714
268 #define BOOK_ID 0x2723
269 #define START_NONVISUAL_HOTSPOT_ID 0x7530
270 
271 // Milliseconds delay between game frames
272 #define GAME_FRAME_DELAY 80
273 
274 // Milliseconds delay between clock ticks in shop
275 #define GAME_TICK_DELAY 1000
276 
277 // Tick proc constants
278 #define NULL_TICK_PROC_ID 1
279 #define STANDARD_CHARACTER_TICK_PROC 2
280 #define PLAYER_TICK_PROC_ID 3
281 #define VOICE_TICK_PROC_ID 4
282 #define PUZZLED_TICK_PROC_ID 5
283 #define FOLLOWER_TICK_PROC_2 8
284 #define JAILOR_TICK_PROC_ID 9
285 #define STANDARD_ANIM_2_TICK_PROC 11
286 #define STANDARD_ANIM_TICK_PROC 12
287 #define GOEWIN_SHOP_TICK_PROC 27
288 #define TALK_TICK_PROC_ID 37
289 #define PLAYER_FIGHT_TICK_PROC_ID 39
290 
291 // String constants
292 #define TALK_MAGIC_ID 0x424
293 #define TALK_RESPONSE_MAGIC_ID 0x1092
294 
295 // Misc constants
296 #define GENERAL_MAGIC_ID 42
297 #define VOICE_ANIM_IDX 1
298 #define PUZZLED_ANIM_IDX 2
299 #define EXCLAMATION_ANIM_IDX 3
300 #define DEFAULT_VOLUME 192
301 
302 // Animation record indexes
303 #define PLAYER_FIGHT_ANIM_INDEX 10
304 #define VOICE_ANIM_INDEX 21
305 #define BLACKSMITH_HAMMERING_ANIM_INDEX 22
306 #define EWAN_ANIM_INDEX 23
307 #define EWAN_ALT_ANIM_INDEX 24
308 #define PLAYER_ANIM_INDEX 32
309 #define SELENA_ANIM_INDEX 34
310 #define BLACKSMITH_DEFAULT_ANIM_INDEX 35
311 
312 #define CONVERSE_COUNTDOWN_SIZE 40
313 #define IDLE_COUNTDOWN_SIZE 15
314 #define MAX_TELL_COMMANDS 8
315 #define MAX_SAVEGAME_SLOTS 10
316 
317 #define ROOMNUM_VILLAGE_SHOP 35
318 #define ROOMNUM_CAVE 38
319 #define ROOMNUM_CELLAR 42
320 #define ROOMNUM_DINING_HALL 45
321 
322 // Countdown for # operations in path finder before breaking until next
323 // tick - set it to 0 if you'd like all pathfinding to be done at once
324 //#define PATHFIND_COUNTDOWN 4000
325 #define PATHFIND_COUNTDOWN 0
326 
327 // Pixel record flags
328 #define PIXELFLAG_HAS_TABLE 4
329 
330 // Hotspot flags
331 #define HOTSPOTFLAG_FOUND 0x80
332 #define HOTSPOTFLAG_SKIP 0x40
333 #define HOTSPOTFLAG_MENU_EXCLUSION 0x20
334 #define HOTSPOTFLAG_ROOM_SPECIFIC 0x10
335 
336 // Constants used to reference entries in the reworked support data entry lists
337 #define RETURN_SUPPORT_ID 0x400
338 #define EXIT_BLOCKED_SUPPORT_ID 0x800
339 #define JUMP_ADDR_2_SUPPORT_ID 0x1403
340 #define GOEWIN_CAVE_SUPPORT_ID 0x1800
341 #define GOEWIN_STANDARD_SUPPORT_ID 0x1C00
342 
343 // Constants used in animation Serf on the rack
344 #define RACK_SERF_SCRIPT_ID_1 0x35C
345 #define RACK_SERF_SCRIPT_ID_2 0x384
346 
347 } // End of namespace Lure
348 
349 #endif
Definition: animseq.h:27