const uint16_t mario0[] PROGMEM = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xF800, 0xF800, 0xF800, 0xF800, 0xF820, 0x8000, 0x8000, 0x8000, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9220, 0xF06C, 0xF827, 0xF860, 0xFB40, 0xFB40, 0xF827, 0xFB40, 0xF820, 0xF820, 0xAB40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xABA0, 0xAB40, 0xBC20, 0xFF20, 0xFF20, 0x8B80, 0xF6ED, 0xAC80, 0xAC80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xF6ED, 0xABA0, 0xF6ED, 0xFF40, 0xFF40, 0x93A0, 0xF6ED, 0xFF40, 0xFF40, 0xC520, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xF6ED, 0xBC20, 0xBC40, 0xFF40, 0xFF40, 0xF6ED, 0xAC80, 0xF70C, 0xFF20, 0xFF40, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xBC20, 0xF70C, 0xFF20, 0xFF40, 0xFF40, 0xAC80, 0x8B60, 0x93A0, 0x93A0, 0xAC80, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xF70C, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9220, 0xF800, 0xFA80, 0xF800, 0x5B9E, 0xF800, 0xF860, 0x8B60, 0x8B60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAB00, 0xF800, 0xF800, 0xF801, 0xF800, 0x329F, 0x5B9E, 0xF800, 0xF06C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAB00, 0xF800, 0xF800, 0xF827, 0x725D, 0x331F, 0xEF6F, 0x627E, 0x627E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAB40, 0xF827, 0xF801, 0xF801, 0xF16C, 0x535E, 0x433F, 0x0ABF, 0x429F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x725D, 0xF06C, 0xF940, 0xFEE0, 0xF70C, 0x331F, 0x02BF, 0x627E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x7A5D, 0xF16C, 0xFF20, 0xF70C, 0x331F, 0x329F, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x725D, 0x6A7E, 0x6BDE, 0x6BDE, 0x531E, 0x627E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9220, 0x9A60, 0x9A40, 0x8A00, 0x8A00, 0x8A00, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9200, 0x9A60, 0x9A60, 0x9A60, 0x8A00, 0x8A00, 0x8A00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; const uint16_t mario1[] PROGMEM = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xF800, 0xF800, 0xF800, 0xF800, 0xF826, 0x8000, 0x8000, 0x8000, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9200, 0xF06B, 0xF827, 0xF860, 0xF960, 0xF940, 0xF868, 0xF802, 0xF826, 0xF826, 0xAB40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xABA0, 0xAB40, 0xBC20, 0xFF20, 0xFF20, 0x8B80, 0xEEA0, 0xAC80, 0xAC80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xEEA0, 0xABA0, 0xEEA0, 0xFF40, 0xFF40, 0x93A0, 0xEEA0, 0xFF40, 0xFF40, 0xC520, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xEEA0, 0xBC20, 0xBC40, 0xFF40, 0xFF40, 0xEEA0, 0xAC80, 0xFF20, 0xFF20, 0xFF40, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xBC20, 0xFF20, 0xFF20, 0xFF40, 0xFF40, 0xAC80, 0x8B60, 0x93A0, 0x93A0, 0xAC80, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B60, 0xF826, 0xF826, 0x627E, 0x529F, 0xF06D, 0x8B60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x8B60, 0x8B60, 0xF868, 0xF800, 0xF800, 0xF849, 0x627E, 0xF849, 0xFF20, 0xFF40, 0xB4E0, 0x1040, 0x0000, 0x0000, 0x0000, 0xB4E0, 0xFF40, 0xFF20, 0xF868, 0xF801, 0xF800, 0xF801, 0xF868, 0xF940, 0xFF20, 0xFF40, 0xFF20, 0x93A0, 0x0000, 0x0000, 0x93A0, 0xFF20, 0xFF20, 0xFF20, 0x627E, 0xF06C, 0xF868, 0xF868, 0xF868, 0xF868, 0xFF20, 0xFF20, 0xAC80, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xAB40, 0x627E, 0x0ABF, 0x3B1F, 0x3B1F, 0x3B1F, 0x3B1F, 0x3B1F, 0x627E, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x9A60, 0x9240, 0x529F, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x3B1F, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x9A60, 0x9240, 0x529F, 0x2A9F, 0x7298, 0x7298, 0x529F, 0x529F, 0x627E, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x9200, 0x1040, 0x1040, 0x0820, 0x0000, 0x0000, 0x9A60, 0x9A60, 0x9200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9A60, 0x9A60, 0x9A60, 0x9240, 0x1040, 0x0000, 0x0000, 0x0000 }; const uint16_t mario2[] PROGMEM = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xF800, 0xF800, 0xF800, 0xF800, 0xF820, 0x8000, 0x8000, 0x8000, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9220, 0xF06C, 0xF827, 0xF860, 0xFB40, 0xFB40, 0xF827, 0xFB40, 0xF820, 0xF820, 0xAB40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xABA0, 0xAB40, 0xBC20, 0xFF20, 0xFF20, 0x8B80, 0xF6ED, 0xAC80, 0xAC80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xF6ED, 0xABA0, 0xF6ED, 0xFF40, 0xFF40, 0x93A0, 0xF6ED, 0xFF40, 0xFF40, 0xC520, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xF6ED, 0xBC20, 0xBC40, 0xFF40, 0xFF40, 0xF6ED, 0xAC80, 0xF70C, 0xFF20, 0xFF40, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xBC20, 0xF70C, 0xFF20, 0xFF40, 0xFF40, 0xAC80, 0x8B60, 0x93A0, 0x93A0, 0xAC80, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xFF20, 0xF70C, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9220, 0xF800, 0xFA80, 0xF800, 0x5B9E, 0xF800, 0xF860, 0x8B60, 0x8B60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAB00, 0xF800, 0xF800, 0xF801, 0xF800, 0x329F, 0x5B9E, 0xF800, 0xF06C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAB00, 0xF800, 0xF800, 0xF827, 0x725D, 0x331F, 0xEF6F, 0x627E, 0x627E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xAB40, 0xF827, 0xF801, 0xF801, 0xF16C, 0x535E, 0x433F, 0x0ABF, 0x429F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x725D, 0xF06C, 0xF940, 0xFEE0, 0xF70C, 0x331F, 0x02BF, 0x627E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0x7A5D, 0xF16C, 0xFF20, 0xF70C, 0x331F, 0x329F, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x725D, 0x6A7E, 0x6BDE, 0x6BDE, 0x531E, 0x627E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9220, 0x9A60, 0x9A40, 0x8A00, 0x8A00, 0x8A00, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9200, 0x9A60, 0x9A60, 0x9A60, 0x8A00, 0x8A00, 0x8A00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; const uint16_t mario3[] PROGMEM = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xF800, 0xF800, 0xF800, 0xF800, 0xF806, 0x8000, 0x8000, 0x8000, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9200, 0xF84A, 0xF827, 0xF860, 0xFB80, 0xFB80, 0xF828, 0xFB40, 0xF806, 0xF806, 0xAB40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xABA0, 0xAB40, 0xBC20, 0xFF20, 0xFF00, 0x8B80, 0xF68E, 0xAC80, 0xAC80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xF68E, 0xABA0, 0xF70B, 0xFF40, 0xFF40, 0x93A0, 0xF70B, 0xFF40, 0xFF40, 0xC520, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xAB40, 0xF70B, 0xBC00, 0xBC40, 0xFF40, 0xFF40, 0xEEA0, 0xAC80, 0xF70B, 0xFF20, 0xFF40, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0xBC00, 0xF70B, 0xFF20, 0xFF40, 0xFF40, 0xAC80, 0x8B60, 0x93A0, 0x93A0, 0xAC80, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1040, 0xFF00, 0xFF20, 0xFF20, 0xFF20, 0xFF00, 0xF70B, 0xF70B, 0x93A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x9A60, 0xF8E0, 0xF8E0, 0xF8E0, 0xF827, 0x72FD, 0xF848, 0xFB20, 0xF826, 0x825D, 0x8B60, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF40, 0xFF20, 0xFB80, 0xF804, 0xF800, 0xF827, 0x429F, 0x5AFE, 0xF848, 0xF826, 0xF08D, 0x72FD, 0xF848, 0xFF20, 0xFF40, 0xFF40, 0xFF40, 0xFF40, 0xF70B, 0x8000, 0xF06C, 0xF06C, 0x627E, 0xEF6F, 0x5AFE, 0x429F, 0x63DE, 0xEF6F, 0xF927, 0xF927, 0xFF00, 0xFF20, 0xFF20, 0xF70B, 0x93A0, 0x7A96, 0x5AFE, 0x3B1F, 0x12BF, 0x3B1F, 0x02BF, 0x02BF, 0x0ABF, 0x429F, 0x7A96, 0x1040, 0x9A60, 0x1040, 0x0000, 0x0000, 0x6A99, 0x1ABF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x429F, 0x9A62, 0x9A60, 0x1040, 0x0000, 0x1040, 0x429F, 0x0ABF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x02BF, 0x429F, 0x9A62, 0x9A60, 0x1040, 0x1040, 0x9240, 0x7A96, 0x32BE, 0x12BF, 0x2A9F, 0x7A96, 0x7A96, 0x7A96, 0x7A96, 0x2A9F, 0x02BF, 0x429F, 0x9A62, 0x9A40, 0x1040, 0x1040, 0x9A60, 0x9A61, 0x9200, 0x7A96, 0x0820, 0x0000, 0x0000, 0x0000, 0x0000, 0x0820, 0x7A96, 0x1040, 0x1040, 0x1040, 0x0000, 0x0000, 0x1040, 0x9A60, 0x9A60, 0x9A40, 0x1040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; const uint16_t* const mario_array[4] PROGMEM = { mario0, mario1, mario2, mario3 }; const animation_t animation_mario PROGMEM = { .start_x = 0, // Позиция отображения X (начальная) .start_y = 0, // Позиция отображения Y (начальная) .options = 4+16, // Битовый флаг дополнительных параметров картинки // 1 - центрировать по горизонтали (позиция start_x игнорируется) // 2 - центрировать по вертикали (позиция start_y игнорируется) // 4 - есть прозрачные пиксели, цвет прозрачности в transparent_color // 8 - перед отрисовкой ПЕРВОГО кадра закрашивать всю матрицу цветом background_first_color // 16 - перед отрисовкой СЛЕДУЮЩИХ кадров закрашивать всю матрицу цветом background_color // 64 - начальное отображение - зеркальное по оси х // 128 - начальное отображение - зеркальное по оси y .frame_width = 16, // Ширина картинки (фрейма) .frame_height = 16, // Высота картинки (фрейма) .row_draw_direction = 0, // Направление построчного рисования (битовые флаги): // Биты 0 и 1 (маска 0x03) // 0 (0x00) - сверху вниз // 1 (0x01) - снизу вверх // 2 (0x10) - слева направо // 3 (0x11)- справа налево .draw_frame_interval = 125, // Интервал отрисовки очередной порции картинки анимации (строка при построчной анимации или кадр при покадровой) .draw_row_interval = 0, // Задержка мс между отрисовкой строк изображения (если 0 - рисуется кадр целиком, а не построчно) .move_x_interval = 125, // Смещение по оси X каждые N мс .move_y_interval = 0, // Смещение по оси Y каждые N мс .move_type = 1+16+64, // Тип движения - битовый флаг (разрешено только при отрисовке кадра целиком, при построчном - не работает): // 0 - нет; // 1 - из начальной позиции вправо // 2 - из начальной позиции влево // 4 - из начальной позиции вверх // 8 - из начальной позиции вниз // 16 - отражение при достижении границы по горизонтали // 32 - отражение при достижении границы по вертикали // 64 - переворот картинки при отражении по горизонтали // 128 - переворот картинки при отражении по вертикали // 256 - 1 - выходить за боковые рамки; 0 - не выходить // 512 - 1 - выходить за верх/низ; 0 - не выходить .transparent_color = 0x000000, // Этот цвет - прозрачный, пиксели этого цвета не рисуются .background_first_color = 0x000000, // Цвет заливки ВСЕЙ матрицы перед тем, как рисовать самый первый фрейм при активации эффекта анимации .background_color = 0x000000 // Цвет заливки ВСЕЙ матрицы перед тем, как рисовать очередной фрейм };