本帖最后由 shane007 于 2011-4-29 06:41 编辑
# ?$ j9 d: ]4 ^: }6 O8 C- b& g
$ w& I+ d/ J8 T勤快的老外又放出了这个好东西,配合quickbms使用。- ~+ F; E( e: \# ]. f7 }& q0 ]
好多小游戏都是用Shockwave Director做的,包括神秘视线。
7 e/ u9 d- z* ^9 S& l如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
* u) ]9 x0 F( ^5 l6 a0 f" k X - # script for QuickBMS http://aluigi.org/papers.htm#quickbms; X3 p8 q B' Q8 c0 i- ~ f
+ l7 G8 x: T' ?6 q' ?% }- d- quickbmsver 0.4.11
0 {8 `; O/ v5 n% l - getdstring RIFX_SIGN 41 w+ F- t1 G" e" S
- if RIFX_SIGN == "RIFX"/ M7 R A# S% R; \* H& ~
- endian big
$ }" y n. p& u0 i - elif RIFX_SIGN == "XFIR"
o. x; N' ~* v" L+ @ - endian little8 P* R/ Q" |# n3 m; k% _$ Y
- else
! F- Q6 y- f* N3 h - cleanexit. _! l& y% [+ L8 \
- endif
9 S( f! |7 i- b# ]4 u) l# E - get SIZE long4 n! E. f, F9 j3 Y% \; M
- get SIGN long3 K& X+ h5 N1 H6 ~) E, [; v( E
- if SIGN == 0x4647444d
5 }. A; p% O. j/ X4 G( T0 N - get NAME fullname6 s3 b1 I+ w8 d! }
- get FOLDER current_folder
4 |+ G B/ b( Z9 X8 I - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"; |8 L/ t- x. R- u" b
- cleanexit
8 k( b4 h' I/ X# @9 Q3 s - endif7 `9 u5 g* k; d8 _; q
- ! t- h& p1 s( A. g8 |
- set FIRST = 17 O/ P' ]2 L8 i; m
- for i = 05 g9 J+ h% D, g8 a$ t# W
- savepos CURR_OFFSET5 Z- g7 U K) n4 b4 g7 W
- getdstring SIGN 40 f* Q& E6 w6 d+ O% D% x
- if RIFX_SIGN != "RIFX"4 x% _9 B- J/ a3 V) @( b9 M
- string SIGN r= SIGN
X8 ~* E- E# C2 U3 P& ~ - endif
$ h& M2 l/ {" d
+ o3 R$ I" ^& c% f- math SKIP_SIZE = 0x10
* |$ Z. t% @% m+ `# z2 e( { k - if SIGN == ""
( i4 T2 l& [$ P) w' O - cleanexit
& T; @. W) ~0 D# U4 k9 c* R - elif SIGN == "RIFX"! g* n4 n0 j" d( I+ A
- elif SIGN == "imap"" N( i, v& Z/ w5 ]
- if FIRST != 0
2 f* R! _* W1 V& H6 ~ - get DUMMY long. v! U. M ]* N
- get DUMMY long g/ ]8 r' B- Y2 E0 n$ i4 [
- get OFFSET long
i; F8 Z* _+ U) g1 z) Y6 F- Q - if OFFSET > CURR_OFFSET8 `6 D- v& N; ]
- goto OFFSET
" F' B& H- i9 L. s } - math SKIP_SIZE = 0; F a5 O( {" @" M
- endif; }: h; Y) H; f3 t( ~8 R N
- endif
; L8 G5 E" j' I5 p - elif SIGN == "mmap"
, r3 d# @8 s* s# P. F - if FIRST != 0
7 u* J7 D2 F( j/ Z6 ]1 d: q8 d" t6 V - math SKIP_SIZE = 0x1c- X/ g* q l) e0 x
- set FIRST = 00 `3 v+ W) Q, F+ H* y
- endif
& w5 u! z: R# G, A) y; D8 M - # filters start here! ]' [4 W0 z/ T8 d
- elif SIGN == "VERS": I( T/ ]4 u2 P7 ]- ]$ ]. y* \5 K
- elif SIGN == "CASt"+ n( F' n' T c3 i: d% h
- elif SIGN == "CAS*"" O1 k; ~1 w& N6 O. D9 j
- elif SIGN == "Lctx"7 e8 ?5 {7 Z4 G# Z! L- }
- elif SIGN == "LctX"
& [7 F) u' A0 S, i( a - elif SIGN == "Lnam"7 p0 U( h" K" N6 S8 y( ~
- elif SIGN == "Lscr"1 L, q+ e! q; H( G
- elif SIGN == "Cinf"5 t# ]6 h% V& _) Y# ^4 V
- elif SIGN == "GRID"
4 `1 `% ]; O' P- f# h' [/ P - elif SIGN == "FCOL"
8 J8 r/ t# E! } - elif SIGN == "MCsL"
* U' v O: u% G% M - elif SIGN == "DRCF"& @! A& [2 ?- M
- #elif SIGN == "BITD" # 16bit images
+ L. y4 }2 X* p( w1 U9 ^ - #elif SIGN == "ALFA" # alpha channel8 y5 R1 y2 `7 f4 K
- #elif SIGN == "sndS" # 16bit audio
1 X, o; v# V+ r% v. _ | - elif SIGN == "sndH") t1 w! O# a' x* S+ L8 O
- elif SIGN == "Sord"
( g( o4 E; C9 C# d - elif SIGN == "free"
- u( Y1 i" Z. y$ j! t; _ - elif SIGN == "junk"- c2 z# _! ?7 L! Y, ]- D5 x
- elif SIGN == "Thum") g, ?. Q7 i, U$ i
- elif SIGN == "KEY*"
! T7 C# W7 |0 K/ {+ M/ U+ n - elif SIGN == "FXmp"
$ R' N _9 N) y a) Q# V+ _ L - elif SIGN == "Fmap") c) z7 N1 x! c Q
- elif SIGN == "PUBL"$ c$ h p0 ?/ b
- elif SIGN == "SCRF"- C" i# W/ g3 ^- f! N" T W$ m- h. v& E
- elif SIGN == "VWFI". L! ?' p& h/ B! l, u' p& y. q7 R
- elif SIGN == "VWSC"
* h# e3 w/ f4 D# ?) |" ~* X0 V* p - elif SIGN == "VWLB", d- U3 a' Q" w4 s
- elif SIGN == "VWTL"
: ]) D1 }7 m* x7 u0 ` - elif SIGN == "XTRl"
3 F3 T! k6 b- R3 m9 ~) ~0 N, F - elif SIGN == "ccl "5 {( m2 R* i* |! n$ N
- elif SIGN == "SCVW". b) B. R+ U3 f
- elif SIGN == "Lval"
& P2 `" X4 s6 U - elif SIGN == "cupt"8 l. G6 B5 x4 m( j$ A) d! T6 a
- elif SIGN == "CLUT"3 B6 c( V |1 x$ X
- # filters end here
/ a/ M/ ]; ?5 ]) ?& n7 P - else1 g% G/ [4 T% O4 F4 f4 f
- # skip the above ones and dump the others( c! z; j- H( z4 k8 w; s& _* V/ ~
- math SKIP_SIZE = -1# G/ ^) A3 v+ S. n' G# V3 D! i& [( g
- endif5 j- J) U. s' r! i. i% P
9 o3 U& S3 D3 A& n1 d9 e- if SKIP_SIZE < 0
1 ?/ }) `) T/ U3 L - get SIZE long
1 r( N: e/ [) P; i) g0 H3 ~ - get OFFSET long; k# x1 P0 B+ A
- if SIZE > 8
8 j: Z& }! e5 P7 ?/ |4 Q" [2 Q - math OFFSET += 8
/ S) Y' \+ t1 I" O4 t+ W* Y - math SIZE -= 8
: m* u* X: o7 ]3 F$ v5 r% K, S3 C7 { - set NAME string ""
# }/ P/ x1 g0 c' i' @8 c; ` - if SIGN == "XMED"
( q$ \: P: x, R: U" M5 _ - elif SIGN == "ediM"
! r) t G* ]5 {: x; V$ Z! J2 u& s - else
0 B2 a$ R m$ }: R) V* G - set NAME string SIGN
' |0 Y( R$ P; \3 i - string NAME += /
5 s: B8 T* J, l$ r/ k - string NAME += i
4 G5 l2 m" q) a: Y" r - string NAME += ".dat"
. e. H( Q& I% J; H/ l$ J - endif$ H7 a8 @! @0 T) L( s1 g
- log NAME OFFSET SIZE
. b+ b! i2 q' S - endif& \6 h" o' t8 z- O
- get DUMMY long- z0 G+ F) g, h% F6 F
- get DUMMY long' |0 m$ V' D2 `* n6 P. x
- else
5 G0 l; ^. B- v* ] - getdstring DUMMY SKIP_SIZE
9 W* O2 d5 Q2 M! I - endif, ^( I% S4 T' c1 }
- next i; x, i1 s8 r3 {: R. N, l
复制代码 |