TwlIPL/include/sysmenu/settings/common/TWLStoreFile.h
yosiokat c2ee48afc8 ・本体設定データの整理。
・HWNormalInfo, HWSecureInfo, TWLSettingsの3種類のファイルに分割。
  ・上記3つのファイルフォーマットを共通のTSFフォーマットにする。
・MachineSettingsで上記フォーマットに追随。
・HWInfoWriterも上記フォーマットに追随。
・Launcher
  ・OS_InitをSYSM_Init内に取り込んで、OS_SetMainArenaHiが有効になるようにする。
  ・SYSM_ReadParametersの処理を整理する。
  ・RTC補正値をセットするよう変更。
・hyena.TWL
  ・RTCリセット検出を行うようにする。
  ・SCFGレジスタ値をWRAMのシステム領域にコピーするよう変更。

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@347 b08762b0-b915-fc4b-9d8c-17b2551a87ff
2007-12-11 13:00:58 +00:00

94 lines
3.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project: TwlIPL
File: TWLFileStore.h
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$
*---------------------------------------------------------------------------*/
#ifndef TWL_STORE_FILE_H_
#define TWL_STORE_FILE_H_
#if defined(SDK_CW)
#include <twl.h>
#include <twl/os/common/format_rom.h>
#ifdef __cplusplus
extern "C" {
#endif
// define data ------------------------------------
#define TSF_VERSION_TERMINATOR 0xff // version終端
#define SAVE_COUNT_MAX 0x80 // saveCountの最大値
#define SAVE_COUNT_MASK 0x7f // saveCountの値の範囲をマスクする。(0x00-0x7f
// TSFリード結果
typedef enum TSFReadResult {
TSF_READ_RESULT_SUCCEEDED = 0,
TSF_READ_RESULT_ERROR_FILE_EXIST = 1,
TSF_READ_RESULT_ERROR_FILE_LENGTH = 2,
TSF_READ_RESULT_ERROR_DATA = 3
}TSFReadResult;
// TSFアクセス用パラメータ
typedef struct TSFParam { // TSF ( TWL Store File )
u32 dataLength; // 保存するデータ長
u32 fileLength; // 保存するファイル長
const u8 *conpatibleVerList; // 過去ver.の互換ver.リスト。TSF_VERSION_TERMINATORで終端。
void (*pClearFunc)( void *pDst ); // 保存するデータの値クリア関数
BOOL (*pCheckDigestFunc)( void *pTgt, u32 len, u8 *pDigest ); // ダイジェストチェック関数へのポインタ
BOOL (*pCheckValueFunc)( void *pTgt ); // 値チェック関数へのポインタ
}TSFParam;
// 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
// ※「TSFHeader+データ本体」の形でファイルに保存されます。
#ifdef SDK_ARM9
//=========================================================
// NANDファイルへのリードライト関数
//=========================================================
// TSFフォーマットのファイルのリード
extern TSFReadResult TSF_ReadFile ( char *pPath, void *pDstBody, const TSFParam *pParam, u8 *pSaveCount );
// TSFフォーマットのファイルのライトpSaveCountにNULLを与えた場合は、saveCountを"0"固定にします。)
extern BOOL TSF_WriteFile( char *pPath, TSFHeader *pHeader, const void *pSrcBody, u8 *pSaveCount );
// TSFフォーマットのファイルのリカバリ
extern BOOL TSF_RecoveryFile( TSFReadResult err, char *pPath, u32 fileLength );
#endif // SDK_ARM9
#ifdef __cplusplus
}
#endif
#endif // SDK_CW
#endif // TWL_STORE_FILE_H_