本帖最后由 shane007 于 2011-4-29 06:41 编辑
. v6 T# `3 }$ _% x, q& {- j" S
% g4 M7 I' n& p; P# c+ o9 p! ]勤快的老外又放出了这个好东西,配合quickbms使用。7 G8 N; S5 p7 {. Y M
好多小游戏都是用Shockwave Director做的,包括神秘视线。
7 l2 ?8 I, F3 U; r如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper5 q- f3 B0 `' F1 B
- # script for QuickBMS http://aluigi.org/papers.htm#quickbms+ |5 T! u* y9 F4 q3 A
. [, z: w6 C8 H; ]- quickbmsver 0.4.11
7 _# Y: x5 @, B ^7 U3 o - getdstring RIFX_SIGN 4
! R( C* |! `: D, L - if RIFX_SIGN == "RIFX"! R6 x) x/ b+ x) P# O0 i
- endian big' p0 W+ e! `/ o6 ^6 K
- elif RIFX_SIGN == "XFIR"
# ]" N& @' N$ Y - endian little( O- y$ V6 T, X- y: M4 J6 S
- else" b( J7 |! `- k5 H
- cleanexit) X' T" N3 v! a4 K) t/ u8 {6 u. ?7 f. V
- endif
: e ~3 \2 Z9 K" y - get SIZE long1 Y# e2 R! O5 D9 S7 H
- get SIGN long
( Q% g E# \' a& a* x0 C& T5 ^ - if SIGN == 0x4647444d; P- o# u5 K5 ~% q2 ^8 w
- get NAME fullname
" f, ]. p$ E0 b: j, b$ z/ U - get FOLDER current_folder
1 U: m4 X* o& M, W( F - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"' Q+ S5 k; J4 K4 A* _
- cleanexit
3 z5 y$ M2 b' k: ^9 J - endif
6 S- |2 u j# E4 R+ n- s5 M2 W
) O- `) s' z5 i/ s2 o- set FIRST = 1/ x, q) c* w% Y, T
- for i = 0
# [% H1 @2 h! H - savepos CURR_OFFSET
% [0 r, n$ I( Y7 w - getdstring SIGN 4
' f% t4 s% }! {$ k - if RIFX_SIGN != "RIFX"
7 z) l9 w+ e4 x) T6 z5 Z - string SIGN r= SIGN+ d+ X) K9 S; e0 E6 |$ L% [
- endif
8 i; l' p6 z F4 R7 d* K8 f - 1 }3 d7 ~, Y: p+ |: r1 G, j' N
- math SKIP_SIZE = 0x10; q) N( Q$ y! f; z# d5 m
- if SIGN == ""
3 d# w& c8 {4 P. u - cleanexit( H9 M3 N9 ^# ~1 E; f! `# `) b
- elif SIGN == "RIFX"
, m6 F% ^: ~& Z) T4 V - elif SIGN == "imap"
, y3 D) I6 J2 x6 y* Y: G - if FIRST != 0. x. W6 N% I; t: U0 v. h6 d
- get DUMMY long
9 C- u7 ?& t! Y- ^7 _1 p; q! q* ~' C& w8 O - get DUMMY long
5 y R4 F4 ?% e/ a+ O - get OFFSET long/ g# H& t1 ?; T* Q7 i/ Z
- if OFFSET > CURR_OFFSET
0 s* P' G- [9 ^$ W - goto OFFSET) y2 L- R7 Y j( A7 M
- math SKIP_SIZE = 0
* Y2 y( P* p! S7 ^ - endif, { u, e* w+ A8 i
- endif. z: B4 }; _' [( D6 W; }
- elif SIGN == "mmap", C, |+ f6 M" X1 l
- if FIRST != 0
' Y. }& ~' S7 z3 [# X0 X X - math SKIP_SIZE = 0x1c* R- \7 F1 K5 U- c
- set FIRST = 0
! y# P9 H3 H/ A - endif1 {: t' D; e# _% T k' R& D: L
- # filters start here
3 O. m. x5 @- x5 M4 K+ j' N9 E - elif SIGN == "VERS"# h4 h! V: b0 ^, {1 D: P" Z$ e
- elif SIGN == "CASt"
! }5 T: r* j& c( c. n- B - elif SIGN == "CAS*"
k$ c& [2 s9 v, @) E2 K - elif SIGN == "Lctx"
9 ^# H+ E; m. ]/ S: f6 [ - elif SIGN == "LctX"* W) }* }( v" C! }
- elif SIGN == "Lnam"
" C h. P) T" g+ ~ - elif SIGN == "Lscr"
5 \6 q3 g# G3 T& P: Y1 F - elif SIGN == "Cinf"' q- h' r5 G! D0 [8 K# F$ [2 l
- elif SIGN == "GRID"
1 B# ]% b6 S5 e: ?: ] - elif SIGN == "FCOL"
9 B% C9 h) ~4 `/ b - elif SIGN == "MCsL"
7 E, Z) O1 M$ v - elif SIGN == "DRCF"
) X% q2 J7 t/ V' O" S* h4 N, b ^( O - #elif SIGN == "BITD" # 16bit images
5 M! H7 Q/ u& S/ {2 u/ _" H - #elif SIGN == "ALFA" # alpha channel
- d3 I* @8 P! n' m2 u0 l! |! W& y& T0 n - #elif SIGN == "sndS" # 16bit audio
/ L3 V9 D7 W& C, B: I. r( ?9 P - elif SIGN == "sndH"
6 b2 j4 ]4 `- ? - elif SIGN == "Sord"7 [& U; u- {# A/ B3 [( W& z
- elif SIGN == "free"
+ F h t" F; a - elif SIGN == "junk"
% r- I1 W* T9 P+ m" u5 N - elif SIGN == "Thum"
3 E) m2 k( E5 O9 g - elif SIGN == "KEY*"
. s: {: W, F' P1 Q$ E# ]4 \ - elif SIGN == "FXmp"+ n8 {7 ?& @) D' V" Z7 m
- elif SIGN == "Fmap"
9 G. f+ @. O0 k% d$ E2 Y1 r8 y - elif SIGN == "PUBL") E, }5 X- j9 ?& J. }# ~
- elif SIGN == "SCRF"
' Y: k2 Q6 r- `5 d - elif SIGN == "VWFI"
6 ~$ C; t" l5 C/ j x - elif SIGN == "VWSC"3 z. ^2 b( Y. a$ j$ z
- elif SIGN == "VWLB"
0 Y# J& g; G. d" r - elif SIGN == "VWTL"
7 V% Q- ~' {7 v/ D+ [ - elif SIGN == "XTRl"0 C+ M4 A9 I) |, L
- elif SIGN == "ccl "
. b. M4 K K9 \ - elif SIGN == "SCVW"% O+ ^ E: m1 Q1 H. L6 E/ Y
- elif SIGN == "Lval"( e* U& I* U# u& p: r# Y3 f
- elif SIGN == "cupt"
, m; E0 d0 J+ M - elif SIGN == "CLUT"
% a7 G5 ~ S! P: ^# e7 i3 ^# q - # filters end here
& i b, q# L0 [7 c# `" z. P" y/ n - else9 O1 T4 C& ` ?/ O+ _3 o
- # skip the above ones and dump the others
& ?/ Y( s# p1 M7 _3 k7 @ - math SKIP_SIZE = -1
- L( k* u2 x4 b( P' a3 z2 P" x - endif/ F; C/ C; y4 K% Z& d1 c
- ' B5 s, A% a% m8 \ D+ W3 K% J
- if SKIP_SIZE < 0- h6 a. u5 o8 [2 G3 A
- get SIZE long2 }! _' ?/ U {1 d9 l) H' V5 N
- get OFFSET long
' m2 b9 \" I6 C* q7 e - if SIZE > 8
7 K7 y( `1 c4 K; U, |3 B& ~- [ - math OFFSET += 8
, L5 u$ N& z4 L3 T0 t& U - math SIZE -= 8) h0 c( Q2 g! c7 f# M9 l
- set NAME string ""
( u5 |" w2 c. ?; Y! G8 d - if SIGN == "XMED"
0 u% o5 h$ L9 k - elif SIGN == "ediM". F" r8 I5 w2 l1 |) N
- else
" E8 F3 C. ^1 t) W- F - set NAME string SIGN
7 M. A! y1 O: C: w2 _' {; u - string NAME += /
( y; U1 b( a2 [6 U - string NAME += i; j% M$ |0 s9 a
- string NAME += ".dat"
( k: }' C, @7 b3 \5 X - endif
+ Y' m2 ?8 s( z% \( ?* ?& u4 r3 Y - log NAME OFFSET SIZE
2 f' y! l9 c0 [+ c! [ - endif& y2 u$ x7 `% E5 O3 U
- get DUMMY long
/ d% ] G$ o5 V - get DUMMY long% |. S$ @9 U' z+ M, m2 v
- else% f0 q1 l/ t) @7 e$ {
- getdstring DUMMY SKIP_SIZE
& B) Z8 z0 g: y- r - endif
: E- J* s% b7 |: k1 Y- {+ e - next i z: r5 a- ]6 \+ x# j' i% I u
复制代码 |