

//**************************************************************
//
//			Ready_Init.c
//
//**************************************************************

//==============================================================
//	file only LOCAL
//==============================================================
//---VBLK---
static void ReadyVblkSet(void);		//V-BLK SET
static void ReadyVblkIntr0(void);
static void ReadyVblkInit(void);

//---OBJ INIT---
static void ReadyInit_ObjSet(u8 a);
#if CHINA
//	extern u16 usMojiCount;
extern	void MojiScreenCreate_ZH(u16 *screen,const u16* message ,u32 VramAddr, u8 MojiNum,u16 offset, u8* bgChar);
#endif


//==============================================================
//		Ｖブランク関数
//==============================================================
static void ReadyVblkSet(void)
{
	SetVblkFunc(ReadyVblkIntr0);
}
//----------------------------------------------
static void ReadyVblkIntr0(void)
{
	m4aSoundVSync();
	//OAMを転送
	DmaCopy(3, OamBuf, OAM, (8*128), 32);
	//*(vu16*)REG_BLDY = usBgEvy;			//FADE-IN COLOR にて0にされる為
	//*(vu16*)REG_BG3HOFS = usBg3Hofs;
	//*(vu16*)REG_BG3VOFS = usBg3Vofs;
	*(vu16*)REG_BG2HOFS = usBg2Hofs;
	*(vu16*)REG_BG2VOFS = usBg2Vofs;
	*(vu16*)REG_BG1HOFS = usBg1Hofs;
	*(vu16*)REG_BG1VOFS = usBg1Vofs;
	*(vu16*)REG_BG0HOFS = usBg0Hofs;
	*(vu16*)REG_BG0VOFS = usBg0Vofs;
}
//----------------------------------------------
static void ReadyVblkInit(void)
{
	m4aSoundVSync();
	m4aSoundMain();
}

#define	VRAMBG_FONT		BG_VRAM
#define	VRAMBG_MAIN		(BG_VRAM+0x4000)
#define	VRAMOBJ_MAIN	OBJ_MODE0_VRAM

