From fa82aa1ce46d6cef8c6ad227a46085da254d857e Mon Sep 17 00:00:00 2001 From: aoki_ryoma Date: Tue, 15 Jul 2008 08:14:20 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=90=E3=82=B0=E3=83=95=E3=82=A3=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=B9=E3=80=82=E3=83=AC=E3=82=B8=E3=82=B9=E3=82=BF?= =?UTF-8?q?=E8=A1=A8=E7=A4=BA=E3=81=AE=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1900 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../DisplaySystemInformation/ARM7/Makefile | 13 +- .../ARM7/src/overwriteRtc.c | 159 +------ .../ARM9/src/drawFunc.c | 272 ++++++++++-- .../ARM9/src/drawFunc.h | 53 +-- .../ARM9/src/myIoreg_SCFG.h | 42 ++ .../ARM9/src/strResource.c | 74 ++-- .../ARM9/src/strResource.h | 8 +- .../ARM9/src/viewSystemInfo.c | 400 ++++++++++++------ 8 files changed, 622 insertions(+), 399 deletions(-) diff --git a/build/tests/DisplaySystemInformation/ARM7/Makefile b/build/tests/DisplaySystemInformation/ARM7/Makefile index 933bea4e..c42c28e5 100644 --- a/build/tests/DisplaySystemInformation/ARM7/Makefile +++ b/build/tests/DisplaySystemInformation/ARM7/Makefile @@ -24,8 +24,9 @@ TWL_NO_STD_PCHDR = True TWL_CODEGEN ?= ALL #---------------------------------------------------------------------------- +DISP_INFO = $(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation -SRCS = main.c overwriteRtc.c +SRCS = overwriteRtc.c crt0.SCR.c main.c TARGET_NAME = armadillo @@ -34,7 +35,7 @@ LCFILE_SPEC = $(TARGET_NAME).lsf LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template LDRES_TEMPLATE = $(TARGET_NAME).response.template -CRT0_O = crt0.SCR.TWL.o +CRT0_O = $(DISP_INFO)/ARM7/obj/ARM7-TS.LTD/Release/crt0.SCR.o # スタック不足防止の為、インライン展開せずにコンパイルする CCFLAGS_OPT = -O4 -inline off @@ -42,9 +43,10 @@ CCFLAGS_OPT = -O4 -inline off #---------------------------------------------------------------------------- include $(TWLSDK_ROOT)/build/buildtools/commondefs -DISP_INFO = $(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA +TWL_NO_STD_PCHDR = True + +MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' @@ -61,7 +63,8 @@ MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libs #INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \ - $(DISP_INFO)/common/include + $(DISP_INFO)/common/include \ + $(TWLSDK_ROOT)/build/libraries/init/common/include LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ diff --git a/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c b/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c index 179346ea..af04b9d0 100644 --- a/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c +++ b/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c @@ -19,11 +19,9 @@ #include #include #include -#include +#include extern BOOL RTC_IsAvailablePxiCommand(u16 command); -extern void INIT_InitializeScfg(void); - /*---------------------------------------------------------------------------* Name: RTC_IsAvailablePxiCommand @@ -67,158 +65,3 @@ RTC_IsAvailablePxiCommand(u16 command) return FALSE; } -/*---------------------------------------------------------------------------* - Name: INIT_InitializeScfg - - Description: ローダーが行う SCFG ブロックへの設定処理を代行する為の関数。 - crt0 内の弱シンボルを上書きする。 - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ - -asm void -INIT_InitializeScfg(void) -{ - /* A7-SCFG のアクセス可否判定 */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] - ldr r2, =HW_PRV_WRAM_SYSRV - tst r0, #REG_SCFG_EXT_CFG_MASK - beq @invalid - -@valid: - /* ARM7 Secure-ROM 切り離し */ - ldr r1, =REG_A7ROM_ADDR - ldrb r0, [r1] - orr r0, r0, #REG_SCFG_A7ROM_SEC_MASK - strb r0, [r1] - - /* ARM9 Secure-ROM 切り離し */ - ldr r1, =REG_A9ROM_ADDR - ldrb r0, [r1] - orr r0, r0, #REG_SCFG_A9ROM_SEC_MASK - strb r0, [r1] - - /* NITRO 無線を有効化 */ - ldr r1, =REG_WL_ADDR - ldrh r0, [r1] - orr r0, r0, #REG_SCFG_WL_OFFB_MASK - strh r0, [r1] - - /* ROM 設定、NITRO 無線設定、ボンディングオプション情報を WRAM に展開 */ - ldr r3, =REG_OP_ADDR // SCFG-OP - ldrb r1, [r3] - and r0, r1, #(REG_SCFG_OP_OP1_MASK | REG_SCFG_OP_OP0_MASK) - ldr r3, =REG_A9ROM_ADDR // SCFG-ROM:0~7 - ldrb r1, [r3] - and r3, r1, #(REG_SCFG_A9ROM_RSEL_MASK | REG_SCFG_A9ROM_SEC_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS08_ROM_ARM9RSEL_SHIFT - REG_SCFG_A9ROM_RSEL_SHIFT) - ldr r3, =REG_A7ROM_ADDR // SCFG-ROM:8~15 - ldrb r1, [r3] - and r3, r1, #(REG_SCFG_A7ROM_RSEL_MASK | REG_SCFG_A7ROM_FUSE_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS08_ROM_ARM7RSEL_SHIFT - REG_SCFG_A7ROM_RSEL_SHIFT) - ldr r3, =REG_WL_ADDR // SCFG-WL - ldrb r1, [r3] - and r3, r1, #REG_SCFG_WL_OFFB_MASK - orr r0, r0, r3, LSL #(HWi_WSYS08_WL_OFFB_SHIFT - REG_SCFG_WL_OFFB_SHIFT) - strb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - - /* 各新規ブロックへクロックを供給 */ - ldr r1, =REG_CLK_ADDR - ldrh r0, [r1] - ldr r3, =REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK | REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK - orr r0, r0, r3 - strh r0, [r1] - - /* JTAG 情報を WRAM に展開 */ - ldr r3, =REG_JTAG_ADDR // SCFG-JTAG - ldrh r1, [r3] - and r0, r1, #(REG_SCFG_JTAG_CPUJE_MASK | REG_SCFG_JTAG_ARM7SEL_MASK) - and r3, r1, #REG_SCFG_JTAG_DSPJE_MASK - orr r0, r0, r3, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) - strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] - - /* 各拡張機能を有効化 */ - ldr r1, =REG_EXT_ADDR // SCFG_EXT - ldr r0, [r1] - ldr r3, =REG_SCFG_EXT_WRAM_MASK | REG_SCFG_EXT_GPIO_MASK | REG_SCFG_EXT_I2C_MASK | REG_SCFG_EXT_I2S_MASK | REG_SCFG_EXT_MIC_MASK | REG_SCFG_EXT_SD2_MASK | REG_SCFG_EXT_SD1_MASK | REG_SCFG_EXT_AES_MASK | REG_SCFG_EXT_DMAC_MASK - orr r0, r0, r3 - orr r0, r0, #(REG_SCFG_EXT_DSEL_MASK | REG_SCFG_EXT_INTC_MASK) - bic r0, r0, #REG_SCFG_EXT_MC_B_MASK - str r0, [r1] - - /* 各拡張機能の制御設定内容を WRAM に展開 */ - str r0, [r2, #HWi_WSYS04_WRAMOFFSET] - - /* メモリーカード I/F のスロット選択 */ - ldr r1, =REG_MC1_ADDR // SCFG_MC1 - ldr r0, [r1] - bic r0, r0, #REG_MI_MC1_SWP_MASK - str r0, [r1] - - /* WRAM-A/B/C が ARM7 に割り当たっていることを確認 */ - ldr r1, =REG_MBK1_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK2_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK3_ADDR - ldr r0, [r1] - ldr r3, =0x9d999591 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK4_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK5_ADDR - ldr r0, [r1] - ldr r3, =0x9d999591 - cmp r0, r3 - blne INITi_Stop - - /* WRAM-A/B/C のメモリマップを設定 */ - ldr r1, =REG_MBK6_ADDR - ldr r0, =0x080037c0 - str r0, [r1] - ldr r1, =REG_MBK7_ADDR - ldr r0, =0x07c03780 - str r0, [r1] - ldr r1, =REG_MBK8_ADDR - ldr r0, =0x07803740 - str r0, [r1] - ldr r1, =REG_MBK9_ADDR - ldr r0, =0x00ffff0f - str r0, [r1] - - /* A7-SCFG ブロックへのアクセスを無効化 */ -// ldr r1, =REG_EXT_ADDR -// ldr r0, [r1] -// bic r0, r0, #REG_SCFG_EXT_CFG_MASK -// str r0, [r1] - -@invalid: - /* ROM 設定、NITRO 無線設定内容を確認 */ - ldrb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - and r0, r0, #(HWi_WSYS08_ROM_ARM7RSEL_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK | HWi_WSYS08_ROM_ARM9SEC_MASK) - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - blne INITi_Stop - - /* SCFG レジスタ設定情報を共有領域にコピー */ - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c index 188c8306..5afdeec5 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c +++ b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c @@ -11,8 +11,8 @@ in whole or in part, without the prior written consent of Nintendo. $Date:: $ - $Rev:$ - $Author:$ + $Rev$ + $Author$ *---------------------------------------------------------------------------*/ @@ -46,19 +46,19 @@ #define REGISTER_NAME_LEFT 10 #define REGISTER_NAME_UP 15 -#define REGISTER_DATA_LEFT 100 +#define REGISTER_DATA_LEFT 50 #define REGISTER_DATA_UP 15 #define SCROLL_MARGIN 2 // 画面端何行でスクロールするか #define UNIQUE_BUF 12 -#define BINARY_BUF 20 +#define BINARY_BUF 18 /* global variables -------------------- */ static int gDrawIdx[ROOTMENU_SIZE]; // 今何項目目から下を描画しているのか static int gMenuLineSize[ROOTMENU_SIZE] = {};// 各メニューの全体行数 - +static const int gRegisterIdx[2][SCFG_ARM7_MENU_SIZE]; int gMenuKindOffset[ROOTMENU_SIZE][MAXITEM]; /* function prototypes -------------------- */ @@ -66,8 +66,8 @@ int gMenuKindOffset[ROOTMENU_SIZE][MAXITEM]; void printData( int x, int y, int color, DispInfoEntry *entry ); void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry ); void printKindName( int menu, int entryLine, int drawOffset, int selected ); -void printBinary16( int x, int y, u16 value ); -void printBinary32( int x, int y, u32 value ); +void printBinary16( int x, int y, u16 value, int selected, int selectSize ); +void printBinary32( int x, int y, u32 value, int selected, int selectSize ); void drawRegister( int menu, int selected ); void drawOwnerMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset); void drawParentalMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset); @@ -175,6 +175,13 @@ void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry ) return; } + if( menu == MENU_PARENTAL && entryLine == PARENTAL_PASSWORD ) + { + PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, TXT_COLOR_BLACK, "%04d", entry->iValue ); + } + + + // 通常の値の描画 if( entry->isAligned ) @@ -191,9 +198,8 @@ void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry ) void drawRegister( int menu, int selected ) { // SCFGレジスタのバイナリをサブ画面に描画する - u32 regState = 0; - DispInfoEntry *p; - int drawOffset = 0; + int selectRegSize = 1; + int selectBitNum; if( menu == MENU_SCFG_ARM7 && selected < SCFG_ARM7_MI_SC1_CDET) { @@ -202,9 +208,14 @@ void drawRegister( int menu, int selected ) u16 regClk = 0; u16 regJtag = 0; u32 regExt = 0; - p = gAllInfo[MENU_SCFG_ARM7]; + selectBitNum = gRegisterIdx[0][selected]; + regRom = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_ROM_OFFSET - 0x4000] ); + regClk = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); + regJtag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); + regExt = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); + /* regRom =(u32)( p[SCFG_ARM7_ROM_ARM9_SEC].iValue << DISP_REG_SCFG_ROM_ARM9SEL_SHIFT | p[SCFG_ARM7_ROM_ARM9_RSEL].iValue << DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT | @@ -253,46 +264,109 @@ void drawRegister( int menu, int selected ) p[SCFG_ARM7_EXT_PU].iValue << DISP_REG_SCFG_EXT_PUENABLE_SHIFT | p[SCFG_ARM7_EXT_CFG].iValue << DISP_REG_SCFG_EXT_CFG_SHIFT ); + */ + + if( selected == SCFG_ARM7_EXT_PS ) + { + selectRegSize = 2; + } - PutStringUTF16Sub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM7RegisterName[0] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regRom ); - PutStringUTF16Sub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[1] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regClk ); - PutStringUTF16Sub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[2] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regJtag ); - PutStringUTF16Sub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 4*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[3] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 4*LINE_OFFSET, regExt ); + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM7RegisterName[0] ); + printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regRom, selectBitNum, selectRegSize); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[1] ); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regClk, selectBitNum - 32, selectRegSize ); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[2] ); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regJtag, selectBitNum - 48, selectRegSize ); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 4*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[3] ); + printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 4*LINE_OFFSET, regExt, selectBitNum - 64, selectRegSize ); } else if( menu == MENU_SCFG_ARM7 && selected >= SCFG_ARM7_MI_SC1_CDET ) { // SCFGの後半4つ - u32 regMcard1; - u16 regMcard2; - u16 regOldWL; - u16 regOption; + u32 regMc1 = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); + u16 regMc2 = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC2_OFFSET - 0x4000] ); + u16 regOldWL = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000] ); + u16 regOption = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000] ); + selectBitNum = gRegisterIdx[0][selected]; + + if( selected == SCFG_ARM7_MI_SC1_MODE || + selected == SCFG_ARM7_MI_SC2_MODE || + selected == SCFG_ARM7_OP_FORM || + selected == SCFG_ARM7_OP_APP ) + { + selectRegSize = 2; + } + else if( selected == SCFG_ARM7_MI_CC || selected == SCFG_ARM7_MI_CA ) + { + selectRegSize = 16; + } + + // 描画 + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM7RegisterName[4] ); + printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regMc1, selectBitNum - 96, selectRegSize ); + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[5]); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regMc2, selectBitNum - 128, selectRegSize ); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[6] ); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regOldWL, selectBitNum - 144, selectRegSize ); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 4*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[7] ); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 4*LINE_OFFSET, regOption, selectBitNum - 160, selectRegSize ); + } else if( menu == MENU_SCFG_ARM9 ) { + // ARM9側のSCFGレジスタ + u16 regRom = MI_LoadLE16( (void*) (HW_IOREG + REG_A9ROM_OFFSET) ); + u16 regClk = MI_LoadLE16( (void*) (HW_IOREG + REG_CLK_OFFSET) ); + u16 regRst = MI_LoadLE16( (void*) (HW_IOREG + REG_RST_OFFSET) ); + u32 regExt = MI_LoadLE32( (void*) (HW_IOREG + REG_EXT_OFFSET) ); + u16 regMc = MI_LoadLE16( (void*) (HW_IOREG + REG_MC_OFFSET ) ); + selectBitNum = gRegisterIdx[1][selected]; + + if( selected == SCFG_ARM9_PSRAM_BOUNDARY ) + { + selectRegSize = 2; + } + + // 描画 + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM9RegisterName[0] ); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regRom, selectBitNum, selectRegSize ); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[1] ); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + LINE_OFFSET, regClk, selectBitNum - 16, selectRegSize ); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[2] ); + printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regRst, selectBitNum - 32, selectRegSize ); + + PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[3] ); + printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regExt, selectBitNum - 48, selectRegSize ); } } -void printBinary32( int x, int y, u32 value ) +void printBinary32( int x, int y, u32 value, int selected, int selectSize ) { - printBinary16( x, y, (u16)(value >> 16) ); - printBinary16( x, y + LINE_OFFSET, (u16)(value & 0xFF) ); + printBinary16( x, y, (u16)(value >> 16), selected - 16, selectSize ); + printBinary16( x, y + LINE_OFFSET, (u16)(value & 0xFFFF), selected, selectSize ); } -void printBinary16( int x, int y, u16 value ) +void printBinary16( int x, int y, u16 value, int selected, int selectSize ) { + // 16ビットのバイナリをディスプレイに描画 + int i; - u16 buf[BINARY_BUF] = {0}; // 16bit + 3 space + EOS + int bitNum; + u16 buf[BINARY_BUF] = {0}; // 16bit + 1 space + 1 EOS u16 mask = 0x8000; - for( i=0; i> 1; + mask = (u16)( mask >> 1 ); } - buf[20] = L'\0'; + buf[BINARY_BUF] = L'\0'; PutStringUTF16Sub( x, y, TXT_COLOR_BLACK, buf ); + + if( selected >= 16 || selected < 0 ) + { + // 描画レジスタ内に選択項目に対応するビットがなければこれで終わり + return; + } + + // マスクをリセット + mask = 0x8000; + + // 今回の描画レジスタ内に選択項目に対応するビットがあるとき + // そのビットだけ赤字で表示する + for( i = 0, bitNum = 0; bitNum < 16; i++ ) + { + if( i == 8 ) + { + // 8ビット、8ビットの間の空白 + buf[i] = L' '; + continue; + } + + if( selected <= 15 - bitNum && 15 - bitNum < selected + selectSize ) + { + buf[i] = ( value & ( mask >> bitNum )) ? L'1': L'0' ; + } + else + { + buf[i] = L' '; + } + + bitNum++; + } + + PutStringUTF16Sub( x, y, TXT_COLOR_RED, buf ); } void drawMenu( int menu, int line ) @@ -601,4 +709,98 @@ int getPageNum( int valueIdx, const int* pageOffset ) } return -1; -} \ No newline at end of file +} + +const static int gRegisterIdx[2][SCFG_ARM7_MENU_SIZE] = { + // ARM7, ARM9のSCFGの各項目がレジスタにおいて対応しているのかをリストで記述 + + // ARM7 side + { + DISP_REG_SCFG_ROM_ARM9SEL_SHIFT, + DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT, + DISP_REG_SCFG_ROM_ARM7SEL_SHIFT, + DISP_REG_SCFG_ROM_ARM7RSEL_SHIFT, + DISP_REG_SCFG_ROM_ARM7FUSE_SHIFT, + DISP_REG_SCFG_ROM_ROMWE_SHIFT, + + DISP_REG_SCFG_CLK_SD1HCLK_SHIFT + 32, + DISP_REG_SCFG_CLK_SD2HCLK_SHIFT + 32, + DISP_REG_SCFG_CLK_AESHCLK_SHIFT + 32, + DISP_REG_SCFG_CLK_WRAMHCLK_SHIFT + 32, + DISP_REG_SCFG_CLK_SNDMCLK_SHIFT + 32, + + DISP_REG_SCFG_JTAG_ARM7SEL_SHIFT + 48, + DISP_REG_SCFG_JTAG_CPUJE_SHIFT + 48, + DISP_REG_SCFG_JTAG_DSPJE_SHIFT + 48, + + DISP_REG_SCFG_EXT_DMA_SHIFT + 64, + DISP_REG_SCFG_EXT_SDMA_SHIFT + 64, + DISP_REG_SCFG_EXT_SND_SHIFT + 64, + DISP_REG_SCFG_EXT_MC_SHIFT + 64, + DISP_REG_SCFG_EXT_INTC_SHIFT + 64, + DISP_REG_SCFG_EXT_SPI_SHIFT + 64, + DISP_REG_SCFG_EXT_DSEL_SHIFT + 64, + DISP_REG_SCFG_EXT_SIO_SHIFT + 64, + DISP_REG_SCFG_EXT_LCDC_SHIFT + 64, + DISP_REG_SCFG_EXT_VRAM_SHIFT + 64, + DISP_REG_SCFG_EXT_PSRAM_SHIFT + 64, + DISP_REG_SCFG_EXT_DMAC_SHIFT + 64, + DISP_REG_SCFG_EXT_AES_SHIFT + 64, + DISP_REG_SCFG_EXT_SD1_SHIFT + 64, + DISP_REG_SCFG_EXT_SD2_SHIFT + 64, + DISP_REG_SCFG_EXT_MIC_SHIFT + 64, + DISP_REG_SCFG_EXT_I2S_SHIFT + 64, + DISP_REG_SCFG_EXT_I2C_SHIFT + 64, + DISP_REG_SCFG_EXT_GPIO_SHIFT + 64, + DISP_REG_SCFG_EXT_MC_B_SHIFT + 64, + DISP_REG_SCFG_EXT_WRAM_SHIFT + 64, + DISP_REG_SCFG_EXT_PUENABLE_SHIFT + 64, + DISP_REG_SCFG_EXT_CFG_SHIFT + 64, + + DISP_REG_MI_MC1_SL1_CDET_SHIFT + 96, + DISP_REG_MI_MC1_SL1_M0_SHIFT + 96, + DISP_REG_MI_MC1_SL2_CDET_SHIFT + 96, + DISP_REG_MI_MC1_SL2_M0_SHIFT + 96, + DISP_REG_MI_MC1_SWP_SHIFT + 96, + DISP_REG_MI_MC1_CC_SHIFT + 96, + + DISP_REG_MI_MC2_CA_SHIFT + 128, + + DISP_REG_SCFG_WL_OFFB_SHIFT + 144, + + DISP_REG_SCFG_OP_OP0_SHIFT + 160, + DISP_REG_SCFG_OP_OP0_SHIFT + 160 + }, + + // ARM9 side + { + REG_SCFG_A9ROM_SEC_SHIFT, + REG_SCFG_A9ROM_RSEL_SHIFT, + + REG_SCFG_CLK_CPUSPD_SHIFT + 16, + REG_SCFG_CLK_DSPHCLK_SHIFT + 16, + REG_SCFG_CLK_CAMHCLK_SHIFT + 16, + REG_SCFG_CLK_WRAMHCLK_SHIFT + 16, + REG_SCFG_CLK_CAMCKI_SHIFT + 16, + + REG_SCFG_RST_DSPRSTB_SHIFT + 32, + + REG_SCFG_EXT_DMA_SHIFT + 48, + REG_SCFG_EXT_GEO_SHIFT + 48, + REG_SCFG_EXT_REN_SHIFT + 48, + REG_SCFG_EXT_G2DE_SHIFT + 48, + REG_SCFG_EXT_DIV_SHIFT + 48, + REG_SCFG_EXT_MC_SHIFT + 48, + REG_SCFG_EXT_INTC_SHIFT + 48, + REG_SCFG_EXT_LCDC_SHIFT + 48, + REG_SCFG_EXT_VRAM_SHIFT + 48, + REG_SCFG_EXT_PSRAM_SHIFT + 48, + REG_SCFG_EXT_DMAC_SHIFT + 48, + REG_SCFG_EXT_CAM_SHIFT + 48, + REG_SCFG_EXT_DSP_SHIFT + 48, + REG_SCFG_EXT_MC_B_SHIFT + 48, + REG_SCFG_EXT_WRAM_SHIFT + 48, + REG_SCFG_EXT_CFG_SHIFT + 48, + + } +}; \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h index d56535b1..034c7740 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h +++ b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h @@ -11,8 +11,8 @@ in whole or in part, without the prior written consent of Nintendo. $Date:: $ - $Rev:$ - $Author:$ + $Rev$ + $Author$ *---------------------------------------------------------------------------*/ #ifndef __DRAW_FUNC__ @@ -37,7 +37,7 @@ extern "C" { #define NORMAL_HW_MENU_SIZE 4 #define SECURE_HW_MENU_SIZE 6 #define SCFG_ARM7_MENU_SIZE 47 -#define SCFG_ARM9_MENU_SIZE 22 +#define SCFG_ARM9_MENU_SIZE 24 #define VERSIONMENU_SIZE 3 @@ -84,28 +84,31 @@ extern "C" { #define SECURE_HW_LANGUAGE 4 #define SECURE_HW_FUSE 5 -#define SCFG_ARM9_ROM_STATE 0 -#define SCFG_ARM9_CAMERA_CKI 1 -#define SCFG_ARM9_WRAM_CLOCK 2 -#define SCFG_ARM9_CAMERA_CLOCK 3 -#define SCFG_ARM9_DSP_CLOCK 4 -#define SCFG_ARM9_CPU_SPEED 5 -#define SCFG_ARM9_DSP_RESET 6 -#define SCFG_ARM9_CFG_ACCESSIBLE 7 -#define SCFG_ARM9_WRAM_ACCESSIBLE 8 -#define SCFG_ARM9_DSP_ACCESSIBLE 9 -#define SCFG_ARM9_CAMERA_ACCESSIBLE 10 -#define SCFG_ARM9_NDMA_ACCESSIBLE 11 -#define SCFG_ARM9_PSRAM_BOUNDARY 12 -#define SCFG_ARM9_INTC_EXPANSION 13 -#define SCFG_ARM9_LCDC_EXPANSION 14 -#define SCFG_ARM9_VRAM_EXPANSION 15 -#define SCFG_ARM9_FIX_CARD 16 -#define SCFG_ARM9_FIX_DIVIDER 17 -#define SCFG_ARM9_FIX_2DENGINE 18 -#define SCFG_ARM9_FIX_RENDERER 19 -#define SCFG_ARM9_FIX_GEOMETRY 20 -#define SCFG_ARM9_FIX_DMA 21 +#define SCFG_ARM9_ROM_SEC 0 +#define SCFG_ARM9_ROM_STATE 1 +#define SCFG_ARM9_CPU_SPEED 2 +#define SCFG_ARM9_DSP_CLOCK 3 +#define SCFG_ARM9_CAMERA_CLOCK 4 +#define SCFG_ARM9_WRAM_CLOCK 5 +#define SCFG_ARM9_CAMERA_CKI 6 +#define SCFG_ARM9_DSP_RESET 7 +#define SCFG_ARM9_FIX_DMA 8 +#define SCFG_ARM9_FIX_GEOMETRY 9 +#define SCFG_ARM9_FIX_RENDERER 10 +#define SCFG_ARM9_FIX_2DENGINE 11 +#define SCFG_ARM9_FIX_DIVIDER 12 +#define SCFG_ARM9_FIX_CARD 13 +#define SCFG_ARM9_VRAM_EXPANSION 14 +#define SCFG_ARM9_LCDC_EXPANSION 15 +#define SCFG_ARM9_INTC_EXPANSION 16 +#define SCFG_ARM9_PSRAM_BOUNDARY 17 +#define SCFG_ARM9_NDMA_ACCESSIBLE 18 +#define SCFG_ARM9_CAMERA_ACCESSIBLE 19 +#define SCFG_ARM9_DSP_ACCESSIBLE 20 +#define SCFG_ARM9_WRAM_ACCESSIBLE 21 +#define SCFG_ARM9_MCB 22 +#define SCFG_ARM9_CFG_ACCESSIBLE 23 + #define SCFG_ARM7_ROM_ARM9_SEC 0 #define SCFG_ARM7_ROM_ARM9_RSEL 1 diff --git a/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h b/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h index 57c2456a..8961cca5 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h +++ b/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h @@ -387,6 +387,48 @@ extern "C" { ((u32)(dma) << DISP_REG_SCFG_EXT_DMA_SHIFT)) #endif +/* MC1 */ + +#define DISP_REG_MI_MC1_CC_SHIFT 16 +#define DISP_REG_MI_MC1_CC_SIZE 16 +#define DISP_REG_MI_MC1_CC_MASK 0xffff0000 + +#define DISP_REG_MI_MC1_SWP_SHIFT 15 +#define DISP_REG_MI_MC1_SWP_SIZE 1 +#define DISP_REG_MI_MC1_SWP_MASK 0x00008000 + +#define DISP_REG_MI_MC1_SL2_STATUS_SHIFT 4 +#define DISP_REG_MI_MC1_SL2_STATUS_SIZE 4 +#define DISP_REG_MI_MC1_SL2_STATUS_MASK 0x000000f0 + +#define DISP_REG_MI_MC1_SL2_M1_SHIFT 7 +#define DISP_REG_MI_MC1_SL2_M1_SIZE 1 +#define DISP_REG_MI_MC1_SL2_M1_MASK 0x00000080 + +#define DISP_REG_MI_MC1_SL2_M0_SHIFT 6 +#define DISP_REG_MI_MC1_SL2_M0_SIZE 1 +#define DISP_REG_MI_MC1_SL2_M0_MASK 0x00000040 + +#define DISP_REG_MI_MC1_SL2_CDET_SHIFT 4 +#define DISP_REG_MI_MC1_SL2_CDET_SIZE 1 +#define DISP_REG_MI_MC1_SL2_CDET_MASK 0x00000010 + +#define DISP_REG_MI_MC1_SL1_STATUS_SHIFT 0 +#define DISP_REG_MI_MC1_SL1_STATUS_SIZE 4 +#define DISP_REG_MI_MC1_SL1_STATUS_MASK 0x0000000f + +#define DISP_REG_MI_MC1_SL1_M1_SHIFT 3 +#define DISP_REG_MI_MC1_SL1_M1_SIZE 1 +#define DISP_REG_MI_MC1_SL1_M1_MASK 0x00000008 + +#define DISP_REG_MI_MC1_SL1_M0_SHIFT 2 +#define DISP_REG_MI_MC1_SL1_M0_SIZE 1 +#define DISP_REG_MI_MC1_SL1_M0_MASK 0x00000004 + +#define DISP_REG_MI_MC1_SL1_CDET_SHIFT 0 +#define DISP_REG_MI_MC1_SL1_CDET_SIZE 1 +#define DISP_REG_MI_MC1_SL1_CDET_MASK 0x00000001 + /* MC */ diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c b/build/tests/DisplaySystemInformation/ARM9/src/strResource.c index 87711009..1f3041f0 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c +++ b/build/tests/DisplaySystemInformation/ARM9/src/strResource.c @@ -11,8 +11,8 @@ in whole or in part, without the prior written consent of Nintendo. $Date:: $ - $Rev:$ - $Author:$ + $Rev$ + $Author$ *---------------------------------------------------------------------------*/ #include "drawFunc.h" @@ -42,23 +42,22 @@ const u8 s_numMenu[] = { ROOTMENU_SIZE }; -const u16 *s_strARM7RegisterName[] = { - L"ROM State", - L"CLK", - L"JTAG", - L"EXTEND", - L"MC I/F 1", - L"MC I/F 2", - L"DS WL", - L"BONDING", +const char *s_strARM7RegisterName[] = { + "ROM", + "CLK", + "JTAG", + "EXP", + "MC1", + "MC2", + "DSWL", + "OPT", }; -const u16 *s_strARM9RegisterName[] = { - L"ROMステータスレジスタ", - L"新規ブロッククロック制御レジスタ", - L"新規ブロックリセット制御レジスタ", - L"拡張機能制御レジスタ", - L"メモリーカード I/F ステータスレジスタ" +const char *s_strARM9RegisterName[] = { + "ROM", + "CLK", + "RST", + "EXP", }; const char *s_strRootMenu[] = { @@ -123,28 +122,33 @@ const char *s_strSecureHWMenu[] = { }; const char *s_strSCFGArm9Menu[] = { + "ARM9 SecureROM", "Rom Status", - "Camera CKI", - "WRAM Clock", - "Camera Clock", - "DSP Clock", + "CPU Speed", + "DSP Clock", + "Camera Clock", + "WRAM Clock", + "Camera CKI", + "DSP Reset Flag", - "CFG Block Access", - "WRAM Access", - "DSP Access", - "Camera Access", - "New DMA Access", - "PSRAM Boundary", - "Expanded INTC", - "Expanded LCDC", - "Expanded VRAM", - "Fixed Card I/F", - "Fixed Divider", - "Fixed 2D Engine", - "Fixed Renderer", + + "Fixed DMA", "Fixed Geometry", - "Fixed DMA" + "Fixed Renderer", + "Fixed 2D Engine", + "Fixed Divider", + "Fixed Card I/F", + "Expanded VRAM", + "Expanded LCDC", + "Expanded INTC", + "PSRAM Boundary", + "New DMA Access", + "Camera Access", + "DSP Access", + "MemoryCard I/F", + "WRAM Access", + "CFG Block Access" }; const char *s_strSCFGArm7Menu[] = { diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h b/build/tests/DisplaySystemInformation/ARM9/src/strResource.h index 3b325909..372e4123 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h +++ b/build/tests/DisplaySystemInformation/ARM9/src/strResource.h @@ -11,8 +11,8 @@ in whole or in part, without the prior written consent of Nintendo. $Date:: $ - $Rev:$ - $Author:$ + $Rev$ + $Author$ *---------------------------------------------------------------------------*/ #ifndef __DISPLAY_INFO_RESOURCE__ @@ -32,8 +32,8 @@ extern const char *s_strSCFGARM7Menu[]; extern const char *s_strSCFGARM9Menu[]; extern const char *s_strVersionMenu[]; extern const char **s_strMetaMenu[]; -const u16 *s_strARM7RegisterName[]; -const u16 *s_strARM9RegisterName[]; +extern const char *s_strARM7RegisterName[]; +extern const char *s_strARM9RegisterName[]; extern char *s_strEnable[]; extern char *s_strSupply[]; extern char *s_strRomMode[]; diff --git a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c index e19d38bd..8e6f492f 100644 --- a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c +++ b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c @@ -11,8 +11,8 @@ in whole or in part, without the prior written consent of Nintendo. $Date:: $ - $Rev:$ - $Author:$ + $Rev$ + $Author$ *---------------------------------------------------------------------------*/ #include @@ -38,7 +38,8 @@ void getParentalInfo( void ); void getNormalHWInfo( void ); BOOL getSecureHWInfo( void ); void getSCFGARM9Info( void ); -void getSCFGARM7Info( void ); +void getSCFGARM7InfoReg( void ); +void getSCFGARM7InfoShared( void ); void getVersions( void ); void getWirelessVersion( void ); void getContentsVersion( void ); @@ -164,7 +165,8 @@ void getAllInfo( void ) getParentalInfo(); getNormalHWInfo(); getSecureHWInfo(); - getSCFGARM7Info(); + getSCFGARM7InfoReg(); + getSCFGARM7InfoShared(); getSCFGARM9Info(); getVersions(); @@ -317,6 +319,7 @@ BOOL getSecureHWInfo( void ) DISPINFO_BUFSIZE-1, "%016llx", SCFG_ReadFuseData() ); // 返り値でセキュアアプリかどうか判定できるように + // あとでロムヘッダの情報を読むように変更したほうがいいかも if( buf ) { return TRUE; @@ -329,255 +332,369 @@ BOOL getSecureHWInfo( void ) } void getSCFGARM9Info( void ) -// SCFG情報を取得する +// ARM9側で取得できるSCFG情報を取得する +// ARM9SCFGAPIはレジスタを直接参照しているので、APIを使ってもレジスタを直接見ても同じ値 { - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].str.sjis = - SCFG_GetSystemRomType() == SCFG_SYSTEM_ROM_FOR_NITRO ? s_strRomMode[1] : s_strRomMode[0]; - - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_CKI].str.sjis = s_strEnable[ SCFG_IsCameraCKIClockEnable() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_WRAM_CLOCK].str.sjis = s_strSupply[ SCFG_IsClockSuppliedToWram() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_CLOCK].str.sjis = s_strSupply[ SCFG_IsClockSuppliedToCamera() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_CLOCK].str.sjis = s_strSupply[ SCFG_IsClockSuppliedToDSP() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CPU_SPEED].str.sjis = - SCFG_GetCpuSpeed() == SCFG_CPU_SPEED_1X ? s_strCpuSpeed[0] : s_strCpuSpeed[1]; - - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_RESET].str.sjis = s_strBool[ SCFG_IsDSPReset() ]; + int value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CFG_ACCESSIBLE].str.sjis = s_strEnable[ SCFG_IsConfigBlockAccessible() ]; + // ROM制御レジスタ + value = SCFG_IsSecureRomAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].str.sjis = s_strAccess[ value ]; + + value = SCFG_GetSystemRomType(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].str.sjis = (value == SCFG_SYSTEM_ROM_FOR_NITRO) ? s_strRomMode[1] : s_strRomMode[0]; + + // クロック制御レジスタ + value = SCFG_IsCameraCKIClockEnable(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_CKI].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_CKI].str.sjis = s_strEnable[ value ]; + + value = SCFG_IsClockSuppliedToWram(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_WRAM_CLOCK].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_WRAM_CLOCK].str.sjis = s_strSupply[ value ]; + + value = SCFG_IsClockSuppliedToCamera(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_CLOCK].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_CLOCK].str.sjis = s_strSupply[ value ]; + + value = SCFG_IsClockSuppliedToDSP(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_CLOCK].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_CLOCK].str.sjis = s_strSupply[ value ]; + + value = SCFG_GetCpuSpeed(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CPU_SPEED].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CPU_SPEED].str.sjis = (value == SCFG_CPU_SPEED_1X) ? s_strCpuSpeed[0] : s_strCpuSpeed[1]; + + // 新規ブロック制御レジスタ + value = SCFG_IsDSPReset(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_RESET].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_RESET].str.sjis = s_strBool[ value ]; + + // 拡張機能制御レジスタ + value = SCFG_IsConfigBlockAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CFG_ACCESSIBLE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CFG_ACCESSIBLE].str.sjis = s_strAccess[ value ]; gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CFG_ACCESSIBLE].isAligned = FALSE; gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CFG_ACCESSIBLE].numLines = 2; + + value = (reg_SCFG_EXT & REG_SCFG_EXT_MC_B_MASK) || 0; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_MCB].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_MCB].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_WRAM_ACCESSIBLE].str.sjis = s_strEnable[ SCFG_IsWramAccessible() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_ACCESSIBLE].str.sjis = s_strEnable[ SCFG_IsDSPAccessible() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_ACCESSIBLE].str.sjis = s_strEnable[ SCFG_IsCameraAccessible() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_NDMA_ACCESSIBLE].str.sjis = s_strEnable[ SCFG_IsNDmaAccessible() ]; + value = SCFG_IsWramAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_WRAM_ACCESSIBLE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_WRAM_ACCESSIBLE].str.sjis = s_strAccess[ value ]; + + value = SCFG_IsDSPAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_ACCESSIBLE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_DSP_ACCESSIBLE].str.sjis = s_strAccess[ value ]; + + value = SCFG_IsCameraAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_ACCESSIBLE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CAMERA_ACCESSIBLE].str.sjis = s_strAccess[ value ]; + + value = SCFG_IsNDmaAccessible(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_NDMA_ACCESSIBLE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_NDMA_ACCESSIBLE].str.sjis = s_strAccess[ value ]; { u8 idx; + value = SCFG_GetPsramBoundary(); - if( SCFG_GetPsramBoundary() == SCFG_PSRAM_BOUNDARY_4MB ) + if( value == SCFG_PSRAM_BOUNDARY_4MB ) { idx = 0; } - else if ( SCFG_GetPsramBoundary() == SCFG_PSRAM_BOUNDARY_16MB ) + else if ( value == SCFG_PSRAM_BOUNDARY_16MB ) { idx = 1; } - else if ( SCFG_GetPsramBoundary() == SCFG_PSRAM_BOUNDARY_32MB ) + else if ( value == SCFG_PSRAM_BOUNDARY_32MB ) { idx = 2; } + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_PSRAM_BOUNDARY].iValue = value; gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_PSRAM_BOUNDARY].str.sjis = s_strPSRAM[ idx ]; } - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_INTC_EXPANSION].str.sjis = s_strEnable[ SCFG_IsIntcExpanded() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_LCDC_EXPANSION].str.sjis = s_strEnable[ SCFG_IsLCDCExpanded() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_VRAM_EXPANSION].str.sjis = s_strEnable[ SCFG_IsVramExpanded() ]; + value = SCFG_IsIntcExpanded(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_INTC_EXPANSION].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_INTC_EXPANSION].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_CARD].str.sjis = s_strEnable[ SCFG_IsCardFixed() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_DIVIDER].str.sjis = s_strEnable[ SCFG_IsDividerFixed() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_2DENGINE].str.sjis = s_strEnable[ SCFG_Is2DEngineFixed() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_RENDERER].str.sjis = s_strEnable[ SCFG_IsRendererFixed() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_GEOMETRY].str.sjis = s_strEnable[ SCFG_IsGeometryFixed() ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_DMA].str.sjis = s_strEnable[ SCFG_IsDmacFixed() ]; + value = SCFG_IsLCDCExpanded(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_LCDC_EXPANSION].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_LCDC_EXPANSION].str.sjis = s_strEnable[ value ]; + value = SCFG_IsVramExpanded(); + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_VRAM_EXPANSION].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_VRAM_EXPANSION].str.sjis = s_strEnable[ value ]; + + + value = SCFG_IsCardFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_CARD].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_CARD].str.sjis = s_strEnable[ value ]; + + value = SCFG_IsDividerFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_DIVIDER].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_DIVIDER].str.sjis = s_strEnable[ value ]; + + value = SCFG_Is2DEngineFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_2DENGINE].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_2DENGINE].str.sjis = s_strEnable[ value ]; + + value = SCFG_IsRendererFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_RENDERER].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_RENDERER].str.sjis = s_strEnable[ value ]; + + value = SCFG_IsGeometryFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_GEOMETRY].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_GEOMETRY].str.sjis = s_strEnable[ value ]; + + value = SCFG_IsDmacFixed() ; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_DMA].iValue = value; + gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_FIX_DMA].str.sjis = s_strEnable[ value ]; + } -void getSCFGARM7Info( void ) +void getSCFGARM7InfoReg( void ) { - // 必要なデータは全てgARM7SCFGReg, gARM7SCFGWramで確保済 + // レジスタに直接格納されているほうのSCFGデータを取得 + + + int value; // ROM制御レジスタ(L)、(H) { // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].str.sjis = - gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_SEC_MASK ? s_strAccess[0]: s_strAccess[1]; + 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 = value ? s_strAccess[0]: s_strAccess[1]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].str.sjis = - gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_RSEL_MASK ? s_strRomMode[1]: s_strRomMode[0]; + 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 = value ? s_strRomMode[1]: s_strRomMode[0]; // SECフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].str.sjis = - gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_SEC_MASK ? s_strAccess[0]: s_strAccess[1]; + 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 = value ? s_strAccess[0]: s_strAccess[1]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].str.sjis = - gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_RSEL_MASK ? s_strRomMode[1]: s_strRomMode[0]; + 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 = value ? s_strRomMode[1]: s_strRomMode[0]; // FuseROMフラグはTRUE = 切り離し(アクセス不可), FALSE = 接続(アクセス可) - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].str.sjis = - gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_FUSE_MASK ? s_strAccess[0]: s_strAccess[1]; + 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 = value ? s_strAccess[0]: s_strAccess[1]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].str.sjis = - gArm7SCFGReg[DISP_REG_ROMWE_OFFSET - 0x4000] & DISP_REG_SCFG_ROMWE_WE_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; } // 新規ブロッククロック制御レジスタ { u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].str.sjis = - flag & DISP_REG_SCFG_CLK_SD1HCLK_MASK ? s_strSupply[1]: s_strSupply[0]; + 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 = value ? s_strSupply[1]: s_strSupply[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].str.sjis = - flag & DISP_REG_SCFG_CLK_SD2HCLK_MASK ? s_strSupply[1]: s_strSupply[0]; + 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 = value ? s_strSupply[1]: s_strSupply[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].str.sjis = - flag & DISP_REG_SCFG_CLK_AESHCLK_MASK ? s_strSupply[1]: s_strSupply[0]; + 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 = value ? s_strSupply[1]: s_strSupply[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].str.sjis = - flag & DISP_REG_SCFG_CLK_WRAMHCLK_MASK ? s_strSupply[1]: s_strSupply[0]; + 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 = value ? s_strSupply[1]: s_strSupply[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].str.sjis = - flag & DISP_REG_SCFG_CLK_SNDMCLK_MASK ? s_strSupply[1]: s_strSupply[0]; + 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 = value ? s_strSupply[1]: s_strSupply[0]; } // JTAG制御レジスタ { u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].str.sjis = - flag & DISP_REG_SCFG_JTAG_ARM7SEL_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].isAligned = FALSE; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].numLines = 2; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].str.sjis = - flag & DISP_REG_SCFG_JTAG_CPUJE_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].str.sjis = - flag & DISP_REG_SCFG_JTAG_DSPJE_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; } // 拡張機能制御レジスタ { u32 flag = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].str.sjis = - flag & DISP_REG_SCFG_EXT_DMA_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].str.sjis = - flag & DISP_REG_SCFG_EXT_SDMA_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].str.sjis = - flag & DISP_REG_SCFG_EXT_SND_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].str.sjis = - flag & DISP_REG_SCFG_EXT_MC_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].isAligned = FALSE; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].numLines = 2; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].str.sjis = - flag & DISP_REG_SCFG_EXT_INTC_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].isAligned = FALSE; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].numLines = 2; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].str.sjis = - flag & DISP_REG_SCFG_EXT_SPI_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].str.sjis = - flag & DISP_REG_SCFG_EXT_DSEL_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].isAligned = FALSE; gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].numLines = 2; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].str.sjis = - flag & DISP_REG_SCFG_EXT_SIO_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].str.sjis = - flag & DISP_REG_SCFG_EXT_LCDC_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].str.sjis = - flag & DISP_REG_SCFG_EXT_VRAM_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; { - u32 psFlag = (flag & DISP_REG_SCFG_EXT_PSRAM_MASK) >> DISP_REG_SCFG_EXT_PSRAM_SHIFT; u8 idx = 0; + value = (int) ( (flag & DISP_REG_SCFG_EXT_PSRAM_MASK) >> DISP_REG_SCFG_EXT_PSRAM_SHIFT ); + - if( psFlag <= 1 ) + if( value <= 1 ) { idx = 0; } - else if ( psFlag == 2 ) + else if ( value == 2 ) { idx = 1; } - else if ( psFlag == 3 ) + 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]; } - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].str.sjis = - flag & DISP_REG_SCFG_EXT_DMAC_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].str.sjis = - flag & DISP_REG_SCFG_EXT_AES_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].str.sjis = - flag & DISP_REG_SCFG_EXT_SD1_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].str.sjis = - flag & DISP_REG_SCFG_EXT_SD2_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].str.sjis = - flag & DISP_REG_SCFG_EXT_MIC_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].str.sjis = - flag & DISP_REG_SCFG_EXT_I2S_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].str.sjis = - flag & DISP_REG_SCFG_EXT_I2C_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].str.sjis = - flag & DISP_REG_SCFG_EXT_GPIO_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].str.sjis = - flag & DISP_REG_SCFG_EXT_MC_B_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].str.sjis = - flag & DISP_REG_SCFG_EXT_WRAM_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].str.sjis = - flag & DISP_REG_SCFG_EXT_PUENABLE_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].str.sjis = - flag & DISP_REG_SCFG_EXT_CFG_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; } // メモリカード I/F 制御レジスタ { u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); - u8 idx; - OS_TPrintf("mc flag: %04x\n", flag ); - OS_TPrintf("flag & SC1 cdet mask: %d\n", flag & DISP_REG_MI_MC_SL1_CDET_MASK ); - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].str.sjis = - flag & DISP_REG_MI_MC_SL1_CDET_MASK ? s_strBool[1]: s_strBool[0]; + 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 = value ? s_strBool[1]: s_strBool[0]; - OS_TPrintf("mi SC1 cdet: %s\n", gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].str.sjis ); - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].str.sjis = - flag & DISP_REG_MI_MC_SL2_CDET_MASK ? s_strBool[1]: s_strBool[0]; + 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 = value ? s_strBool[1]: s_strBool[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].str.sjis = - flag & DISP_REG_MI_MC_SWP_MASK ? s_strBool[1]: s_strBool[0]; + 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 = value ? s_strBool[1]: s_strBool[0]; - idx = (u8) ( (flag & DISP_REG_MI_MC_SL1_MODE_MASK) >> DISP_REG_MI_MC_SL1_MODE_SHIFT ); - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].str.sjis = s_strMCMode[idx]; + 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]; - idx = (u8) ( (flag & DISP_REG_MI_MC_SL2_MODE_MASK) >> DISP_REG_MI_MC_SL2_MODE_SHIFT ); - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].str.sjis = s_strMCMode[idx]; + 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] ); - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].str.sjis , DISPINFO_BUFSIZE-1, "%04x", - flag & DISP_REG_MI_MCCHAT_CC_MASK); + 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] ); - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].str.sjis , DISPINFO_BUFSIZE-1, "%04x", - flag & DISP_REG_MI_MC2_CA_MASK ); + 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 ); } @@ -585,8 +702,9 @@ void getSCFGARM7Info( void ) { u8 flag = gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].str.sjis = - flag & DISP_REG_SCFG_WL_OFFB_MASK ? s_strEnable[1]: s_strEnable[0]; + 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 = value ? s_strEnable[1]: s_strEnable[0]; } @@ -595,14 +713,22 @@ void getSCFGARM7Info( void ) { u8 flag = gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000]; - u8 idx = (u8)(flag & DISP_REG_SCFG_OP_OPT_MASK); + 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_FORM].str.sjis = idx == 3 ? s_strRomForm[1] : s_strRomForm[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[idx]; + 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データを取得する + +} void getVersions( void ) { @@ -621,7 +747,7 @@ void getWirelessVersion( void ) FS_InitFile( &file ); NAM_GetTitleBootContentPath( filePath , WL_TITLEID); // 無線ファームのファイルパスを取得 - + OS_TPrintf("wireless firm path: %s\n", filePath ) ; res = FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ); // バージョン情報の読み取り