Assembler: PM-Grafik mit mehr als 3 Farben vertikal, wie?


Assembler: PM-Grafik mit mehr als 3 Farben vertikal, wie?

von patjomki » Sa 6. Dez 2008, 22:27
Hallo Leute,

der XL besitzt ja bekanntermaßen was die gleichzeitig darstellbare Anzahl von Farben angeht ohne DLI relativ bescheidene Möglichkeiten.

Das mit der DLI ist zwar kein Problem, für ein aktuelles Projekt stellt sich daher folgende Frage:

Ich benötige nie mehr als drei Farben pro Zeile (jedoch insgesamt in meinem Player mehr, d.h. durchaus in einer anderen Zeile drei andere Farben) müßte also daher mit einem Display-List-Interrupt arbeiten.

Der eigentliche Screen ist aber in ANTIC-Modus 4 (Basic: Gr. 12+16) und dort kann ich ja nunmal nur zeilenweise eine DLI benutzen, sprich alle 8 Zeilen einen Interrupt auslösen.

Mein Player soll aber die Farben zeilenweise ändern. Mache ich irgendeinen Denkfehler und muß ich tatsächlich für diesen Zweck die speicherintensiven Grafikmodi des ANTIC bemühen?

Bis die Tage,

patjomki

von pps » So 7. Dez 2008, 10:34
Du löst einen DLI aus. Dort wird zunächst die Farbe für die erste Zeile geändert, dann machst Du einen STA WSYNC und änderst nun die Farbe für die nächste Zeile. Machst Du das nun 8 mal hast du die 8 Zeilen, wie Du sie haben willst.

Sollen auch mal mehrere Zeilen eine gleiche Farbe haben, machst Du das mit dem STA WSYNC so oft, wie Du Farbe haben willst.

STA WSYNC sorgt dafür, daß der Rechner mit der Weiterarbeit solange wartet, bis der TV die nächste Zeile "malt".

Auf diese Weise kannst Du Dein Programm auch so gestalten, daß Du Dir nur einen DLI bastelst, der immer in der Zeile aufgerufen wird, wo der Player ist, dann wird dort der komplette Player mit Farbe versorgt.

So hast Du nicht für alle 8 Zeilen einen neuen DLI, sondern nur dort, wo Du ihn benötigst.

Bei diesem Grafikmodus ist aber dann natürlich etwas Rechenarbeit nötig, da man ja nur alle 8 Zeilen einen DLI starten kann. Der Player kann ja z.B. erst ab der 6. Zeile beginnen. Man muß da also etwas überlegen.

von patjomki » So 7. Dez 2008, 16:08
pps hat geschrieben:Du löst einen DLI aus. Dort wird zunächst die Farbe für die erste Zeile geändert, dann machst Du einen STA WSYNC und änderst nun die Farbe für die nächste Zeile. Machst Du das nun 8 mal hast du die 8 Zeilen, wie Du sie haben willst.

Sollen auch mal mehrere Zeilen eine gleiche Farbe haben, machst Du das mit dem STA WSYNC so oft, wie Du Farbe haben willst.

STA WSYNC sorgt dafür, daß der Rechner mit der Weiterarbeit solange wartet, bis der TV die nächste Zeile "malt".

Auf diese Weise kannst Du Dein Programm auch so gestalten, daß Du Dir nur einen DLI bastelst, der immer in der Zeile aufgerufen wird, wo der Player ist, dann wird dort der komplette Player mit Farbe versorgt.

So hast Du nicht für alle 8 Zeilen einen neuen DLI, sondern nur dort, wo Du ihn benötigst.

Bei diesem Grafikmodus ist aber dann natürlich etwas Rechenarbeit nötig, da man ja nur alle 8 Zeilen einen DLI starten kann. Der Player kann ja z.B. erst ab der 6. Zeile beginnen. Man muß da also etwas überlegen.


So. Ausprobiert, funktioniert. Herzlichen Dank.

Das mit dem DLI, der immer nur in der Zeile ausgelöst wird, in der sich der Player befindet ist sicherlich etwas komplizierter. Werde ich erst später angehen, da der Player natürlich auch vertikal bewegt wird und dann die Farben ja mitwandern müssen.

Aber das ist momentan erstmal nicht akut, jetzt stehen erstmal ein paar andere Dinge an. Auf jeden Fall bin ich mit der hier präsentierten Lösung überglücklich. :D

Bis die Tage,

patjomki