суббота, 8 ноября 2014 г.

Собираем MAME - универсальный эмулятор игровых автоматов

Quick start guide по проекту MAME - универсальному эмулятору игровых автоматов


  Что такое игровой автомат объяснять, думается, смысла нет. Наверняка вам хоть раз да удавалось столкнуться с каким-нибудь из этих пёстрых монстров, призывно гудящих в своём уголке и выпрашивая мелочь у случайных прохожих. Или даже побывать в их жутком логове - зале игровых автоматов. Наверняка после хотелось поставить у себя дома такой, дабы в волю поиграть без лишних затрат. Мысли верные и заразные, на просторах сети давно живёт и здравствует проект MAME, целью которого является собрать и сэмулировать все доступные старые игры с автоматов. И если вы ещё не приобщились, а только сомневаетесь - эта статья специально для вас. В ней мы соберём во всех смыслах MAME - универсальный эмулятор старых игровых автоматов.


  Для начала разберёмся, что же такого хорошего в эмуляции конкретно аркадных автоматов, и чем она лучше эмуляции всяких там консолек, типа NES и Sega Mega Drive? Что же, пройдёмся по пунктам:

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

Ultimate Mortal Kombat 3
  Плюс этот хоть и здоровенный, но на нём дело и кончается, а дальше идёт куча мелких минусов:

- База MAME включает в себя все хоть как-то изученные автоматы (то есть все железки, что удалось каким-то образом достать и сдампить). А это значит, что помимо желанных вкусностей, она ещё под завязку набита различными б-гмерзкими видео-покерами, слот-машинами, маджонгами и прочей мало интересной хуетой. А что вы хотели, это ведь тоже игровые автоматы. Тут спасёт только хороший фронтэнд, начисто фильтрующий всё это "добро".

- В отличие от домашних консолек, где достаточно просто более менее точно сэмулировать одну железку и далее гонять на ней почти любой ром, для автоматов нужно писать отдельные подпрограммы, именуемые в MAME драйверами. Железо и архитектура то у всех разные. Нет, есть конечно серийные машины, типа того же Neo-Geo, но их лишь небольшая часть. А посему множество игр в базе или глючные или не работают вовсе. О чём, впрочем, MAME честно предупредит при их старте.

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

  Короче - будьте готовы, не всё так радужно. Но оно того стоит.


Primal Rage
Сборка MAME.

  Сразу надо сказать, что MAME это не просто эмулятор, а огромный проект с обширной базой и сопутствующими файлами. Но для начала разберёмся всё-таки с эмулятором. Можно скачать как оригинальный пакет на http://mamedev.org/, так и подыскать какую-нибудь модификацию. Благо, проект MAME полностью открытый и его исходники легко доступны, а значит имеется туева хуча всевозможных вариаций, добавляющих в эмулятор различных нужных и не очень плюшек. Так что можно подобрать что-то под свой извращённый вкус. Наконец можно вообще запилить собственную модификацию с блэкджэком и шлюхами. Лично я сейчас использую MAMEUIFX из-за встроенного autofire - вещи крайне удобной и полезной в скролл-шутерах.

  Но помимо эмулятора нужны ещё и ромы. А если ещё хочется чтобы ползание по базе не было слишком уж серым и скучным, то стоит также скачать так называемые extras - там и скриншоты, и флайеры, и фото самих автоматов, ну и куча других полезных ништячков. Также не стоит забывать про существование файлов CHD - дампов дополнительных данных, которые некоторые тяжеловесные игры хранили не на материнской плате, а на лазерных или жёстких дисках. Сразу нужно отметить, что весит всё это добро очень даже не хило. Так что сразу стоит решить, а что собственно нужно. Хотя, конечно, копаться в куче ромов, выбирая отдельные игры, тоже дело не благодарное. Вот CHD точно не стоит качать скопом, бо много лишнего там. Простой пример - Beatmania - обширная серия музыкальных игр на подобие Guitar Hero. Мало того, что сама игра на любителя, так и две трети серии просто тупо не работает, а в совокупности всё весит больше полсотни гигов.

  Различных трекеров, где всё это добро можно надыбать довольно много. Но большинство раздач это или старые версии (а все сеты имеют версию, соответствующую версии самого проекта), или на них сидят мудаки с узким каналом. Посему не стоит попусту шататься по всяким злачным местам, а лучше сразу направиться на http://pleasuredome.org.uk - регистрация там хоть и не тривиальная, но совсем не сложная, а все нужные сеты для MAME раздаются свободно, без учёта ратио и на высоких скоростях. Сверяем последнюю версию проекта и качаем под неё всё нужное, после чего складываем вместе. Если уложить файлы в папку MAME, то никакие пути прописывать не понадобится. И ромы, и CHD укладываются вместе в одну папку - roms. Всё остальное по категориям.

  Собственно теперь стоит запустить сам эмулятор и настроить его. В тонкости настроек я вдаваться не буду - по этой теме в инете полно отдельных материалов - лишь освещу пару деталей. В первую очередь нужно настроить кнопки вброса монеток, старта, движения и действий (Button 1, 2, 3, 4 и т.д). Большинство игр использует только их, в частности из кнопок действий задействованы обычно только первые две, реже четыре, ещё реже шесть и более. Дополнительное управление, что так щедро описано в настройках, используют специфичные игры, вроде видео-покера, маджонга и гонок. Если не планируете в такое играть, то можно не заморачиваться. Ну и кнопку Soft Reset найти не помешает.

