/*
	レース結果時に転送  
*/
#include	<ultra64.h>

#include "../../ot_system.h"
#include "../../sot_world.h"

#include "cassette.tex"
#include "pack.tex"
#include "arrow_l.tex"
#include "arrow_r.tex"
#include "cassette_waku.tex"
#include "select1p.tex"
#include "caution_3.tex"

/* 日本語メッセージ */
#include "jf_save_load18.tex"

//#include "jf_copy16.tex"
#include "jf_erase16.tex"
#include "jf_control_pack16.tex"
//#include "jf_not_copy16.tex"
#include "jf_note16.tex"
#include "jf_not_erase16.tex"
#include "jf_set_contpack16_1.tex"
#include "jf_set_contpack16_2.tex"
#include "jf_new_rank16_1.tex"
#include "jf_new_rank16_2.tex"
//#include "jf_packnotread16.tex"

#include "jf_copy12.tex"
#include "jf_erase12.tex"
#include "jf_machine12.tex"
#include "jf_timescore12.tex"

#include "jf_cassette8.tex"
#include "jf_controller_pack8.tex"

#include "texJfSubete12.tex"
#include "texJfSinNotNote.tex"
#include "texJfKiroku12.tex"
#include "texJfGhost12.tex"
#include "texJfFor2P10.tex"
#include "texJfFor1P10.tex"

#include "jf_mem_nonote.tex"
#include "jf_mem_nospace.tex"

/* =========================================================================*/
/* View Port */
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 */
} ;
static Vp vpMachine0 = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	(DISPLAY_X1_1P+23+63/2)<<2, (DISPLAY_Y1_1P+127+40/2)<<2, G_MAXZ/2, 0,	/* translate */
} ;
static Vp vpMachine1 = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	(DISPLAY_X1_1P+88+63/2)<<2, (DISPLAY_Y1_1P+127+40/2)<<2, G_MAXZ/2, 0,	/* translate */
} ;
static Vp vpMachine2 = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	(DISPLAY_X1_1P+153+63/2)<<2, (DISPLAY_Y1_1P+127+40/2)<<2, G_MAXZ/2, 0,	/* translate */
} ;
static Vp vpMachine3 = {
	SCREEN_WD*2, SCREEN_HT*2, G_MAXZ/2, 0,	/* scale */
	(DISPLAY_X1_1P+218+63/2)<<2, (DISPLAY_Y1_1P+127+40/2)<<2, G_MAXZ/2, 0,	/* translate */
} ;

