aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova/msn_def.h
blob: c17b7bdc3cd7c44f6cbf50f16177943eec5830c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
#ifndef MSN_DEF_H
#define MSN_DEF_H

namespace Supernova {

struct obj_struct
{
    char *name,*description,id;
    int type;
    char click,click2,section;
    char exitroom,direction;
};

/* msn.c */
void overlay(int value);
void overlay_init(char *text);
void wait2(int time);
void set_color63(char x);
void fadeout2();
void fadein2();
void init_roomlist();
void anim_on();
void anim_off();
char *ltoa(long l);
void test_vga();
void test_mouse();
void setmode(char m);
void calculate_palette();
void palette();
void palette_5();
void palette_blend();
void fadeout();
void fadein();
void title_fadein();
void palette_off();
void screen_shake();
void crit_err();
void init_buffer();
void get_inf(int seg);
void move(int ziel_seg, int quell_seg, int chunks_16bit);
void disp_puffer(long adr, int ziel, int anz);
void load(char *name);
void getspace(int para);
void load_disk(char *name);
void error_loading(char *name);
void load_sound(char *name);
void load_sound_disk(char *name);
void image(char nr);
void image_remove(char nr);
char invert(char nr);
void show_current_section();
void text(char *t);
void textxy(int x, int y, char *t, char f);
int width(char *t);
void set_int();
void restore_int();
void wait1(int time);
void box(int x, int y, int b, int h, char f);
void hgr_save(int x, int y, int w, int h);
void hgr_restore(int x, int y, int w, int h);
void message(char *text);
void message_p(int pos, char *text);
void message_remove();
void init_menu();
void command_box(int bef, bool hell);
void show_menu();
void exits();
void mouse_reset();
void hourglass();
void arrow();
void mouse_on();
void mouse_off();
void install_event_handler();
void mouse_input();
void mouse_input2();
void mouse_input3();
void mouse_wait(int time);
void sentence(int nr, bool hell);
void sentence_remove(int sentence, int nr);
void sentence_add(int sentence, int nr);
int dialog(int num, char *rowlength[6], char **text[6], int nr);
void mouse_pos_dialog(int x, int y);
void say(char *t);
void reply(char *t, int aus1, int aus2);
int command_print();
void mouse_pos(int x, int y);
void maus_pos_weg();
void mouse_right();
void input();
void inventory_object(int nr, bool brightness);
void empty_object(int nr);
void inventory_arrow(int nr, bool brightness);
void show_inventory();
void take(struct obj_struct *obj);
void inventory_remove(struct obj_struct *obj);
void inventory_remove2(struct obj_struct *obj);
void scroll_up();
void scroll_down();
void inventory_seize();
void insert(char *text, char *character);
void edit(int x, int y, char *t, int length);
bool filecopy(int ziel, int quelle);
void error_temp();
bool save_game(int nr);
bool load_game(int nr);
void load_overlay();
void load_overlay_start();
void load_save(bool speichern, bool abbruch);
void text_up();
void text_down();
void list(char *name, bool bestell);
void help();
void settextspeed();
void altx();
bool room_execute();
char bios_key();
char number_read(char min, char max, char standard);
void do_setup();
void main(int argc, char *argv[]);
/* msn_mod.c */
void init_mod();
void rechne_note();
void set_pattern(int p);
void play_sb();
void play_pc();
void start_pc_mod();
void titel_schrift();
void nur_text();
/* msn_ovl1.c */
/* msn_r0.c */
long systime();
char *time_tostring(long z);
void save_time();
void load_time();
void load_door();
void door_sound();
int door_open();
int door_close();
void money_take(int amount);
bool combine(struct obj_struct *obj1, struct obj_struct *obj2, int o1, int o2);
void ok();
bool airless();
bool helmet_takeoff();
bool generic_specialcmd(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void shock();
void alarm();
void alarm_hearing();
void outro();
void dim(int color);
void room_brightness();
void turnon();
void turnoff();
void great(int nr);
void init_rooms();
void set_section(int room, int section, bool on);
/* msn_r1.c */
bool sb_corridor(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_hall(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_sleep(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void anim_sleep();
void once_sleep();
bool sb_cockpit(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void anim_cockpit();
bool sb_airlock(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_hold(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_landingmod(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_generator(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void open_locker(struct obj_struct *obj, struct obj_struct *lock, int section);
void close_locker(struct obj_struct *obj, struct obj_struct *lock, int section);
bool sb_cabin_r3(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_cabin_l3(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_cabin_l2(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_bathroom(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void once_cockpit();
void once_airlock();
void once_hold();
/* msn_r1_r.c */
/* msn_r2.c */
bool sb_rocks(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void once_rocks();
bool sb_meetup(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void once_meetup();
void anim_meetup();
bool sb_entrance(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void anim_entrance();
void anim_remaining();
void shipstart();
void nova_scroll();
void supernova();
bool sb_roger(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void anim_roger();
void once_roger();
bool sb_glider(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void anim_glider();
bool sb_meetup2(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void once_meetup2();
bool sb_meetup3(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
/* msn_r3.c */
bool sb_cell(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void anim_cell();
void once_cell();
bool sb_corridor4(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void once_corridor();
void once_corridor4();
bool sb_corridor5(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_corridor6(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_corridor8(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_corridor9(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void shot(int a, int b);
void guard_shot();
bool sb_guard(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void guard3_shot();
bool sb_guard3(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_bgang(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void once_bgang();
bool sb_office1(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_office2(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_office3(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_office4(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_office5(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void once_office5();
void walk(int a);
void guard_walk();
void telomat(int nr);
void search_start();
void search(int time);
void guard_noticed();
void busted(int i);
void guard_back();
bool sb_elevator(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
bool sb_station(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
void taxi();
bool sb_sign(int verb, struct obj_struct *obj1, struct obj_struct *obj2);
/* msn_s.c */
void talk(int a1, int a2, int time_remain, int pos, char *t);
void talkf(int a1, int a2, int dauer);
void talk2(int a1, int a2, int b1, int b2, int duration, int pos, char *t);
void title_image();
void sirene();
void intro();
/* msn_snd.c */
void play_sb_sample(int address);
void wait_soundblaster();
void call_driver();
void init_soundblaster();
void deinit_soundblaster();
void stop();
bool keypressed();
void pc_sound_on(int int8, int int9, char speed);
void pc_sound_off();
void play_pc_sample(int adr);
void init_sound_tab(bool mod);
void init_sound();
void deinit_sound();
void play_music(bool kurz);
void play(int adr);
void sound_on();
void sound(int counter);
void sound_off();


#define MAX_SECTION     40
#define MAX_SECTION_ZUS 50
#define MAX_CLICKFIELD_ZUS  80
#define MAX_OBJECT      25
#define MAX_CARRY      30

#define ROOMNUM0  1
#define ROOMNUM1 16
#define ROOMNUM2  9
#define ROOMNUM3 21

#define NIL   0

struct room
{
  char *file;
  bool shown[MAX_SECTION];
  bool (*specialcmd)();
  void (*animation)();
  void (*onEntrance)();
  struct obj_struct object[MAX_OBJECT];
};

/* object type */
#define TAKE            1
#define OPEN            2
#define OPENED          4
#define CLOSED          8
#define EXIT           16
#define PRESS          32
#define COMBINABLE     64
#define CARRIED       128
#define UNNECESSARY   256
#define WORN          512
#define TALK         1024
#define OCCUPIED     2048
#define CAUGHT       4096

enum {ACTION_WALK,
      ACTION_LOOK,
      ACTION_TAKE,
      ACTION_OPEN,
      ACTION_CLOSE,
      ACTION_PRESS,
      ACTION_PULL,
      ACTION_USE,
      ACTION_TALK,
      ACTION_GIVE};

enum {INTRO,CORRIDOR,HALL,SLEEP,COCKPIT,AIRLOCK,
      HOLD,LANDINGMODULE,GENERATOR,OUTSIDE,
      CABIN_R1,CABIN_R2,CABIN_R3,CABIN_L1,CABIN_L3,CABIN_L2,BATHROOM,

      ROCKS,CAVE,MEETUP,ENTRANCE,REST,ROGER,GLIDER,MEETUP2,MEETUP3,

      CELL,CORRIDOR1,CORRIDOR2,CORRIDOR3,CORRIDOR4,CORRIDOR5,CORRIDOR6,CORRIDOR7,CORRIDOR8,CORRIDOR9,
      BCORRIDOR,GUARD,GUARD3,OFFICE_L1,OFFICE_L2,OFFICE_R1,OFFICE_R2,OFFICE_L,
      ELEVATOR,STATION,SIGN};

enum {X,
      KEYCARD,KNIFE,WATCH,
      SOCKET,
      BUTTON,HATCH1,
      BUTTON1,BUTTON2,MANOMETER,SUIT,HELMET,LIFESUPPORT,
      SCRAP_LK,OUTERHATCH_TOP,GENERATOR_TOP,TERMINALSTRIP,LANDINGMOD_OUTERHATCH,
        HOLD_WIRE,
      LANDINGMOD_BUTTON,LANDINGMOD_SOCKET,LANDINGMOD_WIRE,LANDINGMOD_HATCH,LANDINGMOD_MONITOR,
        KEYBOARD,
      KEYCARD2,OUTERHATCH,GENERATOR_WIRE,TRAP,SHORT_WIRE,CLIP,
        VOLTMETER,LADDER,GENERATOR_ROPE,
      KITCHEN_HATCH,SLEEP_SLOT,
      MONITOR,INSTRUMENTS,
      COMPUTER,CABINS,CABIN,
      SLOT_K1,SLOT_K2,SLOT_K3,SLOT_K4,
      SHELF1,SHELF2,SHELF3,SHELF4,
      ROPE,BOOK,DISCMAN,CHESS,
      SLOT_KL1,SLOT_KL2,SLOT_KL3,SLOT_KL4,
      SHELF_L1,SHELF_L2,SHELF_L3,SHELF_L4,
      PISTOL,BOOK2,SPOOL,
      RECORD,TURNTABLE,TURNTABLE_BUTTON,WIRE,WIRE2,PLUG,
      PEN,
      BATHROOM_DOOR,BATHROOM_EXIT,SHOWER,TOILET,

      STONE,
      SPACESHIPS,SPACESHIP,STAR,DOOR,MEETUP_SIGN,
      PORTER,BATHROOM_BUTTON,BATHROOM_SIGN,KITCHEN_SIGN,CAR_SLOT,
        ARS_BATHROOM,COINS,SCHNUCK,EGG,PILL,PILL_HULL,STAIRCASE,
        MEETUP_EXIT,
      ROGER_W,WALLET,KEYCARD_R,CUP,
      GLIDER_BUTTON1,GLIDER_BUTTON2,GLIDER_BUTTON3,GLIDER_BUTTON4,GLIDER_SLOT,GLIDER_BUTTONS,
        GLIDER_DISPLAY,GLIDER_INSTRUMENTS,GLIDER_KEYCARD,
      UFO,

      CELL_BUTTON,CELL_TABLE,CELL_WIRE,TRAY,CELL_DOOR,MAGNET,
      NEWSPAPER,TABLE,
      PILLAR1,PILLAR2,DOOR1,DOOR2,DOOR3,DOOR4,
      GUARDIAN,LAMP,
      MASTERKEYCARD,PAINTING,MONEY,LOCKER,LETTER,
      JUNGLE,SLOT,STATION_SIGN,

      TICKETS};

}

const byte mouseNormal[64] = {
  0xff,0x3f,0xff,0x1f,0xff,0x0f,0xff,0x07,
  0xff,0x03,0xff,0x01,0xff,0x00,0x7f,0x00,
  0x3f,0x00,0x1f,0x00,0x0f,0x00,0x0f,0x00,
  0xff,0x00,0x7f,0x18,0x7f,0x38,0x7f,0xfc,

  0x00,0x00,0x00,0x40,0x00,0x60,0x00,0x70,
  0x00,0x78,0x00,0x7c,0x00,0x7e,0x00,0x7f,
  0x80,0x7f,0xc0,0x7f,0xe0,0x7f,0x00,0x7e,
  0x00,0x66,0x00,0x43,0x00,0x03,0x00,0x00
};

const byte mouseWait[64] = {
  0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,
  0x01,0x80,0x01,0x80,0x11,0x88,0x31,0x8c,
  0x31,0x8c,0x11,0x88,0x01,0x80,0x01,0x80,
  0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,

  0x00,0x00,0xfe,0x7f,0xf4,0x2f,0xf4,0x2f,
  0x14,0x28,0x24,0x24,0x44,0x22,0x84,0x21,
  0x84,0x21,0xc4,0x23,0xe4,0x27,0x74,0x2e,
  0x34,0x2c,0x14,0x28,0xfe,0x7f,0x00,0x00
};

char font[][5] =
{
  {0x00,0x00,0x00,0xff},
  {0x5f,0xff},
  {0x03,0x00,0x03,0xff},
  {0x14,0x7f,0x14,0x7f,0x14},
  {0x24,0x2a,0x7f,0x2a,0x12},
  {0x61,0x10,0x08,0x04,0x43},
  {0x38,0x4e,0x59,0x26,0x50},
  {0x03,0xff},
  {0x3e,0x41,0xff},
  {0x41,0x3e,0xff},
  {0x10,0x54,0x38,0x54,0x10},
  {0x10,0x10,0x7c,0x10,0x10},
  {0x80,0x40,0xff},
  {0x10,0x10,0x10,0x10,0x10},
  {0x40,0xff},
  {0x60,0x10,0x08,0x04,0x03},

  {0x3e,0x41,0x41,0x41,0x3e}, /* digits */
  {0x04,0x02,0x7f,0xff},
  {0x42,0x61,0x51,0x49,0x46},
  {0x22,0x41,0x49,0x49,0x36},
  {0x18,0x14,0x12,0x7f,0x10},
  {0x27,0x45,0x45,0x45,0x39},
  {0x3e,0x49,0x49,0x49,0x32},
  {0x01,0x61,0x19,0x07,0x01},
  {0x36,0x49,0x49,0x49,0x36},
  {0x26,0x49,0x49,0x49,0x3e},

  {0x44,0xff},
  {0x80,0x44,0xff},
  {0x10,0x28,0x44,0xff},
  {0x28,0x28,0x28,0x28,0x28},
  {0x44,0x28,0x10,0xff},
  {0x02,0x01,0x51,0x09,0x06},
  {0x3e,0x41,0x5d,0x5d,0x1e},

  {0x7c,0x12,0x11,0x12,0x7c}, /* uppercase letters*/
  {0x7f,0x49,0x49,0x49,0x36},
  {0x3e,0x41,0x41,0x41,0x22},
  {0x7f,0x41,0x41,0x22,0x1c},
  {0x7f,0x49,0x49,0x49,0xff},
  {0x7f,0x09,0x09,0x09,0xff},
  {0x3e,0x41,0x41,0x49,0x3a},
  {0x7f,0x08,0x08,0x08,0x7f},
  {0x41,0x7f,0x41,0xff},
  {0x20,0x40,0x40,0x3f,0xff},
  {0x7f,0x08,0x14,0x22,0x41},
  {0x7f,0x40,0x40,0x40,0xff},
  {0x7f,0x02,0x04,0x02,0x7f},
  {0x7f,0x02,0x0c,0x10,0x7f},
  {0x3e,0x41,0x41,0x41,0x3e},
  {0x7f,0x09,0x09,0x09,0x06},
  {0x3e,0x41,0x51,0x21,0x5e},
  {0x7f,0x09,0x19,0x29,0x46},
  {0x26,0x49,0x49,0x49,0x32},
  {0x01,0x01,0x7f,0x01,0x01},
  {0x3f,0x40,0x40,0x40,0x3f},
  {0x07,0x18,0x60,0x18,0x07},
  {0x1f,0x60,0x18,0x60,0x1f},
  {0x63,0x14,0x08,0x14,0x63},
  {0x03,0x04,0x78,0x04,0x03},
  {0x61,0x51,0x49,0x45,0x43},

  {0x7f,0x41,0x41,0xff},
  {0x03,0x04,0x08,0x10,0x60},
  {0x41,0x41,0x7f,0xff},
  {0x02,0x01,0x02,0xff},
  {0x80,0x80,0x80,0x80,0x80},
  {0x01,0x02,0xff},

  {0x38,0x44,0x44,0x44,0x7c}, /* lowercase letters */
  {0x7f,0x44,0x44,0x44,0x38},
  {0x38,0x44,0x44,0x44,0x44},
  {0x38,0x44,0x44,0x44,0x7f},
  {0x38,0x54,0x54,0x54,0x58},
  {0x04,0x7e,0x05,0x01,0xff},
  {0x98,0xa4,0xa4,0xa4,0x7c},
  {0x7f,0x04,0x04,0x04,0x78},
  {0x7d,0xff},
  {0x80,0x80,0x7d,0xff},
  {0x7f,0x10,0x28,0x44,0xff},
  {0x7f,0xff},
  {0x7c,0x04,0x7c,0x04,0x78},
  {0x7c,0x04,0x04,0x04,0x78},
  {0x38,0x44,0x44,0x44,0x38},
  {0xfc,0x24,0x24,0x24,0x18},
  {0x18,0x24,0x24,0x24,0xfc},
  {0x7c,0x08,0x04,0x04,0xff},
  {0x48,0x54,0x54,0x54,0x24},
  {0x04,0x3e,0x44,0x40,0xff},
  {0x7c,0x40,0x40,0x40,0x3c},
  {0x0c,0x30,0x40,0x30,0x0c},
  {0x3c,0x40,0x3c,0x40,0x3c},
  {0x44,0x28,0x10,0x28,0x44},
  {0x9c,0xa0,0xa0,0xa0,0x7c},
  {0x44,0x64,0x54,0x4c,0x44},

  {0x08,0x36,0x41,0xff},
  {0x77,0xff},
  {0x41,0x36,0x08,0xff},
  {0x02,0x01,0x02,0x01,0xff},
  {0xff},

  {0xfe,0x49,0x49,0x4e,0x30}, /* á */

  {0x7c,0x41,0x40,0x41,0x3c}, /* umlauts */

  {0x04,0x06,0x7f,0x06,0x04}, /* arrows */
  {0x20,0x60,0xfe,0x60,0x20},

  {0x38,0x45,0x44,0x45,0x7c}, /* umlauts */
  {0xff},{0xff},{0xff},{0xff},{0xff},{0xff},{0xff},{0xff},{0xff},
  {0x79,0x14,0x12,0x14,0x79},
  {0xff},{0xff},{0xff},{0xff},{0xff},
  {0x38,0x45,0x44,0x45,0x38},
  {0xff},{0xff},{0xff},{0xff},
  {0x3d,0x42,0x42,0x42,0x3d},
  {0x3d,0x40,0x40,0x40,0x3d},
};

#endif // MSN_DEF_H