・HWInfoWriterにおいて、HW情報とTWL本体設定データのデータリード順序に誤りがあったのを修正。

・リージョンを変更した時は、必ずTWL本体設定データの再ライトを行うよう変更。


git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@820 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2008-03-05 05:39:55 +00:00
parent c63da87132
commit f0e34f5fd5
3 changed files with 24 additions and 9 deletions

View File

@ -169,7 +169,7 @@ TitleProperty *SYSM_ReadParameters( void )
}
//-----------------------------------------------------
// 本体設定データのリード
// 本体設定データのリード※必ずHWSecureInforリード後に実行すること。LanguageBitmapを判定に使うため
//-----------------------------------------------------
{
u8 *pBuffer = SYSM_Alloc( LCFG_READ_TEMP );

View File

@ -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 );
// メッセージを一定時間表示して消去

View File

@ -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 );
}
}
}
/*---------------------------------------------------------------------------*