Как стать автором
Обновить
32
0
Роман @RomanSk

IT project manager,ESPboy developer www.espboy.com

Отправить сообщение

очень приятная статья, спасибо! неожиданно для себя много нового узнал, хоть и ковыряюсь с такими штуками не первый год ) вот тут есть еще интересный список подобных самоделок https://github.com/oshaboy/awesome-indie-handhelds

Вот да. Я тоже так делал, когда нужна скорость. "Я для себя решил, что рисовать надо в виртуальных экранах, а затем просто пересылать на экран результат. Это получается часто эффективнее и быстрее, чем рисовать попиксельно на настоящем экране. ". Полагаю, что "виртуальный экран" - это буфер в ОЗУ, как правило строка в высоту равную высоте символов.

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

128x64/8 данных весь экран

и скорость шины I2C тоже не всегда 400 https://ru.wikipedia.org/wiki/I²C

У меня пока что мнение такое, что самое быстрое обновление экрана - это засылать строки данных в контроллер на отображение попорядку из буфера, причем методом nbSPI. Все отрисовки при этом делать в буфере экрана в ОЗУ, причем не обязательно буфер иметь в формате RGB565, главное перед отправкой строки в контроллер, сконвертировать строку из буфера в RGB565. Рисование примитивов прям в контроллер будет сильно медленнее даже на разогнанной SPI (из-за относительной тормознутости SPI). Но я могу и ошибаться ) И конечно нужно использовать хадварный SPI, а не софтварный битбангом... Этот битбанг SPI раз в 10 медленнее, чем хадварный

для 128x64 I2C OLED на ESP8266 вот эту использовал и она довольно быстрая https://github.com/ThingPulse/esp8266-oled-ssd1306

если только текст выводить, то маленькую u8g2 https://github.com/olikraus/u8g2

что-то на эту тему Гайвер написал и жутко хвалил, но я не тестировал.

А для ST7735 и похожего три есть известные и довольно быстрые

а разве в контроллер st7735 встроено аппаратное ускорение рисования примитивов? я так глубоко конечно не копался, но используя самые продвинутые графические библиотеки из существующих (не от Adafruit, она как раз самая тормозная), тестировал, и это все получалось не особенно быстро...

а исходник игрушки доступен? было бы интересно и ее портировать )

сделал такое один отчаянный парень из Франции. но через такие дикие извращения, что я не стал идею развивать ) не люблю я магию, да и квалификация низковата для такого. стараюсь все делать на уровне школьного курса С/С++ и официальной документации, без реверсинжениринга и извращений )

но у меня при компиляции внутри каждого основного кода добавляется еще код AppStore, который запускается, если стартануть консоль с зажатой кнопкой А или Б и таким образом всегда по OTA можно прошивку обновить, выбрав нужное из списка, если конечно доступен WiFi. потому, что каталог и приложения конечно же тоже из сети подгружаются и если я туда чего-то добавляю, у всех пользователей оно становится тоже доступно

если рендерить по точкам, то это адски медленно

можно в моих исходниках ESPboy на Github поглядеть, как я рендерю быстро. в последней реализации рендера GB эмулятора, например, так вообще используется рендер, который исключает простои шины SPI.

https://github.com/xsrf/nbSPI

Но так приходится извращаться потому, что DMA нету. А если есть DMA, все гораздо проще, но тогда приходится кучу памяти тратить на буфер экрана. Но если рендерить вручную, то буфер экрана можно делать под любую удобную грубину цвета, экономя память, но на лету преобразуя построчно вывод на дисплей... еще есть методика слайсами рендерить и игру и ее потом на дисплей, имея размер буфера скажем 1/4 экрана или 1/8. вообще разные методики есть которые "не в лоб"

на Arduboy порядка 300 игр старой школы https://arduboy.ried.cl

штук 150 я портировал уже на ESPboy и потихоньку остальные добиваю

но последняя версия ArduboyFX имеет еще мегабайт флеша на борту и стали возможны игры совсем другого уровня, например https://community.arduboy.com/t/prince-of-arabia-fx

еще более свежее достижение - парни научились на ЧБ OLED рисовать градации серого и сделали под это библиотеку, https://community.arduboy.com/t/arduboyg-grayscale-library теперь новые игры делаются еще более крутые с учетом 4 полутонов и FX памяти

https://community.arduboy.com/t/untitled-grayscale-rpg-dev-log

https://community.arduboy.com/t/dark-under-ii

tindie.com запретил российским разработчикам публиковаться и paypal тоже всех залочил. на моем офф сайте www.espboy.com западным ребятам можно купить и они покупают. но я советую купить на Aliexpress копеечные детальки и на perfboard запаять согласно схемы с сайта. Или если что-то поприличнее, то взять Gerber DIY версию c easyeda.com и заказать у китайцев удобные готовые платки

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

есть. через интернет прям с самого девайса с выбором в менюшке платформы, категории и прошивки. это и есть AppStore, который постоянно пополняется. на youtube в канале проекта кажись есть демонстрация старой версии без подкаталогов...

еще можно через веб загружать https://espboy.m1cr0lab.com/demo/appstore/ через Arduino IDE и через tool от Espressif

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность