SDK3244対応

・アプリ間連携テストで、SDKのAPIを利用するよう変更
 ・その他smallfix

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@398 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yoshida_teruhisa 2007-12-25 09:15:55 +00:00
parent 1fc7b62c89
commit 09f3649d7a
15 changed files with 72 additions and 56 deletions

View File

@ -321,6 +321,7 @@ static void BannerDraw(int cursor, int selected, TitleProperty *titleprop)
NNSG2dTextRect rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, str ); NNSG2dTextRect rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, str );
NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_NULL, 0, 24, WINDOW_WIDTH, 32 ); NNS_G2dCharCanvasClearArea( &gCanvas, TXT_COLOR_NULL, 0, 24, WINDOW_WIDTH, 32 );
PutStringUTF16( (WINDOW_WIDTH-rect.width)>>1, TITLE_V_CENTER - (rect.height>>1), TXT_COLOR_BLACK, str ); PutStringUTF16( (WINDOW_WIDTH-rect.width)>>1, TITLE_V_CENTER - (rect.height>>1), TXT_COLOR_BLACK, str );
old_selected = selected;
} }
if(fadecount < (FADE_COUNT_MAX - FADE_START)) { if(fadecount < (FADE_COUNT_MAX - FADE_START)) {

View File

@ -94,9 +94,8 @@ void TwlMain( void )
// 「ダイレクトブートでない」なら // 「ダイレクトブートでない」なら
if( !pBootTitle ) { if( !pBootTitle ) {
// アプリ間パラメータの呼び出し元アプリ情報をクリア // アプリ間パラメタのvalidフラグを落とす
OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; OS_SetValidDeliveryArgumentInfo( FALSE );
arginfo->gameCode = NULL;
// NAND & カードアプリリスト取得 // NAND & カードアプリリスト取得
(void)SYSM_GetNandTitleList( s_titleList, LAUNCHER_TITLE_LIST_NUM ); // NANDアプリリストの取得内蔵アプリはs_titleList[1]から格納される) (void)SYSM_GetNandTitleList( s_titleList, LAUNCHER_TITLE_LIST_NUM ); // NANDアプリリストの取得内蔵アプリはs_titleList[1]から格納される)

View File

@ -25,7 +25,7 @@ TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED TWL_ARCHGEN = LIMITED
TITLEID_LO = COPA TITLEID_LO = COPA
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
TARGET_BIN = main.srl TARGET_BIN = main.srl

View File

@ -439,7 +439,7 @@ static void MenuScene(void)
{ {
BOOL tp_select = FALSE; BOOL tp_select = FALSE;
static TPData tgt = (TPData){0,0,0,0}; static TPData tgt = (TPData){0,0,0,0};
BootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0}; LauncherBootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP(); ReadTP();
@ -487,16 +487,18 @@ static void MenuScene(void)
} }
// アプリ間パラメータをセット // アプリ間パラメータをセット
{ {
OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG;
// メーカーコードとゲームコードのセット(Launcher側でやるべき)
u16 *maker_code_src_addr = (u16 *)(HW_TWL_ROM_HEADER_BUF + 0x10); u16 *maker_code_src_addr = (u16 *)(HW_TWL_ROM_HEADER_BUF + 0x10);
u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc); u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc);
arginfo->makerCode = *maker_code_src_addr; // アプリ間パラメータの初期化
// まだゲームコードは証明書の関係でNTRJしか入ってない……ので強制的に値代入 OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE );
//arginfo->gameCode = *game_code_src_addr; // validフラグを立てる
arginfo->gameCode = 0x41504f43; // 下位から'C','O','P','A' OS_SetValidDeliveryArgumentInfo( TRUE );
// アプリ専用部分のセット // メーカーコードとゲームコードのセット(Launcher側でやるべき)
MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1)); OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr );
OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr );
OS_SetTitleIdToDeliveryArgumentInfo( 0x00010001434f5041 );
// アプリ専用引数のセット
OS_SetDeliveryArgments( (const char *)s_work.parameter );
} }
//B起動 //B起動
OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag ); OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
@ -518,10 +520,10 @@ void CooperationAInit( void )
MenuInit(); MenuInit();
{ {
OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; if( OS_IsValidDeliveryArgumentInfo() )
if(arginfo->gameCode != NULL)
{ {
if(STD_CompareNString((const char *)arginfo->buf, "-r", 3) == 0) OS_DecodeDeliveryBuffer();
if(STD_CompareNString((const char *)OS_GetArgv(1), "-r", 3) == 0)
{ {
// セーブしたデータから復帰 // セーブしたデータから復帰
FSFile f; FSFile f;

View File

@ -25,7 +25,7 @@ TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED TWL_ARCHGEN = LIMITED
TITLEID_LO = COPB TITLEID_LO = COPB
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
TARGET_BIN = main.srl TARGET_BIN = main.srl

View File

@ -44,8 +44,6 @@ static u16 s_csr = 0;
static u16 s_parameter[ PARAM_LENGTH + 1 ]; static u16 s_parameter[ PARAM_LENGTH + 1 ];
static void(*s_pNowProcess)(void); static void(*s_pNowProcess)(void);
static u32 invGameCode;
// const data ----------------------------------------- // const data -----------------------------------------
static const u16 *s_pStrMenu[ COPB_MENU_ELEMENT_NUM ] = static const u16 *s_pStrMenu[ COPB_MENU_ELEMENT_NUM ] =
{ {
@ -77,7 +75,8 @@ static void DrawMenuScene( void )
PutStringUTF16( 1*8, 18*8, TXT_COLOR_BLACK, (const u16 *)L"受け取ったパラメータ:"); PutStringUTF16( 1*8, 18*8, TXT_COLOR_BLACK, (const u16 *)L"受け取ったパラメータ:");
PutStringUTF16( 3 * 8 , 20*8, TXT_UCOLOR_G0, s_parameter ); PutStringUTF16( 3 * 8 , 20*8, TXT_UCOLOR_G0, s_parameter );
PutStringUTF16( 1*8, 14*8, TXT_COLOR_BLACK, (const u16 *)L"呼び出し元アプリ:"); PutStringUTF16( 1*8, 14*8, TXT_COLOR_BLACK, (const u16 *)L"呼び出し元アプリ:");
PrintfSJIS(3*8, 16*8, TXT_COLOR_BLACK, "0x%llx",(u64)0x0001000100000000 + invGameCode);
PrintfSJIS(3*8, 16*8, TXT_COLOR_BLACK, "0x%llx",OS_IsValidDeliveryArgumentInfo() ? OS_GetTitleIdFromDeliveryArgumentInfo() : 0x0);
GetAndDrawRTCData( &g_rtcDraw, TRUE ); GetAndDrawRTCData( &g_rtcDraw, TRUE );
// メニュー項目 // メニュー項目
DrawMenu( s_csr, &s_menuParam ); DrawMenu( s_csr, &s_menuParam );
@ -101,13 +100,18 @@ static void MenuInit( void )
MI_CpuClear8(s_parameter, 2*(PARAM_LENGTH+1)); MI_CpuClear8(s_parameter, 2*(PARAM_LENGTH+1));
{ {
OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; if( OS_IsValidDeliveryArgumentInfo() )
u8 *gc = (u8 *)&arginfo->gameCode;
invGameCode = (u32)(gc[0]<<24) + (u32)(gc[1]<<16) + (u32)(gc[2]<<8) + (u32)gc[3];
if(invGameCode != NULL)
{ {
s_menuPos[ 0 ].enable = TRUE; s_menuPos[ 0 ].enable = TRUE;
MI_CpuCopy8(arginfo->buf, s_parameter, 2*(PARAM_LENGTH+1)); OS_DecodeDeliveryBuffer();
if(OS_GetArgv(1) != NULL)
{
MI_CpuCopy8(OS_GetArgv(1), s_parameter, 2*(PARAM_LENGTH+1));
}
else
{
s_parameter[0] = '\0';
}
} }
} }
@ -120,7 +124,7 @@ static void MenuInit( void )
static void MenuScene(void) static void MenuScene(void)
{ {
BOOL tp_select = FALSE; BOOL tp_select = FALSE;
BootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0}; LauncherBootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP(); ReadTP();
@ -145,20 +149,24 @@ static void MenuScene(void)
if( s_menuPos[ s_csr ].enable ) { if( s_menuPos[ s_csr ].enable ) {
switch( s_csr ) { switch( s_csr ) {
case 0: case 0:
if(invGameCode != NULL) if(OS_IsValidDeliveryArgumentInfo())
{ {
// アプリ間パラメータをセット
OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG;
// メーカーコードとゲームコードのセット(Launcher側でやるべき)
u16 *maker_code_src_addr = (u16 *)(HW_TWL_ROM_HEADER_BUF + 0x10); u16 *maker_code_src_addr = (u16 *)(HW_TWL_ROM_HEADER_BUF + 0x10);
u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc); u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc);
arginfo->makerCode = *maker_code_src_addr; u64 targetApp = OS_GetTitleIdFromDeliveryArgumentInfo();
arginfo->gameCode = *game_code_src_addr; // アプリ間パラメータの初期化
// アプリ専用部分のセット OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE );
MI_CpuCopy8("-r", arginfo->buf, 3); // validフラグを立てる
OS_SetValidDeliveryArgumentInfo( TRUE );
// メーカーコードとゲームコードのセット(Launcher側でやるべき)
OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr );
OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr );
OS_SetTitleIdToDeliveryArgumentInfo( 0x00010001434f5042 );
// アプリ専用引数のセット
OS_SetDeliveryArgments( "-r" );
//呼び出し元アプリ起動 //呼び出し元アプリ起動
OS_SetLauncherParamAndResetHardware( 0, (u64)0x0001000100000000 + invGameCode, &tempflag ); OS_SetLauncherParamAndResetHardware( 0, targetApp, &tempflag );
//OS_SetLauncherParamAndResetHardware( 0, (u64)0x00010001434f5041, &tempflag );
} }
break; break;
case 1: case 1:
@ -182,4 +190,4 @@ void CooperationBInit( void )
void CooperationBMain(void) void CooperationBMain(void)
{ {
s_pNowProcess(); s_pNowProcess();
} }

View File

@ -25,7 +25,7 @@ TARGET_PLATFORM = TWL
TWL_ARCHGEN = LIMITED TWL_ARCHGEN = LIMITED
TITLEID_LO = COPC TITLEID_LO = COPC
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
TARGET_BIN = main.srl TARGET_BIN = main.srl

View File

@ -439,7 +439,7 @@ static void MenuScene(void)
{ {
BOOL tp_select = FALSE; BOOL tp_select = FALSE;
static TPData tgt = (TPData){0,0,0,0}; static TPData tgt = (TPData){0,0,0,0};
BootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0}; LauncherBootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP(); ReadTP();
@ -487,16 +487,18 @@ static void MenuScene(void)
} }
// アプリ間パラメータをセット // アプリ間パラメータをセット
{ {
OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG;
// メーカーコードとゲームコードのセット(Launcher側でやるべき)
u16 *maker_code_src_addr = (u16 *)(HW_TWL_ROM_HEADER_BUF + 0x10); u16 *maker_code_src_addr = (u16 *)(HW_TWL_ROM_HEADER_BUF + 0x10);
u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc); u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc);
arginfo->makerCode = *maker_code_src_addr; // アプリ間パラメータの初期化
// まだゲームコードは証明書の関係でNTRJしか入ってない……ので強制的に値代入 OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE );
//arginfo->gameCode = *game_code_src_addr; // validフラグを立てる
arginfo->gameCode = 0x43504f43; // 下位から'C','O','P','C' OS_SetValidDeliveryArgumentInfo( TRUE );
// アプリ専用部分のセット // メーカーコードとゲームコードのセット(Launcher側でやるべき)
MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1)); OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr );
OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr );
OS_SetTitleIdToDeliveryArgumentInfo( 0x00010001434f5043 );
// アプリ専用引数のセット
OS_SetDeliveryArgments( (const char *)s_work.parameter );
} }
//B起動 //B起動
OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag ); OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
@ -518,10 +520,10 @@ void CooperationCInit( void )
MenuInit(); MenuInit();
{ {
OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; if(OS_IsValidDeliveryArgumentInfo())
if(arginfo->gameCode != NULL)
{ {
if(STD_CompareNString((const char *)arginfo->buf, "-r", 3) == 0) OS_DecodeDeliveryBuffer();
if(STD_CompareNString((const char *)OS_GetArgv(1), "-r", 3) == 0)
{ {
// セーブしたデータから復帰 // セーブしたデータから復帰
FSFile f; FSFile f;

View File

@ -188,6 +188,7 @@ TwlSpMain(void)
// システム領域(WRAM & MMEM)にSCFG情報をセット // システム領域(WRAM & MMEM)にSCFG情報をセット
static void SetSCFGWork( void ) static void SetSCFGWork( void )
{ {
/*
// SCFGレジスタが有効な場合のみセット // SCFGレジスタが有効な場合のみセット
if( reg_SCFG_EXT & REG_SCFG_EXT_CFG_MASK ) { if( reg_SCFG_EXT & REG_SCFG_EXT_CFG_MASK ) {
// WRAMのシステム領域にセット // WRAMのシステム領域にセット
@ -211,6 +212,7 @@ static void SetSCFGWork( void )
// MMEMのシステム領域にコピー // MMEMのシステム領域にコピー
MI_CpuCopy8( (void*)HWi_WSYS04_ADDR, (void *)HW_SYS_CONF_BUF, 6 ); MI_CpuCopy8( (void*)HWi_WSYS04_ADDR, (void *)HW_SYS_CONF_BUF, 6 );
} }
*/
} }
static BOOL IsEnableJTAG( void ) static BOOL IsEnableJTAG( void )
@ -228,6 +230,7 @@ static BOOL IsEnableJTAG( void )
#define MCU_RESET_VALUE_LEN 1 #define MCU_RESET_VALUE_LEN 1
void ReadLauncherParameter( void ) void ReadLauncherParameter( void )
{ {
/*
if( ( *(u32 *)HW_RESET_PARAMETER_BUF & MCU_RESET_VALUE_BUF_ENABLE_MASK ) == 0 ) { if( ( *(u32 *)HW_RESET_PARAMETER_BUF & MCU_RESET_VALUE_BUF_ENABLE_MASK ) == 0 ) {
(void)MCU_GetFreeRegisters( MCU_RESET_VALUE_OFS, (u8 *)HW_RESET_PARAMETER_BUF, MCU_RESET_VALUE_LEN ); (void)MCU_GetFreeRegisters( MCU_RESET_VALUE_OFS, (u8 *)HW_RESET_PARAMETER_BUF, MCU_RESET_VALUE_LEN );
} }
@ -254,6 +257,7 @@ void ReadLauncherParameter( void )
} }
// メインメモリのランチャーパラメータをクリアしておく // メインメモリのランチャーパラメータをクリアしておく
MI_CpuClear32( SYSMi_GetLauncherParamAddr(), HW_PARAM_LAUNCH_PARAM_SIZE ); MI_CpuClear32( SYSMi_GetLauncherParamAddr(), HW_PARAM_LAUNCH_PARAM_SIZE );
*/
} }

View File

@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME)
TARGET_BIN = $(TARGET_NAME).srl TARGET_BIN = $(TARGET_NAME).srl
TITLEID_LO = RCK$(TARGET_NUMBER) TITLEID_LO = RCK$(TARGET_NUMBER)
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
LCFILE_SPEC = ARM9-TS.lsf LCFILE_SPEC = ARM9-TS.lsf
ROM_SPEC = main.rsf ROM_SPEC = main.rsf

View File

@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME)
TARGET_BIN = $(TARGET_NAME).srl TARGET_BIN = $(TARGET_NAME).srl
TITLEID_LO = RCK$(TARGET_NUMBER) TITLEID_LO = RCK$(TARGET_NUMBER)
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
LCFILE_SPEC = ARM9-TS.lsf LCFILE_SPEC = ARM9-TS.lsf
ROM_SPEC = main.rsf ROM_SPEC = main.rsf

View File

@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME)
TARGET_BIN = $(TARGET_NAME).srl TARGET_BIN = $(TARGET_NAME).srl
TITLEID_LO = RCK$(TARGET_NUMBER) TITLEID_LO = RCK$(TARGET_NUMBER)
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
LCFILE_SPEC = ARM9-TS.lsf LCFILE_SPEC = ARM9-TS.lsf
ROM_SPEC = main.rsf ROM_SPEC = main.rsf

View File

@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME)
TARGET_BIN = $(TARGET_NAME).srl TARGET_BIN = $(TARGET_NAME).srl
TITLEID_LO = RCK$(TARGET_NUMBER) TITLEID_LO = RCK$(TARGET_NUMBER)
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
LCFILE_SPEC = ARM9-TS.lsf LCFILE_SPEC = ARM9-TS.lsf
ROM_SPEC = main.rsf ROM_SPEC = main.rsf

View File

@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME)
TARGET_BIN = $(TARGET_NAME).srl TARGET_BIN = $(TARGET_NAME).srl
TITLEID_LO = RCK$(TARGET_NUMBER) TITLEID_LO = RCK$(TARGET_NUMBER)
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
LCFILE_SPEC = ARM9-TS.lsf LCFILE_SPEC = ARM9-TS.lsf
ROM_SPEC = main.rsf ROM_SPEC = main.rsf

View File

@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME)
TARGET_BIN = $(TARGET_NAME).srl TARGET_BIN = $(TARGET_NAME).srl
TITLEID_LO = RCK$(TARGET_NUMBER) TITLEID_LO = RCK$(TARGET_NUMBER)
TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad
LCFILE_SPEC = ARM9-TS.lsf LCFILE_SPEC = ARM9-TS.lsf
ROM_SPEC = main.rsf ROM_SPEC = main.rsf