This is a really good example of the simplest archive format possible. # N1 v M% J$ \3 d
, ]$ p- v8 C/ j& V' _. oThe archive begins with a 4 byte signature 'PFPK'.
: m' u+ M8 X3 b W# F! x# m: Z/ @Immediately after that is an 32 bit integer telling you how many files are in the archive.
; S; K6 t1 P K/ ^" o2 F) n5 l H% m @ G) x6 ^! |; h/ {
Then it starts the file allocation table. % b5 G& n& F3 N0 }% Q( V* Z5 r
Each entry consists of:
4 Z% ?9 f8 s' |# `Byte - Number of characters in the file's name. / r8 r% E2 l3 f7 c( u
String - File name.
# I' H; J; B7 F, ^. TInt32 - Address of the beginning of the file.
0 W4 T9 D) n8 d. \ l. GInt32 - Length of file in bytes. / K! i# j$ E4 y1 N5 M3 }, W; C5 s" `
: E( r1 y/ K( a9 b# K; E
No encryption. No compression. Quite boring actually. ( C$ }7 Y( I# b9 k) ?1 L
This format should be a required task for an absolute newbie as an introduction to writing archive unpacking software.
) h# n& y% u* O7 N2 |* t# r$ L9 f/ }; e! Z& z7 A0 F& S
这个格式除了梦之旅3,还在很多游戏中有运用。
/ k9 r# m& _. _& n% v5 p! CGourmania
( E; R/ R1 W7 C' }3 N' T/ cHot Dish 2 ( ^- F6 D" g" a2 }7 a
Nocturnal Boston Nightfall
~5 H' q8 u+ x& i/ E3 Q3 fNightShift legacy
$ w, Z' g& l$ a: L1 S1 k+ bPet Shop Hop
4 q" T' H# \& X& ~: x( vBook of Legends
% \& E2 S' A2 e* r) m9 GChocolate Chase # M7 u! Y1 H! ]5 E( L( o8 f
Fashion Dash % F0 ` w4 S2 s) U: Q7 q4 x
The Clumsys
% [8 @5 J5 K! l: U3 H- OMythic Marbles - [- k+ \$ w# j9 c- P
Lost Reals - Legacy of the Sun Princess # D0 r" h, y4 \* L P
Dr. Daisy Pet Vet (sample archive arrached - game.pfp) & d4 ]* }4 {: f9 n+ a4 q/ |
Dream Chronicles 5 t, B; e: }1 F V$ p( @4 I
Wedding Dash ) D) p9 j# O% P2 A
Hot Dish 2 ; f0 G8 e$ K1 n( y
Book of Legends ' {7 z/ r& i& w3 a
MahJonggs |