ISデバッガタスクのNANDアプリデバッグ対応を仕様調整しました。 ImportJumpをその仕様に合わせて更新しました。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1176 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
kamikawa 2008-04-17 12:53:21 +00:00
parent c0e16f81c8
commit d408a36747
5 changed files with 26 additions and 12 deletions

View File

@ -38,6 +38,8 @@ typedef struct _ImportJumpSetting
u32 clearSaveBannerFile:1; // セーブバナーファイルをクリアするデフォルトOFF
u32 importTad:1; // パスで指定されたTADファイルをインポートするかTADの更新有無に依存
u32 rsv :28; // 予約
u64 bootTitleID; // タイトルID
u32 tadRomOffset; // TADをロードしたエミュレーションROMオフセット
u32 tadLength; // TADファイルの長さ
} ImportJump;
@ -45,16 +47,13 @@ typedef struct _ImportJumpSetting
*---------------------------------------------------------------------------*/
// TADファイル配置アドレス
#define IMPORT_TAD_ADDRESS 0x00800000
/*---------------------------------------------------------------------------*
*---------------------------------------------------------------------------*/
inline ImportJump* GetImportJumpSetting(void)
{
return (ImportJump *)0x0dfc0000;
return (ImportJump *)0x0deffc00;
}
/*===========================================================================*/

View File

@ -34,7 +34,7 @@ extern "C" {
ЉЦђи`
*---------------------------------------------------------------------------*/
BOOL kamiImportTad(NAMTitleId* pTitleId);
BOOL kamiImportTad(void);
/*===========================================================================*/

View File

@ -69,18 +69,29 @@ static void UpdateNandBoxCount( void );
Returns: None.
*---------------------------------------------------------------------------*/
BOOL kamiImportTad(NAMTitleId* pTitleId)
BOOL kamiImportTad(void)
{
NAMTadInfo tadInfo;
NAMTitleInfo titleInfo;
OSThread thread;
s32 nam_result;
FSFile file;
// TADファイルが更新されていないためインポート処理をスキップする
if (GetImportJumpSetting()->importTad == 0)
{
// しかしNandInitializerによって消去されている可能性もあるので確認する
if (NAM_ReadTitleInfo(&titleInfo, GetImportJumpSetting()->bootTitleID) == NAM_OK)
{
return TRUE;
}
}
// ファイル初期化
FS_InitFile(&file);
// CARD-ROM 領域を一時的なファイルとみなしそのファイルを開きます。
if (!FS_CreateFileFromRom(&file, IMPORT_TAD_ADDRESS, GetImportJumpSetting()->tadLength))
if (!FS_CreateFileFromRom(&file, GetImportJumpSetting()->tadRomOffset, GetImportJumpSetting()->tadLength))
{
OS_Warning(" Fail : FS_CreateFileFromRom\n");
return FALSE;
@ -93,9 +104,6 @@ BOOL kamiImportTad(NAMTitleId* pTitleId)
return FALSE;
}
// 後でアプリジャンプするTitleIdをここで読み取っておく
*pTitleId = tadInfo.titleInfo.titleId;
// Data Only なら失敗
if (tadInfo.titleInfo.titleId & TITLE_ID_DATA_ONLY_FLAG_MASK)
{

View File

@ -108,6 +108,13 @@ TwlMain()
(void)FS_LoadTable(p_table, need_size);
}
// magicCodeが異なる場合は停止
if (STD_CompareNString( (char *)&GetImportJumpSetting()->magicCode, "TWLD", 4 ))
{
OS_Warning(" Magic Code Wrong!\n");
while(1){};
}
// HWInfo関連の前準備
// InstalledSoftBoxCount, FreeSoftBoxCount の更新のために必要
switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain ))
@ -124,10 +131,10 @@ TwlMain()
}
// TADのインポート開始
if (kamiImportTad(&titleId))
if (kamiImportTad())
{
// インポートに成功したならアプリジャンプ
OS_DoApplicationJump( titleId, OS_APP_JUMP_NORMAL );
OS_DoApplicationJump( GetImportJumpSetting()->bootTitleID, OS_APP_JUMP_NORMAL );
}
// アプリジャンプに成功したならここへは到達しない