本帖最后由 shane007 于 2023-8-23 16:24 编辑
. [8 U) q/ [" a" F( i8 ` _7 G* l' J. ]2 n
多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。5 ^! s) g4 P- ]/ S! O
这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。
7 J X1 Z6 \5 b
, i1 J% o- e" ?这是一款DirectDraw游戏,代码如下。& v8 _- F, s. k" A. h/ _: R2 W
- .text:004234B0 push 0 ; pUnkOuter5 _+ E6 F$ C9 f0 [! z" O
- : x: Z8 S8 r2 d: V A7 F
- .text:004234B2 push offset lpDD ; lplpDD
: C1 D+ H$ w5 [' _0 U - ! T$ D8 J8 ?8 j2 T3 A+ o
- .text:004234B7 push 0 ; lpGUID
1 B: l3 W+ V* ~: I; w: M
8 n' ^5 t# V7 B* B8 l4 o. c- .text:004234B9 mov dword_458E98, 0+ ] T* R+ Y% ]- H y3 Y; o% O1 }
6 Q7 @% M6 |# y( y& P! U- .text:004234C3 call DirectDrawCreate
复制代码
* W" P8 N6 t0 K9 a: T; l' Q选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。
; R! `" |* A! m3 }- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码
- D( m* k# c. s$ N9 j4 M& o7 v& P" F% v! H+ k) r8 c& c
在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。
# V6 {4 E( {! k- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 $ v$ g+ R2 \7 c; L& R7 i
" R& e* \) x- T. D) Q( [+ ~$ y
看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。
$ r- T! M2 x9 f b( b
/ e& b) e7 r6 A1 `8 Q
/ w8 [) ^# k7 [% ^9 E5 [6 U& o! I9 u, \7 M
|