本帖最后由 shane007 于 2011-4-29 06:41 编辑
; O; P8 {2 C* x3 H; x1 e; h! L* Q d5 I2 r1 l6 S
勤快的老外又放出了这个好东西,配合quickbms使用。
: [+ d' b7 a3 w% q7 I; \/ N! f* s好多小游戏都是用Shockwave Director做的,包括神秘视线。
u1 J1 {, Y5 \如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper! n( G5 j8 O+ y$ |
- # script for QuickBMS http://aluigi.org/papers.htm#quickbms
0 B3 n# V; l( G8 ]5 P1 C" @ - 1 g, A7 o% z* G9 a
- quickbmsver 0.4.11
) @8 s9 j- |0 v$ r0 v8 t, u4 q - getdstring RIFX_SIGN 4) v4 `. K- F) _8 a) J6 u
- if RIFX_SIGN == "RIFX"
1 r9 z+ [7 O. O& k - endian big
0 O$ E8 B( \# e; s9 p+ P% \ - elif RIFX_SIGN == "XFIR") ?8 Q$ s7 _7 R2 ]. N6 h
- endian little: L9 O+ o; l- f6 K% {: N6 ]
- else
5 R8 D# K% R1 U9 H" X - cleanexit
0 d: b, t9 D/ G$ q - endif
\- u( @3 ^- w6 |0 A5 Y1 H - get SIZE long% u5 n5 |& d2 i% H2 ^8 N- }
- get SIGN long
' ^6 ~# L- L+ [, h* W - if SIGN == 0x4647444d
+ }$ ^8 j* R+ @! n3 { - get NAME fullname
( S, O1 ^) e/ R5 h# H( } - get FOLDER current_folder/ g5 ~- d5 `4 n: q6 t( l
- print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"9 ?) y; G7 S6 N1 G) A8 K; K2 F* x
- cleanexit
. g% h0 e) m8 o- p; K/ r - endif2 [8 H8 a# d8 h8 Q$ y f: v
- - X. c* B1 p, Y/ C7 y
- set FIRST = 1, Y; O& s" j7 v0 M# `) s: E0 y) Z
- for i = 02 |) S* f5 \3 C0 I9 a1 s7 t
- savepos CURR_OFFSET
4 e0 C6 c" g% @2 p# W/ _ - getdstring SIGN 4( z2 b6 i8 T& q; X) S0 n; U8 f* e
- if RIFX_SIGN != "RIFX"+ T7 e7 t! a' K9 S+ P
- string SIGN r= SIGN4 ~: p* ^/ B5 H
- endif6 z) k: _5 |0 w0 c3 Y$ g
- % J3 h* w7 l* U' D. \' t: A
- math SKIP_SIZE = 0x10
8 p4 G: b }% i, v! ?5 u - if SIGN == ""
) v( g" C/ s! M$ h/ N) [ - cleanexit3 G1 o. r9 B' f; f" a) }
- elif SIGN == "RIFX", D- S B9 E! `9 V9 L% o
- elif SIGN == "imap"
+ z \ N1 H5 Z* n* E5 n - if FIRST != 02 W/ ]/ p9 c( J# A( g% q. P
- get DUMMY long
6 l5 P4 h3 d4 v+ {! T+ @ - get DUMMY long( X+ f4 Q' J- k
- get OFFSET long
$ U9 }8 i4 ?8 ?2 t2 K8 p9 u - if OFFSET > CURR_OFFSET: W/ r& b; y0 s, X; K, F
- goto OFFSET: F- p) Y( r& Q, E5 O4 Q+ ]/ }
- math SKIP_SIZE = 0" e& D T( h* C
- endif) O9 i- W0 u! G ?, `% o
- endif: Z7 G# F) x' t5 E
- elif SIGN == "mmap"7 n2 s; ^: {: |5 g" g
- if FIRST != 0) @* g4 X5 e$ |! S& K3 U5 Z8 o' [6 z
- math SKIP_SIZE = 0x1c
- S6 w/ L1 B$ | @, t - set FIRST = 0
) q n- e) |1 w: D; J* J - endif+ ^; n. g) A# k m- y* ?
- # filters start here
' k+ {% X* i- F- x' T3 E. n - elif SIGN == "VERS"" i$ Y' m3 z! m) W" K" F& {9 x
- elif SIGN == "CASt"2 M+ M7 }1 i' `
- elif SIGN == "CAS*"
- R6 W1 z0 \3 d* v0 p - elif SIGN == "Lctx"- ]3 q0 ?, ]! E4 t1 Q, u$ ^
- elif SIGN == "LctX"
- M) E4 d/ j! ~* `2 p1 J( g - elif SIGN == "Lnam". c. r* W2 `! T" f0 g/ v; J1 v" c& I
- elif SIGN == "Lscr" u* A h0 a$ Q0 H& Z$ Q, h2 z/ k
- elif SIGN == "Cinf": f4 b; o" }# z: W b
- elif SIGN == "GRID"
- V$ o d2 {% | - elif SIGN == "FCOL"
- s6 R8 H; h3 u - elif SIGN == "MCsL"
4 p' o) A4 d* d( | - elif SIGN == "DRCF"
+ D" Y4 S1 F& i, s5 G* u. l& X - #elif SIGN == "BITD" # 16bit images
9 Z" T2 s: m, a" }5 @ - #elif SIGN == "ALFA" # alpha channel2 L3 g. r+ l0 C2 t% A' u: }* ~
- #elif SIGN == "sndS" # 16bit audio
! @5 C8 F) d& w3 a- l+ q# J - elif SIGN == "sndH"
6 w* \7 ]3 o3 P3 n, k/ R8 G' S - elif SIGN == "Sord"
2 o7 X4 k- {& i - elif SIGN == "free"" P+ Y7 h, u6 x# n, R& |
- elif SIGN == "junk"* I, b( j& C M$ C
- elif SIGN == "Thum"
' Z) J+ b& m3 @ j* \ - elif SIGN == "KEY*"
5 v, W& o$ |( [1 Y - elif SIGN == "FXmp"- t& @. L3 `+ ~- c
- elif SIGN == "Fmap"+ M. A) T* \; h, {/ J* z' R
- elif SIGN == "PUBL"! e: ?- d- p$ s) ~& c9 D( N( m
- elif SIGN == "SCRF"
: H" w7 {" M8 G/ l+ z2 } - elif SIGN == "VWFI"
: E8 d# D( M$ e7 p+ X. A - elif SIGN == "VWSC"
3 B, h% y6 y- q% j" t* z, p - elif SIGN == "VWLB"
2 { A. O7 G: {' n/ B7 R6 O - elif SIGN == "VWTL"+ {9 I) m: Q; L4 ^
- elif SIGN == "XTRl") W1 B. g; h) R
- elif SIGN == "ccl "" c3 z% F9 P) _4 f1 D
- elif SIGN == "SCVW"/ b' O8 B3 M8 f7 i
- elif SIGN == "Lval"6 J( `' s0 C) z
- elif SIGN == "cupt"
- `! J9 R( e, f% E* r" u& g - elif SIGN == "CLUT"; l0 }# F: @$ h5 [8 ^
- # filters end here& b" ~/ Z$ E" Q! ~- ]# @- m
- else S* I+ ?# r# D/ v# A
- # skip the above ones and dump the others. D4 H% J z7 I' R) _' F
- math SKIP_SIZE = -13 J4 S# C9 ~ ]+ I2 _5 F
- endif
) e" X; C2 w3 }% ^$ |( \. D
`8 o3 B6 \$ e( f ]0 Z+ N- g X# A- if SKIP_SIZE < 02 D5 ~! M, m" K/ L, n0 @% t
- get SIZE long: h! q( I! d' D$ z6 T7 I( p
- get OFFSET long
" o! S8 G* Z8 c$ d4 e4 H5 K - if SIZE > 8* K2 v; N6 R( e" W! I: S: ?
- math OFFSET += 8% M6 s |7 p* I% Y6 B' W
- math SIZE -= 8
5 N6 [) O0 \& |' v5 v - set NAME string ""
s2 w" D" {! N6 L, Q: } - if SIGN == "XMED"& B0 ?8 |; ]5 X6 D }
- elif SIGN == "ediM"
! B c! L" U3 m! G3 V7 M. S) ^ - else
; ^; d) g& ~& m p3 ~ - set NAME string SIGN
" j2 X$ q( T. u1 m, _+ v2 M - string NAME += /
, Z/ }( l6 A {- T - string NAME += i, P) r* s3 i/ Q$ L: I
- string NAME += ".dat"* e0 `4 G2 Y7 F
- endif
3 N1 h( V" M- _. A7 C - log NAME OFFSET SIZE
, B W& x6 z0 S( v2 n - endif
4 ^5 N4 t9 w7 r( a - get DUMMY long/ t" {: m& ?7 b, q0 H
- get DUMMY long( f+ K( r( C/ F- \
- else$ b5 @) q0 |# r" @4 @
- getdstring DUMMY SKIP_SIZE
8 n3 K- I) I O3 O - endif# ?; U9 O% a% W( u u( n
- next i, y' b+ ]7 o3 `: E
复制代码 |