g0-Grafiktreiber

Fragen zu Programmiersprachen und Software für den Hive und die Propellerchips
Antworten
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

g0-Grafiktreiber

Beitrag von drohne235 »

Ich bastle grad an einem Grafiktreiber. Der erste Modus/Treiber (g0 - TV, 256x192, 4 aus 64 Farben pro Tile, graphics-Engine) kann schon teilweise von Regnatix genutzt werden. Die Geschwindigkeit über den Bus ist mit 2000 Linien/Sekunde ganz annehmbar. Es können zwei Modis eingestellt werden:

Statisch - Zeichenbefehle werden direkt im dargestellten Screen ausgeführt. Interessant für nicht bewegt Grafik wie Diagramme.

Dynamisch - Zeichenbefehle werden in einem speziellen Zeichenscreen ausgeführt, welcher dann superschnell per gr_copy-Befehl in den Anzeigescreen übertragen wird. Interessant für flickerfreie Animationen und Games.

Momentan verzweifle ich ein wenig an der Übertragung von Daten durch Regnatix in einen speziellen Puffer in Bellatrix, welcher dann Vectorsprites usw. enthalten soll, die das Graphics-Objekt lokal in Bella braucht. Naja, den Knoten bekomme ich auch noch aus dem Hirn... :)

Ansonsten natürlich das alte Problem - der knappe Speicher: Die beiden Screens benötigen allein 24 KB. Dazu noch der Code der Objekte Graphics, TV und Keyboard. Nicht zu vergessen natürlich die Bus-Engine, um die Funktionen für Regnatix nutzbar zu machen. Als Puffer verwende ich schon den DAT-Bereich mit der PASM-Routine von Graphics - den Code benötigt man ja nur zum starten der Cog, dann kann er überschrieben werden mit Daten die von Regnatix kommen. Jedesmal wenn die Meldung vom Compiler kommt, das 1..x Long(s) fehlen gehe ich auf die Suche, wo noch etwas zu optimieren ist. Stop-Routinen der Objekte? Brauchen wir nicht, die Dinger werden nur gestartet, also weg damit, samt cog-Variable usw. :twisted:

Update: Hey, ich hab den Fehler gefunden! :D Ich hab es gerade getestet: Der Treiber kann von Regnatix ausgehend 1500 Vektorsprites pro Sekunde zeichnen. Bei dem Testsprite handelt es sich um den secheckigen Stern, welchen ich auch schon bei einigen Demos aus der Toolbox 1 verwendet habe, also insgesamt bestehend aus 12 Linien. Zudem kann das Vectorsprite stufenlos gedreht und skaliert werden.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Antworten