本帖最后由 shane007 于 2023-8-23 16:24 编辑 . y( u2 `9 A' g+ q/ |# S3 O
1 [, h) @7 G+ Q' }+ R" E
多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。
" V) Y1 P6 E0 {1 s1 M这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。
+ [/ d; S' ]$ u8 ]8 \7 e
6 A* k4 x" D3 d' \这是一款DirectDraw游戏,代码如下。7 a, @3 m. ^7 Y* t; h+ j
- .text:004234B0 push 0 ; pUnkOuter
9 N! G7 O& _* m - ; t2 E& ~) ~# |6 R
- .text:004234B2 push offset lpDD ; lplpDD, }. K! Y+ d( o3 a# G& q1 y
. Y# u# T1 C6 Y- \- .text:004234B7 push 0 ; lpGUID) g) X0 n- Y9 L$ w3 g' b
- 2 u" z0 D. A; N! A. z- \
- .text:004234B9 mov dword_458E98, 0
8 O$ k, t6 c% j2 ~: p
, d! J: n% T; D0 e, y# z- .text:004234C3 call DirectDrawCreate
复制代码 & Z5 ^/ X2 F0 f$ I5 _) C
选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。
9 k# Q7 E% N: g; I- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码
6 i/ \! W+ h) l$ _. b$ ?% Y
! B j& G v9 {; X1 F在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。
2 i! c7 x. j2 \& F! f6 N8 ]+ K- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 " \0 J# q1 o) H( O- l
% K% C3 {6 ~: a. t/ X% I' t
看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。
' h! Y1 Y( j3 `- k, c
; Z, a' `. }/ o: b3 j2 O9 f: P i1 k. {; I' {5 d# Y7 v# K
; x& ^; `: v+ I! K- ]& v
|