Juegos Linux - DOSBox, un Emulador de DOS x86: Disfruta de tus Juegos Originales de DOS en HD

DOSBox es un emulador de DOS x86 que no solo emula la arquitectura x86, sino que también emula el vulgar entorno de DOS de la era de los años noventa. Con DOSBox, puedes volver a jugar a tus antiguos juegos y ejecutarlos en hardware moderno, ya que existen muchas e interesantes aplicaciones DOS que no están disponibles para Windows o Linux.

DOSBox supone bastante carga de trabajo para muchos ordenadores, ya que por lo general necesita un PC de gama alta para emular un 486 a 33MHz. Puesto que ODROID usa una arquitectura completamente diferente (ARM vs X86), la cargar de trabajo es todavía mayor durante la emulación. A pesar de su complejidad y sus múltiples capas, DOSBox se ejecuta sorprendentemente bien sobre la plataforma ODROID.

Hace algún tiempo, compilé una versión de DOSBox optimizada para ARMv7 que parecía funcionar más rápido que la versión de DOSBox que viene con la distribución oficial. Me llevo un tiempo comparar estas versiones y descubrir exactamente las mejoras que se consiguen si se usa una compilación optimizada para ARMv7.

A continuación, encontrarás una serie de pruebas comparativas que ponen de manifiesto las diferencias que existen entre la compilación genérica de DOSBox y una compilación hecha específicamente para ARM. La compilación de DOSBox hecha a medida para ARMv7 se puede descargar desde mi repositorio en http://bit.ly/1DhCv6l.

Configuración

En determinadas ocasiones configurar DOSBox puede resultar un tanto complicado. Aunque la mayoría de los juegos no presentan problemas con la configuración básica, algunos sólo funcionan con una configuración muy específica, de modo que he elegido el conjunto de valores que mejor funcionan en la versión original del juego Quake, ya que se trata de un juego que es bastante exigente con el hardware.

Lo sorprendente de Quake es que el juego en sí está en 3D sin necesitar un entorno de escritorio gráfico. A diferencia de juegos como "Duke Nukem 3D", que contiene algunos objetos 3D y usa sprites 2D en muchas situaciones, Quake ya usaba modelos 3D, similares a los modelos utilizados en los juegos posteriores de Windows, lo cual era bastante sorprendente por aquel entonces.

No fue nada fácil encontrar la configuración correcta y tras un tiempo haciendo pruebas, terminé con los siguientes resultados, con el frameskip y la relación de aspecto desactivados:

core=dynamic
cputype=pentium_slow
cycles=fixed 32000
cycleup=500
cycledown=300
memsize=32
scaler=normal3x
Los núcleos Dynamic deben usarse para cualquier valor de ciclos fijos de más de 20,000. Pentium_slow es la CPU con la mayoría de las funciones, y configuré los ciclos en 32,000, lo cual es muy alto. Algunos programas de prueba reportaban que se trataba de una rápida CPU Pentium de 1285 MHz. Elegí un número tan alto por el Quake, ya que, con 32,000 ciclos, el juego ofrece la mejor experiencia en ambas versiones de DOSBox.

Pruebas

Después de realizar varias pruebas, descubrí que lo realmente difícil era encontrar buenos indicadores de referencia. Me acordé de algunas aplicaciones de pruebas de rendimiento de cuando DOS era popular, pero me resultó muy difícil localizarlas. No obstante, logre encontrar un entorno de prueba para realizar diferentes pruebas de rendimiento en DOS llamado DOS Benchmark, que está disponible para descargarse en http://bit.ly/1ttzaRR.

DOS Benchmark ofrece pruebas de CPU, GPU y memoria, así como versiones demo de los juegos Doom y Quake para evaluar el entorno. Intenté llevar a cabo todas las pruebas disponibles, pero no todas funcionaron, aunque sí algunas funcionaron bastante bien. Por ejemplo, encontré una prueba con un cubo 3D giratorio que se ejecuta en DOS, que tiene excelentes imágenes, y que llegó a ejecutarse con bastante fluidez en el ODROID.

Figure 1 - Spinning cube under DOS
Figura 1 - Cubo giratorio bajo DOS

Figure 2 - Stock Debian version of DOSBox
Figura 2 - Versión Debian estándar de DOSBox

Figure 3 - ARMv7-optimized version of DOSBox
Figura 3 - Versión optimizada para ARMv7 de DOSBox

Prueba de rendimiento 3D

La versión optimizada ARMv7 fue casi un 17% más rápida en esta prueba. Desafortunadamente, esta prueba no es muy fiable si cambias los ciclos de la CPU como lo hice yo. Puedes lograr resultados con más de 200 FPS con valores de 100,000 ciclos de CPU, pero incluso con estos valores tan altos, el emulador estaba lejos de funcionar mejor o incluso más rápido. Pude observar que la salida de video se ralentizaba y se apreciaban saltos de fotogramas, aun así, la prueba logró alcanzar una buena puntuación.

