NES(FC) FPGA游戏卡开发笔记(1)

您所在的位置:网站首页 fc游戏编程教程 NES(FC) FPGA游戏卡开发笔记(1)

NES(FC) FPGA游戏卡开发笔记(1)

2024-03-12 14:55| 来源: 网络整理| 查看: 265

目录

简介

技术要求

参考

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的实现,比较简单但可以很有用。

 Nesdev wiki和forum

FC(NES)黑客玩家的集中地,提供了海量资源。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3