PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
Format PFP-Files Version 3

Ein PFP-File in der Version 3 ist in mehrere aufeinanderfolgende Abschnitte aufgeteilt:

  • 24 Byte langer Header
  • optionaler 8-Byte langer Komprimierungsheader
  • Chunks

Alle 4-Byte Größenangaben sind im LittleEndian-Format!

Header

Der Header einer Version 3 Datei sieht so aus:

Byte 0: String "PFP-File" 8 Bytes
Byte 8: PFP-File-Version (3) 1 Byte
Byte 9: Länge des PFP-Header (24) 1 Byte
Byte 10: File-ID, 4 Byte-String 4 Byte
Byte 14: Unterversion 1 Byte
Byte 15: Hauptversion 1 Byte
Byte 16: Komprimierung 1 Byte
0=unkomprimiert
1=Zlib
2=Bzip2
Byte 17: reserviert 3 Byte
Byte 20: Timestamp der Erstellung (UTC) 4 Byte

Im Anschluss an den Header folgen die Nutzdaten. Sofern keine Komprimierung verwendet wurde, geht es sofort mit dem ersten Chunk los. Ist die Datei komprimiert folgt erst der Komprimierungsheader:

Komprimierungsheader
Byte 0: Größe der Nutzdaten unkomprimiert in Byte 4 Byte
Byte 4: Größe der Nutzdaten komprimiert in Byte 4 Byte
Chunks

In einem PFP-File können beliebig viele Chunks vorkommen. Ein Chunk besteht immer aus einem 4-Byte langen Namen, gefolgt von einem 4-Byte Integer, der die Größe des Chunks einschließlich des Headers angibt, gefolgt von den Nutzdaten. Abgesehen von den unten aufgeführten vordefinierten Chunks, können beliebig viele Chunks mit gleichem Namen vorhanden sein.

Ein Chunk muss nicht zwingend Nutzdaten enthalten.

Byte 0: Chunkname, 4 Byte-String in Grossbuchstaben 4 Byte
Byte 4: Größe des Chunks einschließlich 8-Byte Header 4 Byte
Byte 8: Nutzdaten des Chunks
Vordefinierte Chunks

Die nachfolgenden Chunks sind vordefiniert, aber optional

  • Author

    Byte 0: AUTH
    Byte 4: Länge des nachfolgenden Strings
    Byte 8: Name des Authors mit schließendem 0-Byte

    Der Name des Authors kann mit der Funktion PFPFile::SetAuthor gesetzt werden.

  • Name

    Byte 0: NAME
    Byte 4: Länge des nachfolgenden Strings
    Byte 8: Name der Datei oder Beschreibung des Inhalts mit schließendem 0-Byte

    Der Name des Files kann mit der Funktion PFPFile::SetName gesetzt werden.

  • Description

    Byte 0: DESC
    Byte 4: Länge des nachfolgenden Strings
    Byte 8: Nähere Beschreibung mit schließendem 0-Byte

    Die Description kann mit der Funktion PFPFile::SetDescription gesetzt werden.

  • Copyright

    Byte 0: COPY
    Byte 4: Länge des nachfolgenden Strings
    Byte 8: Copyright-String mit schließendem 0-Byte

    Der Copyright-String kann mit der Funktion PFPFile::SetCopyright gesetzt werden.

End of File

Dieser Chunk ist immer der letzte in der Datei und kennzeichnet das Ende der Nutzdaten.

Byte 0: ENDF
Byte 4: 0
Nutzung
Um das Lesen und Schreiben solcher Dateien zu vereinfachen, kann die Klasse PFPFile in Kombination mit PFPChunk verwendet werden.