Как сделать эмулятор

Добавил пользователь Alex
Обновлено: 16.09.2024

Часовой пояс: UTC + 3 часа [ Летнее время ]

Как создать эмулятор?

Ничего себе PSX простая система
Мне было бы интересно почитать, "просто так". Хоть я и представляю, как устроена приставка и эмулятор.
Вообще говоря, имхо, если человек задаётся вопросом "как написать эмулятор?", это значит, что ему рано писать эмулятор. Скорей всего, он даже не знает элементарных вещей, не знает, как устроены отдельные узлы и не умеет грамотно проектировать программы. Постепенно он сам придёт к ответу. В двух словах это всё не объяснить.

_________________
Мысль - это интеллектуальный эксцесс данного индивидуума.

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

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

И я с интересом почитаю, если будет красиво и полно, несмотря на то что имею опыт. И идея с PSX мне тоже нравится. :-D

Это действительно интересно и полезно. Даже в случае если бы на форуме никто не интересовался подобным(что я говорю? на эму-раше никто не интересуется тем как создают эмуляторы? невозможно!) это было бы ценной информацией для тех кто искал бы её. Ничего против PSX не имею, а если это ещё и как-то сможет отразиться на эмуляции оной(например edgbla улучшит свои плагины), то всецело за.

Хочется сделать денди-режим в оригинальном нинтендуляторе.
Я пробовал это сделать, но единственное, что смог - это заменить DPCM и Noise PAL-таблицы на NTSC-таблицы
(решена проблема с несоответствием тона DPCM и остальных каналов).
Частоту CPU и тайминги не осилил - а это одна из наиважнейших вещей
С нестопией в этом плане все понятно. Частоты, тайминги - все значения расписаны, стоит только заменить на нужные.

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

Также интересует качественная эмуляция звуковых чипов, хотя бы самых простых PSG (SN76489AN, 2A03, AY-3-8910)

Проблема в том, что я не знаю ни языков, ни архитектуры микропроцессорных систем.
Только совсем в общих чертах со времен института помню (АЛУ, аккумулятор и т.д.).
Даже с какого боку подступить, непонятно.
"Как работает эмулятор" - слабо представляю, наподобие перевода системы команд одного микропроцессора в другую в реальном времени.
Как эмулировать систему целиком (множество чипов), включая ввод и вывод - не знаю.
Интересно разобраться и в так называемой "тактово-точной" эмуляции. Какие нужны знания для реализации подобного:

Достаточно полная эмуляция некоторой аппаратной платформы требует предельной точности, до уровня отдельных тактовых циклов, недокументированных особенностей и даже ошибок реализации. Это особенно важно для таких моделей классических домашних машин, как Commodore 64, ZX-Spectrum, программное обеспечение которых сильно зависит от программистских решений.

Качаем эту книжку, читаем сначала NES раздел, затем читаем в конце сабжевый раздел. Много думаем. Делаем выводы и принимаемся за работу. О результатах докладываем тут.

_________________
Tried so hard and got so far, but in the end, it doesn't even matter.

Может быть не стоило начинать описание прямо в опросе? Раз дело начато, значит опрос сделал своё дело.

Доброго дня всем!

Обычные CD/DVD-диски, как бы это не было печально, год от года теряют свою популярность (раньше вообще их продавали на каждом углу 👀). Все-таки развитие сетевых технологий делает свое дело.

Меж тем, есть другая сторона медали — огромную популярность сейчас получили, так называемые, виртуальные диски — отдельный файл(ы), сделанный на основе точной копии физического CD/DVD-диска. Их еще называют образами .

Самые популярные форматы образов: ISO, BIN, MDS/MDF, NRG, CCD. Кстати, сейчас множество файлов по сети передается именно в образах (например, даже чтобы создать загрузочную флешку с Windows — нужно сначала с сайта Microsoft скачать установочный образ с системой).

Просто так такой образ не открыть, необходим (как вы догадались) специальный виртуальный дисковод (или привод. Также их называют эмуляторами CD/DVD).

ускорение ПК

