EULA設定ツールsetEULAの追加。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2563 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2008-10-01 05:24:27 +00:00
parent cd59bcdbfb
commit cb62762ab1
13 changed files with 1497 additions and 0 deletions

BIN
RomHeader/001A/libsyscall.a Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,103 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlIPL - SystemMenuRED - MachineSettings
# 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$
#----------------------------------------------------------------------------
SUBDIRS =
SUBMAKES = \
$(ROOT)/build/libraries/os/ARM9.TWL/Makefile.sharedFont
#----------------------------------------------------------------------------
# MAKEROM SWITCH ※最終ROM作成時は、TRUEにする
SYSM_DISABLE_DEBUG ?= TRUE
TARGET_FIRM = SYSTEMMENU
TARGET_PLATFORM = TWL
TARGET_CODEGEN ?= THUMB
TWL_ARCHGEN = LIMITED
TWL_NANDAPP = TRUE
#※RED本体設定はデバッガ対応の都合上、TITLEID_LO=HNAA, CARD_REGION=ALLとしています。
# UIG本体設定では、リージョンに合わせてTITLEID_LO, CARD_REGIONを設定してください。
##################################################################
TITLEID_LO = 001A
CARD_REGION = ALL
##################################################################
TARGET_BIN = setEULA.srl
ROM_HEADER_DIR = $(SYSMENU_ROOT)/RomHeader/$(TITLEID_LO)
SMALL_TITLEID = $(shell echo $(TITLEID_LO) | tr '[A-Z]' '[a-z]' )
ROM_HEADER_TEMPLATE = $(ROM_HEADER_DIR)/rom_header_$(SMALL_TITLEID).template.sbin
LIBSYSCALL = $(ROM_HEADER_DIR)/libsyscall.a
ROM_SPEC = main.rsf
MISC_DIR = ../../../systemMenu_RED/misc
BG_DIR = ../../../systemMenu_RED/data
SRCS = main.c MachineSetting.c setEULA.c \
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c \
$(BG_DIR)/BGData_MachineSettings.c
LINCLUDES = $(MISC_DIR)/include
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \
-DCARD_REGION='$(CARD_REGION)' \
-DDISABLE_DEBUG='$(SYSM_DISABLE_DEBUG)' \
-DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))'
MAKETAD_OPTION += -s
# libsysmenu.a は、RED本体設定でSVNのリビジョンを取得するためだけに使用しているので、
# UIG本体設定でリンクする必要はありません。
SYSMENU_LIBS = \
libsysmenu$(TWL_LIBSUFFIX).a \
libsysmutil$(TWL_LIBSUFFIX).a \
SDK_APPEND_LIBS = \
liblcfg$(TWL_LIBSUFFIX).a \
libsharedfont$(TWL_LIBSUFFIX).a \
libna$(TWL_LIBSUFFIX).a
LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS)
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
ifeq ($(SYSM_OUTSIDE_UI),TRUE)
MACRO_FLAGS += -DOUTSIDE_UI
endif
MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo
MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT)
MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe
INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN)
INSTALL_DIR = $(SDK_NMENU_DATADIR)
#----------------------------------------------------------------------------
do-build : $(TARGETS)
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules
#----------------------------------------------------------------------------
#===== End of Makefile =====

View File

@ -0,0 +1,209 @@
#----------------------------------------------------------------------------
# Project: TwlSDK - include
# File: ROM-BB.rsf
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded insructions, 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$
#----------------------------------------------------------------------------
#
# TWL ROM SPEC FILE
#
Arm9
{
Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)"
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)"
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)"
Elf "$(MAKEROM_ARM9:r).tef"
}
Arm7
{
Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)"
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)"
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)"
Elf "$(MAKEROM_ARM7_BASE:r).tef"
}
Arm9.Ltd
{
Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)"
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)"
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)"
}
Arm7.Ltd
{
Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)"
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)"
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)"
}
Property
{
###
### Settings for FinalROM
###
#### BEGIN
#
# TITLE NAME: Your product name within 12bytes
#
#TitleName "YourAppName"
#
# MAKER CODE: Your company ID# in 2 ascii words
# issued by NINTENDO
#
#MakerCode "00"
#
# REMASTER VERSION: Mastering version
#
#RomVersion 0
#
# ROM SPEED TYPE: [MROM/1TROM/UNDEFINED]
#
RomSpeedType $(MAKEROM_ROMSPEED)
#
# ROM SIZE: in bit [64M/128M/256M/512M/1G/2G]
#
#RomSize 128M
#RomSize 256M
#
# ROM PADDING: TRUE if finalrom
#
#RomFootPadding TRUE
#
# ROM HEADER TEMPLATE: Provided to every product by NINTENDO
#
RomHeaderTemplate $(ROM_HEADER_TEMPLATE)
#
# BANNER FILE: generated from Banner Spec File
#
BannerFile ../banner/banner.bnr
###
### Setting for TWL
###
#
# ROM HEADER Ltd: Provided to every product by NINTENDO
#
RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin
#
# Digest parameters:
#
DigestParam 1024 32
#
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD]
# don't have to edit
#
################################################################
WramMapping MAP_TS_SCR
################################################################
#
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]
#
CardRegion $(CARD_REGION)
#
# NANDAccess: nand access control [TRUE/FALSE]
#
NANDAccess TRUE
#
# Codec mode:
# don't have to edit
#
CodecMode $(MAKEROM_CODEC_MODE)
#
# DisableDebug 最終ROMでは、アプリジャンプされた際にデバッグできないようにTRUEにする必要があります。
#
DisableDebug $(DISABLE_DEBUG)
###
#### END
}
AppendProperty
{
#
# Publisher : "Nintendo"
# don't have to edit
Publisher Nintendo
#
# Application type : [USER/SYSTEM]
# don't have to edit
AppType System
#
# launch title on the launcher : [TRUE/FALSE]
# don't have to edit
Launch TRUE
#
# Boot allowed Media: [GameCard/NAND]
#
Media GameCard
#
# Data only title : [TRUE/FALSE]
# don't have to edit
DataOnly FALSE
#
# Secure title : [TRUE/FALSE]
# don't have to edit
Secure TRUE
#
# GameCode for TitleID : Your GameCode in 4 ascii words
#
GameCode $(TITLEID_LO)
#
# Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M]
#
#PublicSaveDataSize 32K
#
# Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M]
#
#PrivateSaveDataSize 16K
#
# Enable SubBannerFile
SubBannerFile FALSE
}
RomSpec
{
Offset 0x00000000
Segment ALL
HostRoot ../../../systemMenu_RED/data
Root /data
File NTR_IPL_font_m.NFTR
}

View File

@ -0,0 +1,269 @@
/*---------------------------------------------------------------------------*
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 )
// メインメニューの項目数(※ピクトチャット起動テストは除いておく)
#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;
}

View File

@ -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 <twl.h>
// 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__

View File

@ -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 <twl.h>
#include <twl/lcfg.h>
#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ブランク割込チェックのセット
}

View File

@ -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 <twl.h>
#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"<22>RETURN" );
// メニュー項目
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"<EFBFBD>CANCEL" );
PutStringUTF16( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"<EFBFBD>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"<EFBFBD>CANCEL" );
PutStringUTF16( OK_BUTTON_TOP_X, OK_BUTTON_TOP_Y, TXT_UCOLOR_G0, (const u16 *)L"<EFBFBD>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;
}

View File

@ -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 =====

View File

@ -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)
#

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B