冒险解谜游戏中文网 ChinaAVG
标题:
【Directx9游戏汉化 #1】 修道院:导演剪辑版(The Abbey: Director's cut) 字幕...
[打印本页]
作者:
shane007
时间:
2023-8-23 14:57
标题:
【Directx9游戏汉化 #1】 修道院:导演剪辑版(The Abbey: Director's cut) 字幕...
以下这个本论坛的下载贴中,由于有个字符串在中文系统中不能正常显示,导致游戏不能正常 运行。
$ B- z: }: o3 G' f2 `% P, y# M
修道院:导演剪辑版(The Abbey: Director's cut)
4 d6 ?. h& s& m! W {
https://www.chinaavg.com/forum.php?mod=viewthread&tid=147967
o+ {+ C$ t! J, H
( k3 Y# t5 |# N, H$ D( h: {
具体信息可以参考Messages.log。修改正确后的字符串为Tomas。
( y! @8 w$ H+ x$ F
修改处
7 }6 }; v- H6 X5 o4 X9 G, L4 x6 f9 Z. C$ g
《1》以下文件的内容
+ o8 C; c8 R+ A% K% w& q$ t' L5 b6 O' m
\The Abbey Directors Cut\English\Data\Game\Game.xmb
1 m% e% r2 u& f2 b! L' T
《2》所有游戏的文件和目录名,只要含有那个字符串的都要修改为Tomas
1 H9 z& B$ |9 f; w
比如\English\Data\Models\Tomas
5 H/ g+ C& G8 v8 ]! w
X& r5 y6 C$ m1 k
用ida pro 进行简单分析后,确定游戏是directx9的游戏,
, a2 Z% g' Z8 Z& @/ n# B
.text:004F8D3B push 20h ; SDKVersion
" R' i& e% u J9 Z* {8 I
.text:004F8D3D mov esi, ecx
- K- j# i. B {0 G1 X, ^1 a
.text:004F8D3F call Direct3DCreate9
复制代码
1 W# _; f7 ^9 V, M; e5 B2 D: V- Q! q
3 a% s e6 { V, A6 J
- I, g( j& x( `3 r7 `
播放动画的时候,好像用了direct draw
* ? b- u5 n* X; i4 b! X
.text:004F4200 ; int __thiscall CVideo::Create(CVideo *__hidden this)
/ S5 Q! w$ y! j% J+ O6 M
.text:004F4200 public ?Create@CVideo@@QAEHXZ
4 z! v% Q5 s" L) t1 m, x. @6 A) z! y
.text:004F4200 ?Create@CVideo@@QAEHXZ proc near ; CODE XREF: CSystem::Create(HINSTANCE__ *,int,char *,char *,CWorld *,char const *)+380↑p
, e' ~9 x0 M Z& B4 v
.text:004F4200 ; DATA XREF: .rdata:off_5C6668↓o
9 d- Q# |1 r2 Q t S& b( o0 J7 Y
.text:004F4200 push esi
1 I% y1 O3 [4 Z! J
.text:004F4201 push edi
$ y$ D6 V# k5 b, I2 `: G8 G4 G2 M
.text:004F4202 mov esi, ecx
; }1 k1 p* X# S- `2 j
.text:004F4204 push 0 ; pUnkOuter
# i5 h2 E0 Y5 c: [/ P6 |4 A
.text:004F4206 lea edi, [esi+54h]
; l+ e6 s6 E5 r# k5 L
.text:004F4209 push edi ; lplpDD
# f- K9 ?( w7 q4 l# h' c
.text:004F420A push 0 ; lpGUID
, E1 ]$ b) S4 l( b, C
.text:004F420C mov byte ptr [esi+79h], 0
U) \5 |! K7 C# F/ v: M' a
.text:004F4210 call DirectDrawCreate
复制代码
/ V; o( {6 g2 u1 B6 j% L
( n. I$ ^, X% K/ W# |- M
`; {+ ^! i& g b
本游戏可以窗口化,比较容易调试。
' y; q+ V! E7 i {2 x
找一句画面有的字符串the son of ,找到显示函数。
/ L, l& r# Q0 Q
以后我们用自己的函数替换它即可。
% r4 `; w% q7 H% i
/ w( q/ f& ]8 S) [7 `/ H$ m% q
对话字幕断点处
* J) G3 c% }# p6 h
004B5AF3 |> /8A08 /mov cl, byte ptr [eax]
; B% Z" b0 R# ]! @
# [0 f1 a$ l. {1 `
6 |/ l8 ]0 V5 o( x x( {: I
char __thiscall CFadingText::Set
7 v @+ j- o3 f6 L) v" Q8 L& }
(CFadingText *this, char *a2, int a3, int a4, bool a5, bool a6)
. K' @# l7 G- _, g* s$ ?+ U; ?9 z
r: ?$ L# a( I, |0 a" |& p; @
查了以下调用它的地方,有10多个,看来这个游戏所有地方的字幕应该都是调用这个显示函数了,
2 j6 L6 `/ H! b" u
3 p9 A, I7 r- _* b$ B
以下是一部分
7 @9 h* u8 g" F0 {4 y" Y
CGLCLayer::Render+97,
5 k1 b. I. p+ C5 m3 `
CGameInterface::ShowSentence+2C,
- V4 t1 f5 x5 ]# d
CGameInterface::CloseDiary+1A,
% J4 t: z6 b8 n* ?4 Y( r' j
CGameInterface::SetDiaryText+6A,
+ R' r9 T( d' x/ N+ l
CGameInterface::OpenMainMenu+17,
" t7 [% t+ W# Y! a
CGameInterface::AddMenu+67,
- u* Z, q+ j( D1 l& U" S t* u
CGameInterface::OnMenuPressed+0AB, M)
- ~2 m# H7 L$ D6 G! a% g6 Y3 X. s! ?
TheAbbey.CFadingText::Set
复制代码
! p8 X4 F o! p. I7 [
7 v6 g0 M. G! f) s
, a$ N' ^8 }% P/ S
; U' [/ {4 g0 x/ p- M+ T f8 A
) Q# E c7 w- M+ d8 J/ V, ]
欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/)
Powered by Discuz! X3.2