mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
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:
parent
c0e16f81c8
commit
d408a36747
@ -38,6 +38,8 @@ typedef struct _ImportJumpSetting
|
|||||||
u32 clearSaveBannerFile:1; // セーブバナーファイルをクリアする(デフォルトOFF)
|
u32 clearSaveBannerFile:1; // セーブバナーファイルをクリアする(デフォルトOFF)
|
||||||
u32 importTad:1; // パスで指定されたTADファイルをインポートするか(TADの更新有無に依存)
|
u32 importTad:1; // パスで指定されたTADファイルをインポートするか(TADの更新有無に依存)
|
||||||
u32 rsv :28; // 予約
|
u32 rsv :28; // 予約
|
||||||
|
u64 bootTitleID; // タイトルID
|
||||||
|
u32 tadRomOffset; // TADをロードしたエミュレーションROMオフセット
|
||||||
u32 tadLength; // TADファイルの長さ
|
u32 tadLength; // TADファイルの長さ
|
||||||
} ImportJump;
|
} ImportJump;
|
||||||
|
|
||||||
@ -45,16 +47,13 @@ typedef struct _ImportJumpSetting
|
|||||||
定数定義
|
定数定義
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
// TADファイル配置アドレス
|
|
||||||
#define IMPORT_TAD_ADDRESS 0x00800000
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
関数定義
|
関数定義
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
inline ImportJump* GetImportJumpSetting(void)
|
inline ImportJump* GetImportJumpSetting(void)
|
||||||
{
|
{
|
||||||
return (ImportJump *)0x0dfc0000;
|
return (ImportJump *)0x0deffc00;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|||||||
@ -34,7 +34,7 @@ extern "C" {
|
|||||||
ЉЦђ”’и‹`
|
ЉЦђ”’и‹`
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
BOOL kamiImportTad(NAMTitleId* pTitleId);
|
BOOL kamiImportTad(void);
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
|||||||
@ -69,18 +69,29 @@ static void UpdateNandBoxCount( void );
|
|||||||
Returns: None.
|
Returns: None.
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
BOOL kamiImportTad(NAMTitleId* pTitleId)
|
BOOL kamiImportTad(void)
|
||||||
{
|
{
|
||||||
NAMTadInfo tadInfo;
|
NAMTadInfo tadInfo;
|
||||||
|
NAMTitleInfo titleInfo;
|
||||||
OSThread thread;
|
OSThread thread;
|
||||||
s32 nam_result;
|
s32 nam_result;
|
||||||
FSFile file;
|
FSFile file;
|
||||||
|
|
||||||
|
// TADファイルが更新されていないためインポート処理をスキップする
|
||||||
|
if (GetImportJumpSetting()->importTad == 0)
|
||||||
|
{
|
||||||
|
// しかしNandInitializerによって消去されている可能性もあるので確認する
|
||||||
|
if (NAM_ReadTitleInfo(&titleInfo, GetImportJumpSetting()->bootTitleID) == NAM_OK)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ファイル初期化
|
// ファイル初期化
|
||||||
FS_InitFile(&file);
|
FS_InitFile(&file);
|
||||||
|
|
||||||
// CARD-ROM 領域を一時的なファイルとみなしそのファイルを開きます。
|
// 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");
|
OS_Warning(" Fail : FS_CreateFileFromRom\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -93,9 +104,6 @@ BOOL kamiImportTad(NAMTitleId* pTitleId)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 後でアプリジャンプするTitleIdをここで読み取っておく
|
|
||||||
*pTitleId = tadInfo.titleInfo.titleId;
|
|
||||||
|
|
||||||
// Data Only なら失敗
|
// Data Only なら失敗
|
||||||
if (tadInfo.titleInfo.titleId & TITLE_ID_DATA_ONLY_FLAG_MASK)
|
if (tadInfo.titleInfo.titleId & TITLE_ID_DATA_ONLY_FLAG_MASK)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -108,6 +108,13 @@ TwlMain()
|
|||||||
(void)FS_LoadTable(p_table, need_size);
|
(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関連の前準備
|
// HWInfo関連の前準備
|
||||||
// InstalledSoftBoxCount, FreeSoftBoxCount の更新のために必要
|
// InstalledSoftBoxCount, FreeSoftBoxCount の更新のために必要
|
||||||
switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain ))
|
switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain ))
|
||||||
@ -124,10 +131,10 @@ TwlMain()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TADのインポート開始
|
// TADのインポート開始
|
||||||
if (kamiImportTad(&titleId))
|
if (kamiImportTad())
|
||||||
{
|
{
|
||||||
// インポートに成功したならアプリジャンプ
|
// インポートに成功したならアプリジャンプ
|
||||||
OS_DoApplicationJump( titleId, OS_APP_JUMP_NORMAL );
|
OS_DoApplicationJump( GetImportJumpSetting()->bootTitleID, OS_APP_JUMP_NORMAL );
|
||||||
}
|
}
|
||||||
|
|
||||||
// アプリジャンプに成功したならここへは到達しない
|
// アプリジャンプに成功したならここへは到達しない
|
||||||
|
|||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user