本帖最后由 shane007 于 2011-4-29 06:41 编辑
+ Q# K: M5 }+ g- Z# `4 L% m* v; Y% j5 Z" V$ d, @- [# s
勤快的老外又放出了这个好东西,配合quickbms使用。
- q! G! I( n, ]7 `) I5 B% z9 z3 v4 _好多小游戏都是用Shockwave Director做的,包括神秘视线。 q w$ }3 \* y# o+ h
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
9 D4 V& P p7 H' `, G3 A - # script for QuickBMS http://aluigi.org/papers.htm#quickbms! _& B w, w. j6 R9 N
- , S: Y$ ~8 x C: P* Q D% G
- quickbmsver 0.4.11
/ G6 `; L* `8 h/ o; k/ L4 K - getdstring RIFX_SIGN 4. P. R, [( b: z, N( S9 [- Q: _
- if RIFX_SIGN == "RIFX"
9 c0 @, t8 U! y4 U7 T - endian big, e4 `/ W1 m# a+ Y. W( T
- elif RIFX_SIGN == "XFIR"( t: ^6 x: H9 v) R7 y
- endian little
I g8 Q$ H* } ?2 O - else
$ g2 B& s/ G2 P9 Z/ q- }) x - cleanexit
) q R" v8 ^7 N) G" A - endif' P7 [- M0 H- o: b* { m
- get SIZE long8 y; O; D$ [' K% T4 n9 J! B
- get SIGN long
) ~6 A- u P) T6 _4 n - if SIGN == 0x4647444d, g, L3 B- x7 ~: `7 P d* N1 Z2 h" z
- get NAME fullname
+ V6 B( @$ D) t$ n - get FOLDER current_folder
0 j* T* ]* h1 x5 L4 X+ b* Q/ j9 B, F# i - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"/ y. W/ a: z5 z( l, D
- cleanexit
4 V5 Y6 j. q' r3 T. V - endif
! o) F( t1 S; Y: _: }
& t6 J+ }9 [2 H8 |( u- set FIRST = 1
! e1 ~% [) @5 f8 ~ - for i = 0
( [# p" R8 [) n& B2 Q - savepos CURR_OFFSET" B9 I6 v+ @$ O/ `2 s* ~0 P
- getdstring SIGN 4# p8 r. `& O E5 n+ F7 z
- if RIFX_SIGN != "RIFX"
5 i& @4 D2 N/ a/ |8 ~ - string SIGN r= SIGN
; S0 M# l3 U C8 f& m' I8 k - endif: l9 P5 O0 K: y- D& Z
- - a) H6 j/ r c* [) f' r
- math SKIP_SIZE = 0x10* C, Y1 ?( o6 {/ `
- if SIGN == ""! F& f. q" {! R. p
- cleanexit% G7 u' ~4 e$ ^- V
- elif SIGN == "RIFX"$ o! z4 o4 m, `' ^
- elif SIGN == "imap"
) K% y4 M) z- T2 U - if FIRST != 0& L" n1 {5 W2 q0 @! r! i
- get DUMMY long
5 X- h7 L5 s/ V - get DUMMY long
; w. X% t% a- F# ~" L; | - get OFFSET long
9 e3 G7 d' ?4 z( [2 w! t( { - if OFFSET > CURR_OFFSET3 w6 p/ z) K% w! z7 r" I. a# x
- goto OFFSET
`& B8 X! m; X% a3 {# R9 ?3 m - math SKIP_SIZE = 0
# s( c5 T: ^' J$ `/ W0 ^; f - endif n" }. Q9 T# K! b' H
- endif4 p; s+ x0 O8 L0 M. Y1 L" g
- elif SIGN == "mmap"
1 f( t0 Q+ M- ~- X: l - if FIRST != 0* C. j$ A$ G {8 o7 H" I
- math SKIP_SIZE = 0x1c
1 S0 X3 g7 i. u9 }$ v. H: A - set FIRST = 0
1 a1 v4 y9 X. F$ G- p9 k+ @' p - endif" |2 S) E6 t' B, v* Z7 X; V k
- # filters start here
1 K, i4 y5 s: x9 v - elif SIGN == "VERS"" O& T4 k/ i, n* c8 @( d) E2 R
- elif SIGN == "CASt"+ W I+ c6 M. e+ P# x( F% s+ u
- elif SIGN == "CAS*"' H8 `8 }4 _( G3 p- _1 J
- elif SIGN == "Lctx"$ A# i3 N6 b/ a4 V5 r3 e: P, h
- elif SIGN == "LctX"7 a5 q4 Q' |) v0 u( o
- elif SIGN == "Lnam" {( K4 a8 C/ l! D; y; z) ~
- elif SIGN == "Lscr"
" C! Z1 ]- h+ W# p. o. ^- I% c& |4 z - elif SIGN == "Cinf"
3 d5 Y: e5 f: M% Y4 v& A% D& d - elif SIGN == "GRID"3 b0 l5 e' p9 `
- elif SIGN == "FCOL"
7 f: \6 Q0 L0 h! }# N8 J7 h - elif SIGN == "MCsL"
7 x+ z8 |- x6 u* d0 Q2 Q - elif SIGN == "DRCF"% z- r- ~ F9 t+ p8 K
- #elif SIGN == "BITD" # 16bit images" ]# W' S" D; h' A' K' o* s3 _+ }! E
- #elif SIGN == "ALFA" # alpha channel
4 G" o2 ]* _- j9 g! E# L - #elif SIGN == "sndS" # 16bit audio8 E2 F1 L& ~* _# Y, {( W# }8 u
- elif SIGN == "sndH"
8 h& c; _ D3 \9 S( b - elif SIGN == "Sord"/ U% g! Y" F$ N, g
- elif SIGN == "free"
( @' @$ t1 [. h$ x1 r: B9 R - elif SIGN == "junk"6 A# v: U8 u0 E0 u
- elif SIGN == "Thum" I7 S& I( |' N& w! E
- elif SIGN == "KEY*" N( k0 _. X3 J+ C$ G9 |
- elif SIGN == "FXmp": R; @ a N+ l- i1 [
- elif SIGN == "Fmap"
: y; a) M# r5 s" b' U) u - elif SIGN == "PUBL". D6 u9 N# }1 Y- r
- elif SIGN == "SCRF"6 a, q8 T3 o: N! q
- elif SIGN == "VWFI"
8 |4 Z R! ]8 k7 R# N' P/ q$ J; ` - elif SIGN == "VWSC"
" ?% s0 w9 g7 W7 g! v1 Y - elif SIGN == "VWLB"! J% K0 |; R8 y
- elif SIGN == "VWTL"
( h8 \% j. s5 J* g( A# C - elif SIGN == "XTRl"- O- u: ?+ W6 s j8 B% r7 |
- elif SIGN == "ccl "
' e+ A: L8 G+ ]) F. y( ? - elif SIGN == "SCVW"% |* ^/ L$ z: T* A
- elif SIGN == "Lval"
& x; ^! z: ~7 g - elif SIGN == "cupt"
7 r. Q& b1 G7 b% q+ v - elif SIGN == "CLUT"
9 D+ J0 Q/ Y$ Z$ |6 l( J# t - # filters end here
$ j; D+ \ M" R. q' Q4 G/ L - else
. Q2 i9 z" p' e7 T( m* z& [0 r: a - # skip the above ones and dump the others
) a, g' u3 v: Z6 I" G6 L - math SKIP_SIZE = -1 ?( I! a8 H& A* T5 k7 z
- endif
: c1 _; S7 e/ n3 [ - ; s4 }) N; k3 ~( ]: N4 G
- if SKIP_SIZE < 0
5 H% j0 ]) u% i" _* u$ n( B V - get SIZE long
; Z$ `2 F6 X# ~, [( z - get OFFSET long7 k3 L' k& h9 g3 Z$ J6 E
- if SIZE > 8' _( [2 u) D* o. z( \* O3 q0 F
- math OFFSET += 8
& `$ h3 p% O* f - math SIZE -= 82 }& ~9 v! f8 p/ L# G; N
- set NAME string ""
7 L( c1 ~8 j8 Y* }# ?! t - if SIGN == "XMED"8 M4 o3 q1 \3 g2 P W
- elif SIGN == "ediM"9 Q0 Y6 k( G7 m8 A( C
- else' g0 F0 \" J2 A7 a" j
- set NAME string SIGN
6 \* ]' X1 z ]0 h! d - string NAME += /
" C2 N7 G2 u- {; `4 `3 C - string NAME += i
5 z. m: N: R2 e - string NAME += ".dat"; _: w+ ?9 x& L
- endif
+ M( `! }. a" [: U, a - log NAME OFFSET SIZE
" m0 i3 ]! p$ Q, I# O, f( F) S/ q ? - endif! u) i9 E2 z [1 t
- get DUMMY long
7 x6 W/ @* ?$ K: K5 J - get DUMMY long+ C8 S2 H0 ^5 I/ ]3 F; P' c! B% X
- else- U s2 ]' L1 q2 Q
- getdstring DUMMY SKIP_SIZE! Z( L& B5 u3 X; I
- endif
G4 ]% K/ E( o8 c! C - next i# P% @1 G" I8 L1 L1 _
复制代码 |