//==============================================================
//		初期設定
//==============================================================
static int ReadyInit(void)
{
int	i,a;
u16 *ptr16;
u8 *ptr8;

	Hblk_STAT_IE_Off;
	SetVblkFunc(ReadyVblkInit);

	//-----画面の黒マスク-----
	*(vu16*)REG_BLDCNT = BLD_DOWN_MODE | 0x003f;	//輝度DOWN(DEF)
	*(vu16*)REG_BLDY = 16;

	*(vu16*)REG_DISPCNT = DISP_MODE_0 ;		//画面表示OFF

	ClearGraphicRam();
	ucCntObj = 0;
	ClearOamBuf();

	VCount_Wait_ifBig(20);
	//キャラクターデータを転送(DMA)
	DmaCopy(3, font_Char, VRAMBG_FONT, sizeof(font_Char), 16);

	VCount_Wait_ifBig(20);
	//パレットデータを転送
	DmaCopy(3, selectdata_Palette, BG_PLTT, sizeof(selectdata_Palette), 16);
	DmaCopy(3, sdobj1_Palette, OBJ_PLTT, sizeof(sdobj1_Palette), 16);

	//キャラクターデータを転送(LZ)
	LZ77UnCompVram( (u8 *)selectdata_CharLZ, (u16 *)VRAMBG_MAIN );
	LZ77UnCompVram( (u8 *)sdobj1_CharLZ, (u16 *)(VRAMOBJ_MAIN));


	//-----抜きCHR-SET手動
	ptr8 = (u8*)(VRAMBG_FONT+0x3FE0);
	for(i=0;i<0x20;i++) {
		*ptr8 = 0;
		*ptr8++;
	}

	*(u16*)BG_PLTT = 0x0000;		//E3

	//----- SRAM から CPU外部WORK(EXRAM) へ転送、DATAチェック -----
	GameReady_INIT_Read();			//SRAM to EX_WRAM(image) 2Mode

	i = MapLH_kaitou(0,(u8*)Scr_selectdata,(u8*)EXMAP3);
	DmaCopy(3, EXMAP3 , SCRVRAM1 , i , 16);

	ptr8 = ucPerfect ? (u8*)Scr_selectdata3 : (u8*)Scr_selectdata2 ;
	i = MapLH_kaitou(0,ptr8,(u8*)EXMAP3);
	DmaCopy(3, EXMAP3 , SCRVRAM2 , i , 16);

	ptr16 =(u16 *)SCRVRAM0;
	for(i=0;i<(0x800/2);i++) {
		*ptr16 = 0x01fe;
		*ptr16++;
	}

	//--- SAVE-NG を検出 ---
	a = SaveReady[0].NgStat;				//NG-STAT
	if(!a) a = SaveReady[1].NgStat;			//NG-STAT
	if(a == NGSTAT_TYUDAN)		LZ77UnCompVram( (u8 *)kowareta1_CharLZ, (u16 *)(VRAMOBJ_MAIN+0x5800));
	else if(a == NGSTAT_MAIN)	LZ77UnCompVram( (u8 *)kowareta2_CharLZ, (u16 *)(VRAMOBJ_MAIN+0x5800));
	else if(a == NGSTAT_ALL)	LZ77UnCompVram( (u8 *)kowareta3_CharLZ, (u16 *)(VRAMOBJ_MAIN+0x5800));
	ucGmapSubSeq = 0;

	//各ＢＧをセット
//	*(vu16*)REG_BG3CNT = BG_COLOR_16 | BG_SCREEN_SIZE_1 | BG_PRIORITY_3
//		| 30 << BG_SCREEN_BASE_SHIFT | 0 << BG_CHAR_BASE_SHIFT
//		| BG_LOOP_ON;
	*(vu16*)REG_BG2CNT = BG_COLOR_16 | BG_SCREEN_SIZE_0 | BG_PRIORITY_3		//背景
		| 28 << BG_SCREEN_BASE_SHIFT | 1 << BG_CHAR_BASE_SHIFT
		| BG_LOOP_ON;
	*(vu16*)REG_BG1CNT = BG_COLOR_16 | BG_SCREEN_SIZE_0 | BG_PRIORITY_2		//文字面
		| 26 << BG_SCREEN_BASE_SHIFT | 1 << BG_CHAR_BASE_SHIFT
		| BG_LOOP_ON;
	*(vu16*)REG_BG0CNT = BG_COLOR_16 | BG_SCREEN_SIZE_1 | BG_PRIORITY_1		//ステージの名前
		| 24 << BG_SCREEN_BASE_SHIFT | 0 << BG_CHAR_BASE_SHIFT
		| BG_LOOP_ON;

	usBgEvy = 16;
	usBgEvb = ST_EVB_ON;
	*(vu16*)REG_BLDALPHA = (usBgEvb << 8) | (16-usBgEvb);	//係数 EVB EVA

	//部屋番号初期設定
	cGmStartFlg = 0;
	cPauseFlag = 0;		//ポーズフラグクリア
	ucTimeUp = 0;
	ucJSwitchOnFlg = 0;

	ReadyTimer = 0;		//main timer に使用

	usBg2Hofs = 0;
	usBg2Vofs = 0;
	usBg1Hofs = 0;
	usBg1Vofs = 0;
	usBg0Vofs = 0;
	usBg0Hofs = 0;

	ucCntObj = 0;
	//---VBLK処理、NO-Vsync---
	DmaCopy(3, OamBuf, OAM, (8*128), 32);
	*(vu16*)REG_BG2HOFS = usBg2Hofs;
	*(vu16*)REG_BG2VOFS = usBg2Vofs;
	*(vu16*)REG_BG1HOFS = usBg1Hofs;
	*(vu16*)REG_BG1VOFS = usBg1Vofs;
	*(vu16*)REG_BG0HOFS = usBg0Hofs;
	*(vu16*)REG_BG0VOFS = usBg0Vofs;

	//-----ＷＯＲＫ初期セット-----
	ucResetStop = 0;	//キーリセット 0:有効 1:無効

	Ready.SelM = 0;
	Ready.SelS = 0;
	Ready.SelP = 0;
	Ready.Set = 0;
	Ready.Start = 0;
	Ready.Delete = 0;

	for(i=0;i<OBJNUM_MAX;i++) {
		OReady[i].uckind = 0;
		OReady[i].sYpos = 0;
		OReady[i].sXpos = 0;
		OReady[i].ucAnmTimer = 0;
		OReady[i].ucAnmPat = 0;
	}
	//--------------------------

	Ready.SelM = (ucSaveNum == SAVE_NUM_A) ? SELECT_A : SELECT_B ;
	ReadySet_SelectDef(OK_POS);

	*(vu16 *)REG_WIN0H = 0;
	*(vu16 *)REG_WIN0V = 0;
	*(vu16 *)REG_WIN1H = 0;
	*(vu16 *)REG_WIN1V = 0;
	*(vu8 *)REG_WINOUT = 0x3f;
	*(vu8 *)REG_WIN1 = 0x1f;		//内部特殊効果の無効
	*(vu8 *)REG_WIN0 = 0x1f;		//内部特殊効果の無効

	ReadyMain_PickUp_SetReady();
	Ready_INIT_LocalWork_Set(0);
	Ready_INIT_LocalWork_Set(1);

	//画面ｍａｋｅ
	Ready_INIT_Scr_BgPut();
	Ready_INIT_tmsc_BgPut();

	ReadyInit_ObjSet(a);		//OBJ-SET
	ucCntObj = 0;
	ReadyObjCreate();

	//---選択画面に入ったら、音量下げる---
	m4aMPlayVolumeControl(mplay_table[Song_Player(M_BGM_TITLE)].ma, 0xffff, M4A_VOLUME_5);

//FADE-COLOR準備
	Fade.ucKind = GFADE_BLACK_COL;		//ＧＡＴＥフェード種類
	FadeInit_ColorSetWork_All();

	//モード1
	*(vu16*)REG_DISPCNT = DISP_MODE_0 | DISP_OBJ_CHAR_2D_MAP | DISP_OBJ_ON
		| DISP_BG2_ON | DISP_BG1_ON | DISP_BG0_ON | DISP_WIN1_ON ;

	*(vu16*)REG_BLDCNT = BLD_DOWN_MODE | 0x002f;	//輝度DOWN
	*(vu16*)REG_BLDY = ST_EVY;

	ReadyVblkSet();

	return a;
}

