mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
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:
parent
f40d6584a3
commit
4be2d0fdb4
@ -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';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user