本帖最后由 shane007 于 2011-4-29 06:41 编辑 3 `) Q& S) q; J
) o9 y h) {! L& h5 a% j$ f# `勤快的老外又放出了这个好东西,配合quickbms使用。$ z) D" n6 z' k6 w" P, I7 _
好多小游戏都是用Shockwave Director做的,包括神秘视线。) [ a" J4 `. z# W' v/ D
如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
5 }3 i9 \, P0 c" e r* X - # script for QuickBMS http://aluigi.org/papers.htm#quickbms& z% F! P3 H- S' z7 `9 K$ g3 X
6 R, I9 d3 C7 F Y% d- quickbmsver 0.4.11
8 A, Y5 f- D+ Z* f- Z - getdstring RIFX_SIGN 4
) X n( B0 V8 S' _$ M3 p& i - if RIFX_SIGN == "RIFX"
( d. Z- z. C7 \ i. j1 D7 X: T2 ~3 \7 G - endian big) `8 c$ g8 b# L+ d. i2 d" }
- elif RIFX_SIGN == "XFIR". S! Q0 w5 C8 m. ^& z) i# o, |+ Z
- endian little
z: g }% B1 Z5 X) W$ R) p" q' V! G - else
+ c% I U. i2 d' Q/ B, K) d - cleanexit% B1 H1 E; ]+ l& T P
- endif
( {! L" _2 H- O8 Z; y, P% E" C" { - get SIZE long: E& J8 i/ f0 B J' x% g8 L/ _
- get SIGN long
4 N$ p4 ^ g, Z - if SIGN == 0x4647444d0 F& E1 i S e) V+ p2 v
- get NAME fullname
2 V/ ~6 S) ?7 w2 F) x/ V$ [+ q - get FOLDER current_folder) c. _4 h# k. k# |* F9 l
- print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0" e' D" y, {( p
- cleanexit
. U( q8 E2 v0 Z - endif1 Y, Y! w# f; l/ U0 E
6 I6 R4 h3 e9 d8 `0 |6 `1 e- set FIRST = 1# F! q- |; j4 ]. ], n4 @4 h
- for i = 0' t% l- l% _$ p5 a% F
- savepos CURR_OFFSET% U" K l( b/ A0 J
- getdstring SIGN 4
- k b- w% q) _. C5 f3 E - if RIFX_SIGN != "RIFX"
/ Y v$ Z) V+ ]3 B2 \+ R - string SIGN r= SIGN* y5 U) S5 z8 ^& ^0 i+ D% c
- endif
" F; d' \, Y$ D+ Y - ' ?4 Y9 O) h3 o1 |
- math SKIP_SIZE = 0x10
* U4 q; ~% G- T+ \& p - if SIGN == ""1 C, p) }, h- B' {. }4 _
- cleanexit
8 K( Y' F- K @; X, Y. {5 g - elif SIGN == "RIFX"
6 Z4 N, Y( e7 h* X% i1 H( y - elif SIGN == "imap"! h' Q$ |- e' Q# ~
- if FIRST != 0
1 d' G8 D' |2 P6 {% q! J7 i N. J - get DUMMY long2 G2 f2 k) O% f
- get DUMMY long" P' b$ o8 `* h6 f8 ]& G
- get OFFSET long# K% {, G [0 R
- if OFFSET > CURR_OFFSET6 o. @$ z- w8 E/ _! B$ I
- goto OFFSET
1 [8 H3 X* |$ s% u! }1 b' F9 | - math SKIP_SIZE = 0
2 X+ D) F: x- H1 B) p& z6 I - endif
* W/ @" T& F+ q - endif, m. o' ^" x9 D, Z6 o
- elif SIGN == "mmap" p( s: @: S; O, v; x0 E$ A. e
- if FIRST != 0- s! Z# i7 c. G3 @( j4 O0 ^
- math SKIP_SIZE = 0x1c
% | \8 H, ?+ g& x' y! J7 ` - set FIRST = 0" s0 A9 u8 @5 d" j8 r
- endif
0 o2 }, H6 G7 D! Y( w - # filters start here6 ?: J1 \- v$ A! H! d$ F& V+ Q
- elif SIGN == "VERS"
( n! a/ g. p* V - elif SIGN == "CASt"
0 q5 j* B! T+ l. y/ F% b - elif SIGN == "CAS*"% B: C% K* R) `
- elif SIGN == "Lctx"
' S; Q7 b9 i! T8 F& J+ H - elif SIGN == "LctX"4 |- r6 V, `$ @* x
- elif SIGN == "Lnam"5 m8 g' I; i+ N' N3 a6 Z4 f, L
- elif SIGN == "Lscr"/ w/ e2 m; J( g
- elif SIGN == "Cinf"
+ V# [. Y2 w2 S( Z$ V - elif SIGN == "GRID"& a5 \' X8 S; X7 Y
- elif SIGN == "FCOL"
7 t: e3 M% y. J4 v. P - elif SIGN == "MCsL"3 D8 ], y8 R7 {9 h/ a
- elif SIGN == "DRCF"
% p! M4 b/ Z' p U, g6 N) [! K - #elif SIGN == "BITD" # 16bit images
U4 H0 q- Z2 ~1 _ E9 F - #elif SIGN == "ALFA" # alpha channel4 x; w5 H) Y3 }/ E i( _
- #elif SIGN == "sndS" # 16bit audio
" `" x5 \& z( u& j" K/ M& H! x - elif SIGN == "sndH"
% N) {/ Q0 {9 D s - elif SIGN == "Sord"
" Y& Y* O0 k+ w. C - elif SIGN == "free"
) I- \2 ]# i4 S* u - elif SIGN == "junk"& }+ Y% S- H; y) `) r6 I
- elif SIGN == "Thum"
: T3 k6 ?: p/ @1 Q) q" W, g* _% S - elif SIGN == "KEY*": K% S' V* e# B+ G. C
- elif SIGN == "FXmp"; [* r2 `- S0 g( V+ w A2 X
- elif SIGN == "Fmap"
' A0 E y( U; n. ? - elif SIGN == "PUBL"# x4 [/ |: n0 y5 w/ F% L
- elif SIGN == "SCRF"
- K2 j# e E* Y, O! w - elif SIGN == "VWFI"+ m6 H' D* y+ Q5 z' `
- elif SIGN == "VWSC"/ L. [7 E( s; [9 }
- elif SIGN == "VWLB"% B- }/ X" Q# [7 W! j1 H/ ?
- elif SIGN == "VWTL"* H U- P3 Q( h& P5 O* i1 a
- elif SIGN == "XTRl"! Y% Y- v" }' _7 t% ^# u9 z2 s
- elif SIGN == "ccl "
$ i0 W4 w$ T! D# q6 \/ i - elif SIGN == "SCVW"' V, {: i% U5 {9 O* s
- elif SIGN == "Lval"
% c4 M' ?" ~" f2 y) S - elif SIGN == "cupt"# N w# Q8 v" g7 f
- elif SIGN == "CLUT"7 ~! o( H" A* I8 v
- # filters end here- i: F0 T# t8 t$ f4 L7 E/ S3 K
- else) J8 Q! @& \) u$ K# t Y4 _. _
- # skip the above ones and dump the others
3 U; V, `: g" A* R0 e' J' ] - math SKIP_SIZE = -1
# z; x! @- @2 x; i5 z - endif
6 A$ i( Y9 ]5 {+ n( Y
' I2 K& _9 c) E# r. R/ j0 q- if SKIP_SIZE < 06 j1 j4 f+ }1 o, V
- get SIZE long
7 H! c: k* q6 U" f - get OFFSET long3 W5 @/ k3 |6 i! N( V
- if SIZE > 88 p& O# ~9 {8 @* E& M# T z9 P1 g
- math OFFSET += 8
/ l, j# U! n- E3 q# E5 Z - math SIZE -= 83 ]2 }) z* C2 K& {8 F7 T1 W) J e
- set NAME string ""
# t" S1 e* ^7 L$ g1 X+ I - if SIGN == "XMED" R8 |# ~: C5 }* a/ H
- elif SIGN == "ediM"; o1 f) n/ P% Z; k6 h
- else0 o& w) _& G: g- L3 _* V! a
- set NAME string SIGN
1 q5 N) L) l, M2 N4 l; Z9 n+ C/ ?1 @ - string NAME += /
( u3 }0 H: H( ~7 b1 N0 z - string NAME += i
' @! K% q0 _1 g q1 Q( j - string NAME += ".dat"
2 @8 a% I* a R+ O6 | - endif" \6 L( y; ]2 I# ?
- log NAME OFFSET SIZE. ?: B# X$ H0 R$ J9 s
- endif# B3 o8 V* p& H, f1 f# T3 l+ ~- S1 m5 h
- get DUMMY long. w! Y. l, B3 {% |* g
- get DUMMY long
( s* E' z/ b8 B0 G - else
# o( x' ?4 S- \3 V - getdstring DUMMY SKIP_SIZE: r$ U1 M( a+ U6 T7 d( [
- endif" ^: ]- ~' m7 ]: I% h9 c
- next i, W0 a; K `& C6 }. M: P& U
复制代码 |