//---------------------------------
//---------------------------------
static void ReadyInit_ObjSet(u8 a)
{
int n;

	OReady[OCUR].uckind = CurAnm_Tbl[ucPerfect][ASCUR_SELECT];
	OReady[OCUR].ucAnmTimer = 0;
	OReady[OCUR].ucAnmPat = 0;

	//-----
	OReady[OWIN].uckind		= ANON;
	OReady[OKAKO].uckind	= ANON;
	OReady[ODEL].uckind		= ANON;
	OReady[OTYUA].uckind	= ANON;
	OReady[OTYUB].uckind	= ANON;

	//-----
	ReadyObj_Win1Set();
	ReadyObj_CurSet();
	ReadyObj_KakoSet();
	ReadyObj_DeleteSet();
	ReadyObj_Tyudan_Init();

	if(!a)		return;
	///////////////////////////
	//	SAVE破壊OPERATE
	///////////////////////////
	n = SaveReady[0].NgStat ? 0 : 1 ;
	OReady[OCUR].uckind	= CurAnm_Tbl[0][ASCUR_STOP];
	OReady[OCUR].sYpos  = ucLanguage ? 0x68 : 0x80 ;
	OReady[OCUR].sXpos  = 0x90;

	OReady[OWIN].uckind = AOBJ_Kowareta_Tbl[ucLanguage][n];
	OReady[OWIN].sYpos  = ucLanguage ? 0x50 : 0x68 ;
	OReady[OWIN].sXpos  = 0x70;

	OReady[OKAKO].uckind = ANON;	//大括弧を消す

}


//--------------------------------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------
//		スクリーン作成
//--------------------------------------------------------------
//--------------------------------------------------------------
//--------------------------------------------------------------
static void Ready_INIT_Scr_BgPut(void)
{
	Ready_INIT_StageName_BgPut(0);
	Ready_INIT_StageName_BgPut(1);
	Ready_CHANGE_Level_BgPut(0);
	Ready_CHANGE_Level_BgPut(1);

	#if BINDATE_PUT
	Ready_INIT_RomDate_BgPut();			//
	#endif
}


//----------------------------------------------
//	選択難易度のＢＧ表記
//----------------------------------------------
static const u16 Select_LevelBG[2][3]= {
	{0x02c0,0x02c5,0x02ca},
	{0x02cf,0x02d4,0x02d9},
};
//----------------------------------------------
static void Ready_CHANGE_Level_BgPut(u8 num)
{
#define	POSIA_LEVEL	(32*4+23)+(32*9*num)

u16	*ptr;
int n,i;
u16	chr;		//専用CHR(acg)のスタートアドレス

	ptr=(u16 *)SCRVRAM1;
	chr = Select_LevelBG[ucLanguage][SaveReady[num].Level];
	//-----
	n=POSIA_LEVEL;
	for(i=0;i<5;i++) {
		*(ptr+n+i) = (chr+i)|0xe000 ;
		*(ptr+n+i+32) = (chr+i+0x20)|0xe000;
	}
}
#undef	POSIA_LEVEL


