14

我一直在阅读有关为 Wii 构建模拟器的人的一些信息,似乎鉴于它只不过是增强型 GameCube 或 Nintendo64,那么是什么让为这些系统构建模拟器如此困难?

顺便说一句,这些系统的硬件非常低:
Wii:
   729MHz PPC CPU
   88MB 内存
   243MHz GPU
N64:
   93.75MHz CPU(64 位)
   4MB 内存

4

4 回答 4

25

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

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

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

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

于 2009-01-23T05:29:54.943 回答
3

仿真困难的原因有很多。

  1. 模拟系统需要比目标系统更多的功率

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

  1. 有时人们不知道指令集和/或子系统的工作原理

大多数硬件本质上是一个黑匣子,通过逆向工程来了解它的工作原理,这需要大量的时间和耐心。更不用说,公司尽最大努力使逆向工程变得困难,并且公司在这个后 Playstation 1 时代变得更好。

  1. 缺乏构建模拟器的人

仿真是一个非常小众的领域,需要许多领域的大量工作知识。坦率地说,能够模仿许多现代系统的人并不多。模拟这些系统需要花费大量时间和精力,而且只有最敬业的人才会真正做到这一点。

于 2015-08-12T06:33:33.300 回答
1

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

在某些情况下,为旧游戏机编写模拟器比为现代游戏机编写模拟器更难。因为,许多现代控制台使用某种形式的 Linux 或 *nix,所以一旦硬件被模拟,软件就是转储机器的 bios 和处理控制权的问题。

较旧的控制台在硬件中完成了所有工作,这意味着逆向工程发挥了更大的作用。您需要非常优秀的低级黑客来帮助您记录旧控制台的工作原理以及每个幻数的含义。

今天,魔幻数字变少了,取而代之的是标准的 GFX 卡和 CPU。尽管现代硬件有更多的指令和闪亮的小玩意可以模仿。与旧游戏机不同,现代游戏机所做的许多事情都有据可查。

于 2016-05-16T12:25:08.670 回答
0

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

于 2013-09-24T01:45:58.677 回答