Почему так сложно разработать эмулятор игровой приставки?

14

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

Кроме того, я хотел бы получить несколько советов о том, с чего начать, и где я могу найти нужную информацию?

Майк
источник

Ответы:

15

ТАК Вопрос

Кажется, это популярный ресурс о том, как они работают.

TL; DR - архитектура совершенно иная, и для достижения исходной архитектуры требуется много параллельных ресурсов.

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

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

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

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

Коммунистическая утка
источник