Да, речь именно о шрифтах для больших цифр, которыми отображается время.
При распаковке «на лету» могут возникнуть проблемы с эффектами смены цифр. Почти для всех эффектов требуется выводить часть полного изображения цифры, а иногда и несколько частей, причём и старой цифры, и новой. На каждом кадре анимации полностью перерисовывается весь дисплей. Поэтому есть весьма жёсткие ограничения по скорости отрисовки графики.
При распаковке придётся, как минимум, каждый раз считывать bitmap цифры с самого начала, а сейчас есть возможность сразу читать его с того места, которое нужно для вывода куска цифры.
Лучше, мне кажется, распаковывать весь шрифт сразу в отдельный буфер в ОЗУ однократно при выборе нового шрифта. Оперативной памяти должно хватить — её тут 4 кБ, под буфер кадра выделено 512 байт, а все 20 цифр (по два варианта каждой — для часов/минут и секунд) шрифта занимают не более 880 байт. Остаётся ещё достаточно места под переменные и стек.
Чтобы плюсовать, нужен рейтинг не менее 1,1. Поставил Вам плюс в профиле — попробуйте теперь что-нибудь оценить.
Это, скорее, позволяет экономить RAM. Строки-то так или иначе будут храниться во flash-памяти. Разве что будет экономия на отсутствии кода для их копирования в RAM.
Я в процессе оптимизации дошёл до того, что делал выбор между локальной или глобальной переменной в зависимости от того, где получается меньше размер прошивки. Много памяти занимают шрифты, иконки и прочая графика. Тут мог бы помочь какой-нибудь алгоритм сжатия, но тогда могут начаться трудности, связанные со скоростью распаковки сжатой графики.
Поэтому я просто решил, что пора остановиться с добавлением всяких функций часам, и так уже много чего наворочено. :)
Это только если снять ту стопку, которая сейчас наполняется. Если снять уже полностью налитую или пустую (а также если поставить новую), наливание не остановится.
Идея сделать какие-нибудь колпачки над лампами мне тоже приходила. Но, в итоге, я решил оставить всё как есть. Во-первых, часы и так уже получились сложные, а это моя первая работа такого уровня. А во-вторых, мне показалось, что эти колпачки и конструкция для их крепления получатся слишком громоздкими, и из-за них не будет видно элементы, расположенные за лампами.
При распаковке «на лету» могут возникнуть проблемы с эффектами смены цифр. Почти для всех эффектов требуется выводить часть полного изображения цифры, а иногда и несколько частей, причём и старой цифры, и новой. На каждом кадре анимации полностью перерисовывается весь дисплей. Поэтому есть весьма жёсткие ограничения по скорости отрисовки графики.
При распаковке придётся, как минимум, каждый раз считывать bitmap цифры с самого начала, а сейчас есть возможность сразу читать его с того места, которое нужно для вывода куска цифры.
Лучше, мне кажется, распаковывать весь шрифт сразу в отдельный буфер в ОЗУ однократно при выборе нового шрифта. Оперативной памяти должно хватить — её тут 4 кБ, под буфер кадра выделено 512 байт, а все 20 цифр (по два варианта каждой — для часов/минут и секунд) шрифта занимают не более 880 байт. Остаётся ещё достаточно места под переменные и стек.
Чтобы плюсовать, нужен рейтинг не менее 1,1. Поставил Вам плюс в профиле — попробуйте теперь что-нибудь оценить.
А почему именно ARSENICUM-8? Всё-таки, число в названии должно иметь какой-то смысл (если это не просто набор случайных символов, конечно).
PSTR() я уже и так использую, конечно.
Это, скорее, позволяет экономить RAM. Строки-то так или иначе будут храниться во flash-памяти. Разве что будет экономия на отсутствии кода для их копирования в RAM.
Я в процессе оптимизации дошёл до того, что делал выбор между локальной или глобальной переменной в зависимости от того, где получается меньше размер прошивки. Много памяти занимают шрифты, иконки и прочая графика. Тут мог бы помочь какой-нибудь алгоритм сжатия, но тогда могут начаться трудности, связанные со скоростью распаковки сжатой графики.
Поэтому я просто решил, что пора остановиться с добавлением всяких функций часам, и так уже много чего наворочено. :)
Честно говоря, я не ожидал, что этот «функциональный механизм» вызовет столько интереса. :))
Я для себя сразу решил, что если в часах будут шестерёнки, то они должны работать!