
《传送门》系列游戏的革命性不仅在于其基于解谜和叙事驱动的玩法,还在于其独特的物理引擎,让玩家可以在任何地方打开传送门,并保持动量和方向。它们被广泛认为是有史以来最优秀的电子游戏之一,但除此之外,它们还拥有一些鲜为人知的额外功能。例如,游戏中有许多关卡编辑器和模组,允许玩家使用游戏内的组件来构建逻辑门和计算机等。而这个项目更进一步,在《传送门 2》中构建了一个可以运行的 NES 模拟器。
这里的主要限制在于, 《传送门 2》在不崩溃的情况下只能支持一定数量的游戏内对象,远低于直接模拟 NES 硬件所需的数量。项目创建者 [PortalRunner] 转而使用 Squirrel(传送门 2 的脚本语言),并着手将现有的 NES 模拟器 smolnes 移植到该脚本语言上。这说起来容易做起来难,因为代码中的所有内容都需要转换为八位,然后 smolnes 中的所有指针都需要转换为数组,而 Squirrel 根本不支持指针。不难想象,这会导致一系列 bug,需要在游戏运行之前修复它们。
对于那些对代码高尔夫、移植或交叉兼容性感兴趣的人来说,这个项目堪称大师级课程,不仅展现了《传送门 2》脚本语言的复杂性,还展现了 NES 的行为方式,更不用说识别 C 语言和 Squirrel 脚本语言独特行为所需的编码技能了。最终,[PortalRunner] 能够让《超级马里奥兄弟》在《传送门 2》中运行,尽管分辨率和帧率较低。既然我们听说您喜欢游戏中的游戏,有人将《DOOM》嵌入《DOOM》 ,这样您就可以在玩《DOOM》的同时玩《DOOM》 。
感谢[Mahdi]提供的提示!
原文: https://hackaday.com/2025/06/13/open-a-portal-to-an-nes-emulator/