Hallo zusammen,
Ich bin jetzt schon einige Tage am rumschauen aber mit dem Problem werde ich noch nicht so ganz firm. Ich weiß zwar aus manchen Spielen das es bestimmt besser geht aber irgendwie komme ich nicht dahinter vielleicht kann mir von euch ja wer einen Anstoß geben.
Ich möchte nahezu den kompletten Bildschirmspeicher mit Zeichen füllen, welche als DATA vorliegen. Das soll dann ein Level ergeben.
Mein Code dazu sieht wie folgt aus:
- 160 dim c1(3):dim h(3)
- 180 h(0)=230:h(1)=32:h(2)=122:h(3)=120: rem pO1,53:
- 190 c1(0)=1:c1(1)=7:c1(2)=10:c1(3)=3
- 200 a=55296+120:b=1144:c=49152:jr=56320:sr=54272:pe=.:ps=8
- 12000 rem *sub print levels
- 12001 read sx:read sy:px=sx:py=sy:
- 12002 pO 53264,pz:pO 53248,sx:pO 53249,sy:rem ?"px";px;"py";py
- 12005 ta=ti
- 12050 for i=0to879:reads:pOa+i,c1(s):pOb+i,h(s):next
- 12100 tb=ti:di=tb-ta: rem ? di
- 12200 return
Interessant ist eigentlich nur die Zeile 12050. In dieser Schleife werden die Daten in s eingelesen und dann das Zeichen und die Farbe anhand von s gepoket.
Die Werte der Zeichen liegen in h() und die Farbe in c1(). Das funktioniert auch soweit, leider ist es abartig lahm, zum Füllen des Bildschirmspeichers benötigt es ~15 Sekunden.
Das dauert zwar nur am Anfang jedes Levels solange aber dennoch ist irgendwie doch etwas zu lahm. Ich benutze auch Sprites.
Ich habe auch schon mal etwas gelesen, dass man den Bildschirmspeicher umhängen kann. Könnte man da nun z.B. 2 Bildschirme halten und während man im 1 Level (1 Bildschimspeicher) ist, nach und nach die Daten in den 2 Bildschirmspeicher laden z.B: von 2048 ($0800) beginnend, dann beim Beenden des 1 Level den Bildschirm-Pointer auf den zweiten Speicherbereich setzen und dann für das 3te Level wieder nach und nach den Speicher des 1 Bildschirm füllen. Ich meine aber auch gelesen zu haben, das man dann auch die Spritepointer umhängen muss und werden dann die Daten ab 2048 nicht von meinem Basic Programm überschrieben? Muss ich dann auch die Startadresse von meinem Basicprogramm verschieben? Es wäre echt toll falls mir das mal jemand etwas detailierter erklären könnte.
Besten Dank schonmal
Grüßle Thomas