冒险解谜游戏中文网 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 编辑
) }1 H* K- c/ L+ {2 E) f5 z; D5 _  g, h1 e6 E' O$ ]8 f$ X
勤快的老外又放出了这个好东西,配合quickbms使用。- l, L" ?  ?6 _3 U5 q2 z; K
好多小游戏都是用Shockwave Director做的,包括神秘视线。* [2 `* e) T- G
如果能做出打包器的话,就又能解决好多游戏的汉化了。
  1. # Shockwave Director dcr/dir/dxr/cst dumper8 @2 C: J  r: n6 G& Z
  2. # script for QuickBMS http://aluigi.org/papers.htm#quickbms+ Z5 c9 L3 A1 x8 A) K* Q

  3. # r3 T. N8 Y/ Y, f% f7 `
  4. quickbmsver 0.4.11
    % l4 Z! p3 ~( k( V/ y/ ?
  5. getdstring RIFX_SIGN 49 W# W$ E5 F4 e" s
  6. if RIFX_SIGN == "RIFX"
    4 u: v* M5 u2 \. R
  7.     endian big. N) H' p2 s# m* C0 D
  8. elif RIFX_SIGN == "XFIR"' o' j- H) }. K( B, j
  9.     endian little
    ' g  @* h+ c. Y
  10. else' Y. z" e: d- |0 X2 M
  11.     cleanexit0 U. q2 T/ e! D. C: y
  12. endif9 L2 ~* \, |0 ]
  13. get SIZE long
    ( Q6 t# U) g2 E/ c  ~4 C9 I% d
  14. get SIGN long7 V# y& @4 J  }! Z8 k* C0 C. p" e
  15. if SIGN == 0x4647444d5 `2 k* g& u6 F( c7 s( v
  16.     get NAME fullname$ F4 V1 ^; v* F  _- R! v$ t7 i$ N; w
  17.     get FOLDER current_folder
    ! Y9 q$ y+ F- n" Y
  18.     print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n  offzip -a \"%NAME%\" \"%FOLDER%\" 0"3 B' u, b& `: E1 i$ R! B
  19.     cleanexit/ t1 a# s/ j" r
  20. endif& O" W# t3 W3 X# u
  21. 1 |5 k1 e, }3 m$ \2 i' f2 |
  22. set FIRST = 1# a/ r0 _; S( j: e, C
  23. for i = 0) ?  o! I, C0 F# `# f- u6 g
  24.     savepos CURR_OFFSET
    - K8 ^% Z, z: s4 f+ s
  25.     getdstring SIGN 48 w# \; w+ y( a- c/ z  L5 H
  26.     if RIFX_SIGN != "RIFX"
    9 I2 [8 e: {# U+ x+ w
  27.         string SIGN r= SIGN
    + D* M8 \* N+ \4 S4 I# `
  28.     endif
    - o& I  B- M* h  X, U% T
  29. " V3 u' W( f) |
  30.     math SKIP_SIZE = 0x10: U! q1 Y. Q& e
  31.     if SIGN == ""
    : v& G' W9 v, ]! d& i' E3 ~+ u& x
  32.         cleanexit$ e$ J4 _- e# x$ {7 S( j
  33.     elif SIGN == "RIFX"
    5 U% t3 R8 |5 }" ~- {; b. j* f
  34.     elif SIGN == "imap". V3 A" q; O7 v0 ^
  35.         if FIRST != 08 A2 ?5 l) T* _* W
  36.             get DUMMY long
    7 p( w/ `( }" Y- `/ _! N6 t1 `0 o
  37.             get DUMMY long
    ) {6 q6 N1 x! {% M3 o2 r% a
  38.             get OFFSET long! j$ g9 U1 [0 l2 s. ~" Q6 G+ P
  39.             if OFFSET > CURR_OFFSET5 F2 M0 |- c% S' j2 v4 P
  40.                 goto OFFSET
    / K2 d! @# d( i
  41.                 math SKIP_SIZE = 0. u8 ~* [5 v# r  r
  42.             endif
    $ E! l. o( Y: i! U9 }
  43.         endif$ w4 d. U+ L. ^, S" u5 _
  44.     elif SIGN == "mmap"9 e& r$ R) d9 e6 w
  45.         if FIRST != 0# r0 f+ T* |4 x* w9 `
  46.             math SKIP_SIZE = 0x1c
    , d6 g) `4 z; [7 f
  47.             set FIRST = 0
    1 S! p) o' G' k! \) _; H: a
  48.         endif
    4 ~/ a5 q+ l2 P$ W7 r
  49.     # filters start here! I! |- a; ~2 M& h7 n, J
  50.     elif SIGN == "VERS"
    1 \' `! Z% j# V% i5 _' S
  51.     elif SIGN == "CASt"" I0 b! q2 ]4 s/ r/ q. K
  52.     elif SIGN == "CAS*"
    + r4 N. |( |6 f/ w4 s# I8 D
  53.     elif SIGN == "Lctx"
    8 N7 E# z  v7 P* I% E9 H. O3 `% C
  54.     elif SIGN == "LctX"
    # `2 F7 |) k. e! E( M
  55.     elif SIGN == "Lnam"8 I1 v* f# C7 @' c/ I. f/ X
  56.     elif SIGN == "Lscr": F% a" Y6 P/ H. T' Q5 r# F0 b7 t
  57.     elif SIGN == "Cinf"
    6 R# Q0 E' P: T5 @0 f
  58.     elif SIGN == "GRID"; B* Q! h% S) X  I
  59.     elif SIGN == "FCOL"
    7 i( a( d+ W( |& h. M" C4 T
  60.     elif SIGN == "MCsL"! ?8 y& N2 h. ]1 k
  61.     elif SIGN == "DRCF"2 @2 N2 G: V; U4 w5 }- p
  62.     #elif SIGN == "BITD"    # 16bit images6 G) v$ J- a" ?3 {% b5 v1 [1 J
  63.     #elif SIGN == "ALFA"    # alpha channel* q6 V& x) l7 o$ |& U
  64.     #elif SIGN == "sndS"    # 16bit audio
    & v5 @7 I6 p5 ]- t) U7 M
  65.     elif SIGN == "sndH"
    + N5 J+ b  Y6 C. r
  66.     elif SIGN == "Sord") E- y, U; x; `
  67.     elif SIGN == "free"
    ' _+ D- Q1 ^. l6 n/ C5 a; L
  68.     elif SIGN == "junk"
    ) z, L/ }/ Z) b( a' {
  69.     elif SIGN == "Thum"
    # [0 I  l; B; H3 B2 y1 d6 E
  70.     elif SIGN == "KEY*"
    ; p3 A! g9 D6 d
  71.     elif SIGN == "FXmp"
    " J: J* t% F6 c) U3 F
  72.     elif SIGN == "Fmap"
    " ^6 o  C  l. T9 S3 h# g
  73.     elif SIGN == "PUBL"/ Q& X" g# k$ N, m. N" R; [3 d
  74.     elif SIGN == "SCRF", q; L4 @  _! P! y  t  y7 R) ~; D
  75.     elif SIGN == "VWFI"
    9 l' e! [. j7 D8 `  f( S) l- p
  76.     elif SIGN == "VWSC"
    0 e: [0 T: Q0 ~. O' d
  77.     elif SIGN == "VWLB"
    1 U1 u5 N. U; @! {
  78.     elif SIGN == "VWTL"# a8 C* Y) _3 z- S) m
  79.     elif SIGN == "XTRl"
    , i3 c' Y7 U" z: W
  80.     elif SIGN == "ccl "3 ~6 l* d. @. M3 g# |. x) d' |
  81.     elif SIGN == "SCVW"
      O( m/ c- t$ V' i
  82.     elif SIGN == "Lval"& |* G7 e( n  v4 X
  83.     elif SIGN == "cupt", l9 `; x' R0 c1 |) Y% ~
  84.     elif SIGN == "CLUT"& o' e4 G# z1 I$ t5 n/ O
  85.     # filters end here0 b) w; F$ i; P$ f" C
  86.     else
    - t1 t6 \  V8 R
  87.         # skip the above ones and dump the others4 Y1 m, S/ W6 {, [
  88.         math SKIP_SIZE = -1' e2 t5 `) P( B/ x9 r
  89.     endif
    % A3 Q4 P1 @* M' c2 ^, h3 e

  90. , H# {7 z+ Z, u  q
  91.     if SKIP_SIZE < 0
    " j* i& |, K& p
  92.         get SIZE long
    7 o( M" T+ l$ q
  93.         get OFFSET long
    1 v! E( u# {, T
  94.         if SIZE > 8: u4 @( N' z  y2 S( s  v$ A4 F- Z8 h! [5 P: ]
  95.             math OFFSET += 8
    * `7 L: s% P% S" m
  96.             math SIZE   -= 8
    # D2 u6 \1 ~; ^6 N6 }% [6 ]2 ?0 i2 p
  97.             set NAME string ""
    . _, T3 y/ U+ `3 o
  98.             if SIGN == "XMED"* ~( P! e! u! e  U; V( g
  99.             elif SIGN == "ediM"
    $ q  u5 M' F9 H
  100.             else8 p4 k, x9 Z6 D+ D: g7 w* o$ r
  101.                 set NAME string SIGN+ ~2 L) k/ V5 o7 z4 v
  102.                 string NAME += /7 i( j/ ^9 M5 @3 B/ K3 w
  103.                 string NAME += i
    ) U- P9 H) S9 }4 s5 i
  104.                 string NAME += ".dat"- S3 C1 o2 e: j- O4 ]
  105.             endif
    / w+ \8 {) E% A8 K
  106.             log NAME OFFSET SIZE
    + [3 V" ^& p7 o1 _+ w
  107.         endif4 ]# v2 ^/ o* z# ?7 b
  108.         get DUMMY long
    & Y0 q) A) V% q( u4 j' u
  109.         get DUMMY long2 v' q; d2 b1 U. x7 k6 N6 p1 u, [: _; L
  110.     else3 u! T" i# r4 `/ G$ ~$ E
  111.         getdstring DUMMY SKIP_SIZE6 i2 o5 m+ j" s, {( c% B" s
  112.     endif
    . }6 o- l, s& O) K, Z
  113. next i) s; e4 X6 [) \1 K
复制代码
[attach]21042[/attach]




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