本帖最后由 shane007 于 2011-4-29 06:41 编辑
& }7 r: ^- H, g" a
4 B6 I' T" h5 X9 I; n2 ?勤快的老外又放出了这个好东西,配合quickbms使用。$ D6 ~' p2 `; x
好多小游戏都是用Shockwave Director做的,包括神秘视线。
$ M" E% R$ ~4 i9 {3 p如果能做出打包器的话,就又能解决好多游戏的汉化了。- # Shockwave Director dcr/dir/dxr/cst dumper
" W6 ~, z2 p+ Q1 l& U - # script for QuickBMS http://aluigi.org/papers.htm#quickbms
2 J+ n3 M! [1 K A
% l/ M g! g1 n( j- quickbmsver 0.4.11, u, J" H6 i+ h7 I( p
- getdstring RIFX_SIGN 45 a$ H5 K5 q9 J
- if RIFX_SIGN == "RIFX" }* E5 m% v) ?
- endian big0 C/ }+ h0 i7 H- s" M4 g
- elif RIFX_SIGN == "XFIR"
- S3 k; ]% P0 Y; a - endian little
8 c- ~% K3 m3 y$ Y4 I - else
5 ^0 e& N( z) x - cleanexit# S. N% V2 ^4 n) u
- endif
7 @9 u" B' }$ d5 X! C! B( V' Q - get SIZE long
3 Z _3 s5 [! V6 ?* p8 a7 \! U - get SIGN long: ?4 c% a: G3 Z( |
- if SIGN == 0x4647444d2 c+ O5 M6 m2 K5 {
- get NAME fullname9 W6 R7 o+ N* L0 k8 M9 g2 h/ j' i
- get FOLDER current_folder
: Y( D2 J8 m- v, N6 u1 U - print "\nyou must use offzip with this file:\nhttp://aluigi.org/mytoolz.htm#offzip\n\n offzip -a \"%NAME%\" \"%FOLDER%\" 0"
0 Z4 n; E$ r* K( ~! ` - cleanexit
9 S+ @7 V+ \" O: D* {5 n - endif2 t& O' Q2 z4 b' \; V) s! _2 X
4 R9 S5 M2 S0 i- set FIRST = 1
! V6 ]$ K3 l/ ^ `8 d - for i = 0, m) p% B' H$ k+ \" X
- savepos CURR_OFFSET
: q+ ]' ~- \5 _8 ^1 h - getdstring SIGN 4
( k4 h1 j$ D8 O, _# i, D5 h - if RIFX_SIGN != "RIFX"
1 I% v* @ J& o: Z, X8 q3 H - string SIGN r= SIGN) v' v6 v8 T+ h$ C, x: o
- endif" [4 g- I& H+ F: {9 A, ^+ }
- & m2 z" U" N% m8 t
- math SKIP_SIZE = 0x104 u: O9 S4 q( [! J3 J
- if SIGN == ""
7 s: j4 b, v: ` - cleanexit) V4 }) u% }4 b# Z& m
- elif SIGN == "RIFX"
1 a7 w0 y8 H m' v - elif SIGN == "imap"5 j5 O+ R7 x/ b/ S6 S
- if FIRST != 0
% X, k2 q) e' U3 T8 h/ ^4 \0 @ - get DUMMY long! R @- e8 R) t# {
- get DUMMY long. ?6 r2 s2 o# E# F
- get OFFSET long, h: `2 H5 j4 \) W- o! d
- if OFFSET > CURR_OFFSET# p$ ~) D) H& |; o5 L
- goto OFFSET
/ R M$ x% }* B1 j - math SKIP_SIZE = 00 S' `3 e3 x p7 p! T
- endif% W" C$ E$ q/ [% J
- endif, m% w7 w" @! o( S- J9 ]
- elif SIGN == "mmap"1 [0 m- F( f0 j# ]9 D G* D
- if FIRST != 0
2 A$ N7 d5 F. D0 C: @* u0 e - math SKIP_SIZE = 0x1c# L+ u3 [7 t% [5 s
- set FIRST = 0
) j0 m* U* @! d; y) ~ - endif1 o1 G; t, E; K0 p7 c/ R
- # filters start here
! O% t$ [3 O% {7 q - elif SIGN == "VERS"
1 F [6 J# \5 W1 L3 w - elif SIGN == "CASt"
: }% ?) \3 C; E* l; f, b. ^ - elif SIGN == "CAS*"
# x( Q9 N+ c# Z+ \" P - elif SIGN == "Lctx"! [. n, n }0 P# G4 p; D7 H
- elif SIGN == "LctX"
" N9 {: Z, [0 y( `' A6 P - elif SIGN == "Lnam"& h7 ?7 ^: i+ c/ |; T
- elif SIGN == "Lscr"- B$ g7 |) Y5 t3 q
- elif SIGN == "Cinf"& {! d4 b5 n6 O, w% }# R
- elif SIGN == "GRID"0 N; h/ C/ e7 I4 z* i' N8 o
- elif SIGN == "FCOL"5 e0 X4 I8 }$ `7 A9 R; f
- elif SIGN == "MCsL"
" o [$ X6 _+ }' H; N' N - elif SIGN == "DRCF"7 l# q6 Z/ Y. X% L& X
- #elif SIGN == "BITD" # 16bit images( |3 y+ U! s- ~. K
- #elif SIGN == "ALFA" # alpha channel. [; J' |7 W0 } Z4 u* r5 O0 [
- #elif SIGN == "sndS" # 16bit audio
, N" ]/ I. o! x - elif SIGN == "sndH"
( u. S) `( p# N3 \5 I' m* ?6 S: U - elif SIGN == "Sord"
9 I& d5 n W) W) v - elif SIGN == "free", s/ I* o4 z8 f6 U0 \2 O# L
- elif SIGN == "junk"8 ~5 g* ^8 u. u" ?/ x$ T
- elif SIGN == "Thum"; u* g! M0 x/ h
- elif SIGN == "KEY*"1 h/ n: P7 u# p* C/ T! q
- elif SIGN == "FXmp": o% _* C) V$ y8 d2 q
- elif SIGN == "Fmap"
$ Y5 @7 R' {! p& w) y: E$ ] - elif SIGN == "PUBL"
7 e; B$ S% a! l: [' @ - elif SIGN == "SCRF"
' w( a+ N7 e! }" H ~; L - elif SIGN == "VWFI"1 S& w% @! x$ b# E
- elif SIGN == "VWSC"8 q1 n2 _2 ?& ~2 j8 d- i4 l" H0 I( S
- elif SIGN == "VWLB" d& M) f9 R) q- I
- elif SIGN == "VWTL"8 I; y* Q2 k+ ?7 \" e
- elif SIGN == "XTRl"
9 o3 v7 J& V5 Q9 }7 \3 H% K5 k - elif SIGN == "ccl "" M! x, t: p- B' B2 n0 ?! h
- elif SIGN == "SCVW"' s* R4 l1 a3 t2 F/ R4 P& p
- elif SIGN == "Lval"
v# P7 g, ?6 Y7 N, a0 A/ o. Q - elif SIGN == "cupt"5 }1 M* O3 s! a5 r- R- Z
- elif SIGN == "CLUT"( {1 y' h% |& w
- # filters end here
% j$ x$ K# u5 G1 Q3 D9 z - else$ h1 {6 H9 V# C& j2 r
- # skip the above ones and dump the others
$ P2 u! R; S+ f7 Q - math SKIP_SIZE = -1* \! @% j/ ~3 a
- endif
9 ?, A8 V( e6 [$ ~ - 6 w* r, t3 h; w- w/ l
- if SKIP_SIZE < 0
1 c* Z( ~$ A% r( q$ ^ - get SIZE long0 f% p: _" a9 S1 H/ ?9 }
- get OFFSET long- O& ~2 L3 y8 `+ [/ ?- x# G
- if SIZE > 8* r7 x4 o/ R/ \* H8 w9 G; A( k
- math OFFSET += 8
+ n/ J. S0 M: c. {& P Y - math SIZE -= 8- v: T: T. u! {- w, t
- set NAME string ""6 E1 u3 L! j# Y* R
- if SIGN == "XMED"
8 N' a9 N& t2 v# }; h - elif SIGN == "ediM"3 Y, @1 c% |9 d$ A) Z, S* r. |
- else
; @6 H9 V2 [4 w1 j+ O) ~ - set NAME string SIGN
) S" [- o6 r' y. v - string NAME += /
3 T$ L `% Z/ v6 U0 k8 r - string NAME += i) B/ N4 q2 _% ]( @0 z* T5 W9 J
- string NAME += ".dat"
8 d s- U+ Z6 x+ r- Y2 x6 s - endif
) t' _: I8 w$ _) T - log NAME OFFSET SIZE
" r; D5 c6 F/ D I! h, u - endif- B$ @# ]1 t/ t9 C; [/ X, y6 v! Q
- get DUMMY long
( j0 N6 O7 O1 s& E" \3 g - get DUMMY long1 x: I' D: n+ L( g$ o; Z) o
- else
+ h/ b3 Z) W) `4 I' C5 y - getdstring DUMMY SKIP_SIZE; p8 p e2 a. }( X
- endif
! N! ?5 y" [( {0 z% L* | K0 ^- \, c% { - next i
% o: g) a t* A
复制代码 |