・SDKリビジョン3243に対応。(多分大丈夫のはず)

esライブラリをeseではなくBroadOnの正式版を使用するようにする。
・ドキュメント更新。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@396 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yosiokat 2007-12-25 06:28:03 +00:00
parent 90c67b36a5
commit 2e49f54eb1
17 changed files with 63 additions and 63 deletions

View File

@ -91,7 +91,7 @@ MAKETAD ?= $(TWLSDK_ROOT)/tools/bin/makeTad.pl
### Global Library resettings
GINCLUDES := $(SYSMENU_INCDIR) $(GINCLUDES) $(ES_ROOT)/include
GINCLUDES := $(SYSMENU_INCDIR) $(GINCLUDES) $(ES_ROOT)/twl/include
GLIBRARY_DIRS := $(SYSMENU_LIBDIR) $(GLIBRARY_DIRS)
GLIBRARIES := $(SYSMENU_LIBS) $(GLIBRARIES)

View File

@ -25,7 +25,7 @@ include $(NITROSYSTEM_ROOT)/build/buildtools/modulerules
%.tad: $(BINDIR)/$(TARGET_BIN)
$(MAKETAD) $< $@
$(MAKETAD) $< -o $@
# .rbin
$(BINDIR)/$(TARGET_BIN_BASENAME).rbin: $(OBJS)

View File

@ -68,7 +68,7 @@
*---------------------------------------------------------------------------*/
static void SetSCFGWork( void );
static void ResetRTC( void );
static void ReadResetParameter( void );
static void ReadLauncherParameter( void );
static void PrintDebugInfo(void);
static OSHeapHandle InitializeAllocateSystem(void);
static void InitializeFatfs(void);
@ -111,8 +111,8 @@ TwlSpMain(void)
OS_InitTick();
PrintDebugInfo();
// Cold/Hotスタート判定
ReadResetParameter();
// ランチャーパラメター取得(Cold/Hotスタート判定含む)
ReadLauncherParameter();
// RTCリセット
ResetRTC(); // 330usくらい
@ -249,14 +249,14 @@ static void ResetRTC( void )
}
// Hot/Coldスタート判定およびリセットパラメータのリード
void ReadResetParameter( void )
// ランチャーパラメータのリードおよびHot/Coldスタート判定
void ReadLauncherParameter( void )
{
BOOL hot;
SYSMi_GetWork()->isValidResetParam = OS_ReadResetParameter( (ResetParam *)&(SYSMi_GetWork()->resetParam), &hot );
SYSMi_GetWork()->isValidLauncherParam = OS_ReadLauncherParameter( (LauncherParam *)&(SYSMi_GetWork()->launcherParam), &hot );
SYSMi_GetWork()->isHotStart = hot;
// メインメモリのリセットパラメータをクリアしておく
MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 );
MI_CpuClear32( SYSMi_GetLauncherParamAddr(), 0x100 );
}

View File

@ -170,13 +170,13 @@ TitleProperty *SYSM_ReadParameters( void )
// リセットパラメータの判定リセットパラメータが有効かどうかは、ARM7でやってくれている
//-----------------------------------------------------
{
if( SYSM_GetResetParamBody()->v1.flags.isLogoSkip || // ロゴデモスキップ?
if( SYSM_GetLauncherParamBody()->v1.flags.isLogoSkip || // ロゴデモスキップ?
SYSMi_IsDebuggerBannerViewMode() ) {
SYSM_SetLogoDemoSkip( TRUE );
}
if( SYSM_GetResetParamBody()->v1.bootTitleID ) { // アプリ直接起動の指定があったらロゴデモを飛ばして指定アプリ起動
pBootTitle = (TitleProperty *)&SYSM_GetResetParamBody()->v1;
if( SYSM_GetLauncherParamBody()->v1.bootTitleID ) { // アプリ直接起動の指定があったらロゴデモを飛ばして指定アプリ起動
pBootTitle = (TitleProperty *)&SYSM_GetLauncherParamBody()->v1;
}
}
@ -448,10 +448,10 @@ int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int listNum )
}
// リセットパラメータの取得
const ResetParamBody *SYSM_GetResetParamBody( void )
// ランチャーパラメータの取得
const LauncherParamBody *SYSM_GetLauncherParamBody( void )
{
return (const ResetParamBody *)&SYSMi_GetWork()->resetParam.body;
return (const LauncherParamBody *)&SYSMi_GetWork()->launcherParam.body;
}

View File

@ -17,12 +17,12 @@
#----------------------------------------------------------------------------
SUBDIRS = \
../../../libraries_sysmenu/reloc_info \
../../../libraries_sysmenu/sysmenu \
../../../libraries_sysmenu/settings \
../../../libraries_sysmenu/boot \
../../../libraries_sysmenu/hotsw \
../../../components/hyena.TWL
# ../../../libraries_sysmenu/reloc_info \
# ../../../libraries_sysmenu/sysmenu \
# ../../../libraries_sysmenu/settings \
# ../../../libraries_sysmenu/boot \
# ../../../libraries_sysmenu/hotsw \
# ../../../components/hyena.TWL
#----------------------------------------------------------------------------

