/********************
	sscommon.c
 ********************/
#include	"ot_header.h"
#include	"sot_world.h"
#include	"endefine.h"
#include	"kn_def.h"
#include	"kn_ctitle.h"
#include	"kn_course.h"
#include	"kn_dynamic.h"

#include "f_waku.tex"
#include "f_waku2.tex"
#include "f_waku_y.tex"

#include "shape_data/window_1.c"
#include "shape_data/window_2.c"
#include "shape_data/window_3.c"
#include "shape_data/window_4.c"

/* 日本語メッセージ */
#if (SW_KN_LANGUAGE == KN_JP || SW_KN_LANGUAGE == KN_US)
#include "tex_data/japan/jf_round1_12.tex"
#include "tex_data/japan/jf_round2_12.tex"
#include "tex_data/japan/jf_round3_12.tex"
#include "tex_data/japan/jf_round4_12.tex"
#include "tex_data/japan/jf_round5_12.tex"
#include "tex_data/japan/jf_round6_12.tex"
#include "tex_data/japan/jf_round7_12.tex"
#include "tex_data/japan/jf_round8_12.tex"
#include "tex_data/japan/jf_finalround12.tex"
#endif

#if (SW_KN_LANGUAGE == KN_ZH)
#include "tex_data_zh/japan/texJfThanks18.tex"
#include "tex_data_zh/japan/jf_round1_12.tex"
#include "tex_data_zh/japan/jf_round2_12.tex"
#include "tex_data_zh/japan/jf_round3_12.tex"
#include "tex_data_zh/japan/jf_round4_12.tex"
#include "tex_data_zh/japan/jf_round5_12.tex"
#include "tex_data_zh/japan/jf_round6_12.tex"
#include "tex_data_zh/japan/jf_round7_12.tex"
#include "tex_data_zh/japan/jf_round8_12.tex"
#include "tex_data_zh/japan/jf_finalround12.tex"
#endif

/* メッセージ */
#if (SW_KN_LANGUAGE == KN_JP)

/* 日本語 */
#include "tex_data/japan/jf_course_d_p12.tex"
#include "tex_data/japan/jf_course_s_beach12.tex"
#include "tex_data/japan/jf_course_s_bay12.tex"
#include "tex_data/japan/jf_course_o_f12.tex"
#include "tex_data/japan/jf_course_m_l12.tex"
#include "tex_data/japan/jf_course_p_p12.tex"
#include "tex_data/japan/jf_course_k_c12.tex"
#include "tex_data/japan/jf_course_s_i12.tex"
#include "tex_data/japan/jf_course_c_w12.tex"
#include "tex_data/japan/jf_jk_rev12.tex"
#include "tex_data/japan/jf_normal12.tex"
#include "tex_data/japan/jf_hard12.tex"
#include "tex_data/japan/jf_expert12.tex"
#include "tex_data/japan/jf_startrace12.tex"
#include "tex_data/japan/jf_time12.tex"
#include "tex_data/japan/jf_score12.tex"
#include "tex_data/japan/jf_end12.tex"
#include "tex_data/japan/jf_rank12.tex"
#include "tex_data/japan/jf_level12.tex"
#include "tex_data/japan/jf_name12.tex"
#include "tex_data/japan/jf_ok12.tex"
#include "tex_data/japan/jf_cancel12.tex"
#include "tex_data/japan/jf_clear_ridepoint12.tex"
#include "tex_data/japan/jf_ridepoint12.tex"
#include "tex_data/japan/jf_continue12.tex"
#include "tex_data/japan/jf_exit12.tex"
#include "tex_data/japan/jf_retire12.tex"
#include "tex_data/japan/jf_go_again_12.tex"
#include "tex_data/japan/jf_restart12.tex"
#include "tex_data/japan/jf_machine_select12.tex"
#include "tex_data/japan/jf_course_select12.tex"
#include "tex_data/japan/jf_point12.tex"
#include "tex_data/japan/jf_rr_clr_12.tex"
#include "tex_data/japan/jf_rr_1st_12.tex"
#include "tex_data/japan/jf_rr_2nd_12.tex"
#include "tex_data/japan/jf_rr_3rd_12.tex"
#include "tex_data/japan/jf_rr_4th_12.tex"
#include "tex_data/japan/jf_rr_no_12.tex"
#include "tex_data/japan/jf_retry12.tex"
#include "tex_data/japan/jf_on12.tex"
#include "tex_data/japan/jf_off12.tex"
#include "tex_data/japan/jf_course_d_p18.tex"
#include "tex_data/japan/jf_course_s_beach18.tex"
#include "tex_data/japan/jf_course_s_bay18.tex"
#include "tex_data/japan/jf_course_o_f18.tex"
#include "tex_data/japan/jf_course_m_l18.tex"
#include "tex_data/japan/jf_course_p_p18.tex"
#include "tex_data/japan/jf_course_k_c18.tex"
#include "tex_data/japan/jf_course_s_i18.tex"
#include "tex_data/japan/jf_course_c_w18.tex"
#include "tex_data/japan/jf_race_result18.tex"
#include "tex_data/japan/jf_point_rank18.tex"
#include "tex_data/japan/jf_normal10.tex"
#include "tex_data/japan/jf_msel_a10.tex"
#include "tex_data/japan/jf_msel_b10.tex"
#include "tex_data/japan/jf_best_lap8.tex"
#include "tex_data/japan/jf_best_time8.tex"
#include "tex_data/japan/jf_yourtime8.tex"
#include "tex_data/japan/jf_total8.tex"
#include "tex_data/japan/jf_normal8.tex"
#include "tex_data/japan/jf_hard8.tex"
#include "tex_data/japan/jf_expert8.tex"
#include "tex_data/japan/jf_rev8.tex"
#include "tex_data/japan/jf_point8.tex"
#include "tex_data/japan/jf_retire8.tex"

#include "tex_data/japan/sin_nou.tex"

#elif (SW_KN_LANGUAGE == KN_ZH)
#include "tex_data_zh/japan/jf_course_d_p12.tex"
#include "tex_data_zh/japan/jf_course_s_beach12.tex"
#include "tex_data_zh/japan/jf_course_s_bay12.tex"
#include "tex_data_zh/japan/jf_course_o_f12.tex"
#include "tex_data_zh/japan/jf_course_m_l12.tex"
#include "tex_data_zh/japan/jf_course_p_p12.tex"
#include "tex_data_zh/japan/jf_course_k_c12.tex"
#include "tex_data_zh/japan/jf_course_s_i12.tex"
#include "tex_data_zh/japan/jf_course_c_w12.tex"
#include "tex_data_zh/japan/jf_jk_rev12.tex"
#include "tex_data_zh/japan/jf_normal12.tex"
#include "tex_data_zh/japan/jf_hard12.tex"
#include "tex_data_zh/japan/jf_expert12.tex"
#include "tex_data_zh/japan/jf_startrace12.tex"
#include "tex_data_zh/japan/jf_time12.tex"
#include "tex_data_zh/japan/jf_score12.tex"
#include "tex_data_zh/japan/jf_end12.tex"
#include "tex_data_zh/japan/jf_rank12.tex"
#include "tex_data_zh/japan/jf_level12.tex"
#include "tex_data_zh/japan/jf_name12.tex"
#include "tex_data_zh/japan/jf_ok12.tex"
#include "tex_data_zh/japan/jf_cancel12.tex"
#include "tex_data_zh/japan/jf_clear_ridepoint12.tex"
#include "tex_data_zh/japan/jf_ridepoint12.tex"
#include "tex_data_zh/japan/jf_continue12.tex"
#include "tex_data_zh/japan/jf_exit12.tex"
#include "tex_data_zh/japan/jf_retire12.tex"
#include "tex_data_zh/japan/jf_go_again_12.tex"
#include "tex_data_zh/japan/jf_restart12.tex"
#include "tex_data_zh/japan/jf_machine_select12.tex"
#include "tex_data_zh/japan/jf_course_select12.tex"
#include "tex_data_zh/japan/jf_point12.tex"
#include "tex_data_zh/japan/jf_rr_clr_12.tex"
#include "tex_data_zh/japan/jf_rr_1st_12.tex"
#include "tex_data_zh/japan/jf_rr_2nd_12.tex"
#include "tex_data_zh/japan/jf_rr_3rd_12.tex"
#include "tex_data_zh/japan/jf_rr_4th_12.tex"
#include "tex_data_zh/japan/jf_rr_no_12.tex"
#include "tex_data_zh/japan/jf_retry12.tex"
#include "tex_data_zh/japan/jf_on12.tex"
#include "tex_data_zh/japan/jf_off12.tex"
#include "tex_data_zh/japan/jf_course_d_p18.tex"
#include "tex_data_zh/japan/jf_course_s_beach18.tex"
#include "tex_data_zh/japan/jf_course_s_bay18.tex"
#include "tex_data_zh/japan/jf_course_o_f18.tex"
#include "tex_data_zh/japan/jf_course_m_l18.tex"
#include "tex_data_zh/japan/jf_course_p_p18.tex"
#include "tex_data_zh/japan/jf_course_k_c18.tex"
#include "tex_data_zh/japan/jf_course_s_i18.tex"
#include "tex_data_zh/japan/jf_course_c_w18.tex"
#include "tex_data_zh/japan/jf_race_result18.tex"
#include "tex_data_zh/japan/jf_point_rank18.tex"
#include "tex_data_zh/japan/jf_normal10.tex"
#include "tex_data_zh/japan/jf_msel_a10.tex"
#include "tex_data_zh/japan/jf_msel_b10.tex"
#include "tex_data_zh/japan/jf_best_lap8.tex"
#include "tex_data_zh/japan/jf_best_time8.tex"
#include "tex_data_zh/japan/jf_yourtime8.tex"
#include "tex_data_zh/japan/jf_total8.tex"
#include "tex_data_zh/japan/jf_normal8.tex"
#include "tex_data_zh/japan/jf_hard8.tex"
#include "tex_data_zh/japan/jf_expert8.tex"
#include "tex_data_zh/japan/jf_rev8.tex"
#include "tex_data_zh/japan/jf_point8.tex"
#include "tex_data_zh/japan/jf_retire8.tex"

