/*
  	待ち
*/
#include "ot_header.h"

#include "kn_def.h"
#include "kn_main.h"

/* 起動画面用テクスチャ */
#ifdef ROM_FLAG
#define TEX_OUT		1
#else
#define TEX_OUT		0
#endif

#if 0

#if (SW_KN_LANGUAGE == KN_JP)
#include "tex_data/wait/nus_mark.tex"
#elif (SW_KN_LANGUAGE == KN_ZH)
#include "tex_data/wait/nus_mark_zh.tex"
#elif (SW_KN_LANGUAGE == KN_US)
#include "tex_data/wait/nus_mark_usa.tex"
#elif (SW_KN_LANGUAGE == KN_EU)
#include "tex_data/wait/nus_mark_usa.tex"
#endif

#endif

/*******************************************************
	FUNCTION
*******************************************************/
void draw_starting_screen( unsigned short *fbuffer_p );

/*******************************************************
	VARIABLE
*******************************************************/
/* Display List */
extern Gfx	dlWaitTitleMini[];
/* コントローラー */
extern sKnPad	mKnPad[];

/*******************************************************
	DEFINE
*******************************************************/
/* Texture Size */
#define TEX_WAIT_SX		96
#define TEX_WAIT_SY		56
#define TEX_WAIT_WD		128
#define TEX_WAIT_HT		128

#define START_TEX_SX	96	/* SCREEN POSITION */
#define START_TEX_SY	56
#define START_TEX_WX	128	/* TEXTURE SIZE [dot] */
#define START_TEX_WY	128
#define START_TEX_BYTE	2	/* PIXEL SIZE [byte] */
#define START_TEX_LINE	(START_TEX_WX * START_TEX_BYTE)
#define START_TEX_SIZE	(START_TEX_WY * START_TEX_LINE)
/* ====================================================================== */
/*
	ＣＰＵじかがき
*/
void draw_starting_screen( ushort *fbuffer_p )
{
	register u64	*vp ;
	register int	ofs ;


	/***********************************************************************
		CLEAR SCREEN
	***********************************************************************/
	for ( vp = (u64*)(fbuffer_p + (SCREEN_HT*SCREEN_WD-8/START_TEX_BYTE)) ; (u32)vp >= (u32)fbuffer_p ; -- vp ) {
		*vp = 0x0001000100010001LLU ;
	}
	osWritebackDCache( (void*)fbuffer_p, SCREEN_WD*SCREEN_HT*START_TEX_BYTE ) ;

	/***********************************************************************
		DMA TEXTURE
	***********************************************************************/
#if LOCALE!=CHINA
	vp = (u64*)( fbuffer_p + (START_TEX_SY*SCREEN_WD+START_TEX_SX) ) ;

	for ( ofs = 0 ; ofs < START_TEX_SIZE ; ofs += START_TEX_LINE ) {

		osPiStartDma( &IOMesgB_DMA, OS_MESG_PRI_NORMAL, OS_READ,
			(u32)_nusmarkSEGSegmentRomStart + (u32)ofs + 8,	/* 8=dummy_aligner */
			(void*)vp,
			START_TEX_LINE,
			&MesgQ_DMA ) ;
		(void)osRecvMesg( &MesgQ_DMA, MesgB_dummy, OS_MESG_BLOCK ) ;

		vp += SCREEN_WD / (8/START_TEX_BYTE) ;
	}
#endif
}
