・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設定データファイルのリード
BOOL SYSM_ReadTWLSettingsFile( void )
{
BOOL retval;
BOOL retval = FALSE;;
{
TSDStore (*pTempBuffer)[2] = SYSM_Alloc( TSD_TEMP_BUFFER_SIZE );
if( pTempBuffer == NULL ) {
OS_TPrintf( "%s : malloc failed.\n", __FUNCTION__ );
return FALSE;
goto RETURN;
}
MI_CpuFill32( pTempBuffer, 0xffffffff, TSD_TEMP_BUFFER_SIZE );
retval = TSD_ReadSettings( pTempBuffer );
@ -57,7 +57,7 @@ BOOL SYSM_ReadTWLSettingsFile( void )
NSDStoreEx (*pTempBuffer)[2] = SYSM_Alloc( NSD_TEMP_BUFFER_SIZE );
if( pTempBuffer == NULL ) {
OS_TPrintf( "%s : malloc failed.\n", __FUNCTION__ );
return FALSE;
goto RETURN;
}
MI_CpuFill32( pTempBuffer, 0xffffffff, NSD_TEMP_BUFFER_SIZE );
retval = NSD_ReadSettings( TSD_GetRegion(), pTempBuffer );
@ -66,6 +66,8 @@ BOOL SYSM_ReadTWLSettingsFile( void )
(void)SYSMi_VerifyNTRSettings();
#endif
}
RETURN:
SYSM_SetValidTSD( retval );
return retval;
}
@ -76,6 +78,7 @@ BOOL SYSM_WriteTWLSettingsFile( void )
BOOL retval;
retval = TSD_WriteSettings();
if( retval ) { // ライト成功なら、TSDをNSDに変換して、NVRAMにも書き込み
SYSM_SetValidTSD( TRUE );
SYSMi_ConvertTWL2NTRSettings();
NSD_WriteSettings( TSD_GetRegion() );
#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値を算出する。
s64 SYSM_CalcRTCOffsetAndSetDateTime( RTCDate *newDatep, RTCTime *newTimep )
s64 SYSM_CalcRTCOffset( RTCDate *newDatep, RTCTime *newTimep )
{
RTCDate oldDate;
RTCTime oldTime;
@ -48,7 +48,6 @@ s64 SYSM_CalcRTCOffsetAndSetDateTime( RTCDate *newDatep, RTCTime *newTimep )
// RTCへの新しい値の設定
(void)RTC_GetDateTime( &oldDate, &oldTime ); // ライト直前に現在のRTC値を取得する。
(void)RTC_SetDateTime( newDatep, newTimep ); // 新RTC設定値のセット。
oldTime.second = 0;
// RTC設定時は、今回の設定でどれだけRTC値が変化したか秒オフセット単位を算出。
@ -86,7 +85,7 @@ static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
// 時、分、秒を 秒 or 分オフセットに
#ifdef SECOND_OFFSET
offset = ( timep->hour * 60 + timep->minute ) * 60 + timep->second;
offset = ( timep->hour * 60 + timep->minute ) * 60 + timep->second; // ※キャスト部分にバグあり
#else
offset = timep->hour * 60 + timep->minute;
#endif
@ -105,7 +104,7 @@ static s64 SYSMi_CalcRTCSecOffset( RTCDate *datep, RTCTime *timep )
// 年・月・日を日数に換算した値を 秒 or 分オフセットに
#ifdef SECOND_OFFSET
offset += (s64)( dayNum * 24 * 3600 );
offset += (s64)( dayNum * 24 * 3600 ); // ※キャスト部分にバグあり
#else
offset += (s64)( dayNum * 24 * 60 );
#endif
@ -134,9 +133,6 @@ u32 SYSM_GetDayNum( u32 year, u32 month )
// 簡易うるう年の判定 (うるう年1、通常の年0※RTCのとりうる範20002100年に限定する。
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で割り切れる年」
return FALSE;
}else {

View File

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

View File

@ -408,8 +408,6 @@ int TP_CalibrationMain( void )
}
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_y1 = s_pTPC->sample[0].y;
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." );
}
if( ( SYSMi_GetWork()->isValidTSD ) ||
if( SYSM_IsValidTSD() ||
( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) {
s_langCode = TWL_LANG_ENGLISH;
}else {
@ -128,8 +128,6 @@ int SelectLanguageMain( void )
}
if( ( pad.trg & PAD_BUTTON_A ) || tp_select ) { // メニュー項目への分岐
SYSMi_GetWork()->isValidTSD = 0;
TSD_SetLanguage( s_langCode );
TSD_SetFlagLanguage( TRUE ); // 言語入力フラグを立てる
// ::::::::::::::::::::::::::::::::::::::::::::::

View File

@ -376,10 +376,9 @@ static int InputRtcDateTimeMain( void )
MI_CpuCopy32( &s_pWork->dtp.Date, &date, sizeof(RTCDate) );
date.year -= 2000;
(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入力フラグを立てる。
// ::::::::::::::::::::::::::::::::::::::::::::::
// TWL設定データファイルへの書き込み

View File

@ -99,7 +99,9 @@ extern BOOL SYSM_IsExistCard( void ); // TWL/NTR
extern BOOL SYSM_IsInspectCard( void ); // 検査カードが差さっているか?
extern BOOL SYSM_IsTPReadable( void ); // TPリード可能か
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 ); // リセットパラメータの取得
// 本体設定データアクセス
@ -115,7 +117,7 @@ extern void SYSM_LoadNintendoLogo1D( u16 *pLogoData, u16 *pDst, int paletteColor
// RTC制御
extern BOOL SYSM_CheckRTCDate( RTCDate *pDate ); // 日付が正常かチェック
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 BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる