From 5c183b6f1004662755b79d3b13569c7606ccb2f4 Mon Sep 17 00:00:00 2001 From: yosiokat Date: Wed, 30 Jan 2008 01:11:39 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=B3=E3=83=9F=E3=83=83=E3=83=88=E5=BF=98?= =?UTF-8?q?=E3=82=8C=E3=81=AE=E4=BF=AE=E6=AD=A3=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@543 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/common/src/status.c | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 build/libraries_sysmenu/sysmenu/common/src/status.c diff --git a/build/libraries_sysmenu/sysmenu/common/src/status.c b/build/libraries_sysmenu/sysmenu/common/src/status.c new file mode 100644 index 00000000..dcc97297 --- /dev/null +++ b/build/libraries_sysmenu/sysmenu/common/src/status.c @@ -0,0 +1,147 @@ +/*---------------------------------------------------------------------------* + Project: TwlIPL + File: status.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:: $ + $Rev$ + $Author$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include "internal_api.h" + +// define data----------------------------------------------------------------- +// extern data----------------------------------------------------------------- +// function's prototype------------------------------------------------------- +static int SYSMi_IsValidCard( void ); +// global variable------------------------------------------------------------- +// static variable------------------------------------------------------------- +// const data------------------------------------------------------------------ + + +// ランチャーパラメータの取得 +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デバッガのバナービューモード起動かどうか? +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カードなし + } +} + + +// エントリアドレスの正当性チェック +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"); + return FALSE; + } + OS_TPrintf("entry address valid.\n"); + return TRUE; +}