This is a really good example of the simplest archive format possible.
6 {7 a9 ^* u& T# Q- O5 C+ |6 I; b6 c
5 T0 d) T5 }: WThe archive begins with a 4 byte signature 'PFPK'. B1 T K2 W* U
Immediately after that is an 32 bit integer telling you how many files are in the archive.
' x7 t- e. M% q9 _& V- ^. R: w
8 z+ n2 {" }4 m |& c H$ V) cThen it starts the file allocation table.
; W) L* D% g) @Each entry consists of:
5 n* ^9 z: Y: q! ~3 T/ K8 V2 G, `Byte - Number of characters in the file's name.
% a* r. w3 O6 Q3 Q9 `String - File name. # H* q v# Y% }* s+ {3 }& q) G
Int32 - Address of the beginning of the file. 2 o1 K' V F; }
Int32 - Length of file in bytes.
! R' G |8 g) A _/ a+ c9 [& Y- r
No encryption. No compression. Quite boring actually.
7 f9 u; n5 w! C8 y" DThis format should be a required task for an absolute newbie as an introduction to writing archive unpacking software.
# X$ A3 j8 I8 j9 f4 m: C3 C0 {4 k9 }! a) T8 J, w4 J9 h
这个格式除了梦之旅3,还在很多游戏中有运用。9 R+ c0 ^$ A2 A* l( X. G
Gourmania
/ _& G: I0 S& C2 U. V! S) ^7 QHot Dish 2 : R2 _) e5 _1 L' @( `2 i
Nocturnal Boston Nightfall
' @: ~2 Z' a) v& yNightShift legacy 4 [5 t6 Z6 W" l) D
Pet Shop Hop 9 m, ?7 `0 {' [6 A4 W2 \
Book of Legends / [. p1 x6 h! j7 E8 f, B: u
Chocolate Chase " f( D' f# m6 g. V3 Z8 a
Fashion Dash ) R- v# J" K# C& ^% d
The Clumsys
3 r1 V4 ^2 a. o$ p7 y' |: PMythic Marbles
9 e( U5 P2 H3 [+ ^5 y$ E' S5 @: PLost Reals - Legacy of the Sun Princess
1 _0 e J7 s, y, `1 [1 m8 x) KDr. Daisy Pet Vet (sample archive arrached - game.pfp)
* `6 z4 n! z; D# X, \4 aDream Chronicles * j7 j" |/ f$ G$ W5 {( k
Wedding Dash % f' S* q9 r5 N1 t
Hot Dish 2 8 Q$ K q8 U# n6 r6 X! `
Book of Legends
8 D7 q' U: c1 t; F$ {9 N; o* uMahJonggs |