下载说明:
- 部分资源会被浏览器识别为有害程序拦截下载,取消拦截的方法参见 FAQ。
- 存档类下载后解压缩到游戏安装路径下相关文件夹,覆盖同名文件即可!安全起见我们建议您备份原文件。
- 免CD/DVD补丁类如果无特别使用说明,下载后解压缩到游戏安装目录下运行即可。
- 本站资源全部采用 WinRAR v5.0 版压缩,下载后不能解压请安装 WinRAR v5.0+。
- 本站下载不保证完全兼容手机端,部分浏览器(手机端、360等)可能无法正常下载本站资源。
- 文件安全性评估仅供参考,2DFan无法承担您因依赖此报告结果,使用此文件所可能导致的各种形式的损害。
- 如需投诉补丁未授权转载问题,请先阅读 相关说明 后,至 站务小组 开贴投诉。
发一下解包封包和编码解决问题的心得方便下次复刻用……
工具EscudeEditor和EsuBinE
EscudeEditor解bin包,解了后里面的文件(.001)用EsuBinE
解决编码问题:
exe反汇编把80改86,如80 C6 44 24改86 C6 44 24兼容GBK
exe同名文件解包,
lib\string.c
把
if(use_sjis){
for(i = 0xa1; i <= 0xdf; i++){ ctype_table[i] |= C_KANA; }
for(i = 0x81; i <= 0x9f; i++){ ctype_table[i] |= C_KANJI; }
for(i = 0xe0; i <= 0xfc; i++){ ctype_table[i] |= C_KANJI; }
改成
if(use_sjis){
for(i = 0xa1; i <= 0xfe; i++){ ctype_table[i] |= C_KANA; }
for(i = 0x81; i <= 0xfe; i++){ ctype_table[i] |= C_KANJI; }
for(i = 0xe0; i <= 0xfe; i++){ ctype_table[i] |= C_KANJI; }
misc\text.c
把
void init_default_font(int font_id, int weight)
{
default_font_id = font_id;
default_font_weight = weight;
ini_gets("Font", "Face", "", user_font_name, sizeof(user_font_name), NULL);
if(user_font_name[0] != '\0'){
default_font_id = FT_USER;
default_font_weight = 400;
if(ini_geti("Font", "Bold", 0, NULL)){
default_font_weight = 700;
}
}
}
改成
void init_default_font(int font_id, int weight)
{
default_font_id = FT_USER;
default_font_weight = 400;
strcpy(user_font_name,"SimHei");
兼容字体
以下几处:
if(mes->font_type == FT_GOTHIC){
strcpy(text_font.name, "MS Gothic");
}else if(mes->font_type == FT_MINCHO){
strcpy(text_font.name, "MS Mincho");
====
if(mes->ruby_type == FT_GOTHIC){
strcpy(ruby_font.name, "MS Gothic");
}else if(mes->ruby_type == FT_MINCHO){
strcpy(ruby_font.name, "MS Mincho");
}else if(mes->ruby_type == FT_USER){
strcpy(ruby_font.name, user_font_name);
}
两个字体要改成SimHei等兼容字体
把
case LANG_JP:
if(is_ctype(c0, C_KANJI)){
sjis_to_jis(&c0, &c1);
c0 -= 0x20;
c1 -= 0x20;
if((c0 == 0) || (c0 >= 0x5f)){ return; }
if((c1 == 0) || (c1 >= 0x5f)){ return; }
wide_char = true;
}
改成
case LANG_JP:
if(is_ctype(c0, C_KANJI)){
sjis_to_jis(&c0, &c1);
c0 -= 0x80;
c1 -= 0x40;
if((c0 == 0) || (c0 >= 0x5f)){ return; }
if((c1 == 0) || (c1 >= 0x5f)){ return; }
wide_char = true;
}
解决映射
这块:
if(!strcmp(tag.attrib[i], "src")){
sprintf(file, "gfx\\%s", tag.value[i]);
n = strlen(file);
如果要与日文原版共存需要改名"gfx_chs\\%s"
global.h
与日文原版共存才需要修改:
#define DIR_DATA "data\\"
#define DIR_SCRIPT "script\\"
#define DIR_CHART "gfx\\chart\\"
#define DIR_SYS "gfx\\sys\\"
#define DIR_MOT "gfx\\mot\\"
#define DIR_BG "bg\\"
#define DIR_EV "ev\\"
#define DIR_ST "st\\"
#define DIR_ETC "etc\\"
#define DIR_FACE "gfx\\face\\"
#define DIR_FONT "gfx\\font\\"
#define DIR_THUMBS "gfx\\thumbs\\"
改成(_chs自行命名)
#define DIR_DATA "data_chs\\"
#define DIR_SCRIPT "script_chs\\"
#define DIR_CHART "gfx_chs\\chart\\"
#define DIR_SYS "gfx_chs\\sys\\"
#define DIR_MOT "gfx_chs\\mot\\"
#define DIR_BG "bg\\"
#define DIR_EV "ev\\"
#define DIR_ST "st_chs\\"
#define DIR_ETC "etc\\"
#define DIR_FACE "gfx_chs\\face\\"
#define DIR_FONT "gfx_chs\\font\\"
#define DIR_THUMBS "gfx_chs\\thumbs\\"
scripts脚本文件提取用EsuBinE_ORG, 然后用SExtractor
01_search=^\%\%.+?\%\%\|(.+)$
txt模式,932
然后人名等其他乱码编码的解决方式,用EscudeEditor解包data.bin,然后用SExtractor提取。
BIN引擎,译文长度截断开启,编码对BIN生效开启,编码选932转gbk
正则使用
00_skip=^[\S\s]{0,3}$
10_search=^([\x81-\xFC][\S\s]+)$
ignoreDecodeError=1
separate=(\x00|\x20)
不过这样会遗漏掉个别“单字符”名词,所以可以先用EsuBinL解包看看里面都有什么文字,然后使用
00_skip=^[a-zA-Z0-9\s]{1,3}$
10_search=^([\x81-\xFC][\S\s]+)$
ignoreDecodeError=1
separate=(\x00|\x20)
来在一堆乱码里找单字符名词。
然后使用EscudeEditor和EsuBinE分别封包就完事了。
大佬请问下,load_file:Failed to open the file.file:''bg\0\bg_black.lsf''这个是什么毛病啊,游戏打不开
🤔我不到啊, 我和几个小伙伴都没有遇到这个问题。日文版打的开吗?