JiffyDOS vs. FastLoad: melyik gyorsabb?
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 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.
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.
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