Logo
 
BARE METAL ZX SPECTRUM EMULATOR FOR THE RASPBERRY PI

ZXBaremulator es el primer emulador bare-metal completo de los ZX Spectrum 48K/128K/+2A para la Raspberry PI.

Descripción

Un programa bare-metal es aquel que no necesita cargar primero un sistema operativo para funcionar. La carga es instantánea y tiene todos los recursos de la máquina a su disposición. Pero, como casi todo en la vida, esto tiene una cara B. El programador no tiene nada en lo que apoyarse para programar, hay que desarrollarlo todo desde cero y sin poder utilizar cómodos depuradores o librerías sofisticadas. Aún así, éste emulador no hubiera sido posible sin una librería en particular, la Circle de Rene Stange. De modo que, si encuentras algo que no te gusta o te parece espartano, ten en cuenta las limitaciones a las que me enfrento al desarrollar algo como ZXBaremulator.

Características principales

  • Soporte para los modelos de Raspberry PI-1, PI-2 y PI-3 en todas sus variantes. La Raspberry PI 4 aún no está soportada.
  • Emulación Z80 precisa (instrucciones indocumentadas, registro escondido WZ, bits 3 y 5 del registro 'F').
  • Emulación precisa del Spectrum 48k/128k/+2a (borde completo, redibujado de la pantalla en tiempo real, memoria en contienda, bus flotante, efectos de color de alta resolución).
  • Emulación de joystick Kempston/Sinclair 1-2/Cursor-AGP-Protek/Fuller/QAOPSpaceM usando un mando de PS3/PS4 DualShock o compatible, XBox360, XBox One o Nintento Switch Pro Controller en modo USB (no soporta Bluetooth).
  • Soporte para el adaptador MAGIC-NS de Mayflash, para que puedas conectar los mandos vía Bluetooth.
  • Emulación de Kempston Mouse utilizando un ratón USB estándar.
  • Carga acelerada de cintas virtuales TAP/TZX. Se muestra la carga original completa (siempre que ha sido posible).
  • Emulación del beeper/AY-3-8912 el sonido sale por el conector HDMI o por el jack de 3.5mm cuando se usa la salida de vídeo compuesto.
  • Soporte de interfaz Multiface One/128/+3. Ya puedes trucar el Abu Simbel Profanation.
  • Los juegos ya no van embebidos, ¡tú escoges cuales son tus preferidos!, hasta un límite de 1100.
  • Se le puede conectar un teclado de Spectrum real a los GPIO, para poder aprovechar alguna carcasa que tengas sin placa funcional.
  • Soporte para el teclado USB Recreated ZX Spectrum, conectándolo por cable USB.
  • ¡No necesita Linux!. Carga instantánea desde la µSD.

Novedades de la versión 3.2

  • Gracias a Damian Lynch, que me donó amablemente el material necesario para poder desarrollar el código que permite conectar un teclado real de Spectrum 48k, Spectrum+ o Spectrum 128K (pero no los +2a/+3) a la Raspberry PI vía GPIO, según el montaje impreso en la revista The MagPI número 67.
  • Se ha añadido soporte para el adaptador USB MAGIC-NS de Mayflash. Con él se pueden conectar un montón de mandos, tanto por cable como por Bluetooth. El adaptador debe estar en modo DirectInput (LED de color azul).
  • Se recupera el soporte de las Raspberry PI A+/B+/Zero/ZeroW, lo que les proporciona de golpe todas las mejoras acumuladas, excepto el sonido HDMI, que en estos modelos es vía PWM en el conector de 3.5mm.
  • Se han optimizado y simplificado las rutinas de dibujado de la pantalla y el borde.
  • Se ha acelerado un poco el método de carga de las cintas virtuales.
  • He tenido que incluir, en la pantalla de ayuda, un mensaje que advierte de que ZXBaremulator es gratis. Un fistro de pecadorl de lo más espabilao ha estado vendiendo el emulador en eBay sin mi permiso. Si has pagado por mi emulador, te han engañado como a un chino.

Novedades de la versión 3.1

  • Por fin hay un navegador de ficheros, sin límite (teórico) de archivos. Pon tus TAP/TZX donde quieras y como quieras y navega entre directorios.
  • Soporte del teclado Recreated ZX, gracias al usuario Hikoki que, generosamente, me donó uno. El teclado debe estar en modo Layer A.
  • Se ha añadido soporte para los gamepads originales de PS4, XBox360, XBox One y Nintendo Switch Pro Controller.
  • El stick analógico izquierdo puede usarse ahora también como teclas de dirección, pero ten en cuenta que ciertos juegos no funcionan bien con él, depende de como traten el teclado.
  • Gracias, una vez más, a Jorge Castillo (pastbytes), la pantalla de ayuda de teclado está actualizada y se ha añadido la pantalla de ayuda específica del teclado Recreated ZX.

Descargas

