0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作适用于Arcada的NES模拟器

454398 来源:网络整理 作者:网络整理 2019-11-28 17:11 次阅读

概述

That Arcada该播放器非常适合在MakeCode Arcade或CircuitPython中编写自己的游戏-但如果您想尝试自制的Nintendo设计,也可以通过将nofrendo移植到ATSAMD51来播放NES ROM

仿真器可以从内置QSPI存储设备中以全速和声音播放游戏!播放任何256KB或更小的ROM,并保存/恢复游戏状态,以便您可以随时休息一下。

尝试一些经典ROM,或查看令人惊叹的NES自制场景,以尝试经典8位游戏平台,定义了世代

支持的硬件

从理论上讲,任何支持Arcada的主板-但我们建议使用带有游戏手柄+按钮的主板:

Adafruit PyGamer入门套件

产品编号:4277

请注意:入门套件可能会带来宝蓝色或紫色的保护套(它们都是可爱的颜色)什么东西适合您的口袋,完全打开。..

缺货

外面数量

添加到愿望清单

+新列表

用于MakeCode Arcade,CircuitPython或Arduino的Adafruit PyGamer

产品ID:4242

什么东西可以装在您的口袋里,完全开源,并且可以运行您自己编写的CircuitPython,MakeCode Arcade或Arduino游戏?没错,这是Adafruit 。..

$ 39.95

入库存

添加到购物车

添加到愿望清单

+新列表

用于MakeCode Arcade,CircuitPython或Arduino的Adafruit PyBadge

产品ID:4200

即将推出!注册后将收到通知,通知卡有多少张信用卡,可以运行CircuitPython,MakeCode Arcade或Arduino?那就是。..

缺货

缺货

添加到愿望清单

+新列表

Adafruit PyBadge LC-MakeCode Arcade,CircuitPython或Arduino

产品ID:3939

信用卡的大小是多少,即使您使用的是信用卡,也可以运行CircuitPython,MakeCode Arcade或Arduino预算?没错,就是theAdafruit 。..

缺货

缺货

添加到愿望清单

+新列表

它所做的事情:

模拟一个使用nofrendo核心的大量ROM/游戏

大多数情况下,全速播放(如果ROM各个部分的子画面很多,则速度可能会有所降低)

通过耳机/扬声器播放游戏音频

对160x128显示屏(4比1像素)进行降采样,如果320x240显示屏则为1:1像素

保存并恢复游戏状态

支持诸如PyGamer和PyBadge之类的Adafruit Arcada板

芯片进行超频很多

它不能做的事情:

播放大于256KB的ROM

播放非NES ROM

某些ROM无法正常工作-例如Dragon Warrior

支持非SAMD51芯片(要获得Teensy支持,请访问TeensyCEC)

支持其他硬件,除非您已向Arcada添加了支持(可以!)

快速入门

除非您需要/希望重新编译源代码,否则我们建议您通过在Arcada板上安装以下UF2来快速入门。

QSPI文件系统

这些UF2默认使用QSPI存储。因此,您必须已经有一个CircuitPython/FAT文件系统。这是由CircuitPython首次安装时创建的,如果您从未加载CircuitPython,请在此页面上查找UF2。安装匹配的驱动器,检查计算机上是否存在CIRCUITPY驱动器,然后可以重新加载Arcada_Nofrendo

CircuitPython下载

Arcada Nofrendo UF2s

双击重置可将您的电路板置于 BOOT 模式,并将这些 UF2 文件拖到上面!

pybadge或edgebadge nofrendo.UF2

OR

pygamer_nofrendo.UF2

安装ROM

添加ROM非常简单。安装完上述UF2后,您的开发板将在计算机上显示为 CIRCUITPY 驱动器。这是2 MB或8 MB的QSPI内部存储。如果您已经运行CircuitPython或我们的Arduboy/Gamebuino演示,甚至可能已经在其中存在一些文件。

新建一个名为 nes

然后在该文件夹中放置所有 nes 个文件。您可以根据需要创建子文件夹。

右键单击 CIRCUITPY ,然后弹出驱动器(如果是Mac,则拖动到“垃圾箱”中)以确保文件已保存。

启动ROM

按重置重新加载Nofrendo。您将看到选择菜单:

您可以使用操纵杆/D-pad上下移动以滚动浏览游戏列表。

如果您按下 B 按钮将进入文件夹级别。

如果在游戏上按下 A 按钮,它将启动游戏。如果选择了文件夹,它将导航到该文件夹。

除非您重新编译将ROM加载到SAMD51芯片的RAM中,否则它将立即将游戏加载到FLASH存储器中。这有点像引导加载程序,但是它从内存末尾开始。

在加载时,如果FLASH中已经包含数据,则不会擦除/重写。因此游戏第二次加载速度更快。如果游戏不合适,则会出现错误

就是这样!游戏将被加载并可以玩

要尝试的ROM

有数百种可以尝试的自制ROM。这里有一些收藏夹,但不要阻止您寻找自己的收藏夹。

https://www.zophar.net/pdroms/nes.html具有公共域ROM li》

http://www.nesworld.com/article.php?system=nes&data=neshomebrew有更多的NES自制游戏。

