From e0577ff3ce2b837c29e19e4984dc6f0e30fe49f5 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Thu, 24 Jan 2008 02:48:49 +0000 Subject: [PATCH] =?UTF-8?q?TMP=E3=83=95=E3=82=A9=E3=83=AB=E3=83=80?= =?UTF-8?q?=E3=81=AB=E4=BF=9D=E5=AD=98=E3=81=97=E3=81=9F=E3=82=A2=E3=83=97?= =?UTF-8?q?=E3=83=AA=E3=82=92=E8=B5=B7=E5=8B=95=E3=81=99=E3=82=8B=E3=82=B5?= =?UTF-8?q?=E3=83=B3=E3=83=97=E3=83=AB=20=E3=80=80=E7=8F=BE=E7=8A=B6?= =?UTF-8?q?=E3=80=81=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E6=B6=88?= =?UTF-8?q?=E3=81=99=E5=87=A6=E7=90=86=E3=82=92=E5=85=A5=E3=82=8C=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=AA=E3=81=84=E3=81=AE=E3=81=A7TMP=E3=81=AB?= =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E3=81=8C=E6=AE=8B=E3=82=8A=E3=81=BE?= =?UTF-8?q?=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@510 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/title.c | 6 - build/systemMenu_RED/Launcher/ARM9/src/main.c | 3 + build/tests/ExecTmpApp/ARM9/Makefile | 59 ++++++ build/tests/ExecTmpApp/ARM9/main.rsf | 181 ++++++++++++++++++ build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.c | 177 +++++++++++++++++ build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.h | 37 ++++ build/tests/ExecTmpApp/ARM9/src/main.c | 109 +++++++++++ build/tests/ExecTmpApp/Makefile | 30 +++ .../tests/ExecTmpApp/SimpleApp/ARM9/Makefile | 56 ++++++ .../tests/ExecTmpApp/SimpleApp/ARM9/main.rsf | 181 ++++++++++++++++++ .../ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.c | 144 ++++++++++++++ .../ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.h | 37 ++++ .../ExecTmpApp/SimpleApp/ARM9/src/main.c | 109 +++++++++++ build/tests/ExecTmpApp/SimpleApp/Makefile | 30 +++ .../ExecTmpApp/SimpleApp/banner/Makefile | 49 +++++ .../ExecTmpApp/SimpleApp/banner/banner_v3.bsf | Bin 0 -> 764 bytes .../SimpleApp/banner/icon/gameIcon.bmp | Bin 0 -> 630 bytes build/tests/ExecTmpApp/banner/Makefile | 49 +++++ build/tests/ExecTmpApp/banner/banner_v3.bsf | Bin 0 -> 800 bytes .../tests/ExecTmpApp/banner/icon/gameIcon.bmp | Bin 0 -> 630 bytes .../tests/ExecTmpApp/data/NTR_IPL_font_m.NFTR | Bin 0 -> 107180 bytes 21 files changed, 1251 insertions(+), 6 deletions(-) create mode 100644 build/tests/ExecTmpApp/ARM9/Makefile create mode 100644 build/tests/ExecTmpApp/ARM9/main.rsf create mode 100644 build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.c create mode 100644 build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.h create mode 100644 build/tests/ExecTmpApp/ARM9/src/main.c create mode 100644 build/tests/ExecTmpApp/Makefile create mode 100644 build/tests/ExecTmpApp/SimpleApp/ARM9/Makefile create mode 100644 build/tests/ExecTmpApp/SimpleApp/ARM9/main.rsf create mode 100644 build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.c create mode 100644 build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.h create mode 100644 build/tests/ExecTmpApp/SimpleApp/ARM9/src/main.c create mode 100644 build/tests/ExecTmpApp/SimpleApp/Makefile create mode 100644 build/tests/ExecTmpApp/SimpleApp/banner/Makefile create mode 100644 build/tests/ExecTmpApp/SimpleApp/banner/banner_v3.bsf create mode 100644 build/tests/ExecTmpApp/SimpleApp/banner/icon/gameIcon.bmp create mode 100644 build/tests/ExecTmpApp/banner/Makefile create mode 100644 build/tests/ExecTmpApp/banner/banner_v3.bsf create mode 100644 build/tests/ExecTmpApp/banner/icon/gameIcon.bmp create mode 100644 build/tests/ExecTmpApp/data/NTR_IPL_font_m.NFTR diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 9f813c46..ed710c29 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -400,12 +400,6 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len); (void)FS_CloseFile(file); - if(pBootTitle->flags.bootType == LAUNCHER_BOOTTYPE_TEMP) - { - // tmpアプリの場合はファイル削除 - // TODO:その他読み込み等の失敗時にもDeleteする必要あり? - (void)FS_DeleteFile(path); - } } // ROMヘッダバッファをコピー diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index 395b1919..db244911 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -117,6 +117,9 @@ void TwlMain( void ) (void)SYSM_GetCardTitleList( s_titleList ); // カードアプリリストの取得(カードアプリはs_titleList[0]に格納される) + // TODO:bootTypeがLAUNCHER_BOOTTYPE_TEMPでない場合、tmpフォルダ内のデータを消す + + // 「ダイレクトブートでない」なら if( !pBootTitle ) { // アプリ間パラメタをクリア diff --git a/build/tests/ExecTmpApp/ARM9/Makefile b/build/tests/ExecTmpApp/ARM9/Makefile new file mode 100644 index 00000000..db7701c4 --- /dev/null +++ b/build/tests/ExecTmpApp/ARM9/Makefile @@ -0,0 +1,59 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - demos - simpleShoot-1 +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: $ +# $Rev: $ +# $Author: $ +#---------------------------------------------------------------------------- + +SUBDIRS = + +#---------------------------------------------------------------------------- + +TARGET_FIRM = SYSTEMMENU +TARGET_PLATFORM = TWL +TWL_ARCHGEN = LIMITED + +TITLEID_LO = ETFA +TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad + +TARGET_BIN = main.srl + +ROM_SPEC = main.rsf + +MISC_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/misc + +SRCS = main.c ExecTmpApp.c \ + $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c + +LINCLUDES = $(MISC_DIR)/include + +MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' + +include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs + + +LDIRT_CLEAN = $(TARGET_TAD) +INSTALL_TARGETS = $(TARGET_TAD) +INSTALL_DIR = $(SDK_NMENU_DATADIR) + +#---------------------------------------------------------------------------- + +do-build : $(TARGETS) + + +include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules + +#---------------------------------------------------------------------------- + +#===== End of Makefile ===== diff --git a/build/tests/ExecTmpApp/ARM9/main.rsf b/build/tests/ExecTmpApp/ARM9/main.rsf new file mode 100644 index 00000000..dcaac345 --- /dev/null +++ b/build/tests/ExecTmpApp/ARM9/main.rsf @@ -0,0 +1,181 @@ +#---------------------------------------------------------------------------- +# Project: TwlSDK - include +# File: ROM-BB.rsf +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded insructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: 2007-11-21#$ +# $Rev: 240 $ +# $Author: yosiokat $ +#---------------------------------------------------------------------------- +# +# TWL ROM SPEC FILE +# + +Arm9 +{ + Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" + Elf "$(MAKEROM_ARM9:r).tef" +} + +Arm7 +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" + Elf "$(MAKEROM_ARM7_BASE:r).tef" +} + +Arm9.Ltd +{ + Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" +} + +Arm7.Ltd +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" +} + +Property +{ + ### + ### Settings for FinalROM + ### + #### BEGIN + # + # TITLE NAME: Your product name within 12bytes + # + #TitleName "YourAppName" + + #_GameCode $(TITLEID_LO) + + # + # MAKER CODE: Your company ID# in 2 ascii words + # issued by NINTENDO + # + #MakerCode "00" + + # + # REMASTER VERSION: Mastering version + # + #RomVersion 0 + + # + # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] + # + RomSpeedType $(MAKEROM_ROMSPEED) + + # + # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] + # + #RomSize 128M + #RomSize 256M + + # + # ROM PADDING: TRUE if finalrom + # + #RomFootPadding TRUE + + # + # ROM HEADER TEMPLATE: Provided to every product by NINTENDO + # + #RomHeaderTemplate ./etc/rom_header.template.sbin + + # + # BANNER FILE: generated from Banner Spec File + # + BannerFile ../banner/banner.bnr + + ### + ### Setting for TWL + ### + # + # BANNER FILE: + # + BannerTWLFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr + + # + # Digest parameters: + # + DigestParam 1024 32 + + # + # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] + # don't have to edit + # + WramMapping $(MAKEROM_WRAM_MAPPING) + + # + # Codec mode: + # don't have to edit + # + CodecMode $(MAKEROM_CODEC_MODE) + + ### + #### END +} + + +AppendProperty +{ + # + # Publisher : "Nintendo" + # don't have to edit + Publisher Nintendo + + # + # Application type : [USER/SYSTEM] + # don't have to edit + AppType User + + # + # launch title on the launcher : [TRUE/FALSE] + # don't have to edit + Launch TRUE + + # + # Boot allowed Media: [GameCard/NAND] + # + Media NAND + + # + # GameCode for TitleID : Your GameCode in 4 ascii words + # + GameCode $(TITLEID_LO) + + # + # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] + # + #PublicSaveDataSize 32K + + # + # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] + # + #PrivateSaveDataSize 16K + + # + # Enable SaveBannerFile + SaveBannerFile FALSE +} + + +RomSpec +{ + Offset 0x00000000 + Segment ALL + HostRoot ../data + Root /data + File NTR_IPL_font_m.NFTR simple.srl +} diff --git a/build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.c b/build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.c new file mode 100644 index 00000000..6162b7e1 --- /dev/null +++ b/build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.c @@ -0,0 +1,177 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: ExecTmpApp.c + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: 2007-10-31#$ + $Rev: 91 $ + $Author: yosiokat $ + *---------------------------------------------------------------------------*/ + +#include +#include +#include "misc.h" +#include "ExecTmpApp.h" + +// 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 // メニューの項目数 + +// extern data------------------------------------------ + +// function's prototype declaration--------------------- + +static void MenuScene( void ); + +// global variable ------------------------------------- +extern RTCDrawProperty g_rtcDraw; + +// static variable ------------------------------------- +static u16 s_csr = 0; +static void(*s_pNowProcess)(void); + +// const data ----------------------------------------- +static const u16 *s_pStrMenu[ COPB_MENU_ELEMENT_NUM ] = +{ + L"tmpフォルダにアプリを保存し起動", + L"ランチャーに戻る", +}; + +static MenuPos s_menuPos[] = { + { TRUE, 4 * 8, 8 * 8 }, + { TRUE, 4 * 8, 10 * 8 }, +}; + +static const MenuParam s_menuParam = { + COPB_MENU_ELEMENT_NUM, + TXT_COLOR_BLACK, + TXT_COLOR_GREEN, + TXT_COLOR_RED, + &s_menuPos[ 0 ], + (const u16 **)&s_pStrMenu, +}; + +//====================================================== +// アプリ連携テストプログラムB +//====================================================== + +static void DrawMenuScene( void ) +{ + PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"ExecTmpApp"); + + GetAndDrawRTCData( &g_rtcDraw, TRUE ); + // メニュー項目 + DrawMenu( s_csr, &s_menuParam ); +} + +static void MenuInit( void ) +{ + GX_DispOff(); + GXS_DispOff(); + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); + + PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"ExecTmpApp"); + GetAndDrawRTCData( &g_rtcDraw, TRUE ); + + SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 ); + + GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); + + s_pNowProcess = MenuScene; + + DrawMenuScene(); + + GX_DispOn(); + GXS_DispOn(); +} + +static void MenuScene(void) +{ + BOOL tp_select = FALSE; + LauncherBootFlags tempflag = {TRUE, LAUNCHER_BOOTTYPE_TEMP, TRUE, FALSE, FALSE, FALSE, 0}; + + ReadTP(); + + //-------------------------------------- + // キー入力処理 + //-------------------------------------- + if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 + if( ++s_csr == COPB_MENU_ELEMENT_NUM ) { + s_csr=0; + } + } + if( pad.trg & PAD_KEY_UP ){ + if( --s_csr & 0x80 ) { + s_csr=COPB_MENU_ELEMENT_NUM - 1; + } + } + tp_select = SelectMenuByTP( &s_csr, &s_menuParam ); + + DrawMenuScene(); + + if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 + if( s_menuPos[ s_csr ].enable ) { + u64 targetApp = 0x00030004534d504c;// SMPL + static char destfilename[256]; + s32 len = 0; + s32 llen; + BOOL success = TRUE; + FSFile src,dest; + void *buf; + switch( s_csr ) { + case 0: + STD_TSNPrintf( destfilename, 31, "nand:/tmp/%.16llx.srl", targetApp ); + // tmpに保存 + FS_DeleteFile(destfilename); + FS_CreateFile(destfilename, FS_PERMIT_R | FS_PERMIT_W); + FS_InitFile( &src ); + FS_InitFile( &dest ); + if ( !FS_OpenFileEx( &src, "rom:/data/simple.srl", FS_FILEMODE_R ) ) success = FALSE; + len = (int)FS_GetFileLength( &src ); + + buf = (void *)0x02400000;// 適当にあいてるところ + llen = FS_ReadFile( &src, buf, len ); + if ( !FS_CloseFile( &src ) ) success = FALSE; + if (len != llen) success = FALSE; + + if ( !FS_OpenFileEx( &dest, destfilename, FS_FILEMODE_W ) ) success = FALSE; + llen = FS_WriteFile( &dest, buf, len ); + if ( !FS_CloseFile( &dest ) ) success = FALSE; + if (len != llen) success = FALSE; + + if( !success ) break; + //アプリ起動 + OS_SetLauncherParamAndResetHardware( 0, targetApp, &tempflag ); + break; + case 1: + OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag ); + //再起動 + break; + } + } + } +} + +// 初期化 +void ExecTmpAppInit( void ) +{ + ChangeUserColor( LCFG_TSD_GetUserColor() ); + MenuInit(); +} + +// メインループ +void ExecTmpAppMain(void) +{ + s_pNowProcess(); +} diff --git a/build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.h b/build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.h new file mode 100644 index 00000000..b4ee250a --- /dev/null +++ b/build/tests/ExecTmpApp/ARM9/src/ExecTmpApp.h @@ -0,0 +1,37 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: ExecTmpApp.h + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: 2007-10-30#$ + $Rev: 73 $ + $Author: yosiokat $ + *---------------------------------------------------------------------------*/ + +#ifndef __COOPERATION_B_H__ +#define __COOPERATION_B_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include + +// define data---------------------------------------------------------- + +void ExecTmpAppInit( void ); +void ExecTmpAppMain( void ); + +#ifdef __cplusplus +} +#endif + +#endif // __COOPERATION_B_H__ diff --git a/build/tests/ExecTmpApp/ARM9/src/main.c b/build/tests/ExecTmpApp/ARM9/src/main.c new file mode 100644 index 00000000..82ba2cfe --- /dev/null +++ b/build/tests/ExecTmpApp/ARM9/src/main.c @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: main.c + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: 2007-11-27#$ + $Rev: 272 $ + $Author: yosiokat $ + *---------------------------------------------------------------------------*/ + +#include +#include "misc.h" +#include "ExecTmpApp.h" + +// extern data----------------------------------------------------------------- + +// define data----------------------------------------------------------------- + +// function's prototype------------------------------------------------------- +static void INTR_VBlank( void ); + +// global variable------------------------------------------------------------- + +// static variable------------------------------------------------------------- +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------------------------------------------------------------------ + + +// ============================================================================ +// function's description +// ============================================================================ +void TwlMain(void) +{ + + // 初期化---------------------------------- + OS_Init(); + OS_InitTick(); + + (void)OS_EnableIrq(); + (void)OS_EnableInterrupts(); + + GX_Init(); + GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON + FS_Init( 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 ); // SYSM_ReadTWLSettingsFile()の実行に必要。 + + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルの読み込み + // :::::::::::::::::::::::::::::::::::::::::::::: + (void)LCFG_ReadHWSecureInfo(); + g_isValidTSD = LCFG_ReadTWLSettings(); + if( g_isValidTSD ) { + SYSM_CaribrateTP(); + } + + InitBG(); + GetAndDrawRTCData( &g_rtcDraw, TRUE ); + + ExecTmpAppInit(); + // メインループ---------------------------- + while(1){ + OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち + + ReadKeyPad(); // キー入力の取得 + ReadTP(); // TP入力の取得 + + ExecTmpAppMain(); + } +} + + +// ============================================================================ +// 割り込み処理 +// ============================================================================ + +// Vブランク割り込み +static void INTR_VBlank(void) +{ + OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット +} + diff --git a/build/tests/ExecTmpApp/Makefile b/build/tests/ExecTmpApp/Makefile new file mode 100644 index 00000000..0c600f92 --- /dev/null +++ b/build/tests/ExecTmpApp/Makefile @@ -0,0 +1,30 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: 2007-10-03#$ +# $Rev: 1319 $ +# $Author: kitase_hirotake $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +#---------------------------------------------------------------------------- + +SUBDIRS = SimpleApp banner ARM9 + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/tests/ExecTmpApp/SimpleApp/ARM9/Makefile b/build/tests/ExecTmpApp/SimpleApp/ARM9/Makefile new file mode 100644 index 00000000..a4444ab0 --- /dev/null +++ b/build/tests/ExecTmpApp/SimpleApp/ARM9/Makefile @@ -0,0 +1,56 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlSDK - demos - simpleShoot-1 +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: $ +# $Rev: $ +# $Author: $ +#---------------------------------------------------------------------------- + +SUBDIRS = + +#---------------------------------------------------------------------------- + +TARGET_FIRM = SYSTEMMENU +TARGET_PLATFORM = TWL +TWL_ARCHGEN = LIMITED + +TITLEID_LO = SMPL + +TARGET_BIN = simple.srl + +ROM_SPEC = main.rsf + +MISC_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/misc + +SRCS = main.c SimpleApp.c \ + $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c + +LINCLUDES = $(MISC_DIR)/include + +MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' + +include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs + + +INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) +INSTALL_DIR = ../../data +#---------------------------------------------------------------------------- + +do-build : $(TARGETS) + + +include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules + +#---------------------------------------------------------------------------- + +#===== End of Makefile ===== diff --git a/build/tests/ExecTmpApp/SimpleApp/ARM9/main.rsf b/build/tests/ExecTmpApp/SimpleApp/ARM9/main.rsf new file mode 100644 index 00000000..0ebcbf4b --- /dev/null +++ b/build/tests/ExecTmpApp/SimpleApp/ARM9/main.rsf @@ -0,0 +1,181 @@ +#---------------------------------------------------------------------------- +# Project: TwlSDK - include +# File: ROM-BB.rsf +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded insructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: 2007-11-21#$ +# $Rev: 240 $ +# $Author: yosiokat $ +#---------------------------------------------------------------------------- +# +# TWL ROM SPEC FILE +# + +Arm9 +{ + Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" + Elf "$(MAKEROM_ARM9:r).tef" +} + +Arm7 +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" + Elf "$(MAKEROM_ARM7_BASE:r).tef" +} + +Arm9.Ltd +{ + Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" + OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" +} + +Arm7.Ltd +{ + Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" + OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" +} + +Property +{ + ### + ### Settings for FinalROM + ### + #### BEGIN + # + # TITLE NAME: Your product name within 12bytes + # + #TitleName "YourAppName" + + #_GameCode $(TITLEID_LO) + + # + # MAKER CODE: Your company ID# in 2 ascii words + # issued by NINTENDO + # + #MakerCode "00" + + # + # REMASTER VERSION: Mastering version + # + #RomVersion 0 + + # + # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] + # + RomSpeedType $(MAKEROM_ROMSPEED) + + # + # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] + # + #RomSize 128M + #RomSize 256M + + # + # ROM PADDING: TRUE if finalrom + # + #RomFootPadding TRUE + + # + # ROM HEADER TEMPLATE: Provided to every product by NINTENDO + # + #RomHeaderTemplate ./etc/rom_header.template.sbin + + # + # BANNER FILE: generated from Banner Spec File + # + BannerFile ../banner/banner.bnr + + ### + ### Setting for TWL + ### + # + # BANNER FILE: + # + BannerTWLFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr + + # + # Digest parameters: + # + DigestParam 1024 32 + + # + # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] + # don't have to edit + # + WramMapping $(MAKEROM_WRAM_MAPPING) + + # + # Codec mode: + # don't have to edit + # + CodecMode $(MAKEROM_CODEC_MODE) + + ### + #### END +} + + +AppendProperty +{ + # + # Publisher : "Nintendo" + # don't have to edit + Publisher Nintendo + + # + # Application type : [USER/SYSTEM] + # don't have to edit + AppType User + + # + # launch title on the launcher : [TRUE/FALSE] + # don't have to edit + Launch TRUE + + # + # Boot allowed Media: [GameCard/NAND] + # + Media NAND + + # + # GameCode for TitleID : Your GameCode in 4 ascii words + # + GameCode $(TITLEID_LO) + + # + # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] + # + #PublicSaveDataSize 32K + + # + # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] + # + #PrivateSaveDataSize 16K + + # + # Enable SaveBannerFile + SaveBannerFile FALSE +} + + +RomSpec +{ + Offset 0x00000000 + Segment ALL + HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data + Root /data + File NTR_IPL_font_m.NFTR +} diff --git a/build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.c b/build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.c new file mode 100644 index 00000000..77458e3f --- /dev/null +++ b/build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.c @@ -0,0 +1,144 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: SimpleApp.c + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: 2007-10-31#$ + $Rev: 91 $ + $Author: yosiokat $ + *---------------------------------------------------------------------------*/ + +#include +#include +#include "misc.h" +#include "SimpleApp.h" + +// 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 1 // メニューの項目数 + +// extern data------------------------------------------ + +// function's prototype declaration--------------------- + +static void MenuScene( void ); + +// global variable ------------------------------------- +extern RTCDrawProperty g_rtcDraw; + +// static variable ------------------------------------- +static u16 s_csr = 0; +static void(*s_pNowProcess)(void); + +// const data ----------------------------------------- +static const u16 *s_pStrMenu[ COPB_MENU_ELEMENT_NUM ] = +{ + L"ランチャーに戻る", +}; + +static MenuPos s_menuPos[] = { + { TRUE, 4 * 8, 8 * 8 }, +}; + +static const MenuParam s_menuParam = { + COPB_MENU_ELEMENT_NUM, + TXT_COLOR_BLACK, + TXT_COLOR_GREEN, + TXT_COLOR_RED, + &s_menuPos[ 0 ], + (const u16 **)&s_pStrMenu, +}; + +//====================================================== +// アプリ連携テストプログラムB +//====================================================== + +static void DrawMenuScene( void ) +{ + PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleApp"); + PutStringUTF16( 1*8, 18*8, TXT_COLOR_BLACK, (const u16 *)L"単純アプリ..."); + GetAndDrawRTCData( &g_rtcDraw, TRUE ); + // メニュー項目 + DrawMenu( s_csr, &s_menuParam ); +} + +static void MenuInit( void ) +{ + GX_DispOff(); + GXS_DispOff(); + NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); + + PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleApp"); + GetAndDrawRTCData( &g_rtcDraw, TRUE ); + + SVC_CpuClear( 0x0000, &tpd, sizeof(TpWork), 16 ); + + GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); + + s_pNowProcess = MenuScene; + + DrawMenuScene(); + + GX_DispOn(); + GXS_DispOn(); +} + +static void MenuScene(void) +{ + BOOL tp_select = FALSE; + LauncherBootFlags tempflag = {TRUE, OS_BOOTTYPE_NAND, TRUE, FALSE, FALSE, FALSE, 0}; + + ReadTP(); + + //-------------------------------------- + // キー入力処理 + //-------------------------------------- + if( pad.trg & PAD_KEY_DOWN ){ // カーソルの移動 + if( ++s_csr == COPB_MENU_ELEMENT_NUM ) { + s_csr=0; + } + } + if( pad.trg & PAD_KEY_UP ){ + if( --s_csr & 0x80 ) { + s_csr=COPB_MENU_ELEMENT_NUM - 1; + } + } + tp_select = SelectMenuByTP( &s_csr, &s_menuParam ); + + DrawMenuScene(); + + if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐 + if( s_menuPos[ s_csr ].enable ) { + switch( s_csr ) { + case 0: + OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag ); + //再起動 + break; + } + } + } +} + +// 初期化 +void SimpleAppInit( void ) +{ + ChangeUserColor( LCFG_TSD_GetUserColor() ); + MenuInit(); +} + +// メインループ +void SimpleAppMain(void) +{ + s_pNowProcess(); +} diff --git a/build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.h b/build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.h new file mode 100644 index 00000000..c93da6b7 --- /dev/null +++ b/build/tests/ExecTmpApp/SimpleApp/ARM9/src/SimpleApp.h @@ -0,0 +1,37 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: SimpleApp.h + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: 2007-10-30#$ + $Rev: 73 $ + $Author: yosiokat $ + *---------------------------------------------------------------------------*/ + +#ifndef __COOPERATION_B_H__ +#define __COOPERATION_B_H__ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include + +// define data---------------------------------------------------------- + +void SimpleAppInit( void ); +void SimpleAppMain( void ); + +#ifdef __cplusplus +} +#endif + +#endif // __COOPERATION_B_H__ diff --git a/build/tests/ExecTmpApp/SimpleApp/ARM9/src/main.c b/build/tests/ExecTmpApp/SimpleApp/ARM9/src/main.c new file mode 100644 index 00000000..ca4f1dcc --- /dev/null +++ b/build/tests/ExecTmpApp/SimpleApp/ARM9/src/main.c @@ -0,0 +1,109 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: main.c + + Copyright 2007 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Date:: 2007-11-27#$ + $Rev: 272 $ + $Author: yosiokat $ + *---------------------------------------------------------------------------*/ + +#include +#include "misc.h" +#include "SimpleApp.h" + +// extern data----------------------------------------------------------------- + +// define data----------------------------------------------------------------- + +// function's prototype------------------------------------------------------- +static void INTR_VBlank( void ); + +// global variable------------------------------------------------------------- + +// static variable------------------------------------------------------------- +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------------------------------------------------------------------ + + +// ============================================================================ +// function's description +// ============================================================================ +void TwlMain(void) +{ + + // 初期化---------------------------------- + OS_Init(); + OS_InitTick(); + + (void)OS_EnableIrq(); + (void)OS_EnableInterrupts(); + + GX_Init(); + GX_SetPower(GX_POWER_ALL); // 各ロジック パワーON + FS_Init( 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 ); // SYSM_ReadTWLSettingsFile()の実行に必要。 + + // :::::::::::::::::::::::::::::::::::::::::::::: + // TWL設定データファイルの読み込み + // :::::::::::::::::::::::::::::::::::::::::::::: + (void)LCFG_ReadHWSecureInfo(); + g_isValidTSD = LCFG_ReadTWLSettings(); + if( g_isValidTSD ) { + SYSM_CaribrateTP(); + } + + InitBG(); + GetAndDrawRTCData( &g_rtcDraw, TRUE ); + + SimpleAppInit(); + // メインループ---------------------------- + while(1){ + OS_WaitIrq(1, OS_IE_V_BLANK); // Vブランク割り込み待ち + + ReadKeyPad(); // キー入力の取得 + ReadTP(); // TP入力の取得 + + SimpleAppMain(); + } +} + + +// ============================================================================ +// 割り込み処理 +// ============================================================================ + +// Vブランク割り込み +static void INTR_VBlank(void) +{ + OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vブランク割込チェックのセット +} + diff --git a/build/tests/ExecTmpApp/SimpleApp/Makefile b/build/tests/ExecTmpApp/SimpleApp/Makefile new file mode 100644 index 00000000..9cf34e12 --- /dev/null +++ b/build/tests/ExecTmpApp/SimpleApp/Makefile @@ -0,0 +1,30 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: 2007-10-03#$ +# $Rev: 1319 $ +# $Author: kitase_hirotake $ +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/commondefs + +#---------------------------------------------------------------------------- + +SUBDIRS = banner ARM9 + +#---------------------------------------------------------------------------- + +include $(TWLSDK_ROOT)/build/buildtools/modulerules + + +#===== End of Makefile ===== diff --git a/build/tests/ExecTmpApp/SimpleApp/banner/Makefile b/build/tests/ExecTmpApp/SimpleApp/banner/Makefile new file mode 100644 index 00000000..ea261271 --- /dev/null +++ b/build/tests/ExecTmpApp/SimpleApp/banner/Makefile @@ -0,0 +1,49 @@ +#! make -f +#---------------------------------------------------------------------------- +# Project: TwlIPL +# File: Makefile +# +# Copyright 2007 Nintendo. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Date:: 2007-10-03#$ +# $Rev: 1319 $ +# $Author: kitase_hirotake $ +#---------------------------------------------------------------------------- + +include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs + +ICON_DIR = ./icon + +BANNER_ICON = $(ICON_DIR)/gameIcon.bmp +BANNER_SPEC = banner_v3.bsf + +TARGETS = banner.bnr +INSTALL_DIR = ./ +INSTALL_TARGETS = $(TARGETS) + +BANNER_ICON_NAME = $(basename $(BANNER_ICON)) + +LDIRT_CLEAN = $(TARGETS) \ + $(BANNER_ICON_NAME).nbfs \ + $(BANNER_ICON_NAME).nbfc \ + $(BANNER_ICON_NAME).nbfp \ + $(TARGETS:.bnr=.srl) + +include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules + +#---------------------------------------------------------------------------- +# build +#---------------------------------------------------------------------------- +do-build: $(TARGETS) + +$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) + $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ + $(MAKEBANNER) -d -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) + +# diff --git a/build/tests/ExecTmpApp/SimpleApp/banner/banner_v3.bsf b/build/tests/ExecTmpApp/SimpleApp/banner/banner_v3.bsf new file mode 100644 index 0000000000000000000000000000000000000000..d602c7f849384de56e3b6e0b4ea2c9c41d98ba37 GIT binary patch literal 764 zcmc(d&q~8U5XQf&f;S&vp=UKBc<4=~@ed;6YVo>Fl?Iwxl4$YZ%lJ~hgAbwpW;e&0 zqp~pB`DVV!H#7VFHPErVayjk9+_$u;L6@C4e`C{soo+Ql zNrR%tPLWfkXOI?bf$&I5=J%-Y z)U4;8^r|}RjixOp>)28qUt>dOA#QWZR3>`G&hT409cquWVrDg2Q|*#DCld6+RP0p* Nu!49+o>ffMe*mkYXDt8# literal 0 HcmV?d00001 diff --git a/build/tests/ExecTmpApp/SimpleApp/banner/icon/gameIcon.bmp b/build/tests/ExecTmpApp/SimpleApp/banner/icon/gameIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d2c5448f8c747566f67508f9121d3d158a39e05f GIT binary patch literal 630 zcmY+BF;C+#7=}MiNQ`&gi$tOhCsiG2s{Vi`BN-}^4Th?%2P9Ajlt`Ues&?-}=W-`q z=DQ_c0ja7-#L(6w6VP8kQeN8?2d`u&kNxQT9H-$&-$*CI{1f9~J9cOnZ^(AvfSGeV zip3(8%Vnz9>*TsFHJeRpwOZ8c^{C(P(_k>5@pw$r>6FqmrP*voQcBuvHbmZ+&|VmZ zSaBW4v5_Bd5$lG5=TvR0fRx^1#$dQuFg#Rl6{/dev/null && \ + $(MAKEBANNER) -d -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) + +# diff --git a/build/tests/ExecTmpApp/banner/banner_v3.bsf b/build/tests/ExecTmpApp/banner/banner_v3.bsf new file mode 100644 index 0000000000000000000000000000000000000000..d364b2af9bcb134f5b6dfc96a1f247f1cdbc3de9 GIT binary patch literal 800 zcmc(dJx;?w5QSe05_ecBHLwVYA{`)`A0dQdpx-#4Sc*+#8w`iw5_BAajtX&sh&#X? zfN$4slXRe!M?3T0%)S}V&v#FIN)*dzJsgAYRB*0T5=}JamU4@gX~KO?tLk;^Hs^0_ z`>xTs#we*!bloX3%5_VmCN@N&QG@mjzs4)@vtUy)9Y{sgb1$eB)5(^0bfV~AJM-OL zqRXqxbc5bL3b%tMj~(lb$O^i1{>aQe+b{cS3;Se0?5AxWXM;EUV&ARjMmi1LNcU7s z>C)%y@=Zg%Sc8T50TujP^YV|VxCl==t@HBtm*_iOg14K{TEj%ju(1`}>B1i$F}a~0 luw(q1uKU{LG|aVxHPQym35e4j)ApO=h^62;JYTV`{tM{!a^C;| literal 0 HcmV?d00001 diff --git a/build/tests/ExecTmpApp/banner/icon/gameIcon.bmp b/build/tests/ExecTmpApp/banner/icon/gameIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d2c5448f8c747566f67508f9121d3d158a39e05f GIT binary patch literal 630 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%0DL@U>Kf~S+EhCEWuce3@ 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%0DTZOf#X>Myiij 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 z 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 I_5TO;7YHZZ9smFU literal 0 HcmV?d00001