这个游戏本身是没有字幕的,但是我们可以想办法配上中文字幕。' m! B- c0 b6 h1 O
和幽魂1类似,在游戏的DUK下,有很多*.DUK文件,这些文件可以用改名为*.AVI的方式实现播放。
& s z2 Q8 x4 s
: r* G4 r3 j# j8 d. O/ n在下边这个文件中,可以抓取游戏正在使用哪个DUK文件。' X, I+ D( r) k* Y8 r/ ~' v
下一步,只要找到游戏正在播放的frameno,就能有办法输出字幕。9 `7 n! i- Z- [" v: t. ^4 H2 H
4 v( D6 D8 L1 d% W% ~抓取resourceId的代码
) ]7 q. N6 A$ U- \engines\sci\engine\kvideo.cpp
% C; V/ c( p' b$ ?8 K6 ]5 x0 p( f* T - reg_t kPlayDuckOpen(EngineState *s, int argc, reg_t *argv) {
. N3 h! V2 h8 E' \' c - const GuiResourceId resourceId = argv[0].toUint16();. c+ o. u6 J' @! s8 q* h* u& ^
- const int displayMode = argv[1].toSint16();
e: P4 d' O P: K6 K; R& u8 M - const int16 x = argv[2].toSint16();! L" |3 u. B% \
- const int16 y = argv[3].toSint16();
. z4 }5 x W/ M. x( f- x - // argv[4] is a cache size argument that we do not use
, c1 G1 ]$ L0 d" Z, D4 k - g_sci->_video32->getDuckPlayer().open(resourceId, displayMode, x, y);
3 ]- g* A5 ]4 i- m6 m/ E# ? - 5 C1 C& ^8 n( U, z- h6 F1 j" I& G- N
- //by shane007 for test
5 ~1 b( T- v8 D' e* F - debug("resourceId %i", resourceId);4 z# V: |# R1 S9 L
- ; D4 r/ L& B( b, o0 P X$ a
- return NULL_REG;% n' \( X, B7 P1 G/ p* T
- }
复制代码 ' _9 R3 w/ X" ^$ N
Y7 x8 V* t6 i1 O |