Самые популярные вопросы по работе с виртуальными дисками

❶. Как создать виртуальный диск/образ ISO и др.

Прежде всего, для начала работ, рекомендую установить одну программу — Daemon Tools (Lite-версию, она бесплатна и ее возможностей для создания и эмулирования образов более, чем достаточно).

Да и вообще, на мой взгляд, она одна из лучших (и самых популярных, кстати) программ для работы с образами дисков. Рекомендую однозначно к установке и ознакомлению.

Daemon Tools (Lite)

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

Довольно неплохо у программы организовано хранение образов: вы всегда сможете найти нужный диск из своей коллекции.

Какие образы поддерживает Daemon Tools

Какие образы поддерживает Daemon Tools

Итак, допустим у нас есть несколько CD-дисков с музыкой, играми, которые часто используются, и Вы просто устали их вставлять в привод (да и со временем диски портятся, царапаются, при вставке в привод шумят). Поэтому, логично, сделав один раз образы этих дисков — можно легко и без шума их использовать.

1) Сначала необходимо вставить CD-диск в реальный физический дисковод.

2) Далее нужно запустить Daemon Tools, перейти в раздел "Новый образ" и выбрать "Создать образ из диска" (см. скриншот ниже).

Создать образ диска

Создать образ диска

3) После необходимо указать привод с диском, указать папку, куда будет сохранен образ, и формат образа (в своем примере я выбрал ISO). Для начала копирования - нажать кнопку "Старт".

Настройки заданы - начинаем копирование

Настройки заданы - начинаем копирование

4) Далее привод начнет гудеть, и начнет менять статус прогресса (1. 2. 3%. ). В это время, лучше не нагружать компьютер посторонними задачами.

Процесс копирования

Образ готов

В общем-то, и все. Теперь можно пользоваться этим образом (только предварительно необходимо создать виртуальный привод, об этом чуть ниже).

👉 Дополнение!

Образы можно создавать не только с CD/DVD-дисков, но и из обычных файлов и папок на HDD. Более подробно об этом здесь -->

❷. Как создать виртуальный дисковод/эмулятор CD/DVD-Rom

Воспользуемся все тем же Daemon Tools.

Сначала необходимо запустить программу и нажать "Добавить привод" (в левом меню программы).

DAEMON Tools Lite - добавить привод

DAEMON Tools Lite - добавить привод

Далее необходимо задать параметры: регион, букв диска и пр. — в большинстве случаев, можно оставить все настройки по умолчанию.

DAEMON Tools Lite - настройки при создании привода (можно оставить ничего не меняя)

DAEMON Tools Lite - настройки при создании привода (можно оставить ничего не меняя)

В нижней части окна должен появиться новый привод: в моем случае под буквой "F: (пустой)".

DAEMON Tools Lite - появился новый привод!

DAEMON Tools Lite - появился новый привод (F:)!

❸. Как открыть образы: ISO, MDF, NRG и пр. и запустить приложение с них

После того, как виртуальный дисковод в Daemon Tools был создан — можно приступить к открытию и чтению образов в нем. Вообще, Daemon Tools открывает практически любые образы: ISO, BIN, MDF, NRG (даже архивы, формата 7z, rar, zip и пр.).

В нижней части окна — щелкните левой кнопкой мышки по виртуальному приводу (который мы создали в предыдущем шаге). См. скриншот ниже.

DAEMON Tools Lite - появился новый привод!

DAEMON Tools Lite - сначала кликните левой кнопкой мышки по приводу

Далее укажите папку и сам образ (в моем случае это файл формата ISO). См. скрин ниже (название образа затерто, чтобы не создавать рекламу ☺).

Открытие (выберите образ)

Открытие (выберите образ)

Если автоматический запуск CD/DVD дисков у вас отключен (и на экране ничего не появилось), зайдите в "Мой компьютер/Этот компьютер": среди приводов должен быть и виртуальный, с диском (т.е. образом), который мы открыли.

Можно открыть образ и приступать к установке игры

Можно открыть образ и приступать к установке игры

