本帖最后由 shane007 于 2011-4-29 06:41 编辑
1 H; l' l# Z* c0 x3 A+ a* Q" \' u4 q& m
勤快的老外又放出了这个好东西,配合quickbms使用。/ i' M& F0 w8 X* ]* h$ M4 ]* M. t
好多小游戏都是用Shockwave Director做的,包括神秘视线。8 _5 `" H2 y' T$ e4 |9 k/ ?, E
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
' M2 Y( ]7 J7 M - # script for QuickBMS http://aluigi.org/papers.htm#quickbms9 z& b2 C2 M1 q; M# x' {( I
. S, ^# e( @! ?* x2 F* b7 i# |2 ]- quickbmsver 0.4.11
0 r3 Y+ _6 W5 t- `" A9 C, f - getdstring RIFX_SIGN 4& q w# ^' ]$ W) O; d6 K4 J
- if RIFX_SIGN == "RIFX"6 v! ]- z: D% x$ R4 i4 \/ s2 c
- endian big
! v/ H4 x9 r" _5 \% u1 H9 n - elif RIFX_SIGN == "XFIR"0 I+ S4 H! j! _1 k, Q' j/ e" }
- endian little Z7 t8 R @# g" r2 r
- else
# G9 Z/ x2 _+ m - cleanexit
9 ]5 U5 D; e+ u - endif
, u: n. n/ Y; X O: y - get SIZE long
' Q5 I* `3 K7 m3 c& V7 i6 T0 x - get SIGN long
2 ?6 i8 N# z" i" b. Q - if SIGN == 0x4647444d! c$ U3 Z, f& Q0 T9 p
- get NAME fullname
9 Z7 C6 X: H C1 q - get FOLDER current_folder
3 i! ~2 N% V0 c5 H; M( |" x4 {+ P! |5 _ - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
1 O/ M! ?0 g; P - cleanexit, [( g, F" A) o. Q
- endif" T- q! M2 c1 |5 f$ H1 Z
+ T b. h' @& S( H" H" K5 E- set FIRST = 1' U3 b+ M; d0 |* L9 }& h
- for i = 0& V! P& D8 n) B+ k* C9 d
- savepos CURR_OFFSET& i; x2 C. k# j1 e2 m
- getdstring SIGN 4' Z D7 ?+ {: M% |
- if RIFX_SIGN != "RIFX" K/ W& X: Z o# Z$ k( \
- string SIGN r= SIGN
5 e# b' t5 N2 c* Y0 m: v - endif
, E1 v5 X: _$ x) V
9 J- j8 N3 Y3 e5 C* s- math SKIP_SIZE = 0x10
2 _. O! d0 Z8 N% h0 U - if SIGN == ""
+ H! z$ W) g _ - cleanexit+ T! a4 L) _# M/ f9 f6 _- R
- elif SIGN == "RIFX"
) Q$ W8 J6 Y; P8 M - elif SIGN == "imap"7 K" _' W# a i0 a2 Z# D
- if FIRST != 0
: J; O; l4 B: M+ Y9 X# {4 W - get DUMMY long
( _/ Y8 y" s5 u8 ^' J- L l4 f - get DUMMY long& y' R' F4 z2 Y/ v7 C
- get OFFSET long
& @: Y8 e. ^2 L, o2 c$ q3 A - if OFFSET > CURR_OFFSET
- J0 ~% ~! F) M' C5 z% q3 ^ - goto OFFSET
& W8 [1 c! C( g/ ^3 {) D3 X7 e - math SKIP_SIZE = 08 [( K: U) f3 _; G: x% [( n- b
- endif& r# `. [! x* B( e( i0 m
- endif* u! I% ]2 D2 q
- elif SIGN == "mmap". v; N! ^2 `, w$ Z
- if FIRST != 04 w4 V* m4 T1 o7 O) _$ o
- math SKIP_SIZE = 0x1c' `- J+ y7 t5 c4 s1 \2 c
- set FIRST = 0
' r1 B( i8 _" c# ~0 ~( y - endif: P+ g7 Y; _1 R6 a
- # filters start here
) K# K; j) I: e5 N* b: ? - elif SIGN == "VERS"5 N; N/ c# ^/ E" N8 y5 L) u6 ^
- elif SIGN == "CASt") s. @9 ~% ?; h& K+ q3 r5 M
- elif SIGN == "CAS*"" M- G. c$ e1 P @
- elif SIGN == "Lctx"
i: u" `+ D6 K' a8 l+ B: H* d& k - elif SIGN == "LctX"
2 \0 s# D7 W* W& y1 V7 E: ^ - elif SIGN == "Lnam", C+ z2 L$ g6 x: ] L5 w( C6 L
- elif SIGN == "Lscr"
* M% m' N4 U, q0 _; ?( D( l3 |: @ - elif SIGN == "Cinf"
1 N7 b+ C% d$ ?& ?' c% r# } - elif SIGN == "GRID"
+ ~0 ^ ~2 Z2 A! n& s, _" p - elif SIGN == "FCOL"
) A7 T& v! g& T: k8 f; Y$ U/ d - elif SIGN == "MCsL"- w J4 I. A X# d) X" w
- elif SIGN == "DRCF"( _, }' r9 e O% a. V5 i/ t
- #elif SIGN == "BITD" # 16bit images
8 q! t, u+ l: i; _3 Z - #elif SIGN == "ALFA" # alpha channel- I1 w1 t) y. Y
- #elif SIGN == "sndS" # 16bit audio
' _$ V' l/ D3 ?; M% `2 o# e - elif SIGN == "sndH" c j. [/ H4 z3 C) Q4 [
- elif SIGN == "Sord"/ c6 L# I- k6 N4 I
- elif SIGN == "free": N: y2 G8 p+ `( f1 _# R5 o9 {5 R2 ~
- elif SIGN == "junk" ^6 S( E: u4 ?5 A
- elif SIGN == "Thum". _$ M. f( G8 t' M
- elif SIGN == "KEY*"
, U: n( e7 d0 H8 q. s. `, x \ - elif SIGN == "FXmp"( C% W5 v5 F3 Y) T; j6 t
- elif SIGN == "Fmap"
: {# K: Z5 ~+ u3 s! I - elif SIGN == "PUBL"
1 R' ^' V0 r# f; A - elif SIGN == "SCRF"$ P2 S: |3 e$ @* y
- elif SIGN == "VWFI"
$ }4 o. k+ ]$ ~" `* E3 L2 w% a) B% H - elif SIGN == "VWSC"
2 I) R7 G% t/ c4 }9 h8 I! R - elif SIGN == "VWLB"1 v% ^2 w0 i5 i( Y6 v4 L9 b x5 W1 m
- elif SIGN == "VWTL"
* s: r P: k! J4 W7 B: Q - elif SIGN == "XTRl"
6 A. S# m4 l7 T( h }& w% ` - elif SIGN == "ccl "
+ h# Y1 R( v; T. s2 V* f% j7 v* E& _ - elif SIGN == "SCVW"; @. `) s# d% ~9 A- ]" A+ v
- elif SIGN == "Lval"" V* `( Y8 r% `& r
- elif SIGN == "cupt"
; a7 K0 m# L% G8 Z/ ] - elif SIGN == "CLUT"; W' R+ t' h& b6 c. E: o( w8 |
- # filters end here
' E) [! d, K7 y. s - else. _8 b* ` f+ N8 I) z
- # skip the above ones and dump the others8 A7 w; U. `4 }4 |2 h2 d3 ?
- math SKIP_SIZE = -1
# ?# l2 Z7 O7 ~4 T: s7 {- [ s - endif0 U! k8 D3 w! V8 Z) B) u3 F
9 n' q. K% G5 i3 }7 @# i }- if SKIP_SIZE < 0( G) S& H1 h! |$ |
- get SIZE long
4 h3 g& l: f; o0 {9 o - get OFFSET long
* I, K4 U8 _5 R1 \ - if SIZE > 8. w* F* u& t8 Q% K8 ~) \
- math OFFSET += 8
% t j9 l0 ]6 R. ? - math SIZE -= 8
# A4 v( t0 z( B1 Q - set NAME string ""4 ^% q- k4 i5 O z7 K. P4 X. d0 e( V
- if SIGN == "XMED"" i: o( a3 N8 ?
- elif SIGN == "ediM"& E6 c4 p' i1 v7 S0 y/ @
- else
0 j) Y' W) K8 A* O b - set NAME string SIGN& I; U2 S, n) g( \
- string NAME += /- M+ @4 l3 M$ O3 I: a* y" Z. {
- string NAME += i4 p2 R3 R, i- r1 K1 o
- string NAME += ".dat"
: M4 b3 N- A. S* O! K! A0 D- U - endif/ K& y# V2 Q) t. O- _
- log NAME OFFSET SIZE
" p) \) \# ~6 z! [5 G O - endif/ `) w$ M6 N1 V* o1 E
- get DUMMY long
) W4 n2 j3 `$ B/ K - get DUMMY long
7 ] T0 R+ _' w: L5 T - else& I5 X# |0 C0 a9 A
- getdstring DUMMY SKIP_SIZE
; C ^7 v M W# w - endif1 U! c- A2 p3 E" x. a8 _* U
- next i
" N5 H, G7 k$ @' y, N, ~3 f
复制代码 |