From 4e8d22691bda2e4abe5a54963361953997fcfc0b Mon Sep 17 00:00:00 2001 From: yosiokat Date: Wed, 16 Jan 2008 08:54:21 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9A=AB=E5=AE=9A=E7=9A=84=E3=81=ABhotsw?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=81=8B=E3=82=89?= =?UTF-8?q?=E3=83=A9=E3=83=B3=E3=83=81=E3=83=A3=E3=83=BC=E5=81=B4=E3=81=AB?= =?UTF-8?q?IS=E3=83=87=E3=83=90=E3=83=83=E3=82=AC=E3=82=A8=E3=83=9F?= =?UTF-8?q?=E3=83=A5=E3=83=AC=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=82=92=E5=BC=95=E3=81=8D=E6=B8=A1=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=80=81=20=E3=83=87=E3=83=90=E3=83=83=E3=82=AC=E5=8B=95?= =?UTF-8?q?=E4=BD=9C=E3=81=AA=E3=82=89=E3=83=80=E3=82=A4=E3=83=AC=E3=82=AF?= =?UTF-8?q?=E3=83=88=E3=82=AB=E3=83=BC=E3=83=89=E3=83=96=E3=83=BC=E3=83=88?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E5=AE=9F=E8=A3=85=E3=80=82?= 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@473 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 4 +++ .../sysmenu/ARM9/src/sysmenu_lib.c | 26 +++++++++++-------- build/systemMenu_RED/Launcher/ARM9/src/main.c | 5 ++-- .../sysmenu/sysmenu_lib/common/sysmenu_work.h | 25 +++++++++++++++++- 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 570d43e1..d0bed75d 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -364,6 +364,10 @@ BOOL HOTSW_Boot(void) OS_ReleaseLockID( s_cbData.lockID ); OS_TPrintf( "Load Card Time : %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - start ) ); + + // [TODO:]暫定処置。ちゃんとした流れでLauncher側に渡すようにする。 + MI_CpuCopy8( HOTSW_GetRomEmulationBuffer(), &SYSMi_GetWork()->romEmuInfo, ROM_EMULATION_DATA_SIZE ); + SYSMi_GetWork()->isOnDebugger = s_cbData.debuggerFlg; #ifdef DEBUG_USED_CARD_SLOT_B_ SYSMi_GetWork()->is1stCardChecked = TRUE; diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 8526c61b..d2fedb32 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -165,7 +165,7 @@ TitleProperty *SYSM_ReadParameters( void ) SVC_WaitByLoop( 0x1000 ); } #endif - + //----------------------------------------------------- // リセットパラメータの判定(リセットパラメータが有効かどうかは、ARM7でやってくれている) //----------------------------------------------------- @@ -232,26 +232,29 @@ TitleProperty *SYSM_ReadParameters( void ) // ショートカット起動のチェック static TitleProperty *SYSMi_CheckShortcutBoot( void ) { -#if 0 // ※未実装 static TitleProperty s_bootTitle; - MI_CpuClear8( &s_bootTitle, sizoef(TitleProperty) ); + MI_CpuClear8( &s_bootTitle, sizeof(TitleProperty) ); //----------------------------------------------------- + // ISデバッガ起動 or // 量産工程用ショートカットキー or // 検査カード起動 //----------------------------------------------------- - if( SYSM_IsInspectCard() || - ( SYSM_IsExistCard() && - ( ( PAD_Read() & PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) == - PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) ) - ) { - if( SYSM_GetCardTitleProperty( &s_bootTitle ) ) { // ※未実装 + if( SYSM_IsExistCard() ) { + if( ( SYSMi_GetWork()->isOnDebugger && // ISデバッガが有効かつJTAGがまだ有効でない時 + !( *(u8 *)( HW_SYS_CONF_BUF + HWi_WSYS09_OFFSET ) & HWi_WSYS09_JTAG_CPUJE_MASK ) ) || + SYSM_IsInspectCard() || + ( ( PAD_Read() & PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) == + PAD_PRODUCTION_SHORTCUT_CARD_BOOT ) + ) { + s_bootTitle.flags.isAppRelocate = TRUE; + s_bootTitle.flags.isAppLoadCompleted = TRUE; s_bootTitle.flags.isInitialShortcutSkip = TRUE; // 初回起動シーケンスを飛ばす s_bootTitle.flags.isLogoSkip = TRUE; // ロゴデモを飛ばす s_bootTitle.flags.media = TITLE_MEDIA_CARD; s_bootTitle.flags.isValid = TRUE; - s_bootTitle.titleID = xxxx; + s_bootTitle.titleID = *(u64 *)( &SYSM_GetCardRomHeader()->titleID_Lo ); SYSM_SetLogoDemoSkip( TRUE ); return &s_bootTitle; } @@ -260,6 +263,7 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) //----------------------------------------------------- // TWL設定データ未入力時の初回起動シーケンス起動 //----------------------------------------------------- +#if 0 #ifdef ENABLE_INITIAL_SETTINGS_ if( !TSD_IsSetTP() || !TSD_IsSetLanguage() || @@ -272,8 +276,8 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) return &s_bootTitle; } #endif // ENABLE_INITIAL_SETTINGS_ +#endif -#endif // 0 return NULL; // 「ブート内容未定」でリターン } diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index 556b9291..cb91682c 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -77,8 +77,9 @@ void TwlMain( void ) TP_Init(); RTC_Init(); SND_Init();// sound init - - + + OS_TPrintf( "SYSM_work size = 0x%x\n", sizeof(SYSM_work) ); + // 割り込み許可-------------------- (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); (void)OS_EnableIrqMask(OS_IE_V_BLANK); diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index b691a39e..ffe56186 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -46,6 +46,29 @@ typedef struct TitleID_HiLo { //---------------------------------------------------------------------- // データ型定義 //---------------------------------------------------------------------- +#define ISD_ROM_EMULATION_INFO_SIZE 0x20 // ROMエミュレーションデータサイズ +#define ISD_ROM_EMULATION_INFO_MAGIC_CODE 0x444c5754 + +// ISデバッガROMエミュレーション情報 +typedef struct ISD_RomEmuInfo { + // マジックコード(ISD_ROM_EMULATION_INFO_MAGIC_CODEの固定値) + u32 magic_code; + // フラグ類 + u32 isEnableSlot1 : 1; + u32 isEnableSlot2 : 1; + u32 bootSlotNo : 2; + u32 isEnableExMainMemory : 1; + u32 isBootMachineSettings : 1; + u32 isBootSpecifiedNANDApp : 1; + u32 isForceNTRMode : 1; + u32 isForceBannerViewMode : 1; + u32 rsv_flags : 23; + // isBootSpecifiedNANDAppで起動するアプリのTitleID + u64 titleID; + // 予約 + u8 rsv[ 0x10 ]; +}ISD_RomEmuInfo; + // SYSM共有ワーク構造体 typedef struct SYSM_work { @@ -78,6 +101,7 @@ typedef struct SYSM_work { u32 nCardID; // カードID LauncherParam launcherParam; + ISD_RomEmuInfo romEmuInfo; // NTR-IPL2のレガシー 最終的には消すと思う BOOL enableCardNormalOnly; @@ -120,7 +144,6 @@ typedef struct SDKBootCheckInfo{ // カードROMヘッダワークの取得 #define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)SYSM_CARD_ROM_HEADER_BUF ) - #ifdef __cplusplus } #endif