挂载工具:https://sourceforge.net/projects/imdisk-toolkit/
转区工具: https://github.com/xupefei/Locale-Emulator
生肉食用(科普)指南
前言
当你千辛万苦下载到了一款老游戏或者生肉,开始解压iso点击没有补丁的xxx.exe时,迎接你的将是不启动/一串乱码/报错等情况
我们将时间拉回到十多年前,那个实体光盘发售的年代
当时庞大的游戏数据并不适合通过互联网进行分发,因此游戏开发商通常会将所有代码与资源刻录到 CD-ROM 或 DVD-ROM 光盘中进行售卖。
更重要的是,那个时代的软件开发工程具有极强的地域封闭性
许多日本 PC 游戏开发团队在编写视觉小说与 GalGame 引擎时,默认的运行环境往往是 日文版 Windows,Shift-JIS(CP932)编码,存在物理光驱,DirectX 9 / DirectShow 等旧多媒体框架,宽松的 Windows XP 权限模型
然而现代系统早已发生巨大变化:Unicode 成为主流,光驱被淘汰,Windows 安全机制大幅强化,DirectShow 被逐渐废弃,UAC 与 DEP 默认开启
因此,大量老游戏在现代 Windows 环境中会出现各种兼容性问题。
本部分将从三个方向进行说明:
- 科普
- 教程
- 疑难排查
科普部分
格式
当下载到老游戏时,你经常会看到: .iso .mdf .mds .cue .bin 等文件
很多初学者会直接使用解压软件提取文件并启动游戏。
对于部分已经被汉化组适配过的游戏,这么做可能确实能运行。
但对于大量原版生肉、存在 DRM 校验、或者依赖光盘结构的老游戏而言,直接解压往往会导致安装失败,无法启动,DRM 校验报错,找不到光盘,BGM 丢失,OP 视频异常等问题
ISO 本质上是什么
简单来说,.iso 本质上是一张被完整数字化的光盘。
它保存了文件系统结构,数据排列顺序,光盘目录结构
因此它并不是压缩包
.mdf + .mds 则更接近“完整物理光盘镜像”。
其中.mdf 保存实际数据,mds 保存轨道与光盘结构信息。
既然 .iso 等文件本质上是一张光盘,那么计算机要读取它的内容,自然就需要一台“光驱”。在光驱早已经淘汰的现代电脑上,Windows 操作系统提供了一种被称为虚拟光驱的技术,允许用户将 .iso 这张数字光盘塞进这个虚拟设备中进行读取,称为挂载。
除了使用Windows 自带 ISO 挂载,推荐使用专门的挂载工具imdisk-toolkit 不过ImDisk对部分DRM支持有限,有时需要其他替代方案
为什么要挂载而不是解压
解压缩提取法会破坏原始光盘结构,无法保留部分 DRM 所需信息,部分游戏会因为路径变化无法识别资源,IO 开销更高,部分游戏会检测当前是否为“光驱路径”
挂载相当于让 Windows 认为这真的是一张插入电脑的光盘,因此游戏看到的依然是
D:\E:\这样的“真实光驱早年的经典游戏在进行商业打包时,为了防范盗版并规范安装流程会使用DRM,会进行一系列检查,为避免不必要的麻烦还是挂载进行游玩比较好
转区
当挂载上游戏后点击startup.exe后,迎接你的大概率是一串乱码。
现代 Windows 已全面采用 Unicode,但大量 2000 年前后的日本游戏依然使用Shift-JIS(CP932)和ANSI Win32 API进行文本处理
问题在于中文系统默认的 ANSI 代码页通常是GBK(CP936),因此游戏原本以为输出的是日文字符但中文系统会用GBK来解析它,导致乱码/口人魔/???/程序错乱,甚至可能导致程序异常退出或崩溃
为什么不能依赖系统自带的“更改区域”
网上很多老教程会说“把系统非 Unicode 程序语言改成日语” 这确实能解决一部分问题
但这是全局修改 在某些情况下几乎是种灾难,导致老国产软件乱码,某些工具异常,编码冲突
更致命的是微软在win10加入了一个名为 “Beta 版:使用 Unicode UTF-8 提供全球语言支持” 的选框,一旦勾选,操作系统的非 Unicode 兼容层将强制接管为 UTF-8 模式,这一模式语焉不详极易导致用户勾选顺带出现更多问题
为了在不干扰系统全局前提下,解决单一程序的语言环境需求,历代技术社区开发出了多款区域模拟软件。从早期微软官方昙花一现的 Microsoft AppLocale,到后来开源社区的 NTLEA,这一技术路线不断演进 。而在如今的现代 Windows 环境下,长期以来最稳定的方案,当属 Locale Emulator 这一于Aug 26, 2021发布最后一版Release却仍宝刀未老的转区软件 它通过 Hook Win32 API 的方式,让程序误以为自己运行在日文系统中
而遇到较新的64位gal需选择Locale_Remulator来解决不支持64位和其他问题
教程部分
-
挂载光盘
在使用Iso等格式时,可以直接右键选择挂载,随后会在资源管理器(文件夹)挂载一个虚拟光驱,直接进入即可
也可以下载使用imdisk-toolkit右键光盘文件选择
挂载为ImDisk虚拟光盘对于部分使用 MDS/MDF 的老游戏可以在Imdisk不可用的情况下使用WinCDEmu
-
使用转区环境启动安装程序
首先安装Locale Emulator或者(推荐)Locale_Remulator 到系统中
双击进入这个新挂载的虚拟光盘,寻找启动安装进程的主程序。在业界的命名惯例中,它通常被命名为 Setup.exe 或 Installer.exe,游戏本体的命名通常为该程序的 英文名.exe
请务必使用鼠标右键单击 Setup.exe或者游戏本体,在弹出的系统右键菜单中,寻找带有鲜明橘黄色L图标的“Locale Emulator”选项集合
如果用户使用的是 Windows 11,微软默认折叠了大量传统菜单。用户必须先点击底部的显示更多选项
将鼠标平稳地悬停于该图标之上,在随之展开的次级菜单中,点击
Run in Japanese在日语安装向导中不断点击“次へ(下一步)”或“同意する(我同意)”,直到流程推进至选择游戏安装目标路径的界面。在这里需要注意的是安装路径的字符串中,绝对不能包含任何中文字符、特殊符号甚至是全角空格
这里需要手动检查路径,选择简短的仅由字母构成的路径
很多老游戏使用的是ANSI API 与非 Unicode 文件处理 它们无法正确处理中文、特殊符号和超长路径。因此会出现:找不到文件、安装失败和读取异常等情况。
-
创建专属转区快捷方式
安装完成后不要直接使用桌面快捷方式,因为它没有绑定转区环境。
请循着刚才设定的路径,找到游戏本体的软件 xxx(游戏英文名).exe 右键 ->
Locale Emulator->选择修改应用程序配置文件在确认配置项为日语环境与时区后,点击工具界面上的
创建快捷方式”按钮,系统会生成一个绑定了转区的全新快捷方式,用它替换桌面快捷方式即可 -
弹出光盘
当所有的安装与配置工作结束后,打开此电脑,右键点击虚拟 DVD 驱动器,在菜单中选择弹出即可
疑难排查
重要
大部分是否都是因为杀毒软件导致的 请务必检查
-
Windows 兼容模式
部分老游戏可能需要右键 exe → 属性 → 兼容性 → Windows XP SP3
-
日区时间
少数游戏会检测系统时区。 如果出现时间相关报错,可以尝试切换为东京时区(UTC+9)或转区软件内配置
-
全屏黑屏
祭出神器Magpie
-
Windows SmartScreen 症状:启动游戏时弹
Windows 已保护你的电脑原因:程序缺少可信数字签名,或下载来源信誉不足
解决方案:点击更多信息 → 仍要运行
-
进游戏后乱码或字符不显示
症状:进游戏后乱码或字符不显示,遇到口人狂魔
原因:如果游戏仍试图在系统中寻找特定名称的日文字体,或者汉化组提供了特殊字体
解决方案
- 下载对应字体
-
LE 安装失败,或右键菜单蒸发
症状: LE提示安装成功,找不到LE菜单项
原因:菜单项可能没有立即同步/转区的是64位文件/安全软件误杀
- 解决:重启/寻找其他解决方法或补丁/关闭杀软或将程序加入白名单
-
找不到 d3dx9_xx.dll”或“缺少 MSVCP140.dll
症状:游戏启动即弹出“找不到 d3dx9_xx.dll”或“缺少 MSVCP140.dll”
原因: 开发时依赖的是微软当年提供的特定多媒体运行库,但这些库已经被删除或者折叠
解决方案:
- 方案一:前往微软官方网站下载并安装
DirectX End-User Runtimes (June 2010),或者下载 Visual C++ Redistributable Runtimes All-in-One这样的社区维护一键包 - 方案二: 在控制面板-程序-启用或关闭Windows功能勾选旧版组件
- 方案一:前往微软官方网站下载并安装
-
进度无法保存/保存崩溃报错
症状:点击系统菜单中的“Save(保存存档)”时,突然弹出日文的读写错误或提示权限不足,或者保存后发现没有保存
原因:操作系统架构更迭导致的经典冲突,XP 时代系统安全性十分薄弱,管理员权限几乎都在用
然而,自从 Windows Vista 系统引入 UAC 安全机制后。所有关键的系统级目录(例如 C:\Program Files (x86) 与 C:\Program Files)被设定为受高度保护的只读区域
当老游戏在现代系统中试图在这个区域内强行创建一个新的存档文件时会导致拒绝写入和访问
解决方案:
- 方案一:重新安装到一个不需要UAC权限的文件夹
- 方案二:使用管理员模式启动
-
点击转区运行后毫无反应
症状:启动了主程序,然后……什么都没有发生
病因:这是排查难度最棘手的一类,几乎没有通解,多半需要结合日志查看器与报错信息进行问询
不过还是可以提供一些常见的问题:
-
触发 DEP(数据执行保护) 现代 Windows 操作系统在 CPU 硬件的配合下,内置了一项底层内存保护技术,名为DEP
它的核心使命是将特定的数据内存区域标记为
不可执行(NX)问题在于,某些老游戏会在运行过程中动态解压或修改自身代码,这类行为可能被现代 Windows 的 DEP 机制误判,当遇到这种情况进程会直接 0xc0000005,如果没有trycatch,进程会被大手直接捏死连绘制报错的机会都没有
-
老旧视频解码问题(大概率还会弹个窗口) (点名GIGA)许多游戏在开场直接播放OP,而这些老游戏往往使用旧的 DirectShow 视频框架来调用早期的视频格式,导致超时或者卡死然后闪退 可以尝试:
- 安装 K-Lite Codec Pack
- 安装 LAV Filters
- 使用 dgVoodoo2(推荐)
dgVoodoo2 是什么 它本质上是一个旧图形 API 转译层,可以将 DirectX 8/9 转换为现代 API 修复黑屏 修复分辨率问题 提高兼容性 对部分老 GalGame 的兼容性与性能改善非常明显
-