//----------------------------------------------
//----------------------------------------------
//	
//----------------------------------------------
//----------------------------------------------
//----------------------------------------------
//----------------------------------------------
static void Ready_INIT_tmsc_BgPut(void)
{
u8 clear;
int n;
	for(n=0;n<2;n++) {
		clear = SaveReady[n].Flg ?  OFF : ON;
		Ready_INIT_totalcoin_BgPut( n ,clear);	//clear ON:消去 OFF:表示
		Ready_INIT_cd_BgPut( n ,clear);
		Ready_INIT_boss_BgPut( n , clear);
	}
}

//----------------------------------------------
//	トータルコイン
//	tmscBGPUT
//----------------------------------------------
static void Ready_INIT_totalcoin_BgPut(u8 num, u8 cls)
{
#define	AUTO_COIN	(6*4+8)
#define	POSI_COIN	(32*6+14)+(32*9*num);

u32 coin;
int n,i;
u16 *ptr;
u16 suji[6];
u16 color;

	//-----
	for(n=0;n<6;n++) {		//RAM-CLEAR
		suji[n]=0;
	}
	color = 0xe300;			//e:COLOR番号,300:CHR-OFFSET	CHR(0)=抜きの事

	//-----
	if(cls) {
		for(n=0;n<6;n++) {		//RAM-CLEAR
			suji[n] =  (0x000e | color);	//	(-)
		}
	}
	else {
		coin =	*(u32*)(ExBackUp_Auto_M_Tbl[num]+AUTO_COIN);

		suji[0] =  (coin /10000) %10;
		if(suji[0])		suji[0] |= color;

		suji[1] =  (coin /1000)  %10;
		if(suji[0] || suji[1])	suji[1] |= color;

		suji[2] =  (coin /100)   %10;
		if(suji[1] || suji[2])	suji[2] |= color;

		suji[3] =  (coin /10)	 %10;
		if(suji[2] || suji[3])	suji[3] |= color;

		suji[4] =  coin %10;
		if(suji[3] || suji[4])	suji[4] |= color;

		suji[5] =  0 | color;
	}

	ptr=(u16 *)SCRVRAM1;		//選択ＢＧ
	n=POSI_COIN;
	for(i=0;i<6;i++) {
		*(ptr+n) 	= suji[i];
		if(!suji[i]) {
			*(ptr+n+32) = suji[i];
		}
		else {
			*(ptr+n+32) = suji[i]+0x20;
		}
		n++;
	}
}
#undef	AUTO_COIN
#undef	POSI_COIN


//----------------------------------------------
//GLOBAL W4ItSt	W4ItemStatus[WORLD_NUM_MAX][STAGE_NUM_MAX];	// ItemStatus 島数×大会数（要セーブ）
//typedef struct{
//	u8 Kakera1:1;		// かけら1
//	u8 Kakera2:1;		// かけら2
//	u8 Kakera3:1;		// かけら3
//	u8 Kakera4:1;		// かけら4
//	u8 Card:1;			// カード
//	u8 Kagi:1;			// 鍵
//	u8 Aux1:1;			// （予備1）
//	u8 Aux2:1;			// （予備2）
//} W4ItSt;
#define	AUTO_ITST	(6*4+12)
//----------------------------------------------
//	ＧＥＴ−ＣＤ
//	tmscBGPUT
//----------------------------------------------
static void Ready_INIT_cd_BgPut(u8 num, u8 cls)
{
#define	POSI_CD		(32*6+23)+(32*9*num)
int n,i;
u32	cd;
u16 color;
u16 *ptr;
W4ItSt *itst;
u16 suji[2];

	//-----
	cd = 0;					//RAM-CLEAR
	suji[0]=0;
	suji[1]=0;
	color = 0xe340;			//e:COLOR番号,300:CHR-OFFSET	CHR(0)=抜きの事
	//-----
	if(cls) {
		suji[0]= (0x000b|color);	//	(-)
		suji[1]= (0x000b|color);	//	(-)
	}
	else {
		itst = (W4ItSt*)(ExBackUp_Auto_M_Tbl[num]+AUTO_ITST);
		for(n=0;n<5;n++) {						//WORLD_NUM_MAX(6)
			for(i=0;i<STAGE_NUM_MAX;i++) {		//STAGE_NUM_MAX(6)
				if((itst->Card) && (i < 4) && n ) {
					cd++;
				}
				*itst++;
			}
		}
		//-------------
		suji[0] =  (cd /10)	%10;
		if(suji[0])			suji[0] |= color;
		suji[1] =  cd 		%10;
		suji[1] |= color;
	}

	//-------------------------
	//-------------------------
	ptr=(u16 *)SCRVRAM1;		//選択ＢＧ
	n=POSI_CD;
	for(i=0;i<2;i++) {
		*(ptr+n) 	= suji[i];
		if(!suji[i]) {
			*(ptr+n+32) = suji[i];
		}
		else {
			*(ptr+n+32) = suji[i]+0x20;
		}
		n++;
	}
}
#undef	POSI_CD


