Schlagwort-Archive: Grafikprogrammierung

Anatomy of a Bird

Kaum ein System, auf das es der muntere Vogel mit dem nervösen Feuerknopf nicht geschafft hätte. Ich erspare dem geneigten Leser die Einzelheiten. Aber, wie funktioniert es, das Spiel, technisch?

Das Spielfeld scrollt endlos von links nach rechts. Nun ist das Spielfeld nichts anderes als das, was der jeweilige Rechner vom RAM auf dem Bildschirm anzeigt und das ist mit Sicherheit nicht endlos.

Also, ich nehme einmal an, es wird eine endlich Anzahl Spielebildschirme gescrollt und irgendwann, ohne das es der Spieler merkt, wird ein neues Spielfeld gezeichnet und das ganze beginnt vorn vorne.

Selber machen ist das Gebot der Stunde. In Assembler auf dem Atari 8- bit. Nachstehend, kurz skizziert, wie der Antic der Atari Rechner das Anzeigegerät verwaltet, wenn er davon ausgehend muss, dass der Programmierer jetzt von ihm wünscht, dass er horizontal fein- scrollen soll. Ein Custom Chip erster Güte und Stunde, der seinesgleichen unter zeitgenössischen 8- Bit Rechnern sucht.

 

Floppy Screen Ram and Fine Scroll

 

To be continued…………

 

 


NeoCrome –> Atari 8- Bit

Die Tatsache das hier ein Atari Grafik- Format in das andere konvertiert wird (ein Demake von 16- nach 8- Bit) nehme ich mal als Rechtfertigung dafür, dass ich hier darüber schreibe. Wir werden sehen das sich das im besten Fall höchstens zu 50% dem hier im Blog behandelten Themenkreis zuordnen lässt.

Das Filmchen zeigt eine Beispiel Sitzung  meines „8- Bit Konverters“. Einen Cocoa Front End App für eine Sammlung C- Funktionen zur Umwandlung des NeoCrome Bildformats (Atari ST) in div. Atari 8- Bit Grafikformate.

Unterstützt werden: GTIA 1 bis 3, Graphics 8 (2 Farben), Graphics 8 (15 Muster), Graphics 15 (4 Farben), Graphics 15 (4 Farben, je Farbe 4 Muster).

Hier wird gezeigt, wie einige NeoCrome Dateien in den Atari 8- Bit Grafikmodus 8 gewandelt werden. Die 16 Farben des Quellformates werden im Zielformat in Muster übersetzt.

Muster in dem Zusammenhang heist: 2 x 2 Pixel im Zielformat repräsentieren 1 Pixel aus dem Quellformat. Die Kombination der jew 2 x 2 großen Pixel Matrix im Zielformat macht die dort – nicht vorhandenen – Farben, unterscheidbar.


Große Display List’s

Ein bisschen was zu dem Thema Antic und dessen Programm, der Display List, habe ich hier im Blog schon beschrieben.

Das Antic Programm, Schnelleinstieg

Aktuell bemühe ich mich eine eigene Display List mit 320 x 192 Bildpunkten zu programmieren die genau so ausschaut wie der Atari Basic Modus 8.

Kleine Komplikation dabei:

  • Die Display List (das Antic Programm) darf eine 1K Grenze nicht überschreiten
  • Der Bildschirmspeicher auf den die Display List zeigt, dar 4K nicht überschreiten

Herausforderung 1 lässt sich meistern, wenn man genau vor der 1K Grenze einfach einen Befehl einsetzt, der auf das erste Byte der Display List nach der 1K Grenze zeigt. Dazu benutz man die JMP Anweisung (JMP dez. 1). Im Gegensatz zur  JVB Anweisung (JVB Dez 65) – die dazu dient das Ende eine Display List zu kennzeichnen und auf den Vertical Blank, also auf den Beginn des neuen Bildes zu warten – tut genau das letzter die JMP Anweisung nicht.

Genau so macht man es mit dem Bildspeicher, wenn der die 4K Grenze erreicht. Man benutzt den LMS (Load Memeory Scan Dez 64) und zeigt auf genau das erste Byte nach der 4K Grenze.

Die Befehle sind alle gleich aufgebaut:

1. LMS/JVB oder JMP = 1 Byte

2. Adress = 2 Bytes

Beim LMS ist noch zu beachten, dass der bereits selbst die jew. erste Zeile des Bildes ist. Beim Basic Modus 2 also:

Anfang 64+2
2
2
2
65,Anfang

Sind 4 Zeilen.

Soviel zur Theorie. Nun, leider ist es mir bis jetzt nicht gelungen eine Display List zu schreiben, die einen 8K Großen Bildschirmspeicher abbildet.


GTIA

Der „Graphics Television Interface Adapter“. Zwischen Bildschirm (HF- Modulator) und dem ANTIC gelegen, bringt die Farbe ins Bild – und das nicht zu knapp!

Neben den üblichen Punkt- und Textgrafikstufen bieten die modernen Vertreter der Atari 8- Bit Homecomputer drei zusätzliche Modi, nämlich die des GTIA.

Alle drei Modi lassen sich in Basic über den „Graphics“ Befehl aufrufen. Modi 9 bis 11. Das funktioniert nicht auf den Atari 400 oder 800 Modellen, ausser, die GTIA wurde da nachgerüstet.

In Maschinensprache, über eine eigene Display List, geht das so: Alle drei Modi entsprechen der (Basic) Grafikstufe 8. Speicherbedarf 8 kB= 62 Sektoren auf Disk. Man erzeugt also besagte Display- List und wählt über das Register GPRIOR 623/ $26f den gewünschten Modus. GTIA 1= 64 // GTIA 2= 128 // GTIA 3=192. Das war es! Farb- und Helligkeitsregister führe ich hier nicht auf, das findet man besser sortiert in der entsprechenden Fachliteratur z.B. da: Atari Profi Buch.

