/**************************************************************

  サンプルプログラム　スプライトマップスクロール
　（　操作は、パッド上下左右でスクロール、トリガで終了。）

***************************************************************/

#include <string.h>
#include <egb.h>
#include <spr.h>
#include <snd.h>

#include "spr_defs.h"
#include "spr_drv .h"

char	ework[1536];

/*  パッドの方向スイッチに対応した、ＸＹの増減値  */
struct	{ int x,y ;} pad_ang[16] = {
	 0,0,  0,1,  0,-1,  0,0, 1,0, 1,1, 1,-1, 1,0,
	-1,0, -1,1, -1,-1, -1,0, 0,0, 0,1, 0,-1, 0,0
};

void main( int argc, char *argv[] )
{
	static char fname[][128] = {
		"sample\\sample.s16", "sample\\sample.mpd"
	};
	int 	i, button, x, y ;

	EGB_init( ework,1536 );
	EGB_resolution	( ework, 0, 3 );		/*	ページ０  16色 1024*512 */
	EGB_resolution	( ework, 1, 5 );		/*	ページ１ 32K色  256*512 */
	SPR_init();
	EGB_writePage	( ework, 1 );
	EGB_displayStart( ework, 2,   2,   2 );	/*	拡大率設定		*/
	EGB_displayStart( ework, 3, 256, 240 );	/*	表示領域		*/
	EGB_displayStart( ework, 0,  32,   0 ); /*	表示位置		*/
	EGB_displayStart( ework, 1,   0,  16 ); /*	仮想画面位置	*/
	EGB_displayPage	( ework, 1, 3 );

	for( i = 0 ; i+2 <= argc && i <= 1 ; i++ ) strcpy( fname[i], argv[i+1] );

	/*  パターンパレットファイルの読み込み
		（　ファイルネーム、パターンのロード位置、パレットのロード位置　）*/
	if( load_sprite  ( fname[0],   0,   0 ) != 0 ) return ;

	/*  マップファイルの読み込み（ ファイルネームのみ ）*/
	if( load_imagemap( fname[1]		  ) != 0 ) return ;

	/*  マップの配置と定義  */
	sprite_init(), map_init();
	/*  マップの表示（表示したい位置のＸＹ座標から、２を引く。）*/
	map_reset( imgmap_wx - 1, imgmap_wy - 2 );

	do{
		SND_joy_in_2( 0, &button );
		x = pad_ang[ button & 0xf ].x ;
		y = pad_ang[ button & 0xf ].y ;

		SPR_READY(); /*  スプライト時間待ち  */
		/*	スクロール移動（ Ｘのドット移動量， Ｙのドット移動量　）*/
		if( x != 0 || y != 0 ) scroll( x, y );

	}while( ( ~button & 0xf0 ) == 0 );

	sprite_end();
}