//----------------------------------------------
//	倒したボス
//	tmscBGPUT
//	W4ItemStatus[5][4].Card		// ON: 一度でもヨーキを倒してる
//----------------------------------------------
static void Ready_INIT_boss_BgPut(u8 num, u8 cls)
{
#define	POSI_BOSS	(32*3+6)+(32*9*num)
#define	WORLD_MAX	(WORLD_NUM_MAX-1)

W4ItSt *itst;
int n,i,yoki;
u16	boss[6],chk[6];
u16 *ptr;

	//-----
	for(n=0;n<6;n++) {
		boss[n]=0xb240;		//b:COLOR番号,240:CHR-OFFSET	(灰丸)
		chk[n] = 0;			//チェック無し
	}
	//-----
	itst = (W4ItSt*)(ExBackUp_Auto_M_Tbl[num]+AUTO_ITST);
	itst += (STAGE_NUM_MAX*5+4);			//STAGE-BOSS
	yoki = (itst->Card) ? 1 : 0;
	//-----
	if(!cls) {
		itst = (W4ItSt*)(ExBackUp_Auto_M_Tbl[num]+AUTO_ITST);
		itst += 4;							//STAGE-BOSS
		for(n=0;n<WORLD_MAX;n++) {
			if((itst->Kagi)||yoki) {
				boss[n] = 0xb1ea+n*2;		//b:COLOR番号,iea+?:CHR-OFFSET
				if(n>2) {
					boss[n] += 0x1000;		//COLOR調整
				}
			}
			if(itst->Kagi) {
				chk[n] = 0xb220;
			}
			itst += STAGE_NUM_MAX;			//STAGE_NUM_MAX(6)
		}
	}
	//-------------------------
	ptr=(u16 *)SCRVRAM1;		//選択ＢＧ
	i=POSI_BOSS;
	for(n=0;n<6;n++) {
		//---左CHR---
		*(ptr+i)		= chk[n];
		*(ptr+i+0x20)	= boss[n];
		*(ptr+i+0x40)	= boss[n]+0x20;
		i++;
		//---右CHR---
		*(ptr+i)		= chk[n] ? (chk[n]+1) : 0 ;
		*(ptr+i+0x20)	= boss[n]+1;
		*(ptr+i+0x40)	= boss[n]+0x20+1;
		i++;
	}
}
#undef	POSI_BOSS
#undef	WORLD_MAX
#undef	AUTO_ITST


//----------------------------------------------
//	BACK-UP RAM 参照PNT
//----------------------------------------------
#define	AUTO_LEVEL		(6*4)
#define	AUTO_WORLD		(6*4+1)
#define	AUTO_STAGE		(6*4+2)
#define	POIT_WORLD		1
#define	POIT_STAGE		2
#define	DIS_WORLD		(6*4+1)
#define	DIS_STAGE		(6*4+2)
//-----(NO-DATA)SCR-DATA FORMAT方式D,S-MAP-----
#if CHINA
#include	"NoSaveData_Mes.txt"
#if 0
	const u16 NoSaveData_Mes[15]= {
	0x023f ,0x0240 ,0x0241 ,
	};
