diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c b/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c index 428720c7..75687c21 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c @@ -257,9 +257,23 @@ int MachineSettingMain( void ) tp_select = SelectMenuByTP( &s_csr, &s_settingParam ); DrawMenu( s_csr, &s_settingParam ); +#if 0 if( pad.trg & PAD_BUTTON_START ) { OS_DoApplicationJump( NULL, OS_APP_JUMP_NORMAL ); + u8 *pBuffer = Alloc( LCFG_READ_TEMP ); + g_isValidTSD = FALSE; + if( pBuffer) { + g_isValidTSD = LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ] )pBuffer ); + Free( pBuffer ); + if( g_isValidTSD ) { + OS_TPrintf( "TSD Read succeeded.\n" ); + }else { + OS_TPrintf( "TSD Read failed.\n" ); + PrintfSJIS( 0, 22*8, TXT_COLOR_RED, "TSD Read failed.\n" ); + } + } } +#endif if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 if( s_settingPos[ s_csr ].enable ) { diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/main.c b/build/systemMenu_RED/MachineSettings/ARM9/src/main.c index e2b3dafd..bfc8bb93 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/main.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/main.c @@ -89,12 +89,30 @@ void TwlMain(void) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルの読み込み // :::::::::::::::::::::::::::::::::::::::::::::: - { - u8 *pBuffer = Alloc( LCFG_READ_TEMP ); - g_isValidTSD = FALSE; - if( pBuffer) { - g_isValidTSD = LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ] )pBuffer ); - Free( pBuffer ); + g_isValidTSD = TRUE; + { + u8 *pBuffer = Alloc( LCFG_READ_TEMP ); + if( pBuffer ) { + // NANDからTWL本体設定データをリード + BOOL isRead = LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ); + + // リード失敗ファイルが存在する場合は、ファイルをリカバリ + if( LCFG_RecoveryTWLSettings() ) { + if( isRead ) { + // ミラーデータのうち、一方でもリードできていたなら何もしない。 + }else { + // リードに完全に失敗していた場合は、フラッシュ壊れシーケンスへ。 + LCFG_TSD_SetFlagFinishedBrokenTWLSettings( FALSE ); + (void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); // LCFG_READ_TEMP > LCFG_WRITE_TEMP なので、pBufferをそのまま流用 + } + }else { + // リカバリ失敗時は、FALTALエラー + g_isValidTSD = FALSE; + } + Free( pBuffer ); + }else { + // メモリ確保ができなかった時は、FATALエラー + g_isValidTSD = FALSE; } }