22 #ifndef MADS_CORE_KERNEL_H 23 #define MADS_CORE_KERNEL_H 25 #include "common/serializer.h" 26 #include "common/textconsole.h" 27 #include "mads/core/general.h" 28 #include "mads/core/anim.h" 29 #include "mads/core/color.h" 30 #include "mads/core/room.h" 40 #define KERNEL_INTERRUPT_STACK_SIZE 256 43 #define KERNEL_RESERVED_LOW_COLORS (g_engine->getGameID() == GType_RexNebular ? 18 : 26) 45 #define KERNEL_RESERVED_HIGH_COLORS 10 47 #define KERNEL_MESSAGE_COLOR_BASE 16 48 #define KERNEL_MESSAGE_COLOR_BASE_2 252 50 #define KERNEL_MESSAGE_COLOR_BASE_3 (g_engine->getGameID() == GType_RexNebular ? 250 : 254) 52 #define KERNEL_OBJECT_COLOR_BASE 246 54 #define KERNEL_SEGMENT_SYSTEM 0xff 55 #define KERNEL_SEGMENT_PLAYER 0xfe 56 #define KERNEL_SEGMENT_ANIMATION_HIGH 0xfd 57 #define KERNEL_SEGMENT_ANIMATION 0x80 59 #define KERNEL_MAX_SEQUENCES 30 61 #define KERNEL_MAX_TRIGGERS 5 63 #define KERNEL_TRIGGER_EXPIRE 0 64 #define KERNEL_TRIGGER_LOOP 1 65 #define KERNEL_TRIGGER_SPRITE 2 67 #define KERNEL_TRIGGER_PARSER 0 68 #define KERNEL_TRIGGER_DAEMON 1 69 #define KERNEL_TRIGGER_PREPARSE 2 71 #define KERNEL_DEFAULT 0 72 #define KERNEL_FIRST -1 73 #define KERNEL_LAST -2 75 #define KERNEL_SPECIAL_TIMING 0xff 78 #define KERNEL_MESSAGE_ANIM 0x100 79 #define KERNEL_MESSAGE_ACTIVE 0x80 80 #define KERNEL_MESSAGE_EXPIRED 0x40 81 #define KERNEL_MESSAGE_CENTER 0x20 82 #define KERNEL_MESSAGE_RIGHT 0x10 83 #define KERNEL_MESSAGE_TELETYPE 0x08 84 #define KERNEL_MESSAGE_ATTACHED 0x04 85 #define KERNEL_MESSAGE_PLAYER 0x02 86 #define KERNEL_MESSAGE_QUOTE 0x01 88 #define KERNEL_NONE -1 99 #define KERNEL_MAX_MESSAGES 10 100 #define KERNEL_MAX_MESSAGE_LEN 40 101 #define KERNEL_MESSAGE_INTERVAL 3 103 #define KERNEL_GAME_LOAD 0 104 #define KERNEL_SECTION_PRELOAD 1 105 #define KERNEL_SECTION_INIT 2 106 #define KERNEL_ROOM_PRELOAD 3 107 #define KERNEL_ROOM_INIT 4 108 #define KERNEL_ACTIVE_CODE 5 110 #define KERNEL_MOTION 0x01 111 #define KERNEL_MOTION_OFFSCREEN 0x02 113 #define KERNEL_MAX_DYNAMIC 16 115 #define KERNEL_DYNAMIC_MAX_SEGMENTS 10 116 #define KERNEL_DYNAMIC_NO_ANIM 0xff 118 #define KERNEL_STARTING_GAME -1 119 #define KERNEL_RESTORING_GAME -2 121 #define KERNEL_SERIES 1 122 #define KERNEL_PLAYER 2 123 #define KERNEL_ANIM 3 126 #define KERNEL_MAX_RANDOM_MESSAGES 4 127 #define KERNEL_MAX_RANDOM_QUOTES 8 128 #define KERNEL_RANDOM_MESSAGE_TRIGGER 240 130 #define KERNEL_MAX_CONVERSATION 16 132 #define KERNEL_MAX_ANIMATIONS 10 134 #define KERNEL_SCRATCH_SIZE 512 136 #define KERNEL_HOME -32000 138 #define KERNEL_STARTUP_POPUP 0x8000 139 #define KERNEL_STARTUP_FONT 0x4000 140 #define KERNEL_STARTUP_INTERRUPT 0x2000 141 #define KERNEL_STARTUP_DEMO 0x1000 142 #define KERNEL_STARTUP_OBJECTS 0x0800 143 #define KERNEL_STARTUP_PLAYER 0x0400 144 #define KERNEL_STARTUP_CURSOR 0x0200 145 #define KERNEL_STARTUP_CURSOR_SHOW 0x0100 146 #define KERNEL_STARTUP_VOCAB 0x0080 147 #define KERNEL_STARTUP_INTERFACE 0x0040 148 #define KERNEL_STARTUP_ALL_FLAGS 0xffc0 172 int delta_x, delta_y;
174 int accum_x, accum_y;
180 byte trigger_type[KERNEL_MAX_TRIGGERS];
181 int trigger_sprite[KERNEL_MAX_TRIGGERS];
182 byte trigger_code[KERNEL_MAX_TRIGGERS];
185 int trigger_words[3];
206 int matte_message_handle;
214 int trigger_words[3];
234 byte auto_segment[KERNEL_DYNAMIC_MAX_SEGMENTS];
257 int trigger_words[3];
279 int trigger_setup_mode;
291 byte mouse_cursor_point;
292 byte memory_tracking;
297 char sound_driver[20];
305 byte player_tracking;
306 byte disable_fastwalk;
312 byte scratch[KERNEL_SCRATCH_SIZE * 2];
319 #define kernel_init_dialog() inter_reset_dialog() 320 #define kernel_dialog(q) inter_add_dialog(quote_string(kernel.quotes, q), q) 325 extern int section_id;
326 extern int room_variant;
328 extern int16 new_room;
329 extern int16 new_section;
331 extern int16 previous_room;
332 extern int16 previous_section;
334 extern int kernel_initial_variant;
337 extern int room_num_spots;
339 extern int kernel_room_series_marker;
341 extern int kernel_room_bound_dif;
342 extern int kernel_room_scale_dif;
344 extern int kernel_allow_peel;
346 extern int kernel_panning_speed;
347 extern int kernel_screen_fade;
350 extern Animation kernel_anim[KERNEL_MAX_ANIMATIONS];
351 extern bool stop_speech_on_run_animation;
376 extern int kernel_ok_to_fail_load;
378 extern int kernel_mode;
380 extern char kernel_cheating_password[16];
381 extern int kernel_cheating_allowed;
382 extern int kernel_cheating_forbidden;
385 extern int kernel_num_dynamic;
386 extern int kernel_dynamic_changed;
390 extern int cursor_id;
391 extern int cursor_last;
396 extern FontPtr kernel_message_font;
397 extern int kernel_message_spacing;
400 extern int16 room_state[OMR];
403 extern int kernel_load_vocab();
408 extern void kernel_game_shutdown();
410 extern void kernel_force_refresh();
415 extern int kernel_game_startup(
int game_video_mode,
int load_flag,
416 const char *release_version,
const char *release_date);
421 extern void kernel_section_shutdown();
426 extern int kernel_section_startup(
int new_section);
431 extern void kernel_room_shutdown();
433 extern int kernel_room_startup(
int new_room,
int initial_variant = 0,
434 const char *interface =
nullptr,
bool new_palette =
true,
bool barebones =
false);
439 extern void kernel_unload_all_series();
444 extern int kernel_load_series(
const char *name,
int load_flags);
455 extern void kernel_flip_hotspot(
int vocab_code,
int active);
463 extern void kernel_flip_hotspot_loc(
int vocab_code,
int active,
int x,
int y);
465 extern Sequence sequence_list[KERNEL_MAX_SEQUENCES];
466 extern void kernel_seq_init();
467 extern void kernel_seq_correction(
long old_clock,
long new_clock);
468 extern void kernel_seq_timeout(
int old_sequence_id,
int new_sequence_id);
469 extern int kernel_seq_add(
int series_id,
int mirror,
int initial_sprite,
470 int low_sprite,
int high_sprite,
int loop_mode,
int loop_direction,
471 int depth,
int scale,
int auto_locating,
int x,
int y,
472 word ticks, word interval_ticks, word start_ticks,
int expire);
473 extern int kernel_seq_forward(
int series_id,
int mirror,
474 word ticks, word interval_ticks, word start_ticks,
int expire);
475 extern int kernel_seq_forward_scroll(
int series_id,
int mirror,
476 word ticks, word interval_ticks, word start_ticks,
int expire);
477 extern int kernel_seq_pingpong(
int series_id,
int mirror,
478 word ticks, word interval_ticks, word start_ticks,
int expire);
479 extern int kernel_seq_pingpong_scroll(
int series_id,
int mirror,
480 word ticks, word interval_ticks, word start_ticks,
int expire);
481 extern int kernel_seq_backward(
int series_id,
int mirror,
482 word ticks, word interval_ticks, word start_ticks,
int expire);
483 extern int kernel_seq_backward_scroll(
int series_id,
int mirror,
484 word ticks, word interval_ticks, word start_ticks,
int expire);
485 extern int kernel_seq_stamp(
int series_id,
int mirror,
int sprite);
486 extern int kernel_seq_stamp_scroll(
int series_id,
int mirror,
int sprite);
487 extern void kernel_synch(
int slave_type,
int slave_id,
488 int master_type,
int master_id);
489 extern void kernel_player_expire(
int sequence_id);
490 extern void kernel_seq_depth(
int sequence_id,
int depth);
491 extern void kernel_seq_scale(
int sequence_id,
int scale);
492 extern void kernel_seq_loc(
int sequence_id,
int x,
int y);
493 extern void kernel_seq_range(
int sequence_id,
int first,
int last);
494 void kernel_seq_motion(
int sequence_id,
int flags,
495 int delta_x_times_100,
int delta_y_times_100);
496 extern int kernel_seq_trigger(
int sequence_id,
int trigger_type,
497 int trigger_sprite,
int trigger_code);
498 extern int kernel_timing_trigger(
int ticks,
int trigger_code);
499 extern int kernel_seq_purge(
int sequence_id);
500 extern int kernel_seq_find_by_trigger(
int trigger);
501 extern void kernel_seq_full_update();
502 extern void kernel_draw_to_background(
int series_id,
int sprite_id,
503 int x,
int y,
int depth,
int scale);
504 extern void kernel_seq_delete(
int sequence_id);
505 extern void kernel_seq_update_all();
506 extern void kernel_seq_player(
int sequence_id,
int synch_me);
507 extern void kernel_animation_init();
508 extern int kernel_run_animation(
const char *name,
int trigger_code);
513 extern int kernel_run_animation_disp(
char thing,
int num,
int trigger_code);
518 extern int kernel_run_animation_talk(
char thing,
int num,
int trigger_code);
523 extern int kernel_run_animation_write(
int trigger_code);
528 extern int kernel_run_animation_point(
int num,
int trigger_code);
529 extern void kernel_reset_animation(
int handle,
int frame);
530 extern void kernel_abort_animation(
int handle);
531 extern void kernel_abort_all_animations();
532 extern void kernel_doom_all_animations();
533 extern void kernel_abort_doomed_animations();
534 extern void kernel_process_all_animations();
535 extern void kernel_message_init();
536 extern int kernel_message_add(
char *text,
int x,
int y,
int color,
537 long time_on_screen,
int trigger_code,
int flags);
538 extern void kernel_message_teletype(
int id,
int rate,
int quote);
539 extern void kernel_message_attach(
int id,
int sequence);
540 extern void kernel_message_delete(
int id);
541 extern void kernel_message_purge();
542 extern void kernel_message_anim(
int id,
int anim,
int segment);
543 extern int kernel_message_player(
int quote_id,
long delay,
int trigger);
544 extern void kernel_message_update_all();
545 extern void kernel_message_correction(
long old_clock,
long new_clock);
546 extern int kernel_add_dynamic(
int vocab_id,
int verb_id, byte syntax,
547 int auto_sequence,
int x,
int y,
int xs,
int ys);
548 extern int kernel_dynamic_walk(
int id,
int feet_x,
int feet_y,
int facing);
549 extern void kernel_dynamic_anim(
int id,
int anim_id,
int segment);
550 extern int kernel_dynamic_cursor(
int id,
int cursor);
551 extern void kernel_delete_dynamic(
int id);
552 extern void kernel_purge_dynamic();
553 extern void kernel_init_dynamic();
554 extern int kernel_dynamic_consecutive(
int id);
555 extern void kernel_refresh_dynamic();
556 extern char *kernel_full_name(
int my_room,
char type,
int num,
const char *text,
int ext);
557 extern char *kernel_name(
char type,
int num);
558 extern char *kernel_interface_name(
int num);
559 extern void kernel_unload_sound_driver();
560 extern int kernel_load_sound_driver(
const char *name,
char sound_card_,
561 int sound_board_address_,
int sound_board_type_,
int sound_board_irq_);
562 extern void kernel_load_variant(
int variant);
563 extern void kernel_new_palette();
564 extern void kernel_dump_quotes();
565 extern void kernel_dump_all();
566 extern void kernel_dump_walker_only();
573 extern void kernel_random_messages_init(
int max_messages_at_once,
574 int min_x,
int max_x,
int min_y,
int max_y,
575 int min_y_spacing,
int teletype_rate,
int color,
576 int duration,
int quote_id, ...);
577 extern void kernel_random_messages_vinit(
int max_messages_at_once,
578 int min_x,
int max_x,
int min_y,
int max_y,
int min_y_spacing,
579 int teletype_rate,
int color,
int duration,
int quote_id, va_list marker);
584 extern int kernel_check_random();
591 extern void kernel_random_message_server();
598 extern int kernel_generate_random_message(
int chance_major,
int chance_minor);
600 extern void kernel_random_purge();
606 extern void kernel_set_interface_mode(
int mode);
608 extern void kernel_room_scale(
int front_y,
int front_scale,
int back_y,
int back_scale);
613 extern void kernel_background_shutdown();
614 extern int kernel_background_startup(
int new_room,
int initial_variant);
616 extern void init_kernel();
618 extern void kernel_random_frame(
int handle, int16 *frame,
int mode);
619 extern void kernel_translate_anim(
int handle,
int delta_x,
int delta_y,
int delta_scale);
Definition: serializer.h:80
Definition: anim_timer.h:27
Definition: movie_decoder.h:32