Instalar SVGAlib “Librería gráfica para C” (GNU/Linux)
June 22nd, 2007 by BusindreSVGAlib es una librería gráfica de bajo nivel open source que corre sobre GNU/Linux y otros Unix como FreeBSD, permite que los programas cambien el modo de vídeo y forma de mostrar los gráficos en pantalla completa. Algunos juegos populares como Quake y Doom la utilizan, esta librería aporta al lenguaje de programación “C” la posibilidad de usar gráficos, cosa que natívamente no puede ya que C solo muestra texto y de usar gráficos, es siempre mediante el uso de otras aplicaciones que posibilitan esa función. El servidor X-Windows (XFree86 / Xorg) no tiene nada que ver con sgvalib como veremos.
Una gran diferencia es que SVGAlib no es multiplataforma, solo funciona en GNU/Linux y FreeBSD, mientras que X-windows si lo es (Funcional en todos los sistemas Unix). No tiene nada que ver una cosa con la otra y no se deben confundir conceptos. Otra diferencia es que el servidor X-windows debe ser iniciado previamente para usar cualquier aplicación que requiera X, es el que se encarga de dibujar en pantalla lo que le dicen los “Windows-Manager” (Gestores de ventana) y Desktops.
SVGAlib no se ejecuta como X Windows, es simplemente una biblioteca binaria de C solicitada por aplicaciones escritas en ese lenguaje, de la misma forma que las demás bibliotecas de nuestro GNU/Linux (/lib y /usr/lib). El consumo de recursos comparado con el servidor X-Windows es mucho menor y de eso se aprovechan algunos emuladores de juegos antiguos. También SVGAlib nos permite tener varias pantallas gráficas en cada interfaz virtual (Ctrl +alt+ F1,F2,F3,..) aunque con X-windows también podríamos realizando algún apaño no muy complejo.
Un ejemplo del uso de esta librería es Squake, el cual era muy rápido y usaba Svgalib, también hay emuladores que hacen uso de esta librería para potenciar el rendimiento de los juegos. El popular emulador “Snes9x” por ejemplo, incluye una versión de X Window (snes9x) y otra de Svgalib, la cual es extremadamente más rápida. Podemos encontrarla instalada en casi todas las distribuciones pero por ejemplo puede que no encontremos su fichero de configuración y que no nos funcione correctamente con nuestro ratón o teclado, podemos necesitar por cualquier causa instalarlo de nuevo y veremos como se hace y con que podemos encontrarnos.
Problemas que podemos encontrarnos al compilar SVGAlib:
1) Error debido a que se debe usar un compilador más moderno
/home/busi/svgalib-1.4.3/src/vga.c:3919:31: pegar “.” y “HDisplay” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:3920:33: pegar “.” y “HSyncStart” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:3921:31: pegar “.” y “HSyncEnd” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:3922:29: pegar “.” y “HTotal” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:3923:31: pegar “.” y “VDisplay” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:3924:33: pegar “.” y “VSyncStart” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:3925:31: pegar “.” y “VSyncEnd” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:3926:29: pegar “.” y “VTotal” no da un elemento válido de preprocesamiento
/home/busi/svgalib-1.4.3/src/vga.c:318: aviso: `release_acquire’ defined but not used
make[1]: *** [vga.o] Error 1
make[1]: Leaving directory `/home/busi/svgalib-1.4.3/sharedlib’
make: *** [sharedlib/libvga.so.1.4.3] Error 2
2) Con la última versión en desarrollo también podemos tener algún problema:
main.c:617: error: `SVGALIB_HELPER_MAJOR’ undeclared (first use in this function)
main.c:617: error: (Each undeclared identifier is reported only once
main.c:617: error: for each function it appears in.)
main.c: En la función `cleanup_module’:
main.c:762: error: `SVGALIB_HELPER_MAJOR’ undeclared (first use in this function)
make[3]: *** [main.o] Error 1
make[3]: Leaving directory `/home/busi/svgalib-1.9.25/kernel/svgalib_helper’
make[2]: *** [_mod_/home/busi/svgalib-1.9.25/kernel/svgalib_helper] Error 2
make[2]: Leaving directory `/usr/src/linux-2.4.31′
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/busi/svgalib-1.9.25/kernel/svgalib_helper’
make: *** [installmodule] Error 2
Se recomienda instalar la versión 1.9.23, Vamos a ver como se compila:
$ wget http://www.arava.co.il/matan/svgalib/svgalib-1.9.23.tar.gz
$ tar -zxvf svgalib-1.9.23.tar.gz
$ cd svgalib-1.9.23
Editamos el fichero Makefile.cfg:
prefix = $(TOPDIR)/usr/local
Lo cambiamos por /usr (Si nos interesa, depende de la distro usada)
prefix = $(TOPDIR)/usr/
Y por último compilar / instalar
# make install
Para compilar las demos (Útil):
$ make demoprogs
Contenido de lo instalado:
* dumpreg: Vuelca el estado de la tarjeta de acuerdo a como lo ve el controlador de chipset de svgalib.
* mode3: Establece un modo VESA.
* restorefont: Guarda o restaura la fuente SVGA para el modo texto.
* restorepalette: Establece la paleta de colores para el modo texto.
* restoretextmode: Guarda o restaura los registros SVGA para el modo texto.
* savetextmode y textmode: Guardan o restauran el estado SVGA completo para el modo texto.
* svgakeymap: Genera mapas de teclado para svgalib.
Demos (2D) para probar y testear la configuración de la librería (svgalib-1.9.23/demos/):
vgatest
keytest
mousetest
eventtest
forktest
bg_test
scrolltest
speedtest
fun
spin
testlinear
lineart
testgl
accel
testaccel
plane
wrapdemo
Demos (3D) (svgalib-1.9.23/threeDKit):
plane (Avión tridimensional)
wrapdemo (Esfera con Imagen en su interior)
* Teclas de uso en los test 3D:
Q -> Girar izquierda
A -> Girar derecha
W -> Alejar
S -> Acercar
Z ->Arriba
X -> Abajo
C -> Termina el proceso
Configurar SVGAlib:
Editando /etc/vga/libvga.config podremos configurar al estilo de xrog nuestro raton, Hz del monitor y demás opciones. Para Ratones suele funcionar “mouse IMPS2″ o bien “mouse PS2″, para el refresco de pantalla tenemos: “HorizSync” y “VertRefresh”.La opción “kbd_keymap” para nuestro teclado (map.gz ,keymap.gz). Como vemos muy parecido al archivo de configuración de las X. Para probar el correcto funcionamiento de nuestra configuración podemos hacer uso (Como root) de la demo “mousetest”, la cual nos permitirá probar si las opciones que escogimos son las correctas para nuestro hardware.
Avisos que nos puede dar la librería:
Problema:
# ./vgatest
You must be the owner of the current console to use svgalib.
Not running in a graphics capable console, and unable to find one.
Using nvidia driver, 131072KB, Type: GeForce (NV 32).
svgalib 1.9.23
Solución: Se debe ejecutar en una consola
NOTA: El pleno uso de Vgatest se debe usar como root o suid, si por ejemplo queremos hacer uso del ratón es obligatorio ejecutar las aplicaciones como administrador.
Juegos de prueba Míticos (vga_connectN, vga_mines,vga_othello):
$ wget ftp://ftp.padua.org/pub/linux/Mirrors/sunsite.unc.edu/games/strategy/vga_gamespack-1.4.tgz
$ tar -zxvf vga_gamespack-1.4.tgz
$ make
# make install
Problema 1:
# make install
install -o root -m 4711 -s vga_connectN /usr/games
install -o root -m 4711 -s vga_othello /usr/games
install -o root -m 4711 -s vga_mines /usr/games
install -m 444 Vga16font8×16 /usr/games/lib
install: no se puede efectuar `stat’ sobre «/usr/games/lib»: No es un directorio
make: *** [install] Error 1
Solución 1:
# rm -r /usr/games && mkdir /usr/games && mkdir /usr/games/lib
# make install
./Juego (vga_connectN, vga_mines,vga_othello)
NOTA: Muchos juegos de este tipo (Antiguos) pueden no funcionar ya que piden más cosas a parte de las svgalib, cosas que son antidiluvianas y actualmente no se usan.
Problema 2:
# ./vgatest
svgalib: Cannot open /dev/svga
Is svgalib_helper module loaded?
Solución 2:
# insmod svgalib_helper
Using /lib/modules/2.4.31Busi/kernel/misc/svgalib_helper.o
Problema y Solución con el teclado:
Localizamos nuestro mapa de teclado y lo cargamos de la siguiente forma:
Editamos /usr/bin/svgakeymap modificando:
$ktd = “/usr/lib/kbd/keytables/”;
En mi caso el fichero que contiene el mapa del teclado -> /usr/share/kbd/keymaps/i386/qwerty/es.map.gz
$ktd = “/usr/share/kbd/keymaps/i386/qwerty/”;
Ejecutamos para cargarlo:
$ svgakeymap es
Posted in Noticias Windows |