mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
アプリ起動時に起動SRLパスとFSマウントパラメータをシステム領域にセットするよう変更。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@174 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
9939d5cd13
commit
79c9c8017e
@ -27,7 +27,7 @@ TWL_ARCHGEN = LIMITED
|
|||||||
TWL_PROC = ARM9
|
TWL_PROC = ARM9
|
||||||
|
|
||||||
SRCS = sysmenu_lib.c sysmenu_card.c sysmenu_util.c gameBoot.c ninLogoFunc.c cmn.c \
|
SRCS = sysmenu_lib.c sysmenu_card.c sysmenu_util.c gameBoot.c ninLogoFunc.c cmn.c \
|
||||||
settingsAPI.c
|
settingsAPI.c mountInfo.c
|
||||||
|
|
||||||
TARGET_LIB = libsysmenu$(TWL_LIBSUFFIX).a
|
TARGET_LIB = libsysmenu$(TWL_LIBSUFFIX).a
|
||||||
|
|
||||||
|
|||||||
133
build/libraries_sysmenu/sysmenu/ARM9/src/mountInfo.c
Normal file
133
build/libraries_sysmenu/sysmenu/ARM9/src/mountInfo.c
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlIPL
|
||||||
|
File: SYSM_lib.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 <twl.h>
|
||||||
|
#include <twl/nam.h>
|
||||||
|
#include <sysmenu.h>
|
||||||
|
|
||||||
|
// define data-----------------------------------------------------------------
|
||||||
|
#define DEFAULT_MOUNT_LIST_NUM 7
|
||||||
|
#define PRV_SAVE_DATA_MOUNT_INDEX 5 // プライベートセーブデータの s_defaultMountInfo リストインデックス
|
||||||
|
#define PUB_SAVE_DATA_MOUNT_INDEX 6 // パブリック セーブデータの s_defaultMountInfo リストインデックス
|
||||||
|
|
||||||
|
// extern data-----------------------------------------------------------------
|
||||||
|
|
||||||
|
// function's prototype--------------------------------------------------------
|
||||||
|
void SYSM_SetBootSRLPath( NAMTitleId titleID );
|
||||||
|
void SYSM_SetMountInfo( NAMTitleId titleID );
|
||||||
|
|
||||||
|
static void SYSMi_ModifySaveDataMount( NAMTitleId titleID );
|
||||||
|
|
||||||
|
// global variable-------------------------------------------------------------
|
||||||
|
|
||||||
|
// static variable-------------------------------------------------------------
|
||||||
|
|
||||||
|
// const data------------------------------------------------------------------
|
||||||
|
|
||||||
|
// デフォルトマウント情報リスト
|
||||||
|
OSMountInfo s_defaultMountList[ DEFAULT_MOUNT_LIST_NUM ] ATTRIBUTE_ALIGN(4) = {
|
||||||
|
// drive device target pertitionIdx resource userPermission rsvA B archive path
|
||||||
|
{ 'A', OS_MOUNT_DEVICE_SD, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "sdmc", "/" },
|
||||||
|
{ 'B', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_WRAM, 0, 0, 0, "nand", "/" }, // ユーザーはこのアーカイブを使えない(RW不可)
|
||||||
|
{ 'C', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 1, OS_MOUNT_RSC_WRAM, 0, 0, 0, "nand2", "/" }, // ユーザーはこのアーカイブを使えない(RW不可)
|
||||||
|
{ 'D', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "shared2", "nand2:/shared2" },
|
||||||
|
{ 'E', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "photo", "nand2:/photo" },
|
||||||
|
{ 'F', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_FILE, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "dataPrv", NULL },
|
||||||
|
{ 'G', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_FILE, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "dataPub", NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
//
|
||||||
|
// マウント情報セット
|
||||||
|
//
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// 起動SRLパスをシステム領域にセット
|
||||||
|
void SYSM_SetBootSRLPath( NAMTitleId titleID )
|
||||||
|
{
|
||||||
|
char path[ FS_FILE_NAME_MAX ];
|
||||||
|
|
||||||
|
// タイトルIDが"0"の時は、ROMと判断する(DSダウンロードプレイの時の挙動は未実装。。。)
|
||||||
|
if( titleID ) {
|
||||||
|
NAM_GetTitleBootContentPath( path, titleID );
|
||||||
|
}else {
|
||||||
|
STD_StrCpy( path, (const char*)"rom:" );
|
||||||
|
}
|
||||||
|
|
||||||
|
STD_CopyLStringZeroFill( (char *)HW_TWL_FS_BOOT_SRL_PATH_BUF, path, OS_MOUNT_PATH_LEN );
|
||||||
|
OS_TPrintf( "boot path : %s\n", (char *)HW_TWL_FS_BOOT_SRL_PATH_BUF );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// システム領域に、ブートするアプリのマウント情報を登録する
|
||||||
|
void SYSM_SetMountInfo( NAMTitleId titleID )
|
||||||
|
{
|
||||||
|
// マウント情報の整理
|
||||||
|
SYSMi_ModifySaveDataMount( titleID ); // セーブデータ
|
||||||
|
// SDは全アプリ解放で良い?
|
||||||
|
// PHOTOは全アプリに解放で良い?
|
||||||
|
|
||||||
|
// マウント情報をシステム領域に書き込み
|
||||||
|
{
|
||||||
|
OSMountInfo *pSrc = s_defaultMountList;
|
||||||
|
OSMountInfo *pDst = (OSMountInfo *)HW_TWL_FS_MOUNT_INFO_BUF;
|
||||||
|
int i;
|
||||||
|
for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) {
|
||||||
|
if( pSrc->drive[ 0 ] ) {
|
||||||
|
MI_CpuCopyFast( pSrc, pDst, sizeof(OSMountInfo) );
|
||||||
|
pDst++;
|
||||||
|
}
|
||||||
|
pSrc++;
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
pDst = (OSMountInfo *)HW_TWL_FS_MOUNT_INFO_BUF;
|
||||||
|
for( i = 0; i < DEFAULT_MOUNT_LIST_NUM; i++ ) {
|
||||||
|
OS_TPrintf( "mount path : %s\n", pDst->path );
|
||||||
|
pDst++;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// タイトルIDをもとにセーブデータ有無を判定して、マウント情報を編集する。
|
||||||
|
static void SYSMi_ModifySaveDataMount( NAMTitleId titleID )
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char saveFilePath[ 2 ][ FS_FILE_NAME_MAX ];
|
||||||
|
OSMountInfo *pMountTgt = &s_defaultMountList[ PRV_SAVE_DATA_MOUNT_INDEX ];
|
||||||
|
|
||||||
|
// セーブデータのファイルパスを取得
|
||||||
|
NAM_GetTitleSaveFilePath( saveFilePath[ 1 ], saveFilePath[ 0 ], titleID );
|
||||||
|
|
||||||
|
// 結果を元にマウント情報を編集。
|
||||||
|
for( i = 0; i < 2; i++ ) {
|
||||||
|
FSFile file[1];
|
||||||
|
FS_InitFile( file );
|
||||||
|
// ※現在は、セーブファイルを開けるかどうかでセーブファイル有無を確認。
|
||||||
|
// 最終的にはTMDの情報を参照する形になる?
|
||||||
|
if( FS_OpenFileEx( file, saveFilePath[ i ], FS_FILEMODE_R) ) {
|
||||||
|
FS_CloseFile( file );
|
||||||
|
STD_CopyLStringZeroFill( pMountTgt->path,
|
||||||
|
saveFilePath[ i ],
|
||||||
|
OS_MOUNT_PATH_LEN );
|
||||||
|
}else {
|
||||||
|
pMountTgt->drive[ 0 ] = 0;
|
||||||
|
}
|
||||||
|
pMountTgt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -16,7 +16,6 @@
|
|||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
#include <twl/nam.h>
|
|
||||||
#include <sysmenu.h>
|
#include <sysmenu.h>
|
||||||
#include <sysmenu/boot/common/boot.h>
|
#include <sysmenu/boot/common/boot.h>
|
||||||
#include "sysmenu_define.h"
|
#include "sysmenu_define.h"
|
||||||
@ -32,6 +31,8 @@ typedef struct BannerCheckParam {
|
|||||||
}BannerCheckParam;
|
}BannerCheckParam;
|
||||||
|
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
|
extern void SYSM_SetMountInfo( NAMTitleId titleID ); // マウント情報のセット
|
||||||
|
extern void SYSM_SetBootSRLPath( NAMTitleId titleID ); // SRL起動パスのセット
|
||||||
|
|
||||||
// function's prototype-------------------------------------------------------
|
// function's prototype-------------------------------------------------------
|
||||||
static BOOL SYSMi_IsDebuggerBannerViewMode( void );
|
static BOOL SYSMi_IsDebuggerBannerViewMode( void );
|
||||||
@ -43,6 +44,8 @@ static BOOL SYSMi_CheckEntryAddress( void );
|
|||||||
static void SYSMi_CheckCardCloneBoot( void );
|
static void SYSMi_CheckCardCloneBoot( void );
|
||||||
static void SYSMi_CheckRTC( void );
|
static void SYSMi_CheckRTC( void );
|
||||||
|
|
||||||
|
static s32 ReadFile(FSFile* pf, void* buffer, s32 size);
|
||||||
|
|
||||||
// global variable-------------------------------------------------------------
|
// global variable-------------------------------------------------------------
|
||||||
void *(*SYSM_Alloc)( u32 size );
|
void *(*SYSM_Alloc)( u32 size );
|
||||||
void (*SYSM_Free )( void *ptr );
|
void (*SYSM_Free )( void *ptr );
|
||||||
@ -67,7 +70,6 @@ static BannerCheckParam s_bannerCheckList[ NTR_BNR_VER_MAX ] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
//
|
//
|
||||||
// <20>‰Šú‰»
|
// <20>‰Šú‰»
|
||||||
@ -475,6 +477,10 @@ OS_TPrintf("RebootSystem failed: cant read file(%d, %d)\n", source[i], len);
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// マウント情報の登録
|
||||||
|
SYSM_SetMountInfo ( pBootTitle->titleID );
|
||||||
|
SYSM_SetBootSRLPath( pBootTitle->titleID );
|
||||||
|
|
||||||
// ‹N“®<E2809C>B
|
// ‹N“®<E2809C>B
|
||||||
BOOT_Ready(); // never return;
|
BOOT_Ready(); // never return;
|
||||||
|
|
||||||
@ -599,7 +605,7 @@ static void SYSMi_ReadCardBannerFile( void )
|
|||||||
BOOL SYSM_IsTWLCard( void );
|
BOOL SYSM_IsTWLCard( void );
|
||||||
BOOL SYSM_IsTWLCard( void )
|
BOOL SYSM_IsTWLCard( void )
|
||||||
{
|
{
|
||||||
return ( SYSM_IsExistCard() && ( SYSM_GetCardRomHeader()->platform_code & PLATFORM_ID_FLAG_TWL ) );
|
return ( SYSM_IsExistCard() && ( SYSM_GetCardRomHeader()->platform_code & PLATFORM_CODE_FLAG_TWL ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -314,7 +314,7 @@ int DS_DownloadPlayMain(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (PAD_DetectFold() == TRUE) { // スリープモードへの遷移
|
if (PAD_DetectFold() == TRUE) { // スリープモードへの遷移
|
||||||
SYSM_GoSleepMode();
|
// SYSM_GoSleepMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
OS_PrintServer(); // ARM7からのプリントデバッグを処理する
|
OS_PrintServer(); // ARM7からのプリントデバッグを処理する
|
||||||
|
|||||||
@ -244,7 +244,7 @@ static BOOL CheckBootStatus(void)
|
|||||||
#ifndef __SYSM_DEBUG
|
#ifndef __SYSM_DEBUG
|
||||||
// if( TSD_IsAutoBoot() ) {
|
// if( TSD_IsAutoBoot() ) {
|
||||||
if( 0 ) {
|
if( 0 ) {
|
||||||
if ( SYSM_IsNITROCard() ) { // NITROカードのみの時はNITRO起動
|
if ( SYSM_IsExistCard() ) { // NITROカードのみの時はNITRO起動
|
||||||
SYSM_SetBootFlag( BFLG_BOOT_NITRO );
|
SYSM_SetBootFlag( BFLG_BOOT_NITRO );
|
||||||
return TRUE; // 「ブート内容決定」でリターン
|
return TRUE; // 「ブート内容決定」でリターン
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ SystemMenu_RED
|
|||||||
|
|
||||||
11/16(金) 1st.リリース予定
|
11/16(金) 1st.リリース予定
|
||||||
|
|
||||||
・ランチャー △
|
・ランチャー
|
||||||
・カードアプリ取得 ×
|
・カードアプリ取得 ×
|
||||||
・TWLカード起動 ×
|
・TWLカード起動 ×
|
||||||
・カード活線挿抜処理 ×
|
・カード活線挿抜処理 ×
|
||||||
@ -13,15 +13,17 @@ SystemMenu_RED
|
|||||||
・ISデバッガ対応 ×
|
・ISデバッガ対応 ×
|
||||||
・ファームウェアとして正規動作 ×
|
・ファームウェアとして正規動作 ×
|
||||||
・アプリ起動時のWRAM-MAP設定 ○
|
・アプリ起動時のWRAM-MAP設定 ○
|
||||||
|
・アプリ起動時のSCFGレジスタロック ×
|
||||||
|
・アプリ起動時のSDカードアクセス可否 △ (とりあえず解放にしておき、セキュリティ面での検討を行う。)
|
||||||
・署名・暗号処理 ×
|
・署名・暗号処理 ×
|
||||||
・鍵管理 ×
|
・鍵管理 ×
|
||||||
・メモリマップFIX ○
|
・メモリマップFIX ○
|
||||||
・NTRコンポーネントパッチ ×
|
・NTRコンポーネントパッチ ×
|
||||||
・本体設定 △
|
・本体設定
|
||||||
・言語選択 ○
|
・言語選択 ○
|
||||||
・TP補正 ○
|
・TP補正 ○
|
||||||
・日付・時刻設定 ○
|
・日付・時刻設定 ○
|
||||||
・ユーザー情報 ×
|
・ユーザー情報 △ (欧州文字、絵文字など一部文字は入力できない)
|
||||||
・その他設定 ×
|
・その他設定 ×
|
||||||
・NANDへの保存 ○
|
・NANDへの保存 ○
|
||||||
・NTR側(NVRAM)への保存 ○
|
・NTR側(NVRAM)への保存 ○
|
||||||
@ -38,10 +40,10 @@ SystemMenu_RED
|
|||||||
・アドレスFIX ×
|
・アドレスFIX ×
|
||||||
・ランチャー⇔NANDアプリ間パラメータ引渡し ×
|
・ランチャー⇔NANDアプリ間パラメータ引渡し ×
|
||||||
・本体設定データなどの情報 ×
|
・本体設定データなどの情報 ×
|
||||||
・NAND,SDマウント情報(アクセス制限) ×
|
・NAND,SDマウント情報(アクセス制限) ○
|
||||||
・アプリからのHWリセット時パラメータ ×
|
・アプリからのHWリセット時パラメータ ×
|
||||||
・DSダウンロードプレイの情報 ×
|
・DSダウンロードプレイの情報 ×
|
||||||
・NAND内オーバーレイ&FS △
|
・NAND内オーバーレイ&FS △ (nand_app_hack.hのFS_IdentifyTitle()を起動時に呼ぶ)
|
||||||
・共有リソースアクセス ×
|
・共有リソースアクセス ×
|
||||||
・タイトル外部リソースアクセス ×
|
・タイトル外部リソースアクセス ×
|
||||||
・NANDアプリデバッグ対応 × (現状カードアプリとしてデバッグ)
|
・NANDアプリデバッグ対応 × (現状カードアプリとしてデバッグ)
|
||||||
|
|||||||
Binary file not shown.
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
#include <twl/os/common/format_rom.h>
|
#include <twl/os/common/format_rom.h>
|
||||||
|
#include <twl/nam.h>
|
||||||
#include <sysmenu/banner.h>
|
#include <sysmenu/banner.h>
|
||||||
#include <sysmenu/sysmenu_work.h>
|
#include <sysmenu/sysmenu_work.h>
|
||||||
#include <sysmenu/settings.h>
|
#include <sysmenu/settings.h>
|
||||||
@ -50,8 +51,8 @@ typedef struct TitleFlags {
|
|||||||
|
|
||||||
// タイトル情報
|
// タイトル情報
|
||||||
typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。
|
typedef struct TitleProperty { // この情報は、ランチャー時には認証通ってないけど、起動時には認証通すので大丈夫だろう。
|
||||||
u64 titleID; // タイトルID(TitleID_Hiで起動メディアは判定できる?)
|
NAMTitleId titleID; // タイトルID(TitleID_Hiで起動メディアは判定できる?)
|
||||||
void *pBanner; // バナーへのポインタ(固定長フォーマットなら偽造されても大丈夫だろう。)
|
void *pBanner; // バナーへのポインタ(固定長フォーマットなら偽造されても大丈夫だろう。)
|
||||||
TitleFlags flags;
|
TitleFlags flags;
|
||||||
u8 rsv[ 2 ];
|
u8 rsv[ 2 ];
|
||||||
}TitleProperty;
|
}TitleProperty;
|
||||||
@ -59,7 +60,7 @@ typedef struct TitleProperty { //
|
|||||||
|
|
||||||
// リセットパラメータ
|
// リセットパラメータ
|
||||||
typedef struct ResetParam {
|
typedef struct ResetParam {
|
||||||
u64 bootTitleID; // 起動するタイトルがあるか?あるならそのタイトルID
|
NAMTitleId bootTitleID; // 起動するタイトルがあるか?あるならそのタイトルID
|
||||||
u32 rsv_A;
|
u32 rsv_A;
|
||||||
TitleFlags flags;
|
TitleFlags flags;
|
||||||
u8 rsv_B[ 2 ];
|
u8 rsv_B[ 2 ];
|
||||||
@ -123,12 +124,6 @@ extern u32 SYSM_GetDayNum( u32 year, u32 month ); //
|
|||||||
extern BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる
|
extern BOOL SYSM_IsLeapYear100( u32 year ); // 指定された年がうるう年か調べる
|
||||||
|
|
||||||
|
|
||||||
void SYSM_GoSleepMode( void );
|
|
||||||
inline BOOL SYSM_IsNITROCard( void )
|
|
||||||
{
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user