MAME, Multiple Arcade Machine Emulator, — проект эмуляции аркадных автоматов и старых компьютеров, который развивается с 1997 года. Он воспроизводит не отдельные игры, а само железо: процессоры, звуковые чипы, схемы ввода и служебную логику плат. Такой подход требует точных описаний и дампов, зато одна и та же сборка запускает тысячи систем, а поведение сохраняется близким к оригиналу. Ниже — установка в Linux, каталоги, проверка комплектности, настройка видео и разбор ошибок.

Сразу важное ограничение: MAME не содержит игр и ПЗУ. Использовать можно только собственные копии, сделанные с принадлежащего вам оборудования, либо свободные образы, которые распространяются правообладателем. Скачивание чужих дампов и «полных сборок» из сети нарушает авторские права и правила проекта, поэтому в статье нет ссылок на такие наборы.

Установка

В Debian, Ubuntu и Linux Mint MAME есть в репозитории, вместе с ним ставятся утилиты для работы с дампами. Версия в репозитории может отставать от upstream, зато обновляется вместе с системой. Альтернатива — официальный пакет Flatpak.

sudo apt install mame mame-tools
mame -version
flatpak install flathub org.mamedev.MAME
flatpak run org.mamedev.MAME -version

Пакет mame-tools содержит romcmp и chdman — они понадобятся для проверки собственных копий. Сборка из исходников требует SDL2 и Qt, но для большинства задач хватает бинарника из дистрибутива.

Каталоги и первый запуск

На Linux настройки по умолчанию лежат в ~/.mame. Файл mame.ini создаётся командой -createconfig, после чего его можно править редактором. Ключи командной строки имеют приоритет над ini, что удобно для разовых запусков.

mame -createconfig
ls -la ~/.mame
mame -showconfig | grep -E 'rompath|samplepath|hashpath'
mame -showconfig | grep -E 'inipath|cfg_directory|nvram_directory'

Каталог rompath может содержать несколько путей, разделённых двоеточием. В него кладут только те дампы, которые вы сделали сами. Файлы настроек конкретной игры, энергонезависимая память и сохранения лежат в отдельных подкаталогах — их полезно включить в резервную копию, если вы долго проходите игру.

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

Дампы ПЗУ со временем меняются: проект уточняет размеры, пересчитывает контрольные суммы, разделяет наборы. Поэтому старый набор может не подойти к новой версии MAME. Проверять свои копии нужно до запуска, а не после падения эмулятора.

romcmp my-dump.bin reference.bin
chdman verify -i disk.chd
mame -verifyroms
mame -verifyroms | grep -i 'not found'

romcmp сравнивает два файла побайтно и показывает расхождения, chdman verify проверяет целостность образа диска. Команда -verifyroms без аргументов обходит весь список систем и печатает итог: сколько наборов в порядке, сколько отсутствует и сколько содержит неверные файлы. Это же стоит делать после обновления MAME.

Список систем и требования

Короткое имя системы — то, что передаётся в командной строке. Полное описание и список файлов удобно смотреть заранее, чтобы не искать ошибку в момент запуска. Учтите, что для части систем нужен BIOS или образ диска, и без него эмулятор честно сообщит об отсутствии файла.

mame -listfull | head -20
mame -listfull | grep -i 'pac'
mame -listroms <shortname>
mame -listdevices <shortname>

Угловые скобки в примерах заменяют конкретное имя системы. Если -listroms показывает файл с пометкой nodump, содержимое этого ПЗУ неизвестно, и система может работать не полностью — это состояние эмуляции, а не ошибка вашей копии.

Видео, звук и производительность

По умолчанию MAME выбирает разумный видеорежим, но для аркадных игр важны целочисленное масштабирование и правильное соотношение сторон. BGFX даёт доступ к шейдерам, включая имитацию ЭЛТ-экрана; OpenGL проще и быстрее на старых видеокартах. Программный режим soft оставьте для диагностики.

mame -video bgfx -bgfx_screen_chains crt-geom <shortname>
mame -video opengl -filter 0 -waitvsync <shortname>
mame -sound sdl -audio_latency 0.03 <shortname>
mame -window -unevenstretch <shortname>

Ключ -filter 0 отключает сглаживание и сохраняет чёткие пиксели, -waitvsync убирает разрывы, но добавляет задержку ввода. Для проверки скорости используют -nothrottle, однако в игре он не нужен: эмулятор должен идти с оригинальной частотой. Если звук трещит, сначала увеличьте буфер, а потом ищите проблему в драйверах.

Управление и автоматизация

Клавиши по умолчанию настраиваются через меню Tab, а раскладку конкретной системы можно сохранить в отдельный файл. Для сборок с геймпадами полезен флаг -joystick и выбор устройства через меню. Фронтенды вроде Attract-Mode читают метаданные из вывода -listxml, поэтому отдельная база не нужна.

mame -listxml > systems.xml
mame -joystick -mouse <shortname>
mame -skip_gameinfo -autosave <shortname>
mame -state 1 -state_directory ~/.mame/sta <shortname>

Флаг -skip_gameinfo убирает заставку с предупреждением, -autosave сохраняет состояние при выходе, а -state загружает слот. Последнее удобно для отладки, но не заменяет штатное сохранение внутри игры: не все системы корректно переносят состояние между версиями эмулятора.

Диагностика

Если игра не запускается, включите подробный вывод. MAME напишет, какой файл ищет, какой каталог просматривает и где остановился. Флаг -log дополнительно создаёт error.log в каталоге настроек.

mame -verbose <shortname> 2>&1 | head -40
mame -log -verbose <shortname>
tail -n 40 ~/.mame/error.log
ls -la ~/.mame/nvram

Типичные причины: неверный rompath, устаревший набор после обновления, отсутствующий BIOS, несовпадение имени файла. Проверка -verifyroms показывает, каких файлов не хватает, а -listroms — какие файлы нужны системе. Если эмулятор падает с ошибкой сегментации, проверьте версию драйвера и попробуйте другой видеовыход, прежде чем сообщать об ошибке разработчикам.

Практический чек-лист

  • Используются только собственные дампы и свободные образы.
  • Версия MAME и наборы ПЗУ согласованы, проверка -verifyroms проходит.
  • rompath указывает на ваши каталоги, лишние пути удалены.
  • Для слабой видеокарты выбран opengl или soft, для точной картинки — bgfx с шейдером.
  • Настройки, NVRAM и сохранения включены в резервную копию.
  • При сбое собран вывод -verbose и error.log.

Итог

MAME — это в первую очередь точная эмуляция железа, а не коллекция игр. Установка в Linux занимает одну команду, но дальше всё зависит от аккуратности: правильный rompath, проверенные дампы, подходящий видеорежим и умение читать подробный лог. Такой подход экономит часы на поиске «битого» файла и позволяет годами хранить рабочую коллекцию, не завися от случайных сборок из сети.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте