/*
	コンフィグ内コンディション
*/
#include "ot_header.h"
#include "ot_newton.h"
#include "ot_sea.h"

#include "endefine.h"
#include "enrecord.h"

#include "kn_def.h"
#include "kn_main.h"
#include "kn_backup.h"
#include "kn_dynamic.h"
#include "kn_font.h"
#include "kn_mask.h"
#include "kn_gword.h"
#include "kn_config.h"
#include "kn_cfgcond.h"
#include "kn_message.h"

/*******************************************************
	FUNCTION
*******************************************************/
Gfx 		*makeMainGlistCfgCond( Gfx *gp );
static void	changeGameModeCfgCond( void );
static Gfx 	*makeCfgCondGlist( Gfx *gp );
static void	initMainGlistCfgCond2Next( int next_game_mode );

/*******************************************************
	VARIABLE
*******************************************************/
/* --- 外部参照 --- */
/* Display List */
extern Gfx 		dlConfigBG[];
/* コントローラー */
extern sKnPad	mKnPad[];

/* --- 内部 --- */
/* 選択したモード番号 */
static int		selectModeX, selectModeY;
/* 選択した項目番号 */
static int		selectMemberNum;
/* 各モードの変更可能フラグ */
static int		changeOKFlag[CFGCOND_MAX_NUM_MODE+3];

/* メニュー用文字列 */
#if (SW_KN_LANGUAGE == KN_JP || SW_KN_LANGUAGE == KN_ZH)
static sDispGMesg mCfgCondMenu[] = {
	23, GMESG_NORMAL10,
	27, GMESG_HARD10,
	11, GMESG_EXPERT10,
	 0, GMESG_JK_DEF12,
	27, GMESG_END12
};
#elif (SW_KN_LANGUAGE == KN_US)
static sDispGMesg mCfgCondMenu[] = {
	 0, GMESG_NORMAL12,
	 0, GMESG_HARD12,
   -16, GMESG_EXPERT12,
	 0, GMESG_JK_DEF12,
	 0, GMESG_END12
};
#elif (SW_KN_LANGUAGE == KN_EU)
static sDispGMesg mCfgCondMenu[] = {
	 0, GMESG_NORMAL12,
	 0, GMESG_HARD12,
   -16, GMESG_EXPERT12,
	 0, GMESG_JK_DEF12,
	 0, GMESG_END12
};
static sDispGMesg mCfgCondMenu_Ge[] = {
	 8, GMESG_NORMAL12,
	 0, GMESG_HARD12,
   -12, GMESG_EXPERT12,
	 8, GMESG_JK_DEF12,
	 0, GMESG_END12
};
#endif
/* メッセージ番号 */
static int	gmesgNumCfgCondMember[] = {
	GMESG_WAVE12,
	GMESG_MISS12,
	GMESG_LAP12,
};
/* 波用メッセージ番号 */
static int	gmesgNumCfgCondWave[] = {
	GMESG_ORIGINAL12,
	GMESG_CALM12,
	GMESG_ROUGH12,
	GMESG_RANDOM12,
};
/* HANDICAP用文字列 */
static int	gmesgNumCfgCondHandicap[] = {
	GMESG_OFF12,
	GMESG_ON12,
};
/* おわる*/
int mConditionEnd[CFGCOND_MAX_NUM_MEMBER] = {
	COND_MEMBER_OFF, COND_MEMBER_OFF, COND_MEMBER_OFF,
};

sKnMinMax cfgCondValueMinMax[CFGCOND_MAX_NUM_MEMBER] = {
	{ COND_WAVE_MIN    , COND_WAVE_MAX     },
	{ COND_MISS_MIN    , COND_MISS_MAX     },
	{ COND_LAP_MIN     , COND_LAP_MAX      },
};

static int	selectModeXBak = -1;

static int	numberClear = -1;
/*******************************************************
	DEFINE
*******************************************************/
#define CFGCOND_MEMBER_DY	20

#define CFGCOND_SEL_MODE_X_NUM	3

