アプリ->ランチャー->アプリ起動サンプルの移植ひととおり完了

もう少しディレクトリ名など弄る予定

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@563 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yoshida_teruhisa 2008-02-04 06:13:45 +00:00
parent 890ab16961
commit 79ee26938e
18 changed files with 346 additions and 789 deletions

View File

@ -1,6 +1,6 @@
#! make -f #! make -f
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Project: TwlSDK - demos - simpleShoot-1 # Project: TwlSDK - demos.TWL - nandApp - appliCooperation - cooperationA
# File: Makefile # File: Makefile
# #
# Copyright 2007 Nintendo. All rights reserved. # Copyright 2007 Nintendo. All rights reserved.
@ -16,35 +16,31 @@
# $Author: $ # $Author: $
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
SUBDIRS =
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
TARGET_FIRM = SYSTEMMENU
TARGET_PLATFORM = TWL TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED TWL_ARCHGEN = LIMITED
TITLEID_LO = COPA TITLEID_LO = COPA
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad
TARGET_BIN = main.srl TARGET_BIN = CooperationA.tad
ROM_SPEC = main.rsf ROM_SPEC = main.rsf
MISC_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/misc SRCS = main.c CooperationA.c misc_simple.c data.c
SRCS = main.c CooperationA.c \ LINCLUDES = $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/include
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c
LINCLUDES = $(MISC_DIR)/include LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE)
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' LLIBRARIES += libDEMO$(TWL_LIBSUFFIX).a
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)'
include $(TWLSDK_ROOT)/build/buildtools/commondefs
LDIRT_CLEAN = $(TARGET_TAD) SDK_NMENU_DATADIR = $(ROOT)/build/tools/TwlNMenu/data
INSTALL_TARGETS = $(TARGET_TAD) INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN)
INSTALL_DIR = $(SDK_NMENU_DATADIR) INSTALL_DIR = $(SDK_NMENU_DATADIR)
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
@ -52,7 +48,7 @@ INSTALL_DIR = $(SDK_NMENU_DATADIR)
do-build : $(TARGETS) do-build : $(TARGETS)
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules include $(TWLSDK_ROOT)/build/buildtools/modulerules
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------

View File

