Bluetooth en Amstrad CPC: cargando un juego desde PC

Cargando Platform Climber en CPC 464 por BluetoothLas nuevas expansiones para nuestros Amstrad CPC nos dan muchas posibilidades. En este artículo hablamos de CPC Minibooster, un hardware para comunicar el CPC con otros equipos por puerto serie, USB o bluetooth. En el ejemplo cargamos un juego en el CPC, desde un fichero .sna (imagen snapshot) alojado en el PC. Os contamos todo lo necesario y las utilidades de esta expansión. También incluimos un vídeo con el resultado, mostrando como se copia el fichero .sna al CPC.

Sin lugar a dudas, se trata de una herramienta muy potente que abre un mundo de posibilidades. Se puede utilizar el PC como pasarela a Internet para que el Amstrad pueda acceder a servidores remotos o para darle acceso a un videojuego de 50 MB de tamaño como si fuera un disco duro o una memoria virtual. ¿Qué será lo próximo que veamos en Amstrad gracias a estas expansiones? ¿Os imagináis un “World of Warcraft” para CPC? Todo es posible :).

Ingredientes

Antes de empezar una buena receta, necesitamos los ingredientes para que salga bien ;). Estos son los que hemos utilizado:

Por dónde empezamos

Lo primero sería tener todo el hardware conectado y operativo. Para no liarnos, explicaremos en otro artículo cómo instalar y configurar los componentes. Aquí empezamos suponiendo que ya está todo instalado y configurado, como en el vídeo que os adjuntamos.

Vamos al grano. De forma resumida, estos son los pasos:

  1. Cargamos un juego en un emulador y creamos un snapshot (juego.sna)
  2. Emparejamos el módulo bluetooth del CPC Minibooster con el del PC.
  3. Ejecutamos el programa AFT en el PC, con juego.sna como fichero.
    • AFT esperará a que el Amstrad se conecte para enviarle juego.sna.
  4. Ejecutamos la orden |SNA en el Amstrad para iniciar la copia.

Como véis, conociendo como funcionan estos pasos, copiar juegos y programas por bluetooth al CPC es muy fácil y rápido. Copiar 64K apenas tarda unos 4 o 5 segundos. Vamos a ver cada paso en detalle.

Crear un snapshot

Un snapshot es una imagen completa del estado de la memoria, el procesador y los dispositivos del Amstrad en un instante. Es lo mismo que hacen nuestros PCs modernos cuando los hibernamos. Toda esta información se guarda en un fichero (.sna), para restaurarla más adelante.

Podemos crear un snapshot desde un emulador fácilmente:Creando un snapshot del Platform Climber con WinAPE

  1. Abrimos WinAPE y cargamos un juego (en nuestro ejemplo, cargamos Platform Climber)
  2. Elegimos File > Save Snapshot…, o pulsamos F6.
  3. Desactivamos la opción de Compresión (no funciona para la transferencia al Amstrad real).
  4. En nuestro caso, hacemos un snapshot de 64K, porque vamos a ejecutar en un CPC 464. Para un 6128 elegiríamos 128K y, si tenemos necesidades especiales, podemos configurar las partes concretas de la RAM que queremos salvar.

El gif animado de la derecha muestra este proceso (pinchar para ver en grande).

Emparejar los módulos bluetooth

Como sucede en nuestros móviles o con cualquier par de dispositivos bluetooth, para poder comunicarse tienen que estar emparejados. Para hacer esto, podemos utilizar el software del sistema operativo del PC, buscar el CPC Minibooster (aparece con ese nombre) y asociarlo usando el pin 1234. Esta operación crea un puerto en el sistema (normalmente /dev/rfcomm0 en Linux, COM1 en Windows) para establecer la comunicación. Ese puerto es el que utilizarán los programas para comunicarse con el CPC.

En Windows es posible que tengamos que instalar los drivers USB para el CPC Minibooster antes de realizar estos pasos.

En Linux también podemos hacer esto en la línea de comandos:

  1. Averiguamos la dirección MAC del dispositivo CPC Minibooster escaneando:
    $$ hcitool scan
    Scanning...
        11:22:33:44:55     CPC Minibooster
  2. Editamos el fichero /etc/bluetooth/rfcomm.conf.
    • En él se asocian dispositivos bluetooth a puertos de comunicaciones.
  3. Añadimos el siguiente trozo de código y salvamos:
    rfcomm0 {
        bind yes;                ## Asociar automaticamente
        device 11:22:33:44:55;   ## Aqui va la direccion mac de nuestro CPC Minibooster
        channel 1;               ## El CPC Minibooster solo va en el canal 1
        comment "Puerto serie 1 para el CPC Minibooster";
     }
  4. Ejecutamos el agente bluetooth para que envíe el pin 1234 y realizamos la asociación de los 2 dispositivos a través del puerto /dev/rfcomm0, en 2ª plano:
    $$ bluetooth-agent 1234 &
    $$ rfcomm connect rfcomm0 &
    Connected /dev/rfcomm0 to 11:22:33:44:55 on channel 1
    Press CTRL-C for hangup 

