La gran mayoría de los ejemplos que hemos visto para Turbo Pascal deberían funcionar sin cambios en FPK Pascal y en TMT Pascal, pero estos no necesitan que los ficheros BGI estén en un cierto directorio, y nos permitirán acceder a modos gráficos con más puntos en pantalla y más colores, propios de tarjetas gráficas más avanzadas (siguiendo el estándar VESA).
Por ejemplo, el primer programa gráfico que hemos creado se podría reescribir para Tmt con ligeras modificaciones, así:
{--------------------------}
{ Ejemplo en Pascal: }
{ }
{ Primer ejemplo de }
{ graficos en TMT }
{ GRAF1T.PAS }
{ }
{ Este fuente procede de }
{ CUPAS, curso de Pascal }
{ por Nacho Cabanes }
{ }
{ Comprobado con: }
{ - TMT Pascal 3.30 }
{--------------------------}
program PrimerGrafico;
uses Graph; { Usaremos la libreria grafica de TMT }
begin
SetGraphMode($101); { Inicializamos: modo 640x480, 256c }
Line(0, 0, 320, 240); { Dibujamos una linea }
Readln; { Esperamos }
CloseGraph { Y se acabo }
end.
Aquí hemos cambiado la orden “InitGraph” por la que se recomienda en TMT, que es “SetGraphMode”, y que sólo espera el número de modo gráfico que nos interesa (insisto, no necesitamos indicar ningún directorio donde buscar los drivers). Los números de modos gráficos, definidos en el estándar VESA, pueden ser, por ejemplo:
100h 640x400x256
101h 640x480x256
102h 800x600x16
103h 800x600x256
104h 1024x768x16
105h 1024x768x256
106h 1280x1024x16
107h 1280x1024x256
para tarjetas que sigan el estandar VESA 1.0, y si siguen el estandar VESA 1.2, hay todavía más modos disponibles, con mayor número de colores:
10Dh 320x200x32K
10Eh 320x200x64K
10Fh 320x200x16M
110h 640x480x32K
111h 640x480x64K
112h 640x480x16M
113h 800x600x32K
114h 800x600x64K
115h 800x600x16M
116h 1024x768x32K
117h 1024x768x64K
118h 1024x768x16M
119h 1280x1024x32K
11Ah 1280x1024x64K
11Bh 1280x1024x16M
Podríamos crearnos nosotros muestras constantes si nos interesa, con algo parecido a:
const
VESA640x400x256 = $100;
VESA640x480x256 = $101;
(...)
En FPK Pascal sí se usa la misma orden InitGraph, pero la lista de drivers y de modos es bastante distinta: los “drivers” se referirán al número de colores que deseamos, y el “modo” se referirá a la resolución (número) de puntos en pantalla. Tenemos definidas las siguientes constantes (tomado directamente de la documentación de FPK):
-- “Drivers” de pantalla:
D1bit = 11;
D2bit = 12;
D4bit = 13;
D6bit = 14; { 64 colors Half-brite mode - Amiga }
D8bit = 15;
D12bit = 16; { 4096 color modes HAM mode - Amiga }
D15bit = 17;
D16bit = 18;
D24bit = 19; { not yet supported }
D32bit = 20; { not yet supported }
D64bit = 21; { not yet supported }
-- “Modos” de pantalla:
detectMode = 30000;
m320x200 = 30001;
m320x256 = 30002; { amiga resolution (PAL) }
m320x400 = 30003; { amiga/atari resolution }
m512x384 = 30004; { mac resolution }
m640x200 = 30005; { vga resolution }
m640x256 = 30006; { amiga resolution (PAL) }
m640x350 = 30007; { vga resolution }
m640x400 = 30008;
m640x480 = 30009;
m800x600 = 30010;
m832x624 = 30011; { mac resolution }
m1024x768 = 30012;
m1280x1024 = 30013;
m1600x1200 = 30014;
m2048x1536 = 30015;
De modo que para entrar al modo de 640x480 con 256 colores haríamos:
driver : = D8bit;
modo : = m640x480;
initgraph ( driver, modo, ’’);