This is a really good example of the simplest archive format possible.
% x2 \5 k; o* f; q+ e! j& B. m" f4 c
The archive begins with a 4 byte signature 'PFPK'. 2 A, c) T6 d/ l/ k' Z3 {
Immediately after that is an 32 bit integer telling you how many files are in the archive. ) c8 s( n- V6 i: P% N
! F) e: l" X3 i& o
Then it starts the file allocation table.
7 K/ G" F/ _% ^0 g: E) FEach entry consists of: 3 z$ c0 X6 l' g
Byte - Number of characters in the file's name. ( F4 q( v8 G0 N! R6 m. R4 H
String - File name. 7 a! @# j/ B2 N& t: A
Int32 - Address of the beginning of the file. 5 @4 U- c. j) ?" J1 t7 v
Int32 - Length of file in bytes. : a+ \. m% j7 I, Q# P5 L
! I) n, `1 ^0 \5 G! xNo encryption. No compression. Quite boring actually. ! {% x+ i6 R$ v; {0 l$ R9 e K! `4 C
This format should be a required task for an absolute newbie as an introduction to writing archive unpacking software. 4 Q% e+ n9 l% I3 L' r4 x; v
# C* _; K( h: m% R @( D
这个格式除了梦之旅3,还在很多游戏中有运用。0 e, D4 H J( d& d) j
Gourmania 8 Z: C1 H6 c/ G8 E
Hot Dish 2 # h) @/ L8 n% g
Nocturnal Boston Nightfall : f6 n. I( N v0 T! P. q
NightShift legacy + a, E+ q" j% U5 l7 Q5 J
Pet Shop Hop
3 I/ x0 [% |8 B. J: `Book of Legends
+ c. ?; b2 T& ?Chocolate Chase
# A8 {7 I8 x% S, E1 `- ?Fashion Dash ' X$ ?- d8 G% c1 [# ^ Z( g
The Clumsys
! U: F# p/ X9 sMythic Marbles 5 e9 t1 H$ M, E' z
Lost Reals - Legacy of the Sun Princess 1 w+ n: x5 ]/ Z. i/ I
Dr. Daisy Pet Vet (sample archive arrached - game.pfp)
r1 r" s! I( V) D! N( a/ WDream Chronicles * j2 n' k: r6 F; j7 }
Wedding Dash + v( f0 I4 W9 t8 ]& P& B
Hot Dish 2
) u" \; m: `+ a& r0 y# lBook of Legends 3 g! u5 F* c6 n+ M
MahJonggs |