mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ソース整理中。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@170 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
aa112334d7
commit
8e85753fb1
@ -77,7 +77,7 @@ BOOL SYSM_IsCardPulledOut(void)
|
||||
case CARD_DETECTING:
|
||||
if (SYSMi_IsCardDataReady()) {
|
||||
u32 cardID = *(vu32 *)REG_CARD_DATA;
|
||||
if ( ( cardID != GetSYSMWork()->nCardID ) &&
|
||||
if ( ( cardID != SYSM_GetWork()->nCardID ) &&
|
||||
SYSM_IsExistCard() )
|
||||
{
|
||||
cpw.detectPullOut = TRUE;
|
||||
|
||||
@ -36,9 +36,8 @@ typedef struct BannerCheckParam {
|
||||
// function's prototype-------------------------------------------------------
|
||||
static BOOL SYSMi_IsDebuggerBannerViewMode( void );
|
||||
static BOOL SYSMi_CheckTitlePointer( TitleProperty *pBootTitle );
|
||||
|
||||
static void SYSMi_WriteAdjustRTC( void );
|
||||
static int SYSMi_ExistCard( void );
|
||||
static int SYSMi_IsValidCard( void );
|
||||
static void SYSMi_ReadCardBannerFile( void );
|
||||
static BOOL SYSMi_CheckEntryAddress( void );
|
||||
static void SYSMi_CheckCardCloneBoot( void );
|
||||
@ -55,9 +54,9 @@ NitroConfigData *ncdp; //
|
||||
#endif
|
||||
|
||||
// static variable-------------------------------------------------------------
|
||||
static BOOL s_isBanner = FALSE;
|
||||
static BOOL s_isBanner = FALSE;
|
||||
static NTRBannerFile s_bannerBuf;
|
||||
static NAMTitleId old_titleIdArray[ LAUNCHER_TITLE_LIST_NUM ];
|
||||
static NAMTitleId old_titleIdArray[ LAUNCHER_TITLE_LIST_NUM ];
|
||||
|
||||
// const data------------------------------------------------------------------
|
||||
|
||||
@ -70,17 +69,32 @@ static BannerCheckParam s_bannerCheckList[ NTR_BNR_VER_MAX ] = {
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// function's description
|
||||
//
|
||||
// 初期化
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
static void * AllocForNAM(unsigned long size)
|
||||
// SystemMenuの初期化
|
||||
void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) )
|
||||
{
|
||||
return OS_AllocFromHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, size );
|
||||
}
|
||||
|
||||
static void FreeForNAM(void *p)
|
||||
{
|
||||
OS_FreeToHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE, p);
|
||||
#ifdef __SYSM_DEBUG
|
||||
pSysm = SYSM_GetWork();
|
||||
ncdp = GetTSD();
|
||||
#endif /* __SYSM_DEBUG */
|
||||
|
||||
// ARM7コンポーネント用プロテクションユニット領域変更
|
||||
OS_SetProtectionRegion( 2, 0x02280000, 512KB );
|
||||
|
||||
// ARM9用ブートコード配置のため、アリーナHi位置を下げる
|
||||
OS_SetMainArenaHi( (void *)0x02e7fc00 );
|
||||
|
||||
SYSM_SetAllocFunc( pAlloc, pFree );
|
||||
|
||||
// WRAM設定はいる?
|
||||
// MI_SetMainMemoryPriority(MI_PROCESSOR_ARM7);
|
||||
// MI_SetWramBank(MI_WRAM_ARM7_ALL);
|
||||
|
||||
SVC_CpuClearFast(0x0000, (u16 *)SYSM_GetWork(), sizeof(SYSM_work)); // SYSMワークのクリア
|
||||
}
|
||||
|
||||
|
||||
@ -92,36 +106,23 @@ void SYSM_SetAllocFunc( void *(*pAlloc)(u32), void (*pFree)(void*) )
|
||||
}
|
||||
|
||||
|
||||
// SystemMenuの初期化
|
||||
void SYSM_Init( void *(*pAlloc)(u32), void (*pFree)(void*) )
|
||||
{
|
||||
#ifdef __SYSM_DEBUG
|
||||
pSysm = GetSYSMWork();
|
||||
ncdp = GetTSD();
|
||||
#endif /* __SYSM_DEBUG */
|
||||
|
||||
OS_SetMainArenaHi( (void *)0x02e7fc00 );
|
||||
// ============================================================================
|
||||
//
|
||||
// 情報取得
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
TP_Init();
|
||||
RTC_Init();
|
||||
|
||||
SYSM_SetAllocFunc( pAlloc, pFree );
|
||||
|
||||
// WRAM設定はいる?
|
||||
// MI_SetMainMemoryPriority(MI_PROCESSOR_ARM7);
|
||||
// MI_SetWramBank(MI_WRAM_ARM7_ALL);
|
||||
|
||||
SVC_CpuClearFast(0x0000, (u16 *)GetSYSMWork(), sizeof(SYSM_work)); // SYSMワークのクリア
|
||||
|
||||
|
||||
// パラメータリード
|
||||
void SYSM_ReadParameters( void )
|
||||
{
|
||||
reg_OS_PAUSE |= REG_OS_PAUSE_CHK_MASK; // PAUSEレジスタのチェックフラグのセット
|
||||
|
||||
if( SYSM_ReadTWLSettingsFile() ) { // NANDからTWL本体設定データをリード
|
||||
SYSM_SetBackLightBrightness( (u8)TSD_GetBacklightBrightness() ); // 読み出したTWL本体設定データをもとにバックライト輝度設定
|
||||
SYSM_CaribrateTP(); // 読み出したTWL本体設定データをもとにTPキャリブレーション。
|
||||
}
|
||||
// SYSM_ReadHWInfo(); // NANDからHW情報をリード
|
||||
SYSM_ReadTWLSettingsFile(); // NANDからTWL本体設定データをリード
|
||||
|
||||
SYSM_SetBackLightBrightness(); // 読み出したTWL本体設定データをもとにバックライト輝度設定
|
||||
SYSM_CaribrateTP(); // 読み出したTWL本体設定データをもとにTPキャリブレーション。
|
||||
SYSMi_WriteAdjustRTC(); // 読み出したTWL本体設定データをもとにRTCクロック補正値をセット。
|
||||
SYSMi_WriteAdjustRTC(); // RTCクロック補正値をセット。
|
||||
SYSMi_CheckRTC();
|
||||
|
||||
SYSM_VerifyAndRecoveryNTRSettings(); // NTR設定データを読み出して、TWL設定データとベリファイし、必要ならリカバリ
|
||||
@ -275,6 +276,43 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size)
|
||||
}
|
||||
|
||||
|
||||
// ロゴデモスキップか?
|
||||
BOOL SYSM_IsLogoDemoSkip( void )
|
||||
{
|
||||
// ※システムアプリからのハードリセットによるロゴデモ飛ばしも判定に入れる。
|
||||
|
||||
return SYSMi_IsDebuggerBannerViewMode();
|
||||
}
|
||||
|
||||
|
||||
// ISデバッガのバナービューモード起動かどうか?
|
||||
static BOOL SYSMi_IsDebuggerBannerViewMode( void )
|
||||
{
|
||||
#ifdef __IS_DEBUGGER_BUILD
|
||||
return ( SYSM_GetWork()->isOnDebugger &&
|
||||
SYSMi_IsValidCard() &&
|
||||
SYSM_GetCardRomHeader()->dbgRomSize == 0 ) ? TRUE : FALSE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif // __IS_DEBUGGER_BUILD
|
||||
}
|
||||
|
||||
// 有効なTWL/NTRカードが差さっているか?
|
||||
BOOL SYSM_IsExistCard( void )
|
||||
{
|
||||
return SYSM_GetWork()->isExistCard;
|
||||
}
|
||||
|
||||
|
||||
// 検査用カードが差さっているか?
|
||||
BOOL SYSM_IsInspectCard( void )
|
||||
{
|
||||
return ( SYSM_IsExistCard() && SYSM_GetCardRomHeader()->inspect_card );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 指定タイトルがブート可能なポインタかチェック
|
||||
static BOOL SYSMi_CheckTitlePointer( TitleProperty *pBootTitle )
|
||||
{
|
||||
@ -283,18 +321,32 @@ static BOOL SYSMi_CheckTitlePointer( TitleProperty *pBootTitle )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
enum
|
||||
|
||||
// TPリード可能状態か?
|
||||
BOOL SYSM_IsTPReadable( void )
|
||||
{
|
||||
region_header,
|
||||
region_arm9_ntr,
|
||||
region_arm7_ntr,
|
||||
region_arm9_twl,
|
||||
region_arm7_twl,
|
||||
region_max
|
||||
};
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// アプリ起動
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
// 指定タイトルの認証&ロード ※1フレームじゃ終わらん。
|
||||
AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle )
|
||||
{
|
||||
enum
|
||||
{
|
||||
region_header,
|
||||
region_arm9_ntr,
|
||||
region_arm7_ntr,
|
||||
region_arm9_twl,
|
||||
region_arm7_twl,
|
||||
region_max
|
||||
};
|
||||
// メインメモリのクリア
|
||||
// DSダウンロードプレイの時は、ROMヘッダを退避する
|
||||
// アプリロード
|
||||
@ -429,86 +481,18 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
// TPリード可能かどうかを調べる。
|
||||
BOOL SYSM_IsTPReadable( void )
|
||||
{
|
||||
if( SYSM_GetBootFlag() & BFLG_BOOT_DECIDED ) return FALSE;
|
||||
else return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// サブルーチン
|
||||
//
|
||||
// デバイス制御
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
// ロゴデモスキップか?
|
||||
BOOL SYSM_IsLogoDemoSkip( void )
|
||||
// バックライト輝度調整
|
||||
void SYSM_SetBackLightBrightness( u8 brightness )
|
||||
{
|
||||
// ※システムアプリからのハードリセットによるロゴデモ飛ばしも判定に入れる。
|
||||
|
||||
return SYSMi_IsDebuggerBannerViewMode();
|
||||
}
|
||||
|
||||
// ISデバッガのバナービューモード起動かどうか?
|
||||
static BOOL SYSMi_IsDebuggerBannerViewMode( void )
|
||||
{
|
||||
#ifdef __IS_DEBUGGER_BUILD
|
||||
return ( GetSYSMWork()->isOnDebugger &&
|
||||
SYSMi_ExistCard() &&
|
||||
SYSM_GetCardRomHeader()->dbgRomSize == 0 ) ? TRUE : FALSE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif // __IS_DEBUGGER_BUILD
|
||||
}
|
||||
|
||||
|
||||
// バナーファイルの読み込みの実体
|
||||
static void SYSMi_ReadCardBannerFile( void )
|
||||
{
|
||||
s32 lockCardID;
|
||||
NTRBannerFile *pBanner = &s_bannerBuf;
|
||||
|
||||
if( ( !SYSMi_ExistCard() ) || ( *(void** )BANNER_ROM_OFFSET == NULL ) ) {
|
||||
s_isBanner = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
// ROMカードからのバナーデータのリード
|
||||
if ( ( lockCardID = OS_GetLockID() ) > 0 ) {
|
||||
( void )OS_LockCard( (u16 )lockCardID );
|
||||
DC_FlushRange( pBanner, sizeof(NTRBannerFile) );
|
||||
SYSM_ReadCard(*(void** )BANNER_ROM_OFFSET, pBanner, sizeof(NTRBannerFile) );
|
||||
( void )OS_UnLockCard( (u16 )lockCardID );
|
||||
OS_ReleaseLockID( (u16 )lockCardID );
|
||||
}
|
||||
|
||||
// バナーデータの正誤チェック
|
||||
{
|
||||
int i;
|
||||
u16 calc_crc = 0xffff;
|
||||
u16 *hd_crcp = (u16 *)&pBanner->h.crc16_v1;
|
||||
BannerCheckParam *chkp = &s_bannerCheckList[ 0 ];
|
||||
|
||||
s_isBanner = TRUE;
|
||||
|
||||
for( i = 0; i < NTR_BNR_VER_MAX; i++ ) {
|
||||
if( i < pBanner->h.version ) {
|
||||
calc_crc = SVC_GetCRC16( calc_crc, chkp->srcp, chkp->size );
|
||||
if( calc_crc != *hd_crcp++ ) {
|
||||
s_isBanner = FALSE;
|
||||
break;
|
||||
}
|
||||
}else {
|
||||
MI_CpuClear16( chkp->srcp, chkp->size );
|
||||
}
|
||||
chkp++;
|
||||
}
|
||||
if( !s_isBanner ) {
|
||||
MI_CpuClear16( &s_bannerBuf, sizeof(NTRBannerFile) );
|
||||
}
|
||||
}
|
||||
TSD_SetBacklightBrightness( brightness );
|
||||
( void )PMi_WriteRegister( 4, (u16)brightness );
|
||||
SYSM_WriteTWLSettingsFile();
|
||||
}
|
||||
|
||||
|
||||
@ -550,11 +534,87 @@ static void SYSMi_WriteAdjustRTC( void )
|
||||
}
|
||||
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// バナー
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
// バナーファイルの読み込みの実体
|
||||
static void SYSMi_ReadCardBannerFile( void )
|
||||
{
|
||||
s32 lockCardID;
|
||||
NTRBannerFile *pBanner = &s_bannerBuf;
|
||||
|
||||
if( ( !SYSMi_IsValidCard() ) || ( *(void** )BANNER_ROM_OFFSET == NULL ) ) {
|
||||
s_isBanner = FALSE;
|
||||
return;
|
||||
}
|
||||
|
||||
// ROMカードからのバナーデータのリード
|
||||
if ( ( lockCardID = OS_GetLockID() ) > 0 ) {
|
||||
( void )OS_LockCard( (u16 )lockCardID );
|
||||
DC_FlushRange( pBanner, sizeof(NTRBannerFile) );
|
||||
SYSM_ReadCard(*(void** )BANNER_ROM_OFFSET, pBanner, sizeof(NTRBannerFile) );
|
||||
( void )OS_UnLockCard( (u16 )lockCardID );
|
||||
OS_ReleaseLockID( (u16 )lockCardID );
|
||||
}
|
||||
|
||||
// バナーデータの正誤チェック
|
||||
{
|
||||
int i;
|
||||
u16 calc_crc = 0xffff;
|
||||
u16 *hd_crcp = (u16 *)&pBanner->h.crc16_v1;
|
||||
BannerCheckParam *chkp = &s_bannerCheckList[ 0 ];
|
||||
|
||||
s_isBanner = TRUE;
|
||||
|
||||
for( i = 0; i < NTR_BNR_VER_MAX; i++ ) {
|
||||
if( i < pBanner->h.version ) {
|
||||
calc_crc = SVC_GetCRC16( calc_crc, chkp->srcp, chkp->size );
|
||||
if( calc_crc != *hd_crcp++ ) {
|
||||
s_isBanner = FALSE;
|
||||
break;
|
||||
}
|
||||
}else {
|
||||
MI_CpuClear16( chkp->srcp, chkp->size );
|
||||
}
|
||||
chkp++;
|
||||
}
|
||||
if( !s_isBanner ) {
|
||||
MI_CpuClear16( &s_bannerBuf, sizeof(NTRBannerFile) );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//======================================================================
|
||||
//
|
||||
// 各種チェック
|
||||
//
|
||||
//======================================================================
|
||||
|
||||
// 有効なTWLカードが差さっているか?
|
||||
BOOL SYSM_IsTWLCard( void );
|
||||
BOOL SYSM_IsTWLCard( void )
|
||||
{
|
||||
return ( SYSM_IsExistCard() && ( SYSM_GetCardRomHeader()->platform_code & PLATFORM_ID_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_ExistCard( void )
|
||||
static int SYSMi_IsValidCard( void )
|
||||
{
|
||||
if( ( SYSM_GetCardRomHeader()->nintendo_logo_crc16 == 0xcf56 ) &&
|
||||
( SYSM_GetCardRomHeader()->header_crc16 == GetSYSMWork()->cardHeaderCrc16) ) {
|
||||
( SYSM_GetCardRomHeader()->header_crc16 == SYSM_GetWork()->cardHeaderCrc16 ) ) {
|
||||
return TRUE; // NTR,TWLカードあり(NintendoロゴCRC、カードヘッダCRCが正しい場合)
|
||||
// ※Nintendoロゴデータのチェックは、特許の都合上、ロゴ表示ルーチン起動後に行います。
|
||||
}else {
|
||||
@ -562,43 +622,19 @@ static int SYSMi_ExistCard( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// スリープモードへの遷移
|
||||
void SYSM_GoSleepMode( void )
|
||||
{
|
||||
#ifndef __IS_DEBUGGER_BUILD // デバッガ用ビルド時はスリープしない。
|
||||
PM_GoSleepMode( (PMWakeUpTrigger)( (PAD_DetectFold() ? PM_TRIGGER_COVER_OPEN : 0) | PM_TRIGGER_RTC_ALARM ),
|
||||
0,
|
||||
0 );
|
||||
#endif /* __IS_DEBUGGER_BUILD */
|
||||
}
|
||||
|
||||
|
||||
// バックライト輝度調整
|
||||
void SYSM_SetBackLightBrightness( void )
|
||||
{
|
||||
( void )PMi_WriteRegister( 4, (u16)TSD_GetBacklightBrightness() );
|
||||
( void )PM_SetBackLight( PM_LCD_ALL, PM_BACKLIGHT_ON );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//======================================================================
|
||||
// 各種チェック
|
||||
//======================================================================
|
||||
|
||||
// エントリアドレスの正当性チェック
|
||||
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 ) ) ) )
|
||||
{
|
||||
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 );
|
||||
@ -618,7 +654,7 @@ 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_ExistCard() ) {
|
||||
if( !SYSMi_IsValidCard() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -632,9 +668,9 @@ static void SYSMi_CheckCardCloneBoot( void )
|
||||
|
||||
buffp += total_rom_size & 0x000001FF;
|
||||
if( *buffp++ == 'a' && *buffp == 'c' ) {
|
||||
GetSYSMWork()->CloneBootMode = cloneBootMode;
|
||||
SYSM_GetWork()->cloneBootMode = CLONE_BOOT_MODE;
|
||||
}else {
|
||||
GetSYSMWork()->CloneBootMode = OTHER_BOOT_MODE;
|
||||
SYSM_GetWork()->cloneBootMode = OTHER_BOOT_MODE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -650,7 +686,8 @@ static void SYSMi_CheckRTC( void )
|
||||
if( !SYSM_CheckRTCDate( &date ) ||
|
||||
!SYSM_CheckRTCTime( &time )
|
||||
#ifndef __IS_DEBUGGER_BUILD // 青デバッガではRTCの電池がないので、毎回ここにひっかかって設定データが片方クリアされてしまう。これを防ぐスイッチ。
|
||||
|| ( GetSYSMWork()->rtcStatus & 0x01 )
|
||||
||
|
||||
( SYSM_GetWork()->rtcStatus & 0x01 )
|
||||
#endif
|
||||
) { // RTCの異常を検出したら、rtc入力フラグ&rtcOffsetを0にしてNVRAMに書き込み。
|
||||
OS_TPrintf("\"RTC reset\" or \"Illegal RTC data\" detect!\n");
|
||||
@ -662,10 +699,6 @@ static void SYSMi_CheckRTC( void )
|
||||
}
|
||||
}
|
||||
|
||||
BOOL SYSM_IsExistCard( void )
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//======================================================================
|
||||
// デバッグ
|
||||
|
||||
@ -853,9 +853,9 @@ static void CallbackChild_MB( u32 status, void *arg )
|
||||
|
||||
case MB_COMM_CSTATE_BOOT_READY: // ブート準備完了
|
||||
OS_Printf("CB: boot ready.\n");
|
||||
// GetSYSMWork()->mb_flag = 1;
|
||||
// GetSYSMWork()->mb_ggid = *(u32 *)( MB_GetBeaconRecvStatus()->list[ pCwork->connectTargetNo ].bssDesc.gameInfo.ggid );
|
||||
// GetSYSMWork()->mb_ggid = MB_GetBeaconRecvStatus()->list[ pCwork->connectTargetNo ].gameInfo.ggid;
|
||||
// SYSM_GetWork()->mb_flag = 1;
|
||||
// SYSM_GetWork()->mb_ggid = *(u32 *)( MB_GetBeaconRecvStatus()->list[ pCwork->connectTargetNo ].bssDesc.gameInfo.ggid );
|
||||
// SYSM_GetWork()->mb_ggid = MB_GetBeaconRecvStatus()->list[ pCwork->connectTargetNo ].gameInfo.ggid;
|
||||
(void)SetPrgNextSeqQue( PSEQ_BOOT_READY );
|
||||
break;
|
||||
|
||||
|
||||
@ -55,7 +55,7 @@ void TwlMain( void )
|
||||
TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ];
|
||||
|
||||
// システムメニュー初期化----------
|
||||
// SYSM_Init( Alloc, Free ); // OS_Initの前でコール。
|
||||
SYSM_Init( Alloc, Free ); // OS_Initの前でコール。
|
||||
|
||||
// OS初期化------------------------
|
||||
OS_Init();
|
||||
@ -77,9 +77,7 @@ void TwlMain( void )
|
||||
InitAllocator( &g_allocator );
|
||||
CMN_InitFileSystem( &g_allocator );
|
||||
|
||||
|
||||
SYSM_Init( Alloc, Free ); // OS_Initの前でコール。
|
||||
// SYSM_ReadParameters();
|
||||
SYSM_ReadParameters();
|
||||
|
||||
// リセットパラメータの取得--------
|
||||
if( SYSM_GetResetParam()->flags.isLogoSkip ) {
|
||||
|
||||
@ -408,7 +408,7 @@ int TP_CalibrationMain( void )
|
||||
}
|
||||
|
||||
if( ( pad.trg & PAD_BUTTON_A ) || tp_ok ) {
|
||||
GetSYSMWork()->isValidTSD = 0;
|
||||
SYSM_GetWork()->isValidTSD = 0;
|
||||
|
||||
s_pTPC->calibTemp.data.raw_x1 = s_pTPC->sample[0].x;
|
||||
s_pTPC->calibTemp.data.raw_y1 = s_pTPC->sample[0].y;
|
||||
|
||||
@ -80,7 +80,7 @@ void SelectLanguageInit( void )
|
||||
PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"Select language." );
|
||||
}
|
||||
|
||||
if( ( GetSYSMWork()->isValidTSD ) ||
|
||||
if( ( SYSM_GetWork()->isValidTSD ) ||
|
||||
( TSD_GetLanguage() >= TWL_LANG_CODE_MAX ) ) {
|
||||
s_langCode = TWL_LANG_ENGLISH;
|
||||
}else {
|
||||
@ -128,7 +128,7 @@ int SelectLanguageMain( void )
|
||||
}
|
||||
|
||||
if( ( pad.trg & PAD_BUTTON_A ) || tp_select ) { // メニュー項目への分岐
|
||||
GetSYSMWork()->isValidTSD = 0;
|
||||
SYSM_GetWork()->isValidTSD = 0;
|
||||
|
||||
TSD_SetLanguage( s_langCode );
|
||||
TSD_SetFlagLanguage( TRUE ); // 言語入力フラグを立てる
|
||||
|
||||
@ -86,7 +86,6 @@ void InputDecimal(int *pTgt, InputNumParam *inpp);
|
||||
static void InputRtcDateTimeInit( int start );
|
||||
static int InputRtcDateTimeMain( void );
|
||||
|
||||
static void TransmitRtcData(DateTimeParam *dtpp, RtcDateTime *rtcp);
|
||||
static void SelectString( int *pTgt, const u8 **const pStrp, InputNumParam *inpp);
|
||||
static void BcdToHex(int *bcdp);
|
||||
static void HexToBcd(int *hexp);
|
||||
@ -114,7 +113,7 @@ void SetRTCInit( void )
|
||||
PutStringUTF16( RETURN_BUTTON_TOP_X, RETURN_BUTTON_TOP_Y, TXT_COLOR_CYAN, (const u16 *)L" RETURN " );
|
||||
|
||||
if( g_initialSet ) {
|
||||
if( GetSYSMWork()->rtcStatus & 0x01) {
|
||||
if( SYSM_GetWork()->rtcStatus & 0x01) {
|
||||
PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"RTC reset is detected!" );
|
||||
}else {
|
||||
PutStringUTF16( 8 * 8, 18 * 8, TXT_COLOR_RED, (const u16 *)L"Set RTC." );
|
||||
@ -380,7 +379,7 @@ static int InputRtcDateTimeMain( void )
|
||||
TSD_SetRTCOffset( SYSM_CalcRTCOffsetAndSetDateTime( &date, &s_pWork->dtp.Time ) );
|
||||
}
|
||||
|
||||
GetSYSMWork()->isValidTSD = 0;
|
||||
SYSM_GetWork()->isValidTSD = 0;
|
||||
TSD_SetFlagDateTime( TRUE ); // RTC入力フラグを立てる。
|
||||
// ::::::::::::::::::::::::::::::::::::::::::::::
|
||||
// TWL設定データファイルへの書き込み
|
||||
|
||||
@ -96,7 +96,7 @@ extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); //
|
||||
// 成功時は、never return.
|
||||
// デバイス制御
|
||||
extern void SYSM_CaribrateTP( void ); // タッチパネルキャリブレーション
|
||||
extern void SYSM_SetBackLightBrightness( void ); // バックライトを制御(本体設定データへの値セーブも行う)
|
||||
extern void SYSM_SetBackLightBrightness( u8 brightness ); // バックライトを制御(本体設定データへの値セーブも行う)
|
||||
|
||||
// 状態チェック
|
||||
extern BOOL SYSM_IsExistCard( void ); // TWL/NTRカードが差さっているか?(アプリは未認証状態)
|
||||
|
||||
@ -19,7 +19,6 @@
|
||||
#define __SYSMENU_WORK_H__
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/rtc.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -32,8 +31,6 @@ extern "C" {
|
||||
|
||||
#endif // SDK_FINALROM
|
||||
|
||||
//#define __DEBUG_SECURITY_CODE // PassMeのセキュリティコード確認用スイッチ
|
||||
|
||||
|
||||
// define data ------------------------------------
|
||||
#define SYSMENU_VER 0x071113 // SystemMenuバージョン
|
||||
@ -42,12 +39,7 @@ extern "C" {
|
||||
| PAD_BUTTON_X | PAD_BUTTON_Y | PAD_BUTTON_R )
|
||||
// 量産工程で使用する初回起動設定をキャンセルするショートカットキー
|
||||
|
||||
|
||||
// bootFlagの値
|
||||
#define BFLG_EXIST_CARD 0x00000001
|
||||
|
||||
|
||||
#define cloneBootMode 1
|
||||
#define CLONE_BOOT_MODE 1
|
||||
#define OTHER_BOOT_MODE 2
|
||||
|
||||
|
||||
@ -55,25 +47,13 @@ extern "C" {
|
||||
// データ型定義
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
// ロック情報
|
||||
typedef struct LockVariable{
|
||||
OSLockWord lock;
|
||||
vu32 value;
|
||||
}LockVariable;
|
||||
|
||||
// RTC日付時刻構造体
|
||||
typedef struct RtcDateTime {
|
||||
RTCDate Date;
|
||||
RTCTime Time;
|
||||
}RtcDateTime;
|
||||
|
||||
// SYSM共有ワーク構造体
|
||||
typedef struct SYSM_work {
|
||||
BOOL isValidTSD; // NITRO設定データ無効フラグ
|
||||
BOOL isOnDebugger; // デバッガ動作か?
|
||||
BOOL isExistCard; // 有効なNTR/TWLカードが存在するか?
|
||||
u16 cardHeaderCrc16; // システムメニューで計算したROMヘッダCRC16
|
||||
u8 CloneBootMode;
|
||||
int cloneBootMode;
|
||||
|
||||
// NTR-IPL2のレガシー 最終的には消すと思う
|
||||
u32 nCardID;
|
||||
@ -88,7 +68,7 @@ typedef struct SYSM_work {
|
||||
#if 1
|
||||
#define SYSM_GetResetParam() ( (ResetParam *)HW_RED_RESERVED )
|
||||
|
||||
#define GetSYSMWork() ( (SYSM_work *)( HW_RED_RESERVED + sizeof(ResetParam) ) )
|
||||
#define SYSM_GetWork() ( (SYSM_work *)( HW_RED_RESERVED + sizeof(ResetParam) ) )
|
||||
#else
|
||||
// SYSMリセットパラメータの取得
|
||||
#define SYSM_GetResetParam() ( (ResetParam *)0x02000100 )
|
||||
@ -100,16 +80,6 @@ typedef struct SYSM_work {
|
||||
// カードROMヘッダワークの取得
|
||||
#define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF )
|
||||
|
||||
|
||||
|
||||
inline void SYSM_SetBootFlag( u32 flag )
|
||||
{
|
||||
#pragma unused( flag )
|
||||
}
|
||||
|
||||
// カードROMヘッダワークの取得
|
||||
#define SYSM_GetCardRomHeader() ( (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF )
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user