/* MAKI & MAG Library */

#ifndef NULL
#define NULL	0
#endif

#define FALSE	0
#define TRUE	-1
#define EOC		0x1a		/* End Of Comment */
#define CR		0x0d
#define LF		0x0a
#define BufSize	256

#define PLANE20	0x001c
#define PLANE21	0x0104
#define PLANE10	0x010c

#define PALNO	0xfd90
#define PALB	0xfd92
#define PALR	0xfd94
#define PALG	0xfd96

#define LINE200	0x01			/* 200ラインフラグ */
#define COL8	0x02			/* 8色フラグ */
#define DIGITAL	0x04			/* デジタルフラグ */
#define COL256	0x80			/* 256色フラグ */

#define DOS		0x40			/* DOS互換画面フラグ */
#define VRAM	0x20			/* 強制ＶＲＡＭ展開フラグ */

#define Other	0x00			/* 機種コードですよん */
#define MSX		0x03
#define PC88	0x88
#define X68K	0x68
#define Eseq	0xff

#define Scroll_UP		1
#define Scroll_DOWN		2
#define Scroll_RIGHT	3
#define Scroll_LEFT		4
#define Zoom_DOWN		5
#define Zoom_UP			6

typedef union {
	struct { unsigned char h,l; } m;
	unsigned short	s;
	} WORD;

typedef struct {
	char	header;			/* ヘッダの先頭 */
	char	machine;		/* 機種コード */
	char	rflg;			/* 機種依存フラグ */
	char	screen;			/* スクリーンモード */
	short	lx;				/* 表示開始位置Ｘ */
	short	ly;				/* 表示開始位置Ｙ */
	short	rx;				/* 表示終了位置Ｘ */
	short	ry;				/* 表示終了位置Ｙ */
	int		offa;			/* フラグＡのオフセット */
	int		offb;			/* フラグＢのオフセット */
	int		sizb;			/* フラグＢのサイズ */
	int		offp;			/* ピクセルのオフセット */
	int		sizp;			/* ピクセルのサイズ */
	} MAGHEADER;

typedef struct {
	char	id[8];			/* MAKI識別子'MAKI01A ' or 'MAKI01B ' */
	char	comment[24];	/* セーバー作者コメント */
	WORD	sizb;			/* フラグＢのサイズ */
	WORD	sizpa;			/* ピクセルＡのサイズ */
	WORD	sizpb;			/* ピクセルＢのサイズ */
	WORD	tile;			/* タイルデータのサイズ */
	WORD	lx;				/* 表示開始位置Ｘ */
	WORD	ly;				/* 表示開始位置Ｙ */
	WORD	rx;				/* 表示終了位置Ｘ */
	WORD	ry;				/* 表示終了位置Ｙ */
	} MKIHEADER;

#if 0
typedef struct {
	Mdir	*next;
	char	fname[256];		/* パス&ファイルネーム */
	char	comment[81];	/* コメントの前から1ライン分 */
	int		header;			/* ファイル先頭からのヘッダのオフセット */
	int		size;			/* ファイルサイズ */
	int		lx,ly;			/* 左上座標 */
	int		rx,ry;			/* 右下座標 */
	} Mdir;
#endif

/* Global Vari. */

extern MAGHEADER	maghead;					/* MAGのヘッダー */
extern MKIHEADER	mkihead;					/* MAKIのベッダー */
extern int			siza;
extern char			egbwork[];					/* EGBライブラリ用ワーク */
extern char			pal[768];					/* 現在のパレット情報 */
extern char			*flga,*flgb,*flg,*pix;		/* flag&pixel格納アドレス */
	/* 現在メモリに存在するイメージ情報 */
extern char			*vram;						/* イメージ格納アドレス */
extern int			screen_mode;				/* スクリーンモード(MAG互換) */
extern int			image_mode;					/* メモリ上のデータのモード */
extern int			lx,ly;						/* 左上座標 */
extern int			rx,ry;						/* 右下座標 */
extern char			comment[81];				/* コメント */

/* MAKI Load Library */
extern int		mki_get_head(FILE *fp);
extern int		mki_decode(FILE *fp,int mode,int x,int y);

/* MAG Load Library */
extern int		mag_get_head(FILE *fp);
extern int		mag_decode(FILE *fp,int mode,int x,int y);

/* Display Library */
extern int		display(int slx,int sly,int ssx,int ssy,int dx,int dy);
/*
 *	Memory to Vram copy function
 *		int slx,sly;		Memory上の転送元左上座標
 *		int ssx,ssy;		転送サイズ
 *		int dx,dy;			VRAM上の転送先左上座標
 */
extern int		set_palette();
extern int		stringcmp(char *s,char *d);

/* MAG Save Library */

/* 只今、工事中 :-) */

