本帖最后由 shane007 于 2023-8-23 16:24 编辑
! F( N2 F* \7 X7 q3 a" {& ~
8 I& m) c( c" |1 U. ?多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。
k$ J- ~, ]1 o& h这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。
) w5 P; B7 C r/ e7 N3 A/ P w( Y
这是一款DirectDraw游戏,代码如下。
/ b; k; ^$ Y$ x4 {- A- .text:004234B0 push 0 ; pUnkOuter% v+ o+ {; w. w$ l( c1 ^
& c: S7 O$ H4 ?, Q' u5 m, M- .text:004234B2 push offset lpDD ; lplpDD
! k. f% ~* G! L# f5 N4 I2 O m - p e; N* t" s
- .text:004234B7 push 0 ; lpGUID
% y" z4 s& ^/ [8 I4 S& Q - $ D* Y/ _: d% z* V( j* }7 R- t
- .text:004234B9 mov dword_458E98, 0$ o4 g% i' S# l5 C
2 H! H2 Y4 Z* A Z9 s& l- .text:004234C3 call DirectDrawCreate
复制代码
) d8 d( p6 ]9 R u选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。
/ c: F: n4 c* l- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码 * g b* X) i v c& M! \
/ U; P* d) h1 ^7 e% U* M在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。3 X4 O" D/ o6 E$ K. H7 j
- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 - `1 J2 n4 u4 Y0 u
5 i" N" N& b' C4 H" M8 }3 y( W! A看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。
e$ \; o0 V, X7 [+ |
: i( b$ {4 y0 e1 W4 V) u8 v2 ~9 S5 \6 j$ I1 @7 W Z' f S3 p
' Y3 x0 I0 }% {& A, {2 I3 }
|