ChangeModeNormalも共通化(TWLカードはChangeModeNormal2が必要)。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@787 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
nakasima 2008-03-03 11:24:55 +00:00
parent d60fd09acf
commit d95fe86b79
9 changed files with 59 additions and 102 deletions

View File

@ -19,12 +19,16 @@ extern "C" {
// DSカードのーマルモードのID読み込み
HotSwState ReadIDNormal(CardBootData *cbd);
// DSカードType1のーマルモードのモード変更
HotSwState ChangeModeNormal(CardBootData *cbd);
// カード側のKeyTableをロード
HotSwState LoadTable(void);
// デバッガのROMエミュレーション情報読み込み
HotSwState ReadRomEmulationData(CardBootData *cbd);
// ■ ゲームモードのコマンド ■
// DSカードのゲームモードのID読み込み
HotSwState ReadIDGame(CardBootData *cbd);

View File

@ -20,9 +20,6 @@ extern "C" {
// DSカードType1のーマルモードのBoot Segment(4Kbyte)読み込み
HotSwState ReadBootSegNormal_DSType1(CardBootData *cbd);
// DSカードType1のーマルモードのモード変更
HotSwState ChangeModeNormal_DSType1(CardBootData *cbd);
// ■ セキュアモードのコマンド ■
// DSカードType1のセキュアモードのID読み込み

View File

@ -19,9 +19,6 @@ extern "C" {
// DSカードType2のーマルモードのBoot Segment(4Kbyte)読み込み
HotSwState ReadBootSegNormal_DSType2(CardBootData *cbd);
// DSカードType2のーマルモードのモード変更 (Type1と同じ処理)
#define ChangeModeNormal_DSType2 ChangeModeNormal_DSType1
// ■ セキュアモードのコマンド ■
// DSカードType2のセキュアモードのID読み込み

View File

@ -20,9 +20,6 @@ extern "C" {
// Rom EmulationのーマルモードのBoot Segment(4Kbyte)読み込み
HotSwState ReadBootSegNormal_ROMEMU(CardBootData *cbd);
// Rom Emulationのーマルモードのモード変更
HotSwState ChangeModeNormal_ROMEMU(CardBootData *cbd);
// ■ セキュアモードのコマンド ■
// Rom EmulationのセキュアモードのID読み込み

View File

@ -48,6 +48,54 @@ HotSwState ReadIDNormal(CardBootData *cbd)
return HOTSW_SUCCESS;
}
/*---------------------------------------------------------------------------*
* Name: ChangeModeNormal
*
* Description: Type1のーマルモードのモード変更
*
* CT=240ns Latency1=0x18 Latency2=0 Pagecount=0page
*---------------------------------------------------------------------------*/
HotSwState ChangeModeNormal(CardBootData *cbd)
{
GCDCmd64 tempCnd, cnd;
u64 vae64 = cbd->vae;
if(!HOTSW_IsCardAccessible()){
return HOTSW_PULLED_OUT_ERROR;
}
// ゼロクリア
MI_CpuClear8(&tempCnd, sizeof(GCDCmd64));
// リトルエンディアンで作って
tempCnd.dw = cbd->vbi << 8;
tempCnd.dw |= vae64 << 32;
tempCnd.dw |= 0x3c00000000000000;
// ビックエンディアンにする
cnd.b[0] = tempCnd.b[7];
cnd.b[1] = tempCnd.b[6];
cnd.b[2] = tempCnd.b[5];
cnd.b[3] = tempCnd.b[4];
cnd.b[4] = tempCnd.b[3];
cnd.b[5] = tempCnd.b[2];
cnd.b[6] = tempCnd.b[1];
cnd.b[7] = tempCnd.b[0];
// MCCMD レジスタ設定
reg_HOTSW_MCCMD0 = *(u32 *)cnd.b;
reg_HOTSW_MCCMD1 = *(u32 *)&cnd.b[4];
// MCCNT1 レジスタ設定
reg_HOTSW_MCCNT1 = (cbd->gameCommondParam & ~SCRAMBLE_MASK) |
START_MASK | (PC_MASK & (0x0 << PC_SHIFT));
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
OS_SleepThread(NULL);
return HOTSW_SUCCESS;
}
/* -----------------------------------------------------------------
* LoadTableŠÖ<EFBFBD>
*

View File

@ -59,54 +59,6 @@ HotSwState ReadBootSegNormal_DSType1(CardBootData *cbd)
return HOTSW_SUCCESS;
}
/*---------------------------------------------------------------------------*
* Name: ChangeModeNormal_DSType1
*
* Description: Type1のーマルモードのモード変更
*
* CT=240ns Latency1=0x18 Latency2=0 Pagecount=0page
*---------------------------------------------------------------------------*/
HotSwState ChangeModeNormal_DSType1(CardBootData *cbd)
{
GCDCmd64 tempCnd, cnd;
u64 vae64 = cbd->vae;
if(!HOTSW_IsCardAccessible()){
return HOTSW_PULLED_OUT_ERROR;
}
// ゼロクリア
MI_CpuClear8(&tempCnd, sizeof(GCDCmd64));
// リトルエンディアンで作って
tempCnd.dw = cbd->vbi << 8;
tempCnd.dw |= vae64 << 32;
tempCnd.dw |= 0x3c00000000000000;
// ビックエンディアンにする
cnd.b[0] = tempCnd.b[7];
cnd.b[1] = tempCnd.b[6];
cnd.b[2] = tempCnd.b[5];
cnd.b[3] = tempCnd.b[4];
cnd.b[4] = tempCnd.b[3];
cnd.b[5] = tempCnd.b[2];
cnd.b[6] = tempCnd.b[1];
cnd.b[7] = tempCnd.b[0];
// MCCMD レジスタ設定
reg_HOTSW_MCCMD0 = *(u32 *)cnd.b;
reg_HOTSW_MCCMD1 = *(u32 *)&cnd.b[4];
// MCCNT1 レジスタ設定
reg_HOTSW_MCCNT1 = START_MASK | CT_MASK | LATENCY2_MASK & (0x18 << LATENCY2_SHIFT);
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
OS_SleepThread(NULL);
return HOTSW_SUCCESS;
}
// ■--------------------------------------■
// ■ セキュアモードのコマンド ■
// ■--------------------------------------■

View File

@ -95,7 +95,7 @@ HotSwState ReadBootSegNormal_DSType2(CardBootData *cbd)
*
* CT=240ns Latency1=0x18 Latency2=0 Pagecount=0page
*---------------------------------------------------------------------------*/
// Type1と同じ
// 共通
// <20>¡--------------------------------------<2D>¡

View File

@ -23,7 +23,6 @@
#include <customNDma.h>
#include <../build/libraries/mb/common/include/mb_fileinfo.h>
//#define HOTSW_FORCE_CARD_B
#define DEBUG_MODE
// define -------------------------------------------------------------------
@ -157,19 +156,19 @@ static u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = {
static CardBootFunction s_funcTable[] = {
// DS Card Type 1
{ ReadBootSegNormal_DSType1, ChangeModeNormal_DSType1, // Normalモード関数
{ ReadBootSegNormal_DSType1, ChangeModeNormal, // Normalモード関数
ReadIDSecure_DSType1, ReadSegSecure_DSType1, SwitchONPNGSecure_DSType1, ChangeModeSecure_DSType1, // Secureモード関数
ReadIDGame, ReadPageGame}, // Game モード関数
// DS Card Type 2
{ ReadBootSegNormal_DSType2, ChangeModeNormal_DSType2, // Normalモード関数
{ ReadBootSegNormal_DSType2, ChangeModeNormal, // Normalモード関数
ReadIDSecure_DSType2, ReadSegSecure_DSType2, SwitchONPNGSecure_DSType2, ChangeModeSecure_DSType2, // Secureモード関数
ReadIDGame, ReadPageGame}, // Game モード関数
// TWL Card Type 1
{ ReadBootSegNormal_DSType2, ChangeModeNormal_DSType2, // Normalモード関数
{ ReadBootSegNormal_DSType2, ChangeModeNormal, // Normalモード関数
ReadIDSecure_DSType2, ReadSegSecure_DSType2, SwitchONPNGSecure_DSType2, ChangeModeSecure_DSType2, // Secureモード関数
ReadIDGame, ReadPageGame}, // Game モード関数
// RomEmulation
{ ReadBootSegNormal_ROMEMU, ChangeModeNormal_ROMEMU, // Normalモード関数
{ ReadBootSegNormal_DSType2, ChangeModeNormal, // Normalモード関数
ReadIDSecure_ROMEMU, ReadSegSecure_ROMEMU, SwitchONPNGSecure_ROMEMU, ChangeModeSecure_ROMEMU, // Secureモード関数
ReadIDGame, ReadPageGame}, // Game モード関数
};
@ -390,7 +389,7 @@ static HotSwState LoadCardData(void)
GenVA_VB_VD();
// セキュアモードに移行
state = s_funcTable[s_cbData.cardType].ChangeMode_N(&s_cbData);
state = ChangeModeNormal(&s_cbData);
retval = (retval == HOTSW_SUCCESS) ? state : retval;
// ---------------------- Secure Mode ----------------------

View File

@ -88,44 +88,7 @@ HotSwState ReadBootSegNormal_ROMEMU(CardBootData *cbd)
Description: DSカードType1のーマルモードのモード変更
*---------------------------------------------------------------------------*/
HotSwState ChangeModeNormal_ROMEMU(CardBootData *cbd)
{
#pragma unused( cbd )
GCDCmd64 tempCnd, cnd;
if(!HOTSW_IsCardAccessible()){
return HOTSW_PULLED_OUT_ERROR;
}
// ゼロクリア
MI_CpuClear8(&tempCnd, sizeof(GCDCmd64));
// リトルエンディアンで作って
tempCnd.dw = 0x3c00000000000000;
// ビックエンディアンにする
cnd.b[0] = tempCnd.b[7];
cnd.b[1] = tempCnd.b[6];
cnd.b[2] = tempCnd.b[5];
cnd.b[3] = tempCnd.b[4];
cnd.b[4] = tempCnd.b[3];
cnd.b[5] = tempCnd.b[2];
cnd.b[6] = tempCnd.b[1];
cnd.b[7] = tempCnd.b[0];
// MCCMD レジスタ設定
reg_HOTSW_MCCMD0 = *(u32 *)cnd.b;
reg_HOTSW_MCCMD1 = *(u32 *)&cnd.b[4];
// MCCNT1 レジスタ設定 (START = 1 に)
reg_HOTSW_MCCNT1 = START_MASK;
// カードデータ転送終了割り込みが起こるまで寝る(割り込みハンドラの中で起こされる)
OS_SleepThread(NULL);
return HOTSW_SUCCESS;
}
// 共通
// ■--------------------------------------■