有关 Nintendo GameCube
毫无疑问, Nintendo GameCube 在市场上失败了.
毫无疑问, Nintendo GameCube 在技术上成功了.
也许有人怀疑这第二句, 这就是我写这篇文章的原因.
从硬件上来讲, NGC十分的标准, 简洁, 高效.
NGC硬件组成:
大体上, NGC以Art-X Flipper为中心, 北桥连接CPU, 南桥连接24MB 1T-SRAM, 东桥连接Audio DSP, Audio DSP另外连接16MB缓存.
事实上Audio DSP是集成在Flipper中的, PCB上看不到.从这种角度上看, 似乎很像pc.
深入Art-X Flipper, 这块PCB上最大的芯片, 集成了内存控制器, GPU, Audio DSP. 注意, CPU和GPU都直接连接到内存控制器. 在NGC架构中, 没有显存和内存的区别, 24MB 1T-SRAM 同时存放代码, 贴图, 顶点乃至FrameBuffer等等数据. 这24MB 1T-SRAM用得很出彩. CPU可以很方便的对GPU处理过的数据再次进行处理.
1T-SRAM 具体原理就不介绍了, 它最大的特点就是与DRAM相比, 没有随机访问的延迟, 不像DRAM那样需要等待几个时钟周期才会读取到需要的数据.
NGC GPU有个特殊的设计, 就是嵌入式的2MB 1T-SRAM, 这个缓冲区被用作GPU内部的超高速缓冲, 保存有z-buffer之类的数据, 渲染中间过程的临时数据放在这里, 可以不用抢主存的带宽. 注意, 这个设计显然被ATI发扬光大了, XBOX360 GPU中也有这么个玩意, 只不过容量大了不少.
从软件上讲, NGC编程易于掌握.
NGC CPU Gekko是一块IBM PowerPC 750 + Paired Single多媒体扩展指令集, 可以使用工业标准的c/c++, 同时汇编语言也易于掌握.
NGC GPU 从概念上类似于OpenGL, 可以设置大量的状态, CPU通过专用FiFo向其发送渲染命令, 即可完成渲染.
NGC Memory map非常的清晰:
0x00000000 - 0x017FFFFF 物理内存
0x80000000 - 0x817FFFFF cached 逻辑内存
0xC0000000 - 0xC17FFFFF not cached 逻辑内存
0xCC000000 - 0xCC00FFFF 硬件寄存器
0xE0000000 - 0xE0003FFF L2 cache
0xFFF00000 - +1MB IPL(BIOS BOOT ROM)
由于设备全部共享24MB主存, 所以主存被映射到三个地址区域, 为不同的目的服务, 例如程序代码使用cache映射地址.
所有设备的硬件寄存器都依次映射到寄存器地址区域, 详细的分布也是很有规律的.
至于L2 cache为什么也会映射到全局地址空间, 这个并没有文档介绍, 个人估计是为硬件调试器使用的.
NGC模拟器
NGC模拟器自当年Dolphin横空出世之后, 对广大玩家而言, 就没有什么突破性的进展了, 其实质变源于量变, NGC模拟并不是停滞不前, 只是量还积累的不够.
CPU: Gekko使用的PowerPC指令集, 由于RISC的缘故, 并且OPCODE似乎是6bits, 所以解释模拟的话, 目前似乎都是采用查表的方法, 效率还是蛮高的. gcemu采用了动态编译的实现, 效率已经非常令人满意了. Dolphin x64更是利用了x64的64位优势, 不过由于尚未正式发布, 所以其性能无法实际考察.
GPU: Art-X这个显示芯片, 由于似乎和OpenGL有那么一腿, 所以开源的实现无一例外都使用了OpenGL, 其中gcemu采用了OpenGL 2.0规范, 实现了动态生成shader的算法, 所以已经实现的部分, 速度非常得快.
AudioDSP: 很多模拟器作者已经表态, 这是NGC中最难以模拟的部分, 主要是资料的稀少, 基本上都是靠反向工程获取的数据.
由目前我所掌握的源代码来看, 优化的余地还很大, 至少还没有多线程的模拟器实现, 如果CPU和GPU能够多线程并行模拟, 以目前主流配置, 至少在不考虑DSP模拟的情况下应该可以达到全速执行游戏.
转载于:https://www.cnblogs.com/skogkatt/archive/2007/07/04/4163247.html
有关 Nintendo GameCube相关推荐
- CRI陆宵吴:夯实底层,音视频技术未来不远
目前,音视频技术的应用越来越火爆,这也让音视频技术从曾经一个比较小的子系统,越来越让人瞩目,而市场的需求与人才的缺乏也越来越成为一个亟需解决的矛盾. LiveVideoStack特别采访了陆宵吴经理, ...
- Notable magic numbers
Hexspeak From Wikipedia, the free encyclopedia //z 2014-11-11 11:31:41 L.50 '44899 BG57IV3@XCL T4159 ...
- Sky Hackthon比赛指北-基础篇
无图预警,多字预警. 阅读时请保持清醒,有利于发现谬误. 关于Sky Hackthon Sky Hackthon 比赛是由 Nvidia 中国开发者社区举办的,面向国内高校学生的关于算法模型应用比赛, ...
- 音视频基础(四)音频文件格式转换(支持重采样采样位数为24位)
ffmpeg将音频文件重采样为8位.16位.32位的命令比较容易查找,但是重采样为24位却非常非常的少. ffmpeg -i 32.wav -vn -ac 2 -ar 44100 -acodec pc ...
- retroarch java,跨平台模拟器 RetroArch
[推荐]2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RetroArch 是款功能强大的跨平台模拟器,不但能够模拟许多不同的游戏主机,还能在 Windows.Mac ...
- gst-inspect-1.0汇总自用
gst-inspact-1.0列表(完善中) $ gst-inspect-1.0 cluttergst3: clutterautovideosink: Generic bin qmlgl: qm ...
- FFmpeg支持的音频和视频编解码格式
1.音频格式 Name Encoding Decoding Comments 8SVX exponential X 8SVX fibonacci X AAC EX X encoding sup ...
- 感叹游戏行业的飞速发展
现在的游戏大作层出不穷,玩着这些3A大作,有时候不禁让我想起小时候玩小霸王游戏机的时光,虽然小霸王游戏是抄袭任天堂的红白机,但确实给国内的孩子们带来了无限的乐趣.那个时候一起玩耍的小伙伴们,都会要求父 ...
- 从FC到Wii 24年来游戏机CPU发展历程回顾
作者:吴愧 从小学开始,游戏机就伴随着我走过一段快乐.辛酸的历程.宁愿早上饿肚子,也要省吃减用存钱买游戏卡,或者添钱换卡玩.好不容易有钱买到新的游戏卡,高兴得乐翻天,玩到饭都能都忘记吃.对于家里那些F ...
最新文章
- WORD中怎么把文字转换成表格
- spring问题-使用tomcat容器,通过url映射寻找view的时候,会报错
- C# word 转 pdf
- 河北对口计算机计算机网络,河北对口计算机试题及答案.doc
- 字符编码(1)-- 基本概念
- java snap7_Snap7 referance manual PDF 下载
- 大麦无线路由器改装打印服务器,大麦domywifi DW33D路由器固件openwrt重分区版
- python简单爬虫获取行政边界点坐标
- java使用过滤器/拦截器过滤response信息
- lua 遍历删除_lua中table如何安全移除元素
- 当游戏遇上电视,智能大屏就能讲出新故事?
- 计算机共享文件登录人员记录,如何查看共享文件夹的访问记录,查看共享文件访问日志?...
- jQuery基本操作--制作论坛发帖
- linux安装globalsign证书,免费安装 GlobalSign 安全签章 GlobalSign Secured Seal
- 第二证券|钠电池三种技术路线谁更将率先取代锂电池?
- leetcode 区间问题
- WCF 之 什么是WCF
- jmeter测试抓包
- vr性能测试软件,VR性能测试
- 【软考】总结--任性的一个人的朝圣