冒险解谜游戏中文网 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- `
如果能做出打包器的话,就又能解决好多游戏的汉化了。
  1. # Shockwave Director dcr/dir/dxr/cst dumper1 X  M! }- T# H1 g. k+ O
  2. # script for QuickBMS http://aluigi.org/papers.htm#quickbms
    4 H1 ~2 Q1 F# Q" N+ o+ t

  3. # f* o/ f. Z. M2 _+ K7 H
  4. quickbmsver 0.4.11
    ; v3 J) B: E" j& Z. M0 e
  5. getdstring RIFX_SIGN 42 v& J% M* C" S
  6. if RIFX_SIGN == "RIFX"7 w, t, B$ b$ b9 G8 x* B! \6 M
  7.     endian big2 ?2 }, X, {8 `9 s6 a
  8. elif RIFX_SIGN == "XFIR"
    , E; M: L, ~8 L: N/ }6 T
  9.     endian little& ?/ D- }4 Q9 `6 U$ f* ~3 a8 h
  10. else1 o, I" B! ]) ?' G* g  N) ^% ^
  11.     cleanexit
    3 l, A+ C! y$ M7 F# x. x$ _' r7 T- `
  12. endif
    4 P6 C& [) u) I1 m/ t! a
  13. get SIZE long# D+ P4 m, ?2 W6 b5 L
  14. get SIGN long5 e: ?7 A! ^, W* N
  15. if SIGN == 0x4647444d
    ( Y( d- ]8 [# b- W, u, ~5 k
  16.     get NAME fullname
    8 x; [5 F. y' X. y. }! K- D
  17.     get FOLDER current_folder# {3 o/ d1 E5 X0 D. M" _# w2 V
  18.     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
  19.     cleanexit* {8 M! J5 t% G+ g& I
  20. endif$ {' N" i4 t! i" r8 y" t

  21. % i! I3 w  h7 ]- |/ S
  22. set FIRST = 1
    5 W: v+ G$ m. l$ m" K9 }& |" `
  23. for i = 0
    7 O4 l# N' ~/ P6 G7 X
  24.     savepos CURR_OFFSET
    3 H6 W( A% J+ D6 `) ~& u0 i
  25.     getdstring SIGN 4
    3 X5 `2 Z! c' s  c0 w3 Y. \
  26.     if RIFX_SIGN != "RIFX"
    5 m/ w/ L1 c. V. E: y3 c$ S# x
  27.         string SIGN r= SIGN
    ! {8 B6 O# ?/ n3 _
  28.     endif
    % G3 s% L2 K2 x% k: c# G6 j% c
  29. 4 B* r' w; w  |% k( O5 H/ }
  30.     math SKIP_SIZE = 0x10
    5 W7 Y( x0 M; h2 \4 h6 H' E
  31.     if SIGN == ""- B) A- R8 s+ e( A
  32.         cleanexit
    . L2 J) ^3 F$ Q  {- K0 }
  33.     elif SIGN == "RIFX", w7 [: J* n5 f& \% i' F: F) J- d
  34.     elif SIGN == "imap"' x% e9 a: L: k7 a
  35.         if FIRST != 0
    # ?4 }8 Q( w( a) e' B0 \/ c
  36.             get DUMMY long
    % R# {/ S- W0 r4 j/ w/ R2 ]) A
  37.             get DUMMY long
    + ]4 a9 h7 `; O! B, p! {
  38.             get OFFSET long
    3 N% Z. V) ]' T' ]$ P3 i( |
  39.             if OFFSET > CURR_OFFSET
    ( D) J2 L8 a+ m. {; {- G
  40.                 goto OFFSET
    9 M: \2 c+ X3 J& ?
  41.                 math SKIP_SIZE = 0& l" g" d, _; a9 J/ I
  42.             endif; b# l4 @% l6 H& y
  43.         endif
    + ?2 ^9 D" v8 P* M
  44.     elif SIGN == "mmap"
    " e( b- b% ]7 M1 k
  45.         if FIRST != 0. @' o5 H- I) O& W0 _; B
  46.             math SKIP_SIZE = 0x1c9 N% E5 o6 o  J6 }* G6 F
  47.             set FIRST = 0
    " e# B7 S# f& G5 @$ O
  48.         endif  G( }( `9 A% P! P. N7 ~; v
  49.     # filters start here! ?, Q6 O1 _- Z. u( q- R
  50.     elif SIGN == "VERS"% ]' R4 c6 r$ \+ T8 {
  51.     elif SIGN == "CASt"
    6 F2 r1 R2 z8 t! ]! H9 C
  52.     elif SIGN == "CAS*"
    2 l0 w: S) ?+ G" R6 \3 |5 Y
  53.     elif SIGN == "Lctx"$ T+ @0 d1 I) S8 J
  54.     elif SIGN == "LctX". g; b' u- k2 s/ Q: \
  55.     elif SIGN == "Lnam"
    1 I/ J) l6 b; ]: ~5 E+ A) w
  56.     elif SIGN == "Lscr", v. k2 P, i! O! ?7 }* r0 z
  57.     elif SIGN == "Cinf"
    $ E/ B( Z) F1 o$ G1 M9 k( J" H
  58.     elif SIGN == "GRID"
    5 i. e+ W+ m/ N2 s/ t- B6 k, v) Z
  59.     elif SIGN == "FCOL"
    - R) }6 h: E4 F. W; p
  60.     elif SIGN == "MCsL"
    7 _/ V2 f# [& Z1 a
  61.     elif SIGN == "DRCF": N0 L4 Z+ D& \7 R0 ~
  62.     #elif SIGN == "BITD"    # 16bit images
    $ `4 }& z/ ^9 E
  63.     #elif SIGN == "ALFA"    # alpha channel0 \7 P% t- E5 j; p. b* \
  64.     #elif SIGN == "sndS"    # 16bit audio" L3 @4 m. |& G6 w  t! H) z; V3 p( i
  65.     elif SIGN == "sndH"! N9 w# p4 E: {! Y5 D; Y3 j  x& a2 ]
  66.     elif SIGN == "Sord"5 ?2 w! j. H  c- w1 u8 r
  67.     elif SIGN == "free"
    ! g& g7 V+ b2 @# F; [  ^. x
  68.     elif SIGN == "junk"0 d' z, j. ]& j7 D9 m( J
  69.     elif SIGN == "Thum"
      H/ }) m# ~: c# K% Q  f* U
  70.     elif SIGN == "KEY*"+ b- w$ j/ Q% L0 I
  71.     elif SIGN == "FXmp", r' c9 @' P" X
  72.     elif SIGN == "Fmap"
    $ n2 I5 Z4 b5 j
  73.     elif SIGN == "PUBL"* o' k$ @: L# \+ w3 e: |1 b* u
  74.     elif SIGN == "SCRF"" d8 ?( W/ O! D7 j
  75.     elif SIGN == "VWFI"
    1 {" f* `: U) g
  76.     elif SIGN == "VWSC"
    - g. S( I/ }9 _- `
  77.     elif SIGN == "VWLB"
    5 c" z' A8 I6 y( c. N% d8 g( \
  78.     elif SIGN == "VWTL"
    3 o" M% R; ]4 a3 T. z
  79.     elif SIGN == "XTRl"
    , V/ g% |+ w$ N
  80.     elif SIGN == "ccl "
    5 ^5 e' z& w0 O* f2 C# `/ w; ~/ t
  81.     elif SIGN == "SCVW"& ~2 m$ G8 S7 n- {( Y7 i" M
  82.     elif SIGN == "Lval"6 X7 a" A# d( E3 g9 _+ ?
  83.     elif SIGN == "cupt"
    + h4 r- S' N$ Q8 |: \$ H1 c: G9 c/ c
  84.     elif SIGN == "CLUT"5 P$ x7 U$ L5 o3 f3 J( D, r
  85.     # filters end here
    / k2 b2 T3 y  d* K, u1 F
  86.     else
    * P0 \: N+ I$ p2 w( v% T/ a$ K! z
  87.         # skip the above ones and dump the others
    4 ]( `8 ?+ ^" P1 `
  88.         math SKIP_SIZE = -14 f2 l/ B- C1 S. e" _
  89.     endif
    * L% q: i- Q( N$ X1 l( v+ S. ^

  90. 7 d# `# ?$ L, V+ c% d5 \: o! _
  91.     if SKIP_SIZE < 0
    - [  s# f& v  a3 c" B& ?6 w
  92.         get SIZE long
    5 U1 Z" h. F6 _& s* |6 Z4 }
  93.         get OFFSET long. U& f; Z9 v6 w$ x" @9 h
  94.         if SIZE > 87 t4 t1 M& O- @# B* V
  95.             math OFFSET += 83 h. x6 ~$ y2 _' E0 c
  96.             math SIZE   -= 8
    ' y7 d2 W$ E* m% g7 h) S6 q$ U: n
  97.             set NAME string ""
    ' F2 C% O" @% I4 N+ N3 z
  98.             if SIGN == "XMED"
    & c& j8 G' W& a" x
  99.             elif SIGN == "ediM"
    % k) i. p6 L: Q3 }
  100.             else$ W6 B+ ?" r- q8 c: @1 N3 B4 W
  101.                 set NAME string SIGN# K; ?; E$ N% I# E) E
  102.                 string NAME += /
    8 s) @( f# g: O7 Y3 w+ Y9 ]
  103.                 string NAME += i
    ) b8 w! u7 v; |; q3 M/ K
  104.                 string NAME += ".dat"- t3 {0 v; W* W/ |
  105.             endif
    * t: A5 D; e4 \% j
  106.             log NAME OFFSET SIZE; v6 V  \+ t! O/ \. U- M; G
  107.         endif
    , U! D, {7 m3 r" Z6 c3 `' w+ L
  108.         get DUMMY long
    / E* Q  }$ U! v0 B3 i9 o. G
  109.         get DUMMY long$ s  ^4 A4 g+ M( l$ W1 O
  110.     else' t$ z/ ]6 J; F7 S% e
  111.         getdstring DUMMY SKIP_SIZE
    2 B- }9 v2 U# i2 m# e
  112.     endif  x, T; \% z, a2 i& e) C1 P" c- v
  113. next i' f: B0 G! @4 ]0 n, x
复制代码
[attach]21042[/attach]




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2