メニュー周りを再構成。

LCFGから取得する項目を何点か追加。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1945 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
aoki_ryoma 2008-07-18 07:41:21 +00:00
parent 2b493cc966
commit 0c707ec625
8 changed files with 243 additions and 216 deletions

View File

@ -1,93 +1,32 @@
#/*---------------------------------------------------------------------------* #! make -f
# Project: TwlIPL - tests - DisplaySystemInformation
# File: makefile
#
# Copyright **** Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: $
# $Rev$
# $Author$
# *---------------------------------------------------------------------------*/
TARGET_FIRM = SYSTEMMENU
TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED
# •ªŠò<C5A0>ðŒ<C3B0>
DEFAULT_COMP_ARM7 = armadillo
ROM_SPEC = main_$(DEFAULT_COMP_ARM7).rsf
DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation)
SUBDIRS =
MISC_DIR = ../../../systemMenu_RED/misc
SRCS = main.c viewSystemInfo.c drawFunc.c control.c\
strResource.c misc.c \
$(MISC_DIR)/src/cmn.c
LINCLUDES += $(MISC_DIR)/include \
$(DISP_INFO)/common/include
SYSMENU_LIBS = \
liblcfg$(TWL_LIBSUFFIX).a \
libsysmenu$(TWL_LIBSUFFIX).a \
libsysmmcu$(TWL_LIBSUFFIX).a \
libsysmutil$(TWL_LIBSUFFIX).a \
libboot$(TWL_LIBSUFFIX).a \
libds$(TWL_LIBSUFFIX).a \
libhotsw$(TWL_LIBSUFFIX).a \
libdht$(TWL_LIBSUFFIX).a \
libreloc_info$(TWL_LIBSUFFIX).a \
libnamut$(TWL_LIBSUFFIX).a \
libsharedfont_launcher$(TWL_LIBSUFFIX).a \
WDS$(TWL_LIBSUFFIX).a
SDK_APPEND_LIBS = \
libes$(TWL_LIBSUFFIX).a \
libboc$(TWL_LIBSUFFIX).a \
libsfs$(TWL_LIBSUFFIX).a \
libnam$(TWL_LIBSUFFIX).a \
libsea$(TWL_LIBSUFFIX).a \
libreboot$(TWL_LIBSUFFIX).a \
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
TARGET_BIN = DisplaySystemInfo.srl
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7)
DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
MACRO_FLAGS += -DCOMP_ARMADILLO=TRUE
ifeq ($(DEFAULTCOMP_ARM7), armadillo)
MACRO_FLAGS += -DCOMP_ARMADILLO
endif
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
do-build: $(TARGETS) # Project: TwlSDK - demos - simpleShoot-1
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Date:: $
# $Rev$
# $Author$
#----------------------------------------------------------------------------
SUBDIRS =
SUBMAKES = Makefile.racoon_SCFG Makefile.racoon_noSCFG Makefile.armadillo
include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
do-build : $(TARGETS)
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules
#include $(TWLSDK_ROOT)/build/buildtools/modulerules
#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules
#----------------------------------------------------------------------------
#===== End of Makefile ===== #===== End of Makefile =====

View File

@ -210,6 +210,7 @@ BOOL control( int *menu, int *line, int *changeLine, int *changeMode )
case MENU_ROOT : case MENU_ROOT :
case MENU_OWNER: case MENU_OWNER:
case MENU_PARENTAL: case MENU_PARENTAL:
case MENU_OTHER:
case MENU_NORMAL_HW: case MENU_NORMAL_HW:
case MENU_SECURE_HW: case MENU_SECURE_HW:
case MENU_SCFG_ARM7: case MENU_SCFG_ARM7:

View File

