From 6f81364cf1d88fdd0b8d0ac82789828ff1b72429 Mon Sep 17 00:00:00 2001 From: nakasima Date: Mon, 3 Mar 2008 02:57:22 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=BC=E3=83=88=E3=82=AB?= =?UTF-8?q?=E3=83=83=E3=83=88=E8=B5=B7=E5=8B=95=E6=99=82=E3=81=AB=E3=82=AB?= =?UTF-8?q?=E3=83=BC=E3=83=89ROM=E3=83=98=E3=83=83=E3=83=80=E3=82=92?= =?UTF-8?q?=E5=8F=82=E7=85=A7=E5=89=8D=E3=81=AB=E3=82=B3=E3=83=94=E3=83=BC?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= =?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@778 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 9 ++++- .../sysmenu/ARM9/src/title.c | 39 ++++++++++++++++--- .../sysmenu/common/include/internal_api.h | 2 + 3 files changed, 44 insertions(+), 6 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index ff7765db..1c4eb19a 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -218,7 +218,14 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす s_bootTitle.flags.bootType = LAUNCHER_BOOTTYPE_ROM; s_bootTitle.flags.isValid = TRUE; - // [TODO] 現状ではROMヘッダがまだコピーされていない + // ROMヘッダバッファのコピー + { + u16 id = (u16)OS_GetLockID(); + (void)OS_LockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する + (void)SYSMi_CopyCardRomHeader(); + (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する + OS_ReleaseLockID( id ); + } s_bootTitle.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo ); SYSM_SetLogoDemoSkip( s_bootTitle.flags.isLogoSkip ); return &s_bootTitle; diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 910a958d..5cb10e98 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -154,18 +154,16 @@ BOOL SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ) (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_bak; // ROMヘッダCRCコピー + (void)SYSMi_CopyCardRomHeader(); // バナーデータのリード - SYSMi_ReadCardBannerFile( SYSM_GetCardRomHeader()->banner_offset, &s_bannerBuf[ CARD_BANNER_INDEX ] ); - pTitleList_Card->pBanner = &s_bannerBuf[ CARD_BANNER_INDEX ]; + (void)SYSMi_CopyCardBanner(); SYSMi_GetWork()->flags.hotsw.isCardStateChanged = FALSE; // カード情報更新フラグを落とす (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockCardRsc, NULL ); // ARM7と排他制御する OS_ReleaseLockID( id ); + pTitleList_Card->pBanner = &s_bannerBuf[ CARD_BANNER_INDEX ]; pTitleList_Card->flags.isValid = TRUE; pTitleList_Card->flags.isAppLoadCompleted = TRUE; pTitleList_Card->flags.isAppRelocate = TRUE; @@ -181,6 +179,37 @@ BOOL SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ) return retval; } +// カードROMヘッダのARM7バッファからARM9バッファへのコピー +BOOL SYSMi_CopyCardRomHeader( void ) +{ + BOOL retval = FALSE; + + if( SYSM_IsExistCard() ) { + // 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_bak; // ROMヘッダCRCコピー + + retval = TRUE; + } + + return retval; +} + +// カードバナーのARM7バッファからARM9バッファへのコピー +BOOL SYSMi_CopyCardBanner( void ) +{ + BOOL retval = FALSE; + + if( SYSM_IsExistCard() ) { + // バナーデータのリード + SYSMi_ReadCardBannerFile( SYSM_GetCardRomHeader()->banner_offset, &s_bannerBuf[ CARD_BANNER_INDEX ] ); + + retval = TRUE; + } + + return retval; +} // NANDタイトルリストの取得 int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum ) diff --git a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h index cd04b4a0..dfd325f7 100644 --- a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h +++ b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h @@ -82,6 +82,8 @@ void SYSMi_EnableHotSW( BOOL enable ); //======================================================= BOOL SYSMi_IsDebuggerBannerViewMode( void ); BOOL SYSMi_CheckEntryAddress( void ); +BOOL SYSMi_CopyCardRomHeader( void ); +BOOL SYSMi_CopyCardBanner( void ); #ifdef __cplusplus