设备
- x64 NixOS设备
起因
想在NixOS上推旮旯,但是我系统用得en-us的locale,你这个游戏呢又是ja-jp的locale,虽然你的汉化很好的弥补了这一点,但是用steam proton设置 HOST_LC_ALL=ja_JP.UTF-8 LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8 弹窗报乱码,并且无法启动。用bottles试了也不行,使用AI各种改wine的注册表也是更加头大。随后又尝试了在bottles中运行locale emulator等各种方案,总之,报错和乱码似乎阴魂不散。
正式解决流程
下载资源
到处都可以下载资源,总之一定要找不用locale emulator的,总之我是找到了某某大学的高数教程最后还是能用的。但是不得不吐槽一句,牛魔整个游戏资源藏的比暗网都深,怪不得大家说不会找资源了。
wsl@office ~/a/SBHB> ls
高等数学同济版第218讲.7z
解压
我使用的资源大概需要两个软件合作进行解压,一个是7z(p7zip),另外一个是Paranoia File & Text Encryption,其中后者在Linux上需要Java运行时。
- 下载(Paranoia File & Text Encryption)[] Java版本,Java运行时以及7z。(此处略过)
- 使用指令进行解压,参考如下:
wsl@office ~/a/SBHB> 7z x 高等数学同济版第218讲.7z
7-Zip [64] 17.05 : Copyright (c) 1999-2021 Igor Pavlov : 2017-08-28
p7zip Version 17.05 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,12 CPUs x64)
Scanning the drive for archives:
1 file, 5021136169 bytes (4789 MiB)
Extracting archive: 高等数学同济版第218讲.7z
--
Path = 高等数学同济版第218讲.7z
Type = 7z
Physical Size = 5021136169
Headers Size = 463
Method = LZMA2:25
Solid = +
Blocks = 1
Everything is Ok
Files: 8
Size: 5032428211
Compressed: 5021136169
wsl@office ~/a/SBHB> ls
7.24上午函数的定义域及对应法则(三).mp4 7.27上午分段函数、绝对值函数、函数有界性(一).mp4 7.30上午基本初等函数之指数函数和对数函数(二).mp4 高等数学同济版第218讲.7z
7.24上午集合、幂与对数、解方程(一).mp4 7.30上午基本初等函数之三角函数(三).mp4
7.27上午函数奇偶性、单调性、周期性(二).mp4 7.30上午基本初等函数之常数函数和幂函数(一).mp4 宋浩高等数学直播课回放.mov
wsl@office ~/a/SBHB> wget https://paranoiaworks.mobi/download/files/SSEFilePC.zip
--2026-09-23 17:24:19-- https://paranoiaworks.mobi/download/files/SSEFilePC.zip
Resolving paranoiaworks.mobi (paranoiaworks.mobi)... 176.102.64.64, 46.36.36.153, 46.36.36.152, ...
Connecting to paranoiaworks.mobi (paranoiaworks.mobi)|176.102.64.64|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 18796559 (18M) [application/zip]
Saving to: ‘SSEFilePC.zip’
SSEFilePC.zip 100%[=========================================================================================================================>] 17.93M 3.62MB/s in 4.9s
2026-09-23 17:24:25 (3.62 MB/s) - ‘SSEFilePC.zip’ saved [18796559/18796559]
wsl@office ~/a/SBHB> unzip SSEFilePC.zip
Archive: SSEFilePC.zip
creating: PEC - Standalone Recovery Record App/
inflating: PEC - Standalone Recovery Record App/!START-HERE.txt
inflating: PEC - Standalone Recovery Record App/DESIGN.md
inflating: PEC - Standalone Recovery Record App/LICENSE.txt
inflating: PEC - Standalone Recovery Record App/README.md
inflating: PEC - Standalone Recovery Record App/RECOVERY-FORMAT.html
inflating: PEC - Standalone Recovery Record App/THIRD-PARTY-NOTICES.txt
creating: PEC - Standalone Recovery Record App/linux-arm64/
inflating: PEC - Standalone Recovery Record App/linux-arm64/GUI Version.txt
inflating: PEC - Standalone Recovery Record App/linux-arm64/pec
creating: PEC - Standalone Recovery Record App/linux-x64/
inflating: PEC - Standalone Recovery Record App/linux-x64/GUI Version.txt
inflating: PEC - Standalone Recovery Record App/linux-x64/pec
creating: PEC - Standalone Recovery Record App/macos-universal/
inflating: PEC - Standalone Recovery Record App/macos-universal/GUI Version.txt
inflating: PEC - Standalone Recovery Record App/macos-universal/pec
inflating: PEC - Standalone Recovery Record App/macos-universal/pec-1.1.0.pkg
creating: PEC - Standalone Recovery Record App/windows-arm64/
inflating: PEC - Standalone Recovery Record App/windows-arm64/GUI Version.txt
inflating: PEC - Standalone Recovery Record App/windows-arm64/pec.exe
creating: PEC - Standalone Recovery Record App/windows-x64/
inflating: PEC - Standalone Recovery Record App/windows-x64/pec-gui.exe
inflating: PEC - Standalone Recovery Record App/windows-x64/pec.exe
creating: S.S.E. File Encryptor for PC/
creating: S.S.E. File Encryptor for PC/License/
inflating: S.S.E. File Encryptor for PC/License/LICENSE.txt
inflating: S.S.E. File Encryptor for PC/License/THIRD-PARTY-NOTICES.txt
inflating: S.S.E. File Encryptor for PC/blake3mt.dll
inflating: S.S.E. File Encryptor for PC/jnidispatch.dll
inflating: S.S.E. File Encryptor for PC/libblake3mt.dylib
inflating: S.S.E. File Encryptor for PC/libblake3mt.so
inflating: S.S.E. File Encryptor for PC/libpwncenc.dylib
inflating: S.S.E. File Encryptor for PC/libpwncenc.so
inflating: S.S.E. File Encryptor for PC/libpwsr.dylib
inflating: S.S.E. File Encryptor for PC/libpwsr.so
inflating: S.S.E. File Encryptor for PC/pwncenc.dll
inflating: S.S.E. File Encryptor for PC/pwsr.dll
inflating: S.S.E. File Encryptor for PC/pwsr_model.bin
inflating: S.S.E. File Encryptor for PC/ssefenc.jar
inflating: S.S.E. File Encryptor for PC/ssefencgui.jar
inflating: S.S.E. File Encryptor for PC/~USAGE.txt
wsl@office ~/a/SBHB> ls
7.24上午函数的定义域及对应法则(三).mp4 7.27上午分段函数、绝对值函数、函数有界性(一).mp4 7.30上午基本初等函数之指数函数和对数函数(二).mp4 SSEFilePC.zip
7.24上午集合、幂与对数、解方程(一).mp4 7.30上午基本初等函数之三角函数(三).mp4 'PEC - Standalone Recovery Record App' 宋浩高等数学直播课回放.mov
7.27上午函数奇偶性、单调性、周期性(二).mp4 7.30上午基本初等函数之常数函数和幂函数(一).mp4 'S.S.E. File Encryptor for PC' 高等数学同济版第218讲.7z
wsl@office ~/a/SBHB> cd S.S.E.\ File\ Encryptor\ for\ PC/
wsl@office ~/a/S/S.S.E. File Encryptor for PC> ls
blake3mt.dll libblake3mt.dylib libpwncenc.dylib libpwsr.dylib License pwsr.dll ssefencgui.jar '~USAGE.txt'
jnidispatch.dll libblake3mt.so libpwncenc.so libpwsr.so pwncenc.dll pwsr_model.bin ssefenc.jar
wsl@office ~/a/S/S.S.E. File Encryptor for PC> cd ..
wsl@office ~/a/SBHB> ls
7.24上午函数的定义域及对应法则(三).mp4
7.24上午集合、幂与对数、解方程(一).mp4
7.27上午函数奇偶性、单调性、周期性(二).mp4
7.27上午分段函数、绝对值函数、函数有界性(一).mp4
7.30上午基本初等函数之三角函数(三).mp4
7.30上午基本初等函数之常数函数和幂函数(一).mp4
7.30上午基本初等函数之指数函数和对数函数(二).mp4
'PEC - Standalone Recovery Record App'
'S.S.E. File Encryptor for PC'
SSEFilePC.zip
宋浩高等数学直播课回放.mov
高等数学同济版第218讲.7z
wsl@office ~/a/SBHB> mv 宋浩高等数学直播课回放.mov 宋浩高等数学直播课回放.enc
wsl@office ~/a/SBHB> java -Xmx4g -jar ./S.S.E.\ File\ Encryptor\ for\ PC/ssefenc.jar 宋浩高等数学直播课回放.enc MSYL
S.S.E. File Encryptor for PC - command line [version 17.3.4]
(https://paranoiaworks.mobi)
(C) Paranoia Works 2026
Decrypting (AES-256): 100%
Input File: /home/wsl/apps/SBHB/宋浩高等数学直播课回放.enc
Output Folder: /home/wsl/apps/SBHB/美好的每一天 ~不连续的存在~
Completed: OK
wsl@office ~/a/SBHB> ls
7.24上午函数的定义域及对应法则(三).mp4 'PEC - Standalone Recovery Record App'
7.24上午集合、幂与对数、解方程(一).mp4 'S.S.E. File Encryptor for PC'
7.27上午函数奇偶性、单调性、周期性(二).mp4 SSEFilePC.zip
7.27上午分段函数、绝对值函数、函数有界性(一).mp4 宋浩高等数学直播课回放.enc
7.30上午基本初等函数之三角函数(三).mp4 '美好的每一天 ~不连续的存在~'
7.30上午基本初等函数之常数函数和幂函数(一).mp4 高等数学同济版第218讲.7z
7.30上午基本初等函数之指数函数和对数函数(二).mp4
wsl@office ~/a/SBHB> cd 美好的每一天\ ~不连续的存在~/
wsl@office ~/a/S/美好的每一天 ~不连续的存在~> ls
BGI-CHS.exe data01900.arc data02997.arc data04080.arc
BGIError.txt data01999.arc data02999.arc data04090.arc
BGI.exe data02100.arc data03100.arc data04095.arc
BGI.gdb data02101.arc data03800.arc data05000.arc
BGI.hvl data02910.arc data03810.arc data05010.arc
BGI_patch.exe data02920.arc data03820.arc fcxzzd.arc
'BGI_patch.exe 启动游戏 汉化移植v1.01版本.txt' data02921.arc data04010.arc font.ttf
BHVC.exe data02930.arc data04011.arc README.txt
data01000.arc data02931.arc data04012.arc sysgrp.arc
data01101.arc data02932.arc data04013.arc sysprg.arc
data01102.arc data02933.arc data04020.arc system.arc
data01201.arc data02934.arc data04030.arc Uninstaller.exe
data01301.arc data02940.arc data04035.arc uninst.lst
data01401.arc data02980.arc data04040.arc UserData
data01501.arc data02989.arc data04050.arc 关于步兵.txt
data01601.arc data02990.arc data04060.arc 补丁&附件
data01701.arc data02995.arc data04070.arc
data01801.arc data02996.arc data04075.arc
好了到这一步也是把游戏本体搞出来了。
准备wine环境
- wine版本并无所谓,64位还是32位也无所谓,重点是让程序在中文的locale运行即可。安装wine在不同的发行版下都不一样,因此不贴安装指令了。
- 接下来需要初始化一个wine虚拟系统,指令如下:
这一步会初始化winemono,需要的时间会比较多。wsl@office ~/a/S/美好的每一天 ~不连续的存在~> export WINEPREFIX="$HOME/.local/share/wineprefixes/subahibi" wsl@office ~/a/S/美好的每一天 ~不连续的存在~> mkdir -p "$WINEPREFIX" wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineboot -u # ...省略输出 wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineserver -w - 安装字体文件,不安装字体文件进游戏还是黑框:
wsl@office ~/a/S/美好的每一天 ~不连续的存在~> cp ./font.ttf "$WINEPREFIX/drive_c/windows/Fonts/subahibi.ttf" wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wine reg add \ 'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts' \ /v 'SimHei (TrueType)' \ /t REG_SZ \ /d 'subahibi.ttf' \ /f 00b4:fixme:wineusb:query_id Unhandled ID query type 0x5. reg: The operation completed successfully wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineboot -u # ... 省略输出 wsl@office ~/a/S/美好的每一天 ~不连续的存在~> wineserver -w
启动游戏
很简单,设置locale环境变量就好了。这样就可以正常看到汉化后的内容了。
wsl@office ~/a/S/美好的每一天 ~不连续的存在~> LC_ALL=zh_CN.UTF-8 LANG=zh_CN.UTF-8 wine BGI-CHS.exe
00b4:fixme:wineusb:query_id Unhandled ID query type 0x5.
0124:fixme:heap:RtlSetHeapInformation HEAP_INFORMATION_CLASS 1 not implemented!
0124:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION
0124:fixme:imm:ime_ui_window_proc hwnd 00030070, himc 00010058, msg WM_IME_CONTROL, wparam IMC_CLOSESTATUSWINDOW, lparam 0 stub!
0198:fixme:d3d:state_linepattern_w Setting line patterns is not supported in OpenGL core contexts.
nix化
- 接下来最好玩的,就是把这套配置nix化了,首先在home-manager中增加
wineWow64Packages.stableFull
home.packages = with pkgs;[
wineWow64Packages.stableFull
]
- 接下来增加subahibi.nix,并在home中引入:
{ pkgs, ... }:
let
wine = pkgs.wineWow64Packages.stableFull;
subahibi = pkgs.writeShellApplication {
name = "subahibi";
runtimeInputs = [
wine
pkgs.coreutils
pkgs.gnugrep
];
text = ''
export WINEPREFIX="''${XDG_DATA_HOME:-$HOME/.local/share}/wineprefixes/subahibi"
GAME_DIR="$HOME/apps/美好的每一天 ~不连续的存在~"
GAME_EXE="$GAME_DIR/BGI-CHS.exe"
FONT_SRC="$GAME_DIR/font.ttf"
FONT_DST="$WINEPREFIX/drive_c/windows/Fonts/subahibi.ttf"
if [ ! -f "$GAME_EXE" ]; then
echo "找不到游戏:$GAME_EXE"
exit 1
fi
#
# 创建 Wine prefix
# 注意:这里不使用 zh_CN locale
#
if [ ! -f "$WINEPREFIX/system.reg" ]; then
echo "首次运行:创建 Wine prefix..."
mkdir -p "$WINEPREFIX"
wineboot -u
wineserver -w
echo "Wine prefix 创建完成。"
fi
#
# 检查字体
#
if [ ! -f "$FONT_SRC" ]; then
echo "找不到字体:$FONT_SRC"
exit 1
fi
NEED_FONT=0
if [ ! -f "$FONT_DST" ]; then
NEED_FONT=1
elif ! cmp -s "$FONT_SRC" "$FONT_DST"; then
NEED_FONT=1
fi
if ! wine reg query \
'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts' \
/v 'SimHei (TrueType)' 2>/dev/null |
grep -qi 'subahibi.ttf'
then
NEED_FONT=1
fi
#
# 安装字体
#
if [ "$NEED_FONT" -eq 1 ]; then
echo "安装游戏字体..."
mkdir -p "$WINEPREFIX/drive_c/windows/Fonts"
cp -f "$FONT_SRC" "$FONT_DST"
wine reg add \
'HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts' \
/v 'SimHei (TrueType)' \
/t REG_SZ \
/d 'subahibi.ttf' \
/f
wineboot -u
wineserver -w
echo "字体安装完成。"
fi
#
# 只有游戏使用中文 locale
#
cd "$GAME_DIR"
exec env \
LOCALE_ARCHIVE="${pkgs.glibcLocales}/lib/locale/locale-archive" \
LANG="zh_CN.UTF-8" \
LC_ALL="zh_CN.UTF-8" \
wine BGI-CHS.exe
'';
};
in
{
home.packages = [
wine
subahibi
];
}
引入就不写了,到此为止,就可以在shell中使用 subahibi 命令一键启动素晴日了。
参照与引用
本试验在AI Agent的指导下进行,因此无法总结参考文献。