本帖最后由 shane007 于 2023-8-23 16:24 编辑 # f+ j! q) H- \& O' }7 J" M
) C; ^1 [0 A' d) K
多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。
( {" c8 R% x4 |; V这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。
5 R1 C5 O' O0 T3 B+ W$ j: R$ a3 z5 c# A8 K
这是一款DirectDraw游戏,代码如下。+ m. b, ^. `; d
- .text:004234B0 push 0 ; pUnkOuter- X9 C6 d- w/ H& L( E( c
" |8 c' J: k( r; @- .text:004234B2 push offset lpDD ; lplpDD. I: ?7 s, ~; f% G# W$ \
, f+ g+ k7 t. ~8 M& P; X9 d( f |- .text:004234B7 push 0 ; lpGUID
1 H; g6 }( {$ r2 D' ` - ' v6 `6 g$ ~8 z# K4 v
- .text:004234B9 mov dword_458E98, 0
+ m: z+ g9 T$ U* q* {( x- k& M
% B. g) `( J( o) L- .text:004234C3 call DirectDrawCreate
复制代码
) ^5 {3 m- {. Y6 z" i8 J: c5 T选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。
a' O# N3 F! i5 M/ v0 Z- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码
# ~: ^# z$ n) F, c8 E
# w, p0 {( n6 o; R/ F# a在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。% _+ v+ b; {- g- V Q6 o
- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 8 W, O# c0 ^0 ]. }1 Q
; W) @; W9 w6 F( `: N$ `/ j
看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。1 O4 Q$ g9 W5 s F. A' y% O& w
; F( |1 X- v" Q# e: }' ?3 z2 D
( G' |7 u3 q& h9 _5 h
' P* e, }. d3 w9 U. q" @8 j |