作者研究了 Super Mario Bros. 反汇编代码中的定时器实现,发现其设计与自己在 PICO-8 游戏中使用的方法惊人相似。核心只有两行 Lua:一个元表使未设置的定时器默认返回 0,一个循环每帧递减所有定时器。文章还分析了 NES 硬件上的"帧规则"——通过 IntervalTimerControl 将 21 帧作为一个时间单位。
🔑 核心要点
核心实现仅两行 Lua:元表使未设置的定时器默认为 0,循环每帧递减。
定时器可做三件事:持续一段时间(如发光效果)、延迟执行(如音效触发)、可取消和延长。
NES 版 Super Mario Bros. 的定时器受硬件限制:单字节最多 255 帧(4.25 秒)。