Введение
Программное обеспечение для эмуляции аркадных игр,
эмулятор
the emulator
MAME (ранее акроним от Multiple Arcade Machine Emulator) – это бесплатный эмулятор с открытым исходным кодом, предназначенный для воссоздания аппаратной части аркадных игровых систем в программном обеспечении на современных персональных компьютерах и других платформах. Его задача – сохранить историю игр, предотвращая потерю или забвение старинных игр. Это достигается путем эмуляции внутренней работы эмулируемых аркадных автоматов; возможность фактически играть в эти игры рассматривается как "приятный побочный эффект". Joystiq включил MAME в список приложений, которые должен иметь каждый геймер на Windows и Mac. Первый публичный релиз MAME был выпущен Николой Салморией 5 февраля 1997 года. В настоящее время он поддерживает более 7000 уникальных игр и 10000 наборов ROM-образов, хотя не во все игры можно поиграть. MESS, эмулятор для множества игровых консолей и компьютерных систем, основанный на ядре MAME, был интегрирован в MAME в 2015 году. Благодаря OTVDM (WineVDM) доступна версия MAME для эмуляции 16-битных приложений DOS и Windows на 64-битных (x64) и AArch64 версиях Windows. NTVDM от Microsoft поддерживается только для 32-битных версий Windows.
История и обзор
Проект MAME был запущен итальянским программистом Николой Сальмориа. Изначально это был проект под названием Multi Pac, предназначенный для сохранения игр семейства Pac Man, но название было изменено по мере добавления новых игр в его состав. Первая версия MAME была выпущена в 1996 году. В апреле 1997 года Сальмория ушел на срочную службу, передав руководство проектом своему соотечественнику Мирко Буффони на полгода. В мае 2003 года Дэвид Хейвуд стал координатором проекта, а с апреля 2005 года по апрель 2011 года эту роль выполнял Аарон Джайлс. Затем координатором стал Анджело Салезе, а в 2012 году – Миодраг Миланович. Проект поддерживается сотнями разработчиков по всему миру и тысячами сторонних участников. Первоначально MAME разрабатывался исключительно для MS DOS, но вскоре был портирован на Unix-подобные системы (X/MAME), Macintosh (MacMAME и позднее MAME OS X) и Windows (MAME32). С 24 мая 2001 года, с версией 0.37b15, MAME также был портирован на другие компьютеры, игровые консоли, мобильные телефоны и КПК, а однажды даже на цифровые камеры. В 2012 году Google портировал MAME в Native Client, что позволило запускать MAME внутри Chrome. Основные релизы MAME выходят примерно раз в месяц. Исполняемые файлы для Windows в 32- и 64-битных версиях публикуются на официальном сайте команды разработчиков вместе с полным исходным кодом. Небольшие, инкрементные релизы "u" (от "update") выходили еженедельно (до версии 0.149u1) в виде патчей к последней основной версии, чтобы поддерживать синхронизацию кода между разработчиками. Исходный код MAME разрабатывается в публичном репозитории GitHub, что позволяет пользователям с необходимыми знаниями и инструментами создавать самую актуальную версию и вносить улучшения в виде pull requests. Исторические номера версий 0.32 и с 0.38 по 0.52 включительно не существуют; первая была пропущена из-за схожего названия GUI-варианта MAME32 (который впоследствии был переименован в MAMEUI из-за перехода на 64-битные сборки), а последние – из-за многочисленных релизов в бета-цикле 0.37 (эти номера версий теперь указаны рядом с соответствующими бета-релизами 0.37 на официальном сайте MAMEdev). Архитектура MAME значительно улучшилась за годы существования проекта. Поддержка растровых и векторных дисплеев, нескольких процессоров и звуковых чипов была добавлена в первые шесть месяцев. Была реализована гибкая система таймеров для координации синхронизации между несколькими эмулированными ядрами процессора, а ROM-образы стали загружаться в соответствии с их CRC32-хэшем в ZIP-файлах, где они хранились. Также можно приобрести и собрать корпуса, вдохновленные классическими игровыми автоматами (с опционально предустановленным MAME). Хотя MAME содержит базовый пользовательский интерфейс, использование MAME в аркадных игровых автоматах и домашних кинотеатрах требует специальных программ-запуска, называемых фронт-эндами, с более продвинутыми функциями. Они предоставляют различные возможности настройки, позволяя просматривать изображения игровых автоматов, историю игр, советы по прохождению, специализированные логотипы и видео игрового процесса или аттракционного режима. Информация, содержащаяся в MAME, может свободно использоваться, и компании часто используют MAME при воссоздании своих старых хитов на современных системах. Некоторые даже нанимают разработчиков MAME для создания эмуляторов своих старых продуктов. Примером является пакет Taito Legends, с ROM-образами, которые можно прочитать в определенных версиях MAME. 27 мая 2015 года (0.162) эмулятор игровых консолей и компьютерных систем MESS был интегрирован с MAME (поэтому руководство пользователя MESS по-прежнему является наиболее важной инструкцией по использованию неаркадных частей MAME). Это также привело к исключению аббревиатуры, поскольку MAME теперь может эмулировать не только аркадные автоматы. С 2012 года MAME поддерживается бывшим руководителем проекта MESS Миодрагом Милановичем. Большая часть исходного кода MAME (более 90%) теперь доступна под лицензией BSD 3 Clause, а весь проект распространяется под лицензией GPL 2.0 или более поздней версии. 24 февраля 2016 года (0.171) MAME включил в себя фронт-энд MEWUI (а его разработчик присоединился к команде), предоставив MAME гибкий и более функциональный пользовательский интерфейс. 30 декабря 2021 года exA Arcadia, западные владельцы авторских прав на игры Akai Katana и DoDonPachi SaiDaiOuJou, направили через своих адвокатов уведомление о прекращении деятельности разработчикам MAME в связи с включением этих игр в эмулятор. MAME выполнил запрос на следующий день, сделав обе игры недоступными для воспроизведения в эмуляторе вне командной строки, начиная с версии 0.240.
Дизайн
Ядро MAME координирует эмуляцию нескольких элементов одновременно. Эти элементы воспроизводят поведение аппаратного обеспечения, присутствующего в оригинальных аркадных автоматах. MAME может эмулировать множество различных центральных процессоров (ЦП) и сопутствующее оборудование. Эти элементы виртуализированы, благодаря чему MAME выступает в роли программного слоя между оригинальной программой игры и платформой, на которой он работает. MAME поддерживает произвольные разрешения экрана, частоту обновления и конфигурации дисплея. Также поддерживается несколько эмулируемых мониторов, как, например, в игре Darius. Отдельные аркадные системы задаются драйверами, которые представлены в виде макросов препроцессора C. Эти драйверы определяют отдельные компоненты, подлежащие эмуляции, и способы их взаимодействия. Изначально MAME был написан на C, но потребность в объектно-ориентированном программировании побудила команду разработчиков начать компилировать весь код как C++ для версии MAME 0.136, используя дополнительные возможности этого языка. Хотя большинство ядер эмуляции ЦП являются интерпретирующими, MAME также поддерживает динамическую рекомпиляцию через промежуточный язык, называемый Универсальным машинным языком (UML), для повышения скорости эмуляции. Поддерживаемые целевые платформы для рекомпиляции – x86 и x64. Также доступна C-реализация для дополнительной проверки корректности. Процессоры SH 2, MIPS R3000 и PowerPC эмулируются таким образом.
Философия, точность и качество
Заявленная цель проекта — документировать аппаратное обеспечение, поэтому MAME придерживается достаточно пуристичного подхода к эмуляции, запрещая программные ухищрения, которые могут упростить запуск игры за счёт точности эмуляции. Компоненты, такие как процессоры, эмулируются на низком уровне (то есть эмулируются отдельные инструкции) всякий раз, когда это возможно, а эмуляция высокого уровня (HLE) используется только тогда, когда схема полностью не документирована и не может быть детально реконструирована. Эмуляция на уровне сигналов используется для эмуляции аудиосхем, состоящих из аналоговых компонентов. MAME эмулирует более тысячи различных аркадных систем, большинство из которых полностью не документированы и разработаны специально для запуска одной игры или очень небольшого их числа. Подход MAME к точности является постепенным: системы эмулируются настолько точно, насколько это разумно возможно. Пиратские копии игр часто эмулируются первыми, а официальные (и защищённые от копирования) версии — позже. Помимо шифрования, аркадные игры обычно защищались специализированными микроконтроллерами (MCU), которые реализовывали часть игровой логики или другие важные функции. Эмуляция этих микросхем предпочтительна даже в тех случаях, когда они оказывают мало или вообще никакого видимого влияния на саму игру. Например, поведение монстров в Bubble Bobble было доведено до совершенства только после того, как код и данные, содержащиеся в специализированном MCU, были извлечены путём декапсуляции чипа. Это приводит к изменению требований к набору ROM по мере того, как игры эмулируются всё более и более точно, в результате чего старые версии набора ROM становятся несовместимыми с новыми версиями MAME. Переносимость и универсальность также важны для MAME. В сочетании с бескомпромиссным отношением к точности это часто приводит к высоким системным требованиям. Хотя процессора с частотой 2 ГГц достаточно для запуска почти всех 2D-игр, более новые системы и особенно системы с 3D-графикой могут быть неиграбельно медленными даже на самых мощных компьютерах. В настоящее время MAME не использует аппаратное ускорение для ускорения рендеринга 3D-графики, отчасти из-за отсутствия стабильного кроссплатформенного 3D API, а отчасти потому, что программная отрисовка теоретически может быть точным воспроизведением различных специализированных подходов к 3D-рендерингу, которые использовались в аркадных играх.
Правовой статус
Владение и распространение MAME само по себе законно в большинстве стран, поскольку это всего лишь эмулятор. Такие компании, как Sony, пытались в суде запретить продажу другого программного обеспечения, например, Virtual Game Station – эмулятора Sony PlayStation, но в конечном итоге потерпели неудачу. Сам MAME до настоящего времени не был предметом судебных разбирательств. Большинство аркадных игр по-прежнему защищены авторским правом. Загрузка или распространение ROM-файлов, защищенных авторским правом, без разрешения правообладателей почти всегда является нарушением законов об авторском праве. Однако некоторые страны (включая США) разрешают владельцу платы переносить данные, содержащиеся в ее микросхемах ROM, на персональный компьютер или другое принадлежащее ему устройство. Некоторые правообладатели рассматривали возможность предоставления аркадных игровых ROM-файлов общественности посредством лицензирования. Например, в 2003 году Atari сделала доступными на сайте Star ROMs ROM-файлы, совместимые с MAME, для 27 своих аркадных игр. Однако к 2006 году эти ROM-файлы там больше не продавались. В какой-то момент различные игры Capcom продавались в комплекте с аркадным джойстиком HotRod производства Hanaho, но эта схема также была прекращена. Другие правообладатели выпустили игры, которые больше не являются коммерчески выгодными, бесплатно для общественности на основании лицензий, запрещающих коммерческое использование игр. Многие из этих игр можно легально загрузить с официального сайта MAME. Испанский разработчик аркадных игр Gaelco также выпустил World Rally для некоммерческого использования на своем веб-сайте. Сообщество MAME отстранилось от других групп, распространяющих ROM-файлы через Интернет или на физических носителях, заявляя, что они грубо нарушают авторские права и наносят вред проекту, потенциально подрывая его репутацию. Несмотря на это, незаконные дистрибутивы ROM широко распространены в Интернете, и существует множество "полных наборов", содержащих полную коллекцию ROM-файлов определенной версии. Кроме того, многие пиратские игровые системы, такие как аркадные мультикарты, часто используют версии MAME для запуска своих игр.
Оригинальная лицензия MAME
MAME ранее распространялся под собственной копилефтовой лицензией, называемой «лицензией MAME» или «лицензией типа MAME», которую также приняли другие проекты, например Visual Pinball. Эта лицензия обеспечивала доступность исходного кода лицензируемой программы, при этом запрещалось перераспространение программы в коммерческих целях. Из-за этого условия лицензия не соответствует определению открытого исходного кода OSI и определению свободного программного обеспечения FSF, и, следовательно, не считается лицензией открытого исходного кода или лицензией свободного программного обеспечения соответственно. Условие о некоммерческом использовании было разработано для предотвращения установки игровых автоматов MAME операторами аркад и получения прибыли за счет работ оригинальных производителей игр. С марта 2016 года, начиная с версии 0.172, сам MAME перешел на общепринятые лицензии свободного программного обеспечения – лицензию BSD 3-Clause и лицензию GPL 2.0 или более поздней версии – посредством двойного лицензирования. Однако старые версии по-прежнему лицензируются по первоначальной лицензии.