This is a really good example of the simplest archive format possible.
2 i' a) H: c3 n! j$ e* o8 W( l. `9 F3 k' s2 C
The archive begins with a 4 byte signature 'PFPK'.
# Y9 y& L% z. xImmediately after that is an 32 bit integer telling you how many files are in the archive.
5 W; ?! ]4 P4 ]7 h9 y
' v$ w+ J4 v3 N8 g2 w' z4 jThen it starts the file allocation table.
0 T9 z$ W9 ?4 ?; G" K9 T* w! q) JEach entry consists of: * h5 S; Z% K9 O
Byte - Number of characters in the file's name.
) [$ q) a& r' P1 \String - File name. 8 h) ^. C, d7 A8 i
Int32 - Address of the beginning of the file.
* @( g4 S5 ?& K! j+ zInt32 - Length of file in bytes. & M* X- g, Y* \" [/ p
U' J$ r3 ~! e, c& d( \3 k; s( [No encryption. No compression. Quite boring actually.
: i1 d; { d7 Q3 E, U( A4 SThis format should be a required task for an absolute newbie as an introduction to writing archive unpacking software.
( ~ k7 F) m! }9 N& W7 S
4 i5 ^% k- ^# _8 [! ~" F$ j这个格式除了梦之旅3,还在很多游戏中有运用。! z6 W$ a, W5 a) X
Gourmania / n+ B" ?3 h6 ~
Hot Dish 2 / J% f; ^3 N. k$ w( w+ }8 ]
Nocturnal Boston Nightfall 2 n9 b! x2 U% ]) u8 S, X8 d, Z; a
NightShift legacy
9 K! \+ q7 g' U0 l. [Pet Shop Hop % P4 { w4 Y6 Z0 b$ L
Book of Legends 0 A& z; P( ?+ C4 A) q* @
Chocolate Chase
- H8 d: Q, A: Y& ]: q% e# QFashion Dash * I5 ?0 }, _- C, v
The Clumsys
4 S! H2 w" B4 iMythic Marbles
3 [" X8 h6 `+ W( }( @Lost Reals - Legacy of the Sun Princess
# m: V( J/ w9 u0 jDr. Daisy Pet Vet (sample archive arrached - game.pfp) $ @. p3 g2 V9 V. g: \$ P. k V0 }
Dream Chronicles
7 t9 ]! Y, }4 s' c/ g# l3 O$ E/ @Wedding Dash
0 @3 g: _: ]; {! F6 o* ?! q, mHot Dish 2 ! M# c' e4 s8 R4 E
Book of Legends
' S7 A0 G8 W, T6 `( P4 EMahJonggs |