・TWL設定データの有効/無効フラグ処理をTWL設定データのリード/ライトに

連動するよう変更。
・SYSM_CalcRTCOffsetAndSetDateTime()からRTCへの日付・時刻セットを除いて、SYSM_CalcRTCOffset()に変更。
・SYSM_IsLeapYear100()のパラメータチェックを除外。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@215 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2007-11-19 08:50:00 +00:00
parent 32b2cf2945
commit cb717d1d7b
8 changed files with 30 additions and 19 deletions

View File

@ -42,12 +42,12 @@ static const u16 s_validLangBitmapList[] = {
// TWL設定データファイルのリード // TWL設定データファイルのリード
BOOL SYSM_ReadTWLSettingsFile( void ) BOOL SYSM_ReadTWLSettingsFile( void )
{ {
BOOL retval; BOOL retval = FALSE;;
{ {
TSDStore (*pTempBuffer)[2] = SYSM_Alloc( TSD_TEMP_BUFFER_SIZE ); TSDStore (*pTempBuffer)[2] = SYSM_Alloc( TSD_TEMP_BUFFER_SIZE );
if( pTempBuffer == NULL ) { if( pTempBuffer == NULL ) {
OS_TPrintf( "%s : malloc failed.\n", __FUNCTION__ ); OS_TPrintf( "%s : malloc failed.\n", __FUNCTION__ );
return FALSE; goto RETURN;
} }
MI_CpuFill32( pTempBuffer, 0xffffffff, TSD_TEMP_BUFFER_SIZE ); MI_CpuFill32( pTempBuffer, 0xffffffff, TSD_TEMP_BUFFER_SIZE );
retval = TSD_ReadSettings( pTempBuffer ); retval = TSD_ReadSettings( pTempBuffer );
@ -57,7 +57,7 @@ BOOL SYSM_ReadTWLSettingsFile( void )
NSDStoreEx (*pTempBuffer)[2] = SYSM_Alloc( NSD_TEMP_BUFFER_SIZE ); NSDStoreEx (*pTempBuffer)[2] = SYSM_Alloc( NSD_TEMP_BUFFER_SIZE );
if( pTempBuffer == NULL ) { if( pTempBuffer == NULL ) {
OS_TPrintf( "%s : malloc failed.\n", __FUNCTION__ ); OS_TPrintf( "%s : malloc failed.\n", __FUNCTION__ );
return FALSE; goto RETURN;
} }
MI_CpuFill32( pTempBuffer, 0xffffffff, NSD_TEMP_BUFFER_SIZE ); MI_CpuFill32( pTempBuffer, 0xffffffff, NSD_TEMP_BUFFER_SIZE );
retval = NSD_ReadSettings( TSD_GetRegion(), pTempBuffer ); retval = NSD_ReadSettings( TSD_GetRegion(), pTempBuffer );
@ -66,6 +66,8 @@ BOOL SYSM_ReadTWLSettingsFile( void )
(void)SYSMi_VerifyNTRSettings(); (void)SYSMi_VerifyNTRSettings();
#endif #endif
} }
RETURN:
SYSM_SetValidTSD( retval );
return retval; return retval;
} }
@ -76,6 +78,7 @@ BOOL SYSM_WriteTWLSettingsFile( void )
BOOL retval; BOOL retval;
retval = TSD_WriteSettings(); retval = TSD_WriteSettings();
if( retval ) { // ライト成功なら、TSDをNSDに変換して、NVRAMにも書き込み if( retval ) { // ライト成功なら、TSDをNSDに変換して、NVRAMにも書き込み
SYSM_SetValidTSD( TRUE );
SYSMi_ConvertTWL2NTRSettings(); SYSMi_ConvertTWL2NTRSettings();
NSD_WriteSettings( TSD_GetRegion() ); NSD_WriteSettings( TSD_GetRegion() );
#ifndef SDK_FINALROM #ifndef SDK_FINALROM

View File

@ -348,6 +348,19 @@ BOOL SYSM_IsTPReadable( void )
} }
// TSD有効/無効をセット
void SYSM_SetValidTSD( BOOL valid )
{
SYSMi_GetWork()->isValidTSD = valid;
}
// TSD有効
BOOL SYSM_IsValidTSD( void )
{
return SYSMi_GetWork()->isValidTSD;
}
// ============================================================================ // ============================================================================
// //
// アプリ起動 // アプリ起動

View File

