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

问题描述 投票:0回答:4

我一直在阅读一些关于人们为 Wii 构建模拟器的文章,考虑到它只不过是一个增强的 GameCube 或 Nintendo64,那么是什么让为这些系统构建模拟器如此困难呢?

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

emulation
4个回答
26
投票

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

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

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

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


4
投票

仿真困难的原因有很多。

  1. 仿真系统需要比目标系统更多的功率

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

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

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

  1. 缺乏构建模拟器的人

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


1
投票

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

在某些情况下,为旧游戏机编写模拟器比为现代游戏机编写模拟器更困难。因为,许多现代控制台使用某种形式的 Linux 或 *nix,因此一旦硬件被模拟,软件就需要转储机器的 BIOS 并处理控制权。

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

如今,魔法数字越来越少,取而代之的是标准 GFX 卡和 CPU。尽管现代硬件有更多的指令和闪亮的小玩意可以模拟。与旧的控制台不同,现代控制台的许多功能都有详细记录。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.