diff options
Diffstat (limited to 'engines/glk/level9/level9_main.h')
-rw-r--r-- | engines/glk/level9/level9_main.h | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/engines/glk/level9/level9_main.h b/engines/glk/level9/level9_main.h new file mode 100644 index 0000000000..ab30242c07 --- /dev/null +++ b/engines/glk/level9/level9_main.h @@ -0,0 +1,123 @@ +/* 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 GLK_LEVEL9_LEVEL9_MAIN +#define GLK_LEVEL9_LEVEL9_MAIN + +#include "common/scummsys.h" +#include "common/endian.h" +#include "common/stream.h" + +namespace Glk { +namespace Level9 { + +typedef byte L9BYTE; +typedef uint16 L9UINT16; +typedef uint32 L9UINT32; +typedef bool L9BOOL; + +#define FALSE false +#define TRUE true + +#define LISTAREASIZE 0x800 +#define STACKSIZE 1024 +#define V1FILESIZE 0x600 + +#ifndef MAX_PATH +#define MAX_PATH 256 +#endif + +struct GameState { + L9UINT32 Id; + L9UINT16 codeptr, stackptr, listsize, stacksize, filenamesize, checksum; + L9UINT16 vartable[256]; + L9BYTE listarea[LISTAREASIZE]; + L9UINT16 stack[STACKSIZE]; + char filename[MAX_PATH]; +}; + +enum BitmapType { + NO_BITMAPS, + AMIGA_BITMAPS, + PC1_BITMAPS, + PC2_BITMAPS, + C64_BITMAPS, + BBC_BITMAPS, + CPC_BITMAPS, + MAC_BITMAPS, + ST1_BITMAPS, + ST2_BITMAPS +}; + +struct Colour { + L9BYTE red, green, blue; +}; + +struct Bitmap { + L9UINT16 width, height; + L9BYTE *bitmap; + Colour palette[32]; + L9UINT16 npalette; +}; + +#define MAX_BITMAP_WIDTH 512 +#define MAX_BITMAP_HEIGHT 218 + +#define L9WORD(x) READ_LE_UINT16(x) +#define L9SETWORD(x,val) WRITE_LE_UINT16(x, val) +#define L9SETDWORD(x,val) WRITE_LE_UINT32(x, val) + +/* routines provided by os dependent code */ +void os_printchar(char c); +L9BOOL os_input(char *ibuff, int size); +char os_readchar(int millis); +L9BOOL os_stoplist(void); +void os_flush(void); +L9BOOL os_save_file(L9BYTE *Ptr, int Bytes); +L9BOOL os_load_file(L9BYTE *Ptr, int *Bytes, int Max); +L9BOOL os_get_game_file(char *NewName, int Size); +void os_set_filenumber(char *NewName, int Size, int n); +void os_graphics(int mode); +void os_cleargraphics(void); +void os_setcolour(int colour, int index); +void os_drawline(int x1, int y1, int x2, int y2, int colour1, int colour2); +void os_fill(int x, int y, int colour1, int colour2); +void os_show_bitmap(int pic, int x, int y); +Common::SeekableReadStream *os_open_script_file(void); + +/* routines provided by level9 interpreter */ +L9BOOL LoadGame(const char *filename, char *picname); +L9BOOL RunGame(void); +void StopGame(void); +void RestoreGame(char *filename); +void FreeMemory(void); +void GetPictureSize(int *width, int *height); +L9BOOL RunGraphics(void); + +/* bitmap routines provided by level9 interpreter */ +BitmapType DetectBitmaps(char *dir); +Bitmap *DecodeBitmap(char *dir, BitmapType type, int num, int x, int y); + +} // End of namespace Level9 +} // End of namespace Glk + +#endif |