(更新:Akabane Jumpei)

・Romエミュレーション情報読み関数を修正

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@430 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
(no author) 2008-01-07 10:13:44 +00:00
parent 43ce9db66c
commit d7c6cb4e6a
3 changed files with 33 additions and 42 deletions

View File

@ -16,9 +16,6 @@ extern "C" {
// Function Describe
// ===========================================================================
// ■ ノーマルモードのコマンド ■
// DSカードType2のRomエミュレーションデータの読み込み
void ReadRomEmulationData_DSType2(CardBootData *cbd);
// DSカードType2のーマルモードのBoot Segment(4Kbyte)読み込み
void ReadBootSegNormal_DSType2(CardBootData *cbd);

View File

@ -29,37 +29,6 @@ static void SetMCSCR(void);
// ■--------------------------------------■
// ■ ノーマルモードのコマンド ■
// ■--------------------------------------■
/*---------------------------------------------------------------------------*
Name: ReadRomEmulationData_DSType2
Description: DSカードType2のRomエミュレーションデータの読み込み
*---------------------------------------------------------------------------*/
void ReadRomEmulationData_DSType2(CardBootData *cbd)
{
u32 count=0;
u32 temp;
u32 *dst = cbd->romEmuBuf;
// MCCMD レジスタ設定
reg_HOTSW_MCCMD0 = 0x3e000000;
reg_HOTSW_MCCMD1 = 0x0;
// MCCNT1 レジスタ設定 (START = 1 PC = 001(1ページリード)に latency1 = 0x5fe)
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x1 << PC_SHIFT) | (0x5fe & LATENCY1_MASK);
// MCCNTレジスタのRDYフラグをポーリングして、フラグが立ったらデータをMCD1レジスタに再度セット。スタートフラグが0になるまでループ。
while(reg_HOTSW_MCCNT1 & START_FLG_MASK){
while(!(reg_HOTSW_MCCNT1 & READY_FLG_MASK)){}
if(count >= ROM_EMULATION_START_OFS && count < ROM_EMULATION_END_OFS){
*dst++ = reg_HOTSW_MCD1;
}
else{
temp = reg_HOTSW_MCD1;
}
count+=4;
}
}
/*---------------------------------------------------------------------------*
Name: ReadIDNormal_DSType2

View File

@ -46,6 +46,7 @@ static void SetMCSCR(void);
static void GenVA_VB_VD(void);
static void LoadTable(void);
static void ReadRomEmulationData(void);
static void ReadIDNormal(void);
static void DecryptObjectFile(void);
@ -242,14 +243,7 @@ BOOL HOTSW_Boot(void)
OS_TPrintf(" | Secure Command Latency : 0x%08x\n", s_cbData.pBootSegBuf->rh.s.secure_cmd_latency);
// Romエミュレーションデータを取得
if(s_cbData.cardType == DS_CARD_TYPE_1){
// Type1の場合
MI_CpuCopy8(s_cbData.pBootSegBuf->rh.s.reserved_C, s_cbData.romEmuBuf, ROM_EMULATION_DATA_SIZE);
}
else if(s_cbData.cardType == DS_CARD_TYPE_2){
// Type2の場合
ReadRomEmulationData_DSType2(&s_cbData);
}
ReadRomEmulationData();
OS_TPrintf("Rom Emulation Data : 0x%08x\n",s_cbData.romEmuBuf[0]);
// ROMヘッダCRCを算出してチェック。NintendoロゴCRCも確認。
@ -572,6 +566,37 @@ static void LoadTable(void)
}
}
/*---------------------------------------------------------------------------*
Name: ReadRomEmulationData
Description: Romエミュレーションデータの読み込み
*---------------------------------------------------------------------------*/
static void ReadRomEmulationData(void)
{
u32 count=0;
u32 temp;
u32 *dst = &s_cbData.romEmuBuf;
// MCCMD レジスタ設定
reg_HOTSW_MCCMD0 = 0x3e000000;
reg_HOTSW_MCCMD1 = 0x0;
// MCCNT1 レジスタ設定 (START = 1 PC = 001(1ページリード)に latency1 = 0x5fe)
reg_HOTSW_MCCNT1 = START_MASK | PC_MASK & (0x1 << PC_SHIFT) | (0x5fe & LATENCY1_MASK);
// MCCNTレジスタのRDYフラグをポーリングして、フラグが立ったらデータをMCD1レジスタに再度セット。スタートフラグが0になるまでループ。
while(reg_HOTSW_MCCNT1 & START_FLG_MASK){
while(!(reg_HOTSW_MCCNT1 & READY_FLG_MASK)){}
if(count >= ROM_EMULATION_START_OFS && count < ROM_EMULATION_END_OFS){
*dst++ = reg_HOTSW_MCD1;
}
else{
temp = reg_HOTSW_MCD1;
}
count+=4;
}
}
/* -----------------------------------------------------------------
* ReadIDNormal関数
*