mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@651 385bec56-5757-e545-9c3a-d8741f4650f1
118 lines
4.2 KiB
C
118 lines
4.2 KiB
C
// IDBi.h : コンソール アプリケーションのエントリ ポイントを定義します。
|
|
//
|
|
|
|
#ifndef __IDB_IDBi_H_
|
|
#define __IDB_IDBi_H_
|
|
|
|
#include <nn/types.h>
|
|
#include "IDB.h"
|
|
#include <nn/assert.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // ifdef __cplusplus
|
|
|
|
// IDBi_Time型
|
|
// 2000年1月1日 UTCの真夜中からの閏秒を考慮しない経過秒数
|
|
// 最大で2133年前後まで記録できる
|
|
typedef u32 IDBi_Time;
|
|
|
|
// データベースを取得するためのキーとなるインデックス
|
|
typedef u16 IDBi_Index;
|
|
#define IDBi_INDEX_INVALID 0xffff // 無効なインデックス
|
|
|
|
// アプレットをマスクするときのID
|
|
static const nn::ProgramId IDBi_MASK_PROGRAM_ID = 0xffffffffffffff00ull;
|
|
|
|
// データ比較用のテーブル
|
|
typedef struct
|
|
{
|
|
bit64 programID;
|
|
u32 lastAccess; // IDBi_Time lastAccess : 最終アクセス日時
|
|
u16 remasterVersion; // リマスターバージョン
|
|
|
|
u8 reserved0; // 予約領域(必ず0で埋める)
|
|
u8 reserved1; // 予約領域(必ず0で埋める)
|
|
} IDBi_IconTable;
|
|
|
|
|
|
// 1つのアイコンのデータ本体
|
|
typedef struct
|
|
{
|
|
u16 region; // IDB_Region region : リージョン
|
|
u8 format; // IDB_IconFormat format : フォーマット
|
|
u8 padding[1]; // パディング
|
|
u8 rating[IDB_RATING_MAX]; // レーティング情報
|
|
u32 matchMakeGameCode; // マッチメイクゲームコード
|
|
u64 matchMakeGameCodeBit; // マッチメイクゲームコードビット
|
|
IDB_SoftwareInfo info[IDB_LANGUAGE_MAX];
|
|
IDB_IconData data; // アイコン画像
|
|
} IDBi_IconData;
|
|
|
|
|
|
// アイコンのデータベース、テーブルファイルフォーマット
|
|
typedef struct
|
|
{
|
|
u16 ownerDataCount; // 保存されているオーナーデータ数
|
|
u8 padding[6]; // パディング
|
|
IDBi_IconTable iconTable[IDB_ICON_DATA_MAX]; // 比較用のテーブル
|
|
} IDBi_TableFile;
|
|
|
|
// アイコンのデータベース、アイコンファイルフォーマット
|
|
typedef struct
|
|
{
|
|
IDBi_IconData iconData[IDB_ICON_DATA_MAX]; // データ本体
|
|
} IDBi_DataFile;
|
|
|
|
|
|
// データ区分
|
|
typedef enum
|
|
{
|
|
IDBi_DIVISION_OWNER, // オーナー枠
|
|
IDBi_DIVISION_FRIEND, // フレンド枠
|
|
IDBi_DIVISION_NONE, // 区分に無い
|
|
|
|
IDBi_DIVISION_INVALID = 0x7fffffff
|
|
} IDBi_Division;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
// コンパイル時アサート(静的アサート)
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
// NW_COMPILER_ASSERT( sizeof(u8)==1 ); // 8bit
|
|
// NW_COMPILER_ASSERT( sizeof(u16)==2 ); // 16bit
|
|
// NW_COMPILER_ASSERT( sizeof(u32)==4 ); // 32bit
|
|
// NW_COMPILER_ASSERT( sizeof(int)>=4 ); // intは32bit以上
|
|
|
|
// NW_COMPILER_ASSERT( (1ULL<<(8*sizeof(s8)-1)) > IDB_FORMAT_MAX ); // IDB_FORMAT_MAXはs8で表せる最大サイズ以下
|
|
// NW_COMPILER_ASSERT( (1ULL<<(8*sizeof(IDBi_Index))) > IDB_ICON_DATA_MAX ); // IDBi_IndexはIDB_ICON_DATA_MAX分のindexを表現できる
|
|
// NW_COMPILER_ASSERT( (1ULL<<(8*sizeof(IDBi_Time ))) > 60ULL*60*24*(365+1)*100 ); // IDBi_Timeは秒単位で100年以上表現できる
|
|
// // 秒 分 時 日 年
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
// 関数宣言
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
void IDBi_Initialize( u8 * buffer, bool onMemory, bool readOnly );
|
|
u8 * IDBi_Finalize( void );
|
|
u32 IDBi_GetBufferSize( bool onMemory );
|
|
BOOL IDBi_IsInitialized( void );
|
|
|
|
IDBi_Index IDBi_Update( IDB_Icon * inIcon, IDBi_Division division );
|
|
BOOL IDBi_Select( IDB_Icon * outIcon, IDB_Key * key, BOOL updateLastAccess = TRUE );
|
|
BOOL IDBi_SelectFromIndex( IDB_Icon * outIcon, IDBi_Index index, BOOL updateLastAccess = TRUE );
|
|
BOOL IDBi_IsContains( IDB_Key * key );
|
|
|
|
void IDBi_MaskProgramID( nn::ProgramId* programID );
|
|
|
|
IDBi_Index IDBi_GetIndex( const IDB_Key * restrict inKey );
|
|
nn::ProgramId IDBi_GetProgramID( const int index );
|
|
|
|
void IDBi_Save(void);
|
|
void IDBi_Load(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // ifdef __cplusplus
|
|
|
|
#endif // ifndef __IDB_IDB_H_
|