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 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;
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
|
||||
@ -34,7 +34,7 @@ extern "C" {
|
||||
ЉЦђ”’и‹`
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
BOOL kamiImportTad(NAMTitleId* pTitleId);
|
||||
BOOL kamiImportTad(void);
|
||||
|
||||
/*===========================================================================*/
|
||||
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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 );
|
||||
}
|
||||
|
||||
// アプリジャンプに成功したならここへは到達しない
|
||||
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user