是什么让构建游戏机模拟器如此困难

时间:2009-01-23 05:20:22

标签: emulation video-game-consoles

我一直在阅读有关人们为Wii构建模拟器的一些阅读,看来它只不过是一个强化的GameCube或Nintendo64,那么是什么让这些系统的构建模拟器变得如此困难?

稍微注意一下,这些系统的硬件出乎意料地低:
Wii游戏机:
729MHz PPC CPU
88MB内存
243MHz GPU
N64:
93.75MHz CPU(64位)
4MB内存

4 个答案:

答案 0 :(得分:22)

与普通台式机相比,游戏机的CPU架构通常有点奇特。 仿真意味着在软件中执行原始硬件所做的一切。也就是说,虽然原始控制台可能具有专用图形,音频等芯片以及具有不同指令集的CPU,但仿真器必须以速度执行这些并行资源的所有功能。

除非控制台的GPU老旧,否则几乎肯定必须在主机的GPU上进行仿真,因为即使是最昂贵的多核CPU,现代显卡甚至是廉价显卡的吞吐量(图形工作负载)也是很多倍。 。使这一困难更加复杂的是,CPU,GPU,任何其他板载DSP和内存之间的通信可能在控制台上进行了高度优化,以利用硬件配置的细节,因此这些资源也必须进行速率匹配。

复杂化所有这些困难,通常对控制台硬件的细节知之甚少,因为它在设计上非常不受欢迎。对于业余爱好者来说,逆向工程越来越不可行。

为了正确看待问题,架构模拟器(例如,可以在x86机器上运行PowerPC程序并收集有关它的各种统计信息的程序)可能比实时慢1000x到100000x。现代CPU的RTL仿真(模拟构成芯片的所有门和触发器)通常只能在10Hz到几百Hz之间运行。即使非常优化的仿真也可能比本机代码慢10到100倍,因此限制了今天可以令人信服地模拟的内容(特别是考虑到游戏控制台模拟器隐含的实时交互性)。

答案 1 :(得分:2)

模拟困难的原因有很多。

  1. 模拟系统需要比目标系统更多的功率
  2. 有时主机系统需要比目标系统多一个数量级的功率(速度)。如果您认为主机需要完成原始系统的所有工作,然后更多工作来管理组件之间的所有通信,同时还与其他应用程序共享系统资源,这很容易理解。这就是为什么需要一个2GHz的处理器来忠实地模拟运行在21MHz的SNES的SNES。

    1. 有时人们不知道指令集和/或子系统工作
    2. 大多数硬件本质上都是一个黑盒子,并且通过逆向工程来理解它是如何工作的,这需要花费大量的时间和耐心。更不用说,公司尽力使逆向工程变得困难,公司在Playstation 1时代的后期变得更好。

      1. 缺乏构建模拟器的人
      2. 仿真是一个非常小众的领域,需要在许多领域拥有大量的工作知识。坦率地说,没有很多人能够模仿许多现代系统。模拟这些系统需要花费大量的时间和精力,只有最专注的人才能真正做到这一点。

答案 2 :(得分:1)

编写仿真器很难,因为您必须完全/完全/绝对地复制所述硬件行为,包括它在软件中的操作系统行为。

在某些情况下,为旧控制台编写模拟器比为现代控制台编写模拟器更难。因为,许多现代控制台都使用某种形式的Linux或* nix,因此一旦硬件被模拟软件就是倾倒机器的BIOS和处理过度控制的问题。

旧的控制台在硬件方面做了一切,这意味着逆向工程扮演了更重要的角色。你需要非常好的低级别黑客来帮助你记录旧控制台的工作方式以及每个幻数的含义。

今天,有更少的魔术数字,而是标准的GFX卡和CPU。虽然现代硬件有更多的指令和闪亮的小玩意儿来模仿。与旧款游戏机不同,现代游戏机的许多功能都有很好的记录。

答案 3 :(得分:0)

这只是因为游戏程序是针对特定硬件编写的,因此它可以利用其所有硬件优势。即使您有一台超级计算机,也无法正常运行无法与超级计算机本身的硬件通信的特定程序。如果您在PS3 / 4或xbox One等游戏机上运行PC游戏,情况也是如此。唯一可以工作99%的仿真器是Snes仿真器和PS1。