mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-22 09:49:11 +00:00
355 lines
9.4 KiB
C++
355 lines
9.4 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
|
|
#ifndef LUREDEFS_H
|
|
#define LUREDEFS_H
|
|
|
|
|
|
#include "common/scummsys.h"
|
|
#include "common/list.h"
|
|
|
|
namespace Lure {
|
|
|
|
#define SUPPORT_FILENAME "lure.dat"
|
|
#define LURE_DAT_MAJOR 1
|
|
#define LURE_DAT_MINOR 29
|
|
#define LURE_MIN_SAVEGAME_MINOR 25
|
|
#define LURE_SAVEGAME_MINOR 33
|
|
|
|
#define LURE_DEBUG 1
|
|
|
|
#define READ_LE_INT16(x) (int16) READ_LE_UINT16(x)
|
|
#define READ_LE_INT32(x) (int32) READ_LE_UINT32(x)
|
|
|
|
enum {
|
|
kLureDebugScripts = 1 << 0,
|
|
kLureDebugAnimations = 1 << 1,
|
|
kLureDebugHotspots = 1 << 2,
|
|
kLureDebugFights = 1 << 3,
|
|
kLureDebugSounds = 1 << 4,
|
|
kLureDebugStrings = 1 << 5
|
|
};
|
|
|
|
#define ERROR_BASIC 1
|
|
#define ERROR_INTERMEDIATE 2
|
|
#define ERROR_DETAILED 3
|
|
|
|
enum {
|
|
GF_FLOPPY = 1 << 0,
|
|
GF_EGA = 1 << 1,
|
|
GF_LNGUNK = 1 << 15
|
|
};
|
|
|
|
enum {
|
|
GI_LURE = 0
|
|
};
|
|
|
|
enum Action {
|
|
NONE = 0,
|
|
GET = 1,
|
|
DROP = 0,
|
|
PUSH = 3,
|
|
PULL = 4,
|
|
OPERATE = 5,
|
|
OPEN = 6,
|
|
CLOSE = 7,
|
|
LOCK = 8,
|
|
UNLOCK = 9,
|
|
USE = 10,
|
|
GIVE = 11,
|
|
TALK_TO = 12,
|
|
TELL = 13,
|
|
BUY = 14,
|
|
LOOK = 15,
|
|
LOOK_AT = 16,
|
|
LOOK_THROUGH = 17,
|
|
ASK = 18,
|
|
EAT = 0,
|
|
DRINK = 20,
|
|
STATUS = 21,
|
|
GO_TO = 22,
|
|
RETURN = 23,
|
|
BRIBE = 24,
|
|
EXAMINE = 25,
|
|
NPC_SET_ROOM_AND_OFFSET = 28,
|
|
NPC_TALK_TO_PLAYER = 29,
|
|
NPC_EXEC_SCRIPT = 30,
|
|
NPC_RESET_PAUSED_LIST = 31,
|
|
NPC_SET_RAND_DEST = 32,
|
|
NPC_WALKING_CHECK = 33,
|
|
NPC_SET_SUPPORT_OFFSET = 34,
|
|
NPC_SUPPORT_OFFSET_COND = 35,
|
|
NPC_DISPATCH_ACTION = 36,
|
|
NPC_TALK_NPC_TO_NPC = 37,
|
|
NPC_PAUSE = 38,
|
|
NPC_START_TALKING = 39,
|
|
NPC_JUMP_ADDRESS = 40
|
|
};
|
|
|
|
// Basic game dimensions
|
|
#define FULL_SCREEN_WIDTH 320
|
|
#define FULL_SCREEN_HEIGHT 200
|
|
#define GAME_COLORS 256
|
|
#define SCREEN_SIZE (FULL_SCREEN_HEIGHT * FULL_SCREEN_WIDTH)
|
|
|
|
// Some resources include multiple packed palettes of 64 entries each
|
|
#define SUB_PALETTE_SIZE 64
|
|
// Palette resources have 220 palette entries
|
|
#define RES_PALETTE_ENTRIES 220
|
|
// Main working palette size
|
|
#define MAIN_PALETTE_SIZE 228
|
|
// Palette color increment amouns for palette fade in/outs
|
|
#define PALETTE_FADE_INC_SIZE 4
|
|
|
|
// EGA constants
|
|
#define EGA_PALETTE_SIZE 16
|
|
#define EGA_NUM_LAYERS 4
|
|
#define EGA_PIXELS_PER_BYTE 8
|
|
|
|
// Palette and animation for Skorl catching player
|
|
#define SKORL_CATCH_PALETTE_ID 0x4060
|
|
#define SKORL_CATCH_ANIM_ID 0x4061
|
|
// Palette and animation for chute animation
|
|
#define CHUTE_PALETTE_ID 0x404C
|
|
#define CHUTE_ANIM_ID 0x404D
|
|
#define CHUTE2_ANIM_ID 0x404f
|
|
#define CHUTE3_ANIM_ID 0x4051
|
|
// Palette and animation for hiding in barrel
|
|
#define BARREL_PALETTE_ID 0xE9F0
|
|
#define BARREL_ANIM_ID 0xE9F1
|
|
// Endgame animation constants
|
|
#define ENDGAME_PALETTE_ID 0xFF00
|
|
#define ENDGAME_ANIM_ID 0xFF01
|
|
// Miscellaneous resources
|
|
#define COPY_PROTECTION_RESOURCE_ID 0x4139
|
|
#define CREDITS_RESOURCE_ID 0x7800
|
|
#define RESTART_RESOURCE_ID 0x7900
|
|
|
|
// Specifies the maximum buffer sized allocated for decoding animation data
|
|
#define MAX_ANIM_DECODER_BUFFER_SIZE 300000
|
|
|
|
#define MAX_DESC_SIZE 1024
|
|
#define MAX_HOTSPOT_NAME_SIZE 80
|
|
#define MAX_ACTION_NAME_SIZE 15
|
|
|
|
// Menubar constants
|
|
#define MENUBAR_Y_SIZE 8
|
|
|
|
// Cursor definitions
|
|
#define CURSOR_WIDTH 16
|
|
#define CURSOR_HEIGHT 16
|
|
#define CURSOR_SIZE 256
|
|
#define CURSOR_RESOURCE_ID 1
|
|
|
|
enum CursorType {CURSOR_ARROW = 0, CURSOR_DISK = 1, CURSOR_TIME_START = 2,
|
|
CURSOR_TIME_END = 9, CURSOR_CROSS = 10, CURSOR_UP_ARROW = 11, CURSOR_DOWN_ARROW = 12,
|
|
CURSOR_LEFT_ARROW = 13, CURSOR_RIGHT_ARROW = 14, CURSOR_CAMERA = 15, CURSOR_TALK = 16,
|
|
CURSOR_MENUBAR = 17, CURSOR_FIGHT_UPPER = 23, CURSOR_FIGHT_MIDDLE = 24,
|
|
CURSOR_FIGHT_LOWER = 25};
|
|
|
|
// Font details
|
|
#define FONT_RESOURCE_ID 4
|
|
#define FONT_WIDTH 8
|
|
#define FONT_HEIGHT 8
|
|
|
|
// Menu constants
|
|
#define MENU_RESOURCE_ID 5
|
|
#define MENUITEM_NONE 0
|
|
#define MENUITEM_CREDITS 1
|
|
#define MENUITEM_RESTART_GAME 2
|
|
#define MENUITEM_SAVE_GAME 3
|
|
#define MENUITEM_RESTORE_GAME 4
|
|
#define MENUITEM_QUIT 5
|
|
#define MENUITEM_TEXT_SPEED 6
|
|
#define MENUITEM_SOUND 7
|
|
|
|
// Mouse change needed to change an item in a popup menu
|
|
#define POPMENU_CHANGE_SENSITIVITY 5
|
|
|
|
// Dialog related defines
|
|
#define EGA_DIALOG_TEXT_COLOR 6
|
|
#define EGA_DIALOG_WHITE_COLOR 2
|
|
#define VGA_DIALOG_TEXT_COLOR 0xe2
|
|
#define VGA_DIALOG_WHITE_COLOR 0xe3
|
|
#define EGA_DIALOG_BG_COLOR 13
|
|
#define INFO_DIALOG_X 69
|
|
#define INFO_DIALOG_Y 61
|
|
#define INFO_DIALOG_WIDTH 191
|
|
#define TALK_DIALOG_WIDTH 130
|
|
#define TALK_DIALOG_EDGE_SIZE 3
|
|
#define TALK_DIALOG_Y 33
|
|
#define SAVE_DIALOG_X 69
|
|
#define SAVE_DIALOG_Y 28
|
|
|
|
// Strings defines
|
|
#define STRINGS_RESOURCE_ID 0x10
|
|
#define STRINGS_2_RESOURCE_ID 0x11
|
|
#define STRINGS_3_RESOURCE_ID 0x12
|
|
#define STRING_ID_RANGE 0x7d0
|
|
#define STRING_ID_UPPER 0xfa0
|
|
|
|
// Custom resources stored in lure.dat
|
|
#define GAME_PALETTE_RESOURCE_ID 0x3f01
|
|
#define ALT_PALETTE_RESOURCE_ID 0x3f02
|
|
#define DIALOG_RESOURCE_ID 0x3f03
|
|
#define TALK_DIALOG_RESOURCE_ID 0x3f04
|
|
#define ROOM_DATA_RESOURCE_ID 0x3f05
|
|
#define NPC_SCHEDULES_RESOURCE_ID 0x3f06
|
|
#define HOTSPOT_DATA_RESOURCE_ID 0x3f07
|
|
#define HOTSPOT_OVERRIDE_DATA_RESOURCE_ID 0x3f08
|
|
#define ROOM_EXITS_RESOURCE_ID 0x3f09
|
|
#define ROOM_EXIT_JOINS_RESOURCE_ID 0x3f0a
|
|
#define ANIM_DATA_RESOURCE_ID 0x3f0b
|
|
#define SCRIPT_DATA_RESOURCE_ID 0x3f0c
|
|
#define SCRIPT2_DATA_RESOURCE_ID 0x3f0d
|
|
#define HOTSPOT_SCRIPT_LIST_RESOURCE_ID 0x3f0e
|
|
#define MESSAGES_LIST_RESOURCE_ID 0x3f0f
|
|
#define ACTION_LIST_RESOURCE_ID 0x3f10
|
|
#define TALK_HEADER_RESOURCE_ID 0x3f11
|
|
#define TALK_DATA_RESOURCE_ID 0x3f12
|
|
#define ROOM_PATHS_RESOURCE_ID 0x3f13
|
|
#define EXIT_COORDINATES_RESOURCE_ID 0x3f14
|
|
#define EXIT_HOTSPOT_ID_LIST 0x3f15
|
|
#define FIGHT_DATA_RESOURCE_ID 0x3f16
|
|
#define STRING_LIST_RESOURCE_ID 0x3f17
|
|
#define SOUND_DESC_RESOURCE_ID 0x3f18
|
|
#define STRING_DECODER_RESOURCE_ID 0x3f19
|
|
|
|
// Script constants
|
|
#define STARTUP_SCRIPT 0x23FC
|
|
|
|
// Miscellaneous resources
|
|
#define NAMES_RESOURCE_ID 9
|
|
#define ROLAND_MAIN_SOUND_RESOURCE_ID 0xC
|
|
#define ADLIB_MAIN_SOUND_RESOURCE_ID 0xD
|
|
#define ROLAND_INTRO_SOUND_RESOURCE_ID 0x30
|
|
#define ADLIB_INTRO_SOUND_RESOURCE_ID 0x31
|
|
#define ROLAND_ENDGAME_SOUND_RESOURCE_ID 0xff10
|
|
|
|
#define NOONE_ID 0x3E7
|
|
#define PLAYER_ID 0x3E8
|
|
#define RATPOUCH_ID 0x3E9
|
|
#define SKORL_ID 0x3EA
|
|
#define BLACKSMITH_ID 0x3EB
|
|
#define GWEN_ID 0x3EC
|
|
#define MALLIN_ID 0x3ED
|
|
#define MONK1_ID 0x3EE
|
|
#define GOEWIN_ID 0x3EF
|
|
#define MONK2_ID 0x3F0
|
|
#define WAYNE_ID 0x3f1
|
|
#define CASTLE_SKORL_ID 0x3F3
|
|
#define FIRST_NONCHARACTER_ID 0x408
|
|
#define SACK_ID 0x40D
|
|
#define RACK_SERF_ID 0x411
|
|
#define PRISONER_ID 0x412
|
|
#define SID_ID 0x420
|
|
#define OIL_BURNER_ID 0x424
|
|
#define TRANSFORM_ID 0x425
|
|
#define NELLIE_ID 0x429
|
|
#define EWAN_ID 0x436
|
|
#define PIG_ID 0x43F
|
|
#define SKORL_FIGHTER_ID 0x444
|
|
#define START_EXIT_ID 0x2710
|
|
#define BOTTLE_HOTSPOT_ID 0x2710
|
|
#define CELL_DOOR_HOTSPOT_ID 0x2712
|
|
#define BRICKS_ID 0x2714
|
|
#define BOOK_ID 0x2723
|
|
#define START_NONVISUAL_HOTSPOT_ID 0x7530
|
|
|
|
// Milliseconds delay between game frames
|
|
#define GAME_FRAME_DELAY 80
|
|
#define GAME_TICK_DELAY 20
|
|
|
|
// Tick proc constants
|
|
#define NULL_TICK_PROC_ID 1
|
|
#define STANDARD_CHARACTER_TICK_PROC 2
|
|
#define PLAYER_TICK_PROC_ID 3
|
|
#define VOICE_TICK_PROC_ID 4
|
|
#define PUZZLED_TICK_PROC_ID 5
|
|
#define FOLLOWER_TICK_PROC_2 8
|
|
#define JAILOR_TICK_PROC_ID 9
|
|
#define STANDARD_ANIM_2_TICK_PROC 11
|
|
#define STANDARD_ANIM_TICK_PROC 12
|
|
#define GOEWIN_SHOP_TICK_PROC 27
|
|
#define TALK_TICK_PROC_ID 37
|
|
#define PLAYER_FIGHT_TICK_PROC_ID 39
|
|
|
|
// String constants
|
|
#define TALK_MAGIC_ID 0x424
|
|
#define TALK_RESPONSE_MAGIC_ID 0x1092
|
|
|
|
// Misc constants
|
|
#define GENERAL_MAGIC_ID 42
|
|
#define VOICE_ANIM_IDX 1
|
|
#define PUZZLED_ANIM_IDX 2
|
|
#define EXCLAMATION_ANIM_IDX 3
|
|
#define DEFAULT_VOLUME 192
|
|
|
|
// Animation record indexes
|
|
#define PLAYER_FIGHT_ANIM_INDEX 10
|
|
#define VOICE_ANIM_INDEX 21
|
|
#define BLACKSMITH_HAMMERING_ANIM_INDEX 22
|
|
#define EWAN_ANIM_INDEX 23
|
|
#define EWAN_ALT_ANIM_INDEX 24
|
|
#define PLAYER_ANIM_INDEX 32
|
|
#define SELENA_ANIM_INDEX 34
|
|
#define BLACKSMITH_DEFAULT_ANIM_INDEX 35
|
|
|
|
#define CONVERSE_COUNTDOWN_SIZE 40
|
|
#define IDLE_COUNTDOWN_SIZE 15
|
|
#define MAX_TELL_COMMANDS 8
|
|
#define MAX_SAVEGAME_SLOTS 10
|
|
|
|
#define ROOMNUM_VILLAGE_SHOP 35
|
|
#define ROOMNUM_CAVE 38
|
|
#define ROOMNUM_CELLAR 42
|
|
#define ROOMNUM_DINING_HALL 45
|
|
|
|
// Countdown for # operations in path finder before breaking until next
|
|
// tick - set it to 0 if you'd like all pathfinding to be done at once
|
|
//#define PATHFIND_COUNTDOWN 4000
|
|
#define PATHFIND_COUNTDOWN 0
|
|
|
|
// Pixel record flags
|
|
#define PIXELFLAG_HAS_TABLE 4
|
|
|
|
// Hotspot flags
|
|
#define HOTSPOTFLAG_FOUND 0x80
|
|
#define HOTSPOTFLAG_SKIP 0x40
|
|
#define HOTSPOTFLAG_MENU_EXCLUSION 0x20
|
|
#define HOTSPOTFLAG_ROOM_SPECIFIC 0x10
|
|
|
|
// Constants used to reference entries in the reworked support data entry lists
|
|
#define RETURN_SUPPORT_ID 0x400
|
|
#define EXIT_BLOCKED_SUPPORT_ID 0x800
|
|
#define JUMP_ADDR_2_SUPPORT_ID 0x1403
|
|
#define GOEWIN_CAVE_SUPPORT_ID 0x1800
|
|
#define GOEWIN_STANDARD_SUPPORT_ID 0x1C00
|
|
|
|
// Constants used in animation Serf on the rack
|
|
#define RACK_SERF_SCRIPT_ID_1 0x35C
|
|
#define RACK_SERF_SCRIPT_ID_2 0x384
|
|
|
|
} // End of namespace Lure
|
|
|
|
#endif
|