diff --git a/build/systemMenu_RED/ImportJump/ARM9.TWL/include/ImportJump.h b/build/systemMenu_RED/ImportJump/ARM9.TWL/include/ImportJump.h index cd02e994..f16082ae 100644 --- a/build/systemMenu_RED/ImportJump/ARM9.TWL/include/ImportJump.h +++ b/build/systemMenu_RED/ImportJump/ARM9.TWL/include/ImportJump.h @@ -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; } /*===========================================================================*/ diff --git a/build/systemMenu_RED/ImportJump/ARM9.TWL/include/import.h b/build/systemMenu_RED/ImportJump/ARM9.TWL/include/import.h index 7a0696a1..cf44b1bf 100644 --- a/build/systemMenu_RED/ImportJump/ARM9.TWL/include/import.h +++ b/build/systemMenu_RED/ImportJump/ARM9.TWL/include/import.h @@ -34,7 +34,7 @@ extern "C" { 関数定義 *---------------------------------------------------------------------------*/ -BOOL kamiImportTad(NAMTitleId* pTitleId); +BOOL kamiImportTad(void); /*===========================================================================*/ diff --git a/build/systemMenu_RED/ImportJump/ARM9.TWL/src/import.c b/build/systemMenu_RED/ImportJump/ARM9.TWL/src/import.c index bbeab814..999f96c2 100644 --- a/build/systemMenu_RED/ImportJump/ARM9.TWL/src/import.c +++ b/build/systemMenu_RED/ImportJump/ARM9.TWL/src/import.c @@ -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) { diff --git a/build/systemMenu_RED/ImportJump/ARM9.TWL/src/main.c b/build/systemMenu_RED/ImportJump/ARM9.TWL/src/main.c index 87034e79..59d010b0 100644 --- a/build/systemMenu_RED/ImportJump/ARM9.TWL/src/main.c +++ b/build/systemMenu_RED/ImportJump/ARM9.TWL/src/main.c @@ -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 ); } // アプリジャンプに成功したならここへは到達しない diff --git a/docs/IS繝繝舌ャ繧ャ/IS繝繝舌ャ繧ャ繧ソ繧ケ繧ッ.vsd b/docs/IS繝繝舌ャ繧ャ/IS繝繝舌ャ繧ャ繧ソ繧ケ繧ッ.vsd index 100a4495..c9e11c8c 100644 Binary files a/docs/IS繝繝舌ャ繧ャ/IS繝繝舌ャ繧ャ繧ソ繧ケ繧ッ.vsd and b/docs/IS繝繝舌ャ繧ャ/IS繝繝舌ャ繧ャ繧ソ繧ケ繧ッ.vsd differ