ScummVM API documentation
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
29namespace Lure {
30
31#define SUPPORT_FILENAME "lure.dat"
32#define LURE_DAT_MAJOR 1
33#define LURE_DAT_MINOR 32
34#define LURE_MIN_SAVEGAME_MINOR 25
35#define LURE_SAVEGAME_MINOR 33
36
37#define LURE_DEBUG 1
38
39enum {
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
52enum {
53 GI_LURE = 0
54};
55
56enum 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
153enum 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