1980 年一个无心疏漏,造就街机界永远无法通关的终点

那是1980年,《吃豆人》的街机基板上焊着一块只读存储器

1980年,南梦宫的程序员岩谷徹完成了《吃豆人》的最终代码,将其烧录进街机基板的只读存储器中。游戏设计了255个关卡——这是当时街机游戏的标准做法,用一个8位无符号整数来存储当前关卡编号。8位二进制数的最大值是255。第255关通关后,关卡计数器的数值从255翻到256,二进制表示从11111111变成100000000——但8位寄存器只能容纳8位,最高位被直接丢弃。计数器回到了00000000。第256关被游戏引擎当作第0关来渲染。

《吃豆人》原版街机框体的照片,可见黄色外壳和像素屏幕

关卡编号归零了,但游戏引擎不知道该干什么

关卡计数器归零本身不是问题——程序员可以在代码里写一行判断语句,检测到“当前关卡等于0”时跳转到正常的关卡渲染流程。但岩谷徹没有写这行判断。因为从数学上,关卡编号的取值范围是1到255,没有任何玩家应该到达256。他在代码的其他地方没有任何处理“关卡0”的逻辑。当游戏引擎试图根据“第0关”来计算迷宫中的水果数量、幽灵AI的追击速度和能量豆的效果时长时,它从内存中读到的是一组完全没有被初始化过的数值。这组数值驱使引擎开始向屏幕绘制内存中的随机数据。

《吃豆人》256关Bug触发后屏幕被乱码覆盖的经典截图

右半边屏幕被字母和符号吞掉了

游戏引擎将内存中的随机数据解释为迷宫墙体的位置、豆子的坐标和幽灵的路径节点,然后将这些“物体”逐行绘制到屏幕上。右半边的屏幕被一组组毫无规律的字母、数字和符号填满——这些数据来自街机基板上的工作内存,其中包含了游戏程序自身的部分代码片段。左半边迷宫残留着可辨认的墙体轮廓,但在这些墙体之间散布着无法被吃豆人通过的隐形障碍物。吃豆人自身仍然可以被玩家操控移动,但迷宫已经被不可穿越的数据碎片切割成了断裂的通道。

全世界没有任何玩家能通过第256关

第256关的屏幕上只有9颗普通豆子和4颗能量豆——这是内存随机数据偶然产生的数值,远少于正常关卡所需的数量。即使玩家操控吃豆人吃掉了所有能吃的豆子,总数也无法达到让游戏触发“通关”判断的阈值。256关是一个数学上不可能通关的关卡。1980年代的北美街机厅里,玩家把这种现象叫作“杀死屏幕”——当你打到第256关,你不是打穿了游戏,是打穿了游戏的底层代码。全球第一个达到第256关的玩家是美国人比利·米切尔,他在1999年的一次公开表演赛中用了约六个小时打到了这张乱码屏幕前。

比利·米切尔在街机前玩《吃豆人》

岩谷徹在二十年后亲口道了歉

2010年,《吃豆人》30周年纪念活动上,岩谷徹被记者问到第256关的Bug。他的回答被多家游戏媒体记录了下来:“我以为没人能打到那里。我错了。”南梦宫在《吃豆人》的后续移植版本中修复了这个Bug——但修复的方式不是重写关卡计数逻辑,而是简单地在第255关之后增加了第256关的正常迷宫地图。

岩谷徹在2010年《吃豆人》30周年活动上的照片

因为对于全世界的《吃豆人》玩家来说,这个被字母吞掉的屏幕已经不是Bug了。它是整个1980年代街机文化最著名的终点线。2015年,电影《像素大战》中,第256关的乱码屏幕作为一个核心剧情点出现——一块被随机数据填满的屏幕,在35年后变成了一条电影剧本。

感谢收看,大家点点赞点点关注~

更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com