Zum Thema Colorcycling Colorcycling ist echt nichts Schweres. Man bezeichnet damit das Vorgehen, eine Farbpalette 'rotieren' zu lassen. Das heit: Man nehme die, zugegeben kleine, Farbpalette mit den Farbeintrgen: 0,1,5,8,29. Nun lt man sie rotieren. Beim nch- sten Schritt sehe sie so aus: 1,5,8,29,0 (nach links rotiert) oder 29,0,1,5,8 (nach rechts) - je nachdem, fr welche Richtung man sich entscheidet. Die nchste Umformung drfte klar sein: entweder 5,8,29,0,1 ode 8,29,0,1,5 usw. usf.... Also eine ganz einfache Sache, die aber nette Effekte erzeugen kann (siehe Plasma). Es gibt verschiedene Mglichkeiten, die Farbpalette rotieren zu lassen. Eine mchte ich Euch hier vorstellen. 1) Man lese die Farbtabelle aus (erste Farbe: a, letzte Farbe: b) 2) Linksrotieren: Man trage die Farbtabelle so ein, da Farbe a+1 an die Stelle a, a+2 an a+1... b an Stelle b-1 fllt. Die Stelle, an der zuvor b stand, wird nun mit a gefllt. Rechtsrotieren: Man trage Farbe b-1 bei b, b-2 bei b-1... a bei a+1 ein. Farbe b wird bei a festgelegt. 3) Wieder von vorne Alles klar? Nein? Stimmt! Farbtabelle auslesen: Es gibt zwei Mglichkeiten, die Farbtabelle auszulesen. Zum einen mittels dem BIOS und zum anderen durch direkte PORT-Adres- sierung. Da das BIOS, wie auch sonst immer, zu langsam ist, nehmen wir die zweite Variante. Ich hatte zwar schon in der letzten Ausgabe beschrieben, wie das geht, werde mich hier aber gerne noch mal wiederholen. Es gibt drei PORT-Adressen, die wir kennen mssen: $03C7 Lese-Port $03C8 Schreib-Port $03C9 Daten-Port Wollen wir die Farbe 89 auslesen, so mssen wir diesen Wert (89) an den Port $03C7 schicken und dann am Datenport zuerst den Rot- Wert, dann den Grn-Wert und dann den Blau-Wert der Farbe aus- lesen. Also drei Byte pro Farbe. Am besten wir haben ein Feld, das 768 Bytes gro ist. Dann knnen wir, wenn wir wollen, alle 256 Farben dort abspeichern. Farbtabelle schreiben: Drfte wohl klar sein, oder? Eintragen der Farbe xy: Wert xy an Portadresse $03C8 schicken. Danach R,G und B-Werte nach $03C9. Hier nun noch ein Programm im 'Pseudocode': VARIABLE PAL: FELD 768 BYTES gro PROZEDUR GetPal Schleife 1 : Farbe = Farbenzhler (von 0 bis 255) PORT $03C7 = Farbe Schleife 2 : RGB = RGW-Zhler (von 1 bis 3) PAL[Farbe,RGB] = PORT $03C9 Ende Schleife 2 Ende Schleife 1 PROZEDUR SetPal Schleife 1 : Farbe = Farbenzhler (von 0 bis 255) PORT $03C8 = Farbe Schleife 2 : RGB = RGW-Zhler (von 1 bis 3) PORT $03C9 = PAL[Farbe,RGB] Ende Schleife 2 Ende Schleife 1 PROZEDUR CyclePalette Solange kein Tastendruck 'TU' GetPal Hilfe = PAL[0] Schleife : Farbe = Farbenzhler (von 1 bis 255) Pal[Farbe-1] = Pal[Farbe] {Linksrotieren} Pal[255] := Hilfe SetPal ENTE Beim setzen der Palette wre es brigens noch sinnvoll, auf den 'Vertical Retrace' zu warten, da es sonst 'Schnee' am Bildschirm gibt! Dies macht man, indem man den PORT $03DA ausliest und dann prft, ob das Bit#3 (also das 4.Bit) gesetzt ist. Ist das der Fall, dann ist gerade ein vertikaler Retrace 'am laufen' und die Palette kann beliebig gendert werden. In den einzelnen Rubriken werdet Ihr speziell fr 256 Farben noch Beispielprogs frs Colorcycling finden. Kemil