本帖最后由 shane007 于 2023-8-23 16:24 编辑
& |" D. a% t7 k+ j, g' T3 t( q& @4 n4 L- H7 H7 K* O+ X
多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。
+ o2 a8 L0 `; ~& Y% g这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。/ S% ]! w6 q2 X% |2 I* o
5 V: @, H1 S: j- D这是一款DirectDraw游戏,代码如下。* P2 L1 s7 w. f
- .text:004234B0 push 0 ; pUnkOuter
; g( i- E4 p- \" W( h2 F7 s
' B+ M7 j9 F1 F) B3 b* d8 a: ]! i4 U- .text:004234B2 push offset lpDD ; lplpDD
4 X- m, N9 r! ~- o& L
) P- t/ c, U5 Z' T- .text:004234B7 push 0 ; lpGUID; G8 v( A: i& J2 | C: i$ |$ U
|; s; I u9 @- .text:004234B9 mov dword_458E98, 0
; j7 ?( N' H5 ~- Y) D - - |: V0 @7 F, R+ f+ c4 n
- .text:004234C3 call DirectDrawCreate
复制代码
& w; f6 j6 V% G$ a& F! r选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。! l) k2 l) r E" {& R
- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码 # N- U. Y- ]4 o, f
9 A! R( k+ S4 e' }0 x$ X
在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。 \; u6 i/ `4 H6 G, K3 d
- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码
+ e, E; `6 |5 n8 \9 |
% P8 G7 f* t j" N看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。( a+ ]& i$ p& a3 v, a
/ x. A2 o7 v3 [& m5 h- L( y1 [: A1 S! q4 o4 A/ B9 ^+ I
0 ?5 ]: U4 N6 i7 e: Q
|