Linux. Небольшой обзор эмуляторов


Сегодня речь пойдет про эмуляцию старых компьютеров. Почему и нафига это все? По моему глубокому убеждению usability компьютерных программ, а в особенности игровых, не связана напрямую с разрешением графики, fps или мега(гига)герцами CPU. Несмотря на обилие и разнообразие игр сегодня хочется заметить, что демонстрируя всю свою навороченность и реалистичность графики, многие современные игры утратили нечто такое, что было в старых 2D квестах и аркадах. И если у кого-то из вас пылится в шкафу самодельный ZX Spectrum или старенькая "Амига", то эта статья для вас.

ZX Spectrum

Думаю что не ошибусь, если скажу, что это самый массовый компьютер в России начала 90x прошлого (теперь уже) века. Количество самодельных клонов и вариантов просто огромно. Несмотря ни на что эта платформа жива и сегодня, хотя и нет на ней прежней активности. На сегодняшний день существует несколько тысяч игровых программ для ZX Spectrum, практически все более или менее стоящее адаптировано под дисковую систему TR-DOS.

Если для Win32 существует довольно много качественных эмуляторов, то в Linux с этим сложнее. Я сразу отбрасываю программы, которые не умеют эмулировать TR-DOS или музыкальный процессор AY 8910/12 или эмулируюшие только 48K модель ZX.
Из программ, отвечающих таким требованиям, мне известны только две:

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

Несмотря на свое название все довольно неплохо, вот краткий feature список:

  • Поддержка 48/128K, "Пентагон"
  • Лента (.TAP/.TZX), Beta Disk (.TRD/.SCL), snapshots (.Z80)
  • Поддержка звука как 48K, так и AY-8910/12

Установка
Для сборки потребуются библиотеки OSF/Motif(R). Неплохо если уже установлен LessTif, если нет, то я рекомендую сразу использовать Open Motif, тем более, что он наверняка пригодится при сборке других программ. Скачиваем отсюда или отсюда (в полях формы регистрации можно ничего не вводить) исходники (~5M), компилим, ставим. Далее разбираемся в глюкалкой. Для того, чтобы 'Super_L' кнопка (обычно это левая win) была замаплена на Kempston fire, применяем вот этот патч. Далее:

glukalka# ./configure
glukalka# make
'make install' не предусмотрен, поэтому просто копируем все например в '/usr/local/glukalka':
glukalka# mkdir -p /usr/local/glukalka
glukalka# cp -a ./* /usr/local/glukalka
Запускать нужно из домашней директории (cd /usr/local/glukalka; ./glukalka).

Если все прошло успешно, то открываем наш любимый .TRD, выбираем в конфигурации 'Pentagon' и жмем 'Reset' (левая пиктограмма в меню).


Commodore Amiga

Эта платформа довольно мало известна в России. Высокая стоимость, невозможность заменить оригинальные микросхемы другими аналогичными, не способствовали популярности. А жаль! Для своего времени в компьютерах Commodore Amiga было применено много новаторских идей. Звуковой процессор, графический сопроцессор, аппаратно работающий со спрайтами (столкновения обсчитываются аппаратно!) и другие решения позволяли на CPU с десятком мегагерц получить великолепную плавную графику в сочетании с качественной музыкой.

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

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

UAE - Unix Amiga Emulator
Довольно точная эмуляция Commodore Amiga 500/1000/2000. Поддерживает образы floppy - .ADF и .ADZ (.ADF, сжатые gzip'ом). GUI написан на GTK+ 1.2 (2.0 в версии 0.8.24). Для нормальной работы нужен P4 >= 1Ghz. Скачиваем, распаковываем, далее как обычно:

uae-0.8.22# ./configure --prefix=/usr/local/uae
uae-0.8.22# make && make install
Для запуска необходимы образы ROM оригинальной машинки. Эти файлы не включены в архив по соображениям копирайта, поэтому кликаем здесь и выкачваем с любого сайта. Редактируем .uaerc файл и набираем 'uae'. Далее выбираем kickstart rom 1.3, именно он подходит для большинства программ, выбираем образ диска и отжимаем кнопку 'Pause'.

Я завел в UAE две директории - 'rom' и 'games', в rom положил все kickstart. Мой .uaerc получился примерно такого содержания.

Есть статья, где работа в настройками разжевана более подробно.

Вот так у меня выглядит амижная версия игры Dizzy2. Как вам графика по сравнению с ZX Spectum ;-)
Смею уверить, что музыка тоже не оставит равнодушным.


Старый добрый MS-DOS

Несмотря на то, что существует множество способов запуска MS-DOS программ в эмуляторах, я хочу обратить ваше внимание на сравнительно недавно появившийся эмулятор с незатейливым названием DOSBox. Почему именно он ведь есть же dosemu или VMware наконец? А дело в том, что довольно много игр хотят поддержку DPMI или доступа к звуковой карте. DPMI работает не лучшим образом в dosemu, а со вторым не очень дружна VMware. Кроме того, нужно иметь дистрибутив DOS, устанавливать ее и разбираться с настройками.

