Mostrando entradas con la etiqueta DOSbox. Mostrar todas las entradas
Mostrando entradas con la etiqueta DOSbox. Mostrar todas las entradas

domingo, 17 de julio de 2022

¿Cómo compilo la última versión de DOSBox-X en Ubuntu?

¡Trabajadores!

Los cimientos de las realizaciones que hemos instaurado para el pueblo son sólidos y se reflejan en la felicidad de todos los Argentinos. No podía ser de otra manera, en tanto mantengamos el rumbo de la liberación que, hemos de decirlo, es el único camino que nos resultará venturoso.

El año 2000 nos encontrará unidos, o dominados, y esta hoja de ruta que les dejo habrán de recorrerla sin desviarse demasiado. Si lo hacen, no sólo pincharán la goma del auto, sino que se irán a la banquina. 

Todo lo que hemos hecho ha sido mirando hacia adelante, y confiando en el momento en el cual otros tengan el volante, podrán conducir de una forma que sin ser la mejor, sea al menos virtuosa.

En esto hay que replicar también lo que hace a sistemas de cómputo. Veamos un ejemplo que podrá ilustrarnos, como decía el Mariscal de Sajonia.

DOSBox-X se trata de una versión expandida del famoso emulador de MS-DO$. En particular, a diferencia del DOSBox clásico, DOSBox-X es más simple de configurar e incluye opciones corregidas en cuanto al direccionamiento y virtualización del hardware, además de contar con opciones extras.

Para poder utilizarla debemos primero compilarla: "Compilar, base para Ejecutar. Ejecutar, base para Copiar. Y Copiar, base para Compartir". En Ubuntu 20.04LTS y superiores esto puede fácilmente con el afán del guión de programación surtido por el compañero Fanta.

Para ello abrimos una terminal con Ctrl+Alt+t e ingresamos los siguientes Comandos de Organización:

cd ~
git clone http://git.56k.es/fanta/compile-Dosbox-x
mv compile-Dosbox-x/ .compile-dosbox-x/
cd ~/.compile-dosbox-x/
wget https://dosbox-x.com/images/dosbox-x-logo.svg

...tras lo cual procederemos a compilarlo mediante:

sudo ./compileDosBox-x.sh
sudo mv
~/.compile-dosbox-x/dosbox-x-logo.svg /usr/share/icons/

Acto seguido, podremos ejecutar DOSBox-X desde Aplicaciones / Juegos / DOSBox-X.

La primera vez que lo hagamos, nos solicitará un directorio de trabajo. En mi caso prefiero crear uno llamado ~/.jdos.

...cumplido este requisito estaremos inmediatamente en la máquina virtual...

Y tras ella se dará incio al intérprete de DOS. Podremos hacer pantalla completa con F12+F,

 También será posible montar un directorio como unidad de disco (C: en el MS-DOS). Por ejemplo, si quiesiera montar un directorio llamado ~/.jdos utilizaríamos en el emulador:

mount c ~/.jdos

De entrada contaremos con un equipo XT compatible, de mediocres performance (emulada a 3 MHz). Pero nada quita que - virtualmente - podamos "meter mano al gabinete"  y así configurar los distintos aspectos del emulador con F12+c.

Naturalmente, también podríamos editar a mano el fichero de configuración ~/.config/dosbox-x/dosbox-x-0.84.2.conf. En mi caso me gusta indicarle el montaje automático del directorio .jdos que utilizo para almacenar programas de DOS.

