From f0e34f5fd5834930c150ba6d928fb5b8422b5b20 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Wed, 5 Mar 2008 05:39:55 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BBHWInfoWriter=E3=81=AB=E3=81=8A?= =?UTF-8?q?=E3=81=84=E3=81=A6=E3=80=81HW=E6=83=85=E5=A0=B1=E3=81=A8TWL?= =?UTF-8?q?=E6=9C=AC=E4=BD=93=E8=A8=AD=E5=AE=9A=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E3=81=AE=E3=83=87=E3=83=BC=E3=82=BF=E3=83=AA=E3=83=BC=E3=83=89?= =?UTF-8?q?=E9=A0=86=E5=BA=8F=E3=81=AB=E8=AA=A4=E3=82=8A=E3=81=8C=E3=81=82?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3=E3=80=82?= =?UTF-8?q?=20=E3=83=BB=E3=83=AA=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E3=82=92=E5=A4=89=E6=9B=B4=E3=81=97=E3=81=9F=E6=99=82=E3=81=AF?= =?UTF-8?q?=E3=80=81=E5=BF=85=E3=81=9ATWL=E6=9C=AC=E4=BD=93=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E5=86=8D=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=88=E3=82=92=E8=A1=8C=E3=81=86=E3=82=88=E3=81=86?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=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@820 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 2 +- .../HWInfoWriter/ARM9/src/HWInfoWriter.c | 1 + .../HWInfoWriter/ARM9/src/hwi.c | 30 ++++++++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index cfd54499..fed394b3 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -169,7 +169,7 @@ TitleProperty *SYSM_ReadParameters( void ) } //----------------------------------------------------- - // 本体設定データのリード + // 本体設定データのリード(※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため) //----------------------------------------------------- { u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP ); diff --git a/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c b/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c index 788dacac..03c6a454 100644 --- a/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c +++ b/build/systemMenu_RED/HWInfoWriter/ARM9/src/HWInfoWriter.c @@ -217,6 +217,7 @@ static void WriteHWInfoFile( u8 region ) (void)PutStringUTF16( ( MSG_X + 20 ) * 8, ( MSG_Y + 4 ) * 8, TXT_COLOR_RED, pMsgFailed ); } + // リージョンの更新を言語コードに反映させる。(必ずセキュアファイルのライト後に実行) HWI_ModifyLanguage( region ); // メッセージを一定時間表示して消去 diff --git a/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c b/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c index ef5aa36e..87b99697 100644 --- a/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c +++ b/build/systemMenu_RED/HWInfoWriter/ARM9/src/hwi.c @@ -101,7 +101,6 @@ HwiInitResult HWI_Init( void *(*pAlloc)( u32 ), void (*pFree)( void * ) ) spFree = pFree; ACSign_SetAllocFunc( pAlloc, pFree ); - ReadTWLSettings(); result = ReadPrivateKey(); ReadHWInfoFile(); // VerifyHWInfo(); @@ -115,6 +114,8 @@ HwiInitResult HWI_Init( void *(*pAlloc)( u32 ), void (*pFree)( void * ) ) OS_TPrintf( "HWID Signature check succeeded.\n" ); } } + // ※LanguageBitmapを判定で使用するので、必ずReadHWInfoの後で実行する必要がある。 + ReadTWLSettings(); return result; } @@ -123,10 +124,10 @@ HwiInitResult HWI_Init( void *(*pAlloc)( u32 ), void (*pFree)( void * ) ) // TWL設定データのリード static void ReadTWLSettings( void ) { - u8 *pBuffer = spAlloc( sizeof(LCFGTWLSettingsData) * 2 ); + u8 *pBuffer = spAlloc( LCFG_READ_TEMP ); s_isReadTSD = FALSE; if( pBuffer ) { - s_isReadTSD = LCFGi_TSD_ReadSettings( (u8 (*)[ sizeof(LCFGTWLSettingsData) * 2 ] )pBuffer ); + s_isReadTSD = LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ] )pBuffer ); spFree( pBuffer ); } if( s_isReadTSD ) { @@ -244,7 +245,8 @@ static BOOL VerifyData( const u8 *pTgt, const u8 *pOrg, u32 len ) *---------------------------------------------------------------------------*/ void HWI_ModifyLanguage( u8 region ) { - u32 langBitmap = s_langBitmapList[ region ]; +#pragma unused( region ) + u32 langBitmap = LCFG_THW_GetValidLanguageBitmap(); u8 nowLanguage = LCFG_TSD_GetLanguage(); // TSDが読み込めていないなら、何もせずリターン @@ -262,13 +264,25 @@ void HWI_ModifyLanguage( u8 region ) } } LCFG_TSD_SetLanguage( (LCFGTWLLangCode)i ); - LCFG_TSD_SetFlagCountry( FALSE ); // ※ついでに国コードもクリアしておく。 - LCFG_TSD_SetCountry( LCFG_TWL_COUNTRY_UNDEFINED ); - LCFGi_TSD_WriteSettings(); - OS_TPrintf( "Language Change \"%s\" -> \"%s\"\n", strLanguage[ nowLanguage ], strLanguage[ LCFG_TSD_GetLanguage() ] ); } + + // 国コードもクリアしておく。 + LCFG_TSD_SetFlagCountry( FALSE ); + LCFG_TSD_SetCountry( LCFG_TWL_COUNTRY_UNDEFINED ); + + // ペアレンタルコントロール情報もクリアしておく + + + // regionが変わった場合は、LANGUAGE_BITMAPも必ず変わるので、それをNTR側に反映させるために必ずTWL設定データの書き込みも行う。 + { + u8 *pBuffer = spAlloc( LCFG_WRITE_TEMP ); + if( pBuffer ) { + (void)LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); + spFree( pBuffer ); + } + } } /*---------------------------------------------------------------------------*