Brueggi hat geschrieben:Ich persönlich fand die Copperliste am Amiga wesentlich bequemer, immerhin braucht man dann die CPU garnicht mehr, eigentlich war das ja meine Absicht, mit Rastereffekten am PC zu experimentieren. Ich hatte zwar schon wunderschöne Balken (ohne INT2), aber damit verbunden das schöne "Schneegestöber" am linken Bildrand. Find ich schon seltsam - es ist in der Doku vorgesehen, das INT2 von der GraKa benutzt werden kann, aber dann machts keiner...
Wie programmiert man dann eigentlich "Copper-Effekte" am PC? Gesehen hab ich sowas mal - aber nur ansatzweise, und nicht im Textmode (meine Rasterbalken liefen ja im Textmode)?
1.
Was die genaue Ursache des Schneegestöbers ist, habe ich noch nicht herausgebracht. Schneegestöber tritt bei VGAs eigentlich immer nur im Zusammenhang mit dem Setzen der Palettenregister auf. Damit ergeben sich meines Erachtens zwei mögliche Ursachen für das Schneegestöber: Einmal, wenn entweder die VGA oder die CPU zu langsam ist, um die angeforderten Palettenregister-Operationen durchzuführen. Alternativ, weil es eine VGA einfach nicht mag, wenn während des Bildaufbaus das Palettenregister geändert wird. Was die Ursache ist, wie gesagt, habe ich bisher nicht ermitteln können.
Ohne Schneegestöber zu verursachen, kann das Palettenregister wohl nur dann verändert werden, wenn man es während eines Retraces setzt. Dabei scheint es jedenfalls so zu sein, dass es bei vielen 8-bit - VGA-Karten, aber auch einigen 16-bit-Karten (zumindest bei meinem eigentlich recht schnellen WD90c11-Chip (Paradise) auf 386sx16) einfach nicht möglich ist, alle 256 Farben innerhalb eines Retraces zu setzen. Da bleibt nur, wenn man 256 Farben setzen will, dies in zwei 128-Farben-Happen verteilt über zwei Retraces zu machen.
Diese VGA - Karten mögen im Übrigen auch das Lesen der Palettenregister während des Bildaufbaus nicht. Wenn ich jedenfalls auf meiner Paradise (wd90c11) die Palettenregister ohne Abgleich mit dem Retrace (und aufgeteilt in zwei 128-Farben-Happen) auslese, erhalte ich vereinzelt falsche Farben.
Das Problem mit dem Schneegestöber oder Fehler beim Aulesen der Palettenregister habe ich übrigens überhaupt nicht mehr bei AGP, PCI und VL-Karten feststellen können. Ich denke daher, dass das SChneegestöber vorrangig ein Problem älterer ISA-VGA-Karten ist.
2.
Hinsichtlich der Copper-Effekte (= ein horizontaler CopperBar im Textmodus) hatte ich Anfangs auch das Schneegestöber. Ich habe dann, das Setzen der Palettenregister auf die Anzahl beschränkt, die zur Anzeige des aktuellen Copperbars (ich hatte nur einen) benötigt werden. Bei einem Copperbar über 31 Zeilen setze ich also maximal 32 Palettenregister (a 3 Byte natürlich). Dann habe ich bei einem Copperbar wenigstens keinen Schnee.
Da Du einen CopperBar im Textmode ja schon hast, meinst Du wohl diese irren Copper-Effekte, die man auch bei Dr.Zeissler´s zweiten Link auf das DEMO von TFL sehen kann. Keine Ahnung, wie das geht. Einen horizontalen CopperBar (Anfänger-Copper) habe ich mit viel Anlauf ja noch verstanden, mehr aber auch nicht. Meine alleresten CopperBars waren sogar reines ColorCycling: ich war danach noch jahrelang überzeugt, ich hätte das Prinzip verstanden...
Diese Irren Copper-Effekte sind ja vertikal und z.B. bei Act1 von Psychic Link für 386er (
http://www.pouet.net/prod.php?which=2498) sogar diagonal. Es kann also nicht damit getan sein, ständig den horizontalen Rectrace zu überwachen. Denn anscheinend wird das Palettenregister innerhalb des Aufbaus einer Zeile geändert. Die Position des Kathodenstrahls kann man meines Wissens aber nicht abfragen. Man müßte die Position vielleicht berechnen bzw. mittels Timer mitverfolgen. Schließlich weiss man, wieviele Zeichen die VGA pro Zeile ausgibt (Register 00, Port $3d4,$3d5) und, dass die Zeilenfrequenz bei VGA immer 31.5 kHz beträgt. Hieraus könnte man also die Position des Kathodenstrahls während des Zeilenaufbaus ermitteln, weil man den Start des Zeilenaufbaus ja durch das Bit für den (horizontalen) Retrace abschätzen kann.
Aber wie gesagt: keine Ahnung und zuuu schwer für einen alten Mann.
PS: @Dr.Zeissler: Danke für den Link auf die Demos. Das erste (Joop) kannte ich noch nicht. Das rennt auf meinem 386sx16 echt wie sau. Und dazu noch Adlib-Sound. Hat Spaß gemacht!