技术标签: python java 编程语言 人工智能 大数据
超级任天堂1990年11月21日在日本开始发售,北美于1991年8月13日发售,欧洲于1992年4月11日发售。
超级任天堂,简称超任,是任天堂公司开发的家用游戏机。英文名称Super Famicom,简写SFC;在欧美洲销售的产品名为Super Nintendo Entertainment System,简写SNES。超级任天堂是任天堂红白机的后继机种。由于芯片组的复杂,中国鲜有“复制品”出现。
所以今天就来聊一聊SNES的芯片组及其特殊性,同时带来FPGA实现SNES的开源方案。
SNES和现今的PC芯片组很相似-CPU+显卡+声卡组成,同时SNES为了处理复杂的运算增加了一颗DSP芯片,下面就按照组成一个一个介绍。
下图是整机的框图:
整机的总线互联如下:
CPU总线使用的是从6502继承过来的类ISA总线。
SNES 的 CPU (中央处理单元)是基于 65c816 的处理器-5A22《一块带给无数人年少欢乐的CPU,别说你没用过它在00-中的硬件寄存器);用于慢速访问(即和)和用于非常慢的访问(即4000-在00 到 $3F 中的硬件寄存器 )。这种变速模式来源于6502有一个叫做“ZERO-PAGE”的寻址模式,但是进行了进一步扩展。
它是一个带有 24 位总线的 16 位处理器(16 位数据指针和 8 位组指针)。支持16MB的寻址空间。它有一个计算器和两个寄存器,可以在8位或16位模式之间切换。
然而,它具有许多寻址模式。它使用可变宽度指令。单个指令的宽度可以根据某些寄存器的长度而变化。
SNES有两个特制的图像处理器,主要运行于256×224的分辨率,最高支持512x448的分辨率,最大发色数32768色,最大同屏幕显示256色,最大活动块数为128个,并支持缩放、回旋、马赛克、半透明、窗口、光栅等特效。
辅助CPU采用一颗SPC700(索尼推出),是一个8位的CPU核心,很接近6502,但有一些不同的寻址模式和复数/分割指令,与一个定制的数字声音信号处理器共同集成在一个模块中。SPC700和65c816通过一个4路双向通道(8位I/O端口)通讯。SPC700有自己独立的64K内存,可以用来存储声音采样或者从65c816下载的程序。CPU有一个内建的64K ROM开机码,用来通过65c816从游戏ROM里加载更多的复杂程序或者采样数据。这个ROM可以被关闭,以存储开机码的64K RAM来代替它的工作。
声音数字信号处理器(Sound DSP)只能播放压缩的声音采样。这种使用一固定比率的压缩算法,可以将16个16位声音采样压缩成8字节加一字节标题的形式。一个采样的最小单位是一个区块,区块的标题字节包含一个移位和一个过滤值(算法解压信息),再加上一个最后区块标记和一个循环标记。循环标记仅仅在最后区块标记存在时才使用。
在同一时间内,最多允许有8个声音通道同时播放声音采样,每个声音通道都有单独的左右声道音量和频率的调节。每个通道都可以定义一个硬件音量调节,并各自设置其回声效果,不过复合的回声效果必须受制于一个8路的FIR声音分流器。一个通道的声音输出可以用来调整在数字序列上的下一个声音通道的频率。DSP也有一个白噪音源,可以播放一个替代采样数据的声音通道。所有的8个音源连同回声数据最后都混合到一个双通道的主音量控制下。DSP有3个间隔定事器,头两个运行在8KHz下,最后一个是64KHz。游戏通常只使用三个中的一个来输出一个恒定的音乐回放频率。
顺便一提SNES的声音处理芯片SPC700是PS之父久多良木负责设计的,所以说索尼大法好可不是白叫的。
声优芯片和整机总线如下图所示:
SNES 的 S-DSP (数字信号处理器)用于向扬声器输出数据。产生的声音以 32 KHz 运行。S-DSP 使用比特率降低将所需的大小减少到原始大小的 9/16。S-DSP 是「自带鬼畜」,你输入一个PCM格式的音源进去,比如把F♂A乐器输入进去,然后往sound chip的寄存器里写入你要的包络,音调之类的,sound chip上的协处理器就会帮你处理输出,其实就和做音乐用的合成器播放软音源差不多。
DSP-1是一种主要用于数学和伪 3D 投影的芯片。这通常使用model 7。这是其中最常用的芯片。它也适用于 2D 旋转等。
SA-1是 CPU 的更快版本,但在访问方面存在一些差异。它带有“I-RAM”和“BW-RAM”。它通常以大约 11 MHz 的速度运行,当访问与 CPU 相同的东西时,它的速度为 5 MHz。
GSU是著名的 SuperFX 芯片的技术名称。GSU 可用于绘制颜色。它在很多方面都比 SNES 的 CPU 更强大。它是一个伪RISC。它可用于绘制许多事物,例如精灵和对象的旋转或制作伪 3D 效果。
CX4是 Capcom 使用的芯片,它在三角和图形方面非常强大。它可以绘制线条、波浪和 3D 线框,旋转精灵并进行三角计算等。应用到的游戏包括:洛克人X2,洛克人X3 等卡普空街机移植作品。
数据解压芯片,解压使用 ASIC 无算压缩算法压制的数据,它活跃在 SFC 主 CPU 和 ROM之间,负责透明实时数据解压工作,针对一些资源太大的游戏,为了节省卡带空间成本而引入了该芯片,使用游戏包括:星之海洋,街霸 Alpha 2 等。
还是GameGirl硬件
开源地址:
https://github.com/suisuisi/gamegirl/tree/master/Hardware
上面的CPU和SPC700都已经介绍过了。
chip文件夹下还有上面介绍的芯片,组成芯片组:
开源地址:
https://github.com/suisuisi/gamegirl/tree/master/CoreCPU/SNES
将编译产生的.rbf文件拷贝到SD卡的根目录:
产生的二进制文件在下面路径:
https://github.com/suisuisi/gamegirl/tree/master/Binaries/cores/snes
然后将游戏同步放到SD卡里,通过OSD就可以选择游戏,注意游戏启动及中间过渡阶段会有黑屏,所以需要等待。。。
时间仓促还没来得及拍视频,后续补上。
NOW现在行动!
学习Xilinx FPGA最好的资料其实就是官方手册,下表总结了部分手册的主要介绍内容,关注我,持续更新中......
文件名 | 主标题 | 内容简单介绍 | 是否有中文版 | |
UG476 | 7 Series FPGAs GTX/GTH Transceivers | GTX和GTH介绍,PCIe、serdes等学习必备 | 否 | |
UG471 | 7 Series FPGAs SelectIO Resources | 描述 7 系列 FPGA 中可用的 SelectIO资源。 | 否 | |
UG1114 | PetaLinux Tools Documentaton | PetaLinux 工具文档 参考指南 | 是,V2019.2 | |
UG949 | UltraFAST 设计方法指南(适用于 Vivado Design Suite) | 赛灵思 UltraFast 设计方法是用于为当今器件优化设计进程的一套最佳实践。这些设计的规模与复杂性需要执行特定的步骤与设计任务,从而确保设计每一个阶段的成功开展。依照这些步骤,并遵循最佳实践,将帮助您以最快的速度和最高的效率实现期望的设计目标 | 是,V2018.1 | |
IP手册 | pg057 | FIFO Generator | FIFO生成器IP使用手册 | 否 |
pg104 | Complex Multiplier | 复数乘法器IP使用手册 | 否 | |
pg122 | RAM-Based Shift Register | 移位寄存器IP使用手册 | 否 |
推荐阅读
【Vivado那些事】Vivado中常用的快捷键(二)其他常用快捷键
图书推荐|ARM Cortex-M0 全可编程SoC原理及实现
Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目
高速串行通信常用的编码方式-8b/10b编码/解码
Verilog计时(微秒、毫秒和秒)脉冲的产生及同步整形电路
再说System Verilog 与 Verilog 的关系
文章浏览阅读1.7k次。java得到浏览器ip//获取请求IPString ip = request.getHeader ("x-forwarded-for");if (ip ==null || ip.length() ==0 || "unknown".equalsIgnoreCase (ip)) { ip = request.getHeader ("Proxy-Client-IP");}if (ip ==..._java获取浏览器ip
文章浏览阅读195次。利用数字孪生技术打造的实景三维可视化管理平台,对各个智能化系统进行集成及历史数据技术的挖掘和分析,提高了数据信息的应用能力和反馈能力,同时也提升了景区的运营管理水平和决策能力。_三维景区平台年度绩效目标
文章浏览阅读2.4w次,点赞4次,收藏25次。ServerGuide 下载 1、ibm_utl_sguide_8.42_anyos_x86-64 http://pan.baidu.com/s/1hq43QSk 2、ibm_utl_sguide_9.22_x86-64 http://pan.baidu.com/s/1mgp2O_serverguide下载
文章浏览阅读801次。信息学奥赛一本通 1100:金币国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续n天每天收到n枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。_清清将巧克力作为工资,发放给忠诚的奥赛选手。第一天,奥赛选手收到一枚巧克力;之
文章浏览阅读480次。2019独角兽企业重金招聘Python工程师标准>>> ..._kubeflow 入门到精通
文章浏览阅读37次。一些名词解释1.JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。2.环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或
文章浏览阅读1.8k次。Oracle数据库取出部分字段的方法发布时间:2020-06-16 13:39:51来源:亿速云阅读:102作者:鸽子如:表所有字段:背景色为要取出的字段unit表:num, bm, dw_name, dw_name_pre, dw_codework表: name, do, check, isdel, writetime, qy_code其中,unit表dw_code == work表qy_cod..._oracle中如果数据量太大如何取别的表的字段
文章浏览阅读74次。java计算机毕业设计HTML5历史车轮—汴京网站源码+mysql数据库+系统+lw文档+部署。springcloud基于微服务架构的乐居租房网的设计与实现。ssm+sqlserver中小型连锁超市配送中心库存管理系统。springboot物流车辆规费管理系统的设计与实现。springboot在线问诊系统的设计与实现。ssm基于移动端的校园请假系统的设计与实现。ssm基于java的钢材出入库管理系统。
文章浏览阅读927次,点赞2次,收藏3次。MySQL为了让我们的表结构里面的数据完整性一致性非常强,mysql是给我们提供强约束的,在建表的时候就要把约束建立好。_怎么让数据库 不是null
文章浏览阅读4.7k次,点赞12次,收藏41次。1:环境:VS2017 QT 5.12.4(1)说明:Qt是不能直接调用C#生成的dll,需要将C#的编写的dll通过CLR编译成lib(2)检查VS环境是否装好:看下图勾选部分是否安装,没有安装需及时安装_qt调用c#dll
文章浏览阅读88次。java计算机毕业设计口红专卖网站源码+mysql数据库+系统+lw文档+部署。ssm基于SSM+VUE技术的小区车辆档案车位管理系统设计与实现。jsp网上花卉销售系统的设计与实现sqlserver。springboot烟草经销平台的设计与实现。jsp基于web的面向公众的食品安全知识系统。springboot智能推荐的卫生健康系统。ssn基于SSM宠物店管理系统的设计与实现。
文章浏览阅读1.9k次。从 1995 年第一个版本发布到现在,Java 语言已经在跌宕起伏中走过了 26 年,最新的 Java 版本也已经迭代到 Java 16。java是有一个庞大的生态系统,它的覆盖范围非常广,而且已经连续十几年位居开发语言的榜首,所以java是相对于其他语言来说,非常稳定的。JAVA市场java有非常广泛的应用市场,它的生态系统几乎涵盖了目前市面上所有的软硬件,java几乎是万能的,你能想到的,java基本都能实现(虽然吹的有点大,但不可否认)。web开发:能做大型的互联网网站如,京东,.._java教程