本帖最后由 shane007 于 2023-8-23 16:24 编辑 % o6 v7 T" N! ]8 O0 s; m; g
# V2 |7 ^9 c. ~4 e& U1 p多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。% t# [+ t1 L% `6 j. }
这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。% L, `" m- H6 C0 [% H; }) |
& Y* `+ C( T y
这是一款DirectDraw游戏,代码如下。; W) L9 K- r; V! m9 Y7 P& O
- .text:004234B0 push 0 ; pUnkOuter* o, h, u( M" Q% k
' Q7 s" x* K' N7 o% k; k6 U# G- .text:004234B2 push offset lpDD ; lplpDD+ Y' \* ^0 V9 @6 {. O
- , ]- T* G0 K) h1 a
- .text:004234B7 push 0 ; lpGUID Q( c: t0 D& S0 Z
- & R4 r! ~6 L6 `( A. G8 t- ]5 B5 d
- .text:004234B9 mov dword_458E98, 0
$ x- R M6 P4 R: [; d9 L3 Q8 i - : c3 f5 h5 q, E6 m8 L: ^# ^( `
- .text:004234C3 call DirectDrawCreate
复制代码 , ^5 `1 i) Y2 O1 t
选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。' N4 r) Y& [. m. E/ ~% ~
- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码 ( D3 n6 i1 @" c# R
$ T+ H) f4 d7 [6 J6 {
在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。1 `8 E: n3 t2 {, N, m+ J* C
- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码
3 k- K7 k7 p; t$ f! [% `* z! w
( U( w6 _& W$ x3 ~看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。' Z$ i! Q9 ^& W( u' B$ ?
2 A y5 S0 @5 `4 b
, S6 T8 U" M! n+ `. G8 U* q9 ?4 y& \
|