本帖最后由 shane007 于 2023-8-23 16:24 编辑 7 }' d! E: J5 j( J4 f5 {
: w+ R: A' \9 J- G" V多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。6 r+ Q% C! ~- L, c/ C
这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。. ]2 h" f7 j, E7 k6 G& Z
* `0 C8 }" p6 @* G% z/ n1 `
这是一款DirectDraw游戏,代码如下。
& a' d: \$ ^% s6 l- q- .text:004234B0 push 0 ; pUnkOuter
6 Z6 ~: Z7 `# ~( F2 n6 N - 6 E% V. L' W) A
- .text:004234B2 push offset lpDD ; lplpDD: W" A1 ]0 [; f2 w
m" y6 A6 j% A6 {. C- .text:004234B7 push 0 ; lpGUID
& Q' U$ k' p) e( e! m) U5 s5 m
' T. D6 d9 t& W* ^( {; N- .text:004234B9 mov dword_458E98, 00 H/ D% V5 t0 L$ z% t1 d9 D0 e0 z
- ; D# {* g; u" O r" S
- .text:004234C3 call DirectDrawCreate
复制代码
/ i9 t8 q. D) V; p2 n选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。
9 c9 O! j8 [ S. e4 a3 u- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码 ' `) O$ D$ T8 L
! ^' o; M! G/ S2 X! I3 J在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。/ K2 a5 [9 _1 _/ r* `
- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 ) s1 ^$ J- |7 l% x
. `3 I! k- _% I$ }8 E看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。6 l% G$ v& ^9 _1 H- y# B
8 v2 Y+ ?$ h8 X2 F* N
6 s/ N# \" M$ m& O6 D+ h% @/ L
8 x( P- i+ z" p, F7 ^ |