本帖最后由 shane007 于 2011-4-29 06:41 编辑 3 [" k( L1 P' W( D( {
& \2 d. O% `$ k9 W, H
勤快的老外又放出了这个好东西,配合quickbms使用。. y& R$ X& O, ^ E6 I* \4 Z5 `* l
好多小游戏都是用Shockwave Director做的,包括神秘视线。
0 `8 W d$ y @如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
7 ^( ^$ o& C: S# U6 P, ?% G - # script for QuickBMS http://aluigi.org/papers.htm#quickbms5 ?& y$ i, r; F' c" J
- 7 q4 y& \+ |0 J R: P
- quickbmsver 0.4.115 O* ?$ M" I' L% G2 J8 ]8 w/ P
- getdstring RIFX_SIGN 47 v- @2 }: ~$ C. I
- if RIFX_SIGN == "RIFX"/ e4 E* B' z6 v- ^7 b3 L
- endian big* n/ M+ t7 {, S% N* C& t% G, x
- elif RIFX_SIGN == "XFIR"
# x1 W5 I! U* U: m' K3 u' u# U - endian little& P$ v7 ]7 J4 D/ d
- else
- i0 |6 O0 J7 _ - cleanexit
# B' b! Z7 n4 H1 \9 O1 P8 z3 m- h - endif
* {, @" o9 p- ]( H$ A3 n - get SIZE long& O; I& R( m; |$ c
- get SIGN long* t4 o1 o: q6 g6 y& @! C# Y
- if SIGN == 0x4647444d
- o7 x" D# R+ n* j - get NAME fullname
$ ~& v2 d( |6 o9 V! C% c, W - get FOLDER current_folder% v# u6 ?7 r2 V- t1 i6 w
- print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
2 ]6 Y2 A' c9 ?7 o5 S% C/ n - cleanexit! m% u E0 v( R$ z
- endif
2 X: q& L7 T X! E1 q: W
4 h4 }. r7 k; A$ u& c- set FIRST = 1
; k- `$ a g& T, p - for i = 0+ i1 a* o5 { W& F; U8 g: P- A
- savepos CURR_OFFSET; N* D( f! M- p% K
- getdstring SIGN 4
: I( D a8 K) j3 j, ]4 ~ - if RIFX_SIGN != "RIFX"
/ A6 W( k; g1 r3 J' A. `) V: e - string SIGN r= SIGN5 M* g+ w$ A( }% `* L F$ y% o% @' a
- endif/ d( {% E, i4 C: \8 k, B. r) C4 g
( Y1 m; G, A* w" i- math SKIP_SIZE = 0x109 F( `7 F U1 ?2 }4 e: }# X
- if SIGN == ""
( O) P, x( Z7 z4 m+ c - cleanexit
$ ?/ m' n' e/ Z; h - elif SIGN == "RIFX"2 n. f: a, M% @* A+ ?$ C1 O" c& V
- elif SIGN == "imap"# Z* ?# N G, ]8 W/ o
- if FIRST != 06 P. V; F0 j: {) ^! c
- get DUMMY long# `$ e0 C9 h. n$ u
- get DUMMY long
" }9 X8 K. \, a# o* L8 t - get OFFSET long1 E+ p" l3 g$ F, N8 g; V# Y
- if OFFSET > CURR_OFFSET
5 Y7 m5 y6 G2 z6 o* I - goto OFFSET4 m- d ~0 y5 \3 N B
- math SKIP_SIZE = 0$ \+ i/ i/ N: p6 \5 M) c
- endif
+ E. B6 n f+ Z7 N7 s - endif8 m) R9 ~" e2 O" ^+ U) q
- elif SIGN == "mmap"
3 h& o# R7 o- ^. F3 y, _9 A! h7 v& G - if FIRST != 0
9 ^) J. C( d. z+ ~. h7 f - math SKIP_SIZE = 0x1c
% K" c0 c) k6 Z- H/ _ - set FIRST = 0
* r8 {5 b, T0 {3 i$ G5 G - endif
5 G- f, ]# O0 C- S6 g - # filters start here
/ w9 l0 r' f2 D- S - elif SIGN == "VERS"4 I0 c8 R( T' p( u- T
- elif SIGN == "CASt"/ ^; ]; a, T- t; U
- elif SIGN == "CAS*"
: X* G4 ]0 ]0 p; w - elif SIGN == "Lctx"# R' D4 C% k. Y8 m# T( p
- elif SIGN == "LctX"
0 R1 S, g! z9 B8 v3 p u - elif SIGN == "Lnam"
3 i) B7 K0 Y" z% ]! k. ]7 V$ X - elif SIGN == "Lscr"0 `2 [. S3 N. n. M' X6 o
- elif SIGN == "Cinf"
# k( h: m7 P/ F, P - elif SIGN == "GRID", _& m3 ?1 P Z. f; `
- elif SIGN == "FCOL"
. `- f4 F& {1 \, q1 t5 i - elif SIGN == "MCsL"; L) v2 q, I* k5 ?( D; ?; M
- elif SIGN == "DRCF") p* ~2 _4 P( K; L2 Z& U
- #elif SIGN == "BITD" # 16bit images1 R* K6 H m X* J
- #elif SIGN == "ALFA" # alpha channel4 y8 P! }* X2 W# Q0 `
- #elif SIGN == "sndS" # 16bit audio
$ Z9 p/ u- M# z7 F - elif SIGN == "sndH"
. P2 t. o* q) o5 h ]$ } - elif SIGN == "Sord"9 l# ^% n6 G5 J+ y5 `
- elif SIGN == "free"* x; |% H% [' F% j
- elif SIGN == "junk"
. b4 F4 _# M& L - elif SIGN == "Thum"
0 P0 A. i6 d& @% q7 H! S - elif SIGN == "KEY*"
( F- Z* M- k8 L0 f$ p - elif SIGN == "FXmp"
5 ~. G2 j) C' w* i" F& Z - elif SIGN == "Fmap"$ D8 O$ S9 o5 V H& F
- elif SIGN == "PUBL"
5 X P, z/ s$ w - elif SIGN == "SCRF"
: X4 u K" i1 [& } - elif SIGN == "VWFI"1 K- C$ l6 w/ ^8 \4 G" m
- elif SIGN == "VWSC"( U1 r! g7 R( Z1 _: ~. }$ G3 S" k
- elif SIGN == "VWLB"4 S) o6 K: [) d M
- elif SIGN == "VWTL"' p; e& ?# x* V0 j
- elif SIGN == "XTRl"- d7 x+ [( P6 \
- elif SIGN == "ccl "
8 d( A% `7 Z2 A) x v: Q* X - elif SIGN == "SCVW"
# j5 D0 X& K: s; e" q( c+ v - elif SIGN == "Lval"
2 s$ d# W, d3 l7 i: g! ~; m - elif SIGN == "cupt"6 k+ H, Z T6 M. O Y. X# m" T
- elif SIGN == "CLUT"+ ]( \2 S) \4 q. P; |
- # filters end here2 M$ e# |5 @; \! W/ i( m
- else
" @8 x; P: |! E0 x* A' \8 a2 ` - # skip the above ones and dump the others
8 x9 T; a \8 L+ K9 A5 j - math SKIP_SIZE = -1: a5 }( `( C* Y4 H. E/ }
- endif, b+ _: x( _- B9 i8 i
4 d5 E* k0 ~2 t- if SKIP_SIZE < 0
: |5 Z8 o0 X! Q0 t" O& y - get SIZE long
) S8 q1 K) n% n* ~) u- f - get OFFSET long$ g& R- @* U' Z+ X
- if SIZE > 8
0 [- m& c7 }8 {2 v - math OFFSET += 8
# s1 a, D8 R8 a4 M$ E - math SIZE -= 8, j" L' l/ H; a/ h: |1 A3 h+ c* \
- set NAME string ""
6 i; t0 O7 f& X8 X - if SIGN == "XMED"- N3 {8 @0 k2 o4 m, `
- elif SIGN == "ediM"
% n8 M' U% l2 z }; x1 e - else' @5 M& {" K" D$ }. a- T# k: a
- set NAME string SIGN' h' K4 Q/ N3 m' i# @6 A5 i
- string NAME += /
/ f0 y7 ]/ F% D% ~ - string NAME += i
5 J. t, y# U9 R' {2 O0 L& w - string NAME += ".dat"
- D# ?- a* g6 @8 }$ w8 o - endif
( p. a' t) a; o O- @% M - log NAME OFFSET SIZE; w, @" i/ q6 s1 o7 {
- endif
. W7 y0 t6 k, @" u1 u8 ^% f' O2 J+ O - get DUMMY long2 p$ w4 h, @6 x0 D
- get DUMMY long
' { Z7 V" c5 {# `% ]4 ~ - else& ^$ A2 J% S/ p. y$ L
- getdstring DUMMY SKIP_SIZE- k0 O! {* x5 F# v9 N7 N9 E, e
- endif" q8 ]5 p$ ?9 S
- next i" x) ]2 N3 f$ d% I0 F
复制代码 |