From b80be7b1a1af698141815bae4ff5552642bafc01 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Tue, 29 Jan 2008 13:02:42 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E7=B7=9A=E6=8C=BF=E6=8A=9C=E5=8B=95?= =?UTF-8?q?=E4=BD=9C=E3=82=92=E7=A6=81=E6=AD=A2=E3=81=A7=E3=81=8D=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=83=A9=E3=83=B3=E3=83=81=E3=83=A3?= =?UTF-8?q?=E3=83=BC=E3=81=A8hotsw=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA=E3=81=A7=E5=AF=BE=E5=BF=9C=E4=B8=AD=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@542 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/components/hyena.TWL/src/main.c | 14 +- .../libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 36 ++++- build/libraries_sysmenu/sysmenu/ARM7/Makefile | 4 +- build/libraries_sysmenu/sysmenu/ARM9/Makefile | 1 + .../sysmenu/ARM9/src/ninLogoFunc.c | 2 +- .../sysmenu/ARM9/src/sysmenu_lib.c | 138 +----------------- .../sysmenu/ARM9/src/title.c | 44 ++++-- .../sysmenu/common/include/internal_api.h | 14 ++ .../sysmenu/common/internal_api.h | 80 ---------- .../sysmenu/common/src/pxi.c | 2 + build/systemMenu_RED/Launcher/ARM9/Makefile | 4 +- include/sysmenu/sysmenu_lib.h | 5 +- .../{ARM9 => common}/sysmenu_api.h | 26 ++-- .../sysmenu/sysmenu_lib/common/sysmenu_work.h | 69 ++++----- 14 files changed, 157 insertions(+), 282 deletions(-) delete mode 100644 build/libraries_sysmenu/sysmenu/common/internal_api.h rename include/sysmenu/sysmenu_lib/{ARM9 => common}/sysmenu_api.h (96%) diff --git a/build/components/hyena.TWL/src/main.c b/build/components/hyena.TWL/src/main.c index e6de4472..f9c23880 100644 --- a/build/components/hyena.TWL/src/main.c +++ b/build/components/hyena.TWL/src/main.c @@ -114,7 +114,7 @@ TwlSpMain(void) PrintDebugInfo(); // PXIコールバックの設定 - PXI_SetFifoRecvCallback( SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback ); +// PXI_SetFifoRecvCallback( SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback ); // ランチャーパラメター取得(Cold/Hotスタート判定含む) ReadLauncherParameter(); @@ -192,7 +192,17 @@ TwlSpMain(void) BOOT_Init(); // 活栓挿抜機能初期化 - // 【TODO:直接起動且つロード済みの場合、カードを読み込まないようにする事】 + if( ( SYSM_GetLauncherParamBody()->v1.flags.isValid ) && + ( SYSM_GetLauncherParamBody()->v1.flags.bootType != LAUNCHER_BOOTTYPE_ROM ) && + ( SYSM_GetLauncherParamBody()->v1.bootTitleID ) + ) { + // ランチャーパラメータでダイレクトカードブート以外の指定がある時は、活線挿抜をOFFにする。 + SYSMi_GetWork()->flags.common.isEnableHotSW = 0; + }else { + // それ以外の時は活線挿抜ON + SYSMi_GetWork()->flags.common.isEnableHotSW = 1; + } + HOTSW_Init(); while (TRUE) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 5ea0312e..0ffeb592 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -195,10 +195,27 @@ void HOTSW_Init(void) * ----------------------------------------------------------------- */ BOOL HOTSW_Boot(void) { + OSTick start; s32 tempLockID; BOOL retval = TRUE; - OSTick start = OS_GetTick(); + if( !SYSMi_GetWork()->flags.common.isEnableHotSW ) { + // [TODO:]ここのフラグセットは適当にしたので、あとでちゃんと流れを確認する。 +#ifdef DEBUG_USED_CARD_SLOT_B_ + SYSMi_GetWork()->flags.common.is1stCardChecked = TRUE; +#endif + return TRUE; + } + + { + u16 id = (u16)OS_GetLockID(); + (void)OS_LockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL ); + SYSMi_GetWork()->flags.common.isBusyHotSW = 1; + (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL ); + OS_ReleaseLockID( id ); + } + + start = OS_GetTick(); // スロットがスワップされてたら元に戻す。 if(reg_MI_MC1 & 0x8000){ @@ -385,7 +402,21 @@ BOOL HOTSW_Boot(void) #ifdef DEBUG_USED_CARD_SLOT_B_ SYSMi_GetWork()->flags.common.is1stCardChecked = TRUE; #endif - + + { + u16 id = (u16)OS_GetLockID(); + (void)OS_LockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL ); + SYSMi_GetWork()->flags.common.isBusyHotSW = 0; + if( SYSMi_GetWork()->flags.arm9.reqChangeHotSW ) { + SYSMi_GetWork()->flags.common.isEnableHotSW = SYSMi_GetWork()->flags.arm9.nextHotSWStatus; + SYSMi_GetWork()->flags.arm9.reqChangeHotSW = 0; + SYSMi_GetWork()->flags.arm9.nextHotSWStatus = 0; +// HOTSW_Finalize(); + } + (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL ); + OS_ReleaseLockID( id ); + } + return retval; } @@ -972,6 +1003,7 @@ static void SetMCSCR(void) static void InterruptCallbackCard(void) { // Mを 10 から 11 に遷移 + // [TODO:]削除予定 reg_MI_MC1 = (u32)((reg_MI_MC1 & (~SLOT_STATUS_MODE_SELECT_MSK)) | SLOT_STATUS_MODE_11); // カードブート用構造体の初期化 diff --git a/build/libraries_sysmenu/sysmenu/ARM7/Makefile b/build/libraries_sysmenu/sysmenu/ARM7/Makefile index 57e11b38..078021b6 100644 --- a/build/libraries_sysmenu/sysmenu/ARM7/Makefile +++ b/build/libraries_sysmenu/sysmenu/ARM7/Makefile @@ -24,7 +24,9 @@ TARGET_PLATFORM = TWL TWL_ARCHGEN = LIMITED TWL_PROC = ARM7 -SRCS = ../common/src/pxi.c +SRCDIR = ../common/src +SRCS = status.c \ + pxi.c TARGET_LIB = libsysmenu_sp$(TWL_LIBSUFFIX).a diff --git a/build/libraries_sysmenu/sysmenu/ARM9/Makefile b/build/libraries_sysmenu/sysmenu/ARM9/Makefile index 27d0ed85..c7053e78 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/Makefile +++ b/build/libraries_sysmenu/sysmenu/ARM9/Makefile @@ -33,6 +33,7 @@ SRCS = sysmenu_lib.c \ device.c \ title.c \ banner.c \ + ../common/src/status.c \ ../common/src/pxi.c diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/ninLogoFunc.c b/build/libraries_sysmenu/sysmenu/ARM9/src/ninLogoFunc.c index b2bd1733..135feaf7 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/ninLogoFunc.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/ninLogoFunc.c @@ -16,7 +16,7 @@ *---------------------------------------------------------------------------*/ #include -#include +#include #include // define data----------------------------------------------------------- diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index befa5231..3bb00bea 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -25,9 +25,6 @@ extern void LCFG_VerifyAndRecoveryNTRSettings( void ); // function's prototype------------------------------------------------------- static TitleProperty *SYSMi_CheckShortcutBoot( void ); -static BOOL SYSMi_IsDebuggerBannerViewMode( void ); -static int SYSMi_IsValidCard( void ); -static BOOL SYSMi_CheckEntryAddress( void ); static void SYSMi_CheckCardCloneBoot( void ); // global variable------------------------------------------------------------- @@ -64,7 +61,8 @@ void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) ) OS_SetProtectionRegion( 2, SYSM_OWN_ARM7_MMEM_ADDR, 512KB ); SYSM_SetAllocFunc( pAlloc, pFree ); - PXI_SetFifoRecvCallback( SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback ); + + // PXI_SetFifoRecvCallback( SYSMENU_PXI_FIFO_TAG, SYSMi_PXIFifoRecvCallback ); reg_OS_PAUSE |= REG_OS_PAUSE_CHK_MASK; // PAUSEレジスタのチェックフラグのセット } @@ -243,134 +241,6 @@ static TitleProperty *SYSMi_CheckShortcutBoot( void ) } -// ランチャーパラメータの取得 -const LauncherParamBody *SYSM_GetLauncherParamBody( void ) -{ - return (const LauncherParamBody *)&SYSMi_GetWork()->launcherParam.body; -} - - -// ロゴデモスキップかどうかをセット -void SYSM_SetLogoDemoSkip( BOOL skip ) -{ - SYSMi_GetWork()->flags.common.isLogoSkip = skip; -} - - -// ロゴデモスキップか? -BOOL SYSM_IsLogoDemoSkip( void ) -{ - return (BOOL)SYSMi_GetWork()->flags.common.isLogoSkip; -} - - -// ISデバッガのバナービューモード起動かどうか? -static BOOL SYSMi_IsDebuggerBannerViewMode( void ) -{ -#ifdef __IS_DEBUGGER_BUILD - return ( SYSMi_GetWork()->flags.common.isOnDebugger && - SYSMi_IsValidCard() && - SYSM_GetCardRomHeader()->dbgRomSize == 0 ) ? TRUE : FALSE; -#else - return FALSE; -#endif // __IS_DEBUGGER_BUILD -} - - -// TPリード可能状態か? -BOOL SYSM_IsTPReadable( void ) -{ - return TRUE; -} - - -// TSD有効/無効をセット -void SYSM_SetValidTSD( BOOL valid ) -{ - SYSMi_GetWork()->flags.common.isValidTSD = valid; -} - - -// TSD有効? -BOOL SYSM_IsValidTSD( void ) -{ - return (BOOL)SYSMi_GetWork()->flags.common.isValidTSD; -} - - -//====================================================================== -// -// 各種チェック -// -//====================================================================== - -// 有効なTWL/NTRカードが差さっているか? -BOOL SYSM_IsExistCard( void ) -{ - return (BOOL)SYSMi_GetWork()->flags.common.isExistCard; -} - - -// 検査用カードが差さっているか? -BOOL SYSM_IsInspectCard( void ) -{ - return ( SYSM_IsExistCard() && SYSM_GetCardRomHeader()->inspect_card ); -} - - -// 有効なTWLカードが差さっているか? -BOOL SYSM_IsTWLCard( void ); -BOOL SYSM_IsTWLCard( void ) -{ - return ( SYSM_IsExistCard() && ( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) ); -} - - -// 有効なNTRカードが差さっているか? -BOOL SYSM_IsNTRCard( void ); -BOOL SYSM_IsNTRCard( void ) -{ - return ( SYSM_IsExistCard() && ( SYSM_GetCardRomHeader()->platform_code == PLATFORM_CODE_NTR ) ); -} - - -// NTR,TWLカード存在チェック 「リターン 1:カード認識 0:カードなし」 -static int SYSMi_IsValidCard( void ) -{ - if( ( SYSM_GetCardRomHeader()->nintendo_logo_crc16 == 0xcf56 ) && - ( SYSM_GetCardRomHeader()->header_crc16 == SYSMi_GetWork()->cardHeaderCrc16 ) ) { - return TRUE; // NTR,TWLカードあり(NintendoロゴCRC、カードヘッダCRCが正しい場合) - // ※Nintendoロゴデータのチェックは、特許の都合上、ロゴ表示ルーチン起動後に行います。 - }else { - return FALSE; // NTR,TWLカードなし - } -} - -// エントリアドレスの正当性チェック -static BOOL SYSMi_CheckEntryAddress( void ) -{ - // エントリアドレスがROM内登録エリアかAGBカートリッジエリアなら、無限ループに入る。 - if( !( ( (u32)SYSM_GetCardRomHeader()->main_entry_address >= HW_MAIN_MEM ) && - ( (u32)SYSM_GetCardRomHeader()->main_entry_address < SYSM_ARM9_MMEM_ENTRY_ADDR_LIMIT ) - ) || - !( ( ( (u32)SYSM_GetCardRomHeader()->sub_entry_address >= HW_MAIN_MEM ) && - ( (u32)SYSM_GetCardRomHeader()->sub_entry_address < SYSM_ARM7_LOAD_MMEM_LAST_ADDR ) ) || - ( ( (u32)SYSM_GetCardRomHeader()->sub_entry_address >= HW_WRAM ) && - ( (u32)SYSM_GetCardRomHeader()->sub_entry_address < SYSM_ARM7_LOAD_WRAM_LAST_ADDR ) ) - ) - ) { - OS_TPrintf("entry address invalid.\n"); -#ifdef __DEBUG_SECURITY_CODE - DispSingleColorScreen( SCREEN_YELLOW ); -#endif - return FALSE; - } - OS_TPrintf("entry address valid.\n"); - return TRUE; -} - - - // クローンブート判定 static void SYSMi_CheckCardCloneBoot( void ) { @@ -379,10 +249,6 @@ static void SYSMi_CheckCardCloneBoot( void ) u32 total_rom_size = SYSM_GetCardRomHeader()->rom_valid_size ? SYSM_GetCardRomHeader()->rom_valid_size : 0x01000000; u32 file_offset = total_rom_size & 0xFFFFFE00; - if( !SYSMi_IsValidCard() ) { - return; - } - DC_FlushRange( buffp, BNR_IMAGE_SIZE ); CARD_ReadRom( 4, (void *)file_offset, buffp, BNR_IMAGE_SIZE ); diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index ab717dcf..2e8c8875 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -28,6 +28,7 @@ // function's prototype------------------------------------------------------- static BOOL SYSMi_ReadBanner_NAND( NAMTitleId titleID, u8 *pDst ); static s32 ReadFile( FSFile* pf, void* buffer, s32 size ); +static void SYSMi_EnableHotSW( BOOL enable ); static void SYSMi_LoadTitleThreadFunc( TitleProperty *pBootTitle ); static void SYSMi_Relocate( void ); static BOOL SYSMi_CheckTitlePointer( TitleProperty *pBootTitle ); @@ -450,15 +451,6 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len); } -static void SYSMi_DisableHotSW( void ) -{ - if( SYSMi_GetWork()->flags.arm7.isEnableHotSW && - SYSMi_GetWork()->flags.arm9.isEnableHotSW ) { - return; - } - SYSMi_SendPXICommand( SYSM_PXI_COMM_DISABLE_HOTSW ); -} - // 指定タイトルを別スレッドでロード開始する void SYSM_StartLoadTitle( TitleProperty *pBootTitle ) { @@ -466,7 +458,7 @@ void SYSM_StartLoadTitle( TitleProperty *pBootTitle ) #define STACK_SIZE 0xc00 static u64 stack[ STACK_SIZE / sizeof(u64) ]; - SYSMi_DisableHotSW(); + SYSMi_EnableHotSW( FALSE ); // アプリ未ロード状態なら、ロード開始 if( !pBootTitle->flags.isAppLoadCompleted ) { @@ -645,3 +637,35 @@ void CheckDigest( void ) } } #endif + + +// 活線挿抜有効/無効をセット +void SYSMi_EnableHotSW( BOOL enable ) +{ + enable = enable ? 1 : 0; + + // 現在の値と同じなら何もせずリターン + if( SYSMi_GetWork()->flags.common.isEnableHotSW == enable ) { + return; + } + + { + u16 id = (u16)OS_GetLockID(); + (void)OS_LockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL ); + if( !SYSMi_GetWork()->flags.common.isBusyHotSW ) { + // ARM7側がビジーでなければ、直接書き換え + SYSMi_GetWork()->flags.common.isEnableHotSW = enable; + }else { + // ARM7側がビジーなら、変更要求をしてARM7が値を書き換えてくれるのを待つ。 + SYSMi_GetWork()->flags.arm9.reqChangeHotSW = 1; + SYSMi_GetWork()->flags.arm9.nextHotSWStatus = enable; + } + (void)OS_UnlockByWord( id, &SYSMi_GetWork()->lockHotSW, NULL ); + OS_ReleaseLockID( id ); + } + + // 値が変化するまでスリープして待つ。 + while( SYSMi_GetWork()->flags.common.isEnableHotSW != enable ) { + OS_Sleep( 2 ); + } +} diff --git a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h index e4181aa1..a95c7734 100644 --- a/build/libraries_sysmenu/sysmenu/common/include/internal_api.h +++ b/build/libraries_sysmenu/sysmenu/common/include/internal_api.h @@ -62,8 +62,22 @@ void SYSMi_CheckRTC( void ); // カードバナーリード(※NTR-IPL2仕様) BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner ); +//------------------------------------------------------- +// 活線挿抜 +//------------------------------------------------------- +void SYSMi_EnableHotSW( BOOL enable ); + + #endif + +//======================================================= +// +// ARM9/ARM7共通API +// +//======================================================= +BOOL SYSMi_IsDebuggerBannerViewMode( void ); +BOOL SYSMi_CheckEntryAddress( void ); BOOL SYSMi_SendPXICommand( SYSMPXICommand command ); void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err ); diff --git a/build/libraries_sysmenu/sysmenu/common/internal_api.h b/build/libraries_sysmenu/sysmenu/common/internal_api.h deleted file mode 100644 index dbffe75c..00000000 --- a/build/libraries_sysmenu/sysmenu/common/internal_api.h +++ /dev/null @@ -1,80 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: internal_api.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:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef SYSM_INTERNAL_API_H_ -#define SYSM_INTERNAL_API_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -//#define SYSM_LIB_NO_MESSAGE // Printf抑制スイッチ - -#ifdef SYSM_LIB_NO_MESSAGE -#define OS_Printf( ... ) ((void)0) -#define OS_TPrintf( ... ) ((void)0) -#define OS_PutString( ... ) ((void)0) -#endif - -#ifdef SDK_ARM9 -//------------------------------------------------------- -// マウント情報セット -//------------------------------------------------------- - -// ランチャー用 -void SYSMi_SetLauncherMountInfo( void ); - -// 起動アプリ用 -void SYSMi_SetBootAppMountInfo( TitleProperty *pBootTitle ); - - -//------------------------------------------------------- -// デバイス -//------------------------------------------------------- - -// RTC補正 -void SYSMi_WriteAdjustRTC( void ); - -// RTCチェック -void SYSMi_CheckRTC( void ); - - -//------------------------------------------------------- -// バナー -//------------------------------------------------------- - -// カードバナーリード(※NTR-IPL2仕様) -BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner ); - -#endif // SDK_ARM9 - - -//------------------------------------------------------- -// PXI -//------------------------------------------------------- - -extern void SYSMi_SendPXICommand( SYSMPXICommand command ); -extern void SYSMi_PXIFifoCallback( PXIFifoTag tag, u32 data, BOOL err ); - - -#ifdef __cplusplus -} -#endif - -#endif // SYSM_INTERNAL_API_H_ diff --git a/build/libraries_sysmenu/sysmenu/common/src/pxi.c b/build/libraries_sysmenu/sysmenu/common/src/pxi.c index d26b7d19..d14b2192 100644 --- a/build/libraries_sysmenu/sysmenu/common/src/pxi.c +++ b/build/libraries_sysmenu/sysmenu/common/src/pxi.c @@ -71,6 +71,7 @@ void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err ) #pragma unused( tag, err ) SYSMPXIPacket packet; packet.raw = data; +#if 0 #ifdef SDK_ARM9 @@ -112,5 +113,6 @@ void SYSMi_PXIFifoRecvCallback( PXIFifoTag tag, u32 data, BOOL err ) } } #endif // SDK_ARM9 +#endif } diff --git a/build/systemMenu_RED/Launcher/ARM9/Makefile b/build/systemMenu_RED/Launcher/ARM9/Makefile index a6a11b2e..6936734f 100644 --- a/build/systemMenu_RED/Launcher/ARM9/Makefile +++ b/build/systemMenu_RED/Launcher/ARM9/Makefile @@ -18,8 +18,8 @@ SUBDIRS = \ ../../../libraries_sysmenu/sysmenu \ -# ../../../libraries_sysmenu/hotsw \ -# ../../../components/hyena.TWL + ../../../libraries_sysmenu/hotsw \ + ../../../components/hyena.TWL # ../../../libraries_sysmenu/reloc_info \ # ../../../libraries_sysmenu/boot \ diff --git a/include/sysmenu/sysmenu_lib.h b/include/sysmenu/sysmenu_lib.h index 1c54ea4d..d0a2f675 100644 --- a/include/sysmenu/sysmenu_lib.h +++ b/include/sysmenu/sysmenu_lib.h @@ -18,10 +18,7 @@ #ifndef SYSM_SYSMENU_LIB_H_ #define SYSM_SYSMENU_LIB_H_ -#ifdef SDK_ARM9 -#include -#endif // SDK_ARM9 - +#include #include diff --git a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h similarity index 96% rename from include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h rename to include/sysmenu/sysmenu_lib/common/sysmenu_api.h index b4b0eb02..71bb4937 100644 --- a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -71,13 +71,17 @@ typedef enum AuthResult { // global variable------------------------------------------------------ +#ifdef SDK_ARM9 extern void *SYSM_Alloc( u32 size ); extern void SYSM_Free( void *ptr ); //extern void *(*SYSM_Alloc)( u32 size ); // ライブラリ内部使用 //extern void (*SYSM_Free)( void *ptr ); // 同上 +#endif // function------------------------------------------------------------- +#ifdef SDK_ARM9 + // 初期化 extern void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) ); // 初期化。 extern void SYSM_SetArena( void ); // システムメニューのアリーナ初期化。OS_Initの後で呼んでください。 @@ -97,16 +101,6 @@ extern AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ); // extern void SYSM_CaribrateTP( void ); // タッチパネルキャリブレーション extern void SYSM_SetBackLightBrightness( u8 brightness ); // バックライトを制御(本体設定データへの値セーブも行う) -// 状態チェック -extern BOOL SYSM_IsExistCard( void ); // TWL/NTRカードが差さっているか?(アプリは未認証状態) -extern BOOL SYSM_IsInspectCard( void ); // 検査カードが差さっているか? -extern BOOL SYSM_IsTPReadable( void ); // TPリード可能か? -extern BOOL SYSM_IsLogoDemoSkip( void ); // ロゴデモ飛ばし状態か? -extern void SYSM_SetLogoDemoSkip( BOOL skip ); // ロゴデモ飛ばし状態フラグを設定する。 -extern BOOL SYSM_IsValidTSD( void ); // TWL設定データは有効か? -extern void SYSM_SetValidTSD( BOOL valid ); // TWL設定データの有効/無効フラグを設定する。 -extern const LauncherParamBody *SYSM_GetLauncherParamBody( void ); // リセットパラメータの取得 - // Nintendoロゴ制御 extern BOOL SYSM_CheckNintendoLogo( u16 *pLogoData ); // Nintendoロゴデータのチェック extern void SYSM_LoadNintendoLogo2D( u16 *pLogoData, u16 *pDst, int paletteColorIndex ); // NintendoロゴデータをOBJ_2D形式でロード(pTempBufferには0x700bytes必要) @@ -119,6 +113,18 @@ extern s64 SYSM_CalcRTCOffset( RTCDate *pNewDate, RTCTime *pNewTime ); // RTC extern u32 SYSM_GetDayNum( u32 year, u32 month ); // 指定された年・月の日数を取得する extern BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる +#endif + +// 状態チェック +extern BOOL SYSM_IsExistCard( void ); // TWL/NTRカードが差さっているか?(アプリは未認証状態) +extern BOOL SYSM_IsInspectCard( void ); // 検査カードが差さっているか? +extern BOOL SYSM_IsTPReadable( void ); // TPリード可能か? +extern BOOL SYSM_IsLogoDemoSkip( void ); // ロゴデモ飛ばし状態か? +extern void SYSM_SetLogoDemoSkip( BOOL skip ); // ロゴデモ飛ばし状態フラグを設定する。 +extern BOOL SYSM_IsValidTSD( void ); // TWL設定データは有効か? +extern void SYSM_SetValidTSD( BOOL valid ); // TWL設定データの有効/無効フラグを設定する。 +extern const LauncherParamBody *SYSM_GetLauncherParamBody( void ); // リセットパラメータの取得 + #ifdef __cplusplus } diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h index 5f46c2b3..a66fdd83 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_work.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_work.h @@ -85,53 +85,54 @@ typedef struct SYSM_work { Relocate_Info romRelocateInfo[RELOCATE_INFO_NUM]; // ROM再配置情報(arm9,arm7それぞれltdとflxで最大4つ) struct { struct { - vu32 isFatalError :1; // FATALエラー - vu32 isARM9Start :1; // ARM9スタートフラグ - vu32 isHotStart :1; // Hot/Coldスタート判定 - vu32 isValidLauncherParam :1; // リセットパラメータ有効 - vu32 isValidTSD :1; // NITRO設定データ無効フラグ - vu32 isLogoSkip :1; // ロゴデモスキップ - vu32 isOnDebugger :1; // デバッガ動作か? - vu32 isExistCard :1; // 有効なNTR/TWLカードが存在するか? - vu32 isCardStateChanged :1; // カード状態更新フラグ - vu32 isLoadSucceeded :1; // アプリロード完了? - vu32 isCardBoot :1; // カードブートか? - vu32 isBrokenHWNormalInfo :1; // HWノーマル情報が破損している。 - vu32 isBrokenHWSecureInfo :1; // HWセキュア情報が破損している。 - vu32 isResetRTC :1; // RTCリセット発生 + vu32 isFatalError :1; // FATALエラー + vu32 isARM9Start :1; // ARM9スタートフラグ + vu32 isHotStart :1; // Hot/Coldスタート判定 + vu32 isValidLauncherParam :1; // リセットパラメータ有効 + vu32 isValidTSD :1; // NITRO設定データ無効フラグ + vu32 isLogoSkip :1; // ロゴデモスキップ + vu32 isOnDebugger :1; // デバッガ動作か? + vu32 isExistCard :1; // 有効なNTR/TWLカードが存在するか? + vu32 isCardStateChanged :1; // カード状態更新フラグ + vu32 isLoadSucceeded :1; // アプリロード完了? + vu32 isCardBoot :1; // カードブートか? + vu32 isBrokenHWNormalInfo :1; // HWノーマル情報が破損している。 + vu32 isBrokenHWSecureInfo :1; // HWセキュア情報が破損している。 + vu32 isResetRTC :1; // RTCリセット発生 + vu16 isEnableHotSW :1; // 活線挿抜有効? + vu16 isBusyHotSW :1; // 活線挿抜処理中? #ifdef DEBUG_USED_CARD_SLOT_B_ - vu32 isValidCardBanner :1; - vu32 is1stCardChecked :1; - vu32 rsv :17; + vu32 isValidCardBanner :1; + vu32 is1stCardChecked :1; + vu32 rsv :14; #else - vu32 rsv :19; + vu32 rsv :16; #endif }common; struct { - vu16 isEnableHotSW :1; - vu16 rsv:15; + vu16 reqChangeHotSW :1; + vu16 nextHotSWStatus :1; + vu16 rsv:15; }arm9; struct { - vu16 isEnableHotSW :1; - vu16 isBusyHotSW :1; - vu16 disableHotSW_REQ :1; - vu16 rsv:13; + vu16 rsv:16; }arm7; }flags; - u16 cardHeaderCrc16; // カード検出時に算出したROMヘッダCRC16(ARM9側でコピーして使用する側) - u16 cardHeaderCrc16_bak; // カード検出時に算出したROMヘッダCRC16(ARM7側ライブラリでダイレクトに書き換わる側) - OSLockWord lockCardRsc; // カードリソース排他制御用 - int cloneBootMode; - u32 nCardID; // カードID - u32 gameCommondParam; // NTRのゲームコマンドパラメータ(NTRのROMヘッダのゲームコマンドパラメータに上書きする) + u16 cardHeaderCrc16; // カード検出時に算出したROMヘッダCRC16(ARM9側でコピーして使用する側) + u16 cardHeaderCrc16_bak; // カード検出時に算出したROMヘッダCRC16(ARM7側ライブラリでダイレクトに書き換わる側) + OSLockWord lockCardRsc; // カードリソース排他制御用 + OSLockWord lockHotSW; // カードリソース排他制御用 + int cloneBootMode; + u32 nCardID; // カードID + u32 gameCommondParam; // NTRのゲームコマンドパラメータ(NTRのROMヘッダのゲームコマンドパラメータに上書きする) - LauncherParam launcherParam; - ISD_RomEmuInfo romEmuInfo; + LauncherParam launcherParam; + ISD_RomEmuInfo romEmuInfo; // NTR-IPL2のレガシー 最終的には消すと思う - BOOL enableCardNormalOnly; - u8 rtcStatus; + BOOL enableCardNormalOnly; + u8 rtcStatus; }SYSM_work; // NTRにおける仕様を継承する必要のあるワーク