本帖最后由 shane007 于 2011-4-29 06:41 编辑 - z! P) M/ O0 Y! D
# p) n; y* b6 k& X2 `
勤快的老外又放出了这个好东西,配合quickbms使用。, V8 Y1 L& @9 s) x# d+ l
好多小游戏都是用Shockwave Director做的,包括神秘视线。
$ m D: L% s/ ?0 Z8 z' ^4 _9 v如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper- e1 L: U( x- b: u( g f
- # script for QuickBMS http://aluigi.org/papers.htm#quickbms+ n# x- K+ D4 ?
, p( m2 R Q# Q3 C; i7 }8 C- quickbmsver 0.4.11
8 L! }& j2 ?2 Y* M2 Q! s8 p* Y: N& I - getdstring RIFX_SIGN 4' E+ ]% Y: [# O- g1 f- C
- if RIFX_SIGN == "RIFX"3 ]( w4 p v: i" m0 ~4 G% J
- endian big3 q4 G, q; b: f8 a5 u
- elif RIFX_SIGN == "XFIR"/ f" C8 V3 _6 t# X' ^
- endian little
+ e' X G' y! ~' h+ u - else0 C" p9 A2 k$ k4 ~8 ~
- cleanexit- M/ H8 W: V ]+ O3 A
- endif( p9 N1 P- }. I, c+ @
- get SIZE long& y9 q* i5 q# J& e7 ]2 @
- get SIGN long$ @, U- ~0 H3 U l( |: \9 ^7 Q
- if SIGN == 0x4647444d
- \% u# ~) X* b! @2 K4 s( q - get NAME fullname
0 {, G2 g9 g2 u: ]9 F7 O2 e. E - get FOLDER current_folder
8 P; c, B) b; t - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
4 ^3 ^' `! J, z: T4 i- l/ L - cleanexit
+ j3 W F: O' P% d* B; k - endif3 U+ m* Y/ B- \6 u9 d0 Y/ h
1 r8 B f3 m. v5 X! S- set FIRST = 1% H5 e E( m% M" _+ S$ Q7 N7 V
- for i = 0
% h- e8 Z9 @2 k! y8 [ - savepos CURR_OFFSET
) v! E: T7 O, c! `/ _$ z - getdstring SIGN 4
* ^5 i( a6 O& O5 B - if RIFX_SIGN != "RIFX"
4 M& Y. X" V/ w- k - string SIGN r= SIGN
* F6 r/ n$ |- D3 D4 a' s - endif1 c' U0 a! r8 t1 h( r. c( H7 J
- 9 y3 L. ` }# c" |4 F# r
- math SKIP_SIZE = 0x10- f C( U* J! B4 Y: h8 A( M
- if SIGN == ""% w7 L4 o. x$ n" n6 v
- cleanexit5 f1 U6 }" C' f" i: e6 u2 _
- elif SIGN == "RIFX"
6 e4 t; j" k/ r/ }1 Y+ ] - elif SIGN == "imap"- R% I/ Y' I$ ^5 B& t
- if FIRST != 0. f5 u6 T6 q2 G' B
- get DUMMY long+ w, ]. N$ p* c+ A0 M! H) l6 K2 q
- get DUMMY long
: t9 z! q: e' N. B - get OFFSET long
' g- E/ [( R% i# d1 b - if OFFSET > CURR_OFFSET, U* @/ }3 ]% W9 }- g6 r
- goto OFFSET' t- N$ N! y1 ~4 N; ?/ r* P# E% J
- math SKIP_SIZE = 0
) {! g" {7 e& g+ {0 a. x( I - endif
) o# ~$ g: q1 G0 O" V# f" y - endif8 m) p) m3 C4 }! n
- elif SIGN == "mmap"6 I! I' M ^# {
- if FIRST != 0
" ^5 y. [4 e1 U$ t2 {3 y. r - math SKIP_SIZE = 0x1c7 h5 E1 {- I; B4 n9 {
- set FIRST = 0
/ T4 Q( A+ ^2 S' G - endif
' o. T5 c+ U3 S: V - # filters start here
) `' a- ?8 V9 t7 e6 c - elif SIGN == "VERS"! s" K1 Q& ]+ s9 {# S2 ~3 e
- elif SIGN == "CASt"5 E/ D* O0 ^2 Y( D+ C* y
- elif SIGN == "CAS*"' r) z) a1 h' R) g* W& [
- elif SIGN == "Lctx"
* |, j9 \" {, O3 q5 l- ] - elif SIGN == "LctX"
+ K2 f3 ~! n g$ s - elif SIGN == "Lnam"
0 V7 H' Y' @( W) Z- O- o* H - elif SIGN == "Lscr") ~9 Z! k/ G6 }) {* m) L$ D
- elif SIGN == "Cinf"7 \7 U: t% x, I0 O. ~+ c! Z: o
- elif SIGN == "GRID"8 d" j, m1 P% p
- elif SIGN == "FCOL"
& Y. G n& V# R - elif SIGN == "MCsL"
( w% @2 z$ `/ y$ E% l" T- Z - elif SIGN == "DRCF"
, p) W! _* V- e+ v: w: ]1 F3 p - #elif SIGN == "BITD" # 16bit images0 K% m" g% P1 @+ r& B
- #elif SIGN == "ALFA" # alpha channel% w( r0 U% [3 a) r( m
- #elif SIGN == "sndS" # 16bit audio
% X0 g% ^3 Q6 @- D2 b; {: `( K1 i; d% ~ - elif SIGN == "sndH"* h2 B" I) b- E0 ^! u, t
- elif SIGN == "Sord". j& t Y+ [3 u7 W: _3 c- L
- elif SIGN == "free"
7 J- g) k% R4 L1 ^5 z4 e3 P# j9 P0 v - elif SIGN == "junk"
0 ?2 W& X# ^0 ?8 W% h6 C; E* J - elif SIGN == "Thum"8 a3 L* Q9 U; {3 f: T9 a
- elif SIGN == "KEY*"
3 q/ E$ ?, y- W0 w* @! @1 ` - elif SIGN == "FXmp"' d/ p6 d* ?" p/ d3 {, j' O
- elif SIGN == "Fmap", }' `$ ^% N$ I- l8 Q0 Y) C }( ~
- elif SIGN == "PUBL"
3 [$ Z1 K: I, v# l$ q* w1 H } - elif SIGN == "SCRF"
; \2 X3 N; V1 T! J! k; Z - elif SIGN == "VWFI"
0 U; Z3 E) ?0 ^) g1 s - elif SIGN == "VWSC"
" Z( {9 C' O. k- L3 U# |% [ - elif SIGN == "VWLB"$ u! Y/ K8 T0 _! }9 A
- elif SIGN == "VWTL"+ R+ x5 w# X& b" t+ y# O
- elif SIGN == "XTRl" H l6 W% A+ p( @3 X, R6 d; T% G
- elif SIGN == "ccl "
# t5 ^& P, v6 K# [: t' d0 m" @1 K6 U - elif SIGN == "SCVW"% l8 ^3 p5 O: H+ W
- elif SIGN == "Lval": G; C$ Q5 {& W
- elif SIGN == "cupt"3 N1 O1 J$ i7 |
- elif SIGN == "CLUT", y7 J" N' ~8 b* k( ^& D" }
- # filters end here
, e+ k/ y) _, U4 u/ h3 b9 t( x2 ~4 S1 n - else% M n1 V- V% Y
- # skip the above ones and dump the others
' D6 Z; E' o/ S) u6 g( a0 F - math SKIP_SIZE = -1
3 n. O$ u6 D5 g1 W! i - endif- ^# _" g( k4 K7 ^ W+ y# {
+ P I: m& W/ `* g% T) J- if SKIP_SIZE < 0
) q7 i3 L/ L+ p) d5 G - get SIZE long, u0 x$ u1 h1 B9 w+ R
- get OFFSET long
! t( [' d2 }; R3 x# I - if SIZE > 86 k2 Z3 ]# ]- p1 {' F7 [/ ]5 Q- i
- math OFFSET += 8
. S4 V8 r& H8 m. Q# @ - math SIZE -= 8" S+ j }& X- I( o
- set NAME string ""* @. x+ P) a6 J: O! M
- if SIGN == "XMED"
& l& C; ?( b Z8 h8 a/ g - elif SIGN == "ediM"8 M6 c U/ T: |7 E
- else
3 @2 ]! b0 V$ n2 d* a8 G5 J - set NAME string SIGN
0 c* ^& Q$ ^. q, T& H - string NAME += /
4 ]% u1 P5 b- u- [& j8 r1 E - string NAME += i) I, O: Z, t# J: }
- string NAME += ".dat"; l- f4 z5 N5 I( J/ ~" S0 B
- endif
0 q; i, ~: a) P/ K9 s% L - log NAME OFFSET SIZE
$ _7 j5 R7 H+ ~& r# H - endif
/ [' p# }4 c# W: A; |5 \/ j - get DUMMY long
' F' N6 n$ I* m* { - get DUMMY long. E5 s% i) t! h5 {- M U3 B/ f
- else2 A, g# o1 u/ b2 o8 c7 Q" W+ o
- getdstring DUMMY SKIP_SIZE
' [4 @# t, ~' E! v+ n* n( |% D - endif# D7 X0 ?; Z$ j7 m1 c/ n6 M
- next i
5 e5 H- @6 o3 u# ?) o A0 E
复制代码 |