[Gal汉化入门]#6 SiglusEngine汉化教程
Dir-A
2021年09月23日 22:53

[Gal汉化入门]#6 SiglusEngine汉化教程

#0x0 辨别引擎

Siglus这玩意还挺好认的,一般游戏的启动程序名称就是叫做 SiglusEngine.exe 目录下有 Scene.pck Gameexe.dat 这两个文件,以及一堆文件夹

#0x1 引擎特点

这个引擎主要是采用了UTF8编码,所以可以直接实现中文的显示。 Gameexe.dat 为游戏配置文件所在文件夹,里面配置了一些标题这类的信息 Scene.pck 为游戏剧本所在文件,具体游戏内的文字一般都在里面

其余的一堆文件夹,按名称即可知道作用,基本都是一些图片音频视频之类的资源 SiglusEngine的图片一般为g00后缀,音频可能为ogg,wav或nwa之类的 当然Siglus也是支持jpg png bmp的,一般比较少见就是了。 视频一般在mov文件夹内,可能为mp4或wmv,一般调用 Windows Media Player播放 也就是说 Windows Media Player 支持什么格式一般就能放什么格式,当然主要和编码有关

如果有带字体文件一般在 dat 目录下,一般为.ttf字体,在Gameexe.dat中配置。

游戏存到一般储存在游戏目录下的 savedata 文件夹内,其中可包含CD验证文件

有些游戏安装完后,exe同目录可能会有一个 reg.ini 文件,请删除,一般无用

有些游戏安装完后并没有这些资源文件,请把exe移到和资源文件一个文件夹内。

有些游戏可能没有 Scene.pck 文件,一般是因为打包进exe里了,建议下载PKG版

#0x2 解包 Scene.pck

Scene.pck 里面封装了 .ss 文件 .ss 文件就是Siglus的剧本文件 首先我们需要下载 SiglusExtract  https://github.com/xmoeproject/SiglusExtract 下载完成后把 SiglusExtract.dll,SiglusExtract.exe 放入游戏目录。

接着把 SiglusEngine.exe 拖到 SiglusExtract 上运行即可。

接着我们把 Scene.pck 拖到打开的 SiglusExtract 界面上即可解包| 并得到一个 __Unpack__ 里面是 Scene 文件夹 内含 .ss .txt 文件

有.txt 文件是因为 SiglusExtract 默认勾选了 Has Encryption 把 .ss 内的文本解析出来了。

注意,请勿更改文件名

#0x3 修改 .ss 文件

修改 .ss 文件,我们需要用到 ScriptRepacker.exe https://github.com/xmoeproject/SiglusExtract/blob/master/tools/ScriptRepacker.exe 下载完成后我们把要修改的 .ss 文件和对应的.txt 文件移动到和其同一目录

接着修改 .txt 内的文字

修改完成后,选中 .ss .txt 文件 拖到 ScriptRepacker.exe 上

有些时候可能会失败,多拉几次即可。 成功的话,会生成 .ss.out 文件

这个就是新的 .ss 文件,现在把 .out 后缀去掉,以及.txt 丢回原来解包出的 Scene 目录下覆盖。

#0x4 封包Scene.pck

现在 .ss 文件已经修改完成,我们需要生产新的 Scene.pck 文件 打开 SiglusExtract 点击 Repack Scene.pck 那一栏的 Select Folder 接着在弹出的框内选择 Scene 文件夹

选择好之后,点击 Go Pack 等待进度条走完 并提示成功 即可在 游戏目录下看到 Scene.pck.new 文件了

接着关闭游戏 把旧的 Scene.pck 移走,把 Scene.pck.new 重新命名为 Scene.pck 然后运行游戏 如果弹出

那说明你区域和DVD验证没过,可以看我之前的视频。

#0x5 解包 Gameexe.dat 

和Scene.pck是一样的,直接拉到那个框框上就行了 然后在_Unpack_------Gameexe目录下就会有

里面有些游戏标题,字体装载之类的选项

#0x6 封回 Gameexe.dat

选在 SiglusExtract Repack Gameexe.dat那个框内的 Select File

然后找到 Gameexe.txt 打开就行

成功的话会提示你

这时候游戏目录下就会多出来一个 Gameexe.new.dat 同理,旧的移走,新的去掉 .new 即可

#0x7 G00图片处理

其实这引擎也并不是一定要封成G00的 不过SiglusExtract提供了这个封装的工具,那就用吧 因为修改成别的格式,有些细节还要说明,这个比较麻烦,就算了。

先把这里面的东西都下载下来  https://github.com/xmoeproject/SiglusExtract/tree/master/tools/vaconv

然后新建一个 叫 scr 的文件夹 东西都丢进去

然后回到上一级目录,新建一个 repack.txt 文件 打开输入 for %%s in (*.png) do .\scr\vaconv.exe -f G00 "%%s&#​34; 然后保存,重新命名为 repack.bat

同理 unpack 也一样 里面的内容变成 for %%s in (*.g00) do .\scr\vaconv.exe -f PNG "%%s&#​34;

这时候你把g00的图片放在这个目录下,点击 unpack 就可以解出png了 修改好后,点击 repack 就能封回前,注意这里是直接覆盖原来的g00文件

G00的图,你可以用Garbro预览

#0x8 需要解决的问题

既然文本已经合进去了,现在需要解决几个问题

