From 8f9a3228398c25d9e55291165cf394d2c7941961 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Tue, 4 Mar 2008 04:57:13 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=83=81=E3=83=A3=E3=83=BC?= =?UTF-8?q?=EF=BC=9Anand=E3=82=A2=E3=83=97=E3=83=AA=E3=81=AE=E3=82=B5?= =?UTF-8?q?=E3=83=96=E3=83=90=E3=83=8A=E3=83=BC=E3=81=AB=E5=AF=BE=E5=BF=9C?= 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@799 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/banner.c | 44 ++++++++++++++++++- build/tests/Makefile | 2 +- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c b/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c index 9160f0f9..260d83ca 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/banner.c @@ -28,6 +28,7 @@ typedef struct BannerCheckParam { // extern data----------------------------------------------------------------- // function's prototype------------------------------------------------------- static BOOL SYSMi_CheckBannerFile( TWLBannerFile *pBanner ); +static BOOL SYSMi_CheckSubBannerFile( TWLSubBannerFile *pBanner ); // global variable------------------------------------------------------------- // static variable------------------------------------------------------------- @@ -87,7 +88,7 @@ BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst ) s32 readLen; s32 offset; - //[TODO:]サブバナーが保存されている場合、そちらを使う + FS_InitFile(file); start = OS_GetTick(); readLen = NAM_GetTitleBootContentPathFast( path, titleID ); @@ -150,9 +151,50 @@ BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, TWLBannerFile *pDst ) } FS_CloseFile(file); + + // サブバナーファイルを読み込んでみる + if(NAM_OK == NAM_GetTitleBannerFilePath( path, titleID )) + { + if( FS_OpenFileEx(file, path, FS_FILEMODE_R) ) + { + TWLSubBannerFile subBanner; + readLen = FS_ReadFile(file, &subBanner, sizeof(TWLSubBannerFile)); + FS_CloseFile(file); + if( readLen == sizeof(TWLSubBannerFile) ) + { + // 読み込みには成功したので正当性チェック + if( SYSMi_CheckSubBannerFile(&subBanner) ) + { + // 成功したのでコピーする + pDst->h = subBanner.h; + pDst->anime = subBanner.anime; + OS_TPrintf("SYSMi_ReadBanner_NAND : subbanner check succeed. id=%.16x\n", titleID); + }else + { + OS_TPrintf("SYSMi_ReadBanner_NAND : subbanner check failed. id=%.16x\n", titleID); + } + }else + { + OS_TPrintf("SYSMi_ReadBanner_NAND : subbanner read failed. id=%.16x\n", titleID); + } + } + } + return TRUE; } + // サブバナーデータの正誤チェック +static BOOL SYSMi_CheckSubBannerFile( TWLSubBannerFile *pBanner ) +{ + BOOL retval = TRUE; + + // アニメ部チェック + if( pBanner->h.crc16_anime != SVC_GetCRC16( 0xffff, &pBanner->anime, sizeof(BannerAnime) ) ) { + retval = FALSE; + } + return retval; +} + // バナーデータの正誤チェック static BOOL SYSMi_CheckBannerFile( TWLBannerFile *pBanner ) { diff --git a/build/tests/Makefile b/build/tests/Makefile index 99f470f3..d6b01229 100644 --- a/build/tests/Makefile +++ b/build/tests/Makefile @@ -20,7 +20,7 @@ include $(TWLSDK_ROOT)/build/buildtools/commondefs #---------------------------------------------------------------------------- -SUBDIRS = RelocateChecker +SUBDIRS = SubBanner RelocateChecker #----------------------------------------------------------------------------