本帖最后由 shane007 于 2023-8-23 16:24 编辑
& b# b N/ A+ ^; j- W; P0 ]; H9 g: ?. r* H5 ]( M5 @3 z
多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。
3 m- j* V9 H0 B' ]; T) Z这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。9 @/ ~, w) k0 c4 z1 X* H3 O
- y$ w! [/ M6 d @
这是一款DirectDraw游戏,代码如下。# V3 f% P) n, n. O+ Z3 l
- .text:004234B0 push 0 ; pUnkOuter' z. \8 }& s; x$ l) x9 @; T; X
- 3 G c; D' P" x: o
- .text:004234B2 push offset lpDD ; lplpDD
( S5 ^5 {, j; [8 V. ^ - - h; I l& z/ c
- .text:004234B7 push 0 ; lpGUID
" |5 c0 e9 y" a: h. \+ K
, P0 t7 ~7 |" N/ A- .text:004234B9 mov dword_458E98, 0' {! d& `% d7 [! p. a3 |- @
- " C* E4 _6 m, n) Q2 ^2 G; O
- .text:004234C3 call DirectDrawCreate
复制代码 5 K) U# h2 V! z1 T4 Q) d
选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。- T/ l/ N/ `) H4 U" d! h
- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码
3 `" i7 U, K( s+ ?) j3 {2 A! {9 e
+ Z4 z6 I* ~: a; E在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。
/ r2 C# ~* [6 y- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码
8 Q) P4 J4 o) C& Z
* R" z, [* v7 x6 X! Y8 j+ H2 _看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。
" W+ F* Q# H' t) @/ x) s& D' a
# M# ]( B8 P6 x& b7 D4 Z3 f' _0 O4 M1 O( k: ^7 w S* p* a
. L; j: I9 Z% J0 J1 f
|