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
+1 -1
View File
@@ -43,7 +43,7 @@ openenv 6124
palfile 5406 palfile 5406
ptime 5744 ptime 5744
rpgprof 12082 rpgprof 12082
rpgwalk 9501 rpgwalk 10309
rt_test 4892 rt_test 4892
seek 4188 seek 4188
simple 955 simple 955
1 # Эталон размеров _CODE (байт); обновление: python3 toolchain/size_check.py --update
43 palfile
44 ptime
45 rpgprof
46 rpgwalk
47 rt_test
48 seek
49 simple
+11 -2
View File
@@ -184,8 +184,17 @@ int main(void)
last_sec = dt.second; last_sec = dt.second;
for (;;) { for (;;) {
if (kbhit() && getch() == 27) if (kbhit()) {
break; 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++) for (i = 0; i < NCHR; i++)
if (!sprite_moving(&sp[i])) { if (!sprite_moving(&sp[i])) {