冒险解谜游戏中文网 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
如果能做出打包器的话,就又能解决好多游戏的汉化了。
# Shockwave Director dcr/dir/dxr/cst dumper
2 a: E) e( |6 f. I
# script for QuickBMS http://aluigi.org/papers.htm#quickbms
- X, p1 }! r% ^8 }6 E
8 }' J: x0 j5 w: T- v
quickbmsver 0.4.11
% G+ m# ~4 A# U/ d6 `. ^% _
getdstring RIFX_SIGN 4
0 z4 ?: T, I6 ]& y
if RIFX_SIGN == "RIFX"
" s! _! l- E- e. A$ B& L
endian big
2 ]) @( W- |4 |/ D) W
elif RIFX_SIGN == "XFIR"
) W8 f" c- v+ M! k9 E, g( |: F
endian little
0 C! G% K; x/ S9 z+ h9 R; d
else
; K3 t3 b* L5 j& z @3 K7 E5 M
cleanexit
" ]3 `0 j2 z# c; V* J
endif
% |# h" e* L" Y! J( `- a; I
get SIZE long
; l! R& e- |9 j3 @8 K Z
get SIGN long
" j6 o4 f9 Z% e. v
if SIGN == 0x4647444d
, W$ d3 Z# c, w2 Q% l1 q
get NAME fullname
+ `9 ?/ @# T4 j+ o p4 R0 i- z
get FOLDER current_folder
6 e8 o8 S4 o) y* ?2 D" ], B
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
cleanexit
; F9 D; j4 P: m( Y7 e/ |, K1 P
endif
: J0 |2 z* i w# O4 J1 _
! r: ?. h7 Z9 R' v6 V0 D8 m
set FIRST = 1
; I6 }% m/ V- m4 N- d$ T) [- ^5 W/ Y
for i = 0
2 e( W/ q$ T8 p9 e8 E3 b
savepos CURR_OFFSET
4 x2 z7 F7 P* p, U3 t# R
getdstring SIGN 4
}. {" E$ U0 {. l1 b5 ]( [2 z
if RIFX_SIGN != "RIFX"
' ]& ^' v+ W# `* W7 d
string SIGN r= SIGN
( I: B8 `9 x( ~ ^
endif
7 T: l1 i* G/ ~. d4 c4 \
! a) m' R( g# V
math SKIP_SIZE = 0x10
4 r7 k1 {7 Q4 h' N0 Z3 u
if SIGN == ""
" s; c/ ?0 w [: n0 S3 ?
cleanexit
4 S( B0 s( r1 S5 i: R* N0 L
elif SIGN == "RIFX"
" G x4 ~3 ?9 \& v* q
elif SIGN == "imap"
: U+ ]( \; v3 b6 @0 [& _* L% g; t
if FIRST != 0
' m& v3 f6 A! q- ?; z
get DUMMY long
- V( {- Z! z8 _; I' p' ~/ q) ^- c
get DUMMY long
2 h+ r \8 E- A; j9 [. u: V' l
get OFFSET long
. k* v+ [- i+ V8 O- Q7 W
if OFFSET > CURR_OFFSET
( S; e8 D* B, u
goto OFFSET
* S+ X7 o1 y* L$ }+ k1 @
math SKIP_SIZE = 0
8 s" y( K; U+ o8 e- W5 H( X
endif
% A( i a) z3 c
endif
# H5 i4 s! y# v) y; S7 h! a" N! ~* Q8 R8 C
elif SIGN == "mmap"
# [/ p6 `; ? ~, V) q+ C( c( I: m
if FIRST != 0
% H) k0 B! d; D: B& P, M C$ \
math SKIP_SIZE = 0x1c
( G5 p1 K* U: F, [
set FIRST = 0
N- H. F; Q. n7 g$ C& l6 B
endif
5 D+ ]& {7 K' F3 @$ E5 `) C' C
# filters start here
3 w/ D/ P, c6 J5 R- c' s
elif SIGN == "VERS"
& f4 S: m+ [; L* E( V0 b
elif SIGN == "CASt"
6 B, A. K+ E. O( n7 l# B, L: z# b
elif SIGN == "CAS*"
$ C0 r' H' E# I+ u
elif SIGN == "Lctx"
! M. l* g/ k# f4 c+ S% _1 n- F3 c
elif SIGN == "LctX"
3 {4 F: q. A+ Y+ F/ E
elif SIGN == "Lnam"
0 F1 F9 |$ S$ P! q& G
elif SIGN == "Lscr"
2 t$ G3 w; L5 W% Q! W
elif SIGN == "Cinf"
2 G/ K, |7 n* n [! _+ L8 E
elif SIGN == "GRID"
+ Q7 J6 e, c! w i
elif SIGN == "FCOL"
6 U( V" E* e9 {2 m n
elif SIGN == "MCsL"
+ m/ j8 Q7 d% I% D w% w
elif SIGN == "DRCF"
7 T# P* l9 e, `, I4 o
#elif SIGN == "BITD" # 16bit images
; U! R. s. B, a3 U, w' e
#elif SIGN == "ALFA" # alpha channel
1 [4 N2 U! ~2 R3 u9 W# S
#elif SIGN == "sndS" # 16bit audio
+ f3 ^: V2 \$ @/ A2 A* @
elif SIGN == "sndH"
4 O8 ?6 N, U* D s1 `: p
elif SIGN == "Sord"
0 f$ X ^( M9 u y- x! i
elif SIGN == "free"
0 v# M9 a. u; u# r2 C8 v4 D
elif SIGN == "junk"
* Z* X7 {' X6 \' I% T# F1 ^" J
elif SIGN == "Thum"
. @+ X' E6 j+ ^6 q) p2 c
elif SIGN == "KEY*"
& K- c/ V) ]% I+ q; W
elif SIGN == "FXmp"
0 ^; o, I$ b( T- a* C' ]
elif SIGN == "Fmap"
+ e& E. }# T# m" J3 e( _
elif SIGN == "PUBL"
* H7 U$ d4 B8 ~0 ]. B2 u3 T
elif SIGN == "SCRF"
- Q: i- R/ {0 q4 X$ \% m, d
elif SIGN == "VWFI"
2 u3 p! z9 u# [7 ]" W/ m/ M% W$ Z, N# \( k
elif SIGN == "VWSC"
) q# A3 c/ e2 \
elif SIGN == "VWLB"
# ?2 p6 w1 A& g6 O9 c2 y
elif SIGN == "VWTL"
) ?0 P# b8 Y2 N
elif SIGN == "XTRl"
5 s8 n( r5 T/ R( U5 k% d/ F8 L4 b
elif SIGN == "ccl "
5 k; ?/ @+ d' [! o* u
elif SIGN == "SCVW"
: |. {. c4 i; H$ W% C) |8 G
elif SIGN == "Lval"
8 H" n# E, t8 h2 K( H3 o2 p! K d
elif SIGN == "cupt"
2 ^& Z, W7 L+ s+ e+ t
elif SIGN == "CLUT"
4 X. J% s2 S G1 j
# filters end here
J% j& c Q' ^2 g. Q" U Z2 U4 g
else
- @9 L Y: v$ I1 C) G
# skip the above ones and dump the others
! e t1 O+ L2 w0 z. h; g+ G
math SKIP_SIZE = -1
8 O# |6 ~5 k. V
endif
+ q7 P1 ~/ N; C6 O( R) d
" S6 w Y1 X* W, x( c7 w
if SKIP_SIZE < 0
( p/ r, p g- W/ ^1 _
get SIZE long
2 i2 J8 b$ b5 }1 `, M6 u4 }! w) r
get OFFSET long
" D' F5 _) k; O3 f9 @
if SIZE > 8
+ G: j+ I- D5 _6 }3 n
math OFFSET += 8
0 c( z2 { d6 E, p% b
math SIZE -= 8
9 z7 x4 F) g+ a3 L$ ~ k; W1 j
set NAME string ""
* o/ h Z( W4 R+ |: R9 k e9 A
if SIGN == "XMED"
4 V0 C; O* R* h }9 z$ s# {7 ^
elif SIGN == "ediM"
6 o# P* W% s) g$ |- M2 V" z
else
5 G7 V& M- ? f- G- {( e
set NAME string SIGN
K/ }7 W( D4 Q3 q( d0 {5 \1 x
string NAME += /
9 t7 k0 L" b) Y9 J+ V
string NAME += i
2 @: e8 U' z4 q( E( F8 d8 x
string NAME += ".dat"
0 ]; L+ y% P1 F9 V
endif
7 ^0 z8 J+ d' P# Q$ m
log NAME OFFSET SIZE
7 J0 U% N2 ?0 Q
endif
; \' G: h( l$ ] _5 ]" g1 u
get DUMMY long
: u b, F% c8 d) |; R
get DUMMY long
; U" ?2 c$ E) ?; t3 ]7 a, U- P
else
2 Q8 o4 @$ q) q/ R* i c8 \
getdstring DUMMY SKIP_SIZE
2 \7 }2 W2 o2 D$ ?" w
endif
- W3 v% }3 J( \5 p& F! V' Z
next i
' C( c" u2 ]+ o8 O! j
复制代码
[attach]21042[/attach]
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2