From cb62762ab1a1ea7732d4f3721523a1d053a16d6f Mon Sep 17 00:00:00 2001 From: yosiokat Date: Wed, 1 Oct 2008 05:24:27 +0000 Subject: [PATCH] =?UTF-8?q?EULA=E8=A8=AD=E5=AE=9A=E3=83=84=E3=83=BC?= =?UTF-8?q?=E3=83=ABsetEULA=E3=81=AE=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2563 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- RomHeader/001A/libsyscall.a | Bin 0 -> 3132 bytes RomHeader/001A/libsyscall_c.bin | Bin 0 -> 2048 bytes RomHeader/001A/rom_header_001a.template.sbin | Bin 0 -> 16384 bytes build/systemMenu_tools/setEULA/ARM9/Makefile | 103 +++ build/systemMenu_tools/setEULA/ARM9/main.rsf | 209 ++++++ .../setEULA/ARM9/src/MachineSetting.c | 269 ++++++++ .../setEULA/ARM9/src/MachineSetting.h | 71 ++ .../systemMenu_tools/setEULA/ARM9/src/main.c | 127 ++++ .../setEULA/ARM9/src/setEULA.c | 641 ++++++++++++++++++ build/systemMenu_tools/setEULA/Makefile | 30 + .../systemMenu_tools/setEULA/banner/Makefile | 47 ++ .../setEULA/banner/banner_v3.bsf | Bin 0 -> 768 bytes .../setEULA/banner/icon/gameIcon.bmp | Bin 0 -> 630 bytes 13 files changed, 1497 insertions(+) create mode 100644 RomHeader/001A/libsyscall.a create mode 100644 RomHeader/001A/libsyscall_c.bin create mode 100644 RomHeader/001A/rom_header_001a.template.sbin create mode 100644 build/systemMenu_tools/setEULA/ARM9/Makefile create mode 100644 build/systemMenu_tools/setEULA/ARM9/main.rsf create mode 100644 build/systemMenu_tools/setEULA/ARM9/src/MachineSetting.c create mode 100644 build/systemMenu_tools/setEULA/ARM9/src/MachineSetting.h create mode 100644 build/systemMenu_tools/setEULA/ARM9/src/main.c create mode 100644 build/systemMenu_tools/setEULA/ARM9/src/setEULA.c create mode 100644 build/systemMenu_tools/setEULA/Makefile create mode 100644 build/systemMenu_tools/setEULA/banner/Makefile create mode 100644 build/systemMenu_tools/setEULA/banner/banner_v3.bsf create mode 100644 build/systemMenu_tools/setEULA/banner/icon/gameIcon.bmp diff --git a/RomHeader/001A/libsyscall.a b/RomHeader/001A/libsyscall.a new file mode 100644 index 0000000000000000000000000000000000000000..f29bcb9078d5cace8d913d77cb95ed380a571f04 GIT binary patch literal 3132 zcma);c|6qn8pmhG*t=ytm3_;;Mz&*0WQ;7ymJr4)5i^{bX^bTiDN9$DlQm>NV;32r zL?X$V7$HlO?I?#X*(vuo^}QiJpoXlhsMHC#nUe|K{I`g|r; z*~80F;cTyzXL)q7jB9PR%4}>f&t_+Fdv3}+G_L?!Dg`9IoBPO0!A#b|ALv=>Y~Q$Pev2K4y9e-Cs;cyb>^=!ywBo z+sCx(Dr%aCD*p+$2+Ob{1m@F=GE16hv5b0v>WTCz=wgg3U$QET%} z8^cmh52|s$3#~T0-3t!5mYwvbM()8u+tq<{us3Xc!q@2y9$%g{NF?5JIP8Kb)n#hE z=6-2Yh7uIoa$BoY)OL+b@IpOS3QIQU8WK)YTxa_XBWG0Pg>&FQV?+PJ+-ZT z`SA7-PnnYXnyW6H24ZQJQJpCfHuVA6hA!_+UAITGi?e*H^)V3F22R+xLhLO~Wmi0YehcZHDSc=n~eg31+1*@JB<1?9w^*IUEHce&?_`CEm0WQ1Lo z&~eIDmXQ~A<}O4#Hk-~%zs4?UMa(ye3ATsoT-zG(0yr6C8}YD!Q;xG#mj>5lF%fl$s3&^harYZIb*k|KR9xGgxMy!l$Fl)DYTxVQHY{^Oo6x$!SLK#7Y+Kx;x&4?XZ zBl?uEc9QwXyO!v{{>D;Vq5Fb9HslU1zAzU*>ojhd1NIU?n84yw19H1IC#ICJG(D%V zp-Q99H!$*NvnIYpV_Ct(slTn@O$=&V*gyTIXw)aL*4}D$^kAz*;qRg!vaGztW1LfpCWD$)>i7=C*#AzwIOy{CO#6h8?IJ!&p`aM%h0wpO14^w)N zBP5v~dYa;R_=fG*b;Jdc@ngJ|%nOaJ#%Xj~u$ncj=nYjvP?f4N85P*#`{zQ4R5bUJ zY-#Z(XuzozEtoZTI_FPZ8(FemELPOY{STo7laFE#BGSg4&$atud=!opCRMjUJY_>? z??*5;w$Mek>3XN2!xv4m!{Wo4i9Plpb)q+sL?9u(fN0ML;dYpWp^$c-3Z{l`J_H}4 zhZoYg6B1nCwm4){HSdtxvh#`UG zNFY|?0@89FZS(U4=|Mj_yET0e-3!>ediqj zm;z;~yZSWXP4?BV0X(@+7Y6q3-q(KuV7`62Il!ztv5d9f|7)x(eLwb2iw^LArS~pJoTMivR!s literal 0 HcmV?d00001 diff --git a/RomHeader/001A/libsyscall_c.bin b/RomHeader/001A/libsyscall_c.bin new file mode 100644 index 0000000000000000000000000000000000000000..36c7cea1f54904f0e010f285247ed9f35a24681f GIT binary patch literal 2048 zcmV+b2>;GNxc`^D)8^mD>8C_uQ=JJx z$W|wO04_ss)n8nX{s1Bc-*88D9IneYjz_GbRGZi6wGC~^?dPQTsCkLkFy4v>~dn5;PN zd-xnL_FDghk$=RWPH&jB*x_a}Wk5|YCY$U)D@hWRb2&H0{qG5meX?=5K1l`znm>LI z-*87q%ksvw6%m28N9V3w5k0#0z(~Q>H#3tFCZLkj@Sjd=ivO?Scxwp*Pxl)|#4FWb z!PBm_oUT{_qXaBDH9f;_xb{*m6V^OC)gXbLUZpXtyf)w91DcBbR;#_4dn5o8-*87j z1LuPmpE{e9)YSrQ>w~B(sju)brf9m0`ajLV_T9OljpBE2ie<6OOPxY%ibm3Ew$@3} zVx#+NZzhY^!=U*}rx`6O z-*88;@U^)IDc3G<7gbqEM~|T;x`v@`D(7gHvFmMZ3(5_23tA1|vO7;{Pv+?{E>8Yi z<`=@nU<2X~QgcnySqF8Z6a|I*2IwhT;eM0O} zaG(?`um}e8M(zp1!(Ti8((t=>@~H>m9|P=5MNQtI458Knn#DAbR{ID6<$=>`tQlys zUS;?j%6(Q4-*86(L6uWlK)#n->yR6<*k%15mF*zY?pHgE{gDt^B^6*6abR;CPVP-a zALSn3IQkZT@7MgFbmiEk%L|b}fOi4dwjE%T-k@?R+oJh<5eNznzl6C@|X8hkq zS?O%_a=d}26d7d_-*88I;L5hfDy;j7e#V4&eNn4wZZ-O`XH0}w?l))pguhaWX7GT4 z7_l{HwWl^|c2Q!m<1wkp4ODPE*hxHlWt}hG;>dE-2lvC7hHt4!F|$(p!aVi5;*OZS zm{5+0wB5+9@bZIs-Hbzn%MzcxSPb8AN0!x}Z!s$$xUj`i6`it852XYbi)RgSqW~fV-*87`pPK*;y4UTq&gJavhR9$- z%3tT&q7qcN(%uw9(~UuiGnC7w!e{>^racT{Js2KwDO_X-)JRE;3$UsAt`_;qrfz`q zGv!yuCMw!(IVspo&G^Q(su?aXK4E0^NdN|DhdkK%XdSkO)o@=+@avQaqnPFw>Ji^? zM;JpLQ87O;JpOJxb?C6lO*uyUiSkcHdOkR?>@IchRp{(yq%UY7EGO38&`1Z$L#ZaA6~|$4)XggC!%|>Jgv^LZ-cC#%p3}xzXtGwxw!6s#U9kR}SBB zM=o??BrJm`df@W771xvdvyw^l;nY(1YM;QdCzTA>UeP2tQQP6R!x4l%8JwOK9 z7>bJdVVBME|>NTl8dxT zZA9q2YbYrR-*87u@{1>1acVeegvKtv;b##_BAt>}Tb&Es{PW&zV08=iP8`JGz?AVT zo-(yWAumaOm?cW`%$$*StdAu(qUy{^yW&2Ao)kJP+DYrx!ZF-7TCsS)!KQ*@9``w| z@nR=;DWOjoeus5gB?jMcM?zcgezG!b_WE-O3p}%lN>?#K>(_rds-Km649A3T5Q&O; zbYkqB4ls-(x2QKJMR2493yk4(EEXO eh8Rym7vvu}j1amDmg{*d9X^*K!8uI9D*ynGi~WlL literal 0 HcmV?d00001 diff --git a/RomHeader/001A/rom_header_001a.template.sbin b/RomHeader/001A/rom_header_001a.template.sbin new file mode 100644 index 0000000000000000000000000000000000000000..b13f092f58d157bc5abaeb98dc6562d34fd1e1fc GIT binary patch literal 16384 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 +#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 ) + +// メインメニューの項目数(※ピクトチャット起動テストは除いておく) +#ifdef OUTSIDE_UI +#define SETTING_MENU_ELEMENT_NUM 5 // 社外用 +#else // !OUTSIDE_UI +#define SETTING_MENU_ELEMENT_NUM 10 // 社内用 +#endif // OUTSIDE_UI + +// extern data------------------------------------------ + +extern u32 bg_char_data[8 * 6]; +extern u16 bg_scr_data[32 * 32]; + +// function's prototype declaration--------------------- + +// global variable ------------------------------------- + +// 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 ][ LCFG_TWL_LANG_CODE_MAX ] = { + { + (const u16 *)L"EULA", + (const u16 *)L"EULA", + (const u16 *)L"EULA(F)", + (const u16 *)L"EULA(G)", + (const u16 *)L"EULA(I)", + (const u16 *)L"EULA(S)", + (const u16 *)L"EULA(C)", + (const u16 *)L"EULA(K)", + }, +}; + +static MenuPos s_settingPos[] = { + { TRUE, 4 * 8, 2 * 8 }, + { 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, 14 * 8 }, + { TRUE, 4 * 8, 16 * 8 }, + { TRUE, 4 * 8, 18 * 8 }, + { TRUE, 4 * 8, 20 * 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; + + 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)); + + PrintfSJIS( 0, 0, TXT_COLOR_BLUE, "Set EULA", g_strIPLSvnRevision, g_strSDKSvnRevision ); + + // NITRO設定データのlanguageに応じたメインメニュー構成言語の切り替え + for( i = 0; i < SETTING_MENU_ELEMENT_NUM; i++ ) { + s_pStrSetting[ i ] = s_pStrSettingElemTbl[ i ][ LCFG_TSD_GetLanguage() ]; + } + + ChangeUserColor( LCFG_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; + 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_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: + SetWirelessInit(); + g_pNowProcess = SetWirelessMain; + break; + case 5: + CleanupMachineInit(); + g_pNowProcess = CleanupMachineMain; + break; + case 6: + SelectCountryInit(); + g_pNowProcess = SelectCountryMain; + break; + case 7: + SetParentalControlInit(); + g_pNowProcess = SetParentalControlMain; + break; + case 8: + SetEULAInit(); + g_pNowProcess = SetEULAMain; + break; + + case 9: + SetFreeSoftBoxInit(); + g_pNowProcess = SetFreeSoftBoxMain; + break; + } +*/ + } + } + + // とりあえずバックライト輝度変更をここで確認。 + if( pad.trg & PAD_BUTTON_R) { + u8 brightness; + (void)UTL_GetBacklightBrightness( &brightness ); + if( ++brightness > BACKLIGHT_BRIGHTNESS_MAX ) { + brightness = BACKLIGHT_BRIGHTNESS_MAX; + } + (void)UTL_SetBacklightBrightness( brightness ); + } + if( pad.trg & PAD_BUTTON_L ) { + u8 brightness; + (void)UTL_GetBacklightBrightness( &brightness ); + if( --brightness < 0 ) { + brightness = 0; + } + (void)UTL_SetBacklightBrightness( brightness ); + } + 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 ); +} + + +//--------------------------------------------------------- +// +// 設定終了 +// +//--------------------------------------------------------- + + +// 本体設定データのライト +BOOL MY_WriteTWLSettings( void ) +{ + BOOL retval = FALSE; + u8 *pBuffer = Alloc( LCFG_WRITE_TEMP ); + if( pBuffer != NULL ) { + // *********************************************************** + // RED本体設定では、初回起動シーケンスもフラッシュ壊れシーケンスもないので、とりあえず何でも設定したらシーケンスを終了するようにする。 + LCFG_TSD_SetFlagFinishedInitialSetting( TRUE ); + LCFG_TSD_SetFlagFinishedInitialSetting_Launcher( TRUE ); + LCFG_TSD_SetFlagFinishedBrokenTWLSettings( TRUE ); + // *********************************************************** + + retval = LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ] )pBuffer ); + Free( pBuffer ); + } + return retval; +} diff --git a/build/systemMenu_tools/setEULA/ARM9/src/MachineSetting.h b/build/systemMenu_tools/setEULA/ARM9/src/MachineSetting.h new file mode 100644 index 00000000..68692120 --- /dev/null +++ b/build/systemMenu_tools/setEULA/ARM9/src/MachineSetting.h @@ -0,0 +1,71 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: MachineSetting.h + + 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$ + *---------------------------------------------------------------------------*/ + +#ifndef __MACHINE_SETTING_H__ +#define __MACHINE_SETTING_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include + + +// define data---------------------------------------------------------- +#define TP_CSR_TOUCH_COUNT 2 // TPカーソルのチャタリング吸収のためのカウント値 +#define TP_CSR_DETACH_COUNT 2 // TPカーソルを「選択」と判定するTPデタッチからのカウント値 + +#define HANDLE_MENU 48 +#define HANDLE_RTC_VIEW 240 +#define HANDLE_OK_BUTTON 255 +#define HANDLE_CANCEL_BUTTON 256 + +// 数値入力インターフェース用ワーク(void InputDecimal()で使用) +typedef struct InputNumParam { + u16 pos_x; // 入力値の表示X位置 + u16 pos_y; // 〃     Y位置 + int up_count; + int down_count; + int keta_max; // 最大桁 + int value_min; // 入力値の最小 + int value_max; // 入力値の最大 + int y_offset; // タッチパネル入力の基準位置からのYオフセット +}InputNumParam; + +// global variable------------------------------------------------------ +extern NNSFndAllocator g_allocator; +extern int (*g_pNowProcess)( void ); +extern BOOL g_isValidTSD; + +// function------------------------------------------------------------- +extern void MachineSettingInit( void ); +extern int MachineSettingMain( void ); +extern void SetEULAInit( void ); +extern int SetEULAMain( void ); + +extern void DrawOKCancelButton( void ); +extern void CheckOKCancelButton(BOOL *tp_ok, BOOL *tp_cancel); +extern void InputDecimal(int *tgtp, InputNumParam *inpp); + +extern BOOL MY_WriteTWLSettings( void ); + +#ifdef __cplusplus +} +#endif + +#endif // __MACHINE_SETTING_H__ diff --git a/build/systemMenu_tools/setEULA/ARM9/src/main.c b/build/systemMenu_tools/setEULA/ARM9/src/main.c new file mode 100644 index 00000000..eb946492 --- /dev/null +++ b/build/systemMenu_tools/setEULA/ARM9/src/main.c @@ -0,0 +1,127 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: main.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 +#include +#include "misc.h" +#include "MachineSetting.h" + +// extern data----------------------------------------------------------------- + +// define data----------------------------------------------------------------- + +// function's prototype------------------------------------------------------- +static void INTR_VBlank( void ); + +// global variable------------------------------------------------------------- +int (*g_pNowProcess)( void ); +BOOL g_isValidTSD; +RTCDrawProperty g_rtcDraw = { + TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y +}; + +// static variable------------------------------------------------------------- + +// const data------------------------------------------------------------------ + + +// ============================================================================ +// function's description +// ============================================================================ +void TwlMain(void) +{ + + // 初期化---------------------------------- + OS_Init(); + OS_InitTick(); + + (void)OS_EnableIrq(); + (void)OS_EnableInterrupts(); + + GX_Init(); + GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON + FS_Init( FS_DMA_NOT_USE ); + + SND_Init(); + SNDEX_Init(); + + // 割り込み許可---------------------------- + (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); + (void)OS_EnableIrqMask(OS_IE_V_BLANK); + (void)GX_VBlankIntr(TRUE); + + // デバイス初期化------------------------------- + TP_Init(); + (void)RTC_Init(); + + // システムの初期化------------------ + InitAllocator(); + + // ※本来ならランチャーからのパラメータチェックを行い、 + // 初回起動シーケンスに入るパスがある + + { + OS_TPrintf( "LCFGTWLOwnerInfo : 0x%04x\n", sizeof(LCFGTWLOwnerInfo) ); + OS_TPrintf( "LCFGTWLParentalControl : 0x%04x\n", sizeof(LCFGTWLParentalControl) ); + OS_TPrintf( "LCFGTWLSettingsData : 0x%04x\n", sizeof(LCFGTWLSettingsData) ); + } + + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルの読み込み + // :::::::::::::::::::::::::::::::::::::::::::::: + g_isValidTSD = FALSE; + { + u8 *pBuffer = Alloc( LCFG_READ_TEMP ); + if( pBuffer ) { + // NANDからTWL本体設定データをリード + if( LCFG_ReadTWLSettings( (u8 (*)[LCFG_READ_TEMP])pBuffer ) ) { + g_isValidTSD = TRUE; + } + Free( pBuffer ); + } + } + + UTL_CaribrateTP( LCFG_TSD_GetTPCalibrationPtr() ); + + InitBG(); + GetAndDrawRTCData( &g_rtcDraw, TRUE ); + MachineSettingInit(); + SetEULAInit(); + g_pNowProcess = SetEULAMain; + // メインループ---------------------------- + while ( 1 ) { + OS_WaitIrq( 1, OS_IE_V_BLANK ); // Vブランク割り込み待ち + + ReadKeyPad(); // キー入力の取得 + + (void)g_pNowProcess(); + + GetAndDrawRTCData( &g_rtcDraw, FALSE ); + } +} + + +// ============================================================================ +// 割り込み処理 +// ============================================================================ + +// Vブランク割り込み +static void INTR_VBlank(void) +{ + OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット +} + diff --git a/build/systemMenu_tools/setEULA/ARM9/src/setEULA.c b/build/systemMenu_tools/setEULA/ARM9/src/setEULA.c new file mode 100644 index 00000000..0081ce9e --- /dev/null +++ b/build/systemMenu_tools/setEULA/ARM9/src/setEULA.c @@ -0,0 +1,641 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: setEULA.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 +#include "misc.h" +#include "MachineSetting.h" + +// +// <処理> +// 以下のEULA設定 +// ++ agree/not agreeフラグ +// ++ agree eula version +// <例外処理> +// + +// テスト表示 +#if 1 +#define DEBUGPRINT OS_TPrintf +#else +#define DEBUGPRINT(...) ((void)0) +#endif + +// define data---------------------------------- + +// ソフトウェアキーボードLCD領域 +#define CLIST_LT_X 23 +#define CLIST_LT_Y 50 +#define CLIST_MARGIN 14 +#define CLIST_KEY_PER_SEGMENT 5 +#define CLIST_SEGMENT_INTERVAL 7 + +// キャンセルボタン領域 +#define CANCEL_BUTTON_TOP_X ( 2 * 8 ) +#define CANCEL_BUTTON_TOP_Y ( 21 * 8 ) +#define CANCEL_BUTTON_BOTTOM_X ( CANCEL_BUTTON_TOP_X + (8 * 8) ) +#define CANCEL_BUTTON_BOTTOM_Y ( CANCEL_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) ) + +// ON/OFFボタン領域 +#define ON_BUTTON_TOP_X ( 6 * 8 ) +#define ON_BUTTON_TOP_Y ( 8 * 8 ) +#define ON_BUTTON_BOTTOM_X ( ON_BUTTON_TOP_X + (2 * 8) ) +#define ON_BUTTON_BOTTOM_Y ( ON_BUTTON_TOP_Y + (2 * 8) ) +#define OFF_BUTTON_TOP_X ( 18 * 8 ) +#define OFF_BUTTON_TOP_Y ( 8 * 8 ) +#define OFF_BUTTON_BOTTOM_X ( OFF_BUTTON_TOP_X + (3 * 8) ) +#define OFF_BUTTON_BOTTOM_Y ( OFF_BUTTON_TOP_Y + (2 * 8) ) + +// UP/DOWNボタン領域 +#define UP_BUTTON_TOP_X ( 21 * 8 ) +#define UP_BUTTON_TOP_Y ( 7 * 8 ) +#define UP_BUTTON_BOTTOM_X ( UP_BUTTON_TOP_X + (2 * 8) ) +#define UP_BUTTON_BOTTOM_Y ( UP_BUTTON_TOP_Y + (2 * 8) ) +#define DOWN_BUTTON_TOP_X ( 21 * 8 ) +#define DOWN_BUTTON_TOP_Y ( 13 * 8 ) +#define DOWN_BUTTON_BOTTOM_X ( DOWN_BUTTON_TOP_X + (2 * 8) ) +#define DOWN_BUTTON_BOTTOM_Y ( DOWN_BUTTON_TOP_Y + (2 * 8) ) + + +// 項目の総数 +#define MS_EULA_NUMOF_ELEMENTS 2 + +// ソフトウェアキーボードのパラメータ +#define CHAR_LIST_CHAR_NUM 120 +#define CHAR_LIST_MODE_NUM 3 + +// 特殊キーコード +#define EOM_ (u16)0xe050 +#define CODE_BUTTON_TOP_ (u16)0xe051 +#define DEL_BUTTON_ (u16)0xe051 +#define SPACE_BUTTON_ (u16)0xe052 +#define VAR_BUTTON1_ (u16)0xe053 +#define VAR_BUTTON2_ (u16)0xe054 +#define OK_BUTTON_ (u16)0xe055 +#define CANCEL_BUTTON_ (u16)0xe056 +#define CODE_BUTTON_BOTTOM_ (u16)0xe057 + +#define CHAR_USCORE L'_' +#define KEY_PER_LINE 11 + +#define KEY_START 109 //ソフトウェアキーのカーソルデフォルト位置はキャンセルキー + +#define KEY_OK 0xffff +#define KEY_CANCEL 0xfffe +#define KEY_PREVPAGE 0xfffd +#define KEY_SUCCPAGE 0xfffc +#define KEY_ON 0xfffb +#define KEY_OFF 0xfffa +#define KEY_UP 0xfff9 +#define KEY_DOWN 0xfff8 +#define MULTI_KEY_UP 0xffe0 +#define MULTI_KEY_DOWN 0xffd0 +#define MASK_MULTI_KEY 0xfff0 + +// 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 void SetAgreeEULAInit( void ); +static int SetAgreeEULAMain( void ); +static void SetAgreedVersionInit( void ); +static int SetAgreedVersionMain( void ); + +// static variable------------------------------ +// 一時的にしか使わない物をstaticにしているので +// 少しでもダイエットしたい時はWork扱いにしてAlloc→Freeしましょう + +// メニューで使用 +static u16 sCursorMenu = 0; + +// 特定のモードでのみ使用 +static BOOL sbAgreeEULA = FALSE; +static u8 sAgreedVersion; + +// const data----------------------------------- + +// ++ メインメニュー + +static const u16 *s_pStrSetting[ MS_EULA_NUMOF_ELEMENTS ]; // メインメニュー用文字テーブルへのポインタリスト + +static const u16 *const s_pStrSettingElemTbl[ MS_EULA_NUMOF_ELEMENTS ][ LCFG_TWL_LANG_CODE_MAX ] = { + + { + (const u16 *)L"EULAへの同意", + (const u16 *)L"Agree to EULA", + (const u16 *)L"Agree to EULA(F)", + (const u16 *)L"Agree to EULA(G)", + (const u16 *)L"Agree to EULA(I)", + (const u16 *)L"Agree to EULA(S)", + (const u16 *)L"Agree to EULA(C)", + (const u16 *)L"Agree to EULA(K)", + }, + { + (const u16 *)L"同意したバージョン", + (const u16 *)L"Agreed version", + (const u16 *)L"Agreed version(F)", + (const u16 *)L"Agreed version(G)", + (const u16 *)L"Agreed version(I)", + (const u16 *)L"Agreed version(S)", + (const u16 *)L"Agreed version(C)", + (const u16 *)L"Agreed version(K)", + }, +}; + +// 表示位置 +static MenuPos s_settingPos[] = { + + { TRUE, 2 * 8, 6 * 8 }, + { TRUE, 2 * 8, 10 * 8 }, +}; + +// 表示パラメータ +static const MenuParam s_settingParam = +{ + MS_EULA_NUMOF_ELEMENTS, + TXT_COLOR_BLACK, + TXT_COLOR_GREEN, + TXT_COLOR_RED, + &s_settingPos[0], + (const u16 **)&s_pStrSetting, +}; + + +//========================================================= +// +// ボタンのタッチ処理 +// +//========================================================= + +// キャンセルボタン専用SelectSomethingFuncの実装 +static BOOL SelectCancelFunc( u16 *csr, TPData *tgt ) +{ + BOOL ret; + ret = WithinRangeTP( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, + CANCEL_BUTTON_BOTTOM_X, CANCEL_BUTTON_BOTTOM_Y, tgt ); + if(ret) *csr = KEY_CANCEL; + 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 SelectONFunc( u16 *csr, TPData *tgt ) +{ + BOOL ret; + ret = WithinRangeTP( ON_BUTTON_TOP_X, ON_BUTTON_TOP_Y, + ON_BUTTON_BOTTOM_X, ON_BUTTON_BOTTOM_Y, tgt ); + if(ret) *csr = KEY_ON; + return ret; +} +static BOOL SelectOFFFunc( u16 *csr, TPData *tgt ) +{ + BOOL ret; + ret = WithinRangeTP( OFF_BUTTON_TOP_X, OFF_BUTTON_TOP_Y, + OFF_BUTTON_BOTTOM_X, OFF_BUTTON_BOTTOM_Y, tgt ); + if(ret) *csr = KEY_OFF; + return ret; +} + +// UP/DOWNボタンの長押しとトリガを検出する +static BOOL DetectTouchUD( u16 *csr ) +{ + BOOL curr[2] = {FALSE, FALSE}; // 0:UP/1:DOWN + static BOOL prev[2] = {FALSE, FALSE}; // トリガ検出のために前の状態を記憶させる + BOOL trg[2] = {FALSE, FALSE}; + BOOL rep[2] = {FALSE, FALSE}; // 長押し + static u8 count[2] = {0, 0}; // 何フレーム連続で押されているか + BOOL ret = FALSE; + u16 i; + + for( i=0; i < 2; i++ ) + { + switch(i) + { + case 0: + curr[i] = WithinRangeTP( UP_BUTTON_TOP_X, UP_BUTTON_TOP_Y, + UP_BUTTON_BOTTOM_X, UP_BUTTON_BOTTOM_Y, &tpd.disp ); + break; + case 1: + curr[i] = WithinRangeTP( DOWN_BUTTON_TOP_X, DOWN_BUTTON_TOP_Y, + DOWN_BUTTON_BOTTOM_X, DOWN_BUTTON_BOTTOM_Y, &tpd.disp ); + break; + default: + break; + } + + // はじめて押されたかどうか + if( !prev[i] && curr[i] ) + { + trg[i] = TRUE; + } + // 長押しカウント + if( curr[i] ) + { + if( trg[i] ) + { + count[i] = 1; + } + else if( count[i] > 25 ) + { + count[i] = 25 - 10; + rep[i] = TRUE; + } + else + { + (count[i])++; + } + } + else // 押されていないとき + { + count[i] = 0; + } + prev[i] = curr[i]; // 状態を記憶 + } + + if(trg[0] || rep[0]) + { + *csr = KEY_UP; + ret = TRUE; + } + else if(trg[1] || rep[1]) + { + *csr = KEY_DOWN; + ret = TRUE; + } + else + { + ret = FALSE; + } + 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 DrawEULAMenuScene( void ) +{ + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); + PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"Set EULA" ); +// PutStringUTF16( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"ARETURN" ); + // メニュー項目 + DrawMenu( sCursorMenu, &s_settingParam ); + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得して表示 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + PutStringUTF16( 21*8, s_settingPos[0].y, TXT_UCOLOR_G0, + LCFG_TSD_IsAgreeEULA() ? (const u16*)L"Agree":(const u16*)L"Not agree" ); + PrintfSJIS( 21*8, s_settingPos[1].y, TXT_UCOLOR_G0, "%d", + LCFG_TSD_GetAgreedEULAVersion() ); +} + +// 初期化 +void SetEULAInit( void ) +{ + int i; + + // NITRO設定データのlanguageに応じたメインメニュー構成言語の切り替え + for( i=0; i < MS_EULA_NUMOF_ELEMENTS; i++ ) + { + s_pStrSetting[ i ] = s_pStrSettingElemTbl[ i ][ LCFG_TSD_GetLanguage() ]; + } + + // BGデータのロード処理 + GX_LoadBG1Char(bg_char_data, 0, sizeof(bg_char_data)); + GX_LoadBG1Scr(bg_scr_data, 0, sizeof(bg_scr_data)); + + DrawEULAMenuScene(); + + SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 ); + + GX_SetVisiblePlane ( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); + GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); +} + +// メニューから呼ばれるメイン +int SetEULAMain( void ) +{ + SelectSomethingFunc func[1]={SelectCancelFunc}; + BOOL tp_select; + BOOL tpCommit = FALSE; + u16 padrep; + static u16 commit; + + ReadTP(); + + padrep = DetectPadRepeat(); // 長押し検出 + + // メニューからの項目選択 + if( (pad.trg & PAD_KEY_DOWN) || (padrep & PAD_KEY_DOWN) ){ // カーソルの移動 + if( ++sCursorMenu >= MS_EULA_NUMOF_ELEMENTS ) { + sCursorMenu = 0; + } + } + if( (pad.trg & PAD_KEY_UP) || (padrep & PAD_KEY_UP) ){ + if( --sCursorMenu & 0x80 ) { + sCursorMenu = (u16)(MS_EULA_NUMOF_ELEMENTS - 1); + } + } + tp_select = SelectMenuByTP( &sCursorMenu, &s_settingParam ); + + // 特殊ボタンタッチ + tpCommit = SelectSomethingByTP( &commit, func, 1 ); + + // メニューへの分岐 + if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 + if( (s_settingParam.pos[sCursorMenu]).enable ) { + switch( sCursorMenu ) + { + case 0: + SetAgreeEULAInit(); + g_pNowProcess = SetAgreeEULAMain; + break; + case 1: + SetAgreedVersionInit(); + g_pNowProcess = SetAgreedVersionMain; + break; + } + } // if( (s_settingParam.pos[sCursorMenu]).enable ) + } // if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) +/* + else if( (pad.trg & PAD_BUTTON_B) || (tpCommit && (commit == KEY_CANCEL)) ) + { + MachineSettingInit(); + return 0; + } +*/ + // 再描画 + DrawEULAMenuScene(); + return 0; +} + +//========================================================= +// +// EULA同意/非同意のセット +// +//========================================================= + +// 描画処理 +static void DrawSetAgreeEULAScene( void ) +{ + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); + PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"Agree EULA" ); + + if( !sbAgreeEULA ) + { + PutStringUTF16( ON_BUTTON_TOP_X, ON_BUTTON_TOP_Y, TXT_COLOR_GREEN, (const u16*)L"Not agree" ); + PutStringUTF16( OFF_BUTTON_TOP_X, OFF_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16*)L"Agree" ); + } + else + { + PutStringUTF16( ON_BUTTON_TOP_X, ON_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16*)L"Not agree" ); + PutStringUTF16( OFF_BUTTON_TOP_X, OFF_BUTTON_TOP_Y, TXT_COLOR_GREEN, (const u16*)L"Agree" ); + } + PutStringUTF16( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"ACANCEL" ); + PutStringUTF16( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"@OK" ); +} + +// 初期化 +static void SetAgreeEULAInit( void ) +{ + SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 ); + + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + sbAgreeEULA = LCFG_TSD_IsAgreeEULA(); + + DrawSetAgreeEULAScene(); + + GX_SetVisiblePlane ( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); + GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); +} + +// 表示プロセスとして呼び出されるメイン +static int SetAgreeEULAMain( void ) +{ + SelectSomethingFunc func[4]={SelectCancelFunc, SelectOKFunc, SelectONFunc, SelectOFFFunc }; + u16 commit; + BOOL tp_touch = FALSE; + + ReadTP(); + + // キーによる選択 + if( (pad.trg & PAD_KEY_LEFT) || (pad.trg & PAD_KEY_RIGHT) ) + { + sbAgreeEULA = !sbAgreeEULA; + } + + // タッチによる選択 + tp_touch = SelectSomethingByTP( &commit, func, 4 ); + if( tp_touch && (commit == KEY_ON) ) + { + sbAgreeEULA = TRUE; + } + else if( tp_touch && (commit == KEY_OFF) ) + { + sbAgreeEULA = FALSE; + } + + // 決定 + if( (pad.trg & PAD_BUTTON_A) || (tp_touch && (commit == KEY_OK)) ) + { + LCFG_TSD_SetFlagAgreeEULA( sbAgreeEULA ); + if( !sbAgreeEULA ) { + LCFG_TSD_SetAgreedEULAVersion( 1 ); + } + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルへの書き込み + // :::::::::::::::::::::::::::::::::::::::::::::: + if( !MY_WriteTWLSettings() ) + { + OS_TPrintf( "TWL settings write failed.\n" ); + } + OS_TPrintf( "AgreeEULA : %s\n", OS_IsAgreeEULA() ? "Agree" : "Not agree" ); + SetEULAInit(); + g_pNowProcess = SetEULAMain; + return 0; + } + else if( (pad.trg & PAD_BUTTON_B) || (tp_touch && (commit == KEY_CANCEL)) ) + { + SetEULAInit(); // キャンセルのときセットしない + g_pNowProcess = SetEULAMain; + return 0; + } + + DrawSetAgreeEULAScene(); + return 0; +} + + +//========================================================= +// +// 同意EULAバージョンのセット +// +//========================================================= + +// 描画処理 +static void DrawSetAgreedVersionScene( void ) +{ + u16 iconUp[2] = {0xE01B, 0}; + u16 iconDown[2] = {0xE01C, 0}; + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); + PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"AGREED EULA VERSION" ); + PutStringUTF16( CANCEL_BUTTON_TOP_X, CANCEL_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"ACANCEL" ); + PutStringUTF16( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"@OK" ); + PutStringUTF16( UP_BUTTON_TOP_X, UP_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)iconUp ); + PutStringUTF16( DOWN_BUTTON_TOP_X, DOWN_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)iconDown ); + PutStringUTF16( 4*8, 10*8, TXT_UCOLOR_G0, (const u16 *)L"Agreed EULA ver." ); + PrintfSJIS( 20*8, 10*8, TXT_COLOR_GREEN, "%3d", sAgreedVersion ); +} + +// 初期化 +static void SetAgreedVersionInit( void ) +{ + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + // あらかじめTWL設定データファイルから読み込み済みの設定を取得 + // ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + sAgreedVersion = LCFG_TSD_GetAgreedEULAVersion(); + + DrawSetAgreedVersionScene(); + + SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 ); + + GX_SetVisiblePlane ( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); + GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); +} + +// 表示プロセスとして呼び出されるメイン +static int SetAgreedVersionMain( void ) +{ + SelectSomethingFunc func[2]={SelectCancelFunc, SelectOKFunc}; + BOOL tpCommit = FALSE; + BOOL tpUD = FALSE; + u16 csrCommit; + u16 csrUD; + u16 padrep; + + ReadTP(); + + // TPチェック + tpCommit = SelectSomethingByTP( &csrCommit, func, 2 ); + tpUD = DetectTouchUD( &csrUD ); + + padrep = DetectPadRepeat(); // キーの長押し検出 + + // 変更 + if( (pad.trg & PAD_KEY_UP) || (padrep & PAD_KEY_UP) || (tpUD && (csrUD == KEY_UP)) ) + { + --sAgreedVersion; + if( sAgreedVersion == 0 ) { + sAgreedVersion = 255; + } + } + if( (pad.trg & PAD_KEY_DOWN) || (padrep & PAD_KEY_DOWN) || (tpUD && (csrUD == KEY_DOWN)) ) + { + ++sAgreedVersion; + if( sAgreedVersion == 0 ) { + sAgreedVersion = 1; + } + } + if(pad.trg & PAD_BUTTON_START) + { + sAgreedVersion = 1; + } + + // 決定 + if( pad.trg & PAD_BUTTON_A || (tpCommit && (csrCommit == KEY_OK)) ) + { + LCFG_TSD_SetAgreedEULAVersion( sAgreedVersion ); + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルへの書き込み + // :::::::::::::::::::::::::::::::::::::::::::::: + if( !MY_WriteTWLSettings() ) + { + OS_TPrintf( "TWL settings write failed.\n" ); + } + OS_TPrintf( "Agreed EULA version : %d\n", OS_GetAgreedEULAVersion() ); + SetEULAInit(); + g_pNowProcess = SetEULAMain; + return 0; + } + else if( ( pad.trg & PAD_BUTTON_B ) || (tpCommit && (csrCommit == KEY_CANCEL)) ) + { + SetEULAInit(); + g_pNowProcess = SetEULAMain; + return 0; + } + + // 再描画 + DrawSetAgreedVersionScene(); + return 0; +} + diff --git a/build/systemMenu_tools/setEULA/Makefile b/build/systemMenu_tools/setEULA/Makefile new file mode 100644 index 00000000..66754bca --- /dev/null +++ b/build/systemMenu_tools/setEULA/Makefile @@ -0,0 +1,30 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL +# File: Makefile +# +# 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 $(TWLSDK_ROOT)/build/buildtools/commondefs + +#---------------------------------------------------------------------------- + +SUBDIRS = banner ARM9 + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/systemMenu_tools/setEULA/banner/Makefile b/build/systemMenu_tools/setEULA/banner/Makefile new file mode 100644 index 00000000..e373c033 --- /dev/null +++ b/build/systemMenu_tools/setEULA/banner/Makefile @@ -0,0 +1,47 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL +# File: Makefile +# +# 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_IPL_RED_ROOT)/build/buildtools/commondefs + +ICON_DIR = ./icon + +BANNER_ICON = $(ICON_DIR)/gameIcon.bmp +BANNER_SPEC = banner_v3.bsf + +TARGETS = banner.bnr +INSTALL_DIR = ./ +INSTALL_TARGETS = $(TARGETS) + +BANNER_ICON_NAME = $(basename $(BANNER_ICON)) +BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) + +LDIRT_CLEAN = $(TARGETS) \ + $(BANNER_ICON_MIDDLE) \ + $(TARGETS:.bnr=.srl) + +include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules + +#---------------------------------------------------------------------------- +# build +#---------------------------------------------------------------------------- +do-build: $(TARGETS) + +$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) + $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) + +# diff --git a/build/systemMenu_tools/setEULA/banner/banner_v3.bsf b/build/systemMenu_tools/setEULA/banner/banner_v3.bsf new file mode 100644 index 0000000000000000000000000000000000000000..c5a4f1d1c271275342d60fa886aa4707d04ada47 GIT binary patch literal 768 zcmc(dy-EW?6opT#U}--POOqgiMM^_fBcj1o8>`JGZWiJuY*vFlg1&*zVJU*0g%4tH zW2Js~cAh~QGTfgtcfK>5pYMit6)Tcc(=SJ!s9=p%QjIkyN{J%nni8*RRgIvo&-~3^ z-|KX$2_y@ME(4L%m9D8&)P@i`En&~eE3$$-_j}68gwBGhY0sDy;bcoYI#lmpote9H zxQs5>4Bife+n&jK2O3aW(PkDOH}4-Wtk%l^-37|rYvMrH_2l+lGNzR1QsU1r zsT+7-9%}ymkbgZty*u1)ysp0)yZstrcb?k*kqgKY&p1Lm)Ghmjyn?EuHfzc4C908H WD5rE1-Eehc@*xO#cOIC~b5A literal 0 HcmV?d00001 diff --git a/build/systemMenu_tools/setEULA/banner/icon/gameIcon.bmp b/build/systemMenu_tools/setEULA/banner/icon/gameIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1a7a401223d3d978740e5f1e25d08cc5d757db78 GIT binary patch literal 630 zcmY+BF-yZh6vv+;II4RGQ#uHpY(hUkb6JWOikGbxiZ+8_=}>ag$))IC!Dennn%yN? zwNSiIV4G12t>zP$)OSf5^bdEJ-+RAYj$G-~+=eJ7&PO;7ld%Om_=HLNF~oC-OD2;tDUl0V=>U`aVTOT*iiMc(gj+yWAolN1jH{{0P7^_rl)yfJ!0!n`m8GoU$5c3u*yIXB+mt4|}ZXi%#W2 z$3Fh9nczArM?Cp@nK?F|d0}2OX*lPtx0P!@6H;cE1`Rzv`CPfK&Dag=2%dAp|HkX` tIDZw4f`P$%qQn$D=lmUCu&u!zqamuCa~BI^>z>g)KTfj4t+@0*fnPik4Ql`Z literal 0 HcmV?d00001