TwlIPL/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c
yosiokat 4d8713e702 ・SDK3459に対応。
・ntexconvをSDKにあるものを使用するようにして、TwlIPLツリーから削除。
・TWL設定データの値チェックのバグ修正。
・SDKでPMi_WriteRegisterがFINALROM時にビルドされなくなっていたので、TwlIPL側で持つよう変更。
・本体設定の項目からリージョン設定を削除。ピクトチャット起動もとりあえず削除。
・本体設定の国設定で「国設定済みフラグ」がセットされていなかったのを修正。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@458 b08762b0-b915-fc4b-9d8c-17b2551a87ff
2008-01-11 09:07:24 +00:00

328 lines
8.9 KiB
C

/*---------------------------------------------------------------------------*
Project: TwlIPL
File: mainMenu.c
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: $
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#include <twl.h>
#include "misc.h"
#include "MachineSetting.h"
// define data------------------------------------------
// キャンセルボタンLCD領域
#define CANCEL_BUTTON_TOP_X ( 12 * 8 )
#define CANCEL_BUTTON_TOP_Y ( 21 * 8 )
#define CANCEL_BUTTON_BOTTOM_X ( CANCEL_BUTTON_TOP_X + 5 * 8 )
#define CANCEL_BUTTON_BOTTOM_Y ( CANCEL_BUTTON_TOP_Y + 2 * 8 )
// OKボタンLCD領域
#define OK_BUTTON_TOP_X ( 22 * 8 )
#define OK_BUTTON_TOP_Y ( 21 * 8 )
#define OK_BUTTON_BOTTOM_X ( OK_BUTTON_TOP_X + 2 * 8 )
#define OK_BUTTON_BOTTOM_Y ( OK_BUTTON_TOP_Y + 2 * 8 )
#define SETTING_MENU_ELEMENT_NUM 5 // メインメニューの項目数(※ピクトチャット起動テストは除いておく)
// extern data------------------------------------------
extern u32 bg_char_data[8 * 6];
extern u16 bg_scr_data[32 * 32];
// function's prototype declaration---------------------
static BOOL InitialSetting( void );
static void InitialSettingFinalizeInit( void );
static int InitialSettingFinalizeMain( void );
// global variable -------------------------------------
BOOL g_initialSet = FALSE;
// static variable -------------------------------------
static u16 s_csr = 0;
static const u16 *s_pStrSetting[ SETTING_MENU_ELEMENT_NUM ]; // メインメニュー用文字テーブルへのポインタリスト
// const data -----------------------------------------
//===============================================
// mainMenu.c
//===============================================
static const u16 *const s_pStrSettingElemTbl[ SETTING_MENU_ELEMENT_NUM ][ TWL_LANG_CODE_MAX ] = {
{
(const u16 *)L"言語",
(const u16 *)L"LANGUAGE",
(const u16 *)L"LANGUAGE(F)",
(const u16 *)L"LANGUAGE(G)",
(const u16 *)L"LANGUAGE(I)",
(const u16 *)L"LANGUAGE(S)",
(const u16 *)L"LANGUAGE(C)",
(const u16 *)L"LANGUAGE(K)",
},
{
(const u16 *)L"日付 & 時刻",
(const u16 *)L"DATE & TIME",
(const u16 *)L"DATE & TIME(F)",
(const u16 *)L"DATE & TIME(G)",
(const u16 *)L"DATE & TIME(I)",
(const u16 *)L"DATE & TIME(S)",
(const u16 *)L"DATE & TIME(C)",
(const u16 *)L"DATE & TIME(K)",
},
{
(const u16 *)L"ユーザー情報",
(const u16 *)L"USER INFORMATION",
(const u16 *)L"USER INFORMATION(F)",
(const u16 *)L"USER INFORMATION(G)",
(const u16 *)L"USER INFORMATION(I)",
(const u16 *)L"USER INFORMATION(S)",
(const u16 *)L"USER INFORMATION(C)",
(const u16 *)L"USER INFORMATION(K)",
},
{
(const u16 *)L"タッチパネル補正",
(const u16 *)L"TOUCH PANEL",
(const u16 *)L"TOUCH PANEL(F)",
(const u16 *)L"TOUCH PANEL(G)",
(const u16 *)L"TOUCH PANEL(I)",
(const u16 *)L"TOUCH PANEL(S)",
(const u16 *)L"TOUCH PANEL(C)",
(const u16 *)L"TOUCH PANEL(K)",
},
{
(const u16 *)L"国設定",
(const u16 *)L"COUNTRY",
(const u16 *)L"COUNTRY(F)",
(const u16 *)L"COUNTRY(G)",
(const u16 *)L"COUNTRY(I)",
(const u16 *)L"COUNTRY(S)",
(const u16 *)L"COUNTRY(C)",
(const u16 *)L"COUNTRY(K)",
},
#if 0
{
(const u16 *)L"ピクトチャット起動テスト",
(const u16 *)L"PICTOCHAT",
(const u16 *)L"PICTOCHAT(F)",
(const u16 *)L"PICTOCHAT(G)",
(const u16 *)L"PICTOCHAT(I)",
(const u16 *)L"PICTOCHAT(S)",
(const u16 *)L"PICTOCHAT(C)",
(const u16 *)L"PICTOCHAT(K)",
},
#endif
};
static MenuPos s_settingPos[] = {
{ TRUE, 4 * 8, 6 * 8 },
{ TRUE, 4 * 8, 8 * 8 },
{ TRUE, 4 * 8, 10 * 8 },
{ TRUE, 4 * 8, 12 * 8 },
{ TRUE, 4 * 8, 14 * 8 },
{ TRUE, 4 * 8, 16 * 8 },
};
static const MenuParam s_settingParam = {
SETTING_MENU_ELEMENT_NUM,
TXT_COLOR_BLACK,
TXT_COLOR_GREEN,
TXT_COLOR_RED,
&s_settingPos[ 0 ],
(const u16 **)&s_pStrSetting,
};
//======================================================
// メインメニュー
//======================================================
// メインメニューの初期化
void MachineSettingInit( void )
{
int i;
// 初回起動シーケンス
if( InitialSetting() ) {
return;
}
GX_DispOff();
GXS_DispOff();
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL );
// BGデータのロード処理
GX_LoadBG1Char(bg_char_data, 0, sizeof(bg_char_data));
GX_LoadBG1Scr(bg_scr_data, 0, sizeof(bg_scr_data));
PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"MACHINE SETTINGS" );
// NITRO設定データのlanguageに応じたメインメニュー構成言語の切り替え
for( i = 0; i < SETTING_MENU_ELEMENT_NUM; i++ ) {
s_pStrSetting[ i ] = s_pStrSettingElemTbl[ i ][ TSD_GetLanguage() ];
}
ChangeUserColor( TSD_GetUserColor() );
DrawMenu( s_csr, &s_settingParam );
SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 );
GX_SetVisiblePlane ( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1);
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
GX_DispOn();
GXS_DispOn();
g_pNowProcess = MachineSettingMain;
}
// メインメニュー
int MachineSettingMain( void )
{
BOOL tp_select;
LauncherBootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP();
//--------------------------------------
// キー入力処理
//--------------------------------------
if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動
if( ++s_csr == SETTING_MENU_ELEMENT_NUM ) {
s_csr=0;
}
}
if( pad.trg & PAD_KEY_UP ){
if( --s_csr & 0x80 ) {
s_csr=SETTING_MENU_ELEMENT_NUM - 1;
}
}
tp_select = SelectMenuByTP( &s_csr, &s_settingParam );
DrawMenu( s_csr, &s_settingParam );
if( pad.trg & PAD_BUTTON_START ) {
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
}
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
if( s_settingPos[ s_csr ].enable ) {
switch( s_csr ) {
case 0:
SelectLanguageInit();
g_pNowProcess = SelectLanguageMain;
break;
case 1:
SetRTCInit();
g_pNowProcess = SetRTCMain;
break;
case 2:
SetOwnerInfoInit();
g_pNowProcess = SetOwnerInfoMain;
break;
case 3:
TP_CalibrationInit();
g_pNowProcess = TP_CalibrationMain;
break;
case 4:
SelectCountryInit();
g_pNowProcess = SelectCountryMain;
break;
case 5:
//pictochat起動テスト
OS_SetLauncherParamAndResetHardware( 0, 0x0003000550434854, &tempflag );
}
}
}
return 0;
}
// OK / CANCELボタンの描画
void DrawOKCancelButton(void)
{
(void)PutStringUTF16( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, TXT_COLOR_CYAN, (const u16 *)L"CANCEL");
(void)PutStringUTF16( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y, TXT_COLOR_CYAN, (const u16 *)L"OK");
}
// OK or CANCELボタン押下チェック
void CheckOKCancelButton(BOOL *tp_ok, BOOL *tp_cancel)
{
*tp_cancel = WithinRangeTP( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y,
CANCEL_BUTTON_BOTTOM_X, CANCEL_BUTTON_BOTTOM_Y, &tpd.disp );
*tp_ok = WithinRangeTP( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y,
OK_BUTTON_BOTTOM_X, OK_BUTTON_BOTTOM_Y, &tpd.disp );
}
//---------------------------------------------------------
//
// 設定終了
//
//---------------------------------------------------------
// 初回起動シーケンス
static BOOL InitialSetting( void )
{
#if 0
if( !TSD_GetFlagLanguage() ) { // 言語設定がまだ。
g_initialSet = TRUE;
s_csr = 2;
SelectLangageInit();
g_pNowProcess = SelectLanguageMain;
return TRUE;
}else if( !TSD_GetFlagTP() ) { // TPキャリブレーションがまだ。
g_initialSet = TRUE;
s_csr = 3;
TP_CalibrationInit();
g_pNowProcess = TP_CalibrationMain;
return TRUE;
}else if( !TSD_GetFlagDateTime() ) { // RTC設定がまだ。
ClearRTC();
g_initialSet = TRUE;
s_csr = 1;
SetRTCInit();
g_pNowProcess = SetRTCMain;
return TRUE;
}else if( !TSD_GetFlagNickname() || // ニックネームまたは好きな色入力がまだ。
!TSD_GetFlagUserColor() ) {
/* g_initialSet = TRUE;
s_csr = 0;
SetOwnerInfoInit();
g_pNowProcess = SetOwnerInfoMain;
return TRUE;
*/ }
if( g_initialSet ) {
InitialSettingFinalizeInit();
g_pNowProcess = InitialSettingFinalizeMain();
return TRUE;
}
#endif
return FALSE;
}
static void InitialSettingFinalizeInit( void )
{
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
(void)PutStringUTF16( 6 * 8, 10 * 8, TXT_COLOR_BLACK, (const u16 *)L" Initial setting completed.");
(void)PutStringUTF16( 6 * 8, 12 * 8, TXT_COLOR_BLACK, (const u16 *)L" Please reboot.");
}
static int InitialSettingFinalizeMain( void )
{
return 0;
}