文章目录

  • 前言
  • raspberry pi pico NES模拟器
    • 效果图
    • 功能介绍
  • 制作过程
    • 硬件准备
    • 制作思路
    • 实现思路
    • 搭建开发环境
  • 获取源码

raspberry pi pico|【项目一】找回童年!Raspberry pi pico NES模拟器

前言

在国内因为外观被称为红白机的任天堂FC(欧美版叫NES),或者说Famicom(典型的日式英语缩写),小时候我们都喜欢玩FC,现在仍有很多人想做出属于自己的游戏机(模拟器),而nes模拟器正是不二之选,通过制作模拟器我们能学习到关于软硬件各方面的知识,可谓是很多程序员走向编程开发道路上不可缺少的一环。

raspberry pi pico NES模拟器

效果图

功能介绍

  • 通过 SPI sd卡模块 从外挂的micro sd 卡(SPI)中加载游戏文件(Fat文件系统)
  • 2.2寸ILI9341显示屏 (SPI接口240x320分辨率)显示游戏图象
  • 支持开机动画、菜单选择游戏运行
  • 支持音频输出(I2S),使用 CJMCUTRRS 3.5mm音频座模块 输出音频更方便!
  • 支持 PCF8574 I/O 拓展模块(I2C接口)控制游戏,拓展的8个I/O引脚用于游戏按键(上、下、左、右、A、B、select、start)
  • 支持使用 国内7针、9针NES游戏手柄 控制游戏
  • 支持 国内MicroUSB接口的NES游戏手柄 控制游戏

课程用到的开发板及硬件:https://item.taobao.com/item.htm?id=642291784020
项目使用 VScode+platformio插件开发,以上功能均可在 ./platformio.ini 文件裁剪。

  • 上图中绿色的大按钮用于让板子快速进入烧录模式(不需要插拔数据线),详细讲解请阅读这篇文章:Raspberry pi pico|为Raspberry Pi Pico添加重置按钮(pico烧录程序不再插拔数据线!)

制作过程

硬件准备

  • Raspberry pi pico 购买地址
  • Micro SD卡模块(SPI协议) 购买地址 和 任意TF卡
  • 2.2寸ILI9341显示屏(SPI接口240x320分辨率) 购买地址
  • 国内MicroUSB、7针、9针接口的游戏手柄 或者 PCF8574 I/O 拓展模块(I2C接口) 购买地址
  • 杜邦线、面包线 购买地址
  • 按键(上、下、左、右、A、B、select、start) 购买地址 (如果使用 NES 游戏手柄则不需要按键)

制作思路

FC使用一颗理光制造的8位2A03 NMOS处理器(基于6502中央处理器,但是缺乏BCD模式),PAL制式机型运行频率为1.773447MHz,NTSC制式机型运行频率为1.7897725MHz,主内存和显示内存为2KB。
而Raspberry pi pico搭载RP2040,其拥有双核 Arm Cortex-M0+ 处理器,264KB的SRAM和2MB的板载闪存,支持高达16MB的片外Flash。
我们完全可以使用pico模拟出FC游戏机的效果。

实现思路

作为游戏机我们比较关心的是显示设备的问题,FC使用理光开发的图像控制器(PPU),有 2KB 的视频内存,调色盘可显示 48 色及 5 个灰阶。一个画面可显示 64 个角色(sprites) ,角色格式为 8x8 或 8x16 个像素,一条扫描线最多显示 8 个角色,虽然可以超过此限制,但是会造成角色闪烁。背景仅能显示一个卷轴,画面分辨率为 256x240 ,但因为 NTSC 系统的限制,不能显示顶部及底部的 8 条扫描线,所以分辨率剩下 256x224。
所以我们使用2.2寸(240x320)的显示屏就足够了。
那么,接下来是存储设备的问题,存储设备我使用sd卡存储、访问nes游戏文件。
最后就是游戏手柄部分,FC的游戏手柄有8个按钮(上、下、左、右、A、B、select、start),也就是说我们要处理8种按键事件。虽然说pico有26个多功能GPIO引脚,但是为每个按键都分配一个GPIO引脚仍然是一个不小的开销,使用PCF8574模块我们只需要使用两个引脚即可获得所有按键的状态。

搭建开发环境

介绍到此完毕,下一篇文章我们开始搭建 raspberry pi pico 的开发环境:
raspberry pi pico|爷青回!在raspberry pi pico上玩nes游戏(2)(开源pico NES模拟器)-搭建开发环境

获取源码

仓库地址: https://gitee.com/weidongshan/rpi_pico_100ask_infones.git

