本帖最后由 shane007 于 2011-4-29 06:41 编辑 6 @3 l1 ] P- O% R/ k9 R1 w" A0 t
: v% K) ^5 U8 x6 p
勤快的老外又放出了这个好东西,配合quickbms使用。+ M8 S% F* J) H8 x- A
好多小游戏都是用Shockwave Director做的,包括神秘视线。
" |# W) P2 C2 e) @$ I2 s如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
0 ?) y/ Q s/ y' T - # script for QuickBMS http://aluigi.org/papers.htm#quickbms; }8 r3 R( ^- @- n T
2 v9 u( X% N0 J8 H- quickbmsver 0.4.11) Z8 Z8 C' I- e6 L! }
- getdstring RIFX_SIGN 4
" N- B8 M& |# V% P7 y - if RIFX_SIGN == "RIFX"
! f. A5 E9 J$ R# ~' J' c - endian big
2 ?1 Z: L9 m5 y3 V0 u - elif RIFX_SIGN == "XFIR"
0 D/ M4 K& d! r: K - endian little/ r9 Q# D, D2 Z" e/ e
- else
1 s6 x9 ~! b+ b- h - cleanexit
7 a( g$ T, @4 {) F - endif" J8 c# Y6 j+ X3 Y
- get SIZE long
0 T" @, @8 p$ `+ C. o - get SIGN long- Z D5 ~$ C% ]/ z0 t2 |
- if SIGN == 0x4647444d
1 {, \4 m5 \# y# b - get NAME fullname
' _4 z) R5 S: X3 K1 v - get FOLDER current_folder
) w0 p- Q! D/ I - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"' F" _& Q. m t
- cleanexit; j- N$ e# C5 @8 z# g5 S
- endif
" s6 p; s+ U/ c3 X
' b; s$ E7 v4 y/ ?) g- set FIRST = 1& o" M3 E" e r4 t
- for i = 0, H& I" Z: c* m9 K. e! R
- savepos CURR_OFFSET
. R- q0 t- \: ~1 P2 k. Y - getdstring SIGN 4( M" m; G) P6 C x
- if RIFX_SIGN != "RIFX"
5 V, q; z$ m! D$ L: d7 E6 Q/ ` - string SIGN r= SIGN7 L; k* Z( J b/ a: M1 f
- endif& h* R' ?* u: @" I5 o- D5 v
- 1 L' b; C) a$ k h/ Z1 z
- math SKIP_SIZE = 0x10) T1 {2 A' ]: _" w! ] k% H
- if SIGN == ""
r% c! V* t+ q - cleanexit- t) I6 q$ p; C9 P8 ~; ~4 }
- elif SIGN == "RIFX"& I9 B* R2 h" k5 [9 ?/ E. h
- elif SIGN == "imap"4 L' s& c& t" h* Z* `5 T1 D
- if FIRST != 0, x5 P# Y3 w* m# {/ L
- get DUMMY long
- C# k+ e1 R7 Z; i - get DUMMY long7 s" B$ V9 y( p5 ?: ~
- get OFFSET long1 b8 g2 U+ A9 T) u
- if OFFSET > CURR_OFFSET
x5 h' |6 P5 ~" Y - goto OFFSET
7 M2 U. u6 Q2 s# F. x: h - math SKIP_SIZE = 0# i/ V8 v" w/ [" d
- endif
4 T, w2 e: A. M9 T0 F; X! D - endif: Z/ w4 H1 \9 \) N& I6 x. K
- elif SIGN == "mmap"( {; Y9 q) g* e. Z- }- A
- if FIRST != 0
+ y+ r1 n: F& A9 c - math SKIP_SIZE = 0x1c
6 G- w" ?) S* \; Z: A - set FIRST = 0
% }( m, _$ s4 e( }4 ]0 g - endif
+ @8 R( R) A/ @0 O. _ - # filters start here
' V) X+ G5 H6 N1 G - elif SIGN == "VERS"
) _& k0 d% X1 b3 Q4 ?2 |" ~2 K7 [8 N - elif SIGN == "CASt"" q F6 S# \* n& @
- elif SIGN == "CAS*"
: `6 l+ G: q! U5 q5 E6 b/ r! o - elif SIGN == "Lctx"
0 R& \1 l, E/ \$ n3 W - elif SIGN == "LctX"
% N8 @9 y7 g5 n - elif SIGN == "Lnam"
: {6 l9 `# a' y; |, s+ k - elif SIGN == "Lscr"$ E& N: m$ a1 Y o0 d% @
- elif SIGN == "Cinf"
1 { r( _- `' J1 A) ^' E - elif SIGN == "GRID"
9 R1 q' k2 k. l9 s: F6 F, } - elif SIGN == "FCOL"% ~2 `8 B+ M* ^; Q6 Z" q4 ]
- elif SIGN == "MCsL"
) z X( S- }7 W1 b( [; d, b8 k - elif SIGN == "DRCF"
9 p' s d9 Y3 P; C3 X" r t3 c- L - #elif SIGN == "BITD" # 16bit images
$ c+ i5 f; j- v. Z1 H - #elif SIGN == "ALFA" # alpha channel
+ Q$ W' u9 v, a. Q - #elif SIGN == "sndS" # 16bit audio
6 L) I* u7 d) `$ @6 s! | - elif SIGN == "sndH"
8 H( [( Z. r& D) y" | - elif SIGN == "Sord"
0 C# ~5 N% W5 M" \4 B - elif SIGN == "free"
# L3 i0 K5 [: D- }1 s - elif SIGN == "junk"
; |# v8 u5 D, @+ N - elif SIGN == "Thum"
" C: l! |- {. m2 C - elif SIGN == "KEY*"
+ T* Q' n* f* i - elif SIGN == "FXmp"* O: C* Y& V5 C
- elif SIGN == "Fmap"
$ _! N7 }3 X9 V/ U4 U7 R - elif SIGN == "PUBL"# r8 a" A$ V, S+ Q. D. n4 r
- elif SIGN == "SCRF"
, [2 t( h6 O+ w! p3 J& O - elif SIGN == "VWFI"# W7 w7 Y p$ H* x F+ |
- elif SIGN == "VWSC"
6 y) L; i& v' N, D; r - elif SIGN == "VWLB"% F) `& J0 @6 t4 q
- elif SIGN == "VWTL"9 D# [9 b$ h: ]6 _" I* i
- elif SIGN == "XTRl"6 O& |% k* d {: x
- elif SIGN == "ccl "
) n3 l; e: R% J) t# Q* A+ U - elif SIGN == "SCVW"' f) k( @! p. a
- elif SIGN == "Lval"+ Y2 D- A9 ^' C, W P
- elif SIGN == "cupt"
( J1 o# _6 }; a) H' h' R - elif SIGN == "CLUT". n6 T2 E# c6 J6 R! t' S
- # filters end here
" W! B' x6 A% Y: v7 p2 L - else2 V, D; V6 i: q7 ]
- # skip the above ones and dump the others
3 p$ ?/ b* \- d- J - math SKIP_SIZE = -1
5 @2 ~' H, t r - endif
: |8 D. q+ r( D; e- m
4 | u% ~9 h9 V: u- if SKIP_SIZE < 0* A4 ~. h1 m$ {; Q( R
- get SIZE long
! U3 x1 |0 j4 _. y - get OFFSET long( a% z) D3 S* X; o' F$ v
- if SIZE > 8
7 Y/ y+ |! d6 P) J - math OFFSET += 8
" _( [" D$ |7 `9 ~7 p6 M - math SIZE -= 8( V2 ]/ M9 ]9 f
- set NAME string ""
. Y) o+ w% q0 Z z) }/ e7 p2 E9 r - if SIGN == "XMED"
# r# ]; J! I3 V' Q4 d N% N - elif SIGN == "ediM"
& w% V. _- ^! r: G+ z" V - else
6 l. j' g8 U4 E/ R: ~- { - set NAME string SIGN% f5 j {. o2 O+ F1 [
- string NAME += /
. }; c w7 t) h; v1 ?$ r4 H7 K. J - string NAME += i, ~! \; {- F( q7 q* N' g
- string NAME += ".dat"
. e3 |) R% C( F. L - endif% W% ?3 E E/ T0 F/ o
- log NAME OFFSET SIZE' q1 d Z2 j7 X0 e7 j" h n
- endif
' x2 T. I7 n% Y8 z - get DUMMY long
! z+ ^: ?( F9 k3 n% U - get DUMMY long: x* ]. @5 C' o
- else: X8 }" o/ m2 @2 i+ E0 b" o
- getdstring DUMMY SKIP_SIZE6 v. K! `$ m2 D+ E0 _) ?9 m) V1 M7 y
- endif3 f* T* A, i8 ]# e n
- next i, H- D6 k9 d! |6 r
复制代码 |