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, проверенные дампы, подходящий видеорежим и умение читать подробный лог. Такой подход экономит часы на поиске «битого» файла и позволяет годами хранить рабочую коллекцию, не завися от случайных сборок из сети.