本帖最后由 shane007 于 2023-8-23 16:24 编辑
7 a# F# A2 j" w9 N' X7 @6 J
$ t* e- R( K; d8 B, K多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。
1 A/ q0 F/ o W这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。* V( P+ J* O7 \0 h: ^& E
) E& ?* E' N* g( y Y/ P* _% D
这是一款DirectDraw游戏,代码如下。+ x6 @/ x) I6 J. I" j
- .text:004234B0 push 0 ; pUnkOuter
3 y. ]# K0 K; k' D4 c; M
8 W1 o$ t, n* |: l3 n- .text:004234B2 push offset lpDD ; lplpDD
6 N, q( i. A0 M" p- y - j* G" O6 ^% |
- .text:004234B7 push 0 ; lpGUID
, f$ c) O) C- X8 C0 p, ?) O1 {
2 V; S% r$ f6 S, c6 ~. R( S+ u- .text:004234B9 mov dword_458E98, 05 n6 o) I: e& F
- S# Y: H& N4 }; d: w2 r. Z
- .text:004234C3 call DirectDrawCreate
复制代码 $ `8 T+ b% U+ C3 l. |
选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。- ~. g* \' L1 L* n
- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码
7 B% P1 a/ k2 ]/ ]8 G1 ~# l7 O% _# M) X' {8 @ T2 z& \8 c* G* W
在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。
. b! x2 k- t% x$ q; _: q- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 9 b" @' z V$ S1 I- ?/ u. X% o/ H
' {4 |. s- V& Z& c3 c
看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。
& Q) T6 U p7 T5 \! e* X2 \
! v- p4 M8 f |, M- o/ a8 X u
% x* G( Z6 Q# F* U3 y: m/ Q
* t# n$ X, P8 y/ X. w |