1.NAM関数はマウント情報をもとに空きドライブを探しますが、NandInitializerで使用しているF:とG:はマウント情報に登録されていないため(sdmc-launcerファームのみ)

空きドライブと判定されインポート処理でマウントに失敗していました。そのためマウント情報にF:G:ドライブを追加するようにしました。(暫定)
2.タイミングによって.tadファイルのインポートが完了しない不具合を修正しました。
3..tadファイルの情報としてpublicSaveSize及びprivateSaveSizeも上画面に表示するようにしました。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@851 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
kamikawa 2008-03-07 11:26:19 +00:00
parent f40d6584a3
commit 4be2d0fdb4
3 changed files with 61 additions and 6 deletions

View File

@ -42,6 +42,7 @@ static FSEventHook sSDHook;
*---------------------------------------------------------------------------*/
static void VBlankIntr(void);
static void InitAllocation(void);
static void RegisterMountInfo(void);
/*---------------------------------------------------------------------------*
Name: TwlMain
@ -89,6 +90,9 @@ TwlMain()
// SDカードの挿抜イベント監視コールバック設定
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
// Fドライブ、Gドライブを登録暫定処置
RegisterMountInfo();
// SD起動などあらゆるマウント状態に対応する
FATFS_UnmountDrive("F:");
FATFS_UnmountDrive("G:");
@ -180,3 +184,45 @@ static void InitAllocation(void)
OS_Panic("ARM9: Fail to create heap...\n");
hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh);
}
/*---------------------------------------------------------------------------*
Name: RegisterMountInfo
Description: F:G:
NAM関数がマウント情報をもとに一時的にマウントに使用する
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/
static void RegisterMountInfo(void)
{
const OSMountInfo info_nand = { 'F', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_WRAM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "nand", "/" };
const OSMountInfo info_sd = { 'G', OS_MOUNT_DEVICE_SD, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "sdmc", "/" };
OSMountInfo* pRegisteredInfo;
BOOL existNAND = FALSE;
BOOL existSD = FALSE;
pRegisteredInfo = (OSMountInfo*)OS_GetMountInfo();
for( ; pRegisteredInfo->drive[0] != '\0'; ++pRegisteredInfo )
{
if ( pRegisteredInfo->drive[0] == 'F') { existNAND = TRUE; }
else if ( pRegisteredInfo->drive[0] == 'G') { existSD = TRUE; }
}
if (!existNAND)
{
MI_CpuCopy8(&info_nand, pRegisteredInfo, sizeof(info_nand));
pRegisteredInfo->drive[0] = 'F';
++pRegisteredInfo;
}
if (!existSD)
{
MI_CpuCopy8(&info_sd, pRegisteredInfo, sizeof(info_sd));
pRegisteredInfo->drive[0] = 'G';
}
}

View File

@ -177,7 +177,7 @@ void* FormatProcess2(void)
switch( sMenuSelectNo )
{
case 0:
case 0: // 擬似フォーマット
// NAMUT_DrawNandTree();
if (NAMUT_Format())
{
@ -189,17 +189,17 @@ void* FormatProcess2(void)
}
// NAMUT_DrawNandTree();
return FormatProcess1;
case 1:
case 1: // ノーマルフォーマット
sLock = TRUE;
ExeFormatAsync(FORMAT_MODE_QUICK, FormatCallback);
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " ");
return FormatProcess3;
case 2:
case 2: // フルフォーマット
sLock = TRUE;
ExeFormatAsync(FORMAT_MODE_FULL, FormatCallback);
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " ");
return FormatProcess3;
case 3:
case 3: // チェックディスク
{
FATFSDiskInfo info;
BOOL result = FALSE;

View File

@ -682,7 +682,7 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
spStack = OS_Alloc(THREAD_STACK_SIZE);
MI_CpuClear8(spStack, THREAD_STACK_SIZE);
OS_CreateThread(&thread, ProgressThread, NULL,
(void*)((u32)spStack + THREAD_STACK_SIZE), THREAD_STACK_SIZE, OS_THREAD_PRIORITY_MAX);
(void*)((u32)spStack + THREAD_STACK_SIZE), THREAD_STACK_SIZE, OS_GetCurrentThread()->priority - 1);
// デストラクタセット
OS_SetThreadDestructor( &thread, Destructor );
OS_WakeupThreadDirect(&thread);
@ -694,7 +694,7 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
nam_result = NAM_ImportTad( full_path );
// 進捗スレッドの自力終了を待つ
while (sNowImport){ OS_Sleep(1); };
while (sNowImport){};
if ( nam_result == NAM_OK )
{
@ -749,6 +749,9 @@ static void ProgressThread(void* /*arg*/)
}
totalSizeBk = totalSize;
// Vブランク待ち
OS_WaitVBlankIntr();
}
sNowImport = FALSE;
@ -836,6 +839,12 @@ static void DumpTadInfo(void)
// Game Version
kamiFontPrintfConsole(CONSOLE_ORANGE, "GameVersion = %d\n", info.titleInfo.version);
// Public Save Size
kamiFontPrintfConsole(CONSOLE_ORANGE, "PublicSaveSize = %d\n", info.titleInfo.publicSaveSize);
// Private Save Size
kamiFontPrintfConsole(CONSOLE_ORANGE, "PrivateSaveSize = %d\n", info.titleInfo.privateSaveSize);
kamiFontPrintfConsole(CONSOLE_ORANGE, "--------------------------\n");
}
}