バグフィックス。レジスタ表示の追加。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1900 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
aoki_ryoma 2008-07-15 08:14:20 +00:00
parent 7b1ec519cd
commit fa82aa1ce4
8 changed files with 622 additions and 399 deletions

View File

@ -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 \

View File

@ -19,11 +19,9 @@
#include <nitro/rtc/common/fifo.h>
#include <twl/memorymap_sp.h>
#include <twl/hw/common/mmap_wramEnv.h>
#include <twl/code32/j>
#include <twl/code32.h>
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
}

View File

@ -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<BINARY_BUF; i++)
for( i = 0; i < BINARY_BUF; i++)
{
if( i%5 == 4 )
if( i%9 == 8 )
{
buf[i] = L' ';
continue;
@ -300,19 +374,53 @@ void printBinary16( int x, int y, u16 value )
if( value & mask )
{
buf[i] = L'1';
buf[i] = L'';
}
else
{
buf[i] = L'0';
buf[i] = L'';
}
mask = mask >> 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'': L'' ;
}
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;
}
}
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,
}
};

View File

@ -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

View File

@ -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 */

View File

@ -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[] = {

View File

@ -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[];

View File

@ -11,8 +11,8 @@
in whole or in part, without the prior written consent of Nintendo.
$Date:: $
$Rev:$
$Author:$
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#include <wchar.h>
@ -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 );
// バージョン情報の読み取り