趋势网(微博|微信|熊掌号):
在Ars中,趋势君是模拟器的忠实粉丝,这些模拟器完美地再现了最初的硬件,并提升了游戏体验。无论是将2D NES精灵转换为3D多边形还是在控制器按下后删除延时帧,趋势君都做到了。
因此,趋势君非常高兴地在最近偶然发现了WideNES,这是一个新的模拟项目,它扩展了NES游戏地图的可见区域,超过了趋势君习惯的4:3 256x240分辨率的屏幕区域。使用WideNES,你甚至可以在玩游戏的同时使用键盘和鼠标滚轮缩小和平移之前的屏幕。
WideNES使用的通用方法被滑铁卢大学的学生Daniel Prilik在一篇有趣的博客文章中描述,他创造了这个算法。基本上,WideNES系统会在你玩游戏的时候观察背景“地图”数据在模拟的PPU中不断滚动。它还密切监视着PPUSCROLL寄存器,该寄存器通过在玩家移动时指向VRAM的不同部分来控制实际的屏幕滚动。
Prilik写道,通过对背景数据进行采样,并在屏幕滚动时小心地覆盖和修改,“越来越多的地图被显示出来,并被记录下来”。
比如说,在《超级马里奥兄弟》的第一个关卡中,这种地图记录并不是很有用。但是如果马里奥死了,重新开始关卡,存储的地图数据可以“通过‘窥探’过NES屏幕边缘,让玩家更有效地看到关卡”,Prilik如是说。和一个游戏像银河战士或塞尔达传说,扩大算法可以有效地建立一个地图,你之前已经和让你细读回溯(不幸的是,阅读整个游戏的地图数据从ROM数据在游戏开始之前是一个困难的问题在NES概括图书馆,Prilik写)。
Prilik表示,他的基本算法适用于各种横向滚动的NES游戏,但需要一些特殊代码来解释某些屏幕菜单、对角线滚动和完整的场景转换(比如完成关卡或进入《塞尔达传说》中的地牢)。该算法还忽略了精灵,因此游戏中的敌人和其他主要的移动元素不会出现在NES屏幕的常规边界之外。
目前,WideNES算法只能在ANESE模拟器上运行,这是一款由NES模拟器Prilik开发的定制产品。但WideNES“核心”中的核心规则和启发式可以作为一种选择移植到其他模拟器上。如果你对实现这一点感兴趣,或者对整个事情的工作方式有更深入的了解,那么就进入GitHub页面,进行黑客攻击。