Эмулятор денди как настроить джойстик

Эмулятор денди как настроить джойстик

Думаю многие из вас помнят те славные времена, когда мы часами рубились в танчики, черепашки ниндзя, батлтодс энд даблдрагон и еще пару десятков других суперских игр на Денди. Это было шикарное время! Большинство игр были чертовски сложные, но даже несмотря на это, неудача за неудачей, мы, все равно, шли к своей цели и начинали игру заново, чтобы уж сегодня-то пройти ее до конца.

Поностальгировав всласть, я решил, что очень хочу поиграть в Dendy и поиграть хочу на ноутбуке, но не на клавиатуре, а на старом добром джойстике.

Ниже я опишу, с какими проблемами я столкнулся и как их решил.

Немного поясню, почему именно так мне захотелось поиграть. Приставка у меня сохранилась и она отлично работает, но осталась всего пара картриджей(остальные раздал друзьям). А играть на клавиатуре в игры денди, ну это как-то совсем не айс.

Встала проблема, как подключить джойстик от Денди к ноутбуку.

Немного погуглив, я понял, что в основном это решается подключением через LPT порт и использованием готовых драйверов, но у меня ноутбук, и мне это не подходит. Тут я вспомнил, что у меня есть плата Arduino Uno и я решил, что пойду своим путем и буду использовать именно ее.

0. Определение распиновки на джойстике

Первая проблема оказалась в том, что коннекторы у джойстиков внутренние, а все описания распиновок найденные в интернете, были для внешних коннекторов.

Найти спецификацию на мою noname денди мне не удалось, поэтому я стал рассматривать внутреннюю плату, чтобы найти там питание и землю, и понять какие из пяти контактов на джойстике с ними соединяются. С этим я справился быстро. Оказалось это два крайних контакта.

К Ардуино, я подсоединил все напрямую, питание — питание 5В, земля — земля, остальные три контакта подсоединил к 2, 3 и 4 цифровому пину.

1. Описание протокола работы джойстика

Оказалось не так-то просто найти эту информацию. Лишь несколько сообщений на паре форумов. Лично мне помогла эта запись: code.google.com/p/avrtoys/wiki/joystick, а именно этот код: avrtoys.googlecode.com/svn/trunk/joystick/main.c. А вот ссылка на упомянутую в этой записи заметку в журнале Радио: ftp.radio.ru/pub/arhiv/1996/06-96/46-6-1996.gif. Из всего этого я сделал вывод, что нужно подать сигнал на Latch, а потом 8 раз подавать сигнал на Clock и каждый раз считывать значение с Data, в котором после каждого Clock-а будет содержаться информация о следующей кнопке джойстика.

2. Настройка среды

Если у вас уже все настроено или вас устраивает Arduino IDE, можете перейти к 3 пункту.
Не знаю, как вас, но лично меня официальная Arduino IDE ужасно угнетает, поэтому коротко расскажу, как использовать свою любимую IDE.
Первым делом я скачал исходники Arduino IDE и нашел там код отвечающий за компиляцию и аплоад прошивки. Потратив немного времени я выделил все команды, которые там используются:

В приведенной выше команде, при линковке, используется библиотека libArduino.a, ее можно получить скомпилировав все *.c и *.cpp файлы из папки с хэдэрами и собрав все объектники в один архив. А можно просто запустить Arduino IDE, скомпилировать любой проект и скопировать файл /tmp/build*.tmp/core.a. Это будет абсолютно эквивалентно.
Все эти команды актуальны для Arduino Uno, для других ардуин следует изменить некоторые параметры.

Теперь используя эти команды можно легко настроить свою IDE, на автоматическую компиляцию и загрузку прошивки.

3. Написание кода прошивки

Здесь нужно было лишь определить какие из 2, 3 и 4 пина отвечают за Latch, Clock и Data. Это я решил методом проб и ошибок. Предполагаем, что 4 это Data, и делаем Serial.println(digitalRead(4)), если при нажатии кнопок есть какая-то реакция, значит это оно. Остальные 2 контакта определились, когда уже была написана прошивка, если все работает значит угадали, нет — меняем местами.

В результате я получил 1 байт содержащий в себе информацию о всех 8-ми кнопках джойстика, о каждой в соответствующем бите. У меня получилось следующее расположение: A, B, Select, Start, Up, Down, Left, Right. После этот байт отправляется на компьютер, где принимается и обрабатывается моим «драйвером».
Несложно заметить, что можно легко подключить второй джойстик.

4. Написание «драйвера»

