本帖最后由 shane007 于 2011-4-29 06:41 编辑
1 r3 d+ R0 x5 |2 s% ?* n7 f2 t* y
5 X$ [; E0 ~( N& i* M勤快的老外又放出了这个好东西,配合quickbms使用。
7 ?9 Z) W7 N6 y' k% q K$ S2 W. {) p好多小游戏都是用Shockwave Director做的,包括神秘视线。3 p" a' p5 t$ B4 b
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper: r7 K' G# X4 a e" T% J
- # script for QuickBMS http://aluigi.org/papers.htm#quickbms) \/ ^% _! E, U! }
/ S, G0 o* a/ u& [4 _- quickbmsver 0.4.115 E" R; Z& r1 k! v4 S' Y
- getdstring RIFX_SIGN 4
1 w% D0 w1 o+ k( [ - if RIFX_SIGN == "RIFX"6 e" v+ N+ Z4 K& u/ ?5 o6 v
- endian big* f3 E Q2 G2 [' ~
- elif RIFX_SIGN == "XFIR"
* I- G/ S3 U* n) H; z! i - endian little
@" z& c# Z! t8 P. P. N; { - else6 X, |. ?- U0 G
- cleanexit$ }# f5 ^5 I" y; d% n
- endif3 q* e2 R3 A' T) i
- get SIZE long
1 U% X) O( k+ z) h - get SIGN long
; f5 j+ D; y/ F% T ? M6 ~ - if SIGN == 0x4647444d/ q0 m4 L# n: e8 `7 J
- get NAME fullname, X1 m: {5 i* a( }, Z- L% U. }# w# O5 U
- get FOLDER current_folder- n8 L8 Z8 e5 K, j9 _9 E
- print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
7 j; h3 P5 u7 `0 e E5 F, M+ K. i - cleanexit
( O4 t- V' {) u* F( C& {& m - endif7 F2 N# `! A; ?
- $ Z/ n% P( S7 M2 M1 o# p K
- set FIRST = 1# E6 m' C) [! [% |
- for i = 0" Z8 @+ {! A6 @2 c1 [" Q8 C
- savepos CURR_OFFSET
+ o/ B% c: @1 m - getdstring SIGN 4# m" T, z- b7 Q( c
- if RIFX_SIGN != "RIFX". F, P6 w: ?; U+ N8 p+ R; O
- string SIGN r= SIGN
0 `' a; I) I* O' B1 Y/ j: x - endif
# h! B. J+ h. p5 F# Z$ K
+ [8 @) h/ h$ B1 c3 E. t- math SKIP_SIZE = 0x10
. ~7 \3 n R! U5 g - if SIGN == ""
8 P! F. h9 a# m; s1 b! o - cleanexit
" g p' P# s) J - elif SIGN == "RIFX"
" m5 e4 q. s& J1 D - elif SIGN == "imap"
+ K K2 K$ n) z7 Z" R - if FIRST != 0
: v/ U( @% K& G6 v. C - get DUMMY long4 Z T3 }( L( q1 e
- get DUMMY long
. l" l8 k2 U$ P0 e3 E# b* f- l - get OFFSET long
0 ^. V; x$ y# T* F9 I& u6 c! s - if OFFSET > CURR_OFFSET
' \" P$ j8 ?9 L* Z - goto OFFSET
v9 V& S; m& o# O8 x, c - math SKIP_SIZE = 06 k/ l6 k1 g, X1 w: V5 L! h$ V
- endif
- f' K8 x. [' @: u2 k5 @% {7 W - endif
! q0 u! C5 f8 M - elif SIGN == "mmap"+ o/ h$ o* N2 [" Q2 G* a
- if FIRST != 0
4 g G4 e% m4 W3 M8 P& [' Z- \ - math SKIP_SIZE = 0x1c+ i1 l- r5 a* e) L) J- K, a
- set FIRST = 0+ P" Q1 ^& t" C4 v2 P- {
- endif
0 `" U: A2 M* p, U - # filters start here
8 c7 X& I" [6 e {3 S7 I" f: t - elif SIGN == "VERS"5 d3 O5 \8 o. P2 y+ x: ~4 {. g
- elif SIGN == "CASt"
0 [2 c1 i( i8 S - elif SIGN == "CAS*"; B* X( b* R# K) M) d
- elif SIGN == "Lctx"# k/ m! r4 E2 f8 _
- elif SIGN == "LctX"
! }0 _4 a) w; b9 N2 d - elif SIGN == "Lnam"
" r% A1 e0 Q% G0 b+ L/ ~% F - elif SIGN == "Lscr"8 v$ R! R! a, D* S# @: W
- elif SIGN == "Cinf"
b) f* b6 |1 B9 Y8 X/ \6 } - elif SIGN == "GRID"" i8 `9 D' u7 e: \, O
- elif SIGN == "FCOL". x7 |& ~ m2 y1 O. U2 a7 a
- elif SIGN == "MCsL"* w6 N f/ \2 q
- elif SIGN == "DRCF"2 U2 w+ R. ^2 K: n% c6 v
- #elif SIGN == "BITD" # 16bit images7 a: W5 B9 a5 W) a) N% N% a. l9 F* W
- #elif SIGN == "ALFA" # alpha channel3 I8 z) x! E2 P1 d$ N2 S( M
- #elif SIGN == "sndS" # 16bit audio0 d) |* D- ]1 Z# b2 s5 t
- elif SIGN == "sndH"6 k3 ]) w0 v1 q p5 Y+ F1 c
- elif SIGN == "Sord"
0 `; f+ h/ @3 z' U* K1 Y - elif SIGN == "free"
+ M) I3 U8 E# O7 s& f' O( [( ` - elif SIGN == "junk" m+ l: ]7 h. k
- elif SIGN == "Thum". N3 Z- \8 T. T# T
- elif SIGN == "KEY*"
+ l7 O6 ^: }, S0 B/ v) p! U/ Q8 d - elif SIGN == "FXmp"
/ Z; D6 B) M! ~' [* i% @ - elif SIGN == "Fmap"( z" l: r* k0 B8 A( p
- elif SIGN == "PUBL"
. z% g* g8 r5 R+ Z! a* S v - elif SIGN == "SCRF"
# C ?( d G% A$ o7 E& X - elif SIGN == "VWFI" C/ e) V' W% E
- elif SIGN == "VWSC"
7 C2 i8 a1 T1 y - elif SIGN == "VWLB"
9 h- }6 K' B' M/ e - elif SIGN == "VWTL"
( u7 O6 v. S2 q, W! u - elif SIGN == "XTRl"8 _) a6 E, ?1 T4 [: | i6 p
- elif SIGN == "ccl "5 Y9 x e3 d' M. Z+ j/ i
- elif SIGN == "SCVW"
# \: k! Q% ^. y% y - elif SIGN == "Lval"% I7 e* d; {& o. q8 X# C
- elif SIGN == "cupt"
6 H& p8 S: c# _* Q7 Y - elif SIGN == "CLUT" c7 O8 n, U% A+ A: `$ D
- # filters end here
" A% |, }# Y$ h0 g - else6 T' m1 Q' b$ o1 y9 v, J
- # skip the above ones and dump the others
7 [) G/ ?" Z+ c - math SKIP_SIZE = -1
: x; ~" _7 Q3 X) S. ^$ k - endif
) I+ |& S% q* x0 H0 t& W# S
+ }" n9 u+ ^* T# J7 p* P' {- k; v( n! _- if SKIP_SIZE < 0( F0 t, ?8 N0 q; L" M
- get SIZE long
& B, o& _. J; V; F - get OFFSET long
5 f4 Z* H3 j2 t" r/ C0 E3 p* W - if SIZE > 8+ c4 J" T9 U/ j
- math OFFSET += 8
+ G5 Q8 F" G6 ^% x% H - math SIZE -= 89 F8 W% o0 m& G _3 a" F* i/ Z8 F
- set NAME string ""1 `$ S# M+ s% G" x
- if SIGN == "XMED"
6 D7 {$ g: E5 g) T+ L - elif SIGN == "ediM". H0 H/ \& Q+ f) P1 W$ @" a( @ V3 F
- else) j9 P+ j# D& y* L' t! a
- set NAME string SIGN
" }) D2 f" R2 U; l) E# ^4 r - string NAME += /. g9 K! L( J* z% {& n
- string NAME += i
& c% P7 ]2 _( t' u7 q2 m - string NAME += ".dat"" F& y. R5 G# c8 O0 q
- endif
" D4 c) l* G7 H. n; y! y' D8 l - log NAME OFFSET SIZE
) Y( R, D& @! e* P& x - endif
# ^7 [ z1 ~( k6 c; H y - get DUMMY long
* l- ]+ r4 c( C5 l% V! a - get DUMMY long
: b$ ~6 M; n0 e+ q8 ? - else
' {$ e( q, J+ S+ R+ ]( x. p5 U - getdstring DUMMY SKIP_SIZE
. N! n# O7 W4 I! [ - endif# y3 ?) R; s u2 c" ~$ K1 E) W
- next i
* H& H$ M$ Z& }! W
复制代码 |