@ -177,15 +177,23 @@ void printKindName( int menu, int entryLine, int drawOffset, int selected )
void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry ) void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry )
{ {
int txtColor = TXT_COLOR_BLACK;
if( entry->fromLCFG )
{
// LCFG経由で取得したデータは青にする
txtColor = TXT_COLOR_BLUE;
}
// 特殊描画を行う必要がある場合の処理 // 特殊描画を行う必要がある場合の処理
if( menu == MENU_OWNER && entryLine == OWNER_COLOR ) if( menu == MENU_OWNER && entryLine == OWNER_COLOR )
{ {
PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawOffset, TXT_UCOLOR_G0 + entry->iValue , "" ); PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawOffset, TXT_UCOLOR_G0 + entry->iValue , "" );
printData( VALUE_LEFT + LINE_OFFSET , VALUE_UP + LINE_OFFSET*drawOffset, TXT_COLOR_BLACK, entry ); printData( VALUE_LEFT + LINE_OFFSET , VALUE_UP + LINE_OFFSET*drawOffset, txtColor, entry );
return; return;
} }
if( menu == MENU_SECURE_HW && entryLine == SECURE_HW_UNIQUE_ID ) if( menu == MENU_NORMAL_HW && entryLine == NORMAL_HW_UNIQUE_ID )
{ {
printUniqueID( drawOffset, entry->str.sjis ); printUniqueID( drawOffset, entry->str.sjis );
entry->numLines = 4; entry->numLines = 4;
@ -194,22 +202,20 @@ void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry )
if( menu == MENU_PARENTAL && entryLine == PARENTAL_PASSWORD ) if( menu == MENU_PARENTAL && entryLine == PARENTAL_PASSWORD )
{ {
PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, TXT_COLOR_BLACK, "%04d", entry->iValue ); PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, "%04d", entry->iValue );
return; return;
} }
// 通常の値の描画 // 通常の値の描画
if( entry->isAligned ) if( entry->isAligned )
{ {
printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, TXT_COLOR_BLACK, entry ); printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, entry );
} }
else else
{ {
// 項目名が長くて字下げが必要な場合 // 項目名が長くて字下げが必要な場合
printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET* ( drawOffset + 1 ), TXT_COLOR_BLACK, entry ); printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET* ( drawOffset + 1 ), txtColor, entry );
} }
} }
@ -495,15 +501,14 @@ void drawMenu( int menu, int line, int changeLine, BOOL isChangeMode )
if( menu == MENU_VERSION ) if( menu == MENU_VERSION )
{ {
drawVersion( gDrawIdx[menu], line ); drawVersion( gDrawIdx[menu], line );
return;
} }
for( i = gDrawIdx[menu] ; i < s_numMenu[menu] && lineNum < DISP_NUM_LINES ; i++ ) for( i = gDrawIdx[menu] ; i < s_numMenu[menu] && lineNum < DISP_NUM_LINES ; i++ )
{ {
// 項目名の描画 // 項目名の描画
printKindName( menu, i, lineNum, line ); printKindName( menu, i, lineNum, line );
// 値の描画 // 値の描画
if( menu == MENU_SCFG_ARM7 && !gSelectedARM7SCFGReg ) if( menu == MENU_SCFG_ARM7 && !gSelectedARM7SCFGReg )
{ {

View File

@ -11,8 +11,8 @@
in whole or in part, without the prior written consent of Nintendo. in whole or in part, without the prior written consent of Nintendo.
$Date:: $ $Date:: $
$Rev:$ $Rev$
$Author:$ $Author$
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/

View File

@ -18,20 +18,11 @@
#include "drawFunc.h" #include "drawFunc.h"
const int s_pageOffset[ROOTMENU_SIZE][MAXPAGE] = {
{ 0, OWNERMENU_SIZE }, // owner
{ 0, 7, PARENTALMENU_SIZE }, // parental
{ 0, NORMAL_HW_MENU_SIZE }, // normal hw
{ 0, SECURE_HW_MENU_SIZE }, // secure hw
{ 0, SCFG_ARM7_MENU_SIZE }, // scfg arm7
{ 0, SCFG_ARM9_MENU_SIZE }, // scfg arm9
{ 0, VERSIONMENU_SIZE } // fuse
};
// VERSION_MENU_SIZEだけコンテンツ数に応じて可変なのでconstではない // VERSION_MENU_SIZEだけコンテンツ数に応じて可変なのでconstではない
int s_numMenu[] = { int s_numMenu[] = {
OWNERMENU_SIZE, OWNERMENU_SIZE,
PARENTALMENU_SIZE, PARENTALMENU_SIZE,
OTHERMENU_SIZE,
NORMAL_HW_MENU_SIZE, NORMAL_HW_MENU_SIZE,
SECURE_HW_MENU_SIZE, SECURE_HW_MENU_SIZE,
SCFG_ARM7_MENU_SIZE, SCFG_ARM7_MENU_SIZE,
@ -39,7 +30,6 @@ int s_numMenu[] = {
VERSIONMENU_SIZE, VERSIONMENU_SIZE,
0, 0,
0, 0,
0,
ROOTMENU_SIZE ROOTMENU_SIZE
}; };
@ -67,16 +57,16 @@ const char *s_strSCFGViewMode[] = {
}; };
const char *s_strRootMenu[] = { const char *s_strRootMenu[] = {
"< Owner >", "<EFBFBD>ƒOwner<EFBFBD>",
"< Parental control >", "<EFBFBD>ƒParental control<6F>",
"< Normal Hardware Info >", "<EFBFBD>ƒOther Info<66>",
"< Secure Hardware Info >", "<EFBFBD>ƒNormal Hardware Info<66>",
"< SCFG Info (ARM7 side) >", "<EFBFBD>ƒSecure Hardware Info<66>",
"< SCFG Info (ARM9 side) >", "<EFBFBD>ƒSCFG Info (ARM7 side)<29>",
"< Content Version >", "<EFBFBD>ƒSCFG Info (ARM9 side)<29>",
"<EFBFBD>ƒContent Version<6F>",
"Reset HW Setting to Default", "Reset HW Setting to Default",
"break HW Setting", "break HW Setting"
"Reset"
}; };
const char *s_strOwnerMenu[] = { const char *s_strOwnerMenu[] = {
@ -103,23 +93,32 @@ const char *s_strParentalMenu[] = {
"Answer" "Answer"
}; };
const char *s_strNormalHWMenu[] = { const char *s_strOtherMenu[] = {
"Wireless",
"RTC Offset",
"Agree EULA", "Agree EULA",
"Eula Version" "EULA Version",
"Wireless",
"Finished Initial Setting",
"Finished Initial Setting(Launcher)",
"Broken Setting Flag",
"Installed Softbox Count",
"Free Softbox Count",
"Last Boot Soft Index",
"Last Boot Soft Platform",
"Last Boot Soft ID"
};
const char *s_strNormalHWMenu[] = {
"RTC Offset",
"Unique ID"
}; };
const char *s_strSecureHWMenu[] = { const char *s_strSecureHWMenu[] = {
"Force Disable Wireless", "Force Disable Wireless",
"Region", "Region",
"Unique ID",
"Serial No", "Serial No",
"Language Bitmap", "Language Bitmap",
"Fuse Data", "Fuse Data",
"Finished Initial Setting", "Launcher TitleID Lo"
"Finished Initial Setting(Launcher)",
"Broken Setting Flag"
}; };
const char *s_strSCFGArm9Menu[] = { const char *s_strSCFGArm9Menu[] = {
@ -225,6 +224,7 @@ const char *s_strVersionMenu[] = {
const char **s_strMetaMenu[] = { const char **s_strMetaMenu[] = {
s_strOwnerMenu, s_strOwnerMenu,
s_strParentalMenu, s_strParentalMenu,
s_strOtherMenu,
s_strNormalHWMenu, s_strNormalHWMenu,
s_strSecureHWMenu, s_strSecureHWMenu,
s_strSCFGArm7Menu, s_strSCFGArm7Menu,

View File

@ -18,20 +18,19 @@
#ifndef __DISPLAY_INFO_RESOURCE__ #ifndef __DISPLAY_INFO_RESOURCE__
#define __DISPLAY_INFO_RESOURCE__ #define __DISPLAY_INFO_RESOURCE__
// ƒ<>ƒjƒ…<C692>[ID // ƒ<>ƒjƒ…<C692>[ID
#define MENU_ROOT 10 #define MENU_ROOT 11
#define MENU_OWNER 0 #define MENU_OWNER 0
#define MENU_PARENTAL 1 #define MENU_PARENTAL 1
#define MENU_NORMAL_HW 2 #define MENU_OTHER 2
#define MENU_SECURE_HW 3 #define MENU_NORMAL_HW 3
#define MENU_SCFG_ARM7 4 #define MENU_SECURE_HW 4
#define MENU_SCFG_ARM9 5 #define MENU_SCFG_ARM7 5
#define MENU_VERSION 6 #define MENU_SCFG_ARM9 6
#define MENU_RESET_INFO 7 #define MENU_VERSION 7
#define MENU_BREAK_DATA 8 #define MENU_RESET_INFO 8
#define MENU_RESET 9 #define MENU_BREAK_DATA 9
#define MENU_RESET 10
// <20>s”Ô<E2809D> // <20>s”Ô<E2809D>
#define OWNER_LANGUAGE 0 #define OWNER_LANGUAGE 0
@ -54,20 +53,27 @@
#define PARENTAL_QUESTION_ID 10 #define PARENTAL_QUESTION_ID 10
#define PARENTAL_ANSWER 11 #define PARENTAL_ANSWER 11
#define NORMAL_HW_WIRELESS 0 #define OTHER_AGREE_EULA 0
#define NORMAL_HW_RTC_OFFSET 1 #define OTHER_EULA_VERSION 1
#define NORMAL_HW_AGREE_EULA 2 #define OTHER_WIRELESS 2
#define NORMAL_HW_EULA_VERSION 3 #define OTHER_INITIAL_SETTINGS 3
#define OTHER_INITIAL_LAUNCHER 4
#define OTHER_BROKEN_SETTINGS 5
#define OTHER_LCFG_INSTALLED_SOFTBOX 6
#define OTHER_LCFG_FREE_SOFTBOX 7
#define OTHER_LCFG_LASTBOOT_IDX 8
#define OTHER_LCFG_LASTBOOT_PLATFORM 9
#define OTHER_LCFG_LASTBOOT_ID 10
#define NORMAL_HW_RTC_OFFSET 0
#define NORMAL_HW_UNIQUE_ID 1
#define SECURE_HW_FORCE_DISABLE 0 #define SECURE_HW_FORCE_DISABLE 0
#define SECURE_HW_REGION 1 #define SECURE_HW_REGION 1
#define SECURE_HW_UNIQUE_ID 2 #define SECURE_HW_SERIAL 2
#define SECURE_HW_SERIAL 3 #define SECURE_HW_LANGUAGE 3
#define SECURE_HW_LANGUAGE 4 #define SECURE_HW_FUSE 4
#define SECURE_HW_FUSE 5 #define SECURE_HW_TITLEID_LO 5
#define SECURE_HW_INITIAL_SETTINGS 6
#define SECURE_HW_INITIAL_LAUNCHER 7
#define SECURE_HW_BROKEN_SETTINGS 8
#define SCFG_ARM9_ROM_SEC 0 #define SCFG_ARM9_ROM_SEC 0
#define SCFG_ARM9_ROM_STATE 1 #define SCFG_ARM9_ROM_STATE 1
@ -153,8 +159,9 @@
#define ROOTMENU_SIZE 10 #define ROOTMENU_SIZE 10
#define OWNERMENU_SIZE 6 #define OWNERMENU_SIZE 6
#define PARENTALMENU_SIZE 12 #define PARENTALMENU_SIZE 12
#define NORMAL_HW_MENU_SIZE 4 #define OTHERMENU_SIZE 11
#define SECURE_HW_MENU_SIZE 9 #define NORMAL_HW_MENU_SIZE 2
#define SECURE_HW_MENU_SIZE 6
#define SCFG_ARM7_MENU_SIZE 47 #define SCFG_ARM7_MENU_SIZE 47
#define SCFG_ARM9_MENU_SIZE 24 #define SCFG_ARM9_MENU_SIZE 24
#define VERSIONMENU_SIZE 3 #define VERSIONMENU_SIZE 3

View File

@ -35,6 +35,7 @@ void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis );
void printAllInfo ( void ); void printAllInfo ( void );
void getOwnerInfo( void ); void getOwnerInfo( void );
void getParentalInfo( void ); void getParentalInfo( void );
void getOtherInfo();
void getNormalHWInfo( void ); void getNormalHWInfo( void );
void getSecureHWInfo( void ); void getSecureHWInfo( void );
void getSCFGARM9Info( void ); void getSCFGARM9Info( void );
@ -59,6 +60,8 @@ u16 *gContentsVersion; // gContentsTitle
u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE]; u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE];
u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE]; u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE];
// LCFGデータを読み込むためのバッファ
u8 *bufLCFG;
/* static data ---------------------------------- */ /* static data ---------------------------------- */
@ -94,6 +97,7 @@ void displayInfoMain( void )
if( ccResult == CHANGE_VALUE_CHANGED ) if( ccResult == CHANGE_VALUE_CHANGED )
{ {
// 値が更新されたときは全部取得しなおす // 値が更新されたときは全部取得しなおす
LCFG_WriteTWLSettings( (u8 (*) [LCFG_WRITE_TEMP] ) bufLCFG );
getAllInfo(); getAllInfo();
} }
@ -119,10 +123,12 @@ void initInfo( void )
infoAlloc( gAllInfo[MENU_OWNER], OWNER_BIRTHDAY, DISPINFO_BUFSIZE , TRUE ); infoAlloc( gAllInfo[MENU_OWNER], OWNER_BIRTHDAY, DISPINFO_BUFSIZE , TRUE );
infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_UNIQUE_ID, OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 , 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 );
infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_SERIAL , OS_TWL_HWINFO_SERIALNO_LEN_MAX + 1, TRUE ); infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_SERIAL , OS_TWL_HWINFO_SERIALNO_LEN_MAX + 1, TRUE );
infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_LANGUAGE, DISPINFO_BUFSIZE , TRUE ); infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_LANGUAGE, DISPINFO_BUFSIZE , TRUE );
infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_FUSE, DISPINFO_BUFSIZE , TRUE ); infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_FUSE, DISPINFO_BUFSIZE , TRUE );
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_CC, DISPINFO_BUFSIZE , TRUE );
infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CA, DISPINFO_BUFSIZE , TRUE ); infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CA, DISPINFO_BUFSIZE , TRUE );
@ -133,7 +139,6 @@ void initInfo( void )
OS_TPrintf( "information alloc succeeded\n" ); OS_TPrintf( "information alloc succeeded\n" );
} }
void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis ) void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis )
// initInfoの作業用関数。isSjis=trueだとcharを、falseならu16を割り当てる // initInfoの作業用関数。isSjis=trueだとcharを、falseならu16を割り当てる
@ -164,6 +169,7 @@ void getAllInfo( void )
getOwnerInfo(); getOwnerInfo();
getParentalInfo(); getParentalInfo();
getOtherInfo();
getNormalHWInfo(); getNormalHWInfo();
getSecureHWInfo(); getSecureHWInfo();
getSCFGARM7InfoReg(); getSCFGARM7InfoReg();
@ -216,9 +222,14 @@ void displayInfoInit( void )
gAllInfo[loop1][loop2].isAligned = TRUE; gAllInfo[loop1][loop2].isAligned = TRUE;
gAllInfo[loop1][loop2].str.sjis = s_strNA; gAllInfo[loop1][loop2].str.sjis = s_strNA;
gAllInfo[loop1][loop2].changable = FALSE; gAllInfo[loop1][loop2].changable = FALSE;
gAllInfo[loop1][loop2].fromLCFG = FALSE;
} }
} }
bufLCFG = (u8*) Alloc ( LCFG_READ_TEMP );
SDK_ASSERT( bufLCFG );
LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ]) bufLCFG );
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
GX_DispOn(); GX_DispOn();
GXS_DispOn(); GXS_DispOn();
@ -325,23 +336,120 @@ void getParentalInfo( void )
gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].isSjis = FALSE; 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();
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;
snprintf( gAllInfo[MENU_OTHER][OTHER_LCFG_LASTBOOT_ID].str.sjis, DISPINFO_BUFSIZE, "%016llx", buf );
}
}
void getNormalHWInfo( void ) void getNormalHWInfo( void )
{ {
int value; int value;
value = OS_IsAvailableWireless(); value = (int) OS_GetOwnerRtcOffset();
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_WIRELESS].iValue = value; gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].iValue = (int) value;
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_WIRELESS].str.sjis = s_strEnable[value];
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].iValue = (int) OS_GetOwnerRtcOffset();
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].isNumData = TRUE; gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_OFFSET].isNumData = TRUE;
value = OS_IsAgreeEULA(); {
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_AGREE_EULA].iValue = value; int i;
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_AGREE_EULA].str.sjis = s_strBool[value]; char ascii[] = "0123456789abcdef";
const u8 *unq = OS_GetMovableUniqueIDPtr();
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_EULA_VERSION].iValue = OS_GetAgreedEULAVersion(); // 16進で1バイトずつ詰めていく
gAllInfo[MENU_NORMAL_HW][NORMAL_HW_EULA_VERSION].isNumData = TRUE; // バッファが長さの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 ) void getSecureHWInfo( void )
@ -357,24 +465,7 @@ void getSecureHWInfo( void )
value = OS_GetRegion(); value = OS_GetRegion();
gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].iValue = value; gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].iValue = value;
gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].str.sjis = s_strRegion[ value ]; gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].str.sjis = s_strRegion[ value ];
{
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_SECURE_HW][SECURE_HW_UNIQUE_ID].str.sjis[i] = ascii[(*unq>>4) & 0x0f];
gAllInfo[MENU_SECURE_HW][SECURE_HW_UNIQUE_ID].str.sjis[i+1] = ascii[*unq & 0x0f];
gAllInfo[MENU_SECURE_HW][SECURE_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);
}
}
{ {
u8 serialBuf[OS_TWL_HWINFO_SERIALNO_LEN_MAX]; u8 serialBuf[OS_TWL_HWINFO_SERIALNO_LEN_MAX];
OS_GetSerialNo( serialBuf ); OS_GetSerialNo( serialBuf );
@ -398,38 +489,21 @@ void getSecureHWInfo( void )
} }
value = LCFG_TSD_IsFinishedInitialSetting(); // ランチャのタイトルIDLoの取得
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].iValue = value; if( LCFG_ReadHWSecureInfo() )
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].str.sjis = s_strBool[ value ]; {
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].changable = TRUE; const u8 *titleIDLo = LCFG_THW_GetLauncherTitleID_LoPtr();
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting; value = ( int )( titleIDLo[0] << 8*3 |
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].argType = ARG_BOOL; titleIDLo[1] << 8*2 |
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].kindNameList = s_strBool; titleIDLo[2] << 8*1 |
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].numKindName = 2; titleIDLo[3] << 8*0 );
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].isAligned = FALSE;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_SETTINGS].numLines = 2; gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].iValue = value;
gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].isNumData = TRUE;;
value = LCFG_TSD_IsFinishedInitialSetting_Launcher(); gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].isAligned = FALSE;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].iValue = value; gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].numLines = 2;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].str.sjis = s_strBool[ value ]; gAllInfo[MENU_SECURE_HW][SECURE_HW_TITLEID_LO].fromLCFG = TRUE;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].changable = TRUE; }
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting_Launcher;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].argType = ARG_BOOL;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].kindNameList = s_strBool;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].numKindName = 2;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].isAligned = FALSE;
gAllInfo[MENU_SECURE_HW][SECURE_HW_INITIAL_LAUNCHER].numLines = 2;
value = LCFG_TSD_IsFinishedBrokenTWLSettings();
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].iValue = value;
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].str.sjis = s_strBool[ value ];
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].changable = TRUE;
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedBrokenTWLSettings;
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].argType = ARG_BOOL;
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].kindNameList = s_strBool;
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].numKindName = 2;
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].isAligned = FALSE;
gAllInfo[MENU_SECURE_HW][SECURE_HW_BROKEN_SETTINGS].numLines = 2;
} }

View File

@ -11,8 +11,8 @@
in whole or in part, without the prior written consent of Nintendo. in whole or in part, without the prior written consent of Nintendo.
$Date:: $ $Date:: $
$Rev:$ $Rev$
$Author:$ $Author$
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#ifndef __LOAD_VIEW_INFO__ #ifndef __LOAD_VIEW_INFO__
@ -39,6 +39,7 @@ typedef struct DispInfoEntry
BOOL isNumData; // 表示するときは数値データか文字列データか BOOL isNumData; // 表示するときは数値データか文字列データか
BOOL isSjis; // UTF16で描画するデータだけFALSE isNumData=TRUEなら未定義 BOOL isSjis; // UTF16で描画するデータだけFALSE isNumData=TRUEなら未定義
BOOL isAligned; // 一列に表示できるならTRUE、字下げが必要ならFALSE BOOL isAligned; // 一列に表示できるならTRUE、字下げが必要ならFALSE
BOOL fromLCFG; // LCFGから取得したデータは色つけて表示
int numLines; // 項目名、項目内容を表示するのに必要な行数 int numLines; // 項目名、項目内容を表示するのに必要な行数
const char *kind; // 項目名 const char *kind; // 項目名