@ -16,8 +16,7 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <twl.h> #include <twl.h>
#include <sysmenu.h> #include "misc_simple.h"
#include "misc.h"
#include "CooperationA.h" #include "CooperationA.h"
// define data------------------------------------------ // define data------------------------------------------
@ -27,34 +26,31 @@
#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) #define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 )
// ソフトウェアキーボードLCD領域 // ソフトウェアキーボードLCD領域
#define CLIST_LT_X 23 #define CLIST_LT_X 2
#define CLIST_LT_Y 50 #define CLIST_LT_Y 6
#define CLIST_MARGIN 14 #define CLIST_MARGIN 2
#define CLIST_KEY_PER_SEGMENT 5 #define CLIST_KEY_PER_SEGMENT 5
#define CLIST_SEGMENT_INTERVAL 7 #define CLIST_SEGMENT_INTERVAL 1
#define COPA_MENU_ELEMENT_NUM 3 // メニューの項目数 #define COPA_MENU_ELEMENT_NUM 3 // メニューの項目数
#define CHAR_LIST_CHAR_NUM 120 #define CHAR_LIST_CHAR_NUM 120
#define CHAR_LIST_MODE_NUM 3 #define CHAR_LIST_MODE_NUM 1
// 特殊キーコード // 特殊キーコード
#define EOM_ (u16)0xe050 #define EOM_ (char)0xf8
#define CODE_BUTTON_TOP_ (u16)0xe051 #define CODE_BUTTON_TOP_ (char)0xf9
#define DEL_BUTTON_ (u16)0xe051 #define DEL_BUTTON_ (char)0xf9
#define SPACE_BUTTON_ (u16)0xe052 #define SPACE_BUTTON_ (char)0xfa
#define VAR_BUTTON1_ (u16)0xe053 #define VAR_BUTTON1_ (char)0xfb
#define VAR_BUTTON2_ (u16)0xe054 #define VAR_BUTTON2_ (char)0xfc
#define OK_BUTTON_ (u16)0xe055 #define OK_BUTTON_ (char)0xfd
#define CANCEL_BUTTON_ (u16)0xe056 #define CANCEL_BUTTON_ (char)0xfe
#define CODE_BUTTON_BOTTOM_ (u16)0xe057 #define CODE_BUTTON_BOTTOM_ (char)0xff
#define CHAR_USCORE L'_' #define CHAR_USCORE '_'
#define KEY_PER_LINE 11 #define KEY_PER_LINE 11
#define KEY_START 109 //ソフトウェアキーのカーソルデフォルト位置はキャンセルキー #define KEY_START 98 //ソフトウェアキーのカーソルデフォルト位置はキャンセルキー
#define KEY_OK 0xffff
#define KEY_CANCEL 0xfffe
#define PARAM_LENGTH 10 #define PARAM_LENGTH 10
@ -63,8 +59,8 @@ typedef struct CopA_Work
u16 csr; u16 csr;
int char_mode; int char_mode;
u16 key_csr; u16 key_csr;
u16 parameter[ PARAM_LENGTH + 1 ]; char parameter[ PARAM_LENGTH + 1 ];
u16 temp_parameter[ PARAM_LENGTH + 1 ]; char temp_parameter[ PARAM_LENGTH + 1 ];
u8 temp_parameter_length; u8 temp_parameter_length;
void(*pNowProcess)(void); void(*pNowProcess)(void);
int starx,stary; int starx,stary;
@ -77,27 +73,26 @@ typedef struct CopA_Work
static void MenuScene( void ); static void MenuScene( void );
// global variable ------------------------------------- // global variable -------------------------------------
extern RTCDrawProperty g_rtcDraw;
// static variable ------------------------------------- // static variable -------------------------------------
static CopA_Work s_work = (CopA_Work){0,0,0,L"",L"",0,0,0}; static CopA_Work s_work = (CopA_Work){0,0,0,"","",0,0,0};
// const data ----------------------------------------- // const data -----------------------------------------
static const u16 char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM]; static const char char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM];
static const u16 *s_pStrMenu[ COPA_MENU_ELEMENT_NUM ] = static const char *s_pStrMenu[ COPA_MENU_ELEMENT_NUM ] =
{ {
L"パラメータ設定", "Set Parameter",
L"Bを起動", "Launch CooperationB",
L"ランチャーに戻る", "Return to Launcher",
}; };
static MenuPos s_menuPos[] = { static MenuPos s_menuPos[] = {
{ TRUE, 4 * 8, 8 * 8 }, { TRUE, 3, 6 },
{ TRUE, 4 * 8, 10 * 8 }, { TRUE, 3, 8 },
{ TRUE, 4 * 8, 12 * 8 }, { TRUE, 3, 10 },
{ TRUE, 4 * 8, 14 * 8 }, { TRUE, 3, 12 },
}; };
static const MenuParam s_menuParam = { static const MenuParam s_menuParam = {
@ -106,50 +101,36 @@ static const MenuParam s_menuParam = {
TXT_COLOR_GREEN, TXT_COLOR_GREEN,
TXT_COLOR_RED, TXT_COLOR_RED,
&s_menuPos[ 0 ], &s_menuPos[ 0 ],
(const u16 **)&s_pStrMenu, (const char **)&s_pStrMenu,
}; };
static const u16 *str_button_char[CHAR_LIST_MODE_NUM] = { static const char *str_button_char[CHAR_LIST_MODE_NUM] = {
L"かな", "eisuu",
L"カナ",
L"英数",
}; };
static u16 next_char_mode[CHAR_LIST_MODE_NUM-1]; //static u16 next_char_mode[CHAR_LIST_MODE_NUM-1];
static const u16 str_button_del[] = L"<EFBFBD>DEL"; static const char str_button_del[] = "DEL";
static const u16 str_button_space[] = L"SPACE"; static const char str_button_space[] = "SPACE";
static const u16 str_button_ok[] = L"OK"; static const char str_button_ok[] = "OK";
static const u16 str_button_cancel[] = L"CANCEL"; static const char str_button_cancel[] = "CANCEL";
static const u16 *str_button[] = { static const char *str_button[] = {
(const u16 *)str_button_del, (const char *)str_button_del,
(const u16 *)str_button_space, (const char *)str_button_space,
NULL, NULL,
NULL, NULL,
(const u16 *)str_button_ok, (const char *)str_button_ok,
(const u16 *)str_button_cancel, (const char *)str_button_cancel,
}; };
//====================================================== //======================================================
// アプリ連携テストプログラムA // アプリ連携テストプログラムA
//====================================================== //======================================================
// UTF16の文字列長算出
static u8 MY_StrLen( const u16 *pStr )
{
u8 len = 0;
while( *pStr++ ) {
++len;
if( len == 255 ) {
break;
}
}
return len;
}
static void SetSoftKeyboardButton(int mode) static void SetSoftKeyboardButton(int mode)
{ {
/*
int l; int l;
int count = 0; int count = 0;
for(l=0; l<CHAR_LIST_MODE_NUM ;l++) for(l=0; l<CHAR_LIST_MODE_NUM ;l++)
@ -160,6 +141,7 @@ static void SetSoftKeyboardButton(int mode)
count++; count++;
} }
} }
*/
s_work.char_mode = mode; s_work.char_mode = mode;
} }
@ -169,11 +151,11 @@ static void SetSoftKeyboardButton(int mode)
static void DrawCharKeys( void ) static void DrawCharKeys( void )
{ {
int l; int l;
u16 code; char code;
for( l=0; l<CHAR_LIST_CHAR_NUM; l++ ) for( l=0; l<CHAR_LIST_CHAR_NUM; l++ )
{ {
int color=TXT_COLOR_BLACK; u8 color=TXT_COLOR_BLACK;
code = char_tbl[s_work.char_mode][l]; code = char_tbl[s_work.char_mode][l];
if (s_work.key_csr == l) color = TXT_COLOR_GREEN; if (s_work.key_csr == l) color = TXT_COLOR_GREEN;
if(code != EOM_) if(code != EOM_)
@ -181,16 +163,16 @@ static void DrawCharKeys( void )
if( (code >= CODE_BUTTON_TOP_) && (code < CODE_BUTTON_BOTTOM_) ) if( (code >= CODE_BUTTON_TOP_) && (code < CODE_BUTTON_BOTTOM_) )
{ {
int x = code - CODE_BUTTON_TOP_; int x = code - CODE_BUTTON_TOP_;
PutStringUTF16( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) , myDp_Printf( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) ,
CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, str_button[x] ); CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, MAIN_SCREEN, str_button[x] );
} }
else else
{ {
u16 s[2]; char s[2];
s[0] = code; s[0] = code;
s[1] = 0; s[1] = 0;
PutStringUTF16( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) , myDp_Printf( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) ,
CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, s ); CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, MAIN_SCREEN, s );
} }
} }
} }
@ -199,7 +181,7 @@ static void DrawCharKeys( void )
// 一文字削除 // 一文字削除
static void DeleteACharacter( void ) static void DeleteACharacter( void )
{ {
u16 *buf; char *buf;
u8 *length; u8 *length;
buf = s_work.temp_parameter; buf = s_work.temp_parameter;
length = &s_work.temp_parameter_length; length = &s_work.temp_parameter_length;
@ -211,12 +193,8 @@ static void MenuInit( void )
{ {
GX_DispOff(); GX_DispOff();
GXS_DispOff(); GXS_DispOff();
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"CooperationA"); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "CooperationA");
GetAndDrawRTCData( &g_rtcDraw, TRUE );
SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 );
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
@ -227,9 +205,9 @@ static void MenuInit( void )
} }
// 選択中文字キー・特殊キーで決定した時の挙動 // 選択中文字キー・特殊キーで決定した時の挙動
static void PushKeys( u16 code ) static void PushKeys( char code )
{ {
u16 *buf; char *buf;
u8 *length; u8 *length;
u16 max_length; u16 max_length;
buf = s_work.temp_parameter; buf = s_work.temp_parameter;
@ -243,17 +221,17 @@ static void PushKeys( u16 code )
{ {
case VAR_BUTTON1_: case VAR_BUTTON1_:
case VAR_BUTTON2_: case VAR_BUTTON2_:
SetSoftKeyboardButton(next_char_mode[code - VAR_BUTTON1_]); // SetSoftKeyboardButton(next_char_mode[code - VAR_BUTTON1_]);
break; break;
case DEL_BUTTON_: case DEL_BUTTON_:
DeleteACharacter(); DeleteACharacter();
break; break;
case SPACE_BUTTON_: case SPACE_BUTTON_:
if(*length < max_length) buf[(*length)++] = L' '; if(*length < max_length) buf[(*length)++] = ' ';
break; break;
case OK_BUTTON_: case OK_BUTTON_:
SVC_CpuClear(0, buf + *length, (max_length - *length) * 2, 16);// ゼロクリア MI_CpuClear8(buf + *length, (u32)(max_length - *length));// ゼロクリア
MI_CpuCopy8(buf, s_work.parameter, 2*(PARAM_LENGTH+1)); MI_CpuCopy8(buf, s_work.parameter, (PARAM_LENGTH+1));
// セーブ後にキャンセル処理と合流 // セーブ後にキャンセル処理と合流
case CANCEL_BUTTON_: case CANCEL_BUTTON_:
MenuInit(); MenuInit();
@ -269,73 +247,14 @@ static void PushKeys( u16 code )
} }
} }
// PadDetectOnKeyのSelectSomethingByTPで使うSelectSomethingFuncの実装
static BOOL SelectSoftwareKeyFunc( u16 *csr, TPData *tgt )
{
// まずは候補となる座標(カーソル単位)を取得
int csrx;
int csry;
int csrxy;
int a;
int b;
NNSG2dTextRect rect;
u16 code;
BOOL ret;
csrx = tgt->x - CLIST_LT_X;
csrx = csrx - (CLIST_SEGMENT_INTERVAL*(csrx/(CLIST_MARGIN*CLIST_KEY_PER_SEGMENT+CLIST_SEGMENT_INTERVAL)));
csrx = csrx / CLIST_MARGIN;
csry = (tgt->y - CLIST_LT_Y) / CLIST_MARGIN;
if(csrx < 0 ) return FALSE;
if ( csrx >= KEY_PER_LINE ) csrx = KEY_PER_LINE - 1;
csrxy = csrx + csry * KEY_PER_LINE;
if ( csrxy < 0 || csrxy >= CHAR_LIST_CHAR_NUM) return FALSE;// 明らかにはみ出した
// 候補座標のキーコード取得
code = char_tbl[s_work.char_mode][csrxy];
if(code == EOM_) return FALSE;
// 候補座標の領域取得
if( (code >= CODE_BUTTON_TOP_) && (code < CODE_BUTTON_BOTTOM_) )
{
int x = code - CODE_BUTTON_TOP_;
rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, str_button[x] );
}
else
{
u16 s[2];
s[0] = code;
s[1] = 0;
// rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, s );
// 文字幅じゃかなり判定が厳しい……ギリギリまでとってみる
rect.width = CLIST_MARGIN;
rect.height = CLIST_MARGIN;
}
a = CLIST_LT_X + CLIST_MARGIN*(csrxy%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((csrxy%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT);
b = CLIST_LT_Y + CLIST_MARGIN*(csrxy/KEY_PER_LINE);
// 候補座標の領域にタッチ座標が含まれているかチェック
ret = WithinRangeTP( a, b, a+rect.width, b+rect.height, tgt );
if(ret)
{
*csr = (u16)csrxy;
}
return ret;
}
// ソフトウェアキー上でのキーパッド及びタッチパッド処理 // ソフトウェアキー上でのキーパッド及びタッチパッド処理
// 先にReadTPしておくこと。 // 先にReadTPしておくこと。
static void PadDetectOnKey( void ) static void PadDetectOnKey( void )
{ {
SelectSomethingFunc func[1];
BOOL tp_select = FALSE;
//-------------------------------------- //--------------------------------------
// キー入力処理 // キー入力処理
//-------------------------------------- //--------------------------------------
if( pad.trg & PAD_KEY_RIGHT ){ // カーソルの移動 if( MYPAD_IS_TRIG(PAD_KEY_RIGHT) ){ // カーソルの移動
do do
{ {
if(s_work.key_csr%KEY_PER_LINE != KEY_PER_LINE-1) s_work.key_csr++; if(s_work.key_csr%KEY_PER_LINE != KEY_PER_LINE-1) s_work.key_csr++;
@ -344,7 +263,7 @@ static void PadDetectOnKey( void )
} }
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
if( pad.trg & PAD_KEY_LEFT ){ if( MYPAD_IS_TRIG(PAD_KEY_LEFT) ){
do do
{ {
if(s_work.key_csr%KEY_PER_LINE != 0) s_work.key_csr--; if(s_work.key_csr%KEY_PER_LINE != 0) s_work.key_csr--;
@ -353,7 +272,7 @@ static void PadDetectOnKey( void )
} }
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 if( MYPAD_IS_TRIG(PAD_KEY_DOWN) ){ // カーソルの移動
do do
{ {
s_work.key_csr += KEY_PER_LINE; s_work.key_csr += KEY_PER_LINE;
@ -361,7 +280,7 @@ static void PadDetectOnKey( void )
} }
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
if( pad.trg & PAD_KEY_UP ){ if( MYPAD_IS_TRIG(PAD_KEY_UP) ){
do do
{ {
if( s_work.key_csr < KEY_PER_LINE ) s_work.key_csr += (CHAR_LIST_CHAR_NUM/KEY_PER_LINE)*KEY_PER_LINE; if( s_work.key_csr < KEY_PER_LINE ) s_work.key_csr += (CHAR_LIST_CHAR_NUM/KEY_PER_LINE)*KEY_PER_LINE;
@ -371,12 +290,10 @@ static void PadDetectOnKey( void )
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
func[0] = (SelectSomethingFunc)SelectSoftwareKeyFunc;
tp_select = SelectSomethingByTP(&s_work.key_csr, func, 1 );
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // キーが押された if( MYPAD_IS_TRIG(PAD_BUTTON_A) ) { // キーが押された
PushKeys( char_tbl[s_work.char_mode][s_work.key_csr] ); PushKeys( char_tbl[s_work.char_mode][s_work.key_csr] );
}else if( pad.trg & PAD_BUTTON_B ) { }else if( MYPAD_IS_TRIG(PAD_BUTTON_B) ) {
DeleteACharacter(); DeleteACharacter();
} }
} }
@ -384,9 +301,8 @@ static void PadDetectOnKey( void )
// パラメータ編集画面の描画処理 // パラメータ編集画面の描画処理
static void DrawSetParameterScene( void ) static void DrawSetParameterScene( void )
{ {
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "PARAMETER" );
PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"PARAMETER" ); myDp_Printf( 11, 3, TXT_COLOR_BLACK, MAIN_SCREEN, s_work.temp_parameter );
PutStringUTF16( 128-60 , 21 , TXT_UCOLOR_G0, s_work.temp_parameter );
DrawCharKeys(); DrawCharKeys();
} }
@ -397,17 +313,14 @@ static void SetParameterInit( void )
s_work.key_csr = KEY_START; s_work.key_csr = KEY_START;
// パラメータ用テンポラリバッファの初期化 // パラメータ用テンポラリバッファの初期化
MI_CpuCopy8(s_work.parameter, s_work.temp_parameter, 2*(PARAM_LENGTH+1)); MI_CpuCopy8(s_work.parameter, s_work.temp_parameter, (PARAM_LENGTH+1));
s_work.temp_parameter_length = MY_StrLen( s_work.temp_parameter ); s_work.temp_parameter_length = (u8)STD_GetStringLength( s_work.temp_parameter );
if( s_work.temp_parameter_length < PARAM_LENGTH ) { if( s_work.temp_parameter_length < PARAM_LENGTH ) {
SVC_CpuClear(CHAR_USCORE, &s_work.temp_parameter[ s_work.temp_parameter_length ], MI_CpuFill8( &s_work.temp_parameter[ s_work.temp_parameter_length ], CHAR_USCORE, (u32)(PARAM_LENGTH - s_work.temp_parameter_length) );
( PARAM_LENGTH - s_work.temp_parameter_length ) * 2, 16);
} }
DrawSetParameterScene(); DrawSetParameterScene();
SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 );
GX_SetVisiblePlane ( GX_PLANEMASK_BG0 ); GX_SetVisiblePlane ( GX_PLANEMASK_BG0 );
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
} }
@ -415,8 +328,6 @@ static void SetParameterInit( void )
// パラメータ編集メイン // パラメータ編集メイン
static void SetParameterMain( void ) static void SetParameterMain( void )
{ {
ReadTP();
PadDetectOnKey(); PadDetectOnKey();
// 描画処理 // 描画処理
@ -425,49 +336,55 @@ static void SetParameterMain( void )
static void DrawMenuScene( void ) static void DrawMenuScene( void )
{ {
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "CooperationA");
PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"CooperationA"); myDp_Printf( 19 , 6, TXT_COLOR_DARKLIGHTBLUE, MAIN_SCREEN, s_work.parameter );
PutStringUTF16( s_work.starx-6, s_work.stary-6, TXT_UCOLOR_G0, (const u16 *)L"");
PutStringUTF16( 128 , 8*8, TXT_UCOLOR_G0, s_work.parameter );
GetAndDrawRTCData( &g_rtcDraw, TRUE );
// メニュー項目 // メニュー項目
DrawMenu( s_work.csr, &s_menuParam ); myDp_DrawMenu( s_work.csr, MAIN_SCREEN, &s_menuParam );
PrintfSJIS( 1*8, 20*8, TXT_COLOR_BLACK, "★の位置:(%d,%d)",s_work.starx, s_work.stary); myDp_Printf( 1, 20, TXT_COLOR_BLACK, MAIN_SCREEN, "'*' pos = (%d,%d)", s_work.starx, s_work.stary);
myDp_Printf( s_work.starx, s_work.stary, TXT_COLOR_RED, MAIN_SCREEN, "*");
} }
static void MenuScene(void) static void MenuScene(void)
{ {
BOOL tp_select = FALSE;
static TPData tgt = (TPData){0,0,0,0};
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0}; LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP();
//-------------------------------------- //--------------------------------------
// キー入力処理 // キー入力処理
//-------------------------------------- //--------------------------------------
if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 if( MYPAD_IS_TRIG(PAD_KEY_DOWN) ){ // カーソルの移動
if( ++s_work.csr == COPA_MENU_ELEMENT_NUM ) { if( ++s_work.csr == COPA_MENU_ELEMENT_NUM ) {
s_work.csr=0; s_work.csr=0;
} }
if( ++s_work.stary == 24)
{
s_work.stary = 0;
}
} }
if( pad.trg & PAD_KEY_UP ){ if( MYPAD_IS_TRIG(PAD_KEY_UP) ){
if( --s_work.csr & 0x80 ) { if( --s_work.csr & 0x80 ) {
s_work.csr=COPA_MENU_ELEMENT_NUM - 1; s_work.csr=COPA_MENU_ELEMENT_NUM - 1;
} }
if( --s_work.stary == -1)
{
s_work.stary = 23;
}
} }
tp_select = SelectMenuByTP( &s_work.csr, &s_menuParam ); if( MYPAD_IS_TRIG(PAD_KEY_LEFT) ){ // カーソルの移動
if( --s_work.starx == -1)
if(tpd.disp.touch) {
{ s_work.starx = 31;
tgt = tpd.disp; }
if(s_work.starx != tgt.x) s_work.starx += (((tgt.x - s_work.starx)>>3) + ((tgt.x > s_work.starx) ? 1 : -1) ); }
if(s_work.stary != tgt.y) s_work.stary += (((tgt.y - s_work.stary)>>3) + ((tgt.y > s_work.stary) ? 1 : -1) ); if( MYPAD_IS_TRIG(PAD_KEY_RIGHT) ){
if( ++s_work.starx == 32)
{
s_work.starx = 0;
}
} }
DrawMenuScene(); DrawMenuScene();
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 if( MYPAD_IS_TRIG(PAD_BUTTON_A)) { // メニュー項目への分岐
if( s_menuPos[ s_work.csr ].enable ) { if( s_menuPos[ s_work.csr ].enable ) {
switch( s_work.csr ) { switch( s_work.csr ) {
case 0: case 0:
@ -479,11 +396,11 @@ static void MenuScene(void)
{ {
FSFile f; FSFile f;
FS_InitFile(&f); FS_InitFile(&f);
if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8(L"ライトエラー1",s_work.parameter,14); break;} if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8("W Error 1",s_work.parameter,10); break;}
FS_CreateFile("test.dat", FS_PERMIT_R | FS_PERMIT_W ); FS_CreateFile("test.dat", FS_PERMIT_R | FS_PERMIT_W );
if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_W)) {MI_CpuCopy8(L"ライトエラー2",s_work.parameter,14); break;} if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_W)) {MI_CpuCopy8("W Error 2",s_work.parameter,10); break;}
if(-1 == FS_WriteFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8(L"ライトエラー3",s_work.parameter,14); break;} if(-1 == FS_WriteFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8("W Error 3",s_work.parameter,10); break;}
if(!FS_CloseFile( &f )) {MI_CpuCopy8(L"ライトエラー4",s_work.parameter,14); break;} if(!FS_CloseFile( &f )) {MI_CpuCopy8("W Error 4",s_work.parameter,10); break;}
} }
// アプリ間パラメータをセット // アプリ間パラメータをセット
{ {
@ -493,7 +410,7 @@ static void MenuScene(void)
OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE ); OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE );
// validフラグを立てる // validフラグを立てる
OS_SetValidDeliveryArgumentInfo( TRUE ); OS_SetValidDeliveryArgumentInfo( TRUE );
// メーカーコードとゲームコードのセット(Launcher側でやるべき) // メーカーコードとゲームコードのセット
OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr ); OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr );
OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr ); OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr );
OS_SetTitleIdToDeliveryArgumentInfo( 0x00030004434f5041 ); OS_SetTitleIdToDeliveryArgumentInfo( 0x00030004434f5041 );
@ -515,9 +432,9 @@ static void MenuScene(void)
// 初期化 // 初期化
void CooperationAInit( void ) void CooperationAInit( void )
{ {
ChangeUserColor( LCFG_TSD_GetUserColor() );
s_work.parameter[0] = 0; s_work.parameter[0] = 0;
MenuInit(); MenuInit();
FS_Init(3);
{ {
if( OS_IsValidDeliveryArgumentInfo() ) if( OS_IsValidDeliveryArgumentInfo() )
@ -528,10 +445,10 @@ void CooperationAInit( void )
// セーブしたデータから復帰 // セーブしたデータから復帰
FSFile f; FSFile f;
FS_InitFile(&f); FS_InitFile(&f);
if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8(L"リードエラー1",s_work.parameter,14); return;} if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8("R Error 1",s_work.parameter,10); return;}
if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_R)) {return;} if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_R)) {return;}
if(-1 == FS_ReadFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8(L"リードエラー2",s_work.parameter,14); return;} if(-1 == FS_ReadFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8("R Error 2",s_work.parameter,10); return;}
if(!FS_CloseFile( &f )) {MI_CpuCopy8(L"リードエラー3",s_work.parameter,14); return;} if(!FS_CloseFile( &f )) {MI_CpuCopy8("R Error 3",s_work.parameter,10); return;}
} }
} }
} }
@ -548,87 +465,31 @@ void CooperationAMain(void)
// ソフトウェアキーボード用キャラテーブル // ソフトウェアキーボード用キャラテーブル
//====================================================== //======================================================
static const u16 char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM] = { static const char char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM] = {
{ // ひらがな
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', DEL_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', SPACE_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', VAR_BUTTON1_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', VAR_BUTTON2_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', OK_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
EOM_, EOM_, EOM_, EOM_, EOM_, CANCEL_BUTTON_,
EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_,
},
{ // カタカナ
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', DEL_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', SPACE_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', VAR_BUTTON1_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', VAR_BUTTON2_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', OK_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, CANCEL_BUTTON_,
EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_,
},
{ // 英数 { // 英数
L'', L'', L'', L'', L'', 'A', 'B', 'C', 'D', 'E',
L'', L'', L'', L'', L'', DEL_BUTTON_, 'F', 'G', 'H', 'I', 'J', DEL_BUTTON_,
L'', L'', L'', L'', L'', 'K', 'L', 'M', 'N', 'O',
L'', L'', L'', L'', L'', SPACE_BUTTON_, 'P', 'Q', 'R', 'S', 'T', SPACE_BUTTON_,
L'', L'', L'', L'', L'', 'U', 'V', 'W', 'X', 'Y',
L'', EOM_, EOM_, EOM_, EOM_, EOM_, 'Z', EOM_, EOM_, EOM_, EOM_, EOM_,
L'', L'', L'', L'', L'', 'a', 'b', 'c', 'd', 'e',
L'', L'', L'', L'', L'', VAR_BUTTON1_, 'f', 'g', 'h', 'i', 'j', EOM_,
L'', L'', L'', L'', L'', 'k', 'l', 'm', 'n', 'o',
L'', L'', L'', L'', L'', VAR_BUTTON2_, 'p', 'q', 'r', 's', 't', EOM_,
L'', L'', L'', L'', L'', 'u', 'v', 'w', 'x', 'y',
L'', EOM_, EOM_, EOM_, EOM_, EOM_, 'z', EOM_, EOM_, EOM_, EOM_, EOM_,
L'', L'', L'', L'', L'', '0', '1', '2', '3', '4',
L'', L'', L'', L'', L'', EOM_, '5', '6', '7', '8', '9', EOM_,
L'', EOM_, L'', EOM_, L'', '!', EOM_, '&', EOM_, '/',
L'', EOM_, L'', EOM_, L'', OK_BUTTON_, ',', EOM_, '.', EOM_, '-', OK_BUTTON_,
L'', EOM_, L'', EOM_, EOM_, '\'', EOM_, '"', EOM_, EOM_,
L'', EOM_, L'', EOM_, L'', EOM_, '@', EOM_, '(', EOM_, ')', CANCEL_BUTTON_,
EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, CANCEL_BUTTON_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
}, },

