mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
設定画面とPictoChat、それぞれにNMenuから起動するための応急措置を適用
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@105 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
d1e6f438a4
commit
99667e44ab
@ -18,6 +18,7 @@
|
|||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "MachineSetting.h"
|
#include "MachineSetting.h"
|
||||||
|
#include "nand_app_hack.h"
|
||||||
|
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
|
|
||||||
@ -73,6 +74,11 @@ void TwlMain(void)
|
|||||||
if( SYSM_ReadTWLSettingsFile() ) {
|
if( SYSM_ReadTWLSettingsFile() ) {
|
||||||
SYSM_CaribrateTP();
|
SYSM_CaribrateTP();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// ファイルシステム切り替え応急処置
|
||||||
|
FS_IdentifyTitle(0x4d534554);//MSET
|
||||||
|
}
|
||||||
|
|
||||||
InitBG();
|
InitBG();
|
||||||
GetAndDrawRTCData( &g_rtcDraw, TRUE );
|
GetAndDrawRTCData( &g_rtcDraw, TRUE );
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
#include <twl.h>
|
#include <twl.h>
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "PictoChat.h"
|
#include "PictoChat.h"
|
||||||
|
#include "nand_app_hack.h"
|
||||||
|
|
||||||
// extern data-----------------------------------------------------------------
|
// extern data-----------------------------------------------------------------
|
||||||
|
|
||||||
@ -61,6 +62,11 @@ void TwlMain(void)
|
|||||||
InitAllocator();
|
InitAllocator();
|
||||||
CMN_InitFileSystem( &g_allocator );
|
CMN_InitFileSystem( &g_allocator );
|
||||||
|
|
||||||
|
{
|
||||||
|
// ファイルシステム切り替え応急処置
|
||||||
|
FS_IdentifyTitle(0x50434854);//PCHT
|
||||||
|
}
|
||||||
|
|
||||||
InitBG();
|
InitBG();
|
||||||
PictoChatInit();
|
PictoChatInit();
|
||||||
// メインループ----------------------------
|
// メインループ----------------------------
|
||||||
|
|||||||
61
include/nand_app_hack.h
Normal file
61
include/nand_app_hack.h
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
|
||||||
|
// とにかく.appファイル内のSRLを直接読み込むコールバック
|
||||||
|
//#define WAD_SRL_OFFSET 0x12C0
|
||||||
|
#define WAD_SRL_OFFSET 0
|
||||||
|
static FSResult ReadFromWad(FSArchive *arc, void *buffer, u32 offset, u32 length)
|
||||||
|
{
|
||||||
|
FSFile *file = (FSFile *)FS_GetArchiveBase(arc);
|
||||||
|
(void)FS_SeekFile(file, (int)(WAD_SRL_OFFSET + offset), FS_SEEK_SET);
|
||||||
|
return (FS_ReadFile(file, buffer, (int)length) >= 0) ?
|
||||||
|
FS_RESULT_SUCCESS : FS_GetResultCode(file);
|
||||||
|
}
|
||||||
|
// 指定のタイトルIDで起動したNANDアプリであると仮定して"rom"アーカイブを置換
|
||||||
|
static BOOL FS_IdentifyTitle(u32 titleLo)
|
||||||
|
{
|
||||||
|
BOOL retval = FALSE;
|
||||||
|
static struct
|
||||||
|
{
|
||||||
|
BOOL initialized;
|
||||||
|
FSFile file[1];
|
||||||
|
}
|
||||||
|
context;
|
||||||
|
if (!context.initialized)
|
||||||
|
{
|
||||||
|
context.initialized = TRUE;
|
||||||
|
// if (OS_GetBootType() == OS_BOOTTYPE_NAND)
|
||||||
|
{
|
||||||
|
char path[FS_ENTRY_LONGNAME_MAX];
|
||||||
|
STD_TSPrintf(path, "nand:/title_e/00010001/%02X%02X%02X%02X/content/12123434.app",
|
||||||
|
((titleLo / 1000) % 10) + '0',
|
||||||
|
((titleLo / 100) % 10) + '0',
|
||||||
|
((titleLo / 10) % 10) + '0',
|
||||||
|
((titleLo / 1) % 10) + '0');
|
||||||
|
if (!FS_IsAvailable())
|
||||||
|
{
|
||||||
|
FS_Init(FS_DMA_NOT_USE);
|
||||||
|
}
|
||||||
|
if (FS_OpenFileEx(context.file, path, FS_FILEMODE_R))
|
||||||
|
{
|
||||||
|
CARDRomHeader header[1];
|
||||||
|
(void)FS_SeekFile(context.file, (int)(WAD_SRL_OFFSET + 0), FS_SEEK_SET);
|
||||||
|
if (FS_ReadFile(context.file, header, sizeof(header)) == sizeof(header))
|
||||||
|
{
|
||||||
|
FSArchive *arc = FS_FindArchive("rom", 3);
|
||||||
|
(void)FS_UnloadArchive(arc);
|
||||||
|
if (FS_LoadArchive(arc, (u32)context.file,
|
||||||
|
header->fat.offset, header->fat.length,
|
||||||
|
header->fnt.offset, header->fnt.length,
|
||||||
|
ReadFromWad, NULL))
|
||||||
|
{
|
||||||
|
retval = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!retval)
|
||||||
|
{
|
||||||
|
(void)FS_CloseFile(context.file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user