Last active
March 27, 2022 02:01
-
-
Save SocraticBliss/094077a377b67a3947c3b46da808fcaa to your computer and use it in GitHub Desktop.
PS4 PKG Template for 010 Editor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//------------------------------------------------ | |
//--- 010 Editor v9.0 Binary Template | |
// | |
// File: PS4_PKG.bt | |
// Authors: SocraticBliss | |
// Version: 1.0.0 | |
// Purpose: 1) Decode the PKG format for the PS4 (64 bit) | |
// | |
// Category: Game | |
// File Mask: * | |
// ID Bytes: 7F 43 4E 54 | |
// History: | |
// 1.0 SocraticBliss: Initial release. | |
//------------------------------------------------ | |
local int warnings = 0; | |
local string temp_warning; | |
// A hack to get warning messages to both "Warn" (show in status) and output to the "output" | |
void PrintWarning(string message) { | |
Warning(temp_warning); | |
// Ensure new-line, "Warning" statuses should not have them | |
SPrintf(temp_warning, "%s\n", message); | |
Printf(temp_warning); | |
// Hack to trigger a more generic "look at warnings in output" | |
warnings++; | |
} | |
// **************************************** PKG Header ******************************************** | |
typedef enum <uint64> { | |
NESTED_IMAGE = 0x8000000000000000 | |
} PFS_IMAGE_FLAG; | |
typedef enum <uint32> { | |
INVALID = 0x0, | |
FULL = 0x1, | |
UPGRADABLE = 0x2, | |
DEMO = 0x3, | |
FREEMIUM = 0x4 | |
} APPLICATION_TYPE; | |
typedef enum <uint32> { | |
FIRST_PATCH = 0x100000, | |
PATCHGO = 0x200000, | |
REMASTER = 0x400000, | |
PS_CLOUD = 0x800000, | |
GD_AC = 0x2000000, | |
NON_GAME = 0x4000000, | |
UNKNOWN_0x8000000 = 0x8000000, | |
UNKNOWN_0xE000000 = 0xE000000, | |
SUBSEQUENT_PATCH = 0x40000000, | |
DELTA_PATCH = 0x41000000, | |
CUMULATIVE_PATCH = 0x60000000 | |
} CONTENT_FLAG; | |
typedef enum <uint32> { | |
PS4GD = 0x1A, | |
PS4AC = 0x1B, | |
PS4AL = 0x1C, | |
PS4DP = 0x1E, | |
PS4MD = 0x1F /* ? */ | |
} CONTENT_TYPE; | |
typedef enum <uint32> { | |
NONE = 0x0, | |
PS4 = 0xF | |
} DRM_TYPE; | |
typedef enum <uint32> { | |
SHARE_FACTORY_THEME = 0x1, | |
SYSTEM_SOFTWARE_THEME = 0x2 | |
} IRO_TAG; | |
typedef enum <uint32> { | |
VER_1 = 0x1000000, | |
VER_2 = 0x2000000, | |
INTERNAL = 0x40000000, | |
FINALIZED = 0x1, /* 0x80000000 */ | |
PROTOTYPE = 0xC0000000 /* ? */ | |
} TYPE; | |
typedef string CONTENT_ID <read=ContentID>; | |
string ContentID(CONTENT_ID &cid) { | |
local string s; | |
SPrintf(s, "%s", cid); | |
return s; | |
} | |
typedef struct { | |
ubyte pkg_magic[4] <format=hex>; | |
if (Strcmp(pkg_magic, "\x7F\x43\x4E\x54")) { | |
PrintWarning("Invalid PKG file"); | |
return -1; | |
} | |
TYPE pkg_type <format=hex>; | |
uint32 pkg_0x8; | |
uint32 pkg_file_count; | |
uint32 pkg_table_entry_count; | |
uint16 pkg_sc_entry_count; | |
uint16 pkg_table_entry_count_2; | |
uint32 pkg_table_entry_offset <format=hex>; | |
uint32 pkg_sc_entry_data_size <format=hex>; | |
uint64 pkg_body_offset <format=hex>; | |
uint64 pkg_body_size <format=hex>; | |
uint64 pkg_content_offset <format=hex>; | |
uint64 pkg_content_size <format=hex>; | |
CONTENT_ID pkg_content_id; | |
ubyte pkg_padding[0xB]; | |
DRM_TYPE pkg_drm_type <format=hex>; | |
CONTENT_TYPE pkg_content_type <format=hex>; | |
uint32 pkg_content_flags <format=hex>; | |
uint32 pkg_promote_size <format=hex>; | |
uint32 pkg_version_date <format=hex>; | |
uint32 pkg_version_hash <format=hex>; | |
uint32 pkg_0x88 <format=hex>; | |
uint32 pkg_0x8C <format=hex>; | |
uint32 pkg_0x90 <format=hex>; | |
uint32 pkg_0x94 <format=hex>; | |
IRO_TAG pkg_iro_tag; | |
uint32 pkg_drm_type_version; | |
ubyte pkg_zeroes_1[0x60]; | |
ubyte pkg_sc_entries_1_digest[0x20] <format=hex>; | |
ubyte pkg_sc_entries_2_digest[0x20] <format=hex>; | |
ubyte pkg_table_digest[0x20] <format=hex>; | |
ubyte pkg_body_digest[0x20] <format=hex>; | |
ubyte pkg_zeroes_2[0x280]; | |
uint32 pkg_0x400; | |
uint32 pkg_pfs_image_count; | |
uint64 pkg_pfs_image_flags <format=hex>; | |
uint64 pkg_pfs_image_offset <format=hex>; | |
uint64 pkg_pfs_image_size <format=hex>; | |
uint64 pkg_mount_image_offset <format=hex>; | |
uint64 pkg_mount_image_size <format=hex>; | |
uint64 pkg_size; | |
uint32 pkg_pfs_image_signed_size <format=hex>; | |
uint32 pkg_pfs_image_cache_size <format=hex>; | |
ubyte pkg_pfs_image_digest[0x20] <format=hex>; | |
ubyte pkg_pfs_image_signed_digest[0x20] <format=hex>; | |
uint64 pkg_pfs_image_split_size_nth_0 <format=hex>; | |
uint64 pkg_pfs_image_split_size_nth_1 <format=hex>; | |
ubyte pkg_zeroes_3[0xB50]; | |
ubyte pkg_digest[0x20]; | |
} pkg_header <open=true>; | |
// *************************************** PKG Table Entries ************************************************ | |
typedef enum <uint32> { | |
DIGESTS = 0x1, | |
ENTRY_KEYS = 0x10, | |
IMAGE_KEY = 0x20, | |
GENERAL_DIGESTS = 0x80, | |
METAS = 0x100, | |
ENTRY_NAMES = 0x200, | |
LICENSE_DAT = 0x400, | |
LICENSE_INFO = 0x401, | |
NPTITLE_DAT = 0x402, | |
NPBIND_DAT = 0x403, | |
SELFINFO_DAT = 0x404, | |
IMAGEINFO_DAT = 0x406, | |
TARGET_DELTAINFO_DAT = 0x407, | |
ORIGIN_DELTAINFO_DAT = 0x408, | |
PSRESERVED_DAT = 0x409, | |
PARAM_SFO = 0x1000, | |
PLAYGO_CHUNK_DAT = 0x1001, | |
PLAYGO_CHUNK_SHA = 0x1002, | |
PLAYGO_MANIFEST_XML = 0x1003, | |
PRONUNCIATION_XML = 0x1004, | |
PRONUNCIATION_SIG = 0x1005, | |
PIC1_PNG = 0x1006, | |
PUBTOOLINFO_DAT = 0x1007, | |
APP__PLAYGO_CHUNK_DAT = 0x1008, | |
APP__PLAYGO_CHUNK_SHA = 0x1009, | |
APP__PLAYGO_MANIFEST_XML = 0x100A, | |
SHAREPARAM_JSON = 0x100B, | |
SHAREOVERLAYIMAGE_PNG = 0x100C, | |
SAVE_DATA_PNG = 0x100D, | |
SHAREPRIVACYGUARDIMAGE_PNG = 0x100E, | |
ICON0_PNG = 0x1200, | |
ICON0_00_PNG = 0x1201, | |
ICON0_01_PNG = 0x1202, | |
ICON0_02_PNG = 0x1203, | |
ICON0_03_PNG = 0x1204, | |
ICON0_04_PNG = 0x1205, | |
ICON0_05_PNG = 0x1206, | |
ICON0_06_PNG = 0x1207, | |
ICON0_07_PNG = 0x1208, | |
ICON0_08_PNG = 0x1209, | |
ICON0_09_PNG = 0x120A, | |
ICON0_10_PNG = 0x120B, | |
ICON0_11_PNG = 0x120C, | |
ICON0_12_PNG = 0x120D, | |
ICON0_13_PNG = 0x120E, | |
ICON0_14_PNG = 0x120F, | |
ICON0_15_PNG = 0x1210, | |
ICON0_16_PNG = 0x1211, | |
ICON0_17_PNG = 0x1212, | |
ICON0_18_PNG = 0x1213, | |
ICON0_19_PNG = 0x1214, | |
ICON0_20_PNG = 0x1215, | |
ICON0_21_PNG = 0x1216, | |
ICON0_22_PNG = 0x1217, | |
ICON0_23_PNG = 0x1218, | |
ICON0_24_PNG = 0x1219, | |
ICON0_25_PNG = 0x121A, | |
ICON0_26_PNG = 0x121B, | |
ICON0_27_PNG = 0x121C, | |
ICON0_28_PNG = 0x121D, | |
ICON0_29_PNG = 0x121E, | |
ICON0_30_PNG = 0x121F, | |
PIC0_PNG = 0x1220, | |
SND0_AT9 = 0x1240, | |
PIC1_00_PNG = 0x1241, | |
PIC1_01_PNG = 0x1242, | |
PIC1_02_PNG = 0x1243, | |
PIC1_03_PNG = 0x1244, | |
PIC1_04_PNG = 0x1245, | |
PIC1_05_PNG = 0x1246, | |
PIC1_06_PNG = 0x1247, | |
PIC1_07_PNG = 0x1248, | |
PIC1_08_PNG = 0x1249, | |
PIC1_09_PNG = 0x124A, | |
PIC1_10_PNG = 0x124B, | |
PIC1_11_PNG = 0x124C, | |
PIC1_12_PNG = 0x124D, | |
PIC1_13_PNG = 0x124E, | |
PIC1_14_PNG = 0x124F, | |
PIC1_15_PNG = 0x1250, | |
PIC1_16_PNG = 0x1251, | |
PIC1_17_PNG = 0x1252, | |
PIC1_18_PNG = 0x1253, | |
PIC1_19_PNG = 0x1254, | |
PIC1_20_PNG = 0x1255, | |
PIC1_21_PNG = 0x1256, | |
PIC1_22_PNG = 0x1257, | |
PIC1_23_PNG = 0x1258, | |
PIC1_24_PNG = 0x1259, | |
PIC1_25_PNG = 0x125A, | |
PIC1_26_PNG = 0x125B, | |
PIC1_27_PNG = 0x125C, | |
PIC1_28_PNG = 0x125D, | |
PIC1_29_PNG = 0x125E, | |
PIC1_30_PNG = 0x125F, | |
CHANGEINFO__CHANGEINFO_XML = 0x1260, | |
CHANGEINFO__CHANGEINFO_00_XML = 0x1261, | |
CHANGEINFO__CHANGEINFO_01_XML = 0x1262, | |
CHANGEINFO__CHANGEINFO_02_XML = 0x1263, | |
CHANGEINFO__CHANGEINFO_03_XML = 0x1264, | |
CHANGEINFO__CHANGEINFO_04_XML = 0x1265, | |
CHANGEINFO__CHANGEINFO_05_XML = 0x1266, | |
CHANGEINFO__CHANGEINFO_06_XML = 0x1267, | |
CHANGEINFO__CHANGEINFO_07_XML = 0x1268, | |
CHANGEINFO__CHANGEINFO_08_XML = 0x1269, | |
CHANGEINFO__CHANGEINFO_09_XML = 0x126A, | |
CHANGEINFO__CHANGEINFO_10_XML = 0x126B, | |
CHANGEINFO__CHANGEINFO_11_XML = 0x126C, | |
CHANGEINFO__CHANGEINFO_12_XML = 0x126D, | |
CHANGEINFO__CHANGEINFO_13_XML = 0x126E, | |
CHANGEINFO__CHANGEINFO_14_XML = 0x126F, | |
CHANGEINFO__CHANGEINFO_15_XML = 0x1270, | |
CHANGEINFO__CHANGEINFO_16_XML = 0x1271, | |
CHANGEINFO__CHANGEINFO_17_XML = 0x1272, | |
CHANGEINFO__CHANGEINFO_18_XML = 0x1273, | |
CHANGEINFO__CHANGEINFO_19_XML = 0x1274, | |
CHANGEINFO__CHANGEINFO_20_XML = 0x1275, | |
CHANGEINFO__CHANGEINFO_21_XML = 0x1276, | |
CHANGEINFO__CHANGEINFO_22_XML = 0x1277, | |
CHANGEINFO__CHANGEINFO_23_XML = 0x1278, | |
CHANGEINFO__CHANGEINFO_24_XML = 0x1279, | |
CHANGEINFO__CHANGEINFO_25_XML = 0x127A, | |
CHANGEINFO__CHANGEINFO_26_XML = 0x127B, | |
CHANGEINFO__CHANGEINFO_27_XML = 0x127C, | |
CHANGEINFO__CHANGEINFO_28_XML = 0x127D, | |
CHANGEINFO__CHANGEINFO_29_XML = 0x127E, | |
CHANGEINFO__CHANGEINFO_30_XML = 0x127F, | |
ICON0_DDS = 0x1280, | |
ICON0_00_DDS = 0x1281, | |
ICON0_01_DDS = 0x1282, | |
ICON0_02_DDS = 0x1283, | |
ICON0_03_DDS = 0x1284, | |
ICON0_04_DDS = 0x1285, | |
ICON0_05_DDS = 0x1286, | |
ICON0_06_DDS = 0x1287, | |
ICON0_07_DDS = 0x1288, | |
ICON0_08_DDS = 0x1289, | |
ICON0_09_DDS = 0x128A, | |
ICON0_10_DDS = 0x128B, | |
ICON0_11_DDS = 0x128C, | |
ICON0_12_DDS = 0x128D, | |
ICON0_13_DDS = 0x128E, | |
ICON0_14_DDS = 0x128F, | |
ICON0_15_DDS = 0x1290, | |
ICON0_16_DDS = 0x1291, | |
ICON0_17_DDS = 0x1292, | |
ICON0_18_DDS = 0x1293, | |
ICON0_19_DDS = 0x1294, | |
ICON0_20_DDS = 0x1295, | |
ICON0_21_DDS = 0x1296, | |
ICON0_22_DDS = 0x1297, | |
ICON0_23_DDS = 0x1298, | |
ICON0_24_DDS = 0x1299, | |
ICON0_25_DDS = 0x129A, | |
ICON0_26_DDS = 0x129B, | |
ICON0_27_DDS = 0x129C, | |
ICON0_28_DDS = 0x129D, | |
ICON0_29_DDS = 0x129E, | |
ICON0_30_DDS = 0x129F, | |
PIC0_DDS = 0x12A0, | |
PIC1_DDS = 0x12C0, | |
PIC1_00_DDS = 0x12C1, | |
PIC1_01_DDS = 0x12C2, | |
PIC1_02_DDS = 0x12C3, | |
PIC1_03_DDS = 0x12C4, | |
PIC1_04_DDS = 0x12C5, | |
PIC1_05_DDS = 0x12C6, | |
PIC1_06_DDS = 0x12C7, | |
PIC1_07_DDS = 0x12C8, | |
PIC1_08_DDS = 0x12C9, | |
PIC1_09_DDS = 0x12CA, | |
PIC1_10_DDS = 0x12CB, | |
PIC1_11_DDS = 0x12CC, | |
PIC1_12_DDS = 0x12CD, | |
PIC1_13_DDS = 0x12CE, | |
PIC1_14_DDS = 0x12CF, | |
PIC1_15_DDS = 0x12D0, | |
PIC1_16_DDS = 0x12D1, | |
PIC1_17_DDS = 0x12D2, | |
PIC1_18_DDS = 0x12D3, | |
PIC1_19_DDS = 0x12D4, | |
PIC1_20_DDS = 0x12D5, | |
PIC1_21_DDS = 0x12D6, | |
PIC1_22_DDS = 0x12D7, | |
PIC1_23_DDS = 0x12D8, | |
PIC1_24_DDS = 0x12D9, | |
PIC1_25_DDS = 0x12DA, | |
PIC1_26_DDS = 0x12DB, | |
PIC1_27_DDS = 0x12DC, | |
PIC1_28_DDS = 0x12DD, | |
PIC1_29_DDS = 0x12DE, | |
PIC1_30_DDS = 0x12DF, | |
TROPHY__TROPHY00_TRP = 0x1400, | |
TROPHY__TROPHY01_TRP = 0x1401, | |
TROPHY__TROPHY02_TRP = 0x1402, | |
TROPHY__TROPHY03_TRP = 0x1403, | |
TROPHY__TROPHY04_TRP = 0x1404, | |
TROPHY__TROPHY05_TRP = 0x1405, | |
TROPHY__TROPHY06_TRP = 0x1406, | |
TROPHY__TROPHY07_TRP = 0x1407, | |
TROPHY__TROPHY08_TRP = 0x1408, | |
TROPHY__TROPHY09_TRP = 0x1409, | |
TROPHY__TROPHY10_TRP = 0x140A, | |
TROPHY__TROPHY11_TRP = 0x140B, | |
TROPHY__TROPHY12_TRP = 0x140C, | |
TROPHY__TROPHY13_TRP = 0x140D, | |
TROPHY__TROPHY14_TRP = 0x140E, | |
TROPHY__TROPHY15_TRP = 0x140F, | |
TROPHY__TROPHY16_TRP = 0x1410, | |
TROPHY__TROPHY17_TRP = 0x1411, | |
TROPHY__TROPHY18_TRP = 0x1412, | |
TROPHY__TROPHY19_TRP = 0x1413, | |
TROPHY__TROPHY20_TRP = 0x1414, | |
TROPHY__TROPHY21_TRP = 0x1415, | |
TROPHY__TROPHY22_TRP = 0x1416, | |
TROPHY__TROPHY23_TRP = 0x1417, | |
TROPHY__TROPHY24_TRP = 0x1418, | |
TROPHY__TROPHY25_TRP = 0x1419, | |
TROPHY__TROPHY26_TRP = 0x141A, | |
TROPHY__TROPHY27_TRP = 0x141B, | |
TROPHY__TROPHY28_TRP = 0x141C, | |
TROPHY__TROPHY29_TRP = 0x141D, | |
TROPHY__TROPHY30_TRP = 0x141E, | |
TROPHY__TROPHY31_TRP = 0x141F, | |
TROPHY__TROPHY32_TRP = 0x1420, | |
TROPHY__TROPHY33_TRP = 0x1421, | |
TROPHY__TROPHY34_TRP = 0x1422, | |
TROPHY__TROPHY35_TRP = 0x1423, | |
TROPHY__TROPHY36_TRP = 0x1424, | |
TROPHY__TROPHY37_TRP = 0x1425, | |
TROPHY__TROPHY38_TRP = 0x1426, | |
TROPHY__TROPHY39_TRP = 0x1427, | |
TROPHY__TROPHY40_TRP = 0x1428, | |
TROPHY__TROPHY41_TRP = 0x1429, | |
TROPHY__TROPHY42_TRP = 0x142A, | |
TROPHY__TROPHY43_TRP = 0x142B, | |
TROPHY__TROPHY44_TRP = 0x142C, | |
TROPHY__TROPHY45_TRP = 0x142D, | |
TROPHY__TROPHY46_TRP = 0x142E, | |
TROPHY__TROPHY47_TRP = 0x142F, | |
TROPHY__TROPHY48_TRP = 0x1430, | |
TROPHY__TROPHY49_TRP = 0x1431, | |
TROPHY__TROPHY50_TRP = 0x1432, | |
TROPHY__TROPHY51_TRP = 0x1433, | |
TROPHY__TROPHY52_TRP = 0x1434, | |
TROPHY__TROPHY53_TRP = 0x1435, | |
TROPHY__TROPHY54_TRP = 0x1436, | |
TROPHY__TROPHY55_TRP = 0x1437, | |
TROPHY__TROPHY56_TRP = 0x1438, | |
TROPHY__TROPHY57_TRP = 0x1439, | |
TROPHY__TROPHY58_TRP = 0x143A, | |
TROPHY__TROPHY59_TRP = 0x143B, | |
TROPHY__TROPHY60_TRP = 0x143C, | |
TROPHY__TROPHY61_TRP = 0x143D, | |
TROPHY__TROPHY62_TRP = 0x143E, | |
TROPHY__TROPHY63_TRP = 0x143F, | |
TROPHY__TROPHY64_TRP = 0x1440, | |
TROPHY__TROPHY65_TRP = 0x1441, | |
TROPHY__TROPHY66_TRP = 0x1442, | |
TROPHY__TROPHY67_TRP = 0x1443, | |
TROPHY__TROPHY68_TRP = 0x1444, | |
TROPHY__TROPHY69_TRP = 0x1445, | |
TROPHY__TROPHY70_TRP = 0x1446, | |
TROPHY__TROPHY71_TRP = 0x1447, | |
TROPHY__TROPHY72_TRP = 0x1448, | |
TROPHY__TROPHY73_TRP = 0x1449, | |
TROPHY__TROPHY74_TRP = 0x144A, | |
TROPHY__TROPHY75_TRP = 0x144B, | |
TROPHY__TROPHY76_TRP = 0x144C, | |
TROPHY__TROPHY77_TRP = 0x144D, | |
TROPHY__TROPHY78_TRP = 0x144E, | |
TROPHY__TROPHY79_TRP = 0x144F, | |
TROPHY__TROPHY80_TRP = 0x1450, | |
TROPHY__TROPHY81_TRP = 0x1451, | |
TROPHY__TROPHY82_TRP = 0x1452, | |
TROPHY__TROPHY83_TRP = 0x1453, | |
TROPHY__TROPHY84_TRP = 0x1454, | |
TROPHY__TROPHY85_TRP = 0x1455, | |
TROPHY__TROPHY86_TRP = 0x1456, | |
TROPHY__TROPHY87_TRP = 0x1457, | |
TROPHY__TROPHY88_TRP = 0x1458, | |
TROPHY__TROPHY89_TRP = 0x1459, | |
TROPHY__TROPHY90_TRP = 0x145A, | |
TROPHY__TROPHY91_TRP = 0x145B, | |
TROPHY__TROPHY92_TRP = 0x145C, | |
TROPHY__TROPHY93_TRP = 0x145D, | |
TROPHY__TROPHY94_TRP = 0x145E, | |
TROPHY__TROPHY95_TRP = 0x145F, | |
TROPHY__TROPHY96_TRP = 0x1460, | |
TROPHY__TROPHY97_TRP = 0x1461, | |
TROPHY__TROPHY98_TRP = 0x1462, | |
TROPHY__TROPHY99_TRP = 0x1463, | |
KEYMAP_RP__001_PNG = 0x1600, | |
KEYMAP_RP__002_PNG = 0x1601, | |
KEYMAP_RP__003_PNG = 0x1602, | |
KEYMAP_RP__004_PNG = 0x1603, | |
KEYMAP_RP__005_PNG = 0x1604, | |
KEYMAP_RP__006_PNG = 0x1605, | |
KEYMAP_RP__007_PNG = 0x1606, | |
KEYMAP_RP__008_PNG = 0x1607, | |
KEYMAP_RP__009_PNG = 0x1608, | |
KEYMAP_RP__010_PNG = 0x1609, | |
KEYMAP_RP__00__001_PNG = 0x1610, | |
KEYMAP_RP__00__002_PNG = 0x1611, | |
KEYMAP_RP__00__003_PNG = 0x1612, | |
KEYMAP_RP__00__004_PNG = 0x1613, | |
KEYMAP_RP__00__005_PNG = 0x1614, | |
KEYMAP_RP__00__006_PNG = 0x1615, | |
KEYMAP_RP__00__007_PNG = 0x1616, | |
KEYMAP_RP__00__008_PNG = 0x1617, | |
KEYMAP_RP__00__009_PNG = 0x1618, | |
KEYMAP_RP__00__010_PNG = 0x1619, | |
KEYMAP_RP__01__001_PNG = 0x1620, | |
KEYMAP_RP__01__002_PNG = 0x1621, | |
KEYMAP_RP__01__003_PNG = 0x1622, | |
KEYMAP_RP__01__004_PNG = 0x1623, | |
KEYMAP_RP__01__005_PNG = 0x1624, | |
KEYMAP_RP__01__006_PNG = 0x1625, | |
KEYMAP_RP__01__007_PNG = 0x1626, | |
KEYMAP_RP__01__008_PNG = 0x1627, | |
KEYMAP_RP__01__009_PNG = 0x1628, | |
KEYMAP_RP__01__010_PNG = 0x1629, | |
KEYMAP_RP__02__001_PNG = 0x1630, | |
KEYMAP_RP__02__002_PNG = 0x1631, | |
KEYMAP_RP__02__003_PNG = 0x1632, | |
KEYMAP_RP__02__004_PNG = 0x1633, | |
KEYMAP_RP__02__005_PNG = 0x1634, | |
KEYMAP_RP__02__006_PNG = 0x1635, | |
KEYMAP_RP__02__007_PNG = 0x1636, | |
KEYMAP_RP__02__008_PNG = 0x1637, | |
KEYMAP_RP__02__009_PNG = 0x1638, | |
KEYMAP_RP__02__010_PNG = 0x1639, | |
KEYMAP_RP__03__001_PNG = 0x1640, | |
KEYMAP_RP__03__002_PNG = 0x1641, | |
KEYMAP_RP__03__003_PNG = 0x1642, | |
KEYMAP_RP__03__004_PNG = 0x1643, | |
KEYMAP_RP__03__005_PNG = 0x1644, | |
KEYMAP_RP__03__006_PNG = 0x1645, | |
KEYMAP_RP__03__007_PNG = 0x1646, | |
KEYMAP_RP__03__008_PNG = 0x1647, | |
KEYMAP_RP__03__009_PNG = 0x1648, | |
KEYMAP_RP__03__010_PNG = 0x1649, | |
KEYMAP_RP__04__001_PNG = 0x1650, | |
KEYMAP_RP__04__002_PNG = 0x1651, | |
KEYMAP_RP__04__003_PNG = 0x1652, | |
KEYMAP_RP__04__004_PNG = 0x1653, | |
KEYMAP_RP__04__005_PNG = 0x1654, | |
KEYMAP_RP__04__006_PNG = 0x1655, | |
KEYMAP_RP__04__007_PNG = 0x1656, | |
KEYMAP_RP__04__008_PNG = 0x1657, | |
KEYMAP_RP__04__009_PNG = 0x1658, | |
KEYMAP_RP__04__010_PNG = 0x1659, | |
KEYMAP_RP__05__001_PNG = 0x1660, | |
KEYMAP_RP__05__002_PNG = 0x1661, | |
KEYMAP_RP__05__003_PNG = 0x1662, | |
KEYMAP_RP__05__004_PNG = 0x1663, | |
KEYMAP_RP__05__005_PNG = 0x1664, | |
KEYMAP_RP__05__006_PNG = 0x1665, | |
KEYMAP_RP__05__007_PNG = 0x1666, | |
KEYMAP_RP__05__008_PNG = 0x1667, | |
KEYMAP_RP__05__009_PNG = 0x1668, | |
KEYMAP_RP__05__010_PNG = 0x1669, | |
KEYMAP_RP__06__001_PNG = 0x1670, | |
KEYMAP_RP__06__002_PNG = 0x1671, | |
KEYMAP_RP__06__003_PNG = 0x1672, | |
KEYMAP_RP__06__004_PNG = 0x1673, | |
KEYMAP_RP__06__005_PNG = 0x1674, | |
KEYMAP_RP__06__006_PNG = 0x1675, | |
KEYMAP_RP__06__007_PNG = 0x1676, | |
KEYMAP_RP__06__008_PNG = 0x1677, | |
KEYMAP_RP__06__009_PNG = 0x1678, | |
KEYMAP_RP__06__010_PNG = 0x1679, | |
KEYMAP_RP__07__001_PNG = 0x1680, | |
KEYMAP_RP__07__002_PNG = 0x1681, | |
KEYMAP_RP__07__003_PNG = 0x1682, | |
KEYMAP_RP__07__004_PNG = 0x1683, | |
KEYMAP_RP__07__005_PNG = 0x1684, | |
KEYMAP_RP__07__006_PNG = 0x1685, | |
KEYMAP_RP__07__007_PNG = 0x1686, | |
KEYMAP_RP__07__008_PNG = 0x1687, | |
KEYMAP_RP__07__009_PNG = 0x1688, | |
KEYMAP_RP__07__010_PNG = 0x1689, | |
KEYMAP_RP__08__001_PNG = 0x1690, | |
KEYMAP_RP__08__002_PNG = 0x1691, | |
KEYMAP_RP__08__003_PNG = 0x1692, | |
KEYMAP_RP__08__004_PNG = 0x1693, | |
KEYMAP_RP__08__005_PNG = 0x1694, | |
KEYMAP_RP__08__006_PNG = 0x1695, | |
KEYMAP_RP__08__007_PNG = 0x1696, | |
KEYMAP_RP__08__008_PNG = 0x1697, | |
KEYMAP_RP__08__009_PNG = 0x1698, | |
KEYMAP_RP__08__010_PNG = 0x1699, | |
KEYMAP_RP__09__001_PNG = 0x16A0, | |
KEYMAP_RP__09__002_PNG = 0x16A1, | |
KEYMAP_RP__09__003_PNG = 0x16A2, | |
KEYMAP_RP__09__004_PNG = 0x16A3, | |
KEYMAP_RP__09__005_PNG = 0x16A4, | |
KEYMAP_RP__09__006_PNG = 0x16A5, | |
KEYMAP_RP__09__007_PNG = 0x16A6, | |
KEYMAP_RP__09__008_PNG = 0x16A7, | |
KEYMAP_RP__09__009_PNG = 0x16A8, | |
KEYMAP_RP__09__010_PNG = 0x16A9, | |
KEYMAP_RP__10__001_PNG = 0x16B0, | |
KEYMAP_RP__10__002_PNG = 0x16B1, | |
KEYMAP_RP__10__003_PNG = 0x16B2, | |
KEYMAP_RP__10__004_PNG = 0x16B3, | |
KEYMAP_RP__10__005_PNG = 0x16B4, | |
KEYMAP_RP__10__006_PNG = 0x16B5, | |
KEYMAP_RP__10__007_PNG = 0x16B6, | |
KEYMAP_RP__10__008_PNG = 0x16B7, | |
KEYMAP_RP__10__009_PNG = 0x16B8, | |
KEYMAP_RP__10__010_PNG = 0x16B9, | |
KEYMAP_RP__11__001_PNG = 0x16C0, | |
KEYMAP_RP__11__002_PNG = 0x16C1, | |
KEYMAP_RP__11__003_PNG = 0x16C2, | |
KEYMAP_RP__11__004_PNG = 0x16C3, | |
KEYMAP_RP__11__005_PNG = 0x16C4, | |
KEYMAP_RP__11__006_PNG = 0x16C5, | |
KEYMAP_RP__11__007_PNG = 0x16C6, | |
KEYMAP_RP__11__008_PNG = 0x16C7, | |
KEYMAP_RP__11__009_PNG = 0x16C8, | |
KEYMAP_RP__11__010_PNG = 0x16C9, | |
KEYMAP_RP__12__001_PNG = 0x16D0, | |
KEYMAP_RP__12__002_PNG = 0x16D1, | |
KEYMAP_RP__12__003_PNG = 0x16D2, | |
KEYMAP_RP__12__004_PNG = 0x16D3, | |
KEYMAP_RP__12__005_PNG = 0x16D4, | |
KEYMAP_RP__12__006_PNG = 0x16D5, | |
KEYMAP_RP__12__007_PNG = 0x16D6, | |
KEYMAP_RP__12__008_PNG = 0x16D7, | |
KEYMAP_RP__12__009_PNG = 0x16D8, | |
KEYMAP_RP__12__010_PNG = 0x16D9, | |
KEYMAP_RP__13__001_PNG = 0x16E0, | |
KEYMAP_RP__13__002_PNG = 0x16E1, | |
KEYMAP_RP__13__003_PNG = 0x16E2, | |
KEYMAP_RP__13__004_PNG = 0x16E3, | |
KEYMAP_RP__13__005_PNG = 0x16E4, | |
KEYMAP_RP__13__006_PNG = 0x16E5, | |
KEYMAP_RP__13__007_PNG = 0x16E6, | |
KEYMAP_RP__13__008_PNG = 0x16E7, | |
KEYMAP_RP__13__009_PNG = 0x16E8, | |
KEYMAP_RP__13__010_PNG = 0x16E9, | |
KEYMAP_RP__14__001_PNG = 0x16F0, | |
KEYMAP_RP__14__002_PNG = 0x16F1, | |
KEYMAP_RP__14__003_PNG = 0x16F2, | |
KEYMAP_RP__14__004_PNG = 0x16F3, | |
KEYMAP_RP__14__005_PNG = 0x16F4, | |
KEYMAP_RP__14__006_PNG = 0x16F5, | |
KEYMAP_RP__14__007_PNG = 0x16F6, | |
KEYMAP_RP__14__008_PNG = 0x16F7, | |
KEYMAP_RP__14__009_PNG = 0x16F8, | |
KEYMAP_RP__14__010_PNG = 0x16F9, | |
KEYMAP_RP__15__001_PNG = 0x1700, | |
KEYMAP_RP__15__002_PNG = 0x1701, | |
KEYMAP_RP__15__003_PNG = 0x1702, | |
KEYMAP_RP__15__004_PNG = 0x1703, | |
KEYMAP_RP__15__005_PNG = 0x1704, | |
KEYMAP_RP__15__006_PNG = 0x1705, | |
KEYMAP_RP__15__007_PNG = 0x1706, | |
KEYMAP_RP__15__008_PNG = 0x1707, | |
KEYMAP_RP__15__009_PNG = 0x1708, | |
KEYMAP_RP__15__010_PNG = 0x1709, | |
KEYMAP_RP__16__001_PNG = 0x1710, | |
KEYMAP_RP__16__002_PNG = 0x1711, | |
KEYMAP_RP__16__003_PNG = 0x1712, | |
KEYMAP_RP__16__004_PNG = 0x1713, | |
KEYMAP_RP__16__005_PNG = 0x1714, | |
KEYMAP_RP__16__006_PNG = 0x1715, | |
KEYMAP_RP__16__007_PNG = 0x1716, | |
KEYMAP_RP__16__008_PNG = 0x1717, | |
KEYMAP_RP__16__009_PNG = 0x1718, | |
KEYMAP_RP__16__010_PNG = 0x1719, | |
KEYMAP_RP__17__001_PNG = 0x1720, | |
KEYMAP_RP__17__002_PNG = 0x1721, | |
KEYMAP_RP__17__003_PNG = 0x1722, | |
KEYMAP_RP__17__004_PNG = 0x1723, | |
KEYMAP_RP__17__005_PNG = 0x1724, | |
KEYMAP_RP__17__006_PNG = 0x1725, | |
KEYMAP_RP__17__007_PNG = 0x1726, | |
KEYMAP_RP__17__008_PNG = 0x1727, | |
KEYMAP_RP__17__009_PNG = 0x1728, | |
KEYMAP_RP__17__010_PNG = 0x1729, | |
KEYMAP_RP__18__001_PNG = 0x1730, | |
KEYMAP_RP__18__002_PNG = 0x1731, | |
KEYMAP_RP__18__003_PNG = 0x1732, | |
KEYMAP_RP__18__004_PNG = 0x1733, | |
KEYMAP_RP__18__005_PNG = 0x1734, | |
KEYMAP_RP__18__006_PNG = 0x1735, | |
KEYMAP_RP__18__007_PNG = 0x1736, | |
KEYMAP_RP__18__008_PNG = 0x1737, | |
KEYMAP_RP__18__009_PNG = 0x1738, | |
KEYMAP_RP__18__010_PNG = 0x1739, | |
KEYMAP_RP__19__001_PNG = 0x1740, | |
KEYMAP_RP__19__002_PNG = 0x1741, | |
KEYMAP_RP__19__003_PNG = 0x1742, | |
KEYMAP_RP__19__004_PNG = 0x1743, | |
KEYMAP_RP__19__005_PNG = 0x1744, | |
KEYMAP_RP__19__006_PNG = 0x1745, | |
KEYMAP_RP__19__007_PNG = 0x1746, | |
KEYMAP_RP__19__008_PNG = 0x1747, | |
KEYMAP_RP__19__009_PNG = 0x1748, | |
KEYMAP_RP__19__010_PNG = 0x1749, | |
KEYMAP_RP__20__001_PNG = 0x1750, | |
KEYMAP_RP__20__002_PNG = 0x1751, | |
KEYMAP_RP__20__003_PNG = 0x1752, | |
KEYMAP_RP__20__004_PNG = 0x1753, | |
KEYMAP_RP__20__005_PNG = 0x1754, | |
KEYMAP_RP__20__006_PNG = 0x1755, | |
KEYMAP_RP__20__007_PNG = 0x1756, | |
KEYMAP_RP__20__008_PNG = 0x1757, | |
KEYMAP_RP__20__009_PNG = 0x1758, | |
KEYMAP_RP__20__010_PNG = 0x1759, | |
KEYMAP_RP__21__001_PNG = 0x1760, | |
KEYMAP_RP__21__002_PNG = 0x1761, | |
KEYMAP_RP__21__003_PNG = 0x1762, | |
KEYMAP_RP__21__004_PNG = 0x1763, | |
KEYMAP_RP__21__005_PNG = 0x1764, | |
KEYMAP_RP__21__006_PNG = 0x1765, | |
KEYMAP_RP__21__007_PNG = 0x1766, | |
KEYMAP_RP__21__008_PNG = 0x1767, | |
KEYMAP_RP__21__009_PNG = 0x1768, | |
KEYMAP_RP__21__010_PNG = 0x1769, | |
KEYMAP_RP__22__001_PNG = 0x1770, | |
KEYMAP_RP__22__002_PNG = 0x1771, | |
KEYMAP_RP__22__003_PNG = 0x1772, | |
KEYMAP_RP__22__004_PNG = 0x1773, | |
KEYMAP_RP__22__005_PNG = 0x1774, | |
KEYMAP_RP__22__006_PNG = 0x1775, | |
KEYMAP_RP__22__007_PNG = 0x1776, | |
KEYMAP_RP__22__008_PNG = 0x1777, | |
KEYMAP_RP__22__009_PNG = 0x1778, | |
KEYMAP_RP__22__010_PNG = 0x1779, | |
KEYMAP_RP__23__001_PNG = 0x1780, | |
KEYMAP_RP__23__002_PNG = 0x1781, | |
KEYMAP_RP__23__003_PNG = 0x1782, | |
KEYMAP_RP__23__004_PNG = 0x1783, | |
KEYMAP_RP__23__005_PNG = 0x1784, | |
KEYMAP_RP__23__006_PNG = 0x1785, | |
KEYMAP_RP__23__007_PNG = 0x1786, | |
KEYMAP_RP__23__008_PNG = 0x1787, | |
KEYMAP_RP__23__009_PNG = 0x1788, | |
KEYMAP_RP__23__010_PNG = 0x1789, | |
KEYMAP_RP__24__001_PNG = 0x1790, | |
KEYMAP_RP__24__002_PNG = 0x1791, | |
KEYMAP_RP__24__003_PNG = 0x1792, | |
KEYMAP_RP__24__004_PNG = 0x1793, | |
KEYMAP_RP__24__005_PNG = 0x1794, | |
KEYMAP_RP__24__006_PNG = 0x1795, | |
KEYMAP_RP__24__007_PNG = 0x1796, | |
KEYMAP_RP__24__008_PNG = 0x1797, | |
KEYMAP_RP__24__009_PNG = 0x1798, | |
KEYMAP_RP__24__010_PNG = 0x1799, | |
KEYMAP_RP__25__001_PNG = 0x17A0, | |
KEYMAP_RP__25__002_PNG = 0x17A1, | |
KEYMAP_RP__25__003_PNG = 0x17A2, | |
KEYMAP_RP__25__004_PNG = 0x17A3, | |
KEYMAP_RP__25__005_PNG = 0x17A4, | |
KEYMAP_RP__25__006_PNG = 0x17A5, | |
KEYMAP_RP__25__007_PNG = 0x17A6, | |
KEYMAP_RP__25__008_PNG = 0x17A7, | |
KEYMAP_RP__25__009_PNG = 0x17A8, | |
KEYMAP_RP__25__010_PNG = 0x17A9, | |
KEYMAP_RP__26__001_PNG = 0x17B0, | |
KEYMAP_RP__26__002_PNG = 0x17B1, | |
KEYMAP_RP__26__003_PNG = 0x17B2, | |
KEYMAP_RP__26__004_PNG = 0x17B3, | |
KEYMAP_RP__26__005_PNG = 0x17B4, | |
KEYMAP_RP__26__006_PNG = 0x17B5, | |
KEYMAP_RP__26__007_PNG = 0x17B6, | |
KEYMAP_RP__26__008_PNG = 0x17B7, | |
KEYMAP_RP__26__009_PNG = 0x17B8, | |
KEYMAP_RP__26__010_PNG = 0x17B9, | |
KEYMAP_RP__27__001_PNG = 0x17C0, | |
KEYMAP_RP__27__002_PNG = 0x17C1, | |
KEYMAP_RP__27__003_PNG = 0x17C2, | |
KEYMAP_RP__27__004_PNG = 0x17C3, | |
KEYMAP_RP__27__005_PNG = 0x17C4, | |
KEYMAP_RP__27__006_PNG = 0x17C5, | |
KEYMAP_RP__27__007_PNG = 0x17C6, | |
KEYMAP_RP__27__008_PNG = 0x17C7, | |
KEYMAP_RP__27__009_PNG = 0x17C8, | |
KEYMAP_RP__27__010_PNG = 0x17C9, | |
KEYMAP_RP__28__001_PNG = 0x17D0, | |
KEYMAP_RP__28__002_PNG = 0x17D1, | |
KEYMAP_RP__28__003_PNG = 0x17D2, | |
KEYMAP_RP__28__004_PNG = 0x17D3, | |
KEYMAP_RP__28__005_PNG = 0x17D4, | |
KEYMAP_RP__28__006_PNG = 0x17D5, | |
KEYMAP_RP__28__007_PNG = 0x17D6, | |
KEYMAP_RP__28__008_PNG = 0x17D7, | |
KEYMAP_RP__28__009_PNG = 0x17D8, | |
KEYMAP_RP__28__010_PNG = 0x17D9, | |
KEYMAP_RP__29__001_PNG = 0x17E0, | |
KEYMAP_RP__29__002_PNG = 0x17E1, | |
KEYMAP_RP__29__003_PNG = 0x17E2, | |
KEYMAP_RP__29__004_PNG = 0x17E3, | |
KEYMAP_RP__29__005_PNG = 0x17E4, | |
KEYMAP_RP__29__006_PNG = 0x17E5, | |
KEYMAP_RP__29__007_PNG = 0x17E6, | |
KEYMAP_RP__29__008_PNG = 0x17E7, | |
KEYMAP_RP__29__009_PNG = 0x17E8, | |
KEYMAP_RP__29__010_PNG = 0x17E9, | |
KEYMAP_RP__30__001_PNG = 0x17F0, | |
KEYMAP_RP__30__002_PNG = 0x17F1, | |
KEYMAP_RP__30__003_PNG = 0x17F2, | |
KEYMAP_RP__30__004_PNG = 0x17F3, | |
KEYMAP_RP__30__005_PNG = 0x17F4, | |
KEYMAP_RP__30__006_PNG = 0x17F5, | |
KEYMAP_RP__30__007_PNG = 0x17F6, | |
KEYMAP_RP__30__008_PNG = 0x17F7, | |
KEYMAP_RP__30__009_PNG = 0x17F8, | |
KEYMAP_RP__30__010_PNG = 0x17F9 | |
} ENTRY_ID; | |
typedef struct { | |
ENTRY_ID pkg_entry_id <format=hex>; | |
uint32 pkg_entry_0x4; | |
uint32 pkg_entry_flags_1 <format=hex>; | |
uint32 pkg_entry_flags_2 <format=hex>; | |
uint32 pkg_entry_offset <format=hex>; | |
uint32 pkg_entry_size <format=hex>; | |
uint64 pkg_entry_padding; | |
} pkg_table_entry; | |
// ****************************************** PKG ************************************************** | |
BigEndian(); | |
pkg_header header; | |
FSeek(header.pkg_table_entry_offset); | |
local int e; | |
for (e = 0; e < header.pkg_table_entry_count; e++) { | |
pkg_table_entry entry; | |
} | |
// *************************************** Warnings *********************************************** | |
// It's not really useful to see just the last warning, | |
// so inform us how many warnings we should see in output. | |
if (warnings > 1) { | |
Warning("%d warnings have occured and logged to the output box!", warnings); | |
} | |
// This will make the template show "Template executed successfully." | |
if (warnings != 0) { | |
SPrintf(temp_warning, "%d warnings found, template may not have run successfully!", warnings); | |
return temp_warning; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment