mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
MachineSettings:本体のクリーンアップ項目(内部的にはNAMUT_Formatを呼ぶ)を追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1129 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
6c8e58e242
commit
0a25a4dc45
@ -51,7 +51,7 @@ BG_DIR = ../../data
|
||||
|
||||
SRCS = main.c MachineSetting.c \
|
||||
setRTC.c selectLanguage.c calibrationTP.c setOwnerInfo.c selectCountry.c \
|
||||
setParentalControl.c setFreeSoftBox.c setWireless.c\
|
||||
setParentalControl.c setFreeSoftBox.c setWireless.c cleanupMachine.c \
|
||||
CountryNameMappingData.c \
|
||||
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c \
|
||||
$(BG_DIR)/BGData_MachineSettings.c
|
||||
@ -64,7 +64,11 @@ MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
|
||||
|
||||
MAKETAD_FLAGS += -s
|
||||
|
||||
LLIBRARIES = libsea$(TWL_LIBSUFFIX).a
|
||||
LLIBRARIES = libes$(TWL_LIBSUFFIX).a \
|
||||
libboc$(TWL_LIBSUFFIX).a \
|
||||
libnam$(TWL_LIBSUFFIX).a \
|
||||
libsea$(TWL_LIBSUFFIX).a \
|
||||
libnamut$(TWL_LIBSUFFIX).a
|
||||
|
||||
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
|
||||
@ -33,9 +33,9 @@
|
||||
#define OK_BUTTON_BOTTOM_Y ( OK_BUTTON_TOP_Y + 2 * 8 )
|
||||
|
||||
#ifdef BROADON_ENABLE
|
||||
#define SETTING_MENU_ELEMENT_NUM 8 // メインメニューの項目数(※ピクトチャット起動テストは除いておく)
|
||||
#define SETTING_MENU_ELEMENT_NUM 9 // メインメニューの項目数(※ピクトチャット起動テストは除いておく)
|
||||
#else
|
||||
#define SETTING_MENU_ELEMENT_NUM 7
|
||||
#define SETTING_MENU_ELEMENT_NUM 8
|
||||
#endif
|
||||
// extern data------------------------------------------
|
||||
|
||||
@ -127,6 +127,16 @@ static const u16 *const s_pStrSettingElemTbl[ SETTING_MENU_ELEMENT_NUM ][ LCFG_T
|
||||
(const u16 *)L"WIRELESS(C)",
|
||||
(const u16 *)L"WIRELESS(K)",
|
||||
},
|
||||
{
|
||||
(const u16 *)L"本体のクリーンアップ",
|
||||
(const u16 *)L"MACHINE CLEAN UP",
|
||||
(const u16 *)L"MACHINE CLEAN UP(F)",
|
||||
(const u16 *)L"MACHINE CLEAN UP(G)",
|
||||
(const u16 *)L"MACHINE CLEAN UP(I)",
|
||||
(const u16 *)L"MACHINE CLEAN UP(S)",
|
||||
(const u16 *)L"MACHINE CLEAN UP(C)",
|
||||
(const u16 *)L"MACHINE CLEAN UP(K)",
|
||||
},
|
||||
#ifdef BROADON_ENABLE
|
||||
{
|
||||
(const u16 *)L"ƒtƒŠ<EFBFBD>[ƒ\ƒtƒgBOX",
|
||||
@ -154,10 +164,11 @@ static const u16 *const s_pStrSettingElemTbl[ SETTING_MENU_ELEMENT_NUM ][ LCFG_T
|
||||
};
|
||||
|
||||
static MenuPos s_settingPos[] = {
|
||||
{ TRUE, 4 * 8, 4 * 8 },
|
||||
{ TRUE, 4 * 8, 6 * 8 },
|
||||
{ TRUE, 4 * 8, 8 * 8 },
|
||||
{ TRUE, 4 * 8, 10 * 8 },
|
||||
{ TRUE, 4 * 8, 12 * 8 },
|
||||
{ TRUE, 4 * 8, 10 * 8 },
|
||||
{ TRUE, 4 * 8, 12 * 8 },
|
||||
{ TRUE, 4 * 8, 14 * 8 },
|
||||
{ TRUE, 4 * 8, 16 * 8 },
|
||||
{ TRUE, 4 * 8, 18 * 8 },
|
||||
@ -270,6 +281,10 @@ int MachineSettingMain( void )
|
||||
g_pNowProcess = SetWirelessMain;
|
||||
break;
|
||||
case 7:
|
||||
CleanupMachineInit();
|
||||
g_pNowProcess = CleanupMachineMain;
|
||||
break;
|
||||
case 8:
|
||||
SetFreeSoftBoxInit();
|
||||
g_pNowProcess = SetFreeSoftBoxMain;
|
||||
break;
|
||||
|
||||
@ -75,6 +75,8 @@ extern void SetWirelessInit( void );
|
||||
extern int SetWirelessMain( void );
|
||||
extern void SetFreeSoftBoxInit( void );
|
||||
extern int SetFreeSoftBoxMain( void );
|
||||
extern void CleanupMachineInit( void );
|
||||
extern int CleanupMachineMain( void );
|
||||
|
||||
extern void DrawOKCancelButton( void );
|
||||
extern void CheckOKCancelButton(BOOL *tp_ok, BOOL *tp_cancel);
|
||||
|
||||
310
build/systemMenu_RED/MachineSettings/ARM9/src/cleanupMachine.c
Normal file
310
build/systemMenu_RED/MachineSettings/ARM9/src/cleanupMachine.c
Normal file
@ -0,0 +1,310 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL
|
||||
File: cleanupMachine.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 <sysmenu/namut.h>
|
||||
#include "misc.h"
|
||||
#include "MachineSetting.h"
|
||||
|
||||
//
|
||||
// <処理>
|
||||
// NANDの初期化処理(擬似フォーマット)
|
||||
//
|
||||
// <例外処理>
|
||||
//
|
||||
|
||||
// テスト表示
|
||||
#if 1
|
||||
#define DEBUGPRINT OS_TPrintf
|
||||
#else
|
||||
#define DEBUGPRINT(...) ((void)0)
|
||||
#endif
|
||||
|
||||
// define data----------------------------------
|
||||
|
||||
// 戻るボタン領域
|
||||
#define RETURN_BUTTON_TOP_X ( 2 * 8 )
|
||||
#define RETURN_BUTTON_TOP_Y ( 21 * 8 )
|
||||
#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + (8 * 8) )
|
||||
#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + (2 * 8) )
|
||||
|
||||
// OKボタン領域
|
||||
#define OK_BUTTON_TOP_X ( 26 * 8 )
|
||||
#define OK_BUTTON_TOP_Y ( 21 * 8 )
|
||||
#define OK_BUTTON_BOTTOM_X ( OK_BUTTON_TOP_X + (4 * 8) )
|
||||
#define OK_BUTTON_BOTTOM_Y ( OK_BUTTON_TOP_Y + (2 * 8) )
|
||||
|
||||
// YES/NOボタン領域
|
||||
#define YES_BUTTON_TOP_X ( 8 * 8 )
|
||||
#define YES_BUTTON_TOP_Y ( 8 * 8 )
|
||||
#define YES_BUTTON_BOTTOM_X ( YES_BUTTON_TOP_X + (3 * 8) )
|
||||
#define YES_BUTTON_BOTTOM_Y ( YES_BUTTON_TOP_Y + (2 * 8) )
|
||||
#define NOT_BUTTON_TOP_X ( 18 * 8 )
|
||||
#define NOT_BUTTON_TOP_Y ( 8 * 8 )
|
||||
#define NOT_BUTTON_BOTTOM_X ( NOT_BUTTON_TOP_X + (2 * 8) )
|
||||
#define NOT_BUTTON_BOTTOM_Y ( NOT_BUTTON_TOP_Y + (2 * 8) )
|
||||
|
||||
#define KEY_OK 0xffff
|
||||
#define KEY_RETURN 0xfffe
|
||||
#define KEY_YES 0xfffd
|
||||
#define KEY_NOT 0xfffc
|
||||
|
||||
// extern data----------------------------------
|
||||
|
||||
extern u32 bg_char_data[8 * 6];
|
||||
extern u16 bg_scr_data[32 * 32];
|
||||
extern u16 bg_birth_scr_data[32 * 32];
|
||||
|
||||
// function's prototype-------------------------
|
||||
|
||||
|
||||
// static variable------------------------------
|
||||
// 一時的にしか使わない物をstaticにしているので
|
||||
// 少しでもダイエットしたい時はWork扱いにしてAlloc→Freeしましょう
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MS_FORMATMACHINE_SELECT, // ユーザ選択中
|
||||
MS_FORMATMACHINE_PROCESSING, // 処理中
|
||||
MS_FORMATMACHINE_ERROR, // エラー発生
|
||||
MS_FORMATMACHINE_SUCCESS // 成功
|
||||
} eState;
|
||||
static BOOL sbInit = FALSE; // 初期化するかどうか
|
||||
static eState sState = MS_FORMATMACHINE_SELECT; // 現在の実行状態
|
||||
|
||||
// const data-----------------------------------
|
||||
|
||||
// ++ メインメニュー
|
||||
|
||||
//=========================================================
|
||||
//
|
||||
// ボタンのタッチ処理
|
||||
//
|
||||
//=========================================================
|
||||
|
||||
// 戻るボタン専用SelectSomethingFuncの実装
|
||||
static BOOL SelectReturnFunc( u16 *csr, TPData *tgt )
|
||||
{
|
||||
BOOL ret;
|
||||
ret = WithinRangeTP( RETURN_BUTTON_TOP_X, RETURN_BUTTON_TOP_Y,
|
||||
RETURN_BUTTON_BOTTOM_X, RETURN_BUTTON_BOTTOM_Y, tgt );
|
||||
if(ret) *csr = KEY_RETURN;
|
||||
return ret;
|
||||
}
|
||||
|
||||
// OKボタン専用SelectSomethingFuncの実装
|
||||
static BOOL SelectOKFunc( u16 *csr, TPData *tgt )
|
||||
{
|
||||
BOOL ret;
|
||||
ret = WithinRangeTP( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y,
|
||||
OK_BUTTON_BOTTOM_X, OK_BUTTON_BOTTOM_Y, tgt );
|
||||
if(ret) *csr = KEY_OK;
|
||||
return ret;
|
||||
}
|
||||
|
||||
// ON/OFFボタン専用SelectSomethingFuncの実装
|
||||
static BOOL SelectYESFunc( u16 *csr, TPData *tgt )
|
||||
{
|
||||
BOOL ret;
|
||||
ret = WithinRangeTP( YES_BUTTON_TOP_X, YES_BUTTON_TOP_Y,
|
||||
YES_BUTTON_BOTTOM_X, YES_BUTTON_BOTTOM_Y, tgt );
|
||||
if(ret) *csr = KEY_YES;
|
||||
return ret;
|
||||
}
|
||||
static BOOL SelectNOTFunc( u16 *csr, TPData *tgt )
|
||||
{
|
||||
BOOL ret;
|
||||
ret = WithinRangeTP( NOT_BUTTON_TOP_X, NOT_BUTTON_TOP_Y,
|
||||
NOT_BUTTON_BOTTOM_X, NOT_BUTTON_BOTTOM_Y, tgt );
|
||||
if(ret) *csr = KEY_NOT;
|
||||
return ret;
|
||||
}
|
||||
|
||||
// パッドのキーの長押しを検出(ReadPad()を呼び出しているループ内で呼ばれる必要がある)
|
||||
static u16 DetectPadRepeat( void )
|
||||
{
|
||||
static u8 repcount[12]; // 各キーが長押しされているフレーム数
|
||||
u16 rep = 0;
|
||||
int i;
|
||||
|
||||
for( i=0; i < 12; i++ ) // 全部のキーについて
|
||||
{
|
||||
if( pad.trg & ((u16)(0x0001 << i)) ) // 押されたらカウントし始める
|
||||
{
|
||||
repcount[i] = 1;
|
||||
}
|
||||
else if( pad.cont & ((u16)(0x0001 << i)) )
|
||||
{
|
||||
if( repcount[i] > 25 ) // ある一定以上のフレーム数押されていたら長押しされていたと判定
|
||||
{
|
||||
rep = (u16)(rep | (u16)(0x0001 << i));
|
||||
repcount[i] = 25 - 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
repcount[i]++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
repcount[i] = 0;
|
||||
}
|
||||
}
|
||||
return rep;
|
||||
}
|
||||
|
||||
//=========================================================
|
||||
//
|
||||
// メインメニュー
|
||||
//
|
||||
//=========================================================
|
||||
|
||||
// 描画
|
||||
static void DrawCleanupMachineScene( void )
|
||||
{
|
||||
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL );
|
||||
PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"MACHINE CLEAN UP" );
|
||||
|
||||
PutStringUTF16( 4*8, 4*8, TXT_COLOR_BLUE, (const u16 *)L"Start Cleaning?" );
|
||||
if( sbInit )
|
||||
{
|
||||
PutStringUTF16( YES_BUTTON_TOP_X-1*8, YES_BUTTON_TOP_Y, TXT_COLOR_GREEN, (const u16*)L">YES<" );
|
||||
PutStringUTF16( NOT_BUTTON_TOP_X-1*8, NOT_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16*)L" NO" );
|
||||
}
|
||||
else
|
||||
{
|
||||
PutStringUTF16( YES_BUTTON_TOP_X-1*8, YES_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16*)L" YES" );
|
||||
PutStringUTF16( NOT_BUTTON_TOP_X-1*8, NOT_BUTTON_TOP_Y, TXT_COLOR_GREEN, (const u16*)L">NO<" );
|
||||
}
|
||||
|
||||
// 実行状況によって表示が異なる
|
||||
switch( sState )
|
||||
{
|
||||
case MS_FORMATMACHINE_SELECT:
|
||||
PutStringUTF16( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"<EFBFBD>OK" );
|
||||
break;
|
||||
|
||||
case MS_FORMATMACHINE_PROCESSING:
|
||||
PutStringUTF16( 4*8, 12*8, TXT_COLOR_GREEN, (const u16*)L"In Processing..." );
|
||||
break;
|
||||
|
||||
case MS_FORMATMACHINE_ERROR:
|
||||
PutStringUTF16( 4*8, 12*8, TXT_UCOLOR_G0, (const u16*)L"In Processing..." );
|
||||
PutStringUTF16( 4*8, 14*8, TXT_COLOR_RED, (const u16*)L"ERROR!" );
|
||||
PutStringUTF16( RETURN_BUTTON_TOP_X, RETURN_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"<EFBFBD>RETURN" );
|
||||
break;
|
||||
|
||||
case MS_FORMATMACHINE_SUCCESS:
|
||||
PutStringUTF16( 4*8, 12*8, TXT_UCOLOR_G0, (const u16*)L"In Processing..." );
|
||||
PutStringUTF16( 4*8, 14*8, TXT_COLOR_GREEN, (const u16*)L"Completed!" );
|
||||
PutStringUTF16( RETURN_BUTTON_TOP_X, RETURN_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"<EFBFBD>RETURN" );
|
||||
break;
|
||||
|
||||
default:
|
||||
DEBUGPRINT( "invalid state\n" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 初期化
|
||||
void CleanupMachineInit( void )
|
||||
{
|
||||
// BGデータのロード処理
|
||||
GX_LoadBG1Char(bg_char_data, 0, sizeof(bg_char_data));
|
||||
GX_LoadBG1Scr(bg_scr_data, 0, sizeof(bg_scr_data));
|
||||
|
||||
DrawCleanupMachineScene();
|
||||
|
||||
SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 );
|
||||
|
||||
GX_SetVisiblePlane ( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1);
|
||||
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
|
||||
|
||||
sbInit = FALSE;
|
||||
sState = MS_FORMATMACHINE_SELECT; // 初期状態
|
||||
}
|
||||
|
||||
// メニューから呼ばれるメイン
|
||||
int CleanupMachineMain( void )
|
||||
{
|
||||
SelectSomethingFunc funcSelect[3]={SelectOKFunc, SelectYESFunc, SelectNOTFunc};
|
||||
SelectSomethingFunc funcFinish[1]={SelectReturnFunc};
|
||||
BOOL tpCommit = FALSE;
|
||||
static u16 commit;
|
||||
|
||||
ReadTP();
|
||||
|
||||
// タッチできるボタンは実行状況によって異なる
|
||||
switch( sState )
|
||||
{
|
||||
case MS_FORMATMACHINE_SELECT:
|
||||
if( (pad.trg & PAD_KEY_LEFT) || (pad.trg & PAD_KEY_RIGHT) )
|
||||
{
|
||||
sbInit = !sbInit;
|
||||
}
|
||||
tpCommit = SelectSomethingByTP( &commit, funcSelect, 3 ); // 選択とOKのみ
|
||||
if( tpCommit && (commit==KEY_YES) )
|
||||
{
|
||||
sbInit = TRUE;
|
||||
}
|
||||
else if( tpCommit && (commit == KEY_NOT) )
|
||||
{
|
||||
sbInit = FALSE;
|
||||
}
|
||||
|
||||
if( (pad.trg & PAD_BUTTON_A) || (tpCommit && (commit == KEY_OK)) )
|
||||
{
|
||||
if( sbInit )
|
||||
{
|
||||
sState = MS_FORMATMACHINE_PROCESSING; // 遷移
|
||||
}
|
||||
else
|
||||
{
|
||||
MachineSettingInit();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case MS_FORMATMACHINE_PROCESSING:
|
||||
// 選択を受け付けない
|
||||
if( !NAMUT_Format() ) // 初期化実行
|
||||
{
|
||||
sState = MS_FORMATMACHINE_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
sState = MS_FORMATMACHINE_SUCCESS;
|
||||
}
|
||||
break;
|
||||
|
||||
case MS_FORMATMACHINE_ERROR:
|
||||
case MS_FORMATMACHINE_SUCCESS:
|
||||
tpCommit = SelectSomethingByTP( &commit, funcFinish, 1 ); // Returnのみ
|
||||
if( (pad.trg & PAD_BUTTON_B) || (tpCommit && (commit == KEY_RETURN)) )
|
||||
{
|
||||
MachineSettingInit();
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// 再描画
|
||||
DrawCleanupMachineScene();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -70,6 +70,9 @@ void TwlMain(void)
|
||||
// システムの初期化------------------
|
||||
InitAllocator();
|
||||
|
||||
// NAMライブラリ初期化
|
||||
NAM_Init( Alloc, Free ); // NAMUTライブラリがNAMライブラリを使用している
|
||||
|
||||
// ※本来ならランチャーからのパラメータチェックを行い、
|
||||
// 初回起動シーケンスに入るパスがある
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user