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 hidden or 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