View File

@ -16,7 +16,7 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <twl.h> #include <twl.h>
#include "misc.h" #include "misc_simple.h"
#include "CooperationA.h" #include "CooperationA.h"
// extern data----------------------------------------------------------------- // extern data-----------------------------------------------------------------
@ -30,9 +30,6 @@ static void INTR_VBlank( void );
// static variable------------------------------------------------------------- // static variable-------------------------------------------------------------
BOOL g_isValidTSD; BOOL g_isValidTSD;
RTCDrawProperty g_rtcDraw = {
TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y
};
// const data------------------------------------------------------------------ // const data------------------------------------------------------------------
@ -42,57 +39,19 @@ RTCDrawProperty g_rtcDraw = {
// ============================================================================ // ============================================================================
void TwlMain(void) void TwlMain(void)
{ {
myInit();
// 初期化----------------------------------
OS_Init();
OS_InitTick();
(void)OS_EnableIrq();
(void)OS_EnableInterrupts();
GX_Init();
GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON
FS_Init( 3 );
// 割り込み許可----------------------------
(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();
// ※本来ならランチャーからのパラメータチェックを行い、
// 初回起動シーケンスに入るパスがある
// TWL設定のリード
SYSM_SetAllocFunc( Alloc, Free ); // LCFG_ReadTWLSettings()の実行に必要。
// ::::::::::::::::::::::::::::::::::::::::::::::
// TWL設定データファイルの読み込み
// ::::::::::::::::::::::::::::::::::::::::::::::
(void)LCFG_ReadHWSecureInfo();
g_isValidTSD = LCFG_ReadTWLSettings();
if( g_isValidTSD ) {
SYSM_CaribrateTP();
}
InitBG();
GetAndDrawRTCData( &g_rtcDraw, TRUE );
CooperationAInit(); CooperationAInit();
// ƒ<>ƒCƒ“ƒ<C692>[ƒv---------------------------- // ƒ<>ƒCƒ“ƒ<C692>[ƒv----------------------------
while(1){ while(1){
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
ReadKeyPad(); // キー入力の取得
ReadTP(); // TP入力の取得
myPreMain();
CooperationAMain(); CooperationAMain();
myProMain();
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
} }
} }

View File

@ -1,6 +1,6 @@
#! make -f #! make -f
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Project: TwlIPL # Project: TwlSDK - demos.TWL - nandApp - appliCooperation - cooperationA
# File: Makefile # File: Makefile
# #
# Copyright 2007 Nintendo. All rights reserved. # Copyright 2007 Nintendo. All rights reserved.
@ -11,9 +11,9 @@
# not be disclosed to third parties or copied or duplicated in any form, # 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. # in whole or in part, without the prior written consent of Nintendo.
# #
# $Date:: 2007-10-03#$ # $Date:: $
# $Rev: 1319 $ # $Rev: $
# $Author: kitase_hirotake $ # $Author: $
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/commondefs include $(TWLSDK_ROOT)/build/buildtools/commondefs

View File

@ -1,6 +1,6 @@
#! make -f #! make -f
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Project: TwlSDK - demos - simpleShoot-1 # Project: TwlSDK - demos.TWL - nandApp - AppliCooperation - CooperationB
# File: Makefile # File: Makefile
# #
# Copyright 2007 Nintendo. All rights reserved. # Copyright 2007 Nintendo. All rights reserved.
@ -16,35 +16,31 @@
# $Author: $ # $Author: $
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
SUBDIRS =
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
TARGET_FIRM = SYSTEMMENU
TARGET_PLATFORM = TWL TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED TWL_ARCHGEN = LIMITED
TITLEID_LO = COPB TITLEID_LO = COPB
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad
TARGET_BIN = main.srl TARGET_BIN = CooperationB.tad
ROM_SPEC = main.rsf ROM_SPEC = main.rsf
MISC_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/misc SRCS = main.c CooperationB.c misc_simple.c data.c
SRCS = main.c CooperationB.c \ LINCLUDES = $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/include
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c
LINCLUDES = $(MISC_DIR)/include LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE)
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' LLIBRARIES += libDEMO$(TWL_LIBSUFFIX).a
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)'
include $(TWLSDK_ROOT)/build/buildtools/commondefs
LDIRT_CLEAN = $(TARGET_TAD) SDK_NMENU_DATADIR = $(ROOT)/build/tools/TwlNMenu/data
INSTALL_TARGETS = $(TARGET_TAD) INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN)
INSTALL_DIR = $(SDK_NMENU_DATADIR) INSTALL_DIR = $(SDK_NMENU_DATADIR)
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
@ -52,7 +48,7 @@ INSTALL_DIR = $(SDK_NMENU_DATADIR)
do-build : $(TARGETS) do-build : $(TARGETS)
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules include $(TWLSDK_ROOT)/build/buildtools/modulerules
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------

