《月姬Remake》 Switch版本汉化补丁修复

发布于 2024-02-14  819 次阅读


还在修复中

起因

最近打算重温一下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
It is my final heart.
最后更新于 2024-02-16