/* *****************************************************************************
	Title : system.c
***************************************************************************** */

#include	"main.h"									/* main.h				*/



/* -----------------------
	グローバル変数
------------------------ */

static	char near	*SysHeap;						/* Heap領域 登録可能ｱﾄﾞﾚｽ	*/
static	char near	*SysHeapBase;					/* Heap領域 ﾍﾞｰｽｱﾄﾞﾚｽ		*/


/* ******************************************************************************
　関　　数	：
　内　　容	：
　表　　記	：
　引　　数	：
　返　　値	：−
　コメント	：Testarossa 初期化関数です。
		  	：基本的にベタ初期化です。
		  	：
　履　　歴	：Ver 1.00		2000/12/07		K.Kimura		初版
****************************************************************************** */
void	SysInit( void)
{
	static	char		i;
	static	char far	*cp;
	static	char far	*ap;


	/* ///  画面の初期化＆ＬＣＤカラー設定  /// */
	display_control( 0x0000);							/* SC0, SC1, SP			*/
	lcd_set_color( 0x6420, 0xfca8);						/* 一つ飛ばし			*/

	/* ///  乱数の初期化  /// */
	srand( rtc_get_datetime( 6));						/* 秒による種設定		*/

	SysSetHeapBase( _pc->_heap);
	SysInitHeap();										/* ﾋｰﾌﾟｱﾄﾞﾚｽ初期化		*/

	/* ///  各処理の初期化  /// */
	PadInit();											/* ﾊﾟｯﾄﾞ処理			*/
	FileRFInit();										/* ﾌｧｲﾙ処理				*/
	SndInit();											/* ｻｳﾝﾄﾞ処理			*/
	SprInit( 0xff);										/* ｽﾌﾟﾗｲﾄ処理:完全		*/
	ScrInit();											/* ｽｸﾘｰﾝ処理			*/
	VblkLoopInit();										/* VBLANK処理			*/

	FntInit();											/* ﾌｫﾝﾄ処理				*/
	FntSetRegChrNum(( 512 - FNT_REG_CHRMAX), FNT_REG_CHRMAX);

	/* ///  各データファイルの mmap  /// */
	FileSetPointer( TFD_SOUND, "/rom0/sound.far");			/* ｻｳﾝﾄﾞ･ﾌｧｲﾙ			*/
	FileSetPointer( TFD_GRAPH, "/rom0/graph.far");			/* ｸﾞﾗﾌｨｯｸ･ﾌｧｲﾙ			*/
	FileSetPointer( TFD_ANIM,  "/rom0/anim.far");				/* ｱﾆﾒｰｼｮﾝ･ﾌｧｲﾙ			*/
	FileSetPointer( TFD_DATA,  "/rom0/data.far");				/* ﾃﾞｰﾀ･ﾌｧｲﾙ			*/
	FileSetPointer( TFD_WALLG01, "/rom0/wallg01.far");		/* 壁紙ﾌｧｲﾙ01			*/
	FileSetPointer( TFD_WALLG02, "/rom0/wallg02.far");		/* 壁紙ﾌｧｲﾙ02			*/

	/* /// フォントデータ・アドレス設定  /// */
	cp = FileGetPointer( TFD_GRAPH, GRP_FONT_FR);
	FntSetFontAddress(( cp + 16));						/* ﾍｯﾀﾞ加算 = +16		*/

	/* ///  スプライト＆アニメ・アドレス設定  /// */
	cp = FileGetAddress( TFD_GRAPH);
	ap = FileGetAddress( TFD_ANIM);
	SprSetAddr( cp, ap);

}


/* ******************************************************************************
　関　　数	：
　内　　容	：
　表　　記	：
　引　　数	：
　返　　値	：−
　コメント	：Testarossa 後処理関数です。
		  	：つうか、飛んでこないよね？
		  	：
　履　　歴	：Ver 1.00		2000/12/07		K.Kimura		初版
****************************************************************************** */
void	SysRelease( void)
{
	SndRelease();										/* ｻｳﾝﾄﾞ後処理			*/
}


/* ******************************************************************************
　関　　数	：
　内　　容	：
　表　　記	：
　引　　数	：
　返　　値	：−
　コメント	：ヒープ領域のポインタ初期化関数です。
		  	：
　履　　歴	：Ver 1.00		2000/12/07		K.Kimura		初版
****************************************************************************** */
void	SysInitHeap( void)
{
	SysHeap = SysHeapBase;
}


/* ******************************************************************************
　関　　数	：
　内　　容	：
　表　　記	：
　引　　数	：
　返　　値	：−
　コメント	：ヒープ領域のベースポインタ設定関数です。
		  	：
　履　　歴	：Ver 1.00		2000/12/20		K.Kimura		初版
****************************************************************************** */
void	SysSetHeapBase( char near *ptr)
{
	SysHeapBase = ptr;
}


/* ******************************************************************************
　関　　数	：
　内　　容	：
　表　　記	：
　引　　数	：
　返　　値	：−
　コメント	：ヒープ領域の登録位置アドレス加算関数です。
		  	：
　履　　歴	：Ver 1.00		2000/12/07		K.Kimura		初版
****************************************************************************** */
void	SysAddHeap( u_short size)
{
	SysHeap += size;
}


/* ******************************************************************************
　関　　数	：
　内　　容	：
　表　　記	：
　引　　数	：
　返　　値	：−
　コメント	：ヒープ領域の登録位置アドレス取得関数です。
		  	：
　履　　歴	：Ver 1.00		2000/12/07		K.Kimura		初版
****************************************************************************** */
char near	*SysGetHeap( void)
{
	return ( SysHeap);
}









