A mediados de los 90, empezaron a popularizarse en juegos comerciales, y demos, las tipografías degradadas. A principios de 1991, yo ya lo había implementado. Vi diferentes variantes desde las bitono, con la mitad superior de cada letra de un color, y la mitad inferior de otro color, que era requerido en CGA, EGA y VGA con 16 colores o menos, y la variante que degradaba verticalmente todos los píxeles.
Las diferencias, aparte de los años de antelación son que yo lo hice con QuickBASIC 4.5, de manera que aunque funcionaba, distaba mucho de ser eficiente, y en un PC/XT de la época se podía imprimir una pantalla de texto a resolución MCGA/VGA 320×200 con 256 colores en aproximadamente 1 segundo.
Casualmente he encontrado en un disco de 3,5 pulgadas la implementación en cuestión, que en este caso databa de 1992, recuerdo que la versión inicial usaba POKE/PEEK para los accesos directos a memoria, que sorprendentemente eran más lentos que las funciones de QB.
La versión que publico a continuación, está refactorizada levemente, y compilada con Visual Basic 1.0 para DOS. El ejecutable original eran 28 KB., mientras que éste son 34 KB. descomprimido, y está compilado para procesadores 8088/8086 o superiores.
20 años después, resulta curioso ver lo sencillo de la idea, y la simplicidad de la implementación.
DECLARE SUB Main ()
DECLARE SUB Letras (piL%, piC%, psTexto$, piColor%)
Main
SUB Letras (piL%, piC%, psTexto$, piColor%)
iTextoLen% = LEN(psTexto$)
iCurX% = (piC% - 1) * 8
LOCATE piL%, piC%
COLOR 15
FOR iTexto% = 1 TO iTextoLen%
PRINT MID$(psTexto$, iTexto%, 1);
FOR iX% = 0 TO 7
iCurY% = (piL% - 1) * 8
FOR iY% = 0 TO 7
IF POINT(iCurX%, iCurY%) <> 0 THEN
PSET (iCurX%, iCurY%), piColor% + iY%
END IF
iCurY% = iCurY% + 1
NEXT
iCurX% = iCurX% + 1
NEXT
NEXT
END SUB
SUB Main ()
SCREEN 13
Letras 9, 12, "Letras degradadas", 50
Letras 11, 3, "Basado en un c¢digo original de 1991", 50
Letras 12, 6, "inicialmente en QuickBASIC 4.5.", 50
Letras 13, 2, "En 2012 compilado con VisualBASIC 1.0", 50
Letras 14, 11, "y con algunos cambios.", 50
Letras 16, 9, "https://www.javiergutierrezchamorro.com", 50
SLEEP 0
SCREEN 0
WIDTH 80
END SUB
Puedes descargar el paquete con los fuentes y el binario aquí (24 Kb. en formato ZIP).
Mi proyecto de fin de curso en la asignatura de Programación fue una librería para QB (se podía utilizar tanto en QuickBasic 4.5 como en QBasic) escrita en ensamblador para utilizar el Modo X de las tarjetas gráficas.
Estoy hablando del año 1996 y aunque contaba con un libro que contaba muchas técnicas, la verdad es que me las tuve que ingeniar para encontrar información sobre el enlace asm/QB… al final hubo muchas cosas que tuve que descubrir a base de ensayo/error porque aunque contaba con las lineas generales de un par de libros, éstos no te contaban cómo QB almacenaba en memoria los distintos tipos de datos y eso es lo que más me costó averiguar en aquellos años en los que internet era algo que brillaba por su ausencia.
Qué tiempos ;D
Es verdad Fernando, en que por aquellos tiempos, teníamos que buscarnos la vida para intuir, ensayar, e imaginar como debía funcionar algo, porque la documentación de la que disponíamos era terriblemente limitada y escasa, ¡pero eso lo hacía mucho más divertido!
En tu caso, me hago a la idea perfectamente de ello, sobretodo con las particularidades del modo X, en lo que implicaba la inicialización, y el acceso a cada uno de los componentes de los planos para cada píxel.
wow, que interesante, me recuerda a los juegos de nintendo jejejej
Jeje, para que luego digan que BASIC no daba de si Manuel.
claro que da de si, hace años un primo (cuando era niño) tenía una laptop para niños y traía basic para programarla, hice un pequeño programa que saludaba al iniciar, jejej, vaya tiempos, obvio no sabía casi nada de basic.