From 4be2d0fdb4f96ea7501a4ce2cd35be61497defbc Mon Sep 17 00:00:00 2001 From: kamikawa Date: Fri, 7 Mar 2008 11:26:19 +0000 Subject: [PATCH] =?UTF-8?q?=EF=BC=91=EF=BC=8ENAM=E9=96=A2=E6=95=B0?= =?UTF-8?q?=E3=81=AF=E3=83=9E=E3=82=A6=E3=83=B3=E3=83=88=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=82=92=E3=82=82=E3=81=A8=E3=81=AB=E7=A9=BA=E3=81=8D=E3=83=89?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=82=92=E6=8E=A2=E3=81=97=E3=81=BE?= =?UTF-8?q?=E3=81=99=E3=81=8C=E3=80=81NandInitializer=E3=81=A7=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E3=81=97=E3=81=A6=E3=81=84=E3=82=8BF:=E3=81=A8G:?= =?UTF-8?q?=E3=81=AF=E3=83=9E=E3=82=A6=E3=83=B3=E3=83=88=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=81=AB=E7=99=BB=E9=8C=B2=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84?= =?UTF-8?q?=E3=81=AA=E3=81=84=E3=81=9F=E3=82=81=EF=BC=88sdmc-launcer?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=83=BC=E3=83=A0=E3=81=AE=E3=81=BF=EF=BC=89?= =?UTF-8?q?=20=E3=80=80=E3=80=80=E7=A9=BA=E3=81=8D=E3=83=89=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=96=E3=81=A8=E5=88=A4=E5=AE=9A=E3=81=95=E3=82=8C?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=9D=E3=83=BC=E3=83=88=E5=87=A6=E7=90=86?= =?UTF-8?q?=E3=81=A7=E3=83=9E=E3=82=A6=E3=83=B3=E3=83=88=E3=81=AB=E5=A4=B1?= =?UTF-8?q?=E6=95=97=E3=81=97=E3=81=A6=E3=81=84=E3=81=BE=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=80=82=E3=81=9D=E3=81=AE=E3=81=9F=E3=82=81=E3=83=9E=E3=82=A6?= =?UTF-8?q?=E3=83=B3=E3=83=88=E6=83=85=E5=A0=B1=E3=81=ABF:G:=E3=83=89?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=BE=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=80=82=EF=BC=88=E6=9A=AB=E5=AE=9A=EF=BC=89=20?= =?UTF-8?q?=EF=BC=92=EF=BC=8E=E3=82=BF=E3=82=A4=E3=83=9F=E3=83=B3=E3=82=B0?= =?UTF-8?q?=E3=81=AB=E3=82=88=E3=81=A3=E3=81=A6.tad=E3=83=95=E3=82=A1?= =?UTF-8?q?=E3=82=A4=E3=83=AB=E3=81=AE=E3=82=A4=E3=83=B3=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=8C=E5=AE=8C=E4=BA=86=E3=81=97=E3=81=AA=E3=81=84?= =?UTF-8?q?=E4=B8=8D=E5=85=B7=E5=90=88=E3=82=92=E4=BF=AE=E6=AD=A3=E3=81=97?= =?UTF-8?q?=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82=20=EF=BC=93=EF=BC=8E.tad?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=AE=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=81=A8=E3=81=97=E3=81=A6publicSaveSize=E5=8F=8A=E3=81=B3priv?= =?UTF-8?q?ateSaveSize=E3=82=82=E4=B8=8A=E7=94=BB=E9=9D=A2=E3=81=AB?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@851 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../NandInitializer/ARM9.TWL/src/main.c | 46 +++++++++++++++++++ .../ARM9.TWL/src/process_format.c | 8 ++-- .../ARM9.TWL/src/process_import.c | 13 +++++- 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/main.c b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/main.c index c38493f9..f143e9d5 100644 --- a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/main.c +++ b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/main.c @@ -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'; + } +} + diff --git a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_format.c b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_format.c index e0c24527..57dcb257 100644 --- a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_format.c +++ b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_format.c @@ -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; diff --git a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_import.c b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_import.c index 2f106cc1..04653bf9 100644 --- a/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_import.c +++ b/build/systemMenu_RED/NandInitializer/ARM9.TWL/src/process_import.c @@ -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"); } }