打开FC游戏模拟器的金手指菜单,常见弹窗是让你定位一个以.cht、.gg或.dat结尾的文件。很多玩家第一反应:金手指不是直接在游戏里输入密码吗?为何还得找文件?其实,这套逻辑和游戏机上的金手指卡带完全不同。
FC模拟器模拟的是主机硬件,CPU读取的是字节码,游戏的各项数值,比如血量、生命数、关卡序号,都存放在内存的固定地址里。所谓金手指,本质上就是向这些地址写入特定数据,实现不掉血、无限跳等效果。可问题在于,不同游戏甚至同一游戏的不同版本,内存地址都不一样。一个在ROM里被存在低地址区的数值,换一个汉化版就可能挪到高地址区,毫无规律可循。模拟器本身没有智能识别能力,不可能预知所有游戏的地址布局,所以它不内置任何作弊数据,只提供一个加载外部数据的入口。那个被到处寻找的金手指文件,就是把游戏名称、作弊名称、内存地址和值按一定格式记下来的文本数据库。
以大多数模拟器支持的.cht文件为例,里面每一行是一条记录,格式类似“名称=地址:值”,表示把某个内存地址写入某个数值。更复杂一点的还会加上比较值,只有当前内存值符合条件才写入,用来应对游戏不同场景。也有的金手指文件直接记录Game Genie的六位或八位字母数字混合码,模拟器运行时会把这些码翻译成内存地址和数值。所以,当你打开金手指选项时,模拟器并不会立刻给出一个空白表格让你手动输入,而是先要求你指定一个保存着这些代码的文件。如果没有这个文件,它连要改哪个地址都无从谈起。这就像播放视频需要字幕文件一样,播放器知道怎么显示字幕,但具体对白还得靠外部字幕。
有些模拟器安装包自带一个统合金手指数据库,比如FCEUX里的fceux.cht文件,里面收集了上千条FC游戏的作弊码,放在模拟器目录下。正常情况下,打开金手指窗口会自动加载这个文件。但如果你换了一个绿色版模拟器,或者把整个文件夹从一台电脑搬到另一台电脑,那个文件被漏掉,路径对不上,模拟器就会弹出文件选择框,让你手动指定。这时你只需要找到模拟器自带的cht文件,或者从网上下载对应版本的金手指数据库,选中它,窗口里就会列出所有支持的游戏和作弊码。注意,网上下载的金手指文件必须和模拟器格式匹配,不同模拟器的扩展名可能相同,但内部格式不一样,比如FCEUX和Mesen的.cht就有差别,混用会导致读取失败。
另一个容易造成困扰的是数据库文件与单个游戏存档文件混淆。金手指数据库是一个集合,可以同时管理几百个游戏。而你想玩的那个游戏的专属金手指,也可以单独保存成一个小文件。模拟器打开金手指时,如果你选的是单个游戏专属文件,它只会加载这一条或少数几条。两种文件的打开方式不同,有的模拟器有“打开金手指文件”和“加载金手指数据库”两个选项。很多人不分清,点开金手指菜单,看到文件搜索框,就误以为必须找某样神秘东西,实际上只要正确加载数据库,所有的金手指都会出现在一个列表里,打上勾即可生效。

还有一点,模拟器在加载金手指后,并不是简单地把值写一次就完事。因为有些游戏会持续检测内存,你把血量改成99,但游戏每帧会重新计算并覆盖掉那个地址。所以模拟器会按每帧或者每隔几个指令周期循环写入,直到你取消该金手指。这种做法叫“锁定”。金手指文件里每一项都可以设置锁定状态,这个信息也会保存在文件中,方便下次使用。
所以说到底,金手指文件就是一套配置,记录了改哪里、改成什么、什么时候改。模拟器只是个执行者,只负责让这些指令生效。你手动输入代码也一样,但手动输入容易输错地址,而且换游戏要重新查,非常麻烦。文件形式把代码批量管理起来,还附带游戏名和作弊名,打开就能看懂。因此,当你看到模拟器弹窗找金手指文件时,不用紧张,它只是在找一张写着作弊地址的清单。没有这张清单,模拟器就没有操作依据,就像给外卖员一个地址却没有门牌号,他只能干瞪眼。
如今网络上有很多FC金手指数据库下载,下载时看清版本和模拟器型号,放入模拟器指定目录,然后重新打开金手指窗口,就能正常显示。如果你用的是早期FC游戏机上的金手指卡带,其实那个卡带上的芯片也起到了类似文件的作用,它把大量的地址映射逻辑固化了,而模拟器把这个过程移到了电脑里,散成了文本文件。这也就是为什么你玩FC游戏模拟器,打开金手指时它非要找一个金手指文件的原因。