mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
活線挿抜動作を禁止できるようにランチャーとhotswライブラリで対応中。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@542 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
0ed02f72b9
commit
b80be7b1a1
@ -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)
|
||||
|
||||
@ -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);
|
||||
|
||||
// カードブート用構造体の初期化
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -33,6 +33,7 @@ SRCS = sysmenu_lib.c \
|
||||
device.c \
|
||||
title.c \
|
||||
banner.c \
|
||||
../common/src/status.c \
|
||||
../common/src/pxi.c
|
||||
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <sysmenu/sysmenu_lib/ARM9/sysmenu_api.h>
|
||||
#include <sysmenu/sysmenu_lib/common/sysmenu_api.h>
|
||||
#include <sysmenu/memorymap.h>
|
||||
|
||||
// define data-----------------------------------------------------------
|
||||
|
||||
@ -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 );
|
||||
|
||||
|
||||
@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,8 +62,22 @@ void SYSMi_CheckRTC( void );
|
||||
// カードバナーリード(※NTR-IPL2仕様)
|
||||
BOOL SYSMi_ReadCardBannerFile( u32 bannerOffset, TWLBannerFile *pBanner );
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Šˆ<C5A0>ü‘}”²
|
||||
//-------------------------------------------------------
|
||||
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 );
|
||||
|
||||
|
||||
@ -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 <twl.h>
|
||||
|
||||
#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_
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
@ -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 \
|
||||
|
||||
|
||||
@ -18,10 +18,7 @@
|
||||
#ifndef SYSM_SYSMENU_LIB_H_
|
||||
#define SYSM_SYSMENU_LIB_H_
|
||||
|
||||
#ifdef SDK_ARM9
|
||||
#include <sysmenu/sysmenu_lib/ARM9/sysmenu_api.h>
|
||||
#endif // SDK_ARM9
|
||||
|
||||
#include <sysmenu/sysmenu_lib/common/sysmenu_api.h>
|
||||
#include <sysmenu/sysmenu_lib/common/sysmenu_work.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
|
||||
}
|
||||
@ -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における仕様を継承する必要のあるワーク
|
||||
|
||||
Loading…
Reference in New Issue
Block a user