梦晨 发自 凹非寺
量子位 报道 | 公众号 QbitAI

近几年,游戏界兴起了一股复古风潮。

玩腻了追求极致画面表现,玩法上却千篇一律的“罐头大作”的人们,开始怀念童年记忆中那些简单的美好。

这款基于FPGA的硬件模拟游戏机MiSTer可以带你穿越到过去,找回童年的感觉。

目前已支持雅达利,红白机,世嘉MD和GB、GBA等17种游戏主机与掌机。

还有Apple II,Commodore 64,MSX等四十多种古董个人电脑。

运行MSX上的初代《合金装备》

这些主机的配置文件全都可以放在一起,随时切换。一台巴掌大小的机器,把你的童年全装进去。

与常见的各种模拟器软件不同,MiSTer使用硬件模拟方法,在电路的层面还原各种老游戏机的运行方式。

MiSTer是开源项目,软件部分可以免费下载,在GitHub上已获得1800星。

硬件部分基于友晶科技的DE-10 Nano FPGA开发板,淘宝可以买到。

硬件模拟好在哪?

一般来说现在想玩老游戏有三种方法。

第一种方法是在二手市场淘换当年的原机原卡带,但是非常稀缺、价格昂贵,品相难以保证。

年代久远的游戏机只能输出模拟视频信号,需要更换芯片或用采集卡才能连接现代的数字显示器,会带来显示延迟

第二种方法是软件模拟,虽然硬件性能今非昔比,手机上都可运行许多模拟器,但有兼容性问题,不是所有游戏都能稳定运行。

使用软件模拟还会出现操作输入延迟,和声音延迟

对高难度的动作游戏来说,虽然延迟只有毫秒级别,但还是能感觉到手感不同,老游戏难度普遍又高,输入延迟使一些高级技巧难以操作。

经典超难红白机游戏《魔界村》

对于音游来说,那就根本没法玩了。

GBA上的音游《节奏天国》

现在市面上有一些基于树莓派等环境的开源游戏机,任天堂、世嘉等也不断地推出官方迷你复刻版。

但这些本质上还是使用现代硬件架构的软件模拟,不能解决软件模拟带来的问题。如任天堂迷你FC实际上是在ARM架构上运行Linux系统。

第三种方法就是使用FPGA硬件模拟。

FPGA的全称是现场可编程门阵列,通过直接对芯片中的模块和逻辑单元编程来模拟老游戏机硬件的运行方式。

软件模拟器是用CPU做通用计算,按顺序执行代码,需要比被模拟的硬件运行频率快许多倍的CPU才能达到原硬件的运行速度。

FPGA通过编程重组生成专用电路,相当于“可变形的硬件”。

可以让被模拟硬件的不同芯片同时工作,耗费的资源更少,同时解决延迟问题。

还可以模拟大型游戏卡带中特制的增强芯片,解决游戏兼容性问题。

SFC星际火狐中的增强芯片负责渲染3D多边形

以及模拟老机种的音频芯片输出原汁原味的游戏音效。

此外,在测试中MiSTer输出的画面比原机清晰度更高,色彩也更鲜明。

购买安装使用

组装一台MiSTer需要一块DE10-Nano开发板,USB OTG Hub或为MiSTer特制的USB I/O板,和SD卡,推荐安装风扇增强散热,以及一个合适的外壳。

这些都可以从淘宝买到,全套价格在1700元左右,成本较高。

从GitHub下载整合好的安装镜像文件,刷入SD卡后接入DE10-Nano就可以自动安装了。

具体步骤请参考文章末尾处的项目Wiki。

懒得动手的玩家也可以直接购买第三方制作好的成品,搜索“MiSTer FPGA”即可。

MiSTer支持鼠标、键盘、手柄与摇杆输入,甚至老游戏机专用的光枪等独特外设。

软件方面,MiSTer运行的是定制的Linux系统,只加载了游戏机需要的模块,可以像老机一样瞬间开机。

游戏ROM直接拷在SD卡里。像MSX这种存档存在磁带里的老机也可以用软件方式解决。

MiSTer系统里提供作弊选项,截图,联网更新等功能。

还可以为液晶显示器添加模仿CRT的扫描线等滤镜,体验最正统的复古风格。

最后总结一下,玩老游戏用软件模拟器最方便省钱,官方复刻机适合买来收藏,注重游戏体验选择FPGA硬件模拟。

MiSTer项目Wiki:
https://github.com/MiSTer-devel/Main_MiSTer/wiki

参考链接:
[1]https://www.youtube.com/watch?v=y8bV0fOMYX0
[2]https://en.wikipedia.org/wiki/List_of_Super_NES_enhancement_chips

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

加入AI社群,拓展你的AI行业人脉

量子位「AI社群」招募中!欢迎AI从业者、关注AI行业的小伙伴们扫码加入,与50000+名好友共同关注人工智能行业发展&技术进展

