本帖最后由 shane007 于 2023-8-23 16:24 编辑
6 L4 E# W6 M7 k+ ~# r/ b, D/ Y7 {, b |, f
多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。 |0 |- h# F m
这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。3 n6 W; X, I G6 t
8 R9 J0 Y7 f8 {3 X4 M) R9 z这是一款DirectDraw游戏,代码如下。+ \% L. I# [' g7 T" F+ A
- .text:004234B0 push 0 ; pUnkOuter* } z5 G9 D( ~! X# C* S7 @
$ P+ }3 n8 Z$ i0 {8 F. y% n3 h6 ?- .text:004234B2 push offset lpDD ; lplpDD
4 ]/ n: H! f F+ p, S
: @. @/ ?6 c1 j% [- q8 C- S- .text:004234B7 push 0 ; lpGUID1 g2 o! q( M9 c/ T( ?8 ]* w* f
( {/ w: E) f3 ^- .text:004234B9 mov dword_458E98, 0
4 b' P! p, {) k5 Y1 |/ F& Q; d - ; A' n9 D \) _0 d" W8 A% h
- .text:004234C3 call DirectDrawCreate
复制代码
# J s' }+ d3 G7 z选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。
X3 j; h4 e9 n) [$ K, \( e- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码 A1 v8 Q- e% n0 L! f. c. T
$ i, [9 n# F3 z8 r: s
在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。
* O* X8 l% b% X0 P- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码
/ p0 Y# m8 \" y. w: ~# k! C& Y& g
看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。+ ]1 P( x* [1 {4 F! z3 |2 \' o
7 O- k& D6 l U( K
7 Y1 J1 R* x+ g9 e$ h' F+ n# M( c' y* x# J9 a x& }
|