View File

@ -16,16 +16,10 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <twl.h> #include <twl.h>
#include <sysmenu.h> #include "misc_simple.h"
#include "misc.h"
#include "CooperationB.h" #include "CooperationB.h"
// define data------------------------------------------ // define data------------------------------------------
#define RETURN_BUTTON_TOP_X 2
#define RETURN_BUTTON_TOP_Y 21
#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 )
#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 )
#define COPB_MENU_ELEMENT_NUM 2 // メニューの項目数 #define COPB_MENU_ELEMENT_NUM 2 // メニューの項目数
#define PARAM_LENGTH 10 #define PARAM_LENGTH 10
@ -37,23 +31,22 @@
static void MenuScene( void ); static void MenuScene( void );
// global variable ------------------------------------- // global variable -------------------------------------
extern RTCDrawProperty g_rtcDraw;
// static variable ------------------------------------- // static variable -------------------------------------
static u16 s_csr = 0; static u16 s_csr = 0;
static u16 s_parameter[ PARAM_LENGTH + 1 ]; static char s_parameter[ PARAM_LENGTH + 1 ];
static void(*s_pNowProcess)(void); static void(*s_pNowProcess)(void);
// const data ----------------------------------------- // const data -----------------------------------------
static const u16 *s_pStrMenu[ COPB_MENU_ELEMENT_NUM ] = static const char *s_pStrMenu[ COPB_MENU_ELEMENT_NUM ] =
{ {
L"呼び出し元アプリを起動", "Launch Former App",
L"ランチャーに戻る", "Return to Launcher",
}; };
static MenuPos s_menuPos[] = { static MenuPos s_menuPos[] = {
{ FALSE, 4 * 8, 8 * 8 }, { FALSE, 3, 6 },
{ TRUE, 4 * 8, 10 * 8 }, { TRUE, 3, 8 },
}; };
static const MenuParam s_menuParam = { static const MenuParam s_menuParam = {
@ -62,7 +55,7 @@ static const MenuParam s_menuParam = {
TXT_COLOR_GREEN, TXT_COLOR_GREEN,
TXT_COLOR_RED, TXT_COLOR_RED,
&s_menuPos[ 0 ], &s_menuPos[ 0 ],
(const u16 **)&s_pStrMenu, (const char **)&s_pStrMenu,
}; };
//====================================================== //======================================================
@ -71,33 +64,27 @@ static const MenuParam s_menuParam = {
static void DrawMenuScene( void ) static void DrawMenuScene( void )
{ {
PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"CooperationB"); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "CooperationB");
PutStringUTF16( 1*8, 18*8, TXT_COLOR_BLACK, (const u16 *)L"受け取ったパラメータ:"); myDp_Printf( 1, 18, TXT_COLOR_BLACK, MAIN_SCREEN, "Received Paramater:");
PutStringUTF16( 3 * 8 , 20*8, TXT_UCOLOR_G0, s_parameter ); myDp_Printf( 3 , 19, TXT_COLOR_DARKLIGHTBLUE, MAIN_SCREEN, s_parameter );
PutStringUTF16( 1*8, 14*8, TXT_COLOR_BLACK, (const u16 *)L"呼び出し元アプリ:"); myDp_Printf( 1, 14, TXT_COLOR_BLACK, MAIN_SCREEN, "Former App:");
myDp_Printf(3, 15, TXT_COLOR_BLACK, MAIN_SCREEN, "0x%llx",OS_IsValidDeliveryArgumentInfo() ? OS_GetTitleIdFromDeliveryArgumentInfo() : 0x0);
PrintfSJIS(3*8, 16*8, TXT_COLOR_BLACK, "0x%llx",OS_IsValidDeliveryArgumentInfo() ? OS_GetTitleIdFromDeliveryArgumentInfo() : 0x0);
GetAndDrawRTCData( &g_rtcDraw, TRUE );
// メニュー項目 // メニュー項目
DrawMenu( s_csr, &s_menuParam ); myDp_DrawMenu( s_csr, MAIN_SCREEN, &s_menuParam );
} }
static void MenuInit( void ) static void MenuInit( void )
{ {
GX_DispOff(); GX_DispOff();
GXS_DispOff(); GXS_DispOff();
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"CooperationB"); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "CooperationB");
GetAndDrawRTCData( &g_rtcDraw, TRUE );
SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 );
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
s_pNowProcess = MenuScene; s_pNowProcess = MenuScene;
MI_CpuClear8(s_parameter, 2*(PARAM_LENGTH+1)); MI_CpuClear8(s_parameter, (PARAM_LENGTH+1));
{ {
if( OS_IsValidDeliveryArgumentInfo() ) if( OS_IsValidDeliveryArgumentInfo() )
@ -106,7 +93,7 @@ static void MenuInit( void )
OS_DecodeDeliveryBuffer(); OS_DecodeDeliveryBuffer();
if(OS_GetArgv(1) != NULL) if(OS_GetArgv(1) != NULL)
{ {
MI_CpuCopy8(OS_GetArgv(1), s_parameter, 2*(PARAM_LENGTH+1)); MI_CpuCopy8(OS_GetArgv(1), s_parameter, (PARAM_LENGTH+1));
} }
else else
{ {
@ -123,29 +110,25 @@ static void MenuInit( void )
static void MenuScene(void) static void MenuScene(void)
{ {
BOOL tp_select = FALSE;
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0}; LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP();
//-------------------------------------- //--------------------------------------
// キー入力処理 // キー入力処理
//-------------------------------------- //--------------------------------------
if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 if( MYPAD_IS_TRIG(PAD_KEY_DOWN) ){ // カーソルの移動
if( ++s_csr == COPB_MENU_ELEMENT_NUM ) { if( ++s_csr == COPB_MENU_ELEMENT_NUM ) {
s_csr=0; s_csr=0;
} }
} }
if( pad.trg & PAD_KEY_UP ){ if( MYPAD_IS_TRIG(PAD_KEY_UP) ){
if( --s_csr & 0x80 ) { if( --s_csr & 0x80 ) {
s_csr=COPB_MENU_ELEMENT_NUM - 1; s_csr=COPB_MENU_ELEMENT_NUM - 1;
} }
} }
tp_select = SelectMenuByTP( &s_csr, &s_menuParam );
DrawMenuScene(); DrawMenuScene();
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 if( MYPAD_IS_TRIG(PAD_BUTTON_A) ) { // メニュー項目への分岐
if( s_menuPos[ s_csr ].enable ) { if( s_menuPos[ s_csr ].enable ) {
switch( s_csr ) { switch( s_csr ) {
case 0: case 0:
@ -181,7 +164,6 @@ static void MenuScene(void)
// 初期化 // 初期化
void CooperationBInit( void ) void CooperationBInit( void )
{ {
ChangeUserColor( LCFG_TSD_GetUserColor() );
s_parameter[0] = 0; s_parameter[0] = 0;
MenuInit(); MenuInit();
} }

View File

@ -16,7 +16,7 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <twl.h> #include <twl.h>
#include "misc.h" #include "misc_simple.h"
#include "CooperationB.h" #include "CooperationB.h"
// extern data----------------------------------------------------------------- // extern data-----------------------------------------------------------------
@ -30,9 +30,6 @@ static void INTR_VBlank( void );
// static variable------------------------------------------------------------- // static variable-------------------------------------------------------------
BOOL g_isValidTSD; BOOL g_isValidTSD;
RTCDrawProperty g_rtcDraw = {
TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y
};
// const data------------------------------------------------------------------ // const data------------------------------------------------------------------
@ -42,57 +39,19 @@ RTCDrawProperty g_rtcDraw = {
// ============================================================================ // ============================================================================
void TwlMain(void) void TwlMain(void)
{ {
myInit();
// 初期化----------------------------------
OS_Init();
OS_InitTick();
(void)OS_EnableIrq();
(void)OS_EnableInterrupts();
GX_Init();
GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON
FS_Init( 3 );
// 割り込み許可----------------------------
(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();
// ※本来ならランチャーからのパラメータチェックを行い、
// 初回起動シーケンスに入るパスがある
// TWL設定のリード
SYSM_SetAllocFunc( Alloc, Free ); // LCFG_ReadTWLSettings()の実行に必要。
// ::::::::::::::::::::::::::::::::::::::::::::::
// TWL設定データファイルの読み込み
// ::::::::::::::::::::::::::::::::::::::::::::::
(void)LCFG_ReadHWSecureInfo();
g_isValidTSD = LCFG_ReadTWLSettings();
if( g_isValidTSD ) {
SYSM_CaribrateTP();
}
InitBG();
GetAndDrawRTCData( &g_rtcDraw, TRUE );
CooperationBInit(); CooperationBInit();
// ƒ<>ƒCƒ“ƒ<C692>[ƒv---------------------------- // ƒ<>ƒCƒ“ƒ<C692>[ƒv----------------------------
while(1){ while(1){
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
ReadKeyPad(); // キー入力の取得
ReadTP(); // TP入力の取得
myPreMain();
CooperationBMain(); CooperationBMain();
myProMain();
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
} }
} }

View File

@ -1,6 +1,6 @@
#! make -f #! make -f
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Project: TwlSDK - demos - simpleShoot-1 # Project: TwlSDK - demos.TWL - nandApp - AppliCooperation - CooperationC
# File: Makefile # File: Makefile
# #
# Copyright 2007 Nintendo. All rights reserved. # Copyright 2007 Nintendo. All rights reserved.
@ -16,35 +16,31 @@
# $Author: $ # $Author: $
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
SUBDIRS =
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
TARGET_FIRM = SYSTEMMENU
TARGET_PLATFORM = TWL TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED TWL_ARCHGEN = LIMITED
TITLEID_LO = COPC TITLEID_LO = COPC
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad
TARGET_BIN = main.srl TARGET_BIN = CooperationC.tad
ROM_SPEC = main.rsf ROM_SPEC = main.rsf
MISC_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/misc SRCS = main.c CooperationC.c misc_simple.c data.c
SRCS = main.c CooperationC.c \ LINCLUDES = $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/include
$(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c
LINCLUDES = $(MISC_DIR)/include LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE)
MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' LLIBRARIES += libDEMO$(TWL_LIBSUFFIX).a
include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)'
include $(TWLSDK_ROOT)/build/buildtools/commondefs
LDIRT_CLEAN = $(TARGET_TAD) SDK_NMENU_DATADIR = $(ROOT)/build/tools/TwlNMenu/data
INSTALL_TARGETS = $(TARGET_TAD) INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN)
INSTALL_DIR = $(SDK_NMENU_DATADIR) INSTALL_DIR = $(SDK_NMENU_DATADIR)
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
@ -52,7 +48,7 @@ INSTALL_DIR = $(SDK_NMENU_DATADIR)
do-build : $(TARGETS) do-build : $(TARGETS)
include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules include $(TWLSDK_ROOT)/build/buildtools/modulerules
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------

View File

@ -16,8 +16,7 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <twl.h> #include <twl.h>
#include <sysmenu.h> #include "misc_simple.h"
#include "misc.h"
#include "CooperationC.h" #include "CooperationC.h"
// define data------------------------------------------ // define data------------------------------------------
@ -27,34 +26,31 @@
#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) #define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 )
// ソフトウェアキーボードLCD領域 // ソフトウェアキーボードLCD領域
#define CLIST_LT_X 23 #define CLIST_LT_X 2
#define CLIST_LT_Y 50 #define CLIST_LT_Y 6
#define CLIST_MARGIN 14 #define CLIST_MARGIN 2
#define CLIST_KEY_PER_SEGMENT 5 #define CLIST_KEY_PER_SEGMENT 5
#define CLIST_SEGMENT_INTERVAL 7 #define CLIST_SEGMENT_INTERVAL 1
#define COPA_MENU_ELEMENT_NUM 3 // メニューの項目数 #define COPA_MENU_ELEMENT_NUM 3 // メニューの項目数
#define CHAR_LIST_CHAR_NUM 120 #define CHAR_LIST_CHAR_NUM 120
#define CHAR_LIST_MODE_NUM 3 #define CHAR_LIST_MODE_NUM 1
// 特殊キーコード // 特殊キーコード
#define EOM_ (u16)0xe050 #define EOM_ (char)0xf8
#define CODE_BUTTON_TOP_ (u16)0xe051 #define CODE_BUTTON_TOP_ (char)0xf9
#define DEL_BUTTON_ (u16)0xe051 #define DEL_BUTTON_ (char)0xf9
#define SPACE_BUTTON_ (u16)0xe052 #define SPACE_BUTTON_ (char)0xfa
#define VAR_BUTTON1_ (u16)0xe053 #define VAR_BUTTON1_ (char)0xfb
#define VAR_BUTTON2_ (u16)0xe054 #define VAR_BUTTON2_ (char)0xfc
#define OK_BUTTON_ (u16)0xe055 #define OK_BUTTON_ (char)0xfd
#define CANCEL_BUTTON_ (u16)0xe056 #define CANCEL_BUTTON_ (char)0xfe
#define CODE_BUTTON_BOTTOM_ (u16)0xe057 #define CODE_BUTTON_BOTTOM_ (char)0xff
#define CHAR_USCORE L'_' #define CHAR_USCORE '_'
#define KEY_PER_LINE 11 #define KEY_PER_LINE 11
#define KEY_START 109 //ソフトウェアキーのカーソルデフォルト位置はキャンセルキー #define KEY_START 98 //ソフトウェアキーのカーソルデフォルト位置はキャンセルキー
#define KEY_OK 0xffff
#define KEY_CANCEL 0xfffe
#define PARAM_LENGTH 10 #define PARAM_LENGTH 10
@ -63,8 +59,8 @@ typedef struct CopA_Work
u16 csr; u16 csr;
int char_mode; int char_mode;
u16 key_csr; u16 key_csr;
u16 parameter[ PARAM_LENGTH + 1 ]; char parameter[ PARAM_LENGTH + 1 ];
u16 temp_parameter[ PARAM_LENGTH + 1 ]; char temp_parameter[ PARAM_LENGTH + 1 ];
u8 temp_parameter_length; u8 temp_parameter_length;
void(*pNowProcess)(void); void(*pNowProcess)(void);
int starx,stary; int starx,stary;
@ -77,27 +73,26 @@ typedef struct CopA_Work
static void MenuScene( void ); static void MenuScene( void );
// global variable ------------------------------------- // global variable -------------------------------------
extern RTCDrawProperty g_rtcDraw;
// static variable ------------------------------------- // static variable -------------------------------------
static CopA_Work s_work = (CopA_Work){0,0,0,L"",L"",0,0,0}; static CopA_Work s_work = (CopA_Work){0,0,0,"","",0,0,0};
// const data ----------------------------------------- // const data -----------------------------------------
static const u16 char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM]; static const char char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM];
static const u16 *s_pStrMenu[ COPA_MENU_ELEMENT_NUM ] = static const char *s_pStrMenu[ COPA_MENU_ELEMENT_NUM ] =
{ {
L"パラメータ設定", "Set Parameter",
L"Bを起動", "Launch CooperationB",
L"ランチャーに戻る", "Return to Launcher",
}; };
static MenuPos s_menuPos[] = { static MenuPos s_menuPos[] = {
{ TRUE, 4 * 8, 8 * 8 }, { TRUE, 3, 6 },
{ TRUE, 4 * 8, 10 * 8 }, { TRUE, 3, 8 },
{ TRUE, 4 * 8, 12 * 8 }, { TRUE, 3, 10 },
{ TRUE, 4 * 8, 14 * 8 }, { TRUE, 3, 12 },
}; };
static const MenuParam s_menuParam = { static const MenuParam s_menuParam = {
@ -106,50 +101,36 @@ static const MenuParam s_menuParam = {
TXT_COLOR_GREEN, TXT_COLOR_GREEN,
TXT_COLOR_RED, TXT_COLOR_RED,
&s_menuPos[ 0 ], &s_menuPos[ 0 ],
(const u16 **)&s_pStrMenu, (const char **)&s_pStrMenu,
}; };
static const u16 *str_button_char[CHAR_LIST_MODE_NUM] = { static const char *str_button_char[CHAR_LIST_MODE_NUM] = {
L"かな", "eisuu",
L"カナ",
L"英数",
}; };
static u16 next_char_mode[CHAR_LIST_MODE_NUM-1]; //static u16 next_char_mode[CHAR_LIST_MODE_NUM-1];
static const u16 str_button_del[] = L"<EFBFBD>DEL"; static const char str_button_del[] = "DEL";
static const u16 str_button_space[] = L"SPACE"; static const char str_button_space[] = "SPACE";
static const u16 str_button_ok[] = L"OK"; static const char str_button_ok[] = "OK";
static const u16 str_button_cancel[] = L"CANCEL"; static const char str_button_cancel[] = "CANCEL";
static const u16 *str_button[] = { static const char *str_button[] = {
(const u16 *)str_button_del, (const char *)str_button_del,
(const u16 *)str_button_space, (const char *)str_button_space,
NULL, NULL,
NULL, NULL,
(const u16 *)str_button_ok, (const char *)str_button_ok,
(const u16 *)str_button_cancel, (const char *)str_button_cancel,
}; };
//====================================================== //======================================================
// アプリ連携テストプログラムA // アプリ連携テストプログラムA
//====================================================== //======================================================
// UTF16の文字列長算出
static u8 MY_StrLen( const u16 *pStr )
{
u8 len = 0;
while( *pStr++ ) {
++len;
if( len == 255 ) {
break;
}
}
return len;
}
static void SetSoftKeyboardButton(int mode) static void SetSoftKeyboardButton(int mode)
{ {
/*
int l; int l;
int count = 0; int count = 0;
for(l=0; l<CHAR_LIST_MODE_NUM ;l++) for(l=0; l<CHAR_LIST_MODE_NUM ;l++)
@ -160,6 +141,7 @@ static void SetSoftKeyboardButton(int mode)
count++; count++;
} }
} }
*/
s_work.char_mode = mode; s_work.char_mode = mode;
} }
@ -169,11 +151,11 @@ static void SetSoftKeyboardButton(int mode)
static void DrawCharKeys( void ) static void DrawCharKeys( void )
{ {
int l; int l;
u16 code; char code;
for( l=0; l<CHAR_LIST_CHAR_NUM; l++ ) for( l=0; l<CHAR_LIST_CHAR_NUM; l++ )
{ {
int color=TXT_COLOR_BLACK; u8 color=TXT_COLOR_BLACK;
code = char_tbl[s_work.char_mode][l]; code = char_tbl[s_work.char_mode][l];
if (s_work.key_csr == l) color = TXT_COLOR_GREEN; if (s_work.key_csr == l) color = TXT_COLOR_GREEN;
if(code != EOM_) if(code != EOM_)
@ -181,16 +163,16 @@ static void DrawCharKeys( void )
if( (code >= CODE_BUTTON_TOP_) && (code < CODE_BUTTON_BOTTOM_) ) if( (code >= CODE_BUTTON_TOP_) && (code < CODE_BUTTON_BOTTOM_) )
{ {
int x = code - CODE_BUTTON_TOP_; int x = code - CODE_BUTTON_TOP_;
PutStringUTF16( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) , myDp_Printf( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) ,
CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, str_button[x] ); CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, MAIN_SCREEN, str_button[x] );
} }
else else
{ {
u16 s[2]; char s[2];
s[0] = code; s[0] = code;
s[1] = 0; s[1] = 0;
PutStringUTF16( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) , myDp_Printf( CLIST_LT_X + CLIST_MARGIN*(l%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((l%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT) ,
CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, s ); CLIST_LT_Y + CLIST_MARGIN*(l/KEY_PER_LINE) , color, MAIN_SCREEN, s );
} }
} }
} }
@ -199,7 +181,7 @@ static void DrawCharKeys( void )
// 一文字削除 // 一文字削除
static void DeleteACharacter( void ) static void DeleteACharacter( void )
{ {
u16 *buf; char *buf;
u8 *length; u8 *length;
buf = s_work.temp_parameter; buf = s_work.temp_parameter;
length = &s_work.temp_parameter_length; length = &s_work.temp_parameter_length;
@ -211,12 +193,8 @@ static void MenuInit( void )
{ {
GX_DispOff(); GX_DispOff();
GXS_DispOff(); GXS_DispOff();
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE );
PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"CooperationC"); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "CooperationC");
GetAndDrawRTCData( &g_rtcDraw, TRUE );
SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 );
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
@ -227,9 +205,9 @@ static void MenuInit( void )
} }
// 選択中文字キー・特殊キーで決定した時の挙動 // 選択中文字キー・特殊キーで決定した時の挙動
static void PushKeys( u16 code ) static void PushKeys( char code )
{ {
u16 *buf; char *buf;
u8 *length; u8 *length;
u16 max_length; u16 max_length;
buf = s_work.temp_parameter; buf = s_work.temp_parameter;
@ -243,17 +221,17 @@ static void PushKeys( u16 code )
{ {
case VAR_BUTTON1_: case VAR_BUTTON1_:
case VAR_BUTTON2_: case VAR_BUTTON2_:
SetSoftKeyboardButton(next_char_mode[code - VAR_BUTTON1_]); // SetSoftKeyboardButton(next_char_mode[code - VAR_BUTTON1_]);
break; break;
case DEL_BUTTON_: case DEL_BUTTON_:
DeleteACharacter(); DeleteACharacter();
break; break;
case SPACE_BUTTON_: case SPACE_BUTTON_:
if(*length < max_length) buf[(*length)++] = L' '; if(*length < max_length) buf[(*length)++] = ' ';
break; break;
case OK_BUTTON_: case OK_BUTTON_:
SVC_CpuClear(0, buf + *length, (max_length - *length) * 2, 16);// ゼロクリア MI_CpuClear8(buf + *length, (u32)(max_length - *length));// ゼロクリア
MI_CpuCopy8(buf, s_work.parameter, 2*(PARAM_LENGTH+1)); MI_CpuCopy8(buf, s_work.parameter, (PARAM_LENGTH+1));
// セーブ後にキャンセル処理と合流 // セーブ後にキャンセル処理と合流
case CANCEL_BUTTON_: case CANCEL_BUTTON_:
MenuInit(); MenuInit();
@ -269,73 +247,14 @@ static void PushKeys( u16 code )
} }
} }
// PadDetectOnKeyのSelectSomethingByTPで使うSelectSomethingFuncの実装
static BOOL SelectSoftwareKeyFunc( u16 *csr, TPData *tgt )
{
// まずは候補となる座標(カーソル単位)を取得
int csrx;
int csry;
int csrxy;
int a;
int b;
NNSG2dTextRect rect;
u16 code;
BOOL ret;
csrx = tgt->x - CLIST_LT_X;
csrx = csrx - (CLIST_SEGMENT_INTERVAL*(csrx/(CLIST_MARGIN*CLIST_KEY_PER_SEGMENT+CLIST_SEGMENT_INTERVAL)));
csrx = csrx / CLIST_MARGIN;
csry = (tgt->y - CLIST_LT_Y) / CLIST_MARGIN;
if(csrx < 0 ) return FALSE;
if ( csrx >= KEY_PER_LINE ) csrx = KEY_PER_LINE - 1;
csrxy = csrx + csry * KEY_PER_LINE;
if ( csrxy < 0 || csrxy >= CHAR_LIST_CHAR_NUM) return FALSE;// 明らかにはみ出した
// 候補座標のキーコード取得
code = char_tbl[s_work.char_mode][csrxy];
if(code == EOM_) return FALSE;
// 候補座標の領域取得
if( (code >= CODE_BUTTON_TOP_) && (code < CODE_BUTTON_BOTTOM_) )
{
int x = code - CODE_BUTTON_TOP_;
rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, str_button[x] );
}
else
{
u16 s[2];
s[0] = code;
s[1] = 0;
// rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, s );
// 文字幅じゃかなり判定が厳しい……ギリギリまでとってみる
rect.width = CLIST_MARGIN;
rect.height = CLIST_MARGIN;
}
a = CLIST_LT_X + CLIST_MARGIN*(csrxy%KEY_PER_LINE) + CLIST_SEGMENT_INTERVAL*((csrxy%KEY_PER_LINE)/CLIST_KEY_PER_SEGMENT);
b = CLIST_LT_Y + CLIST_MARGIN*(csrxy/KEY_PER_LINE);
// 候補座標の領域にタッチ座標が含まれているかチェック
ret = WithinRangeTP( a, b, a+rect.width, b+rect.height, tgt );
if(ret)
{
*csr = (u16)csrxy;
}
return ret;
}
// ソフトウェアキー上でのキーパッド及びタッチパッド処理 // ソフトウェアキー上でのキーパッド及びタッチパッド処理
// 先にReadTPしておくこと。 // 先にReadTPしておくこと。
static void PadDetectOnKey( void ) static void PadDetectOnKey( void )
{ {
SelectSomethingFunc func[1];
BOOL tp_select = FALSE;
//-------------------------------------- //--------------------------------------
// キー入力処理 // キー入力処理
//-------------------------------------- //--------------------------------------
if( pad.trg & PAD_KEY_RIGHT ){ // カーソルの移動 if( MYPAD_IS_TRIG(PAD_KEY_RIGHT) ){ // カーソルの移動
do do
{ {
if(s_work.key_csr%KEY_PER_LINE != KEY_PER_LINE-1) s_work.key_csr++; if(s_work.key_csr%KEY_PER_LINE != KEY_PER_LINE-1) s_work.key_csr++;
@ -344,7 +263,7 @@ static void PadDetectOnKey( void )
} }
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
if( pad.trg & PAD_KEY_LEFT ){ if( MYPAD_IS_TRIG(PAD_KEY_LEFT) ){
do do
{ {
if(s_work.key_csr%KEY_PER_LINE != 0) s_work.key_csr--; if(s_work.key_csr%KEY_PER_LINE != 0) s_work.key_csr--;
@ -353,7 +272,7 @@ static void PadDetectOnKey( void )
} }
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 if( MYPAD_IS_TRIG(PAD_KEY_DOWN) ){ // カーソルの移動
do do
{ {
s_work.key_csr += KEY_PER_LINE; s_work.key_csr += KEY_PER_LINE;
@ -361,7 +280,7 @@ static void PadDetectOnKey( void )
} }
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
if( pad.trg & PAD_KEY_UP ){ if( MYPAD_IS_TRIG(PAD_KEY_UP) ){
do do
{ {
if( s_work.key_csr < KEY_PER_LINE ) s_work.key_csr += (CHAR_LIST_CHAR_NUM/KEY_PER_LINE)*KEY_PER_LINE; if( s_work.key_csr < KEY_PER_LINE ) s_work.key_csr += (CHAR_LIST_CHAR_NUM/KEY_PER_LINE)*KEY_PER_LINE;
@ -371,12 +290,10 @@ static void PadDetectOnKey( void )
while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_); while(char_tbl[s_work.char_mode][s_work.key_csr]==EOM_);
} }
func[0] = (SelectSomethingFunc)SelectSoftwareKeyFunc;
tp_select = SelectSomethingByTP(&s_work.key_csr, func, 1 );
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // キーが押された if( MYPAD_IS_TRIG(PAD_BUTTON_A) ) { // キーが押された
PushKeys( char_tbl[s_work.char_mode][s_work.key_csr] ); PushKeys( char_tbl[s_work.char_mode][s_work.key_csr] );
}else if( pad.trg & PAD_BUTTON_B ) { }else if( MYPAD_IS_TRIG(PAD_BUTTON_B) ) {
DeleteACharacter(); DeleteACharacter();
} }
} }
@ -384,9 +301,8 @@ static void PadDetectOnKey( void )
// パラメータ編集画面の描画処理 // パラメータ編集画面の描画処理
static void DrawSetParameterScene( void ) static void DrawSetParameterScene( void )
{ {
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "PARAMETER" );
PutStringUTF16( 0, 0, TXT_COLOR_BLUE, (const u16 *)L"PARAMETER" ); myDp_Printf( 11, 3, TXT_COLOR_BLACK, MAIN_SCREEN, s_work.temp_parameter );
PutStringUTF16( 128-60 , 21 , TXT_UCOLOR_G0, s_work.temp_parameter );
DrawCharKeys(); DrawCharKeys();
} }
@ -397,17 +313,14 @@ static void SetParameterInit( void )
s_work.key_csr = KEY_START; s_work.key_csr = KEY_START;
// パラメータ用テンポラリバッファの初期化 // パラメータ用テンポラリバッファの初期化
MI_CpuCopy8(s_work.parameter, s_work.temp_parameter, 2*(PARAM_LENGTH+1)); MI_CpuCopy8(s_work.parameter, s_work.temp_parameter, (PARAM_LENGTH+1));
s_work.temp_parameter_length = MY_StrLen( s_work.temp_parameter ); s_work.temp_parameter_length = (u8)STD_GetStringLength( s_work.temp_parameter );
if( s_work.temp_parameter_length < PARAM_LENGTH ) { if( s_work.temp_parameter_length < PARAM_LENGTH ) {
SVC_CpuClear(CHAR_USCORE, &s_work.temp_parameter[ s_work.temp_parameter_length ], MI_CpuFill8( &s_work.temp_parameter[ s_work.temp_parameter_length ], CHAR_USCORE, (u32)(PARAM_LENGTH - s_work.temp_parameter_length) );
( PARAM_LENGTH - s_work.temp_parameter_length ) * 2, 16);
} }
DrawSetParameterScene(); DrawSetParameterScene();
SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 );
GX_SetVisiblePlane ( GX_PLANEMASK_BG0 ); GX_SetVisiblePlane ( GX_PLANEMASK_BG0 );
GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); GXS_SetVisiblePlane( GX_PLANEMASK_BG0 );
} }
@ -415,8 +328,6 @@ static void SetParameterInit( void )
// パラメータ編集メイン // パラメータ編集メイン
static void SetParameterMain( void ) static void SetParameterMain( void )
{ {
ReadTP();
PadDetectOnKey(); PadDetectOnKey();
// 描画処理 // 描画処理
@ -425,49 +336,55 @@ static void SetParameterMain( void )
static void DrawMenuScene( void ) static void DrawMenuScene( void )
{ {
NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_NULL ); myDp_Printf( 1, 0, TXT_COLOR_BLUE, MAIN_SCREEN, "CooperationC");
PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"CooperationC"); myDp_Printf( 19 , 6, TXT_COLOR_DARKLIGHTBLUE, MAIN_SCREEN, s_work.parameter );
PutStringUTF16( s_work.starx-6, s_work.stary-6, TXT_UCOLOR_G0, (const u16 *)L"<EFBFBD>");
PutStringUTF16( 128 , 8*8, TXT_UCOLOR_G0, s_work.parameter );
GetAndDrawRTCData( &g_rtcDraw, TRUE );
// メニュー項目 // メニュー項目
DrawMenu( s_work.csr, &s_menuParam ); myDp_DrawMenu( s_work.csr, MAIN_SCREEN, &s_menuParam );
PrintfSJIS( 1*8, 20*8, TXT_COLOR_BLACK, "<EFBFBD>の位置(%d,%d)",s_work.starx, s_work.stary); myDp_Printf( 1, 20, TXT_COLOR_BLACK, MAIN_SCREEN, "'$' pos = (%d,%d)", s_work.starx, s_work.stary);
myDp_Printf( s_work.starx, s_work.stary, TXT_COLOR_RED, MAIN_SCREEN, "$");
} }
static void MenuScene(void) static void MenuScene(void)
{ {
BOOL tp_select = FALSE;
static TPData tgt = (TPData){0,0,0,0};
LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0}; LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP();
//-------------------------------------- //--------------------------------------
// キー入力処理 // キー入力処理
//-------------------------------------- //--------------------------------------
if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 if( MYPAD_IS_TRIG(PAD_KEY_DOWN) ){ // カーソルの移動
if( ++s_work.csr == COPA_MENU_ELEMENT_NUM ) { if( ++s_work.csr == COPA_MENU_ELEMENT_NUM ) {
s_work.csr=0; s_work.csr=0;
} }
if( ++s_work.stary == 24)
{
s_work.stary = 0;
}
} }
if( pad.trg & PAD_KEY_UP ){ if( MYPAD_IS_TRIG(PAD_KEY_UP) ){
if( --s_work.csr & 0x80 ) { if( --s_work.csr & 0x80 ) {
s_work.csr=COPA_MENU_ELEMENT_NUM - 1; s_work.csr=COPA_MENU_ELEMENT_NUM - 1;
} }
if( --s_work.stary == -1)
{
s_work.stary = 23;
}
} }
tp_select = SelectMenuByTP( &s_work.csr, &s_menuParam ); if( MYPAD_IS_TRIG(PAD_KEY_LEFT) ){ // カーソルの移動
if( --s_work.starx == -1)
if(tpd.disp.touch) {
{ s_work.starx = 31;
tgt = tpd.disp; }
if(s_work.starx != tgt.x) s_work.starx += (((tgt.x - s_work.starx)>>3) + ((tgt.x > s_work.starx) ? 1 : -1) ); }
if(s_work.stary != tgt.y) s_work.stary += (((tgt.y - s_work.stary)>>3) + ((tgt.y > s_work.stary) ? 1 : -1) ); if( MYPAD_IS_TRIG(PAD_KEY_RIGHT) ){
if( ++s_work.starx == 32)
{
s_work.starx = 0;
}
} }
DrawMenuScene(); DrawMenuScene();
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 if( MYPAD_IS_TRIG(PAD_BUTTON_A)) { // メニュー項目への分岐
if( s_menuPos[ s_work.csr ].enable ) { if( s_menuPos[ s_work.csr ].enable ) {
switch( s_work.csr ) { switch( s_work.csr ) {
case 0: case 0:
@ -479,11 +396,11 @@ static void MenuScene(void)
{ {
FSFile f; FSFile f;
FS_InitFile(&f); FS_InitFile(&f);
if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8(L"ライトエラー1",s_work.parameter,14); break;} if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8("W Error 1",s_work.parameter,10); break;}
FS_CreateFile("test.dat", FS_PERMIT_R | FS_PERMIT_W ); FS_CreateFile("test.dat", FS_PERMIT_R | FS_PERMIT_W );
if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_W)) {MI_CpuCopy8(L"ライトエラー2",s_work.parameter,14); break;} if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_W)) {MI_CpuCopy8("W Error 2",s_work.parameter,10); break;}
if(-1 == FS_WriteFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8(L"ライトエラー3",s_work.parameter,14); break;} if(-1 == FS_WriteFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8("W Error 3",s_work.parameter,10); break;}
if(!FS_CloseFile( &f )) {MI_CpuCopy8(L"ライトエラー4",s_work.parameter,14); break;} if(!FS_CloseFile( &f )) {MI_CpuCopy8("W Error 4",s_work.parameter,10); break;}
} }
// アプリ間パラメータをセット // アプリ間パラメータをセット
{ {
@ -493,7 +410,7 @@ static void MenuScene(void)
OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE ); OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE );
// validフラグを立てる // validフラグを立てる
OS_SetValidDeliveryArgumentInfo( TRUE ); OS_SetValidDeliveryArgumentInfo( TRUE );
// メーカーコードとゲームコードのセット(Launcher側でやるべき) // メーカーコードとゲームコードのセット
OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr ); OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr );
OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr ); OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr );
OS_SetTitleIdToDeliveryArgumentInfo( 0x00030004434f5043 ); OS_SetTitleIdToDeliveryArgumentInfo( 0x00030004434f5043 );
@ -515,12 +432,12 @@ static void MenuScene(void)
// 初期化 // 初期化
void CooperationCInit( void ) void CooperationCInit( void )
{ {
ChangeUserColor( LCFG_TSD_GetUserColor() );
s_work.parameter[0] = 0; s_work.parameter[0] = 0;
MenuInit(); MenuInit();
FS_Init(3);
{ {
if(OS_IsValidDeliveryArgumentInfo()) if( OS_IsValidDeliveryArgumentInfo() )
{ {
OS_DecodeDeliveryBuffer(); OS_DecodeDeliveryBuffer();
if(STD_CompareNString((const char *)OS_GetArgv(1), "-r", 3) == 0) if(STD_CompareNString((const char *)OS_GetArgv(1), "-r", 3) == 0)
@ -528,10 +445,10 @@ void CooperationCInit( void )
// セーブしたデータから復帰 // セーブしたデータから復帰
FSFile f; FSFile f;
FS_InitFile(&f); FS_InitFile(&f);
if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8(L"リードエラー1",s_work.parameter,14); return;} if(!FS_SetCurrentDirectory("dataPrv:/")) {MI_CpuCopy8("R Error 1",s_work.parameter,10); return;}
if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_R)) {return;} if(!FS_OpenFileEx(&f, "test.dat", FS_FILEMODE_R)) {return;}
if(-1 == FS_ReadFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8(L"リードエラー2",s_work.parameter,14); return;} if(-1 == FS_ReadFile(&f, &s_work, sizeof(s_work))) {MI_CpuCopy8("R Error 2",s_work.parameter,10); return;}
if(!FS_CloseFile( &f )) {MI_CpuCopy8(L"リードエラー3",s_work.parameter,14); return;} if(!FS_CloseFile( &f )) {MI_CpuCopy8("R Error 3",s_work.parameter,10); return;}
} }
} }
} }
@ -548,87 +465,31 @@ void CooperationCMain(void)
// ソフトウェアキーボード用キャラテーブル // ソフトウェアキーボード用キャラテーブル
//====================================================== //======================================================
static const u16 char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM] = { static const char char_tbl[CHAR_LIST_MODE_NUM][CHAR_LIST_CHAR_NUM] = {
{ // ひらがな
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', DEL_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', SPACE_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', VAR_BUTTON1_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', VAR_BUTTON2_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', OK_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
EOM_, EOM_, EOM_, EOM_, EOM_, CANCEL_BUTTON_,
EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_,
},
{ // カタカナ
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', DEL_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', SPACE_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', VAR_BUTTON1_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', VAR_BUTTON2_,
L'', L'', L'', L'', L'',
L'', EOM_, L'', EOM_, L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', OK_BUTTON_,
L'', L'', L'', L'', L'',
L'', L'', L'', L'', L'', EOM_,
L'', L'', L'', L'', EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, CANCEL_BUTTON_,
EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_,
},
{ // 英数 { // 英数
L'', L'', L'', L'', L'', 'A', 'B', 'C', 'D', 'E',
L'', L'', L'', L'', L'', DEL_BUTTON_, 'F', 'G', 'H', 'I', 'J', DEL_BUTTON_,
L'', L'', L'', L'', L'', 'K', 'L', 'M', 'N', 'O',
L'', L'', L'', L'', L'', SPACE_BUTTON_, 'P', 'Q', 'R', 'S', 'T', SPACE_BUTTON_,
L'', L'', L'', L'', L'', 'U', 'V', 'W', 'X', 'Y',
L'', EOM_, EOM_, EOM_, EOM_, EOM_, 'Z', EOM_, EOM_, EOM_, EOM_, EOM_,
L'', L'', L'', L'', L'', 'a', 'b', 'c', 'd', 'e',
L'', L'', L'', L'', L'', VAR_BUTTON1_, 'f', 'g', 'h', 'i', 'j', EOM_,
L'', L'', L'', L'', L'', 'k', 'l', 'm', 'n', 'o',
L'', L'', L'', L'', L'', VAR_BUTTON2_, 'p', 'q', 'r', 's', 't', EOM_,
L'', L'', L'', L'', L'', 'u', 'v', 'w', 'x', 'y',
L'', EOM_, EOM_, EOM_, EOM_, EOM_, 'z', EOM_, EOM_, EOM_, EOM_, EOM_,
L'', L'', L'', L'', L'', '0', '1', '2', '3', '4',
L'', L'', L'', L'', L'', EOM_, '5', '6', '7', '8', '9', EOM_,
L'', EOM_, L'', EOM_, L'', '!', EOM_, '&', EOM_, '/',
L'', EOM_, L'', EOM_, L'', OK_BUTTON_, ',', EOM_, '.', EOM_, '-', OK_BUTTON_,
L'', EOM_, L'', EOM_, EOM_, '\'', EOM_, '"', EOM_, EOM_,
L'', EOM_, L'', EOM_, L'', EOM_, '@', EOM_, '(', EOM_, ')', CANCEL_BUTTON_,
EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, CANCEL_BUTTON_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_, EOM_,
}, },

View File

@ -16,7 +16,7 @@
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#include <twl.h> #include <twl.h>
#include "misc.h" #include "misc_simple.h"
#include "CooperationC.h" #include "CooperationC.h"
// extern data----------------------------------------------------------------- // extern data-----------------------------------------------------------------
@ -30,9 +30,6 @@ static void INTR_VBlank( void );
// static variable------------------------------------------------------------- // static variable-------------------------------------------------------------
BOOL g_isValidTSD; BOOL g_isValidTSD;
RTCDrawProperty g_rtcDraw = {
TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y
};
// const data------------------------------------------------------------------ // const data------------------------------------------------------------------
@ -42,57 +39,19 @@ RTCDrawProperty g_rtcDraw = {
// ============================================================================ // ============================================================================
void TwlMain(void) void TwlMain(void)
{ {
myInit();
// 初期化----------------------------------
OS_Init();
OS_InitTick();
(void)OS_EnableIrq();
(void)OS_EnableInterrupts();
GX_Init();
GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON
FS_Init( 3 );
// 割り込み許可----------------------------
(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();
// ※本来ならランチャーからのパラメータチェックを行い、
// 初回起動シーケンスに入るパスがある
// TWL設定のリード
SYSM_SetAllocFunc( Alloc, Free ); // LCFG_ReadTWLSettings()の実行に必要。
// ::::::::::::::::::::::::::::::::::::::::::::::
// TWL設定データファイルの読み込み
// ::::::::::::::::::::::::::::::::::::::::::::::
(void)LCFG_ReadHWSecureInfo();
g_isValidTSD = LCFG_ReadTWLSettings();
if( g_isValidTSD ) {
SYSM_CaribrateTP();
}
InitBG();
GetAndDrawRTCData( &g_rtcDraw, TRUE );
CooperationCInit(); CooperationCInit();
// ƒ<>ƒCƒ“ƒ<C692>[ƒv---------------------------- // ƒ<>ƒCƒ“ƒ<C692>[ƒv----------------------------
while(1){ while(1){
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
ReadKeyPad(); // キー入力の取得
ReadTP(); // TP入力の取得
myPreMain();
CooperationCMain(); CooperationCMain();
myProMain();
OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち
} }
} }

View File

@ -1,6 +1,6 @@
#! make -f #! make -f
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Project: TwlIPL # Project: TwlSDK - demos.TWL - nandApp - appliCooperation
# File: Makefile # File: Makefile
# #
# Copyright 2007 Nintendo. All rights reserved. # Copyright 2007 Nintendo. All rights reserved.
@ -11,9 +11,9 @@
# not be disclosed to third parties or copied or duplicated in any form, # 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. # in whole or in part, without the prior written consent of Nintendo.
# #
# $Date:: 2007-10-03#$ # $Date:: $
# $Rev: 1319 $ # $Rev: $
# $Author: kitase_hirotake $ # $Author: $
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/commondefs include $(TWLSDK_ROOT)/build/buildtools/commondefs

View File

@ -34,16 +34,12 @@ LINCLUDES = $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/include
LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE) LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE)
LLIBRARIES += libboc$(TWL_LIBSUFFIX).a \ LLIBRARIES += libDEMO$(TWL_LIBSUFFIX).a
libes$(TWL_LIBSUFFIX).a \
libnam$(TWL_LIBSUFFIX).a \
libDEMO$(TWL_LIBSUFFIX).a
ADDRESS_DTCM = 0x0e000000 ADDRESS_DTCM = 0x0e000000
MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)'
include $(TWLSDK_ROOT)/add-ins/es/commondefs.es
include $(TWLSDK_ROOT)/build/buildtools/commondefs include $(TWLSDK_ROOT)/build/buildtools/commondefs
DEFAULT_COMP_ARM7 = my_racoon DEFAULT_COMP_ARM7 = my_racoon

