本帖最后由 shane007 于 2011-4-29 06:41 编辑 ! ^0 W6 w) `$ A% e5 C* i
: a+ Q5 h5 y9 f5 y) E o' o# F( B' r
勤快的老外又放出了这个好东西,配合quickbms使用。
, [8 Y; v3 L- @( _" H: r好多小游戏都是用Shockwave Director做的,包括神秘视线。; A# z$ @9 V/ S- n. Y( n7 N
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper* Z. ?. ^0 q2 T c9 A! J
- # script for QuickBMS http://aluigi.org/papers.htm#quickbms
7 C9 O3 @- o5 V n6 w- G3 S - 3 {9 o) e" \/ S7 P3 U; p7 K
- quickbmsver 0.4.11
' R3 h" R$ V; l! O - getdstring RIFX_SIGN 4' V2 @; z c" J( ^4 j
- if RIFX_SIGN == "RIFX"
5 B1 Z! q$ q, b3 d; f: R b- L - endian big
S5 `- c/ c4 U+ E- ~% x - elif RIFX_SIGN == "XFIR"% C O- j) w0 w7 O% w
- endian little
5 L& C: A7 R3 q2 [+ v# A) j) A - else! h7 W+ j$ W- m
- cleanexit
7 P8 [6 ^$ v; f' g4 |: p1 h6 Z2 P - endif
7 U! ?; ^9 L! e) ?3 k9 h0 Q - get SIZE long! w% Y& r" T) i/ |
- get SIGN long
1 H9 Z% W% s* r( S; z5 o+ t - if SIGN == 0x4647444d
; e5 E5 s3 [. B1 @: b4 Y - get NAME fullname# X/ Q1 C: L1 |5 e s y' m
- get FOLDER current_folder
" w- F5 W0 c" Y; x5 V* `% e/ I3 g - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
# e$ ^3 K1 \+ k' w! C; [" ? - cleanexit
* s) V8 g' s9 L2 |) C) m6 j - endif7 W: }& }/ t$ Z
# v1 U5 l$ D; A3 n& e- ~" D& W- set FIRST = 13 X0 ?5 o* e. @- n8 p& k, X
- for i = 0
% Q" A6 i/ w- g1 x$ t - savepos CURR_OFFSET6 U9 S. }- ~: k6 g- H
- getdstring SIGN 4
- A {% x- z; c5 p- `- G& U - if RIFX_SIGN != "RIFX"0 c7 W1 E3 Y# g
- string SIGN r= SIGN
' q# N" d! `; j$ ^ m( E - endif# V/ i" H+ ?0 x; U
- 8 p& b9 E9 Z2 D" t
- math SKIP_SIZE = 0x106 ~' _' _, a" _% Z' I6 ~' R5 J
- if SIGN == ""2 e- f6 [, }: b; o& m* H5 K$ e
- cleanexit& N0 Y; J: Z# w' E4 ?3 {# I
- elif SIGN == "RIFX"
4 l5 k, M3 Q8 u6 I9 W, c" a2 s% W - elif SIGN == "imap"5 V6 r9 H4 B& D
- if FIRST != 0
8 O/ k1 G+ o( ?2 \8 [& m& Y* p - get DUMMY long
+ F; k! D2 z: x# ^ K - get DUMMY long
. x8 S- f6 s2 P5 L# b% a a- {- B - get OFFSET long
& h7 F/ ], @- l - if OFFSET > CURR_OFFSET$ X9 A9 O, A* y* l: _- r4 Q
- goto OFFSET
# s" X1 z. H$ j - math SKIP_SIZE = 0
b0 u d) ^6 @ - endif
# \6 \2 G+ i) |6 k4 O/ a - endif
; _% a- E2 p, y; ?: b- c4 c8 R - elif SIGN == "mmap"$ u9 X' \( J1 d; w
- if FIRST != 0/ {3 A$ p$ K4 @: v- h1 `
- math SKIP_SIZE = 0x1c
5 r) @! Q0 C5 A - set FIRST = 0
, w/ V H- S+ D! x" A5 p) e. ?. n - endif* V6 H" ]' [, J! \; c
- # filters start here
8 B( I( v W) k+ @, u - elif SIGN == "VERS"
" A( k6 N' w8 G2 p - elif SIGN == "CASt"3 v5 D1 T/ {/ i9 A
- elif SIGN == "CAS*"/ u3 q, i, D5 b
- elif SIGN == "Lctx"0 i5 `! u+ B6 m* q. u3 r
- elif SIGN == "LctX" x8 k9 w4 W- \2 p2 y
- elif SIGN == "Lnam"
9 b' h" f# P; J - elif SIGN == "Lscr"
/ T9 x# `5 \- l; t2 S - elif SIGN == "Cinf"5 q$ A' X9 i/ ^6 k1 D
- elif SIGN == "GRID"
8 N1 P6 b: S; s3 n - elif SIGN == "FCOL"' R% Q7 E3 k" Z7 N2 l) h# |( S e
- elif SIGN == "MCsL"* R* |+ Y! T0 i0 {
- elif SIGN == "DRCF"' k9 R. [* \. k8 _3 q; l3 i
- #elif SIGN == "BITD" # 16bit images$ v. N8 \5 H8 R5 m
- #elif SIGN == "ALFA" # alpha channel+ C9 D/ @! c( F
- #elif SIGN == "sndS" # 16bit audio
" Z$ P1 O+ r. O$ }4 s2 ?! g4 s - elif SIGN == "sndH"/ c( S- W7 J: H7 w
- elif SIGN == "Sord"
. h; a3 q) q: m6 f/ m0 y# m - elif SIGN == "free"
5 L& r+ S/ D$ V - elif SIGN == "junk"! O2 j' a' |5 g8 _% n) c
- elif SIGN == "Thum"; V2 C7 P, N1 q/ X: F9 `
- elif SIGN == "KEY*"
! q8 t4 ?- i! T0 P1 C# T+ `$ W. z - elif SIGN == "FXmp"
% j8 }- J7 s6 y& j - elif SIGN == "Fmap"5 m% f7 j* u9 c9 `: w7 N) a. r1 z% q
- elif SIGN == "PUBL"
1 C6 z) D3 ^3 V4 u: H - elif SIGN == "SCRF"
6 r% p$ _4 H! h) v& v - elif SIGN == "VWFI"
6 i! {: ]. V" ?& |6 j' @ - elif SIGN == "VWSC"
! }; e6 a: i% [, m7 F7 t - elif SIGN == "VWLB"
+ v* _* y8 q+ q) _$ A. m2 Z - elif SIGN == "VWTL"2 F E5 `% d' e' Y
- elif SIGN == "XTRl"
! ]7 L8 P9 n/ U) h - elif SIGN == "ccl "
! m( N V, @& R - elif SIGN == "SCVW"
6 h$ C w: V* K0 ] - elif SIGN == "Lval"0 J" A9 Q4 `, i
- elif SIGN == "cupt") I9 K* ]. L' n- J9 E) y, N4 C
- elif SIGN == "CLUT"1 G4 b, i7 o" Y
- # filters end here9 B1 V1 A& N- ?/ W q
- else" r$ K; m2 c. F2 ]- `" _
- # skip the above ones and dump the others
& O4 f. q) g$ P& m# G* ? @2 n - math SKIP_SIZE = -1/ [( E. j# P! L" ?
- endif
1 D9 R/ M6 k- a [' C - - ]! T. N; @- R; F/ y
- if SKIP_SIZE < 07 E+ N S8 a4 @, f* \
- get SIZE long
# ?3 X R5 x0 ?/ z - get OFFSET long
" q0 x2 Q5 z, e0 V# ]9 x& H - if SIZE > 8. v7 M- E" p/ N6 h+ r! N
- math OFFSET += 8
- j' S( ~7 y" [: v1 r `' @ - math SIZE -= 8$ q# l7 Y3 A d" s8 @) | F, o
- set NAME string ""
; j% M7 z6 ^; a) t' O8 K - if SIGN == "XMED"+ Z J+ W( Q7 U+ P7 D; G% Y; y1 o
- elif SIGN == "ediM"
6 H' h- `) L8 E& Q - else6 K1 [ N, l9 N2 q" V
- set NAME string SIGN
0 ~; A! w" K f3 V# R - string NAME += /! o5 a# b3 H2 u' b- S& F( q3 \
- string NAME += i
% F. [: v7 X1 E - string NAME += ".dat"
* Q$ v" ?8 y" K; k! V6 e" ?$ k/ O$ T& t - endif. m& Y) O+ g+ h8 \& m
- log NAME OFFSET SIZE0 a) Q' J! ?& H% O
- endif0 B) R) {7 m. t# d1 X% e
- get DUMMY long" L% I$ s ]5 G6 ^# E: b7 @
- get DUMMY long
8 ]: t; x- U% f. x% Z; ~ - else4 y0 s" A$ ~ }' M; \
- getdstring DUMMY SKIP_SIZE( [7 W" c3 {5 d( d8 w0 `/ Y& `, y
- endif9 S& k4 W2 q* ^) ^) \- k0 C& h
- next i
* \2 j2 k+ Q9 B; B7 L! x ?
复制代码 |