From 0720894cbab23449371db0e7dc179291189f9147 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Wed, 6 Feb 2008 11:09:42 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=90=E3=83=8A=E3=83=BC=E3=83=AA=E3=83=BC?= =?UTF-8?q?=E3=83=89=E6=99=82=E3=81=AE=E3=83=90=E3=83=8A=E3=83=BC=E3=83=81?= =?UTF-8?q?=E3=82=A7=E3=83=83=E3=82=AF=E3=82=92TWL=E3=83=90=E3=83=8A?= =?UTF-8?q?=E3=83=BC=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=81=95=E3=81=9B=E3=82=8B?= =?UTF-8?q?=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@605 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/banner.c | 38 ++++++++++++------ .../sysmenu/ARM9/src/title.c | 22 +++++----- .../MachineSettings/ARM9/src/calibrationTP.c | 4 +- .../MachineSettings/ARM9/src/selectCountry.c | 4 +- .../MachineSettings/ARM9/src/selectLanguage.c | 4 +- .../MachineSettings/ARM9/src/setOwnerInfo.c | 12 ++++-- .../MachineSettings/ARM9/src/setRTC.c | 8 +++- docs/TWLBanner.xls | Bin 27648 -> 28160 bytes 8 files changed, 62 insertions(+), 30 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c b/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c index a32b138d..deec7cc7 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c @@ -27,7 +27,7 @@ typedef struct BannerCheckParam { // extern data----------------------------------------------------------------- // function's prototype------------------------------------------------------- -static BOOL SYSMi_CheckBannerFile( NTRBannerFile *pBanner ); +static BOOL SYSMi_CheckBannerFile( TWLBannerFile *pBanner ); // global variable------------------------------------------------------------- // static variable------------------------------------------------------------- @@ -43,8 +43,20 @@ static BOOL SYSMi_CheckBannerFile( NTRBannerFile *pBanner ); // カードバナーリード(※NTR-IPL2仕様) BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner ) { -#ifndef DEBUG_USED_CARD_SLOT_B_ - // ※スロットAからのリードなら問題ないが、スロットBからは直接読めないので +#pragma unused(bannerOffset) + BOOL isRead; + if( SYSMi_GetWork()->flags.common.isValidCardBanner ) { + DC_InvalidateRange( (void *)SYSM_CARD_BANNER_BUF, 0x3000 ); + MI_CpuCopyFast( (void *)SYSM_CARD_BANNER_BUF, pBanner, sizeof(TWLBannerFile) ); + } + isRead = SYSMi_CheckBannerFile( pBanner ); + + if( !isRead ) { + MI_CpuClearFast( pBanner, sizeof(TWLBannerFile) ); + } + return isRead; +/* + // ※カードライブラリでは、スロットAからのリードなら問題ないが、スロットBからは読めないのでとりあえず使わない BOOL isRead; u16 id = (u16)OS_GetLockID(); @@ -55,25 +67,18 @@ BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner ) CARD_UnlockRom( id ); OS_ReleaseLockID( id ); - isRead = SYSMi_CheckBannerFile( (NTRBannerFile *)pBanner ); + isRead = SYSMi_CheckBannerFile( (TWLBannerFile *)pBanner ); if( !isRead ) { MI_CpuClearFast( pBanner, sizeof(TWLBannerFile) ); } return isRead; -#else -#pragma unused(bannerOffset) - if( SYSMi_GetWork()->flags.common.isValidCardBanner ) { - DC_InvalidateRange( (void *)SYSM_CARD_BANNER_BUF, 0x3000 ); - MI_CpuCopyFast( (void *)SYSM_CARD_BANNER_BUF, pBanner, sizeof(TWLBannerFile) ); - } - return (BOOL)SYSMi_GetWork()->flags.common.isValidCardBanner; -#endif +*/ } // バナーデータの正誤チェック -static BOOL SYSMi_CheckBannerFile( NTRBannerFile *pBanner ) +static BOOL SYSMi_CheckBannerFile( TWLBannerFile *pBanner ) { int i; BOOL retval = TRUE; @@ -82,6 +87,7 @@ static BOOL SYSMi_CheckBannerFile( NTRBannerFile *pBanner ) BannerCheckParam bannerCheckList[ BANNER_VER_NTR_MAX ]; BannerCheckParam *pChk = &bannerCheckList[ 0 ]; + // NTR互換部分は標準でチェック bannerCheckList[ 0 ].pSrc = (u8 *)&( pBanner->v1 ); bannerCheckList[ 0 ].size = sizeof( BannerFileV1 ); bannerCheckList[ 1 ].pSrc = (u8 *)&( pBanner->v2 ); @@ -102,6 +108,12 @@ static BOOL SYSMi_CheckBannerFile( NTRBannerFile *pBanner ) pChk++; } + // TWLバナーなら、バナーアニメ部もチェック + if( pBanner->h.platform == BANNER_PLATFORM_TWL ) { + if( pBanner->h.crc16_anime != SVC_GetCRC16( 0xffff, &pBanner->anime, sizeof(BannerAnime) ) ) { + retval = FALSE; + } + } return retval; } diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 2e8c8875..1d99f002 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -58,6 +58,10 @@ BOOL SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ) { BOOL retval = FALSE; + // [TODO:] ROMヘッダの platform_code がNTR,TWL-HYB,TWL-LTD以外のもの + // region_codeが本体情報と違うもの + // の場合は、正常に認識できないタイトルであることを示す。 + if( SYSMi_GetWork()->flags.common.isCardStateChanged ) { MI_CpuClear32( pTitleList_Card, sizeof(TitleProperty) ); @@ -66,9 +70,16 @@ BOOL SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ) if( SYSM_IsExistCard() ) { u16 id = (u16)OS_GetLockID(); (void)OS_LockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する + + // ROMヘッダのリード DC_InvalidateRange( (void *)SYSM_CARD_ROM_HEADER_BAK, SYSM_CARD_ROM_HEADER_SIZE ); // キャッシュケア MI_CpuCopyFast( (void *)SYSM_CARD_ROM_HEADER_BAK, (void *)SYSM_CARD_ROM_HEADER_BUF, SYSM_CARD_ROM_HEADER_SIZE ); // ROMヘッダコピー SYSMi_GetWork()->cardHeaderCrc16 = SYSMi_GetWork()->cardHeaderCrc16; // ROMヘッダCRCコピー + + // バナーデータのリード + SYSMi_ReadCardBannerFile( SYSM_GetCardRomHeader()->banner_offset, &s_bannerBuf[ CARD_BANNER_INDEX ] ); + pTitleList_Card->pBanner = &s_bannerBuf[ CARD_BANNER_INDEX ]; + SYSMi_GetWork()->flags.common.isCardStateChanged = FALSE; // カード情報更新フラグを落とす (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する OS_ReleaseLockID( id ); @@ -77,14 +88,6 @@ BOOL SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ) pTitleList_Card->flags.isAppLoadCompleted = TRUE; pTitleList_Card->flags.isAppRelocate = TRUE; pTitleList_Card->pBanner = NULL; - - // バナーデータのリード - if( SYSM_GetCardRomHeader()->banner_offset && - SYSMi_ReadCardBannerFile( SYSM_GetCardRomHeader()->banner_offset, &s_bannerBuf[ CARD_BANNER_INDEX ] ) ) { - pTitleList_Card->pBanner = &s_bannerBuf[ CARD_BANNER_INDEX ]; - }else { - MI_CpuClearFast( &s_bannerBuf[ CARD_BANNER_INDEX ], sizeof(TWLBannerFile) ); - } } retval = TRUE; @@ -179,6 +182,7 @@ static BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, u8 *pDst ) // ファイルパスを取得 if(readLen != NAM_OK){ OS_TPrintf("NAM_GetTitleBootContentPath failed %lld,%d\n", titleID, readLen ); + return FALSE; } // ファイルオープン @@ -589,7 +593,7 @@ AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ) } // ※ROMヘッダ認証 - + // [TODO:] NANDアプリの場合、pBootTitle->titleIDとROMヘッダのtitleIDの一致確認を必ずする。 // マウント情報の登録 SYSMi_SetBootAppMountInfo( pBootTitle ); diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c b/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c index 97ba1d8b..dabd6b58 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/calibrationTP.c @@ -422,7 +422,9 @@ int TP_CalibrationMain( void ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings(); + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } ReturnMenu(); return 0; diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c b/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c index 349fe159..9d2f29aa 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c @@ -323,7 +323,9 @@ int SelectCountryMain( void ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings(); + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } MachineSettingInit(); return 0; diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c b/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c index 1f32c442..41c43d2a 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/selectLanguage.c @@ -181,7 +181,9 @@ int SelectLanguageMain( void ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings(); + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } MachineSettingInit(); return 0; diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c index 66a5eb47..661cf886 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c @@ -432,7 +432,9 @@ static void PushKeys( u16 code, NameOrComment noc ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings();// ファイルへ書き込み + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } // セーブ後にキャンセル処理と合流 case CANCEL_BUTTON_: SetOwnerInfoInit(); @@ -768,7 +770,9 @@ static int SetBirthdayMain( void ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings();// ファイルへ書き込み + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } SetOwnerInfoInit(); g_pNowProcess = SetOwnerInfoMain; return 0; @@ -889,7 +893,9 @@ static int SetUserColorMain( void ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings();// ファイルへ書き込み + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } SetOwnerInfoInit(); g_pNowProcess = SetOwnerInfoMain; return 0; diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c b/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c index 270ef72b..2c090348 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/setRTC.c @@ -383,7 +383,9 @@ static int InputRtcDateTimeMain( void ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings(); + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } // 上画面の表示更新 GetAndDrawRTCData( &g_rtcDraw, TRUE ); @@ -549,5 +551,7 @@ void ClearRTC( void ) // :::::::::::::::::::::::::::::::::::::::::::::: // TWL設定データファイルへの書き込み // :::::::::::::::::::::::::::::::::::::::::::::: - (void)LCFG_WriteTWLSettings(); + if( !LCFG_WriteTWLSettings() ) { + OS_TPrintf( "TWL settings write failed.\n" ); + } } diff --git a/docs/TWLBanner.xls b/docs/TWLBanner.xls index 0ddbe23ab767d7ca3f599406db75c47183e8b6b5..6192457ebdaf7843dfe7cca3912601506be0aa94 100644 GIT binary patch delta 3096 zcmZveTWnNS6o%KH`?YhQGo>v(TxOt@&YYp0sz7BFN{dmnB8s3TD))=vg~agS^g$Ej z6Lg38WR!##V?bbHq9LM>MiVeb#0Mfi=!+&Mz8GSJy4E^-_L-g7rf}BT|NrfE*4}5Y zGxw92yCqIJqH((37Z?M8OEaH{_JXj5xGrt~vj6?}qPky{zx$Kodi##Q5|Y>AVfkrn zQfA|$@{9N~X~&DQ8k>`U$NJ^F@x1&w7L`-+4VgL!$O4RIGEKW_1AHZK$Jga&25@c& z!@gIK9o@cV>TQ&ql-0z#@V4w_95~)Sp170Q?t?%YqmkDHBp?J0^6*a*g8g`L#rfCy z(fQ8#2LHd|oORAQe>n5b;ED8$0!nNU5WwFnI6{8_aq!9gi$9CqTnVrk-drO znZZAkVzqp0WJpxyg^`LFkvB%l@hS*k2x9mIBQjX+#Bq)rI!H{0A2&kHA$IbWdUPSrT~@lZnaO;WN)o+pb8d_kSmR@Dqers zr2I1Ek~1}{QN_Cf&N<5@VrG$2#MxYC7Oy;2j-BtMGBg(;$J? z;9)^h+}<#Xu{(JHCoIGLI`X5DP6<~@&>0;eR9ek)V~j_G=v)OasL>$K;yHsj%MhmL za)Ox7kbFfu=^87_()}2^{E8LkZ!uVs_NcbZPAJzCM;>%ci zH>D`!JA|l_eAJ*vk>0Z5F%2X##}VHh5q`JA#~DwF(|PZfJi&=SpvbhZy~Gn; ziML{CqD|c?7CHohKCiJ+Pjx@-bgxckn>F5#bo*GWLnjLz5~jzQQ_!2z{3>`T*1H< z826k?w4f8EZwEKgB9k{MGJVTbV6%>l8Wat55z#B)c`cipJhzO*ErV_`eHNCvJKy5W4~{tc6+F3A6I^&FgCsRN!{Rvly?! zzhUX=$fov2Eya(c)CA~Q6!@KL$>meG+NV~Gi}~qWQTU;;`-44S3xE5s=~PPEcH;7m zchV7@8}2PEEXY#_N|E7CaPdGXNe4BJ+{M3pmu7~={GmI(C7b0xhfZR@KXJH~Sd9vN HG5F^{3z3*@ delta 2869 zcmZveO-x)>6vxkng@uPJX#+b0~!fw?l3wI_OP23Sp#dFTPbKl%V2;`mn{{P=O_uTv5ecStD z`$w@mCTiEl^PVaI+&%xLXdQ}z5NopFKK8%=@2K&t{LLK^YpnzKkWX$|arwQqEqkp+ zxg6?}>sD2M9Ga1zSUsL3KuxZOhUFJlQvMQ}NdMD=slX4H-nqPa;oSU(kc0tQ4xjQr zNPLDj-fmq9A0*^n@7KYdVSsxTfTh+}-%3;r%Abyph@$kAhs2O9l?Ovb5H25BAYe$Y z=s3jjM>-C3{H=~79RFS(>@LCsbVo79O!%|Mkqd_9NF`qyhKw4E0ggc)+_2@cAO;@1 z2AG~EcbwevawR`ogdC2NB94k8Uf-Oi`V!11Z2~!2jO-=YA!(;*6!V zGsRAia;6MtTC38m@+wu@P-U1uHP*?eT86m?S$6uBGix|=T9so}K&f(CMRV&y)rh=1 z*4c+HqYvGv7~pK($jL!aak@2!y7dsLWNf^%&b)T!4JWOL)2$w@>M>M3hUy6OcgAyd z$Jwi$y@s>baQ3nD{&?<)?W9>3*m)FZLbVsrJNb z*dNtfuB)Q8TYFc?#YRDT8fWE3qioSO>OTeW=^5GV+i1m4-tdWsbO=Vq-N zS8^22+S+9t^kVoli!F=@RL5tUu(+LJ48|4Kg9%IUh>qOotLuoM=XHckxidXjA7_pi zoeg+Z-SuJ?$LYl^RlI9Y-iy^#<DYhXFfom%v#SJ;DOrs1?HxiVnX_MF zM%!cD_9e}0Z$&!q?84(ro>JsElbdZc9f1xyZlL3genFw*dPV7=w9#}>mS9?;>7aC2 z34@$4$O#{#FUqO8jCvH4jG9rXq=8BrsHA~PGHF>AnbbwnnQRwHXL1Q1S7bVqog!1_ zqnI+#DMqg-bV{S?Ah*$Uke6Uqq3IxZ&}pOSv_VcY`9&r-eUR2@I{j^QhS6sfI>YEE zbkw~U9I2kiN0B}xoJTQhRGu~PS;ns_e3lD; z6Qdt6X%xQ{cEu`8z$z@u59Uut{m90Rjw-ye