Как стать автором
Обновить

Создаём эмулятор легендарной игры «Ну, Погоди» на базе Raspberry Pi Pico

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров17K
Всего голосов 139: ↑139 и ↓0+184
Комментарии93

Комментарии 93

Эх, ностальгия! Лови плюсики в карму на Хабре и Гитабе.

Снимаю шляпу за статью. Хотел также реализовать эмулятор Тетриса на этом контроллере, тем более что есть прошивка и описание. Но пороху не хватило. Моё уважение.

Спасибо. Старался)

Опередили, хотел портануть весь набор Nintendo Game&Watch, сделал даже драйвер экрана Sharp Memory Lcd для аутентичности, и на этом и остановился, Мурмулятор на RP2040 съедает много времени ;)

да,

однако, после того как на 2040 запустили дум и вот недавно ещё редалёрт на 2350, эмуляция всяких 4/8 битных древностей, типа спектрума целиком в pi pico, выглядит уже не столь впечатляюще.

Вот бы 386й на 2350 сэмулировать

Если qemu портнуть, то можно что угодно будет эмулировать. Но там быстро память кончится под такие задачи.

Ему там psramа на qspi можно донавесить. 8-16МБайт для 386 хватит

собственно red alert так и запустили: https://hackaday.com/2025/04/06/command-and-conquer-ported-to-the-pi-pico-2/

это для dooma внутренними 256к обошлись, https://kilograham.github.io/rp2040-doom/speed_and_ram.html

386? Intel i386? А что такое 2350? Я недавно занялся разработкой эмулятора i386. Пока два дня прошло с тех пор.

Да, i386. 2350 это pico 2

Возможно, что я осилю проект, ведь эмулятор NES у меня получилось сделать, хотя и не весь и ещё предстоит много работы. Вот ссылка на i386 эмулятор, если что, я сначала делаю по обычаю для Linux, а потом и для других платформ. https://github.com/xverizex/i386_emulator

типичный русский проект: глубочайший и крутой НИОКР, офигенный код и отвратительная практическая реализация. Просто слезы. Ну что стоило заказать PCB? Даже без корпуса это был бы космос

Не спорю, с разведенной платой было бы лучше, но ставил целью только разработку прототипа, поэтому использовал только беспаечную макетную плату.

С другой стороны, возможно это этап проекта, о котором автор рассказал. А дальше может нас ждёт коммерческая реализация, откуда вы знаете?

К НИОКР есть вопросики. Ну реально кровь из глаз от схем в стиле "Fritzing". Я в ней так и не разобрался, для меня это просто нагромождение цветных линий и ни одной в форме котенка. Как предлагается это повторить и кому, если даже подписей нет?

Спасибо. Постараюсь сделать чуть понятнее. А повторить можно просто собрав как на схеме в стиле Fritzing.

Да нормальная схема. Это просто мода такая пошла ходить и душнить по поводу таких схем.

Это просто мода такая пошла ходить и справедливую критику называть словом «душить».

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

Я там наезда не вижу. Есть критика: «Как предлагается это повторить и кому, если даже подписей нет?»

Примеры вашей (раз уж мы на вы) статьи :

Building an Arduino based RFID Emulator / Хабр
https://habr.com/ru/companies/ruvds/articles/570114/

Отлично понятно, что куда и зачем, и подписано всё.

Я сам сталкиваюсь с этим стилем начертания схем, и, порой, много тратишь времени на понимание того, что имел ввиду автор. Ещё бывают странные текстовые схемы коммутации. Из недавнего, подключение радиопередатчика к esp32. Со стороны передатчика были указаны номера выводов, а со стороны esp32 номера gpio. И поди, догадайся, что 14 это не вывод, а gpio/

P.S. А статья годная, у меня к ней придирок нет, несмотря на Fritzing.

Справедливости ради, конкретно в этой статье сразу всё было для повторения - таблица соединений экрана/кнопок/девборда и тип драйвера экрана (ILI9341). Я по ним и повторил, не ориентируясь на цветную фритзинг-лапшу.

Ну реально кровь из глаз от схем в стиле "Fritzing". 

Это что, журнал радио? Тут надо схемы по ГОСТу рисовать? Вполне нормально читается, тем более если сборка идёт из готовых шилдов. Меня удивляет эта душнота, при условии что это домашний проект.

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

