Linux Games — Эмуляция древних консолей
Многие из нас в 90-е годы имели приставку типа Денди или Сега. Не открою америку, если скажу, что на любом компьютере старше 486sx можно путем программной эмуляции погамать в любимые игрушки. Сейчас я хочу рассмотреть эту тему подробнее. Итак, что нам нужно (для определенности будем дальше работать с консолью NES (ака Денди), но аналагично и для других приставок):
Эмулятор
Это - наш главный инструмент, как скальпель для хирурга и как vim для программиста :) От выбора эмулятора зависит то, насколько комфортно нам будет играть и будет ли вообще игра доставлять удовольствие. Для Linux выбор эмуляторов не так широк как хотелось бы, но для неискушенного пользователя вполне хватит. Мною был выбран Mednafen в первую очередь за универсальность. Он поддерживает кучу различных консолей начиная от всеми известной Денди и заканчивая экзотическим Watara Supervision. Но к сожалению в этом списке пока нет Сеги и Супер Нинтендо :( (может быть кто желает помочь автору с этими консолями?). Главной недостаток и в то же время главное достоинство этого эмулятора - отсутствие какого-либо графического интерфейса в стандартной поставке. С данным вопросом мы разберемся во второй части статьи, а пока опробуем его. Запускаем из консоли, параметром указываем РОМ с игрой, скачанный предварительно с любого из сотен сайтов по этой тематике.
Первый вопрос, который хочется задать: а что тут с управлением? По системным кнопкам информацию можно получить через F1. Из интересных комбинаций тут у нас alt+s для включения возможностей прокрутки назад (о! как этого нехватало на железной Денди, особенно в Battletoads!) и alt+shift+1 для настройки кнопок первого джойстика Денди. Нас попросят по очереди нажать на клавиатуре или джойстике кнопки, соответствующие кнопкам джойстика Денди. Всего на одну кнопку Денди можно назначить до четырех кнопок джоя/клавиатуры. Я назначил стрелки на крестовину, Z и X на A и B, Space на Select и Enter на Start, также задал и соответствующие кнопки железно джойстика Денди, подключенного через переходник на LPT.
С управлением разобрались, теперь второй вопрос на повестке дня - графика. Действительно, умолчальные настройки выглядят весьма непривлекательно. Чтобы подкорректировать их нам придется залезть в конфигурационный файл ~/.mednafen/mednafen.cfg. Пару слов о формате файла: большинство настроек задается отдельно для каждой консоли в виде "консоль.подсистема.параметр значение". Я рассмотрю настройку для Денди(NES), но для других консолей все аналогично. Нас интересует один блок настроек, далее я его приведу с комментариями?
Все, можно было бы играть, но через консоль запускать неудобно. Нужен комфорт :) И в этом нам поможет...
Каталог
Я бы выделил две категории эмуляторщиков - первые долго бродят по различным онлайн каталогам игр, затем скачивают и запускают понравившуюся игру. С этим все понятно - кликнул на игре, запустился эмулятор и играй. Вторые же как правило скачивают полный набор Good* (реже No-Intro) с целью получить все и сразу. Вот тут здорово помогут каталогизаторы. В свое время я использовал QuickPlay - всем он хорош, но только для Windows. Отсутствие каталога в любимой ОС здорово усложнило задачу - нужно было зайти в папку с архивами, найти нужный, найти файл в нем и наконец запустить игру. Но вскоре чудом (учитывая неразрекламированность проекта) был найден Gelide.
На офсайте можно скачать готовые пакеты под Debian, хотя не так давно мне приходилось компилировать вручную.
Итак, главное его умение - показывать список игр, разделенный по консолям (есть и другие фильтры). Как дополнительные плюшки - он может показывать некоторую полезную информацию о ROM'е и фотки картриджа. Последних у меня не оказалось, поэтому все кроме списка игр, консолей эмуляторов было благополучно убрано. Дальше нам надо добавить наш GoodNES (предварительно найденный и скачанный на просторах сети) в каталог. Тут есть несколько вариантов - в контекстном меню пункта "Nintendo NES" выбираем "Edit" и в открывшемся окне поле "Roms Directory" задаем путь до нашего распакованного ГудНЕСа. Другой вариант - распаковываем прямо в ~/.gelide/Nintendo Nes/roms/. Но так как у меня была необходимость играть и в других ОС, то я выбрал вариант символических ссылок (замечу, что это удобно еще и при перемещении нашей коллекции в другое место - достаточно обновить симлинки и не надо беспокоиться о настройках Gelide).
Итак, GoodNES распакован, теперь нужно в контекстном меню нашей приставки выбрать пункт "Refresh" и вауля - в основной части окна появились наши заветные игры. Однако тут нас ждет большой облом - Mednafen не понимает архивы! Тут можно опустить руки, бросить все и пойти старым путем - запускать игры через файловый менеджер. Но нас-то такими мелочами не остановишь :) По-быстрому был написан скрипт-оболочка для наших эмуляторов:
(Маленькое отступление: в архивах GoodNES с игрой кладется куча разных версий РОМа в т.ч. графических хаков, овердампов [o*], бэддампов [b*] и т.д. Естественно, брать первый попавшийся не получится т.к. вполне можем запустить нерабочий РОМ о чем узнаем при зависании где нибудь на последнем уровне :) )
Что он делает? Он смотрит содержимое архива с помощью 7z, выбирает наилучший РОМ (функция sel_rom), распаковывает его, ищет подходящий эмулятор и запускает все это. Помещаем скрипт в /usr/local/bin/ и даем ему +x. Теперь нужно добавить скрипт в Gelide в качестве эмулятора. Для этого вызываем контекстное меню во фрейме с эмуляторами и жмем "Add". Заполняем примерно так:
Готово! Теперь можно и поиграть! выбираем любимую игру, выбираем скрипт emu-arc и... В БОЙ! :-)
P.S. Не злоупотребляйте сохранениями :)
P.P.S. Если будет необходимость, добавлю описание настройки dgen (эмулятор сеги) и zsnes (супер нинтендо)
P.P.P.S. Первый пост.
Эмулятор
Это - наш главный инструмент, как скальпель для хирурга и как vim для программиста :) От выбора эмулятора зависит то, насколько комфортно нам будет играть и будет ли вообще игра доставлять удовольствие. Для Linux выбор эмуляторов не так широк как хотелось бы, но для неискушенного пользователя вполне хватит. Мною был выбран Mednafen в первую очередь за универсальность. Он поддерживает кучу различных консолей начиная от всеми известной Денди и заканчивая экзотическим Watara Supervision. Но к сожалению в этом списке пока нет Сеги и Супер Нинтендо :( (может быть кто желает помочь автору с этими консолями?). Главной недостаток и в то же время главное достоинство этого эмулятора - отсутствие какого-либо графического интерфейса в стандартной поставке. С данным вопросом мы разберемся во второй части статьи, а пока опробуем его. Запускаем из консоли, параметром указываем РОМ с игрой, скачанный предварительно с любого из сотен сайтов по этой тематике.
Первый вопрос, который хочется задать: а что тут с управлением? По системным кнопкам информацию можно получить через F1. Из интересных комбинаций тут у нас alt+s для включения возможностей прокрутки назад (о! как этого нехватало на железной Денди, особенно в Battletoads!) и alt+shift+1 для настройки кнопок первого джойстика Денди. Нас попросят по очереди нажать на клавиатуре или джойстике кнопки, соответствующие кнопкам джойстика Денди. Всего на одну кнопку Денди можно назначить до четырех кнопок джоя/клавиатуры. Я назначил стрелки на крестовину, Z и X на A и B, Space на Select и Enter на Start, также задал и соответствующие кнопки железно джойстика Денди, подключенного через переходник на LPT.
С управлением разобрались, теперь второй вопрос на повестке дня - графика. Действительно, умолчальные настройки выглядят весьма непривлекательно. Чтобы подкорректировать их нам придется залезть в конфигурационный файл ~/.mednafen/mednafen.cfg. Пару слов о формате файла: большинство настроек задается отдельно для каждой консоли в виде "консоль.подсистема.параметр значение". Я рассмотрю настройку для Денди(NES), но для других консолей все аналогично. Нас интересует один блок настроек, далее я его приведу с комментариями?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
;Разрешение в полноэкранном режиме - ширина |
Все, можно было бы играть, но через консоль запускать неудобно. Нужен комфорт :) И в этом нам поможет...
Каталог
Я бы выделил две категории эмуляторщиков - первые долго бродят по различным онлайн каталогам игр, затем скачивают и запускают понравившуюся игру. С этим все понятно - кликнул на игре, запустился эмулятор и играй. Вторые же как правило скачивают полный набор Good* (реже No-Intro) с целью получить все и сразу. Вот тут здорово помогут каталогизаторы. В свое время я использовал QuickPlay - всем он хорош, но только для Windows. Отсутствие каталога в любимой ОС здорово усложнило задачу - нужно было зайти в папку с архивами, найти нужный, найти файл в нем и наконец запустить игру. Но вскоре чудом (учитывая неразрекламированность проекта) был найден Gelide.
На офсайте можно скачать готовые пакеты под Debian, хотя не так давно мне приходилось компилировать вручную.
Итак, главное его умение - показывать список игр, разделенный по консолям (есть и другие фильтры). Как дополнительные плюшки - он может показывать некоторую полезную информацию о ROM'е и фотки картриджа. Последних у меня не оказалось, поэтому все кроме списка игр, консолей эмуляторов было благополучно убрано. Дальше нам надо добавить наш GoodNES (предварительно найденный и скачанный на просторах сети) в каталог. Тут есть несколько вариантов - в контекстном меню пункта "Nintendo NES" выбираем "Edit" и в открывшемся окне поле "Roms Directory" задаем путь до нашего распакованного ГудНЕСа. Другой вариант - распаковываем прямо в ~/.gelide/Nintendo Nes/roms/. Но так как у меня была необходимость играть и в других ОС, то я выбрал вариант символических ссылок (замечу, что это удобно еще и при перемещении нашей коллекции в другое место - достаточно обновить симлинки и не надо беспокоиться о настройках Gelide).
Итак, GoodNES распакован, теперь нужно в контекстном меню нашей приставки выбрать пункт "Refresh" и вауля - в основной части окна появились наши заветные игры. Однако тут нас ждет большой облом - Mednafen не понимает архивы! Тут можно опустить руки, бросить все и пойти старым путем - запускать игры через файловый менеджер. Но нас-то такими мелочами не остановишь :) По-быстрому был написан скрипт-оболочка для наших эмуляторов:
(Маленькое отступление: в архивах GoodNES с игрой кладется куча разных версий РОМа в т.ч. графических хаков, овердампов [o*], бэддампов [b*] и т.д. Естественно, брать первый попавшийся не получится т.к. вполне можем запустить нерабочий РОМ о чем узнаем при зависании где нибудь на последнем уровне :) )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#!/bin/sh |
Что он делает? Он смотрит содержимое архива с помощью 7z, выбирает наилучший РОМ (функция sel_rom), распаковывает его, ищет подходящий эмулятор и запускает все это. Помещаем скрипт в /usr/local/bin/ и даем ему +x. Теперь нужно добавить скрипт в Gelide в качестве эмулятора. Для этого вызываем контекстное меню во фрейме с эмуляторами и жмем "Add". Заполняем примерно так:
Готово! Теперь можно и поиграть! выбираем любимую игру, выбираем скрипт emu-arc и... В БОЙ! :-)
P.S. Не злоупотребляйте сохранениями :)
P.P.S. Если будет необходимость, добавлю описание настройки dgen (эмулятор сеги) и zsnes (супер нинтендо)
P.P.P.S. Первый пост.