mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ユーザデータのリセットとユーザデータファイル破壊機能を追加
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1937 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
f3e5f8d27d
commit
0864af5948
@ -23,7 +23,7 @@ include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs
|
||||
|
||||
SUBDIRS_P = \
|
||||
init \
|
||||
os \
|
||||
# os \
|
||||
pxi \
|
||||
fs \
|
||||
mi \
|
||||
|
||||
245
build/tests/DisplaySystemInformation/ARM9/main_armadillo.rsf
Normal file
245
build/tests/DisplaySystemInformation/ARM9/main_armadillo.rsf
Normal file
@ -0,0 +1,245 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - include
|
||||
# File: ROM-TS.rsf
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded insructions, 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$
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# TWL ROM SPEC FILE
|
||||
#
|
||||
|
||||
Arm9
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
Elf "$(MAKEROM_ARM9:r).tef"
|
||||
}
|
||||
|
||||
Arm7
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
Elf "$(MAKEROM_ARM7_BASE:r).tef"
|
||||
}
|
||||
|
||||
Arm9.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
}
|
||||
|
||||
Arm7.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
}
|
||||
|
||||
Property
|
||||
{
|
||||
###
|
||||
### Settings for FinalROM
|
||||
###
|
||||
#### BEGIN
|
||||
#
|
||||
# TITLE NAME: Your product name within 12bytes
|
||||
#
|
||||
#TitleName "YourAppName"
|
||||
|
||||
#
|
||||
# MAKER CODE: Your company ID# in 2 ascii words
|
||||
# issued by NINTENDO
|
||||
#
|
||||
#MakerCode "00"
|
||||
|
||||
#
|
||||
# REMASTER VERSION: Mastering version
|
||||
#
|
||||
#RomVersion 0
|
||||
|
||||
#
|
||||
# ROM SPEED TYPE: [MROM/1TROM/UNDEFINED]
|
||||
#
|
||||
RomSpeedType $(MAKEROM_ROMSPEED)
|
||||
|
||||
#
|
||||
# ROM SIZE: in bit [64M/128M/256M/512M/1G/2G]
|
||||
#
|
||||
#RomSize 128M
|
||||
#RomSize 256M
|
||||
|
||||
#
|
||||
# ROM PADDING: TRUE if finalrom
|
||||
#
|
||||
#RomFootPadding TRUE
|
||||
|
||||
#
|
||||
# ROM HEADER TEMPLATE: Provided to every product by NINTENDO
|
||||
#
|
||||
#RomHeaderTemplate ./etc/rom_header.template.sbin
|
||||
|
||||
#
|
||||
# BANNER FILE: generated from Banner Spec File
|
||||
#
|
||||
#BannerFile ./etc/myGameBanner.bnr
|
||||
BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr
|
||||
|
||||
#
|
||||
# Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE]
|
||||
#
|
||||
#PermitLandingNormalJump FALSE
|
||||
|
||||
#
|
||||
# Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE]
|
||||
#
|
||||
#PermitLandingTmpJump FALSE
|
||||
|
||||
###
|
||||
### Setting for TWL
|
||||
###
|
||||
|
||||
#
|
||||
# ROM HEADER Ltd: Provided to every product by NINTENDO
|
||||
#
|
||||
RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin
|
||||
|
||||
#
|
||||
# Digest parameters:
|
||||
#
|
||||
DigestParam 1024 32
|
||||
|
||||
#
|
||||
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD
|
||||
# MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD]
|
||||
# don't have to edit
|
||||
#
|
||||
WramMapping MAP_TS_SCR
|
||||
|
||||
#
|
||||
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]
|
||||
#
|
||||
CardRegion Japan
|
||||
|
||||
#
|
||||
# CommonClientKey: launcher deliver common client Key [TRUE/FALSE]
|
||||
#
|
||||
#CommonClientKey FALSE
|
||||
|
||||
#
|
||||
# HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotB FALSE
|
||||
|
||||
#
|
||||
# HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotC FALSE
|
||||
|
||||
#
|
||||
# SDCardAccess: sd card access control [TRUE/FALSE]
|
||||
#
|
||||
#SDCardAccess FALSE
|
||||
|
||||
#
|
||||
# NANDAccess: NAND access control [TRUE/FALSE]
|
||||
#
|
||||
#NANDAccess FALSE
|
||||
NANDAccess TRUE
|
||||
|
||||
#
|
||||
# Codec mode:
|
||||
# don't have to edit
|
||||
#
|
||||
CodecMode $(MAKEROM_CODEC_MODE)
|
||||
|
||||
#
|
||||
# Disp WiFiConnection Icon for Launcher [TRUE/FALSE]
|
||||
#
|
||||
#WiFiConnectionIcon FALSE
|
||||
|
||||
#
|
||||
# Disp DSWireless Icon for Launcher [TRUE/FALSE]
|
||||
#
|
||||
#DSWirelessIcon FALSE
|
||||
LockSCFG FALSE
|
||||
|
||||
|
||||
###
|
||||
#### END
|
||||
}
|
||||
|
||||
AppendProperty
|
||||
{
|
||||
#
|
||||
# Publisher : "Nintendo"
|
||||
# don't have to edit
|
||||
Publisher Nintendo
|
||||
|
||||
#
|
||||
# Application type : [USER/SYSTEM]
|
||||
# don't have to edit
|
||||
AppType SYSTEM
|
||||
|
||||
#
|
||||
# launch title on the launcher : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
Launch TRUE
|
||||
|
||||
#
|
||||
# Boot allowed Media: [GameCard]
|
||||
#
|
||||
Media NAND
|
||||
|
||||
#
|
||||
# Data only title : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
#DataOnly FALSE
|
||||
|
||||
#
|
||||
# Secure title : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
Secure TRUE
|
||||
|
||||
#
|
||||
# GameCode for TitleID : Your GameCode in 4 ascii words
|
||||
#
|
||||
GameCode ABCJ
|
||||
|
||||
#
|
||||
# Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M]
|
||||
#
|
||||
#PublicSaveDataSize 32K
|
||||
|
||||
#
|
||||
# Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M]
|
||||
#
|
||||
#PrivateSaveDataSize 16K
|
||||
|
||||
#
|
||||
# Enable SubBannerFile
|
||||
#SubBannerFile TRUE
|
||||
|
||||
}
|
||||
|
||||
RomSpec
|
||||
{
|
||||
Offset 0x00000000
|
||||
Segment ALL
|
||||
HostRoot ../../../systemMenu_RED/data
|
||||
Root /data
|
||||
File NTR_IPL_font_m.NFTR
|
||||
|
||||
}
|
||||
245
build/tests/DisplaySystemInformation/ARM9/main_racoon.rsf
Normal file
245
build/tests/DisplaySystemInformation/ARM9/main_racoon.rsf
Normal file
@ -0,0 +1,245 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# Project: TwlSDK - include
|
||||
# File: ROM-TS.rsf
|
||||
#
|
||||
# Copyright 2007 Nintendo. All rights reserved.
|
||||
#
|
||||
# These coded insructions, 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$
|
||||
#----------------------------------------------------------------------------
|
||||
#
|
||||
# TWL ROM SPEC FILE
|
||||
#
|
||||
|
||||
Arm9
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)"
|
||||
Elf "$(MAKEROM_ARM9:r).tef"
|
||||
}
|
||||
|
||||
Arm7
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)"
|
||||
Elf "$(MAKEROM_ARM7_BASE:r).tef"
|
||||
}
|
||||
|
||||
Arm9.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)"
|
||||
}
|
||||
|
||||
Arm7.Ltd
|
||||
{
|
||||
Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)"
|
||||
}
|
||||
|
||||
Property
|
||||
{
|
||||
###
|
||||
### Settings for FinalROM
|
||||
###
|
||||
#### BEGIN
|
||||
#
|
||||
# TITLE NAME: Your product name within 12bytes
|
||||
#
|
||||
#TitleName "YourAppName"
|
||||
|
||||
#
|
||||
# MAKER CODE: Your company ID# in 2 ascii words
|
||||
# issued by NINTENDO
|
||||
#
|
||||
#MakerCode "00"
|
||||
|
||||
#
|
||||
# REMASTER VERSION: Mastering version
|
||||
#
|
||||
#RomVersion 0
|
||||
|
||||
#
|
||||
# ROM SPEED TYPE: [MROM/1TROM/UNDEFINED]
|
||||
#
|
||||
RomSpeedType $(MAKEROM_ROMSPEED)
|
||||
|
||||
#
|
||||
# ROM SIZE: in bit [64M/128M/256M/512M/1G/2G]
|
||||
#
|
||||
#RomSize 128M
|
||||
#RomSize 256M
|
||||
|
||||
#
|
||||
# ROM PADDING: TRUE if finalrom
|
||||
#
|
||||
#RomFootPadding TRUE
|
||||
|
||||
#
|
||||
# ROM HEADER TEMPLATE: Provided to every product by NINTENDO
|
||||
#
|
||||
#RomHeaderTemplate ./etc/rom_header.template.sbin
|
||||
|
||||
#
|
||||
# BANNER FILE: generated from Banner Spec File
|
||||
#
|
||||
#BannerFile ./etc/myGameBanner.bnr
|
||||
BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr
|
||||
|
||||
#
|
||||
# Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE]
|
||||
#
|
||||
#PermitLandingNormalJump FALSE
|
||||
|
||||
#
|
||||
# Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE]
|
||||
#
|
||||
#PermitLandingTmpJump FALSE
|
||||
|
||||
###
|
||||
### Setting for TWL
|
||||
###
|
||||
|
||||
#
|
||||
# ROM HEADER Ltd: Provided to every product by NINTENDO
|
||||
#
|
||||
RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin
|
||||
|
||||
#
|
||||
# Digest parameters:
|
||||
#
|
||||
DigestParam 1024 32
|
||||
|
||||
#
|
||||
# WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD
|
||||
# MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD]
|
||||
# don't have to edit
|
||||
#
|
||||
WramMapping $(MAKEROM_WRAM_MAPPING)
|
||||
|
||||
#
|
||||
# CardRegion: card region [Japan/America/Europe/Australia/China/Korea]
|
||||
#
|
||||
CardRegion Japan
|
||||
|
||||
#
|
||||
# CommonClientKey: launcher deliver common client Key [TRUE/FALSE]
|
||||
#
|
||||
#CommonClientKey FALSE
|
||||
|
||||
#
|
||||
# HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotB FALSE
|
||||
|
||||
#
|
||||
# HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE]
|
||||
#
|
||||
#HwAESSlotC FALSE
|
||||
|
||||
#
|
||||
# SDCardAccess: sd card access control [TRUE/FALSE]
|
||||
#
|
||||
#SDCardAccess FALSE
|
||||
|
||||
#
|
||||
# NANDAccess: NAND access control [TRUE/FALSE]
|
||||
#
|
||||
#NANDAccess FALSE
|
||||
NANDAccess TRUE
|
||||
|
||||
#
|
||||
# Codec mode:
|
||||
# don't have to edit
|
||||
#
|
||||
CodecMode $(MAKEROM_CODEC_MODE)
|
||||
|
||||
#
|
||||
# Disp WiFiConnection Icon for Launcher [TRUE/FALSE]
|
||||
#
|
||||
#WiFiConnectionIcon FALSE
|
||||
|
||||
#
|
||||
# Disp DSWireless Icon for Launcher [TRUE/FALSE]
|
||||
#
|
||||
#DSWirelessIcon FALSE
|
||||
LockSCFG FALSE
|
||||
|
||||
|
||||
###
|
||||
#### END
|
||||
}
|
||||
|
||||
AppendProperty
|
||||
{
|
||||
#
|
||||
# Publisher : "Nintendo"
|
||||
# don't have to edit
|
||||
Publisher Nintendo
|
||||
|
||||
#
|
||||
# Application type : [USER/SYSTEM]
|
||||
# don't have to edit
|
||||
AppType SYSTEM
|
||||
|
||||
#
|
||||
# launch title on the launcher : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
Launch TRUE
|
||||
|
||||
#
|
||||
# Boot allowed Media: [GameCard]
|
||||
#
|
||||
Media NAND
|
||||
|
||||
#
|
||||
# Data only title : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
#DataOnly FALSE
|
||||
|
||||
#
|
||||
# Secure title : [TRUE/FALSE]
|
||||
# don't have to edit
|
||||
Secure TRUE
|
||||
|
||||
#
|
||||
# GameCode for TitleID : Your GameCode in 4 ascii words
|
||||
#
|
||||
GameCode ABCJ
|
||||
|
||||
#
|
||||
# Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M]
|
||||
#
|
||||
#PublicSaveDataSize 32K
|
||||
|
||||
#
|
||||
# Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M]
|
||||
#
|
||||
#PrivateSaveDataSize 16K
|
||||
|
||||
#
|
||||
# Enable SubBannerFile
|
||||
#SubBannerFile TRUE
|
||||
|
||||
}
|
||||
|
||||
RomSpec
|
||||
{
|
||||
Offset 0x00000000
|
||||
Segment ALL
|
||||
HostRoot ../../../systemMenu_RED/data
|
||||
Root /data
|
||||
File NTR_IPL_font_m.NFTR
|
||||
|
||||
}
|
||||
@ -16,13 +16,41 @@
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <twl.h>
|
||||
#include <twl/lcfg.h>
|
||||
#include "misc.h"
|
||||
#include "drawFunc.h"
|
||||
#include "control.h"
|
||||
#include "strResource.h"
|
||||
#include "viewSystemInfo.h"
|
||||
|
||||
#define SAVE_COUNT_MASK 0x7f // saveCountの値の範囲をマスクする。(0x00-0x7f)
|
||||
|
||||
|
||||
// TSFヘッダ
|
||||
typedef struct TSFHeader{
|
||||
union digest {
|
||||
u8 sha1[ SVC_SHA1_DIGEST_SIZE ]; // SHA-1ダイジェスト
|
||||
u8 rsa[ RSA_KEY_LENGTH ]; // RSA署名
|
||||
u8 dst[ RSA_KEY_LENGTH ]; // 転送用の最大サイズ要素
|
||||
}digest;
|
||||
u8 version; // データver.
|
||||
u8 saveCount; // セーブカウント(ミラーリングしないファイルは使用しない)
|
||||
u8 rsv[2]; // 予約
|
||||
u32 bodyLength; // データ長
|
||||
}TSFHeader; // 134bytes
|
||||
|
||||
static const char *s_TSDPath[] = {
|
||||
(const char *)"nand:/shared1/TWLCFG0.dat",
|
||||
(const char *)"nand:/shared1/TWLCFG1.dat",
|
||||
};
|
||||
|
||||
|
||||
static int selectLine[ROOTMENU_SIZE+1];
|
||||
void resetUserData( int idx );
|
||||
void breakUserData( int idx );
|
||||
static void TSDi_ClearSettingsDirect( LCFGTWLSettingsData *pTSD );
|
||||
static BOOL LCFGi_TSD_WriteSettingsDirectForRecovery( const LCFGTWLSettingsData *pSrcInfo, int index );
|
||||
BOOL LCFGi_TSF_WriteFile( char *pPath, TSFHeader *pHeader, const void *pSrcBody, u8 *pSaveCount );
|
||||
|
||||
ChangeCotnrolResult changeControl( int *menu, int *line, int *changeLine, int *changeMode )
|
||||
{
|
||||
@ -172,7 +200,7 @@ BOOL control( int *menu, int *line, int *changeLine, int *changeMode )
|
||||
|
||||
if( pad.trg & PAD_BUTTON_A )
|
||||
{
|
||||
if(*menu == MENU_ROOT)
|
||||
if(*menu == MENU_ROOT && *line <= MENU_VERSION)
|
||||
{
|
||||
controlFlag = TRUE;
|
||||
|
||||
@ -183,6 +211,16 @@ BOOL control( int *menu, int *line, int *changeLine, int *changeMode )
|
||||
*menu = *line;
|
||||
*line = selectLine[*menu];
|
||||
}
|
||||
else if( *menu == MENU_ROOT && *line == MENU_RESET_INFO )
|
||||
{
|
||||
resetUserData(0);
|
||||
resetUserData(1);
|
||||
}
|
||||
else if( *menu == MENU_ROOT && *line <= MENU_BREAK_DATA )
|
||||
{
|
||||
breakUserData(0);
|
||||
breakUserData(1);
|
||||
}
|
||||
else if( gAllInfo[*menu][*line].changable )
|
||||
{
|
||||
controlFlag = TRUE;
|
||||
@ -243,4 +281,137 @@ int getMaxLine( int menu , int page )
|
||||
if( menu == MENU_ROOT) return ROOTMENU_SIZE;
|
||||
|
||||
return s_pageOffset[menu][page+1] - s_pageOffset[menu][page];
|
||||
}
|
||||
}
|
||||
|
||||
void resetUserData( int idx )
|
||||
// idx(0 or 1)番目のユーザデータをリセットする
|
||||
{
|
||||
u8 *dataBuf = (u8*) Alloc (LCFG_READ_TEMP);
|
||||
|
||||
LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ])dataBuf );
|
||||
TSDi_ClearSettingsDirect( (LCFGTWLSettingsData *)(&dataBuf[ LCFG_TEMP_BUFFER_SIZE*idx ]) );
|
||||
LCFGi_TSD_WriteSettingsDirectForRecovery( (LCFGTWLSettingsData *)&dataBuf[ LCFG_TEMP_BUFFER_SIZE*idx ], idx );
|
||||
}
|
||||
|
||||
void breakUserData( int idx )
|
||||
{
|
||||
// LCFG APIを使わずに、FSレベルでファイルを読んで、データを破壊してから書き戻す
|
||||
FSFile file;
|
||||
FSResult res;
|
||||
u8 *fileBuf = (u8*) Alloc ( LCFG_TEMP_BUFFER_SIZE );
|
||||
|
||||
FS_InitFile( &file );
|
||||
|
||||
if( !FS_OpenFileEx( &file, s_TSDPath[idx], FS_FILEMODE_R | FS_FILEMODE_W ) )
|
||||
{
|
||||
OS_TPrintf("OpenFile failed. result: %d path: %s\n", FS_GetArchiveResultCode(&file), s_TSDPath[idx]);
|
||||
return;
|
||||
}
|
||||
/*
|
||||
if( FS_ReadFile( &file, fileBuf, LCFG_TEMP_BUFFER_SIZE ) == -1 )
|
||||
{
|
||||
OS_TPrintf("readFile failed. path: %s\n", s_TSDPath[idx]);
|
||||
return;
|
||||
}
|
||||
*/
|
||||
// 適当にデータを壊す
|
||||
MI_CpuFill8( fileBuf, 0xFF, LCFG_TEMP_BUFFER_SIZE );
|
||||
|
||||
// データの書き戻し
|
||||
FS_SeekFileToBegin( &file );
|
||||
|
||||
if( FS_WriteFile( &file, fileBuf, LCFG_TEMP_BUFFER_SIZE ) == -1 )
|
||||
{
|
||||
OS_TPrintf("writeFile failed. path: %s\n", s_TSDPath[idx]);
|
||||
return;
|
||||
}
|
||||
|
||||
OS_TPrintf("Breaking UserData Succeeded. path: %s\n", s_TSDPath[idx]);
|
||||
}
|
||||
|
||||
// TWL設定データの直接クリア
|
||||
static void TSDi_ClearSettingsDirect( LCFGTWLSettingsData *pTSD )
|
||||
{
|
||||
int i;
|
||||
MI_CpuClearFast( pTSD, sizeof(LCFGTWLSettingsData) );
|
||||
// 初期値が"0"以外のもの
|
||||
pTSD->owner.userColor = OS_FAVORITE_COLOR_MAGENTA; // 2008.06.23 UIG松島さんの要望により
|
||||
pTSD->owner.birthday.month = 1;
|
||||
pTSD->owner.birthday.day = 1;
|
||||
pTSD->flags.isAvailableWireless = 1;
|
||||
pTSD->launcherStatus.InstalledSoftBoxCount = 0;
|
||||
pTSD->launcherStatus.freeSoftBoxCount = LCFG_TWL_FREE_SOFT_BOX_COUNT_MAX;
|
||||
pTSD->agreeEulaVersion[ 0 ] = 1;
|
||||
// 言語コードはHW情報の言語ビットマップから算出
|
||||
for( i = 0; i < LCFG_TWL_LANG_CODE_MAX; i++ ) {
|
||||
if( OS_GetValidLanguageBitmap() & ( 0x0001 << i ) ) { // ValidLanguageBitmap情報は、ランチャーがMMEMにロードしたものを使用
|
||||
pTSD->language = (LCFGTWLLangCode)i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 指定データの値をファイルに直接ライト(リカバリ用にs_indexTSDの変更をライト後に行う)
|
||||
static BOOL LCFGi_TSD_WriteSettingsDirectForRecovery( const LCFGTWLSettingsData *pSrcInfo, int index )
|
||||
{
|
||||
u8 saveCount = 0;
|
||||
// ヘッダの作成
|
||||
TSFHeader header;
|
||||
MI_CpuClear8( &header, sizeof(TSFHeader) );
|
||||
header.version = LCFG_TWL_SETTINGS_DATA_VERSION;
|
||||
header.bodyLength = sizeof(LCFGTWLSettingsData);
|
||||
SVC_CalcSHA1( header.digest.sha1, pSrcInfo, sizeof(LCFGTWLSettingsData) );
|
||||
|
||||
// ファイルにライト
|
||||
if( !LCFGi_TSF_WriteFile( (char *)s_TSDPath[ index ],
|
||||
&header,
|
||||
(const void *)pSrcInfo,
|
||||
&saveCount ) ) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// TWLファイルのライト
|
||||
BOOL LCFGi_TSF_WriteFile( char *pPath, TSFHeader *pHeader, const void *pSrcBody, u8 *pSaveCount )
|
||||
{
|
||||
BOOL retval = FALSE;
|
||||
FSFile file;
|
||||
FS_InitFile( &file );
|
||||
|
||||
if( pSaveCount ) {
|
||||
*pSaveCount = (u8)( ( *pSaveCount + 1 ) & SAVE_COUNT_MASK );
|
||||
pHeader->saveCount = *pSaveCount;
|
||||
}else {
|
||||
pHeader->saveCount = 0;
|
||||
}
|
||||
|
||||
OS_TPrintf( "Write > %s : %d\n", pPath, pHeader->saveCount );
|
||||
|
||||
// ファイルオープン
|
||||
if( !FS_OpenFileEx( &file, pPath, FS_FILEMODE_R | FS_FILEMODE_W ) ) { // R|Wモードで開くと、既存ファイルを残したまま更新。
|
||||
OS_TPrintf( "Write : file open error. %s\n", pPath );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// ライト
|
||||
if( FS_WriteFile( &file, pHeader, sizeof(TSFHeader) ) < sizeof(TSFHeader) ) {
|
||||
OS_TPrintf( "Write : file header write error. %s\n", pPath );
|
||||
goto END;
|
||||
}
|
||||
if( FS_WriteFile( &file, pSrcBody, (long)pHeader->bodyLength ) < pHeader->bodyLength ) {
|
||||
OS_TPrintf( "Write : file body write error. %s\n", pPath );
|
||||
goto END;
|
||||
}
|
||||
|
||||
retval = TRUE;
|
||||
END:
|
||||
// ファイルクローズ
|
||||
(void)FS_CloseFile( &file );
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@ void drawHeader( int menu, int line)
|
||||
|
||||
if( menu != MENU_ROOT )
|
||||
{
|
||||
swprintf(buf, 256, L"Root > %s", s_strMenuName[menu] );
|
||||
swprintf(buf, 256, L"Root > %s", s_strRootMenu[menu] );
|
||||
PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_MENU * LINE_OFFSET, TXT_COLOR_BLUE, buf );
|
||||
|
||||
swprintf(buf, 256, L"%d / %d", line+1 , s_numMenu[menu] );
|
||||
@ -194,6 +194,7 @@ void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry )
|
||||
if( menu == MENU_PARENTAL && entryLine == PARENTAL_PASSWORD )
|
||||
{
|
||||
PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, TXT_COLOR_BLACK, "%04d", entry->iValue );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -31,7 +31,7 @@ extern "C" {
|
||||
|
||||
#define DISP_NUM_LINES 11 // 一ページあたりの項目数
|
||||
|
||||
#define ROOTMENU_SIZE 7
|
||||
#define ROOTMENU_SIZE 9
|
||||
#define OWNERMENU_SIZE 6
|
||||
#define PARENTALMENU_SIZE 12
|
||||
#define NORMAL_HW_MENU_SIZE 4
|
||||
@ -42,14 +42,17 @@ extern "C" {
|
||||
|
||||
|
||||
// メニューID
|
||||
#define MENU_ROOT 10
|
||||
#define MENU_OWNER 0
|
||||
#define MENU_PARENTAL 1
|
||||
#define MENU_NORMAL_HW 2
|
||||
#define MENU_SECURE_HW 3
|
||||
#define MENU_SCFG_ARM7 4
|
||||
#define MENU_SCFG_ARM9 5
|
||||
#define MENU_VERSION 6
|
||||
#define MENU_ROOT 10
|
||||
#define MENU_OWNER 0
|
||||
#define MENU_PARENTAL 1
|
||||
#define MENU_NORMAL_HW 2
|
||||
#define MENU_SECURE_HW 3
|
||||
#define MENU_SCFG_ARM7 4
|
||||
#define MENU_SCFG_ARM9 5
|
||||
#define MENU_VERSION 6
|
||||
#define MENU_RESET_INFO 7
|
||||
#define MENU_BREAK_DATA 8
|
||||
|
||||
|
||||
// 行番号
|
||||
#define OWNER_LANGUAGE 0
|
||||
|
||||
@ -66,26 +66,17 @@ const char *s_strSCFGViewMode[] = {
|
||||
};
|
||||
|
||||
const char *s_strRootMenu[] = {
|
||||
"Owner",
|
||||
"Parental control",
|
||||
"Normal Hardware Info",
|
||||
"Secure Hardware Info",
|
||||
"SCFG Info (ARM7 side)",
|
||||
"SCFG Info (ARM9 side)",
|
||||
"Content Version"
|
||||
"< Owner >",
|
||||
"< Parental control >",
|
||||
"< Normal Hardware Info >",
|
||||
"< Secure Hardware Info >",
|
||||
"< SCFG Info (ARM7 side) >",
|
||||
"< SCFG Info (ARM9 side) >",
|
||||
"< Content Version >",
|
||||
"Reset HW Setting to Default",
|
||||
"break HW Setting"
|
||||
};
|
||||
|
||||
const char *s_strMenuName[] = {
|
||||
"Owner",
|
||||
"Parental control",
|
||||
"Normal Hardware Info",
|
||||
"Secure Hardware Info",
|
||||
"SCFG Info (ARM7 side)",
|
||||
"SCFG Info (ARM9 side)",
|
||||
"Content Version"
|
||||
};
|
||||
|
||||
|
||||
const char *s_strOwnerMenu[] = {
|
||||
"Language",
|
||||
"Favorite color",
|
||||
|
||||
@ -23,7 +23,6 @@ extern const int s_pageOffset[ROOTMENU_SIZE][MAXPAGE];
|
||||
|
||||
extern const u8 s_numMenu[];
|
||||
extern const char *s_strRootMenu[];
|
||||
extern const char *s_strMenuName[];
|
||||
extern const char *s_strOwnerMenu[];
|
||||
extern const char *s_strParentalMenu[];
|
||||
extern const char *s_strNormalHWMenu[];
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
in whole or in part, without the prior written consent of Nintendo.
|
||||
|
||||
$Date:: $
|
||||
$Rev$
|
||||
$Author$
|
||||
$Rev:$
|
||||
$Author:$
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef __LOAD_VIEW_INFO__
|
||||
|
||||
Loading…
Reference in New Issue
Block a user