mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
menu_launcher/sdmc_launcherの更新
・NANDコンテキストをファームで共有メモリにコピーするようにした ・FATFSの許可アーカイブリストの場所を指定するようにした ・FSのうち、sdmc_launcherでのみ使用するコードを分離した ・共有メモリのFS用バッファをいろいろ使うようにした(rollback) ・利用後の共有メモリのFS用バッファを消すようにした ・アドレスの変わらないポインタにconstを付けた(void *constのように) git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@931 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
9c68d56d3f
commit
bbb6bc01a7
@ -260,7 +260,7 @@ void TwlMain( void )
|
||||
// 3: after PostInit
|
||||
PUSH_PROFILE();
|
||||
|
||||
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE);
|
||||
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE);
|
||||
// 4: after STD_CopyString
|
||||
PUSH_PROFILE();
|
||||
|
||||
|
||||
@ -21,7 +21,9 @@
|
||||
void FATFS_InitFIRM( void )
|
||||
{
|
||||
MI_CpuClearFast( (void*)HW_FIRM_FATFS_COMMAND_BUFFER, HW_FIRM_FATFS_COMMAND_BUFFER_SIZE );
|
||||
MI_CpuClearFast( (void*)HW_FIRM_FATFS_ARCHNAME_LIST, HW_FIRM_FATFS_ARCHNAME_LIST_SIZE );
|
||||
FATFSiCommandBuffer = (void*)HW_FIRM_FATFS_COMMAND_BUFFER;
|
||||
FATFSiArcnameList = (void*)HW_FIRM_FATFS_ARCHNAME_LIST;
|
||||
FATFS_Init();
|
||||
}
|
||||
|
||||
|
||||
@ -32,7 +32,7 @@ LINCLUDES = \
|
||||
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include \
|
||||
$(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7
|
||||
|
||||
SRCS = fs_firm.c fs_loader.c
|
||||
SRCS = fs_firm.c fs_firm_ex.c fs_loader.c
|
||||
|
||||
|
||||
TARGET_LIB = libfs_sp$(FIRM_LIBSUFFIX).a
|
||||
|
||||
@ -114,62 +114,8 @@ void FS_InitMountInfo( BOOL nand, BOOL sdmc )
|
||||
*(u32*)dest = 0;
|
||||
}
|
||||
*(u8*)HW_TWL_RED_LAUNCHER_VER = 1;
|
||||
STD_CopyString( "nand:/sys/HWINFO_S.dat", (void*)HW_FIRM_BOOT_SRL_PATH_BUF ); // dummy for firm
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_SetMountInfoForSrl
|
||||
|
||||
Description: set mount info for srl file
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void FS_SetMountInfoForSrl( void )
|
||||
{
|
||||
const OSMountInfo defaultMountList[] ATTRIBUTE_ALIGN(4) = {
|
||||
// drive device target pertitionIdx resource userPermission rsvA B archive path
|
||||
{ 'A', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_WRAM, 0, 0, 0, "nand", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
|
||||
{ 'B', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 1, OS_MOUNT_RSC_WRAM, 0, 0, 0, "nand2", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
|
||||
{ 'C', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "content", NULL }, // Write不可
|
||||
{ 'D', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "shared1", "nand:/shared1" }, // Write不可
|
||||
{ 'E', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "shared2", "nand:/shared2" },
|
||||
{ 'F', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 1, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "photo", "nand2:/photo" },
|
||||
{ 'G', 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 }, // NANDにセーブデータがないアプリの場合は、マウントされない。
|
||||
{ 'H', 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 }, // NANDにセーブデータがないアプリの場合は、マウントされない。
|
||||
{ 'I', OS_MOUNT_DEVICE_SD, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "sdmc", "/" },
|
||||
};
|
||||
#define NAND_MOUNT_INDEX 0
|
||||
#define NAND2_MOUNT_INDEX 1
|
||||
#define CONTENT_MOUNT_INDEX 2
|
||||
const ROM_Header_Short* const rhs = HW_TWL_ROM_HEADER_BUF;
|
||||
OSMountInfo* const dest = (OSMountInfo*)HW_FIRM_MOUNT_INFO_BUF;
|
||||
|
||||
MI_CpuCopy8(defaultMountList, dest, sizeof(defaultMountList));
|
||||
// nandアプリならパスを追加
|
||||
if ( *(char*)HW_FIRM_BOOT_SRL_PATH_BUF )
|
||||
{
|
||||
const char* lastpath = STD_SearchCharReverse( (char*)HW_FIRM_BOOT_SRL_PATH_BUF, '/' );
|
||||
if (lastpath && *(char*)(lastpath-1) != ':')
|
||||
{
|
||||
u32 len = (u32)(lastpath - (char*)HW_FIRM_BOOT_SRL_PATH_BUF);
|
||||
if (len > OS_MOUNT_PATH_LEN)
|
||||
{
|
||||
len = OS_MOUNT_PATH_LEN;
|
||||
}
|
||||
MI_CpuCopy8((char*)HW_FIRM_BOOT_SRL_PATH_BUF, dest[CONTENT_MOUNT_INDEX].path, len);
|
||||
if (len != OS_MOUNT_PATH_LEN)
|
||||
{
|
||||
((char*)HW_FIRM_BOOT_SRL_PATH_BUF)[len] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
// secureアプリならアクセス許可
|
||||
if ( rhs->titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK )
|
||||
{
|
||||
dest[NAND_MOUNT_INDEX].userPermission = dest[NAND2_MOUNT_INDEX].userPermission = (OS_MOUNT_USR_R|OS_MOUNT_USR_W);
|
||||
}
|
||||
*(char*)HW_FIRM_BOOT_SRL_PATH_BUF = 0;
|
||||
// MI_CpuCopy8("nand:/nandfirm/menu_launcher.srl", (char*)HW_FIRM_BOOT_SRL_PATH_BUF, 0x40);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
@ -183,8 +129,8 @@ void FS_SetMountInfoForSrl( void )
|
||||
*---------------------------------------------------------------------------*/
|
||||
int FS_OpenSrl( void )
|
||||
{
|
||||
u16 fatpath[HW_FIRM_BOOT_SRL_PATH_BUF_SIZE];
|
||||
MI_CpuCopyFast((void*)HW_FIRM_TEMP_SRL_PATH_BUF, (void*)HW_FIRM_BOOT_SRL_PATH_BUF, HW_FIRM_BOOT_SRL_PATH_BUF_SIZE);
|
||||
ConvertPath(fatpath, (void*)HW_FIRM_BOOT_SRL_PATH_BUF, HW_FIRM_BOOT_SRL_PATH_BUF_SIZE);
|
||||
#define BOOT_SRL_PATH_BUF_SIZE (HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_BOOT_SRL_PATH_BUF)
|
||||
u16 fatpath[BOOT_SRL_PATH_BUF_SIZE];
|
||||
ConvertPath(fatpath, (void*)HW_TWL_FS_BOOT_SRL_PATH_BUF, BOOT_SRL_PATH_BUF_SIZE);
|
||||
return FATFSi_rtfs_po_open((u8*)fatpath, 0, 0);
|
||||
}
|
||||
|
||||
76
build/libraries/fs/ARM7/src/fs_firm_ex.c
Normal file
76
build/libraries/fs/ARM7/src/fs_firm_ex.c
Normal file
@ -0,0 +1,76 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL - libraries - fs
|
||||
File: fs_firm_ex.c
|
||||
|
||||
Copyright 2008 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 <firm.h>
|
||||
|
||||
#if 0
|
||||
すべて確実ではないコード
|
||||
本来ならメインメモリ辺りにデータを置き、REBOOT内部でコピーする必要がある
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_SetMountInfoForSrl
|
||||
|
||||
Description: set mount info for srl file
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void FS_SetMountInfoForSrl( void )
|
||||
{
|
||||
const OSMountInfo defaultMountList[] ATTRIBUTE_ALIGN(4) = {
|
||||
// drive device target pertitionIdx resource userPermission rsvA B archive path
|
||||
{ 'A', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_WRAM, 0, 0, 0, "nand", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
|
||||
{ 'B', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_ROOT, 1, OS_MOUNT_RSC_WRAM, 0, 0, 0, "nand2", "/" }, // ユーザーアプリはこのアーカイブではR/W不可
|
||||
{ 'C', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "content", NULL }, // Write不可
|
||||
{ 'D', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R), 0, 0, "shared1", "nand:/shared1" }, // Write不可
|
||||
{ 'E', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "shared2", "nand:/shared2" },
|
||||
{ 'F', OS_MOUNT_DEVICE_NAND, OS_MOUNT_TGT_DIR, 1, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "photo", "nand2:/photo" },
|
||||
{ 'G', 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 }, // NANDにセーブデータがないアプリの場合は、マウントされない。
|
||||
{ 'H', 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 }, // NANDにセーブデータがないアプリの場合は、マウントされない。
|
||||
{ 'I', OS_MOUNT_DEVICE_SD, OS_MOUNT_TGT_ROOT, 0, OS_MOUNT_RSC_MMEM, (OS_MOUNT_USR_R|OS_MOUNT_USR_W), 0, 0, "sdmc", "/" },
|
||||
};
|
||||
#define NAND_MOUNT_INDEX 0
|
||||
#define NAND2_MOUNT_INDEX 1
|
||||
#define CONTENT_MOUNT_INDEX 2
|
||||
const ROM_Header_Short* const rhs = HW_TWL_ROM_HEADER_BUF;
|
||||
const char* const srl = HW_TWL_FS_BOOT_SRL_PATH_BUF;
|
||||
OSMountInfo* dest = (OSMountInfo *)HW_TWL_FS_MOUNT_INFO_BUF;
|
||||
|
||||
MI_CpuCopy8(defaultMountList, dest, sizeof(defaultMountList));
|
||||
// nandアプリならパスを追加
|
||||
if ( *srl )
|
||||
{
|
||||
const char* lastpath = STD_SearchCharReverse( srl, '/' );
|
||||
u32 len = (u32)(lastpath - srl);
|
||||
if (len > OS_MOUNT_PATH_LEN)
|
||||
{
|
||||
len = OS_MOUNT_PATH_LEN;
|
||||
}
|
||||
MI_CpuCopy8(srl, dest[CONTENT_MOUNT_INDEX].path, len);
|
||||
if (len != OS_MOUNT_PATH_LEN)
|
||||
{
|
||||
dest[CONTENT_MOUNT_INDEX].path[len] = 0;
|
||||
}
|
||||
}
|
||||
// secureアプリならアクセス許可
|
||||
if ( rhs->titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK )
|
||||
{
|
||||
dest[NAND_MOUNT_INDEX].userPermission = dest[NAND2_MOUNT_INDEX].userPermission = (OS_MOUNT_USR_R|OS_MOUNT_USR_W);
|
||||
}
|
||||
}
|
||||
@ -175,7 +175,7 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId)
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrl
|
||||
|
||||
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
|
||||
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||
|
||||
Arguments: titleId title id for srl file
|
||||
|
||||
@ -184,7 +184,7 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId)
|
||||
BOOL FS_ResolveSrl( OSTitleId titleId )
|
||||
{
|
||||
if ( ES_ERR_OK != ES_InitLib() ||
|
||||
ES_ERR_OK != ES_GetContentPath(titleId, CONTENT_INDEX_BOOT, (char*)HW_FIRM_TEMP_SRL_PATH_BUF) ||
|
||||
ES_ERR_OK != ES_GetContentPath(titleId, CONTENT_INDEX_BOOT, (char*)HW_TWL_FS_BOOT_SRL_PATH_BUF) ||
|
||||
ES_ERR_OK != ES_CloseLib() )
|
||||
{
|
||||
return FALSE;
|
||||
@ -195,7 +195,7 @@ BOOL FS_ResolveSrl( OSTitleId titleId )
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrlUnsecured
|
||||
|
||||
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
|
||||
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||
without almost security check
|
||||
|
||||
Arguments: titleId title id for srl file
|
||||
@ -204,7 +204,7 @@ BOOL FS_ResolveSrl( OSTitleId titleId )
|
||||
*---------------------------------------------------------------------------*/
|
||||
BOOL FS_ResolveSrlUnsecured( OSTitleId titleId )
|
||||
{
|
||||
if ( !FS_GetTitleBootContentPathFast((char*)HW_FIRM_TEMP_SRL_PATH_BUF, titleId) )
|
||||
if ( !FS_GetTitleBootContentPathFast((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, titleId) )
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <firm/os.h>
|
||||
#include <firm/fs.h>
|
||||
#include "reboot.h"
|
||||
|
||||
extern void SDK_STATIC_START(void); // static and bss start address
|
||||
@ -34,15 +35,15 @@ void OS_BootWithRomHeaderFromFIRM( ROM_Header* rom_header )
|
||||
{
|
||||
#ifdef SDK_ARM9
|
||||
void *entry = rom_header->s.main_entry_address;
|
||||
void *code_buf = (void*)OS_BOOT_CODE_BUF; // 0x023fee00
|
||||
void *stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_DTCM_END - HW_DTCM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
|
||||
void *const code_buf = (void*)OS_BOOT_CODE_BUF; // 0x023fee00
|
||||
void *const stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_DTCM_END - HW_DTCM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
|
||||
#else
|
||||
void *entry = rom_header->s.sub_entry_address;
|
||||
void *code_buf = (void*)OS_BOOT_CODE_BUF; // 0x03fff600
|
||||
void *stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_WRAM_AREA_END - HW_PRV_WRAM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
|
||||
void *const code_buf = (void*)OS_BOOT_CODE_BUF; // 0x03fff600
|
||||
void *const stack_top = (void*)OS_BOOT_STACK_TOP; // (HW_WRAM_AREA_END - HW_PRV_WRAM_SYSRV_SIZE - HW_SVC_STACK_SIZE)
|
||||
#endif
|
||||
void *wram_reg = rom_header->s.main_wram_config_data;
|
||||
REBOOTTarget target = REBOOT_TARGET_TWL_SECURE;
|
||||
void *const wram_reg = rom_header->s.main_wram_config_data;
|
||||
REBOOTTarget target = rom_header->s.titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK ? REBOOT_TARGET_TWL_SECURE : (rom_header->s.titleID_Hi & TITLE_ID_HI_APP_TYPE_MASK ? REBOOT_TARGET_TWL_SYSTEM : REBOOT_TARGET_TWL_APP);
|
||||
BOOL scfg = TRUE; // no touch
|
||||
BOOL jtag = FALSE; // no touch
|
||||
static u32 mem_list[32];
|
||||
@ -80,10 +81,25 @@ void OS_BootWithRomHeaderFromFIRM( ROM_Header* rom_header )
|
||||
#endif // SDK_ARM7
|
||||
mem_list[i++] = NULL;
|
||||
// copy forward
|
||||
#ifdef SDK_ARM7
|
||||
if ( *(char*)HW_TWL_FS_MOUNT_INFO_BUF )
|
||||
{
|
||||
mem_list[i++] = HW_TWL_FS_MOUNT_INFO_BUF;
|
||||
mem_list[i++] = (u32)rom_header->s.sub_mount_info_ram_address;
|
||||
mem_list[i++] = HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_MOUNT_INFO_BUF;
|
||||
}
|
||||
#endif
|
||||
mem_list[i++] = NULL;
|
||||
// copy backward
|
||||
mem_list[i++] = NULL;
|
||||
// post clear
|
||||
#ifdef SDK_ARM7
|
||||
if ( *(char*)HW_TWL_FS_MOUNT_INFO_BUF )
|
||||
{
|
||||
mem_list[i++] = HW_TWL_FS_MOUNT_INFO_BUF;
|
||||
mem_list[i++] = HW_TWL_ROM_HEADER_BUF - HW_TWL_FS_MOUNT_INFO_BUF;
|
||||
}
|
||||
#endif
|
||||
mem_list[i++] = NULL;
|
||||
SDK_ASSERT(i <= sizeof(mem_list)/sizeof(mem_list[0]));
|
||||
#ifdef FIRM_USE_TWLSDK_KEYS
|
||||
@ -128,6 +144,10 @@ BOOL OSi_FromBromToMenu( void )
|
||||
result = FALSE;
|
||||
}
|
||||
}
|
||||
#if SDK_ARM7
|
||||
// copy nand context
|
||||
MI_CpuCopyFast( &fromBromBuf->SDNandContext, (void*)HW_SD_NAND_CONTEXT_BUF, sizeof(SDPortContextData) );
|
||||
#endif
|
||||
// clear out of OSFromFirmBuf area
|
||||
MI_CpuClearFast( fromBromBuf->header.max, sizeof(fromBromBuf->header.max) );
|
||||
return result;
|
||||
|
||||
@ -65,8 +65,6 @@ static char* debugPtr = (char*)PRINT_MEMORY_ADDR;
|
||||
#define DMA_FATFS_1 0
|
||||
#define DMA_FATFS_2 1
|
||||
|
||||
extern void* SDNandContext; /* NAND初期化パラメータ */
|
||||
|
||||
static ROM_Header* const rh= (ROM_Header*)HW_TWL_ROM_HEADER_BUF;
|
||||
|
||||
static OSThread idleThread;
|
||||
@ -220,7 +218,6 @@ void TwlSpMain( void )
|
||||
|
||||
// PM_BackLightOn( FALSE );
|
||||
|
||||
SDNandContext = &OSi_GetFromFirmAddr()->SDNandContext;
|
||||
if ( !FATFS_Init( DMA_FATFS_1, DMA_FATFS_2, THREAD_PRIO_FATFS ) )
|
||||
{
|
||||
OS_TPrintf("Failed to call FATFS_Init().\n");
|
||||
|
||||
@ -265,19 +265,19 @@ void TwlMain( void )
|
||||
switch ( PAD_Read() & PAD_KEYPORT_MASK )
|
||||
{
|
||||
case 0:
|
||||
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE);
|
||||
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE);
|
||||
break;
|
||||
case PAD_BUTTON_A:
|
||||
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_A);
|
||||
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_A);
|
||||
break;
|
||||
case PAD_BUTTON_B:
|
||||
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_B);
|
||||
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_B);
|
||||
break;
|
||||
case PAD_BUTTON_L:
|
||||
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_L);
|
||||
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_L);
|
||||
break;
|
||||
case PAD_BUTTON_R:
|
||||
STD_CopyString((char*)HW_FIRM_TEMP_SRL_PATH_BUF, MENU_FILE_R);
|
||||
STD_CopyString((char*)HW_TWL_FS_BOOT_SRL_PATH_BUF, MENU_FILE_R);
|
||||
break;
|
||||
default:
|
||||
OS_TPrintf("Unknown pad pattern (%X).\n", PAD_Read() & PAD_KEYPORT_MASK);
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
|
||||
#ifdef SDK_ARM7
|
||||
#include <firm/fs/ARM7/fs_firm.h>
|
||||
#include <firm/fs/ARM7/fs_firm_ex.h>
|
||||
#include <firm/fs/ARM7/fs_loader.h>
|
||||
#else
|
||||
#include <firm/fs/ARM9/fs_firm.h>
|
||||
|
||||
@ -34,17 +34,6 @@ extern "C" {
|
||||
*---------------------------------------------------------------------------*/
|
||||
void FS_InitMountInfo( BOOL nand, BOOL sdmc );
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_SetMountInfoForSrl
|
||||
|
||||
Description: set mount info for srl file
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void FS_SetMountInfoForSrl( void );
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_OpenSrl
|
||||
|
||||
|
||||
42
include/firm/fs/ARM7/fs_firm_ex.h
Normal file
42
include/firm/fs/ARM7/fs_firm_ex.h
Normal file
@ -0,0 +1,42 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: TwlIPL - include - fs
|
||||
File: fs_firm_ex.h
|
||||
|
||||
Copyright 2008 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:: 2007-09-06$
|
||||
$Rev$
|
||||
$Author$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef FIRM_FS_FS_FIRM_EX_H_
|
||||
#define FIRM_FS_FS_FIRM_EX_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_SetMountInfoForSrl
|
||||
|
||||
Description: set mount info for srl file
|
||||
|
||||
Arguments: None
|
||||
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
void FS_SetMountInfoForSrl( void );
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
|
||||
/* FIRM_FS_FS_FIRM_EX_H_ */
|
||||
#endif
|
||||
@ -54,7 +54,7 @@ BOOL FS_GetTitleBootContentPathFast(char* buf, OSTitleId titleId);
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrl
|
||||
|
||||
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
|
||||
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||
|
||||
Arguments: titleId title id for srl file
|
||||
|
||||
@ -65,7 +65,7 @@ BOOL FS_ResolveSrl( OSTitleId titleId );
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: FS_ResolveSrlUnsecured
|
||||
|
||||
Description: resolve srl filename and store to HW_FIRM_TEMP_SRL_PATH_BUF
|
||||
Description: resolve srl filename and store to HW_TWL_FS_BOOT_SRL_PATH_BUF
|
||||
without almost security check
|
||||
|
||||
Arguments: titleId title id for srl file
|
||||
|
||||
@ -50,7 +50,7 @@ extern "C" {
|
||||
extern void SDK_MOUNT_INFO_TABLE(void);
|
||||
#define HW_FIRM_MOUNT_INFO_BUF (u32)SDK_MOUNT_INFO_TABLE
|
||||
#define HW_FIRM_MOUNT_INFO_BUF_END (HW_FIRM_MOUNT_INFO_BUF + HW_FIRM_MOUNT_INFO_BUF_SIZE)
|
||||
#define HW_FIRM_MOUNT_INFO_BUF_SIZE (0x400 - OS_MOUNT_PATH_LEN)
|
||||
#define HW_FIRM_MOUNT_INFO_BUF_SIZE 0x3C0
|
||||
|
||||
//------------------------------------- FIRM_BOOT_SRL_PATH_BUF
|
||||
#define HW_FIRM_BOOT_SRL_PATH_BUF HW_FIRM_MOUNT_INFO_BUF_END
|
||||
|
||||
@ -32,16 +32,16 @@ extern "C" {
|
||||
#define HW_FIRM_LOAD_BUFFER_END (HW_FIRM_LOAD_BUFFER_BASE + HW_FIRM_LOAD_BUFFER_SIZE)
|
||||
|
||||
//------------------------------------- FS/FATFS
|
||||
#define HW_FIRM_TEMP_SRL_PATH_BUF (HW_FIRM_TEMP_SRL_PATH_BUF_END - HW_FIRM_TEMP_SRL_PATH_BUF_SIZE) // 0x2ff76fc
|
||||
#define HW_FIRM_TEMP_SRL_PATH_BUF_SIZE FS_ENTRY_LONGNAME_MAX
|
||||
#define HW_FIRM_TEMP_SRL_PATH_BUF_END HW_FIRM_FATFS_COMMAND_BUFFER // 0x02ff7800
|
||||
#define HW_FIRM_FATFS_ARCHNAME_LIST (HW_FIRM_FATFS_ARCHNAME_LIST_END - HW_FIRM_FATFS_ARCHNAME_LIST_SIZE)
|
||||
#define HW_FIRM_FATFS_ARCHNAME_LIST_SIZE MATH_ROUNDUP(OS_MOUNT_ARCHIVE_NAME_LEN * OS_MOUNT_INFO_MAX + 1, 32) // 0xC0
|
||||
#define HW_FIRM_FATFS_ARCHNAME_LIST_END HW_FIRM_FATFS_COMMAND_BUFFER // 0x02ff6000
|
||||
|
||||
#define HW_FIRM_FATFS_COMMAND_BUFFER (HW_FIRM_FATFS_COMMAND_BUFFER_END - HW_FIRM_FATFS_COMMAND_BUFFER_SIZE)
|
||||
#define HW_FIRM_FATFS_COMMAND_BUFFER_SIZE FATFS_COMMAND_BUFFER_MAX // 0x800
|
||||
#define HW_FIRM_FATFS_COMMAND_BUFFER_END HW_FIRM_FS_TEMP_BUFFER // 0x02ff8000
|
||||
#define HW_FIRM_FATFS_COMMAND_BUFFER_END HW_FIRM_FS_TEMP_BUFFER // 0x02ff6800
|
||||
|
||||
#define HW_FIRM_FS_TEMP_BUFFER (HW_FIRM_FS_TEMP_BUFFER_END - HW_FIRM_FS_TEMP_BUFFER_SIZE)
|
||||
#define HW_FIRM_FS_TEMP_BUFFER_SIZE FS_TEMPORARY_BUFFER_MAX // 0x4000
|
||||
#define HW_FIRM_FS_TEMP_BUFFER_SIZE FS_TEMPORARY_BUFFER_MAX // 0x5800
|
||||
#define HW_FIRM_FS_TEMP_BUFFER_END HW_TWL_MAIN_MEM_SHARED // 0x02ffc000
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
Loading…
Reference in New Issue
Block a user