冒险解谜游戏中文网 ChinaAVG
标题:
金发美女的懒汉打包工具(scgame请进)
[打印本页]
作者:
shane007
时间:
2010-4-13 23:40
标题:
金发美女的懒汉打包工具(scgame请进)
scgame
6 H: b! x+ u9 l
- c& V$ J+ o8 h9 N+ _
你好,请在完成前一个小任务以后,抽时间完成一下这个金发美女的懒汉打包工具。
1 ^) Y7 m& V$ C: a" C
请先看一下下面这个帖子
: o) H1 m, w9 D y
【神秘岛4汉化项目】懒汉式打包新方法
/ R* n3 c8 c' E% u2 g! y
https://www.chinaavg.com/read.php?tid=19892&keyword=%C0%C1%BA%BA
6 M6 U+ y6 V" X
相关帖子
6 @# O9 b/ k+ R. u
金发美女正式版的解包和打包工具
- s# [' { |9 F, n% ^+ V
https://www.chinaavg.com/read.php?tid=21364
9 x6 a: _7 X: u/ z, R2 R, f, e
细节大致如下
! Q& g m1 F/ q7 I' k2 F3 i, }
.TOC 存放了SIZE和OFFSET,.DIR存放了文件名OFFSET和文件名。
7 @" A$ P" K+ s. W. p2 N$ C
工具大致用法如下
8 _1 _4 S; `" X' U
pack.exe filelist.txt foldername
; _8 \8 o$ o. ]8 p; w* D6 A
filelist.txt里存放了修改后的文件列表,foldername是修改后的文件保存目录。
1 `$ q4 j& [: ^+ i; R V, U0 O
pack.exe把文件列表的文件逐个加入到.DAT的尾部,并修改.TOC,.DIR,使游戏找到我们修改后的文件。
作者:
scgame
时间:
2010-4-13 23:56
先去下个看看
作者:
scgame
时间:
2010-4-20 01:17
.DIR和.TOC的格式不是很明白
& ` W: Y% D* v- O4 n( V
是怎么对应SOBLOND.DAT的啊
( Z; w3 S" i' Z6 h8 T
能不能再详细得说一下这两个文件是怎么表示offset,和size的吗
) j U- z5 ]1 Z% ]1 [4 E
我现在在想的步骤是:
, @4 b1 Z4 l* W$ T: C; \
1) 从DIR里读取文件名,获取他们的索引(1,2,3,4....)
( r% F" ]& ?2 U
2) 再通过索引和文件名和filelist.txt对比找到相应的.TOC和.DIR数据修改
8 }$ E4 [/ C! B& r
3) 写入.dat
, W, V6 j! z5 X, V1 i2 Z- M
& t8 n4 \4 v* v- |
嗯,不过还是请解释一下.DIR和.TOC
! @% Q( `& h" E# s/ K& b! D
我可以先写个读取文件名找索引的,然后和file.txt比较然后再来写入
作者:
shane007
时间:
2010-4-20 07:58
open FDDE DIR 1
3 r6 d1 r; w0 X4 U! ?% ~
open FDDE TOC 2
$ ]4 D ?$ Z6 |
do
: r" l; L' \' f* [
getdstring CHUNK 4 2
+ }9 }9 H7 B7 [! x
get DUNNO long 2
" g/ p/ e. Q5 U* g. {" m2 O# S
get DUNNO long 2
* C& v0 h8 G- y) r8 Q/ x9 n; f
get FILES long 2
& D2 L9 X6 w* e0 M9 ^6 i- E
get DUNNO long 2
; @, ^: |1 |2 z! g
get DUNNO long 2
2 c5 K- m& R, g, c- M
get DUNNO long 2
0 ]: J( X% s& }7 \
get DUNNO long 2
" |% A2 @& @6 i# i
while CHUNK != "REST"
& c3 h7 [$ ^7 N' p% l ~6 u
savepos NAMEPTR 1
, _7 u, I. }# T7 N3 j
for i = 1 to FILES
2 ]& K4 x. d! L- g; x
get DUNNO long 2
& \' R# E' w) U# a" n& H
get SIZE long 2
6 M/ P. N" l! a/ D5 G2 D
math SIZE >>= 2
7 Q5 r- ^( S6 o; v; B
get OFFSET long 2
' [) z0 e' f& p" n0 l G7 C. T
goto NAMEPTR 1
; J+ x. T7 q% }) |
get NAMEOFF long 1
/ Y) s2 i/ _$ s7 S+ h; B; {
savepos NAMEPTR 1
$ Z7 l5 O! \- o2 w6 P8 {
goto NAMEOFF 1
. C3 S3 ~8 x/ B; H. y# S2 d. W
get NAME string 1
$ R, K8 ^/ B; M# d1 y% k
log NAME OFFSET SIZE
# ?) B6 L; V; x- V
next i
3 d+ R! G! i7 j9 B; V+ Y: s8 d
5 e* {5 F; i7 G$ u" b# P
P: i! g7 ^* h
这是解包器
( w% J4 l1 _2 i0 d- e1 j' Q/ W) e+ @* H
5 J, q6 ~" ?% V( B# f! v2 i
for 里面读取toc的部分,long就是4个字节
9 \! b% p4 Z6 k _
get DUNNO long 2
3 y# ^9 [. Y3 I1 T& R+ u1 f% H. @
get SIZE long 2
) V5 C6 \: B# J/ |' q+ P
math SIZE >>= 2
|& E7 q- ?) n. c/ U+ A
get OFFSET long 2
' H2 T7 r/ ~: N; O# y* y
% F, W2 b `1 E" X
for 里面读取dir的部分,long就是4个字节
' \% M1 L/ O% c# i( @8 M5 e
goto NAMEPTR 1
$ M0 |" T0 r9 I% E) c
get NAMEOFF long 1
% `+ g! P m( e" E3 f
savepos NAMEPTR 1
# H( |5 r9 `6 {4 k5 j3 I) Y
goto NAMEOFF 1
# l1 Z3 }0 O! u6 O* m
get NAME string 1
作者:
shane007
时间:
2010-4-20 07:59
不明白的地方请继续提问。
作者:
scgame
时间:
2010-4-20 10:47
这4个字节是Big Endian 还是Small Endian的啊
作者:
scgame
时间:
2010-4-20 10:51
哦,上面一段是写包?
作者:
shane007
时间:
2010-4-20 11:19
我来详细解释一下,
2 U& Y" L* j {* F6 F) n/ Z6 T+ [7 M
open FDDE DIR 1
1 k& C0 z, F# x( }
open FDDE TOC 2
+ b/ X0 s9 i1 l) t
相当于打开2个文件,后面的1,2相当于句柄
' v% n- V3 ]) c3 O
3 f5 L7 {( H7 L1 z b
do
/ C# d( c) l6 m9 ~
getdstring CHUNK 4 2
6 o: w6 V& ^9 ^# A! V3 v
get DUNNO long 2
0 m# {4 C* N8 e# {" o
get DUNNO long 2
8 j0 L! t. q8 I( {. J
get FILES long 2
2 |7 a8 b+ v) o1 L4 v
get DUNNO long 2
, H9 a. l) `/ [5 X1 |
get DUNNO long 2
. L; d# U: m/ F" u
get DUNNO long 2
9 x+ r# C( u$ Q2 i) Q5 Q0 N- F
get DUNNO long 2
* E) D# F8 L6 A, g' I! w3 K
while CHUNK != "REST"
: f; Y$ b+ U# M1 `# z
/ g7 R, m* S! e% Z$ J8 I9 C8 g
这段主要是打开TOC ,读取文件数FILES 。
) ?+ P$ n8 `1 f! u( u: u$ o
你算算FILES 就能分析出是BE还是LE的。
$ T1 W+ ~) p( v! {! y; v9 p' T
! d2 E# A& C& U' a: x
后面2段是
9 I* n1 p0 z' s. t9 `4 h. n5 s1 q
读取toc里面的每个文件的SIZE ,offset
7 F# A" [; r1 p; N2 x: T/ Q) P) [
读取dir里面的每个文件的NAMEOFF ,NAME
9 u1 |4 `1 q; U: K4 a
最后根据每个文件的SIZE ,offset,NAME到dat里面把每个文件切出来。
7 A1 ]3 F. g- C0 M8 u/ O
0 l6 ]* X! j- ^7 j$ i8 e9 |
该明白了吧?
作者:
warwar
时间:
2011-5-29 19:20
mark
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2