#if (SW_KN_LANGUAGE == KN_JP || SW_KN_LANGUAGE == KN_ZH)

#define SX_CONDITION18	96
#define DX_END12		183
#define DX_JK_DEF12		65
#define DX_BECAREFUL12	81
#define DX_NOTRECORD12	135

#elif (SW_KN_LANGUAGE == KN_US)

#define SX_CONDITION18	30
#define DX_END12		185
#define DX_JK_DEF12		72
#define DX_BECAREFUL12	20
#define DX_NOTRECORD12	90

#elif (SW_KN_LANGUAGE == KN_EU)

#define SX_CONDITION18	30
#define DX_END12		185
#define DX_JK_DEF12		72
#define DX_BECAREFUL12	20
#define DX_NOTRECORD12	90

#define SX_CONDITION18_GE	44
#endif

/* ====================================================================== */
/*
	ムーブ
*/
void moveMainCfgCond( void )
{
	register int	i;
	
	if( gameModeChangeFlag ) {
		if( game_mode == GM_CFGCOND ) {
			for( i = 0 ; i < CFGCOND_MAX_NUM_MODE+3 ; i ++ ) changeOKFlag[i] = 0;
			changeOKFlag[CFGCOND_MODE_ORG] = changeOKFlag[CFGCOND_MODE_END] = 1;
			if( gameClearFlag & GAME_CLEAR_FLAG_NORMAL ) changeOKFlag[CFGCOND_MODE_NORMAL] = 1;
			if( gameClearFlag & GAME_CLEAR_FLAG_HARD ) changeOKFlag[CFGCOND_MODE_HARD] = 1;
			if( gameClearFlag & GAME_CLEAR_FLAG_EXPERT ) changeOKFlag[CFGCOND_MODE_EXPERT] = 1;
			/* 初期カーソル位置（最小値）の決定 */
			for( i = 0 ; i < CFGCOND_MAX_NUM_MODE+2 ; i++ ) {
				if( changeOKFlag[i] != 0 ) break;
			}
			if( i == CFGCOND_MODE_ORG ) {
				selectModeX = CFGCOND_MODE_END % CFGCOND_SEL_MODE_X_NUM;
				selectModeY = CFGCOND_MODE_END / CFGCOND_SEL_MODE_X_NUM;
			}
			else {
				selectModeX = i % CFGCOND_SEL_MODE_X_NUM;
				selectModeY = i / CFGCOND_SEL_MODE_X_NUM;
			}
			numberClear = 0;
			for( i = 0 ; i < 3 ; i ++ ) {
				if( changeOKFlag[i] ) numberClear ++;
			}
			if( numberClear == 0 ) {
				changeOKFlag[CFGCOND_MODE_ORG] = 0;
			}
		}
	}
}

/* ====================================================================== */
/*
	メイン
*/
Gfx *makeMainGlistCfgCond( Gfx *gp )
{
	if( gameModeChangeFlag ) {
		gameModeChangeFlag = 0;
		if( game_mode == GM_CFGCOND ) {
			gp = clearAllFBuffer( gp );
			return( gp );
		}
	}

	/* ディスプレイリストの作成 */
	player_index = 0;
	gp = makeCfgCondGlist( gp );

	/* ゲームモードの変更 */
	if( game_mode == GM_CFGCOND ) {
		changeGameModeCfgCond();
	}
	else {
		if( mMask.flag == MASK_FLAG_END ) {
			EepWriteDataConfig();
			initMainGlistConfig();
		}
	}

	return( gp );
}

