ScummVM API documentation
kernel.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 MADS_CORE_KERNEL_H
23 #define MADS_CORE_KERNEL_H
24 
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"
31 
32 namespace MADS {
33 
34 /* Some handy location macros */
35 
36 #define NOWHERE 1 /* Does not exist */
37 #define PLAYER 2 /* Player's posession */
38 #define HERE room_id /* In current room */
39 
40 #define KERNEL_INTERRUPT_STACK_SIZE 256 /* Size of interrupt stack */
41 
42 /* Colors to reserve at bottom of palette */
43 #define KERNEL_RESERVED_LOW_COLORS (g_engine->getGameID() == GType_RexNebular ? 18 : 26)
44 /* Colors to reserve at top of palette */
45 #define KERNEL_RESERVED_HIGH_COLORS 10
46 
47 #define KERNEL_MESSAGE_COLOR_BASE 16 /* 1st color to use for messages */
48 #define KERNEL_MESSAGE_COLOR_BASE_2 252 /* 1st color to use for second message */
49 /* 1st color to use for third message */
50 #define KERNEL_MESSAGE_COLOR_BASE_3 (g_engine->getGameID() == GType_RexNebular ? 250 : 254)
51 
52 #define KERNEL_OBJECT_COLOR_BASE 246 /* 1st color to use for rotating objects */
53 
54 #define KERNEL_SEGMENT_SYSTEM 0xff /* System related images */
55 #define KERNEL_SEGMENT_PLAYER 0xfe /* Player sprite images */
56 #define KERNEL_SEGMENT_ANIMATION_HIGH 0xfd /* Highest possible anim */
57 #define KERNEL_SEGMENT_ANIMATION 0x80 /* Animation based images */
58 
59 #define KERNEL_MAX_SEQUENCES 30 /* Max concurrent sequences */
60 
61 #define KERNEL_MAX_TRIGGERS 5 /* Max triggers for a sequence */
62 
63 #define KERNEL_TRIGGER_EXPIRE 0 /* Trigger when sequence expires */
64 #define KERNEL_TRIGGER_LOOP 1 /* Trigger when sequence loops around */
65 #define KERNEL_TRIGGER_SPRITE 2 /* Trigger when sequence reaches sprite */
66 
67 #define KERNEL_TRIGGER_PARSER 0 /* Sequence triggers parser code */
68 #define KERNEL_TRIGGER_DAEMON 1 /* Sequence triggers daemon code */
69 #define KERNEL_TRIGGER_PREPARSE 2 /* Sequence triggers preparser */
70 
71 #define KERNEL_DEFAULT 0 /* Default for parameter */
72 #define KERNEL_FIRST -1 /* Use first sprite in series */
73 #define KERNEL_LAST -2 /* Use last sprite in series */
74 
75 #define KERNEL_SPECIAL_TIMING 0xff /* Special sequence type for */
76  /* "timing only" triggers */
77 
78 #define KERNEL_MESSAGE_ANIM 0x100 /* Message attached to anim */
79 #define KERNEL_MESSAGE_ACTIVE 0x80 /* Flag if message is active */
80 #define KERNEL_MESSAGE_EXPIRED 0x40 /* Flag if message expired */
81 #define KERNEL_MESSAGE_CENTER 0x20 /* Message centered at coord */
82 #define KERNEL_MESSAGE_RIGHT 0x10 /* Message to right of coord */
83 #define KERNEL_MESSAGE_TELETYPE 0x08 /* Message teletypes in */
84 #define KERNEL_MESSAGE_ATTACHED 0x04 /* Message attached to sprite*/
85 #define KERNEL_MESSAGE_PLAYER 0x02 /* Message attached to player*/
86 #define KERNEL_MESSAGE_QUOTE 0x01 /* Message has trailing quote*/
87 
88 #define KERNEL_NONE -1 /* No file extension */
89 #define KERNEL_SS 1 /* Sprite series .SS */
90 #define KERNEL_AA 2 /* Animation .AA */
91 #define KERNEL_DAT 3 /* Room data .DAT */
92 #define KERNEL_HH 4 /* Hot spot list .HH */
93 #define KERNEL_ART 5 /* Room artwork .ART */
94 #define KERNEL_INT 6 /* Interface .INT */
95 #define KERNEL_TT 7 /* Tile .TT */
96 #define KERNEL_MM 8 /* Map .MM */
97 #define KERNEL_WW 9 /* Walk codes .WW? */
98 
99 #define KERNEL_MAX_MESSAGES 10 /* Maximum messages on screen at once */
100 #define KERNEL_MAX_MESSAGE_LEN 40 /* Maximum length of text messages */
101 #define KERNEL_MESSAGE_INTERVAL 3 /* Ticks between message updates */
102 
103 #define KERNEL_GAME_LOAD 0 /* Kernel load state */
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
109 
110 #define KERNEL_MOTION 0x01 /* Series is in motion */
111 #define KERNEL_MOTION_OFFSCREEN 0x02 /* Series expires if moves off screen */
112 
113 #define KERNEL_MAX_DYNAMIC 16 /* Maximum dynamic hotspots */
114 
115 #define KERNEL_DYNAMIC_MAX_SEGMENTS 10 /* Max segments triggered by dynamic hotspot */
116 #define KERNEL_DYNAMIC_NO_ANIM 0xff /* When no animation segment */
117 
118 #define KERNEL_STARTING_GAME -1 /* Previous room when starting fresh */
119 #define KERNEL_RESTORING_GAME -2 /* Previous room when restoring game */
120 
121 #define KERNEL_SERIES 1 /* Synchronize sprite sequence */
122 #define KERNEL_PLAYER 2 /* Synchronize PLAYER sprite series */
123 #define KERNEL_ANIM 3 /* Synchronize animation */
124 #define KERNEL_NOW 4 /* Synchronize with current time */
125 
126 #define KERNEL_MAX_RANDOM_MESSAGES 4 /* Max # of idle chatter msgs at once */
127 #define KERNEL_MAX_RANDOM_QUOTES 8 /* Max # of available idle chatter quotes */
128 #define KERNEL_RANDOM_MESSAGE_TRIGGER 240 /* Trigger base for idle chatter */
129 
130 #define KERNEL_MAX_CONVERSATION 16 /* Max items in a conversation */
131 
132 #define KERNEL_MAX_ANIMATIONS 10 /* Max number of animations */
133 
134 #define KERNEL_SCRATCH_SIZE 512 /* Size of game scratch area */
135 
136 #define KERNEL_HOME -32000 /* Sprite home location */
137 
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
149 
150 struct Sequence {
151  byte active_flag; /* Sequence is active */
152 
153  byte series_id; /* Series list handle */
154  byte mirror; /* Mirroring flag */
155 
156  int sprite; /* Current sprite of sequence */
157 
158  int start_sprite; /* Lowest sprite to be used */
159  int end_sprite; /* Highest sprite to be used */
160 
161  int loop_mode; /* Looping mode (AA_LINEAR/AA_PINGPONG) */
162  int loop_direction; /* Looping direction (1,-1) */
163 
164  byte depth; /* Sequence depth (0-15) */
165  byte scale; /* Sequence scale (0-100) */
166 
167  int dynamic_hotspot; /* Dynamic hotspot (if any) */
168 
169  byte auto_locating; /* Sequence runs at home location */
170  byte motion; /* Sequence moves */
171  int x, y; /* Specific location for sequence */
172  int delta_x, delta_y; /* Delta values (*100) */
173  int sign_x, sign_y; /* Delta signs */
174  int accum_x, accum_y; /* Delta accumulators (*100) */
175 
176  byte expire; /* Loops left till expiration */
177  byte expired; /* Expiration flag */
178 
179  byte num_triggers; /* Number of triggers */
180  byte trigger_type[KERNEL_MAX_TRIGGERS]; /* Trigger info */
181  int trigger_sprite[KERNEL_MAX_TRIGGERS];
182  byte trigger_code[KERNEL_MAX_TRIGGERS];
183 
184  byte trigger_dest; /* Type of code to activate for trigger */
185  int trigger_words[3]; /* vocabulary words for reactivating parser code */
186 
187  word ticks; /* Ticks between frames */
188  word interval_ticks; /* Ticks between loops */
189 
190  long base_time; /* Clock time of next scheduled update */
191 
192  Image last_image; /* Copy of last image entered */
193 };
194 
195 typedef Sequence *SequencePtr;
196 
197 
199  word flags; /* Message flags */
200  byte sequence_id; /* Attached sequence number */
201  byte segment_id; /* Animation segment id */
202  byte strobe_save; /* Saved strobe character */
203  byte strobe_save_2; /* Second saved strobe character */
204  int color; /* Message color */
205  int x, y; /* X and Y position */
206  int matte_message_handle; /* Handle in matte message list */
207  int strobe_marker; /* Marker in strobe message */
208  int strobe_rate; /* Number of ticks between strobes */
209  long strobe_time; /* Time for next strobe */
210  long update_time; /* Clock time of next update */
211  long expire_ticks; /* Number of ticks until expiration */
212  byte trigger_code; /* Trigger code, if any. */
213  byte trigger_dest; /* Type of code to activate for trigger */
214  int trigger_words[3]; /* Vocabulary words for reactivating parser code */
215  char *message; /* Pointer to message text */
216 };
217 
219 
220 
222  byte flags;
223  int auto_sequence;
224  int x, y, xs, ys;
225  int feet_x, feet_y;
226  byte facing;
227  int vocab_id;
228  int verb_id;
229  byte valid;
230  byte prep;
231  byte cursor;
232  byte syntax;
233  int8 auto_anim;
234  byte auto_segment[KERNEL_DYNAMIC_MAX_SEGMENTS];
235 };
236 
238 
239 
240 
241 struct Animation {
242  AnimPtr anim; /* Animation pointer */
243  int repeat; /* Animation should repeat continuously */
244  int cycled; /* Animation has cycled back to start */
245  int sprite_loaded; /* Current sprite loaded (for streamers)*/
246  byte *buffer[2]; /* Double buffering pointers (streamers)*/
247  int buffer_id; /* Double buffering index (streamers)*/
248  int messages; /* Messages currently active from anim */
249  int frame; /* Current frame */
250  int image; /* Animation image marker */
251  int doomed; /* Animation expires this round */
252 
253  int view_changes; /* Animation can change picture view */
254 
255  int trigger_code; /* Trigger code on expiration */
256  int trigger_mode; /* Trigger mode (parser/daemon/etc.) */
257  int trigger_words[3]; /* Trigger parser words */
258 
259  long next_clock; /* Next animation update */
260 
261  int dynamic_hotspot; /* Attached dynamic hotspot */
262 
263  int last_frame; /* Most recent frame viewed */
264 };
265 
266 
267 struct Kernel {
268  long clock; /* Current game timing clock */
269  byte fx; /* Special FX for this frame */
270 
271  byte video_mode; /* Video mode for game */
272  byte translating; /* Flag if translating to 16 colors */
273 
274  char sound_card; /* Game sound card character */
275 
276  byte force_restart; /* Forces restart of room if true */
277 
278  int trigger; /* Game trigger code, if any */
279  int trigger_setup_mode; /* Mode which sets up trigger */
280  int trigger_mode; /* Mode which activated trigger */
281 
282  byte cheating; /* Flag if cheating enabled. */
283 
284  int cursor_x[2]; /* Keyboard cursor locs. */
285  int cursor_y[2];
286 
287  byte paused; /* Flag if game paused at current frame */
288  byte cause_pause; /* Flag if game should pause this frame */
289  byte frame_by_frame; /* Flag if game should run frame/frame */
290 
291  byte mouse_cursor_point; /* Flag if mouse cursor loc should be displayed */
292  byte memory_tracking; /* Flag if memory amount should be displayed */
293 
294  byte teleported_in; /* Flag if player teleported to room */
295 
296  char interface[20]; /* Name of current interface animation */
297  char sound_driver[20]; /* Name of current sound driver */
298 
299  char *quotes; /* Quote list */
300 
301  /* char global_message[80]; */ /* Global message storage area */
302 
303  int activate_menu; /* Flag to activate a game menu */
304 
305  byte player_tracking; /* Flag if tracking player location */
306  byte disable_fastwalk; /* Flag if fastwalk disabled */
307 };
308 
309 
310 struct KernelGame {
311  byte going; /* Game is running OK */
312  byte scratch[KERNEL_SCRATCH_SIZE * 2]; /* Scratch variables for room */
313  int8 difficulty; /* Difficulty level */
314  int16 last_save; /* Most recent save slot # */
315 
316  void synchronize(Common::Serializer &s);
317 };
318 
319 #define kernel_init_dialog() inter_reset_dialog()
320 #define kernel_dialog(q) inter_add_dialog(quote_string(kernel.quotes, q), q)
321 
322 
323 extern RoomPtr room; /* Pointer to current room's data */
324 extern int room_id; /* Current room # */
325 extern int section_id; /* Current section # */
326 extern int room_variant; /* Current room attribute variant */
327 
328 extern int16 new_room; /* New room # to enter */
329 extern int16 new_section; /* New section # to enter */
330 
331 extern int16 previous_room; /* Last room # */
332 extern int16 previous_section; /* Last section # */
333 
334 extern int kernel_initial_variant; /* Initial variant to load */
335 
336 extern HotPtr room_spots; /* Pointer to hotspots for this room */
337 extern int room_num_spots; /* Number of hotspots for this room */
338 
339 extern int kernel_room_series_marker; /* Flag for room background series */
340 
341 extern int kernel_room_bound_dif;
342 extern int kernel_room_scale_dif;
343 
344 extern int kernel_allow_peel; /* Flag if peeling buffers allowed */
345 
346 extern int kernel_panning_speed;
347 extern int kernel_screen_fade;
348 
349 
350 extern Animation kernel_anim[KERNEL_MAX_ANIMATIONS];
351 extern bool stop_speech_on_run_animation;
352 
353 /* Old animation stuff
354 extern AnimPtr kernel_animation;
355 extern int kernel_repeat_animation;
356 
357 extern int kernel_animation_sprite_loaded;
358 extern int kernel_animation_buffer_id;
359 extern byte *kernel_animation_buffer[2];
360 
361 extern int kernel_animation_messages;
362 
363 extern int kernel_animation_cycled;
364 extern int kernel_animation_frame;
365 extern int kernel_animation_image;
366 extern int kernel_animation_doomed;
367 extern int kernel_animation_trigger_code;
368 extern int kernel_animation_trigger_mode;
369 extern int kernel_animation_trigger_words[3];
370 extern long kernel_animation_next_clock;
371 */
372 
373 extern ShadowList kernel_shadow_main;
374 extern ShadowList kernel_shadow_inter;
375 
376 extern int kernel_ok_to_fail_load;
377 
378 extern int kernel_mode;
379 
380 extern char kernel_cheating_password[16];
381 extern int kernel_cheating_allowed;
382 extern int kernel_cheating_forbidden;
383 
384 extern KernelDynamicHotSpot kernel_dynamic_hot[KERNEL_MAX_DYNAMIC];
385 extern int kernel_num_dynamic;
386 extern int kernel_dynamic_changed;
387 
388 extern SeriesPtr cursor; /* Mouse cursor series */
389 
390 extern int cursor_id;
391 extern int cursor_last;
392 
393 extern Kernel kernel;
394 extern KernelGame game; /* Kernel level game data */
395 extern KernelMessage kernel_message[KERNEL_MAX_MESSAGES];
396 extern FontPtr kernel_message_font;
397 extern int kernel_message_spacing;
398 
399 #define OMR 40 /* OUAF_MAX_ROOMS in global.mac */
400 extern int16 room_state[OMR];
401 
402 
403 extern int kernel_load_vocab();
404 
408 extern void kernel_game_shutdown();
409 
410 extern void kernel_force_refresh();
411 
415 extern int kernel_game_startup(int game_video_mode, int load_flag,
416  const char *release_version, const char *release_date);
417 
421 extern void kernel_section_shutdown();
422 
426 extern int kernel_section_startup(int new_section);
427 
431 extern void kernel_room_shutdown();
432 
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);
435 
439 extern void kernel_unload_all_series();
440 
444 extern int kernel_load_series(const char *name, int load_flags);
445 
446 /*
447  * kernel_flip_hotspot()
448  * Toggles an interface hotspot (referenced by its vocabulary word)
449  * on or off. Hotspots that are off do not interact with the mouse
450  * cursor.
451  *
452  * @param vocab_code
453  * @param active
454  */
455 extern void kernel_flip_hotspot(int vocab_code, int active);
456 
463 extern void kernel_flip_hotspot_loc(int vocab_code, int active, int x, int y);
464 
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);
509 
513 extern int kernel_run_animation_disp(char thing, int num, int trigger_code);
514 
518 extern int kernel_run_animation_talk(char thing, int num, int trigger_code);
519 
523 extern int kernel_run_animation_write(int trigger_code);
524 
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();
567 
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);
580 
584 extern int kernel_check_random();
585 
591 extern void kernel_random_message_server();
592 
598 extern int kernel_generate_random_message(int chance_major, int chance_minor);
599 
600 extern void kernel_random_purge();
601 
606 extern void kernel_set_interface_mode(int mode);
607 
608 extern void kernel_room_scale(int front_y, int front_scale, int back_y, int back_scale);
609 
613 extern void kernel_background_shutdown();
614 extern int kernel_background_startup(int new_room, int initial_variant);
615 
616 extern void init_kernel();
617 
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);
620 
621 } // namespace MADS
622 
623 #endif
Definition: font.h:33
Definition: kernel.h:310
Definition: anim.h:399
Definition: serializer.h:80
Definition: kernel.h:221
Definition: sprite.h:244
Definition: kernel.h:150
Definition: room.h:94
Definition: room.h:210
Definition: kernel.h:241
Definition: kernel.h:198
Definition: anim_timer.h:27
Definition: movie_decoder.h:32
Definition: color.h:125
Definition: kernel.h:267