Hay una página con una faq muy completa sobre las 3dfx en
www.voodooextreme.com/3Fingers.
Tambien hay un programa llamado GlideControl
disponible en
http://www.ling.ed.ac.uk/~oliphant/gc muy útil para configurar los
parámetros de las 3dfx.
Los problemas más comunes suelen ser:
/dev/3dfx
y mediante la inserción de un módulo en el
kernel (3dfx
) permite que los usuarios puedan acceder a la tarjeta
aceleradora. Asegurese si lo instala de que los permisos de /dev/3dfx
están correctamente puestos ( ejecute chmod 666 /dev/3dfx
). Este
paquete se puede encontrar en
http://glide.xxedgexx.com/3DfxRPMS.html./usr/i486-linux-libc5/lib
), sin embargo el paquete de la
voodoo 1 no las trae, con lo que puede que tenga que bajarse la versión para
libc5, extraer las librerías (si está en rpm con el mc
es muy sencillo
hacerlo, sino tendrá que usar el rpm2cpio
o el rpmget
ya que si lo
instala directamente con el rpm
sobrescribirá las de la versión para
glibc) e instalarlas (en /usr/i486-linux-libc5/lib
). Además asegurese
de que en el fichero /etc/ld.so.conf
aparece el directorio
/usr/i486-linux-libc5/lib
y de que tiene instalado el paquete de
compatibilidad con la libc5 (libc-5.3.X-Y en redhat).
¡asegurese si se baja este paquete de que lo está cogiendo de una versión de
RedHat 5.X o del directorio /libc6 en caso de que lo esté cogiendo del contrib
de RedHat, sino le sobreescribirá las antiguas librerías y no funcionará el
sistema!
Otra posible causa de error es que falte alguna librería en la ruta de
búsqueda del ejecutable, esto se puede comprobar mediante el comando ldd
fichero
. Si por ejemplo al hacer ldd glquake
le sale alguna librería
seguida de la linea Not Found ahí estará el problema, asegurese de que
tiene esa librería instalada y que el directorio en el que está dicha librería
aparece en el fichero /etc/ld.so.conf
, si no lo está añada el
directorio y ejecute luego como root ldconfig
.
glquake: can't resolve symbol
'__register_frame_info'
. El glquake necesita las MesaGL-2.6
, si no las
tenía (vienen con el ejecutable del quake2) consulte la dirección de las
librerias en
Software, instalelas y ejecute ldconfig.
SST_GAMMA
en una
voodoo 1 y SSTV2_GAMMA
en las voodoo 2, por ejemplo poniendo :
[unscared][~]$ export SSTV2_GAMMA=1.70
Otra opción es bajarse el programa GlideControl
mencionado anteriormente
con el que puede cambiar la gamma de la tarjeta además de otros
parámetros.
lib3dfxgl.so
). Para usarlo creese un fichero llamado glquake.3dfxgl y
meta en él lo siguiente:
#!/bin/sh
LD_PRELOAD=./lib3dfxgl.so ./glquake $*
Para el quake world puede usar el glqwcl.3dfxgl
que viene con el
glqwcl
y en el quake2 puede especificar el miniport en las opciones de
video.
Otra opción es asegurarse de que la libMesaGL.so.2
es un enlace a la
libMesaGL.so.3
. La versión 3 está bastante más optimizada que la 2.6 y el
rendimiento aumenta bastante, el problema es que el glquake necesita la
versión 2.6. Una solución chapucera es hacer lo siguiente; lo primero
vemos donde están las librerías y los ejecutables:
[root@unsCAred][/usr/local/games/quake2]# ls -la libMesaGL.so*
lrwxrwxrwx 1 root root 14 ene 18 19:30 libMesaGL.so -> libMesaGL.so.2
lrwxrwxrwx 1 root root 16 ene 18 19:30 libMesaGL.so.2 -> libMesaGL.so.2.6
-rwxr-xr-x 1 root root 897135 dic 26 14:43 libMesaGL.so.2.6
[root@unsCAred][~]# ls -la /usr/lib/libMesaGL.so.2
lrwxrwxrwx 1 root root 12 ene 13 20:01 /usr/lib/libMesaGL.so.2 -> libMesaGL.so
[root@unsCAred][~]# ls /usr/local/games/quake/glquake*
/usr/local/games/quake/glquake /usr/local/games/quake/glquake.mesa
/usr/local/games/quake/glquake.3dfxgl
ahora hacemos un script que borre el enlace de la libMesaGl.so.2,que añada en
el path
de búsqueda el directorio /usr/local/games/quake2, que ejecute el
glquake y que deje todo como estaba.
Para usar las MesaGL:
[root@unsCAred][~]# cat /usr/local/games/quake/glquake.mesa
#!/bin/sh
# Movemos la libreria para que no la carge:
mv /usr/lib/libMesaGL.so.2 /usr/lib/libMesaGL.so.2.tmp
# Añadimos el directorio del quake2 a la ruta de búsqueda
LD_LIBRARY_PATH_OLD = $LD_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/games/quake2
# Ejecutamos el glquake
./glquake $*
# Dejamos todo como estaba.
mv /usr/lib/libMesaGL.so.2.tmp /usr/lib/libMesaGL.so.2
LD_LIBRARY_PATH= $LS_LIBRARY_PATH_OLD
Para el miniport de 3dfx:
[root@unsCAred][~]# cat /usr/local/games/quake/glquake.3dfxgl
#!/bin/sh
# This script preloads the lib3dfxgl.so library which overrides the functions
# present in libMesaGL.so. This allows glquake to run using 3DFX's miniport
# and without Mesa 3-D. Glide and X11 libraries have to be installed tho,
# even tho GLQuake doesn't use X11, it's linked against it because Mesa 3-D
# requires them.
mv /usr/lib/libMesaGL.so.2 /usr/lib/libMesaGL.so.2.tmp
LD_LIBRARY_PATH_OLD= $LS_LIBRARY_PATH
LD_LIBRARY_PATH=/usr/local/games/quake2
LD_PRELOAD=./lib3dfxgl.so ./glquake $*
mv /usr/lib/libMesaGL.so.2.tmp /usr/lib/libMesaGL.so.2
LD_LIBRARY_PATH= $LS_LIBRARY_PATH_OLD
El problema de hacer esto es que el script se tiene que ejecutar como root.
Una opción para hacer lo mismo pero sin necesidad de ser root es eliminar la
libMesaGL.so.2
de la ruta de búsqueda del ldconfig y ponerla en otro
directorio (por ejemplo en /usr/local/lib/MesaGL
). Para que nos
funcionen los programas que necesitan las Mesa lo único que tenemos que hacer
es añadir la linea export LD_LIBRARY_PATH=/usr/local/lib/MesaGL
en
el fichero ~/.bashrc
si usamos el bash como shell o la linea
setenv LD_LIBRARY_PATH /usr/local/lib/MesaGL
en el .cshrc/.tcsh si
usamos csh/tcsh. Haciendo esto tendríamos lo siguiente:
[root@unsCAred][~]# cd /usr/local/lib/MesaGL/
[root@unsCAred][/usr/local/lib/MesaGL]# ls -la libMesaGL.so.2
lrwxrwxrwx 1 root root 23 ene 22 21:19 libMesaGL.so.2 -> /usr/lib/libMesaGL.so.3
Ahora ya podemos eliminar las lineas que llevan un mv de los scripts
glquake.mesa
y glquake.3dfx
con lo que ya no es necesario ser
root para que funcione.
3dfx
y el gpm
no se llevan bien
, en el README viene bastante claro que para que funcione el ratón con las
tarjetas aceleradoras hay que matár el gpm antes. Para hacerlo solo que
ejecutar un killall gpm
como root (o un gpm -k
>. Tambien se puede
hacer mediante la orden /etc/rc.d/init.d/gpm stop
y reiniciarlo con
/etc/rc.d/inid.d/gpm start
(esto para redhat, en otras distribuciones
puede variar ligeramente el directorio stat.d
); Este sistema es el más
recomendable.