/*
 * Ｃ言語ソース形式出力利用サンプル
 *
 * データは16色パックトカラーモードで生成して下さい。
 * 16色カラーモード（4プレーン）で生成したデータを表示するには、
 * wwc_set_color_mode(COLOR_MODE_16PACKED); を
 * wwc_set_color_mode(COLOR_MODE_16COLOR); に変更するだけです。 
 *
 * 再コンパイルには makefile を各自の環境に合わせて修正する必要があります。
 *
 * 2001/1/30 N.Honda
 *
 * このプログラムの内容は、自由に再利用する事が出来ます。
 *
 */
 
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/bios.h>
#include <sys/fcntl.h>
#include <sys/libwwc.h>

#include "img01.h"		/* 変換ツールで生成されたファイル */

unsigned int CharBuffer[512];

int SysCheck(void)
{
	/* カラーでなければ終了させる */
	if (wwc_get_hardarch() == HARDARCH_WS) {
		text_screen_init();
		text_put_string(0, 1, "このプログラムはWonderSwanColor専用です");
		text_put_string(0, 2, "WonderSwanColorで実行してください");
		key_wait();
		return 1;
	}

	return 0;
}

void SetData(void)
{
	int i, j;
	unsigned int far *pPalette;
	unsigned char far *pMap;
	
	/* モードの設定 */
	wwc_set_color_mode(COLOR_MODE_16PACKED);

	/* スクリーン2表示 */
	display_control(DCM_SCR2);
	
	/* クリア */
	screen_fill_char(SCREEN2, 0, 0, 28, 18, 0x00);
	
	/* パレットの設定 */
	pPalette = Palette;
	for (i = PALETTE_FROM; i < PALETTE_FROM + PALETTE_NUM; i++) {
		for (j = COLOR_FROM; j < COLOR_FROM + COLOR_SIZE; j++) {
			wwc_palette_set_color(i, j, *pPalette++);	
		}
	}

	/* フォントデータの設定 */
 	wwc_font_set_colordata(0, WIDTH * HEIGHT, (void far *)Image);

	pMap = PaletteMap;
	for (i = 0; i < WIDTH * HEIGHT; i++) {
		CharBuffer[i] = (*pMap++ << 9) | i;
	}
	screen_set_char(SCREEN2, 0, 0, WIDTH, HEIGHT, (void far *)CharBuffer);
}

int main(void)
{
	
	/* 初期化 */
	if (SysCheck())
		return -1;

	SetData();

	key_wait();

	/* カラーモードをグレースケールモードにする  */
	wwc_set_color_mode(COLOR_MODE_GRAYSCALE);
	return 0;
}
