这个游戏本身是没有字幕的,但是我们可以想办法配上中文字幕。4 h3 |8 Z; h" y5 ^4 T
和幽魂1类似,在游戏的DUK下,有很多*.DUK文件,这些文件可以用改名为*.AVI的方式实现播放。1 n2 T7 G" l. d6 x6 x; x
- i' z5 M9 U3 {
在下边这个文件中,可以抓取游戏正在使用哪个DUK文件。' Y( u) b7 h- z( X+ V/ f' ?" \
下一步,只要找到游戏正在播放的frameno,就能有办法输出字幕。
( l# p8 _, T+ ^, |, I* {3 q+ A9 W9 c0 M
抓取resourceId的代码
' D9 \" S: A, w9 Q- J( j- \engines\sci\engine\kvideo.cpp
7 ]4 m5 } k2 @' J. W; Y5 Z* p - reg_t kPlayDuckOpen(EngineState *s, int argc, reg_t *argv) {; m1 |& C' b1 s0 i" G8 J0 D, Q8 e
- const GuiResourceId resourceId = argv[0].toUint16();: n3 ~6 o/ c0 c6 }0 \
- const int displayMode = argv[1].toSint16();
2 @8 D0 y: C" c% p, v - const int16 x = argv[2].toSint16();
( I* b& A+ T1 l" u2 F4 {' u9 | - const int16 y = argv[3].toSint16();9 M! [- c" [, N+ c
- // argv[4] is a cache size argument that we do not use% b/ @/ K7 y! b6 Z7 `, `
- g_sci->_video32->getDuckPlayer().open(resourceId, displayMode, x, y);6 _) }; ^; k9 c. G8 w2 J
- $ c, n! e+ F$ N1 g
- //by shane007 for test+ O/ I, D% ]2 Y/ k4 n4 H5 t: |8 F
- debug("resourceId %i", resourceId);+ Y; ]% f+ a* k" u' A. P `- T
6 }" x( u8 D2 v; }' T) B" E- G- return NULL_REG;
! F! `$ x5 D/ D2 |1 u, p - }
复制代码
8 F+ K: M# D, l$ C9 Y) {( p0 w: b f4 P$ I$ ]
|