Retro Virtual Machine, ¡Nueva versión!

Pues sí señores, tenemos novedades de nuestro emulador preferido, Retro Virtual Machine. Y no solo para corregir bugs o hacer una mejora menor. No nada de eso, es un cambio de cara en toda regla, y además aumentando por fin en número de sistemas soportados hasta una cifra que pocos podíamos imaginar.

En esta nueva versión 2.1, ahora mismo se encuentra en la iteración 2.1.11, contamos con numerosas mejoras pero sobre todo la emulación de nuevos sistemas. Entre los que podemos encontrar MSX-1, SG-1000, Sega Master System y Colecovision. Además por su puesto de las familias ya soportadas como Spectrum y Amstrad se han incorporando más modelos.

¡Vamos como podéis ver una pasada el avance que ha tenido el emulador!

Más sistemas que nunca emulados

Sistemas emulados por Retro Virtual Machine

Pues como hemos comentado en el párrafo de apertura, impresiona la cantidad de sistemas que se han incorporado a Retro Virtual Machine, aunque tal y como comenta Juan Carlos González, esto ha sido gracias a que compartían bastantes similitudes a nivel de hardware, exceptuando nuestro querido Amstrad, claro. Ya tan solo nos faltaría que emulara Zx Spectrum Next, 😉

Debug

Eso sí, si usabas el modo Debugger para desarrollar tus juegos y verificar que todo funcionaba correctamente, no te quedará otra que usar la versión 2.0 ya que todavía no se ha implementado correctamente en esta edición. Pero quizá has llegado hasta aquí y no tienes claro que es realmente Retro Virtual Machine.

¿Qué es Retro Virtual Machine?

Retro Virtual Machine es un emulador multiplataforma que te permite jugar juegos de varias consolas clásicas, como Zx Spectrum, Amstrad CPC, MSX-1, SG-1000 y Sega Master System, en tu computadora. ¡Y lo mejor de todo es que no tienes que preocuparte por gastar dinero en consolas antiguas o juegos caros! Podrás desde el mismo emulador disponer de un montón de máquinas de 8 bits.

Y es que según palabras del autor, realmente lleva en desarrollo casi diez años desde su primera versión. O sea que no es que no entienda del tema. Pero realmente que lo diferencia de otros emuladores que podemos encontrar en internet.

Aquí podéis descargaros el mismo desde la página oficial:

https://retrovirtualmachine.org/

Características de Retro Virtual Machine

Retro Virtual Machine Time Sniper Game
Emulación precisa

Retro Virtual Machine basa su enfoque en emular el hardware original de las distintas consolas y ordenadores que emula, por lo que la emulación propiamente dicha consigue ser ejecutada de una manera mucho más realista que en el resto de emuladores.

Multiplataforma

Su autor se preocupa de distribuir su emulador para Windows, macOs y Linux, por lo que ningún usuario se quedará sin poder probarlo por culpa de no ser compatible con su sistema operativo.

Fácil de usar

La instalación configuración y uso de Retro Virtual Machine es un juego de niños al lado de otros emuladores. Además gracias a su interfaz gráfica donde simula los dispositivos de lectura de cada equipo, como puede ser el clásico cassette de carga de cintas del Zx Spectrum, para los usuarios se hace todo muy intuitivo y a la vez aumenta el grado de recreación del sistema real.

Soporte para múltiples formatos de archivo

Por si todo lo comentado anteriormente fuera poco, el emulador soporta una gran variedad de formatos de archivos e incluso es capaz de descomprimir directamente los ficheros comprimidos de tipo zip y ejecutar internamente el fichero. El listado de algunos de los formatos soportados es: .tap, .tzx, .sna, .z80, .dsk, .trd, .scl, .m3u y .wav

Soporte para múltiples idiomas

Desde luego siempre es de agradecer que los programas presenten varios idiomas y Retro Virtual Machine no va a ser menos. Este emulador retro actualmente lo podemos encontrar traducidos a español, inglés, francés, alemán, italiano, portugués y ruso.

Emulador web incrustable

