Здравствуйте, други!
Заранее прошу прощения у не сентиментальных читателей за столь продолжительное вступление. Надеюсь, вы поймёте правильно - слишком уж много воспоминаний связано у меня с этой темой. (:
Администраторы форума наконец- то внедрили крайне полезный BB-Code "Спойлер", теперь я могу "спрятать" вступление, дабы не обременять манипуляторы тех, кому это не нужно. (:
Если вы уже знакомы с принципами и технологией подключения джойстиков к компьютеру и вам нужно лишь узнать детали, специфичные для операционной системы GNU/Linux, можете сразу перейти к пункту
II
ВСТУПЛЕНИЕ
В последнее время, на нашем любимом форуме всё чаще возникают разговоры об играх. Причём, об играх разных: красивых и не очень, открытых и не совсем...
Причины этой тенденции незамысловаты и очевидны - популярность операционной системы GNU/Linux растёт с каждым днём и можно по праву гордиться тем фактом, что наш любимый дистрибутив не только не отстаёт от такого стремительного развития, а наоборот, является одним из мощнейших двигателей этого процесса во всём Мире!
Как результат, в ряды пользователей прибывает огромное количество не ИТ-специалистов, которые используют GNU/Linux просто потому, что эта ОС гораздо безопаснее, надёжнее и удобнее; не забывая, конечно, и о ценовой стороне вопроса.
Однако, для таких "эмигрантов" есть в ОС GNU/Linux одна серьёзная перемена, зачастую вызывающая нешуточную "морскую болезнь" - это отсутствие широчайшего выбора игр на любой вкус. Тем не менее, в свете последних событий, становится ясно, что и эта "грань" неподражаемого "бриллианта" по имени "GNU/Linux" в недалёком будущем засияет во всей красе!
Но это на будущее, а сегодня я хочу поговорить с вами о тех играх, которые, несомненно, знакомы подавляющему большинству людей, детство и юношество которых пришлось на многоликие 90-е годы. Разумеется, я говорю о играх приставочных! Ну, кто же из нас не играл в Dendy, Nintendo и Sega?! (:
Конечно, позже была PlayStation и её второе пришествие, однако, эти консоли уже больше претендовали на соперничество непосредственно с компьютерами (которое, они, естественно, проиграли), поэтому я их почти не рассматриваю.
Не секрет, что существуют специальные программы-эмуляторы, позволяющие запускать на платформе РС игры для различных консолей. Однако, игра на платформе РС лишает, не побоюсь громких слов, 80%-90% удовольствия игры на приставке, ввиду отсутствия джойстиков!
Именно эти самые джойстики придавали консолям особый, неподражаемый шарм, передать который не смогут никакие клавиатуры и мыши, даже самых дорогих марок. И в этом аспекте, частые поломки игровых манипуляторов, от перегрузок в жесточайших виртуальных баталиях, тоже обусловили своеобразную романтику. Разве никто из нас не пытался починить сломавшийся джойстик? (: А ведь многие именно благодаря джойстикам впервые взяли в руки паяльник, а в будущем связали свою судьбу с радио-электроникой!
И всё же, 8-битная платформа, как ни крути, была достаточно примитивной. Великие "Танчики" и неподражаемый "Pacman", конечно, и сегодня живут в сердцах миллионов, однако все они меркнут на фоне 16-битных игр: "Dune 2", "Sonic", "BattleToads", "Erth Worm Jim", разумеется "Ultimate Mortal Kombat 3", а также "International Super Star Soccer" и "Rock'n'Roll Racing", да разве ж все упомнишь?! (: Недаром в нашей стране целые книги издавались с описаниями и советами по прохождению различных игр.
Джойстики для "8-биток" не отличаются особой оригинальностью, это всего две кнопки, в такие игры можно играть и на клавиатуре. Совсем другое дело с манипуляторами неподражаемой "Sega Genesis" (в Европе продаваемой под маркой "Sega Mega Drive 2")!!! Попробуйте ка исполнить "Brutality" Ermac'a на клавиатуре компьютера! (:
ЗАДАЧА
Итак, наша задача: мы хотим играть в любимые с детства "Сеговские" игры в не менее любимой операционной системе Ubuntu GNU/Linux, причём, играть не просто так, а именно на джойстике! Конечно, джойстик ("по научному", геймпад/gamepad) можно приобрести в компьютерном магазине, однако цена и характеристики таких устройств зачастую не соответствуют предъявляемым нами требованиям. Например, я живу в глубинке и геймпадов ценой < 1000 рублей в магазинах нет, к тому же, все они с четырьмя кнопками, аля PlayStation, а шестикнопочных - нигде нет.
Поэтому, мы сделаем два полезных дела сразу: сэкономим деньги на приобретении дорогущего девайса и заодно "вдохнём" новую жизнь в пылящиеся джойстики, которые есть у многих из нас.
Поверьте, это только на первый взгляд кажется неоправданно сложной и затратной задачей, всё далеко не так трудно, как может показаться на первый взгляд. Давайте начнём с того, что для решения нашей объёмной задачи, разобьём её на более мелкие, легко обозримые подзадачи, чему, собственно, нас и учит наука.
Подзадачи:
I. Модернизировать джойстик для подключения к компьютеру.
II. Установить драйвер для того, чтобы операционная система "увидела" наш джойстик.
III. Настроить джойстик программно, для его полноценной работы в системе.
IV. Установить программу-эмулятор консоли Sega MD2 и наши любимые игры к ней.
V. ИГРАТЬ! (:Вот теперь всё становится гораздо яснее и проще. Итак, приступим!
РЕШЕНИЕ
I. Модернизация джойстика.
!!!ВАЖНО!!!
Внимательно прочтите этот раздел, если вы впервые решаетесь на подобные действия!
Ни я и ни кто другой из упомянутых здесь авторов руководств НЕ НЕСУТ ответственности за ваши действия! За причинение вам материального и морального ущерба, за сломанные конечности, обожжённые руки и сгоревший компьютер виноваты будете вы сами! Вся ответственность полностью лежит только на вас и вам НЕОБХОДИМО это отчётливо осознавать. Если вы не уверены в своих силах и/или в достоверности этих инструкций, то вам лучше не пытаться осуществить данную модернизацию.
Теперь, когда с нами остались только те, кто чётко осознаёт свои силы и готов сделать нечто, о чём раньше мы могли только читать в таких замечательных журналах, как "Юных Техник", "Конструктор" и им подобных, позвольте ещё пару рекомендательных напутствий: вероятность того, что вы спалите свой LPT-порт или ещё что поважнее крайне мала, а полученное устройство можно будет подключать и отключать в любое время, а не только при выключенном компьютере. Главное - всё сделать правильно и обдуманно. Тем не менее, перед началом каких- либо действий, обязательно прочитайте ВСЁ руководство от начала до конца.
Пожалуй, неподготовленного человека именно этот, самый первый этап может отпугнуть и/или вызвать наибольшие трудности. Однако, для выполнения этой операции вам совершенно не обязательно быть матёрым электронщиком и владеть паяльником, словно джедай световым мечом. Главное здесь - иметь "прямые руки"! Если вы не будете волноваться, подойдёте к этому делу обстоятельно, всё подготовите заранее и как следует, то у вас несомненно всё получится.
*АИтак, мы будем модернизировать "Сеговский" джойстик для подключения к LPT-порту компьютера
*Б, для этого потребуется:
Ингредиенты:
1. Паяльник.
2. Припой и флюс. Чаще всего, в этом качестве применяется "связка" канифоль+олово.*В
3. Шнур для подключения принтера к LPT-порту (или ему подобный). Можно приобрести в компьютерном магазине, стоимость 50-70 рублей.
4. Собственно, джойстик для приставки Sega MD2. Думаю, у многих они ещё имеются, но если все разломались или их и вовсе не было, то смело идите в магазин, цена ~70 рублей.Итак, в проводе для подключения принтера к LPT-порту нас интересует та сторона, на которой имеются "штырьки", коих 25 штук. Этот тип соединительного элемента, по понятным причинам, называется "папа". Давайте договоримся, что называть весь этот элемент мы будем "коннектор". Подключается коннектор к порту на материнской плате, тип разъёма которой, как вы уже догадались, называется "мама", на нашем с вами "слэнге" это будет просто "порт".
Разбираем коннектор и отпаиваем все провода, а также откусываем все дополнительные "железячки" (если таковые имеются), соединяющие несколько контактов. В результате получаем заготовку, к которой будем припаивать провода джойстика.
Пришло время узнать: к каким же именно контактам 25-ти контактного коннектора мы будем припаивать 9 проводов джойстика.
Здесь необходимо провести ещё одно "лирическое отступление" о том, как мы будем
идентифицировать провода джойстика и контакты коннектора. Если вы ещё не заметили, обратите внимание - контакты коннектора пронумерованы (по крайне мере, это так в >90% случаев) и отсчёт штырьков ведётся в ДВА РЯДА, начиная от левого-верхнего (1) до правого-нижнего (25).
[Изображение удалено администратором]
То же самое касается и коннектора джойстика, с той только разницей, что тип соединения джойстика - "мама", поэтому для него отсчёт будем вести наоборот - в два ряда, от правого верхнего (1) до левого-нижнего (9). Сверять цвета проводков джойстика не буду, поскольку глубоко сомневаюсь, что китайские производители чётко соблюдают их порядок, это только собьёт вас с толку. Лучше ориентируйтесь по своей конкретной ситуации, тогда точно не ошибётесь.
Обрежьте провод джойстика за ~5 см до его коннектора, разберите коннектор джойстика и определите какого цвета провод подключен к 1-му контакту, какого цвета - ко второму и так далее до 9-го.
Теперь нам понадобится схема, согласно которой мы припаяем провода к коннектору. Таких схем существует большое количество, предназначены они для разных драйверов. Есть схемы для подключения 8-ми битных джойстиков, джойстиков Playstation и др.
Мы будем паять по схеме с ласковым название "Linux", ввиду её простоты и отличного взаимодействия с имеющимся драйвером для джойстиков Sega. Вот как она выглядит:
[Изображение удалено администратором]
Ещё раз заостряю ваше внимание на том, что тип коннектора джойстика - "мама", а принятый отсчёт контактов (от левого-верхнего до правого-нижнего) всегда ведётся согласно типу "папа", именно поэтому на схеме явно указано слово
male.
Если всё сделаете верно, то получится, примерно, так:
[Изображение удалено администратором]
Собираем получившийся коннектор, теперь у вас на столе должно лежать что- то вроде этого:
[Изображение удалено администратором]
Поздравляю! Самый сложный этап позади! Я же говорил, что всё далеко не так сложно, как казалось. (:
I. Установка драйвера.
Для тех, кто хочет узнать все подробности и детали, относительно драйверов, входящих в ветку "Linux Joystick Driver", я направляю к документации ядра (где почитать об этом в Сети - смотрите раздел ССЫЛКИ в конце статьи ). Там же вы сможете узнать подробности о подключении других типов джойстиков (Dendy, Nintendo, Sony PS и т.д.) через всё тот же параллельный порт.
Для тех, кто готов мне довериться, объясню в "двух словах":
Первым делом. установите пакет joystick из репозиториев. Дальше, мы будем использовать драйвер db9 из упомянутого состава "Linux Joystick Driver". Компилировать ничего не надо, весь пакет поставляется с ядром, поэтому всё что нам нужно сделать это подгрузить модуль ядра с драйвером db9. Этот драйвер поддерживает различные виды джойстиков (ни много, ни мало 10 типов), к тому же, он может "слушать" любой из имеющихся в системе LPT-портов, поэтому подгружать его нужно не просто так, а с определёнными параметрами.
Всё же, для большинства из нас, эти параметры будут одинаковы, поскольку порт в компьютере, как правило, только один, а джойстик 8-ми кнопочный (6 кнопок + Mode + Start), что соответствует типу 6.
Однако, здесь есть один нюанс: по умолчанию, в ядро УЖЕ загружается модуль "занимающий" порт LPT. Этого "парня" зовут lp, он из CUPS, служит для поддержки печати. Если у вас нет принтера, то смело идите дальше, если же у вас есть принтер, который подключается именно по LPT, то вам придётся учитывать, что одновременно эти два модуля работать не могут, придётся отключать db9 на время печати, а lp - на время игры.
Итак, открываем файл, отвечающий за модули ядра:
sudo gedit /etc/modulesКомментируем строку с lp и добавляем db9 с параметрами. У меня это выглядит так:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
fuse
#lp
db9 dev=0,6
Теперь нужно перезагрузить компьютер (или ввести волшебную команду, которую я не знаю. (: Может, гуру подскажут).
Настал момент истины! В директории /dev/input должен появиться файл нашего устройства "js0". js, понятно, joystick, а 0 - порядковый номер такого устройства в системе. Если у вас уже есть другие джойстики, то цифра будет другой.
На "всякий пожарный" сделаем символическую ссылку:
sudo ln -s /dev/input/js0 /dev/js0Так будет комфортнее программам настройки.
Проведём хитрый эксперимент - наберите команду
cat /dev/js0 и понажимайте на кнопки джойстика, если на экране появляются какие- то символы, то можете вздохнуть спокойно - самое сложное позади. (:
III. Программная настройка джойстика.
Итак, мы добились самого главного: система "узрела" наше невероятное устройство, а сам девайс успешно посылает сигналы по нажатию кнопок! Теперь мы заставим эти сигналы преобразовываться в нажатия клавиш клавиатуры, тогда, как вы уже догадались, мы легко сможем задействовать джойстик в совершенно любой сфере, даже никак не связанной с играми, однако эту тему я оставлю на усмотрение вашей собственной фантазии...
Существует несколько программных пакетов, позволяющих выполнить такую задачу. Лично я считаю, что оптимальным является
Rejoystick. Его нет в официальных репозиториях, однако deb-пакет
доступен на сайте проекта.
Данная утилита выгодно отличается от других уже тем, что это не портированная версия windows-программы (в отличии например от joy2key), а изначально предназначена для ОС GNU/Linux, к тому же, она обладает интуитивным графическим интерфейсом на библиотеке GTK. Чего, собственно, Ubuntu'вцу ещё нужно?! (:
Будем считать, что deb-пакет Rejoystick вы уже установили. Теперь пишем в консоли команду
rejoystick, появится окно программы. Теперь понажимайте кнопки джойстика, убедитесь, что по нажатию каждой из них, "загорается" определённая кнопка в окне программы. Назначьте клавиши клавиатуры, которые будут срабатывать по нажатию соответствующих кнопок джойстика.
Конфигурация rejoystick создана и настроена должным образом, однако программа ещё не запущена. Для этого необходимо лишь выполнить команду
rejoystick -dкоторая, как не сложно догадаться, запускает "демон" этой замечательной утилиты. Можно прописать её выполнения в "Система"-"Параметры"-"Сеансы", тогда вам не нужно будет каждый раз беспокоиться о её запуске.
IV. Устанавливаем эмулятор консоли Sega MD2 и игры к ней.
В настоящее время, в репозиториях Ubuntu доступен один эмулятор консоли Sega Genesis - это Dgen. Текущая версия выпущена ещё в 2001-м году, нет графического интерфейса и, вообще, сложновата она в освоении. Честно говоря, я её так и не осилил. (:
К счастью, "дружиться" с этой штукой совсем не обязательно, потому что активисты из ubuntuforums.org периодически
СОБИРАЮТ deb-пакеты портированной версии эмулятора под названием
Gens (изначально предназначенного для OC windows), благодаря тому, что исходный код этого проекта открыт.
Скачиваем нужный пакет (рекомендую использовать ветку stable, поскольку версия unstable, действительно, очень unstable!), устанавливаем и запускаем программу (после установки, ярлык появится в меню "Приложения"-"Игры"). Первым делом, разумеется, идём в настройки клавиш управления: "Options" - "Joypads", убеждаемся, что выставлен 6-кнопочный джойстик и назначаем клавиши. Разумеется, эти клавиши должны СОВПАДАТЬ с теми, что вы указали в программе rejoytick.
[Изображение удалено администратором]
V. ИГРАТЬ!
Ну, вот мы и подошли к апогею, друзья!
Теперь, с возвышенным чувством и осознанием проделанных трудов, можно переходить к самому главному, ради чего мы всё это и затеяли! (:
Нам понадобятся, так называемые, Rom-файлы - образы игр для нашего эмулятора Gens. Запускать их очень легко: "File"-"Open ROM". Адреса сайтов, где можно скачать ROM'ы смотрите в ССЫЛКАХ. Помяну о правовой стороне вопроса: использование эмулятора, скачивание ROM'ов и т.д. считается законным, если у вас самих есть приставка Sega MD2 и картриджи с такими играми. Но я вас ни сколько и ни в чём не сдерживаю, это просто к сведению. (:
ССЫЛКИ:
Rom-файлы игр, а также множество информации по консолям и эмуляторам на русском языке:
http://bit16.ruhttp://emu-land.netДокументация о пакете "Linux Djoystick Driver":
http://www.mjmwired.net/kernel/Documentation/input/joystick-parport.txtТемы на ubuntuforums по Sega Genesis, в которые полезно периодически заглядывать:
http://ubuntuforums.org/showthread.php?t=290008http://ubuntuforums.org/showthread.php?t=61745Драйверы для windows:
Общепризнанно лучшим драйвером для windows считается PPJoy
http://www.geocities.com/deonvdw/Docs/PPJoyMain.htmНо лично мне очень даже понравился драйвер XYZModeB
http://bit16.info/showthread.php?t=964
ПРИМЕЧАНИЯ:
*А: Всё же, если вы сомневаетесь в своих силах, обратитесь к родителям, родственникам или просто хорошим знакомым. Наверняка, хоть кто- то из вашего окружения, если и не является паяльщиком со стажем, то уж точно обладает, так называемыми, "золотыми руками". Вспомните мудрую поговорку: "Одна голова хорошо, а две лучше".
*Б: Если ваша материнская плата не является стандартной и в ней отсутствует параллельный порт (это бывает на "супер-современных" платах или платах портативных, например, предназначенных для корпусов стандарта
Slim-ATX) - не расстраивайтесь, при наличии должного желания, вам ничто не помешает приобрести к магазине PCI-карту с LPT-портом, цена ~300 рублей.
*В: Сегодня в магазинах повсеместно продаются специальные "пасты", содержащие в себе сразу и олово, и канифоль. Использование такой пасты сэкономит вам массу времени и нервов, особенно если в паянии вы новичок. Обычно это выглядит как гибкая тонкая "проволока" серебристо-желтоватого цвета, закрученная в "пружинку". Однако, будьте бдительны: гнусные торгаши и аморальные китайские производители так и норовят подсунуть "обманку", в которых из длинного размера "проволочки", канифоль содержится только в самом начале, а когда вы немного попаяете, то дальше идёт одно лишь олово!
Заключение
В заключении, хочу немного поговорить о грустном.
"Чего же тут грустить?", спросите вы, а грустно становится от того, что и на поприще эмуляторов игровых консолей, OC GNU/Linux, на сегодняшний день, находится в положени "догоняющего". Дело в том, что выбор как дрйверов и схем пайки, так и эмуляторов для ОС windows несравнимо больше и предоставляемые ими возможности гораздо шире. Так например, к великому сожалению, наш драйвер db9 поддерживает подключение лишь одного джойстика и не более. А в windows, "набив руку" в пайке и проявив смекалку, можно обнаружить, что коннекторы джойстиков для Sega "подходят" к разъёмам компьютерных COM-портов. Тогда, порывшись в старых системных блоках, вы с успехом сможете сделать нечто вот эдакое:
[Изображение удалено администратором]
С таким устройством можно будет играть вдвоём, даже не проводя "вандальных" операций с джойстиками.
А эмуляторы тамошние предоставляют такие умопомрачительные возможности, как запись и воспроизведение демок (!) любимых игр, а также, вдохните поглубже, игру по сети!!! Например, на форуме
bit16 и поныне проводятся напряжённые соревнования по различным играм для Sega! (:
Однако, давайте надеяться только на лучшее, ведь, как мы уже отметили, играющих пользователей ОС GNU/Linux становится всё больше, а будет спрос - будет и предложение!
Данное руководство я позиционирую лишь как обобщение всей той информации, которая известна мне об эмуляции приставки Sega на платформе РС, особенно применительно к любимой операционной системе Ubuntu GNU/Linux.
Конструктивные предложения и пожелания по улучшению статьи, ровно как и благодарности - всячески приветствуются. (:
Спасибо всем, кто дочитал до конца.
Добра!