我是基于Kimi moonshot-v1-8k实现的AI助手,在此博客上负责整理和概括文章
本文为KrKr引擎游戏解包封包方法的补充教程。主要内容包括: 1. 《恋愛、はじめまして》游戏解包方法: - 使用KrkrExtract.exe或GarBro解包,需注意环境设置。 - 通过Make Universal Patch和新建ProjectDir实现免封包读取。 - 使用winhex修改游戏exe实现直接读取data文件夹。 - 制作补丁时需配合Xp3Pack.exe和version.dll。 - 游戏需在中文环境下打开以正常显示中文。 2. 《見上げた空におちていく》游戏解包方法: - 需要在中文环境下打开exe以避免乱码。 - 对文本文件进行编码转换为UTF-16 LE with BOM。 - 将修改后的文件打包为patch2.xp3。 3. 字体修改方法: - 使用winhex修改exe实现字体修改。 - 使用krkrfont.exe制作预渲染字体文件。 - 修改first.ks和HistoryLayer.tjs文件以应用新字体。 - 将修改后的文件打包为patch。 本教程提供了详细的步骤和注意事项,适用于KrKr引擎游戏的汉化和修改。
编辑记录
2025-03-05 11:05:00 第一次编辑
- 正文
# 简介
本文章为对 KrKr 引擎 游戏的解包封包的一些方法的对于 (二) 的补充。
# 教程
# 示例一
以游戏《恋愛、はじめまして》为例介绍解包方法。
- 直接使用 KrkrExtract.exe、KrkrExtract.dll 进行解包,拖入游戏时会报错:"access violation : the thread attempts to read from or write to a virtual address for which it does not have access"。解决方法是:把 KrkrExtract.dll 重命名为 wuvorbis.dll 就能解决,之后能正常解包。
- 或者使用 GarBro 解包,密钥选择:"Kari Gurashi Ren'ai",也能解包成功。
- 对于该游戏,可以使用 KrkrExtract 进行
Make Universal Patch
得到_patch.exe
文件,然后新建文件夹ProjectDir
用于存放修改的文件,即可实现免封包读取。不过要保留 KrkrExtract.db 和 KrkrUniversalPatch.dll,另外两个 KrkrExtract.exe 和 wuvorbis.dll 删去即可。 - 还可使用 winhex 修改 游戏 exe 的 forcedataxp3 相关值为 0(这里已经为 0 不用修改),之后则可直接新建 data 文件夹存放 data.xp3 解包的 data 文件夹里的文件,可以修改里面的文件,不过会优先读取 data.xp3 所以需要移出去,才能读取 data 文件夹。
- 本游戏不能用 Xp3Viewer 解封包,不会弹出那个窗口,但有一个方便的方法制作补丁,工具,下载 Xp3Pack.exe 和 version.dll ,把 version.dll 放在游戏目录下(其实对该游戏可以不放),作用是令读取加密 xp3 包的游戏去读取未加密的包。然后 xp3packer 就是个封未加密的包的工具,与 version.dll 配合使用。 只需要把修改的文件放到一个 patch 的文件夹,然后拖到 Xp3Pack.exe* 就可打包为 xp3 文件,如果游戏中已经有 patch.xp3,则命名为 patch2.xp3,以此类推。对于原本的文件例如 data.xp3,patch.xp3 不用处理。 该工具里的 KirikiriDescrambler.exe 是用于解密加密的脚本的。
- 对于该游戏,需要在中文环境下打开,才能显示出中文汉字,如果在日文区域打开,如果是 shiftjis 不支持的汉字,会变成点。之前我的系统由于配置了日文区域和环境,导致一直解决不了变成点的问题。
# 示例二
以游戏《見上げた空におちていく》为例。
- 之前遇到的字体一粗一浅,winhex 修改编码无效,原来就是因为环境问题,需要在中文环境下打开 exe 才能成功。然后直接打开该游戏,原来的日文字符会乱码。需要中文环境下转日区运行,才能正常显示日文,而中文字体也正常。
- 要想直接打开不乱码,需要对各种文本文件进行转换编码。脚本的中文汉字之所以能正常显示,就是因为在汉化打包回 ks 文件时编码已经变成了 UTF-16 LE with BOM。所以,需要对游戏内所有文本文件,后缀例如:.tjs,.ks,.scn,.csv,.txt,.ini,.func,.asd,.sinfo,.stand,找到这些文件,拖入 EmEditor ,注意,需要在 EmEditor 正确识别编码的情况下,再统一进行编码转换为 UTF-16 LE with Bom。这里有坑是针对 csv 文件,一般用于立绘,可能会不能正常显示,需要额外处理,对于该游戏没有 csv 文件所以不需要处理,详情参考 Gal 汉化入门 #9 KiriKiri2/Z 脚本编码转换。
- 之后,对于所有需要修改的文件,还是可以都拖到一个 patch2 文件夹(因为目录里有 patch.xp3),然后 Xp3Pack.exe 打包为 patch2.xp3 放在游戏目录即可。游戏就能读取并看到修改的效果。
# 字体的修改
- 首先就是 winhex 修改 exe:搜索 C6431780 把 80 -> 86,8A401A8845D7 -> C645D7869090。然后保存。
- 修改游戏字体。方法为:
-
用 krkrfont.exe 制作 krkr 预渲染 tft 字体,首先电脑要安装想用的字体,再在 krkrfont.exe 里选择该字体(注意还是得中文环境打开)。例如这里选择 “霞骛文楷”,然后选择保存目录,再点击创建。
-
把字体放到 data 文件夹内,确保与 startup.tjs 在同一目录下,然后找到 first.ks 文件,在最初加上例如:
这里生效的只是脚本的字体。[mappfont storage="xw.tft"] //前面保存的字体名词 [font face="rei"] //随便写
- 要是 BackLog 也生效,需要修改文件:
data\system\HistoryLayer.tjs
,找到function HistoryLayer(win, par)
,然后进行下列修改:
这样 History 的字体也会修改。var myfont = 'xw.tft'; //增加的内容
function HistoryLayer(win, par)
{
super.Layer(...);
(HistoryLayer_config incontextof this)(); // configuration
(HistoryLayer_config_override incontextof this)()
if typeof global.HistoryLayer_config_override != "undefined";
name = "メッセージ履歴レイヤ";
setImageSize(parent.width, parent.height);
setSizeToImageSize();
hitType = htMask;
hitThreshold = 1;
/**/font.height = fontHeight-4;
/**/lineHeight = fontHeight-2;
font.bold = fontBold;
if(verticalView)
{
font.angle = 2700;
font.face = '@' + fontName;
font.mapPrerenderedFont(myfont); //增加的内容
}
else
{
font.angle = 0;
font.face = fontName;
font.mapPrerenderedFont(myfont); //增加的内容
}
...
}
-
- 打包的话,就是把字体文件和修改的例如 first.ks 和 HistoryLayer.tjs 都扔到 patch 文件夹里,再 Xp3Pack.exe 打包即可。
# 参考链接
1.krkr 引擎研究记录 | 网页备份