/*
	テクスチャ
*/
#include	<ultra64.h>
#include	"../../ot_system.h"
#include	"../../kn_memory.h"
#include	"../../kn_def.h"
#include	"../../kn_ctitle.h"

/* 枠 */
#include "../../tex_data/ctitle/map_w_u.tex"
#include "../../tex_data/ctitle/map_w_d.tex"
#include "../../tex_data/ctitle/map_w_l.tex"
#include "../../tex_data/ctitle/map_w_r.tex"

#include "jf_op_c1.tex"
#include "jf_op_c2.tex"
#include "jf_op_c3.tex"
#include "jf_op_c4.tex"
#include "jf_op_c5.tex"

/* 日本語メッセージ */
#include "jf_op_chp18.tex"
#include "jf_op_norm18.tex"
#include "jf_op_hard18.tex"
#include "jf_op_exp18.tex"
#include "jf_op_rev18.tex"

//#include "jf_clearpoint18.tex"
//#include "jf_rank18.tex"
//#include "jf_within18.tex"

#include "jf_op_r6_18.tex"
#include "jf_op_r7_18.tex"
#include "jf_op_r8_18.tex"

#include "jf_course8.tex"
#include "jf_record8.tex"

static Vp vp = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* translate */
};

#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)

/* =========================================================================*/
/* =========================================================================*/
/*
	ＢＧ
*/
Gfx dlCTitleClearZB[] = {
	gsSPViewport( &vp ),
	gsSPClearGeometryMode( 0xffffffff ),
	gsSPSetGeometryMode( G_SHADE ),
    gsSPTexture( 0, 0, 0, 0, G_OFF ),
    gsDPPipeSync( ),
    gsDPSetCycleType( G_CYC_FILL ),
	gsDPSetCombineMode( G_CC_SHADE, G_CC_SHADE ),
	gsDPSetRenderMode( G_RM_OPA_SURF, G_RM_OPA_SURF2 ),
    gsDPSetDepthImage( OS_K0_TO_PHYSICAL((ushort *)Z_BUFFER) ),
    gsDPSetColorImage( G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WD,
				    OS_K0_TO_PHYSICAL((ushort *)Z_BUFFER) ),
    gsDPSetFillColor( (GPACK_ZDZ(G_MAXFBZ,0) << 16 | GPACK_ZDZ(G_MAXFBZ,0)) ),
    gsDPFillRectangle( DISPLAY_X1+SX_CTITLE_CMAP, DISPLAY_Y1+SY_CTITLE_CMAP,
					   DISPLAY_X1+SX_CTITLE_CMAP+WD_CTITLE_CMAP-1,
					   DISPLAY_Y1+SY_CTITLE_CMAP+HT_CTITLE_CMAP-1 ),

	gsSPEndDisplayList()
};
/* =========================================================================*/
/*
	カバー値のクリア
*/
Gfx dlCTitleCMapClearCvg[] = {
	gsSPViewport( &vp ),
	gsSPClearGeometryMode( 0xffffffff ),
	gsSPSetGeometryMode( G_SHADE ),
    gsSPTexture( 0, 0, 0, 0, G_OFF ),
	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 ),

#if 0
	gsDPFillRectangle( DISPLAY_X1+SX_CTITLE_CMAP-1, DISPLAY_Y1+SY_CTITLE_CMAP-1,
					   DISPLAY_X1++96, DISPLAY_Y1+48+1 ),
	gsDPFillRectangle( DISPLAY_X1+34, DISPLAY_Y1+49+96,
					   DISPLAY_X1+34+96, DISPLAY_Y1+49+98 ),

	gsDPFillRectangle( DISPLAY_X1+34, DISPLAY_Y1+48,
					   DISPLAY_X1+34+2, DISPLAY_Y1+48+97 ),
	gsDPFillRectangle( DISPLAY_X1+34+96, DISPLAY_Y1+48,
					   DISPLAY_X1+34+96+2, DISPLAY_Y1+48+97 ),
#endif
	
	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
	みにまっぷ枠
