Logo
 
BARE METAL ZX SPECTRUM EMULATOR FOR THE RASPBERRY PI

ZXBaremulator is the first complete ZX Spectrum 48K/128K/+2A bare-metal emulator for the Raspberry Pi computers.

Emulator features

  • Support Raspberry Pi models A+/B+/Zero/ZeroW, 2 & 3 (no PI-4 support).
  • Precise Z80 emulation (undocumented opcodes, hidden WZ register, bits 3-5 from 'F' register).
  • Precise Spectrum 48k/128k/+2a emulation (full border, real-time screen drawing, contended memory, floating bus, hi-res color effects).
  • Kempston/Sinclair 1-2/Cursor-AGP-Protek/Fuller/QAOPSpaceM joystick emulation using a PS3/PS4 DualShock gamepad, XBox360, XBox One or Nintendo Switch Pro Controller in USB mode (no Bluetooth supported).
  • Mayflash's Magic-NS USB adapter supported.
  • Kempston Mouse emulation using a standard USB mouse.
  • Accelerated tape loading from virtual TAP/TZX tapes (when possible). Original tape loaders are preserved.
  • Beeper/AY-3-8912 emulation.(no HDMI sound, sigh!).
  • Multiface One/128/+3 support. You can cheat Abu Simbel Profanation, at last!.
  • A real Spectrum keyboard can be connected to GPIO pins.
  • Support of Recreated ZX Keyboard.
  • Up to 1100 files can be loaded from Tapes subdirectory.
  • No Linux needed!. Super-fast loading from µSD.

New features version 3.3 (2024/05/04)

  • Corrected a notable bug on the Z80 core that don't allow to load Digital Integration games (ATF, Bobsleigh, TT-Racer). Thanks to Victor Iborra, aka Eremus, by his invaluable help.
  • The initial Spectrum model is now configurable. Added a parameter to cmdline.txt file. Add model=[48k | 128k | plus2a] to start with these model. The default model is 48k, as usual.
  • Was not possible to look for tapes starting with "P" letter.
  • Resolved a bug with handling wireless keyboards.
  • Some small keyboards doesn't have the needed keys for Pause and Reset functionality. Added shortcuts Alt+R for Reset & Alt+P for Pause.
  • Correct a bug in pagination that breaks Song in Lines 4 demo
  • Corrected the emulation of HALT instruction.
  • Corrected the emulation of LDxR/CPxR/INxR/OUTxR instructions with 3 & 5 flags and WZ hidden register.
  • A dedicated Telegram channel has been created. t.me/ZXBaremulator

New features version 3.2

  • Thanks to Damian Lynch, that kindly donates me the parts needed to develop the code that allow to connect a Spectrum 48k, Spectrum+ or 128k keyboard using the GPIO pins, following the build printed in The MagPI #67.
  • Added support for Mayflash's Magic-NS USB adapter. This allow to use many knowns gamepads in wired mode or Bluetooth, configuring the adapter in DirectInput mode (blue LED light).
  • Support restored for Raspberry PIs ARMv6 based (A+/B+/Zero/ZeroW) models. Not HDMI sound, as before, only PWM using the 3.5mm jack.
  • Added an info message in the 'F1' Help screen. A "smart" shameless guy is selling ZXBaremulator in eBay without my permission. Don't pay for it!.

New features version 3.1

  • Added a file browser, so you can have so many TAP/TZX files as you want, using your favourite organization.
  • Added support for Recreated ZX keyboard, used with or without a standard USB keyboard. Thanks to the user Hikoki that kindly donates me a recreated keyboard.
  • Added suport for PS4, XBox360, XBox One and Nintendo Switch Pro Controller gamepads.
  • Left analog stick can be used now as directional control keys but, beware, not every game is happy with that.
  • Thanks, one more time, to Jorge Castillo (pastbytes), the help screens are updated.

Downloads

Usage

  • Get a new SD card FAT32 formatted and copy the all files pack.
  • Copy to your SD/µ your preferred TAP/TZX files. No special directory needed now. Insert on your Raspberry PI and... play!
  • You need an USB keyboard connected to the PI before switch on, no USB hot-plug. Optionally you can plug a PS3/PS4/XBox360/XBox One/Nintendo Switch Pro Controller gamepad and an USB mouse.
  • Choose a virtual tape from tape selector and type LOAD "" + [ENTER]
  • F1 key: Help.
  • Left Alt + 'K': Keyboard Help
  • Pressing [Select / SHARE / View / Capture] gamepad key the emulated joystick changes to:
    Model Cross (X) or A Circle (O) or B Square or X Triangle or Y L1 - R1 L2 - R2
    None------------------
    KempstonFireFire 2Fire 2FireFireFire 2
    FullerFireFire 2Fire 2FireFireFire 2
    Sinclair 1FireKey 'x'Key 'x'FireFireKey 'x'
    Sinclair 2FireKey 'z'Key 'z'FireFireKey 'z'
    Cursor/AGF/ProtekFireKey '9'Key '9'FireFireKey '9'
    QAOPSpaceMFire (Space)Fire 2 (Key 'm')Fire 2 (Key 'm')FireFireFire 2 (Key 'm')

How to use a Recreated ZX keyboard

  • The keyboard should be plugged before switch on the Raspberry PI and the mode selection switch should be in Layer A mode. Can be connected with or without a standard USB keyboard. The Recreated keyboard have two working modes:
    • Standard mode: works exactly as a real Spectrum 48k rubber keyboard.
    • Alternate mode: You can enter to this mode using the key combination Caps-Shift + Symbol-Shift + ENTER. Then, you can watch an informational message on screen and an icon is printed on lower right corner. Then, keys '1' to '9' works as F1-F10 from a standard keyboard, and the Symbol-Shift key acts as the 'Alt' modifier key, so pressing Symbol-Shift + K you can see a help screen with key combinations for this mode. You can exit from this mode using the same key combination used to enter on it.
  • You need a PSU capable to supply 2A as a minimum. When I connect a standard USB keyboard, the Recreated keyboard and a XBox One S gamepad to my PI-2, I need to use the 2.5A PSU from my PI-3, beware with this. When at any moment you watch on screen a yellow lightning icon, then your PI don't have the needed voltage. You can see the icons printed by the Raspberry PI firmware from here. The typical cheap Chinese PSU don't supply more than a half of the current printed on his characteristics label.

How to use a real Spectrum keyboard through GPIO pins

  • In the official PI's magazine The MagPI #67 a simple build appeared how to connect a Spectrum 48k/Spectrum+ or 128k (not +2a/+3) using the GPIO pins. The magazine build uses a small Python script to read the keyboard 60 times/sec and translates the key presses to key events, but ZXBaremulator reads the keyboard with each read to keyboard port, exactly as the real machine does, so no lag is produced.
  • The button in GPIO21 to enter/exit to/from alternate keyboard mode is optional. You can enter in alternate mode using the Caps-Shift+Symbol-Shift+ENTER keys. A small keyboard icon in blue color is printed on the screen. Symbol-Shift+K to show the keyboard help screen.
  • A small demonstration video:

LEGAL ADVICE

  • THIS SOFTWARE MUST NOT BE SOLD, NEITHER ALONE NOR AS PART OF A BUNDLE.
  • IF YOU PAID FOR THIS SOFTWARE OR RECEIVED IT AS PART OF A BUNDLE FOLLOWING PAYMENT, YOU HAVE BEEN SCAMMED AND SHOULD DEMAND YOUR MONEY BACK IMMEDIATELY.

© 2017-2024 José Luis Sánchez (jspeccy at gmail dot com) - All rights reserved (2024/05/06)