还在修复中
起因
最近打算重温一下Yuzu模拟器上的《月姬Remake》,于是更新了下Yuzu的版本然后打开了游戏,然后发现画面严重不正常:
通过B站汉化介绍视频,我们可以知道需要使用一个旧版的模拟器来进行运行。利用二分法,我发现了实际上错误出现在了Yuzu的1444版本,而在1443版本中显示较为正常。
同时对另一份英文翻译补丁进行了下载,同时安装在了新版模拟器上,显示较为正常。
也就是说,问题出现在这个汉化补丁之中。正好春节期间有点时间,研究一下到底是怎么一回事同时尝试对其进行修复。
简单分析
根据对1444版本引入的代码改动,判断问题大概率出现在这一处改动之中。这里对level=0
的情况进行了额外的处理。
接下来,我们需要探究为什么英文补丁可以正确显示,而中文补丁则显示较为不正常。为此,我们需要一个満月工具来对汉化文件和英文化文件进行反编译处理,来观察其具体区别。
推测与发现
重新运行游戏后进行观察,我们发现问题很可能出现在UI上;与此同时,发现了模拟器上一个Issue。
我们对allui
进行解包,利用ChatGPT写出解包脚本:
#!/bin/bash
# 循环起始和结束的数字
start_num=0
end_num=27
# 指定要处理的目录的相对路径
input_directory="./allui/"
# 指定输出文件的目录
output_directory="./output/"
# 创建输出文件夹(如果不存在)
mkdir -p "$output_directory"
# 循环指定次数
for (( i=$start_num; i<=$end_num; i++ )); do
# 使用printf格式化输入文件名,"%s%08d%s" 表示前缀、8位数字、后缀
input_file="${input_directory}allui.$(printf "%08d" "$i").dat"
# 使用printf格式化输出文件名,"%s%08d%s" 表示前缀、8位数字、后缀
output_file="${output_directory}allui.$(printf "%08d" "$i").bntx"
# 检查输入文件是否存在
if [ -f "$input_file" ]; then
# 输出当前处理的文件
echo "Processing $input_file..."
# 调用程序进行处理
mangetsu/build/nxx_decompress "$input_file" "$output_file"
# 输出处理完成的消息
echo "Output file generated: $output_file"
else
echo "Input file $input_file not found."
fi
done
返回值如下:
Processing ./allui/allui.00000000.dat...
Output file generated: ./output/allui.00000000.bntx
Processing ./allui/allui.00000001.dat...
Output file generated: ./output/allui.00000001.bntx
Processing ./allui/allui.00000002.dat...
Output file generated: ./output/allui.00000002.bntx
Processing ./allui/allui.00000003.dat...
Output file generated: ./output/allui.00000003.bntx
Processing ./allui/allui.00000004.dat...
Output file generated: ./output/allui.00000004.bntx
Processing ./allui/allui.00000005.dat...
Output file generated: ./output/allui.00000005.bntx
Processing ./allui/allui.00000006.dat...
Output file generated: ./output/allui.00000006.bntx
Processing ./allui/allui.00000007.dat...
Output file generated: ./output/allui.00000007.bntx
Processing ./allui/allui.00000008.dat...
Output file generated: ./output/allui.00000008.bntx
Processing ./allui/allui.00000009.dat...
Output file generated: ./output/allui.00000009.bntx
Processing ./allui/allui.00000010.dat...
Output file generated: ./output/allui.00000010.bntx
Processing ./allui/allui.00000011.dat...
Output file generated: ./output/allui.00000011.bntx
Processing ./allui/allui.00000012.dat...
Output file generated: ./output/allui.00000012.bntx
Processing ./allui/allui.00000013.dat...
Output file generated: ./output/allui.00000013.bntx
Processing ./allui/allui.00000014.dat...
Output file generated: ./output/allui.00000014.bntx
Processing ./allui/allui.00000015.dat...
Output file generated: ./output/allui.00000015.bntx
Processing ./allui/allui.00000016.dat...
Output file generated: ./output/allui.00000016.bntx
Processing ./allui/allui.00000017.dat...
Output file generated: ./output/allui.00000017.bntx
Processing ./allui/allui.00000018.dat...
Output file generated: ./output/allui.00000018.bntx
Processing ./allui/allui.00000019.dat...
Output file generated: ./output/allui.00000019.bntx
Processing ./allui/allui.00000020.dat...
Output file generated: ./output/allui.00000020.bntx
Processing ./allui/allui.00000021.dat...
Output file generated: ./output/allui.00000021.bntx
Processing ./allui/allui.00000022.dat...
Output file generated: ./output/allui.00000022.bntx
Processing ./allui/allui.00000023.dat...
Output file generated: ./output/allui.00000023.bntx
Processing ./allui/allui.00000024.dat...
Invalid file magic
Failed to decompress
Output file generated: ./output/allui.00000024.bntx
Processing ./allui/allui.00000025.dat...
Invalid file magic
Failed to decompress
Output file generated: ./output/allui.00000025.bntx
Processing ./allui/allui.00000026.dat...
Output file generated: ./output/allui.00000026.bntx
Processing ./allui/allui.00000027.dat...
Output file generated: ./output/allui.00000027.bntx
Comments NOTHING