/* =========================================================================*/
/*
	ＢＧ
*/
/* 初期化 */
Gfx dlInitCfgSave_DecalRGBA[] = {
	gsSPViewport( &vp ),
	gsSPClearGeometryMode( 0xffffffff ),
	gsSPSetGeometryMode( G_SHADE ),
	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()
};
/* =========================================================================*/
/*	６４（通常表示） */
Gfx dlN64_Normal[] = {
	gsDPLoadTextureBlock( (uint)(texCassette), G_IM_FMT_RGBA, G_IM_SIZ_16b,
		32, 32,	0,
		G_TX_CLAMP, G_TX_CLAMP,
		G_TX_NOMASK, G_TX_NOMASK,
		G_TX_NOLOD, G_TX_NOLOD ),

	gsSPTextureRectangle( 
		(DISPLAY_X1 + 24) << 2, (DISPLAY_Y1 + 52) << 2,
		(DISPLAY_X1 + 24 + 32) << 2, (DISPLAY_Y1 + 52 + 32) << 2,
		G_TX_RENDERTILE,
		0, 0,
		1 << 10, 1 << 10 ),

	gsSPEndDisplayList()
};
/*	コントローラー（通常表示） */
Gfx dlPack_Normal[] = {
	gsDPLoadTextureBlock( (uint)(texPack), G_IM_FMT_RGBA, G_IM_SIZ_16b,
		32, 32,	0,
		G_TX_CLAMP, G_TX_CLAMP,
		G_TX_NOMASK, G_TX_NOMASK,
		G_TX_NOLOD, G_TX_NOLOD ),

	gsSPTextureRectangle( 
		(DISPLAY_X1 + 248) << 2, (DISPLAY_Y1 + 52) << 2,
		(DISPLAY_X1 + 248 + 32) << 2, (DISPLAY_Y1 + 52 + 32) << 2,
		G_TX_RENDERTILE,
		0, 0,
		1 << 10, 1 << 10 ),

	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
	矢印
*/
Gfx dlInitArrow[] = {
	gsDPPipeSync(),
	gsDPSetRenderMode( G_RM_XLU_SURF, G_RM_XLU_SURF2 ),
	gsDPSetCombineMode( G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM ),
	gsDPSetPrimColor( 0, 0, 255, 255, 255, 255 ),

	gsSPEndDisplayList()
};
Gfx dlLoadArrowL[] = {
	gsDPLoadTextureTile( texArrowL, G_IM_FMT_IA, G_IM_SIZ_8b,
		44, 20,
		 0,  0,
		43, 19,
		 0,
		G_TX_CLAMP, G_TX_CLAMP,
		G_TX_NOMASK, G_TX_NOMASK,
		G_TX_NOLOD, G_TX_NOLOD ),

	gsSPEndDisplayList()
};
Gfx dlDispArrowL[] = {
	gsSPTextureRectangle( 
		(DISPLAY_X1 + 60) << 2, (DISPLAY_Y1 + 55) << 2,
		(DISPLAY_X1 + 60 + 44) << 2, (DISPLAY_Y1 + 55 + 20) << 2,
		G_TX_RENDERTILE,
		0, 0,
		1 << 10, 1 << 10 ),

	gsSPEndDisplayList()
};
Gfx dlLoadArrowR[] = {
	gsDPLoadTextureTile( texArrowR, G_IM_FMT_IA, G_IM_SIZ_8b,
		44, 20,
		 0,  0,
		43, 19,
		 0,
		G_TX_CLAMP, G_TX_CLAMP,
		G_TX_NOMASK, G_TX_NOMASK,
		G_TX_NOLOD, G_TX_NOLOD ),

	gsSPEndDisplayList()
};
Gfx dlDispArrowR[] = {
	gsSPTextureRectangle( 
		(DISPLAY_X1 + 198) << 2, (DISPLAY_Y1 + 55) << 2,
		(DISPLAY_X1 + 198 + 44) << 2, (DISPLAY_Y1 + 55 + 20) << 2,
		G_TX_RENDERTILE,
		0, 0,
		1 << 10, 1 << 10 ),

	gsSPEndDisplayList()
};

/* =========================================================================*/
/*
	カセット枠
*/
Gfx dlCassetteWaku[] = {
	gsDPLoadTextureBlock( texCassetteWaku, G_IM_FMT_IA, G_IM_SIZ_8b,
		32, 32, 0,
		G_TX_CLAMP, G_TX_CLAMP,
		G_TX_NOMASK, G_TX_NOMASK,
		G_TX_NOLOD, G_TX_NOLOD ),

	gsSPEndDisplayList()
};
/* =========================================================================*/
/*
	黒四角
*/
Gfx dlCfgSaveBlack[] = {
	/***********************************************************************
	 	Setting RSP
	************************************************************************/
	gsSPClearGeometryMode( 0xffffffff ),
	gsSPViewport( &vp ),
	gsSPTexture( 0, 0, 0, 0, G_OFF ),
	/***********************************************************************
	 	Setting RDP
	************************************************************************/
	gsDPPipeSync(),
	gsDPSetCycleType( G_CYC_1CYCLE ),
	gsDPSetPrimColor( 0, 0, 0, 0, 0, 255 ),
	gsDPSetCombineMode( G_CC_PRIMITIVE, G_CC_PRIMITIVE ),
	gsDPSetRenderMode( G_RM_OPA_SURF, G_RM_OPA_SURF2 ),
	gsDPSetAlphaCompare( G_AC_NONE ),

	/***********************************************************************
	 	Draw Black Box
	************************************************************************/
    gsDPFillRectangle( DISPLAY_X1 +  23 + 65 * 0, DISPLAY_Y1 + 117,
					   DISPLAY_X1 +  23 + 65 * 0 + 63 - 1, DISPLAY_Y1 + 117 + 40 - 1 ),
    gsDPFillRectangle( DISPLAY_X1 +  23 + 65 * 1, DISPLAY_Y1 + 117,
					   DISPLAY_X1 +  23 + 65 * 1 + 63 - 1, DISPLAY_Y1 + 117 + 40 - 1 ),
    gsDPFillRectangle( DISPLAY_X1 +  23 + 65 * 2, DISPLAY_Y1 + 117,
					   DISPLAY_X1 +  23 + 65 * 2 + 63 - 1, DISPLAY_Y1 + 117 + 40 - 1 ),
    gsDPFillRectangle( DISPLAY_X1 +  23 + 65 * 3, DISPLAY_Y1 + 117,
					   DISPLAY_X1 +  23 + 65 * 3 + 63 - 1, DISPLAY_Y1 + 117 + 40 - 1 ),

	gsSPEndDisplayList()
};
/* ======================================================================= */
/*
	警告マーク
*/
Gfx dlCaution3[] = {
	gsDPLoadTextureBlock( (uint)(texCaution3), G_IM_FMT_RGBA, G_IM_SIZ_32b,
		24, 24,	0,
		G_TX_CLAMP, G_TX_CLAMP,
		G_TX_NOMASK, G_TX_NOMASK,
		G_TX_NOLOD, G_TX_NOLOD ),

	gsSPTextureRectangle( 
		(DISPLAY_X1 + 24) << 2, (DISPLAY_Y1 + 64) << 2,
		(DISPLAY_X1 + 24 + 24) << 2, (DISPLAY_Y1 + 64 + 24) << 2,
		G_TX_RENDERTILE,
		0, 0,
		1 << 10, 1 << 10 ),

	gsSPEndDisplayList()
};

/* ======================================================================= */
/*
	ジェットのビューポート設定
*/
Gfx dlCfgSaveSetMachineView0[] = {
	gsSPViewport( &vpMachine0 ),

	gsSPEndDisplayList()
};
Gfx dlCfgSaveSetMachineView1[] = {
	gsSPViewport( &vpMachine1 ),

	gsSPEndDisplayList()
};
Gfx dlCfgSaveSetMachineView2[] = {
	gsSPViewport( &vpMachine2 ),

	gsSPEndDisplayList()
};
Gfx dlCfgSaveSetMachineView3[] = {
	gsSPViewport( &vpMachine3 ),

	gsSPEndDisplayList()
};
