diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/main.c b/build/systemMenu_RED/MachineSettings/ARM9/src/main.c index ae9b6444..22e2a44b 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/main.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/main.c @@ -71,6 +71,10 @@ void TwlMain(void) // TWL設定のリード SYSM_SetAllocFunc( Alloc, Free ); // SYSM_ReadTWLSettingsFile()の実行に必要。 + + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルの読み込み + // :::::::::::::::::::::::::::::::::::::::::::::: if( SYSM_ReadTWLSettingsFile() ) { SYSM_CaribrateTP(); } diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c b/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c index 804a9fe3..61f9a164 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/selectCountry.c @@ -58,9 +58,9 @@ static u16 s_menu_display_start; static const u16 *s_pStrCountry[MENU_DISPLAY_SIZE]; -static int list_size; -static int bar_height; -static double dots_per_item; +static int s_list_size; +static int s_bar_height; +static double s_dots_per_item; // const data ----------------------------------------- extern const u16 *const s_pStrCountryName[]; @@ -98,10 +98,10 @@ static void InitScrollMenuList( void ) s_list_end = (u16)(region_country_mapping[s_regionCode]); if(s_list_start > s_list_end) OS_Panic("selectCountry.c:s_list_start>s_list_end!"); - list_size = s_list_end - s_list_start + 1; + s_list_size = s_list_end - s_list_start + 1; // 画面に表示する最大項目数よりも、国名リストが小さいか? - countrySel.num = (MENU_DISPLAY_SIZE < list_size) ? MENU_DISPLAY_SIZE : list_size ; + countrySel.num = (MENU_DISPLAY_SIZE < s_list_size) ? MENU_DISPLAY_SIZE : s_list_size ; // 設定されていた国名コードがリスト範囲に入っていなければデフォルト値にする if(s_countryCode < s_list_start || s_list_end < s_countryCode) @@ -123,11 +123,11 @@ static void InitScrollMenuList( void ) } // スクロールバー - bar_height = BAR_HEIGHT_MAX - (list_size - countrySel.num); - dots_per_item = 1; - if(bar_height < BAR_HEIGHT_MIN){ - bar_height = BAR_HEIGHT_MIN; - dots_per_item = (double)(BAR_HEIGHT_MAX-BAR_HEIGHT_MIN)/(list_size - countrySel.num); + s_bar_height = BAR_HEIGHT_MAX - (s_list_size - countrySel.num); + s_dots_per_item = 1; + if(s_bar_height < BAR_HEIGHT_MIN){ + s_bar_height = BAR_HEIGHT_MIN; + s_dots_per_item = (double)(BAR_HEIGHT_MAX-BAR_HEIGHT_MIN)/(s_list_size - countrySel.num); } } @@ -144,9 +144,9 @@ void SelectCountryInit( void ) PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"Select country." ); } - // :::::::::::::::::::::::::::::::::::::::::::::: - // TWL設定データの読み込み - // :::::::::::::::::::::::::::::::::::::::::::::: + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: // 設定済みリージョンと国名コードの取得 if( !SYSM_IsValidTSD() || ( TSD_GetRegion() >= TWL_REGION_MAX ) ) { @@ -234,7 +234,7 @@ static void MoveCursorByScrollBar( void ) { static BOOL holding = FALSE; static int dy; - int bar_top = (int)(BAR_ZERO_Y+dots_per_item * (s_menu_display_start - s_list_start)); + int bar_top = (int)(BAR_ZERO_Y+s_dots_per_item * (s_menu_display_start - s_list_start)); if(tpd.disp.touch) { if(holding) @@ -247,9 +247,9 @@ static void MoveCursorByScrollBar( void ) { bar_top = tpd.disp.y - dy - BAR_LOOSENESS; } - s_menu_display_start = (u16)(((bar_top - BAR_ZERO_Y)/dots_per_item) + s_list_start); + s_menu_display_start = (u16)(((bar_top - BAR_ZERO_Y)/s_dots_per_item) + s_list_start); } - else if(WithinRangeTP(BAR_ZERO_X, bar_top+BAR_OFFSET,BAR_ZERO_X + BAR_WIDTH,bar_top+BAR_OFFSET+bar_height,&tpd.disp)) + else if(WithinRangeTP(BAR_ZERO_X, bar_top+BAR_OFFSET,BAR_ZERO_X + BAR_WIDTH,bar_top+BAR_OFFSET+s_bar_height,&tpd.disp)) { holding = TRUE; dy = tpd.disp.y - bar_top; @@ -282,11 +282,11 @@ static void DrawCountryMain( void ) // 簡易スクロールバー表示 { PutStringUTF16( BAR_ZERO_X, BAR_ZERO_Y-BAR_BUTTON_HEIGHT, TXT_UCOLOR_G0, (const u16 *)L"□" ); - for(l=0; l= TWL_REGION_MAX ) ) { s_regionCode = (TWLRegion)TWL_DEFAULT_REGION; @@ -110,6 +114,7 @@ void SelectLanguageInit( void ) s_regionCode = (TWLRegion)TSD_GetRegion(); } + // 言語の取得 if( !SYSM_IsValidTSD() || ( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) { temp_langCode = TWL_LANG_ENGLISH; @@ -117,6 +122,7 @@ void SelectLanguageInit( void ) temp_langCode = TSD_GetLanguage(); } + // リージョン-言語マッピング情報から、現在のリージョンで選択できる言語をリストアップ s_lang = 0; for(l=0; l= TWL_REGION_MAX ) ) { s_regionCode = (TWLRegion)TWL_DEFAULT_REGION; diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c index a71be9fd..4c10d8d4 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c @@ -60,7 +60,7 @@ #define CHAR_USCORE L'_' #define KEY_PER_LINE 11 -#define KEY_START 109 //ソフトウェアキーのカーソルはキャンセルキーから開始 +#define KEY_START 109 //ソフトウェアキーのカーソルデフォルト位置はキャンセルキー #define KEY_OK 0xffff #define KEY_CANCEL 0xfffe @@ -92,7 +92,7 @@ static int SetCommentMain( void ); // 少しでもダイエットしたい時はWork扱いにしてAlloc→Freeしましょう static u16 s_csr = 0; static const u16 *s_pStrSetting[ USER_INFO_MENU_ELEMENT_NUM ]; // メインメニュー用文字テーブルへのポインタリスト -static int char_mode = 0; +static int s_char_mode = 0; static u16 s_key_csr = 0; static u8 s_color_csr = 0; static BOOL s_birth_csr = FALSE; @@ -193,7 +193,7 @@ static void SetSoftKeyboardButton(int mode) count++; } } - char_mode = mode; + s_char_mode = mode; } // キャンセルボタン専用SelectSomethingFuncの実装 @@ -225,6 +225,9 @@ static void DrawOwnerInfoMenuScene( void ) PutStringUTF16( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"ARETURN" ); // メニュー項目 DrawMenu( s_csr, &s_settingParam ); + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得して表示 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: // ニックネーム PutStringUTF16( 128 , 8*8, TXT_UCOLOR_G0, TSD_GetNickname()->buffer ); // 誕生日 @@ -329,7 +332,7 @@ static void DrawCharKeys( void ) for( l=0; l= CHAR_LIST_CHAR_NUM) return FALSE;// 明らかにはみ出した // 候補座標のキーコード取得 - code = char_tbl[char_mode][csrxy]; + code = char_tbl[s_char_mode][csrxy]; if(code == EOM_) return FALSE; // 候補座標の領域取得 @@ -515,7 +521,7 @@ static void PadDetectOnKey( NameOrComment noc ) else s_key_csr -= KEY_PER_LINE-1; if( s_key_csr == CHAR_LIST_CHAR_NUM ) s_key_csr -= s_key_csr%KEY_PER_LINE; } - while(char_tbl[char_mode][s_key_csr]==EOM_); + while(char_tbl[s_char_mode][s_key_csr]==EOM_); } if( pad.trg & PAD_KEY_LEFT ){ do @@ -524,7 +530,7 @@ static void PadDetectOnKey( NameOrComment noc ) else s_key_csr += KEY_PER_LINE-1; if( s_key_csr & 0x8000 ) s_key_csr = KEY_PER_LINE-1; } - while(char_tbl[char_mode][s_key_csr]==EOM_); + while(char_tbl[s_char_mode][s_key_csr]==EOM_); } if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 do @@ -532,7 +538,7 @@ static void PadDetectOnKey( NameOrComment noc ) s_key_csr += KEY_PER_LINE; if( s_key_csr >= CHAR_LIST_CHAR_NUM ) s_key_csr -= KEY_PER_LINE*(s_key_csr/KEY_PER_LINE); } - while(char_tbl[char_mode][s_key_csr]==EOM_); + while(char_tbl[s_char_mode][s_key_csr]==EOM_); } if( pad.trg & PAD_KEY_UP ){ do @@ -541,14 +547,14 @@ static void PadDetectOnKey( NameOrComment noc ) else s_key_csr -= KEY_PER_LINE; if( s_key_csr >= CHAR_LIST_CHAR_NUM ) s_key_csr -= KEY_PER_LINE; } - while(char_tbl[char_mode][s_key_csr]==EOM_); + while(char_tbl[s_char_mode][s_key_csr]==EOM_); } func[0] = (SelectSomethingFunc)SelectSoftwareKeyFunc; tp_select = SelectSomethingByTP(&s_key_csr, func, 1 ); if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // キーが押された - PushKeys( char_tbl[char_mode][s_key_csr], noc ); + PushKeys( char_tbl[s_char_mode][s_key_csr], noc ); }else if( pad.trg & PAD_BUTTON_B ) { DeleteACharacter(noc); } @@ -569,6 +575,9 @@ static void SetNicknameInit( void ) SetSoftKeyboardButton(0); s_key_csr = KEY_START; + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: // ニックネーム用テンポラリバッファの初期化 s_temp_name.length = TSD_GetNickname()->length; SVC_CpuClear(CHAR_USCORE, s_temp_name.buffer, TWL_NICKNAME_LENGTH * 2, 16); @@ -635,6 +644,10 @@ static BOOL SelectBirthdayFunc( u16 *csr, TPData *tgt ) // 誕生日編集の初期化 static void SetBirthdayInit( void ) { + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // 誕生日 s_temp_birthday.month = TSD_GetBirthday()->month; s_temp_birthday.day = TSD_GetBirthday()->day; @@ -660,38 +673,13 @@ static void CheckDate( void ) if( s_temp_birthday.day > maxday ) s_temp_birthday.day = 1; } -// 誕生日編集メイン -static int SetBirthdayMain( void ) +// 押している間数字が一定スピードで変化するような処理 +static void Birthday_AutoNumScrollByTP( void ) { - SelectSomethingFunc func[2]={SelectCancelFunc, SelectOKFunc}; - BOOL tp_touch = FALSE; - u16 temp_csr; - u16 temp_ok_cancel; static u16 first_csr = 0xffff; + u16 temp_csr; static int same_count = 0; - ReadTP(); - - //-------------------------------------- - // キー入力処理 - //-------------------------------------- - if( pad.trg & PAD_KEY_DOWN ){ - (*(s_birth_csr ? &s_temp_birthday.month : &s_temp_birthday.day))--; - } - if( pad.trg & PAD_KEY_UP ){ - (*(s_birth_csr ? &s_temp_birthday.month : &s_temp_birthday.day))++; - } - if( pad.trg & (PAD_KEY_RIGHT | PAD_KEY_LEFT)){ // カーソルの移動 - s_birth_csr = !s_birth_csr; - } - - // 日付チェック - CheckDate(); - - // TPチェック - tp_touch = SelectSomethingByTP(&temp_ok_cancel, func, 2 ); - - // 押している間数字が一定スピードで変化するような処理 if( tpd.disp.touch ) { BOOL t = SelectBirthdayFunc( &temp_csr, &tpd.disp ); @@ -735,6 +723,37 @@ static int SetBirthdayMain( void ) same_count = 0; first_csr = 0xffff; } +} + +// 誕生日編集メイン +static int SetBirthdayMain( void ) +{ + SelectSomethingFunc func[2]={SelectCancelFunc, SelectOKFunc}; + BOOL tp_touch = FALSE; + u16 temp_ok_cancel; + + ReadTP(); + + //-------------------------------------- + // キー入力処理 + //-------------------------------------- + if( pad.trg & PAD_KEY_DOWN ){ + (*(s_birth_csr ? &s_temp_birthday.month : &s_temp_birthday.day))--; + } + if( pad.trg & PAD_KEY_UP ){ + (*(s_birth_csr ? &s_temp_birthday.month : &s_temp_birthday.day))++; + } + if( pad.trg & (PAD_KEY_RIGHT | PAD_KEY_LEFT)){ // カーソルの移動 + s_birth_csr = !s_birth_csr; + } + + // 日付チェック + CheckDate(); + + // TPチェック + tp_touch = SelectSomethingByTP(&temp_ok_cancel, func, 2 ); + // TPでボタンを押している間数字が一定スピードで変化するような処理 + Birthday_AutoNumScrollByTP(); // 日付チェック CheckDate(); @@ -744,6 +763,9 @@ static int SetBirthdayMain( void ) if( pad.trg & PAD_BUTTON_A || (tp_touch && temp_ok_cancel == KEY_OK) ) { TSD_SetBirthday(&s_temp_birthday); TSD_SetFlagBirthday( TRUE ); + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルへの書き込み + // :::::::::::::::::::::::::::::::::::::::::::::: (void)SYSM_WriteTWLSettingsFile();// ファイルへ書き込み SetOwnerInfoInit(); g_pNowProcess = SetOwnerInfoMain; @@ -814,6 +836,10 @@ static void SetUserColorInit( void ) SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 ); + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // ユーザーカラー s_color_csr = TSD_GetUserColor(); GX_SetVisiblePlane ( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); @@ -858,7 +884,9 @@ static int SetUserColorMain( void ) if( ( pad.trg & PAD_BUTTON_A ) || (tp_touch && temp_csr == KEY_OK) ) { // 色決定 TSD_SetUserColor( (u8 )s_color_csr ); - TSD_SetFlagUserColor( TRUE ); + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルへの書き込み + // :::::::::::::::::::::::::::::::::::::::::::::: (void)SYSM_WriteTWLSettingsFile();// ファイルへ書き込み SetOwnerInfoInit(); g_pNowProcess = SetOwnerInfoMain; @@ -896,6 +924,9 @@ static void SetCommentInit( void ) SetSoftKeyboardButton(0); s_key_csr = KEY_START; + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: // コメント用テンポラリバッファの初期化 s_temp_comment.length = TSD_GetComment()->length; SVC_CpuClear(CHAR_USCORE, s_temp_comment.buffer, TWL_COMMENT_LENGTH * 2, 16);