DOSBox позволяет запускать большинство программ, написанных под MS-DOS, включая всевозможные DPMI-like расширения, нормально поддерживает звук и кроме того, содержит все компоненты самой ОС, то есть дополнительно устанавливать ничего не потребуется. Скачиваем исходники, далее все как обычно:

dosbox-0.63# ./configure
dosbox-0.63# make && make install
Запускаем и просим создать конфигурационный файл (сказать из dosbox'а)
> config -writeconf dosbox.conf
, который потом нужно как минимум просмотреть и отредактировать нужные части.

И вот Prince вновь бродит по подземельям.
LBA - Little Big Adventure. Красивейший квест со множеством непростых загадок.


MAME - Multiple Arcade Machine Emulator

Впервые я увидел аркады году так в 89. Какая-то контора, коих в конце славных 80х расплодилось великое множество, установила на Витебском вокзале несколько машин Sega. В основном это были простенькие двухходовые стрелялки, но одна игра очень привлекла мое внимание.

Красивейшая 3D графика, сделанная из обыкновенных 2D спрайтов, многоголосая музыка, отличный gameplay. Но главное не это! Скорость, с которой все отрисовывалось, просто поражала воображение. Напомню, что в те времена основной игровой платформой в России был ZX Spectrum, а в IBM PC (8086/88 4..8MHz) устанавливался графичесий адаптер CGA (320x200x2bpp).

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

И вот оказывается тема эмуляции аркадных машин живет и процветает! В сети я наткнулся на грандиозный проект такого рода под названием MAME (Multiple Arcade Machine Emulator). Изначально все было написано под DOS/Win32, но теперь доступен UNIX порт - Xmame. Поддерживается эмуляция десятка платформ, что в итоге дает возможность запустить более 2000 игр.

Забираем исходники (на сегодняшний день это 0.97 весом примерно 13M), распаковываем. Для вывода на экран Xmame может использовать как X11 (по умолчанию), так и SDL или SVGAlib с 3Dfx. Для X11 делаем так:

xmame-0.97# make -f makefile.unix
xmame-0.97# make install
Хочу сказать что компиляция занимает значительное время. GCC 2.95 не подходит (у меня обламывается с signal 9 на одном и том же месте), но я с успехом использовал 3.4.4. Размер ELF бинарника получается 40M (мегабайт!). Если у кого-то не получилось, то тут можно взять зазипованный (8M) для glibc >=2.1.3.

Для запуска потребуются ROM образы игр. Тут есть небольшая проблема. Все или почти все игры защищены copyright и в связи с этим не распространяются вместе с Xmame. Но умелых и настойчивых отправляю к eDonkey eMule , много ROMs можно легко найти используя слово 'mame' для поиска.

Образы ROM нужно положить в ROM каталог Xmame (/usr/local/share/xmame/roms по умолчанию). Причем там нужно создать директорий, совпадающий с именем игры, куда и распаковать все ROMs из скачанного архива. в случае со Space Harrier к примеру нужно распаковать весь архив в /usr/local/share/xmame/roms/sharrier. Поскольку на аркадах зачастую устанавливалось несколько CPU, то соответственно может быть несколько ROM образов. Xmame знает что и как нужно грузить, поскольку содержит всю необходимую информацию в ELF. Если чего-то непонятно с настройками, то можно сказать 'xmame.x11 -showconfig' чтоб посмотреть текущие.

Xmame поддерживает кучу параметров при старте, 'xmame.x11 -help' поможет понять что и как. В нашем случае просто запускаем Space Harrier, набрав

> xmame.x11 sharrier -antialias -ef 3 -artwork_scale 2

Пара слов про управление. Да, стрелочки работают и стрелять можно клавишей 'Space', но при старте мы видим сообщение 'Insert coins'. Что делать? Жмем '5', потом '1'. Приостановить игру можно нажав 'P', а 'F12' записывает snapshot в png. Полный список кнопок описан в FAQ на страничках MAME.

Вот спецификация Сеги:

CPUs:
2 x 68000 10MHz
Z80 4 MHz
8751 8MHz

Музыка:
YM2203 4MHz

Все выводится в разрешении 304x224x60Hz

Bonus stage - это когда можно летать на драконе, сметая все подряд ;)


Ну и в заключение несколько ссылок

  • trd.speccy.cz
    Много софта и игр для ZX Spectrum, TR-DOS версии. На русском языке.

  • www.worldofspectrum.org
    "Официальный" ZX Spectrum архив. В кавычках, так как я бы его лучше назвал "Мега-" ;)) (а если серьезно - никак не пойму, откуда такое словечко "официальный"). Будьте осторожны с FTP - при большом трафике сервер банит и выставляет IP напоказ на некоей cgi страничке. Маразм!

  • www.amiga.org
    Commodore Amiga. Море инфы и ссылок.

  • www.back2roots.org
    Много игр в виде .ADF/.ADZ для Commodore Amiga.

  • www.dosgamesarchive.com
    Архив игр для MS-DOS.

Успехов!

Tags: linux emulators amiga zx spectrum sega


Назад в оглавление



[Home] [TTL] [Unix] [Sdictionary] [ROW Programmer] [Symbian] [Misc] [News] [Search] [Contacts] [Guestbook]


Copyright (c) 1999-2017 Alexey Semenoff