mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・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:
parent
32b2cf2945
commit
cb717d1d7b
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// アプリ起動
|
||||
|
||||
@ -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のとりうる範2000~2100年に限定する。
|
||||
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 {
|
||||
|
||||
@ -208,6 +208,8 @@ static TitleProperty *CheckShortcutBoot( TitleProperty *pTitleList )
|
||||
}
|
||||
return pTgt;
|
||||
}
|
||||
#else
|
||||
#pragma unused(pTitleList)
|
||||
#endif // 0
|
||||
return NULL; // 「ブート内容未定」でリターン
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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 ); // 言語入力フラグを立てる
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
@ -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設定データファイルへの書き込み
|
||||
|
||||
@ -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 ); // 指定された年がうるう年か調べる
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user