Skip to content

Galgame 汉化

约 1540 个字 19 行代码 预计阅读时间 8 分钟

解包

免责声明

解包实际上是侵权行为,本人仅仅出于学习目的写下该笔记

根据游戏引擎的不同,galgame厂商会将游戏打包成不同的特殊格式(常见的有.dat,.arc,.xp3等)

KRKR2

解包用工具:

  • Xp3Viewer (2016以前)
  • krkrextract (2016以后)

以 krkrextract 为例

从 github 上下载 krkrextract 4.0 版本(https://github.com/xmoezzz/KrkrExtract/releases/tag/4.0.1.5)

将下载后的 exe 文件及 dll 文件复制到希望解包的 KRKR2 游戏根目录下,将游戏启动可执行文件拖到 KrkrExtract.exe 上,会弹出一个窗口,如果希望解包得到 CG 的话,一般选择 event.xp3 ,拖动到该窗口上并选择 PNG 格式解包

KRKR 引擎的文本一般位于 scn.xp3 内,如果你没找到该资源文件,那它其实是被整合在 data.xp3 文件内了,里面可能是以 .ks.scn 结尾的脚本文件

其它

https://blog.ztjal.info/acg/acg-data/some-galgame-unpack-tools-website

这是一个热衷于解包的大佬搞的网站,该页面包含相当多的解包用工具,供查阅使用

一些解包或是汉化常用的工具:

汉化

仔细阅读说明,即可了解如何使用

あきゆめくくる

第一个果然还是拿 KRKR 引擎的来试试手

首先使用 GARbro 提取出 data.xp3 内的 scn 文件夹,里面都是命名为 00_prologue_01.txt.scn 的文件

此时可以先用 Freemote 来对 .scn 进行解封:

(在把 Freemote 目录添加进环境的条件下) 在该文件的根目录使用命令 PsbDecompile 00_prologue_01.txt.scn ,提取出俩个 json 文件,只需要看第一个即可(不带 .resx 的)

打开提取出的 json 文件并往下翻翻,可以找到 texts 部分,图中我已经把第一句话手动翻译了一下,用作查看汉化能否成功的尝试

freemote尝试.png

修改完后,使用 PsBuild .\00_prologue_01.txt.json 封包,并将输出文件重命名为原来的 00_prologue_01.txt.scn

在游戏根目录新建文件夹 ProjectDir ,将改好的文件放入里面,使用 krkrextract 打开游戏本体,点击 Make Universal Patch 按钮,它会为我们生成一个名为 あきゆめくくる_Patch.exe 的程序,此时直接运行并查看文本第一句话是否修改成功:

汉化第一句.png

看到成功后,即可尝试用 Sakura 大模型以及 Galtransl 来进行机翻汉化了

下载 VNTranslationTools 后,可以打开 Galtransl 中 usefultools 内的 GalTransl_DumpInjector 的 GUI 页面,进行批量提取和格式化文本:

VNTT.png

提取后的 json 文件基本格式如下:

  {
    "name": "ちはや",
    "message": "「それは何? アニメとかにそういうキャラがいるの?」"
  },
  {
    "name": "柚月",
    "message": "「違うの。\r\n 光人間は私の妄想なの」"
  },
  {
    "message": "ズシン、と腹の底にオモリを乗せられた気がした。"
  },
  {
    "name": "柚月",
    "message": "「光人間になって宇宙を駆け巡れるなら\r\n 誰にも迷惑をかけずに生きていけるかもしれないの。\r\n だけどそんなの無理だから」"
  },
  {
    "name": "ちはや",
    "message": "「迷惑をかけたりかけられたりして生きていく、\r\n って選択肢はないの?」"
  },

启动 Sakura 的本地部署,打开 Galtransl 并按照教程将正确结构的文件夹置入,即可开始翻译:

galtransl翻译.png

全部翻译完后可以简单看下翻译效果,再据此修改一下译后字典。

再次使用 GalTransl_DumpInjector 将译后的 json 文件转换回 scn 文件,直接全选用 GARBro 打包为 patch.xp3 ,放在根目录下,基本的汉化工作就完成了。

不幸的是,由于日文字体问题,很多时候会遇到文本时粗时细的情况

文本粗细不一.png

因此寄希望于替换字体,经发现,使用 krkrextract 进行一次 Make Universal Patch 后,再打开就没有这个问题了,但是怎么制作补丁文件暂时还没有搞懂

不过这游戏也可以在上面菜单更换字体,也无所谓啦

Ambitious Mission FD2

用的是 krkrz 引擎,但是不能用 krkrextract 或者 garbro 很方便拆出 scn 文件,只能用 krkrdump 或者 krkrzextract ,通过过一遍游戏来获取文本

尝试修改第一句话再封包回去,创建 ProjectDir 文件夹并放入修改后 scn ,使用 krkrextract 制作 Universal Patch 。不过制作出来的 exe 并不能运行, krkrextract 大抵是不行的

arcusmaximus/KirikiriTools 这个仓库里看到一个很方便的动态链接库 version.dll ,只要创建一个名为 unencrypted 的文件夹同样可以达到免封包的效果,遂采用

但是制作汉化补丁最好还是要封包的,可以使用 Enigma Virtual Box ,选择 unencrypted , version.dll , ambitious mission after2.exe 进行封装,生成一个新 exe 文件

这时还不能直接运行,要复制一份原 exe 程序对应的 sig 文件并将其改名为你的新 exe 文件对应的 sig 文件,这时就可以运行了

D.C.4 Sweet Harmony

Garbro 提取的 scn 貌似有解密错误,但是可以用 krkrextract 解包

正常解包翻译封回 scn 文件后,使用 Garbro 封包并命名为 patch.xp3 ,并把 krkrtools 提供的 version.dll 复制进根目录就可以看到汉化成功了

MinDeaD BlooD 输血箱

黑C的老游戏,文本的 .spt 文件就漏在外面,可以使用 VNTextTool 解包然后翻译即可

封包回去时记得按照仓库里写的使用 shiftjis 替换模式,用 hook 替换字符

転性魔王さまは勇者に勝てない!

SoftPal的工具 github 上有很多,但是这个 exe 改编码有点看不懂了。看别人补丁是用 dll hook的,有时间研究下。

去除区域认证

可以使用OD或者x64dbg改,不过x64dbg需要先使用LordPE去除redirect后再改(勾选重定向已分离)

OD(可能需要全英文路径,否则可能进不到断点就直接退出):使用OD打开 exe 后,F9运行程序至进入主模块,在CPU窗口中Ctrl+N(或右键->查找->当前模块中的名称),查找GetSystemDefaultLangID,查找函数参考,双击跳转至函数调用处

然后直接返回0x411(将call调用改为mov eax, 411

更改完后在CPU窗口右键->复制到可执行文件->所有修改,之后保存文件即可

我还没遇到这种情况,因此先从别人那里copy下来,之后再改

Comments: