User Tag List

Показано с 1 по 2 из 2

Тема: Геймпад для Специалиста

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,648
    Поблагодарили
    573 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Геймпад для Специалиста

    В то время, как Лик был моим единственным компьютером, среди прочего, конечно же хотелось и поиграть на нём. А как играть на такой клавиатуре? И даже несмотря на то, что играть на "нарисованной" клавиатуре Лика было практически нереально, я всё же ухитрялся это делать. Никаких других интерфейсов типа выхода под джойстик, у Лика не было. Поэтому я приколхозил джойстик самостоятельно, выведя разъём параллельно кнопкам курсора и пробела. По удачному стечению обстоятельств эти кнопки висят на одной линии, так что подключение не составило никакого труда. Многие игры как раз использовали для управления именно курсорные клавиши и пробел. Многие, но не все. Была пачка неплохих игр, у которых было нестандартное управление I, T, X, B, @. На фоне отсутствия интересных игр, DUNGEON из того пакета была вполне себе! В то время я не имел ни малейшего представления как можно переделывать управление. И вот ради DUNGEON и ещё нескольких игр от тех же авторов, я вывел ещё один разъём - ITXB@. Благо что и эти кнопки были на одной линии, так что проблем с подключением тоже не возникло. Вот так мой Лик и обзавёлся двумя портами джойстиков.

    Так было в 91-м году, когда всякие разные джойстики можно было приобрести в магазинах. Позже народ начал покупать геймпады от Денжи/Сеги, срезать микросхему и напаивать провода минуя её. У меня и у самого до сих пор лежит такой (переделанный из дохлого!) манипулятор для Спектрума. Только вот жил в проводе не хватает, и провод нужно целиком менять на подходящий. А ведь было бы неплохо иметь возможность подключать стандартный геймпад от ретро-консолей без всяких переделок, да ещё и получить больше, чем одну кнопку.

    И вот при подключении мыши к Специалисту через ДОПОЛНИТЕЛЬНЫЙ (!!!) порт К580ВВ55А, который автор Специалиста отвёл под программатор, у меня появилась идея помимо мыши подключить ещё и геймпад от Dendy.

    Идея оказалась вполне рабочей! Помимо самого геймпада и разъёма для него понадобится только компактная и недорогая (~150 руб.) плата Arduino Nano. Прошиваем Arduino, соединяем всё проводами и готово!

    Код:
    ВВ55    Arduino Nano
    PA0    D4
    PA1    D5
    PA2    D6
    PA3    D7
    PA4    D8
    PA5    D9
    PA6    D10
    PA7    D11
    +5V    VIN
    GND    GND
        
    Геймпад    Arduino Nano
    DATA    A0
    LATCH    A1
    CLOCK    A2
    +5V    5V
    GND    GND



    После этого по адресу 0xF000 будет читаться состояние геймпада:

    Бит 0: Кнопка A
    Бит 1: Кнопка B
    Бит 2: Кнопка SELECT
    Бит 3: Кнопка START
    Бит 4: Кнопка UP
    Бит 5: Кнопка DOWN
    Бит 6: Кнопка LEFT
    Бит 7: Кнопка RIGHT

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

    Прежде всего, это визитная карточка Специалиста - игра ЗОО.

    Управление от геймпада добавлено не вместо, а в дополнение к управлению клавиатурой.

    Основной экран:
    SELECT - вызов экрана помощи
    START - запуск игры

    Экран помощи:
    Любая кнопка - выход

    Игра:
    Крестовина - направления
    A - выстрел влево
    B - выстрел вправо
    SELECT - выход


    Ну и, конечно, игра DUNGEON. Куда ж без неё!

    Крестовина - направления движения
    А, B - огонь
    SELECT - приостановить
    START - продолжить

    Стоит сделать оговорку, что если поставить игру на паузу с помощью SELECT, то продолжить можно только кнопкой START. Аналогично и с клавиатурой, S - пауза, Q - продолжение. То есть поставить на паузу с помощью геймпада, а продолжить с помощью кнопки на клавиатуре не получится. Дело в том, что пауза ставится прямо в цикле опроса конкретного управления. Я не стал заморачиваться. Тем более, что там есть ещё одно место, где без клавиатуры не обойтись - перед каждым запуском новой игры вас просят ввести с клавиатуры ваше имя. Если ничего не вводить, а просто нажать Ввод, то в таблице рекордов будет красоваться имя "ОСЕЛ".

    Ну и уж коли вспомнил тут про DUNGEON, то расскажу ещё про неё. Я-то себе накачал игр для Специалиста с Интернета. И у меня есть аж две версии. В обеих управление не такое, каким я его помню, то есть переделанное. И, судя по всему, переделанное разными людьми.



    Но я-то достоверно помню, что управление было ITXB@! Что ж нашёл свою кассету с этой игрой и оцифровал её. И конечно же управление там именно такое, каким я его запомнил.



    Ещё из нюансов. Моя версия не запускалась с адреса загрузки, а с ней шёл адрес запуска G5720. У меня так на кассете записано было, так я всегда и запускал эту игру, даже не задумываясь почему так. Сейчас я посмотрел, что же там в начале, а вначале оказались три подряд команды JP (HL). И не похоже, что это кто-то случайно затёр. Возможно, это сами авторы так сделали, создав эдакую защиту от копирования. Если ты просто так тупо скопируешь, то запустить игру не сможешь, не зная адреса запуска. О том, что моя версия игры более чистая говорит и тот факт, что в Интернетовских версиях в том месте, где располагается таблица рекордов уже забито имя, состоящее из четырёх пробелов. В моей версии там нули. В игре очень много текста. Так вот когда я стал побайтово сравнивать свою версию, то увидел, что в интернетовских версиях некоторые буквы в тексте испорчены. Такое ощущение, что кто-то запустил игру, поиграл в неё и в таком виде сохранил на кассету. Так что за основу я взял именно ту версию, которую оцифровал со своей кассеты. И конечно же, помимо того, что я добавил туда управление от геймпада, я сделал и запуск с нулевого адреса.

    Теперь возвращаясь к геймпаду. Абсолютно ничего не мешает подключить Arduino параллельно клавишам курсора и пробела, а также каким-нибудь ещё трём клавишам. Это потребуется переделки скетча для Arduino и другого подключения к Специалисту. Но я так не делал, а вы можете сами поэкспериментировать. Текущее подключение геймпада - это побочный проект подключения мыши. У меня всё распаяно на одной плате. С мышью возникли некоторые сложности, так что она пока на этапе отладки, а вот геймпад можно подключить прямо сейчас и поиграть в две классические игры.

    P.S. Также прилагаю простую программу для тестирования подключения на Специалисте - она просто выводит на экран состояние порта, если были какие-то нажатия.
    Вложения Вложения
    • Тип файла: 7z gamepad.7z (20.2 Кб, Просмотров: 20)
    Последний раз редактировалось CityAceE; 28.11.2025 в 13:27.
    С уважением, Станислав.

    Эти 5 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    Outcast(30.11.2025), puller(29.11.2025), Pyk(28.11.2025), svofski(29.11.2025), SYR-ALEX(28.11.2025)

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Бейсик для Специалиста
    от Zidane в разделе Специалист
    Ответов: 29
    Последнее: 20.12.2025, 22:40
  2. Ответов: 34
    Последнее: 21.02.2023, 08:39
  3. Элита для Специалиста
    от jerri в разделе Специалист
    Ответов: 77
    Последнее: 20.11.2021, 20:22
  4. геймпад для БК 0010
    от zorel в разделе БК-0010/0011
    Ответов: 3
    Последнее: 27.09.2018, 20:43

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •