XP3未加密型
演示游戏:
妹妹太爱我了~所以决定和她生个孩子
因为文件编码都是shift-tjs日本地区的编码只要换成Unicode就可以让绝大多数计算机玩得上
这种只需要拿garbro解包提取所有的ks,tjs再拿个EmEditor.exe全部批量转成utf-16le
弄好之后用kirikiritools的XP3PACK封包即可
解包XP3
使用garbro2解包
Github:
https://github.com/UserUnknownFactor/GARbro2/releases/tag/v2.0.0
度盘:
https://pan.baidu.com/s/13lt5u3G_0S938UpUMK96kA 提取码: 75pf
将xp3拖入到打开的窗口
确认,打开

ctrl+A全选,右键提取

其他文件同样的操作
目前这样子
乱码状态


每次如果不想每次玩还要在转区软件弄,这就是本文章的意义和技术价值所在
像日文玩家一样获得流畅舒适的体验
批量改编码
对此写了个python脚本以处理这种文件
如果还有别的文件,请自行修改代码
对比EmEditor.exe只能批量地保存,而这玩意需要读取为SHIFT-JIS
使用前,请备份提取的文件!
使用前,请备份提取的文件!
使用前,请备份提取的文件!
使用前,请备份提取的文件!
使用前,请备份提取的文件!
使用方法
python 程序.py 文件夹路径
javascript
import os
import codecs
import argparse
# 定义要转换的文件扩展名
extensions = ['.tjs', '.ks']
# 源编码和目标编码
source_encoding = 'shift-jis'
target_encoding = 'utf-16-le'
# 解析命令行参数
parser = argparse.ArgumentParser(description='批量转换文件编码从Shift-JIS到带BOM的UTF-16LE')
parser.add_argument('directory', nargs='?', default=os.getcwd(), help='要转换的文件夹路径(默认:当前工作目录)')
args = parser.parse_args()
def convert_file_encoding(file_path):
"""
将单个文件从源编码转换为目标编码(不创建备份)
"""
try:
# 以源编码读取文件内容
with codecs.open(file_path, 'r', encoding=source_encoding) as f:
content = f.read()
# 以目标编码写入文件(带BOM)
# 对于UTF-16-LE,BOM是\xFF\xFE
bom = codecs.BOM_UTF16_LE
with open(file_path, 'wb') as f:
f.write(bom)
f.write(content.encode(target_encoding))
print(f"成功转换: {file_path}")
return True
except Exception as e:
print(f"转换失败: {file_path}")
print(f" 错误信息: {str(e)}")
return False
def main():
# 获取要转换的根目录
root_dir = args.directory
print(f"开始转换文件编码,根目录: {root_dir}")
print(f"源编码: {source_encoding}")
print(f"目标编码: {target_encoding} (带BOM)")
print(f"文件扩展名: {extensions}")
print("=" * 50)
success_count = 0
fail_count = 0
for dirpath, dirnames, filenames in os.walk(root_dir):
for filename in filenames:
# 检查文件扩展名
if any(filename.lower().endswith(ext) for ext in extensions):
file_path = os.path.join(dirpath, filename)
if convert_file_encoding(file_path):
success_count += 1
else:
fail_count += 1
print("=" * 50)
print(f"转换完成!")
print(f"成功转换: {success_count} 个文件")
print(f"转换失败: {fail_count} 个文件")
if __name__ == "__main__":
main()
修改的小细节
存档位置
例如在这个tjs它将储存游戏存档至游戏目录,其中一行它注释掉了
这个就需要你自己去利用chatgpt还有trae快速找找看了
