Playgo-chunk.dat

From PS4 Developer wiki
Jump to navigation Jump to search

Internal Structure Examples

Structure

#define PLGO_H 0x6F676C70
#define CHUNK_COUNT 8

#define IndexTable 0
#define Table2 1 //u16's
#define KeyTable 2
#define Table4 3 //unknown length.. same size as table8
#define Table5 4 //table of random stuff, &table5[0x18] u16's
#define Table6 5 //u16's
#define Table7 6 //string 'Scenario #X' , count possibly greater than 1 on some cases
#define Table8 7 //size of table4

#pragma pack(push, 1)

typedef char* key_t;

typedef struct{
	u32 id; // 1, 2, 3, 4...
	u32 unk[4]; //ignore

	u16 unk1; //idk but valueable
	u16 entryCount; //of the index table
	u16 table6_entryCount;
} table5_t; //header_t->table5_count

typedef struct{
	u32 offest; //offset??
	u32 unk;
} table4_t;

typedef struct{
	u64 indexMagic; //80 00 03
	u32 unk1;
	u32 unk2; //sometimes hold value of 1
	u32 unk3; //ff's.. sometimes different
	u32 unk5; //ff's.. sometimes different
	u32 unk6; //holds value of 2 or increments by 2
	u32 keyTableOffset;
} index_t; //header_t->indexCount

typedef struct{
	u32 offset;
	u32 length;
} chunk_t;

typedef struct{
	u64 magic;
	u16 version; //maybe not
	u16 indexCount;
	u16 Table2Count; //table 6 and table 2 have same length (filled with u16's)
	u16 Table5Count;
	u32 fileSize;
	u32 unk2;
	u64 unk3;
	u8 unk4[0x20];
	char title[0x80];
	chunk_t chunks[CHUNK_COUNT];
} header_t;

class PlayGo
{
public:
	PlayGo(u8* data);

	header_t header;

	/* only implemented indexData and keyData */
	index_t* indexData;//header_t->indexCount
	u16* table2;
	key_t* keyData;
	table4_t* table4; //size unknown??
	table5_t* table5; //header->table5_count
	u16* table6; //table5_t->table6_entryCount
	key_t* table7; //header->table5_count
	table4_t* table8; //table 8 == table 4

};

#pragma pack(pop)

Header

0x00  70 6C 67 6F 00 00 00 00 01 00 1C 00 1C 00 01 00  plgo............
0x10  40 0A 00 00 00 00 01 00 00 00 00 00 00 00 00 00  @...............
0x20  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0x30  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
0x40  55 50 32 31 30 32 2D 43 55 53 41 30 30 30 34 32  UP2102-CUSA00042
0x50  5F 30 30 2D 42 4C 41 43 4B 4C 49 47 48 54 32 4F  _00-BLACKLIGHT2O
0x60  52 42 49 53 00 00 00 00 00 00 00 00 00 00 00 00  RBIS............
0x70  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x80  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x90  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0xA0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0xB0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0xC0  00 01 00 00 80 03 00 00 80 04 00 00 38 00 00 00  ....€...€...8...
0xD0  C0 04 00 00 88 01 00 00 50 06 00 00 C0 01 00 00  À...ˆ...P...À...
0xE0  D0 09 00 00 20 00 00 00 F0 09 00 00 38 00 00 00  Ð... ...ð...8...
0xF0  30 0A 00 00 0C 00 00 00 10 08 00 00 C0 01 00 00  0...........À...
Offset Size Name Example Value (conversion) Notes
0x00 0x04 magic 70 6C 67 6F plgo (utf-8)
0x10 0x04 plgo_length 40 0A 00 00 0xA40 (Little endian)
0x40 0x80 title 55 50 32 31 30 32 2D 43 55 53 41 30 30 30 34 32 5F 30 30 2D 42 4C 41 43 4B 4C 49 47 48 54 32 4F 52 42 49 53 00 ... UP2102-CUSA00042_00-BLACKLIGHT2ORBIS ... (utf-8) Padded
0xC0 0x04 chunk_offset 00 01 00 00 0x100 (Little endian) index_table_start, offset_2, key_table_start, offset_4, offset_5, offset_6, offset_7, offset_8
0xC4 0x04 chunk_length 80 03 00 00 0x380 (Little endian) index_table_length, length_2, key_table_length, length_4, length_5, length_6, length_7, length_8

