Знакомство с Arduboy: Запуск на SimulIDE

Наверно вы ничего не слышали про Arduboy, но она очень популярная мини-консоль в среде разработчиков под встраиваемые устройства. Её отличие от обычных консолей в том, что это консоль больше для разработчиков, нежели для игроков. Т.е. для тех, которым больше нравиться создавать игры (и в очень ограниченных условиях). Она крохотная и запускаются совсем простые пиксельные игры. Всего доступно 313 игр. Кажется, что игр мало, но если вспомнить какого формата консоль, например, у неё экран 128 на 64 пикселей, то там немного разбежаться где. Поэтому в итоге уже игр не так, чтобы мало, есть что попробовать.

Не буду знакомить вас с тем, что эта за консоль. Она уже старая, зародилась аж в 2014 году, но в то же время мне очень хочется собрать свою консоль и я решил начать с Arduboy, хотя есть и другие консоли и платформы игр для встраиваемых систем, но они не такие ламповые.

Изначально я думал, что соберу её просто, так как все комплектующее у меня есть, но оказалось, что я не правильно посчитал. У меня есть платы Arduino Nano и OLED дисплей с I2C интерфейсом. Должно же вроде бы работать, но нет. В Arduboy используют микроконтроллер ATMega32u4, а в Arduino Nano находится ATmega328P. Они чем-то похожие, но не совсем, поэтому сразу оно не заведется, нужно что-то где-то править. А еще, в Arduboy используется OLED дисплей с SPI интерфейсом. В общем, беда, ничего не подходит.

Прежде, чем заказывать новые комплектующие я захотел собрать Arduboy на симуляторе. Мой любимый симулятор это SimulIDE, но в нем нет поддержки ATMega32u4, но есть ATMega328P. Я поискал побольше, но не шал симулятора для Arduboy, точнее сообщество Arduboy сделало несколько интересных симуляторов, например, Ardens. Но они не позволяют собрать принципиальную схему и проверить правильно ли все развел и в целом получить небольшое ощущение как от живой сборки устройства.

И раз я не нашел ничего того, что позволяет собрать устройство на симуляторе на чипе Arduboy, но нашел для чипа Arduino Nano, то я решил копать дальше и искать, может быть кто-то запустил Arduboy на ATMega328P. (К слову, я еще искал может кто на SimulIDE и ему подобных запускал Arduboy, но ничего не нашел.)

К моей радости я нашел статью Running Arduboy on an Arduino Nano и в ней есть ссылка на репозиторий Arduboy2 с поддержкой Arduino Nano. Доска называется Slimboy. Бонусом шла поддержка дисплея с интерфейсом I2C, т.е. кажется решение нашлось, но не все так гладко, но сначала по порядку.

В репозитории я нашел эту принципиальную схему:

Знакомство с Arduboy: Запуск на SimulIDE

В конце концов я собрал вот эту схему:

Все запустилось. Экранчик, кнопки, звук - все работает! Играть, конечно, тяжело, т.к. я не знаю как в SimulIDE назначать на элемент кнопки кнопку клавиатуры на рабочем компьютере, но попробовать можно. Теперь осталось запустить какие-нибудь интересные игры, ведь их же 313, правда?

Забыл добавить, что для того, чтобы игра запустилась в SimulIDE нужно закомментировать функцию idle, т.к. она вводит микроконтроллер в сон, а этот функционал симулятором не поддерживается.

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

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

Поискав другие интересные игры я нашел очень много игр от разработчика obono - ArduboyWorks. Т.к. я использовал библиотеку Arduboy2, то выбирал поддерживаемую игру - ARDUBULLETs. Но и здесь не все гладко. В игре используется библиотека ArduboyPlaytune, поддержки которой не было в Slimboy (Там есть поддержка ArduboyTones.) Поэтому я решил удалить весь звук. И получилось! Игра заработала. Хоть я и удалил звук, но при желании можно было его переписать под ArduboyTones.

По итогу я хочу сказать, что эксперимент с симулятором удался, но можно сделать простые выводы, что использовать Arduino Nano для работы с Arduboy можно, но в основном это только для себя, т.к. взаимодействовать с сообществом не получится. Как пример, не получится запустить собранный hex файл игр Arduboy на Arduino Nano. Но в то же время идея интересная и в какой-то мере живая, т.к. при желании можно пересобрать игры под новое устройство.

10
2
2 комментария

Уважаю очень умных людей со светлой головой, подкину тебе такой видос для развития, может заинтересует:
https://www.youtube.com/watch?v=uE6vkTM5yoU

2

Спасибо, сейчас посмотрю!

1