mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
<about sysmenu>に鍵の署名情報を追加。
肥大化したviewSystemInfo.cを項目ごとにとりあえず分割。 SDK更新に伴ってNAMライブラリが動作しなくなったので、起動時にcryptoにアロケータを渡すようにした。 git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2001 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
ffad1457c8
commit
f03f62cb19
@ -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 \
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -176,6 +176,7 @@ Property
|
||||
#DSWirelessIcon FALSE
|
||||
LockSCFG FALSE
|
||||
|
||||
HwAESSlotA_SSLClientCert TRUE
|
||||
|
||||
###
|
||||
#### END
|
||||
|
||||
@ -19,7 +19,9 @@
|
||||
#include <wchar.h>
|
||||
#include <string.h>
|
||||
#include <twl/os/common/ownerInfoEx_private.h>
|
||||
|
||||
#include "drawFunc.h"
|
||||
#include "getInformation.h"
|
||||
#include "viewSystemInfo.h"
|
||||
#include "misc.h"
|
||||
#include "strResource.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
|
||||
103
build/tests/DisplaySystemInformation/ARM9/src/get_hw.c
Normal file
103
build/tests/DisplaySystemInformation/ARM9/src/get_hw.c
Normal file
@ -0,0 +1,103 @@
|
||||
#include <twl.h>
|
||||
//#include <wchar.h>
|
||||
#include <twl/os/common/ownerInfoEx_private.h>
|
||||
#include <twl/lcfg.h>
|
||||
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
}
|
||||
113
build/tests/DisplaySystemInformation/ARM9/src/get_other.c
Normal file
113
build/tests/DisplaySystemInformation/ARM9/src/get_other.c
Normal file
@ -0,0 +1,113 @@
|
||||
#include <twl.h>
|
||||
#include <twl/lcfg.h>
|
||||
|
||||
#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" );
|
||||
}
|
||||
}
|
||||
}
|
||||
37
build/tests/DisplaySystemInformation/ARM9/src/get_owner.c
Normal file
37
build/tests/DisplaySystemInformation/ARM9/src/get_owner.c
Normal file
@ -0,0 +1,37 @@
|
||||
#include <twl.h>
|
||||
#include <twl/os/common/ownerInfoEx_private.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
53
build/tests/DisplaySystemInformation/ARM9/src/get_parental.c
Normal file
53
build/tests/DisplaySystemInformation/ARM9/src/get_parental.c
Normal file
@ -0,0 +1,53 @@
|
||||
#include <twl.h>
|
||||
#include <wchar.h>
|
||||
#include <twl/lcfg.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
704
build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c
Normal file
704
build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c
Normal file
@ -0,0 +1,704 @@
|
||||
|
||||
#include <twl.h>
|
||||
#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] ;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
236
build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c
Normal file
236
build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c
Normal file
@ -0,0 +1,236 @@
|
||||
#include <twl.h>
|
||||
#include <twl/os/common/sharedFont.h>
|
||||
#include <twl/nam.h>
|
||||
#include <twl/na.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#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);
|
||||
|
||||
}
|
||||
@ -0,0 +1,94 @@
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/os/common/sharedFont.h>
|
||||
#include <twl/nam.h>
|
||||
|
||||
#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<gNumContents; i++ )
|
||||
{
|
||||
NAM_ReadTitleInfo( &info, gContentsTitle[i] );
|
||||
// gContentsTitle[i] = info.titleId;
|
||||
gContentsVersion[i] = info.version;
|
||||
}
|
||||
|
||||
s_numMenu[MENU_VERSION] = gNumContents + VERSIONMENU_SIZE;
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/sea.h>
|
||||
#include <nitro/crypto.h>
|
||||
#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");
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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[];
|
||||
|
||||
46
build/tests/DisplaySystemInformation/ARM9/src/util.c
Normal file
46
build/tests/DisplaySystemInformation/ARM9/src/util.c
Normal file
@ -0,0 +1,46 @@
|
||||
#include <twl.h>
|
||||
#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] ) );
|
||||
}
|
||||
}
|
||||
10
build/tests/DisplaySystemInformation/ARM9/src/util.h
Normal file
10
build/tests/DisplaySystemInformation/ARM9/src/util.h
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
#ifndef __DISPLAY_INFO_UTIL__
|
||||
#define __DISPLAY_INFO_UTIL__
|
||||
|
||||
#include <twl.h>
|
||||
|
||||
void putBinary( u8 *src, u32 size );
|
||||
void strToHexa( char *src, u8 *dst, u32 length );
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@ -22,6 +22,8 @@
|
||||
#include "drawFunc.h"
|
||||
#include "address.h"
|
||||
|
||||
#define DISPINFO_BUFSIZE 64
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@ -73,10 +75,6 @@ typedef struct DispInfoEntry
|
||||
// 各種本体、ユーザ情報
|
||||
extern DispInfoEntry* gAllInfo[ROOTMENU_SIZE];
|
||||
|
||||
extern s32 gNumContents;
|
||||
extern OSTitleId *gContentsTitle;
|
||||
extern u16 *gContentsVersion;
|
||||
|
||||
extern u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE]; // ARM7からのデータ取得用バッファ
|
||||
extern u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE]; // ARM7からのデータ取得用バッファ
|
||||
|
||||
@ -87,9 +85,6 @@ void displayInfoInit( void );
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user