Google搜索“ NES自制”!

2048

端口tsone制作的DIY ROM是流行且令人上瘾的滑动拼贴游戏的一部分,它很有趣,可以用来学习和学习。

从此处下载

2048.zip Mirror

同化

一个外星人冒险游戏,您可以在其中玩外星攻击者!

从此处下载

assimilate.zip镜像

The Wit.NES

一个家酿酒港口/致敬见证人-此游戏是一款伟大的益智游戏,具有神秘的规则和一个未知历史的岛屿。..

在此处下载

thewit.zip

保存/恢复状态

任天堂游戏非常困难。如果您来自后代,那么您可能会为少数人的生命感到震惊,而事实上,当您输了钱时,您常常会被踢回开始。某些游戏的代码可以显示,您可以输入其中的内容,从而恢复到中间点;还有一些游戏具有电池供电的SRAM-塞尔达传说(Legend of Zelda)和《最终幻想》(Final Fantasy)是著名的例子。

目前,我们没有Just-SRAM保存/重新加载支持。 但是,我们确实具有全状态保存/重新加载支持。这意味着我们会在游戏进行的任何确切时间备份整个NES系统。我认为这更好一些-只要您愿意,就可以保存整个游戏状态!如果您要保留一款特别不错的游戏,甚至可以从计算机上备份和还原保存的游戏。

备份保存状态!损坏,如果您正在玩很长的游戏,请备份计算机上的sav文件。

目前,每个游戏只有一个保存状态!想要添加多文件保存支持,我们很乐意看到它,但没有计划这样做

保存状态

保存很容易-按住 Select + Start 一秒钟,您将会弹出一个弹出菜单:

使用操纵板滚动菜单,然后按 A 选择您的选择:

继续 》-表示可以继续游戏,无需保存或恢复

保存-保存当前游戏状态t

重新加载保存-如果要“跳过”,从上次保存时从磁盘恢复游戏状态。

保存并退出-保存状态并将游戏退出到主菜单

退出-将游戏退出到主菜单,但不要保存游戏状态。

如果您检查 CIRCUITPY 驱动器,现在将看到 nes与每个游戏匹配的.sav 文件。您可以根据需要备份它们。

下次加载该游戏时,会弹出一个新菜单:

加载保存游戏将加载上次保存的状态

开始新游戏将忽略保存文件,而只是重新加载游戏

删除保存文件将从文件系统中删除文件,在出现问题时非常方便保存(发生)

在Arduino中构建

该项目在Arduino中,添加了大量C语言。如果要添加对其他板的支持或尝试不同的设置,则可以自己构建。

首先-在Arduino中添加对板的支持,以便编译和上传代码。然后加载所有Arcada库。

从此处下载/克隆Arcada nofrendo端口,重命名文件夹nofrendo_arcada并在Arduino中打开它。

编译设置

上载时必须具有一些设置:

CPU速度必须尽可能达到最高,我们希望在200MHz下超频。优化必须 -Ofast ,我们不建议 -funroll-loop s ,因为它似乎并不能加快播放速度,并且体积很大。要显示磁盘驱动器,需要 TinyUSB

配置设置

在emuapi.h中,您可以进行一些设置:

下载:文件

复制代码

#elif defined(ADAFRUIT_PYGAMER_M4_EXPRESS) || defined(ADAFRUIT_PYBADGE_M4_EXPRESS)

#define EMU_SCALEDOWN 2

#define USE_FLASH_FOR_ROMSTORAGE // slows it down, but bigger roms!

#define DEFAULT_FLASH_ADDRESS (0x40000-2048) // make sure this is after this programs memory, with unrolled loops we‘re at 222,192! we need a little more than 256KB since roms have 10 extra bytes

#define USE_SAVEFILES

#define USE_SRAM

#else #elif defined(ADAFRUIT_PYGAMER_M4_EXPRESS) || defined(ADAFRUIT_PYBADGE_M4_EXPRESS)

#define EMU_SCALEDOWN 2

#define USE_FLASH_FOR_ROMSTORAGE // slows it down, but bigger roms!

#define DEFAULT_FLASH_ADDRESS (0x40000-2048) // make sure this is after this programs memory, with unrolled loops we’re at 222,192! we need a little more than 256KB since roms have 10 extra bytes

#define USE_SAVEFILES

#define USE_SRAM

#else

EMU_SCALEDOWN用于获取NES输出并将其缩放到160x128显示。如果具有320x240的显示屏,则设置为1!

USE_FLASH_FOR_ROMSTORAGE将ROM放入FLASH中,这对于48KB以上的游戏来说是必需的,但是如果要获得最高速度,则可以将其注释为使用RAM/malloc。

DEFAULT_FLASH_ADDRESS-我们开始刻录ROM的位置。必须在 引导程序(16KB)+ arduino代码(〜200KB)默认值非常好,除非您懂数学,否则不要搞乱。

USE_SAVEFILES是保存/恢复支持,保存时会占用大量RAM,因为它具有内存映射整个文件,因此如果RAM用完了,请注释掉