Nota: algunos de estos comandos pueden requerir permisos de administrador (hará falta ejecutarlos con el comando sudo delante)

Aunque esto parece más lioso al principio, tiene la ventaja de que se puede automatizar. Los pasos 1 y 2 sólo los tenemos que hacer una vez. Si ponemos los comandos siguientes en un script, con ejecutarlo cada vez que nos haga falta todos los demás pasos se harán automáticamente. En el vídeo los hemos incluido todos en el script connect2cpc-bluetooth.sh que os incluimos para que descarguéis.

Lanzar el servidor de ficheros Arkos File Transfer (AFT)

Incluído en el software del CPC Minibooster, viene el programa Arkos File Transfer que hace de servidor de transferencia de ficheros en el PC. Este programa se conecta a un puerto de comunicaciones (COM) y espera a recibir señales desde un CPC para enviarle un fichero. Este programa tenemos que lanzarlo en línea de comandos tanto en Windows como en Linux. En Linux puede que el ejecutable no os funcione y tengáis que recompilar los fuentes. Al final de este artículo tenéis un apéndice explicando cómo hacerlo.

Para empezar, es recomendable que leamos la ayuda del programa:

C:\...\AFT\> aft.exe -h

Conociendo las opciones, podéis trastear el programa para conseguir distintas formas de envío y comunicación. Para poder enviar al CPC el fichero juego.sna, usaríamos este comando:

C:\...\AFT\> aft.exe -p 1 -f juego.sna

Así le decimos que lance el servidor de transferencia en el puerto COM1 y envíe juego.sna cuando reciba comunicación desde el CPC. El fichero juego.sna tiene que estar en la misma carpeta que aft.exe. En algunos casos, el puerto COM en Windows será otro: sólo tenéis que cambiar el número de puerto en el comando (después de -p). En Linux el comando sería parecido:

$$ ./aft -p /dev/rfcomm0 -f juego.sna
aft (c) Targhan/Ramlaid/Krusty/PulcoMandy (Aug 20 2015)

AFT now listening on /dev/rfcomm0

En Linux es posible que os haga falta permisos de administrador, por lo que tendréis que ejecutar el comando con sudo delante. Como veréis en el vídeo, también hemos hecho un pequeño script llamado sendfile-cpc.sh para lanzar este comando más cómodamente.

Empezar la transferencia desde el CPC

Con todo preparado, sólo hace falta irse al Amstrad CPC e iniciar la transferencia ejecutando el programa SNARKOS. La forma de ejecutarlo es muy sencilla, sólo hay que escribir este comando RSX:

|SNA

Si todo va bien, el CPC comenzará a recibir el snapshot y en unos pocos segundos estará ejecutándose en nuestro Amstrad.

Para que esta última parte funcione, es necesario tener instalada y cargada la ROM SNARKOS.ROM. En nuestro ejemplo, esta ROM la teníamos ya cargada en la Expansión X-MEM. En otro artículo os contaremos como se cargan y gestionan las ROMS con esta extensión y el software que trae incluído.

Links

Apéndice: Recompilar Arkos File Transfer en Linux

A veces os puede ser necesario recompilar AFT en Linux para poder utilizarlo. El código fuente viene con el software del CPC Minibooster, pero no compila por sí sólo. Faltan 2 ficheros: rs232.h y rs232.c, que no están incluídos, y hay que hacer un cambio a uno de los ficheros que vienen. Para evitaros trabajo, os dejamos un zip con los ficheros necesarios. Aquí tenéis los 2 ficheros rs232 y un fichero Makefile que hace todo lo necesario automáticamente. Esto es lo que tenéis que hacer:

  • Descomprimir aft_patch.zip en la misma carpeta donde están los ficheros fuente del Arkos File Transfer (AFT).
  • Entrad en la carpeta desde la consola de comandos y teclead
    $$ make

Con esto os debe compilar correctamente y generar el ejecutable aft listo para funcionar en vuestro sistema.

Un comentario en “Bluetooth en Amstrad CPC: cargando un juego desde PC

Deja un comentario