Далее открываете диск, и запускаете файл "autorun.exe" (либо "setup.exe" — обычно, на всех дисках такие файлы присутствуют).

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

Начало установки игры

❹. Как записать образ на физический CD/DVD-диск

Daemon Tools, конечно, может записывать образы на физические диски, но эта функция доступна только в платной версии программы. Поэтому, лучше воспользоваться аналогами, тем более что в этом сегменте хватает и бесплатных версий.

Лично я рекомендую остановиться на CDBurnerXP — "маленькой", но достаточно многофункциональной программе для записи CD/DVD дисков.

Почему не Nero? Потому, что Nero пакет платный, весит несколько гигабайт, очень "тормозной" и неповоротливый. Едва ли многие будут использовать хотя бы десятую часть его функций (не говоря уже о том, что большинству нужно просто записать диск и всё. ).

CDBurnerXP

CDBurnerXP — бесплатная программа для записи CD и DVD-дисков, включая, Blu-Ray и HD-DVD. Также программа отлично работает с ISO-образами, позволяя не только их создавать, но из записывать на физические диски. Программа поддерживает десятки языков (включая русский). Работает в Windows XP/7/8/9/10.

  1. вести запись данных (файлы, документы, картинки и пр.) на любые типы дисков;
  2. запись аудиодисков;
  3. создание и запись ISO-образов;
  4. создание загрузочных (установочных) дисков;
  5. конвертер BIN/NRG-образов → в ISO;
  6. возможность печати обложек.

После запуска программы, нажмите кнопку "Запись образа ISO на диск" (см. скрин ниже).

CDBurnerXP - записать образ ISO

CDBurnerXP - записать образ ISO

Затем указываете ISO-образ для записи, физический дисковод, скорость записи (выделена желтым на скрине ниже — кстати, не ставьте самую высокую скорость, возможны ошибки) и нажмите "Записать диск" . В общем-то, это все — через 10-15 мин. ваш диск будет записан!

Настройки записи

Настройки записи // CDBurnerXP

❺. Какие еще программы можно использовать для работы и чтения образов

Alcohol 120%

Alcohol 120% - главное окно программы

Alcohol 120% - главное окно программы

Alcohol 120% — отличная и очень мощная программа для работы с образами. Делает всё: создает образы, монтирует их в виртуальные приводы, записывает, создает библиотеку у вас на ПК (для их быстрого поиска и чтения).

Программа хоть и платная, но есть пробный бесплатный период в 15 дней (а есть и бесплатная версия, с урезанными возможностями). В общем, рекомендую к ознакомлению!

  1. создание до 31 виртуального привода;
  2. создание образов дисков (поддержка форматов: MDF/MDS, CCD, BIN/CUE, ISO, CDI, и др.);
  3. запись из образов дисков: CD, DVD и Blu-ray;
  4. стирание дисков: CD-RW, DVD-RW и BD-RE;
  5. поиск и создание библиотеки из файлов-образов на жестком диске ПК;
  6. наличие аудио-конвертера для работы с аудиодисками.

Ultra ISO

Ultra ISO - главное окно программы. Запуск мастера записи образа

Ultra ISO - главное окно программы. Запуск мастера записи образа

Очень мощная программа для работы с ISO-образами. Позволяет их создавать с реальных дисков, записывать, эмулировать в виртуальном приводе, и, самое главное — редактировать на лету.

Т.е. вы можете открыть ISO-образ, удалить из него ненужный файл (или добавить) и сохранить образ. Собственно, делается это очень быстро!

Кроме этого, программа поможет создать загрузочный (установочный) диск, флешку. Можно также попытаться сжать текущие ISO-образы и пр. В общем, всем, кто работает с ISO — рекомендую обязательно иметь ее у себя на ПК.

Burn4Free

Burn4Free - главное окно программы

Burn4Free - главное окно программы

