examples/rpgwalk: переключатель FPS-делителя (1/2/3) — проверка пейсинга

Клавиши 1/2/3 зовут gfx_set_fps_div(n) на лету (дефолт n=1 не меняет
поведение).  Проверено в MAME: при n=2 FPS-метр стоит РОВНО на 024
(48.83/2) все 8 секунд без плавания — логический кадр = ровно 2 vsync'а,
скорость персонажей (пиксель/сек) постоянна.  +808 Б (демо тянет код
делителя).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 10:42:28 +03:00
parent 1b4fbeaa6b
commit e14b6745f7
2 changed files with 12 additions and 3 deletions
+11 -2
View File
@@ -184,8 +184,17 @@ int main(void)
last_sec = dt.second;
for (;;) {
if (kbhit() && getch() == 27)
break;
if (kbhit()) {
int c = getch();
if (c == 27)
break;
/* 1/2/3 — FPS-делитель: логический кадр = n vsync'ов.
* Скорость персонажей (пикселей на итерацию) не меняется, но
* итераций/сек делится на n — визуальная проверка стабильности
* тайминга (метр стоит ровно на 50/25/16). */
if (c >= '1' && c <= '9')
gfx_set_fps_div((uint8_t)(c - '0'));
}
for (i = 0; i < NCHR; i++)
if (!sprite_moving(&sp[i])) {