/* ====================================================================== */
/*
	ゲームモードの変更
*/
static void changeGameModeCfgCond( void )
{
	register int 		i, j, se_flag, mode_bak, mode_num, pos_x;
	register sKnMinMax	*minmax_p;
	
	se_flag = 0;
	/* 決定 */
	if( mKnPad[KN_PAD_COMMON].pad.trig & BUTTON_ARG_ANY ) {
		switch( gameModeSeq ) {
			case GM_SEQ_CFGCOND_SEL_MODE:
				se_flag = 1;
				mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
				if( mode_num == CFGCOND_MODE_END ) initMainGlistCfgCond2Next( GM_CONFIG );
				else if( mode_num == CFGCOND_MODE_ORG ) {
					for( i = 0 ; i < CFGCOND_MAX_NUM_MODE; i ++ ) {
						for( j = 0 ; j < CFGCOND_MAX_NUM_MEMBER ; j ++ ) {
							mCondition[i][j] = mConditionOrg[i][j];
						}
					}
				}
				else {
					gameModeSeq = GM_SEQ_CFGCOND_CHANGE_VALUE0;
					selectMemberNum = 0;
				}
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE0:
				se_flag = 1;
				gameModeSeq = GM_SEQ_CFGCOND_CHANGE_VALUE1;
				selectMemberNum = 1;
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE1:
				se_flag = 1;
				gameModeSeq = GM_SEQ_CFGCOND_CHANGE_VALUE2;
				selectMemberNum = 2;
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE2:
				se_flag = 1;
				gameModeSeq = GM_SEQ_CFGCOND_SEL_MODE;
				break;
		}
		#if SOUND_SW
		if( se_flag ) Na_SystemSound( NA_SYS_DECIDE, 0 );
		#endif
	}
	/* キャンセル */
	else if( mKnPad[KN_PAD_COMMON].pad.trig & BUTTON_ARG_CANCEL ) {
		switch( gameModeSeq ) {
			case GM_SEQ_CFGCOND_SEL_MODE:
				se_flag = 1;
				initMainGlistCfgCond2Next( GM_CONFIG );
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE0:
				se_flag = 1;
				gameModeSeq = GM_SEQ_CFGCOND_SEL_MODE;
				selectMemberNum = 0;
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE1:
				se_flag = 1;
				gameModeSeq = GM_SEQ_CFGCOND_CHANGE_VALUE0;
				selectMemberNum = 0;
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE2:
				se_flag = 1;
				gameModeSeq = GM_SEQ_CFGCOND_CHANGE_VALUE1;
				selectMemberNum = 1;
				break;
		}
		#if SOUND_SW
		if( se_flag ) Na_SystemSound( NA_SYS_CANCEL, 0 );
		#endif
	}
	/* 上 */
	else if( mKnPad[KN_PAD_1P].pad.trig & BUTTON_ARG_UP ) {
		switch( gameModeSeq ) {
			case GM_SEQ_CFGCOND_SEL_MODE:
				pos_x = selectModeX;
				se_flag = 1;
				if( selectModeY == 1 && selectModeXBak != -1 ) {
					selectModeX = selectModeXBak;
					selectModeXBak == -1;
				}
				if( numberClear == 1 && selectModeY == 1 ) selectModeX = 0;
				else if( numberClear == 3 && selectModeY == 0 && selectModeX == 2 ) selectModeX = 1;
				selectModeY --;
				if( selectModeY < 0 ) selectModeY = 1;
				while( 1 ) {
					mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
					if( changeOKFlag[mode_num] ) break;
					selectModeY --;
					if( selectModeY < 0 ) selectModeY = 1;
				}
				if( selectModeY == 1 ) {
					if( numberClear == 3 ) selectModeXBak = selectModeX;
					if( numberClear == 3 && selectModeX == 2 ) selectModeX = 1;
				}
				break;
		}
		/* SE */
		#if SOUND_SW
		if( se_flag ) Na_SystemSound( NA_SYS_CURMOVE, 0 );
		#endif
	}
	/* 下 */
	else if( mKnPad[KN_PAD_1P].pad.trig & BUTTON_ARG_DOWN ) {
		switch( gameModeSeq ) {
			case GM_SEQ_CFGCOND_SEL_MODE:
				se_flag = 1;
				if( selectModeY == 1 && selectModeXBak != -1 ) {
					selectModeX = selectModeXBak;
					selectModeXBak = -1;
				}
				if( numberClear == 1 && selectModeY == 1 ) selectModeX = 0;
				else if( numberClear == 3 && selectModeY == 0 && selectModeX == 2 ) selectModeX = 1;
				selectModeY ++;
				if( selectModeY >= 2 ) selectModeY = 0;
				while( 1 ) {
					mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
					if( changeOKFlag[mode_num] ) break;
					selectModeY ++;
					if( selectModeY >= 2 ) selectModeY = 0;
				}
				if( selectModeY == 1 ) {
					if( numberClear == 3 ) selectModeXBak = selectModeX;
					if( numberClear == 3 && selectModeX == 2 ) selectModeX = 1;
				}
				break;
		}
		/* SE */
		#if SOUND_SW
		if( se_flag ) Na_SystemSound( NA_SYS_CURMOVE, 0 );
		#endif
	}
	/* 左 */
	else if( mKnPad[KN_PAD_1P].pad.trig & BUTTON_ARG_LEFT ) {
		switch( gameModeSeq ) {
			case GM_SEQ_CFGCOND_SEL_MODE:
				se_flag = 1;
				selectModeX --;
				if( selectModeX < 0 ) {
					if( selectModeY == 0 )  selectModeX = CFGCOND_SEL_MODE_X_NUM - 1;
					else selectModeX = 1;
				}
				while( 1 ) {
					mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
					if( changeOKFlag[mode_num] ) break;
					selectModeX --;
					if( selectModeX < 0 ) {
						if( selectModeY == 0 )  selectModeX = CFGCOND_SEL_MODE_X_NUM - 1;
						else selectModeX = 1;
					}
				}
				selectModeXBak = -1;
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE0:
			case GM_SEQ_CFGCOND_CHANGE_VALUE1:
			case GM_SEQ_CFGCOND_CHANGE_VALUE2:
				se_flag = 1;
				mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
				minmax_p = &cfgCondValueMinMax[selectMemberNum];
				mCondition[mode_num][selectMemberNum] --;
				if( mCondition[mode_num][selectMemberNum] < minmax_p->min ) {
					mCondition[mode_num][selectMemberNum] = minmax_p->max;
				}
				break;
		}
		/* SE */
		#if SOUND_SW
		if( se_flag ) Na_SystemSound( NA_SYS_CURMOVE, 0 );
		#endif
	}
	/* 右 */
	else if( mKnPad[KN_PAD_1P].pad.trig & BUTTON_ARG_RIGHT ) {
		switch( gameModeSeq ) {
			case GM_SEQ_CFGCOND_SEL_MODE:
				se_flag = 1;
				selectModeX ++;
				if( selectModeY == 0 ) {
					if( selectModeX >= CFGCOND_SEL_MODE_X_NUM ) selectModeX = 0;
				}
				else {
					if( selectModeX >= CFGCOND_SEL_MODE_X_NUM-1 ) selectModeX = 0;
				}
				while( 1 ) {
					mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
					if( changeOKFlag[mode_num] ) break;
					selectModeX ++;
					if( selectModeY == 0 ) {
						if( selectModeX >= CFGCOND_SEL_MODE_X_NUM ) selectModeX = 0;
					}
					else {
						if( selectModeX >= CFGCOND_SEL_MODE_X_NUM-1 ) selectModeX = 0;
					}
				}
				selectModeXBak = -1;
				break;
			case GM_SEQ_CFGCOND_CHANGE_VALUE0:
			case GM_SEQ_CFGCOND_CHANGE_VALUE1:
			case GM_SEQ_CFGCOND_CHANGE_VALUE2:
				se_flag = 1;
				mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
				minmax_p = &cfgCondValueMinMax[selectMemberNum];
				mCondition[mode_num][selectMemberNum] ++;
				if( mCondition[mode_num][selectMemberNum] > minmax_p->max ) {
					mCondition[mode_num][selectMemberNum] = minmax_p->min;
				}
				break;
		}
		/* SE */
		#if SOUND_SW
		if( se_flag ) Na_SystemSound( NA_SYS_CURMOVE, 0 );
		#endif
	}
}