А тут даже у дисплея не подписано ровно ни-че-го. И я душню? Окей. Марка, нужна точная марка дисплея, чтобы повторить проект. И еще нужно угадать что там за транзистор, или что это трехногое стоит? Ладно на расбпери пико пинауты за любым углом найдешь, но эту схему, точнее этот стиль я критиковал и критиковать буду.

Автор безусловно проделал хорошую работу, даже внутреннее устройство МК показал - и такое. Я бы понял, если бы это была статья по "я сделал на ардуино кормушку для кота", но такое падение с небес на землю - это очень грустнота.

Это не журнал Радио, но и не журнал для домохозяек. Или я ошибаюсь?

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

Это не журнал Радио, но и не журнал для домохозяек

Например я имею опыт пайки и сборки небольших устройств, но схемы с цветными линиями мне нравятся в разы больше чем принципиальные схемы. Они просто мне понятнее. Я экономист по образованию, не домохозяйка, но и не инженер-электронщик. Статья в очень доступной форме всё рассказывает и показывает. Хотите PCB - делайте, вам никто не запрещает, лично мне PCB неинтересна и заказывать её я себе точно не стану, хотя бы потому что у меня есть оригинальное устройство, да и возиться с PCB и пайкой не хочу.

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

да там явно стандартный SPI + еще что-то типа подсветки. Пины кнопок можно в коде глянуть

Я добавил информацию о распиновке и используемом TFT-экране в статью

Эх, и здесь мультфильма в конце не будет...

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

Я тоже это видел в детстве. И не сильно верил в полноценный мультик. В моём понимании максимум, что могла сделать игра в качестве мультфильма, так это помигать сегментами нестандартным способом. Но правда оказалась еще прозаичнее...)

Да, все видели сегменты. Но надежда все равно была.

Спасибо за шикарную статью и за проделанную работу.

Отличный проект! Срочно нужно в корпус от игры вставить!

НЛО прилетело и опубликовало эту надпись здесь

Плюсую за проделланую работу, вернее, за желание об это рассказать ) Попробую повторить. Жду продолжение о корпусе )

…а там какая версия — обычная или с (полу)легендарной «игрой АБ»?

Немного не понял вопроса. Мой эмулятор эмулирует полностью Электроника ИМ 02. Игру А, Игру Б, часы, будильник. Дополнительно добавлена кнопка для режима вечных жизней. Для сброса кнопки нет, просто нужно отключить питание. Что такое игра АБ я не встречал.

Сам не видел, но народ говорит в каком-то разборе (эх, где мой поиск по камментам, хотя бы моим же) — была в поздних версиях «обратная игра», где Волка нужно обстреливать яйцами %)

Мне кажется, что это или первоапрельская шутка или такая же сказка, как и мультик после 1000 очков. Конечно, я не исключаю, что могу ошибаться. Буду благодарен, если Вы приведёте ссылки.

Не легенда. У меня игра с режимом АБ была, он был вполне описан в инструкции (да я извращенец который их читает). ИМ-50 если не ошибаюсь. Похожая ИМ-13 такого режима не имела. Впрочем почему "была"? Электроники я в свое время забирал у родителей, если она там была, то должна в ящике лежать, вечером посмотрю. Не факт правда что батарейки живые найду, и большой вопрос что там с экраном за столько лет стало...

А ИМ-02, как и большинство подобных этого режима не имела.

Интересно. Тогда можно попробовать прошивку от ИМ-13 поместить в мой эмулятор, сохранив вид дисплея от "Ну, погоди". Получится с игрой АБ. Правда я не уверен, что разводка дисплея такая же как у "Ну, погоди" и нужен ли такой Франкенштейн.

Реверснуть прошивку от «АБ» — это был бы реальный прорыв, потому что люди смогут прикоснуться к раритету, которого почти ни у кого не было.

А учитывая то, что эмуляция ТОЧНАЯ, а не «я художник, я так вижу» — это было бы больше, чем просто прорыв. Это — натуральное сохранение подлинного культурного наследия. Не рэп-ремейков Моцарта, а Моцарта.

Держу пальцы за.

Ну что я могу сказать... Она есть и она живая. Записал коротенькое видео.

https://disk.yandex.ru/i/K-T8KjNbEuG_Uw

