
С игрового автомата «Running of the leaves» (также известен как «Понимат») в 2018-м году началась история «Понитроники».
Краткое описание: исходно автомат основывался на схеме приставки из книги Овечкина М. А. «Любительские телевизионные игры» (1985), но за несколько лет был переработан практически полностью, получив новую многоцветную графику, музыкальный проигрыватель, счетчик очков и множество других доработок.
Исходно за проектом стояли две основные идеи:
Игровой процесс: на экране отображаются четыре горизонтальных беговых дорожки, каждая из которых отведена для одной из пони (Эпплджек, Пинки Пай, Рэйнбоу Дэш и Твайлайт Спаркл). В начале игры все пони становятся на стартовую линию слева, финишная черта — справа. Каждый игрок управляет одной из пони, пытаясь перепрыгнуть движущиеся ей навстречу препятствия — для этого при приближении препятствия в нужный момент времени нажать кнопку прыжка. При успешном прыжке пони смещается на один шаг вперед ближе к финишу, при столкновении с препятствием — на один шаг назад. Побеждает тот, кто дойдет до финишной черты первым.
С помощью кнопок «-» и «+» можно изменить скорость игры, выбранная скорость отображается на индикаторе-столбике. Минимальная (1) скорость в три раза медленней максимальной (7).
В автомате присутствует общий счетчик очков. Отсчет начинается от «999» в начале игры и идет в обратном направлении. Чем быстрее победитель дойдет до финиша (это зависит от выбранной скорости игры и успешного преодоления препятствий), тем больше очков останется.
Что внутри? Начинка «Понимата» — это комбинация блоков собственной разработки и телевизора «Юность 32ТЦ-309Д».
![]() |
Счетчик очков Ведет общий счет очков от «999» в обратном направлении и управляет подсветкой в верхней части автомата. |
|
Основной блок Состоит из трех отдельных плат. Формирует графику, звук, обрабатывает игровые ситуации. |
![]() |
![]() |
Блок питания логики Стандартный импульсный блок питания (5В, 2А). Предназначен для питания счетчика очков, блока управления и основного блока. |
![]() |
Блок строчной развертки Управляет отклонением луча по горизонтали и обеспечивает высокие напряжения для питания кинескопа. От телевизора «Юность 32ТЦ-309Д». Без изменений. |
|
Блок кадровой развертки |
![]() |
![]() |
Блок питания дисплея От телевизора «Юность 32ТЦ-309Д». Без изменений. |
|
Плата межблочных соединений |
![]() |
История проекта
2018. Начало.
В 2018-м году, Agent_DieGo (DoubleZett Studio) пригласил меня в свой «Ламповый уголок» на RuBronyCon’е 2018. До этого момента мне никогда не приходилось выступать в роли стендовика, и идти на конвент с пустыми руками просто за компанию совершенно не хотелось. Нужно было срочно создать какой-то собственный проект, который был бы одновременно интересен и брони-аудитории, и мне самому.
На тот момент я активно занимался ремонтом катушечных видеомагнитофонов, поэтому сразу же возникла идея притащить подобную неведанную штуковину на конвент. Отношения к MLP она, конечно, не имеет, но можно было бы записать подборку «приветов из прошлого» от посетителей и выложить ее на YouTube. Вся система должна была быть полностью автоматической: после нажатия «волшебной кнопки» включается магнитофон, на экране телевизора дается обратный отсчет «3-2-1» для прогрева камеры, и только после этого начинается запись на пленку. Во всей этой задумке самым сложным казался именно вывод на экран обратного отсчета, поэтому все усилия были направлены на поиск такой схемы. Где ее взять? Многие понг-консоли (например, «Электроника-Видеоспорт») отображают на экране счет игры, поэтому имеет смысл смотреть в сторону подобных приставок. В процессе поисков я наткнулся на книгу Овечкина М. А. «Любительские телевизионные игры», которая предлагала радиолюбителям для самостоятельной сборки два варианта игровых приставок: «Хоккей» и «Скачки». «Скачки» на конвенте про маленьких пони — это определенно должно быть сделано! Таким образом исходная идея с видеомагнитофоном сразу же была заброшена, ведь на горизонте замаячил новый проект — «Понимат»!
Всё началось со сборки основного блока. В качестве основы была выбрана большая макетная плата для компьютера СМ1800 (эта ЭВМ предназначалась для автоматизации технических процессов, и ее конструкция позволяла самостоятельно разрабатывать необходимые модули под свои потребности). Исходно для монтажа был использовался провод типа МГТФ (поскольку его требовалось очень много, ), но впоследствии приоритет был отдан более тонкому обмоточному проводу. Сама по себе идея хотелось побыстрее получить хоть какое-нибудь изображениеКниг, но как впоследствии оказалось, работа практически всех узлов завязаны друг на друга.В первую очередь были собраны узлы синхрогенератора и формирователей изображения
Музыка: оригинальная схема приставки формирует простые звуковые сигналы, обозначающие сбитые препятствия и имитирующие топот лошадей. С самого начала хотелось сделать что-то более оригинальное, например, полноценное музыкальное сопровождение. Недолгие поиски привели к статье «Программируемый музыкальный звонок «К25-унисон» (ж. «Радиолюбитель», №7, 1991 г., с. 13-16). Основным отличием стало добавление второй микросхемы ПЗУ и подключенных к ней делителей. Проигрыватель стал двухголосым: первый воспроизводит басовую партию, а второй — основную мелодию. «Лишний» бит ПЗУ управляет не длительностью ноты, а переключением октавы басовой партии. Унисонные делители в обоих случаях не собирались, так как значительной разницы в звучании при использовании одного динамика замечено не было.
Забег четырех пони был сразу же привязан к сюжету серии «Running of the leaves», откуда автомат и получил свое официальное название, а отсюда песни «Running in the 90’s». Именно она была первой запрограммирована в Мелодии записывались вручную
В финальном варианте схемы запрограммированы четыре мелодии: «Running in the 90’s», «Amazing Horse», микс из «лошадиных» песен («Есаул», «Кони в яблоках», «Темная лошадка» и «Discord») и «Nice Fruit». Мелодия выбирается случайным образом в начале игры и повторяется до окончания забега.
Графика: палитра игрового автомата была достаточно ограничена, и как назло в ней не нашлось оранжевого цвета для Эпплджек. Пришлось собрать дополнительную схему, которая разбивала каждый пиксель на несколько чередующихся строчек разных цветов, которые «смешивались» на экране и создавали иллюзию нужного оттенка.
Тогда же были проведены эксперименты по хранению спрайтов персонажей в ПЗУ. Первые тестовые изображения, но вскоре Test Testovich написал небольшой скрипт, автоматически конвертирующий изображения формата BMP в нужную битовую последовательность. Скрипт был незначительно доработан (контроль правильности палитры) Времени до конвента оставалось совсем мало, поэтому пришлось временно забросить эту идею, на конвенте демонстрировался цикл анимации Пинки Пай.
Корпус: описанная в книге схема является приставкой к телевизору — такой вариант меня не устраивал. Советский телевизор, конечно, тоже смотрелся бы на конвенте довольно необычно, но хотелось замахнуться на нечто большее — сделать что-то напоминающее советский игровой автомат.
В качестве упрощенного варианта рассматривалась доработка монитора «Электроника ВТЦ-202» — его оригинальная «начинка» идеально подходит для подключения к игре, самодельную плату можно было бы разместить внутри, а нижнюю панель дополнить пультом управления. Однако такая конструкция получалась довольно громоздкой и, откровенно говоря, уродливой, поэтому приоритет был отдан более сложному варианту — изготовлению корпуса с нуля.
Первоначальный дизайн сложился в голове довольно легко, и казалось, что он уже не претерпит серьезных изменений. Однако появление телевизора «Юность 32ТЦ-309Д», который стал основой, перевернуло всё с ног на голову: кинескоп оказался очень глубоким, а его диагональ 32 сантиметра — не такой уж и маленькой в рамках концепции переносного автомата. он был создан без учета размеров реальных блоков и компонентов. В итоге очередного перераспределения блоков выяснилось, что все они умещаются вертикально От механизма выдачи приза (он должен был выдавать победителям шоколадки) пришлось отказаться только ради уменьшения размеров.
2019. DerpFest.
Рандомайзер препятствий: формирователь препятствий был собран по достаточно простой схеме, поэтому барьеры на всех дорожках двигались синхронно. Первый для автомата конвент показал, что люди подстраиваются друг под друга и начинают нажимать кнопки одновременно. Вторая проблема — одинаковое расстояние между препятствиями: игроки начинают ориентироваться не на происходящее на экране, а на свой «внутренний таймер», отсчитывая одинаковое время между нажатиями кнопки прыжка. Пришлось полностью переделать схему формирователя, и теперь каждый барьер можно независимо запускать и перемещать с любой скоростью:
Дальше нужно было придумать, как этими независимыми барьерами управлять. Требовалось создать «честный» рандомайзер, который генерировал бы препятствия с одинаковой сложностью для всех игроков (если за время игры на одной дорожке появится больше препятствий, то этот игрок имеет возможность первым придти к финишу вне зависимости от мастерства других участников). Был придуман упрощенный алгоритм, когда нечетные препятствия по-прежнему двигаются равноудаленно (интервал между ними равен полной ширине экрана), а четные возникают на некотором расстоянии от них в специальной «зоне рандома».
К сожалению, время перед конвентом как всегда было ограничено, поэтому приоритет был отдан новой схеме графики, а эта идея так и не была реализована. В качестве временного решения была собрана схема, притормаживающая все препятствия на беговой дорожке во время столкновения с барьером, таким образом в процессе игры создается естественный «рассинхрон», который частично решает исходные проблемы.
Графика 2.0:
В микросхему ПЗУ можно записать любую информацию, и в данном случае это графика. У такой микросхемы есть два основных набора контактов: шина адреса и шина данных. Шина адреса – это вход, на который сообщается код байта, который необходимо выгрузить из памяти. На шину данных выдается содержимое запрошенного байта.
Каждый байт состоит из восьми бит и соответствует одному пикселю графики. Как оказалось, я случайно «изобрел» палитру EGA, 50/50 70/30
Маска прозрачности — определяет, будет ли перезаписан текущего слоя.
Маска коллизий — используется только на слоях со спрайтами пони и препятствий. Для спрайтов пони повторяет маску прозрачности хвосты и гривы, которые не влияют на сбой препятствия.
В автомате использована микросхема W27C020 объемом 256 килобайт (262144 байт). Представим ее содержимое в виде картинки размером 256х1024 пикселей:
Такие пропорции выбраны не случайно: 256 пикселей – это полная ширина экрана (схема отрисовывает изображение размером 256х156). Однако часть отводится под импульсы синхронизации аналогового видеосигнала, поэтому разрешение видимой области несколько меньше – 207х143 пикселей.
Стоит признать, что пространство используется крайне неэффективно (примерно половина объема пустует). Во-первых, такую примитивную схему трудно заставить считывать информацию с произвольного адреса, поэтому все фрагменты графики разбиты на блоки, кратными двум (2, 4, 8, 16, 32 и т. д.). Во-вторых, часть свободного места осталась просто невостребованной, и служит в качестве резерва для возможных будущих доработок (новые персонажи и фоновые изображения).
Всего существует четыре слоя, каждый из которых имеет фиксированные размеры:
Слой 0 (256х16) — небо
Слой 1 (256х32) —
Слой 2 (64х32) — пони
Слой 3 (16х32) — препятствия и финишная черта
Отрисовка каждого слоя может начинаться с произвольной позиции на экране, происходит зацикливание отображения последнего пикселя (например, за счет такого зацикливания Слоя 1, создается желтый фон на всех беговых дорожках).
Слои набираются в последовательности 0-1-2-3, в нижней части экрана последовательность меняется на 1-2-3-0 (Слой 0 из самого заднего (отрисовка неба) переходит на передний план (лужайка с забором и CMC, перекрывает все предыдущие слои).
Стоит напомнить, что весь автомат, а значит и схема графики, работают синхронно со строчной разверткой на экране. Это означает, что за время отрисовки каждого пикселя, четыре слоя накладываются друг на друга в соответствии с маской прозрачности, и финальный результат отправляется в регистр на выходе и удерживается там, пока из слоев «собирается» следующий пиксель.
2020-2021. NewBronyCon.
Что дальше?
Признаюсь честно: мой интерес к развитию проекта постепенно угасает — разработанный в 2019-м году новый блок графики стал последним значительным изменением в схеме автомата. Все дальнейшие работы в основном связаны с устранением имеющихся недостатков или созданием новых блоков, которые практически не влияют на игровой процесс. В таких условиях мне гораздо интересней сосредоточить усилия на новых проектах вроде «Ну, покорми!«, чем топтаться на одном месте с «Пониматом». Поэтому сложно сказать, будут ли когда-нибудь реализованы перечисленные далее доработки, но если такое желание все-таки возникнет — есть вполне конкретные идеи, которые можно воплотить в жизнь.
Программный блок: основное назначение этого узла — определение успешно преодоленного препятствия и формирование команды смещения пони на шаг вперед или назад. Исходно он был собран по оригинальной схеме из книги без изменений, но связать его с новым блоком графики оказалось невозможно. Пришлось собрать дополнительную схему, которая одновременно согласовывала . Так получилось, что этот временный «костыль», собранный в спешке перед конвентом, до сих пор
Усилитель звука: имеется проблема с наводками от блоков развертки и схемы переключения скорости игры. В условиях шумного конвента посторонний фон не заметен, но его присутствие тоже нельзя считать нормой. Требуется либо дополнительная экранировка, либо фильтрация питания.
Семплер: этот блок должен озвучивать момент столкновения с препятствием и победу в забеге голосами персонажей мультфильма. Основная часть схемы с микросхемами счетчиков, ПЗУ и ЦАП уже собрана на плате, работа остановилась на этапе поиска «чистых» сэмплов, так как звуковая дорожка мультфильма кроме голосов персонажей содержит музыку и другие звуковые эффекты, которые подчас невозможно отфильтровать.
Рандомайзер препятствий: как уже было сказано ранее, работа по созданию рандомайзера остановилась на возможности независимо перемещать барьеры. Сейчас наиболее логичным видится ПЗУ, потому что все остальные варианты схемы

















