本帖最后由 shane007 于 2011-4-29 06:41 编辑 3 P& m/ @* k8 ?5 @7 i; f# g
) G* C( R- J# `; R勤快的老外又放出了这个好东西,配合quickbms使用。
, ]. V2 _; a- y' I, Z好多小游戏都是用Shockwave Director做的,包括神秘视线。: d: q" _: N& k- t4 x: o% d
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper( P/ M, F. y& b, N K. v! r+ Q
- # script for QuickBMS http://aluigi.org/papers.htm#quickbms
- r7 d5 G+ l+ o. y0 Y' Y - F7 y# x0 E& r
- quickbmsver 0.4.11
) Y- U& g! y6 D' E9 j% d3 k$ M, {" ` - getdstring RIFX_SIGN 4* Y* z5 q8 x; P) ]* \3 ^
- if RIFX_SIGN == "RIFX"
# i% V& @: b8 H4 v/ A6 k- c - endian big4 D/ } u# ]9 s. ~- o: D
- elif RIFX_SIGN == "XFIR"0 M+ |8 e+ v8 S$ u( q: L% C
- endian little
: l& e/ K# h4 f+ W% a - else
( M+ j" |$ U4 ^9 U y- p& V - cleanexit
5 z$ g& F/ B; w - endif
1 y3 y Z/ q0 f" D# R% ` - get SIZE long5 ~ I2 k$ n6 F: _8 l
- get SIGN long6 q1 W, H& X$ T
- if SIGN == 0x4647444d5 i& t# K s# n2 o. F4 j& j% d
- get NAME fullname$ i; a' [( \0 B' U5 k1 r) y
- get FOLDER current_folder
2 s( ?7 \9 W3 k - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"2 s& H& }; j& Y# v
- cleanexit8 N9 s$ ?* a: V7 ^* q2 G! R4 K! J7 v
- endif' s M; H9 S; |2 E" W) ~9 m! e
- h* T) b* B) i0 U- set FIRST = 1
! y% g& E! L% ? l - for i = 0
& ] F0 V; w! P* } - savepos CURR_OFFSET3 `; [4 r" M: w! j: t
- getdstring SIGN 4
! A$ T9 z8 U! o- D1 _ - if RIFX_SIGN != "RIFX" `% j! h& a' {5 t8 J
- string SIGN r= SIGN# v9 S; k% L1 o& G7 x
- endif3 H9 P+ c, L- F9 z
: |. H7 L- ~9 l/ x6 \0 O- math SKIP_SIZE = 0x10
. z/ H4 Q( S, N4 {$ f- U$ Z" u - if SIGN == ""
* v$ R5 j* ]- z" y& J - cleanexit
& {7 W( Q* P/ U9 S - elif SIGN == "RIFX"
# Y4 J8 k2 j3 g; W4 b4 W- E( \/ q - elif SIGN == "imap"
, i3 ^- P* r3 Z0 H - if FIRST != 0
. k/ _4 _! q1 ?8 a0 @! o8 U - get DUMMY long" w7 V* F. Q& V6 h4 a. x
- get DUMMY long
# d1 l$ N& I$ r6 g - get OFFSET long& y" ^1 r; R9 |, S! V
- if OFFSET > CURR_OFFSET) O% F; w( i( O- h, G
- goto OFFSET
& H) y* x, \' { - math SKIP_SIZE = 0
. A6 _0 R6 z$ Y+ ~" p - endif- w3 Y" N' J, Q) @/ Z! j
- endif
" S& E/ ~0 F$ `2 x, E - elif SIGN == "mmap"! q; \% x8 z/ q9 S# y
- if FIRST != 0
+ T& O# N. S L! Z/ ?+ J. u - math SKIP_SIZE = 0x1c7 p3 T6 z; U& v5 o3 \+ o
- set FIRST = 0+ j* v" F! B( W% H
- endif6 v4 t: e) @5 b' K# y9 N
- # filters start here4 e6 L( R) X9 e* O5 o
- elif SIGN == "VERS"# }7 d$ `8 ?( ?6 S5 J/ F8 P
- elif SIGN == "CASt"
9 c5 ?1 u3 s& y3 P - elif SIGN == "CAS*"
: `. I8 ~; k. n0 F: J - elif SIGN == "Lctx"
: E/ n2 L. q z, t1 k* N2 U# @ - elif SIGN == "LctX"' H# u$ G4 a# _' E+ x9 r0 M" C
- elif SIGN == "Lnam"
- \3 k, G/ e9 p# a, B - elif SIGN == "Lscr") ?. f5 r7 S- u) K6 O" ]9 P8 u
- elif SIGN == "Cinf"
5 F/ }6 g1 D# a - elif SIGN == "GRID"* E, J; f( }: k6 w
- elif SIGN == "FCOL"8 I* K7 g& E# A5 v7 y7 A1 d# [
- elif SIGN == "MCsL"7 k7 ~5 F: _8 q' s8 t
- elif SIGN == "DRCF"
5 _8 r! S3 [% r1 z5 L9 _ - #elif SIGN == "BITD" # 16bit images& U4 d6 [, h" ?1 ?. W2 }' D
- #elif SIGN == "ALFA" # alpha channel0 Q# ^5 k$ c/ M
- #elif SIGN == "sndS" # 16bit audio
1 `/ U* |" Y/ c4 { - elif SIGN == "sndH"
3 _$ o4 g N" m$ G - elif SIGN == "Sord"& I7 L( c2 W1 T: [. a
- elif SIGN == "free"
( f: O/ h# P4 Z0 I - elif SIGN == "junk"! v+ ]# G; y# j/ @
- elif SIGN == "Thum"
$ U% ^( S$ G6 \- H7 ^/ q - elif SIGN == "KEY*"
; G( k& j8 G0 d: Z8 R6 i+ \+ | - elif SIGN == "FXmp"
. p1 ^; g; J+ z4 T+ ~ - elif SIGN == "Fmap") u: V# ?# _8 g6 W1 `4 }
- elif SIGN == "PUBL"; p0 Q& h9 x1 U0 I7 s: g$ [
- elif SIGN == "SCRF"
: }( e/ D. w, x' a1 x3 L - elif SIGN == "VWFI"( h# q" O) v. a
- elif SIGN == "VWSC"
! q0 T2 D# v3 s6 Y8 U - elif SIGN == "VWLB"9 i+ R$ I r' t- L8 H @
- elif SIGN == "VWTL"
* Y/ M3 @) P% k7 P2 l/ ~9 T% B - elif SIGN == "XTRl"
1 I0 ?. Q# K6 i* _+ ~( _: P6 ~. E - elif SIGN == "ccl "
" A" ` T! X2 u9 {6 |7 k6 P - elif SIGN == "SCVW", W6 \6 ?3 [: }3 @* P
- elif SIGN == "Lval"6 B4 v. m* r- e6 x d
- elif SIGN == "cupt"% k- p4 g! ^3 h7 r: e, u
- elif SIGN == "CLUT"' g ?9 J1 D9 p9 h9 @2 Z
- # filters end here
5 Z6 q) e0 d" H' p - else
3 F! @2 m5 M C/ F- L+ J - # skip the above ones and dump the others
# _! s2 o2 H1 R - math SKIP_SIZE = -1# T' H: l* I+ ]# k2 ~
- endif
5 S; @- c3 B: Z" |7 u, f
w" }/ f7 Q6 b" E1 Q' T \- if SKIP_SIZE < 0( ]7 E0 O W v: j
- get SIZE long6 ]8 f6 Y' |5 h( _
- get OFFSET long! ~0 Y/ U* Z- H# b' u9 i% j
- if SIZE > 81 j5 A5 E0 K1 ]/ a, V6 y
- math OFFSET += 8
6 F/ K/ ^3 z$ c0 v+ Y% R0 V - math SIZE -= 8) e7 v0 i5 O8 A: O, `
- set NAME string ""
7 R. ~' C3 a) H+ T - if SIGN == "XMED"
7 q! A+ E8 [% s4 }4 P' z: N' k - elif SIGN == "ediM": N/ D% Z7 j4 k
- else% ^$ ?! W" q$ }3 a; _
- set NAME string SIGN/ v! n1 @ @. S( s5 C9 H
- string NAME += /
4 m8 v% k- I5 W5 ^: x/ ] - string NAME += i$ p5 ]3 t) s7 C( _) \( ?) l) ?
- string NAME += ".dat"
8 o$ k- j& J& a1 i - endif
& ~" T$ w2 l1 ? u - log NAME OFFSET SIZE
0 t/ V. ^" P7 z. f2 |, @5 C6 p - endif- {; L( T E# J( D5 g: ]
- get DUMMY long, c u, c$ ^. o' a. ]
- get DUMMY long5 ~' n$ p( R: `) w8 X% t: m& f
- else
$ p3 h* O7 y7 P1 U, R, z - getdstring DUMMY SKIP_SIZE. @, W: Z3 j. K6 O9 f! N2 U5 ^
- endif* ` n5 T$ [/ M) x# |6 B
- next i
: N5 C, |+ L* C5 m9 d& e
复制代码 |