/* ====================================================================== */
/*
	描画
*/
static Gfx	*makeCfgCondGlist( Gfx *gp )
{
	register int		i, dx, dy, value, disp_type, gmesg_num, warn_disp, mode_num;
	register int		dx_cond;
	register sDispGMesg	*kn_p;
	register int		*int_p;
	register uint		font_flag;
	char				str_work[15];
	
	/* --- ＢＧ --- */
	gSPMatrix( gp++, &(rspKnDynamic.mtxFontProj),
			   G_MTX_PROJECTION | G_MTX_LOAD | G_MTX_NOPUSH );
	gSPMatrix( gp++, &automatic.e_MT,
			   G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_NOPUSH );
	gSPDisplayList( gp++, dlConfigBG );
	/* --- 背景表示 --- */
	gSPDisplayList( gp++, dlInitWaku );
	for( i = 0 ; i < CFGCOND_MAX_NUM_MODE ; i++ ) {
		gp = makeWakuGlist( gp, WAKU_KIND_256x32,
				    DISPLAY_X1 + 20 + 89 * i, DISPLAY_Y1 + 49, 86, 16 );
	}
	gp = makeWakuGlist( gp, WAKU_KIND_256x32,
			    DISPLAY_X1 + 156, DISPLAY_Y1 + 70, 86, 16 );
	gp = makeWakuGlist( gp, WAKU_KIND_256x32,
			    DISPLAY_X1 + 62, DISPLAY_Y1 + 70, 86, 16 );
	for( i = 0 ; i < CFGCOND_MAX_NUM_MEMBER ; i++ ) {
		gp = makeWakuGlist( gp, WAKU_KIND_256x32,
				    DISPLAY_X1 + 20, DISPLAY_Y1 + 105 + 20 * i, 156, 16 );
		gp = makeWakuGlist( gp, WAKU_KIND_256x32,
				    DISPLAY_X1 + 179, DISPLAY_Y1 + 104 + 20 * i, 105, 16 );
	}
	
	/* --- 文字表示 --- */
#if (SW_KN_LANGUAGE == KN_EU)
	if( euLanguage == EL_ENGLISH ) {
		kn_p = mCfgCondMenu;
		dx_cond = SX_CONDITION18;
	}
	else {
		kn_p = mCfgCondMenu_Ge;
		dx_cond = SX_CONDITION18_GE;
	}
#else
	kn_p = mCfgCondMenu;
	dx_cond = SX_CONDITION18;
#endif
	gp = makeInitStrGlist( gp, FONT_FLAG_NORMAL, 255,255,255, 255,255,255, 255,255,255, 255,255,255 );
	gp = makeGameMessageGlist( gp, GMESG_KIND_18, GMESG_CONDITION18,
							   DISPLAY_X1 + dx_cond, DISPLAY_Y1 + 19, 0, 0 );
	/* モード表示 */
	mode_num = selectModeY * CFGCOND_SEL_MODE_X_NUM + selectModeX;
	for( i = 0 ; i < CFGCOND_MAX_NUM_MODE + 2; i++, kn_p++ ) {
		if( i == mode_num ) font_flag = FONT_FLAG_FLASH_3;
		else if( changeOKFlag[i] == 0 ) font_flag = FONT_FLAG_COLOR;
		else font_flag = FONT_FLAG_NORMAL;
		gp = makeInitStrGlist( gp, font_flag,
							   FONT_COLOR_TURN_OFF, FONT_COLOR_TURN_OFF, FONT_COLOR_TURN_OFF,
							   255,255,255, 255,255,255, 255,255,255 );
		if( i == CFGCOND_MODE_END ) {
			gp = makeGameMessageGlist( gp, GMESG_KIND_12, kn_p->gmesgNum,
				  DISPLAY_X1 + DX_END12, DISPLAY_Y1 + 73, 0, 0 );
		}
		else if( i == CFGCOND_MODE_ORG ) {
			gp = makeGameMessageGlist( gp, GMESG_KIND_12, kn_p->gmesgNum,
				  DISPLAY_X1 + DX_JK_DEF12, DISPLAY_Y1 + 73, 0, 0 );
		}
		else {
#if (SW_KN_LANGUAGE == KN_JP || SW_KN_LANGUAGE == KN_ZH)
			gp = makeGameMessageGlist( gp, GMESG_KIND_10, kn_p->gmesgNum,
				  DISPLAY_X1 + 20 + 89 * i + (int)kn_p->dx, DISPLAY_Y1 + 52, 0, 0 );
#elif (SW_KN_LANGUAGE == KN_US)
			gp = makeGameMessageGlist( gp, GMESG_KIND_12, kn_p->gmesgNum,
				  DISPLAY_X1 + 36 + 97 * i + (int)kn_p->dx, DISPLAY_Y1 + 52, 0, 0 );
#elif (SW_KN_LANGUAGE == KN_EU)
			gp = makeGameMessageGlist( gp, GMESG_KIND_12, kn_p->gmesgNum,
				  DISPLAY_X1 + 36 + 97 * i + (int)kn_p->dx, DISPLAY_Y1 + 52, 0, 0 );
#endif
		}
	}
	/* 項目表示 */
	if( mode_num != CFGCOND_MODE_END && mode_num != CFGCOND_MODE_ORG ) {
		int_p = &mCondition[mode_num][0];
		for( i = 0 ; i < CFGCOND_MAX_NUM_MEMBER ; i++, int_p++ ) {
			if( gameModeSeq != GM_SEQ_CFGCOND_SEL_MODE ) {
				if( i == selectMemberNum ) font_flag = FONT_FLAG_FLASH_3;
				else if( *int_p == COND_MEMBER_OFF ) font_flag = FONT_FLAG_COLOR;
				else font_flag = FONT_FLAG_NORMAL;
			}
			else {
				if( *int_p == COND_MEMBER_OFF ) font_flag = FONT_FLAG_COLOR;
				else font_flag = FONT_FLAG_NORMAL;
			}
			gp = makeInitStrGlist( gp, font_flag,
								   FONT_COLOR_TURN_OFF, FONT_COLOR_TURN_OFF, FONT_COLOR_TURN_OFF,
								   255,255,255, 255,255,255, 255,255,255 );
			gp = makeGameMessageGlist( gp, GMESG_KIND_12, gmesgNumCfgCondMember[i],
							   DISPLAY_X1 + 33, DISPLAY_Y1 + 108 + CFGCOND_MEMBER_DY * i, 0, 0 );
			gp = makeStrGlistSub( gp, FONT_TYPE_SELECT, ">",
							   DISPLAY_X1 + 159, DISPLAY_Y1 + 107 + CFGCOND_MEMBER_DY * i );
	
			if( gameModeSeq != GM_SEQ_CFGCOND_SEL_MODE ) {
				if( i == selectMemberNum ) {
					if( *int_p == mConditionOrg[mode_num][i]) font_flag = FONT_FLAG_FLASH_3;
					else font_flag = FONT_FLAG_FLASH_1;
				}
				else if( *int_p == COND_MEMBER_OFF ) font_flag = FONT_FLAG_COLOR;
				else font_flag = FONT_FLAG_NORMAL;
			}
			else {
				if( *int_p == COND_MEMBER_OFF ) font_flag = FONT_FLAG_COLOR;
				else font_flag = FONT_FLAG_NORMAL;
			}
	
			if( i == CFGCOND_MEMBER_WAVE ) {
				if( *int_p == COND_MEMBER_OFF ) value = COND_WAVE_ORIGINAL;
				else value = *int_p;
				disp_type = 0;
				gmesg_num = gmesgNumCfgCondWave[value];
			}
			else if( i == CFGCOND_MEMBER_MISS ) {
				if( *int_p == COND_MEMBER_OFF ) value = COND_MISS_INIT_SCORE;
				else value = *int_p;
				disp_type = 1;
				sprintf( str_work, "%d", value );
			}
			else if( i == CFGCOND_MEMBER_LAP ) {
				if( *int_p == COND_MEMBER_OFF ) value = COND_LAP_INIT_SCORE;
				else value = *int_p;
				disp_type = 1;
				sprintf( str_work, "%d", value );
			}
			else {
				if( *int_p == COND_MEMBER_OFF ) value = COND_HANDICAP_OFF;
				else value = *int_p;
				disp_type = 0;
				gmesg_num = gmesgNumCfgCondHandicap[value];
			}
			gp = makeInitStrGlist( gp, font_flag,
							   FONT_COLOR_TURN_OFF, FONT_COLOR_TURN_OFF, FONT_COLOR_TURN_OFF,
						       255,255,255, 255,255,255, 255,255,255 );
			if( disp_type == 0 ) {
				gp = makeGameMessageGlist( gp, GMESG_KIND_12, gmesg_num,
								  DISPLAY_X1 + 190, DISPLAY_Y1 + 107 + CFGCOND_MEMBER_DY * i, 0, 0 );
			}
			else {
				gp = makeStrGlistSub( gp, FONT_TYPE_SELECT, str_work,
							   DISPLAY_X1 + 190, DISPLAY_Y1 + 107 + CFGCOND_MEMBER_DY * i );
			}
		}
		/* 警告文 */
		warn_disp = 0;
		if( mode_num != CFGCOND_MODE_END ) {
			if( mCondition[mode_num][CFGCOND_MEMBER_WAVE]
				!= mConditionOrg[mode_num][CFGCOND_MEMBER_WAVE] ) warn_disp = 1;
		}
		if( warn_disp ) {
			gp = makeInitStrGlist( gp, FONT_FLAG_NORMAL,
								   255,255,255, 255,255,255, 255,255,255, 255,255,255 );
			#if (SW_KN_LANGUAGE == KN_EU)
			if( euLanguage == EL_ENGLISH ) {
				/* 英語モード */
				gp = makeGameMessageGlist( gp, GMESG_KIND_12, GMESG_BECAREFUL12,
										   DISPLAY_X1 + DX_BECAREFUL12, DISPLAY_Y1 + 182, 0, 0 );
				gp = makeGameMessageGlist( gp, GMESG_KIND_12, GMESG_NOTRECORD12,
										   DISPLAY_X1 + DX_NOTRECORD12, DISPLAY_Y1 + 182, 0, 0 );
			}
			else {
				/* 独語モード */
				gp = makeGameMessageGlist( gp, GMESG_KIND_12, GMESG_NOTRECORD12,
										   DISPLAY_X1 + DX_BECAREFUL12 - 2, DISPLAY_Y1 + 182, 0, 0 );
			}
			#else
			gp = makeGameMessageGlist( gp, GMESG_KIND_12, GMESG_BECAREFUL12,
									   DISPLAY_X1 + DX_BECAREFUL12, DISPLAY_Y1 + 182, 0, 0 );
			gp = makeGameMessageGlist( gp, GMESG_KIND_12, GMESG_NOTRECORD12,
									   DISPLAY_X1 + DX_NOTRECORD12, DISPLAY_Y1 + 182, 0, 0 );
			#endif
		}
	}
	
	return( gp );
}
/* ====================================================================== */
/*
	次のモードへ
*/
static void initMainGlistCfgCond2Next( int next_game_mode )
{
	/* ゲームモード */
	gameModeOld = game_mode;
	gameModeNext = next_game_mode;
	game_mode = GM_CFGCOND2NEXT;
	game_stat = GAME_STAT_CFGCOND;
	gameModeChangeFlag = 1;
	gameModeSeq = 0;
	gameModeCount = 0;
	vram_mode = VM_NORMAL;
	Graph_timing_req = GRAPH_TIMING_CFGCOND;

	/* プレイヤー制御変数 */

	/* 初期化関数 */
	initMoveMask( MASK_MODE_FADE_OUT, MASK_FADE_OUT_COUNT, 0 );
	initGWord( GWORD_KIND_NOUSE, GWORD_FLAG_ALLCLR );


	/* 記録画面用カメラ */

	/* ホバー制御フラグ */
	/* シグナル制御 */
}
/* ====================================================================== */