Modus 1: Eine Farbe, 16 Helligkeiten:

Bildschirmfoto 2013-08-25 um 20.27.34

 

 

 

 

 

 

 

 

Modus 2: Neun Farben mit jew. 9 Helligkeiten:

Bildschirmfoto 2013-08-25 um 20.29.37

 

 

 

 

 

 

 

 

Modus 3: 16 Farben und eine Helligkeit:

Bildschirmfoto 2013-08-25 um 20.31.41

 

 

 

 

 

 

 

 

In den drei Beispielen oben, werden nicht jew. alle Farben und Helligkeiten dargestellt. Das liegt daran, dass eine von mir in C geschriebene Konvertierungs- Routine noch nicht richtig funktioniert. Die Bilder wurden mit „Grafx2“ gezeichnet und dann mit besagter C- Routine auf ein Atari Disk Image geschrieben.

Mehr zum Thema Grafikprogrammierung, speziell für die Atari 8- Bit, findet man hier im Blog.

 

 

 

 

 

 

 

 


Graphics 9…

..Ist einer der 3 GTIA Grafik Modi der Atari Computer, genauer, der Atari 8- Bit Computer „neuerer“ Bauart, namentlich der XL Reihe.

Der GTIA Chip sorgt zusammen mit dem ANTIC- Chip dafür das der Atari Grafik so darstellt, wie er es eben tut.

ANTIC, Kurzform für „Alphanumeric Interface Television Controller“
GTIA steht für „Graphic Television Interface Adapter“

Grob gesagt, der ANTIC kümmert sich um die Spielfeld Grafik. Der GTIA kümmert sich um die Farben und die Sprites. Im Atari Jargon: „Player und Missiles“.

Speicherbedarf und Bildaufbau:

Graphics 9 (damit läßt sich auf den XL- Modellen der Grafik- Modus von Basic aus aufrufen) bzw. GTIA Modus 1, ist deshalb so interessant, weil hier eine Farbe in 16 Helligkeitsstufen dargestellt werden kann. Es handelt sich um eine abgewandelte Form des beliebten Modus 8

Ein Bild ist 40 Bytes breit und 200 Zeilen hoch. Wir benötigen 8kB für ein komplettes Bild.

Hier endet die Verwandtschaft! Ein Byte stellt 2 Pixel auf dem Bildschirm dar. Je Halb- Byte stehen 4 Bit zur Verfügung, mit denen sich die bekanntermaßen die Zahlen von jew. 0 bis 15 darstellen lassen. Das bestimmt den Helligkeitswert des jew. Pixels.

Je Zeile lassen sich also 80 Pixel darstellen.

Atari XL, Graphics 9 (Basic) GTIA Modus 1

Atari XL, Graphics 9 (Basic) GTIA Modus 1

Eine Display- List für Graphics 9?

Interessant ist: In der Literatur taucht in keiner der Tabellen zu den verfügbaren ANTIC Befehlen, ein Befehl für die Display- List auf, mit dem sich Zeilen für den GTIA Modus 9 darstellen lassen. Klar das ANTIC Programm kann natürlich nicht bestimmen, was ein andrer Chip – nämlich der GTIA – machen soll. Die GTIA Modi lassen sich durch Setzen der entsprechenden Bits im Register GPRIOR=623($26F) einschalten. Seinen Graphics 9 (GTIA 1) Bildschirm bekommt, wer eine Display- List für Graphics 8 bastelt und dann das Register 623 auf 64 setzt (Bit 7+6 gesetzt).

 

In dem Sinne, viel Spass beim ausprobieren.


Garfikspielereien die II

Beim stöbern endeckt. Interessanter Artikel aus dem ST Magazin.

http://www.stcarchiv.de/stc1986/09_neo2mono.php

De Artikel zeigt, wie ein im Low Res Modus des Atari ST gespeichertes Bild (320 x 200 Bildpunkte. 16 Farben) in den hochauflösenden Modus (640 x 400 Bildpunkte, zwei Farben) konvertiert werden kann. Die Organisation des Bildspeichers wird erklärt.


Grafik Spielereien

Die Grundidee war: Ich suche mir ein Zeichenprogramm für meine Mac mit dem ich schöne Grafiken im 8- Bit Stil zeichnen kann. Erfolg!

Schaut mal da:

Grafx2: http://code.google.com/p/grafx2/

Grafx2 ist an Vorbilder wie Neocrome und Deluxe Paint angelehnt.

Damit lassen sich Bitmap Grafiken in vielen „historischen“ Formaten, unter Anderem auch dem (für mich noch unbekannten) C64 Screenformat(en) speichern.

Also dachte ich mir, mit Grafx2 zeichnen, in C ein Programm geschrieben dass das Ganze auf ein Atari Disk- Image schreibt und im Modus 8 des Atari in den Bildschirmspeicher geladen. Das Ergebnis:

Grafx2

Grafx2

Atari, Grafikmodus 8

Atari, Grafikmodus 8

Das oben gezeigte Bildchen ist aus einem unter Grafx2 im „C64- Screenformat“ (Bitmap und Coler stehen außerdem zur Auswahl) gespeicherten Bildchen – das 1:1 in den Bildschirmspeicher des Atari im Modus 8 eingeladen wurde – entstanden.

Man kann sehen, da steckt noch Arbeit drin. Ich fürchte, ich muss mich eingehender mit der Grafik des C64 beschäftigen damit das Ganze noch funktioniert oder es taucht doch noch ein Plugin für Grafx2 auf, das einige Atari Grafikformate unterstützt.