Zum Navigations-Menü
Kein Layout? Lesen Sie hier, warum...

Turbo Pascal

Grafikmodus Mode 13h


Webplain.de » Turbo Pascal » Grafikmodus Mode 13h

Der Grafikmodus 13h erlaubt gegenüber den fertigen BGI-Routinen eine flexiblere Kontrolle und eine höhere Geschwindigkeit, was vor allem für die Grafikprogrammierung in Spielen von Vorteil ist.
Bevor wir mit dem Initialisieren dieses Modus anfangen, zuerst ein paar Grundlagen:

Speichernutzung

Alle Grafikkarten nutzen den Arbeitsspeicher des Computers, um dort eine kodierte Version des Monitorbildes zu speichern. Um die Grafikkarte zu steuern, muss man die Organisation dieser Speicherung verstehen. Der Mode 13h verwendet als einziger Grafikmodus eine lineare Organisation. Jedes Byte des Grafikspeichers enthält die Informationen über ein Pixel. Jedes Byte ist also einer bestimmten Speicheradresse im Adressraum des Arbeitsspeichers zugeordnet. Alle Pixel werden nacheinander von links oben nach rechts unten gespeichert. Der Wert jedes Bytes gibt die Farbe des Pixels an.
Im Mode 13h (MCGA) beträgt die Auflösung 320x200 Pixel, der Bildschirm ist also 320 Pixel breit und 200 Pixel hoch. Der Bildschirmspeicher beginnt an Speicheradresse A000:0000, ist 64.000 Bytes groß (320x200) und endet daher bei A000:F9FF. Das Byte, das zum Pixel an den Koordinaten (0,0) gehört, hat das Offset 0, das Pixel (1,0) (Spalte 1, Zeile 0) ist an Offset 1 gespeichert, Pixel (2,0) an Offset 2 usw. bis zu Pixel (319,0) an Offset 319. Die nächste Zeile beginnt mit Pixel (0,1) an Offset 320 usw. Um das Offset eines Pixels herauszufinden, deren Spalte und Zeile man kennt, kann man folgende Formel verwenden:

Offset = Zeile * 320 + Spalte

Wie schon erwähnt, wird jedes Pixel in einem Byte gespeichert (8 Bit), daher kann ein Pixel 256 (2^8) Werte (Farben) annehmen.

Initialisierung

Zum Initialisieren des MCGA-Grafikmodus bedienen wir uns einer BIOS-Funktion (INT 10h, Service 0). Das ist am einfachsten, aber auch sehr langsam. Da diese Initialisierung aber in der Regel immer nur wenige Male in einem Programm stattfinden muss (z. B. beim Start), ist der Geschwindigkeitsnachteil zu vernachlässigen. In Pascal benutzen wir den Inline-Assembler, um diese BIOS-Funktion mit den richtigen Parametern aufzurufen:

procedure initgraph;
assembler;
asm
  mov ax,0013h
  int 10h
end;

Für die Rückkehr in den Textmodus rufen wir den Mode 3h auf:

procedure closegraph;
assembler;
asm
  mov ax,0003h
  int 10h
end;

Solange es hier noch nicht weitergeht, ein paar Downloads:
Michael Abrashs Graphics Programming Black Book als kostenloser pdf-Download (153 MB)
http://public.planetmirror.com/pub/gpbb/
Tutorial-Reihe über Grafik-Programmierung in C/Pascal/Assembler von Snowman, Denthor u.a. (703 KB)
ftp://ftp.hornet.org/pub/demos/code/tutors/denthor/
Graphics Programming using Assembly von Ron Thomas (684 KB)
http://www.ronthomas.plus.com/Downloads.html


Webplain.de » Turbo Pascal » Grafikmodus Mode 13h

Nach oben
© 2000-2010 Clemens Weiß | Webplain.de
Link zu dieser Seite | Letzte Änderung: 26. Okt. 2008