在 AI 试验下,游戏不停地进行着,一直来到了 237 关,此时随着 AI 的一次四消,整个游戏画面停滞了。
这时候方块没有堆到顶端,所以是游戏本身出了问题,也就是真正的 “ Kill Screen ” 。
这之后,Greg Cannon 通过追踪代码运行,专门研究了一下游戏崩溃的原理。
他发现在高等级的时候,游戏代码运行起来会变得非常慢,而且在某个瞬间, CPU 会突然去读取 RAM 中的数据,将这些数据当做游戏代码运行。
而如果此时 RAM 中生成的数据恰好是游戏结束的代码,那么游戏就会崩溃。
这是因为在原版的《 NES 俄罗斯方块 》的算法有点拉。
当时 NES 的 6502 CPU 是不会乘法的,所以《 NES 俄罗斯方块 》采用的是比较 “ 笨 ” 的软件乘法。
它就像小学时刚学乘法的我们一样,只会一次次地加算得到最后结果。
比如在 0 级时消除一行方块可以获得 40 分,到 99 级消除 1 行就变成了原先的 100 倍也就是 4000 分。
但在 99 级时,单消时系统的计算过程是 40 40 40 40...... 一直加 100 次。
随着等级提升,这个计算过程会越来越长,CPU 又要计算分数又要处理画面数据,直接就被 “ 干烧了 ” 。
这时候 CPU 会把一部分画面资料暂时放到 RAM 里,并且把 RAM 中原先存在的一些代码覆盖掉。
来源 Youtube@ 啾啾鞋