冒险解谜游戏中文网 ChinaAVG
标题:
Shockwave Director dcr/dir/dxr/cst dumper
[打印本页]
作者:
shane007
时间:
2011-4-29 06:39
标题:
Shockwave Director dcr/dir/dxr/cst dumper
本帖最后由 shane007 于 2011-4-29 06:41 编辑
: I# e/ o+ p) X6 L* z/ G3 t
8 a4 y \5 A* h0 R4 Q9 ]
勤快的老外又放出了这个好东西,配合quickbms使用。
0 B9 x8 j) l. o p/ h# ^8 E# e
好多小游戏都是用Shockwave Director做的,包括神秘视线。
, p' u1 A0 z! G% ?% E- `
如果能做出打包器的话,就又能解决好多游戏的汉化了。
# Shockwave Director dcr/dir/dxr/cst dumper
1 X M! }- T# H1 g. k+ O
# script for QuickBMS http://aluigi.org/papers.htm#quickbms
4 H1 ~2 Q1 F# Q" N+ o+ t
# f* o/ f. Z. M2 _+ K7 H
quickbmsver 0.4.11
; v3 J) B: E" j& Z. M0 e
getdstring RIFX_SIGN 4
2 v& J% M* C" S
if RIFX_SIGN == "RIFX"
7 w, t, B$ b$ b9 G8 x* B! \6 M
endian big
2 ?2 }, X, {8 `9 s6 a
elif RIFX_SIGN == "XFIR"
, E; M: L, ~8 L: N/ }6 T
endian little
& ?/ D- }4 Q9 `6 U$ f* ~3 a8 h
else
1 o, I" B! ]) ?' G* g N) ^% ^
cleanexit
3 l, A+ C! y$ M7 F# x. x$ _' r7 T- `
endif
4 P6 C& [) u) I1 m/ t! a
get SIZE long
# D+ P4 m, ?2 W6 b5 L
get SIGN long
5 e: ?7 A! ^, W* N
if SIGN == 0x4647444d
( Y( d- ]8 [# b- W, u, ~5 k
get NAME fullname
8 x; [5 F. y' X. y. }! K- D
get FOLDER current_folder
# {3 o/ d1 E5 X0 D. M" _# w2 V
print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
2 E5 { e2 S i, I2 H
cleanexit
* {8 M! J5 t% G+ g& I
endif
$ {' N" i4 t! i" r8 y" t
% i! I3 w h7 ]- |/ S
set FIRST = 1
5 W: v+ G$ m. l$ m" K9 }& |" `
for i = 0
7 O4 l# N' ~/ P6 G7 X
savepos CURR_OFFSET
3 H6 W( A% J+ D6 `) ~& u0 i
getdstring SIGN 4
3 X5 `2 Z! c' s c0 w3 Y. \
if RIFX_SIGN != "RIFX"
5 m/ w/ L1 c. V. E: y3 c$ S# x
string SIGN r= SIGN
! {8 B6 O# ?/ n3 _
endif
% G3 s% L2 K2 x% k: c# G6 j% c
4 B* r' w; w |% k( O5 H/ }
math SKIP_SIZE = 0x10
5 W7 Y( x0 M; h2 \4 h6 H' E
if SIGN == ""
- B) A- R8 s+ e( A
cleanexit
. L2 J) ^3 F$ Q {- K0 }
elif SIGN == "RIFX"
, w7 [: J* n5 f& \% i' F: F) J- d
elif SIGN == "imap"
' x% e9 a: L: k7 a
if FIRST != 0
# ?4 }8 Q( w( a) e' B0 \/ c
get DUMMY long
% R# {/ S- W0 r4 j/ w/ R2 ]) A
get DUMMY long
+ ]4 a9 h7 `; O! B, p! {
get OFFSET long
3 N% Z. V) ]' T' ]$ P3 i( |
if OFFSET > CURR_OFFSET
( D) J2 L8 a+ m. {; {- G
goto OFFSET
9 M: \2 c+ X3 J& ?
math SKIP_SIZE = 0
& l" g" d, _; a9 J/ I
endif
; b# l4 @% l6 H& y
endif
+ ?2 ^9 D" v8 P* M
elif SIGN == "mmap"
" e( b- b% ]7 M1 k
if FIRST != 0
. @' o5 H- I) O& W0 _; B
math SKIP_SIZE = 0x1c
9 N% E5 o6 o J6 }* G6 F
set FIRST = 0
" e# B7 S# f& G5 @$ O
endif
G( }( `9 A% P! P. N7 ~; v
# filters start here
! ?, Q6 O1 _- Z. u( q- R
elif SIGN == "VERS"
% ]' R4 c6 r$ \+ T8 {
elif SIGN == "CASt"
6 F2 r1 R2 z8 t! ]! H9 C
elif SIGN == "CAS*"
2 l0 w: S) ?+ G" R6 \3 |5 Y
elif SIGN == "Lctx"
$ T+ @0 d1 I) S8 J
elif SIGN == "LctX"
. g; b' u- k2 s/ Q: \
elif SIGN == "Lnam"
1 I/ J) l6 b; ]: ~5 E+ A) w
elif SIGN == "Lscr"
, v. k2 P, i! O! ?7 }* r0 z
elif SIGN == "Cinf"
$ E/ B( Z) F1 o$ G1 M9 k( J" H
elif SIGN == "GRID"
5 i. e+ W+ m/ N2 s/ t- B6 k, v) Z
elif SIGN == "FCOL"
- R) }6 h: E4 F. W; p
elif SIGN == "MCsL"
7 _/ V2 f# [& Z1 a
elif SIGN == "DRCF"
: N0 L4 Z+ D& \7 R0 ~
#elif SIGN == "BITD" # 16bit images
$ `4 }& z/ ^9 E
#elif SIGN == "ALFA" # alpha channel
0 \7 P% t- E5 j; p. b* \
#elif SIGN == "sndS" # 16bit audio
" L3 @4 m. |& G6 w t! H) z; V3 p( i
elif SIGN == "sndH"
! N9 w# p4 E: {! Y5 D; Y3 j x& a2 ]
elif SIGN == "Sord"
5 ?2 w! j. H c- w1 u8 r
elif SIGN == "free"
! g& g7 V+ b2 @# F; [ ^. x
elif SIGN == "junk"
0 d' z, j. ]& j7 D9 m( J
elif SIGN == "Thum"
H/ }) m# ~: c# K% Q f* U
elif SIGN == "KEY*"
+ b- w$ j/ Q% L0 I
elif SIGN == "FXmp"
, r' c9 @' P" X
elif SIGN == "Fmap"
$ n2 I5 Z4 b5 j
elif SIGN == "PUBL"
* o' k$ @: L# \+ w3 e: |1 b* u
elif SIGN == "SCRF"
" d8 ?( W/ O! D7 j
elif SIGN == "VWFI"
1 {" f* `: U) g
elif SIGN == "VWSC"
- g. S( I/ }9 _- `
elif SIGN == "VWLB"
5 c" z' A8 I6 y( c. N% d8 g( \
elif SIGN == "VWTL"
3 o" M% R; ]4 a3 T. z
elif SIGN == "XTRl"
, V/ g% |+ w$ N
elif SIGN == "ccl "
5 ^5 e' z& w0 O* f2 C# `/ w; ~/ t
elif SIGN == "SCVW"
& ~2 m$ G8 S7 n- {( Y7 i" M
elif SIGN == "Lval"
6 X7 a" A# d( E3 g9 _+ ?
elif SIGN == "cupt"
+ h4 r- S' N$ Q8 |: \$ H1 c: G9 c/ c
elif SIGN == "CLUT"
5 P$ x7 U$ L5 o3 f3 J( D, r
# filters end here
/ k2 b2 T3 y d* K, u1 F
else
* P0 \: N+ I$ p2 w( v% T/ a$ K! z
# skip the above ones and dump the others
4 ]( `8 ?+ ^" P1 `
math SKIP_SIZE = -1
4 f2 l/ B- C1 S. e" _
endif
* L% q: i- Q( N$ X1 l( v+ S. ^
7 d# `# ?$ L, V+ c% d5 \: o! _
if SKIP_SIZE < 0
- [ s# f& v a3 c" B& ?6 w
get SIZE long
5 U1 Z" h. F6 _& s* |6 Z4 }
get OFFSET long
. U& f; Z9 v6 w$ x" @9 h
if SIZE > 8
7 t4 t1 M& O- @# B* V
math OFFSET += 8
3 h. x6 ~$ y2 _' E0 c
math SIZE -= 8
' y7 d2 W$ E* m% g7 h) S6 q$ U: n
set NAME string ""
' F2 C% O" @% I4 N+ N3 z
if SIGN == "XMED"
& c& j8 G' W& a" x
elif SIGN == "ediM"
% k) i. p6 L: Q3 }
else
$ W6 B+ ?" r- q8 c: @1 N3 B4 W
set NAME string SIGN
# K; ?; E$ N% I# E) E
string NAME += /
8 s) @( f# g: O7 Y3 w+ Y9 ]
string NAME += i
) b8 w! u7 v; |; q3 M/ K
string NAME += ".dat"
- t3 {0 v; W* W/ |
endif
* t: A5 D; e4 \% j
log NAME OFFSET SIZE
; v6 V \+ t! O/ \. U- M; G
endif
, U! D, {7 m3 r" Z6 c3 `' w+ L
get DUMMY long
/ E* Q }$ U! v0 B3 i9 o. G
get DUMMY long
$ s ^4 A4 g+ M( l$ W1 O
else
' t$ z/ ]6 J; F7 S% e
getdstring DUMMY SKIP_SIZE
2 B- }9 v2 U# i2 m# e
endif
x, T; \% z, a2 i& e) C1 P" c- v
next i
' f: B0 G! @4 ]0 n, x
复制代码
[attach]21042[/attach]
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2