diff options
Diffstat (limited to 'engines/glk/magnetic/defs.h')
-rw-r--r-- | engines/glk/magnetic/defs.h | 469 |
1 files changed, 0 insertions, 469 deletions
diff --git a/engines/glk/magnetic/defs.h b/engines/glk/magnetic/defs.h deleted file mode 100644 index fc7233f59e..0000000000 --- a/engines/glk/magnetic/defs.h +++ /dev/null @@ -1,469 +0,0 @@ -/* 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 MAGNETIC_DEFS_H -#define MAGNETIC_DEFS_H - -#include "common/scummsys.h" -#include "glk/magnetic/magnetic_types.h" - -namespace Glk { -namespace Magnetic { - -/*****************************************************************************\ -* Type definitions for Magnetic -* -* Note: When running into trouble please ensure that these types have the -* correct number of bits on your system !!! -\*****************************************************************************/ - -typedef byte type8; -typedef int8 type8s; -typedef uint16 type16; -typedef int16 type16s; -typedef uint32 type32; -typedef int32 type32s; - -/****************************************************************************\ -* Compile time switches -\****************************************************************************/ - -/* Switch: SAVEMEM - Purpose: Magnetic loads a complete graphics file into memory by default. - Setting this switch you tell Magnetic to load images on request - (saving memory, wasting load time) - -#define SAVEMEM -*/ - -/* Switch: NO_ANIMATION - Purpose: By default Magnetic plays animated graphics. - Setting this switch to ignore animations, Magnetic shows the - static parts of the images anyway! - -#define NO_ANIMATION -*/ - -/****************************************************************************\ -* Abstract functions -* -* Note: These functions MUST be implemented by each port of Magnetic! -\****************************************************************************/ - -/****************************************************************************\ -* Function: ms_load_file -* -* Purpose: Load a save game file and restore game -* -* Parameters: type8s* name zero terminated string of filename -* typed by player -* type8* ptr pointer to data to save -* type16 size number of bytes to save -* -* Result: 0 is successful -* -* Note: You probably want to put in a file requester! -\****************************************************************************/ - -extern type8 ms_load_file(const char *name, type8 *ptr, type16 size); - -/****************************************************************************\ -* Function: ms_save_file -* -* Purpose: Save the current game to file -* -* Parameters: type8s* name zero terminated string of filename -* typed by player -* type8* ptr pointer to data to save -* type16 size number of bytes to save -* -* Result: 0 is successful -* -* Note: You probably want to put in a file requester! -\****************************************************************************/ - -extern type8 ms_save_file(const char *name, type8 *ptr, type16 size); - -/****************************************************************************\ -* Function: ms_statuschar -* -* Purpose: Output a single character to the status bar -* -* Parameters: type8 c character to be printed -* -* Note: All characters are printed as provided except for: -* 0x0A resets the x position to zero -* 0x09 moves the cursor to the right half of the bar, ie 'width-11' -\****************************************************************************/ - -extern void ms_statuschar(type8 c); - -/****************************************************************************\ -* Function: ms_putchar -* -* Purpose: Output a single character to the game/text windows -* -* Parameters: type8 c character to be printed -* -* Note: It is highly recommended to buffer the output, see also ms_flush() -\****************************************************************************/ - -extern void ms_putchar(type8 c); - -/****************************************************************************\ -* Function: ms_flush -* -* Purpose: Flush the output buffer (if applicable) -* -* Note: see also ms_putchar -\****************************************************************************/ - -extern void ms_flush(void); - -/****************************************************************************\ -* Function: ms_getchar -* -* Purpose: Read user input, buffered -* -* Parameters: type8 trans if not 0, translate any #undo -* input to a return code of 0 -* -* Return: One character -* -* Note: The first time it is called a string should be read and then given -* back one byte at a time (ie. one for each call) until a '\n' is -* reached (which will be the last byte sent back before it all restarts) -* Returning a zero means 'undo' and the rest of the line must then be -* ignored. -* Returning 1 means that the opcode should return immediately. This is -* needed to prevent possible corruption of the game's memory in -* interpreters which allow a new game to be loaded without restarting. -\****************************************************************************/ - -extern type8 ms_getchar(type8 trans); - -/****************************************************************************\ -* Function: ms_showpic -* -* Purpose: Displays or hides a picture -* -* Parameter: type32 c number of image to be displayed -* type8 mode mode == 0 means gfx off, -* mode == 1 gfx on thumbnails, -* mode == 2 gfx on normal. -* -* Note: For retrieving the raw data of a picture call ms_extract (see below) -\****************************************************************************/ - -extern void ms_showpic(type32 c, type8 mode); - -/****************************************************************************\ -* Function: ms_fatal -* -* Purpose: Handle fatal interpreter error -* -* Parameter: type8s* txt message -\****************************************************************************/ - -extern void ms_fatal(const char *txt); - -/****************************************************************************\ -* Magnetic core functions -* -* Note: These functions SHOULD be used somewhere in your port! -\****************************************************************************/ - -/****************************************************************************\ -* Function: ms_extract -* -* Purpose: Extract a picture and return a pointer to a raw bitmap -* -* Parameters: type32 c number of the picture -* type16* w width of picture -* type16* h height pf picture -* type16* pal array for the palette (16 colours) -* type8* is_anim 1 if animated picture, otherwise 0 -* OR null (!) -* -* Return: Pointer to bitmap data if successful, otherwise null (also if gfx -* are disabled!) -* -* Note: All pictures have 16 colours and the palette entries use 3-bit RGB -* encoded as 00000RRR0GGG0BBB, that is, bits 0-2 give the blue -* component, bits 4-6 the green and bits 8-10 the red. The bitmap is -* one byte per pixel, with each byte giving the pixel's index into the -* palette. The data is given starting from the upper left corner. The -* image buffer is reused when the next picture is requested, so take -* care! More information on animated pictures are below! -\****************************************************************************/ - -extern type8 *ms_extract(type32 c, type16 *w, type16 *h, type16 *pal, type8 *is_anim); - -/****************************************************************************\ -* Magnetic animated pictures support -* -* Note: Some of the pictures for Wonderland and the Collection Volume 1 games -* are animations. To detect these, pass a pointer to a type8 as the is_anim -* argument to ms_extract(). -* -* There are two types of animated images, however almost all images are type1. -* A type1 image consists of four main elements: -* 1) A static picture which is loaded straight at the beginning -* 2) A set of frames with a mask. These frames are just "small pictures", which -* are coded like the normal static pictures. The image mask determines -* how the frame is removed after it has been displayed. A mask is exactly -* 1/8 the size of the image and holds 1 bit per pixel, saying "remove pixel" -* or leave pixel set when frame gets removed. It might be a good idea to check -* your system documentation for masking operations as your system might be -* able to use this mask data directly. -* 3) Positioning tables. These hold animation sequences consisting of commands -* like "Draw frame 12 at (123,456)" -* 4) A playback script, which determines how to use the positioning tables. -* These scripts are handled inside Magnetic, so no need to worry about. -* However, details can be found in the ms_animate() function. -* -* A type2 image is like a type1 image, but it does not have a static -* picture, nor does it have frame masking. It just consists of frames. -* -* How to support animations? -* After getting is_anim == 1 you should call ms_animate() immediately, and at -* regular intervals until ms_animate() returns 0. An appropriate interval -* between calls is about 100 milliseconds. -* Each call to ms_animate() will fill in the arguments with the address -* and size of an array of ms_position structures (see below), each of -* which holds an an animation frame number and x and y co-ordinates. To -* display the animation, decode all the animation frames (discussed below) -* from a single call to ms_animate() and display each one over the main picture. -* If your port does not support animations, define NO_ANIMATION. -\****************************************************************************/ - -/****************************************************************************\ -* Function: ms_animate -* -* Purpose: Generate the next frame of an animation -* -* Parameters: ms_position** positions array of ms_position structs -* type16* count size of array -* -* Return: 1 if animation continues, 0 if animation is finfished -* -* Note: The positions array holds size ms_positions structures. BEFORE calling -* ms_animate again, retrieve the frames for all the ms_positions -* structures with ms_get_anim_frame and display each one on the static -* main picture. -\****************************************************************************/ - -extern type8 ms_animate(struct ms_position **positions, type16 *count); - -/****************************************************************************\ -* Function: ms_get_anim_frame -* -* Purpose: Extracts the bitmap data of a single animation frame -* -* Parameters: type16s number number of frame (see ms_position struct) -* type16* width width of frame -* type16* height height of frame -* type8** mask pointer to masking data, might be NULL -* -* Return: 1 if animation continues, 0 if animation is finfished -* -* Note: The format of the frame is identical to the main pictures' returned by -* ms_extract. The mask has one-bit-per-pixel, determing how to handle the -* removal of the frame. -\****************************************************************************/ - -extern type8 *ms_get_anim_frame(type16s number, type16 *width, type16 *height, type8 **mask); - -/****************************************************************************\ -* Function: ms_anim_is_repeating -* -* Purpose: Detects whether an animation is repeating -* -* Return: True if repeating -\****************************************************************************/ - -extern type8 ms_anim_is_repeating(void); - -/****************************************************************************\ -* Magnetic Windows hint support -* -* The windowed Magnetic Scolls games included online hints. To add support -* for the hints to your magnetic port, you should implement the ms_showhints -* function. It retrieves a pointer to an array of ms_hint structs -* The root element is always hints[0]. The elcount determines the number -* of items in this topic. You probably want to display those in some kind -* of list interface. The content pointer points to the actual description of -* the items, separated by '\0' terminators. The nodetype is 1 if the items are -* "folders" and 2 if the items are hints. Hints should be displayed one after -* another. For "folder" items, the links array holds the index of the hint in -* the array which is to be displayed on selection. One hint block has exactly -* one type. The parent element determines the "back" target. -\****************************************************************************/ - -/****************************************************************************\ -* Function: ms_showhints -* Purpose: Show the player a hint -* -* Parameters: ms_hint* hints pointer to array of ms_hint structs -* -* Return: 0 on error, 1 on success -\****************************************************************************/ - -extern type8 ms_showhints(struct ms_hint *hints); - -/****************************************************************************\ -* Magnetic Windows sound support -* -* Wonderland contains music scores that are played when entering specific -* locations in the game. The music data are actually MIDI events and can be -* played through normal MIDI devices. The original game plays the MIDI score -* until the end, even if the location is changed while playing. The playback -* tempo is not included with the MIDI data. The ms_sndextract function -* returns a recommended tempo, however depending on the MIDI implementation -* and operating system, you might need to adapt it. -\****************************************************************************/ - -/****************************************************************************\ -* Function: ms_playmusic -* -* Purpose: Plays (or stops playing) a MIDI music score. -* -* Parameter: type8 * midi_data the MIDI data to play -* type32 length the length of the MIDI data -* type16 tempo the suggested tempo for playing -* -* Note: If midi_data is NULL, all that should happen is that any currently -* playing music is stopped. -* Note: The data returned contain a complete MIDI file header, so if pure -* memory processing is not applicable you can write the data to a -* temporary file and use external players or libraries. -\****************************************************************************/ - -extern void ms_playmusic(type8 *midi_data, type32 length, type16 tempo); - -/****************************************************************************\ -* Function: ms_init -* -* Purpose: Loads the interpreter with a game -* -* Parameters: type8s* name filename of story file -* type8s* gfxname filename of graphics file (optional) -* type8s* hntname filename of hints file (optional) -* type8s* sndname filename of music file (optional) -* -* Return: 0 = failure -* 1 = success (without graphics or graphics failed) -* 2 = success (with graphics) -* -* Note: You must call this function before starting the ms_rungame loop -\****************************************************************************/ - -extern type8 ms_init(const char *name, const char *gfxname, const char *hntname, const char *sndname); - -/****************************************************************************\ -* Function: ms_rungame -* -* Purpose: Executes an interpreter instruction -* -* Return: True if successful -* -* Note: You must call this function in a loop like this: -* while (running) {running=ms_rungame();} -\****************************************************************************/ - -extern type8 ms_rungame(void); - -/****************************************************************************\ -* Function: ms_freemen -* -* Purpose: Frees all allocated ressources -\****************************************************************************/ - -extern void ms_freemem(void); - -/****************************************************************************\ -* Function: ms_seed -* -* Purpose: Initializes the interpreter's random number generator with -* the given seed -* -* Parameter: type32 seed seed -\****************************************************************************/ - -extern void ms_seed(type32 seed); - -/****************************************************************************\ -* Function: ms_is_running -* -* Purpose: Detects if game is running -* -* Return: True, if game is currently running -\****************************************************************************/ - -extern type8 ms_is_running(void); - -/****************************************************************************\ -* Function: ms_is_magwin -* -* Purpose: Detects Magnetic Windows games (Wonderland, Collection) -* -* Return: True, if Magnetic Windows game -\****************************************************************************/ - -extern type8 ms_is_magwin(void); - -/****************************************************************************\ -* Function: ms_stop -* -* Purpose: Stops further processing of opcodes -\****************************************************************************/ - -extern void ms_stop(void); - -/****************************************************************************\ -* Function: ms_status -* -* Purpose: Dumps interperetr state to stderr, ie. registers -\****************************************************************************/ - -extern void ms_status(void); - -/****************************************************************************\ -* Function: ms_count -* -* Purpose: Returns the number of executed intructions -* -* Return: Instruction count -\****************************************************************************/ - -extern type32 ms_count(void); - -extern void write(const char *fmt, ...); - -extern void writeChar(char c); - -extern void gms_main(); - -} // End of namespace Magnetic -} // End of namespace Glk - -#endif |