raspberry pi pico|在raspberry pi pico上玩nes游戏(1)(开源树莓派pico NES模拟器)-效果演示及介绍相关推荐

  1. linux和win玩复古游戏,在Linux上玩复古游戏的5种最佳方式 | MOS86

    复古游戏越来越受欢迎,但是您是否为此使用了合适的平台? 好吧,如果您不使用Linux,那么答案是肯定的! 无论您是寻找享受经典MS-DOS PC游戏的方式,还是重温童年时代的精彩8位游戏,Linux都 ...

  2. 手把手教你如何电脑安装android,怎么在电脑上玩android游戏?安卓模拟器怎么安装?...

    大家都知道,android游戏有很多是很好玩的,那大家知道怎么在电脑上玩android游戏吗?其实只要安装一个安卓模拟器就可以了.可是又有很多网友反映安卓模拟器不会安装,因为步骤比较多的问题,所以安装 ...

  3. html游戏能在手机上玩吗,怎么在电脑上玩手机游戏? 每日一答

    怎么在电脑上玩手机游戏? 手机游戏现在很火爆,大家随时随地都可以拿出手机玩上一会,不过很多时候需要长时间挂机的话还是想要用电脑来玩游戏.游戏耗电量比较大,如果不停的充电放电,手机电池的寿命会大幅度削减 ...

  4. 电脑上玩手机游戏,效果秒杀模拟器

    楼主是个手游小主播,吃不饱饿得死的那种.前段时间偶然发现了一款可以在电脑上玩手机游戏的神器.效果相当棒.通过USB数据线将手机和电脑连接,把手机屏投射到电脑大屏,用鼠标和键盘就可以玩手机游戏,CPU占 ...

  5. 计算机可以玩游戏吗教程,怎么在电脑上玩ios游戏_电脑上玩ios游戏教程_飞翔教程...

    脑上玩ios游戏教程来咯~飞翔铭月带来了电脑怎么玩苹果ios游戏的步骤.在电脑上玩安卓游戏可以通过安卓模拟器,那么玩iOS游戏该怎么操作呢?请看下文吧. 1.在越狱的苹果设备上找到Cydia,进入后在 ...

  6. wiimote 匹配_在Wiimote支持下在iPad上玩SNES游戏

    wiimote 匹配 If there is one thing the iPad doesn't lack for it's games. Unfortunately if you're in lo ...

  7. linux 玩 dosbox 游戏,在debian Linux上玩 dos 游戏(转)

    在debian Linux上玩 dos 游戏(转)[@more@] 只有 DOS 游戏才是永远的经典, 并且可玩度非常高. 对于怀念 "三国志Ⅲ", "大航海时代2&qu ...

  8. pc上android模拟器,最好的Android模拟器在PC上玩Android游戏

    Android手机和平板电脑上有数百款真正有趣的游戏,其中许多游戏在键盘和鼠标上运行的效果和在触摸屏上运行的效果一样好.不过,它们中有太多只在移动设备上使用,而在PC上无法使用.值得庆幸的是,由于仿真 ...

  9. 小米游戏手柄pc插件_在电视上玩电脑游戏

    有两个XBOX无线手柄,但steam游戏玩不过来,一直没有买主机.周末想和老婆一起合作玩玩<战斗方块剧场>,这样电脑椅就不够用了,还是窝在沙发里用电视玩着舒服. 简单的方法是将显卡的输出接 ...

  10. 永远的7日之都怎么在电脑上玩 永远的7日之都安卓模拟器教程

    <永远的7日之都>是一款网易自研的都市幻想题材的RPG,采用了标准的都市灾难题材,人类的世界出现了"黑门",大量异种入侵,人类经过努力将黑门控制在了主角所在的城市,主角 ...

最新文章

  1. 江苏省计算机专业公务员,江苏省考冷门专业的“春天”来了!
  2. OPTEE的内存管理 : 将内存加入到页表去管理
  3. android小闹钟程序,Android实现闹钟小程序.pdf
  4. 信雅达银行外包怎么样_光大银行信用卡逾期2年3万会坐牢吗?信用卡逾期半年要起诉...
  5. 单片机c语言必背代码_stm32单片机编程用库函数好还是寄存器好?
  6. TeamTalk HttpClient详解
  7. 香帅的北大金融学课笔记18 -- 监管、创新、危机
  8. 王者荣耀服务器维护到什么时候7月9号,王者荣耀7月9号更新产生的新变化
  9. Windows 7 更新补丁大包子
  10. Ubuntu20.04安装yum
  11. LVS的Tun模式(隧道模式)的实现
  12. 数据分析总结四:可视化与数据分析
  13. 诓”妹妹与“旺”夫君
  14. Windows、Linux、Apple三大操作系统的主流文件系统包含哪些?
  15. 图解通信原理与案例分析-21:4G LTE多天线技术--天线端口、码流、分集Diveristy、波束赋形BF、空分复用MIMO、空分多址
  16. 部署到Linux系列教材 (十七)- FTP - ftp客户端
  17. 什么是产业资本和金融资本
  18. c语言如何打印矩形图形的程序 五行七列,C语言程序计 第二讲.printf打印图形.转义字符.格式声明符.doc...
  19. 计算机考研数学试卷,考研数学一般有几种试卷?
  20. JAVA垃圾收集器之G1

热门文章

  1. php 16进制 声明,php16进制转换
  2. 定义并实现一个银行类
  3. Recyclerview 特别好用的局部刷新item方法
  4. matlab拉丁方,基于拉丁方的流密码算法设计与仿真
  5. ubuntu QT Creator Fatal IO error 2 (没有那个文件或目录) on X server :0
  6. 你了解Android中的Activity吗?
  7. [概率练习] n个小球放入m个盒子(8大类)
  8. Gnome3桌面美化
  9. 国内外 48 个最常用学术网站汇总,这可能是史上最全的!
  10. ireport java 变量_iReport —— 使用 JavaBean 作为数据源