Index Table (Offset/Length 1)

0x100  80 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00  €...............
0x110  FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00  ÿÿÿÿÿÿÿÿ........
0x120  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x130  FF FF FF FF FF FF FF FF 04 00 00 00 04 00 00 00  ÿÿÿÿÿÿÿÿ........
0x140  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x150  FF FF FF FF FF FF FF FF 06 00 00 00 0B 00 00 00  ÿÿÿÿÿÿÿÿ........
0x160  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x170  FF FF FF FF FF FF FF FF 08 00 00 00 12 00 00 00  ÿÿÿÿÿÿÿÿ........
0x180  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x190  FF FF FF FF FF FF FF FF 0A 00 00 00 18 00 00 00  ÿÿÿÿÿÿÿÿ........
0x1A0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x1B0  FF FF FF FF FF FF FF FF 0C 00 00 00 27 00 00 00  ÿÿÿÿÿÿÿÿ....'...
0x1C0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x1D0  FF FF FF FF FF FF FF FF 0E 00 00 00 37 00 00 00  ÿÿÿÿÿÿÿÿ....7...
0x1E0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x1F0  FF FF FF FF FF FF FF FF 10 00 00 00 44 00 00 00  ÿÿÿÿÿÿÿÿ....D...
0x200  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x210  FF FF FF FF FF FF FF FF 12 00 00 00 52 00 00 00  ÿÿÿÿÿÿÿÿ....R...
0x220  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x230  FF FF FF FF FF FF FF FF 14 00 00 00 5D 00 00 00  ÿÿÿÿÿÿÿÿ....]...
0x240  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x250  FF FF FF FF FF FF FF FF 16 00 00 00 69 00 00 00  ÿÿÿÿÿÿÿÿ....i...
0x260  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x270  FF FF FF FF FF FF FF FF 18 00 00 00 7E 00 00 00  ÿÿÿÿÿÿÿÿ....~...
0x280  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x290  FF FF FF FF FF FF FF FF 1A 00 00 00 94 00 00 00  ÿÿÿÿÿÿÿÿ....”...
0x2A0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x2B0  FF FF FF FF FF FF FF FF 1C 00 00 00 A3 00 00 00  ÿÿÿÿÿÿÿÿ....£...
0x2C0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x2D0  FF FF FF FF FF FF FF FF 1E 00 00 00 B3 00 00 00  ÿÿÿÿÿÿÿÿ....³...
0x2E0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x2F0  FF FF FF FF FF FF FF FF 20 00 00 00 C5 00 00 00  ÿÿÿÿÿÿÿÿ ...Å...
0x300  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x310  FF FF FF FF FF FF FF FF 22 00 00 00 D8 00 00 00  ÿÿÿÿÿÿÿÿ"...Ø...
0x320  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x330  FF FF FF FF FF FF FF FF 24 00 00 00 E8 00 00 00  ÿÿÿÿÿÿÿÿ$...è...
0x340  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x350  FF FF FF FF FF FF FF FF 26 00 00 00 F9 00 00 00  ÿÿÿÿÿÿÿÿ&...ù...
0x360  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x370  FF FF FF FF FF FF FF FF 28 00 00 00 06 01 00 00  ÿÿÿÿÿÿÿÿ(.......
0x380  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x390  FF FF FF FF FF FF FF FF 2A 00 00 00 14 01 00 00  ÿÿÿÿÿÿÿÿ*.......
0x3A0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x3B0  FF FF FF FF FF FF FF FF 2C 00 00 00 23 01 00 00  ÿÿÿÿÿÿÿÿ,...#...
0x3C0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00  €...............
0x3D0  FF FF FF FF FF FF FF FF 2E 00 00 00 33 01 00 00  ÿÿÿÿÿÿÿÿ....3...
0x3E0  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x3F0  FF FF FF FF FF FF FF FF 2E 00 00 00 41 01 00 00  ÿÿÿÿÿÿÿÿ....A...
0x400  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x410  FF FF FF FF FF FF FF FF 30 00 00 00 50 01 00 00  ÿÿÿÿÿÿÿÿ0...P...
0x420  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x430  FF FF FF FF FF FF FF FF 32 00 00 00 5F 01 00 00  ÿÿÿÿÿÿÿÿ2..._...
0x440  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x450  FF FF FF FF FF FF FF FF 34 00 00 00 6F 01 00 00  ÿÿÿÿÿÿÿÿ4...o...
0x460  80 00 03 00 00 00 00 00 00 00 00 00 00 00 01 00  €...............
0x470  FF FF FF FF FF FF FF FF 36 00 00 00 7B 01 00 00  ÿÿÿÿÿÿÿÿ6...{...
Offset Size Name Example Value (conversion) Notes
- 0x04 key_table_offset 7B 01 00 00 0x17B (Little endian) plgo Offset: key_table_start + key_table_offset

? (Offset/Length 2)

0x480  00 00 1A 00 1B 00 11 00 01 00 03 00 02 00 0B 00  ................
0x490  0A 00 0D 00 0C 00 13 00 12 00 17 00 16 00 19 00  ................
0x4A0  18 00 05 00 04 00 07 00 06 00 09 00 08 00 0E 00  ................
0x4B0  10 00 0F 00 15 00 14 00                          ........

Key Table (Offset/Length 3)

0x4C0  45 4C 46 00 53 59 53 54 45 4D 00 53 43 52 49 50  ELF.SYSTEM.SCRIP
0x4D0  54 00 41 55 44 49 4F 00 43 48 41 52 41 43 54 45  T.AUDIO.CHARACTE
0x4E0  52 53 5F 54 46 43 00 43 48 41 52 41 43 54 45 52  RS_TFC.CHARACTER
0x4F0  53 5F 44 41 54 41 00 48 45 4C 4F 44 45 43 4B 5F  S_DATA.HELODECK_
0x500  54 46 43 00 48 45 4C 4F 44 45 43 4B 5F 44 41 54  TFC.HELODECK_DAT
0x510  41 00 48 45 52 4F 45 53 5F 54 46 43 00 48 45 52  A.HEROES_TFC.HER
0x520  4F 45 53 5F 44 41 54 41 00 53 45 41 52 43 48 41  OES_DATA.SEARCHA
0x530  4E 44 44 45 53 54 52 4F 59 5F 54 46 43 00 53 45  NDDESTROY_TFC.SE
0x540  41 52 43 48 41 4E 44 44 45 53 54 52 4F 59 5F 44  ARCHANDDESTROY_D
0x550  41 54 41 00 57 45 41 50 4F 4E 47 45 41 52 5F 54  ATA.WEAPONGEAR_T
0x560  46 43 00 57 45 41 50 4F 4E 47 45 41 52 5F 44 41  FC.WEAPONGEAR_DA
0x570  54 41 00 57 45 41 50 4F 4E 50 52 49 4D 41 52 59  TA.WEAPONPRIMARY
0x580  5F 54 46 43 00 57 45 41 50 4F 4E 50 52 49 4D 41  _TFC.WEAPONPRIMA
0x590  52 59 5F 44 41 54 41 00 43 4F 4E 54 41 49 4E 4D  RY_DATA.CONTAINM
0x5A0  45 4E 54 5F 54 46 43 00 43 4F 4E 54 41 49 4E 4D  ENT_TFC.CONTAINM
0x5B0  45 4E 54 5F 44 41 54 41 00 44 45 41 44 4C 4F 43  ENT_DATA.DEADLOC
0x5C0  4B 5F 54 46 43 00 44 45 41 44 4C 4F 43 4B 5F 44  K_TFC.DEADLOCK_D
0x5D0  41 54 41 00 48 45 41 56 59 4D 45 54 41 4C 5F 54  ATA.HEAVYMETAL_T
0x5E0  46 43 00 48 45 41 56 59 4D 45 54 41 4C 5F 44 41  FC.HEAVYMETAL_DA
0x5F0  54 41 00 4F 4E 53 4C 41 55 47 48 54 5F 54 46 43  TA.ONSLAUGHT_TFC
0x600  00 4F 4E 53 4C 41 55 47 48 54 5F 44 41 54 41 00  .ONSLAUGHT_DATA.
0x610  50 49 4C 45 44 52 49 56 45 52 5F 54 46 43 00 50  PILEDRIVER_TFC.P
0x620  49 4C 45 44 52 49 56 45 52 5F 44 41 54 41 00 56  ILEDRIVER_DATA.V
0x630  45 52 54 49 47 4F 5F 54 46 43 00 56 45 52 54 49  ERTIGO_TFC.VERTI
0x640  47 4F 5F 44 41 54 41 00                          GO_DATA.

? (Offset/Length 4)

0x650  00 00 00 00 00 00 00 00 00 00 29 01 00 00 00 00  ..........).....
0x660  00 00 28 01 00 00 00 00 00 00 E8 12 00 00 00 00  ..(.......è.....
0x670  00 00 0F 14 00 00 00 00 00 00 31 03 00 00 00 00  ..........1.....
0x680  00 00 3F 17 00 00 00 00 00 00 FD 10 00 00 00 00  ..?.......ý.....
0x690  00 00 3B 28 00 00 00 00 00 00 F2 03 00 00 00 00  ..;(......ò.....
0x6A0  00 00 2C 2C 00 00 00 00 00 00 46 12 00 00 00 00  ..,,......F.....
0x6B0  00 00 71 3E 00 00 00 00 00 00 0E 07 00 00 00 00  ..q>............
0x6C0  00 00 7E 45 00 00 00 00 00 00 4A 12 00 00 00 00  ..~E......J.....
0x6D0  00 00 C7 57 00 00 00 00 00 00 BE 09 00 00 00 00  ..ÇW......¾.....
0x6E0  00 00 84 61 00 00 00 00 00 00 F9 12 00 00 00 00  ..„a......ù.....
0x6F0  00 00 7C 74 00 00 00 00 00 00 74 03 00 00 00 00  ..|t......t.....
0x700  00 00 EF 77 00 00 00 00 00 00 7F 08 00 00 00 00  ..ïw............
0x710  00 00 6D 80 00 00 00 00 00 00 E1 02 00 00 00 00  ..m€......á.....
0x720  00 00 4D 83 00 00 00 00 00 00 18 18 00 00 00 00  ..Mƒ............
0x730  00 00 64 9B 00 00 00 00 00 00 01 00 00 00 00 00  ..d›............
0x740  00 00 64 9B 00 00 00 00 00 00 F8 0A 00 00 00 00  ..d›......ø.....
0x750  00 00 5B A6 00 00 00 00 00 00 9A 13 00 00 00 00  ..[¦......š.....
0x760  00 00 F4 B9 00 00 00 00 00 00 D6 03 00 00 00 00  ..ô¹......Ö.....
0x770  00 00 C9 BD 00 00 00 00 00 00 5A 00 00 00 00 00  ..ɽ......Z.....
0x780  00 00 22 BE 00 00 00 00 00 00 D8 00 00 00 00 00  .."¾......Ø.....
0x790  00 00 F9 BE 00 00 00 00 00 00 44 03 00 00 00 00  ..ù¾......D.....
0x7A0  00 00 3C C2 00 00 00 00 00 00 0B 0A 00 00 00 00  ..<Â............
0x7B0  00 00 46 CC 00 00 00 00 00 00 E9 04 00 00 00 00  ..FÌ......é.....
0x7C0  00 00 2E D1 00 00 00 00 00 00 2C 23 00 00 00 00  ...Ñ......,#....
0x7D0  00 00 59 F4 00 00 00 00 00 00 A9 04 00 00 00 00  ..Yô......©.....
0x7E0  00 00 01 F9 00 00 00 00 00 00 7C 28 00 00 00 00  ...ù......|(....
0x7F0  00 00 7C 21 01 00 00 00 00 00 EA 02 00 00 00 00  ..|!......ê.....
0x800  00 00 65 24 01 00 00 00 00 00 39 00 00 00 00 00  ..e$......9.....

? (Offset/Length 5)

0x9D0  01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0x9E0  00 00 00 00 10 00 1C 00 00 00 00 00 00 00 00 00  ................

? (Offset/Length 6)

0x9F0  00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00  ................
0xA00  08 00 09 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F 00  ................
0xA10  10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00  ................
0xA20  18 00 19 00 1A 00 1B 00                          ........

? (Offset/Length 7)

0xA30  53 63 65 6E 61 72 69 6F 20 23 30 00              Scenario #0.

? (Offset/Length 8)

0x810  00 00 00 00 00 00 00 00 00 00 1C 00 00 00 00 00  ................
0x820  00 00 1C 00 00 00 00 00 00 00 92 1E 00 00 00 00  ..........’.....
0x830  00 00 AE 1E 00 00 00 00 00 00 7A 07 00 00 00 00  ..®.......z.....
0x840  00 00 28 26 00 00 00 00 00 00 AF 3F 00 00 00 00  ..(&......¯?....
0x850  00 00 D7 65 00 00 00 00 00 00 40 0A 00 00 00 00  ..×e......@.....
0x860  00 00 17 70 00 00 00 00 00 00 2B 28 00 00 00 00  ...p......+(....
0x870  00 00 42 98 00 00 00 00 00 00 4D 11 00 00 00 00  ..B˜......M.....
0x880  00 00 8F A9 00 00 00 00 00 00 A8 28 00 00 00 00  ...©......¨(....
0x890  00 00 37 D2 00 00 00 00 00 00 F9 16 00 00 00 00  ..7Ò......ù.....
0x8A0  00 00 30 E9 00 00 00 00 00 00 00 2B 00 00 00 00  ..0é.......+....
0x8B0  00 00 30 14 01 00 00 00 00 00 7E 08 00 00 00 00  ..0.......~.....
0x8C0  00 00 AE 1C 01 00 00 00 00 00 C7 10 00 00 00 00  ..®.......Ç.....
0x8D0  00 00 75 2D 01 00 00 00 00 00 BB 06 00 00 00 00  ..u-......».....
0x8E0  00 00 30 34 01 00 00 00 00 00 F4 71 00 00 00 00  ..04......ôq....
0x8F0  00 00 24 A6 01 00 00 00 00 00 01 00 00 00 00 00  ..$¦............
0x900  00 00 25 A6 01 00 00 00 00 00 B8 1C 00 00 00 00  ..%¦......¸.....
0x910  00 00 DD C2 01 00 00 00 00 00 CE 32 00 00 00 00  ..ÝÂ......Î2....
0x920  00 00 AB F5 01 00 00 00 00 00 43 08 00 00 00 00  ..«õ......C.....
0x930  00 00 EE FD 01 00 00 00 00 00 38 01 00 00 00 00  ..îý......8.....
0x940  00 00 26 FF 01 00 00 00 00 00 23 02 00 00 00 00  ..&ÿ......#.....
0x950  00 00 49 01 02 00 00 00 00 00 FA 08 00 00 00 00  ..I.......ú.....
0x960  00 00 43 0A 02 00 00 00 00 00 EE 17 00 00 00 00  ..C.......î.....
0x970  00 00 31 22 02 00 00 00 00 00 3D 0B 00 00 00 00  ..1"......=.....
0x980  00 00 6E 2D 02 00 00 00 00 00 51 5D 00 00 00 00  ..n-......Q]....
0x990  00 00 BF 8A 02 00 00 00 00 00 7F 0A 00 00 00 00  ..¿Š............
0x9A0  00 00 3E 95 02 00 00 00 00 00 EA 64 00 00 00 00  ..>•......êd....
0x9B0  00 00 28 FA 02 00 00 00 00 00 E9 02 00 00 00 00  ..(ú......é.....
0x9C0  00 00 11 FD 02 00 00 00 00 00 39 00 00 00 00 00  ...ý......9.....