/*============================================================================
	アクションゲーム タイトル画面 Title.c
------------------------------------------------------------------------------
												Programmed by Keiichi.Tago.
============================================================================*/
#include "Title.h"

/*============================================================
	タイトル画面表示
--------------------------------------------------------------
In  : なし
Out : なし
============================================================*/
void Title( void )
{
	int nKey;
	BOOL bStart;
	/* 背景初期化 */
	wsBgInit( COLOR_MODE );
	wsBgSetObjectFile( 0, "/rom0/GENERIC.CHR" );
	wsBgSetPalet( 0, 0, 7 );
	wsBgSetObjectFile( 1, "/rom0/TITLE.CHR" );
	wsBgSetChr( 1, 0, 1, 432 );
	wsBgSetPalet( 1, 0, 1 );
	/* パレット設定 ( 16 色中 8 色を選択する) */
	wsPalInit( COLOR_MODE );
	wsPalSetPalet( 0x7530, 0xFDB9, 0 );
	wsPalSetLuminosity( 15 );
	/* パレット選択 ( 8 色中 4 色を選択する ) */
	palette_set_color( 0, 0x3210 );
	palette_set_color( 4, 0x7520 );
	/* 背景配置 */
	wsBgSetVram( SCREEN1, 1, 0, 0, 4, 0, 1, SETVRAM_NORMAL );
	/* タイトル画面表示 */
	wsBgSetVram( SCREEN2, 1, 1, 361, 2, 1, 7, SETVRAM_NORMAL );
	bStart = FALSE;
	wsBgSetPutRange( 433, 511 );
	wsBgPutString( SCREEN2, -1, 4, 15, 7, 15, 7, "ＰＲＥＳＳ　ＳＴＡＲＴ　ＢＵＴＴＯＮ　！！" );
	while( 1 ) {
		wsPalMove();
		nKey = key_press_check();
		if ( nKey & KEY_START ) {
			if ( nKey & ( KEY_UP2 | KEY_DOWN2 | KEY_LEFT2 | KEY_RIGHT2 ) ) {
				/* デバッグモード */
				SystemInf.nInvincibility = 1;
			} else {
				/* デバッグモード解除 */
				SystemInf.nInvincibility = 0;
			}
			bStart = TRUE;
		} else if ( bStart == TRUE ) {
			/* メニューに行く */
			wsSndPlaySe( 1 );
			break;
		}
		/* テキトーに乱数をかき回す */
		rand();
	}
	SystemInf.nPhase = PHASE_TITLEMENU;
	/* 終了処理 */
	screen_set_scroll( SCREEN1, 0, 0 );
}

/*============================================================
	タイトルメニュー
--------------------------------------------------------------
In  : なし
Out : なし
============================================================*/
void TitleMenu( void )
{
	int nKey;
	int nMenu;
	BOOL bStart;
	BOOL bUp;
	BOOL bDown;

	/* 背景初期化 */
	wsBgInit( COLOR_MODE );
	wsBgSetObjectFile( 0, "/rom0/GENERIC.CHR" );
	wsBgSetPalet( 0, 0, 7 );
	wsBgSetObjectFile( 1, "/rom0/TITLE.CHR" );
	wsBgSetChr( 1, 0, 1, 432 );
	wsBgSetPalet( 1, 0, 1 );
	/* パレット初期化 */
	wsPalInit( COLOR_MODE );
	/* パレット設定 ( 16 色中 8 色を選択する) */
	wsPalSetPalet( 0x7530, 0xFDB9, 15 );
	/* パレット選択 ( 8 色中 4 色を選択する ) */
	palette_set_color( 0, 0x3210 );
	palette_set_color( 4, 0x7520 );
	/* 背景配置 */
	wsBgSetVram( SCREEN1, 1, 0, 0, 4, 0, 1, SETVRAM_NORMAL );
	/* タイトルメニュー */
	bStart = FALSE;
	nMenu = 0;
	/* タイトル画面表示 */
	wsBgSetVram( SCREEN2, 1, 1, 361, 2, 1, 7, SETVRAM_NORMAL );
	wsBgSetPutRange( 433, 509 );
	wsBgPutString( SCREEN2, -1, 11, 12, 7, 15, 7, "ＳＴＡＲＴ" );
	wsBgPutString( SCREEN2, -1, 11, 14, 7, 15, 7, "ＥＸＩＴ" );
	wsBgPutString( SCREEN2, 511, 10, 12 + nMenu, 7, 15, 7, "★" );
	while( 1 ) {
		wsPalMove();
		nKey = key_press_check();
		if ( nKey & KEY_UP1 ) {
			bUp = TRUE;
		} else if ( bUp == TRUE ) {
			wsBgPutString( SCREEN2, 510, 10, 12 + nMenu * 2, 7, 15, 7, "　" );
			nMenu--;
			if ( nMenu < 0 ) {
				nMenu = MENU_MAX - 1;
			}
			wsBgPutString( SCREEN2, 511, 10, 12 + nMenu * 2, 7, 15, 7, "★" );
			bUp = FALSE;
			wsSndPlaySe( 0 );
		}
		if ( nKey & KEY_DOWN1 ) {
			bDown = TRUE;
		} else if ( bDown == TRUE ) {
			wsBgPutString( SCREEN2, 510, 10, 12 + nMenu * 2, 7, 15, 7, "　" );
			nMenu++;
			if ( nMenu >= MENU_MAX ) {
				nMenu = 0;
			}
			wsBgPutString( SCREEN2, 511, 10, 12 + nMenu * 2, 7, 15, 7, "★" );
			bDown = FALSE;
			wsSndPlaySe( 0 );
		}
		if ( ( nKey & KEY_START ) || ( nKey & KEY_A ) ) {
			bStart = TRUE;
		} else if ( bStart == TRUE ) {
			/* ゲーム開始 */
			wsSndPlaySe( 1 );
			break;
		}
		/* テキトーに乱数をかき回す */
		rand();
	}
	switch( nMenu ) {
		case 0:
			/* ゲーム開始 */
			SystemInf.nPhase = PHASE_GAME;
			break;
/*		case 1:*/
			/* OPTION */
			/* まだ出来ていない
				SystemInf.nPhase = PHASE_OPTION;
			break;*/
		case 1:
			/* ゲーム終了 */
			SystemInf.nPhase = PHASE_EXIT;
			break;
	}
	/* 終了処理 */
	screen_set_scroll( SCREEN1, 0, 0 );
}