#include "tex_data_zh/japan/sin_nou.tex"

#elif (SW_KN_LANGUAGE == KN_US)

/* 英語 */
#include "tex_data/usa/ef_dolphin_10.tex"
#include "tex_data/usa/ef_sunny_10.tex"
#include "tex_data/usa/ef_sunset_10.tex"
#include "tex_data/usa/ef_drake_10.tex"
#include "tex_data/usa/ef_marine_10.tex"
#include "tex_data/usa/ef_port_10.tex"
#include "tex_data/usa/ef_twilight_10.tex"
#include "tex_data/usa/ef_glacier_10.tex"
#include "tex_data/usa/ef_southern_10.tex"
#include "tex_data/usa/ef_normal_10.tex"
#include "tex_data/usa/ef_hard_10.tex"
#include "tex_data/usa/ef_expert_10.tex"
#include "tex_data/usa/ef_reverse_10.tex"
#include "tex_data/usa/ef_s_race_10.tex"
#include "tex_data/usa/ef_time_10.tex"
#include "tex_data/usa/ef_score_10.tex"
#include "tex_data/usa/ef_end_10.tex"
#include "tex_data/usa/ef_rank_10.tex"
#include "tex_data/usa/ef_level_10.tex"
#include "tex_data/usa/ef_rider_10.tex"
#include "tex_data/usa/ef_execute_10.tex"
#include "tex_data/usa/ef_cancel_10.tex"
#include "tex_data/usa/ef_point_needed_10.tex"
#include "tex_data/usa/ef_your_points_10.tex"
#include "tex_data/usa/ef_continue_10.tex"
#include "tex_data/usa/ef_quit_10.tex"
#include "tex_data/usa/ef_retire_10.tex"
#include "tex_data/usa/ef_restart_c_10.tex"
#include "tex_data/usa/ef_restart_10.tex"
#include "tex_data/usa/ef_jetski_select_10.tex"
#include "tex_data/usa/ef_course_select_10.tex"
#include "tex_data/usa/ef_points_10.tex"
#include "tex_data/usa/ef_a_condition_10.tex"
#include "tex_data/usa/ef_1st_b_10.tex"
#include "tex_data/usa/ef_2nd_b_10.tex"
#include "tex_data/usa/ef_3rd_b_10.tex"
#include "tex_data/usa/ef_4th_b_10.tex"
#include "tex_data/usa/ef_norank_b_10.tex"
#include "tex_data/usa/ef_retry_10.tex"
#include "tex_data/usa/ef_on_10.tex"
#include "tex_data/usa/ef_off_10.tex"
#include "tex_data/usa/ef_course_d_p18.tex"
#include "tex_data/usa/ef_course_s_beach18.tex"
#include "tex_data/usa/ef_course_s_bay18.tex"
#include "tex_data/usa/ef_course_o_f18.tex"
#include "tex_data/usa/ef_course_m_l18.tex"
#include "tex_data/usa/ef_course_p_p18.tex"
#include "tex_data/usa/ef_course_k_c18.tex"
#include "tex_data/usa/ef_course_s_i18.tex"
#include "tex_data/usa/ef_course_c_w18.tex"
#include "tex_data/usa/ef_race_result18.tex"
#include "tex_data/usa/ef_point_rank18.tex"
#include "tex_data/usa/ef_a_button_10.tex"
#include "tex_data/usa/ef_b_botton_10.tex"
#include "tex_data/usa/ef_best_lap_8.tex"
#include "tex_data/usa/ef_best_time_8.tex"
#include "tex_data/usa/ef_cu_time_8.tex"
#include "tex_data/usa/ef_normal_8.tex"
#include "tex_data/usa/ef_hard_8.tex"
#include "tex_data/usa/ef_expert_8.tex"
#include "tex_data/usa/ef_reverse_8.tex"
#include "tex_data/usa/ef_points_8.tex"
#include "tex_data/usa/ef_retire_8.tex"


#elif (SW_KN_LANGUAGE == KN_EU)
/* ヨーロッパ版 */