Binary file not shown.

Before

Width:  |  Height:  |  Size: 630 B

After

Width:  |  Height:  |  Size: 630 B

View File

@ -33,14 +33,10 @@ LINCLUDES = $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/include
LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE) LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE)
LLIBRARIES += libboc$(TWL_LIBSUFFIX).a \ LLIBRARIES += libDEMO$(TWL_LIBSUFFIX).a
libes$(TWL_LIBSUFFIX).a \
libnam$(TWL_LIBSUFFIX).a \
libDEMO$(TWL_LIBSUFFIX).a
MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)'
include $(TWLSDK_ROOT)/add-ins/es/commondefs.es
include $(TWLSDK_ROOT)/build/buildtools/commondefs include $(TWLSDK_ROOT)/build/buildtools/commondefs
SDK_NMENU_DATADIR = $(ROOT)/build/tools/TwlNMenu/data SDK_NMENU_DATADIR = $(ROOT)/build/tools/TwlNMenu/data

Binary file not shown.

Before

Width:  |  Height:  |  Size: 630 B

After

Width:  |  Height:  |  Size: 630 B

View File

@ -35,14 +35,10 @@ LINCLUDES = $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/include
LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE) LLIBRARY_DIRS += $(TWLSDK_ROOT)/build/demos/gx/UnitTours/DEMOLib/lib/$(TWL_BUILDTYPE)
LLIBRARIES += libboc$(TWL_LIBSUFFIX).a \ LLIBRARIES += libDEMO$(TWL_LIBSUFFIX).a
libes$(TWL_LIBSUFFIX).a \
libnam$(TWL_LIBSUFFIX).a \
libDEMO$(TWL_LIBSUFFIX).a
MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)'
include $(TWLSDK_ROOT)/add-ins/es/commondefs.es
include $(TWLSDK_ROOT)/build/buildtools/commondefs include $(TWLSDK_ROOT)/build/buildtools/commondefs
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------

Binary file not shown.

Before

Width:  |  Height:  |  Size: 630 B

After

Width:  |  Height:  |  Size: 630 B