本帖最后由 shane007 于 2011-4-29 06:41 编辑 ( L& C) F7 q2 O- k* l, |$ W
r/ h4 m$ E, d' T% t! t8 M
勤快的老外又放出了这个好东西,配合quickbms使用。! s, x! z9 y% _ I* f
好多小游戏都是用Shockwave Director做的,包括神秘视线。* b; s- r( g' o6 Z3 {+ F
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
! [, }6 i' i$ ^6 d+ o - # script for QuickBMS http://aluigi.org/papers.htm#quickbms
$ @6 {% K, P5 p5 ]+ A8 d8 O; | - 3 Q* q8 {1 _( \+ o9 h
- quickbmsver 0.4.11% ~% z+ x( |2 |
- getdstring RIFX_SIGN 4
6 k9 [0 Y1 f# Q! {1 Y5 P - if RIFX_SIGN == "RIFX"4 C- ~; C" h) ?* Z
- endian big; p8 W) }" V& _! d- S7 e( ^
- elif RIFX_SIGN == "XFIR"
' k! |& ]$ ]9 {1 L; h, e4 h - endian little' Z* Y* W2 h Y7 `) o* t" U
- else6 R! A- \7 n5 r$ @) C" v
- cleanexit
9 B) i$ y( Z* i) ~* x - endif
$ x6 P) n; v! v - get SIZE long# h9 q/ ^! y$ S8 ~& s: P: j# I+ m
- get SIGN long- \- H6 k% c2 r5 s0 p! `
- if SIGN == 0x4647444d
! |3 r, u$ h4 e) v9 c/ X$ }6 `! Y - get NAME fullname3 O6 z* V# H' x. ~# D! [
- get FOLDER current_folder
) v- [5 H: M0 z6 @9 j7 g& b& @ - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
% m- }6 z4 N h" I0 m - cleanexit
% G; O8 o8 e3 Y - endif
/ e( m1 F9 u$ @3 Z a4 d4 ` - 6 [" ~- D0 J* z. g* k
- set FIRST = 1( X: P) y( n* M) y3 f3 c9 k7 g
- for i = 0( E+ t8 R6 R7 [0 F! x. C( M, f9 M
- savepos CURR_OFFSET
$ y& G/ J$ o1 Z0 `2 P - getdstring SIGN 45 D8 G: U6 t" F* ]2 k
- if RIFX_SIGN != "RIFX"
! O; E% ]3 o+ j; M$ Z# d - string SIGN r= SIGN. j' x& B0 M3 E8 ?$ T
- endif4 r, Q! A( `- _% |6 e
- h6 X0 P/ Q5 M' R8 ~- p3 p. H& Y
- math SKIP_SIZE = 0x10
) j" `) m4 _0 t* J- ?3 [1 \/ w8 F( v - if SIGN == ""5 C$ F* L, s5 M
- cleanexit1 A- {. D; x! n3 V: Y8 M
- elif SIGN == "RIFX"0 B4 f) h/ H: _6 T0 A
- elif SIGN == "imap"
' f1 y T% @. Y - if FIRST != 07 [8 M1 ]9 h& N3 b. G) d, L
- get DUMMY long
5 \, F. L* f# |, M - get DUMMY long
* ~. U: `5 d' Y0 C; u: z - get OFFSET long A( h- e% y) z/ O
- if OFFSET > CURR_OFFSET
. f; ^& o4 s$ E- ~+ Y% T" j) `7 t$ n - goto OFFSET3 r3 X' o/ o# t5 @; q
- math SKIP_SIZE = 0( t- f _+ e. E# g; x8 ~6 a
- endif* _/ U6 [4 `/ |9 F4 x( a
- endif3 k' s, B1 G( u0 u
- elif SIGN == "mmap"9 o1 L. _* a5 ~4 L' H$ ~
- if FIRST != 0
+ R# J+ Y5 Q0 d% v- A; T - math SKIP_SIZE = 0x1c* M1 D6 [. p# }/ d7 U4 t+ S
- set FIRST = 0! V7 g/ O: }1 J# h! l
- endif
0 s5 b5 P+ e. {) F/ Q - # filters start here
# A! v0 I4 Z4 ]8 ]: b+ k" E: l8 m& Z - elif SIGN == "VERS"- y8 i' {, E! n
- elif SIGN == "CASt"
9 c/ Q+ p2 _0 K% E" M3 B, ^ - elif SIGN == "CAS*") ]3 o' L; s( ~9 W# s, s" X
- elif SIGN == "Lctx"
1 y3 {- t4 h' s8 W) C - elif SIGN == "LctX"
) ]4 {9 c5 _6 l3 E* e; ~" O& ^ - elif SIGN == "Lnam"
# H! j5 f0 c9 r7 N, t - elif SIGN == "Lscr"
" K1 T- K8 y$ j4 D - elif SIGN == "Cinf"
( p8 p/ Q) D' E: P7 x - elif SIGN == "GRID"8 g8 h3 {! w6 S
- elif SIGN == "FCOL"
: F% M/ A, I/ K! M2 W8 V* F - elif SIGN == "MCsL"
! }6 M7 g$ J4 E) {% X | - elif SIGN == "DRCF"$ q/ b$ _. j; z
- #elif SIGN == "BITD" # 16bit images6 g! W& f. ], i \
- #elif SIGN == "ALFA" # alpha channel
r$ b. E* W4 z& E0 U7 ?8 \ - #elif SIGN == "sndS" # 16bit audio: h8 @( q- ]0 B
- elif SIGN == "sndH"
* k3 q9 T/ t' {3 h! }) _) M - elif SIGN == "Sord"
# e# U6 w5 M! l y - elif SIGN == "free"
+ ~. f x, D! Y! H4 |% K; s - elif SIGN == "junk"* A! l- q+ Q! ^& J, N3 j7 q8 a
- elif SIGN == "Thum"$ G7 I2 i" m) z
- elif SIGN == "KEY*"
7 |% g* B. e1 j; D7 O - elif SIGN == "FXmp"
9 ^( a+ `0 p$ L/ X# m5 j5 j - elif SIGN == "Fmap"
7 r0 F8 F1 p+ B7 j3 e- ] - elif SIGN == "PUBL"
1 S3 b k8 T4 X3 R k1 ?' d% [0 o - elif SIGN == "SCRF"+ j, a+ L& D$ k, |+ ~1 l. Q
- elif SIGN == "VWFI"
# p5 o) W6 y- _( o - elif SIGN == "VWSC"& e9 O# K9 S9 Z+ c0 e
- elif SIGN == "VWLB"9 }; N2 c! v( U
- elif SIGN == "VWTL"
* T) F: p* t6 I) | \4 }) V - elif SIGN == "XTRl"
: h0 w% c8 R1 }. e5 Z+ A - elif SIGN == "ccl "
) m1 F' i5 D& e$ k. l/ _ - elif SIGN == "SCVW"
% u* h/ k. M9 Y - elif SIGN == "Lval"6 z- @/ w' ~5 R9 z: I
- elif SIGN == "cupt"
: V8 I3 K' P* R: y - elif SIGN == "CLUT"
$ s* x9 p' I7 ` - # filters end here; B8 Y1 y2 f$ S: K' _$ q
- else X- [, f4 a# J- `
- # skip the above ones and dump the others
9 p& D, M K/ g4 V8 p/ } - math SKIP_SIZE = -1
& N+ \9 J2 `! ] - endif' w/ m8 o4 _1 u# X7 q
& l. f% J0 t: K8 m( p- if SKIP_SIZE < 0
# m4 M; O. b, r - get SIZE long
8 }8 e, D0 o' [ l! B3 S3 j - get OFFSET long
( g; n% p0 Q3 z! b; u5 A - if SIZE > 8
X7 e) N/ q7 q0 e4 w! H - math OFFSET += 8
, y1 y: {/ S# K! g - math SIZE -= 8% t& Q/ C% N/ O
- set NAME string ""/ }" x8 O2 m z# `; u' y* S
- if SIGN == "XMED"$ E0 ]# t! o3 V' p& J/ w# u! l# o
- elif SIGN == "ediM"
& T* Q# T3 W. y - else2 _6 v$ C+ B% t% z% _ E. m1 b7 i5 R
- set NAME string SIGN* B5 m6 j7 @7 M& k( O) _ A8 Q
- string NAME += /
0 l2 a% Y W$ d5 @5 y% @* s - string NAME += i T6 w: ~+ m. P! C: f$ A. i
- string NAME += ".dat"% N9 _; a: Q5 @$ }( `9 ^( |
- endif
# t, j+ U6 M' w$ r7 C - log NAME OFFSET SIZE& ^" |& K. p8 A9 S5 N# D
- endif G" }9 g" z- r& _, w7 U/ ?4 |
- get DUMMY long
) u5 _ |: E. @4 c - get DUMMY long
& \2 f4 g9 L T0 I1 B }! U& K' l - else7 \' k. @- K$ L+ G. K
- getdstring DUMMY SKIP_SIZE
/ o/ k9 [+ S9 n: i1 C1 K - endif
0 L3 R( a* N% T: m1 N7 V0 n$ z - next i& J4 t5 o2 I6 b& j
复制代码 |