From 1815111691068ffd3ce92eccbe497f589e005d06 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Tue, 6 Nov 2007 06:43:43 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=90=E3=83=8A=E3=83=BC=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E5=8C=96=E3=80=81=E3=83=90=E3=83=8A=E3=83=BC?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=82=92=E6=B4=BB=E7=B7=9A=E6=8C=BF=E6=8A=9C?= =?UTF-8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=81=99=E3=82=8B=E6=BA=96=E5=82=99?= =?UTF-8?q?=E5=AE=8C=E4=BA=86?= 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@102 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 39 +----- .../Launcher/ARM9/src/launcher.c | 115 ++++++++++++++---- 2 files changed, 95 insertions(+), 59 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 14e1e0d0..95d58f14 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -121,12 +121,12 @@ static inline void DBG_SetRed(u32 y_pos) static void * AllocForNAM(unsigned long size) { - return OS_AllocFromHeap( OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, size ); + return OS_AllocFromHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, size ); } static void FreeForNAM(void *p) { - OS_FreeToHeap( OS_ARENA_WRAM_MAIN, OS_CURRENT_HEAP_HANDLE, p); + OS_FreeToHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, p); } // SystemMenuの初期化 @@ -239,37 +239,6 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size) 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"); - } - } - */ // バナーの読み込み……別の関数に移すべきかも。 // 毎フレーム変化を見る必要がある。 @@ -379,6 +348,10 @@ AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ) // アプリロード // アプリ認証 + // 実験用。実際にはこれ使えない(静的に8MBも退避メモリを確保してくれるので無理) + // ので、自前のロードプログラムが必要。 + //NAM_LaunchTitle(pBootTitle->titleID); + // パラメータチェック if( !SYSMi_CheckTitlePointer( pBootTitle ) ) { return AUTH_RESULT_TITLE_POINTER_ERROR; diff --git a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c index bef2cfee..a6db624b 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c @@ -18,6 +18,7 @@ #include #include "misc.h" #include "launcher.h" +#include // define data------------------------------------------ @@ -28,6 +29,7 @@ #define B_LIGHT_BUTTON_BOTTOM_X ( B_LIGHT_BUTTON_TOP_X + 7 ) #define B_LIGHT_BUTTON_BOTTOM_Y ( B_LIGHT_BUTTON_TOP_Y + 2 ) +#define CURSOR_PER_SELECT 14 // extern data------------------------------------------ @@ -41,6 +43,8 @@ static void DrawLauncher(u16 nowCsr, const MenuParam *pMenu); static int s_csr = 0; // メニューのカーソル位置 static const u16 *s_pStrLauncher[ LAUNCHER_ELEMENT_NUM ]; // ロゴメニュー用文字テーブルへのポインタリスト +static u64 old_titleIdArray[TITLE_PROPERTY_NUM]; + // const data ----------------------------------------- //=============================================== // Launcher.c @@ -116,8 +120,8 @@ static BannerFile *card_banner; static BannerFile *download_banner; static u8 image_index_list[TITLE_PROPERTY_NUM]; static const int MAX_SHOW_BANNER = 6; -static GXOamAttr banner_oam_attr[MAX_SHOW_BANNER]; -static u8 *pbanner_image_list[TITLE_PROPERTY_NUM*2]; +static GXOamAttr banner_oam_attr[MAX_SHOW_BANNER+10];// アフィンパラメータ埋める関係で少し大きめ +static u8 *pbanner_image_list[TITLE_PROPERTY_NUM]; static int banner_count = 0; static void LoadBannerFiles() @@ -140,11 +144,16 @@ static void BannerInit() int l; LoadBannerFiles(); + MI_CpuClearFast(old_titleIdArray, sizeof(old_titleIdArray) ); + MI_DmaFill32(3, banner_oam_attr, 192, sizeof(banner_oam_attr)); // let out of the screen if not display + // ここでやるべきじゃない気がするBGとOBJの設定 GX_SetVisiblePlane(GX_PLANEMASK_OBJ | GX_PLANEMASK_BG0); // display only OBJ&BG0 GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_1D_128K); // 2D mapping mode // パレット読み込み + // 本来は、読み込んだバナーによってパレットも変更する必要があるのかもしれないが、どの道最大256色 + // 17個以上のバナーをそれぞれ違うパレットで同時に表示はできないはず。 GX_LoadOBJPltt( empty_banner->v1.pltt, 0, BNR_PLTT_SIZE ); //OBJATTRの初期化……後で値を弄って場所やらキャラクターを変えたりする @@ -163,7 +172,6 @@ static void BannerInit() 0, // palette 0); // affine } - G2_SetOBJEffect(&banner_oam_attr[2], GX_OAM_EFFECT_AFFINE_DOUBLE, 0); DC_FlushRange(&banner_oam_attr, sizeof(banner_oam_attr)); } @@ -171,8 +179,21 @@ static void BannerInit() static void BannerDraw(int cursor, int selected, TitleProperty *titleprop) { static int count = 0; - int l; + int l; + MtxFx22 mtx; + + /* + static int testcount=0; + testcount++; + if( (testcount/5)%2 ==1 ) titleprop[1].titleID = 0;//1secごとにTitlePropertyの2を変化させてみる活線挿抜擬似テスト + else + { + titleprop[1].titleID = 1; + titleprop[1].pBanner = download_banner; + } + */ + // TitleProperty弄り for(l=0;lv1.image; for(m=0;mv1.gameName[GetNCDWork()->option.language]; int width = NNS_G2dTextCanvasGetStringWidth(&gTextCanvas, str, NULL); @@ -257,7 +312,7 @@ void LauncherInit( TitleProperty *pTitleList ) int i; GX_DispOff(); GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); + NNS_G2dCharCanvasClear( &gCanvas, TXT_UCOLOR_GRAY ); DrawBackLightSwitch(); @@ -298,7 +353,7 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList ) static int selected = 0; // 文字描画クリア - NNS_G2dCharCanvasClear(&gCanvas,TXT_COLOR_WHITE); + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); PrintfSJIS( 0, 0, TXT_COLOR_BLUE, "TWL-SYSTEM MENU ver.%06x", SYSMENU_VER ); DrawBackLightSwitch(); @@ -335,11 +390,11 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList ) if(csr_v == 0) csr_v = -1; } s_csr += csr_v; - if((TITLE_PROPERTY_NUM-1)*12 < s_csr) s_csr = (TITLE_PROPERTY_NUM-1)*12; + if((TITLE_PROPERTY_NUM-1)*CURSOR_PER_SELECT < s_csr) s_csr = (TITLE_PROPERTY_NUM-1)*CURSOR_PER_SELECT; if( s_csr < 0 ) s_csr = 0; - if(s_csr%12 == 0){ + if(s_csr%CURSOR_PER_SELECT == 0){ csr_v = 0; - selected = s_csr/12; + selected = s_csr/CURSOR_PER_SELECT; } // tp_select = SelectMenuByTP( &s_csr, &s_launcherParam ); @@ -350,10 +405,18 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList ) #endif if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 + /* if( s_launcherPos[ 0 ].enable ) { NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); return NULL; } + */ + if(pTitleList[selected].titleID != 0) + { + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); + //return &pTitleList[selected]; + return NULL; + } } return NULL;