diff --git a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c index f10b349f..bdac76a0 100644 --- a/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c +++ b/build/systemMenu_RED/MachineSettings/ARM9/src/setOwnerInfo.c @@ -190,6 +190,8 @@ static void DrawOwnerInfoMenuScene( void ) DrawMenu( s_csr, &s_settingParam ); // ニックネーム PutStringUTF16( 128 , 8*8, TXT_COLOR_USER, TSD_GetNickname()->buffer ); + // 誕生日 + PrintfSJIS( 128, 10*8, TXT_COLOR_USER, "%d/%d", TSD_GetBirthday()->month, TSD_GetBirthday()->day); // カラー color = TSD_GetUserColor(); PutStringUTF16( 128 , 12*8, TXT_COLOR_USER, L"■" ); @@ -505,6 +507,14 @@ static int SetNicknameMain( void ) return 0; } +static void DrawSetBirthdayScene( void ) +{ + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); + PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"BIRTHDAY" ); + PutStringUTF16( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, TXT_COLOR_USER, (const u16 *)L"CANCEL" ); + PrintfSJIS( 128, 10*8, TXT_COLOR_USER, "%d/%d", TSD_GetBirthday()->month, TSD_GetBirthday()->day); +} + // 誕生日編集の初期化 static void SetBirthdayInit( void ) { @@ -512,17 +522,13 @@ static void SetBirthdayInit( void ) GX_DispOff(); GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); - - PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"BIRTHDAY" ); - PutStringUTF16( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, TXT_COLOR_USER, (const u16 *)L"CANCEL" ); // NITRO設定データのlanguageに応じたメインメニュー構成言語の切り替え for( i = 0; i < USER_INFO_MENU_ELEMENT_NUM; i++ ) { s_pStrSetting[ i ] = s_pStrSettingElemTbl[ i ][ TSD_GetLanguage() ]; } - DrawMenu( s_csr, &s_settingParam ); + DrawSetBirthdayScene(); SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 ); @@ -561,6 +567,8 @@ static int SetBirthdayMain( void ) CANCEL_BUTTON_BOTTOM_X, CANCEL_BUTTON_BOTTOM_Y, &tpd.disp ); } + DrawSetBirthdayScene(); + if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 if( s_settingPos[ s_csr ].enable ) { switch( s_csr ) { @@ -601,7 +609,10 @@ static void DrawColorSample( void ) { PutStringUTF16( 88 + 24 * (l%4), 54 + 24 * (l/4), 40 + l + 8 * (l/8), (const u16 *)L"■" ); } - PutStringUTF16( 88 + 24 * (s_color_csr%4), 54 + 24 * (s_color_csr/4), TXT_COLOR_WHITE, (const u16 *)L"☆" ); + for(l=0;l<4;l++) + { + PutStringUTF16( 83 + 24 * (s_color_csr%4) + 10*(l%2), 49 + 24 * (s_color_csr/4) + 10*(l/2), TXT_COLOR_USER, (const u16 *)L"■" ); + } } // ユーザーカラー編集の初期化 diff --git a/build/systemMenu_RED/misc/include/misc.h b/build/systemMenu_RED/misc/include/misc.h index 030e2599..7d5621f1 100644 --- a/build/systemMenu_RED/misc/include/misc.h +++ b/build/systemMenu_RED/misc/include/misc.h @@ -78,6 +78,7 @@ enum TXT_COLOR_4BPP_TEXT=1 }; +#define TXT_COLOR_USER 17 // 時計表示場所 #define RTC_DATE_TOP_X ( 9 * 8 ) @@ -165,6 +166,7 @@ void SetBannerIconOBJ( GXOamAttr *pDstOAM, BannerFileV1 *bannerp ); BOOL GetRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ); void DrawRTCData( RTCDrawProperty *pRTCDraw ); void GetAndDrawRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ); +void ChangeUserColor( u8 col ); #ifdef __cplusplus } diff --git a/build/systemMenu_RED/misc/src/misc.c b/build/systemMenu_RED/misc/src/misc.c index b04065ff..13e32ceb 100644 --- a/build/systemMenu_RED/misc/src/misc.c +++ b/build/systemMenu_RED/misc/src/misc.c @@ -29,6 +29,8 @@ enum { TXT_CPALETTE_MAIN, TXT_CPALETTE_USERCOLOR, + TXT_CPALETTE_USERCOLORSAMPLE1, + TXT_CPALETTE_USERCOLORSAMPLE2, TXT_CPALETTE_4BPP, TXT_NUM_CPALEETE }; @@ -36,12 +38,22 @@ enum // デモ共通のカラーパレット GXRgb TXTColorPalette[TXT_NUM_CPALEETE * 16] = { - GX_RGB(31, 31, 31), GX_RGB(31, 31, 31), GX_RGB( 0, 0, 0), GX_RGB(31, 0, 0), + GX_RGB(31, 31, 31), GX_RGB(31, 31, 31), GX_RGB( 0, 0, 0), GX_RGB(31, 0, 0),// 基本文字色 GX_RGB( 0, 31, 0), GX_RGB( 0, 0, 31), GX_RGB( 0, 31, 31), GX_RGB(31, 0, 31), GX_RGB(31, 31, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), - GX_RGB( 0, 0, 0), GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3), + GX_RGB( 0, 0, 0), GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3),// ユーザーカラー領域 + GX_RGB(31, 17, 31), GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), + GX_RGB( 0, 20, 7), GX_RGB( 9, 27, 17), GX_RGB( 6, 23, 30), GX_RGB( 0, 11, 30), + GX_RGB( 0, 0, 18), GX_RGB(17, 0, 26), GX_RGB(26, 0, 29), GX_RGB(31, 0, 18), + + GX_RGB( 0, 0, 0), GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3),// ユーザーカラーのサンプル領域2 + GX_RGB(31, 17, 31), GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), + GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3), GX_RGB(31, 17, 31), + GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), GX_RGB( 0, 31, 0), + + GX_RGB( 0, 0, 0), GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3),// ユーザーカラーのサンプル領域1 GX_RGB(31, 17, 31), GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), GX_RGB( 0, 20, 7), GX_RGB( 9, 27, 17), GX_RGB( 6, 23, 30), GX_RGB( 0, 11, 30), GX_RGB( 0, 0, 18), GX_RGB(17, 0, 26), GX_RGB(26, 0, 29), GX_RGB(31, 0, 18), @@ -52,6 +64,47 @@ GXRgb TXTColorPalette[TXT_NUM_CPALEETE * 16] = GRAY( 8), GRAY( 6), GRAY( 3), GRAY( 0), }; +// グラデパレットを作るためのマクロ +#define MAKECOLOR(r,g,b) GX_RGB( 0, 0, 0), GX_RGB(r, g, b), MC(r,g,b,1), MC(r,g,b,2),\ + MC(r,g,b,3), MC(r,g,b,4), MC(r,g,b,5), MC(r,g,b,6),\ + MC(r,g,b,7), MC(r,g,b,8), MC(r,g,b,9), MC(r,g,b,10),\ + MC(r,g,b,11), MC(r,g,b,12), MC(r,g,b,13), GX_RGB(31, 31, 31) + +#define MC(r,g,b,i) GX_RGB(r+((31-r)*i)/14, g+((31-g)*i)/14, b+((31-b)*i)/14) + +// ユーザーカラーパレット切り替え用 +GXRgb TempPalette[16 * 16] = +{ + MAKECOLOR(12, 16, 19), + MAKECOLOR(23, 9, 0), + MAKECOLOR(31, 0, 3), + MAKECOLOR(31, 17, 31), + MAKECOLOR(31, 18, 0), + MAKECOLOR(30, 28, 0), + MAKECOLOR(21, 31, 0), + MAKECOLOR( 0, 31, 0), + MAKECOLOR( 0, 20, 7), + MAKECOLOR( 9, 27, 17), + MAKECOLOR( 6, 23, 30), + MAKECOLOR( 0, 11, 30), + MAKECOLOR( 0, 0, 18), + MAKECOLOR(17, 0, 26), + MAKECOLOR(26, 0, 29), + MAKECOLOR(31, 0, 18), +}; + +// BGキャラクタ +const unsigned int bg_char_data[16 * 3] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000,// 0000h + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x11111111, 0x44444444, 0x77777777, 0x99999999,// 0001h + 0xaaaaaaaa, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, + 0xdddddddd, 0xdddddddd, 0xdddddddd, 0xeeeeeeee,// 0002h + 0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee, 0xeeeeeeee, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,// 0003h + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, +}; + // extern data----------------------------------------------------------------- // define data----------------------------------------------------------------- @@ -96,6 +149,59 @@ static RTCDate s_rtcDate; static RTCTime s_rtcTime; static u16 s_vcount; + +static const u16 sScrnBuf[32 * 32]= +{ + 0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,//0 + 0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001,0x1001, + 0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,//1 + 0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002,0x1002, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//2 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//3 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//4 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//5 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//6 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//7 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//8 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//9 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//10 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//11 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//12 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//13 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//14 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//15 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//16 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//17 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//18 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//19 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//20 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,//21 + 0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003,0x1003, + 0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,//22 + 0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802,0x1802, + 0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,//23 + 0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801,0x1801, +};// Buffer for screen data(背景の枠) + static char s_strBuffer[ STRING_LENGTH_MAX * 2 ] ATTRIBUTE_ALIGN(2); static u16 s_strBufferUTF16[ STRING_LENGTH_MAX ]; @@ -213,17 +319,29 @@ static void InitScreen( void ) // メイン画面 BG 0 を設定 G2_SetBG0Control( GX_BG_SCRSIZE_TEXT_256x256, // スクリーンサイズ 256x256 - GX_BG_COLORMODE_16, // カラーモード 16色 + GX_BG_COLORMODE_256, // カラーモード 256色 GX_BG_SCRBASE_0xf800, // スクリーンベース GX_BG_CHARBASE_0x00000, // キャラクタベース GX_BG_EXTPLTT_01 // 拡張パレットスロット ); - GX_SetVisiblePlane( GX_PLANEMASK_BG0 ); - + G2_SetBG1Control( + GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text + GX_BG_COLORMODE_16, // use 16 colors mode + GX_BG_SCRBASE_0xf000, // screen base offset + 0x0000 is the address for BG #1 screen + GX_BG_CHARBASE_0x10000, // character base offset + 0x04000 is the address for BG #0 characters + GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled + ); + GX_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); + G2_SetBG0Priority(0); + G2_SetBG1Priority(1); + + GX_LoadBG1Char(bg_char_data, 0, sizeof(bg_char_data)); + GX_LoadBG1Scr(sScrnBuf, 0, sizeof(sScrnBuf)); + // サブ画面 BG 0 を設定 G2S_SetBG0Control( GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 256 colors mode + GX_BG_COLORMODE_16, // use 16 colors mode GX_BG_SCRBASE_0xf800, // screen base offset + 0x0000 is the address for BG #0 screen GX_BG_CHARBASE_0x00000, // character base offset + 0x04000 is the address for BG #0 characters GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled @@ -250,10 +368,10 @@ static void InitCanvas( void ) // CharCanvas の初期化 NNS_G2dCharCanvasInitForBG( &gCanvas, - (GXCharFmt16*)G2_GetBG0CharPtr() + CHARACTER_OFFSET, + (GXCharFmt256*)G2_GetBG0CharPtr() + CHARACTER_OFFSET, CANVAS_WIDTH, CANVAS_HEIGHT, - NNS_G2D_CHARA_COLORMODE_16 + NNS_G2D_CHARA_COLORMODE_256 ); // TextCanvasの初期化 @@ -638,3 +756,15 @@ void GetAndDrawRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ) DrawRTCData( pRTCDraw ); } } + +// ユーザーカラー領域の切り替え +void ChangeUserColor( u8 col ) +{ + int l; + if(col > 15) return; + for(l=0;l<16;l++) + { + TXTColorPalette[16+l] = TempPalette[16 * col + l]; + } + GX_LoadBGPltt( TXTColorPalette, 0, sizeof(TXTColorPalette) ); +}