Figure 4 - 3D Bench test using stock build
Figura 4 - Prueba de rendimiento 3D utilizando la compilación estándar

Figure 5 - 3D Bench test showing difference in results using ARM build
Figura 5 – La prueba de rendimiento 3D muestra diferencias en los resultados usando la compilación ARM

Prueba de rendimiento CPU

Las pruebas sobre la CPU mostraron que la versión optimizada para ARMv7 funciona un poco mejor. Una mejora de alrededor del 30% era habitual cuando comparamos el potencial de la CPU.

Figure 6 - CPU benchmark using stock build
Figura 6 – Prueba de rendimiento de la CPU usando la compilación estándar

Figure 7 - CPU benchmark using ARM build, which is clearly faster
Figura 7 – Prueba de rendimiento de la CPU usando la compilación ARM, que es claramente más rápida

Problemas de memoria

Aunque algunas pruebas de rendimiento tuvieron mejores resultados en la versión ARM, observé varios problemas importantes en determinadas pruebas con la versión optimizada ARMv7. Algunas pruebas ni siquiera llegaban a ejecutarse en la versión optimizada ARMv7 de DOSBox, o provocaban un comportamiento extraño. Solo la versión Debian estándar lograba ejecutar correctamente el 100% de las pruebas.

Por ejemplo, había una prueba de memoria que usaba bloques de diferentes tamaños y llevaba a cabo algunas operaciones con ellos hasta que al final los diferentes bloques agregasen 24 MB en total. Funcionaba con bloques de 384 x 64KB y proporcionaba un resultado sobre la rapidez con la que la memoria hacía el cálculo. La misma prueba en la versión optimizada tuvo resultados muy diferentes. La prueba ARM no solo tardó aproximadamente 10 veces más en ejecutarse, sino que los valores proporcionados fueron completamente inexactos. En lugar de 24MB, sumó bloques de 512 MB y mucho más a una velocidad ridícula.

Algunas pruebas eran tan intensas, que se salían de la escala y tenían como resultado una velocidad negativa o con altos exponentes realizando cálculos con diez mil megabytes por segundo. Otras pruebas no se iniciaban en absoluto, o simplemente provocaban que el emulador se colgase.

Herramientas de prueba

Probé algunas otras herramientas para comparar el rendimiento gráfico del sistema, como el cubo giratorio y VideoDOS, que a veces tenían resultados muy extraños. Debido a que las pruebas gráficas son solo pruebas de rendimiento y están relacionadas directamente con la capacidad de respuesta del juego, también lleve a cabo algunas pruebas prácticas con algunos de mis juegos favoritos.

Figure 9 - Graphical test on the stock Debian build of DOSBox
Figura 9 - Prueba gráfica sobre la compilación de Debian de DOSBox

Figure 10 - Graphical test on the ARM build of DOSBox. This graphic tests gave odd results: some tests seemed to run faster with more colors and in higher resolutions, while others seemed normal)
Figura 10 - Prueba gráfica en la compilación ARM de DOSBox. Estas pruebas gráficas daban resultados extraños: algunas pruebas parecían ejecutarse más rápido con más colores y en resoluciones más altas, mientras que otras parecían más normales.

Figures 11 and 12 - Results of VideoDOS of the ARM optimized version (left) and the stock Debian version (right)
Figuras 11 y 12 - Resultados de VideoDOS de la versión optimizada ARM (arriba) y la versión Debian estándar (abajo)

Juegos

El pack de pruebas de rendimiento incluía dos juegos, Doom y Quake, ya que a ambos se jugaban muy a menudo durante la edad de oro del DOS, y ofrecen algunos indicadores de rendimiento muy interesante en el modo demo. Sin embargo, la prueba de rendimiento sobre el Doom no llegaba a funcionar correctamente, indicaba casi siempre que se estaba ejecutando a máxima velocidad, aunque realmente estaba muy lejos de ser así.

En lugar de usar las pruebas de rendimiento ya incluidas, llevé a cabo mis propias pruebas y comparé el tiempo que tardaron los juegos en ejecutar una demo completa. Los resultados fueron muy sorprendentes: la Demo 3, ejecutada en la versión optimizada ARMv7 de DOSBox, tardó aproximadamente 108 segundos en completarse. En la versión Debian estándar de DOSBox, hizo falta llegar a los 156 segundos para que se completase la prueba. Estamos hablando de un incremento en la velocidad de casi el 45% para la versión ARM.