@ -38,7 +38,7 @@ static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep );
//====================================================================== //======================================================================
// RTCに新しい設定値をセットして、その値をもとにrtcOffset値を算出する。 // RTCに新しい設定値をセットして、その値をもとにrtcOffset値を算出する。
s64 SYSM_CalcRTCOffsetAndSetDateTime( RTCDate *newDatep, RTCTime *newTimep ) s64 SYSM_CalcRTCOffset( RTCDate *newDatep, RTCTime *newTimep )
{ {
RTCDate oldDate; RTCDate oldDate;
RTCTime oldTime; RTCTime oldTime;
@ -48,7 +48,6 @@ s64 SYSM_CalcRTCOffsetAndSetDateTime( RTCDate *newDatep, RTCTime *newTimep )
// RTCへの新しい値の設定 // RTCへの新しい値の設定
(void)RTC_GetDateTime( &oldDate, &oldTime ); // ライト直前に現在のRTC値を取得する。 (void)RTC_GetDateTime( &oldDate, &oldTime ); // ライト直前に現在のRTC値を取得する。
(void)RTC_SetDateTime( newDatep, newTimep ); // 新RTC設定値のセット。
oldTime.second = 0; oldTime.second = 0;
// RTC設定時は、今回の設定でどれだけRTC値が変化したか秒オフセット単位を算出。 // RTC設定時は、今回の設定でどれだけRTC値が変化したか秒オフセット単位を算出。
@ -86,7 +85,7 @@ static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
// 時、分、秒を 秒 or 分オフセットに // 時、分、秒を 秒 or 分オフセットに
#ifdef SECOND_OFFSET #ifdef SECOND_OFFSET
offset = ( timep->hour * 60 + timep->minute ) * 60 + timep->second; offset = ( timep->hour * 60 + timep->minute ) * 60 + timep->second; // ※キャスト部分にバグあり
#else #else
offset = timep->hour * 60 + timep->minute; offset = timep->hour * 60 + timep->minute;
#endif #endif
@ -105,7 +104,7 @@ static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
// 年・月・日を日数に換算した値を 秒 or 分オフセットに // 年・月・日を日数に換算した値を 秒 or 分オフセットに
#ifdef SECOND_OFFSET #ifdef SECOND_OFFSET
offset += (s64)( dayNum * 24 * 3600 ); offset += (s64)( dayNum * 24 * 3600 ); // ※キャスト部分にバグあり
#else #else
offset += (s64)( dayNum * 24 * 60 ); offset += (s64)( dayNum * 24 * 60 );
#endif #endif
@ -134,9 +133,6 @@ u32 SYSM_GetDayNum( u32 year, u32 month )
// 簡易うるう年の判定 (うるう年1、通常の年0※RTCのとりうる範20002100年に限定する。 // 簡易うるう年の判定 (うるう年1、通常の年0※RTCのとりうる範20002100年に限定する。
BOOL SYSM_IsLeapYear100( u32 year ) BOOL SYSM_IsLeapYear100( u32 year )
{ {
if( ( year < 2000 ) || ( year >= 2100 ) ) {
OS_Panic( "year = %d : need 2000 - 2099\n", year );
}
if( ( year & 0x03 ) || ( year == 100 ) ) { // うるう年は、「4で割り切れ かつ 100で割り切れない年」または「400で割り切れる年」 if( ( year & 0x03 ) || ( year == 100 ) ) { // うるう年は、「4で割り切れ かつ 100で割り切れない年」または「400で割り切れる年」
return FALSE; return FALSE;
}else { }else {

View File

@ -208,6 +208,8 @@ static TitleProperty *CheckShortcutBoot( TitleProperty *pTitleList )
} }
return pTgt; return pTgt;
} }
#else
#pragma unused(pTitleList)
#endif // 0 #endif // 0
return NULL; // 「ブート内容未定」でリターン return NULL; // 「ブート内容未定」でリターン
} }

View File

