本帖最后由 shane007 于 2023-8-23 16:24 编辑 ( }- I) m }1 A( ^- r- C- W
j( J1 L5 r' a2 a多年前Odair版本让我看是否能汉化,当时水平有限,暂时未能解决。3 F8 t" Q6 S* k, ~; b( A
这一波,我感觉可以解决这个游戏的汉化问题了。游戏可以用dxwnd窗口化,随后用OD附加进程即可调试。
1 }) a- N# ]- y7 Z: ^+ _& h M* `( _' m5 P: B5 R0 r
这是一款DirectDraw游戏,代码如下。" A0 {* B" V3 ]" D. ~' @
- .text:004234B0 push 0 ; pUnkOuter
# M" |# S5 o- A y$ R
" t6 G! X8 [# l. o, H, V% q- .text:004234B2 push offset lpDD ; lplpDD0 l/ W0 J# t2 I
- * r3 J7 p1 P, i8 C
- .text:004234B7 push 0 ; lpGUID* D0 X- j f+ Z1 g$ ^
7 K3 E8 O) F1 m0 S" c- .text:004234B9 mov dword_458E98, 0, {0 ]' `1 @* F, x5 f9 q% U4 ^+ T
- " h2 X9 D7 j5 v; t
- .text:004234C3 call DirectDrawCreate
复制代码
1 U$ H# t* f9 O; d% ^+ D选了游戏开头主角点马桶出现的那句对话,下内存断点,在以下地方断下。
, @8 V* }1 u0 ?% }5 q- b- 0041EA60 |. 885437 FF |mov byte ptr [edi+esi-1], dl
复制代码 $ B/ T$ q' x3 z! T4 `0 b+ |) v
( c0 [+ ^$ t. F在ida pro中看到函数原型如下,a2,a3猜测是高度和颜色。+ P$ Q: |* U2 r9 E9 X& J" }( V
- signed int __cdecl sub_41E960(const char *a1, unsigned int a2, unsigned int a3)
复制代码 7 X& V/ B( ~. a* R$ Z- [* d* S
- h5 L; k+ o4 w0 e- ~" X# ^# I
看了一下调用的地方,有19处,那这个游戏应该都是只用这一个显示函数了。4 F/ i+ | d5 P; j! e) G9 m
, t4 S m1 p8 S5 x
* x. ~( c3 I" m# Z& _, y
, b% u: C% |4 N) ^! W8 @, l |