/* 英語 */
#include "tex_data/usa/ef_normal_10.tex"
#include "tex_data/usa/ef_hard_10.tex"
#include "tex_data/usa/ef_expert_10.tex"
#include "tex_data/usa/ef_reverse_10.tex"
#include "tex_data/usa/ef_s_race_10.tex"

#include "tex_data/usa/ef_course_d_p18.tex"
#include "tex_data/usa/ef_course_s_beach18.tex"
#include "tex_data/usa/ef_course_s_bay18.tex"
#include "tex_data/usa/ef_course_o_f18.tex"
#include "tex_data/usa/ef_course_m_l18.tex"
#include "tex_data/usa/ef_course_p_p18.tex"
#include "tex_data/usa/ef_course_k_c18.tex"
#include "tex_data/usa/ef_course_s_i18.tex"
#include "tex_data/usa/ef_course_c_w18.tex"

/* 独語 */
#include "tex_data/ger/ge_normal_10.tex"
#include "tex_data/ger/ge_hard_10.tex"
#include "tex_data/ger/ge_expert_10.tex"
#include "tex_data/ger/ge_reverse_10.tex"
#include "tex_data/ger/ge_s_race_10.tex"

#endif

#define	KZ_RM_CLEAR_CVG(clk)					\
	FORCE_BL | CVG_X_ALPHA | IM_RD | CVG_DST_FULL |	 	\
	GBL_c##clk(G_BL_CLR_MEM, G_BL_0, G_BL_CLR_MEM, G_BL_1MA)

Vp vpKnInit = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* translate */
} ;

/* マシン用ライト */
Lights1 light1Machine = gdSPDefLights1( 127, 127, 127,		/* ambient color */
  	       				   		   		255, 255, 255,		/* light color */
								   		-50, -50,  50 );	/* normal */

