在国内因为外观被称为红白机的任天堂FC(欧美版叫NES),或者说Famicom(典型的日式英语缩写),小时候我们都喜欢玩FC,现在仍有很多人想做出属于自己的游戏机(模拟器),而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模块我们只需要使用两个引脚即可获得所有按键的状态。
源码将会有详细的视频教程讲解,点击这里访问教程发布地址
待续…
Freemarker FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文...
Html语义化, 似乎是一个老生常谈的问题. Google 一下,也有大把关于语义化的文章....
角色 ( Role ) 可以用来批量管理用户,同一个角色下的用户,拥有相同的权限。那 ...
SpringMVC下获取验证码实例详解 前言: 1.用户一开始登录的时候, 不建议出现验证...
Part1 背景 锁作为 MySQL 知识体系的主要部分之一,是每个 DBA 都需要学习和掌握...
3月11日消息 外媒 DrWindows 报道,早在 2017 年,微软就发布了 Windows 10 创意...
通配符 * 任意字符,可重复多次 任意字符,重复一次 [] 代表一个字符 举例: [a,b,c...
在日常工作中,发现 MySQL 的状态不太对劲的时候,一般都会看看监控指标,很多时...
索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。M...
原型链继承 原型链继承是ECMAScript的主要继承方式。其基本思想就是通过原型继承...