aboutsummaryrefslogtreecommitdiff
path: root/engines/glk/level9/level9_main.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/glk/level9/level9_main.h')
-rw-r--r--engines/glk/level9/level9_main.h123
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