Приветствую всех неравнодушных к детищу Клайва Синклера! Особенно почитателей самых разных игрушек, поскольку материал, в первую очередь, адресован геймерам и игроделам.
Хочу освежить ту область спектрумизма, где уже много лет царит полный застой. А именно в части джойстиков/геймпадов, устройств управления игровым процессом. За тридцать с лишним лет был улучшен и прижился лишь один стандарт: расширенный кемпстон-джойстик. Обладая некоторыми преимуществами перед однокнопочным, он имеет жирный минус, напрочь перечеркивающий все достоинства: ни одна старая игра не понимает дополнительных кнопок (битов) расширенного кемпстона. Ладно, если бы речь шла о малой части игрового софта, но 95%, если не больше, написано до внедрения восьмибитки. И в любой классической игре 80-90-х будет работать только кнопка "огонь". Остальное придется жать на клаве.
Размышляя над реализацией чего-то нового, обдумывал идеи новых портов ввода, модификацию уже имеющихся, но все это было отвергнуто по одной простой причине: весь существующий софт перестанет работать. Учитывая вышесказанное, я пошел другим путем. Предлагаемый мной вариант игрового девайса "эмулирует" нажатия клавиш. Да, подобные разработки уже были, в том числе и на форуме. Но все они завязаны на тот же Сеговский джойстик, ставший, по сути, официальным воплощением расширенного кемпстона, либо на джойстик от Денди. То бишь коренных различий в плане игровых возможностей между ними и 8-бит кемпстоном нет. Я же выбрал для подключения геймпад от Sony Playstation. Считаю его лучшим, что было придумано в плане игровых контроллеров. Это мое личное мнение, можно с ним не соглашаться, но такой геймпад обладает явным преимуществом за счет наличия спереди курков или, как мы их называли в древние времена, шифтов. Потом эту фичу подхватили другие производители приставок, но первой была именно Sony. За счет этих самых курков становятся возможными комбо-нажатия, т.е. двух-трех (да хоть четырех) кнопок одновременно, и это без учета кнопок направлений. Джойстики от Денди/Сеги на такое физически не рассчитаны. Спросите, а для чего нужны комбо-нажатия? Да пожалуйста: разнообразные удары в файтингах, быстрая активация функций без необходимости лазить по меню, простая реализация дополнительных умений/действий без клавиатуры и так далее. Кроме всего, у геймпада от Sony тупо больше кнопок =) Четырнадцать, если конкретизировать. Вроде бы, куда столько Спектруму? Поверьте, будет девайс - появится и софт под него. И "куче" кнопок сразу найдется применение. (спойлер: в условной Элите можно было бы рулить кораблем прямо с геймпада, для основных функций - маневрирование, обзор, работа с вооружением - кнопок хватает)
Так вот. В моей реализации, с точки зрения компьютера, нажатия на геймпаде это нажатия на клавиатуре. Такой подход дает поддержку "из коробки" любой существующей игрой, где можно переназначить клавиши. Причем крестовина направлений и условная кнопка "огонь" дублируют стандартный Sinclair-джойстик (клавиши 6-0), а он предлагается практически в любой игре, даже там, где переназначения клавиш нет. Второй полуряд цифр (1-5) также использован целиком, что дает, в большинстве случаев, лазить по пунктам меню, не притрагиваясь к клавиатуре. Вспомните старые игры: практически везде меню управляется "цифрами". Полная раскладка приведена ниже, и хочу заметить, что соответствие клавишам выбрано не от балды, а с учетом максимального удобства как для юзера, так и для программиста.
Видим, что 1-5 "ложатся в ряд", легко запомнить. 6-0 чуток сложнее, но быстро осваивается. А для курков выбран полуряд с Enter, и не просто так. Изначально вешал их на полуряд P-Y, но поступило предложение от бета-тестера девайса. Суть: по завершении игры часто требуется ввести имя в таблицу рекордов (актуально для многих старых игр). Само имя роли не играет, можно набарабанить любые кнопки. Но для подтверждения обычно надо нажать Enter. И, чтобы не тянуться лишний раз к клавиатуре, жмем "Enter" прямо с геймпада. Весьма удобно. Или, скажем, надо ввести кол-во денег/патронов/предметов для покупки/продажи/выброса, либо цифровой код/пароль. Все цифры на геймпаде есть, набираем число и жмем "Enter". Заодно получаем пару побочных функций навроде просмотра листинга Бейсик-программы ("K"List+Enter) или удаления строк =) В принципе, можно повесить контроллер на любые полуряды, грамотно написанная программа проведет тестирование и сконфигурирует управление сама. Именно так работает мой тест, в нем заложена возможность выбрать любые полуряды. Но для закрепления стандарта и исключения возможных конфликтов в будущем (например, подключение второго геймпада) желательно использовать предложенный вариант с цифровым рядом + полуряд с Enter.
Да, предлагаемый девайс не просто имитирует кусок клавиатуры; есть важное отличие со знаком плюс. Думаю, любому спектрумисту известно о такой проблеме, как конфликт полурядов. Напомню, что при зажатии нескольких клавиш в разных полурядах (если кнопки попадают на один и тот же бит в портах) они как бы микшируют задействованные полуряды по маске AND. Говоря проще, кнопки, например, Q,A,P,Enter (и еще четыре) относятся к нулевому биту. И зажав, допустим, Q и A, а затем нажав R, в любой программе опроса портов увидим нажатой еще и клавишу F, соответствующую биту клавиши R. Наглядно это показано в видеообзоре, ссылка в конце поста. Так работает механическая клавиатура Спектрума, и эту фичу, насколько мне известно, копируют все существующие эмуляторы и контроллеры писишных клавиатур
(upd: в эмуляторах, как выяснилось, конфликта либо нет, либо он отключается через опцию, как в Unreal). Но в геймпаде с 14-ю кнопками такое смешение неприемлемо. Благодаря простому схемному решению конфликта не происходит, что делает возможным любые комбинации нажатий.
Вроде бы все плюсы перечислил, опишу и минусы. Их немного, но они есть.
Во-первых, требуется физическая переделка геймпада, и с приставкой он больше работать не будет. Совсем без переделок в любом случае не обойтись: как минимум, нужно менять родной проптиеарный разъем. Поэтому мысли вида "теперь поюзаю любимый геймпад от своей старой Соньки еще и на Спектруме" придется отбросить. Но разъемом дело не ограничится. Я принципиально отказался от использования микроконтроллеров и прочих чипов. Задумка была сделать устройство максимально простым, легким в подключении к старым моделям без слотов расширения, желательно на элементной базе эпохи активного спектрумизма (80-е годы), дабы не выбиваться из ретро-стилистики. Первая Playstation, напомню, пошла в массы в 1994 году, и вполне может быть отнесена к ретро-технике. Так что никаких CPLD и Атмег. Только МГТФ, только хардкор =) Отсутствие микросхем - еще один плюс: устройству не требуется питание (и лишние провода для него). Из электронных компонентов - самые распространенные диоды 1N4148 (КД521/522) в количестве 14 штук, по числу кнопок. Как раз применение диодов позволило устранить конфликт клавиш из разных полурядов. А полная диодная развязка и отсутствие питания исключают шансы спалить комп при неправильном подключении.
Во-вторых, любой консольный геймпад не совсем рассчитан на активную работу с диагоналями направлений. Это не джойстик и тем более не клавиатура, где можно долго удерживать диагонали и на ходу менять их. Нет, при умеренном использовании трудностей не возникает, но в играх наподобие Commando это становится проблемой. Однако, за счет наличия курков, решение очевидно: назначаем "вверх" (можно и "вниз") на правые или левые - кому как удобней - курки, а влево-вправо давим на крестовине. Или, наоборот, влево-вправо вешаем на левый и правый курки, а вверх-вниз оставляем стандартно. Какой вариант подойдет больше, зависит от конкретной игры. Плюс на контроллере для Соньки, да и не только на нем, диагонали могут активироваться сами при сильных или неаккуратных нажатиях какого-либо направления. И это не следствие переделки, родной геймпад ведет себя аналогично. Недостаток был устранен с помощью волшебной синей изоленты, теперь нажимается ровно то, что нужно
Вот, пожалуй, и все минусы. Плюсов, как ни крути, намного больше. Подведу итоги:
+ намного больше кнопок, чем у 8-бит кемпстона;
+ возможность комбо-нажатий нескольких кнопок одновременно;
+ поддержка всем старым софтом за счет эмуляции нажатия клавиш;
+ простое подсоединение к любому Спектруму с обычной матричной клавиатурой, то есть, почти к любому отечественному клону, без каких-либо переделок платы. Тем, у кого выведен пассивный Sinclair-джойстик, для подключения достаточно припаять _всего_ два проводка к разъему DB-9 или DIN7 на корпусе компа;
+ девайс несложно собрать самому, никаких заказных микросхем или плат не требуется;
+ можно использовать даже "дохлый" в плане электроники геймпад, был бы цел механически;
+ необязателен именно контроллер от Sony PS, есть функционально аналогичные от других консолей;
+ проверка исправности переделанного геймпада не требует подключения к компу и может быть выполнена обычным тестером, причем каждой кнопки в отдельности, что полезно при сборке и диагностике;
+ безопасное подключение к работающему компьютеру за счет отсутствия питания.
- нужна механическая переделка геймпада, придется вечерок посидеть попаять;
- к моделям без входа под матричную клаву сей вариант устройства не подойдет;
- варианта под ZX-BUS (пока) нет, так что немного попаять придется, даже если купить готовый девайс;
- на моделях без буферизации клавиатурных линий возможны ложные "срабатывания" ненажатых кнопок при активной работе с геймпадом. Это проблема именно компа, а не геймпада: аналогичные глюки проявляются при слишком длинном клавиатурном шлейфе. Лечится подбором номинала подтягивающих резисторов на входах мультиплексоров клавиатуры.
Словесное описание эт хорошо, но, дабы иметь наглядное представление о девайсе, прилагаю видеобзор подключения к двум легендарным клонам начала 90-х: Ленинград-48 и Скорпион-256. Они во многом схожи, но в Ленине нет буферизации клавы, и вообще, мой экземпляр сам по себе с глюками по ее части. Тем не менее, геймпад успешно работает на обоих. А втыкается в то самое советское гнездо для джойстика (в Ленинграде заменил СГ5 на СГ7; в трех моих Скорпионах СГ7 стояли изначально). Представьте лицо какого-нибудь старого знакомого, зашедшего "на огонек", когда вы подрубаете плейстешновский контроллер прямо в древний Спектрум =)
Видео снято одним дублем, без монтажа, так что простите за некоторую затянутость
лишь вырезаны самые "скучные" места. Заодно в ролике показан конфликт полурядов в действии. Кто не в теме - посмотрите.
Отдельно остановлюсь на такой модели, как ZX-Evo. На плате есть разъем под мех. клаву и старые джойстики - казалось бы, делов-то, спаять переходничок, воткнуть в плату и радоваться. Но не тут-то было. Похоже, создатели Evo решили, что они - отдельная цивилизация, и реализовали опрос механики через задницу. Адресные линии, задающие полуряды, тут являются входами данных, а биты кнопок - выходами на клавиатуру. Короче, сделано наоборот. Для обычной клавы разницы никакой, там банально замыкаются контакты. Но в схеме геймпада стоят диоды, а они, как известно, проводят ток в одном направлении. Поэтому рассчитанная на нормальный комп схема не работает. И это лишь полбеды. Судя по мануалу, внутриплатные порты ZX-Evo не выводятся на слоты ZX-BUS, что означает невозможность подключения внешних контроллеров клавиатуры (например, геймпада, имитирующего клаву). Короче, забетонировано все. Зачем так было делать - лично мне непонятно.
(по моей просьбе владелец Evo проверил насчет блокировки портов: да, внешняя писи-клавиатура, подлюченная через DivGMX, не работает)
В принципе, развернув диоды и переделав схему, можно подрубить ее к разъему механики Evo. Но проще, на мой взгляд, будет переписать код наплатной Атмеги, заведующей опросом устройств ввода. Причем тут два варианта: либо вернуть нормальный опрос полурядов механики, либо убрать кастрированный однокнопочный кемпстон, освободив пины Меги, и подключать родной геймпад от Sony напрямую, без переделок. Желающие могут объединиться и заняться, дело полезное.
И вообще, тем, кто хотел бы подключать геймпад в слот ZX-BUS, в идеале родной, без переделки, могу рекомендовать выбрать среди уже имеющихся контроллеров PS/2 клавиатур-мышей тот, где найдутся свободные пины и найти кодера, чтоб переписал прогу микроконтроллера/написал новую. Я только за. Чем более доступен будет девайс - тем лучше. Давайте вместе приложим все усилия для этого. Протокол обмена с геймпадом несложный, информацию при необходимости предоставлю.
Желающих повторить конструкцию категорически приветствую, подробная инструкция с фотографиями будет чуток позднее. Микросхем и плат из Китая заказывать не нужно, достаточно кусочка макетной платы для компоновки диодов, ну и самих диодов (14 штук). Суть моей железяки как раз в простоте изготовления "на дому". А чем больше народа обзаведется девайсом, тем быстрее он станет - надеюсь - новым стандартом в играх. Уж сколько всего наизобретали для Спектрума, а по части геймпадов печаль и тоска...
upd: в эмуляторах для поддержки нового стандарта достаточно переназначить кнопки писишного геймпада через настройки эмулятора, это ещё один плюс в пользу решения с имитацией нажатия клавиш.
Еще раз уточню: моя основная идея - именно популяризация нового игрового стандарта, а не просто реализация нажатий абстрактного набора кнопок. Согласитесь, конечному пользователю удобней видеть в описании управления именно то, как обозначены кнопки на геймпаде, то есть их иконки/подписи, а не переводить в уме "так, клавиша 3 это у меня квадрат, J это будет R2, а оружие... черт, забыл, где". Чтобы управление выбиралось/менялось в таком же виде, как на приставке, а не буквами клавиатуры. Конечно, это задел для будущего и новых игр, но главное - начать внедрение нового устройства в массы и его поддержку. И тут многое зависит от игроделов, создателей нового софта. Прошу обратить внимание на перспективное направление и открывающиеся возможности в плане управления игровым процессом. Раскрыть тему могу позже, в обсуждении.
Новому интерфейсу неплохо бы дать название. Есть же кемпстон, есть интерфейс-2, он же синклер-джойстик. Предлагаю обозвать его ZX-PAD. Кратко и отражает суть: геймпад для ZX Spectrum. Да, PS-PAD aka Playstation pad было бы логичней, но конкретная модель приставки/геймпада не должна, как считаю, ассоциироваться с интерфейсом, как это произошло с восьмибитным кемпстоном (сеговский джойстик стал синонимом 8-бит кемпстона). Народ может изготовить девайс из любого подходящего контроллера, одним плейстейшновским выбор не ограничивается. Главное - совместимость в аппаратно-программной части. Так что пусть будет ZX-PAD. Но если имеются возражения - предлагайте свои варианты. SPECTRUM-PAD тоже звучит
Подумав, добавлю: можно назвать просто "геймпад". В играх будет выбор: Keyboard, Sinclair, Kempston, Gamepad - очень даже смотрится, абсолютно нейтрально, без привязки к фирме-производителю, и сразу понятно, о каком типе управления речь.
Конечно, картина будет неполной без отзывов реальных людей. Несколько человек, кому высылал геймпады, остались вполне довольны. Как выразился один из них, "будто с Оки на Лексус пересел". Надеюсь, те, кто зареган на форуме, отпишут в топике о своих впечатлениях. Пользуясь случаем, выражаю благодарность форумчанам
izzx и
Evgeny Muchkin за участие в тестировании устройства и ценные замечания/предложения по его улучшению: с вашей помощью удалось довести конструкцию до ума. Те, кто в дальнейшем соберет/заполучит игрушку, тоже отписывайтесь. Для оценки перспективности и нужности геймпада сделаю опрос - голосуйте, увидим, насколько востребован новый интерфейс.
Касаемо приобретения готовых девайсов. В небольших количествах могу делать сам по мере сил, запас материалов у меня достаточный. Будет интерес - создам тему на барахолке, чтобы не засорять форум и соблюсти правила. Но изготовление требует некоторого времени, быстрое массовое производство я не осилю. Как уже написал, запас материалов есть, могу рассылать полные наборы для самостоятельной переделки (родной геймпад, разъемы, диоды, шлейф для переходника и т.д.) - если будет спрос, тоже могу вынести на барахолку.
Позже, при наличии интереса, выложу подробную инфу по переделке с описанием нюансов, с фотографиями внутренностей и прочими ужасами. Лицам с тонкой душевной организацией на результаты препарирования геймпадов смотреть не стоит =) А если вы паяльник держали в руках от силы пару раз - переделкой лучше самостоятельно не заниматься. Помимо пайки, пригодится навык вырезания ножницами мелких фрагментов (доводка до ума включает наклеивание кусочков изоленты и фольги). Вся работа по переделке хоть и занимает, при должной сноровке, пару часов, но требует аккуратности и терпения.
По мере поступления отзывов пост будет редактироваться и пополняться информацией. Ответы для удобства буду структурировать и складывать под кат - сперва поглядите, нет ли там ответа на ваш вопрос. Спрашивайте, постараюсь оперативно отвечать на все. Если они будут по делу, а не пустая критика в духе "а зачем оно нам" или "я бы сделал свое/сделал лучше". Так сделайте, кто вам не дает? Повторюсь, но за кучу лет не реализовано ни-че-го в плане улучшения управления. Развития ноль. Меня это не устроило, и я сделал свой вариант, с прицелом на будущее, с хорошим потенциалом. Кто-то критикует, а кто-то делает - каждому свое.
Благодарю всех дочитавших длиннопост. Пишите свое мнение, задавайте вопросы. Вместе мы сделаем Спектрум лучше
[свернуть]