Фронтенд.

  Чистый MAME вещь сама по себе довольно унылая. Если у вас собралась большая коллекция ромов, ориентироваться в ней будет не просто. К счастью существует большое количество фронтендов, так что можно подобрать что-то на свой вкус. Например для любителей свистелок и перделок подходит широко известный HyperSpin, который работает с целой кучей платформ. А в случае с MAMEUIFX фронтенд вообще уже встроен в эмулятор. Хотя я лично всё равно предпочитаю сторонний - EmuLoader. Сей фронтенд поддерживает не только MAME, но и многие другие платформы, имеет приятный и простой внешний вид, а также хороший функционал. В частности одной из важных для меня функций стала возможность удаления ненужных ромов вместе со всеми сопутствующими файлами. Повозиться с настройками правда придётся долго - EmuLoader имеет далеко не самый продуманный интерфейс. Да и советую сделать резервную копию default.cfg из папки "cfg", так как у меня этот файл часто сбрасывался после настройки через EmuLoader- то ли баг, то ли тыкал не туда.

"Оттюнингованный" EmuLoader
 Облегчаем себе жизнь.

  Чтобы жить стало лучше, а главное веселее, в MAME предусмотрены некоторые фичи. Для начала не плохо было бы заглянуть в пункт меню "Slider Control". Под сим хитрым названием скрываются базовые настройки игры, как то громкость, разгон процессора и прочее. Громкость, кстати, регулируется путём понижения от номинальной, потому и выражается в минусовых значениях. Разгон процессора (или процессоров) может очень пригодится, если в игре происходит проседание при большом количестве объектов на экране - явление далеко не редкое.

  Далее стоит заглянуть в подменю "DIP Switches", которое индивидуально для каждой игры (а потому может вообще отсутствовать). Здесь содержатся различные известные и не очень настройки, которые заложил сам производитель в машину. По большей части от них не много толку, но не редко встречаются и полезные настройки, такие как сложность, количество жизней или Free Play.

  Полезно также заиметь уже упомянутую опцию autofire, она же любимая с детства кнопка Turbo. Найти её можно в каком-нибудь альтернативной сборке MAME, или же попробовать внедрить самостоятельно. Пригодится может где угодно, когда угодно, и не обязательно в скролл-шутерах. В чём-то можно назвать это читерством, но об этом далее.

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

  Наконец в MAME, как и большинстве эмуляторов, есть сохранения. Правда со своей спецификой. То бишь они могут работать, могут не работать, а могут просто глючить. Так при попытки сохраниться, MAME либо подтвердит, что всё чики-пуки, либо пожалуется, что для этой игры saves как бы не supported. Означает это лишь то, что автор драйвера попросту не гарантирует, что при загрузке такого сэйва, всё загрузится так как надо и туда куда надо. Тут уж как повезёт, может и нормально всё сработать, а может и что-то глюкануть или вообще зависнуть. К счастью большая часть "не поддерживаемых" игр всё-таки работает нормально. Но и не приятные сюрпризы таки случаются.

Сборка MAME из исходников для Windows.

  Не смотря на колоссальные усилия разработчиков по улучшению эмуляции, об эргономичности своего детища они не особо заботятся. Благо есть исходники, которые можно модифицировать под свои нужды. Но для начала попробуем собрать эмулятор. Ничего сложного тут нет, иметь красные глаза и прыщи вовсе не обязательно. Достаточно скачать всего две вещи - компилятор и собственно исходные коды. Всё это можно найти на официальном сайте - http://www.mamedev.org/tools/, http://www.mamedev.org/release.html. Качаем и распаковываем компилятор MinGW, желательно в папку c:\mingw (получится что-то типа c:\mingw\mingw64-w64), и последние исходники. Запускаем setup-Python.bat и setup-Qt.bat в папке компилятора. Также стоит добавить пути к лежащим здесь папкам bin и opt/bin в системную переменную path. Если будем собирать MAMEUIFX, то нужно предварительно скачать его исходники и скопировать их поверх оригинальных.

  Теперь достаточно запустить cmd.exe и, зайдя в папку с исходниками MAME, запустить там команду make (для MAMEUIFX в архиве есть готовые bat-файлы). Если при компиляции выскочит какой-нибудь warning и процесс остановится, то можно подредактировать файл makefile в корне с исходниками, закоментировав выброс ошибок.
CCOMFLAGS += -Werror
меняем на
# CCOMFLAGS += -Werror

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

Комментариев нет:

Отправить комментарий