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 VBlankIntr(void);
|
||||||
static void InitAllocation(void);
|
static void InitAllocation(void);
|
||||||
|
static void RegisterMountInfo(void);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: TwlMain
|
Name: TwlMain
|
||||||
@ -89,6 +90,9 @@ TwlMain()
|
|||||||
// SDカードの挿抜イベント監視コールバック設定
|
// SDカードの挿抜イベント監視コールバック設定
|
||||||
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL);
|
||||||
|
|
||||||
|
// Fドライブ、Gドライブを登録(暫定処置)
|
||||||
|
RegisterMountInfo();
|
||||||
|
|
||||||
// SD起動などあらゆるマウント状態に対応する
|
// SD起動などあらゆるマウント状態に対応する
|
||||||
FATFS_UnmountDrive("F:");
|
FATFS_UnmountDrive("F:");
|
||||||
FATFS_UnmountDrive("G:");
|
FATFS_UnmountDrive("G:");
|
||||||
@ -180,3 +184,45 @@ static void InitAllocation(void)
|
|||||||
OS_Panic("ARM9: Fail to create heap...\n");
|
OS_Panic("ARM9: Fail to create heap...\n");
|
||||||
hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh);
|
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 )
|
switch( sMenuSelectNo )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: // 擬似フォーマット
|
||||||
// NAMUT_DrawNandTree();
|
// NAMUT_DrawNandTree();
|
||||||
if (NAMUT_Format())
|
if (NAMUT_Format())
|
||||||
{
|
{
|
||||||
@ -189,17 +189,17 @@ void* FormatProcess2(void)
|
|||||||
}
|
}
|
||||||
// NAMUT_DrawNandTree();
|
// NAMUT_DrawNandTree();
|
||||||
return FormatProcess1;
|
return FormatProcess1;
|
||||||
case 1:
|
case 1: // ノーマルフォーマット
|
||||||
sLock = TRUE;
|
sLock = TRUE;
|
||||||
ExeFormatAsync(FORMAT_MODE_QUICK, FormatCallback);
|
ExeFormatAsync(FORMAT_MODE_QUICK, FormatCallback);
|
||||||
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " ");
|
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " ");
|
||||||
return FormatProcess3;
|
return FormatProcess3;
|
||||||
case 2:
|
case 2: // フルフォーマット
|
||||||
sLock = TRUE;
|
sLock = TRUE;
|
||||||
ExeFormatAsync(FORMAT_MODE_FULL, FormatCallback);
|
ExeFormatAsync(FORMAT_MODE_FULL, FormatCallback);
|
||||||
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " ");
|
kamiFontPrintf(24, y_pos, FONT_COLOR_BLACK, " ");
|
||||||
return FormatProcess3;
|
return FormatProcess3;
|
||||||
case 3:
|
case 3: // チェックディスク
|
||||||
{
|
{
|
||||||
FATFSDiskInfo info;
|
FATFSDiskInfo info;
|
||||||
BOOL result = FALSE;
|
BOOL result = FALSE;
|
||||||
|
|||||||
@ -682,7 +682,7 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
|
|||||||
spStack = OS_Alloc(THREAD_STACK_SIZE);
|
spStack = OS_Alloc(THREAD_STACK_SIZE);
|
||||||
MI_CpuClear8(spStack, THREAD_STACK_SIZE);
|
MI_CpuClear8(spStack, THREAD_STACK_SIZE);
|
||||||
OS_CreateThread(&thread, ProgressThread, NULL,
|
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_SetThreadDestructor( &thread, Destructor );
|
||||||
OS_WakeupThreadDirect(&thread);
|
OS_WakeupThreadDirect(&thread);
|
||||||
@ -694,7 +694,7 @@ static BOOL ImportTad(char* file_name, TadWriteOption option)
|
|||||||
nam_result = NAM_ImportTad( full_path );
|
nam_result = NAM_ImportTad( full_path );
|
||||||
|
|
||||||
// 進捗スレッドの自力終了を待つ
|
// 進捗スレッドの自力終了を待つ
|
||||||
while (sNowImport){ OS_Sleep(1); };
|
while (sNowImport){};
|
||||||
|
|
||||||
if ( nam_result == NAM_OK )
|
if ( nam_result == NAM_OK )
|
||||||
{
|
{
|
||||||
@ -749,6 +749,9 @@ static void ProgressThread(void* /*arg*/)
|
|||||||
}
|
}
|
||||||
|
|
||||||
totalSizeBk = totalSize;
|
totalSizeBk = totalSize;
|
||||||
|
|
||||||
|
// Vブランク待ち
|
||||||
|
OS_WaitVBlankIntr();
|
||||||
}
|
}
|
||||||
|
|
||||||
sNowImport = FALSE;
|
sNowImport = FALSE;
|
||||||
@ -836,6 +839,12 @@ static void DumpTadInfo(void)
|
|||||||
// Game Version
|
// Game Version
|
||||||
kamiFontPrintfConsole(CONSOLE_ORANGE, "GameVersion = %d\n", info.titleInfo.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");
|
kamiFontPrintfConsole(CONSOLE_ORANGE, "--------------------------\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user