Здесь нужно было принять этот самый байт от Arduino и эмулировать нажатия кнопок клавиатуры. Да-да, нажатия на джойстике будут обрабатываться, как нажатия на клавиатуре, хорошо это или плохо.
В качестве языка программирования я выбрал Python. Простой и эффективный, полагаю, он отлично подошел для этой задачи.

Единственная проблема, которая здесь возникла это дребезг контактов джойстика. Я ее решил путем введения временного интервала, наступающего после смены состояния кнопки, в течение которого состояния не изменяется. Хватило 0.05 с.

Для эмуляции нажатия кнопок клавиатуры я использовал утилиту xte, идущую в комплекте Xautomation. Она очень проста в использовании, вот пример: xte ‘keydown Left’ . За дополнительной инфорацией смотрите man xte.

Для выхода из драйвера я использовал состояние, когда нажата вся крестовина целиком. Этому состоянию соответствует число 0xf0.

5. Ура! Играем!

Все! Осталось лишь настроить эмулятор денди, я выбрал FCEUX.
Указываем в настройках те клавиши, которые указаны в драйвере ииии вспоминаем детство!

Читайте также:  Как умножать числа в периоде

Заключение

На самом деле есть и другие, возможно, более эффективные способы использования Ардуино в данной ситуации. Например, если у вас Arduino Leonardo, то можно использовать объект Keyboard для прямой посылки команд клавиатуры на компьютер. Так же можно, как я понял, перепрошить Ардуино так, чтобы она отображалась, как джойстик/клавиатура/мышь и так же напрямую посылать команды. Вот туториал: http://mitchtech.net/arduino-usb-hid-keyboard/. Впрочем, мой способ меня полностью устраивает и результатом я более чем доволен.

Как ни крути, но Ардуино это замечательная платформа для подобных экспериментов.
Теперь осталось только собрать все это в виде отдельного устройства.

Ну и видео напоследок:

Думаю многие из вас помнят те славные времена, когда мы часами рубились в танчики, черепашки ниндзя, батлтодс энд даблдрагон и еще пару десятков других суперских игр на Денди. Это было шикарное время! Большинство игр были чертовски сложные, но даже несмотря на это, неудача за неудачей, мы, все равно, шли к своей цели и начинали игру заново, чтобы уж сегодня-то пройти ее до конца.

Поностальгировав всласть, я решил, что очень хочу поиграть в Dendy и поиграть хочу на ноутбуке, но не на клавиатуре, а на старом добром джойстике.

Ниже я опишу, с какими проблемами я столкнулся и как их решил.

Немного поясню, почему именно так мне захотелось поиграть. Приставка у меня сохранилась и она отлично работает, но осталась всего пара картриджей(остальные раздал друзьям). А играть на клавиатуре в игры денди, ну это как-то совсем не айс.

Встала проблема, как подключить джойстик от Денди к ноутбуку.

Немного погуглив, я понял, что в основном это решается подключением через LPT порт и использованием готовых драйверов, но у меня ноутбук, и мне это не подходит. Тут я вспомнил, что у меня есть плата Arduino Uno и я решил, что пойду своим путем и буду использовать именно ее.

0. Определение распиновки на джойстике

Первая проблема оказалась в том, что коннекторы у джойстиков внутренние, а все описания распиновок найденные в интернете, были для внешних коннекторов.

Найти спецификацию на мою noname денди мне не удалось, поэтому я стал рассматривать внутреннюю плату, чтобы найти там питание и землю, и понять какие из пяти контактов на джойстике с ними соединяются. С этим я справился быстро. Оказалось это два крайних контакта.

К Ардуино, я подсоединил все напрямую, питание — питание 5В, земля — земля, остальные три контакта подсоединил к 2, 3 и 4 цифровому пину.

1. Описание протокола работы джойстика

Оказалось не так-то просто найти эту информацию. Лишь несколько сообщений на паре форумов. Лично мне помогла эта запись: code.google.com/p/avrtoys/wiki/joystick, а именно этот код: avrtoys.googlecode.com/svn/trunk/joystick/main.c. А вот ссылка на упомянутую в этой записи заметку в журнале Радио: ftp.radio.ru/pub/arhiv/1996/06-96/46-6-1996.gif. Из всего этого я сделал вывод, что нужно подать сигнал на Latch, а потом 8 раз подавать сигнал на Clock и каждый раз считывать значение с Data, в котором после каждого Clock-а будет содержаться информация о следующей кнопке джойстика.

2. Настройка среды

Если у вас уже все настроено или вас устраивает Arduino IDE, можете перейти к 3 пункту.
Не знаю, как вас, но лично меня официальная Arduino IDE ужасно угнетает, поэтому коротко расскажу, как использовать свою любимую IDE.
Первым делом я скачал исходники Arduino IDE и нашел там код отвечающий за компиляцию и аплоад прошивки. Потратив немного времени я выделил все команды, которые там используются:

В приведенной выше команде, при линковке, используется библиотека libArduino.a, ее можно получить скомпилировав все *.c и *.cpp файлы из папки с хэдэрами и собрав все объектники в один архив. А можно просто запустить Arduino IDE, скомпилировать любой проект и скопировать файл /tmp/build*.tmp/core.a. Это будет абсолютно эквивалентно.
Все эти команды актуальны для Arduino Uno, для других ардуин следует изменить некоторые параметры.

Теперь используя эти команды можно легко настроить свою IDE, на автоматическую компиляцию и загрузку прошивки.

3. Написание кода прошивки

Здесь нужно было лишь определить какие из 2, 3 и 4 пина отвечают за Latch, Clock и Data. Это я решил методом проб и ошибок. Предполагаем, что 4 это Data, и делаем Serial.println(digitalRead(4)), если при нажатии кнопок есть какая-то реакция, значит это оно. Остальные 2 контакта определились, когда уже была написана прошивка, если все работает значит угадали, нет — меняем местами.

В результате я получил 1 байт содержащий в себе информацию о всех 8-ми кнопках джойстика, о каждой в соответствующем бите. У меня получилось следующее расположение: A, B, Select, Start, Up, Down, Left, Right. После этот байт отправляется на компьютер, где принимается и обрабатывается моим «драйвером».
Несложно заметить, что можно легко подключить второй джойстик.

4. Написание «драйвера»

Здесь нужно было принять этот самый байт от Arduino и эмулировать нажатия кнопок клавиатуры. Да-да, нажатия на джойстике будут обрабатываться, как нажатия на клавиатуре, хорошо это или плохо.
В качестве языка программирования я выбрал Python. Простой и эффективный, полагаю, он отлично подошел для этой задачи.

Единственная проблема, которая здесь возникла это дребезг контактов джойстика. Я ее решил путем введения временного интервала, наступающего после смены состояния кнопки, в течение которого состояния не изменяется. Хватило 0.05 с.

Читайте также:  Формула перехода от радиан к градусам

Для эмуляции нажатия кнопок клавиатуры я использовал утилиту xte, идущую в комплекте Xautomation. Она очень проста в использовании, вот пример: xte ‘keydown Left’ . За дополнительной инфорацией смотрите man xte.

Для выхода из драйвера я использовал состояние, когда нажата вся крестовина целиком. Этому состоянию соответствует число 0xf0.

5. Ура! Играем!

Все! Осталось лишь настроить эмулятор денди, я выбрал FCEUX.
Указываем в настройках те клавиши, которые указаны в драйвере ииии вспоминаем детство!

Заключение

На самом деле есть и другие, возможно, более эффективные способы использования Ардуино в данной ситуации. Например, если у вас Arduino Leonardo, то можно использовать объект Keyboard для прямой посылки команд клавиатуры на компьютер. Так же можно, как я понял, перепрошить Ардуино так, чтобы она отображалась, как джойстик/клавиатура/мышь и так же напрямую посылать команды. Вот туториал: http://mitchtech.net/arduino-usb-hid-keyboard/. Впрочем, мой способ меня полностью устраивает и результатом я более чем доволен.

Как ни крути, но Ардуино это замечательная платформа для подобных экспериментов.
Теперь осталось только собрать все это в виде отдельного устройства.

Ну и видео напоследок:

С приставкой "Денди" знакомы все дети 90-х. Ворвавшись на отечественные рынки, консоль быстро обрела популярность, и вот уже в каждом доме дети всех возрастов собирались для увлекательной игры. Затем, когда компьютеры стали настолько доступны, что купить их мог каждый, век "Денди" постепенно завершился. К тому же среди приставок стали появляться и более продвинутые аналоги, наподобие Sega, Sony PlayStation и Nintendo 64.

Однако тяга поиграть в игрушки 90-х не утихает до сих пор. Теперь не нужно гоняться за картриджами по всем знакомым и друзьям. Достаточно провести несколько нехитрых манипуляций, и возможность поиграть в "Денди" появится и на персональном компьютере.

Что такое "Денди"

"Денди" представляет собой приставку с одним или двумя джойстиками. Носителями игр служили специальные картриджи. Это микросхема, облачённая в пластиковый корпус, которая носила в себе записанную игру. В эпоху недостаточного интернета для того, чтобы поиграть во что-то новое, был актуален обмен картриджами с соседями или друзьями.

Подключалась приставка посредством кабелей прямо к телевизору. А сама игра велась с помощью одного или двух джойстиков, оснащённых кнопками.