Очень надежная и простая программа для работы с CD/DVD-дисками. Позволяет выполнять практически весь спектр задач, который может потребоваться среднестатистическому пользователю ПК. При всем при этом, занимает очень мало места на жестком диске (несколько мегабайт!).

  • запись CD/DVD дисков в несколько кликов мышкой;
  • программа очень легкая и простая, дизайн выполнен в стиле минимализм;
  • можно копировать аудиодиски различных форматов (WAV, FLAC, WavPack, WMA и пр.);
  • поддержка SCSI - IDE/EIDE - SATA - USB;
  • поддержка русского языка;
  • создание и запись образов ISO;
  • возможность записи MP3-дисков;
  • поддержка всех версий Windows: 10, 8, 7, Vista, 2008, 2003, XP, 2000, 98;
  • поддержка большинства моделей приводов (более 4000!).

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

Virtual Clone Drive

Virtual Clone Drive - окно настроек привода

Virtual Clone Drive - окно настроек привода

Эта программа бесплатна и предназначена для создания виртуального дисковода. Программа очень проста, и надежна. Поддерживает до 15 виртуальных дисководов, полностью интегрируется в проводник Windows, для более простой и быстрый работы.

В общем-то, по сравнению со многими аналогичными программами этого спектра, она заметно выделяется. Рекомендую к ознакомлению.

Я хочу протестировать свое приложение для Android на устройстве Xiaomi.

Как я могу создать для этого эмулятор?

Я уже пробовал андроид, genymotion и голубая труба, но не нашел для устройств Xiaomi.

Вы можете использовать AVD Manager, который поставляется с Android Studio, для создания виртуального Redmi Note 5 Pro; Я сделал это сегодня днем, и это было очень просто. Единственная проблема заключается в том, что Studio не будет эмулировать MIUI, поэтому, если это не важно, дерзайте!

Вы нашли какое-нибудь решение этой проблемы через 2 года?

Ответы 4

enter image description here

Вот шаги с Android Studio:

enter image description here

enter image description here

Современная проблема требует современного решения !!

@kelvin: Что ты имеешь в виду? Вы можете уточнить?

Это ужасный ответ. У меня возникли определенные проблемы с MIUI, FireOS и EMUI. Как я с ними столкнулся? Потому что я распространял свои приложения для Android в других магазинах, и там мои приложения падали. В EMUI была очень специфическая библиотека для обработки несовместимых JSON. В FireOS мне пришлось изменить методы геолокации, а в MIUI я все еще не могу получить ответ от службы поддержки, потому что мое приложение отлично работает в FireOS, One UI, чистом Android, ColorOS и MIUI, но оно вылетает. EMUI.

Locked . Этот вопрос и его ответы заблокированы, потому что вопрос не по теме, но имеет историческое значение. В настоящее время он не принимает новые ответы или взаимодействия.

Как работают эмуляторы? Когда я вижу эмуляторы NES / SNES или C64, меня это поражает.

http://www.tommowalker.co.uk/snemzelda.jpg

Нужно ли имитировать процессор этих машин, интерпретируя его конкретные инструкции по сборке? Что еще входит в это? Как они обычно разработаны?

Можете ли вы дать какой-нибудь совет тем, кто заинтересован в написании эмулятора (особенно игровой системы)?

С тех пор, как я впервые играл в эту игру, я всегда удивлялся, почему Хайрул завален валунами из 8 шаров :-)

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

Основная идея:

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

Эмуляция процессора:

Существует три способа обработки эмуляции процессора:

  • интерпретация
  • Динамическая перекомпиляция
  • Статическая перекомпиляция

При интерпретации вы начинаете с IP (указатель инструкций - также вызывается PC , счетчик программ) и читаете инструкцию из памяти. Ваш код анализирует эту инструкцию и использует эту информацию для изменения состояния процессора, как указано вашим процессором. Основная проблема с интерпретацией заключается в том, что это очень медленно; каждый раз, когда вы обрабатываете данную инструкцию, вы должны декодировать ее и выполнить необходимую операцию.

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

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

  • Код, которого нет в программе для начала (например, сжатый, зашифрованный, созданный / измененный во время выполнения и т. Д.), Не будет перекомпилирован, поэтому он не будет работать
  • Доказано, что поиск всего кода в заданном двоичном коде эквивалентен проблеме остановки

