/************************************************************************
*		モード７スクリーン変換					*
************************************************************************/

#include <stdio.h>

#define	unchar	unsigned char 
#define	unshort	unsigned short

#define	ON	1
#define	OFF	0

FILE *fp;

void	colcnv( char * );

void main( int argc,char **argv )
{

	/****** 変数宣言 ******/
	unchar	scr_buf[0x2000];
	unchar	cnv_buf[0x1000];

	int	i,j,x,y;

	/******	引数チェック ******/
	if( argc != 2 ){
		printf( "Usage: ys_m7scr (screen file)\n" );
		exit(1);
	}

	/****** スクリーンファイルＯＰＥＮ ******/
	if( !( fp = fopen( argv[1],"r" ) ) ){
		printf( "can't open (%s) !!\n",argv[1] );
		exit(1);
	}

	/******	スクリーンデータ読み込み ******/
	if( fread( scr_buf,sizeof(unchar),0x2000,fp ) != 0x2000 ){
		printf( "screen data read error !!\n" );
		exit(1);
	}
	/******	ファイルＣＬＯＳＥ ******/
	fclose( fp );


	/******	スクリーンデータ変換 ******/
	j = 0;
	x = 0;
	y = 0;
	for( i=0;i<0x0800;i++ ){
		if( i&0x0020 ){
			x = j+(32*32)*2;
			cnv_buf[i] = scr_buf[x];
			j+=2;
		}
		else{
			cnv_buf[i] = scr_buf[y];
			y+=2;
		}
	}
	j = ((32*32)*2)*2;
	y = ((32*32)*2)*2;
	for( i=0x0800;i<0x1000;i++ ){
		if( i&0x0020 ){
			x = j+(32*32)*2;
			cnv_buf[i] = scr_buf[x];
			j+=2;
		}
		else{
			cnv_buf[i] = scr_buf[y];
			y+=2;
		}
	}
	/****** スクリーンファイルＯＰＥＮ ******/
	if( !( fp = fopen( argv[1],"w" ) ) ){
		printf( "can't open (%s) !!\n",argv[1] );
		exit(1);
	}
	/******	スクリーンデータ書き換え ******/
	rewind( fp );
	if( fwrite( cnv_buf,sizeof(unchar),0x1000,fp ) != 0x1000 ){
		printf( "screen data write error !!\n" );
		exit(1);
	}

	/******	ファイルＣＬＯＳＥ ******/
	fclose( fp );


}