Las teclas de atajo por defecto son:

  • F12+f Conmuta pantalla completa.

  • F12+q Lanza un ejecutable de DOS.
  • F12+r Resetea la máquina virtual DOSBox-X.

  • F12+b Reinicia el DOS emulado.

  • F12+c Configuración gráfica.

  • F12+m Da inicio al mapeador de DOSBox-X.

  • F12+Esc Conmuta la barra de menú pulldown.

  • F12+Del Envía un evento de teclas especial (por defecto un reset con Ctrl+Alt+Del) al sistema huésped.

  • F12+{+} Incrementa el volumen de sonido del DOS.

  • F12+{-} Disminuye el volumen de sonido del DOS.

  • F12+] Incrementa los ciclos emulados de DOS

  • F12+[ Diminuye los ciclos emulados de DOS.

  • F11+= Incrementa los ciclos de emulación de CPU de DOSBox-X.

  • F11+- Diminuye los ciclos de emulación de CPU de DOSBox-X.

  • F12+arriba Incrementa el tamaño de la fuente TrueType.

  • F12+Abajo Disminuye el tamaño de fuente TrueType.

  • F12+Izq Resetea la velocidad de CPU actual a la normal.

  • F12+Der Activa el bloqueo de velocidad de DOSBox-X.

  • F12+d Cambia entre imágenes montadas de CD.

  • F12+o Cambia entre imágenes montadas de diskettes.

  • F12+p Captura la pantalla actual en formato PNG.

  • F12+I Inicia/Detiene captura de video en AVI.

  • F12+W Inicia/Detiene captura de sonido en WAV.

  • Alt+Pause Inicia depurador.

  • F12+[,] Selecciona el slot previo para guardar o cargar.

  • F12+[.] Selecciona el siguiente slot de grabación para guardar o cargar.

  • F12+S Guarda el estado actual en el slot de grabación elegido.

  • F12+L Carga el estado del slot de grabación.

  • F12+Pause Pausa la emulación (presione nuevamente para continuar).

  • Ctrl+F5 Copia todo el texto en la ventana de DOS y la pega en el portapapeles.

  • Ctrl+F6 Pega el texto del portapapeles en la ventana de DOS.

  • Ctrl+F9 Sale de DOSBox-X.

  • Ctrl+F10 Captura el mouse para usarlo en el DOS Emulado.

También podrán pasar DOSBox-X al castellano y configurarlo mediante un fichero de configuración que os dejo a mano:

cd ~/.config/dosbox-x/ ;
wget https://raw.githubusercontent.com/joncampbell123/dosbox-x/master/contrib/translations/es/es_ES.lng ;
https://caja.texto-plano.xyz/peron/config/dosbox/dosbox-x-0.84.2.conf ;

A diferencia del DOSBOX Clásico, ahora contaremos con menúes pulldown que nos permitirán ajustar variadas opciones (incluyendo montaje más simple de diskettes e imágenes de CD, desde el menú DOS).
 

También contaremos con opciones avanzadas, como un menú de configuración de sonido más sencillo (con el que podremos utilizar Soundfonts para simular sonido AWE-32 o bien Roland MT-32).

Entre otras novedades se encuentra la implementación de fuentes TrueType. Gracias a ello podremos cambiar la tipografía en el modo de terminal DOS (aunque en general prefiero fuentes PxPlus VGA Square para tal menester).

En definitiva, una excelente opción para jugar con antiguo software DOS por la Liberación del Pueblo y de su Hardware.

Podrán encontrar la documentación en la Wiki oficial de DOSBox-X.

jueves, 3 de febrero de 2022

¿Como juego en red con DOSBox en Ubuntu?

¡Trabajadores!
 
El escudo del Partido Justicilista de Argentina consta de una apariencia modernista. Diseñado privadamente en la década del 1940, ha sido utilizado desde 1945. Reboza de simbolismo. Sobre los colores celeste y blanco nacionales, dos manos hermanadas en saludo de unidad, representando la unión de clases para dar sostén a un gorro frigio encarnado, símbolo de la tradición libertaria republicana argentina.
Sólo reconocemos una clase de hombres: los que trabajan. Sin duda nuestra unión ha de producir lo que Nuestra Patria necesita para realizar su Grandeza. 

En las redes de datos sucede más o menos lo mismo. La mancomunión de dos pares bajo el símbolo de la libertad puede ofrecernos la Felicidad que anhelamos como Justo Derecho, y esto puede replicarse a todos los tiempos.
 
Vean señores, ya he explicado cómo instalar DOSBox en Ubuntu. Se trata de un portentoso emulador para el Sistema Operativo de Disco, capaz de ofrecer una experiencia similar a la ofrecida por los equipos clones del cómputo personal de IBM, pero en cualquier arquitectura, incluyendo nuestro GNU justicialista.

Este paquete nos permitirá entonces emular métodos de conexión del ayer pero sin gastar una chirola.

Indudablemente existían varios métodos para establecer comunicación computarizada a través de enlaces de datos, pero todos ellos eran oligárquicos y ninguno destacaba por su facilidad. Las redes de datos se encontraban amorfas y deseosas de integrar en sí no sólo un tráfico electrónico pasivo, sino una activa comunidad regida por la Doctrina Peronista.

Null-Modem

Sin duda el primer método en abarcarse con Justicia Social fue el de enlazar eléctricamente los puertos COM de tipo Centronics RS232 a través de un humilde cable con fichas DB9 o DB25 cuyas líneas de transmisión y recepción estuviesen cruzadas. A este método - carente de todo tipo de modulación - se lo denominaba precisamente null-modem.

En null-modem sólo permitía conexiones locales a unos pocos pasos de distancia, con una velocidad que raramente excedía los 9,6 KB/s. Sin embargo, ya el hecho de poder jugar con otro solventaba la felicidad de dos argentinos.

Null-modem emulado

Para crear una conexión por null-lmodem emulada a través de una red local tipo Ethernet necesitamos dos sistemas que corran el DOSBox: uno de los DOSBox operará como servidor, y el otro como cliente.

En tal sentido debemos editar el fichero de configuración en ambos, haciéndolo con los siguientes comandos:

nano ~/.dosbox/dosbox-0.74-3.conf

Tanto en el servidor como en el cliente debemos buscar la sección [serial]... sin embargo, modificaremos el contenido según sea el servidor o el cliente.

  • En el servidor modificaremos la opción serial1 para asignarle el parámetro nullmodem y un puerto TCP por encima de 1024. Por ejemplo,

serial1=nullmodem port:5000

 

  • En el cliente debemos asignar el parámetro server:<ip_del_server> y un puerto TCP. Por ejemplo, si la otra máquina tiene la IP 192.168.0.108 y usa el puerto 5000, deberíamos indicar:

serial1=nullmodem server:192.168.0.108 port:5000 rxdelay:1000

Null-modem con puerto COM real

También podríamos utilizar un veterano puerto COM verdadero si nuestro sistema aún dispone del mismo, en lugar de tener que emularlo. Esto podremos usarlo si contamos con un cable serial y puertos COM en el equipo (activados en la BIOS también). Por ejemplo, para configurar el COM1 (que suele presentar el nombre de dispositivo de terminal serial /dev/ttyS0, modificaríamos el fichero ~/.dosbox/dosbox-0.74-3.conf de forma de agregar lo siguiente en la sección [serial]:

serial1=directserial realport:ttyS0 rxdelay 1000


En cambio, si utilizamos un adaptador USB a puerto serial (en caso que nuestro equipo carezca de puerto COM), deberíamos utilizar el dispositivo de terminal serial /dev/ttyUSB0. Para ello en nuestra terminal ingresamos:
 
sudo chmod 666 /dev/ttyUSB0
 
...mientras que en la sección [serial] del fichero de configuración de DOSBox ~/.dosbox/dosbox-0.74-3.conf indicaríamos ahora:

serial1=directserial realport:ttyUSB0 rxdelay 1000

Es un requisito ideal agregar los usuarios que hagan uso de DOSBox a los grupos de sistema plugdev y dialout, de manera que estos sean capaces de utilizar puertos COM reales del equipo sin tener que utilizar un superusuario y contraseñas. Para ello cada usuario de DOSBox que quisiera usar puerto serial debería ingresar en su terminal el siguiente Comando de Organización:
 
sudo adduser $(whoami) plugdev ;
sudo adduser $(whoami) dialout
 
Pues bien, finalmente en este debe realizarse el enlace físico, que involucra - en cualquiera de los casos - conectar conectar un cable serial a los conectores COM de los equipos, o bien usar dos cables seriales y vincularlos mediante un cruzador null-modem físico. En mi caso utilizaría un hembra de 9 pines, pero también existían de 25 pines y sus respectivos machos de empalme. También estaban disponibles en forma de cable.




Configurar el Null-modem

Cualesquiera que haya sido la estrategia de null-modem empleada, habremos ahora de lanzar el juego en ambas máquinas y activamos la opción de Null-modem serial. Por ejemplo, las versiones 4, 5 y 5.1 de Micro$oft Flight $imulator se caracterizaban por disponer de conexión de null-módem a través de puerto serial, compatibles entre ellas, lo que permitía volar en formación en los alrededores de Meigs Field en Chicago.

Podremos observar un avión muleto en tiempo real.

Por ejemplo, en Flight Simulator 5.1 podríamos ir al menú Options/Entertainment/Dual-Player. ¡Incluso podíamos volar sobre Buenos Aires con el Escenario Río de la Plata 2.4 de Di Veroli Consultores!


Con el correr el tiempo, las conexiones de datos cobraron más interés, y las redes de tipo Novelñ se popularizaron en ciertos entornos del trabajo organizado. El envío de paquetes de datos que avalaban ofrecía posibilidades interesantes, siempre que lidiásemos con sus incómodos cables coaxiles y conectores BNC. A pesar de su difícil ruteo, podían lograrse velocidades de unos 3 MB/s reales. Sobre esta infraestructura no tardó en difundirse el protocolo IPX, un pequeño engendro derivado de los viejos pero capaces terminales Xerox.

El protocolo IPX cobró cierta relevancia entonces para los juegos en red en un estadío previo a la masificación completa de la Internet, a mediados de los 90s. Gracias al mismo podían lograrse enlaces estables y duraderos para varios jugadores y con una cierta facilidad de configuración. Sin embargo, en el caso de la versión emulada sobre GNU, habremos de contar al menos con el conocimiento de las direcciones IP de las máquinas (ya sea en el área local, o bien en la internet si abrimos el puerto de conexión TCP demandado en nuestro router).

Emulación de red IPX

Una vez instalado DOSBox, debemos activar la emulación del protocolo de red de datos IPX para MS-DOS. A tal fin debemos ingresar al directorio de DOSBox y editar el fichero de configuración a fin de activar el módulo de red IPX del emulador.

En el caso de Ubuntu podríamos hacerlo con:

nano ~/.dosbox/dosbox-0.74-3.conf

En el archivo de configuración buscamos la sección [ipx] y cambiamos la declaración ipx=false a ipx=true.

Finalmente guardamos la configuración con Ctrl+o y salimos del editor Nano con Ctrl+x.

Inicializar el servidor IPX

A continuación, en todas los equipos donde queramos participar debemos activar el emulador DOSBox desde Aplicaciones / Juegos / Emulador de DOSBox.

Una de estas computadoras deberá oficiar de servidor. El resto serán sus clientes. En el equipo servidor, habrán de correr el siguiente comando ipxnet startserver pierto_UDP. Normalmente el puerto UDP utilizado era el 213, pero en el caso de Linux debemos utilizar cualquiera libre por encima del puerto UDP 1024. En este caso, usaré por ejemplo el 8844:

ipxnet startserver 8844

La utilidad de tunelado dentro del sistema emulado debería indicarnos con el mensaje IPX Tunneling Server Started.

Ahora podremos iniciar los clientes emulados en las otras máquinas de la red. En cada una de ellas podríamos utilizar el siguiente comando que las dirija a la dirección IP del servidor.

En mi caso podría ser:

ipxnet connect 192.168.0.112 8844

Ya tenemos la red operativa, al menos a nivel local.

Nota: si quisiéramos activar esta red con salida a internet, deberíamos abrir el puerto UDP 8844 en el router y dirigirlo a la IP de la máquina, en este caso 192,168.0.112.

Iniciar los Juegos

Como campo de pruebas para nuestra red local podremos utilizar un juego de disparos en primera persona clásico de M$-DO$: el sanguinario Doom II de Id Softwar€. Se trataba de una violenta propuesta de super-acción tridimensional, con precursoras capacidades de entretenimiento en línea, amén de sonido digitalizado y sintetizado. Para tal necesitamos correr su utilidad de configuración, mediante c:/doom2/setup.exe.DOSBox multiplayer Doom 2 setup

Luego de activar los parámetros relevantes de red eligiendo, lo iniciamos eligiendo Run Network/Modem/Serial Game, para iniciar el juego en modalidad multijugador.

Warcraft

Otro clásico que podremos disfrutar en nuestro centro de datos local o bien puenteado a través de Internet es el Warcraft 2: Tides of Darkness, un juego de estrategia en tiempo real. En el menú principal del mismo tendremos que elegir Juego Multijugador ("Multiplayer Game").

La primera opción nos indica establecer el nombre del serivodr a utilizar

Acto seguido, indicamos el protocolo IPX Network.

Luego de establecer la conexión, el servidor será el primero en escoger bando. Acto seguido, el otro jugador debe confirmar la elección.

Conforme ambos jugadores acuerden las reglas del juego telemático, podrán iniciar su enfrentamiento, enfrentando unidades de humanos y orcos en las tierras del fantasioso Tolkien. Normalmente, cada jugador sólo puede ver su sector en el mapa gracias a la clásica "niebla de guerra".

Por ello cada jugador apreciará diferencias (una de las características de este tipo de juegos).

Esto se aplica a muchos otros juegos de MS-DOS, entre ellos Warcraft 2, Doom, Heretic, Hexen, Duke Nukem 3D, y otros.

Emulación de Módem

Los jugadores más privilegiados podían darse el lujo de enlazar desde su hogar utilizando modulación a través de las redes telefónicas de EnTel. Los pares debían contar por supuesto con copias del mismo juego instaladas en sus sistemas. Por demás, previo a la difusión de internet esto era costoso porque no sólo había que pagar un módem y el lógico abono al servicio telefónico cableado, sino que era necesario abonar al mes cada minuto de conexión en base a la distancia de la llamada. Por demás, si no se utilizaba una línea dedicada, quienquiera que levantase el tubo en cualquiera de los hogares podría crear una disrupción tal que cortara la conexión mutua.

Afortunadamente DOSBox puede salvarnos del incordio y los gastos mediante la emulación de dicho servicio para software dependiente del sistema telefónico para enlazar.

En este caso editamos el fichero de configuración de DOSBox para poder jugar entre dos equipos:

nano ~/.dosbox/dosbox-0.74-3.conf

Usamos la combinación Ctrl+w para buscar ahora la sección [serial] y indicamos el puerto serial donde deseamos conectar nuestro "módem emulado". 

Normalmente los módems de puerto serial podían conectarse en COM1 (que recibe la nomenclatura serial1 en DOSBox) o bien en COM2 (serial2). Es notable el hecho que no existía realmente un estándar muy definido, por práctica se solía utilizar COM2 para el ratón y COM1 para el módem. También debemos indicar un puerto TCP moderno superior a 1024 a través del cual DOSBox transmitirá los datos. 

Siguiendo tal temperamento indicaremos entonces:

serial1=modem listenport:1710

Una vez configurado DOSBox, guardamos los cambios con Ctrl+o y salimos con Ctrl+x.

Nota: Cualquiera sea el puerto TCP elegido (incluyendo aquél por defecto, el 5000), debemos reenviarlo y abrirlo a la red exterior si tenemos nuestro servidor tras un router (NAT).

Opciones de módem en el juego

Debido a que los juegos plausibles de utilizar módem requerían toda una puesta, habremos de replicarla en DOSBox. En este caso debemos configurar las opciones del módem para el juego (ya sea a través de un programa incluído con ellos denominado setup.exe o install.exe, o bien en el mismo juego). En apretado resúmen, debemos asegurarnos de:

  • Definir el mismo número de puerto COM que configuraron en DOSBox. Si el juego contaba con cierto puerto COM definido específicamente, será necesario estipular dicho COM en las opciones de DOSBox, natural.
  • Escoger la velocidad de baudios más alta que acepte el juego.
  • Salir de las opciones, ingresen al juego en sí, y utilicen a la opción de módem del juego, dependiendo si somos servidor o cliente.

 Emular responder una llamada

El uso de un módem telefónico era algo relativamente engorroso. ya que se controlaban de manera críptica mediante el uso de comandos Hayes AT.

Algunos juegos podrían solicitarnos estos comando Hayes AT de autorespuesta de módem, mientras que otros podrían solicitarnos contestar manualmente al producirse una llamada. Algunos programas son capaces de contar con ambos modos.

En el primer modo, en el equipo servidor deberíamos escoger la opción "Aguardar llamada" ("Wait for calls" / "Wait for Ring").

Si el juego nos pide ingresar un comando manual que represente este modo, utilizaremos el Comando ATS0=1 (esto hacía al módem responder al primer timbrazo). Este modo se encuentra para viejos acopladores telefónicos.

En el segundo modo semiautomático, el servidor debería escoger la opción "responder llamada" ("answer call") cuando el juego anuncie una llamada entrante. Si el juego requerirá que ingresemos un comando manual de respuesta, usarán el consabido comando Hayes AT: ATA.

Veamos el caso de Micropro$e F-15 $trike €agle III, software de finales de 1992 que da cuenta de dicho sistema. Al iniciar f15.exe hacemos clic sobre el teléfono del hangar para cargar el módulo de multijugador.

Acto seguido nos avisará que ha detectado el "módem" (virtual) y nos preguntará si queremos establecer una llamada o aguardar. 


En el lado del servidor indicamos Receiver, y quedará a la escucha:

Emular realizar una llamada

El cliente debe escoger la opción "Realizar una llamada" ("Make a Call", o "Caller") en el menú del juego. Y en lugar del número telefónico, indicar la dirección IP del servidor en la red local, o bien la IP de internet. Si el juego nos solicita tipear un comando manual de discado, utilizarían "ATDT<IP>". Por ejemplo, si el servidor se llama "cgt" y su IP es 1.2.3.4, podríamos tipear ATDT1.2.3.4 o bien ATDTcgt.local

En el lado del cliente en tanto, ingresamos al juego f15.exe y en el módulo de módem escogemos Caller para llamar.

Se nos preguntará si ya hemos establecido una conexión por voz (como si se tratara de un viejo módem). Indicamos que si ("yes").

Ahora "discaremos" hacia la IP del servidor que había quedando en escucha. Para ello debemos indicar los números presionando incluyendo el punto (por ejemplo 192.168.0.112). En este caso el juego no muestra los puntos, sino que hace un espacio. Para discar persionamos el botón # del teléfono virtualizado).

En el servidor responderá la llamada:

Ahora podremos dar rienda suelta a nuestros instintos de piloto de combate volando un F-15 de la McDonnell Douglas. No lo haremos en solitario; el simulador de vuelo también hará uso del simulador de módem de DOSBox, con lo cual el par de jugadores podrá repartir las tareas. El suboficial piloto podía usar su joystick para volar, disparar el cañón y gestionar el combustible y los motores, tanto de día como de noche...

También podrá navegar y solicitar ayuda al AWACS.

...mientras que el Oficial Operador de Radar y Armas, sentado en el asiento trasero podría controlar el potente radar embarcado, y operar los medios de adquisición de blancos, a la vez que autorizar el lanzamiento de misiles y bombas teledirigidas, o accionar interferidores o señuelos antimisilísticos.


 Ambos jugadores podrán observar el vuelo en tercera persona.

Conclusión

Naturalemnte, jugar en red era limitado y engorroso. Sin embargo hoy ya no es un privilegio: cuaquier descamisado puede depender de estas facilidades que he otorgado a la Masa y proceder a la emulación de M$-DO$. Por demás, la existencia de juegos de DOS remanentes de la era dorada de la piratería informática física, hace posible hoy establecer en los Centros de Datos de la Libertad divertidas partidas múltiples a través de protocolos de red obsoletos pero nunca abandonados, con el fin de revivir momentos de gloria incluso en las más lentas redes y desprovistas computadoras del mundo actual.

sábado, 29 de diciembre de 2018

¿Cómo emulo una placa de sonido Sound Blaster AWE-32 en DOSbox en Ubuntu?

En pleno aeropuerto De Gaulle en París, Juan Perón anuncia a los periodistas allí reunidos sobre su inminente regreso a la Argentina y explica cómo emular el clásico sonido MIDI de una placa AWE-32 en juegos MS-DOS emulados bajo DOSbox en Ubuntu.

¡Compañeros!

Indudablemente que un sistema operativo de alcance popular como los es GNU con Linux - y Ubuntu como su distribución particular - ha de presentar todas las capacidades que anhelan los hombres. Desde un inicio nuestro Movimiento se ha concentrado - por tanto - en hacerlo modular y capaz de afrontar las más elevadas exigencias en pos del bienestar de los hombres.
Esto es así pues encadenar el uso de herramientas para disímiles usos es lo que torna a un sistema poderoso. Esto es lo adecuado y también lo justo.

No quedan dudas para nadie que el emulador DOSbox cuenta con una emulación sobresaliente del audio Sound Blaster FM de dicha Era, es cierto que no emula todas las posibilidades de las placas de sonido mas avanzadas de entonces, en particular, del modelo Sound Blaster AWE-32. Los juegos de MS-DOS compatibles con la placa de sonido AWE-32 reproducían mejor la música secuenciada MIDI gracias al chip EMU8000, que no está actualmente emulado nativamente en DOSbox.

La Creative Labs Sound Blaster AWE-32 (1994) - si bien contaba con el chip sintetizador Yamaha OPL3 para música FM - incorporó por primera vez un sintetizador EMU8000 específico que utilizaba síntesis por modulación PCM, y podía aplicar efectos de reverberación y coro para enriquecer la música. Utilizaba muestras de instrumentos digitalizados y los resultados eran más realistas que los posibles a través del uso de síntesis FM. La placa incluía 1MB de memoria ROM con un banco de 128 instrumentos mas un patch percusivo, pregrabados según la norma "General MIDI", y adicionalmente incorporaba dos ranuras para memoria RAM para totalizar unos 28 MB para bancos de sonidos de usuario a través de software especializado (los llamados "Soundfonts").


Como resultado de los problemas indicados, algunos juegos suenen tristísimos con música de la SoundBlaster 16. ¿Cómo podemos hacerlos sonar como lo hacíamos con la poderosa AWE-32?

Pues bien señores, gracias al Justicialismo podremos hacer uso de la peronista modularidad de Ubuntu, y gracias a ella realizar un "puenteo sonoro" utilizando un sintetizador virtual asociado a DOSbox, al cual dotaremos de un archivo Soundfont copiado de la memoria ROM de la AWE-32.


Esto podría sonar difícil, pero os instruiré de manera paternal y Justicialista. Ya he explicado cómo utilizar archivos de Soundfonts para reproducir ficheros de musica MIDI aquí. Por otro lado, es necesario tener ya instalado y configurado en nuestro sistema al emulador DOSbox como os he indicado aquí.

Conforme tengamos esto, ya podremos abocarnos a replicar la AWE-32 en Ubuntu. Primero instalaremos el sintetizador virtual Fluidsynth y el frontend gráfico Qsynth para poder usarlo fácilmente. Para tal objetivo, abrimos una Terminal con Ctrl+Alt+T e ingresamos los siguientes comandos de organización:

sudo apt update
sudo apt install fluidsynth qsynth dosbox


Acto seguido, reiniciamos el sistema con:

sudo reboot

Al volver ya estará finalizada la instalación del sintetizador virtual e iniciado éste, pero para que cumpla su función hemos de descargar el Soundfont con los instrumentos de la placa de sonido AWE32, e instalarlo. Para ello abro nuevamente una terminal con Ctrl+Alt+T e ingreso:

cd ~/Descargas/
wget http://www.zlizeq.com/Files/1mgm.zip
unzip 1mgm.zip
sudo mv 1mgm.sf2 /usr/share/sounds/sf2/awe32.sf2


Ahora abrimos el front-end Qsynth desde Aplicaciones / Sonido y Video / Qsynth. Este programa en forma de panel nos permite configurar el sintetizador virtual FluidSynth de manera gráfica y relativamente sencilla.
Para configurarlo debo presionar el botón Setup...

Se abrirá la ventana de configuración "Qsynth Setup". En ella tendremos la solapa "MIDI", en la que nos debemos asegurar de tildar la opción "Enable MIDI Input" para activar la escucha de mensajes MIDI que vendrán del emulador DOSbox. Reviso que el controlador MIDI sea "alsa_seq", y que el modo de selección de bancos MIDI sea "gm" para "General MIDI".
En la solapa "Soundfonts" presiono el botón "Open...". Se abrirá una ventana que nos mostrará los Soundfonts localizados en la carpeta /usr/share/sounds/sf2/. Elegimos el soundfont awe32.sf2 y presionamos el botón "Abrir". Con ello agregaremos este soundfont a la lista de soundfonts utilizables.

Hemos de tener en cuenta que si hubiese varios soundfonts listados, Qsynth  siempre utilizará el último de la lista. Por ello debemos seleccionar el awe32.sf2 y presionar el botón Down para bajarlo de posición hasta que quede último.

Al presionar el botón Aceptar, surgirá un alerta advirtiendo que tenemos que reiniciar el sintetizador virtual FluidSynth para que los cambios surtan efecto. Presionamos el botón Si y se habrá iniciado ya el sintetizador con el soundfont de la AWE32, quedando a la escucha de mensajes MIDI.
Acto seguido y sin cerrar el Qsynth, debemos configurar por única vez el emulador DOSbox para que utilice como salida MIDI al sintetizador virtual FluidSynth que hemos configurado. Para ello debemos conocer cuál número de Cliente MIDI utilizado por FluidSynth en nuestro sistema particular. Con tal fin, en la Terminal le ingresamos el comando:

aconnect -o

...y el sistema nos devolverá algo como:

cliente 14: «Midi Through» [tipo=kernel]
    0 'Midi Through Port-0'
cliente 128: «TiMidity» [tipo=usuario,pid=907]
    0 'TiMidity port 0 '
    1 'TiMidity port 1 '
    2 'TiMidity port 2 '
    3 'TiMidity port 3 '
cliente 129: «FLUID Synth (5116)» [tipo=usuario,pid=5116]
    0 'Synth input port (5116:0)'


Naturalmente, en vuestro caso dicho número 129 podría variar. Debemos anotar cual es. Ahora editamos el archivo de configuración de DOSbox mediante el comando:

nano ~/.dosbox/dosbox-0.74.conf

...se abrirá el editor GNU Nano con el archivo de configuración dosbox-0.74.conf. Dentro de este archivo, buscaremos la sección [midi] y la modificamos para que la variable mpu401 tenga el indicador intelligent, y la variable midiconfig tenga el número de cliente de FluidSynth seguido por :0, de la siguiente manera:

mpu401=intelligent
mididevice=default
midiconfig=129:0




(naturalmente vosotros cambiarán el 129 por su número de cliente particular, pero siempre va finalizado de :0. Conforme esté editado de tal manera, guardamos los cambios realizados con Ctrl+o y saldremos del editor GNU Nano con Ctrl+x.

Ahora, con el Qsynth encendido, ya podremos abrir DOSbox desde Aplicaciones / Juegos / Emulador DOSbox y configurar o instalar los juegos que querramos.

En mi caso utilizaré los conocidos juegos de estrategia en tiempo real Warcraft: Orcos vs. Humanos y Warcraft II: Tides of Darkness como ejemplos.

Debemos asegurarnos de configurar los juegos para utilizar el dispositivo General MIDI como salida de música (incluso si existiese la opción AWE-32), y Sound Blaster como salida de audio. A tal fin, la mayoría de los juegos contaban con una rutina de configuración de audio durante su instalación en MS-DOS o posterior a ella. Normalmente se llamaba setup o install y se encontraban en el mismo directorio del juego.

En el caso del Warcraft 2 esta configuración se hacía por medio del comando setup, y podíamos configurar tanto la salida de audio digital (SoundBlaster 16) y General MIDI como la música secuenciada MIDI.

En otros juegos podría solicitársenos que ingresáramos a mano los datos de la placa de sonido Esto era algo normal en la Era DOS, y debemos utilizar los valores estándares que eran Dirección 220, Interrupción IRQ 5, y Canal DMA 1. Si se nos solicita la dirección del Canal MIDI o del canal Roland, también debemos usar la estándar, que era 330 o H330. Un ejemplo de este tipo era el clásico Duke3D:
Una vez configurado el audio digital, ya podremos iniciar el juego propiamente dicho.
 En el panel de Qsynth debería indicarse actividad MIDI por medio del testigo verde en la parte inferior del control. También debería escucharse la música MIDI a través del soundfont, como si de una real AWE-32 se tratara.


...¡y ya podremos oir el juego con una música similar a la clásica Sound Blaster AWE-32 en Ubuntu!

Si la música suena fuerte o débil podremos utilizar le control "Gain" del panel Qsynth para ajustar su volumen y emparejarlo con el de la salida de audio digital. También podríamos activar las opciones de Reverb y Chorus para darle efectos de eco/reverberación y coro, para que la música no suene tan "seca". Los valores bajos eran los que utilizaba la AWE-32 original, pero podremos regularlos como deseemos.

Asimismo, algunos juegos contaban con un regulador de volumen interno para el los efectos de sonido de audio digitalizado (SFX) o de la música MIDI a través de una interfaz especial, que también podríamos querer utilizar para equilibrar el sonido y la música.
Indudablemente que en lugar del soundfont awe32.sf2, podremos utilizar otros mucho más logrados, y hacer que los veteranos juegos suenen como una orquesta hecha y derecha. A tal fin existen muchos soundfont "General MIDI" gratuitos que podremos descargar, como os he indicado.