/* =========================================================================*/
/*
	文字列表示のモード設定
*/
Gfx dlInitFont[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPTexture( 0x8000, 0x8000, G_TX_RENDERTILE, 0, G_ON ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureLUT( G_TT_NONE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_NONE ),
	gsDPSetTextureFilter( G_TF_POINT ),
	gsDPSetTextureConvert( G_TC_FILT ),
	gsDPSetCombineMode( G_CC_DECALRGBA, G_CC_DECALRGBA ),
	gsDPSetRenderMode( G_RM_XLU_SURF, G_RM_XLU_SURF2 ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsSPEndDisplayList()
};


Gfx dlInitShade[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK | G_CLIPPING ),
	gsSPTexture( 0x8000, 0x8000, G_TX_RENDERTILE, 0, G_ON ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureLUT( G_TT_NONE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_PERSP ),
	gsDPSetTextureFilter( G_TF_BILERP ),
	gsDPSetTextureConvert( G_TC_FILT ),
	gsDPSetCombineMode( G_CC_MODULATEIA, G_CC_MODULATEIA ),
	gsDPSetRenderMode( G_RM_XLU_SURF, G_RM_XLU_SURF2 ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
  つぶつぶ消し
*/
Gfx dlInitClearCvg[] = {
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPPipelineMode( G_PM_NPRIMITIVE ),
	gsDPSetRenderMode( KZ_RM_CLEAR_CVG(1), KZ_RM_CLEAR_CVG(2) ),
	gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetAlphaCompare( G_AC_NONE ),
	gsDPSetFillColor( 0xFFFFFFFF ),

	gsSPEndDisplayList()
};

Gfx dlClearCvg1[] = {
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPPipelineMode( G_PM_NPRIMITIVE ),
	gsDPSetRenderMode( KZ_RM_CLEAR_CVG(1), KZ_RM_CLEAR_CVG(2) ),
	gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetAlphaCompare( G_AC_NONE ),
	gsDPSetFillColor( 0xFFFFFFFF ),

	gsDPFillRectangle( DISPLAY_X1, DISPLAY_Y1, DISPLAY_X2, DISPLAY_Y1+1 ),
	gsDPFillRectangle( DISPLAY_X1, DISPLAY_Y2-1, DISPLAY_X2, DISPLAY_Y2 ),

	gsSPEndDisplayList()
};

Gfx dlClearCvg2[] = {
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPPipelineMode( G_PM_NPRIMITIVE ),
	gsDPSetRenderMode( KZ_RM_CLEAR_CVG(1), KZ_RM_CLEAR_CVG(2) ),
	gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetAlphaCompare( G_AC_NONE ),
	gsDPSetFillColor( 0xFFFFFFFF ),

	gsDPFillRectangle( DISPLAY_X1_1P, DISPLAY_Y2_1P-1, DISPLAY_X2_1P, DISPLAY_Y2_1P ),
	gsDPFillRectangle( DISPLAY_X1_2P, DISPLAY_Y2_2P-1, DISPLAY_X2_2P, DISPLAY_Y2_2P ),

	gsSPEndDisplayList()
};
/* =========================================================================*/
/*
	タイトル用キューブ
*/
/* 頂点 */
//#define VTX_CUBE_DM -6
//#define VTX_CUBE_DP 5
#define VTX_CUBE_DM -4
#define VTX_CUBE_DP 3
#define VTX_CUBE_A  255
static Vtx vtxCube1[] = {
	{ VTX_CUBE_DM, VTX_CUBE_DM, VTX_CUBE_DP,  0,  0, 0,  0, 0, 127, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DM, VTX_CUBE_DP,  0,  0, 0,  0, 0, 127, VTX_CUBE_A },
    { VTX_CUBE_DM, VTX_CUBE_DP, VTX_CUBE_DP,  0,  0, 0,  0, 0, 127, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DP, VTX_CUBE_DP,  0,  0, 0,  0, 0, 127, VTX_CUBE_A },

	{ VTX_CUBE_DM, VTX_CUBE_DM, VTX_CUBE_DM,  0,  0, 0,  0, 0, -127, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DM, VTX_CUBE_DM,  0,  0, 0,  0, 0, -127, VTX_CUBE_A },
    { VTX_CUBE_DM, VTX_CUBE_DP, VTX_CUBE_DM,  0,  0, 0,  0, 0, -127, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DP, VTX_CUBE_DM,  0,  0, 0,  0, 0, -127, VTX_CUBE_A },
};
static Vtx vtxCube2[] = {
    { VTX_CUBE_DP, VTX_CUBE_DM, VTX_CUBE_DP,  0,  0, 0,  127, 0, 0, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DM, VTX_CUBE_DM,  0,  0, 0,  127, 0, 0, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DP, VTX_CUBE_DP,  0,  0, 0,  127, 0, 0, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DP, VTX_CUBE_DM,  0,  0, 0,  127, 0, 0, VTX_CUBE_A },

	{ VTX_CUBE_DM, VTX_CUBE_DM, VTX_CUBE_DP,  0,  0, 0,  -127, 0, 0, VTX_CUBE_A },
	{ VTX_CUBE_DM, VTX_CUBE_DM, VTX_CUBE_DM,  0,  0, 0,  -127, 0, 0, VTX_CUBE_A },
    { VTX_CUBE_DM, VTX_CUBE_DP, VTX_CUBE_DP,  0,  0, 0,  -127, 0, 0, VTX_CUBE_A },
    { VTX_CUBE_DM, VTX_CUBE_DP, VTX_CUBE_DM,  0,  0, 0,  -127, 0, 0, VTX_CUBE_A },
};
static Vtx vtxCube3[] = {
    { VTX_CUBE_DM, VTX_CUBE_DP, VTX_CUBE_DP,  0,  0, 0,  0, 127, 0, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DP, VTX_CUBE_DP,  0,  0, 0,  0, 127, 0, VTX_CUBE_A },
    { VTX_CUBE_DM, VTX_CUBE_DP, VTX_CUBE_DM,  0,  0, 0,  0, 127, 0, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DP, VTX_CUBE_DM,  0,  0, 0,  0, 127, 0, VTX_CUBE_A },

	{ VTX_CUBE_DM, VTX_CUBE_DM, VTX_CUBE_DP,  0,  0, 0,  0, -127, 0, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DM, VTX_CUBE_DP,  0,  0, 0,  0, -127, 0, VTX_CUBE_A },
	{ VTX_CUBE_DM, VTX_CUBE_DM, VTX_CUBE_DM,  0,  0, 0,  0, -127, 0, VTX_CUBE_A },
    { VTX_CUBE_DP, VTX_CUBE_DM, VTX_CUBE_DM,  0,  0, 0,  0, -127, 0, VTX_CUBE_A },
};

/* ライト */
static Lights1 lightCube = gdSPDefLights1( 10,  10,  10,	/* ambient color */
  	       				   		   255,   0,   0,	/* light color */
								   -50, -50,  50 );	/* normal */
Gfx dlDrawCube[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_SHADE | G_LIGHTING | G_CULL_BACK  | G_CLIPPING ),
    gsSPSetLights1( lightCube ),
	gsSPTexture( 0, 0, 0, 0, G_OFF ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
    gsDPSetRenderMode( G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2 ),
    gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsSPEndDisplayList()
};

Gfx dlDrawCube2[] = {
    gsSPVertex( &vtxCube1, 8, 0 ),
    gsSP1Triangle( 0, 3, 1, 0 ),
    gsSP1Triangle( 0, 2, 3, 0 ),
    gsSP1Triangle( 5, 6, 4, 0 ),
    gsSP1Triangle( 5, 7, 6, 0 ),

    gsSPVertex( &vtxCube2, 8, 0 ),
    gsSP1Triangle( 0, 3, 1, 0 ),
    gsSP1Triangle( 0, 2, 3, 0 ),
    gsSP1Triangle( 5, 6, 4, 0 ),
    gsSP1Triangle( 5, 7, 6, 0 ),

    gsSPVertex( &vtxCube3, 8, 0 ),
    gsSP1Triangle( 0, 3, 1, 0 ),
    gsSP1Triangle( 0, 2, 3, 0 ),
    gsSP1Triangle( 5, 6, 4, 0 ),
    gsSP1Triangle( 5, 7, 6, 0 ),
	
	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
	ジェット表示
*/
Gfx dlInitMachineModel[] = {
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_LIGHTING | G_ZBUFFER | G_CULL_BACK | G_SHADE | G_SHADING_SMOOTH  | G_CLIPPING ),
	gsSPSetLights1( light1Machine ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_2CYCLE ),
	gsDPSetTextureLUT( G_TT_RGBA16 ),
	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_PERSP ),
	gsDPSetTextureFilter( G_TF_BILERP ),
	gsDPSetTextureConvert( G_TC_FILT ),
	gsDPSetRenderMode( G_RM_PASS, G_RM_AA_ZB_OPA_SURF2 ),
	gsDPSetCombineMode( G_CC_MODULATERGBDECALA, G_CC_PASS2 ),

	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
	ダミーディスプレイリスト
*/
Gfx knDummy_GL[] = {
    gsSPEndDisplayList(),
};

/* =========================================================================*/
/*
	こんふぃぐ
*/
static Vtx vtxConfigBG[] = {
    {   0,   0, 0,  0,  0, 0,  0, 0,   0, 255 },
    { 320,   0, 0,  0,  0, 0,  0, 0,   0, 255 },
    {   0, 239, 0,  0,  0, 0,  0, 0, 128, 255 },
    { 320, 239, 0,  0,  0, 0,  0, 0, 128, 255 },
};
Gfx dlConfigBG[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK  | G_CLIPPING ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
    gsDPSetRenderMode( G_RM_OPA_SURF, G_RM_OPA_SURF2 ),
    gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetAlphaCompare( G_AC_NONE ),
    gsSPVertex( &vtxConfigBG, 4, 0 ),
    gsSP1Triangle( 0, 3, 1, 0 ),
    gsSP1Triangle( 0, 2, 3, 0 ),

	gsSPEndDisplayList()
};
/* =========================================================================*/
/*
	ワイプ用初期化
*/
Gfx dlInitWipe[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_SHADE  | G_CLIPPING ),
	gsSPTexture( 0, 0, 0, 0, G_OFF ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_2CYCLE ),
	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureLUT( G_TT_NONE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_PERSP ),
	gsDPSetTextureFilter( G_TF_BILERP ),
	gsDPSetTextureConvert( G_TC_FILT ),
	gsDPSetRenderMode( G_RM_PASS, G_RM_OPA_SURF2 ),
	gsDPSetScissor( G_SC_NON_INTERLACE, 0, 0, SCREEN_WD, SCREEN_HT ),

	gsSPEndDisplayList()
};
/* =========================================================================*/
/*
	枠 初期化
*/
Gfx dlInitWaku[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPTexture( 0x8000, 0x8000, G_TX_RENDERTILE, 0, G_ON ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetPrimColor( 0, 0, 255, 255, 255, COMMON_WAKU_ALPHA ),
	gsDPSetRenderMode( G_RM_XLU_SURF, G_RM_XLU_SURF2 ),
	gsDPSetCombineMode( G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureLUT( G_TT_NONE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_NONE ),
	gsDPSetTextureFilter( G_TF_BILERP ),
	gsDPSetTextureConvert( G_TC_FILT ),

	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
	文字シェイプ
*/
/* ライト */
static Lights1 lightLetter = gdSPDefLights1(  10,  10,  10,	/* ambient color */
  	       							   		 255,   0,   0,	/* light color */
										     -50,  50,  50 );	/* normal */
Gfx dlInitLetterModel[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_ZBUFFER | G_SHADE | G_LIGHTING | G_CULL_BACK  | G_CLIPPING ),
    gsSPSetLights1( lightLetter ),
	gsSPTexture( 0, 0, 0, 0, G_OFF ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
    gsDPSetRenderMode( G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2 ),
    gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsSPEndDisplayList()
};

Vp vpCMapCTitle = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	(DISPLAY_X1+SX_CTITLE_CMAP+WD_CTITLE_CMAP/2)<<2,
	(DISPLAY_Y1+SY_CTITLE_CMAP+HT_CTITLE_CMAP/2)<<2, G_MAXZ/2, 0,	/* translate */
} ;
Vp vpCMapCourse = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	(DISPLAY_X1+SX_COURSE_CMAP+WD_COURSE_CMAP/2)<<2,
	(DISPLAY_Y1+SY_COURSE_CMAP+HT_COURSE_CMAP/2)<<2, G_MAXZ/2, 0,	/* translate */
} ;

Gfx dlInitCMapModel[] = {
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH | G_LIGHTING | G_CULL_BACK  | G_CLIPPING ),
	gsSPSetLights1( rspKnDynamic.lightCMap ),
	gsSPTexture( 0x8000, 0x8000, G_TX_RENDERTILE, 0, G_OFF ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureLUT( G_TT_NONE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_PERSP ),
	gsDPSetTextureFilter( G_TF_BILERP ),
	gsDPSetTextureConvert( G_TC_FILT ),
	gsDPSetRenderMode( G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2 ),

	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
  マシンセレクト背景
*/
static Vtx vtxSelectBG[] = {
	/*  x    y   z   f   tc  tc     r    g    b    a */
    {   0,   0,  0,  0,   0,  0,    0,   0,   0, 128 },
    { 319,   0,  0,  0, 319, 20,    0,   0,   0, 128 },
    {   0, 239,  0,  0,   0,  0,    0,   0,   0, 0 },
    { 319, 239,  0,  0, 319, 20,    0,   0,   0, 0 },
};
Gfx dlSelectBG[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPSetGeometryMode( G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK  | G_CLIPPING ),
	gsSPTexture( 0, 0, 0, 0, G_OFF ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetRenderMode( G_RM_XLU_SURF, G_RM_XLU_SURF2 ),
	gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),

	gsDPSetAlphaCompare( G_AC_NONE ),
	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureLUT( G_TT_NONE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_NONE ),
	gsDPSetTextureFilter( G_TF_POINT ),
	gsDPSetTextureConvert( G_TC_FILT ),

	gsSPVertex( &vtxSelectBG, 4, 0 ),
	gsSP1Triangle( 0, 3, 1, 0 ),
	gsSP1Triangle( 0, 2, 3, 0 ),

	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
	底
*/
Gfx dlDispSeaBottom[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
    gsSPTexture( 0, 0, 0, 0, G_OFF ),
    gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetCombineMode( G_CC_PRIMITIVE, G_CC_PRIMITIVE ),
	gsDPSetRenderMode( G_RM_OPA_SURF, G_RM_OPA_SURF2 ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsSPEndDisplayList()
};

Gfx dlInitBlindBoard[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( 0xffffffff ),
	gsSPSetGeometryMode( G_ZBUFFER | G_SHADE | G_CULL_BACK  | G_CLIPPING ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
    gsDPSetRenderMode( G_RM_ZB_OPA_SURF, G_RM_ZB_OPA_SURF2 ),
    gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsSPEndDisplayList()
};

/* course 1 */
#define BLIND1_COLOR_R	0
#define BLIND1_COLOR_G	242
#define BLIND1_COLOR_B	228
Vtx vtxBlindBoard1[] = {
    { -800, -100, -800,  0,  0, 0, BLIND1_COLOR_R, BLIND1_COLOR_G, BLIND1_COLOR_B, 255 },
    {  800, -100, -800,  0,  0, 0, BLIND1_COLOR_R, BLIND1_COLOR_G, BLIND1_COLOR_B, 255 },
    { -800, -100,  800,  0,  0, 0, BLIND1_COLOR_R, BLIND1_COLOR_G, BLIND1_COLOR_B, 255 },
    {  800, -100,  800,  0,  0, 0, BLIND1_COLOR_R, BLIND1_COLOR_G, BLIND1_COLOR_B, 255 },
};

/* course 2 */
#define BLIND2_COLOR_R	227
#define BLIND2_COLOR_G	112
#define BLIND2_COLOR_B	129
Vtx vtxBlindBoard2[] = {
    { -800, -100, -800,  0,  0, 0, BLIND2_COLOR_R, BLIND2_COLOR_G, BLIND2_COLOR_B, 255 },
    {  800, -100, -800,  0,  0, 0, BLIND2_COLOR_R, BLIND2_COLOR_G, BLIND2_COLOR_B, 255 },
    { -800, -100,  800,  0,  0, 0, BLIND2_COLOR_R, BLIND2_COLOR_G, BLIND2_COLOR_B, 255 },
    {  800, -100,  800,  0,  0, 0, BLIND2_COLOR_R, BLIND2_COLOR_G, BLIND2_COLOR_B, 255 },
};

/* course 3 */
#define BLIND3_COLOR_R	43
#define BLIND3_COLOR_G	135
#define BLIND3_COLOR_B	146
Vtx vtxBlindBoard3[] = {
    { -800, -100, -800,  0,  0, 0, BLIND3_COLOR_R, BLIND3_COLOR_G, BLIND3_COLOR_B, 255 },
    {  800, -100, -800,  0,  0, 0, BLIND3_COLOR_R, BLIND3_COLOR_G, BLIND3_COLOR_B, 255 },
    { -800, -100,  800,  0,  0, 0, BLIND3_COLOR_R, BLIND3_COLOR_G, BLIND3_COLOR_B, 255 },
    {  800, -100,  800,  0,  0, 0, BLIND3_COLOR_R, BLIND3_COLOR_G, BLIND3_COLOR_B, 255 },
};

/* course 4 */
#define BLIND4_COLOR_R	137
#define BLIND4_COLOR_G	180
#define BLIND4_COLOR_B	189
Vtx vtxBlindBoard4[] = {
    { -800, -100, -800,  0,  0, 0, BLIND4_COLOR_R, BLIND4_COLOR_G, BLIND4_COLOR_B, 255 },
    {  800, -100, -800,  0,  0, 0, BLIND4_COLOR_R, BLIND4_COLOR_G, BLIND4_COLOR_B, 255 },
    { -800, -100,  800,  0,  0, 0, BLIND4_COLOR_R, BLIND4_COLOR_G, BLIND4_COLOR_B, 255 },
    {  800, -100,  800,  0,  0, 0, BLIND4_COLOR_R, BLIND4_COLOR_G, BLIND4_COLOR_B, 255 },
};

/* course 5 */
#define BLIND5_COLOR_R	80
#define BLIND5_COLOR_G	117
#define BLIND5_COLOR_B	85
Vtx vtxBlindBoard5[] = {
    { -800, -100, -800,  0,  0, 0, BLIND5_COLOR_R, BLIND5_COLOR_G, BLIND5_COLOR_B, 255 },
    {  800, -100, -800,  0,  0, 0, BLIND5_COLOR_R, BLIND5_COLOR_G, BLIND5_COLOR_B, 255 },
    { -800, -100,  800,  0,  0, 0, BLIND5_COLOR_R, BLIND5_COLOR_G, BLIND5_COLOR_B, 255 },
    {  800, -100,  800,  0,  0, 0, BLIND5_COLOR_R, BLIND5_COLOR_G, BLIND5_COLOR_B, 255 },
};

/* course 6 */
#define BLIND6_COLOR_R	12
#define BLIND6_COLOR_G	58
#define BLIND6_COLOR_B	117
Vtx vtxBlindBoard6[] = {
    { -800, -100, -800,  0,  0, 0, BLIND6_COLOR_R, BLIND6_COLOR_G, BLIND6_COLOR_B, 255 },
    {  800, -100, -800,  0,  0, 0, BLIND6_COLOR_R, BLIND6_COLOR_G, BLIND6_COLOR_B, 255 },
    { -800, -100,  800,  0,  0, 0, BLIND6_COLOR_R, BLIND6_COLOR_G, BLIND6_COLOR_B, 255 },
    {  800, -100,  800,  0,  0, 0, BLIND6_COLOR_R, BLIND6_COLOR_G, BLIND6_COLOR_B, 255 },
};

/* course 7 */
#define BLIND7_COLOR_R	28
#define BLIND7_COLOR_G	90
#define BLIND7_COLOR_B	221
Vtx vtxBlindBoard7[] = {
    { -800, -100, -800,  0,  0, 0, BLIND7_COLOR_R, BLIND7_COLOR_G, BLIND7_COLOR_B, 255 },
    {  800, -100, -800,  0,  0, 0, BLIND7_COLOR_R, BLIND7_COLOR_G, BLIND7_COLOR_B, 255 },
    { -800, -100,  800,  0,  0, 0, BLIND7_COLOR_R, BLIND7_COLOR_G, BLIND7_COLOR_B, 255 },
    {  800, -100,  800,  0,  0, 0, BLIND7_COLOR_R, BLIND7_COLOR_G, BLIND7_COLOR_B, 255 },
};

/* =========================================================================*/
Gfx dlInitCommonBG[] = {
	gsSPViewport( &vpKnInit ),
	gsSPClearGeometryMode( G_GEOM_ALL ),
	gsSPTexture( 0x8000, 0x8000, G_TX_RENDERTILE, 0, G_ON ),
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetTextureLOD( G_TL_TILE ),
	gsDPSetTextureLUT( G_TT_NONE ),
	gsDPSetTextureDetail( G_TD_CLAMP ),
	gsDPSetTexturePersp( G_TP_NONE ),
	gsDPSetTextureFilter( G_TF_POINT ),
	gsDPSetTextureConvert( G_TC_FILT ),
	gsDPSetCombineMode( G_CC_DECALRGBA, G_CC_DECALRGBA ),
	gsDPSetRenderMode( G_RM_OPA_SURF, G_RM_OPA_SURF2 ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	gsSPEndDisplayList()
};
/* =========================================================================*/
