本帖最后由 shane007 于 2011-4-29 06:41 编辑
; K2 d" [1 q U' \2 b" _6 M' y# I
勤快的老外又放出了这个好东西,配合quickbms使用。7 T$ P9 o% {1 q' G
好多小游戏都是用Shockwave Director做的,包括神秘视线。5 U% K5 m' e2 R- n+ N
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
& Y+ D! v6 g0 K2 f a1 N( X6 L& j - # script for QuickBMS http://aluigi.org/papers.htm#quickbms
; n& B- v2 Z; X% n. a6 \ - & l3 G% s/ N) |
- quickbmsver 0.4.11% ]6 I0 }' O+ C. G6 c, z2 C; ?
- getdstring RIFX_SIGN 4
. Y* K$ i$ L1 G& a - if RIFX_SIGN == "RIFX"
1 d/ m/ K& } x) { - endian big+ ]2 _; i( B5 j/ _2 F3 O% I& L( Y3 g; r
- elif RIFX_SIGN == "XFIR"1 X. a' T4 V, A4 |# T
- endian little
+ E8 c8 b3 f" ~! c - else1 h r' l- O* @
- cleanexit2 [7 ?+ V9 ]2 F0 r, G) @
- endif, v# X& y0 H. C5 E! S
- get SIZE long
/ ?: c- _ T$ C& t - get SIGN long5 Y( t E1 k' k. w( c0 k
- if SIGN == 0x4647444d) |4 M* t/ \" F1 R$ O
- get NAME fullname
8 |$ Y/ u% A$ ~ - get FOLDER current_folder
2 ]/ z' g. Q* \$ p% T - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
) [2 ]( q( f" R% k1 t2 e - cleanexit
& N4 y: C/ Z$ q/ K' S - endif
0 }& B' g' w& Y
3 K; P3 V( w' B# N* _0 k- set FIRST = 1* h- h$ _- o7 f; ?, j
- for i = 0- i+ n4 K: Q8 x$ {0 E, G
- savepos CURR_OFFSET2 G5 }0 V3 W' i' C$ l. I& r" K ?
- getdstring SIGN 4
4 C+ h" b5 d j( R, N - if RIFX_SIGN != "RIFX"
+ }! h( J) V7 y# g" H - string SIGN r= SIGN; `# _- r8 u( {5 h+ j& n+ Y' }5 m
- endif8 u4 {8 m$ H$ F- K! \2 Y
6 w: V; {' ]( t+ X- math SKIP_SIZE = 0x101 B! A# E9 Z- A6 V6 C
- if SIGN == ""
5 ~- g1 k# F5 \, n; M - cleanexit
, \3 h, l" B; x- p. I% v' E - elif SIGN == "RIFX"
6 K( K; R1 v0 d& b - elif SIGN == "imap"
! N! c! O! P: _8 q/ G - if FIRST != 0
% ?2 J+ N5 z1 a( _& g9 | - get DUMMY long
+ m. A8 W1 S2 e4 q* ^ - get DUMMY long
5 x1 N1 @7 J9 f/ S# f" z' @' ?$ n5 K - get OFFSET long A2 y, d7 ~0 M/ [& C
- if OFFSET > CURR_OFFSET
% v! [9 F# S/ ? - goto OFFSET
9 D& N! P* b* [ - math SKIP_SIZE = 06 S5 L1 d' e% a0 |5 b
- endif
6 D5 z4 p* ]( l0 l/ S/ Q& c - endif
! J+ P" Z, M+ u' L. L1 g- S - elif SIGN == "mmap"9 R5 K8 ?# t$ _% H* T% E
- if FIRST != 0
6 C7 z5 A1 t' \ - math SKIP_SIZE = 0x1c
% ^! C/ G3 w+ \5 s4 L - set FIRST = 0
. D. h# r& e9 M) k - endif& `, ], b# l4 F L8 z3 j' f
- # filters start here
. o# n; l, v7 d( ^) v$ u. w - elif SIGN == "VERS"" f7 a F& J b _+ v7 u- B' U
- elif SIGN == "CASt"
% _* H1 R- {$ |& `) l& P - elif SIGN == "CAS*"
4 U, {( R1 D" r2 |. y. \ - elif SIGN == "Lctx"
$ ]" N2 `/ ?7 ` - elif SIGN == "LctX"/ a- a$ v& \+ Z5 r
- elif SIGN == "Lnam"1 E6 `! S2 i, \# L$ e! U. `
- elif SIGN == "Lscr"& _7 v* i* _* U/ j' I1 s
- elif SIGN == "Cinf"7 B& l+ v% Z) g! h
- elif SIGN == "GRID"9 p+ c/ A4 p! Q3 n3 }) d
- elif SIGN == "FCOL"; P) x) S& E- ]8 W" N
- elif SIGN == "MCsL"
$ @8 k7 ^- k# s* O- [" C4 p5 Z - elif SIGN == "DRCF" v( u2 D w% _" J. r9 P! ~
- #elif SIGN == "BITD" # 16bit images5 Q3 G6 J* Y" E
- #elif SIGN == "ALFA" # alpha channel
. b, B- V1 o- u - #elif SIGN == "sndS" # 16bit audio
5 s1 e0 C; `8 h9 x# z - elif SIGN == "sndH"
: U( @5 K0 ?( { - elif SIGN == "Sord"- j/ m' e \. B
- elif SIGN == "free"
$ c' m/ J) a" m! v7 x% R* G5 V - elif SIGN == "junk"
$ O- @' I8 S2 r1 A+ G! [& _% B' G' w - elif SIGN == "Thum". Y& l5 J; M) d5 O$ Z
- elif SIGN == "KEY*"
2 h7 }, F: Q. t: q Q( f6 K6 f6 f - elif SIGN == "FXmp"5 b9 e! N0 q8 q6 a- Z
- elif SIGN == "Fmap"
) v, D! Z% }0 n8 O, n. B - elif SIGN == "PUBL"
9 f' h( Q2 N) E/ ?9 p+ | - elif SIGN == "SCRF"5 C/ z$ W5 L, _. j
- elif SIGN == "VWFI". S* @6 }3 K2 @- _+ D5 g3 g& ?
- elif SIGN == "VWSC"
: k1 v* L) I A4 c - elif SIGN == "VWLB"
, D3 T- t$ t7 W7 q2 j) D3 _+ V9 z - elif SIGN == "VWTL"7 f: X# r: G7 `* U
- elif SIGN == "XTRl"2 I, v S% V3 X( F
- elif SIGN == "ccl "
% j0 @9 J& A3 m B - elif SIGN == "SCVW"
: ~/ q3 J9 k9 V9 ^2 L+ Q - elif SIGN == "Lval"
( w. _! g3 [' E+ z1 Q - elif SIGN == "cupt"( O/ n: b0 d5 Z- k3 V, F, T9 v
- elif SIGN == "CLUT"
3 K o* P* H* S0 ? p* I; p# } - # filters end here- p& H( z5 c* N, [) E: H8 d
- else( @8 e$ M& I8 I2 L/ f7 P; |" v) E8 W
- # skip the above ones and dump the others& h5 h/ P& F3 M4 P( U
- math SKIP_SIZE = -1
+ M6 B( e2 a; g5 }8 ?) d& W - endif
0 e* h- Y2 S- a
8 @4 o# g2 }0 i- if SKIP_SIZE < 03 l8 F& P# N( C; M. V$ [# L: K: [% z
- get SIZE long S% I6 d2 ^4 w8 g% R: Y
- get OFFSET long
4 P) \9 Y& p- m - if SIZE > 8
9 O( u. _2 K5 g3 `# V8 a) ~ - math OFFSET += 8
r8 a4 f8 c x& b m$ V$ k- ] - math SIZE -= 8
5 M6 Q a: N* u, z5 i, f' D* T" s% h7 u - set NAME string ""
# ]+ y$ b% W- ` - if SIGN == "XMED"
$ \8 b$ l/ u7 ~! U9 i2 i - elif SIGN == "ediM"
; \' [) x( b ], C; A" h; L; O( a# c - else
8 e8 x: M) d1 P" a" o# a - set NAME string SIGN
1 c2 J ]+ ]7 ~+ J9 @6 I/ ? - string NAME += /
- ^8 ~8 L9 K& }6 a2 Q - string NAME += i
- Q; Q+ A4 M5 f - string NAME += ".dat"
9 ^ a% n0 p2 ? - endif
* T0 s. H; z! o6 m - log NAME OFFSET SIZE8 L; i8 g9 ~ [4 U" i
- endif
' y( R* Z, J; F6 R1 ~ - get DUMMY long% }6 S; J% r5 q3 [; H+ M7 d4 S
- get DUMMY long1 f9 Q9 p' ^0 O. r1 c1 h
- else
9 a7 M5 p% O& k9 [$ E - getdstring DUMMY SKIP_SIZE
4 S! d- v, X" l" @% S& \ - endif" b+ o+ r/ w7 v; f+ w" G3 P; s
- next i# _7 G; m6 \6 |
复制代码 |