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:
@@ -43,7 +43,7 @@ openenv 6124
|
||||
palfile 5406
|
||||
ptime 5744
|
||||
rpgprof 12082
|
||||
rpgwalk 9501
|
||||
rpgwalk 10309
|
||||
rt_test 4892
|
||||
seek 4188
|
||||
simple 955
|
||||
|
||||
|
@@ -184,8 +184,17 @@ int main(void)
|
||||
last_sec = dt.second;
|
||||
|
||||
for (;;) {
|
||||
if (kbhit() && getch() == 27)
|
||||
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])) {
|
||||
|
||||
Reference in New Issue
Block a user