@ -408,8 +408,6 @@ int TP_CalibrationMain( void )
} }
if( ( pad.trg & PAD_BUTTON_A ) || tp_ok ) { if( ( pad.trg & PAD_BUTTON_A ) || tp_ok ) {
SYSMi_GetWork()->isValidTSD = 0;
s_pTPC->calibTemp.data.raw_x1 = s_pTPC->sample[0].x; s_pTPC->calibTemp.data.raw_x1 = s_pTPC->sample[0].x;
s_pTPC->calibTemp.data.raw_y1 = s_pTPC->sample[0].y; s_pTPC->calibTemp.data.raw_y1 = s_pTPC->sample[0].y;
s_pTPC->calibTemp.data.dx1 = 32; s_pTPC->calibTemp.data.dx1 = 32;

View File

@ -80,7 +80,7 @@ void SelectLanguageInit( void )
PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"Select language." ); PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"Select language." );
} }
if( ( SYSMi_GetWork()->isValidTSD ) || if( SYSM_IsValidTSD() ||
( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) { ( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) {
s_langCode = TWL_LANG_ENGLISH; s_langCode = TWL_LANG_ENGLISH;
}else { }else {
@ -128,8 +128,6 @@ int SelectLanguageMain( void )
} }
if( ( pad.trg & PAD_BUTTON_A ) || tp_select ) { // メニュー項目への分岐 if( ( pad.trg & PAD_BUTTON_A ) || tp_select ) { // メニュー項目への分岐
SYSMi_GetWork()->isValidTSD = 0;
TSD_SetLanguage( s_langCode ); TSD_SetLanguage( s_langCode );
TSD_SetFlagLanguage( TRUE ); // 言語入力フラグを立てる TSD_SetFlagLanguage( TRUE ); // 言語入力フラグを立てる
// :::::::::::::::::::::::::::::::::::::::::::::: // ::::::::::::::::::::::::::::::::::::::::::::::

View File

@ -376,10 +376,9 @@ static int InputRtcDateTimeMain( void )
MI_CpuCopy32( &s_pWork->dtp.Date, &date, sizeof(RTCDate) ); MI_CpuCopy32( &s_pWork->dtp.Date, &date, sizeof(RTCDate) );
date.year -= 2000; date.year -= 2000;
(void)RTC_SetDateTime( &date, &s_pWork->dtp.Time ); (void)RTC_SetDateTime( &date, &s_pWork->dtp.Time );
TSD_SetRTCOffset( SYSM_CalcRTCOffsetAndSetDateTime( &date, &s_pWork->dtp.Time ) ); TSD_SetRTCOffset( SYSM_CalcRTCOffset( &date, &s_pWork->dtp.Time ) );
} }
SYSMi_GetWork()->isValidTSD = 0;
TSD_SetFlagDateTime( TRUE ); // RTC入力フラグを立てる。 TSD_SetFlagDateTime( TRUE ); // RTC入力フラグを立てる。
// :::::::::::::::::::::::::::::::::::::::::::::: // ::::::::::::::::::::::::::::::::::::::::::::::
// TWL設定データファイルへの書き込み // TWL設定データファイルへの書き込み

View File

@ -99,7 +99,9 @@ extern BOOL SYSM_IsExistCard( void ); // TWL/NTR
extern BOOL SYSM_IsInspectCard( void ); // 検査カードが差さっているか? extern BOOL SYSM_IsInspectCard( void ); // 検査カードが差さっているか?
extern BOOL SYSM_IsTPReadable( void ); // TPリード可能か extern BOOL SYSM_IsTPReadable( void ); // TPリード可能か
extern BOOL SYSM_IsLogoDemoSkip( void ); // ロゴデモ飛ばし状態か? extern BOOL SYSM_IsLogoDemoSkip( void ); // ロゴデモ飛ばし状態か?
extern void SYSM_SetLogoDemoSkip( BOOL skip ); // ロゴデモ飛ばし状態を設定する。 extern void SYSM_SetLogoDemoSkip( BOOL skip ); // ロゴデモ飛ばし状態フラグを設定する。
extern BOOL SYSM_IsValidTSD( void ); // TWL設定データは有効か
extern void SYSM_SetValidTSD( BOOL valid ); // TWL設定データの有効無効フラグを設定する。
extern const ResetParamBody *SYSM_GetResetParamBody( void ); // リセットパラメータの取得 extern const ResetParamBody *SYSM_GetResetParamBody( void ); // リセットパラメータの取得
// 本体設定データアクセス // 本体設定データアクセス
@ -115,7 +117,7 @@ extern void SYSM_LoadNintendoLogo1D( u16 *pLogoData, u16 *pDst, int paletteColor
// RTC制御 // RTC制御
extern BOOL SYSM_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック extern BOOL SYSM_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック
extern BOOL SYSM_CheckRTCTime( RTCTime *pTime ); // 時刻が正常かチェック extern BOOL SYSM_CheckRTCTime( RTCTime *pTime ); // 時刻が正常かチェック
extern s64 SYSM_CalcRTCOffsetAndSetDateTime( RTCDate *pNewDate, RTCTime *pNewTime ); // RTCオフセット計算とRTCへの日付時刻チェックを行う extern s64 SYSM_CalcRTCOffset( RTCDate *pNewDate, RTCTime *pNewTime ); // RTCオフセット計算とRTCへの日付時刻チェックを行う
extern u32 SYSM_GetDayNum( u32 year, u32 month ); // 指定された年・月の日数を取得する extern u32 SYSM_GetDayNum( u32 year, u32 month ); // 指定された年・月の日数を取得する
extern BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる extern BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる