Copyright
Copyright © José
Luis Lara Carrascal 2006-2024
Sumario
Introducción
Preliminares
Instalación
Configuración
Iniciamos DOSBox
Funciones principales del teclado
Montaje de CD/DVD e imágenes ISO/BIN/CUE
Aplicaciones auxiliares de DOSBox
Enlaces
Introducción
Para aquellos que hemos tenido la suerte de
vivir la época dorada de los videojuegos, en primer lugar, su
nacimiento en las máquinas recreativas y, en segundo
lugar, los
inicios de los primeros videojuegos para consolas y
ordenadores, aplicaciones como DOSBox
nos vuelven a trasladar a un mundo donde la imaginación y el
ingenio de los programadores suplía las
limitaciones que la
tecnología de esa época soportaba. Poder seguir
jugando
en GNU/Linux con
esos míticos juegos de MSDOS
es una auténtica gozada y en este documento vamos a tratar
la
instalación optimizada de esta aplicación desde
cero. Hablaremos
también un poco de las interfaces gráficas que
existen para la misma y, en último lugar, una amplia
información de los enlaces donde podemos obtener estos
maravillosos juegos llamados hoy en día, Abandonware.
Preliminares
1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH
Abrimos una ventana de terminal y ejecutamos el siguiente comando:
[jose@Fedora-18 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin
|
Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
export PATH=/usr/local/bin:$PATH |
Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.
$ su -c "install -m755 variables.sh /etc/profile.d" |
Tenemos que cerrar el emulador de terminal y volverlo a abrir para que
la variable de entorno aplicada sea efectiva. Es conveniente guardar
una copia de este script para posteriores
instalaciones de nuestro sistema, teniendo en cuenta que es el que se
va a utilizar a partir de ahora en todos los manuales de esta web, para
establecer variables de entorno globales, excepto en aquellas que
sólo afectan al usuario, en las que se utilizará el
archivo de configuración personal, ~/.bashrc.
La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.
2) Comprobar que la variable de entorno 'XDG_DATA_DIRS' incluye el directorio /usr/local/share
Esta variable se aplica para que los archivos desktop
ubicados en un directorio específico del sistema puedan ser
leídos por los menús de entornos gráficos
como XFce 4, o
paneles como LXPanel o Fbpanel.
Este aspecto es bastante delicado porque cada distribución es un
mundo y lo mejor que podemos hacer es establecer una variable de
entorno global que incluya todos los directorios predefinidos del
sistema que incluyen archivos desktop, siempre y cuando el directorio /usr/local/share
no esté incluido por defecto en la distribución de turno.
Para saberlo basta abrir el menú de aplicaciones en cualquiera
de los programas antes comentados y comprobar que aparece la entrada
correspondiente a la aplicación tratada en este manual. Si no es
así, en el mismo archivo /etc/profile.d/variables.sh, añadimos lo que está en rojo:
#!/bin/sh
export PATH=/usr/local/bin:$PATH
export XDG_DATA_DIRS=/usr/share:/usr/local/share:$XDG_DATA_DIRS |
3) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr
Aún en el caso de que la versión a compilar la vayamos a
instalar en el mismo directorio que la que proporciona la
distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado DOSBox
para la elaboración de este documento.
* GCC - (14.1.0) o Clang - (18.1.8)
* Gawk - (5.3.0)
* Make - (4.4.1)
* Automake - (1.16.5)
* Autoconf - (2.72)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.13)
LibX11 - (1.8.9)
* ALSA - (1.2.12)
* Libglvnd - (1.7.0)
* Libpng - (1.6.43)
* SDL - (1.2.15)
* SDL_net - (1.2.8)
* SDL_Sound - (1.0.3)
Aplicaciones
* Magick (ImageMagick) - (7.1.1-33) [1]
[1] Requerido para poder crear los iconos del archivo desktop.
Descarga
dosbox-0.74-3.tar.gz | 74-3-events.diff
Optimizaciones
$ export
{C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'
|
Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla: |
Nota informativa sobre las optimizaciones para GCC
|
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado.
* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.
* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
|
Nota informativa sobre las optimizaciones para Clang
|
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.
* Los valores de color azul no son compatibles con Clang.
* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
|
Valores |
CPU |
Genéricos |
generic |
Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune=', si utilizamos GCC. Esta opción está disponible a partir de GCC 4.2. |
native |
Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2. |
x86-64 |
Procesador genérico con extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 1.9. |
x86-64-v2 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v3 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v4 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, AVX512*, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
Intel |
alderlake |
Intel Alderlake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
arrowlake |
Intel Arrow Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
arrowlake-s |
Intel Arrow Lake S con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
atom |
Intel Atom con soporte de
instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones
64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición bonnell. |
bonnell |
Intel Bonnell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
broadwell |
Intel Broadwell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
cannonlake |
Intel Cannonlake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 3.9. |
cascadelake |
Intel Cascadelake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 8. |
clearwaterforest |
Intel Clearwater Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, ENQCMD, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, USER_MSR, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
cooperlake |
Intel Cooper Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16 y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 9. |
core2 |
Intel Core2 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.3. |
core-avx2 |
Intel Core (Haswell). Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición haswell. |
core-avx-i |
Intel Core (ivyBridge) con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición ivybridge. |
corei7 |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2 y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición nehalem. |
corei7-avx |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición sandybridge. |
emeraldrapids |
Intel Emerald Rapids. Esta opción está disponible a partir de GCC 13 y Clang 16. |
goldmont |
Intel Goldmont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 5. |
goldmont-plus |
Intel Goldmont Plus con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
grandridge |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, RAOINT y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512-FP16, AVX512BF16, AMX-FP16, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids-d |
Intel Granite Rapids D con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI, AMX-COMPLEX y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 17. |
haswell |
Intel Haswell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
i386 |
Intel i386.
|
i486 |
Intel i486. |
i586, pentium |
Intel Pentium sin soporte de instrucciones MMX. |
i686 |
Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son. |
icelake-client |
Intel Icelake Client con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
icelake-server |
Intel Icelake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
intel |
Intel Haswell y Silvermont. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.9. |
ivybridge |
Intel Ivy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
knl |
Intel Knights Landing con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER y extensiones 64-bit. Esta opción está disponible a partir de GCC 5 y Clang 3.4. |
knm |
Intel Knights Mill con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER, AVX512CD, AVX5124VNNIW, AVX5124FMAPS, AVX512VPOPCNTDQ y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 6. |
lakemont |
Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
lunarlake |
Intel Lunar Lake. Esta opción está disponible a partir de GCC 14 y es equivalente a la opción arrowlake-s. |
meteorlake |
Intel Meteor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
nehalem |
Intel Nehalem con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
nocona |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2, SSE3 y extensiones 64-bit. |
pantherlake |
Intel Panther Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
penryn |
Intel Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1. |
pentiumpro |
Intel PentiumPro. |
pentium2 |
Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX. |
pentium3, pentium3m |
Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE. |
pentium4, pentium4m |
Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2. |
pentium-m |
Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino. |
pentium-mmx |
Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX. |
prescott |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
raptorlake |
Intel Raptor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
rocketlake |
Intel Rocket Lake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 13. |
sandybridge |
Intel Sandy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sapphirerapids |
Intel Sapphire Rapids con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
silvermont |
Intel Silvermont con soporte de instrucciones MOVBE, MMX, SSE, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMU, RDRND y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sierraforest |
Intel Sierra Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
skylake |
Intel Skylake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.6. |
skylake-avx512 |
Intel Skylake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
tigerlake |
Intel Tiger Lake con soporte de instrucciones OVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 10. |
tremont |
Intel Tremont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP, GFNI-SSE, CLWB, ENCLV y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
westmere |
Intel Westmere con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
yonah |
Procesadores basados en la microarquitectura de Pentium M, con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
AMD |
amdfam10, barcelona |
Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3. La definición barcelona está disponible a partir de Clang 3.6. |
athlon, athlon-tbird |
AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch. |
athlon4, athlon-xp, athlon-mp |
Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE. |
bdver1 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver2 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver3 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8 y Clang 3.4. |
bdver4 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.9 y Clang 3.5. |
btver1 |
Procesadores basados en AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.6. |
btver2 |
Procesadores basados en AMD Family 16h core con soporte de instrucciones x86-64 (MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8. |
geode |
AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3. |
k6 |
AMD K6 con soporte de instrucciones MMX. |
k6-2, k6-3 |
Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!. |
k8, opteron, athlon64, athlon-fx |
Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit). |
k8-sse3, opteron-sse3, athlon64-sse3 |
Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3. |
znver1 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 6 y Clang 4. |
znver2 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, ,CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 9 y Clang 9. |
znver3 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
znver4 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 12.3 y Clang 16. |
znver5 |
Procesadores basados en AMD Family 1ah core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, PREFETCHI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
|
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
LTO |
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
|
En versiones inferiores a GCC
10, sustituir auto
por el número de núcleos que tenga nuestro
procesador. Si sólo tiene uno, utilizar el parámetro -flto
|
PGO |
1) Fase inicial de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -O2 -g1 -fprofile-generate=/var/pgo/dosbox'
|
2) Ejecución y testeo del programa. |
3) Fase final de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -fprofile-use=/var/pgo/dosbox -Wno-error=coverage-mismatch'
|
Clang |
Polly |
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
|
LTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto' |
ThinLTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin' |
La aplicación de esta optimización es alternativa
a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma. |
Unified LTO |
LTO >> ThinLTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin' |
ThinLTO >> LTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full' |
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD. |
PGO |
1) Fase inicial de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -O2 -g1 -fprofile-generate=/var/pgo/dosbox' |
2) Ejecución y testeo del programa. |
3) Conversión del perfil de optimización a un formato legible por Clang. |
$ PGODIR=/var/pgo/dosbox; llvm-profdata merge $PGODIR/default_*.profraw --output=$PGODIR/default.profdata |
4) Fase final de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -fprofile-use=/var/pgo/dosbox' |
Parámetros adicionales
Establecer el estándar de lenguaje de programación correcto para C++ |
Clang 16 y superiores |
$ export CXXFLAGS+=' -std=gnu++14' |
Parámetros adicionales de eliminación de avisos en el proceso de compilación |
$ export {C,CXX}FLAGS+=' -w' |
Establecer el uso de librería estándar de C++ para Libc++
|
Clang |
$ export CXXFLAGS+=' -stdlib=libc++' |
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export
LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64" |
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export LDFLAGS+=' -fuse-ld=mold' |
Establecer el uso de enlazador dinámico para LLD |
Clang |
$ export LDFLAGS+=' -fuse-ld=lld' |
Optimizaciones complementarias LTO/ThinLTO/PGO de LLD |
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=pgo-memop-opt' |
Optimizaciones complementarias LTO de LLD |
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)" |
Optimizaciones complementarias ThinLTO de LLD |
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)" |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción y
Configuración
$ tar zxvf dosbox-0.74-3.tar.gz
$ cd dosbox-0.74-3
$ patch -Np0 -i ../74-3-events.diff
$ find src -name 'Makefile.in' | xargs sed -i 's:AR = ar:AR? = ar:g'
$ ./configure |
Explicación de los
comandos
patch -Np0 -i ../74-3-events.diff : Aplicamos este parche que soluciona problemas con el uso del teclado en DOSBox.
find src -name 'Makefile.in' | xargs sed -i 's:AR = ar:AR? = ar:g' : Modificamos los archivos base de configuración Makefile.in necesarios, para poder hacer uso de la variable de entorno AR establecida en el manual, para que la optimización LTO
pueda aplicarse de forma correcta en el proceso de compilación
del paquete con Clang. Si no tenemos pensado aplicar este tipo de
optimización, omitiremos esta acción a realizar.
Compilación
Parámetros de compilación opcionales
-j$(nproc):
Establece el número de procesos de compilación en
paralelo, en función del número de
núcleos e hilos que tenga nuestro procesador, tomando como
referencia la información mostrada por el sistema con el comando
correspondiente. Si nuestro procesador es mononúcleo de un solo
hilo, no añadir esta opción.
Instalación
como root
$ su
# make install-strip
# for i in /usr/local/share/icons/hicolor ; do \
install -dm755 $i/{16x16,24x24,32x32,48x48,64x64,128x128,256x256}/apps ; \
magick src/dosbox.ico[0] $i/256x256/apps/dosbox.png ; \
magick src/dosbox.ico[0] -resize 128 $i/128x128/apps/dosbox.png ; \
magick src/dosbox.ico[0] -resize 64 $i/64x64/apps/dosbox.png ; \
magick src/dosbox.ico[1] $i/48x48/apps/dosbox.png ; \
magick src/dosbox.ico[2] $i/32x32/apps/dosbox.png ; \
magick src/dosbox.ico[3] $i/24x24/apps/dosbox.png ; \
magick src/dosbox.ico[4] $i/16x16/apps/dosbox.png ; \
gtk-update-icon-cache -tf $i &> /dev/null ; \
done
|
Explicación de los
comandos
for i in /usr/local/share/icons/hicolor ..... : Instala y crea los iconos de la aplicación, a partir del archivo en formato ICO del programa, incluido en el paquete.
Creación del archivo dosbox.desktop
Para que DOSBox sea detectado por los menús de entornos gráficos como XFce 4 o
paneles como LXPanel o Fbpanel, creamos el archivo desktop correspondiente con cat o con un editor de texto:
# cat > dosbox.desktop << "EOF"
[Desktop Entry]
Name=DOSBox
GenericName=Emulador
Comment=Un emulador para los juegos de MSDOS
Exec=dosbox
Icon=dosbox
Categories=Application;Game;Emulator
Type=Application
EOF
|
Luego lo instalamos en /usr/local/share/applications.
La desinstalación y respaldo de este archivo viene incluida en
los scripts correspondientes proporcionados en este manual.
# install -dm755 /usr/local/share/applications
# install -m644 dosbox.desktop /usr/local/share/applications
|
Estadísticas de Compilación e Instalación de DOSBox
Estadísticas de Compilación e Instalación de DOSBox |
CPU |
AMD Ryzen 5 5500 |
MHz |
3600 (BoostMax=4457) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.9.6-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Planificador de CPU |
BMQ |
Versión de Glibc |
2.39 |
Librería estándar de C++ |
Libc++ 18.1.8 |
Enlazador dinámico |
LLD 18.1.8 |
Compilador |
Clang 18.1.8 |
Parámetros de optimización |
-03 -march=znver3
-mtune=znver3 -mllvm -polly -mllvm
-polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,-thinlto-jobs=6 -fprofile-use=/var/pgo/dosbox
-Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=pgo-memop-opt |
Parámetros de compilación |
-j12 |
Tiempo de compilación |
19" |
Archivos instalados |
10 |
|
Ocupación de espacio en disco |
2,1 MB |
Consumo inicial de CPU y RAM de DOSBox
Consumo inicial de CPU y RAM de DOSBox |
Programa
|
CPU |
RAM |
dosbox |
8 % |
314,7 MB |
Para medir el consumo de CPU se utiliza el programa mate-system-monitor, y para medir
el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace. |
Directorio de configuración personal
~/.dosbox |
Es el directorio de configuración personal de DOSBox en nuestro home. |
~/.dosbox/capture |
Es el directorio que
almacena por defecto las capturas de pantalla, sonido o vídeo
realizadas durante la emulación del juego. |
~/.dosbox/dosbox-0.74-3.conf |
Es el archivo de configuración personal de DOSBox en nuestro home. Desde la versión 0.73, tanto el directorio como el archivo se crean de forma automática en la primera ejecución del programa. |
~/.dosbox/mapper-0.74-3.map |
Es el archivo de
configuración del mapa del teclado que hayamos configurado y
guardado desde el mapeador, que se activa conmutando las teclas CTRL +
F1. |
Desinstalación
como root
1) MODO TRADICIONAL
En el directorio de compilación ejecutamos el siguiente comando:
2) MODO MANUALINUX
El principal inconveniente del comando anterior es
que
tenemos que tener el directorio de compilación en nuestro
sistema para poder desinstalar el programa. En algunos casos esto
supone muchos megas de espacio en disco. Con el paquete de scripts que
pongo a continuación logramos evitar
el único inconveniente que tiene la compilación
de
programas, y es el tema de la desinstalación de los mismos
sin
la necesidad de tener obligatoriamente una copia de las fuentes
compiladas.
dosbox-0.74-3-scripts.tar.gz
$ su
# tar zxvf dosbox-0.74-3-scripts.tar.gz
# cd dosbox-0.74-3-scripts
# ./Desinstalar_dosbox-0.74-3 |
Copia de Seguridad
como root
Con este otro script creamos una copia de seguridad de los binarios
compilados, recreando la estructura de directorios de los mismos en un
directorio de copias de seguridad (copibin)
que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de
los binarios podemos copiarlo como usuario a nuestro home
y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos
volver a restaurar la copia, tendremos que volver a copiarlo al lugar
donde se ha creado.
$ su
# tar zxvf dosbox-0.74-3-scripts.tar.gz
# cd dosbox-0.74-3-scripts
# ./Respaldar_dosbox-0.74-3 |
Restaurar la Copia de Seguridad
como root
Y con este otro script (que se copia de forma automática cuando
creamos la copia de respaldo del programa) restauramos la copia de
seguridad como root cuando resulte necesario.
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_dosbox-0.74-3
|
Configuración de DOSBox
El archivo de configuración se crea de forma automática al ejecutar por primera
vez el programa, a continuación un ejemplo con los comentarios
traducidos al español.
# Éste es el archivo de configuración para DOSBox 0.74-3.
# Las líneas que empiezan con un # son líneas comentadas.
# Éstas se utilizan (brevemente) para documentar el efecto de cada opción.
[sdl]
# fullscreen: Inicia dosbox
directamente a pantalla completa.(Presione Alt+Entrar para salir de la
misma)
# fulldouble: Usa doble buffer a
pantalla completa. Reduciendo el parpadeo de la misma, pero
ralentizando la ejecución del emulador.
# fullresolution: Qué resolución se
utilizará para la pantalla completa: la original o un
tamaño fijo (ej. 1024x768). Es recomendable usar la resolución nativa del monitor con la opción aspect=true
# windowresolution: Escala la ventana a este tamaño si el dispositivo de salida soporta escalado por hardware.
# output:
Qué sistema de vídeo se utilizará para la salida
de vídeo.
#
Valores posibles: surface, overlay, opengl, openglnb.
# autolock: El
ratón será bloqueado de forma automática, si usted
hace clic en la pantalla.(Presione Ctrl+F10 para desbloquearlo)
# sensitivity: Sensibilidad del ratón.
# waitonerror: Esperar antes de cerrar la consola si dosbox tiene un error.
#
priority: Niveles de prioridad para dosbox. La segunda entrada detrás
de la coma es para cuando dosbox no está enfocado/minimizado. (la pausa
es sólo válida para la segunda entrada)
#
Valores posibles: lowest, lower, normal, higher, highest, pause.
# mapperfile: Archivo utilizado para cargar/guardar el mapeado de eventos/teclado.
# usescancodes: Evita el uso de symkeys, pero
podría no funcionar en todos los sistemas operativos.
fullscreen=false
fulldouble=false
fullresolution=1024x768
windowresolution=original
output=opengl
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper-0.74-3.map
usescancodes=true
[dosbox]
# language: Selecciona otro archivo de lenguaje.
# machine: El tipo de máquina que intentará emular.
#
Valores posibles: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3,
svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe.
# captures: El directorio que se utilizará para almacenar las
capturas de pantalla y las grabaciones de sonido wave o midi.
# memsize: La cantidad de memoria de la que dispondrá DOSBox en megabytes.
#
Este valor es mejor dejarlo en el predefinido para evitar problemas con
algunos juegos,
#
aunque otros podrían requerir de un valor más alto.
#
Generalmente no conlleva ninguna ventaja de velocidad el aumentar este
valor.
language=
machine=svga_s3
captures=capture
memsize=31
[render]
# frameskip: Cuántos fotogramas omitirá DOSBox antes de dibujar uno.
#
aspect: Ajusta la corrección de aspecto, ¡si su método de salida no
soporta escalado esto puede reducir la velocidad considerablemente!.
#
scaler: Scaler es usado para enlargar/mejorar modos de baja resolución.
Si se añade 'forced', el escalador será usado aunque los resultados no
sean los deseados.
# Valores posibles: none, normal2x,
normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x,
2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x.
frameskip=0
aspect=false
scaler=advinterp2x
[cpu]
# core: Núcleo de CPU usado en la
emulación. auto se conmutará a dynamic si es apropiado y
está disponible.
# Valores posibles: auto, dynamic, normal, simple.
# cputype: Tipo de CPU usado en la emulación. auto es la elección más rápida.
#
Valores posibles: auto, 386, 386_slow, 486_slow, pentium_slow,
386_prefetch.
#
cycles: La cantidad de instrucciones que DOSBox intentará emular
cada milisegundo. Un ajuste demasiado alto de este valor producirá
cortes y retrasos en el sonido. Los ciclos se pueden ajustar de 3
maneras diferentes:
#
'auto' intenta
calcular qué es lo que necesita el juego.
#
Normalmente funciona, pero puede fallar con ciertos juegos.
#
'fixed #número' establece una cantidad fija de ciclos. Esto es
lo que usted normalmente necesita si 'auto' falla.
#
(Ejemplo: fixed 4000)
#
'max'
asignará tanto ciclos como su ordenador pueda manejar
#
# Valores posibles: auto, fixed, max.
# cycleup: La cantidad de ciclos para incrementar/decrementar con un combinado de teclas.
# cycledown: Ajustándolo por debajo de 100 será un porcentaje.
core=auto
cputype=auto
cycles=auto
cycleup=500
cycledown=20
[mixer]
# nosound: Activa el modo silencioso, aún así el sonido seguirá siendo emulado.
#
rate: Velocidad de muestreo del mezclador, ajustando cualquier
dispositivo a una velocidad alta es probable que se reduzca la calidad
del sonido.
#
Valores posibles: 22050, 44100, 48000, 32000, 16000, 11025, 8000, 49716.
#
blocksize: Tamaño de bloques del mezclador, Los bloques más grandes
pueden provocar que el sonido se entrecorte pero también pueden
provocar que se retrase.
# Valores posibles: 2048, 4096, 8192, 1024, 512, 256.
# prebuffer: Cuántos milisegundos de datos se preservarán por encima del tamaño de bloque.
nosound=false
rate=44100
blocksize=1024
prebuffer=20
[midi]
# mpu401: Tipo de MPU-401 a emular.
# Valores posibles: intelligent, uart, none.
# mididevice: El dispositivo que recibirá los datos MIDI desde MPU-401.
#
Valores posibles: default, win32, alsa, oss, coreaudio, coremidi, none.
#
midiconfig: Opciones de configuración especial para el driver del
dispositivo. Esto es normalmente la id del dispositivo que usted va a
usar. Ver README para más detalles.
mpu401=intelligent
mididevice=default
midiconfig=
[sblaster]
# sbtype: Tipo de sblaster a emular.
# Valores posibles: sb1, sb2, sbpro1, sbpro2, sb16, none.
# sbbase: La dirección base IO de la soundblaster.
# Valores posibles: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.
# irq: El número de IRQ de la soundblaster.
# Valores posibles: 7, 5, 3, 9, 10, 11, 12.
# dma: El canal DMA de la soundblaster.
# Valores posibles: 1, 5, 0, 3, 6, 7.
# hdma: El número superior de DMA de la soundblaster.
# Valores posibles: 1, 5, 0, 3, 6, 7.
# sbmixer: Permite que el mezclador de la soundblaster modifique el mezclador de DOSBox.
#
oplmode: Tipo de emulación OPL. En 'auto' el modo es determinado por el
tipo de sblaster. Todos los modos OPL son compatibles con Adlib,
excepto para 'cms'.
# Valores posibles: auto, cms, opl2, dualopl2, opl3, none.
# oplemu: Proveedor para la emulación OPL. compat y old
puede proporcionar mejor calidad (vea oplrate también).
# Valores posibles: default, compat, fast, old.
#
oplrate: Velocidad de muestreo de la emulación musical OPL. Usar 49716
para una calidad alta (ajustar la velocidad del mezclador en
concordancia).
# Valores posibles: 22050, 49716, 44100, 48000, 32000, 16000, 11025, 8000.
sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
sbmixer=true
oplmode=auto
oplemu=default
oplrate=22050
[gus]
# gus: Activa la emulación de la Gravis Ultrasound.
# gusrate: Velocidad de muestreo de la emulación de la Ultrasound.
# Valores
posibles: 22050, 44100, 48000, 32000, 16000, 11025, 8000, 49716.
# gusbase: La dirección base IO base de la Gravis Ultrasound.
# Valores posibles: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300.
# gusirq: El número de IRQ de la Gravis Ultrasound.
# Valores posibles: 5, 3, 7, 9, 10, 11, 12.
# gusdma: El canal DMA de la Gravis Ultrasound.
# Valores posibles: 3, 0, 1, 5, 6, 7.
# ultradir: Ruta al directorioUltrasound. En este directorio
# tiene que haber un directorio MIDI que contenga
# los parches para la reproducción GUS. El conjunto de
# parches usado con Timidity tiene que funcionar bien.
gus=false
gusrate=22050
gusbase=240
gusirq=5
gusdma=3
ultradir=C:\ULTRASND
[speaker]
# pcspeaker: Activa la emulación PC-Speaker.
# pcrate: Velocidad de muestreo de la generación de sonido PC-Speaker.
#
Valores posibles: 22050, 44100, 48000, 32000, 16000, 11025, 8000, 49716.
#
tandy: Activa la emulación del sistema de sonido Tandy. En 'auto', la
emulación es factible sólo si machine está ajustado en 'tandy'.
# Valores posibles: auto, on, off.
# tandyrate: Velocidad de muestreo de la generación Tandy 3-Voice.
#
Valores posibles: 22050, 44100, 48000, 32000, 16000, 11025, 8000, 49716.
# disney: Activa la emulación de Disney Sound Source. (Covox Voice Master y Speech Thing compatible).
pcspeaker=true
pcrate=22050
tandy=auto
tandyrate=22050
disney=true
[joystick]
# joysticktype: Tipo de palanca a emular: auto (predefinido), none,
# 2axis (soporta dos palancas),
#
4axis (soporta una palanca, la primera es la utilizada),
#
4axis_2 (soporta una palanca, la segunda es la utilizada),
# fcs (Thrustmaster), ch (CH Flightstick).
#
none desactiva la emulación de la palanca.
#
auto selecciona la emulación dependiendo de la palanca(s) real.
#
Valores posibles: auto, 2axis, 4axis, 4axis_2, fcs, ch, none.
# timed: activa el intervalo
de tiempo para los ejes. (false representa el comportamiento antiguo).
# autofire: manteniendo presionado el botón activa el disparo automático.
# swap34: intercambia el 3º y
el 4º eje. Puede ser útil para algunas palancas.
# buttonwrap: activa el botón indicado al número de botones emulados.
joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=true
[serial]
# serial1: establece el tipo de dispositivo conectado al puerto serie.
# Que puede ser, disabled, dummy, modem, nullmodem, directserial.
# Los
parámetros adicionales tienen que estar en la misma línea
del modo
#
parámetro:valor. El parámetro para todos los tipos es la
irq.
# para directserial: realport (requerido), rxdelay (opcional).
#
(realport:COM1 realport:ttyS0).
# para módem: listenport (opcional).
# para nullmodem: server, rxdelay, txdelay, telnet, usedtr,
#
transparent, port, inhsocket (todos opcional).
# Ejemplo: serial1=modem listenport:5000
# Valores posibles: dummy, disabled, modem, nullmodem, directserial.
# serial2: ver serial1
# Valores posibles: dummy, disabled, modem, nullmodem, directserial.
# serial3: ver serial1
# Valores posibles: dummy, disabled, modem, nullmodem, directserial.
# serial4: ver serial1
# Valores posibles: dummy, disabled, modem, nullmodem, directserial.
serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled
[dos]
# xms: Activa el soporte de XMS.
# ems: Activa el soporte de EMS.
# umb: Activa el soporte de UMB.
# keyboardlayout: Código de lenguaje del esquema del teclado (o ninguno).
xms=true
ems=true
umb=true
keyboardlayout=es
[ipx]
# ipx: Activa la emulación de ipx sobre UDP/IP.
ipx=false
[autoexec]
# Las líneas en esta sección serán ejecutadas en el inicio.
|
He resaltado de color azul los valores que uso en mi configuración personal y que explico a continuación:
fullresolution=1024x768 |
Ajusto la resolución de pantalla completa de DOSBox a la resolución de pantalla que tengo en mi sistema. |
output=opengl |
OpenGL funciona bastante bien como renderizador de vídeo en GNU/Linux. |
memsize=31 |
Si queremos jugar a Blood, tendremos que aumentar la memoria utilizada por DOSBox, por encima de 31 MB no es nada recomendable el aumento. |
scaler=advinterp2x |
Esto define el filtro de interpolación que utilizará DOSBox para
redimensionar la resolución original del juego. Se puede ir
probando hasta dar con
el que compense más entre aspecto visual y rendimiento del
juego. La potencia del procesador que tengamos en nuestro sistema
influirá mucho en el uso de uno u otro. Algunos filtros tienden
a distorsionar de forma acusada el aspecto visual del juego, sobre
todo, en lo que concierne a los sprites pequeños del mismo. |
keyboardlayout=es |
La configuración predefinida sólo sirve para Windows, si no le indicamos el idioma de nuestro teclado, nuestra querida eñe se convertirá en ; |
Iniciamos DOSBox
Sólo
nos
queda teclear en una terminal
o en un lanzador el comando dosbox,
y el emulador aparecerá en la pantalla:
Ahora
montamos el directorio donde tengamos los juegos de MSDOS de
la siguiente forma:
mount c
/home/jose/Juegos/msdos |
Nos
cambiamos al directorio donde estan los juegos:
Para no tener que estar haciendo todo esto cada vez que iniciemos el
programa, añadimos los comandos ejecutados en la sección
siguiente del archivo de configuración de DOSBox. Un ejemplo:
[autoexec]
# Las líneas en esta sección serán ejecutadas en el inicio.
mount c /home/jose/Juegos/msdos
C:
|
Y entramos en el directorio de un juego en
concreto, en este caso es Bloodnet.
Lo
que viene a continuación es lo típico de los
juegos de MSDOS,
primero hay que configurar el sonido y luego lanzar el juego.
Funciones principales del teclado
ALT + RETORNO |
Pantalla completa |
ALT + PAUSA |
Pausa la emulación |
CTRL + F1 |
Inicia el mapeador del teclado |
CTRL + F4 |
Alterna entre las diferentes imágenes de disco montadas. |
CTRL + ALT + F5 |
Inicia/detiene la creación de una captura de vídeo del juego en formato avi. |
CTRL + F5 |
Captura una imagen del juego en formato
png |
CTRL + F6 |
Inicia/detiene la grabación del sonido del juego en formato wav. |
CTRL + ALT + F7 |
Inicia/detiene la grabación de comandos OPL (formato DRO) |
CTRL + ALT + F8 |
Inicia/detiene la grabación de comandos MIDI en formato raw. |
CTRL + F7 |
Reduce el salto de fotogramas |
CTRL + F8 |
Incrementa el salto de fotogramas |
CTRL + F9 |
Finaliza DOSBox. |
CTRL + F10 |
Activa/Desactiva el ratón en DOSBox |
CTRL + F11 |
Reduce la velocidad de
emulación |
CTRL + F12 |
Incrementa la velocidad de
emulación |
ALT + F12 |
Bloquea la velocidad de
emulación (botón turbo). |
Tecleando el comando help
aparece
el listado completo de atajos de teclado. Algunas de estas
combinaciones no son compatibles con las predefinidas del servidor
gráfico X. Por ejemplo, las que utilizan la combinación
CTRL + ALT + F5, F7, F8, que harán que nos salgamos de X (si usamos Qingy, por ejemplo) y nos
vayamos a una consola virtual o a la nada.
En mi caso particular, la
combinación que pausa el juego, tampoco funcionaba, así
que lo que nos queda es iniciar el mapeador del teclado, mediante el
uso de CTRL + F1, y modificar las combinaciones que creamos
convenientes para posteriormente guardarlas. En el ejemplo lo hago con
la combinación de ALT + PAUSE, a la que le voy a añadir también, ALT +
ESPACIO. Hago clic sobre Pause (lo que está resaltado de color verde) y luego sobre Add, (si hacemos clic sobre Del borraremos la predefinida),
Presiono espacio y posteriormente activo el mod2 (el cuadro en blanco)
para que la combinación ALT + ESPACIO sea efectiva y finalmente
lo guardo. No hacer nunca esto durante el juego, ya que DOSBox tiende a colgarse cuando se modifican estas opciones de teclado. Ahora curiosamente la pausa funciona con ALT +
ESPACIO, pero para desactivarla tengo que ejecutar ALT + PAUSE, en fin, un rollo.
Montaje de CD/DVD e imágenes ISO/BIN/CUE
1) CD/DVD
Para poder montar nuestros dispositivos de CD/DVD, tenemos que
montarlos previamente en nuestro sistema y posteriormente con el
siguiente comando en DOSBox, un ejemplo:
mount d /mnt/cdrom -t cdrom |
'd' es la letra que identifica al dispositivo en DOSBox,
'/mnt/cdrom' la ubicación del punto de montaje donde tengamos
montado el dispositivo en nuestro sistema, y '-t cdrom', el tipo de
dispositivo. Para desmontarlo en DOSBox (ojo, que en nuestro sistema seguirá montado) ejecutamos el siguiente comando,
2) Imágenes ISO/BIN/CUE
Para montar imágenes iso/bin/cue nos valemos del comando integrado que tiene DOSBox, un ejemplo de montaje:
imgmount d /home/jose/blood.iso -t iso |
'd' es la letra que identifica al dispositivo en DOSBox, '/home/jose/blood.iso'
la ruta donde tengamos ubicada la imagen, y '-t iso' el tipo de
dispositivo. El comando de desmontaje es el mismo que el usado para los
dispositivos, y con CTRL + F4 podemos intercambiar entre las diferentes
imágenes que tengamos montadas, en aquellos juegos que nos piden
constantemente el cambio de disco.
Aplicaciones auxiliares de DOSBox
Son las típicas interfaces
gráficas
que facilitan y automatizan el montado y ejecución de los
juegos, aunque si nos aprendemos los comandos de DOSBox
y teniendo en cuenta que los usuarios de GNU/Linux
estamos acostumbrados a trabajar en línea
de comandos, pronto prescindiremos de estas aplicaciones.
Estos son sus enlaces:
DBoxFE (QT3/QT4) | Dosbox Game Launcher (Java) | DOSBoxGui (Tcl/Tk)
Enlaces
http://www.dosbox.com >> La web de DOSBox.
Lista de juegos soportados
Descargas de juegos Abandonware
http://www.abandonia.com
http://www.ellosnuncaloharian.com
http://www.abandonsocios.org
http://abandonware-france.org
|