From f03f62cb1983d4e4d34b54f22dc8683bc9a7db40 Mon Sep 17 00:00:00 2001 From: aoki_ryoma Date: Fri, 25 Jul 2008 06:46:51 +0000 Subject: [PATCH] =?UTF-8?q?=E3=81=AB=E9=8D=B5=E3=81=AE?= =?UTF-8?q?=E7=BD=B2=E5=90=8D=E6=83=85=E5=A0=B1=E3=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=80=82=20=E8=82=A5=E5=A4=A7=E5=8C=96=E3=81=97=E3=81=9FviewSy?= =?UTF-8?q?stemInfo.c=E3=82=92=E9=A0=85=E7=9B=AE=E3=81=94=E3=81=A8?= =?UTF-8?q?=E3=81=AB=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88=E3=81=9A=E5=88=86?= =?UTF-8?q?=E5=89=B2=E3=80=82=20SDK=E6=9B=B4=E6=96=B0=E3=81=AB=E4=BC=B4?= =?UTF-8?q?=E3=81=A3=E3=81=A6NAM=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA=E3=81=8C=E5=8B=95=E4=BD=9C=E3=81=97=E3=81=AA=E3=81=8F?= =?UTF-8?q?=E3=81=AA=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7=E3=80=81=E8=B5=B7?= =?UTF-8?q?=E5=8B=95=E6=99=82=E3=81=ABcrypto=E3=81=AB=E3=82=A2=E3=83=AD?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=BF=E3=82=92=E6=B8=A1=E3=81=99=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F=E3=80=82?= 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@2001 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../ARM9/Makefile.armadillo | 6 +- .../ARM9/Makefile.racoon_SCFG | 2 + .../ARM9/Makefile.racoon_noSCFG | 2 + .../ARM9/main_armadillo.rsf | 1 + .../ARM9/src/drawFunc.c | 2 + .../ARM9/src/getInformation.h | 26 + .../ARM9/src/get_hw.c | 103 ++ .../ARM9/src/get_other.c | 113 ++ .../ARM9/src/get_owner.c | 37 + .../ARM9/src/get_parental.c | 53 + .../ARM9/src/get_scfg.c | 704 ++++++++++ .../ARM9/src/get_sysmenu.c | 236 ++++ .../ARM9/src/get_versionData.c | 94 ++ .../DisplaySystemInformation/ARM9/src/main.c | 5 +- .../ARM9/src/strResource.c | 15 +- .../ARM9/src/strResource.h | 12 +- .../DisplaySystemInformation/ARM9/src/util.c | 46 + .../DisplaySystemInformation/ARM9/src/util.h | 10 + .../ARM9/src/viewSystemInfo.c | 1164 +---------------- .../ARM9/src/viewSystemInfo.h | 9 +- 20 files changed, 1475 insertions(+), 1165 deletions(-) create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/getInformation.h create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/get_hw.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/get_other.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/get_owner.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/get_parental.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/util.c create mode 100644 build/tests/DisplaySystemInformation/ARM9/src/util.h diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.armadillo b/build/tests/DisplaySystemInformation/ARM9/Makefile.armadillo index ed022015..0bb02f52 100644 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.armadillo +++ b/build/tests/DisplaySystemInformation/ARM9/Makefile.armadillo @@ -19,7 +19,7 @@ TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED -MACRO_FLAGS += -DSEA_ENABLE +MACRO_FLAGS += -DSEA_ENABLE=TRUE # 分岐条件 DEFAULT_COMP_ARM7 = armadillo @@ -35,7 +35,9 @@ SUBDIRS = MISC_DIR = ../../../systemMenu_RED/misc SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c \ + strResource.c misc.c util.c\ + get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ + get_hw.c get_parental.c get_other.c\ $(MISC_DIR)/src/cmn.c LINCLUDES += $(MISC_DIR)/include \ diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_SCFG b/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_SCFG index 6b584313..568e4e07 100644 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_SCFG +++ b/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_SCFG @@ -18,6 +18,8 @@ TARGET_FIRM = SYSTEMMENU TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED +MACRO_FLAGS += -DSEA_ENABLE=FALSE + # 分岐条件 DEFAULT_COMP_ARM7 = racoon ROM_SPEC = main_racoon_SCFG.rsf diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_noSCFG b/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_noSCFG index 68c3199f..66584618 100644 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_noSCFG +++ b/build/tests/DisplaySystemInformation/ARM9/Makefile.racoon_noSCFG @@ -18,6 +18,8 @@ TARGET_FIRM = SYSTEMMENU TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED +MACRO_FLAGS += -DSEA_ENABLE=FALSE + # 分岐条件 DEFAULT_COMP_ARM7 = racoon ROM_SPEC = main_racoon_noSCFG.rsf diff --git a/build/tests/DisplaySystemInformation/ARM9/main_armadillo.rsf b/build/tests/DisplaySystemInformation/ARM9/main_armadillo.rsf index 2b08f05f..25b36c47 100644 --- a/build/tests/DisplaySystemInformation/ARM9/main_armadillo.rsf +++ b/build/tests/DisplaySystemInformation/ARM9/main_armadillo.rsf @@ -176,6 +176,7 @@ Property #DSWirelessIcon FALSE LockSCFG FALSE + HwAESSlotA_SSLClientCert TRUE ### #### END diff --git a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c index 26b4d77b..b6fe156e 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c +++ b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c @@ -19,7 +19,9 @@ #include #include #include + #include "drawFunc.h" +#include "getInformation.h" #include "viewSystemInfo.h" #include "misc.h" #include "strResource.h" diff --git a/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h b/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h new file mode 100644 index 00000000..787e2631 --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h @@ -0,0 +1,26 @@ + +#ifndef __DISPLAY_INFO_GETINFORMATION__ +#define __DISPLAY_INFO_GETINFORMATION__ + +#define TWL_SYSMENU_VER_STR_LEN 28 // システムメニューバージョン文字列MAX bytes +#define TWL_EULA_URL_LEN 128 +#define TWL_NUP_HOSTNAME_LEN 64 + +// NANDアプリ情報 +extern s32 gNumContents; +extern OSTitleId *gContentsTitle; +extern u16 *gContentsVersion; + +// LCFGデータを読み込むためのバッファ +extern u8 *bufLCFG; + + +void getSysmenuInfo( void ); +void getVersions( void ); +void getSCFGInfo( void ); +void getOwnerInfo( void ); +void getHWInfo( void ); +void getParentalInfo( void ); +void getOtherInfo( void ); + +#endif \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c b/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c new file mode 100644 index 00000000..2d5e1649 --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c @@ -0,0 +1,103 @@ +#include +//#include +#include +#include + + +#include "viewSystemInfo.h" +#include "strResource.h" +#include "getInformation.h" + +void getNormalHWInfo( void ); +void getSecureHWInfo( void ); + +void getHWInfo( void ) +{ + getNormalHWInfo(); + getSecureHWInfo(); +} + + + + +void getNormalHWInfo( void ) +{ + int value; + + value = (int) OS_GetOwnerRtcOffset(); + gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].iValue = (int) value; + gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].isNumData = TRUE; + + { + int i; + char ascii[] = "0123456789abcdef"; + const u8 *unq = OS_GetMovableUniqueIDPtr(); + // 16進で1バイトずつ詰めていく + // バッファが長さの3倍長なのは、データを"%02x-%02x-%02x..."に置換するため + for(i=0; i < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3; i += 3, unq++ ) + { + gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i] = ascii[(*unq>>4) & 0x0f]; + gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+1] = ascii[*unq & 0x0f]; + gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+2] = + (i+2) == (OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 - 1) ? (char)'\0' : (char)'-' ; + OS_TPrintf("uniqid: %d\n", *unq); + } + } + +} + +void getSecureHWInfo( void ) +{ + int value; + + value = OS_IsForceDisableWireless(); + gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].iValue = value; + gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].str.sjis = s_strBool[ value ]; + gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].isAligned = FALSE; + gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].numLines = 2; + + value = OS_GetRegion(); + gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].iValue = value; + gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].str.sjis = s_strRegion[ value ]; + + { + u8 serialBuf[OS_TWL_HWINFO_SERIALNO_LEN_MAX]; + OS_GetSerialNo( serialBuf ); + snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_SERIAL].str.sjis , OS_TWL_HWINFO_SERIALNO_LEN_MAX, "%s", serialBuf); + } + + { + u64 buf; + buf = OS_GetValidLanguageBitmap(); + OS_TPrintf("language bitmap : %lx\n", buf ); + snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_LANGUAGE].str.sjis , + DISPINFO_BUFSIZE-1, "%08lx", OS_GetValidLanguageBitmap() ); + + + // fuseRomデータの読み出し + // secureなアプリ以外はハード的に切り離されるのでゼロになる + buf = SCFG_ReadFuseData(); + OS_TPrintf("fuse data : %llx\n", buf); + snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].str.sjis , + DISPINFO_BUFSIZE-1, "%016llx", SCFG_ReadFuseData() ); + gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].numLines = 2; + + } + + // ランチャのタイトルIDLoの取得 + if( LCFG_ReadHWSecureInfo() ) + { + const u8 *titleIDLo = LCFG_THW_GetLauncherTitleID_LoPtr(); + value = ( int )( titleIDLo[0] << 8*3 | + titleIDLo[1] << 8*2 | + titleIDLo[2] << 8*1 | + titleIDLo[3] << 8*0 ); + + gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].iValue = value; + gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].isNumData = TRUE;; + gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].isAligned = FALSE; + gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].numLines = 2; + gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].fromLCFG = TRUE; + } + +} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_other.c b/build/tests/DisplaySystemInformation/ARM9/src/get_other.c new file mode 100644 index 00000000..d727b73d --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/get_other.c @@ -0,0 +1,113 @@ +#include +#include + +#include "viewSystemInfo.h" +#include "strResource.h" +#include "getInformation.h" + +void getOtherInfo( void ) +{ + // この辺からマクロで生成した分 + + int value; + + value = OS_IsAgreeEULA(); + gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].iValue = value; + gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].str.sjis = s_strBool[value]; + + gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].iValue = OS_GetAgreedEULAVersion(); + gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].isNumData = TRUE; + + value = OS_IsAvailableWireless(); + gAllInfo[MENU_OTHER][OTHER_WIRELESS].iValue = value; + gAllInfo[MENU_OTHER][OTHER_WIRELESS].str.sjis = s_strEnable[value]; + + value = LCFG_TSD_IsFinishedInitialSetting(); + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].iValue = value; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].str.sjis = s_strBool[ value ]; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].changable = TRUE; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].argType = ARG_BOOL; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].kindNameList = s_strBool; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].numKindName = 2; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].fromLCFG = TRUE; + + value = LCFG_TSD_IsFinishedInitialSetting_Launcher(); + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].iValue = value; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].str.sjis = s_strBool[ value ]; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].changable = TRUE; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting_Launcher; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].argType = ARG_BOOL; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].kindNameList = s_strBool; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].numKindName = 2; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].fromLCFG = TRUE; + + value = LCFG_TSD_IsFinishedBrokenTWLSettings(); + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].iValue = value; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].str.sjis = s_strBool[ value ]; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].changable = TRUE; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedBrokenTWLSettings; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].argType = ARG_BOOL; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].kindNameList = s_strBool; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].numKindName = 2; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].fromLCFG = TRUE; + + value = LCFG_TSD_GetInstalledSoftBoxCount(); + gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].iValue = value; + gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].isNumData = TRUE; + gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].fromLCFG = TRUE; + + + value = LCFG_TSD_GetFreeSoftBoxCount(); + gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].iValue = value; + gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].isNumData = TRUE; + gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].fromLCFG = TRUE; + + value = LCFG_TSD_GetLastTimeBootSoftIndex(); + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].iValue = value; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].isNumData = TRUE; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].fromLCFG = TRUE; + + value = LCFG_TSD_GetLastTimeBootSoftPlatform(); + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].iValue = value; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].isNumData = TRUE; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].fromLCFG = TRUE; + + + { + u64 buf = LCFG_TSD_GetLastTimeBootSoftTitleID(); + + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].isAligned = FALSE; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].numLines = 2; + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].fromLCFG = TRUE; + + if( buf ) + // bufが0だったら前回起動したアプリが設定されていない + { + u32 titleID = MI_LoadBE32( &buf ); + + OS_TPrintf("Lastboot ID: %x Title ID: %x\n", buf, titleID ); + + MI_CpuCopy( &titleID, gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].str.sjis, 4 ); + gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].str.sjis[8] = '\0'; + } + else + { + STD_StrCpy( gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].str.sjis, "N/A" ); + } + } +} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c b/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c new file mode 100644 index 00000000..bc9246b4 --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c @@ -0,0 +1,37 @@ +#include +#include +#include + +#include "viewSystemInfo.h" +#include "strResource.h" +#include "getInformation.h" + + +void getOwnerInfo( void ) +// オーナー情報周りを取得する +{ + OSOwnerInfoEx ownerInfo; + + OS_TPrintf( "...Owner Information\n"); + // 本体設定まわり + OS_GetOwnerInfoEx( &ownerInfo ); + + // 全体情報につめていく + // 泥臭すぎるやり方なのであとで考える + gAllInfo[MENU_OWNER][OWNER_LANGUAGE].str.sjis = s_strLanguage[ ownerInfo.language ]; + gAllInfo[MENU_OWNER][OWNER_LANGUAGE].iValue = ownerInfo.language; + + gAllInfo[MENU_OWNER][OWNER_COLOR].str.sjis = s_strUserColor[ ownerInfo.favoriteColor ]; + gAllInfo[MENU_OWNER][OWNER_COLOR].iValue = ownerInfo.favoriteColor; + + snprintf( gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].str.sjis, DISPINFO_BUFSIZE-1, "%02d/%02d", ownerInfo.birthday.month, ownerInfo.birthday.day); + gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].iValue = ownerInfo.birthday.month * 100 + ownerInfo.birthday.day; + + gAllInfo[MENU_OWNER][OWNER_COUNTRY].str.sjis = s_strCountry[ownerInfo.country]; + gAllInfo[MENU_OWNER][OWNER_COUNTRY].iValue = ownerInfo.country; + + wcsncpy( gAllInfo[MENU_OWNER][OWNER_NICKNAME].str.utf , ownerInfo.nickName, OS_OWNERINFO_NICKNAME_MAX + 1); + gAllInfo[MENU_OWNER][OWNER_NICKNAME].isSjis = FALSE; + wcsncpy( gAllInfo[MENU_OWNER][OWNER_COMMENT].str.utf , ownerInfo.comment, OS_OWNERINFO_COMMENT_MAX + 1 ); + gAllInfo[MENU_OWNER][OWNER_COMMENT].isSjis = FALSE; +} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c b/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c new file mode 100644 index 00000000..3e0021ca --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c @@ -0,0 +1,53 @@ +#include +#include +#include +#include + +#include "viewSystemInfo.h" +#include "strResource.h" +#include "getInformation.h" + +void getParentalInfo( void ) +// ペアレンタルコントロール情報を取得する +{ + // ペアレンタルコントロールまわり + const LCFGTWLParentalControl *pPC = (const LCFGTWLParentalControl *) OS_GetParentalControlInfoPtr(); + + OS_TPrintf( "...Parental Control Information\n" ); + + gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].str.sjis = s_strBool[ pPC->flags.isSetParentalControl ]; + gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].iValue = (int) pPC->flags.isSetParentalControl; + + gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].str.sjis = s_strBool[ pPC->flags.pictoChat ]; + gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].iValue = (int) pPC->flags.pictoChat; + + gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].str.sjis = s_strBool[ pPC->flags.dsDownload ]; + gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].iValue = (int) pPC->flags.dsDownload; + + gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].str.sjis = s_strBool[ pPC->flags.browser ]; + gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].iValue = (int) pPC->flags.browser; + + gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].str.sjis = s_strBool[ pPC->flags.wiiPoint ]; + gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].iValue = (int) pPC->flags.wiiPoint; + + gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].str.sjis = s_strBool[ pPC->flags.photoExchange ]; + gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].iValue = (int) pPC->flags.photoExchange; + + gAllInfo[MENU_PARENTAL][PARENTAL_UGC].str.sjis = s_strBool[ pPC->flags.ugc ]; + gAllInfo[MENU_PARENTAL][PARENTAL_UGC].iValue = (int) pPC->flags.ugc; + + gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].str.sjis = s_strRatingOrg[ pPC->ogn ]; + gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].iValue = (int) pPC->ogn; + + gAllInfo[MENU_PARENTAL][PARENTAL_AGE].iValue = pPC->ratingAge; + gAllInfo[MENU_PARENTAL][PARENTAL_AGE].isNumData = TRUE; + + gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].iValue = pPC->secretQuestionID; + gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].isNumData = TRUE; + + gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].iValue = atoi( pPC->password ) ; + gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].isNumData = TRUE; + + wcsncpy( gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].str.utf , pPC->secretAnswer, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1); + gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].isSjis = FALSE; +} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c b/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c new file mode 100644 index 00000000..4fb71bc7 --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c @@ -0,0 +1,704 @@ + +#include +#include "getInformation.h" +#include "viewSystemInfo.h" +#include "strResource.h" +#include "myIoreg_SCFG.h" +//#include "misc.h" + +void getSCFGARM9Info( void ); +void getSCFGARM7InfoReg( void ); +void getSCFGARM7InfoShared( void ); + +void getSCFGInfo( void ) +{ + getSCFGARM9Info(); + getSCFGARM7InfoReg(); + getSCFGARM7InfoShared(); +} + +void getSCFGARM9Info( void ) +// ARM9側で取得できるSCFG情報を取得する +// ARM9SCFGAPIはレジスタを直接参照しているので、APIを使ってもレジスタを直接見ても同じ値 +{ + int value; + + // ROM制御レジスタ + + // IsSecureRomAccessibleの返り値はレジスタビットが反転 + value = ! SCFG_IsSecureRomAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].str.sjis = s_strJoint[ value ]; + + value = SCFG_GetSystemRomType() == SCFG_SYSTEM_ROM_FOR_NITRO; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].str.sjis = s_strRomMode[ value ]; + + // クロック制御レジスタ + value = SCFG_GetCpuSpeed(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].str.sjis = s_strCpuSpeed[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changeFunc.cBool = SCFG_SetCpuSpeed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].kindNameList = s_strCpuSpeed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].numKindName = 2; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; + + value = SCFG_IsClockSuppliedToDSP(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].str.sjis = s_strSupply[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changeFunc.cBool = SCFG_SupplyClockToDSP; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].kindNameList = s_strSupply; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].numKindName = 2; + + value = SCFG_IsClockSuppliedToCamera(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].str.sjis = s_strSupply[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changeFunc.cBool = SCFG_SupplyClockToCamera; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].kindNameList = s_strSupply; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].numKindName = 2; + + value = SCFG_IsClockSuppliedToWram(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].str.sjis = s_strSupply[ value ]; + + value = SCFG_IsCameraCKIClockEnable(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changeFunc.cBool = SCFG_SetCameraCKIClock; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].numKindName = 2; + + // 新規ブロック制御レジスタ + value = SCFG_IsDSPReset(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].str.sjis = s_strBool[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].argType = ARG_OTHER; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].kindNameList = s_strBool; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].numKindName = 2; + + // 拡張機能制御レジスタ + + value = SCFG_IsDmacFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changeFunc.cBool = SCFG_SetDmacFixed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].numKindName = 2; + + value = SCFG_IsGeometryFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changeFunc.cBool = SCFG_SetGeometryFixed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].numKindName = 2; + + value = SCFG_IsRendererFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changeFunc.cBool = SCFG_SetRendererFixed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].numKindName = 2; + + value = SCFG_Is2DEngineFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changeFunc.cBool = SCFG_Set2DEngineFixed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].numKindName = 2; + + value = SCFG_IsDividerFixed(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changeFunc.cBool = SCFG_SetDividerFixed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].numKindName = 2; + + value = SCFG_IsCardFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changeFunc.cBool = SCFG_SetCardFixed; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].numKindName = 2; + + value = SCFG_IsIntcExpanded(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changeFunc.cBool = SCFG_SetIntcExpanded; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].numKindName = 2; + + value = SCFG_IsLCDCExpanded(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changeFunc.cBool = SCFG_SetLCDCExpanded; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].numKindName = 2; + + value = SCFG_IsVRAMExpanded(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changeFunc.cBool = SCFG_SetVRAMExpanded; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].kindNameList = s_strEnable; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].numKindName = 2; + + { + u8 idx; + value = SCFG_GetPsramdBoundary(); + + if( value == SCFG_PSRAM_BOUNDARY_4MB ) + { + idx = 0; + } + else if ( value == SCFG_PSRAM_BOUNDARY_16MB ) + { + idx = 1; + } + else if ( value == SCFG_PSRAM_BOUNDARY_32MB ) + { + idx = 2; + } + + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].iValue = idx; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].str.sjis = s_strPSRAM[ idx ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].argType = ARG_OTHER; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].kindNameList = s_strPSRAM; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].numKindName = 3; + } + + value = SCFG_IsNDmaAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].str.sjis = s_strAccess[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changeFunc.cBool = SCFG_SetNDmaAccessible; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].kindNameList = s_strAccess; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].numKindName = 2; + + value = SCFG_IsCameraAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].str.sjis = s_strAccess[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changeFunc.cBool = SCFG_SetCameraAccessible; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].kindNameList = s_strAccess; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].numKindName = 2; + + value = SCFG_IsDSPAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].str.sjis = s_strAccess[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changeFunc.cBool = SCFG_SetDSPAccessible; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].argType = ARG_BOOL; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].kindNameList = s_strAccess; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].numKindName = 2; + + value = (reg_SCFG_EXT & REG_SCFG_EXT_MC_B_MASK) || 0; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].str.sjis = s_strAccess[ value ]; + + value = SCFG_IsWRAMAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].str.sjis = s_strAccess[ value ]; + + value = SCFG_IsConfigBlockAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].str.sjis = s_strAccess[ value ]; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].changable = TRUE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].argType = ARG_OTHER; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].kindNameList = s_strAccess; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numKindName = 2; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numLines = 2; +} + +void getSCFGARM7InfoReg( void ) +{ + // レジスタに直接格納されているほうのSCFGデータを取得 + + + int value; + + // ROM制御レジスタ(L)、(H) + { + // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) + value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_SEC_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].str.sjis = s_strJoint[ value ]; + + value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_RSEL_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].str.sjis = s_strRomMode[ value ]; + + // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) + value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_SEC_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].str.sjis = s_strJoint[ value ]; + + value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_RSEL_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].str.sjis = s_strRomMode[ value ]; + + // FuseROMフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) + value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_FUSE_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].str.sjis = s_strJoint[ value ]; + + value = ( gArm7SCFGReg[DISP_REG_ROMWE_OFFSET - 0x4000] & DISP_REG_SCFG_ROMWE_WE_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].str.sjis = s_strEnable[ value ]; + } + + // 新規ブロッククロック制御レジスタ + { + u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); + + value = ( flag & DISP_REG_SCFG_CLK_SD1HCLK_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].str.sjis = s_strSupply[ value ]; + + value = ( flag & DISP_REG_SCFG_CLK_SD2HCLK_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].str.sjis = s_strSupply[ value ]; + + value = ( flag & DISP_REG_SCFG_CLK_AESHCLK_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].str.sjis = s_strSupply[ value ]; + + value = ( flag & DISP_REG_SCFG_CLK_WRAMHCLK_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[ value ]; + + value = ( flag & DISP_REG_SCFG_CLK_SNDMCLK_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].str.sjis = s_strSupply[ value ]; + } + + // JTAG制御レジスタ + { + u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); + + value = ( flag & DISP_REG_SCFG_JTAG_ARM7SEL_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].numLines = 2; + + value = ( flag & DISP_REG_SCFG_JTAG_CPUJE_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_JTAG_DSPJE_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].str.sjis = s_strEnable[ value ]; + } + + // 拡張機能制御レジスタ + { + u32 flag = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); + + value = ( flag & DISP_REG_SCFG_EXT_DMA_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_SDMA_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_SND_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_MC_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].numLines = 2; + + value = ( flag & DISP_REG_SCFG_EXT_INTC_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].numLines = 2; + + value = ( flag & DISP_REG_SCFG_EXT_SPI_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_DSEL_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].numLines = 2; + + value = ( flag & DISP_REG_SCFG_EXT_SIO_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_LCDC_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_VRAM_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; + + { + u8 idx = 0; + value = (int) ( (flag & DISP_REG_SCFG_EXT_PSRAM_MASK) >> DISP_REG_SCFG_EXT_PSRAM_SHIFT ); + + + if( value <= 1 ) + { + idx = 0; + } + else if ( value == 2 ) + { + idx = 1; + } + else if ( value == 3 ) + { + idx = 2; + } + + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; + } + + value = ( flag & DISP_REG_SCFG_EXT_DMAC_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_AES_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_SD1_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_SD2_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_MIC_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_I2S_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_I2C_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_GPIO_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_MC_B_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_WRAM_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_PUENABLE_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; + + value = ( flag & DISP_REG_SCFG_EXT_CFG_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; + + } + + // メモリカード I/F 制御レジスタ + { + u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); + + value = ( flag & DISP_REG_MI_MC_SL1_CDET_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].str.sjis = s_strBool[ value ]; + + value = ( flag & DISP_REG_MI_MC_SL2_CDET_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].str.sjis = s_strBool[ value ]; + + value = ( flag & DISP_REG_MI_MC_SWP_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].str.sjis = s_strBool[ value ]; + + value = (flag & DISP_REG_MI_MC_SL1_MODE_MASK) >> DISP_REG_MI_MC_SL1_MODE_SHIFT ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].str.sjis = s_strMCMode[value]; + + value = (flag & DISP_REG_MI_MC_SL2_MODE_MASK) >> DISP_REG_MI_MC_SL2_MODE_SHIFT; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].str.sjis = s_strMCMode[value]; + + flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MCCHAT_OFFSET - 0x4000] ); + value = (flag & DISP_REG_MI_MCCHAT_CC_MASK) >> DISP_REG_MI_MCCHAT_CC_SHIFT; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].iValue = value; + snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value); + + flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC2_OFFSET - 0x4000] ); + value = (flag & DISP_REG_MI_MC2_CA_MASK ) >> DISP_REG_MI_MC2_CA_SHIFT; + ;gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].iValue = value; + snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value ); + + } + + // 旧無線送受信制御レジスタ + { + u8 flag = gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000]; + + value = ( flag & DISP_REG_SCFG_WL_OFFB_MASK ) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].str.sjis = s_strEnable[ value ]; + + } + + + // オプション端子読み出しレジスタ + { + + u8 flag = gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000]; + value = (flag & DISP_REG_SCFG_OP_OPT_MASK) >> DISP_REG_SCFG_OP_OPT_SHIFT; + + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; + + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; + } + +} + +void getSCFGARM7InfoShared( void ) +{ + // 共有領域に退避されたほうのSCFGデータを取得する + int value; + + // 拡張機能制御レジスタ (4byte) + { + u32 extData = MI_LoadLE32( &gArm7SCFGShared[HWi_WSYS04_OFFSET] ); + + value = (extData & DISP_REG_SCFG_EXT_DMA_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_SDMA_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_SND_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_MC_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].numLines = 2; + + value = (extData & DISP_REG_SCFG_EXT_INTC_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].numLines = 2; + + value = (extData & DISP_REG_SCFG_EXT_SPI_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_DSEL_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].numLines = 2; + + value = (extData & DISP_REG_SCFG_EXT_LCDC_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_VRAM_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; + + { + u8 idx = 0; + value = (int) ( (extData & HWi_WSYS04_EXT_PSRAM_MASK ) >> HWi_WSYS04_EXT_PSRAM_SHIFT ); + + if( value <= 1 ) + { + idx = 0; + } + else if ( value == 2 ) + { + idx = 1; + } + else if ( value == 3 ) + { + idx = 2; + } + + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; + } + + value = (extData & DISP_REG_SCFG_EXT_DMAC_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_AES_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_SD1_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_SD2_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_MIC_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_I2S_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_I2C_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_GPIO_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_MC_B_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_WRAM_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_PUENABLE_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; + + value = (extData & DISP_REG_SCFG_EXT_CFG_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; + } + + // ボンディング、rom状態、旧無線レジスタ ( 1byte ) + { + u8 regData = gArm7SCFGShared[HWi_WSYS08_OFFSET]; + + value = (regData & HWi_WSYS08_OP_OPT_MASK) >> HWi_WSYS08_OP_OPT_SHIFT ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; + + // rom制御 + value = ( regData & HWi_WSYS08_ROM_ARM9SEC_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].str.sjis = s_strAccess[ !value ] ; + + value = ( regData & HWi_WSYS08_ROM_ARM9RSEL_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].str.sjis = s_strRomMode[value] ; + + value = ( regData & HWi_WSYS08_ROM_ARM7RSEL_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].str.sjis = s_strRomMode[value] ; + + value = ( regData & HWi_WSYS08_ROM_ARM7FUSE_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].str.sjis = s_strAccess[ !value ] ; + + // + value = ( regData & HWi_WSYS08_WL_OFFB_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].str.sjis = s_strEnable[value] ; + + } + + // jtag、clkレジスタ ( 1byte ) + { + u8 regData = gArm7SCFGShared[HWi_WSYS09_OFFSET]; + + value = ( regData & HWi_WSYS09_JTAG_ARM7SEL_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].str.sjis = s_strEnable[value] ; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].isAligned = FALSE; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].numLines = 2; + + value = ( regData & HWi_WSYS09_JTAG_CPUJE_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].str.sjis = s_strEnable[value] ; + + value = ( regData & HWi_WSYS09_JTAG_DSPJE_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].str.sjis = s_strEnable[value] ; + + value = ( regData & HWi_WSYS09_CLK_SD1HCLK_MASK) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].str.sjis = s_strSupply[value] ; + + value = ( regData & HWi_WSYS09_CLK_SD2HCLK_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].str.sjis = s_strSupply[value] ; + + value = ( regData & HWi_WSYS09_CLK_AESHCLK_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].str.sjis = s_strSupply[value] ; + + value = ( regData & HWi_WSYS09_CLK_WRAMHCLK_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[value] ; + + value = ( regData & HWi_WSYS09_CLK_SNDMCLK_MASK ) || 0; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].iValue = value; + gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].str.sjis = s_strSupply[value] ; + } + + +} + + diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c b/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c new file mode 100644 index 00000000..dd6f4ff0 --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c @@ -0,0 +1,236 @@ +#include +#include +#include +#include +#include + +#include "getInformation.h" +#include "viewSystemInfo.h" +#include "strResource.h" +#include "misc.h" +#include "util.h" + + +#define FILE_VERSION "verdata:/version.bin" +#define FILE_EULA_URL "verdata:/eula_url.bin" +#define FILE_NUP_HOSTNAME "verdata:/nup_host.bin" +#define FILE_TIMESTAMP "verdata:/time_stamp.bin" + +#define FILE_SIGN_NUP_CERT "verdata:/.twl-nup-cert.der" +#define FILE_SIGN_NUP_PRV "verdata:/.twl-nup-prvkey.der" +#define FILE_SIGN_SHOP_CERT "verdata:/.twl-shop-cert.der" +#define FILE_SIGN_SHOP_PRV "verdata:/.twl-shop-prvkey.der" +#define FILE_SIGN_NINTENDO_CA "verdata:/NintendoCA.der" +#define FILE_SIGN_NINTENDO_CAC2 "verdata:/NintendoCA-C2.der" +#define FILE_SIGN_NINTENDO_CAG2 "verdata:/NintendoCA-G2.der" +#define NUM_FILE_SIGN 7 + + +typedef struct SystemMenuVersion { + u16 major; + u16 minor; + u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; +}SystemMenuVersion; + +static char* s_strSignFilePath[] = { + FILE_SIGN_NUP_CERT, + FILE_SIGN_NUP_PRV, + FILE_SIGN_SHOP_CERT, + FILE_SIGN_SHOP_PRV, + FILE_SIGN_NINTENDO_CA, + FILE_SIGN_NINTENDO_CAC2, + FILE_SIGN_NINTENDO_CAG2, +}; + +static char*s_strSignHash[] = { + "01e03e86fe11c5172ba742045c63e65c2f058e99", + "7497940e3a3591d592b46ff99d75ebe102c27550", + "cf130c7674bae733f3b106109bb06cc0d6ac1a18", + "ab38a52a384ab63ea8397de6eae8a96d6c108888", + "b5229455dd26c1f53c73060e9089b391389e1f75", + "aa8ef66ae0f807edb841c889ee3666a259a28ccc", + "c60b2a5cc90f0630cca33040df6b3378239f3bfa" +}; + + + +void getSysmenuInfo( void ) +{ + u8 *pBuffer = (u8*) Alloc (NA_VERSION_DATA_WORK_SIZE); + + if( !NA_LoadVersionDataArchive( pBuffer, NA_VERSION_DATA_WORK_SIZE ) ) { + return ; + } + + // バージョンの読み出し + { + FSFile file; + SystemMenuVersion bufVersion; + s32 len; + + FS_InitFile(&file); + + if (!FS_OpenFileEx(&file, FILE_VERSION, FS_FILEMODE_R)) + { + return ; + } + + len = FS_ReadFile(&file, &bufVersion, sizeof(SystemMenuVersion)); + FS_CloseFile(&file); + + gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].iValue = (int)( bufVersion.major << 16 | bufVersion.minor ); + gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].isNumData = TRUE; + + wcsncpy( gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].str.utf, bufVersion.str, TWL_SYSMENU_VER_STR_LEN ); + gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].isSjis = FALSE; + + } + + // EULA URLの読み出し + { + FSFile file; + s32 len; + + FS_InitFile(&file); + + if (!FS_OpenFileEx(&file, FILE_EULA_URL, FS_FILEMODE_R)) { + return; + } + + len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_EULA_URL].str.sjis , TWL_EULA_URL_LEN) ; + FS_CloseFile(&file); + + } + + // NUP HOST NAME の読み出し + { + FSFile file; + s32 len; + + FS_InitFile(&file); + + if (!FS_OpenFileEx(&file, FILE_NUP_HOSTNAME, FS_FILEMODE_R)) { + return; + } + + len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_NUP_HOST].str.sjis, TWL_NUP_HOSTNAME_LEN); + FS_CloseFile(&file); + + } + + // タイムスタンプ の読み出し + { + FSFile file; + s32 len; + + FS_InitFile(&file); + + if (!FS_OpenFileEx(&file, FILE_TIMESTAMP, FS_FILEMODE_R)) { + return ; + } + + len = FS_ReadFile(&file, &gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].iValue, sizeof(u32) ); + FS_CloseFile(&file); + + gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].isNumData = TRUE; + } + + // 署名の照合 + { + FSFile file[NUM_FILE_SIGN]; + u32 fileLen[NUM_FILE_SIGN], maxFileSize = 0; + u8 i; + u8 *srcBuf, *dstBuf, digestBuf[MATH_SHA1_DIGEST_SIZE], cmpDigestBuf[MATH_SHA1_DIGEST_SIZE]; + + for( i=0 ; i < NUM_FILE_SIGN; i++ ) + { + FS_InitFile( &file[i] ); + + // 署名されたファイルをそれぞれオープン + if( !FS_OpenFileEx( &file[i], s_strSignFilePath[i], FS_FILEMODE_R ) ) + { + return ; + } + + // ファイル容量をそれぞれ取得 + fileLen[i] = FS_GetFileLength( &file[i] ); + } + + // バッファを大きくしたり縮めたりしたくないので + // 一番大きいファイルと同じ大きさのバッファを確保してしまう + for( i=0 ; i < NUM_FILE_SIGN; i++ ) + { + if( maxFileSize < fileLen[i] ) + { + maxFileSize = fileLen[i]; + } + } + + srcBuf = (u8*) Alloc ( maxFileSize ); + dstBuf = (u8*) Alloc ( maxFileSize ); + + // それぞれのファイルに対して署名検証を行う + for( i=0 ; i < NUM_FILE_SIGN; i++ ) + { + u8 idx = (u8)(SYSMENU_SIGN_IDX + i) ; + + OS_TPrintf("Checking signature...%s\n", s_strMetaMenu[MENU_SYSMENU][idx] ); + + // ファイル読み込み + FS_ReadFile( &file[i], srcBuf, (s32)fileLen[i] ); + OS_TPrintf("FileSize: %d byte HeadData: %02x%02x%02x\n", fileLen[i], srcBuf[0], srcBuf[1], srcBuf[2] ); + + if( SYSMENU_SIGN_NUP_CERT <= idx && idx < SYSMENU_SIGN_NINTENDO_CA ) + { + s32 result; + + // SYSMENU_SIGN_NUP_CERTからの4ファイルは暗号化されているので複合化する + result = NA_DecodeVersionData( srcBuf, fileLen[i] , dstBuf, fileLen[i] ); + + if( result < 0 ) + { + OS_TPrintf( "NA_DecodeVersionData() Failed. errCode: %d\n", result ); + continue; + } + + // 出コードするとファイルサイズが変わるっぽいので更新する + fileLen[i] = (u32)result; + + OS_TPrintf("Dacode VersionData... HeadData: %02x%02x%02x\n", dstBuf[0], dstBuf[1], dstBuf[2] ); + + // 複合化データからキャッシュを計算 + MATH_CalcSHA1( digestBuf, dstBuf, fileLen[i] ); + } + else + { + // それ以外はそのままハッシュを求める + MATH_CalcSHA1( digestBuf, srcBuf, fileLen[i] ); + } + + strToHexa( s_strSignHash[i] , cmpDigestBuf, MATH_SHA1_DIGEST_SIZE ); + + // ハッシュ値が一致したらcorrect,一致しなかったらincorrect + gAllInfo[MENU_SYSMENU][idx].str.sjis = + s_strCorrect[ MI_CpuComp8( cmpDigestBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 ]; + + gAllInfo[MENU_SYSMENU][idx].numLines = 2; + gAllInfo[MENU_SYSMENU][idx].isAligned = FALSE; + + putBinary( cmpDigestBuf, MATH_SHA1_DIGEST_SIZE ); + putBinary( digestBuf, MATH_SHA1_DIGEST_SIZE ); + } + + // バッファの開放 + Free( srcBuf ); + Free( dstBuf ); + } + + + // SystemMenuVersionのアンマウント + if( !NA_UnloadVersionDataArchive() ) { + return; + } + + Free(pBuffer); + +} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c b/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c new file mode 100644 index 00000000..3593ce89 --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c @@ -0,0 +1,94 @@ + +#include +#include +#include + +#include "viewSystemInfo.h" +#include "strResource.h" +#include "getInformation.h" +#include "misc.h" + + +#define WL_TITLEID 0x0003000F484E4341 + +void getWirelessVersion( void ); +void getContentsVersion( void ); +void getSharedFontVersion( void ); + + +void getVersions( void ) +{ + + getWirelessVersion(); + getContentsVersion(); + getSharedFontVersion(); + +} + +void getWirelessVersion( void ) +// 無線ファームウェアのバージョンを取得する +{ + FSFile file; + char filePath[NAM_PATH_LEN+1]; + char filebuf[2]; // FWバージョンはMajor, Minorそれぞれ1バイトずつ + int res; + + FS_InitFile( &file ); + NAM_GetTitleBootContentPath( filePath , WL_TITLEID); // 無線ファームのファイルパスを取得 + OS_TPrintf("wireless firm path: %s\n", filePath ) ; + res = FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ); + + // バージョン情報の読み取り + FS_SeekFile( &file, 0xA0, FS_SEEK_SET ); // ファイルの0xA0から2バイトがバージョン情報 + res = FS_ReadFile( &file, filebuf, 2 ); + SDK_ASSERT( res == 2 ); + + snprintf( gAllInfo[MENU_VERSION][VERSION_WIRELESS].str.sjis, DISPINFO_BUFSIZE-1, "%d.%d", filebuf[0], filebuf[1] ); + gAllInfo[MENU_VERSION][VERSION_WIRELESS].iValue = filebuf[0] *100 + filebuf[1]; + +} + +void getSharedFontVersion( void ) +{ + u32 time; + + OS_InitSharedFont(); + time = OS_GetSharedFontTimestamp(); + OS_TPrintf("SharedFont Time Stamp %08lx\n", time ); + gAllInfo[MENU_VERSION][VERSION_FONT].iValue = (int) time; + gAllInfo[MENU_VERSION][VERSION_FONT].isNumData = TRUE; +} + +void getContentsVersion( void ) +// コンテンツリストをもとに各コンテンツのタイトルIDとバージョンを取得 +{ + NAMTitleInfo info; + int i; + + gNumContents = NAM_GetNumTitles(); + OS_TPrintf(" numContents: %d\n", gNumContents); + + if( gContentsTitle == NULL ) + { + // 初回処理の時はバッファを確保 + gContentsTitle = (NAMTitleId*) Alloc( sizeof(NAMTitleId) * gNumContents ); + gContentsVersion = (u16*) Alloc( sizeof(u16) * (u32)gNumContents); + SDK_ASSERT( gContentsTitle ); + SDK_ASSERT( gContentsVersion ); + } + + NAM_GetTitleList( gContentsTitle, (u32)gNumContents); + SDK_POINTER_ASSERT( gContentsTitle ); + SDK_POINTER_ASSERT( gContentsVersion ); + + for( i=0; i #include +#include #include "misc.h" #include "viewSystemInfo.h" #include "address.h" @@ -82,12 +83,10 @@ void TwlMain( void ) OS_TPrintf("Allocator Initialize...\n"); InitAllocator(); + CRYPTO_SetAllocator( Alloc, Free ); -#ifdef SEA_ENABLE OS_TPrintf("NAM Initialize...\n"); NAM_Init( Alloc, Free ); -#endif - InitBG(); OS_TPrintf("Initialize Finished\n"); diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c b/build/tests/DisplaySystemInformation/ARM9/src/strResource.c index 1914272a..b10b2584 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c +++ b/build/tests/DisplaySystemInformation/ARM9/src/strResource.c @@ -222,7 +222,14 @@ const char *s_strSystemMenu[] = { "Version (string)", "EULA URL", "NUP Hostname", - "Timestamp" + "Timestamp", + "Sign (nup-cert)" , + "Sign (nup-prvkey)", + "Sign (shop-cert)", + "Sign (shop-prvkey)", + "Sign (NintendoCA)", + "Sign (NintendoCA-C2)", + "Sign (NintendoCA-G2)" }; const char *s_strVersionMenu[] = { @@ -302,6 +309,12 @@ char *s_strEnable[] = { "ENABLED" }; +char *s_strCorrect[] = { + "Incorrect", + "Correct" +}; + + char *s_strBool[] = { "FALSE", "TRUE" diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h b/build/tests/DisplaySystemInformation/ARM9/src/strResource.h index 3cbfaf4e..f35f5329 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h +++ b/build/tests/DisplaySystemInformation/ARM9/src/strResource.h @@ -157,6 +157,15 @@ #define SYSMENU_EULA_URL 2 #define SYSMENU_NUP_HOST 3 #define SYSMENU_TIMESTAMP 4 +#define SYSMENU_SIGN_NUP_CERT 5 +#define SYSMENU_SIGN_NUP_PRV 6 +#define SYSMENU_SIGN_SHOP_CERT 7 +#define SYSMENU_SIGN_SHOP_PRV 8 +#define SYSMENU_SIGN_NINTENDO_CA 9 +#define SYSMENU_SIGN_NINTENDO_CAC2 10 +#define SYSMENU_SIGN_NINTENDO_CAG2 11 + +#define SYSMENU_SIGN_IDX 5 #define VERSION_WIRELESS 0 #define VERSION_FONT 1 @@ -171,7 +180,7 @@ #define SECURE_HW_MENU_SIZE 6 #define SCFG_ARM7_MENU_SIZE 47 #define SCFG_ARM9_MENU_SIZE 24 -#define SYSMENU_MENU_SIZE 5 +#define SYSMENU_MENU_SIZE 12 #define VERSIONMENU_SIZE 2 @@ -191,6 +200,7 @@ extern const char *s_strARM9RegisterName[]; extern const char *s_strSCFGViewMode[]; extern char *s_strEnable[]; extern char *s_strJoint[]; +extern char *s_strCorrect[]; extern char *s_strSupply[]; extern char *s_strRomMode[]; extern char *s_strPSRAM[]; diff --git a/build/tests/DisplaySystemInformation/ARM9/src/util.c b/build/tests/DisplaySystemInformation/ARM9/src/util.c new file mode 100644 index 00000000..95a9b724 --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/util.c @@ -0,0 +1,46 @@ +#include +#include "util.h" + +u8 ctoh( char c ); + +void putBinary( u8 *src, u32 size ) +{ + int i; + for( i = 0; i < size; i++ ) + { + OS_TPrintf( "%x", src[i] ); + } + + OS_TPrintf( "\n" ); +} + +u8 ctoh( char c ) +{ + if( '0' <= c && c <= '9' ) + { + return (u8) (c - '0'); + } + + if( 'a' <= c && c <= 'f' ) + { + return (u8) ((c - 'a') + 10); + } + + if( 'A' <= c && c <= 'F' ) + { + return (u8) ((c - 'A') + 10); + } + + return 0; +} + +void strToHexa( char *src, u8 *dst, u32 length ) +// 受け取った文字列配列を16進配列へ変換 +// lengthは文字数ではなくバイト数なので注意 +{ + int i; + for( i = 0; i < length*2 ; i += 2 ) + { + dst[i/2] = (u8) ( (ctoh( src[i] ) << 4) | ctoh( src[i+1] ) ); + } +} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/util.h b/build/tests/DisplaySystemInformation/ARM9/src/util.h new file mode 100644 index 00000000..dac5cc2b --- /dev/null +++ b/build/tests/DisplaySystemInformation/ARM9/src/util.h @@ -0,0 +1,10 @@ + +#ifndef __DISPLAY_INFO_UTIL__ +#define __DISPLAY_INFO_UTIL__ + +#include + +void putBinary( u8 *src, u32 size ); +void strToHexa( char *src, u8 *dst, u32 length ); + +#endif \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c index f5514018..c2cdabac 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c +++ b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c @@ -16,59 +16,27 @@ *---------------------------------------------------------------------------*/ #include -#include -#include -#include -#include + #include "misc.h" #include "viewSystemInfo.h" #include "strResource.h" #include "control.h" -#include "myIoreg_SCFG.h" - - -#define DISPINFO_BUFSIZE 64 -#define WL_TITLEID 0x0003000F484E4341 - -#define FS_VERSION_FILE "verdata:/version.bin" -#define FS_EULA_URL_FILE "verdata:/eula_url.bin" -#define FS_NUP_HOSTNAME_FILE "verdata:/nup_host.bin" -#define FS_TIMESTAMP_FILE "verdata:/time_stamp.bin" -#define TWL_SYSMENU_VER_STR_LEN 28 // システムメニューバージョン文字列MAX bytes -#define TWL_EULA_URL_LEN 128 -#define TWL_NUP_HOSTNAME_LEN 64 - - -typedef struct SystemMenuVersion { - u16 major; - u16 minor; - u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; -}SystemMenuVersion; +#include "getInformation.h" /* function prototype ----------------------------- */ void getAllInfo( void ); void initInfo( void ); void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis ); void printAllInfo ( void ); -void getOwnerInfo( void ); void getParentalInfo( void ); -void getOtherInfo(); -void getNormalHWInfo( void ); -void getSecureHWInfo( void ); -void getSCFGARM9Info( void ); -void getSCFGARM7InfoReg( void ); -void getSCFGARM7InfoShared( void ); -void getSysmenuInfo( void ); -void getVersions( void ); -void getWirelessVersion( void ); -void getContentsVersion( void ); -void getSharedFontVersion( void ); +void getOtherInfo( void ); /* global variables ----------------------------- */ DispInfoEntry* gAllInfo[ROOTMENU_SIZE]; // それぞれのメニューごとに項目の中身を"文字列で"持つ配列 +u8 *bufLCFG; // コンテンツタイトル関係 OSTitleId *gContentsTitle; // コンテンツタイトルの一覧 @@ -79,8 +47,7 @@ u16 *gContentsVersion; // gContentsTitle u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE]; u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE]; -// LCFGデータを読み込むためのバッファ -u8 *bufLCFG; + /* static data ---------------------------------- */ @@ -106,7 +73,7 @@ void displayInfoMain( void ) if( isChangeMode ) { - ccResult = changeControl( &menu, &line, &changeLine, &isChangeMode ); + ccResult = changeControl( &menu, &line, &changeLine, &isChangeMode ); } else { @@ -139,7 +106,7 @@ void initInfo( void ) { OS_TPrintf("buffer initialize\n"); - + // sjis (char) infoAlloc( gAllInfo[MENU_OWNER], OWNER_BIRTHDAY, DISPINFO_BUFSIZE , TRUE ); infoAlloc( gAllInfo[MENU_OTHER], OTHER_LCFG_LASTBOOT_ID, DISPINFO_BUFSIZE , TRUE ); infoAlloc( gAllInfo[MENU_NORMAL_HW], NORMAL_HW_UNIQUE_ID, OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 , TRUE ); @@ -149,9 +116,11 @@ void initInfo( void ) infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_TITLEID_LO, DISPINFO_BUFSIZE, TRUE ); infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CC, DISPINFO_BUFSIZE , TRUE ); infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CA, DISPINFO_BUFSIZE , TRUE ); + infoAlloc( gAllInfo[MENU_VERSION], VERSION_WIRELESS, DISPINFO_BUFSIZE, TRUE ); + + // utf(u16) infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_EULA_URL, TWL_EULA_URL_LEN + 1, FALSE ); infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_NUP_HOST, TWL_NUP_HOSTNAME_LEN + 1, FALSE ); - infoAlloc( gAllInfo[MENU_OWNER], OWNER_NICKNAME, OS_OWNERINFO_NICKNAME_MAX + 1 , FALSE ); infoAlloc( gAllInfo[MENU_OWNER], OWNER_COMMENT, OS_OWNERINFO_COMMENT_MAX + 1 , FALSE ); infoAlloc( gAllInfo[MENU_PARENTAL], PARENTAL_ANSWER, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1 , FALSE ); @@ -191,14 +160,10 @@ void getAllInfo( void ) getOwnerInfo(); getParentalInfo(); getOtherInfo(); - getNormalHWInfo(); - getSecureHWInfo(); - getSCFGARM7InfoReg(); - getSCFGARM7InfoShared(); - getSCFGARM9Info(); + getHWInfo(); + getSCFGInfo(); getSysmenuInfo(); getVersions(); - printAllInfo(); OS_TPrintf("reflesh information finished\n"); @@ -240,6 +205,7 @@ void displayInfoInit( void ) } } + // LCFGデータの読み出し bufLCFG = (u8*) Alloc ( LCFG_READ_TEMP ); SDK_ASSERT( bufLCFG ); LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ]) bufLCFG ); @@ -286,1108 +252,4 @@ void printAllInfo ( void ) } } -void getOwnerInfo( void ) -// オーナー情報周りを取得する -{ - OSOwnerInfoEx ownerInfo; - - OS_TPrintf( "...Owner Information\n"); - // 本体設定まわり - OS_GetOwnerInfoEx( &ownerInfo ); - - // 全体情報につめていく - // 泥臭すぎるやり方なのであとで考える - gAllInfo[MENU_OWNER][OWNER_LANGUAGE].str.sjis = s_strLanguage[ ownerInfo.language ]; - gAllInfo[MENU_OWNER][OWNER_LANGUAGE].iValue = ownerInfo.language; - - gAllInfo[MENU_OWNER][OWNER_COLOR].str.sjis = s_strUserColor[ ownerInfo.favoriteColor ]; - gAllInfo[MENU_OWNER][OWNER_COLOR].iValue = ownerInfo.favoriteColor; - - snprintf( gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].str.sjis, DISPINFO_BUFSIZE-1, "%02d/%02d", ownerInfo.birthday.month, ownerInfo.birthday.day); - gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].iValue = ownerInfo.birthday.month * 100 + ownerInfo.birthday.day; - - gAllInfo[MENU_OWNER][OWNER_COUNTRY].str.sjis = s_strCountry[ownerInfo.country]; - gAllInfo[MENU_OWNER][OWNER_COUNTRY].iValue = ownerInfo.country; - - wcsncpy( gAllInfo[MENU_OWNER][OWNER_NICKNAME].str.utf , ownerInfo.nickName, OS_OWNERINFO_NICKNAME_MAX + 1); - gAllInfo[MENU_OWNER][OWNER_NICKNAME].isSjis = FALSE; - wcsncpy( gAllInfo[MENU_OWNER][OWNER_COMMENT].str.utf , ownerInfo.comment, OS_OWNERINFO_COMMENT_MAX + 1 ); - gAllInfo[MENU_OWNER][OWNER_COMMENT].isSjis = FALSE; -} - -void getParentalInfo( void ) -// ペアレンタルコントロール情報を取得する -{ - // ペアレンタルコントロールまわり - const LCFGTWLParentalControl *pPC = (const LCFGTWLParentalControl *) OS_GetParentalControlInfoPtr(); - - OS_TPrintf( "...Parental Control Information\n" ); - - gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].str.sjis = s_strBool[ pPC->flags.isSetParentalControl ]; - gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].iValue = (int) pPC->flags.isSetParentalControl; - - gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].str.sjis = s_strBool[ pPC->flags.pictoChat ]; - gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].iValue = (int) pPC->flags.pictoChat; - - gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].str.sjis = s_strBool[ pPC->flags.dsDownload ]; - gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].iValue = (int) pPC->flags.dsDownload; - - gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].str.sjis = s_strBool[ pPC->flags.browser ]; - gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].iValue = (int) pPC->flags.browser; - - gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].str.sjis = s_strBool[ pPC->flags.wiiPoint ]; - gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].iValue = (int) pPC->flags.wiiPoint; - - gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].str.sjis = s_strBool[ pPC->flags.photoExchange ]; - gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].iValue = (int) pPC->flags.photoExchange; - - gAllInfo[MENU_PARENTAL][PARENTAL_UGC].str.sjis = s_strBool[ pPC->flags.ugc ]; - gAllInfo[MENU_PARENTAL][PARENTAL_UGC].iValue = (int) pPC->flags.ugc; - - gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].str.sjis = s_strRatingOrg[ pPC->ogn ]; - gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].iValue = (int) pPC->ogn; - - gAllInfo[MENU_PARENTAL][PARENTAL_AGE].iValue = pPC->ratingAge; - gAllInfo[MENU_PARENTAL][PARENTAL_AGE].isNumData = TRUE; - - gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].iValue = pPC->secretQuestionID; - gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].isNumData = TRUE; - - gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].iValue = atoi( pPC->password ) ; - gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].isNumData = TRUE; - - wcsncpy( gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].str.utf , pPC->secretAnswer, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1); - gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].isSjis = FALSE; -} - -void getOtherInfo( void ) -{ - // この辺からマクロで生成した分 - - int value; - - value = OS_IsAgreeEULA(); - gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].iValue = value; - gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].str.sjis = s_strBool[value]; - - gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].iValue = OS_GetAgreedEULAVersion(); - gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].isNumData = TRUE; - - value = OS_IsAvailableWireless(); - gAllInfo[MENU_OTHER][OTHER_WIRELESS].iValue = value; - gAllInfo[MENU_OTHER][OTHER_WIRELESS].str.sjis = s_strEnable[value]; - - value = LCFG_TSD_IsFinishedInitialSetting(); - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].iValue = value; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].changable = TRUE; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].argType = ARG_BOOL; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].kindNameList = s_strBool; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].numKindName = 2; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_INITIAL_SETTINGS].fromLCFG = TRUE; - - value = LCFG_TSD_IsFinishedInitialSetting_Launcher(); - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].iValue = value; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].changable = TRUE; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting_Launcher; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].argType = ARG_BOOL; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].kindNameList = s_strBool; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].numKindName = 2; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_INITIAL_LAUNCHER].fromLCFG = TRUE; - - value = LCFG_TSD_IsFinishedBrokenTWLSettings(); - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].iValue = value; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].changable = TRUE; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedBrokenTWLSettings; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].argType = ARG_BOOL; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].kindNameList = s_strBool; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].numKindName = 2; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_BROKEN_SETTINGS].fromLCFG = TRUE; - - value = LCFG_TSD_GetInstalledSoftBoxCount(); - gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].iValue = value; - gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_LCFG_INSTALLED_SOFTBOX].fromLCFG = TRUE; - - - value = LCFG_TSD_GetFreeSoftBoxCount(); - gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].iValue = value; - gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_LCFG_FREE_SOFTBOX].fromLCFG = TRUE; - - value = LCFG_TSD_GetLastTimeBootSoftIndex(); - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].iValue = value; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_IDX].fromLCFG = TRUE; - - value = LCFG_TSD_GetLastTimeBootSoftPlatform(); - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].iValue = value; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_PLATFORM].fromLCFG = TRUE; - - - { - u64 buf = LCFG_TSD_GetLastTimeBootSoftTitleID(); - u32 titleID = MI_LoadBE32( &buf ); - - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].isAligned = FALSE; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].numLines = 2; - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].fromLCFG = TRUE; - - - MI_CpuCopy( &titleID, gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].str.sjis, 4 ); - gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].str.sjis[8] = '\0'; - } -} - -void getNormalHWInfo( void ) -{ - int value; - - value = (int) OS_GetOwnerRtcOffset(); - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].iValue = (int) value; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].isNumData = TRUE; - - { - int i; - char ascii[] = "0123456789abcdef"; - const u8 *unq = OS_GetMovableUniqueIDPtr(); - // 16進で1バイトずつ詰めていく - // バッファが長さの3倍長なのは、データを"%02x-%02x-%02x..."に置換するため - for(i=0; i < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3; i += 3, unq++ ) - { - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i] = ascii[(*unq>>4) & 0x0f]; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+1] = ascii[*unq & 0x0f]; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+2] = - (i+2) == (OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 - 1) ? (char)'\0' : (char)'-' ; - OS_TPrintf("uniqid: %d\n", *unq); - } - } - -} - -void getSecureHWInfo( void ) -{ - int value; - - value = OS_IsForceDisableWireless(); - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].isAligned = FALSE; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].numLines = 2; - - value = OS_GetRegion(); - gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].str.sjis = s_strRegion[ value ]; - - { - u8 serialBuf[OS_TWL_HWINFO_SERIALNO_LEN_MAX]; - OS_GetSerialNo( serialBuf ); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_SERIAL].str.sjis , OS_TWL_HWINFO_SERIALNO_LEN_MAX, "%s", serialBuf); - } - - { - u64 buf; - buf = OS_GetValidLanguageBitmap(); - OS_TPrintf("language bitmap : %lx\n", buf ); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_LANGUAGE].str.sjis , - DISPINFO_BUFSIZE-1, "%08lx", OS_GetValidLanguageBitmap() ); - - - // fuseRomデータの読み出し - // secureなアプリ以外はハード的に切り離されるのでゼロになる - buf = SCFG_ReadFuseData(); - OS_TPrintf("fuse data : %llx\n", buf); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].str.sjis , - DISPINFO_BUFSIZE-1, "%016llx", SCFG_ReadFuseData() ); - gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].numLines = 2; - - } - - // ランチャのタイトルIDLoの取得 - if( LCFG_ReadHWSecureInfo() ) - { - const u8 *titleIDLo = LCFG_THW_GetLauncherTitleID_LoPtr(); - value = ( int )( titleIDLo[0] << 8*3 | - titleIDLo[1] << 8*2 | - titleIDLo[2] << 8*1 | - titleIDLo[3] << 8*0 ); - - gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].isNumData = TRUE;; - gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].isAligned = FALSE; - gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].numLines = 2; - gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].fromLCFG = TRUE; - } - -} - -void getSCFGARM9Info( void ) -// ARM9側で取得できるSCFG情報を取得する -// ARM9SCFGAPIはレジスタを直接参照しているので、APIを使ってもレジスタを直接見ても同じ値 -{ - int value; - - // ROM制御レジスタ - - // IsSecureRomAccessibleの返り値はレジスタビットが反転 - value = ! SCFG_IsSecureRomAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].str.sjis = s_strJoint[ value ]; - - value = SCFG_GetSystemRomType() == SCFG_SYSTEM_ROM_FOR_NITRO; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].str.sjis = s_strRomMode[ value ]; - - // クロック制御レジスタ - value = SCFG_GetCpuSpeed(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].str.sjis = s_strCpuSpeed[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changeFunc.cBool = SCFG_SetCpuSpeed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].kindNameList = s_strCpuSpeed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].numKindName = 2; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; - - value = SCFG_IsClockSuppliedToDSP(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].str.sjis = s_strSupply[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changeFunc.cBool = SCFG_SupplyClockToDSP; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].kindNameList = s_strSupply; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].numKindName = 2; - - value = SCFG_IsClockSuppliedToCamera(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].str.sjis = s_strSupply[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changeFunc.cBool = SCFG_SupplyClockToCamera; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].kindNameList = s_strSupply; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].numKindName = 2; - - value = SCFG_IsClockSuppliedToWram(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].str.sjis = s_strSupply[ value ]; - - value = SCFG_IsCameraCKIClockEnable(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changeFunc.cBool = SCFG_SetCameraCKIClock; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].numKindName = 2; - - // 新規ブロック制御レジスタ - value = SCFG_IsDSPReset(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].argType = ARG_OTHER; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].kindNameList = s_strBool; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].numKindName = 2; - - // 拡張機能制御レジスタ - - value = SCFG_IsDmacFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changeFunc.cBool = SCFG_SetDmacFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].numKindName = 2; - - value = SCFG_IsGeometryFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changeFunc.cBool = SCFG_SetGeometryFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].numKindName = 2; - - value = SCFG_IsRendererFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changeFunc.cBool = SCFG_SetRendererFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].numKindName = 2; - - value = SCFG_Is2DEngineFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changeFunc.cBool = SCFG_Set2DEngineFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].numKindName = 2; - - value = SCFG_IsDividerFixed(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changeFunc.cBool = SCFG_SetDividerFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].numKindName = 2; - - value = SCFG_IsCardFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changeFunc.cBool = SCFG_SetCardFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].numKindName = 2; - - value = SCFG_IsIntcExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changeFunc.cBool = SCFG_SetIntcExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].numKindName = 2; - - value = SCFG_IsLCDCExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changeFunc.cBool = SCFG_SetLCDCExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].numKindName = 2; - - value = SCFG_IsVRAMExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changeFunc.cBool = SCFG_SetVRAMExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].numKindName = 2; - - { - u8 idx; - value = SCFG_GetPsramdBoundary(); - - if( value == SCFG_PSRAM_BOUNDARY_4MB ) - { - idx = 0; - } - else if ( value == SCFG_PSRAM_BOUNDARY_16MB ) - { - idx = 1; - } - else if ( value == SCFG_PSRAM_BOUNDARY_32MB ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].iValue = idx; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].str.sjis = s_strPSRAM[ idx ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].argType = ARG_OTHER; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].kindNameList = s_strPSRAM; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].numKindName = 3; - } - - value = SCFG_IsNDmaAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changeFunc.cBool = SCFG_SetNDmaAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].numKindName = 2; - - value = SCFG_IsCameraAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changeFunc.cBool = SCFG_SetCameraAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].numKindName = 2; - - value = SCFG_IsDSPAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changeFunc.cBool = SCFG_SetDSPAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].numKindName = 2; - - value = (reg_SCFG_EXT & REG_SCFG_EXT_MC_B_MASK) || 0; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].str.sjis = s_strAccess[ value ]; - - value = SCFG_IsWRAMAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].str.sjis = s_strAccess[ value ]; - - value = SCFG_IsConfigBlockAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].argType = ARG_OTHER; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numKindName = 2; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numLines = 2; -} - -void getSCFGARM7InfoReg( void ) -{ - // レジスタに直接格納されているほうのSCFGデータを取得 - - - int value; - - // ROM制御レジスタ(L)、(H) - { - // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_SEC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_RSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].str.sjis = s_strRomMode[ value ]; - - // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_SEC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_RSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].str.sjis = s_strRomMode[ value ]; - - // FuseROMフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_FUSE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_ROMWE_OFFSET - 0x4000] & DISP_REG_SCFG_ROMWE_WE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].str.sjis = s_strEnable[ value ]; - } - - // 新規ブロッククロック制御レジスタ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_CLK_SD1HCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_SD2HCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_AESHCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_WRAMHCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_SNDMCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].str.sjis = s_strSupply[ value ]; - } - - // JTAG制御レジスタ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_JTAG_ARM7SEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].numLines = 2; - - value = ( flag & DISP_REG_SCFG_JTAG_CPUJE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_JTAG_DSPJE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].str.sjis = s_strEnable[ value ]; - } - - // 拡張機能制御レジスタ - { - u32 flag = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_EXT_DMA_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SDMA_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SND_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_INTC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_SPI_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_DSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_SIO_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_LCDC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_VRAM_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; - - { - u8 idx = 0; - value = (int) ( (flag & DISP_REG_SCFG_EXT_PSRAM_MASK) >> DISP_REG_SCFG_EXT_PSRAM_SHIFT ); - - - if( value <= 1 ) - { - idx = 0; - } - else if ( value == 2 ) - { - idx = 1; - } - else if ( value == 3 ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; - } - - value = ( flag & DISP_REG_SCFG_EXT_DMAC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_AES_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SD1_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SD2_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MIC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_I2S_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_I2C_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_GPIO_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MC_B_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_WRAM_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_PUENABLE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_CFG_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; - - } - - // メモリカード I/F 制御レジスタ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_MI_MC_SL1_CDET_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].str.sjis = s_strBool[ value ]; - - value = ( flag & DISP_REG_MI_MC_SL2_CDET_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].str.sjis = s_strBool[ value ]; - - value = ( flag & DISP_REG_MI_MC_SWP_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].str.sjis = s_strBool[ value ]; - - value = (flag & DISP_REG_MI_MC_SL1_MODE_MASK) >> DISP_REG_MI_MC_SL1_MODE_SHIFT ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].str.sjis = s_strMCMode[value]; - - value = (flag & DISP_REG_MI_MC_SL2_MODE_MASK) >> DISP_REG_MI_MC_SL2_MODE_SHIFT; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].str.sjis = s_strMCMode[value]; - - flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MCCHAT_OFFSET - 0x4000] ); - value = (flag & DISP_REG_MI_MCCHAT_CC_MASK) >> DISP_REG_MI_MCCHAT_CC_SHIFT; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].iValue = value; - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value); - - flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC2_OFFSET - 0x4000] ); - value = (flag & DISP_REG_MI_MC2_CA_MASK ) >> DISP_REG_MI_MC2_CA_SHIFT; - ;gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].iValue = value; - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value ); - - } - - // 旧無線送受信制御レジスタ - { - u8 flag = gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000]; - - value = ( flag & DISP_REG_SCFG_WL_OFFB_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].str.sjis = s_strEnable[ value ]; - - } - - - // オプション端子読み出しレジスタ - { - - u8 flag = gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000]; - value = (flag & DISP_REG_SCFG_OP_OPT_MASK) >> DISP_REG_SCFG_OP_OPT_SHIFT; - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; - } - -} - -void getSCFGARM7InfoShared( void ) -{ - // 共有領域に退避されたほうのSCFGデータを取得する - int value; - - // 拡張機能制御レジスタ (4byte) - { - u32 extData = MI_LoadLE32( &gArm7SCFGShared[HWi_WSYS04_OFFSET] ); - - value = (extData & DISP_REG_SCFG_EXT_DMA_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SDMA_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SND_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_INTC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_SPI_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_DSEL_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_LCDC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_VRAM_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; - - { - u8 idx = 0; - value = (int) ( (extData & HWi_WSYS04_EXT_PSRAM_MASK ) >> HWi_WSYS04_EXT_PSRAM_SHIFT ); - - if( value <= 1 ) - { - idx = 0; - } - else if ( value == 2 ) - { - idx = 1; - } - else if ( value == 3 ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; - } - - value = (extData & DISP_REG_SCFG_EXT_DMAC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_AES_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SD1_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SD2_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MIC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_I2S_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_I2C_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_GPIO_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MC_B_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_WRAM_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_PUENABLE_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_CFG_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; - } - - // ボンディング、rom状態、旧無線レジスタ ( 1byte ) - { - u8 regData = gArm7SCFGShared[HWi_WSYS08_OFFSET]; - - value = (regData & HWi_WSYS08_OP_OPT_MASK) >> HWi_WSYS08_OP_OPT_SHIFT ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; - - // rom制御 - value = ( regData & HWi_WSYS08_ROM_ARM9SEC_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].str.sjis = s_strAccess[ !value ] ; - - value = ( regData & HWi_WSYS08_ROM_ARM9RSEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].str.sjis = s_strRomMode[value] ; - - value = ( regData & HWi_WSYS08_ROM_ARM7RSEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].str.sjis = s_strRomMode[value] ; - - value = ( regData & HWi_WSYS08_ROM_ARM7FUSE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].str.sjis = s_strAccess[ !value ] ; - - // - value = ( regData & HWi_WSYS08_WL_OFFB_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].str.sjis = s_strEnable[value] ; - - } - - // jtag、clkレジスタ ( 1byte ) - { - u8 regData = gArm7SCFGShared[HWi_WSYS09_OFFSET]; - - value = ( regData & HWi_WSYS09_JTAG_ARM7SEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].str.sjis = s_strEnable[value] ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].numLines = 2; - - value = ( regData & HWi_WSYS09_JTAG_CPUJE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].str.sjis = s_strEnable[value] ; - - value = ( regData & HWi_WSYS09_JTAG_DSPJE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].str.sjis = s_strEnable[value] ; - - value = ( regData & HWi_WSYS09_CLK_SD1HCLK_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_SD2HCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_AESHCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_WRAMHCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_SNDMCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].str.sjis = s_strSupply[value] ; - } - - -} - -void getSysmenuInfo( void ) -{ - u8 *pBuffer = (u8*) Alloc (NA_VERSION_DATA_WORK_SIZE); - - if( !NA_LoadVersionDataArchive( pBuffer, NA_VERSION_DATA_WORK_SIZE ) ) { - return ; - } - - // バージョンの読み出し - { - FSFile file; - SystemMenuVersion bufVersion; - s32 len; - - FS_InitFile(&file); - - if (!FS_OpenFileEx(&file, FS_VERSION_FILE, FS_FILEMODE_R)) - { - return ; - } - - len = FS_ReadFile(&file, &bufVersion, sizeof(SystemMenuVersion)); - FS_CloseFile(&file); - - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].iValue = (int)( bufVersion.major << 16 | bufVersion.minor ); - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].isNumData = TRUE; - - wcsncpy( gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].str.utf, bufVersion.str, TWL_SYSMENU_VER_STR_LEN ); - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].isSjis = FALSE; - - } - - // EULA URLの読み出し - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if (!FS_OpenFileEx(&file, FS_EULA_URL_FILE, FS_FILEMODE_R)) { - return; - } - - len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_EULA_URL].str.sjis , TWL_EULA_URL_LEN) ; - FS_CloseFile(&file); - - } - - // NUP HOST NAME の読み出し - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if (!FS_OpenFileEx(&file, FS_NUP_HOSTNAME_FILE, FS_FILEMODE_R)) { - return; - } - - len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_NUP_HOST].str.sjis, TWL_NUP_HOSTNAME_LEN); - FS_CloseFile(&file); - - } - - // タイムスタンプ の読み出し - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if (!FS_OpenFileEx(&file, FS_TIMESTAMP_FILE, FS_FILEMODE_R)) { - return ; - } - - len = FS_ReadFile(&file, &gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].iValue, sizeof(u32) ); - FS_CloseFile(&file); - - gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].isNumData = TRUE; - } - - // SystemMenuVersionのアンマウント - if( !NA_UnloadVersionDataArchive() ) { - return; - } - - Free(pBuffer); - -} - -void getVersions( void ) -{ - -#ifdef SEA_ENABLE - getWirelessVersion(); - getContentsVersion(); -#endif - - getSharedFontVersion(); - -} - -void getWirelessVersion( void ) -// 無線ファームウェアのバージョンを取得する -{ - FSFile file; - char filePath[NAM_PATH_LEN+1]; - char filebuf[2]; // FWバージョンはMajor, Minorそれぞれ1バイトずつ - int res; - - FS_InitFile( &file ); - NAM_GetTitleBootContentPath( filePath , WL_TITLEID); // 無線ファームのファイルパスを取得 - OS_TPrintf("wireless firm path: %s\n", filePath ) ; - res = FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ); - - // バージョン情報の読み取り - FS_SeekFile( &file, 0xA0, FS_SEEK_SET ); // ファイルの0xA0から2バイトがバージョン情報 - res = FS_ReadFile( &file, filebuf, 2 ); - SDK_ASSERT( res == 2 ); - - gAllInfo[MENU_VERSION][VERSION_WIRELESS].iValue = filebuf[0] *100 + filebuf[1]; - gAllInfo[MENU_VERSION][VERSION_WIRELESS].isNumData = TRUE; - -} - -void getSharedFontVersion( void ) -{ - u32 time; - - OS_InitSharedFont(); - time = OS_GetSharedFontTimestamp(); - OS_TPrintf("SharedFont Time Stamp %08lx\n", time ); - gAllInfo[MENU_VERSION][VERSION_FONT].iValue = (int) time; - gAllInfo[MENU_VERSION][VERSION_FONT].isNumData = TRUE; -} - -void getContentsVersion( void ) -// コンテンツリストをもとに各コンテンツのタイトルIDとバージョンを取得 -{ - NAMTitleInfo info; - int i; - - gNumContents = NAM_GetNumTitles(); - OS_TPrintf(" numContents: %d\n", gNumContents); - - if( gContentsTitle == NULL ) - { - // 初回処理の時はバッファを確保 - gContentsTitle = (NAMTitleId*) Alloc( sizeof(NAMTitleId) * gNumContents ); - gContentsVersion = (u16*) Alloc( sizeof(u16) * (u32)gNumContents); - SDK_ASSERT( gContentsTitle ); - SDK_ASSERT( gContentsVersion ); - } - - NAM_GetTitleList( gContentsTitle, (u32)gNumContents); - SDK_POINTER_ASSERT( gContentsTitle ); - - for( i=0; i