GAMELIB16 その7

GAMELIB16のサンプルとして1つのソースコードで2機種のバイナリを生成しています。

http://www.geocities.jp/parallel_computer_inc/sprjr.zip

今回はメガドライブぴゅう太で動いているものをワンダースワンIBM JXで動かして行こうと思います。まずはBGを1枚絵(256x192 16色)で用意します。メガドライブPNG形式、ぴゅう太ワンダースワンIBM JXはBMP形式でツールを使って変換します。

bmp2binはIBM JXのために、BMP1枚絵(256x192 16色)を変換するものです。

bmp2bin.c

#include <stdio.h>
#include <stdlib.h>

char* s[192];

int main(int argc, char* argv[])
{
	int n, m;
	FILE *fpr;
	FILE *fpw;
	if (argc < 3) {
		printf("argc error\n");
		return -1;
	}

	if ((fpr = fopen(argv[1], "rb")) == NULL) {
		printf("read file open error\n");
		return -1;
	}

	if ((fpw = fopen(argv[2], "wb")) == NULL) {
		printf("write file open error\n");
		return -1;
	}
	m = 192;
	s[m]=malloc(128);
	if (NULL == fread(s[m], 0x76, 1, fpr)) {
		printf("read header error\n");
		return -1;
	}
	while (1) {
		m--;
		s[m]=malloc(128);
		if (NULL == fread(s[m], 128, 1, fpr)) break;
	}
	fclose(fpr);
	for (n = 0; n < 192; n++) {
		fwrite(s[n], 128, 1, fpw);
	}
	fclose(fpw);
	return 0;
}