本帖最后由 shane007 于 2023-8-23 16:24 编辑 ; y9 o3 V% F6 t( y) R' M
9 P) c4 t: {, K多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。, @0 t) {* r; U k6 F) _
这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。
" T& ]2 @* m* k- V8 ^9 }$ M2 E
3 [ \. ]' Y5 B+ p2 @这是一款DirectDraw游戏,代码如下。% f X, I9 z. `, E; c- e G
- .text:004234B0 push 0 ; pUnkOuter2 q o5 q& S5 K# m
0 l7 ~ m3 H) B. L7 p. U! H1 o- .text:004234B2 push offset lpDD ; lplpDD: H( E* N X* J3 \2 V& ~
- X8 }- y7 R( o( S' ?
- .text:004234B7 push 0 ; lpGUID) C8 C% }- }+ S( w
/ H; l& f9 ^: e- z- B& o- .text:004234B9 mov dword_458E98, 0, s J- \8 V# e
- 8 i1 C" z% I6 u) a/ S
- .text:004234C3 call DirectDrawCreate
复制代码
# \. f6 G8 D2 g+ Q% m" @选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。# H; c' T7 e [ ^
- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码 3 H5 T! m* ]7 a, J
- m( n9 I7 K g( w7 U# H
在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。
! L+ p1 H b, Y+ {- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 ) F2 B- L1 O m- ]! ?0 N. X
1 |; ?8 i5 G& a5 q* H9 D
看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。
7 o! [0 r$ o s. r# Z; z
3 S* ?7 c( x: |8 V) u' F" @- Y, x7 z1 E% l: m
# \4 ?, W. ^6 ^ |