View File

@ -197,7 +197,7 @@ int MachineSettingMain( void )
{
BOOL tp_select;
BootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
LauncherBootFlags tempflag = {TRUE, 0, TRUE, FALSE, FALSE, FALSE, 0};
ReadTP();
@ -218,7 +218,7 @@ int MachineSettingMain( void )
DrawMenu( s_csr, &s_settingParam );
if( pad.trg & PAD_BUTTON_START ) {
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
}
if( ( pad.trg & PAD_BUTTON_A ) || ( tp_select ) ) { // メニュー項目への分岐
@ -250,7 +250,7 @@ int MachineSettingMain( void )
break;
case 6:
//pictochat起動テスト
OS_SetResetParamAndResetHardware( 0, 0x0001000150434854, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, 0x0001000150434854, &tempflag );
}
}
}

View File

@ -499,10 +499,10 @@ static void MenuScene(void)
MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1));
}
//BN“®
OS_SetResetParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
break;
case 2:
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
//<2F>ÄN“®
break;
}

View File

@ -157,12 +157,12 @@ static void MenuScene(void)
// アプリ専用部分のセット
MI_CpuCopy8("-r", arginfo->buf, 3);
//呼び出し元アプリ起動
OS_SetResetParamAndResetHardware( 0, (u64)0x0001000100000000 + invGameCode, &tempflag );
//OS_SetResetParamAndResetHardware( 0, (u64)0x00010001434f5041, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, (u64)0x0001000100000000 + invGameCode, &tempflag );
//OS_SetLauncherParamAndResetHardware( 0, (u64)0x00010001434f5041, &tempflag );
}
break;
case 1:
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
//再起動
break;
}

View File

@ -499,10 +499,10 @@ static void MenuScene(void)
MI_CpuCopy8(s_work.parameter, arginfo->buf, 2*(PARAM_LENGTH+1));
}
//BN“®
OS_SetResetParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, 0x00010001434f5042, &tempflag );
break;
case 2:
OS_SetResetParamAndResetHardware( 0, NULL, &tempflag );
OS_SetLauncherParamAndResetHardware( 0, NULL, &tempflag );
//<2F>ÄN“®
break;
}

View File

