Skip to main content
Linux下用bottles运行悬疑民俗大作 死月妖花~四月八日 汉化版的方法
  1. Blog/

Linux下用bottles运行悬疑民俗大作 死月妖花~四月八日 汉化版的方法

· loading · loading · ·
IT IT Linux Game

运行原版
#

游戏下载: 死月妖花~四月八日~

安装配置bottles,必须用flatpak版本的,非flatpak安装会无法运行游戏,咱目前不清楚具体原因。

  • flatpak install com.usebottles.bottles
  • flatpak config --set extra-languages ja 与之后配置的LC_ALL环境变量有关
  • flatpak update 会自动安装一些locale相关的包

新建bottles

  • 选择自定义32位架构,运行器选择 soda-7.0
  • 安装cjkfonts 或复制 msgothic.ttc 到环境的 drive_c/windows/Fonts/
  • 环境变量: LC_ALL=ja_JP.UTF-8

image-orignal

汉化安装与配置
#

汉化补丁下载参考该专栏: 死月妖花~四月八日~ AI汉化补丁,先将补丁内文件复制到本体游戏文件夹内。

伪装字体

该汉化补丁通过 StringReloads 劫持游戏的 DSOUND.dll 实现字体替换。折腾过程中发现:

  • Soda 9.0 (32-bit) 环境下,配合 dotnet48 与 quartz,通过配置 dsound (n,b) 可以成功加载汉化补丁并实现字体替换。但由于 quartz 与游戏过场动画存在兼容性问题,导致序章结束时卡死。

  • Soda 7.0 (32-bit) 虽然能绕过卡死,却无法正常加载汉化字体。在尝试注册表替换等多种手段均告失败(表现为加载补丁字体即黑屏)后,发现利用 FontForge 脚本将原版 MS UI Gothic 的元数据注入到补丁字体中就可以正常运行了,下面的代码是gemini帮忙写的。

# by gemini
import fontforge
from fontTools.ttLib import TTCollection

# 1. 打开母本
collection = TTCollection("msgothic.ttc") #https://github.com/FSKiller/Microsoft-Fonts/raw/refs/heads/main/msgothic.ttc
base_font = collection.fonts[1]#MS UI Gothic
base_font.save("MSUIGothic.ttf")
base = fontforge.open("MSUIGothic.ttf")

# 2. 打开字形来源
source = fontforge.open("MSPGothic.otf")

# 2. 劫持基础标识信息
source.fontname = base.fontname
source.fullname = base.fullname
source.familyname = base.familyname
source.version = base.version
source.copyright = base.copyright

# 3. 深度劫持 OS/2 表和头信息
# 拷贝 Ascent/Descent 确保排版一致
source.ascent = base.ascent
source.descent = base.descent
source.upos = base.upos
source.uwidth = base.uwidth

# 4. 劫持所有的 Name Records
source.sfnt_names = base.sfnt_names

source.generate("msgothic_patched.ttf")

base.close()
source.close()

配置 bottles 环境

  • 选择自定义32位架构,运行器选择 soda-7.0
  • msgothic_patched.ttf 字体文件复制到环境的 drive_c/windows/Fonts/
  • 环境变量: LC_ALL=ja_JP.UTF-8

点击 bottles 内的浏览,将包含补丁文件在内的游戏目录移动到 bottle 内的 drive_c/Program Files 下,并添加快捷方式,不出意外应该就可以正常运行了。

image-cjk

因为是通过伪装字体的形式实现的字体替换,建议本bottles环境只运行此游戏就好。

已知可能问题
#

  • 咒杀篇前卡死: 可能是用了较高版本的soda或未正确选择32位环境.

  • 字体中部分乱码: 字体未伪装成功

    image-cjk