From cb717d1d7b838f6351225e32039c7282d60c16a9 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Mon, 19 Nov 2007 08:50:00 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=BBTWL=E8=A8=AD=E5=AE=9A=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=81=AE=E6=9C=89=E5=8A=B9=EF=BC=8F=E7=84=A1?= =?UTF-8?q?=E5=8A=B9=E3=83=95=E3=83=A9=E3=82=B0=E5=87=A6=E7=90=86=E3=82=92?= =?UTF-8?q?TWL=E8=A8=AD=E5=AE=9A=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE?= =?UTF-8?q?=E3=83=AA=E3=83=BC=E3=83=89=EF=BC=8F=E3=83=A9=E3=82=A4=E3=83=88?= =?UTF-8?q?=E3=81=AB=20=E9=80=A3=E5=8B=95=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E5=A4=89=E6=9B=B4=E3=80=82=20=E3=83=BBSYSM=5FCalcRTCO?= =?UTF-8?q?ffsetAndSetDateTime()=E3=81=8B=E3=82=89RTC=E3=81=B8=E3=81=AE?= =?UTF-8?q?=E6=97=A5=E4=BB=98=E3=83=BB=E6=99=82=E5=88=BB=E3=82=BB=E3=83=83?= =?UTF-8?q?=E3=83=88=E3=82=92=E9=99=A4=E3=81=84=E3=81=A6=E3=80=81SYSM=5FCa?= =?UTF-8?q?lcRTCOffset()=E3=81=AB=E5=A4=89=E6=9B=B4=E3=80=82=20=E3=83=BBSY?= =?UTF-8?q?SM=5FIsLeapYear100()=E3=81=AE=E3=83=91=E3=83=A9=E3=83=A1?= =?UTF-8?q?=E3=83=BC=E3=82=BF=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E3=82=92?= =?UTF-8?q?=E9=99=A4=E5=A4=96=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@215 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/settingsAPI.c | 9 ++++++--- .../sysmenu/ARM9/src/sysmenu_lib.c | 13 +++++++++++++ .../sysmenu/ARM9/src/sysmenu_util.c | 10 +++------- build/systemMenu_RED/Launcher/ARM9/src/main.c | 2 ++ .../MachineSettings/ARM9/src/calibrationTP.c | 2 -- .../MachineSettings/ARM9/src/selectLanguage.c | 4 +--- .../MachineSettings/ARM9/src/setRTC.c | 3 +-- include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h | 6 ++++-- 8 files changed, 30 insertions(+), 19 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/settingsAPI.c b/build/libraries_sysmenu/sysmenu/ARM9/src/settingsAPI.c index 9ea0ce56..48548f60 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/settingsAPI.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/settingsAPI.c @@ -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 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 247446e8..5cbd48a5 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -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; +} + // ============================================================================ // // アプリ起動 diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_util.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_util.c index 03070110..6c5d4ed5 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_util.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_util.c @@ -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 { diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index b5f0818a..685a1b90 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -208,6 +208,8 @@ static TitleProperty *CheckShortcutBoot( TitleProperty *pTitleList ) } return pTgt; } +#else +#pragma unused(pTitleList) #endif // 0 return NULL; // 「ブート内容未定」でリターン } diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c b/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c index 4b4ae600..1896930f 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c @@ -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; diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c b/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c index c81f22ee..b0e38b6c 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c @@ -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 ); // 言語入力フラグを立てる // :::::::::::::::::::::::::::::::::::::::::::::: diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c b/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c index 7794c787..41e37f1e 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c @@ -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設定データファイルへの書き込み diff --git a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h index 61f1ad76..6cb32739 100644 --- a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h @@ -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 ); // 指定された年がうるう年か調べる