Немного истории

Самой первой перенести игры из автоматов на экраны домашних телевизоров догадалась японская компания Nintendo в 1984 г. Приставка взорвала мир видеоигр и стала настоящей сенсацией. Теперь каждый мог в комфортной для него обстановке играть в любые игры, доступные на "Денди". Интересно, что название консоли в Японии было Family Computer или Famicom. А в Европу и США она приехала чуть позже под именем NES.

В Россию консоль попала в 1992 г. и называлась "Денди". Ее копировали и воспроизводили в разных форматах. Правда, на ранних этапах с ней конкурировали имеющиеся "Атари" и ей подобные. Но "Денди" быстро обошла все известные форматы и покорила сердца любителей игр того времени. Однако с приходом новой Genesis или Sega Mega Drive 2, а затем и Sony PlayStation, ей пришлось потесниться на этом рынке.

В современном мире также можно найти версии оригинальной консоли "Денди" в специализированных магазинах и поиграть для так называемого «фана».

"Денди": современная эпоха

Окунуться в волшебный мир игр на "Денди" можно и в современном мире. Для этого имеется масса возможностей. Одна из самых простых и доступных — подключить джойстик от "Денди" к компьютеру. Благодаря рынку электроники приобрести разные варианты устройства можно в интернете или на радиорынках. Современный джойстик для "Денди", как правило, обладает портом USB, посредством которого можно подключить его к ПК. Такой подход содержит минимум манипуляций. Если же есть желание повозиться с паяльником и случайно был обнаружен оригинальный джойстик, то можно подключить и его, создав своими руками специальный переходник.

Подключить джойстик от "Денди" к компьютеру через USB

Первое, что надо сделать для такого подключения, это приобрести джойстик для "Денди". Найти его можно как на специализированных сайтах электроники, так и на различных рынках. Джойстик не обязательно должен быть похож на своего оригинального представителя. Внешне он может выглядеть как от любой другой консоли.

После того как для "Денди" джойстик найден, нужно озаботиться программным обеспечением. Для этого необходимо скачать специальное приложение — эмулятор приставки. Так как официально "Денди" имеет аббревиатуру NES, то и искать соответствующую программу нужно именно по такому запросу. Эмуляторов в сети присутствует масса. Но принцип работы этого приложения один — запуск игр на "Денди" в окне программы.

Эмулятор

После того как эмулятор будет найден и скачан, нужно найти непосредственно игру. Это можно также сделать с помощью поиска на профильных сайтах.

Продемонстрировать, как подключить джойстик от "Денди" к компьютеру, можно на одном из популярных эмуляторов — FCEUX. Его окно выглядит как на фото снизу.

Скачивание и установка не займут много времени, так как программа весит не более 2 мегабайт и проста в освоении.

Читайте также:  Энергопотребление видеокарт nvidia geforce таблица

Теперь настало время подключить и настроить от "Денди" джойстик. Для этого нужно вставить его в порт USB компьютера. Затем в меню эмулятора выбрать пункт Config и перейти в раздел Input.

В открывшемся окне конфигурации для настройки джойстика нажимается пункт Configure. Откроется новый интерфейс, который визуально будет напоминать расположение кнопок на джойстике. Таким образом, нажимая на определяемую его кнопку и задавая соответствующую клавишу на клавиатуре ПК, настраивается поведение в эмуляторе. После установки всех кнопок джойстика нужно все сохранить и выйти в главное окно программы.

Далее нужно найти необходимую игру. Их также имеется много в свободном доступе в интернете. Запуск игр осуществляется через меню File эмулятора, в котором надо выбрать пункт Open ROM. ROM — это образ игры, запакованный в формате, понятном эмулятору. Помимо основных возможностей, программа позволяет сохранять состояние игры в любой момент и также начать её с того же места. Этого не хватало многим детям в эпоху прохождения сложных игр.

Как подключить джойстик от "Денди" к компьютеру через LPT-порт

Разновидностей и клонов приставки "Денди" было выпущено довольно много. Соответственно, джойстики могли иметь разную форму и количество контактов. В большинстве случаев использовались 9 или 15. 9-контактный разъем очень похож на порт COM компьютера. Именно это фактор и можно использовать для создания переходника от "Денди" к ПК.

Для начала понадобятся два коннектора — LPT и COM. Их придётся разобрать, чтобы появилась возможность правильно припаять провода. Пайка производится согласно несложной схеме, изображенной на снимке внизу.

Как видно, разъём 1 на джойстике соединяется с разъёмами 5-9 через ряд диодов. Остальные спаиваются напрямую. Соединив провода и припаяв их в нужной последовательности, можно собрать все назад. Переходник готов к первому испытанию.

