AVRkanoid
- Войдите на сайт для отправки комментариев
Реализовано управление спрайтами для 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
https://www.youtube.com/watch?v=4xZhCO-KNBQ
Интересно получилось. Тоже поэксперемнтировал с LCD TFT, вот такая игра: https://youtu.be/Yx5-GhII6Hk