Como usarlo

  • Partiendo de una SD/µSD preinstalada con Linux, renombra el kernel.img o kernel7.img para no perderlo, y luego copia la imagen que corresponda a tu modelo de PI. O partiendo de una tarjeta SD/µSD nueva y formateada con FAT32 extrae todos los archivos del ZIP y copialos en la tarjeta.
  • Copia tus juegos favoritos a la tarjeta SD/µSD, organizados como tú quieras.
  • Necesitas conectar un teclado USB a la PI antes de arrancarla, no soporta conexión en caliente. También puedes conectar un teclado Recreated ZX solo o junto a un teclado USB estándar y un gamepad original de PS3, PS4, XBOX360, XBox One o Nintendo Switch Pro Controller. Ten en cuenta que es muy posible que necesites una fuente de alimentación de, como mínimo 2A, y he comprobado que incluso una de 2,5A cuando conectas varios de ellos a la vez, ya que especialmente en el arranque, pueden pedir mucha corriente. Si conectas un ratón USB podrás emular el Kempston Mouse cuando no esté seleccionado el joystick Kempston.
  • Escoge una cinta virtual entrando en la ayuda con F1 y usando el selector de cintas y luego LOAD "" + [ENTER]
  • Tecla F1: Ayuda.
  • Alt Izq. + 'K': Ayuda de teclado
  • Pulsando repetidamente la tecla [Select / SHARE / View / Capture] del joystick se cambia el modelo emulado siguiendo el ciclo:
    Modelo Equis (X) ó A Círculo (O) ó B Cuadrado ó X Triángulo ó Y L1 - R1 L2 - R2
    None------------------
    KempstonDisparoDisparo 2Disparo 2DisparoDisparoDisparo 2
    FullerDisparoDisparo 2Disparo 2DisparoDisparoDisparo 2
    Sinclair 1DisparoTecla 'x'Tecla 'x'DisparoDisparoTecla 'x'
    Sinclair 2DisparoTecla 'z'Tecla 'z'DisparoDisparoTecla 'z'
    Cursor/AGF/ProtekDisparoTecla '9'Tecla '9'DisparoDisparoTecla '9'
    QAOPSpaceMDisparo (Space)Disparo 2 (Tecla 'm')Disparo 2 (Tecla 'm')DisparoDisparoDisparo 2 (Tecla 'm')

Como usar el teclado Recreated ZX

  • El teclado debe ser conectado antes de encender la Raspberry PI y el interruptor de selección de modo debe estar posicionado en Layer A. Puede estar conectado como único teclado o como un segundo teclado, a la vez que un teclado USB estándar. Ambos teclados funcionan sin interferirse. En cualquier caso, y especialmente si está como teclado único, el teclado Recreated ZX tiene dos modos de funcionamiento:
    • Modo normal: es el modo en que se puede teclear como si de un "gomas" se tratara.
    • Modo alternativo: se entra a este modo con la combinación de teclas Caps-Shift + Symbol-Shift + ENTER. En el momento de teclear la combinación, se muestra un mensaje de aviso y se imprime un icono indicador en la parte inferior derecha de la pantalla. En ese modo, las teclas '1' a '0' se comportan como las teclas F1 a F10 de un teclado USB normal. La tecla Symbol-Shift hace las veces de tecla 'Alt', por tanto, con Symbol-Shift+K aparecerá la ayuda del teclado donde se muestran todas las combinaciones de teclas aplicables al teclado Recreated ZX. Se sale de este modo usando la misma combinación de teclas que para entrar.
  • Para que todo funcione bien, debes usar una fuente de alimentación que proporcione suficiente corriente a la PI. Si en algún momento ves que en pantalla te sale el icono de un rayo, es que no le está llegando suficiente voltaje a la raspberry. Puedes consultar los iconos que puede mostrar el firmware de la PI aquí. No te fíes de las fuentes de alimentación de "los chinos", raramente sacan la mitad de la corriente que anuncian en su placa de características y, además, esa corriente suele ser de muy mala calidad. Cuando conecto un teclado USB normal, el Recreated ZX y un gamepad de Xbox One S a mi Pi-2, tengo que usar la fuente de alimentación de mi PI-3, que es de 2.5A en lugar de la recomendada para la PI-2 que es de solo 2A.

Como usar un teclado real por GPIO

  • En la revista oficial The MagPI número 67 apareció un montaje muy sencillo que permite conectar un teclado de Spectrum 48k, Spectrum+ o los primeros 128k, pero no los +2a/+2b/+3, a los GPIO de la Raspberry. A diferencia del montaje, que utiliza un programa en Python para leer el teclado cada 60 segundos y convertirlo en pulsaciones de teclado estándar, en ZXBaremulator el teclado se lee como lo haría un verdadero Spectrum, es decir, con cada lectura del puerto #FE, que es el del teclado (en realidad con todos los puertos pares, pero esa es otra historia y deberá ser contada en otra ocasión). Esto tiene la ventaja de que la lectura de teclado, a diferencia del USB, no sufre ningún tipo de "lag", y se lee tantas veces como lo haya programado el desarrollador.
  • El montaje permite poner o no el pulsador que va conectado al GPIO21 y que da acceso al teclado extendido, al estilo de como se hace con el teclado Recreated ZX Spectrum. Si no se quiere poner el pulsador, se accede y se sale del modo extendido con la combinación Caps-Shift+Symbol-Shift+ENTER, y mientras se está en ese modo aparece en pantalla un icono de un teclado de color azul.
  • El teclado por GPIO es compatible tanto con un teclado USB real como con el Recreated ZX. De hecho, pueden estar conectados los tres sin problemas. En ese caso, si se pulsa el botón o se teclea la combinación, el teclado GPIO tiene prioridad sobre los otros.
  • Aquí tienes un vídeo con un ejemplo breve de uso:

AVISO LEGAL

  • ESTE SOFTWARE NO PUEDE SER VENDIDO, NI COMO PRODUCTO, NI COMO PARTE DE UN PAQUETE COMERCIAL.
  • SI HAS PAGADO POR EL, AUNQUE SEA INCLUIDO COMO PARTE DE OTRO PAQUETE, TE HAN ENGAÑADO Y DEBERIAS EXIGIR LA DEVOLUCIÓN ÍNTEGRA DEL IMPORTE.

© 2017-2020 José Luis Sánchez (jspeccy at gmail dot com) - All rights reserved (2020/01/20)