Archive for the 'localize' Category

Tahoma化了Tencent Traveler和CDSpeed

照例先是对话框,然后界面上还有好多宋英

然后征用了虚胖段3A个字节,存放字体块和创建字体资源代码
将获取DEFAULT_GUI_FONT的GetStockObject都换成了CreateFontIndirectA,其中遇到过几次obj_type不是当时压入的情况,不过就当前的这2个软件,都跟到了是11/0C这两种.

宋体里面的英文记得以前就贴过放大图,是利用Times New Roman系的非等宽字体来假装等宽的,有点小难看.其他的一些中文字体有等宽英文的很少和宋体一样不美观,也有的是非等宽英文字体.

下次改时候,在压完ebp后,判断esp+0c还是08,反正是arg_0,这个等于11或者0C的MS Sans Serif的话,就给他弄掉,如果不是的话直接送去GetStockObject去.

而且将字体值存于另一个地方,也就是,如果多次调用,只给他创建一次,其他情况直接将这个创建好的返给eax用.顶多资源泄露一次.

98的Tahoma问题,现在又想起来了,当时倒是满激动的.
现在三分钟早就过了,等啥时候辞职有空了再来搞那个吧…貌似

ふた魔女的存档加密和封库文件封装方式

这个是存档文件的key:
xordata: array[0..31] of byte = (
$30, $36, $34, $35, $32, $33, $35, $39, $35, $34, $32, $35, $39, $38, $37, $33,
$35, $36, $31, $38, $39, $34, $30, $33, $36, $39, $32, $30, $34, $36, $37, $33
);
循环对存档文件内容进行xor即可.

封库文件:
前面#$2C字节是:
$0000:Magic “PACK”
$0004:Key String “E9C5C9C5CBE7C3C6C1E6C3C7CFE7C3C4DEE4CBD0C587C7CBC0D3C5F3DFDFC1CB”
$0028:VfatNum DWORD B4 01 00 00

将Key依次xor #$AA,得到该pac文件的key.
用此key对从#$2C开始的记录块进行xor,对齐方式是第一字节对应文件头开始的第一字节.
也就是说绝对方式对齐的.

每个记录信息块的结构如下
ItemPathLen:DWORD;
ItemPath:Array of Char;
ItemSize:DWORD;
ItemOffset:DWORD;
其中ItemPathLen包括了后面的结束字符#$00

读取完指定个数的记录后,就可以着手开始解出每个文件了.

ItemPath是针对游戏安装目录的,是相对的虚拟路径.System\Album.bmp类似这样的.
将文件全部解出后,游戏可以直接读取解出的文件使用,测试修改效果不需要打包回去

ふた魔女是前几天出的Teatime的游戏,看到论坛上有人问游戏的汉化,Teatime最近出的几个游戏我都制作有对应的汉化工具,只不过纯粹是为了YY,这个也一样,何况这一款游戏成了纯粹的2D文字官能游戏了,不是Side-B应有的水准,应该说不是Side-B小组出的.

StringRipperV2的设计文档

刚才点世纪的blog矩阵,发现某人不怀好意的收了这个BT窝二的链接,一看就是何患无辞.
特意发上中文字符提取器的设计文档.偶发布在世纪水区的技术贴大多沉底或者清空了,在此略微备份.
第一版是用来提取繁体字串的,03年的了.
第二版本来是预计可以用来辅助转码,和自动对照生成ASCII词典以利于剽窃汉化时候ASCII不便翻译的问题.
记得有人问过怎么从已经汉化好的文件中对比出来ASCII字典,我惊出一后背冷汗.
废话完了,贴了:

先进行分析,建立一组结构,
.Offset DWORD
.Length DWORD
.hasEng DWORD 本来是是否包含英文,修改为英文个数
.hasHan DWORD 本来是是否包含汉字,修改为包含汉字个数
.rp float 人品点数
.ref DWORD 测试次数
[条件:如果判断文件是PE文件] 通过PE结构,去除Offset和Offset+Length落在PEHeader区,导入表区,资源区,重定位区的目录区的字串.发现者,将RP置为-1.
[条件:提取中英混排字串] 判断中英混杂的混杂度,取隔断次数,和字串的总长度比较,得出粗略的值.或者用密度检测,或者隔断次数对比总中文数.
[条件:提取中文字串] 判断各字串中文的生僻度,生僻字成分过多的,应该是乱码冒充的中文;设置中增加连续生僻字(密度)考核选项,凡是密度过大的也-1.
[条件:要求字串后必须有00项] 此项平时做隐含规则,有00的加rp分.如果实行此条件,凡是没有00的一律-1对待.
[条件:扩展坏词辞典] 将进行完全匹配和模糊匹配度检查,剔除坏词,完全匹配的词,将RP置为-1.
[条件:进行人品测试] 经历若干次判断,取出RP度,进行筛选.
在任一项里面发现rp已经是-1 的项目,不再进行其余的检测.
每项测试,满分1分,然后根据人品点数/总测试次数,得出总RP值,采用百分制.
根据程序选项里面的设置,来启动对应的条件模块,
条件模块施行判断,先根据每项目的特征,判断是否要打分,打分后,增加测试次数1.
字串提取完毕,得到yourfile_str.txt和yourfile_str_rpwt.txt两个文件,如果点击跳转按钮,则将youfile_str.txt在转码界面打开,并将焦点转向转码界面.
追加免检好词辞典;对于”新建”/”确定”之类的词可以忽略掉长度限制,给与放行,这项在提取时候就作.
跳转的按钮做成类似Photoshop里面那个纽,在转码界面,简化了内码只进行字形的选择,转码也提供VL的或者MU的样子,允许缩短/补空格.不过因为是自家转码貌似不需要;在回写才使用这个特性.