区域和DVD验证,这个说过了,可以翻看之前的视频。

Siglus一般第一次启动会要求你选择字体,可选字体默认只有日文的 不选的话,会造成游戏无字幕的问题 所以我们需要修改让其显示中文

显示中文的时候,会出现,叠字的情况,这个也需要修复

还有图片修改的问题,xxx.g00 我们修改完后直接放回去会覆盖原来的图 为了实现不覆盖,我们一般会修改程序,让它优先读取 xxx.g01 然后才是 xxx.g00

Scene.pck 也是一样,我们修改成 Scene.cn 之类的,让它不覆盖 Gameexe.dat 同理

对于上述的情况,我们分两种方法进行解决 SIglusUniversalPatch 手动修改exe

#0x9 SIglusUniversalPatch

首先,需要启用 UniversalPatch 我们需要打开SiglusExtract 然后点击 Mark Universal Patch

这个时候游戏目录下就会多出来两个文件 SiglusUniversalPatch.dll SiglusEngine_Patch.exe 以后如果要启用Universal补丁就要点击 SiglusEngine_Patch.exe 启动游戏 而不是 SiglusEngine.exe

  • Universal Patch的功能

你可以在 https://github.com/xmoeproject/SiglusExtract 看到

这里就简单说一下

解锁区域和DVD验证 解锁中文字体选择 修正中文显示间距 优先读取G01图片替换G00 优先读取Scene.pck2替换Scene.pck 优先读取Gameexe.dat2替换Gameexe.dat

具体可以看 https://github.com/xmoeproject/SiglusExtract/blob/master/source/SiglusExtract/SiglusUniversalPatch/SiglusCfg.json

#0x10 手动处理

这里就贴一下,我之前写过的文章(稍有修改 具体操作可以到视频里来看

先准备一下工具和游戏: WinHex x64dbg 游戏 PKG版镜像 0x-1[目标] 我们的目标当然是中日文共存啦 我的话,比较喜欢单个exe 直接复制到原本游戏下就可以跑。 0x0[得到游戏] 我们直接用解压软件打开镜像,提取其中的SetupData\GameData文件夹 因为siglusEngine的引擎一般是不用安装的,也不去写有的没的注册表。

0x1[过区域验证]

0x2[过CD验证]

0x4[剧本文件共存] 我们先来让Scene.pck Gameexe.dat能够与原来的文件共存 这个好办,我们直接改掉这个文件的名字或者后缀就ok了。 我们打开winhex,用Unicode编码搜索一番

有两个结果,我们改第一个就好了,第二个是错误提示信息。 我改成了Scene.dir,至于Gameexe.dat有好几个,如果想改可以自己一个个试

0x5[修复间距和字体选择] 修复间距很简单,还是winhex, Unicode搜索,Japanese,改成Chinese 多出来的一个字符填充0(注意是十六进制0不是写0 然后是修复字体选择问题。 我们先把存档删了,这样打开游戏就会蹦出来个字体选择框,方便我们下断点。 载入x64dbg,我们来给EnumFontFamiliesExW下个断点 来到返回处,往下翻,可以看到一个cmp,那个80改成86,这样就可以选择中文字体了。

0x6[修改g00图片读取] 首先我们需要了解一个小知识,siglus引擎读取文件,会先看文件名,然后看后缀,比如他要读取一个 abcd.g00的图 先查文件名abcd,然后查后缀g00,他一查,没g00后缀的,于是苦逼又去查jpg,还是没有, 又查png,又没有,然后弹出个框说,我™找不到这文件。

一般有这几种后缀 g00 jpg png bmp dds 我们的设想是,更改第一个读取的g00为ggg,dds这个格式一般没有,我们就改成g00 然后汉化的图片后缀改为ggg 这样就会优先读取汉化的图片,找不到ggg后缀的引擎就会去找g00后缀的, 这样cg文件之类的也能正常读取了 想法很好,但是有个问题,g00这个对应的push地址字符串为g00,这个是后缀同时也是g00文件夹的名称。 这样一改,文件夹他读取不到了,比如你改成ggg,这样他要读ggg文件夹里面的ggg后缀图片 显然没ggg这个文件夹 那么怎么办呢? 我们可以对调dds和g00的push地址,然后修改dds字符串为ggg

这样就实现了优先读取ggg后缀,然后读取g00后缀。

我们可以观察到mov ebx的值其实是对应读取顺序的。 我们可以把dds的mov ebx,0x5改成0x1让他仅次于ggg的读取顺序。

修改好之后,我们把汉化的图片文件后缀改成ggg放入游戏的g00目录下。

0x7 [修改视频读取] 我们先把汉化补丁里的mov文件夹删点东西 除了op1.wmv,op2.wmv,oras.wmv 其它文件都删了,因为那些文件都没修改过,就是原游戏的文件。 这几个是文件是带字幕的op,我们来想办法让他共存

首先siglus引擎还有是这个上面图片一样的逻辑的 还是先读文件名,然后查后缀 由于这个引擎默认调用Windows Media播放视频 那么wmv mp4都可以放,我们直接把后缀改成mp4算了 然后把之前修改的exe拉进winhex搜索wmv Unicode编码搜。

我们现在可以把wmv改成mp4,然后把最后的avi改成wmv或者mpg改成wmv也行, 毕竟这两个后缀的文件这个游戏都没有。

大功告成,如果你想更简洁的话,可以打个包。