/* * _gfx_fps_state — данные FPS-делителя (frame pacing, docs/sprite-api- * design.md §9е). Только данные; НЕ инициализировать (crt0 зануляет * _DATA — див=0 трактуется как «делитель выключен»). * * _gfx_fps_div — n: логический кадр = n кадровых интервалов; 0/1 = * старый лучевой поллинг gfx_wait_vsync (путь не активен); * _gfx_frame_tick— счётчик кадров, инкрементит _gfx_frame_isr; вся * арифметика ожидания разностная по модулю 256 (wrap * безопасен); * _gfx_fps_last — значение счётчика на прошлом выходе из wait (база * отсчёта интервалов). * * Модуль отделён от сеттера/ISR/wait, чтобы программа без вызова * gfx_set_fps_div() тянула только эти 3 байта, но не irq-механику. */ #include "../_bgi.h" uint8_t _gfx_fps_div; volatile uint8_t _gfx_frame_tick; uint8_t _gfx_fps_last;