This is a really good example of the simplest archive format possible.
& ?. x8 I \ ? _5 N* } w7 Y( [8 r& w: q# p5 C+ G( `
The archive begins with a 4 byte signature 'PFPK'.
5 {* V5 h( [2 ^+ \! @Immediately after that is an 32 bit integer telling you how many files are in the archive. ! x. s) f5 r7 N) G$ l* |, s
b' T$ d# L) o
Then it starts the file allocation table.
, I5 W. H" \- aEach entry consists of:
' y0 r9 [6 J$ pByte - Number of characters in the file's name. & ~" T) o6 A% Z6 D% w! n) n* I
String - File name. & V7 y( E7 x4 a4 ?+ Y
Int32 - Address of the beginning of the file.
/ e; |; D6 G5 `! C6 b* dInt32 - Length of file in bytes. 4 H! ~5 s5 P/ Y" i; X3 e& F X: \- G
4 L9 N5 n; E0 i6 _7 m; D7 tNo encryption. No compression. Quite boring actually. 8 K- Z0 C9 P. N1 P. m
This format should be a required task for an absolute newbie as an introduction to writing archive unpacking software. ! i1 a) D1 i4 U
8 h# w- S; U. x) T2 Z
这个格式除了梦之旅3,还在很多游戏中有运用。. b, p" D4 S" b) a; b9 y
Gourmania ) S- B6 u1 [0 {/ B. A$ m# C0 ?
Hot Dish 2
+ u$ F& ~3 B a: cNocturnal Boston Nightfall
: @" S I# |8 LNightShift legacy
# t% ]! @/ @8 z% JPet Shop Hop 6 Q# Z( R. o9 H* z3 [6 {, h
Book of Legends $ `& d* |( @1 k+ I+ p3 Y; |
Chocolate Chase
8 ?% {% s0 ^ I8 _$ _3 U, r1 BFashion Dash
" |9 |1 I7 i$ ^0 p$ eThe Clumsys
3 K- i+ Y5 u2 N. q5 G4 vMythic Marbles
2 l9 l% ]% a0 W: S) F# t0 d( [ tLost Reals - Legacy of the Sun Princess & @ j. m" B. b, A& m
Dr. Daisy Pet Vet (sample archive arrached - game.pfp) 5 n" c# u4 ]5 {! Z9 X( h) t
Dream Chronicles
; z3 G+ w, }* pWedding Dash
) Y; s) [0 A1 t0 [, y$ HHot Dish 2
2 ~* G$ b' q* bBook of Legends
# Q, G5 Q! ~3 l9 E; W' D$ pMahJonggs |