А как вообще достать эти прошивки? Лет 15 назад я загорелся идей похожей на вашу, только эмулятор хотел делать на Android. Бесило именно то что везде были симуляторы и я видел что они прям неправильные. Прошивку сдампить для меня на тот момент было не реально, но я собрал все разные с точки зрения алгоритма игры советской линейки (ну погоди, тайны океана, повар, космический мост, ралли, арифметику), снимал тайминги, нашел польский сайт с графикой этих игр, получил добро от владельца на использование графики. Сделал "Ну погоди" в играбельном состоянии и примерно на половину какую-то вторую игру с такой-же логикой но другой графикой. А потом прочитал на хабре статью что у кого-то Нинтендо снесла подобную игру с маркета за пиратство G&W, потом поляк свой сайт удалил (а я сохранил только те две картинки которые были в работе), потом оказалось что мой самопальный движок под Android 2 при запуске на Android 4 работает криво. Ну и на этом все закончилось. А сейчас ваша статья что-то в душе всколыхнула и прям хочется снова для себя попробовать что-то.

Очень крутой проект! Я относительно недавно тоже делал свою версию этой легендарной игры на STM32, но я не стал уходить в эмуляцию, а просто написал свой вариант алгоритма игры и даже добавил 24-часовой вариант часов и подсчёт до 9999 очков. Причём я использовал монохромный экран 400х240 пикселей, поэтому изображение выглядит очень похоже на старый ЖКИ:)

Свой вариант я показал в видео на Ютуб https://youtu.be/e2UXSahfM6E и вконтакте https://vkvideo.ru/video-146803702_456239124

У меня теперь многие просят добавить туда мультик после набора 1000 очков:) А я рисовать анимации не умею, так бы добавил бы ради прикола:)

Ещё пока я искал инфу, нашёл такой комментарий на одном из форумов: "Режим отладки был, когда не учитывались штрафные очки. Чтобы включить его, нужно замкнуть вывод 20 процессора на минус питания. И делать это после подачи питания, иначе игра не включится." Если вы делали точный эмулятор, то, возможно, у вас этот режим отладки тоже существует:)

Потом я придумал новый вариант игры на современную тему "Илон Маск ловит Старшипы", это был вариант для моего английского канала https://youtu.be/e2QhG2kzE6A

Да, у меня выведена кнопка, которая включает это режим отладки

С Маском круто выглядит.

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

Вряд ли это так просто сделать, чтобы нормально смотрелось в маленьком разрешении 400x240 монохромных точек. Тут надо и дизеринг делать, и дорисовывать каждый кадр. К примеру, рисунок экрана я достаточно долго дорисовывал по пикселям, чтобы все элементы смотрелись красивее. Даже цветочки на труселях волка:) А то чисто после уменьшения оригинальной картинки там было очень ужасный вид.

  А я рисовать анимации не умею, так бы добавил бы ради прикола

Чуть выше в каментах опубликовали кхм... анимацию.

Думаю если bad apple показать в конце, то будет в самый раз :)

Серия КБ1013 до сих пор живёт - в виде КБ1013ВГ6.

Помимо «Автослалома», прошивка написана с нуля и для «Весёлой арифметики». У кого она была, утверждают, что, поскольку аппаратно там реализовано только сложение, остальные математические действия выполнялись медленно.

Есть такая, лет 15 назад когда покупал работала, сейчас - не знаю. Особых тормозов не замечал (да много ли ей той арифметики надо учитывая что с той стороны экрана живой пользователь сидит который за ней пересчитывать должен?), но батарейки жрала как не в себя - это факт. Из-за энергопотребления (а может и из-за того что в мои руки попала сильно не новой) изображение на экране у нее очень сильно страдало из-за низкой контрастности. Собственно из-за этого знакомство с ней и получилось сильно ограниченным.

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

У меня где-то в коробках нулёвые запчасти на эти приставки были, какие именно не помню, дисплеи точно были. Отец их ремонтировал когда-то.

В моё детство в моём городе даже "Ну, погоди!" сложно было купить. Тогда многое "доставали", а не просто покупали. И о некоторых играх серии я только из журналов узнавал. Потом настали 90-е, и ассортимент игр Электроника ИМ в магазинах появился, но позволить купить себе уже не многие могли.

А вот попытайтесь сделать "Тайны океана", можете поверить это игрушка была более интересной!

Забавно, я начинал написание эмулятора "Ну, погоди!" именно с изучения исходного кода существующего десктопного эмулятора для "Octopus", который в советском варианте "Тайны окена". Несмотря на две кнопки управления, игра сложная и увлекательная.

Несмотря на две кнопки, игра на порядок интереснее, так как приходится бороться с собственной "жадностью", в то время как "ну, погоди" чисто игра на реакцию.