Y si todo esto esto te ha parecido poco, encima Juan Carlos González, el creador de esta joya, se ha sacado de la manga una versión incrustable en web que permite correr perfectamente tanto Zx Spectrum como Amstrad CPC. De hecho tenéis un ejemplo de cómo funciona en esta misma página web:

https://lacavernainformatica.com/mis-juegos-en-rvmp/

O en mí página de Itch.io:

https://radicalcomputerscompany.itch.io/

Para descargaros y ver las instrucciones del autor lo tenéis en el siguiente enlace:

RVMPlayer

¿Cómo añadir RVMPlayer a mí página web?

Retro Virtual Machine Web Player

Lo primero hemos creado un selector con los nombres de los juegos que queremos que se lancen. En este caso podéis ver los dos que tengo yo publicados.

<form>
  <select id="games">
    <option value="0">Selecciona Juego</option>
    <option value="1">Ganimedes</option>
    <option value="2">Princess_Rescue</option>
  </select>
</form>

Luego justo debajo tenemos el código que realmente ejecuta todo el proceso.

<div class="rvmp" style="position: relative; width: auto; height: 600px;"></div>

<script>
  function lanzar_rvmp(url_game, warptime) {
    const rvmp = document.querySelector('.rvmp');
    rvmPlayer_plus3(rvmp, {
      disk: {
        type: 'dsk',
        url: url_game,
      },
      command: '\n',
      warpFrames: warptime * 50,
      video: false,
      videoMode: 'tv'
    });
  }

  var e = document.getElementById("games");

  function onChange() {
    sessionStorage.setItem("game", e.options[e.selectedIndex].text);
    sessionStorage.setItem("value", e.value);
    var urlgame = "https://lacavernainformatica.com/rvmp/" + sessionStorage.getItem('game') + ".dsk";
    sessionStorage.setItem("urlgame", urlgame);
    location.reload();
  }

  e.onchange = onChange;

  window.onload = function() {
    var value = sessionStorage.getItem('value');

    if (value) {
      console.log("Restaurando valores de la sesión");
      console.log(sessionStorage.getItem('value'));

      // Restauramos el valor almacenado en la sesión en el select
      e.options.selectedIndex = value;

      // Restauramos las variables
      var game = sessionStorage.getItem('game');
      var urlgame = sessionStorage.getItem('urlgame');

      console.log(value);
      console.log(game);
      console.log(urlgame);

      if (value > 0) {
        console.log("Lanzamos rvmp");

        if (value == 1) {
          var warp = 45;
          console.log(warp);
        }

        if (value == 2) {
          var warp = 28;
          console.log(warp);
        }

        lanzar_rvmp(urlgame, warp);
      }
    }
  }
</script>

La primera sección es la función que viene documentada para lanzar el RVMPlayer.

La función onChange() es la que nos permite recuperar el valor seleccionado en el formulario inicial cada vez que el usuario cambia de elección. Luego una vez que tenemos eso ya sabemos que juego queremos ejecutar.

Para ello lo primero que hemos hecho es renombrar los ficheros que usa el emulador para que coincidan con los que tendrá que cargar el emulador. De esa manera con tan solo el selector de arriba ya podemos saber que fichero le tenemos que mandar al emulador y construir la url donde está alojado nuestro juego.

También hemos cambiado algunos parámetros de ejecución del emulador como el warp, que es el tiempo de aceleración de la carga, que como era de esperar no coincide para ambos juegos por lo que hay que ajustarlo personalmente a cada uno de ellos.

Luego con la variable urlgame conformada y el warp, simplemente llamamos al emulador con lanzar_rvmp(urlgame, warp);

Y listo ya tenemos una forma de publicar varios juegos en la misma pantalla y que el emulador solo se lance una vez.

Desgraciadamente por motivos de seguridad de los nuevos navegadores, no podemos hacer la autoejecución del emulador sin que el usuario pinche en la pantalla del mismo.

Pues nada eso ha sido todo, espero que os animéis a probar Retro Virtual Machine y el RVMPlayer.

Si queréis ver otros temas relacionados el mundillo retro, no podéis dejar de leer como desarrollé mi último juego para el Zx Spectrum usando el engine MPAGD.

https://lacavernainformatica.com/ganimedes-mi-juego-para-zx-spectrum/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

diecinueve − 1 =