Files
Project_CTR/titleid.h
2014-04-08 13:09:00 +08:00

97 lines
3.8 KiB
C

#pragma once
typedef enum
{
PID_BAD_YAML_SET = -1,
PID_INVALID_CATEGORY = 0x10000,
PID_INVALID_UNIQUE_ID = 0x1000000,
PID_INVALID_VARIATION = 0x100,
} Pid_Errors;
typedef enum
{
PROGRAM_ID_CATEGORY_FLAG_NORMAL = 0x0000,
PROGRAM_ID_CATEGORY_FLAG_DLP_CHILD = 0x0001,
PROGRAM_ID_CATEGORY_FLAG_DEMO = 0x0002,
PROGRAM_ID_CATEGORY_FLAG_CONTENTS = 0x0003,
PROGRAM_ID_CATEGORY_FLAG_ADD_ON_CONTENTS = 0x0004,
PROGRAM_ID_CATEGORY_FLAG_PATCH = 0x0006,
PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION = 0x0008,
PROGRAM_ID_CATEGORY_FLAG_SYSTEM = 0x0010,
PROGRAM_ID_CATEGORY_FLAG_REQUIRE_BATCH_UPDATE = 0x0020,
PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_USER_APPROVAL = 0x0040,
PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT = 0x0080,
PROGRAM_ID_CATEGORY_FLAG_CAN_SKIP_CONVERT_JUMP_ID = 0x0100,
PROGRAM_ID_CATEGORY_FLAG_TWL = 0x8000,
} ProgramIdCategoryFlag;
typedef enum
{
PROGRAM_ID_CATEGORY_APPLICATION = ( PROGRAM_ID_CATEGORY_FLAG_NORMAL ),
PROGRAM_ID_CATEGORY_DLP_CHILD = ( PROGRAM_ID_CATEGORY_FLAG_DLP_CHILD ),
PROGRAM_ID_CATEGORY_DEMO = ( PROGRAM_ID_CATEGORY_FLAG_DEMO ),
PROGRAM_ID_CATEGORY_CONTENTS = ( PROGRAM_ID_CATEGORY_FLAG_CONTENTS ),
PROGRAM_ID_CATEGORY_PATCH = ( PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION
| PROGRAM_ID_CATEGORY_FLAG_PATCH),
PROGRAM_ID_CATEGORY_ADD_ON_CONTENTS = ( PROGRAM_ID_CATEGORY_FLAG_ADD_ON_CONTENTS
| PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION
| PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT ),
PROGRAM_ID_CATEGORY_FIRMWARE = ( PROGRAM_ID_CATEGORY_FLAG_NORMAL
| PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION
| PROGRAM_ID_CATEGORY_FLAG_SYSTEM
| PROGRAM_ID_CATEGORY_FLAG_REQUIRE_BATCH_UPDATE
| PROGRAM_ID_CATEGORY_FLAG_CAN_SKIP_CONVERT_JUMP_ID ),
PROGRAM_ID_CATEGORY_BASE = ( PROGRAM_ID_CATEGORY_FLAG_NORMAL
| PROGRAM_ID_CATEGORY_FLAG_SYSTEM
| PROGRAM_ID_CATEGORY_FLAG_REQUIRE_BATCH_UPDATE
| PROGRAM_ID_CATEGORY_FLAG_CAN_SKIP_CONVERT_JUMP_ID ),
PROGRAM_ID_CATEGORY_APPLET = ( PROGRAM_ID_CATEGORY_FLAG_NORMAL
| PROGRAM_ID_CATEGORY_FLAG_SYSTEM
| PROGRAM_ID_CATEGORY_FLAG_REQUIRE_BATCH_UPDATE ),
PROGRAM_ID_CATEGORY_SYSTEM_APPLICATION = ( PROGRAM_ID_CATEGORY_FLAG_NORMAL
| PROGRAM_ID_CATEGORY_FLAG_SYSTEM ),
PROGRAM_ID_CATEGORY_SYSTEM_CONTENT = ( PROGRAM_ID_CATEGORY_FLAG_CONTENTS
| PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION
| PROGRAM_ID_CATEGORY_FLAG_SYSTEM ),
PROGRAM_ID_CATEGORY_SHARED_CONTENT = ( PROGRAM_ID_CATEGORY_FLAG_CONTENTS
| PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION
| PROGRAM_ID_CATEGORY_FLAG_SYSTEM
| PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT ),
PROGRAM_ID_CATEGORY_AUTO_UPDATE_CONTENT = ( PROGRAM_ID_CATEGORY_FLAG_CONTENTS
| PROGRAM_ID_CATEGORY_FLAG_CANNOT_EXECUTION
| PROGRAM_ID_CATEGORY_FLAG_SYSTEM
| PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_USER_APPROVAL
| PROGRAM_ID_CATEGORY_FLAG_NOT_REQUIRE_RIGHT_FOR_MOUNT ),
} ProgramIdCategory;
u64 ConvertTwlIdToCtrId(u64 pgid);
int GetProgramID(u64 *dest, rsf_settings *yaml, bool IsForExheader);
int GetUniqueID(u32 *dest, rsf_settings *yaml);
bool IsDemo(u16 Category);
bool IsSystem(u16 Category);
bool IsDlpChild(u16 Category);
bool IsPatch(u16 Category);
bool IsContents(u16 Category);
bool IsAddOnContent(u16 Category);