#include <stdio.h>

#define		unshort		unsigned short
#define		unchar		unsigned char

FILE		*fpw0,*fpr0;

int		i,j,k,l,m;

unchar		kage_data[17664];
unchar		kage_buff_2[128][128];
unchar		kage_buff_3[128][128];
unchar		kage_buff_4[128][4];

main()
{
	if(( fpr0 = fopen( "kage.CGX","r" )) == NULL ){
		printf( "kage.CGX not open \n" );
		exit(1);
	}

	while(( fread( kage_data,sizeof(unchar),17664,fpr0 )) == NULL ){
		printf( "read error\n" );
		exit(1);
	}

	fclose( fpr0 );

	if(( fpw0 = fopen( "kage.dat","w" )) == NULL ){
		printf( "kage.dat file not found\n" );
		exit(1);
	}

	for( i=0;i<4096;i=i+16 ){

		j = ( i & 0xf00 ) / 0x20;
		k = ( i & 0xf0 ) / 2;
		m = i;

		for( l=0;l<8;l++ ){

			kage_buff_2[j][k] = ( kage_data[m] | kage_data[m+1] ) & 0x080;
			kage_buff_3[j][k] = ( kage_data[m] & kage_data[m+1] ) & 0x080;

			kage_buff_2[j][k+1] = ( kage_data[m] | kage_data[m+1] ) & 0x040;
			kage_buff_3[j][k+1] = ( kage_data[m] & kage_data[m+1] ) & 0x040;

			kage_buff_2[j][k+2] = ( kage_data[m] | kage_data[m+1] ) & 0x020;
			kage_buff_3[j][k+2] = ( kage_data[m] & kage_data[m+1] ) & 0x020;

			kage_buff_2[j][k+3] = ( kage_data[m] | kage_data[m+1] ) & 0x010;
			kage_buff_3[j][k+3] = ( kage_data[m] & kage_data[m+1] ) & 0x010;

			kage_buff_2[j][k+4] = ( kage_data[m] | kage_data[m+1] ) & 0x008;
			kage_buff_3[j][k+4] = ( kage_data[m] & kage_data[m+1] ) & 0x008;

			kage_buff_2[j][k+5] = ( kage_data[m] | kage_data[m+1] ) & 0x004;
			kage_buff_3[j][k+5] = ( kage_data[m] & kage_data[m+1] ) & 0x004;

			kage_buff_2[j][k+6] = ( kage_data[m] | kage_data[m+1] ) & 0x002;
			kage_buff_3[j][k+6] = ( kage_data[m] & kage_data[m+1] ) & 0x002;

			kage_buff_2[j][k+7] = ( kage_data[m] | kage_data[m+1] ) & 0x001;
			kage_buff_3[j][k+7] = ( kage_data[m] & kage_data[m+1] ) & 0x001;

			j++;
			m = m + 2;

		}

	}

	l=0;

	for( i=0;i<128;i++ ){

		k = 0;
		m = 0;

		for( j=0;j<128;j++ ){

			if( kage_buff_2[i][j] != 0 ){

				if( k == 0 ){

					kage_buff_4[l][m] = j;

					m++;

				}

				k++;

				if( kage_buff_3[i][j] !=0 ){

					kage_buff_4[l][m] = j;
					kage_buff_4[l][m+1] = j;

					m = m + 2;

				}

			}

			if( kage_buff_2[i][j] == 0 ){

				if( k != 0 ){

					kage_buff_4[l][m] = j - 1;

					m++;

					k = 0;

				}

			}

			if( m >= 4 ){

				l++;

				j = 128;

			}

			if( m == 3){

				if( j == 127 ){

					kage_buff_4[l][m] = j;

					l++;

				}

			}

		}

	}

	fprintf( fpw0,"\t\tHEX\t%02X\n",l );

	m = 0;

	for( i=0;i<l;i++ ){

		fprintf( fpw0,"\t\tHEX\t" );
		fprintf( fpw0,"%02X,%02X, %02X,%02X\t;[%02X]\n",kage_buff_4[i][0],kage_buff_4[i][1],kage_buff_4[i][2],kage_buff_4[i][3],m );

		m++;

	}

	fprintf( fpw0,";\n" );

	fclose( fpw0 );

}
