/************************************************************************
*									*
*	ＳＣＲファイル　ＣＨＲ　Ｎｏ．変更				*
*									*
************************************************************************/

#include <stdio.h>

#define	unchar	unsigned char 
#define	unshort	unsigned short

#define	ON	1
#define	OFF	0

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

	/****** 変数宣言 ******/
	FILE *fpr,*fpw;

	char	f_name[100];
	unchar	scr_buf[0x3000];
	int	scr_size;
	unshort	add_data;
	unchar	chradd_l,chradd_h;
	int	i;

	/******	引数チェック ******/
	if( argc != 3 ){
		printf( "Usage: scrchange (SCR_file) (add data)\n" );
		exit(1);
	}

	/****** ＳＣＲファイル読み込み ******/
	strcpy( f_name, argv[1] );
	strcat( f_name, ".SCR" );
	if( !( fpr = fopen( f_name,"r" ) ) ){
		printf( "can't read open (%s) !!\n", f_name );
		exit(1);
	}
	if( !(scr_size = fread( scr_buf, sizeof( unchar ), 0x3000, fpr )) ){ 
		printf( "can't read (%s) !!\n", f_name );
		exit(1);
	}
	fclose( fpr );

	/******	ＣＨＲ　Ｎｏ．変更 ******/
	if( !(add_data = (unshort)strtol( argv[2], (char **)NULL, 16 )) ){
		printf( "add data error !!\n" );
		exit(1);
	}
	chradd_l = (unchar)( add_data & 0xff ) ;
	chradd_h = (unchar)( (add_data & 0xff00)>>8 );
	for( i=0; i<(0x800*4); i+=2 ){
		scr_buf[i]   += chradd_l;
		scr_buf[i+1] += chradd_h;
	}

	/****** ＳＣＲファイル書き込み ******/
	if( !( fpw = fopen( f_name,"w" ) ) ){
		printf( "can't write open (%s) !!\n", f_name );
		exit(1);
	}
	if( !(scr_size = fwrite( scr_buf, sizeof( unchar ), scr_size, fpw )) ){ 
		printf( "can't write (%s) !!\n", f_name );
		exit(1);
	}
	fclose( fpw );

}

