Что делает так, чтобы эмуляторы игровых консолей

Я читал о людях, создающих эмулятор для Wii, и кажется, что, учитывая, что это не что иное, как усиленный GameCube или Nintendo64, так что так сложно создавать эмуляторы для этих систем?

В незначительной части примечания аппаратное обеспечение для этих систем удивительно низкое:
Wii:
    729 МГц процессор PPC
    88MB Память
    243MHz GPU
N64:
    93.75MHz CPU (64-бит)
    Память 4MB

Ответ 1

Архитектура процессора для игровых консолей часто несколько экзотична по сравнению со средним настольным компьютером. Эмуляция означает выполнение в программном обеспечении всего, что делало оригинальное оборудование. То есть, хотя на исходной консоли могут быть выделенные графические, аудио и т.д. Чипы, а также процессор с другим набором команд, эмулятор должен выполнять все функции этих параллельных ресурсов со скоростью.

Если консольный GPU не устарел, его почти наверняка нужно эмулировать на GPU хост-машины, так как современные графические карты, даже дешевые, имеют многократно пропускную способность (для графических рабочих нагрузок) даже самых дорогих многоядерных процессоров, Сложность этой трудности заключается в том, что связь между процессором, графическим процессором, любыми другими встроенными DSP и памятью была, по-видимому, очень оптимизирована на консоли, чтобы воспользоваться особенностями конфигурации оборудования, и поэтому эти ресурсы также должны соответствовать скорости.

Сочетание всех этих трудностей, как правило, мало известно о специфике аппаратного обеспечения консоли, поскольку это очень сильно подкрепляется дизайном. Обратное проектирование становится все менее доступным для любителей.

Чтобы взглянуть на вещи, архитектурный симулятор (программа, которая может запускаться, например, программа PowerPC на машине x86 и собирать всевозможные статистические данные об этом), может работать от 1000x до 100000x медленнее, чем в реальном времени. RTL-симуляция (имитация всех ворот и триггеров, составляющих чип) современного процессора, обычно может работать только от 10 Гц до нескольких сотен Гц. Даже очень оптимизированная эмуляция, вероятно, будет в 10-100 раз медленнее, чем собственный код, тем самым ограничивая то, что сегодня можно эмулировать убедительно (особенно учитывая интерактивность в реальном времени, подразумеваемую эмулятором игровой консоли).

Ответ 2

Существует множество причин, по которым эмуляция сложна.

  • Эмуляция системы требует гораздо большей мощности, чем целевая система.

Иногда хост-системе требуется на порядок больше мощности (скорости), чем целевая система. Это легко понять, если вы считаете, что хост-компьютер должен выполнять всю работу исходной системы, а затем еще большую работу по управлению всей связью между компонентами, а также совместное использование системных ресурсов с другими приложениями. Вот почему процессор 2 ГГц требует точного эмуляции SNES, который работает на уровне 21 МГц.

  1. Иногда наборы команд и/или подсистемы не известны людям

Большинство аппаратных средств - это, по сути, черный ящик, и понимание того, как это работает, выясняется с помощью обратной инженерии, которая требует много времени и терпения. Не говоря уже о том, что компании стараются изо всех сил сделать сложную реверсивную инженерию, и компании стали намного лучше на этом этапе Playstation 1.

  1. Отсутствие людей, создающих эмуляторы.

Эмуляция - довольно привлекательная область, требующая большого количества рабочих знаний во многих доменах. Чтобы быть откровенным, не так много людей, способных имитировать многие современные системы. Эмуляция этих систем требует много времени и усилий, и только самые преданные на самом деле это сделают.

Ответ 3

Написание эмуляторов сложно, потому что вы должны полностью/полностью/полностью воспроизвести упомянутое аппаратное поведение, в том числе поведение ОС в программном обеспечении.

Написание эмуляторов для более старых консолей в некоторых случаях было труднее, чем писать эмуляторы для современных консолей. Потому что много современных консолей используют некоторую форму Linux или * nix, поэтому, когда аппаратное обеспечение эмулированного программного обеспечения является дезинтеграцией машинной биосистемы и управлением над контролем.

Старые консоли сделали все на аппаратном уровне, а это значит, что обратная инженерия играла гораздо большую роль. Вам нужны были очень хорошие хакеры низкого уровня, чтобы помочь вам документировать, как работает старая консоль, и что означало каждое волшебное число.

Сегодня меньше магических чисел, а вместо этого стандартные карты GFX и процессоры. Хотя современное оборудование имеет намного больше инструкций и блестящих doodads для подражания. Многие из того, что делают современные современные консоли, хорошо документированы, в отличие от более старых консолей.

Ответ 4

Это просто потому, что игровая программа написана для этого конкретного оборудования, чтобы он мог использовать все свои преимущества. Даже если у вас суперкомпьютер, он не может нормально работать с определенными программами, которые не могут взаимодействовать с оборудованием самого суперкомпьютера. Такая же ситуация, если вы запускаете компьютерные игры на консолях, таких как PS3/4 или xbox One. Единственный эмулятор, который работает на 99%, - это эмулятор Snes и PS1.