开源FPGA硬件模拟游戏机,原汁原味的复古游戏体验带你回童年相关推荐

  1. 合一算法求最一般合一_如何设置RetroArch,最终的多合一复古游戏模拟器

    合一算法求最一般合一 Do you wish you could browse a massive collection of retro games from your couch, without ...

  2. html抽奖源码_开源FPGA开发板OpenICE 介绍及抽奖

    首先呢,先强调一遍,我做板子不是为了挣钱,因为国内目前的形式比较严峻,只是为了体验一下开源的工具和环境,也为了后人能对FPGA有个新的认识,所以不会触碰到任何人的蛋糕. 本来今天不准备发文了,还是熬夜 ...

  3. 【动量轮自平衡自行车】STM32_PID(开源-含硬件资料)

    动量轮自平衡自行车STM32 如何DIY一辆自平衡自行车?下面将制作内容分享给大家,欢迎讨论交流~. 目    录 一.硬件篇(附淘宝链接,店铺不定,也可自行搜索购买) 1. STM32F103C8T ...

  4. 开源FPGA开发板-OpenICE 介绍及抽奖

    首先呢,先强调一遍,我做板子不是为了挣钱,因为国内目前的形式比较严峻,只是为了体验一下开源的工具和环境,也为了后人能对FPGA有个新的认识,所以不会触碰到任何人的蛋糕. 本来今天不准备发文了,还是熬夜 ...

  5. 基于ZYNQ+AD936X的开源SDR硬件

    基于ZYNQ+AD936X的开源SDR硬件 https://github.com/kangyuzhe666/ZYNQ7010-7020_AD9363 项目介绍视频:https://www.bilibi ...

  6. [转}SkyEye硬件模拟平台,第三部分: 硬件仿真实现之二

    SkyEye硬件模拟平台,第三部分: 硬件仿真实现之二 CPU/开发板仿真 文档选项 <script language=JavaScript type=text/javascript> & ...

  7. Facebook开源AI硬件 联手NVIDIA开发人工智能

    Facebook人工智能研究小组(FAIR)计划增加GPU硬件的投资达两倍之多,旨在将机器学习技术扩展到旗下更多的产品里. Facebook的内部设计项目享誉业内,无论是简单地改善新闻推送(News ...

  8. FPGA硬件学习基础知识点总结(1)

    FPGA硬件学习基础知识点总结(1)锁存器与触发器 总结一下数电,FPGA的一些基础知识,涉及到硬件电路的设计.主要是记录自己的学习过程. 锁存器与触发器 锁存器(latch):锁存器是电平触发的存储 ...

  9. python 硬件模拟_如何编写一个硬件模拟器?

    当下是短视频的时代,随着5g进程的加速推动,短视频已经成为了很多自媒体人变现的主要途径 B站,抖音,快手,西瓜视频等等各大平台都砸钱鼓励平台创作者创作视频,因为平台流量大,我们就可以通过一些技术手段来 ...

最新文章

  1. Linux下脚本实战之系统监控
  2. curl模拟delete/put/post/get请求
  3. mysql 连接openfire_修改openfire数据库连接(转)
  4. 【C++grammar】名字隐藏与重定义
  5. android滑动开关框架,Android之实现滑动开关组件
  6. java两个日期之间所有日期_java如何输出指定两个日期之间的所有日期
  7. 进程间同步的几种方法
  8. c语言翁凯中程序,程序设计入门——C语言(翁凯老师)(基础部分)(总结)...
  9. 真正智能的语音识别系统离我们还有多远
  10. 旋转音乐html,css3可控旋转音乐播放按钮
  11. 链家广州二手房的数据与分析——数据分析1
  12. 工程项目管理组织机构形式
  13. mysql根据出生日期统计各年龄段男女人数
  14. kettle登录加载job 报错 Can't find Job 1
  15. 桐桐的数学难题(质因数分解)
  16. 对称加密和非对称加密;公钥,私钥的理解
  17. 利用java swing编写一个简易的计算器,实现了括号,优先级,三角函数,阶乘等功能
  18. 计算机网络 - linux - 配置静态ip地址(NAT模式)
  19. 社区物联网医院解决方案(智慧医疗)
  20. 简单的@keyframes效果

热门文章

  1. 如何监听WebView完成加载URL?
  2. int.Parse()和Convert.ToInt32之间的主要区别是什么
  3. 在Objective-C中创建一个抽象类
  4. 删除目录下大量小文件和清空大文件
  5. 关于线程池ExecutorService的shutdown()与shutdownNow()方法的区别
  6. 操作系统:ucore的部分Bug挑战练习
  7. 线程堆栈大小 pthread_attr_setstacksize 的使用
  8. Query采用each方法遍历
  9. 微软安全管理解决方案 为企业安全保驾护航
  10. Windows 2003不同域之间迁移密码方法笔记截图