Category: DemoScene

Schermopkuis

Bij het opstarten van een C64 demo zit er vaak zo een fancy scherm-opkuis-routine bij.  Alle karaktertjes vallen weg of schuiven ofzij of worden blokjes die rondzweven.  Schuun allemaal…  Toch ook eens proberen of ik zoiets vrij simplistisch in elkaar kan boksen denk ik dan.

Al is het maar in BASIC.

10 FOR L = 0 TO 25

20 FOR T = 0 TO 38

30 FOR J = 0 TO 38 – T

40 A = 1024+L*40+J

50 POKE A,PEEK(A+1)

60 NEXT J

70 NEXT T

80 NEXT L

De miserie zit hem in het correct nesten van de nodige loops.  Allereerst moet elke lijn leeggemaakt worden.  25 lijnen dus graag 25 keer uitvoeren in loop 1 (regel 10) .  De cleanup gaan van rechts naar links dus de lege ruimte aan de rechterkant moet je niet nodeloos blijven herhalen (regel 20).  De derde loop werkt dan de overblijvende ruimte aan de linkerkant af van het eerste karakter tot het laatste waar nog een karakter zou mogen staan (regel 30).  Vervolgens het schermadres berekenen dat aan de beurt is om “ontvanger” te zijn.  Het schermgeheugen begint op adres 1024, hierbij wordt het regelnummer bijgeteld alsook het karakter (regel 40) om vervolgens de inhoudt van het adres dat er zich rechts (dus 1 adres hoger) van bevindt in te copieren (regel 50).  En dan nog een kwestie van de 3 loops af te sluiten.

Nu het eens in assembler proberen..  Dat gaat BAK-KEN sneller gaan.

BTW.. Zoek de bug.

WordPress Themes