毫无疑问, 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相关推荐

  1. CRI陆宵吴:夯实底层,音视频技术未来不远

    目前,音视频技术的应用越来越火爆,这也让音视频技术从曾经一个比较小的子系统,越来越让人瞩目,而市场的需求与人才的缺乏也越来越成为一个亟需解决的矛盾. LiveVideoStack特别采访了陆宵吴经理, ...

  2. Notable magic numbers

    Hexspeak From Wikipedia, the free encyclopedia //z 2014-11-11 11:31:41 L.50 '44899 BG57IV3@XCL T4159 ...

  3. Sky Hackthon比赛指北-基础篇

    无图预警,多字预警. 阅读时请保持清醒,有利于发现谬误. 关于Sky Hackthon Sky Hackthon 比赛是由 Nvidia 中国开发者社区举办的,面向国内高校学生的关于算法模型应用比赛, ...

  4. 音视频基础(四)音频文件格式转换(支持重采样采样位数为24位)

    ffmpeg将音频文件重采样为8位.16位.32位的命令比较容易查找,但是重采样为24位却非常非常的少. ffmpeg -i 32.wav -vn -ac 2 -ar 44100 -acodec pc ...

  5. retroarch java,跨平台模拟器 RetroArch

    [推荐]2019 Java 开发者跳槽指南.pdf(吐血整理) >>> RetroArch 是款功能强大的跨平台模拟器,不但能够模拟许多不同的游戏主机,还能在 Windows.Mac ...

  6. gst-inspect-1.0汇总自用

    gst-inspact-1.0列表(完善中) $ gst-inspect-1.0  cluttergst3:  clutterautovideosink: Generic bin qmlgl:  qm ...

  7. FFmpeg支持的音频和视频编解码格式

    1.音频格式 Name Encoding Decoding Comments 8SVX exponential   X 8SVX fibonacci   X AAC EX X encoding sup ...

  8. 感叹游戏行业的飞速发展

    现在的游戏大作层出不穷,玩着这些3A大作,有时候不禁让我想起小时候玩小霸王游戏机的时光,虽然小霸王游戏是抄袭任天堂的红白机,但确实给国内的孩子们带来了无限的乐趣.那个时候一起玩耍的小伙伴们,都会要求父 ...

  9. 从FC到Wii 24年来游戏机CPU发展历程回顾

    作者:吴愧 从小学开始,游戏机就伴随着我走过一段快乐.辛酸的历程.宁愿早上饿肚子,也要省吃减用存钱买游戏卡,或者添钱换卡玩.好不容易有钱买到新的游戏卡,高兴得乐翻天,玩到饭都能都忘记吃.对于家里那些F ...

最新文章

  1. WORD中怎么把文字转换成表格
  2. spring问题-使用tomcat容器,通过url映射寻找view的时候,会报错
  3. C# word 转 pdf
  4. 河北对口计算机计算机网络,河北对口计算机试题及答案.doc
  5. 字符编码(1)-- 基本概念
  6. java snap7_Snap7 referance manual PDF 下载
  7. 大麦无线路由器改装打印服务器,大麦domywifi DW33D路由器固件openwrt重分区版
  8. python简单爬虫获取行政边界点坐标
  9. java使用过滤器/拦截器过滤response信息
  10. lua 遍历删除_lua中table如何安全移除元素
  11. 当游戏遇上电视,智能大屏就能讲出新故事?
  12. 计算机共享文件登录人员记录,如何查看共享文件夹的访问记录,查看共享文件访问日志?...
  13. jQuery基本操作--制作论坛发帖
  14. linux安装globalsign证书,免费安装 GlobalSign 安全签章 GlobalSign Secured Seal
  15. 第二证券|钠电池三种技术路线谁更将率先取代锂电池?
  16. leetcode 区间问题
  17. WCF 之 什么是WCF
  18. jmeter测试抓包
  19. vr性能测试软件,VR性能测试
  20. 【软考】总结--任性的一个人的朝圣

热门文章

  1. 用telnet 测试Http协议
  2. python selenium p_python selenium 常见问题列表
  3. “2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席
  4. 滴滴 Flink-1.10 升级之路
  5. 阿里云RDS vs 自建MySQL,这篇评测终结你的选择困难症!
  6. 雨中冒险:难度随时间增高的设计
  7. 交互设计的114条原则
  8. 服务端构架干货:快节奏多人游戏的技术实现
  9. 防范sql注入式攻击(Java字符串校验,高可用性)
  10. 原生js cookie本地存储