Puedes ver claramente aún más la diferencia cuando juegas al Quake. La Demo 3 tardo 147 segundos en la versión optimizada y 248 segundos en la versión de Debian estándar, ¡aproximadamente un 70% fue más rápida la versión optimizada! Tras llevar a cabo todas las pruebas de rendimiento, quería ver qué tal se comportaba el emulador en una experiencia de juego real, pronto descubrí que la configuración que había elegido originalmente no funcionaba bien para ningún otro juego, así que cambié la configuración nuevamente y ejecuté un par de juegos de prueba. Después de reajustar los ciclos a 6.000 en lugar de 32.000, el Dune 2 se ejecutaba perfectamente, con una experiencia de juego agradable y suave. Los sonidos, la música y las voces eran aceptables y no percibí ningún problema.

También probé un par de juegos más exigentes, como Prisoner of Ice, que es un juego de aventuras muy bueno con algunas escenas de película y una opción para ejecutarlo con una resolución de 320x240 o de 640x480. La última incluso ofrecía algunas otras características, como fuentes mejoradas. Ambas versiones funcionaban bien en DOSBox. También me encontré con el mismo rendimiento al ejecutar Space Quest 6.

Resultados

La versión optimizada ARMv7 se ejecuta significativamente mejor que la versión de Debian estándar de DOSBox. Si tuviera que cuantificarla con un número, diría que la versión optimizada es, como término medio, entre un 10 y 15% más rápida que la versión del repositorio de Debian. A veces, incluso mucho más rápido que eso, como cuando ejecutamos el Quake.

Los resultados más rápidos parecen estar relacionados con algunas optimizaciones matemáticas dentro del propio emulador, que también pueden crear problemas como efectos secundarios, especialmente con operaciones de memoria. Esto, a su vez, puede causar problemas técnicos en algunos juegos o impedir que se ejecuten correctamente. A parte de esto, la versión optimizada de ARM es la mejor versión en términos de velocidad.

En base a mis anteriores pruebas, puedo decir que es incluso lo suficientemente rápido para poder manera Windows 3.11 o incluso Windows 95. La mayoría de los juegos deberían funcionar en ambos emuladores, aunque se ejecutan un poco mejor en la versión optimizada de ARM.

Configuración adicional

Cuando terminé con las pruebas con algunos juegos, decidí cambiar mi configuración con los siguientes parámetros, con lo que descubrí que funcionaban muchos juegos:

core=auto or dynamic
cputype=auto
cycles=fixed 3000
memsize=31
También descubrí que DOSBox es capaz de usar glshim junto con su interprete opengl usando la opción output:
output=opengl
Por último, modifiqué los parámetros sdl:
fullscreen=true
fulldouble=true
fullresolution=1280x720
windowresolution=original
output=opengl
Estas opciones inician el juego en modo pantalla completa y cuando se usan junto con LD_LIBRARY_PATH=/usr/local/lib/, puedes ejecutar el emulador con soporte OpenGL.

Otros juegos

Como puede ver en el cuadro que aparece a continuación, los juegos varían mucho en cuanto a rendimiento, y no existe una configuración única que funcione con todos los juegos. También me di cuenta que el modo "auto" en los ciclos no funciona realmente bien. La velocidad al 100% que se usa en juegos pesados suele ser peor que utilizar un valor fijo de ciclos.

Cuando utilices DOSBox para ejecutar tus juegos, sugiero empezar con un valor de ciclos de 3,000 y seguir avanzando hasta que el juego comience a ralentizarse, luego retroceder unos cuantos valores. Con esto deberías alcanzar el rendimiento óptimo en tus juegos favoritos de DOS.

Juegos Ciclos Infos Comentarios
Sid Meier's Colonization 1,500-3,000 El juego funciona mejor con pocos ciclos. A parte de esto, se ejecuta bastante bien sin problemas o caídas de sonido. Sin embargo, la intro al iniciar el primer juego tarda mucho tiempo en ejecutarse.
Shadow Warrior 15,000-20,000 El juego es lento y no se puede jugar.
Terry Pratchett's Discworld 1 3,000-6,000 Juego funciona bien sin ningún problema
Syndicate 6,000-10,000 El juego funciona bien sin problemas No se ejecuta con glshim
Wing Commander I 2,000-4,000 El juego funciona bien sin ningún problema. En mi opinión, la versión de Amiga tiene una banda sonora mucho mejor. Deberías usar un escalador 3x
Prisoner of Ice (640x480) 2,000-8,000 El juego funciona bien, con solo un pequeño problema en el sonido de vez en cuando.
Space Quest 6 ~12,000 El juego se ejecuta en su mayor parte a toda velocidad, aunque presenta una leve ralentización en la música y el texto se desplaza demasiado rápido.
Dune 2 3,000 El juego parece un poco lento, aunque por lo general es aceptable y no tiene problemas
XCom Series 1,000-15,000 Funciona bien con leves problemas de velocidad
Dark Legions ~20,000 Funciona bien con leves problemas de velocidad

Be the first to comment

Leave a Reply