*/
Gfx dlCTitleCMapWaku[] = {
	#define SX_CMAP_WAKU_U	(DISPLAY_X1+20)
	#define SY_CMAP_WAKU_U	(DISPLAY_Y1+40)
	#define WD_CMAP_WAKU_U	156
	#define HT_CMAP_WAKU_U	3
	gsDPLoadTextureTile( texMapWU, G_IM_FMT_RGBA, G_IM_SIZ_16b,
			WD_CMAP_WAKU_U, HT_CMAP_WAKU_U,
			0, 0,
			WD_CMAP_WAKU_U-1, HT_CMAP_WAKU_U-1,
			0,
			G_TX_CLAMP, G_TX_CLAMP,	G_TX_NOMASK, G_TX_NOMASK,
			G_TX_NOLOD, G_TX_NOLOD ),
	gsSPTextureRectangle(
			SX_CMAP_WAKU_U << 2, SY_CMAP_WAKU_U << 2,
			( SX_CMAP_WAKU_U + WD_CMAP_WAKU_U ) << 2,
			( SY_CMAP_WAKU_U + HT_CMAP_WAKU_U ) << 2,
			G_TX_RENDERTILE, 0, 0,
			1 << 10, 1 << 10 ),
	
	#define SX_CMAP_WAKU_D	(DISPLAY_X1+20)
	#define SY_CMAP_WAKU_D	(DISPLAY_Y1+147)
	#define WD_CMAP_WAKU_D	156
	#define HT_CMAP_WAKU_D	3
	gsDPLoadTextureTile( texMapWD, G_IM_FMT_RGBA, G_IM_SIZ_16b,
			WD_CMAP_WAKU_D, HT_CMAP_WAKU_D,
			0, 0,
			WD_CMAP_WAKU_D-1, HT_CMAP_WAKU_D-1,
			0,
			G_TX_CLAMP, G_TX_CLAMP,	G_TX_NOMASK, G_TX_NOMASK,
			G_TX_NOLOD, G_TX_NOLOD ),
	gsSPTextureRectangle(
			SX_CMAP_WAKU_D << 2, SY_CMAP_WAKU_D << 2,
			( SX_CMAP_WAKU_D + WD_CMAP_WAKU_D ) << 2,
			( SY_CMAP_WAKU_D + HT_CMAP_WAKU_D ) << 2,
			G_TX_RENDERTILE, 0, 0,
			1 << 10, 1 << 10 ),
	
	#define SX_CMAP_WAKU_L	(DISPLAY_X1+20)
	#define SY_CMAP_WAKU_L	(DISPLAY_Y1+43)
	#define WD_CMAP_WAKU_L	104
	#define HT_CMAP_WAKU_L	3
	gsDPLoadTextureBlock( texMapWL, G_IM_FMT_RGBA, G_IM_SIZ_16b,
			WD_CMAP_WAKU_L, HT_CMAP_WAKU_L, 0,
			G_TX_CLAMP, G_TX_CLAMP,	G_TX_NOMASK, G_TX_NOMASK,
			G_TX_NOLOD, G_TX_NOLOD ),
	gsSPTextureRectangleFlip(
			SX_CMAP_WAKU_L << 2, SY_CMAP_WAKU_L << 2,
			( SX_CMAP_WAKU_L + HT_CMAP_WAKU_L ) << 2,
			( SY_CMAP_WAKU_L + WD_CMAP_WAKU_L ) << 2,
			G_TX_RENDERTILE,
			(WD_CMAP_WAKU_L-1) << 5, 0 << 5,
			-1 << 10, 1 << 10 ),
	
	#define SX_CMAP_WAKU_R	(DISPLAY_X1+172)
	#define SY_CMAP_WAKU_R	(DISPLAY_Y1+43)
	#define WD_CMAP_WAKU_R	104
	#define HT_CMAP_WAKU_R	3
	gsDPLoadTextureBlock( texMapWR, G_IM_FMT_RGBA, G_IM_SIZ_16b,
			WD_CMAP_WAKU_R, HT_CMAP_WAKU_R, 0,
			G_TX_CLAMP, G_TX_CLAMP,	G_TX_NOMASK, G_TX_NOMASK,
			G_TX_NOLOD, G_TX_NOLOD ),
	gsSPTextureRectangleFlip(
			SX_CMAP_WAKU_R << 2, SY_CMAP_WAKU_R << 2,
			( SX_CMAP_WAKU_R + HT_CMAP_WAKU_R ) << 2,
			( SY_CMAP_WAKU_R + WD_CMAP_WAKU_R ) << 2,
			G_TX_RENDERTILE,
			(WD_CMAP_WAKU_R-1) << 5, 0 << 5,
			-1 << 10, 1 << 10 ),
	
	gsSPEndDisplayList()
};
