AVRkanoid

ptr
Offline
Зарегистрирован: 28.05.2016

Реализовано управление спрайтами для AVR на TFT экране под управлением ST7735. Сложность заключалась в том, что хранить содержимое фреймбуфера в оперативной памяти МК не реально (это порядка 40 килобайт), а имеющиеся библиотеки оказались, во-первых, очень медленными, а во-вторых, не позволяли читать фреймбуфер из видеоконтроллера.

Работа по SPI была реализована через USART MSPIM, так как он, в отличии от аппаратного SPI ATMega328P (на которой выполнялось исследование) имеет буферизацию передатчика, что уже дало существенный прирост в скорости обмена. Все критичные участки написаны на ассемблере. Обмен по SPI оформлен в виде библиотечных функций в файлах ST7735_spi.c и .h.

Управление спрайтами так же оформлено в виде библиотечных функций в файлах ST7735_sprite.c и .h. Данная поддержка включает обработку коллизий с границами экрана, но коллизии между спрайтами или спрайта со статическим объектом должны определяться извне. Альфа канал для отрисовки спрайтов, естественно, поддерживается. В данном прототипе размер спрайтов ограничен 128 точками (256 байтами).

В качестве примера использования спрайтов была написана простенькая игра, подобная старой Arcanoid.

Изначально задачи написать игрушку не было. Хотелось просто разобраться как использовать спрайты для оформления экрана и иметь прототип для обучения детей программированию Arduino.

https://github.com/vpetryaev/ST7735

https://goo.gl/photos/5e8qqPt754j5KdrA6

 

ptr
Offline
Зарегистрирован: 28.05.2016
Igor_Simanov
Offline
Зарегистрирован: 25.10.2016

Интересно получилось. Тоже поэксперемнтировал с LCD TFT, вот такая игра: https://youtu.be/Yx5-GhII6Hk