diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 99db81b6..c52c2c95 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -1796,23 +1796,7 @@ static void SYSMi_makeTitleIdList( void ) } 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 ) ) #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;ltitleID; + + 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 ) { diff --git a/build/systemMenu_RED/Launcher/ARM9/Makefile b/build/systemMenu_RED/Launcher/ARM9/Makefile index 5ef0eca1..d2291359 100644 --- a/build/systemMenu_RED/Launcher/ARM9/Makefile +++ b/build/systemMenu_RED/Launcher/ARM9/Makefile @@ -81,13 +81,15 @@ SRCS = main.c launcher.c sound.c loadWlanFirm.c \ loadSharedFont.c scanWDS.c \ $(addprefix $(LOGO_DIR)/, $(SRCS_LOGO)) \ $(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 \ $(SRCDIR)/$(LOGO_DIR) \ $(ROOT)/build/libraries/wm/common.TWL/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 = \ liblcfg$(TWL_LIBSUFFIX).a \ diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index 524a77cf..0740c132 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -29,6 +29,10 @@ #include "loadSharedFont.h" #include "scanWDS.h" +#include +#include +#include "getSysMenuVersion.h" + // extern data----------------------------------------------------------------- // define data----------------------------------------------------------------- @@ -51,6 +55,7 @@ void SYSM_DeleteTempDirectory( TitleProperty *pBootTitle ); static BOOL IsCommandSelected(void); static void PrintPause(void); static void PrintError(void); +static void PrintSystemMenuVersion( void ); // global variable------------------------------------------------------------- @@ -467,6 +472,14 @@ MAIN_LOOP_START: LogoMain() && SYSM_isNandTitleListReady() // NANDタイトル取得完了かどうかチェック ) { + // :::::::::::::::::::::::::::::::::::::::::::::: + // SystemMenuバージョンetc.の読み込み + // :::::::::::::::::::::::::::::::::::::::::::::: + + // NANDタイトルリスト取得が完了した時点で、その情報をもとにSystemMenuVersionデータにアクセスするための制御情報をセットする。 + SYSM_SetSystemMenuVersionControlData(); + PrintSystemMenuVersion(); + if( !direct_boot ) { sp_titleList = SYSM_GetTitlePropertyList();// TitlePropertyListの取得 state = LAUNCHER_INIT; @@ -677,6 +690,45 @@ static void PrintError( void ) 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() ); + } +} + + // ============================================================================ // 割り込み処理 // ============================================================================ diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index b704dc25..8e3bbda7 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -95,12 +95,16 @@ extern void SYSM_MakeNandTitleListAsync( void ); // extern void SYSM_MakeNandTitleListMakerInfoAsync( void ); // 非同期版アプリ引き渡しタイトルリスト作成用情報の作成 extern BOOL SYSM_isNandTitleListReady( void ); // 非同期版が終了したかどうかの判定に使う extern TitleProperty *SYSM_GetTitlePropertyList( void ); // SYSM_MakeNandTitleListAsyncで作成されたアプリリストのポインタを取得 +extern void SYSM_SetSystemMenuVersionControlData( void ); // SystemMenuVersionデータアクセスのための制御情報のセット // アプリ起動 extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始 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 BOOL SYSM_IsAuthenticateTitleFinished( void ); // SYSM_StartAuthenticateTitleで起動したスレッドが終了したかどうかを確認 +extern s32 SYSMi_getCheckTitleLaunchRightsResult( void ); // CheckTitleLaunchRightsの結果を返す(デバグ用) extern void SYSM_TryToBootTitle( TitleProperty *pBootTitle ); // pBootTitleで指定したタイトルをブート。never return. // 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_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