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=normal3xLos 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.
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.
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.
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.
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=31También descubrí que DOSBox es capaz de usar glshim junto con su interprete opengl usando la opción output:
output=openglPor último, modifiqué los parámetros sdl:
fullscreen=true fulldouble=true fullresolution=1280x720 windowresolution=original output=openglEstas 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 |