基于开源FPGA-OpeniCE的NES游戏机
基于开源FPGA-OpeniCE的NES游戏
硬件连接
所需硬件
PMOD VGA扩展板
https://github.com/OpenFPGA-ICE/OpenICE/tree/master/Hardware/PMOD_SubCard/VGA
PMOD NES扩展板
https://github.com/OpenFPGA-ICE/OpenICE/tree/master/Hardware/PMOD_SubCard/NES
FC手柄
最好选用原装手柄。
手柄的协议如图所示:
原理比较简单:协议共有3个信号,Latch、Clock、Data、Latch用于锁存按键值,给一个Latch高电平脉冲,然后在每个clock周期的低电平时读Data,即可依次读出8个按键的值,A、B、SELECT、START、Up、Down、Left、Right。VCC可以直接接3.3V即可。(注意实际上Clock只需7拍即可,Latch脉冲低电平后即可读出第一个按键A的值,后续7个Clock脉冲读出其他7个按键)
扬声器
将上诉硬件和主板按照下面图片连接
综合编译下载
git clone https://github.com/OpenFPGA-ICE/OpenICE/tree/master/demo/Refence/up5k-demos/nes
cd nes
make
make会综合出FC系统的bitstream文件nes.bin,使用icesprog可以进行烧录
sudo icesprog nes.bin
随后,需要将游戏ROM文件打包并烧录至flash偏移1M中,FC启动之后会从此处读ROM文件运行。
cd rom
sudo chmod 777 nes2bin
./nes2bin.py games/139.nes 139.bin
sudo chmod 777 139.bin
sudo icesprog -o 0x100000 139.bin
烧写的游戏是绿色军团,也可自行打包其他nes游戏,可以到52nes(http://www.52nes.com/)下载其他游戏。
<rom/games>下有以下几种游戏: 游戏名 别名
超时空要塞无敌版 Beyondtime
93超级魂斗罗(中文) 93-contra
绿色兵团无限人 76
绿色兵团金身无敌版 92
赤色要塞无敌版 139
冒险岛经典版 smb
演示视频
B站演示视频