冒险解谜游戏中文网 ChinaAVG

标题: CSI纽约的汉化工具制作 (potemkin请进) [打印本页]

作者: shane007    时间: 2010-9-26 14:54
标题: CSI纽约的汉化工具制作 (potemkin请进)
potemkin请来报到,细节qq上说过了,不再重复。
+ N  ?4 ]- @# N: q2 w1 a
+ B- o: U+ I" B2 @# j  X4 k部分伪代码如下
- a, t6 |8 t$ w- }; o0 E& A1 }TTF_RenderUNICODE_Solid
7 ]  A' F7 F& M) K# l{
/ ~) Q0 z1 t4 ~+ t) a  call write_english_to_log
+ F8 O3 {7 M* g  //call replace_english_to_chinese
7 i, L: A- }, P  T9 J$ q  call TTF_RenderUNICODE_Solid_old% H2 u6 ~* i( g3 I& v
}
' |3 o  Q7 p1 f6 j4 n* u5 L9 ^! [5 a/ b, b# C" y3 ~
相关帖子0 J# j( l; e8 }9 V# b- L6 ~+ Q
https://www.chinaavg.com/read.php?tid=24328- S) u, ~3 P* g  p4 ]3 `
, Z# g$ v  m+ C: @4 h4 w
时间期限 3天
作者: potemkin    时间: 2010-9-26 14:55
报道一枚  !
作者: potemkin    时间: 2010-9-29 02:16
遇到困难了:: Q) f# K7 k0 a3 V) M+ L' ^

" u+ _2 K) G# Z% W6 Y利用https://www.chinaavg.com/read.php?tid=12598&keyword=dll里面给的工具,找到游戏相关的函数是TTF_RenderUTF8_Blended()一个(只试了开始的一段游戏,只有这一个函数起作用)。但是自己不知道怎样提取函数第二个实参,也就是const char * text这个,即所需的文本。+ v! @: U- f% l+ g; Y) X$ }

4 d* p( A$ C1 o, g在网上翻了翻,似乎需要查到调用时ebp指向的地址,然后ebp+4为第一个参数地址,ebp+8为第二个参数。不过自己汇编还没入门,所以困在这里了。( i6 [* U( k/ L7 l3 e, O
) c! O, E( L/ H7 `8 ~& G9 H
Ahead工具那里还提到了Hook,说可以截获消息——依然不太明白。
8 b/ ^9 V9 H7 ]; d3 H; [5 W2 o0 p  ?8 L1 L
各位能否给点提示,或者推荐下要补充那方面的知识?
作者: shane007    时间: 2010-9-29 07:59
感觉你的方向不对,修改sdl_ttf.dll的代码即可。& F4 G% s5 o/ M
www.libsdl.org/projects/SDL_ttf/
作者: potemkin    时间: 2010-9-29 12:37
明白了, 原来sdl_ttf.dll的源码都在的, 直接修改再重新编译就好了
. @( Q* q2 F- X" @做了一个粗糙版本的: 直接生成一个文本文件Helloworld_UTF, 然后把渲染过的文字都输出到这个文件里。
! E" \* o  V7 L0 ]
# `  C4 W/ e# h0 @' t3 I% m问题是里面很多重复的文字, 按你们以往的经验, 是不是还要写一个bool find(char *text, FILE * textLog)类似的过程, 如果重复了就不进行输出' {$ R+ C( r) V  [. I
-----------
0 j& T! i3 `0 s2 M用法: 直接将SDL_ttf.dll拷贝到原目录下, 覆盖掉原dll
作者: shane007    时间: 2010-9-29 17:06
请问这个dll有没有在CSI纽约里测试过,是否能把文本抓取出来呢?
7 R; F6 F' V% }! G: k3 x可以的话,请上传一个抓取下来的文本。
作者: potemkin    时间: 2010-9-29 19:15
这是没处理直接截取的文本# m: l% @9 a0 I: q: y- t
一句话挨个字母生成是因为那些文字在游戏中是逐字显示的
作者: shane007    时间: 2010-9-29 20:54
请在每行字幕前加上当前时间,要精确到毫秒级别的。
作者: potemkin    时间: 2010-9-30 12:18
做的晚了.. 时间已加上
作者: shane007    时间: 2010-9-30 22:24
收到,谢谢。
) v/ v% G% w: j# N- I. t6 e0 s. Q) G) Q5 o, u/ ~+ @# h
这里有个俄文补丁,你试试看能否正常使用。* e2 \: A' Q, q: m' c0 l
http://rghost.net/2033504
作者: potemkin    时间: 2010-10-7 21:42
抱歉  国庆这几天懒散了
7 n" O8 j% D. R" m+ ]那个俄文补丁可以用,不过原理不一样,他们只是改了.dat文件' q* s8 q1 [  W& _6 {6 o& }* v
试了一下直接输出中文,用的utf8的输出函数,程序文件编码也是utf8,但是结果是乱码..
作者: shane007    时间: 2010-10-7 22:09
这样吧,请你去接下面这个任务。
  S$ P% d2 ^0 t0 m% o4 O这个游戏应该是整句输出的,你做个ini文件,输出到ini文件并替换即可。
& T6 c" L. R' L0 u% T游戏是俄文的。有不明白请提问。
, k+ e7 ^9 w/ Q5 e- Z1 K
- K+ G1 Z  N2 J- _7 i( F* ~( Thttps://www.chinaavg.com/read.php?tid=24378&fpage=3




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2