/***************************************************************/
/*                                                             */
/* UGOKU.H                                                     */
/*                                                             */
/*   MOVファイル, & V02ファイル 再生システムライブラリ用ヘッダ */
/*                                            1993  9 29       */
/*                                                             */
/*                       戸田 浩                               */
/*                                                             */
/***************************************************************/


#define MOV_ERR_ACCESS 1	/* ファイルの読み込みに失敗した */
#define MOV_ERR_FORM 58		/* データの形式が不当 */
#define MOV_ERR_MEMORY_OVER 7	/* メモリー不足 */



/*
*
*		ＭＯＶ関連の関数
*
*/

/***** オンメモリ用MOV再生イニシャライズ *****/
int mov_memory_play_init(char *, int (*)(), int *,
						 int *, int *, int *, int *, int * );
/*
	<<引数の説明>>
	ファイル名,check関数,フレーム数,x0,y0,x1,y1,ワークサイズ
*/


/***** オンメモリ用MOV再生 *****/
int mov_memory_play( char *, char *, char *, int, int );
/*
	<<引数の説明>>
	バッファ(153600Byte),ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 2:VRAM1,2page使用 ),ウエイト
*/

/***** オンメモリ用MOV再生(リピート回数指定可能なタイプ) *****/
int mov_memory_play_repeat( char *, char *, char *, int, int, int );
/*
	<<引数の説明>>
	バッファ(153600Byte),ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 2:VRAM1,2page使用 ),
	ウエイト,リピート
*/

/***** ディスク読み込みMOV再生イニシャライズ *****/
int mov_disk_play_init( char *, int (*)(), int *,
						 int *, int *, int *, int *, int * );
/*
	<<引数の説明>>
	ファイル名,check関数,フレーム数,x0,y0,x1,y1,ワークサイズ
*/

/***** ディスク読み込みMOV再生 *****/
int mov_disk_play( char *, char *, char *, int, int );
/*
	<<引数の説明>>
	バッファ(153600Byte),ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 2:VRAM1,2page使用 ),ウエイト
*/

/***** ディスク読み込みMOV再生(リピート回数指定可能なタイプ) *****/
int mov_disk_play_repeat( char *, char *, char *, int, int, int );
/*
	<<引数の説明>>
	バッファ(153600Byte),ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 2:VRAM1,2page使用 ),
	ウエイト,リピート
*/


/*	  headを読み最初のframeを vram page = 0 ([0x104]:0x00000000)	*/
/*  または vram page = 1 ([0x104]:0x00040000) に表示				*/
mov_head_read_and_dsp( char *, int*,int*,int*,int*,int*,int*,
								 int, void *(*)(size_t),void (*)(void *) ) ;
/*
	<<引数の説明>>
	char *name ;						ファイル名
	int *frm, *x0, *y0, *x1, *y1, *wt ;	フレーム,対角座標,ウェイト
	int page ;							表示ページ
	void *(*TL_malloc)(size_t);			malloc関数
	void (*TL_free)(void *);			free関数

	<<使用例>>
	mov_head_read_and_dsp( "test.mov", &frame,&x0,&y0,&x1,&y1,&wait,
								0, malloc, free ) ;
*/



/*
*
*		Ｖ０２関連の関数
*
*/

/* 画面モード5用 */

/***** オンメモリ用V02再生イニシャライズ *****/
int V02_memory_play_init( char *, int (*)(), int *, int *, int *, int * );
/*
	<<引数の説明>>
	ファイル名,check関数,フレーム数,xd,yd,ワークサイズ
*/

/***** オンメモリ用V02再生 *****/
int V02_memory_play( char *, char *, int, int );
/*
	<<引数の説明>>
	ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 ),ウエイト
*/

/***** オンメモリ用V02再生(リピート回数指定可能なタイプ) *****/
					/********** 1993 9 新規追加関数 **********/
int V02_memory_play_repeat( char *, char *, int, int, int );
/*
	<<引数の説明>>
	ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 ),
	ウエイト,リピート回数( 例外事項: -1なら無限回リピート, 0なら1回 )
*/

/***** ディスク読み込みV02再生イニシャライズ *****/
int V02_disk_play_init( char *, int (*)(), int *, int *, int *, int * );
/*
	<<引数の説明>>
	ファイル名,check関数,フレーム数,xd,yd,ワークサイズ
*/


/***** ディスク読み込みV02再生 *****/
int V02_disk_play( char *, char *, int, int );
/*
	<<引数の説明>>
	ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 ),ウエイト
*/

