VGA Graphik mittels AssemblerWichtig! Bitte vor dem Herunterladen lesen! Wichtig! Bitte vor dem Herunterladen lesen und abspeichern!
Um die Beispiele besser zu verstehen und zum eigenen Programmieren, möchte ich an der Stelle mal auf
Ralf Brown's Interrupt List verweisen,
die praktisch ein Standartwerk zum Thema Interrupts darstellt.
Wer allerdings noch ganz am Anfang steht sollte vielleich zunächst einmal
Markus Romings Webseite (PDF) besuchen. Graphikprogrammierung - Memory mapped IOAnmerkung: aus Kompatibilitätsgründen verwenden alle Graphicbeispiele den 640 x 480 VGA Modus, da dieser von allen handelsüblichen PC unterstützt wird.Bitmap Dateien laden und darstellenMindestens genauso oft wie Bilder berechnet und dargestellt werden, soll der Inhalt bestehender Bilddateien dargestellt werden.
Testen wir das am Beispiel von Bitmap Dateien, Bitmaps sind Palettenbasierte Rastergraphiken, das Format wurde mit Windows 3 vorgestellt.
Das Beispiel lädt eine Schwarzweißgraphik mit bis zu 640x480 Pixeln, analysiert die wichtigsten Bilddaten, und gibt
das Bild auf dem Monitor aus. Beispielbitmaps sind in der ZIP enthalten. Winkelfunktionen IIIaus verschiedenen Gründen ist es nicht allzu zweckmäßig zur Graphikberechnung den Coprozessor zu verwenden,
die Alternative wird in diesem Beispiel präsentiert: Ermittlung der Werte durch einen LookUp Table (Wertetabelle).
Um dem Beispiel etwas Dynamik zu verleihen, kann man die Phasenverschiebung simulieren, was auch verdeutlicht, warum man nur eine
Tabelle für Sinus und Cosinus benötigt. Ein Programm zur Erzeugung der Wertetabellen gibt es auf meiner Assembler 16 Bit Seite. 640 x 480 in Farbe!Hier gehts sehr hardwarenah zur Sache! Um im 640 x 480 Modus Farben benutzen zu können, würde man ggf. zuerst eine Farbtabelle (Palette) ins RAMDAC laden, dann kann man innerhalb des Graphicrams auf diese Einträge zugreifen, der ganze Mechanismus ist nicht! trivial und ist durch die VGA Standart Spezifikation vorgegeben. Wer selbst Farbgraphik im 640x480 Modus (oder mehr) erstellen möchte braucht daher eine Hardwaredokumentation, bzw. mindestens eine vollständige VGA Standart Dokumentation. Geraden beliebiger WinkelWeiter unten habe ich ja schon in dem 'Analoguhrbeispiel' vorgestellt wie man nicht nur senkrechte oder waagerechte Linien
zeichnet, sondern auch schräge Linien. Winkelfunktionen IILange Rede, kurzer Sinn: das 'Mopped' da unten lief mir doch noch was zu unrund also hab ich da noch
ein wenig optimiert, und das man besser sieht worums geht (flüssiger Bildaufbau) habe ich statt des
veränderbaren Rasters, jetzt die Amplitude der Kurve steuerbar gemacht. WinkelfunktionenAlle untenstehenden Beispiele hatten bisher einen Nachteil: statt des unmittelbaren Zugriffs auf das Videoram, wurde der
relativ langsame BIOS/Videointerrupt 010h benutzt. Graphikprogrammierung - BIOS Interrupt 010hAnaloguhrDie unten vorgestellten Verfahren ermöglichen es Polarkoordinaten in kartesische Koordinaten umzurechnen.
Also ist es damit möglich die Skalenstriche und Zeiger einer Analoguhr zu berechnen und darzustellen. Die umrechnung von
Zeit in Winkelschritte erfordert an einigen Stellen trickreiche Korrekturen, das alles ist in diesem Beispiel enthalten.
In der ZIP Datei sind zusätzlich noch Beispiele für Rad, Scheibe und gefüllter Kreis. Sinus und CosinusHier wird der Coprozessor benutzt um die Werte der Sinusfunktion zu berechnen, diese werden dann grafisch dargestellt. Zu dem Zweck wird wieder der Videointerrupt 010h verwendet. BildschärfeEbenfalls ein einfaches Testbildmuster, ich habe in dem Quelltext ganz auf Includes, Macros, Prozeduren und Stapeloperationen verzichtet, und bedingte und unbedingte Sprünge weitesgehendst optimiert, Fazit: weniger ist manchmal mehr. Gitter und KreisEin Testbildmuster (Gitter und Kreis) wird erzeugt, zur Darstellung wird der Grafikinterrupt 010h benutzt, zur Berechnung des Kreises der Coprozessor. Das Assembler Beispiel Farbalken neuDas Beispiel zeigt 8 Farbbalken wie beim Testbild. Zur Erzeugung wird der Graphik Interrupt 010h benutzt. Das Assembler Beispiel Farbalken altDas Beispiel benutzt den Textmodus Video Mode 3. |
|
neue Stats: |
Sir Shylock
53783 Eitorf E-Mail: webmaster |
alte Stats: |