Játékok

JiffyDOS vs. FastLoad: melyik gyorsabb?

2025. augusztus 3. 12:30 Lanre

C64 és a stabil 50 FPS-es scroll

A Commodore 64 egyik leglátványosabb trükkje a teljesen sima, 50 FPS-es scroll. Sok játék és demó használta ezt a technikát, de kevesen tudják, hogy a háttérben a VIC-II raszteridőzítésének precíz kezelése áll.

A PAL rendszerben a C64 képernyője másodpercenként 50 alkalommal frissül. Ez azt jelenti, hogy minden frame körülbelül 20 milliszekundumig tart. Ha a scroll minden egyes frame-ben pontosan ugyanabban a raszterpillanatban történik, a mozgás tökéletesen folyamatosnak érződik.

A stabil scroll titka nem a gyors CPU, hanem a raszter pontos időzítése.

A VIC-II szerepe

A C64 grafikus chipje, a VIC-II, hardveres scroll regiszterekkel rendelkezik. A $D016 regiszter az X irányú finom scrollt, a $D011 pedig a függőleges scrollt vezérli. Ezek segítségével a képernyő pixelenként tolható anélkül, hogy a teljes memóriát újra kellene rajzolni.

A legtöbb scroll rutin úgy működik, hogy minden frame-ben egy pixellel eltolja a képet. Amikor elér egy teljes karakter szélességet (8 pixel), akkor a karaktermemóriában történik egy új oszlop betöltése.

A C64 scroll nem attól sima, hogy gyors, hanem attól, hogy mindig pontosan ugyanakkor történik.

Raszter stabilizálás

A stabil scroll egyik kulcsa a raszter stabilizálása. A program megszakítást kér egy adott rasztersornál, majd pontos ciklusszámolással biztosítja, hogy a scroll regiszter módosítása mindig ugyanabban a ciklusban történjen.

Ha ez az időzítés akár néhány ciklussal elcsúszik, a scroll rángatni kezd. A demoscene programozók ezért gyakran dupla megszakításos technikát vagy stabilizáló kódot használnak.

Egy jól megírt scroll rutin minden frame-ben pontosan ugyanabban a CPU ciklusban fut le.

Miért 50 FPS?

PAL rendszeren a C64 50 Hz-es frissítéssel működik. Ha minden frame-ben történik scroll lépés, akkor a mozgás sebessége pontosan 50 lépés másodpercenként.

Ez az oka annak, hogy a legtöbb klasszikus C64 játék scrollja különösen simának érződik CRT monitoron. A képfrissítés és a scroll teljesen szinkronban van.

?TAPE LOADING ERROR
A C64 scrollja akkor a legszebb, amikor a raszter, a CPU és a képfrissítés tökéletes ritmusban dolgozik.

Kapcsolódó cikkek