22#ifndef MADS_CORE_GAME_H
23#define MADS_CORE_GAME_H
25#include "common/serializer.h"
26#include "mads/core/general.h"
27#include "mads/core/global.h"
28#include "mads/core/kernel.h"
29#include "mads/core/object.h"
30#include "mads/core/player.h"
31#include "mads/core/quote.h"
32#include "mads/core/mads.h"
33#include "mads/core/heap.h"
34#include "mads/core/popup.h"
35#include "mads/core/text.h"
39#define game_version "1.22"
40#define game_date "27-Jul-92"
46#define QUARTER_SECOND 15
47#define THIRD_SECOND 20
51#define TWO_SECONDS 120
52#define THREE_SECONDS 180
53#define FOUR_SECONDS 240
54#define FIVE_SECONDS 300
55#define SIX_SECONDS 360
56#define SEVEN_SECONDS 420
57#define EIGHT_SECONDS 480
58#define NINE_SECONDS 540
59#define TEN_SECONDS 600
60#define FIFTEEN_SECONDS 900
61#define THIRTY_SECONDS 1800
62#define ONE_MINUTE 3600
63#define TWO_MINUTES 7200
64#define THREE_MINUTES 10800
65#define UNTIL_THE_COW_EXPLODES 9999999
67#define CURSOR_NORMAL 1
78#define FACING_NORTHEAST 9
79#define FACING_SOUTHEAST 3
80#define FACING_SOUTHWEST 1
81#define FACING_NORTHWEST 7
85#define DEBUGGER_NONE -1
86#define DEBUGGER_MAIN 0
87#define DEBUGGER_HELP 1
88#define DEBUGGER_PALETTE 2
89#define DEBUGGER_SCRATCH 3
90#define DEBUGGER_GLOBAL 4
91#define DEBUGGER_CONVERSATION 5
92#define DEBUGGER_MATTE 6
93#define DEBUGGER_MEMORY 7
94#define DEBUGGER_STATE 8
95#define DEBUGGER_PAL_LIST_1 9
96#define DEBUGGER_PAL_LIST_2 10
98#define DEBUGGER_MAX_WATCH 12
107extern int selected_intro;
109#define EXTRA_MAX_INV_OBJECTS 18
114extern Player journal_player;
115extern int journal_room;
124 GAME_RESTORE_MENU = 3,
125 GAME_OPTIONS_MENU = 4,
126 GAME_DIFFICULTY_MENU = 5,
132#define GAME_MENU_MAX_ITEMS 20
133#define GAME_MAX_SAVE_SLOTS 99
134#define GAME_MAX_SAVE_LENGTH 63
135#define GAME_MAX_SAVE_WIDTH 255
136#define GAME_MAX_SAVES_ON_SCREEN 7
138#define GAME_SAVE_SLOT_MEMORY (long)(GAME_MAX_SAVE_SLOTS * (GAME_MAX_SAVE_LENGTH + 1))
139#define GAME_DIALOG_HEAP (long)(4096 + sizeof(PopupItem) * GAME_MENU_MAX_ITEMS)
140#define GAME_FUDGE_FACTOR 256
141#define GAME_MENU_HEAP (long)(GAME_SAVE_SLOT_MEMORY + GAME_DIALOG_HEAP + GAME_FUDGE_FACTOR)
144#define GAME_MENU_SCROLL_FIRST 20
145#define GAME_MENU_SCROLL_SECOND 8
147#define GAME_MENU_CENTER -1
148#define GAME_MENU_SPECIAL -2
149#define GAME_MENU_RIGHT -3
152#define WIN_QUICK_DEATH 1
153#define WIN_SLOW_DEATH 2
154#define WIN_ALL_THE_MONEY 3
155#define WIN_A_HEAD_POW 4
157extern byte game_restore_flag;
158extern byte game_autosaved;
159extern int savegame_slot;
161extern byte game_mouse_cursor_fix;
163extern word abort_value;
164extern long abort_clock;
166extern int logfile_enabled;
169extern int sound_board_address;
170extern int sound_board_type;
171extern int sound_board_irq;
173extern char chain_line[80];
174extern int chain_flag;
175extern int force_chain;
176extern int key_abort_level;
178extern int game_keystroke;
179extern int game_any_keystroke;
180extern int game_any_emergency;
182extern int win_status;
184extern long correction_clock;
187extern char config_file_name[20];
188extern char restart_game_key[40];
189extern char save_game_buf[20];
190extern int last_keypressed;
192extern void (*game_menu_routine)();
193extern void (*game_menu_init)();
194extern void (*game_menu_exit)();
195extern void (*game_emergency_save)();
199extern int debugger_state;
200extern bool debugger_matte_before;
201extern int debugger_memory_skip;
202extern bool debugger_memory_all;
203extern bool debugger_memory_keywait;
204extern void (*debugger_reset)();
205extern void (*debugger_update)();
208extern void (*section_preload_code_pointer)();
209extern void (*section_init_code_pointer)();
210extern void (*section_room_constructor)();
211extern void (*section_daemon_code_pointer)();
212extern void (*section_pre_parser_code_pointer)();
213extern void (*section_parser_code_pointer)();
214extern void (*section_error_code_pointer)();
215extern void (*section_music_reset_pointer)();
218extern void (*room_preload_code_pointer)();
219extern void (*room_init_code_pointer)();
220extern void (*room_daemon_code_pointer)();
221extern void (*room_pre_parser_code_pointer)();
222extern void (*room_parser_code_pointer)();
223extern void (*room_error_code_pointer)();
224extern void (*room_shutdown_code_pointer)();
226extern char game_save_file[13];
227extern char *game_save_directory;
229extern int game_preserve_handle;
231extern Heap game_menu_heap;
232extern Popup *game_menu_popup;
233extern int report_version;
234extern int art_hags_are_on_hd;
236extern void game_save_name(
int id);
237extern void game_set_camera_speed();
242extern void game_exec_function(
void (*(target))());
244extern void game_debugger_reset();
245extern void game_debugger();
252extern void game_menu_setup();
257extern void game_menu_shutdown();
259extern int main_cheating_key(
int mykey);
260extern int main_normal_key(
int mykey);
261extern int main_copy_verify();
262extern void game_cold_data_init();
269extern void game_control();
274extern void flag_parse(
const char **myscan);
276extern void show_logo();
277extern void show_version();
279extern void init_game();
284extern char *game_menu_save_string(
int id);