Все это делает статическую перекомпиляцию совершенно невозможной в 99% случаев. Для получения дополнительной информации Майкл Стейл провел большое исследование статической перекомпиляции - лучшее, что я видел.

Другая сторона эмуляции процессора - это способ взаимодействия с оборудованием. Это действительно имеет две стороны:

  • Время процессора
  • Обработка прерываний

Время процессора:

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

Обработка прерываний:

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

Аппаратная эмуляция:

Эмуляция данного аппаратного устройства имеет две стороны:

  • Эмуляция функциональности устройства
  • Эмуляция реальных интерфейсов устройства

Возьмите случай с жестким диском. Функциональность эмулируется путем создания резервного хранилища, процедур чтения / записи / форматирования и т. Д. Эта часть обычно очень проста.

Фактический интерфейс устройства немного сложнее. Как правило, это некоторая комбинация регистров отображения памяти (например, частей памяти, которые устройство отслеживает на предмет изменений для выполнения сигнализации) и прерываний. Для жесткого диска у вас может быть область отображения памяти, в которую вы помещаете команды чтения, записи и т. Д., А затем считываете эти данные обратно.

Я бы более подробно рассказал, но есть миллион способов, которыми вы можете воспользоваться. Если у вас есть какие-либо конкретные вопросы здесь, не стесняйтесь спрашивать, и я добавлю информацию.

Ресурсы:

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

Обязательные ссылки Википедии:

Общие ресурсы эмуляции:

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

Эмулятор проектов по ссылке:

Рекомендации по перекомпиляции процессора:

  • Исследование статической перекомпиляции, выполненное Майклом Стейлом (ссылка выше), завершилось в этой статье, и вы можете найти источник и тому подобное здесь .

Приложение:

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

Возможно, самая захватывающая вещь в эмуляции сейчас - это libcpu , созданная вышеупомянутым Майклом Стейлом. Это библиотека, предназначенная для поддержки большого количества ядер ЦП, которые используют LLVM для перекомпиляции (статическая и динамическая!). У этого есть огромный потенциал, и я думаю, что он сделает большие вещи для эмуляции.

На мое внимание также было обращено внимание на emu-docs , в котором находится отличное хранилище системной документации, что очень полезно для целей эмуляции. Я не провел там много времени, но, похоже, у них много отличных ресурсов.

Я рад, что этот пост был полезен, и я надеюсь, что смогу сорваться с задницы и закончить свою книгу по этому вопросу к концу года / началу следующего года.

Это уже готовится, чтобы быть эпическим ответом. Если вы можете указать мне какие-либо ресурсы, в конце концов это будет оценено. Я смотрю на систему SNES или NES, чтобы подражать ей, и делаю ее своим семестровым проектом.

Безусловно. Я собираюсь собрать хороший список ресурсов. Если у вас, ребята, есть какие-то конкретные запросы, я сделаю все возможное, чтобы удовлетворить их.

@thenonhacker, проект IronBabel, на который есть ссылки в моем разделе ресурсов, принадлежит мне. (Бесстыдная вилка помечена;))

Вы упоминаете, что пишете книгу; Можете ли вы дать нам обновленную информацию об этом? Мне, например, было бы интересно прочитать это.

Парень по имени Виктор Мойя дель Баррио написал свою диссертацию на эту тему. Много полезной информации на 152 страницах. Вы можете скачать PDF здесь .

Эмуляция может показаться пугающей, но на самом деле она гораздо проще, чем симуляция.

Любой процессор обычно имеет хорошо написанную спецификацию, которая описывает состояния, взаимодействия и т. Д.

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

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

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

Учитывая очень низкую производительность старых видеоигр (NES / SNES и т. Д.), В современных системах эмуляция довольно проста. На самом деле, еще более удивительно, что вы можете просто загрузить набор каждой игры SNES или любой игры Atari 2600, если учесть, что когда эти системы были популярны, свободный доступ к каждому картриджу был бы мечтой.

Читайте также: