目录
简介
技术要求
参考
1) 国内玩家自制游戏卡
2)N8 N8pro
3)powerpak
4)FC模拟器软件
N8 pro的实现方案的信息收集
先了解一下各个芯片的功能
N8开发者提供的资源信息
Powerpak
Nesdev wiki和forum
简介
整个开发的目的就是做一个FPGA实现的,可以支持多种FC游戏(多种mapper)的游戏卡。
这个开发思路国内外都有实现,包括:
1)90年代的盗版卡,用逻辑器件实现mapper(mmc)功能,包括盗版mmc控制芯片,如AX5202P等。
2)FPGA实现方案,如著名的乌克兰人制作的N8,N8 Pro游戏卡,powerpak等。
3)现在淘宝上卖的多合1或单卡的游戏卡,一般是支持一种mmc,比如mmc1,mmc3,vrc4等。有用FPGA实现的。
4)NES FPGA游戏机实现。这种一般输出是用RGB,满足FC游戏爱好者的高清显示。
5)软件模拟器,无论是用树莓派(高性能嵌入式6052指令模拟),PC端的各种FC模拟器,都是一种思路,软件模拟指令,软件模拟各种mapper实现。
技术要求
本人的技术基础是自动化专业转嵌入式软件开发,大学学了点数字的皮毛。整个笔记也是学习流程的笔记。
从N8或者N8 Pro的实现看,需要的技术大致如下:
1)N8 Pro上有一块STM32F401芯片,需要有ARM开发技术,usb固件更新(windows驱动开发,windows的固件管理软件开发),SD卡(fatfs文件系统支持),Atmelu TINY13A(avr的CIC芯片功能实现,这个可以不用管,是美版卡的功能)。
2)FPGA设计(目前不会)
3)PCB画板,布线(只能看懂PCB图)
4)6052(任天堂的2A03)架构学习,了解CPU的基本功能。汇编编程,需要做一个游戏菜单(或者称为N8pro那样的nesos)。
参考
1) 国内玩家自制游戏卡
干一票大的!用FPGA制作红白机游戏烧录卡 - 创意DIY 数码之家
具体思路和他一样,这个是最简系统的实现,提供了开发环境的搭建。
2)N8 N8pro
EverDrive N8 PRO
这个是完全态的实现。先做一个基础功能的,其他的慢慢实现。
3)powerpak
https://www.retrousb.com/product_info.php?products_id=34
也是FPGA实现,也实现了多种mapper,功能要比N8简单很多,但作者提供了比较多的资料可以作为参考。早年做到了,应该也不维护了。
4)FC模拟器软件
virtuanessrc097,fceux-2.6.5。里面的代码实现可以参考,比如mapper实现,存档,sound。
机制都差不多,具体软件还是硬件实现有区别。
N8 pro的实现方案的信息收集
开发者:The Everdrive N8 is a Flash Cartridge made by Krikzz(乌克兰人)
N8Pro的PCB板
N8 PCB板
先了解一下各个芯片的功能
Everdrive N8 - NESdev Wiki
上面链接提供了N8各个芯片的简单功能说明(N8 pro也有信息,但说明比较少),总结如下:
1)LVCH162245A:5v-3.3v电源转换,因为FC卡带管脚电平是5V的,如果直接接FPGA管脚,有可能会损坏芯片(目前淘宝上的多合1卡省掉了这块,有些flash芯片是3.3v的,直接接5v,有些风险,不过可以节省成本)。N8是三块,N8 pro四块(这种设计比较适合我,懒的思考为什么有些控制管脚可以用电阻降压连接)。
2)Cyclone II EP2C5T114:mapper实现功能。4608个逻辑单元,每次从游戏 菜单加载游戏的时候,把对应的mapper文件加载到该芯片。(为什么不先全部加载呢:所有mapper的实现在一个芯片对FPGA资源要求比较高,增加了芯片成本,用一个小的芯片可以实现同样的功能,只是牺牲一点性能)。
3)CY7C1049CV33T:N8的两块512KB的SRAM。通过游戏菜单选择游戏之后,sd卡读取的文件,把文件中的PRG-rom和CHR-ROM内容分别存放在这两个芯片。CHR-ROM也可以作为CHR-RAM(游戏游戏卡作为RAM)。
4)IS52LV1024:128KB,游戏存档SRAM芯片。
5)29W160 (2MB): Flash (BIOS)
5)Altera Max II CPLD (EPM240T100C5):glue logic(原文)。
那做了哪些事呢(我的分析)?SD(SPI)接口实现TF卡读写(读游戏,写存档),从Flash加载FPGA配置文件,加载BIOS(游戏菜单),向FPGA芯片加载mapper。
N8 Pro提供了更多功能:
1)STM32F401:提供一个SDIO接口,可以比N8更快的读取游戏文件。usb接口,os更新管理,也可以在调试阶段下载mapper文件。CPU还提供了RTC,可以在存档文件名中加入保存日期。
2)更换了两块FPGA,提供更高的性能和资源。因N8 CPLD的部分功能由STM32接管,但游戏卡提供了更多的功能,比如实时存档,cheat,游戏保存和游戏存档加载。
3)CIC芯片的实现(美版要求)。可以支持更多的美版游戏ROM。
4)三块SRAM都比N8大,满足所有游戏大小需求,存档空间更多,可以有100个slot。
N8开发者提供的资源信息
1)首先就是N8和N8的用户使用手册,相当于一个功能需求说明文档。里面介绍了游戏卡支持的功能,菜单说明。
2)os文件,提供用户下载更新新的mapper或者nesos文件。
N8 os文件包有什么内容呢:解开文件包有下面的内容,maps文件夹存放支持的fpga mapper(rbf)文件,mapprout.bin是个mapper号和mapper文件的索引映射文件。详细的说明见
EDN8-PRO/mappers at master · krikzz/EDN8-PRO · GitHub
的readme.txt。os.bin就是更新到bios芯片加载的n8菜单功能的?(包括CPLD的bin吗?)
N8 pro os文件包内容:类似N8.
N8 pro还有个usb tool(edlink),可以下载更新mapper,os,设置rtc时间,写板上flash芯片。
3) githut项目
EDN8-PRO/mappers at master · krikzz/EDN8-PRO · GitHub
作者开源了mapper部分的FPGA实现(只有mapper0,2,255,255可能是nesos使用),edlink(usb工具,c#实现)。 nsf(从游戏卡加载之后可以播放nsf格式的游戏音乐)。
4)nesos分析
可以用nesmapperprogrammer20工具(分析nes文件格式和分离pgr和chr文件的工具)分析nesos信息。
nfs.nes可以用模拟器直接加载运行,显示播放nsf的菜单。
nesos.nes用模拟器加载之后没反应,用winhex打开之后,在NES头之后8KB空间没有内容(全是0,为什么?这部分是从哪儿填充的)。用nesmapperprogrammer20分析之后显示是mapper15,但用老版本的模拟器弹出mapper255,不支持该mapper。
Powerpak
PowerPak - NESdev Wiki
上面链接是Powerpak的wiki,介绍了boot rom信息
Index of /
上面的链接是开发者提供了源代码:包括启动菜单的是nes汇编实现,fpga mapper的实现,比较简单但可以很有用。文章来源:https://www.toymoban.com/news/detail-732635.html
Nesdev wiki和forum
FC(NES)黑客玩家的集中地,提供了海量资源。文章来源地址https://www.toymoban.com/news/detail-732635.html
到了这里,关于NES(FC) FPGA游戏卡开发笔记(1)---- 开始篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!