术语表
用通俗语言解释你在玩怀旧游戏模拟时会遇到的术语——核心、BIOS 文件、存档状态、着色器、映射器等等。
共 14 个术语
- b
BIOS
BIOS(Basic Input/Output System,基本输入/输出系统)是原始游戏主机硬件中烧录的固件,包含开机代码、系统菜单、硬件初始化例程。部分模拟器(PlayStation、Saturn、某些 GBA 核心)需要原始 BIOS 才能正确运行,因为游戏会调用 BIOS 例程,要求字节级一致的行为。在多数司法管辖区分发受版权保护的 BIOS 文件是非法的;用户应从自己拥有的硬件中自行提取 BIOS。
- c
Cheat code
在模拟领域中,作弊码(cheat code)通常是一段短字符串(Game Genie、Pro Action Replay 或 PAR 格式),它在运行时把某个具体内存地址打补丁为固定值。"无限生命"的实现方式是每帧重写"剩余生命"计数器,让游戏没法把它减少。现代模拟器内置以游戏 CRC 为键的作弊码数据库;加载某游戏时会自动应用对应的代码集。作弊码不是存档状态——它不快照任何东西,只是拦截内存的读写。
- c
Core
在 libretro / RetroArch 的术语中,"核心"指一个遵循 libretro API 的模拟器实现,以共享库的形式打包。一个核心通常只模拟一个平台(如 snes9x 模拟 SNES,mGBA 模拟 Game Boy Advance)。前端(RetroArch、EmulatorJS 等)在运行时加载核心,因此为前端添加新平台只需放入新的核心文件,而不必重写宿主应用。
- c
Cycle accuracy
逐周期精确(cycle-accurate)的模拟器按 CPU 时钟周期级别重现原硬件行为,而不仅是按指令级别。这对依赖精确时序的游戏非常重要——例如扫描线中途修改寄存器驱动的图形特效、与垂直空白对齐的音频混音、靠内存读取时序判断的复制保护。bsnes 的 "accuracy" 核心是 SNES 的典范;精度较低的核心运行更快但会错误渲染某些效果。浏览器模拟通常会牺牲一些精度换取速度,因为 WebAssembly 的开销让最精确的核心在移动设备上太慢。
- f
Frame pacing
帧时间(frame pacing)是模拟器把新帧推送到显示器的稳定性。糟糕的帧时间会产生卡顿——即使帧率写着 "60 FPS" 也能感觉到细微抖动。原因包括刷新率不匹配(60 Hz 游戏跑在 60.0001 Hz 显示器上,大约每 10 分钟会重复一帧)、音频缓冲下溢阻塞渲染循环、或核心没有按紧凑的时序输出帧。修法:开启 VSync、把显示器刷新率匹配到原始系统的原生频率,或使用支持自适应帧时序的前端。
- f
Frontend
前端(frontend)是宿主应用程序,负责加载模拟器核心、展示游戏选择界面、处理输入绑定、管理存档数据。RetroArch 是最流行的 libretro 前端;EmulatorJS 是浏览器领域的主导前端。前端本身不进行任何模拟工作——模拟逻辑都在它加载的核心里。切换前端会保留你的 ROM、游戏内存档、(通常也保留)存档状态;变化的只是外层界面。
- p
IPS / UPS patch
IPS 与 UPS 是两种二进制补丁格式,用于在不分发修改后 ROM 本身的前提下发布 ROM 修改。补丁文件列出"在偏移 X 处把字节 A B C 改为 D E F";把它应用到一份干净的原始 ROM 上,就能得到修改版。这是粉丝翻译、ROM 魔改、错误修复补丁的标准分发方式,因为受版权保护的原始字节始终不会离开你的硬盘。UPS 是较新的格式(能安全处理不同大小的 ROM);IPS 是更老但仍无处不在的格式。
- m
Mapper
映射器(mapper,又称"内存映射器")是游戏卡带上的定制硬件,它通过 bank 切换技术,把超出主机狭窄地址空间能直接寻址范围的 ROM 和 RAM 接入主机。NES 游戏用过上百种映射器芯片(MMC1、MMC3 等),每一种行为都不一样——bank 切换、扫描线 IRQ、镜像控制、扩展音源。模拟器把每种已知映射器实现为软件模块;运行某个冷门卡带受阻时,瓶颈往往不是 CPU 模拟,而是该映射器尚未实现。
- o
Overclocking
模拟器的超频(overclocking)让模拟的 CPU 跑得比原硬件更快,缓解原本由于精灵或粒子过多而发生掉帧的游戏。SNES 上的《Gradius III》《Super R-Type》是常见的超频目标。超频可能引入画面或音频问题,因为部分游戏的逻辑与原始时钟频率同步;大多数核心都提供按游戏配置的倍率,让你逐步调到稳定的最低加成。
- r
Rewind
回放(rewind)是模拟器的一个功能,允许你倒带回到最近几秒(或几分钟)的游戏画面,撤销你最近的操作。原理是每 N 帧把一个存档状态写入环形缓冲区;按下"回放"键时,模拟器逐步加载越来越旧的状态,直到你松手。常用于重试坠落、错失跳跃或错选对话,而不必损失整体进度。内存开销适中——典型的 NES 回放缓冲,60 秒、每 4 帧 1 个状态,约占 30 MB。
- r
ROM
ROM(Read-Only Memory,只读存储器)镜像是游戏卡带或光盘内容的二进制副本。这个名字源于游戏数据真的存放在卡带内部 ROM 芯片上的年代。ROM 文件按字节保留与原始芯片完全相同的内容;模拟器加载它后,按原主机当年读取的方式读取。ROM 通常受版权保护;其合法性取决于你是否从自己拥有的硬件中提取它。
- s
Save file
游戏内存档(save file,又称 in-game save)是原始卡带/光盘本会写入其电池备份 SRAM、记忆卡或存档芯片的文件。模拟器对那块存储进行模拟,并以小文件(.sav / .srm / .mcr)的形式持久化。游戏内存档是可移植的:snes9x 写出的 SNES .srm 文件通常能直接加载到 bsnes 或 RetroArch,因为 SRAM 布局是原始硬件规范的一部分,与模拟器实现无关。
- s
Save state
存档状态(save state)是把整个模拟器的内存——CPU 寄存器、RAM 内容、音频缓冲、显示状态——一次性原子写入磁盘的快照。读取存档状态会把模拟器恢复到那一刻的精确状态,适用于反复挑战难关 BOSS、跳过不可跳过的过场动画,或在没有原生存档功能的游戏里跨会话保存进度。存档状态不能跨模拟器移植,甚至不能跨同一模拟器的大版本通用:二进制布局依赖内部数据结构。
- s
Shader
着色器(shader)是 GPU 上的小程序,在模拟器的输出帧到达屏幕之前对其做后处理。常见的模拟器着色器会模拟 CRT 扫描线、NTSC 复合视频的色彩晕染、LCD 子像素网格、或弯曲屏幕的几何形变。好的着色器组合很有主见:把画面从"像素级精确的现代 LCD"变成"1992 年你电视的样子"。libretro 的 slang 着色器格式已是事实标准;预设可以跨核心和前端共享。