From 90d1670798ac6a9f8f8e46beaa6619406cf30414 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Mon, 5 Nov 2007 12:40:55 +0000 Subject: [PATCH] =?UTF-8?q?NAND=E3=81=8B=E3=82=89=E3=81=AE=E3=83=90?= =?UTF-8?q?=E3=83=8A=E3=83=BC=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=81=BF=E5=AE=8C?= =?UTF-8?q?=E4=BA=86=20=E3=81=9F=E3=81=A0=E3=81=97=E3=80=81ESE=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E4=BF=AE=E6=AD=A3=E5=BE=85?= =?UTF-8?q?=E3=81=A1?= 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@101 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 147 +++++++++++++++++- .../Launcher/ARM9/src/launcher.c | 4 +- 2 files changed, 145 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 191160ad..14e1e0d0 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -92,6 +92,7 @@ NitroConfigData *ncdp; // // static variable------------------------------------------------------------- static BOOL s_isBanner = FALSE; static BannerFile s_bannerBuf; +static NAMTitleId old_titleIdArray[TITLE_ID_BUF_SIZE]; // const data------------------------------------------------------------------ @@ -120,12 +121,12 @@ static inline void DBG_SetRed(u32 y_pos) static void * AllocForNAM(unsigned long size) { - return OS_AllocFromHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, size ); + return OS_AllocFromHeap( OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, size ); } static void FreeForNAM(void *p) { - OS_FreeToHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, p); + OS_FreeToHeap( OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, p); } // SystemMenuの初期化 @@ -150,7 +151,9 @@ void SYSM_Init( void ) SYSMi_WaitInitARM7(); //NAMの初期化 - NAM_Init(AllocForNAM,FreeForNAM); + //NAM_Init(AllocForNAM,FreeForNAM); + + MI_CpuClearFast(old_titleIdArray, sizeof(old_titleIdArray) ); } @@ -198,18 +201,153 @@ int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ) return 0; } +static s32 ReadFile(FSFile* pf, void* buffer, s32 size) +{ + u8* p = (u8*)buffer; + s32 remain = size; + + while( remain > 0 ) + { + const s32 len = MATH_IMin(1024, remain); + const s32 readLen = FS_ReadFile(pf, p, len); + + if( readLen < 0 ) + { + return readLen; + } + if( readLen != len ) + { + return size - remain + readLen; + } + + remain -= readLen; + p += readLen; + } + + return size; +} + +#include +ESTitleMeta dst[1]; int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size) { // filter_flag : ALL, ALL_APP, SYS_APP, USER_APP, Data only, 等の条件を指定してタイトルリストを取得する。 + // とりあえずALL int l; int gotten; NAMTitleId titleIdArray[TITLE_ID_BUF_SIZE]; + static BannerFile bannerBuf[TITLE_ID_BUF_SIZE]; gotten = NAM_GetTitleList(titleIdArray, TITLE_ID_BUF_SIZE); + + /* + { + static const char ppp[] = "nand:/title_e/00010001/50434854/content/title.tmd"; + + + FSFile f[1]; + int len = sizeof(ESTitleMeta); + + FS_InitFile(f); + + if (!FS_OpenFileEx(f, ppp, FS_PERMIT_R)) + { // ファイルが存在すれば上書きします + OS_TWarning("\"%s\" does not exist.\n", ppp); + } + + OS_TPrintf("filelength = %d\n",FS_GetFileLength(f)); + + OS_TPrintf("sizeof(ESTitleMeta) = %d\n",len); + + DC_InvalidateRange(dst, (u32)len); + size = FS_ReadFile(f, dst, len); + if (size < 0) + { + OS_TWarning("FS_ReadFile() failed.\n"); + }else + { + OS_TWarning("OK.\n"); + } + } + */ + + // バナーの読み込み……別の関数に移すべきかも。 + // 毎フレーム変化を見る必要がある。 + // 前のフレームのNAMTitleIdの配列を残しておき、比較。 + // IDが変化していたら問答無用でバナーを読み込む。 + for(l=0;l