diff --git a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c index 7c40a005..b2d06b19 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/launcher.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/launcher.c @@ -321,6 +321,7 @@ static void BannerDraw(int cursor, int selected, TitleProperty *titleprop) NNSG2dTextRect rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, str ); 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 ); + old_selected = selected; } if(fadecount < (FADE_COUNT_MAX - FADE_START)) { diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index d8a8b014..7b21ed37 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -94,9 +94,8 @@ void TwlMain( void ) // 「ダイレクトブートでない」なら if( !pBootTitle ) { - // アプリ間パラメータの呼び出し元アプリ情報をクリア - OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; - arginfo->gameCode = NULL; + // アプリ間パラメタのvalidフラグを落とす + OS_SetValidDeliveryArgumentInfo( FALSE ); // NAND & カードアプリリスト取得 (void)SYSM_GetNandTitleList( s_titleList, LAUNCHER_TITLE_LIST_NUM ); // NANDアプリリストの取得(内蔵アプリはs_titleList[1]から格納される) diff --git a/build/tests/AppliCooperation/CooperationA/ARM9/Makefile b/build/tests/AppliCooperation/CooperationA/ARM9/Makefile index f804756f..8d4932f0 100644 --- a/build/tests/AppliCooperation/CooperationA/ARM9/Makefile +++ b/build/tests/AppliCooperation/CooperationA/ARM9/Makefile @@ -25,7 +25,7 @@ TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED TITLEID_LO = COPA -TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad +TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad TARGET_BIN = main.srl diff --git a/build/tests/AppliCooperation/CooperationA/ARM9/src/CooperationA.c b/build/tests/AppliCooperation/CooperationA/ARM9/src/CooperationA.c index f3214f4c..dc8e66e6 100644 --- a/build/tests/AppliCooperation/CooperationA/ARM9/src/CooperationA.c +++ b/build/tests/AppliCooperation/CooperationA/ARM9/src/CooperationA.c @@ -439,7 +439,7 @@ static void MenuScene(void) { BOOL tp_select = FALSE; 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(); @@ -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); u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc); - arginfo->makerCode = *maker_code_src_addr; - // まだゲームコードは証明書の関係でNTRJしか入ってない……ので強制的に値代入 - //arginfo->gameCode = *game_code_src_addr; - arginfo->gameCode = 0x41504f43; // 下位から'C','O','P','A' - // アプリ専用部分のセット - MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1)); + // アプリ間パラメータの初期化 + OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE ); + // validフラグを立てる + OS_SetValidDeliveryArgumentInfo( TRUE ); + // メーカーコードとゲームコードのセット(Launcher側でやるべき?) + OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr ); + OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr ); + OS_SetTitleIdToDeliveryArgumentInfo( 0x00010001434f5041 ); + // アプリ専用引数のセット + OS_SetDeliveryArgments( (const char *)s_work.parameter ); } //B起動 OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag ); @@ -518,10 +520,10 @@ void CooperationAInit( void ) MenuInit(); { - OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; - if(arginfo->gameCode != NULL) + if( OS_IsValidDeliveryArgumentInfo() ) { - 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; diff --git a/build/tests/AppliCooperation/CooperationB/ARM9/Makefile b/build/tests/AppliCooperation/CooperationB/ARM9/Makefile index 4d6e5833..0f18a4bc 100644 --- a/build/tests/AppliCooperation/CooperationB/ARM9/Makefile +++ b/build/tests/AppliCooperation/CooperationB/ARM9/Makefile @@ -25,7 +25,7 @@ TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED TITLEID_LO = COPB -TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad +TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad TARGET_BIN = main.srl diff --git a/build/tests/AppliCooperation/CooperationB/ARM9/src/CooperationB.c b/build/tests/AppliCooperation/CooperationB/ARM9/src/CooperationB.c index f363fba6..b2b9114b 100644 --- a/build/tests/AppliCooperation/CooperationB/ARM9/src/CooperationB.c +++ b/build/tests/AppliCooperation/CooperationB/ARM9/src/CooperationB.c @@ -44,8 +44,6 @@ static u16 s_csr = 0; static u16 s_parameter[ PARAM_LENGTH + 1 ]; static void(*s_pNowProcess)(void); -static u32 invGameCode; - // const data ----------------------------------------- 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( 3 * 8 , 20*8, TXT_UCOLOR_G0, s_parameter ); 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 ); // メニュー項目 DrawMenu( s_csr, &s_menuParam ); @@ -101,13 +100,18 @@ static void MenuInit( void ) MI_CpuClear8(s_parameter, 2*(PARAM_LENGTH+1)); { - OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; - u8 *gc = (u8 *)&arginfo->gameCode; - invGameCode = (u32)(gc[0]<<24) + (u32)(gc[1]<<16) + (u32)(gc[2]<<8) + (u32)gc[3]; - if(invGameCode != NULL) + if( OS_IsValidDeliveryArgumentInfo() ) { 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) { BOOL tp_select = FALSE; - BootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0}; + LauncherBootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0}; ReadTP(); @@ -145,20 +149,24 @@ static void MenuScene(void) if( s_menuPos[ s_csr ].enable ) { switch( s_csr ) { 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); u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc); - arginfo->makerCode = *maker_code_src_addr; - arginfo->gameCode = *game_code_src_addr; - // アプリ専用部分のセット - MI_CpuCopy8("-r", arginfo->buf, 3); + u64 targetApp = OS_GetTitleIdFromDeliveryArgumentInfo(); + // アプリ間パラメータの初期化 + OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE ); + // 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, (u64)0x00010001434f5041, &tempflag ); + OS_SetLauncherParamAndResetHardware( 0, targetApp, &tempflag ); } break; case 1: @@ -182,4 +190,4 @@ void CooperationBInit( void ) void CooperationBMain(void) { s_pNowProcess(); -} \ No newline at end of file +} diff --git a/build/tests/AppliCooperation/CooperationC/ARM9/Makefile b/build/tests/AppliCooperation/CooperationC/ARM9/Makefile index be8e243b..31e64f45 100644 --- a/build/tests/AppliCooperation/CooperationC/ARM9/Makefile +++ b/build/tests/AppliCooperation/CooperationC/ARM9/Makefile @@ -25,7 +25,7 @@ TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED TITLEID_LO = COPC -TARGET_TAD = $(BINDIR)/$(TITLEID_LO).tad +TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR).tad TARGET_BIN = main.srl diff --git a/build/tests/AppliCooperation/CooperationC/ARM9/src/CooperationC.c b/build/tests/AppliCooperation/CooperationC/ARM9/src/CooperationC.c index a6072a80..3498fbf1 100644 --- a/build/tests/AppliCooperation/CooperationC/ARM9/src/CooperationC.c +++ b/build/tests/AppliCooperation/CooperationC/ARM9/src/CooperationC.c @@ -439,7 +439,7 @@ static void MenuScene(void) { BOOL tp_select = FALSE; 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(); @@ -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); u32 *game_code_src_addr = (u32 *)(HW_TWL_ROM_HEADER_BUF + 0xc); - arginfo->makerCode = *maker_code_src_addr; - // まだゲームコードは証明書の関係でNTRJしか入ってない……ので強制的に値代入 - //arginfo->gameCode = *game_code_src_addr; - arginfo->gameCode = 0x43504f43; // 下位から'C','O','P','C' - // アプリ専用部分のセット - MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1)); + // アプリ間パラメータの初期化 + OS_InitArgBufferForDelivery( OS_DELIVER_ARG_BUFFER_SIZE ); + // validフラグを立てる + OS_SetValidDeliveryArgumentInfo( TRUE ); + // メーカーコードとゲームコードのセット(Launcher側でやるべき?) + OS_SetMakerCodeToDeliveryArgumentInfo( *maker_code_src_addr ); + OS_SetGameCodeToDeliveryArgumentInfo( *game_code_src_addr ); + OS_SetTitleIdToDeliveryArgumentInfo( 0x00010001434f5043 ); + // アプリ専用引数のセット + OS_SetDeliveryArgments( (const char *)s_work.parameter ); } //B起動 OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag ); @@ -518,10 +520,10 @@ void CooperationCInit( void ) MenuInit(); { - OSDeliverArgInfo *arginfo = (OSDeliverArgInfo *)HW_PARAM_DELIVER_ARG; - if(arginfo->gameCode != NULL) + if(OS_IsValidDeliveryArgumentInfo()) { - 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; diff --git a/build/tests/RelocateChecker/ARM7/src/main.c b/build/tests/RelocateChecker/ARM7/src/main.c index a9122696..bcaec2ae 100644 --- a/build/tests/RelocateChecker/ARM7/src/main.c +++ b/build/tests/RelocateChecker/ARM7/src/main.c @@ -188,6 +188,7 @@ TwlSpMain(void) // システム領域(WRAM & MMEM)にSCFG情報をセット static void SetSCFGWork( void ) { + /* // SCFGレジスタが有効な場合のみセット if( reg_SCFG_EXT & REG_SCFG_EXT_CFG_MASK ) { // WRAMのシステム領域にセット @@ -211,6 +212,7 @@ static void SetSCFGWork( void ) // MMEMのシステム領域にコピー MI_CpuCopy8( (void*)HWi_WSYS04_ADDR, (void *)HW_SYS_CONF_BUF, 6 ); } + */ } static BOOL IsEnableJTAG( void ) @@ -228,6 +230,7 @@ static BOOL IsEnableJTAG( void ) #define MCU_RESET_VALUE_LEN 1 void ReadLauncherParameter( void ) { + /* 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 ); } @@ -254,6 +257,7 @@ void ReadLauncherParameter( void ) } // メインメモリのランチャーパラメータをクリアしておく MI_CpuClear32( SYSMi_GetLauncherParamAddr(), HW_PARAM_LAUNCH_PARAM_SIZE ); + */ } diff --git a/build/tests/RelocateChecker/ARM9/Makefile.0 b/build/tests/RelocateChecker/ARM9/Makefile.0 index d31da53f..529698f9 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile.0 +++ b/build/tests/RelocateChecker/ARM9/Makefile.0 @@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) TARGET_BIN = $(TARGET_NAME).srl 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 ROM_SPEC = main.rsf diff --git a/build/tests/RelocateChecker/ARM9/Makefile.1 b/build/tests/RelocateChecker/ARM9/Makefile.1 index ac2faeac..8728e416 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile.1 +++ b/build/tests/RelocateChecker/ARM9/Makefile.1 @@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) TARGET_BIN = $(TARGET_NAME).srl 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 ROM_SPEC = main.rsf diff --git a/build/tests/RelocateChecker/ARM9/Makefile.2 b/build/tests/RelocateChecker/ARM9/Makefile.2 index bbe4bc78..1903deb4 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile.2 +++ b/build/tests/RelocateChecker/ARM9/Makefile.2 @@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) TARGET_BIN = $(TARGET_NAME).srl 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 ROM_SPEC = main.rsf diff --git a/build/tests/RelocateChecker/ARM9/Makefile.3 b/build/tests/RelocateChecker/ARM9/Makefile.3 index ca55a8ef..f6878362 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile.3 +++ b/build/tests/RelocateChecker/ARM9/Makefile.3 @@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) TARGET_BIN = $(TARGET_NAME).srl 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 ROM_SPEC = main.rsf diff --git a/build/tests/RelocateChecker/ARM9/Makefile.4 b/build/tests/RelocateChecker/ARM9/Makefile.4 index a58e416a..06279923 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile.4 +++ b/build/tests/RelocateChecker/ARM9/Makefile.4 @@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) TARGET_BIN = $(TARGET_NAME).srl 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 ROM_SPEC = main.rsf diff --git a/build/tests/RelocateChecker/ARM9/Makefile.5 b/build/tests/RelocateChecker/ARM9/Makefile.5 index 76d668d6..41dc70fc 100644 --- a/build/tests/RelocateChecker/ARM9/Makefile.5 +++ b/build/tests/RelocateChecker/ARM9/Makefile.5 @@ -40,7 +40,7 @@ BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) TARGET_BIN = $(TARGET_NAME).srl 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 ROM_SPEC = main.rsf