mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
NAMを使ってTitleIDをNandから取得するように変更(バナーは未読なのでNoBanner表示)
バナーファイルをいくつか変更 選択中バナーへのエフェクト実験中(現在はパラメタの指定がうまくいかず不自然な表示) git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@100 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
3bb618c945
commit
7b9a34d1a6
@ -31,7 +31,6 @@ SRCS = sysmenu_lib.c sysmenu_card.c sysmenu_util.c gameBoot.c ninLogoFunc.c cm
|
||||
|
||||
TARGET_LIB = libsysmenu$(TWL_LIBSUFFIX).a
|
||||
|
||||
|
||||
include $(TWLIPL_ROOT)/build/buildtools/commondefs
|
||||
|
||||
INSTALL_TARGETS = $(TARGETS)
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/nam.h>
|
||||
#include <sysmenu.h>
|
||||
#include "sysmenu_define.h"
|
||||
#include "sysmenu_card.h"
|
||||
@ -27,6 +28,8 @@
|
||||
#define SCREEN_RED 0
|
||||
#define SCREEN_YELLOW 1
|
||||
|
||||
#define TITLE_ID_BUF_SIZE 40
|
||||
|
||||
typedef struct BannerCheckParam {
|
||||
u8 *srcp;
|
||||
u32 size;
|
||||
@ -115,6 +118,16 @@ static inline void DBG_SetRed(u32 y_pos)
|
||||
// function's description
|
||||
// ============================================================================
|
||||
|
||||
static void * AllocForNAM(unsigned long size)
|
||||
{
|
||||
return OS_AllocFromHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, size );
|
||||
}
|
||||
|
||||
static void FreeForNAM(void *p)
|
||||
{
|
||||
OS_FreeToHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, p);
|
||||
}
|
||||
|
||||
// SystemMenuの初期化
|
||||
void SYSM_Init( void )
|
||||
{
|
||||
@ -135,6 +148,9 @@ void SYSM_Init( void )
|
||||
|
||||
// ※ISデバッガかどうかの判定。 BootROMからのパラメータ引渡し?
|
||||
SYSMi_WaitInitARM7();
|
||||
|
||||
//NAM‚Ì<E2809A>‰Šú‰»
|
||||
NAM_Init(AllocForNAM,FreeForNAM);
|
||||
}
|
||||
|
||||
|
||||
@ -183,12 +199,27 @@ int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card )
|
||||
}
|
||||
|
||||
|
||||
int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand )
|
||||
int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size)
|
||||
{
|
||||
#pragma unused( pTitleList_Nand )
|
||||
// filter_flag : ALL, ALL_APP, SYS_APP, USER_APP, Data only, 等の条件を指定してタイトルリストを取得する。
|
||||
// return : *TitleProperty Array
|
||||
return 0;
|
||||
int l;
|
||||
int gotten;
|
||||
NAMTitleId titleIdArray[TITLE_ID_BUF_SIZE];
|
||||
gotten = NAM_GetTitleList(titleIdArray, TITLE_ID_BUF_SIZE);
|
||||
for(l=0;l<size;l++)
|
||||
{
|
||||
pTitleList_Nand[l].titleID = 0;
|
||||
pTitleList_Nand[l].pBanner = NULL;
|
||||
}
|
||||
|
||||
size = (gotten<size) ? gotten : size;
|
||||
|
||||
for(l=0;l<size;l++)
|
||||
{
|
||||
pTitleList_Nand[l].titleID = titleIdArray[l];
|
||||
}
|
||||
// return : *TitleProperty Array
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -40,6 +40,9 @@ LINCLUDES = $(SRCDIR)/$(LOGO_DIR)
|
||||
#LLIBRARIES =
|
||||
#LDEPENDS_NEF =
|
||||
|
||||
LLIBRARIES += libnam$(TWL_LIBSUFFIX).a\
|
||||
libese$(TWL_LIBSUFFIX).a
|
||||
|
||||
include $(TWLIPL_ROOT)/build/buildtools/commondefs
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
@ -143,5 +143,5 @@ RomSpec
|
||||
Segment ALL
|
||||
HostRoot ../../data
|
||||
Root /data
|
||||
File NTR_IPL_font_m.NFTR CardBanner.bnr DownloadBanner.bnr EmptyBanner.bnr PictoChatBanner.bnr SettingBanner.bnr
|
||||
File NTR_IPL_font_m.NFTR CardBanner.bnr DownloadBanner.bnr EmptyBanner.bnr NoBanner.bnr
|
||||
}
|
||||
@ -110,13 +110,10 @@ static const u16 *const str_backlight[] = {
|
||||
#define DBGBNR
|
||||
#ifdef DBGBNR
|
||||
|
||||
static const u8 TITLE_PROPERTY_NUM = 40;
|
||||
static BannerFile *empty_banner;
|
||||
static BannerFile *nobanner_banner;
|
||||
static BannerFile *card_banner;
|
||||
static BannerFile *pictochat_banner;
|
||||
static BannerFile *download_banner;
|
||||
static BannerFile *setting_banner;
|
||||
static TitleProperty tp[TITLE_PROPERTY_NUM];
|
||||
static u8 image_index_list[TITLE_PROPERTY_NUM];
|
||||
static const int MAX_SHOW_BANNER = 6;
|
||||
static GXOamAttr banner_oam_attr[MAX_SHOW_BANNER];
|
||||
@ -129,14 +126,12 @@ static void LoadBannerFiles()
|
||||
// 最後に解放しないと駄目。だが、どこで解放すればいいのやら……
|
||||
u32 size = CMN_LoadFile( (void **)&empty_banner, "data/EmptyBanner.bnr", &g_allocator);
|
||||
NNS_G2D_ASSERT( size > 0 );
|
||||
size = CMN_LoadFile( (void **)&nobanner_banner, "data/NoBanner.bnr", &g_allocator);
|
||||
NNS_G2D_ASSERT( size > 0 );
|
||||
size = CMN_LoadFile( (void **)&card_banner, "data/CardBanner.bnr", &g_allocator);
|
||||
NNS_G2D_ASSERT( size > 0 );
|
||||
size = CMN_LoadFile( (void **)&pictochat_banner, "data/PictochatBanner.bnr", &g_allocator);
|
||||
NNS_G2D_ASSERT( size > 0 );
|
||||
size = CMN_LoadFile( (void **)&download_banner, "data/DownloadBanner.bnr", &g_allocator);
|
||||
NNS_G2D_ASSERT( size > 0 );
|
||||
size = CMN_LoadFile( (void **)&setting_banner, "data/SettingBanner.bnr", &g_allocator);
|
||||
NNS_G2D_ASSERT( size > 0 );
|
||||
}
|
||||
|
||||
// パレットの読み込みやOBJ関係の初期化
|
||||
@ -167,8 +162,9 @@ static void BannerInit()
|
||||
0, // charactor
|
||||
0, // palette
|
||||
0); // affine
|
||||
DC_FlushRange(&banner_oam_attr[l], sizeof(banner_oam_attr[l]));
|
||||
}
|
||||
G2_SetOBJEffect(&banner_oam_attr[2], GX_OAM_EFFECT_AFFINE_DOUBLE, 0);
|
||||
DC_FlushRange(&banner_oam_attr, sizeof(banner_oam_attr));
|
||||
}
|
||||
|
||||
// 活線挿抜対応のため、毎回VRAMへのイメージデータロード判定をしている
|
||||
@ -177,18 +173,18 @@ static void BannerDraw(int cursor, int selected, TitleProperty *titleprop)
|
||||
static int count = 0;
|
||||
int l;
|
||||
|
||||
// TitleProperty……本来は外部から取得
|
||||
// TitleProperty˜M‚è
|
||||
for(l=0;l<TITLE_PROPERTY_NUM;l++)
|
||||
{
|
||||
tp[l].titleID = 0;
|
||||
tp[l].pBanner = empty_banner;
|
||||
if(titleprop[l].titleID == 0)
|
||||
{
|
||||
titleprop[l].pBanner = empty_banner;
|
||||
}
|
||||
else if(titleprop[l].pBanner == NULL)
|
||||
{
|
||||
titleprop[l].pBanner = nobanner_banner;
|
||||
}
|
||||
}
|
||||
tp[0].pBanner = card_banner;
|
||||
tp[1].pBanner = pictochat_banner;
|
||||
tp[2].pBanner = download_banner;
|
||||
tp[3].pBanner = setting_banner;
|
||||
|
||||
titleprop=tp;
|
||||
|
||||
// TitlePropertyを見てVRAMにキャラクタデータをロード
|
||||
for(l=0;l<TITLE_PROPERTY_NUM;l++)
|
||||
@ -216,16 +212,32 @@ static void BannerDraw(int cursor, int selected, TitleProperty *titleprop)
|
||||
{
|
||||
int num = cursor/12 - 2 + l;
|
||||
if(-1 < num && num < TITLE_PROPERTY_NUM){
|
||||
banner_oam_attr[l].x = 128-16-64-32+l*48-(cursor%12)*4;
|
||||
banner_oam_attr[l].charNo = image_index_list[num]*4;
|
||||
G2_SetOBJEffect(&banner_oam_attr[l],GX_OAM_EFFECT_NONE,0);
|
||||
if(l == 2)
|
||||
{
|
||||
GXOamAffine *test = (GXOamAffine *)&banner_oam_attr[2];
|
||||
MtxFx22 mtx;
|
||||
mtx._00 = FX32_ONE;
|
||||
mtx._01 = 0;
|
||||
mtx._10 = 0;
|
||||
mtx._11 = FX32_ONE;
|
||||
G2_SetOBJPosition(&banner_oam_attr[l], 128-32-(cursor%12)*4, 96-16);
|
||||
G2_SetOBJAffine((GXOamAffine *)&banner_oam_attr[l], &mtx);
|
||||
test=test+1;
|
||||
test=test-1;
|
||||
}else
|
||||
{
|
||||
banner_oam_attr[l].x = 128-16-64-32+l*48-(cursor%12)*4;
|
||||
G2_SetOBJEffect(&banner_oam_attr[l],GX_OAM_EFFECT_NONE,0);
|
||||
}
|
||||
}else
|
||||
{
|
||||
G2_SetOBJEffect(&banner_oam_attr[l],GX_OAM_EFFECT_NODISPLAY,0);
|
||||
}
|
||||
DC_FlushRange(&banner_oam_attr[l], sizeof(banner_oam_attr[l]));
|
||||
GX_LoadOAM(&banner_oam_attr[l], l * sizeof(banner_oam_attr[l]), sizeof(banner_oam_attr[l]));
|
||||
}
|
||||
DC_FlushRange(&banner_oam_attr, sizeof(banner_oam_attr));
|
||||
GX_LoadOAM(&banner_oam_attr, 0, sizeof(banner_oam_attr));
|
||||
|
||||
// ゲーム名表示
|
||||
{
|
||||
NNSG2dChar *str = ((BannerFile *)titleprop[selected].pBanner)->v1.gameName[GetNCDWork()->option.language];
|
||||
@ -279,8 +291,6 @@ void LauncherInit( TitleProperty *pTitleList )
|
||||
// ランチャーメイン
|
||||
TitleProperty *LauncherMain( TitleProperty *pTitleList )
|
||||
{
|
||||
#pragma unused( pTitleList )
|
||||
|
||||
static BOOL touch_bl = FALSE;
|
||||
BOOL tp_bl_on_off = FALSE;
|
||||
BOOL tp_select = FALSE;
|
||||
@ -336,7 +346,7 @@ TitleProperty *LauncherMain( TitleProperty *pTitleList )
|
||||
// DrawMenu( s_csr, &s_launcherParam );
|
||||
|
||||
#ifdef DBGBNR
|
||||
BannerDraw( s_csr, selected, NULL );
|
||||
BannerDraw( s_csr, selected, pTitleList );
|
||||
#endif
|
||||
|
||||
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
|
||||
|
||||
@ -26,6 +26,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
// define data----------------------------------------------------------
|
||||
#define TITLE_PROPERTY_NUM 40
|
||||
|
||||
// global variables--------------------------------------------------
|
||||
|
||||
|
||||
@ -59,7 +59,7 @@ void TwlMain( void )
|
||||
};
|
||||
u32 state = START;
|
||||
TitleProperty *pBootTitle = NULL;
|
||||
TitleProperty *pTitleList = NULL;
|
||||
TitleProperty pTitleList[TITLE_PROPERTY_NUM];
|
||||
|
||||
OS_Init();
|
||||
|
||||
@ -98,7 +98,7 @@ void TwlMain( void )
|
||||
// FS_ReadSharedContentFile( ContentID );
|
||||
|
||||
// NANDアプリリストの取得----------
|
||||
(void)SYSM_GetNandTitleList( pTitleList );
|
||||
(void)SYSM_GetNandTitleList( pTitleList, TITLE_PROPERTY_NUM );
|
||||
|
||||
while( 1 ) {
|
||||
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -62,7 +62,7 @@ extern void SYSM_Init( void );
|
||||
extern BOOL SYSM_IsLogoDemoSkip( void );
|
||||
extern void SYSM_CaribrateTP( void );
|
||||
extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card );
|
||||
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand );
|
||||
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size );
|
||||
extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle );
|
||||
extern void SYSM_Finalize( void );
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user