Драйверы для джойстика

Но перед этим нужно озаботиться программной составляющей оборудования. Так как операционная система не знает, как управлять данным видом джойстика, нужно установить в неё драйвер с необходимой информацией. Естественно, что специально его никто для ПК не разрабатывал. Поэтому придётся воспользоваться универсальными средствами для реализации соединения подобных устройств с компьютером.

Таких программных продуктов много на просторах сети, но лучше воспользоваться приложением PPJoy. Оно оптимизировано для подключения неизвестных устройств наподобие джойстиков к компьютеру, посредством подбора подходящего драйвера.

Сам процесс скачивания и установки прост. После успешной инсталляции на рабочем столе появится иконка данной программы. Запустив её, можно увидеть окно, предлагающее добавить новое устройство в конфигурацию. Нужно нажать кнопку Add. Далее программа выдаст окошко, в котором требуется задать, каким образом будет происходить подключение. В настройках нужно указать следующее:

параллельный порт — LPT1, соответственно, если он один;

тип контроллера — SNES или NES;

тип интерфейса — Linux;

номер контроллера — Controler 1;

подтип контроллера — NES.

Теперь осталось нажать на кнопку Add. Этим самым программа добавит устройство в систему. В следующем окне необходимо нажать Done.

После установки всех настроек джойстика нужно его проверить и откалибровать. Для этого в операционных системах Windows есть пункт в Панели управления, именуемый "Игровые устройства". В нем, во вкладке "Свойства", имеется возможность проверить, как реагирует джойстик на нажатия тех или иных клавиш. Если наблюдается какая-либо активность, то джойстик работает, и можно открывать эмулятор. Если нет, то нужно перепаять все заново, так как что-то пошло не так.

Краткий обзор популярных эмуляторов

Небольшой перечень наиболее популярных и удобных рабочих эмуляторов:

FCEUX. Этот эмулятор уж упоминался в статье. Имеет открытый исходный код и может быть запущен на самых разнообразных системах. Обладает широким выбором настроек и функций.

iNES. Простой и лёгкий эмулятор для операционной системы Windows. Обладает минимальным пакетом настроек и конфигураций.

Nestopia. Также имеет открытый исходный код. Может работать под управлением операционных систем Windows, Linux, Mac OS. Множество настроек и фишек.

VirtuaNes. Данный эмулятор способен поддерживать световой пистолет, замедление и ускорение игры, а также много настроек, связанных с обработкой видео.

RetroCopy. Это один из мультиприставочных эмуляторов, способных воспроизводить образы игр не только "Денди", но также и Sega, Nintendo и многих других автоматов и консолей.

Выводы

Конечно, для радиолюбителей будет более интересен второй вариант джойстика "Денди" для ПК. Для простых геймеров, решивших окунуться в ностальгию старых игр, прекрасно подойдёт способ номер 1. Во-первых, стоимость джойстиков с USB не столь велика. К тому же сейчас их купить можно практически на любом углу. Во-вторых, это значительная экономия времени при подключении и калибровке нового устройства.

В сети в большом количестве присутствуют игры "Денди". Играть с джойстиком или на клавиатуре — личный выбор каждого. Но именно полное погружение в атмосферу той эпохи все же даст только всестороннее восстановление игрового процесса.

Энтузиастами "Денди" игры с джойстиком портированы таким образом, чтобы можно было их использовать на большом количестве различных эмуляторов. Ещё одним существенным плюсом является тот факт, что самый простой джойстик можно применять и при эмуляции других приставок, например Sony PlayStation или Sega. Достаточно просто установить соответствующую программу и найти образ нужной игры.

Ссылка на основную публикацию
Что можно делать с айфоном
Не отвлекать оповещениями, когда вы смотрите кино или отдыхаете. Не беспокоить. Вы можете включить режим «Не беспокоить» одним касанием. И...
Хрипит динамик на телефоне при прослушивании
Одной из самых распространенных поломок мобильных аппаратов является выход из строя динамика. Любой пользователь мобильных телефонов знает, что сейчас производители...
Хэнкок из какой вселенной комиксов
Хэнкок Общая информацияЖанр Научная фантастика Драма Комедия Страна производстваСШАКиностудия Columbia Pictures РежиссёрПитер БергАвтор сценария Винс Джиллиган Винсент Нго Когда вышел2008...
Что можно сделать из перебойника от компьютера
Всем привет! В общем валялся у меня в гараже ненужный компьютерный безперебойник, сначала хотел его выбросит. но потом разобрав я...
Adblock detector