USE_SRAM,以打开/关闭仿真器的SRAM实现。请继续。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模拟器
    +关注

    关注

    2

    文章

    816

    浏览量

    42695
收藏 人收藏

    评论

    相关推荐

    NES模拟器Bimmy因盗版问题被开发者下架

    3月份,App Store撤销了一款Game Boy模拟器iGBA,因其抄袭了另一款应用GBA4iOS。苹果最初批准iGBA是因为其功能性,但随后发现其抄袭行为。
    的头像 发表于 04-17 14:33 135次阅读

    适用于电表的防干扰隔离反激式电源

    适用于电表的防干扰隔离反激式电源
    的头像 发表于 12-06 16:10 299次阅读
    <b class='flag-5'>适用于</b>电表的防干扰隔离反激式电源

    IGBT适用于ZVS 还是 ZCS?

    IGBT适用于ZVS 还是 ZCS?
    的头像 发表于 12-01 16:10 600次阅读
    IGBT<b class='flag-5'>适用于</b>ZVS 还是 ZCS?

    5个步骤,让你的核桃派玩回当年火爆全球NES游戏

    1.准备好你的nes游戏: nes游戏链接:链接:百度网盘 请输入提取码 提取码:k6sh 2.安装nes游戏模拟器: sudo apt-get install nestopia 3
    发表于 11-22 10:50

    什么是光伏模拟器?光伏模拟器能做什么?

    什么是光伏模拟器?光伏模拟器能做什么? 光伏模拟器是一种用来模拟太阳能光伏电池的工作原理和性能的软硬件设备。它可以提供光伏电池在不同光照、温度和环境条件下的电流、电压、功率等参数。光伏
    的头像 发表于 11-10 15:57 745次阅读

    探究光伏模拟器在光伏领域中的重要作用

    光伏模拟器是一种用于模拟光伏发电系统特性和性能的设备。
    的头像 发表于 11-07 10:53 460次阅读

    电池模拟器及其使用方法

    电池模拟器是一种电源设备,用于模拟电池的特性,以提供可靠的电源输出。
    的头像 发表于 11-06 16:19 727次阅读

    ODU TURNTAC®,适用于车制与开槽针孔

    ODU TURNTAC, 即使在恶劣环境下也适用的车制、开槽针孔 车制、开槽针孔 坚固的针孔系统,适用于恶劣的环境 10,000次插拔 低而稳定的插拔配合力 尽可能小的尺寸,针孔直径低至0.3mm
    的头像 发表于 08-15 09:50 270次阅读
    ODU TURNTAC®,<b class='flag-5'>适用于</b>车制与开槽针孔

    用于飞行模拟器的带Arduino的LCD面板

    电子发烧友网站提供《用于飞行模拟器的带Arduino的LCD面板.zip》资料免费下载
    发表于 06-14 10:39 0次下载
    <b class='flag-5'>用于</b>飞行<b class='flag-5'>模拟器</b>的带Arduino的LCD面板

    适用于Arduino的Adafruit NeoPixel Shield

    电子发烧友网站提供《适用于Arduino的Adafruit NeoPixel Shield.zip》资料免费下载
    发表于 06-09 10:27 0次下载
    <b class='flag-5'>适用于</b>Arduino的Adafruit NeoPixel Shield

    是否有适用于LPC4357的替代屏幕?

    我正在考虑使用 LPC4357-K43WQA 开发板开始一些开发。它适用于需要 LCD 屏幕的项目。LPC ARM 设备是我们在这里体验最多的,因此使用 LPC4357 并带有 LCD 屏幕的开发板
    发表于 06-02 07:57

    jscrane/TTS库不适用于NodeMCU 1.0吗?

    该库适用于 arduino nano,但我无法让它适用于 NodeMCU 1.0 esp8266。该库将文本转换为使用 PWM 信号生成为音频的现象。库 2 的 github 页面在其自述文件中确实
    发表于 06-01 06:01

    变压等效电路是否适用于空载电压呢?

    变压等效电路是否适用于空载电压呢?
    发表于 05-11 17:06

    M16C R8C 模拟器调试器 V.1.03 用户手册(适用于 M16C/60、M16C/30、M16C/Tiny、M16C/20、M16C/10、R8C/Tiny 系列)

    M16C R8C 模拟器调试器 V.1.03 用户手册(适用于 M16C/60、M16C/30、M16C/Tiny、M16C/20、M16C/10、R8C/Tiny 系列)
    发表于 04-28 20:15 0次下载
    M16C R8C <b class='flag-5'>模拟器</b>调试器 V.1.03 用户手册(<b class='flag-5'>适用于</b> M16C/60、M16C/30、M16C/Tiny、M16C/20、M16C/10、R8C/Tiny 系列)

    M32C 模拟器调试器 V.1.03 用户手册(适用于 M32C/80、M16C/80、M16C/70 系列)

    M32C 模拟器调试器 V.1.03 用户手册(适用于 M32C/80、M16C/80、M16C/70 系列)
    发表于 04-28 20:14 0次下载
    M32C <b class='flag-5'>模拟器</b>调试器 V.1.03 用户手册(<b class='flag-5'>适用于</b> M32C/80、M16C/80、M16C/70 系列)