@ -65,7 +65,7 @@
*---------------------------------------------------------------------------*/
static void SetSCFGWork( void );
static void ReadResetParameter( void );
static void ReadLauncherParameter( void );
static void PrintDebugInfo(void);
static OSHeapHandle InitializeAllocateSystem(void);
static void InitializeFatfs(void);
@ -119,7 +119,7 @@ TwlSpMain(void)
ReadUserInfo();
// Cold/Hotスタート判定
ReadResetParameter();
ReadLauncherParameter();
// [TODO:] カード電源ONして、ROMヘッダのみリードチェックくらいはやっておきたい
@ -222,11 +222,11 @@ static BOOL IsEnableJTAG( void )
return value ? TRUE : FALSE;
}
// Hot/Coldスタート判定およびリセットパラメータのリード
// ランチャーパラメータのリードおよびHot/Coldスタート判定
#define MCU_RESET_VALUE_BUF_ENABLE_MASK 0x80000000
#define MCU_RESET_VALUE_OFS 0
#define MCU_RESET_VALUE_LEN 1
void ReadResetParameter( void )
void ReadLauncherParameter( void )
{
if( ( *(u32 *)HW_RESET_PARAMETER_BUF & MCU_RESET_VALUE_BUF_ENABLE_MASK ) == 0 ) {
(void)MCU_GetFreeRegisters( MCU_RESET_VALUE_OFS, (u8 *)HW_RESET_PARAMETER_BUF, MCU_RESET_VALUE_LEN );
@ -240,20 +240,20 @@ void ReadResetParameter( void )
SYSMi_GetWork()->isHotStart = FALSE;
}else {
SYSMi_GetWork()->isHotStart = TRUE;
// リセットパラメータ有効判定
if( ( STD_StrNCmp( (const char *)&SYSMi_GetResetParamAddr()->header.magicCode,
SYSM_RESET_PARAM_MAGIC_CODE,
SYSM_RESET_PARAM_MAGIC_CODE_LEN ) == 0 ) &&
( SYSMi_GetResetParamAddr()->header.bodyLength > 0 ) &&
( SYSMi_GetResetParamAddr()->header.crc16 == SVC_GetCRC16( 65535, &SYSMi_GetResetParamAddr()->body, SYSMi_GetResetParamAddr()->header.bodyLength ) )
// ランチャーパラメータ有効判定
if( ( STD_StrNCmp( (const char *)&SYSMi_GetLauncherParamAddr()->header.magicCode,
SYSM_LAUNCHER_PARAM_MAGIC_CODE,
SYSM_LAUNCHER_PARAM_MAGIC_CODE_LEN ) == 0 ) &&
( SYSMi_GetLauncherParamAddr()->header.bodyLength > 0 ) &&
( SYSMi_GetLauncherParamAddr()->header.crc16 == SVC_GetCRC16( 65535, &SYSMi_GetLauncherParamAddr()->body, SYSMi_GetLauncherParamAddr()->header.bodyLength ) )
) {
// リセットパラメータが有効なら、ワークに退避
MI_CpuCopy32 ( SYSMi_GetResetParamAddr(), &SYSMi_GetWork()->resetParam, sizeof(ResetParam) );
SYSMi_GetWork()->isValidResetParam = TRUE;
// ランチャーパラメータが有効なら、ワークに退避
MI_CpuCopy32 ( SYSMi_GetLauncherParamAddr(), &SYSMi_GetWork()->launcherParam, sizeof(LauncherParam) );
SYSMi_GetWork()->isValidLauncherParam = TRUE;
}
}
// メインメモリのリセットパラメータをクリアしておく
MI_CpuClear32( SYSMi_GetResetParamAddr(), 0x100 );
// メインメモリのランチャーパラメータをクリアしておく
MI_CpuClear32( SYSMi_GetLauncherParamAddr(), HW_PARAM_LAUNCH_PARAM_SIZE );
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -50,29 +50,29 @@ typedef struct BootFlags {
// リセットパラメータ ヘッダ
typedef struct ResetParameterHeader {
typedef struct LauncherParameterHeader {
u32 magicCode; // SYSM_RESET_PARAM_MAGIC_CODEが入る
u8 type; // タイプによってBodyを判別する。
u8 bodyLength; // bodyの長さ
u16 crc16; // bodyのCRC16
}ResetParamHeader;
}LauncherParamHeader;
// リセットパラメータ ボディ
typedef union ResetParamBody {
typedef union LauncherParamBody {
struct { // ※とりあえず最初はTitlePropertyとフォーマットを合わせておく
NAMTitleId bootTitleID; // リセット後にダイレクト起動するタイトルID
BootFlags flags; // リセット時のランチャー動作フラグ
u8 rsv[ 4 ]; // 予約
}v1;
}ResetParamBody;
}LauncherParamBody;
// リセットパラメータ
typedef struct ResetParam {
ResetParamHeader header;
ResetParamBody body;
}ResetParam;
typedef struct LauncherParam {
LauncherParamHeader header;
LauncherParamBody body;
}LauncherParam;
// function's prototype------------------------------------

View File

@ -53,10 +53,10 @@ typedef enum PlatformCode {
// タイトル情報
typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。
NAMTitleId titleID; // タイトルIDTitleID_Hiで起動メディアは判定できる
BootFlags flags; // ブート時のランチャー動作フラグ
TWLBannerFile *pBanner; // バナーへのポインタ(固定長フォーマットなら偽造されても大丈夫だろう。)
typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。
NAMTitleId titleID; // タイトルIDTitleID_Hiで起動メディアは判定できる
LauncherBootFlags flags; // ブート時のランチャー動作フラグ
TWLBannerFile *pBanner; // バナーへのポインタ(固定長フォーマットなら偽造されても大丈夫だろう。)
}TitleProperty;
// アプリ認証結果
@ -102,7 +102,7 @@ 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 ResetParamBody *SYSM_GetResetParamBody( void ); // リセットパラメータの取得
extern const LauncherParamBody *SYSM_GetLauncherParamBody( void ); // リセットパラメータの取得
// 本体設定データアクセス
extern BOOL SYSM_ReadTWLSettingsFile( void ); // TWL設定データのリード

View File

@ -54,7 +54,7 @@ typedef struct SYSM_work {
Relocate_Info romRelocateInfo[RELOCATE_INFO_NUM]; // ROM再配置情報arm9,arm7それぞれltdとflxで最大4つ
vu32 isARM9Start :1; // ARM9スタートフラグ
vu32 isHotStart :1; // Hot/Coldスタート判定
vu32 isValidResetParam :1; // リセットパラメータ有効
vu32 isValidLauncherParam :1; // リセットパラメータ有効
vu32 isValidTSD :1; // NITRO設定データ無効フラグ
vu32 isLogoSkip :1; // ロゴデモスキップ
vu32 isOnDebugger :1; // デバッガ動作か?
@ -79,7 +79,7 @@ typedef struct SYSM_work {
int cloneBootMode;
u32 nCardID; // カードID
ResetParam resetParam;
LauncherParam launcherParam;
// NTR-IPL2のレガシー 最終的には消すと思う
BOOL enableCardNormalOnly;
@ -106,8 +106,8 @@ typedef struct SDKBootCheckInfo{
//----------------------------------------------------------------------
// SYSM共有ワーク領域のアドレス獲得
//----------------------------------------------------------------------
// SYSMリセットパラメータアドレスの取得※ライブラリ向け。ARM9側はSYSM_GetResetParamを使用して下さい。
#define SYSMi_GetResetParamAddr() ( (ResetParam *)HW_PARAM_LAUNCH_PARAM )
// SYSMリセットパラメータアドレスの取得※ライブラリ向け。ARM9側はSYSM_GetLauncherParamを使用して下さい。
#define SYSMi_GetLauncherParamAddr() ( (LauncherParam *)HW_PARAM_LAUNCH_PARAM )
// SYSM共有ワークの取得
#define SYSMi_GetWork() ( (SYSM_work *)HW_RED_RESERVED )