18 años en Internet

10 diciembre 2024

Haciendo funcionar "DIV 2 Games Studio" en ordenadores actuales

    Para los que no me conozcáis, aprendí a programar antes de entrar al instituto, más o menos por Sexto de EGB. Entonces los frameworks eran más prehistóricos, la orientación a objetos no era tan popular y básicamente mi vecino me regaló un libro de programación en Basic que podía utilizar con el Spectrum ZX+2 128 KB de mi hermano.

     Por el 98, no recuerdo cuando exactamente, mi padre compró un ordenador para casa. Si no me equivoco, se trataba de un Pentium 133 MMX con 32 MB de RAM, Windows 95, una gráfica S3 Virge de 4 MB y unos 2 GB de disco duro que un par de años más tarde ampliamos a 200 MMX, Windows 98, 64 MB de RAM y una gráfica Voodoo Rush de 6 MB… pero al que también le puse más adelante una Nvidia Riva TNT y al final de su vida le puse una Voodoo 3.
 
    Como anécdotas puedo recordar que me compré el PC Fútbol 6.0 antes incluso de tener el ordenador, que me pasé el Final Fantasy VII subiendo todos los personajes al nivel 99, que antes de que saliera ese juego dejé toda la tarde encendido el PC para bajarse su demo (pesaba como 7 MB, pero mi módem era el que era) o que me escandalizó ver los requisitos mínimos anunciados para el Diablo 2 (64 MB de RAM y 800 MB de disco).

    Pero volviendo al tema principal de esta entrada, al llegar al instituto descubrí DIV Games Studio, un entorno de programación con una sintaxis similar al pascal que te permitía de una forma simple hacer juegos para MS-DOS y estos corrían sin problemas en Windows 95/98. No sé deciros cuantas horas dediqué a DIV Games Studio y a DIV 2 Games Studio, pero vamos, se convirtió en mi afición principal. Hacía juegos de carreras, RPG básicos, probaba los modos 7 y 8, hice un shoter ambientado en mi instituto, varios mata-marcianos, etc. De hecho, por 2014 compartí una entrada donde un colega de primaria me trajo un disquete con dos juegos míos que le copié en 1999 (https://www.elgeneralfailure.com/2014/05/dos-juegos-que-programe-cuando-tenia-16.html) y a continuación os comparto el gameplay de uno de ellos. No es el juego que me salió más resultón, pero sí uno de los pocos que a día de hoy sigo conservando (así que sintiéndolo mucho, esto es lo que hay).


 
 
    Vamos, que aún no había llegado a la universidad y ya programada con punteros, manejando regiones de memoria con malloc/free y haciendo uso de estructuras para gestionar mis "objetos" (lo pongo entre comillas debido a que DIV no soporta objetos de una forma evidente, pero aún así me refiero a la gestión de estructuras). Luego llegó Windows XP y se rompió bastante su compatibilidad, haciendo que dejara este hobby aparcado hasta que surgieron Unity, Unreal Engine y Godot (mi framework de programación de juegos favorito a día de hoy). Y entre tanto, lo intenté en su día con la plataforma de XNA de Microsoft, pero lo dejé porque el soporte de Microsoft era nefasto... y también con  Wii U (Nintendo me llegó hasta a regalar una licencia de Unity), pero sencillamente no podía permitirme pagar el precio que pedían por la consola de desarrollo.
 
    Y bueno, también estuve en su día catando DivGo, un framework que utilizando una sintaxis extremadamente parecida a Div te genera código en HMTL5 y con él hice asciialiens.com (juego del que llegué a perder su código fuente durante varios años, hasta que lo recuperé de un disco duro que tenía guardado). ¡Ah! Y con el gusanillo de programar jueguitos también aprendí a utilizar Blender (https://sketchfab.com/hamster_ruso). Os muestro uno de los modelos de los que me siento más orgulloso de haber modelado, Hinata Tachibana  de la serie Fabiniku:



 
    Y tras deciros todo esto, este puente me dieron ganas de volver a programar en DIV Games Studio y me puse a ver cómo podría hacerlo funcionar en un ordenador actual y dicho experimento me ha parecido bastante resultón. Y bueno, para resumir, lo he instalado y lo estoy ejecutando a través de DOSBox, un emulador de MS-DOS que es bastante potente y funcional. Actualmente existen alternativas más versátiles, como DOSBox X, pero para un uso "normal" el DOSBox original es más que suficiente.

    Ahora bien, para que la experiencia sea agradable, tenemos que tener en cuenta una serie de detalles:
  1. Definir una unidad de disco duro. Por defecto DOSBox te crea una unidad Z, pero lo ideal sería montar una carpeta de tu PC como C:\.
  2. Configurar DOSBox con unas limitaciones similares a los PC de la época (por ejemplo un Pentium 200, con 32 MB de RAM, gráfica S3 Virge con 4 MB de VRAM y 2 GB de disco duro).
  3. Conseguir una ISO del instalador de DIV o DIV2, montarla en tu equipo y luego como unidad dentro de DOSBox. En mi caso conservo el disco original de DIV y DIV2, por lo que simplemente puse mi disco de DIV2 dentro de un lector de CD externo y lo monté en DOSBox.
     
     La instalación de DOSBox es sencilla, simplemente tienes que ir a la página oficial (https://www.dosbox.com) y bajarte el instalable de tu sistema operativo. En sistemas Linux suele estar presente en todos los respositorios, pudiéndose instalar con el apt-get o yum de turno.
 
    Una vez instalado, se te genera un fichero de configuración en tu carpeta de usuario. En el caso de Windows podemos acceder a él buscando DOSBox en la barra de buscar y seleccionando el resultado que muestra "Options". Esto lo que hará será abrirnos el fichero de configuración dentro del bloc de notas de Windows.



    Y bueno, una vez abrimos dicho fichero, tenemos que reflexionar. En mi caso quería recrear el PC que tenía de adolescente. Lo primero que he hecho es informarme acerca del número de MIPS (millones de instrucciones por segundo) que tenía el procesador MMX a 200 MHz y tras buscar en Google llegué a una página (http://www.roylongbottom.org.uk/mips.htm#anchorMIPS1) donde se asegura que dicho procesador contaría con unos 227 MIPS.


     A nivel de DOSBox, 1 MIP equivaldría a 1000 ciclos de CPU. O lo que es lo mismo, para aplicar un rendimiento similar a aquel ordenador, debería de definirle un valor de 227000 ciclos en el apartado de CPU.



    Por otro lado tenemos la memoria RAM, que se define con la variable memsize dentro del apartado [dosbox] y se mide en megas. El valor 32 indica que mi instancia tendrá 32 megas. En este apartado también está el tipo de tarjeta gráfica, que en mi caso he dejado el valor por defecto ya que era la gráfica que tenía en antaño.


    Respecto a la memoria gráfica, no lo he visto documentado, pero parece ser que se trata de la variable vmemsize del apartado [sdl] y que se mide en megas.


    Para el disco duro de 2GB, utilizo el comando mount dentro del apartado [aoutexec] (apartado que contiene todos los comandos que quieres que se ejecuten automáticamente al arrancar DOSBox). La utilización de mount es sencilla, es indicar una unidad (C), decirle la carpeta donde quieres que se monte el falso disco duro y luego tienes el parámetro opcional freesize, donde le indicas la capacidad disponible por defecto en megas. Es importante poner por lo menos un giga (1024 megas), puesto que por defecto DOSBox dice que hay siempre 249 MB disponibles y el instalador de DIV no te dejará instalar casi nada por falta de espacio. Veréis que también meto una línea "C:" (sin nada más), esto es para que cuando arranque DOSBox éste me posicione directamente en dicha unidad.



    Podrías aprovechar ese [autoexec] para montar también la unidad de CD que contenga tu disco de instalación de DIV, pero teniendo en cuenta que es algo que sólo harás una vez, pues no considero que valga la pena. Básicamente abre DOSBox por primera vez y montas la unidad con un comando de mount. Por ejemplo, si tienes el disco (o la ISO montada) en la unidad D:\, bastaría con telcear lo siguiente: mount D "D:\"

     La diferencia está en que si lo montas desde el [autoexec] esa unidad se montará siempre y que si lo montas desde la consola ésta sólo estará montada durante dicha sesión. Y bueno, una vez abrimos DOSBox y montamos la unidad, ejecutaremos el INSTALL.EXE. Os comparto esta captura de pantalla, por si no sabéis manejaros con MS-DOS, en la que básicamente hago 4 comandos:
  • mount J "J:\" -> Para montar mi unidad de CD en J:
  • J: -> Para entrar dentro del disco.
  • dir -> Para listar en contenido del disco.
  • INSTALL.EXE -> Para lanzar la instalación.


 
    Y si lo habéis hecho bien, veréis la siguiente pantalla. Simplemente dejad todo en MAX y clicad en "INSTALAR". Si no habéis usado el "-freesize" para vuestra unidad C (como os he recomendado), seguramente esta etapa os dará problemas puesto que no podréis instalaros casi nada (la instalación máxima ocupa unos 532 MB y sin el freesize DOSBox dirá que sólo tienes disponibles 249 MB).


     Si todo va bien se os abrirá a continuación una barra de progreso y el proceso de copia durará unos minutos (desde un CD original el proceso es más lento que desde una ISO).
 


    Una vez se acabe la instalación se mostrará una popup informativa y al clicar en su botón de "aceptar" serás devuelto al MS-DOS, pero redirigido a la carpeta donde has instalado DIV2. Para ejecutar el entorno bastaría con teclear d o d.exe (los .exe los puedes omitir y aunque el ejecutable se llame D.EXE, MS-DOS no hace diferencias entre mayúsculas o minúsculas).

    La primera vez que arranques el entorno te pedirá que insertes tu nombre y a qué compañía perteneces. Esta información no es obligatoria e incluso puedes cerrar directamente la popup, pero resulta recomendable rellenar esos datos (sin miedo, esto es de la época anterior al auge de Internet) porque son datos que se auto-rellenan cuando haces los instalables para los juegos. Por cierto, puedes poner la ventana en pantalla completa (y salir de ella) pulsando simplemente las teclas ALT y ENTER a la vez.


 
 
    Cosas a tener en cuenta:
 
- Si vas a tener esta instancia de DOSBox únicamente para ejecutar DIV, puedes editar el [autoexec] para forzar que arranque DIV al iniciarse DOSBox.


- Puedes acceder al contenido del C:\ de tu DOSBox desde el administrador de archivos de tu ordenador. Esto es útil si quieres transferir recursos (imágenes, canciones, etc) para tus juegos o para editar las fuentes desde el Notepad++ (por ejemplo).



-  DIV2 cuenta con muchos ejemplos "ocultos". Existe una carpeta USER que contiene varios prototipos creados en DIV1 por usuarios de la comunidad que Hammer Technologies decidió incluir en el disco de DIV2. Entre esos ejemplos hay un juego de Dragon Ball e incluso un Zelda. También hay una carpeta WLD que contiene un ejemplo de cómo usar el modo 8 (el 3D que intentaba imitar al Doom de 1993).
 






    Y por último el consejo más importante: Puedes salir de cualquier juego programado en DIV pulsando a la vez ALT y X. Esto te salvará la vida bastantes veces, puesto que no todos los ejemplos que incluye el framework poseen una tecla para salir del juego.

No hay comentarios:

Publicar un comentario

Si te ha gustado la entrada o consideras que algún dato es erróneo o símplemente deseas dar algún consejo, no dudes en dejar un comentario. Todo feedback es bienvenido siempre que sea respetuoso. También puedes contactarme por estas redes sociales https://linktr.ee/hamster_ruso si lo consideras necesario.