/*	V02 headを読み最初のframeを vram page = 0 ([0x104]:0x00000000)	*/
/*  または vram page = 1 ([0x104]:0x00040000) に表示				*/
int v02_head_read_and_dsp( char *, int*,int*,int*,int*,
						 int, void *(*)(size_t), void (*)(void *) );
/*
	<<引数の説明>>
	char *name;					ファイル名
	int *frm, *x, *y, *wt ;		フレーム数,画面横,画面縦,ウエイト
	int page ;					表示画面のページ
	void *(*TL_malloc)(size_t);	malloc関数
	void (*TL_free)(void *);	free関数

	<<使用例>>
	v02_head_read_and_dsp("test.v02", &frame, &x, &y, &wait, 0,
								malloc, free);
*/



/********** 1994 9 新規追加関数 画面モード10用 **********/

/***** オンメモリ用V02再生イニシャライズ *****/
int V02_wide_memory_play_init( char *, int (*)(), int *, int *, int *, int * );
/*
	<<引数の説明>>
	ファイル名,check関数,フレーム数,xd,yd,ワークサイズ
*/

/***** オンメモリ用V02再生 *****/
int V02_wide_memory_play( char *, char *, int, int );
/*
	<<引数の説明>>
	ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 2:2page使用 ),ウエイト
*/

/***** オンメモリ用V02再生(リピート回数指定可能なタイプ) *****/
int V02_wide_memory_play_repeat( char *, char *, int, int, int );
/*
	<<引数の説明>>
	ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 2:2page使用 ),ウエイト
	ウエイト,リピート回数( 例外事項: -1なら無限回リピート, 0なら1回 )
*/

/***** ディスク読み込みV02再生イニシャライズ *****/
int V02_wide_disk_play_init( char *, int (*)(), int *, int *, int *, int * );
/*
	<<引数の説明>>
	ファイル名,check関数,フレーム数,xd,yd,ワークサイズ,
*/

/***** ディスク読み込みV02再生 *****/
int V02_wide_disk_play( char *, char *, int, int );
/*
	<<引数の説明>>
	ワークエリア(ワークサイズByte),ファイル名,
	モード( 0:VRAM0page使用 1:VRAM1page使用 2:2page使用 ),ウエイト
*/

/*	V02 headを読み最初のframeを vram page = 0 ([0x104]:0x00000000)	*/
/*  または vram page = 1 ([0x104]:0x00040000) に表示				*/
int v02_wide_head_read_and_dsp( char *, int*,int*,int*,int*,
						 int, void *(*)(size_t), void (*)(void *) );
/*
	<<引数の説明>>
	char *name;					ファイル名
	int *frm, *x, *y, *wt ;		フレーム数,画面横,画面縦,ウエイト
	int page ;					表示画面のページ
	void *(*TL_malloc)(size_t);	malloc関数
	void (*TL_free)(void *);	free関数

	<<使用例>>
	v02_wide_head_read_and_dsp("test.v02", &frame, &x, &y, &wait, 0,
								malloc, free);
*/




/*
*
*		マルチタスクを実現するための関数
*
*/

/***** 割り込み禁止 *****/
int interrupt_disable() ;

/***** 割り込み許可 *****/
int interrupt_enable() ;

/***** ＶＳＹＮＣ割り込みイニシャライズ *****/
int VSYNC_init() ;

/***** ＶＳＹＮＣ割り込み終了 *****/
int VSYNC_end() ;

/***** ＶＳＹＮＣ割り出し処理の登録 *****/
void VSYNC_setEvent(void(*vsyncEvent)());
/*
	<<引数の説明>>
	割り出し先の関数
*/

/***** ＶＳＹＮＣ割り出し処理の取得 *****/
void (*VSYNC_getEvent())();
/*
	<<引数の説明>>
	割り出し先の関数
*/

/***** ＶＳＹＮＣ割り込み処理の登録 *****/
void VSYNC_setEvent2(void(*vsyncEvent)());
/*
	<<引数の説明>>
	割り込み先の関数
*/

/***** ＶＳＹＮＣ割り込み処理の取得 *****/
void (*VSYNC_getEvent2())();
/*
	<<引数の説明>>
	割り込み先の関数
*/

/***** ＶＳＹＮＣカウンター *****/
extern unsigned int VSYNC_counter;



/*
*
*		その他
*
*/

/***** vdsys圧縮ルーチンで使う それ以外の使い方は考えてない *****/
int vd_01_2( char *para );
/*
	<<引数の説明>>
	DWORD( para+0 ) = ycdataアドレス;
	DWORD( para+4 ) = table_address;
	DWORD( para+8 ) = wait;
	DWORD( para+12) = page;
	DWORD( para+16) = xd;
	DWORD( para+20) = yd;
*/