#endif
#else
static const u8	NoSaveData_Mes[26] = {
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0x17, 0x18, 0xff, 0xff, 0x0D, 0x0A, 0x1D,
	0x0A, 0xFF,	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 
};
#endif
static const u8	DataNashi_Mes[26] = {
	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
	0xff, 0xD4, 0xE4, 0x9F, 0xff, 0xff, 0x54, 0x4B,
	0xFF, 0xFF,	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
	0xFF, 0xFF, 
};
//----------------------------------------------
//	作業WORKへ値をSET
//----------------------------------------------
static void Ready_INIT_LocalWork_Set(u8 num)
{
	SaveReady[num].World	= *(u8*)(ExBackUp_Auto_M_Tbl[num]+AUTO_WORLD);
	SaveReady[num].Stage	= *(u8*)(ExBackUp_Auto_M_Tbl[num]+AUTO_STAGE);
	SaveReady[num].Level	= *(u8*)(ExBackUp_Auto_M_Tbl[num]+AUTO_LEVEL);
	if(SaveReady[num].Flg == SAVE_POINT) {
		SaveReady[num].World	= *(u8*)(ExBackUp_Point_Tbl[num]+POIT_WORLD);
		SaveReady[num].Stage	= *(u8*)(ExBackUp_Point_Tbl[num]+POIT_STAGE);
	}
	else if(SaveReady[num].Flg == SAVE_DISCONTINUE) {
		SaveReady[num].World	= *(u8*)(ExBackUp_DisCon_Tbl[num]+DIS_WORLD);
		SaveReady[num].Stage	= *(u8*)(ExBackUp_DisCon_Tbl[num]+DIS_STAGE);
	}
	//---					//SAVEが無い場合、基準となる言語・難易度を設定
	if(!SaveReady[num].Flg) {
		SaveReady[num].Level = GAME_NORMAL;		//基準難易度
	}
}


//----------------------------------------------
//  ステージ名をＢＧ−ＰＵＴ
//----------------------------------------------
static void Ready_INIT_StageName_BgPut(u8 num)
{
u16	*ptr;
int n,i;
u8 *pname;

	//----転送先
	if(num) {
		ptr=(u16 *)SCRVRAM0+(32*10+2);		//SAVE(B)名前
	}
	else {
		ptr=(u16 *)SCRVRAM0+(32*1+2);		//SAVE(B)名前
	}

	//-----
	if((!SaveReady[num].Flg)||(SaveReady[num].Flg == 0x80)) {
		if(!ucLanguage) {
			pname = (u8*)NoSaveData_Mes;
		}
		else {
			pname = (u8*)DataNashi_Mes;
		}
	}
	else if(SaveReady[num].Stage < 6)
		if(!ucLanguage) {
			pname = (u8*)smap_Mes_e[SaveReady[num].World][SaveReady[num].Stage];
		}
		else {
			pname = (u8*)smap_Mes_j[SaveReady[num].World][SaveReady[num].Stage];
		}
	else {
		if(!ucLanguage) {
			pname = (u8*)dmap_Mes_e[SaveReady[num].World];
		}
		else {
			pname = (u8*)dmap_Mes_j[SaveReady[num].World];
		}
	}
#if CHINA
	if(num) {
	MojiScreenCreate_ZH(ptr,pname ,128*0x20, 13,128, font_Char); 
	}
	else {
	MojiScreenCreate_ZH(ptr,pname ,256*0x20, 13,256, font_Char); 
	}
	
#else
	for(i=0;i<26 ;i++) {
		n = *pname;
		n = (n & 0xe0) << 1;
		n = n | (*pname & 0x1f);

		*(ptr+i) 	= n|0xe000;
		*(ptr+i+32)	= (n+0x20)|0xe000;
		*pname++;
	}
#endif
}

#undef	AUTO_WORLD
#undef	AUTO_STAGE
#undef	AUTO_LEVEL
#undef	POIT_WORLD
#undef	POIT_STAGE
#undef	DIS_WORLD
#undef	DIS_STAGE


//-----------------------------------------------------
//-----------------------------------------------------
//-----------------------------------------------------
//-----------------------------------------------------
static void	Ready_INIT_RomDate_BgPut(void)
{
int i,n,m;
u16 *ptr;

	ptr=(u16 *)SCRVRAM0+(32*18+22);		//
	n=0;
	for(i=0;i<sizeof(bindate);i++,n++) {
		m = bindate[i];
		if(m >= 0x61)		m = (m - 0x61)+ 0x44;
		else if(m >= 0x41)	m = (m - 0x41)+ 0x0a;
		else if(m >= 0x30)	m = (m - 0x30)+ 0x00;
		else;
		*(ptr+n) 	= m;
		*(ptr+n+32) = m+0x20;
	}
	//-----
	#ifdef DEBUG_MAIN
	*(ptr+n) 	= 0x47;
	*(ptr+n+32) = 0x47+0x20;
	#endif
}


//**************************************************************
//end
