mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
・ランチャーでシステムメニューバージョンデータにアクセスするために、
SYSMi_makeTitleIdList関数からシステムメニューバージョンデータアクセスのための制御データセット部分を 抜き出した関数SYSM_SetSystemMenuVersionControlData関数を追加する。 ・REDランチャーでRED本体設定からシステムメニューバージョン読み出しのコードを持ってきて、 読み出しを行うようにする。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2144 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
4c67a56ea9
commit
9ade22f088
@ -1796,23 +1796,7 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
gamecode = (char *)&(id);
|
gamecode = (char *)&(id);
|
||||||
// バージョン情報の特殊処理
|
|
||||||
if( ( 0 == STD_CompareNString( &gamecode[1], "LNH", 3 ) ) )
|
|
||||||
{
|
|
||||||
char path[ FS_ENTRY_LONGNAME_MAX ];
|
|
||||||
char *p;
|
|
||||||
NAM_GetTitleBootContentPathFast(path, id);
|
|
||||||
p = STD_SearchString( path, ".app" );
|
|
||||||
if( p == NULL)
|
|
||||||
{
|
|
||||||
// 失敗
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
MI_CpuCopy8( p-8, (void *)HW_SYSM_VER_INFO_CONTENT_ID, 8 );
|
|
||||||
((char *)HW_SYSM_VER_INFO_CONTENT_ID )[8] = '\0';
|
|
||||||
((char *)HW_SYSM_VER_INFO_CONTENT_ID )[9] = gamecode[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
// ランチャーはリストに入れない
|
// ランチャーはリストに入れない
|
||||||
if( ( 0 == STD_CompareNString( &gamecode[1], "ANH", 3 ) )
|
if( ( 0 == STD_CompareNString( &gamecode[1], "ANH", 3 ) )
|
||||||
#ifdef DEV_UIG_LAUNCHER
|
#ifdef DEV_UIG_LAUNCHER
|
||||||
@ -1888,6 +1872,42 @@ static void SYSMi_makeTitleIdList( void )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// システムメニューバージョン情報制御データのセット
|
||||||
|
void SYSM_SetSystemMenuVersionControlData( void )
|
||||||
|
{
|
||||||
|
int l;
|
||||||
|
int max = AMN_getRomHeaderListLength();
|
||||||
|
|
||||||
|
for(l=0;l<max;l++)
|
||||||
|
{
|
||||||
|
char *gamecode;
|
||||||
|
OSTitleId id;
|
||||||
|
ROM_Header_Short *pe_hs;
|
||||||
|
|
||||||
|
pe_hs = &((AMN_getRomHeaderList())[l]);
|
||||||
|
id = pe_hs->titleID;
|
||||||
|
|
||||||
|
gamecode = (char *)&(id);
|
||||||
|
// バージョン情報の特殊処理
|
||||||
|
if( ( 0 == STD_CompareNString( &gamecode[1], "LNH", 3 ) ) )
|
||||||
|
{
|
||||||
|
char path[ FS_ENTRY_LONGNAME_MAX ];
|
||||||
|
char *p;
|
||||||
|
NAM_GetTitleBootContentPathFast(path, id);
|
||||||
|
p = STD_SearchString( path, ".app" );
|
||||||
|
if( p == NULL)
|
||||||
|
{
|
||||||
|
// 失敗
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
MI_CpuCopy8( p-8, (void *)HW_SYSM_VER_INFO_CONTENT_ID, 8 );
|
||||||
|
((char *)HW_SYSM_VER_INFO_CONTENT_ID )[8] = '\0';
|
||||||
|
((char *)HW_SYSM_VER_INFO_CONTENT_ID )[9] = gamecode[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 指定タイトルがブート可能なポインタかチェック
|
// 指定タイトルがブート可能なポインタかチェック
|
||||||
static BOOL SYSMi_CheckTitlePointer( TitleProperty *pBootTitle )
|
static BOOL SYSMi_CheckTitlePointer( TitleProperty *pBootTitle )
|
||||||
{
|
{
|
||||||
|
|||||||
@ -81,13 +81,15 @@ SRCS = main.c launcher.c sound.c loadWlanFirm.c \
|
|||||||
loadSharedFont.c scanWDS.c \
|
loadSharedFont.c scanWDS.c \
|
||||||
$(addprefix $(LOGO_DIR)/, $(SRCS_LOGO)) \
|
$(addprefix $(LOGO_DIR)/, $(SRCS_LOGO)) \
|
||||||
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c \
|
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c \
|
||||||
$(BG_DIR)/BGData_Launcher.c
|
$(BG_DIR)/BGData_Launcher.c \
|
||||||
|
../../MachineSettings/ARM9/src/getSysMenuVersion.c
|
||||||
|
|
||||||
LINCLUDES = $(MISC_DIR)/include \
|
LINCLUDES = $(MISC_DIR)/include \
|
||||||
$(SRCDIR)/$(LOGO_DIR) \
|
$(SRCDIR)/$(LOGO_DIR) \
|
||||||
$(ROOT)/build/libraries/wm/common.TWL/inc \
|
$(ROOT)/build/libraries/wm/common.TWL/inc \
|
||||||
$(ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc \
|
$(ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc \
|
||||||
$(ROOT)/build/libraries/reboot/common/include
|
$(ROOT)/build/libraries/reboot/common/include \
|
||||||
|
../../MachineSettings/ARM9/src
|
||||||
|
|
||||||
SYSMENU_LIBS = \
|
SYSMENU_LIBS = \
|
||||||
liblcfg$(TWL_LIBSUFFIX).a \
|
liblcfg$(TWL_LIBSUFFIX).a \
|
||||||
|
|||||||
@ -29,6 +29,10 @@
|
|||||||
#include "loadSharedFont.h"
|
#include "loadSharedFont.h"
|
||||||
#include "scanWDS.h"
|
#include "scanWDS.h"
|
||||||
|
|
||||||
|
#include <nitro/fs/sysarea.h>
|
||||||
|
#include <twl/na.h>
|
||||||
|
#include "getSysMenuVersion.h"
|
||||||
|
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
|
|
||||||
// define data-----------------------------------------------------------------
|
// define data-----------------------------------------------------------------
|
||||||
@ -51,6 +55,7 @@ void SYSM_DeleteTempDirectory( TitleProperty *pBootTitle );
|
|||||||
static BOOL IsCommandSelected(void);
|
static BOOL IsCommandSelected(void);
|
||||||
static void PrintPause(void);
|
static void PrintPause(void);
|
||||||
static void PrintError(void);
|
static void PrintError(void);
|
||||||
|
static void PrintSystemMenuVersion( void );
|
||||||
|
|
||||||
// global variable-------------------------------------------------------------
|
// global variable-------------------------------------------------------------
|
||||||
|
|
||||||
@ -467,6 +472,14 @@ MAIN_LOOP_START:
|
|||||||
LogoMain() &&
|
LogoMain() &&
|
||||||
SYSM_isNandTitleListReady() // NANDタイトル取得完了かどうかチェック
|
SYSM_isNandTitleListReady() // NANDタイトル取得完了かどうかチェック
|
||||||
) {
|
) {
|
||||||
|
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
// SystemMenuバージョンetc.の読み込み
|
||||||
|
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
|
||||||
|
// NANDタイトルリスト取得が完了した時点で、その情報をもとにSystemMenuVersionデータにアクセスするための制御情報をセットする。
|
||||||
|
SYSM_SetSystemMenuVersionControlData();
|
||||||
|
PrintSystemMenuVersion();
|
||||||
|
|
||||||
if( !direct_boot ) {
|
if( !direct_boot ) {
|
||||||
sp_titleList = SYSM_GetTitlePropertyList();// TitlePropertyListの取得
|
sp_titleList = SYSM_GetTitlePropertyList();// TitlePropertyListの取得
|
||||||
state = LAUNCHER_INIT;
|
state = LAUNCHER_INIT;
|
||||||
@ -677,6 +690,45 @@ static void PrintError( void )
|
|||||||
GXS_DispOn();
|
GXS_DispOn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// システムメニューバージョンのプリント
|
||||||
|
static void PrintSystemMenuVersion( void )
|
||||||
|
{
|
||||||
|
u8 *pBuffer = SYSM_Alloc( NA_VERSION_DATA_WORK_SIZE );
|
||||||
|
|
||||||
|
if( pBuffer &&
|
||||||
|
ReadSystemMenuVersionData( pBuffer, NA_VERSION_DATA_WORK_SIZE ) ) {
|
||||||
|
// リード成功
|
||||||
|
}else {
|
||||||
|
// FATALエラー
|
||||||
|
UTL_SetFatalError( FATAL_ERROR_TWLSETTINGS );
|
||||||
|
}
|
||||||
|
SYSM_Free( pBuffer );
|
||||||
|
|
||||||
|
// バージョン情報の表示
|
||||||
|
{
|
||||||
|
char str_ver[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ];
|
||||||
|
int len = sizeof(str_ver);
|
||||||
|
MI_CpuClear8( str_ver, sizeof(str_ver) );
|
||||||
|
OS_TPrintf( "SystemMenuVersionData\n" );
|
||||||
|
// 文字列
|
||||||
|
if( STD_ConvertStringUnicodeToSjis( str_ver, &len, GetSystemMenuVersionString(), NULL, NULL ) == STD_RESULT_SUCCESS ) {
|
||||||
|
OS_TPrintf( " Version(str) : %s\n", str_ver );
|
||||||
|
}
|
||||||
|
// 数値
|
||||||
|
OS_TPrintf( " Version(num) : %d.%d\n", GetSystemMenuMajorVersion(), GetSystemMenuMinorVersion() );
|
||||||
|
// ユーザー領域MAXサイズの表示
|
||||||
|
OS_TPrintf( " TotalUserAreadSize : 0x%08x\n", FSi_GetTotalUserAreaSize() );
|
||||||
|
// EULA URLの表示
|
||||||
|
OS_TPrintf( " EULA URL : %s\n", GetEULA_URL() );
|
||||||
|
// NUP HostNameの表示
|
||||||
|
OS_TPrintf( " NUP HostName : %s\n", GetNUP_HostName() );
|
||||||
|
// SystemMenuVersion情報のタイムスタンプの取得
|
||||||
|
OS_TPrintf( " Timestamp : %08x\n", GetSystemMenuVersionTimeStamp() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// 割り込み処理
|
// 割り込み処理
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|||||||
@ -95,12 +95,16 @@ extern void SYSM_MakeNandTitleListAsync( void ); //
|
|||||||
extern void SYSM_MakeNandTitleListMakerInfoAsync( void ); // 非同期版アプリ引き渡しタイトルリスト作成用情報の作成
|
extern void SYSM_MakeNandTitleListMakerInfoAsync( void ); // 非同期版アプリ引き渡しタイトルリスト作成用情報の作成
|
||||||
extern BOOL SYSM_isNandTitleListReady( void ); // 非同期版が終了したかどうかの判定に使う
|
extern BOOL SYSM_isNandTitleListReady( void ); // 非同期版が終了したかどうかの判定に使う
|
||||||
extern TitleProperty *SYSM_GetTitlePropertyList( void ); // SYSM_MakeNandTitleListAsyncで作成されたアプリリストのポインタを取得
|
extern TitleProperty *SYSM_GetTitlePropertyList( void ); // SYSM_MakeNandTitleListAsyncで作成されたアプリリストのポインタを取得
|
||||||
|
extern void SYSM_SetSystemMenuVersionControlData( void ); // SystemMenuVersionデータアクセスのための制御情報のセット
|
||||||
|
|
||||||
// アプリ起動
|
// アプリ起動
|
||||||
extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始
|
extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始
|
||||||
extern BOOL SYSM_IsLoadTitleFinished( void ); // SYSM_StartLoadTitleで起動したスレッドが終了したかどうかを確認
|
extern BOOL SYSM_IsLoadTitleFinished( void ); // SYSM_StartLoadTitleで起動したスレッドが終了したかどうかを確認
|
||||||
|
extern BOOL SYSM_IsLoadTitlePaused(void); // ローディングスレッドが一時停止しているか?
|
||||||
|
extern void SYSM_ResumeLoadingThread( BOOL force ); // ローディングスレッドが一時停止していたら再開
|
||||||
extern void SYSM_StartAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドで検証開始
|
extern void SYSM_StartAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドで検証開始
|
||||||
extern BOOL SYSM_IsAuthenticateTitleFinished( void ); // SYSM_StartAuthenticateTitleで起動したスレッドが終了したかどうかを確認
|
extern BOOL SYSM_IsAuthenticateTitleFinished( void ); // SYSM_StartAuthenticateTitleで起動したスレッドが終了したかどうかを確認
|
||||||
|
extern s32 SYSMi_getCheckTitleLaunchRightsResult( void ); // CheckTitleLaunchRightsの結果を返す(デバグ用)
|
||||||
extern void SYSM_TryToBootTitle( TitleProperty *pBootTitle ); // pBootTitleで指定したタイトルをブート。never return.
|
extern void SYSM_TryToBootTitle( TitleProperty *pBootTitle ); // pBootTitleで指定したタイトルをブート。never return.
|
||||||
|
|
||||||
// AES領域デクリプト
|
// AES領域デクリプト
|
||||||
@ -113,13 +117,7 @@ extern BOOL SYSM_CheckNintendoLogo( u16 *pLogoData ); // Nintendo
|
|||||||
extern void SYSM_LoadNintendoLogo2D( u16 *pLogoData, u16 *pDst, int paletteColorIndex ); // NintendoロゴデータをOBJ_2D形式でロード(pTempBufferには0x700bytes必要)
|
extern void SYSM_LoadNintendoLogo2D( u16 *pLogoData, u16 *pDst, int paletteColorIndex ); // NintendoロゴデータをOBJ_2D形式でロード(pTempBufferには0x700bytes必要)
|
||||||
extern void SYSM_LoadNintendoLogo1D( u16 *pLogoData, u16 *pDst, int paletteColorIndex ); // NintendoロゴデータをOBJ_1D形式でロード(同上)
|
extern void SYSM_LoadNintendoLogo1D( u16 *pLogoData, u16 *pDst, int paletteColorIndex ); // NintendoロゴデータをOBJ_1D形式でロード(同上)
|
||||||
|
|
||||||
extern s32 SYSMi_getCheckTitleLaunchRightsResult( void ); // CheckTitleLaunchRightsの結果を返す(デバグ用)
|
|
||||||
|
|
||||||
extern BOOL SYSM_IsLoadTitlePaused(void); // ローディングスレッドが一時停止しているか?
|
|
||||||
extern void SYSM_ResumeLoadingThread( BOOL force ); // ローディングスレッドが一時停止していたら再開
|
|
||||||
|
|
||||||
extern BOOL SYSM_MakeTitleListMakerInfoFromHeader( TitleListMakerInfo *info, ROM_Header_Short *hs);
|
|
||||||
// アプリ引き渡しタイトルリスト作成用情報をヘッダ情報から作成
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user