Ссылкой не поделитесь на этот десктопный эмулятор? Спасибо!

у нас был магазин "Электроника", фирменный, там продавались по очереди. Я не сказал бы что они были дорогущие, как мне помнится рублей 20 стоили, это цена двух аудиокассет, двух батоном сервелата и треть повышенной стипендии. Если мамапапа по 120 рублей зарабатывали, то одну приставку на день варенья купить можно было. А вот когда настали 90-е и пошла денди, то ту купить уже всё фиг купишь, ценник конский был, у моего отца зарплата была как 20% от цены денди XD так что приставки Электроника в 80-е доступны были куда сильнее, но да, город, фирменный магазин и очередь нужно было иметь.

Никак не двух. Цены на аудиокассеты от 4 рублей, вроде, начинались.

Японские стоили, кажется, 10 р за штуку. Также около 10 р стоили кооперативные с записью. 4р стоили Свема.

tdk, basf, maxwell по 10р штука

Если правильно запомнил, Denon DX1 стоил 9.

Это если официально импортированные... Эх, Denon DX1/90, Low Noise, High Output, High Quality, график на оборотной стороне упаковки...

А чуть позже и советские кассеты сделали тоже на 90 минут, интерес к Denon'ам поутих заметно.

Сделали. Но где «Denon», и где — советские кассеты... Так что интерес к «Denon'ам» не утих. Их еще и легально возить начали.

Помню скрип механизма 90 минутной Свемы)

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

типа того, не принципиально, а я вот даже забыл про Денон

До определённого момента это был единственный вид импортных кассет в обычных (не комиссионных и кооперативных) магазинах.

Игры электроника и в 90х продавались, последнюю буквально на закате эпохи купил. Потом их окончательно тетрис вытеснил.

Весёлый повар топовая вещь. Играл во все ходовые версии. Водолаза хотели все)

Снимаю шляпу! Шикарно!

с одной стороны интересно читать про такие штуки, с другой - насколько целесообразно такое решение? Raspberry Pi Pico может эмулировать Gameboy, на котором есть порты game & watch игр

Не сочтите за доё... кхм, сноббизм, но реально круто было бы, если бы питание было от двух LR44, как у оригинала :)

Не думаю, что их хватит для нормальной работы TFT-дисплея. Но, насколько я понял, в продаже сейчас  есть новодельные "Ну, погоди!" на микроконтроллере MSP430F4152  от Texas Instruments. Я не полностью уверен, но думаю, что там в основе лежит код эмуляции, похожий на тот, что использовал я, но для работы с сегментными дисплеями. В новоделах как раз используется и LR44, и сегментный дисплей, и корпус очень похожий на оригинальный, но относительно них противоречивые отзывы. Некоторые люди пишут про тихий звук и плохую точность часов, срок службы батареек тоже вызывает нарекания.

можно еще свой lcd сделать для аутентичности)

Начинаем с добычи медного колчедана!

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

Если делать по табличке, то белый экран потому что табличка не сходится с кодом
#define TFT_DC 21
#define TFT_RST 20

Но всё равно, если подключить корректно, то показывает все сегменты, ни на одну кнопку не реагирует.

На GP6/GP7 не вижу стробов соответствующих коду input.c

10 gpio_put(6, 1);
11 gpio_put(7, 0);

...
22 gpio_put(6, 0);
23 gpio_put(7, 1);

Спасибо, что прошли весь этот путь по сборке и нашли у меня ошибку с DC и RST.

Исправил.

Вы берёте готовую прошивку c Github или собираете у себя?

Взял готовую. Было бы здорово если бы логгирования было больше и в uart на GP0/GP1.

Совместными усилиями одержана победа над парой мелких багов.

Теперь можно пустить и слезу :)

Здравствуйте. У меня не получается клонировать с гитхаба выдаёт ошибку.

-------------------------------------------------------------------

$ git clone git@github.com:artyomsoft/pico-nu-pogodi.git

Cloning into 'pico-nu-pogodi'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

----------------------------------------------------------------------

Клонирование в 'pico-nu-pogodi'...
git@github.com: Отказано в доступе (publickey).
fatal: Не удалось прочитать из удаленного репозитория.

Убедитесь, что у вас есть правильные права доступа
и репозиторий существует.

------------------------------------------------------------------

Скорее всего у Вас не настроены ключи. Исправил в статье на git clone https://github.com/artyomsoft/pico-nu-pogodi.git, чтобы другие не столкнулись с такой же проблемой.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий