冒险解谜游戏中文网 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 编辑 ; }4 |* I' V  w) s# T& Z6 `. d+ }

# F$ a1 x1 D8 J) m+ R+ c0 I2 [勤快的老外又放出了这个好东西,配合quickbms使用。
; l$ e# o& A9 P2 e) [+ j% a4 e" L好多小游戏都是用Shockwave Director做的,包括神秘视线。0 {% @& x: V, [  H+ H
如果能做出打包器的话,就又能解决好多游戏的汉化了。
  1. # Shockwave Director dcr/dir/dxr/cst dumper
    2 a: E) e( |6 f. I
  2. # script for QuickBMS http://aluigi.org/papers.htm#quickbms- X, p1 }! r% ^8 }6 E
  3. 8 }' J: x0 j5 w: T- v
  4. quickbmsver 0.4.11% G+ m# ~4 A# U/ d6 `. ^% _
  5. getdstring RIFX_SIGN 40 z4 ?: T, I6 ]& y
  6. if RIFX_SIGN == "RIFX"" s! _! l- E- e. A$ B& L
  7.     endian big
    2 ]) @( W- |4 |/ D) W
  8. elif RIFX_SIGN == "XFIR"
    ) W8 f" c- v+ M! k9 E, g( |: F
  9.     endian little0 C! G% K; x/ S9 z+ h9 R; d
  10. else
    ; K3 t3 b* L5 j& z  @3 K7 E5 M
  11.     cleanexit" ]3 `0 j2 z# c; V* J
  12. endif
    % |# h" e* L" Y! J( `- a; I
  13. get SIZE long; l! R& e- |9 j3 @8 K  Z
  14. get SIGN long
    " j6 o4 f9 Z% e. v
  15. if SIGN == 0x4647444d
    , W$ d3 Z# c, w2 Q% l1 q
  16.     get NAME fullname+ `9 ?/ @# T4 j+ o  p4 R0 i- z
  17.     get FOLDER current_folder6 e8 o8 S4 o) y* ?2 D" ], B
  18.     print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n  offzip -a \"%NAME%\" \"%FOLDER%\" 0"
    3 x5 u& X( J8 N# T
  19.     cleanexit
    ; F9 D; j4 P: m( Y7 e/ |, K1 P
  20. endif: J0 |2 z* i  w# O4 J1 _
  21. ! r: ?. h7 Z9 R' v6 V0 D8 m
  22. set FIRST = 1
    ; I6 }% m/ V- m4 N- d$ T) [- ^5 W/ Y
  23. for i = 0
    2 e( W/ q$ T8 p9 e8 E3 b
  24.     savepos CURR_OFFSET4 x2 z7 F7 P* p, U3 t# R
  25.     getdstring SIGN 4  }. {" E$ U0 {. l1 b5 ]( [2 z
  26.     if RIFX_SIGN != "RIFX"' ]& ^' v+ W# `* W7 d
  27.         string SIGN r= SIGN
    ( I: B8 `9 x( ~  ^
  28.     endif
    7 T: l1 i* G/ ~. d4 c4 \
  29. ! a) m' R( g# V
  30.     math SKIP_SIZE = 0x10
    4 r7 k1 {7 Q4 h' N0 Z3 u
  31.     if SIGN == """ s; c/ ?0 w  [: n0 S3 ?
  32.         cleanexit4 S( B0 s( r1 S5 i: R* N0 L
  33.     elif SIGN == "RIFX"" G  x4 ~3 ?9 \& v* q
  34.     elif SIGN == "imap"
    : U+ ]( \; v3 b6 @0 [& _* L% g; t
  35.         if FIRST != 0
    ' m& v3 f6 A! q- ?; z
  36.             get DUMMY long
    - V( {- Z! z8 _; I' p' ~/ q) ^- c
  37.             get DUMMY long
    2 h+ r  \8 E- A; j9 [. u: V' l
  38.             get OFFSET long
    . k* v+ [- i+ V8 O- Q7 W
  39.             if OFFSET > CURR_OFFSET( S; e8 D* B, u
  40.                 goto OFFSET
    * S+ X7 o1 y* L$ }+ k1 @
  41.                 math SKIP_SIZE = 0
    8 s" y( K; U+ o8 e- W5 H( X
  42.             endif% A( i  a) z3 c
  43.         endif# H5 i4 s! y# v) y; S7 h! a" N! ~* Q8 R8 C
  44.     elif SIGN == "mmap"
    # [/ p6 `; ?  ~, V) q+ C( c( I: m
  45.         if FIRST != 0
    % H) k0 B! d; D: B& P, M  C$ \
  46.             math SKIP_SIZE = 0x1c
    ( G5 p1 K* U: F, [
  47.             set FIRST = 0
      N- H. F; Q. n7 g$ C& l6 B
  48.         endif5 D+ ]& {7 K' F3 @$ E5 `) C' C
  49.     # filters start here
    3 w/ D/ P, c6 J5 R- c' s
  50.     elif SIGN == "VERS"
    & f4 S: m+ [; L* E( V0 b
  51.     elif SIGN == "CASt"
    6 B, A. K+ E. O( n7 l# B, L: z# b
  52.     elif SIGN == "CAS*"
    $ C0 r' H' E# I+ u
  53.     elif SIGN == "Lctx"
    ! M. l* g/ k# f4 c+ S% _1 n- F3 c
  54.     elif SIGN == "LctX"
    3 {4 F: q. A+ Y+ F/ E
  55.     elif SIGN == "Lnam"0 F1 F9 |$ S$ P! q& G
  56.     elif SIGN == "Lscr"
    2 t$ G3 w; L5 W% Q! W
  57.     elif SIGN == "Cinf"
    2 G/ K, |7 n* n  [! _+ L8 E
  58.     elif SIGN == "GRID"+ Q7 J6 e, c! w  i
  59.     elif SIGN == "FCOL"
    6 U( V" E* e9 {2 m  n
  60.     elif SIGN == "MCsL"+ m/ j8 Q7 d% I% D  w% w
  61.     elif SIGN == "DRCF"7 T# P* l9 e, `, I4 o
  62.     #elif SIGN == "BITD"    # 16bit images; U! R. s. B, a3 U, w' e
  63.     #elif SIGN == "ALFA"    # alpha channel1 [4 N2 U! ~2 R3 u9 W# S
  64.     #elif SIGN == "sndS"    # 16bit audio
    + f3 ^: V2 \$ @/ A2 A* @
  65.     elif SIGN == "sndH"4 O8 ?6 N, U* D  s1 `: p
  66.     elif SIGN == "Sord"
    0 f$ X  ^( M9 u  y- x! i
  67.     elif SIGN == "free"
    0 v# M9 a. u; u# r2 C8 v4 D
  68.     elif SIGN == "junk"* Z* X7 {' X6 \' I% T# F1 ^" J
  69.     elif SIGN == "Thum"
    . @+ X' E6 j+ ^6 q) p2 c
  70.     elif SIGN == "KEY*"& K- c/ V) ]% I+ q; W
  71.     elif SIGN == "FXmp"0 ^; o, I$ b( T- a* C' ]
  72.     elif SIGN == "Fmap"+ e& E. }# T# m" J3 e( _
  73.     elif SIGN == "PUBL"* H7 U$ d4 B8 ~0 ]. B2 u3 T
  74.     elif SIGN == "SCRF"- Q: i- R/ {0 q4 X$ \% m, d
  75.     elif SIGN == "VWFI"
    2 u3 p! z9 u# [7 ]" W/ m/ M% W$ Z, N# \( k
  76.     elif SIGN == "VWSC"
    ) q# A3 c/ e2 \
  77.     elif SIGN == "VWLB"# ?2 p6 w1 A& g6 O9 c2 y
  78.     elif SIGN == "VWTL") ?0 P# b8 Y2 N
  79.     elif SIGN == "XTRl"5 s8 n( r5 T/ R( U5 k% d/ F8 L4 b
  80.     elif SIGN == "ccl "
    5 k; ?/ @+ d' [! o* u
  81.     elif SIGN == "SCVW": |. {. c4 i; H$ W% C) |8 G
  82.     elif SIGN == "Lval"
    8 H" n# E, t8 h2 K( H3 o2 p! K  d
  83.     elif SIGN == "cupt"2 ^& Z, W7 L+ s+ e+ t
  84.     elif SIGN == "CLUT"
    4 X. J% s2 S  G1 j
  85.     # filters end here  J% j& c  Q' ^2 g. Q" U  Z2 U4 g
  86.     else
    - @9 L  Y: v$ I1 C) G
  87.         # skip the above ones and dump the others! e  t1 O+ L2 w0 z. h; g+ G
  88.         math SKIP_SIZE = -1
    8 O# |6 ~5 k. V
  89.     endif+ q7 P1 ~/ N; C6 O( R) d

  90. " S6 w  Y1 X* W, x( c7 w
  91.     if SKIP_SIZE < 0( p/ r, p  g- W/ ^1 _
  92.         get SIZE long2 i2 J8 b$ b5 }1 `, M6 u4 }! w) r
  93.         get OFFSET long
    " D' F5 _) k; O3 f9 @
  94.         if SIZE > 8+ G: j+ I- D5 _6 }3 n
  95.             math OFFSET += 8
    0 c( z2 {  d6 E, p% b
  96.             math SIZE   -= 8
    9 z7 x4 F) g+ a3 L$ ~  k; W1 j
  97.             set NAME string ""* o/ h  Z( W4 R+ |: R9 k  e9 A
  98.             if SIGN == "XMED"
    4 V0 C; O* R* h  }9 z$ s# {7 ^
  99.             elif SIGN == "ediM"6 o# P* W% s) g$ |- M2 V" z
  100.             else
    5 G7 V& M- ?  f- G- {( e
  101.                 set NAME string SIGN
      K/ }7 W( D4 Q3 q( d0 {5 \1 x
  102.                 string NAME += /
    9 t7 k0 L" b) Y9 J+ V
  103.                 string NAME += i2 @: e8 U' z4 q( E( F8 d8 x
  104.                 string NAME += ".dat"0 ]; L+ y% P1 F9 V
  105.             endif
    7 ^0 z8 J+ d' P# Q$ m
  106.             log NAME OFFSET SIZE7 J0 U% N2 ?0 Q
  107.         endif
    ; \' G: h( l$ ]  _5 ]" g1 u
  108.         get DUMMY long
    : u  b, F% c8 d) |; R
  109.         get DUMMY long; U" ?2 c$ E) ?; t3 ]7 a, U- P
  110.     else2 Q8 o4 @$ q) q/ R* i  c8 \
  111.         getdstring DUMMY SKIP_SIZE2 \7 }2 W2 o2 D$ ?" w
  112.     endif- W3 v% }3 J( \5 p& F! V' Z
  113. next i
    ' C( c" u2 ]+ o8 O! j
复制代码
[attach]21042[/attach]




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