LINUX.ORG.RU
ФорумTalks

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

 , ,


0

1

Сабж. Интересно создание эмуляторов. Допустим те же консоли. Как вывести картинку на экран? Ведь консоли фиолетово на каком движке создавалась игра. А эмулятором как-то надо «вскрыть» игру и запустить. Если кто-то объяснит или даст ссылку на статьи, буду благодарен.

Кстати, тот же Wine, хоть «не эмулятор». Как он «вскрывает» оффтоповые экзешники и позволяет исполнять их в лине?



Последнее исправление: ozzee (всего исправлений: 1)

Допустим те же консоли. Как вывести картинку на экран? Ведь консоли фиолетово на каком движке создавалась игра.

Эмулируется видеоадаптер.

А эмулятором как-то надо «вскрыть» игру и запустить.

Ну, как. Вскрываешь и запускаешь.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)

Программно эмулируются все части консоли: центральный процессор, видеопроцессор и т.д. В случае NES ещё и в картридже маппер может быть, тогда надо эмулировать ещё и его (а их более двух сотен разных). Для более современных консолей (типа PS2) видео не совсем честно эмулируется, а вызовы переводятся в тот же OpenGL, благодаря чему скорость эмуляции получается существенно выше, а графика лучше (можно подтянуть разрешение, например, выше оригинального), но иногда в некоторых играх приводит к глюкам.

По теме написано достаточно много, можно и просто погуглить. Вот тут, например, совсем всё разжёвано вроде: http://habrahabr.ru/post/100907/

Ну или можешь просто взять любой эмулятор консоли (они почти все опенсорсные) и посмотреть исходники.

Psych218 ★★★★★
()
Ответ на: комментарий от Psych218

Еще бы понять как читать из файла вызовы. Потом возьму какой-нибудь эмулятор, посмотрю исходники, хоть ни разу не программист C/C++, но в принципе код более-менее понятен(почти все ЯП похожи).

ozzee
() автор топика
Ответ на: комментарий от ozzee

Файл - тупо дамп памяти картриджа, с нюансами (выше уже писали про несовские мапперы, а в сеговском Virtua Racing был отдельный процессор, превосходящий по мощности саму консоль раза в три).

svr4
()
Ответ на: комментарий от ozzee

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

У Neo-Geo всё гораздо веселее - там игра/картридж представляли собой пяток разных плат, отвечающих за разные вещи.

svr4
()
Ответ на: комментарий от Psych218

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

Shtsh ★★★★
()
Ответ на: комментарий от Psych218

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

разве что нуля.

t184256 ★★★★★
()

Тебя послушаешь, так даже за нативные исполняемые файлы переживать начнешь.

t184256 ★★★★★
()
Ответ на: комментарий от svr4

Файл - тупо дамп памяти картриджа, с нюансами (выше уже писали про несовские мапперы, а в сеговском Virtua Racing был отдельный процессор, превосходящий по мощности саму консоль раза в три).

картридж для famicom - это аналог PCI карты-расширения в мирке пэка.

это нетолько хранитель информации. Он напрямую к шине cpu подключается (и нетолько). Можно делать всё что угодно.

кроме банкования памяти (для преодоления издержек архитектуры с 65к адресным пространством), там ещё и саунд-чип может быть. Таймер (или несколько), который добавит возможностей анимации. eeprom или SRAM + батарейка. Ничто немешает любое железо впендюрить в формате картриджа. Вопрос лишь в целесообразности и потребностях.

можно вообще от famicom-а только джойстики использовать, а всё разместить в картридже. (именно так работают всякие game boy плееры)

или картридж - к которому особенный флоповод подключается. (famicom disk system)

про отдельный процессор, тоже ничто немешает запихать в картридж.

n_play
()
Ответ на: комментарий от Psych218

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

нет. Этого недостаточно. Ибо вариантов подключения микросхем даже 1 маппера всегда более 1.

поэтому Ъ - эмуляторы эмулируют фактически поведение платы картриджа. Ибо каждый производятел обычно любил внести немного изменений в плату (либо вообще сделать немного кастомный маппер для каждой игры, чтоб непиратили). Референсные платы от нинтенды использовались достаточно часто, наверно в 80%. Но и там было куча разных вариаций с одной и тойже микросхемой маппера. (То CHR RAM вместо ROM и т.д.)

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

nestopia хороший пример. глядеть в директорию source/core/board

n_play
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.