ZX emulators in Ubuntu

ZX Spectrum ROMs

http://www.shadowmagic.org.uk/spectrum/roms.html#roms

Online ZX Spectrum emulators

Jbacteria

http://jbacteria.retrolandia.net/

is an emulator that runs in your browser written in Javascript. Very neat.

QAOP

A real HTML5 ZX Spectrum emulator

http://torinak.com/qaop

And one for the ZX81

http://www.zx81stuff.org.uk/zx81/jtyone.html

And emulators to install in Ubuntu

Unreal spectrum

https://code.google.com/archive/p/unrealspeccyp/downloads?page=2

This emulator is mainly made for Android an tablets. There is a version for the Raspberry PI too.

Speccy

https://fms.komkon.org/Speccy/

Speccy emulates 16kB, 48kB, and 128kB versions of Sinclair ZX Spectrum, as well as Spectrum +2, +2A, and +3, as well as Timex Sinclair models.

Make sure you check out the Android version which has built-in World Of Spectrum browser and many other useful features

ZEsarUX 8.1 beta and 8.0

https://github.com/chernandezba/zesarux/releases

Download the right package and place in a folder. Start a terminal in that folder and run ./zesarux

https://www.sinclairzxworld.com/viewtopic.php?t=2758

I managed to get the Recreated ZX Spectrum keyboard working with some tweaks:

Menu , Settings, Hardware, Keyboard settings, SDL Raw keyboard YES

Menu , Settings, Hardware, Keyboard settings, ZX Recreated support YES

Menu , Settings, Hardware, GUI, Change Video Driver, select the sdl driver (1 or 2) and press apply driver

Connect the Recreated ZX Spectrum with a USB cable and select Layer A mode.

Use the normal keyboard to navigate in the ZEsarUX menu and the Recreated ZX Keyboard to use the spectrum.

In ZEsarUX it is possible to emulate the ZX Spectrum NEXT bij running this command from the folder in which it is installed:

./zesarux --mmc-file tbblue.mmc --enable-mmc --enable-divmmc-ports --machine tbblue --realvideo

ZesarUX 9 RC installer script

ZEsarUX installer downloads ZEsarUX source files to HOME/src/zesarux then builds the binary and installs the emulator complete with application icon.

To Run the Installer

    • Download the file zesarux.sh from GitHub
            • installerscript.sh
                  • #!/bin/bash
                  • clear
                  • # set -x
                  • ###
                  • #
                  • # ZEsarUX Installer 1.0.2
                  • #
                  • # General installer & updater.
                  • # Compiles software from source and installs binaries and files to their expected locations.
                  • #
                  • # For OS: Linux (Debian)
                  • # Tested With: Ubuntu flavours
                  • #
                  • # Lead Author: Lee Hodson
                  • # Donate: https://paypal.me/vr51
                  • # Website: https://journalxtra.com/installers/zesarux/
                  • # This Release: 5th June 2020
                  • # First Written: 25th June 2018
                  • # First Release: 25th June 2018
                  • #
                  • # Copyright 2018 OneUP! <https://journalxtra.com>
                  • # License: GPL3
                  • #
                  • # Programmer: Lee Hodson <journalxtra.com>, VR51 <vr51.com>
                  • #
                  • # Use of this program is at your own risk
                  • #
                  • # INSTALLS OR UPDATES
                  • #
                  • # ZEsarUX the ZX Spectrum, Amstrad and SAM Emulator.
                  • #
                  • # TO RUN:
                  • #
                  • # Ensure the script is executable.
                  • #
                  • # Right-click > properties > Executable
                  • # OR
                  • # chmod u+x ZEsarUX.sh
                  • #
                  • # Launch by clicking the script file or by typing bash zesarux.sh at the command line.
                  • #
                  • # ZEsarUX will be compiled in $HOME/src/zesarux/src
                  • #
                  • # Files that exist in $HOME/src/zesarux will be overwritten or updated by this program.
                  • #
                  • # LIMITATIONS
                  • #
                  • # You will need game and arcade ROMs to use this emulator enjoyably.
                  • # Visit https://journalxtra.com/gaming/download-complete-sets-of-mess-and-mame-roms/ to find some.
                  • #
                  • ###
                  • ## User Editable Options
                  • srcloc='https://github.com/chernandezba/zesarux.git' # ZEsarUX Git directory
                  • # install='/usr/games' # ZEsarUX installation path. Where should the compiled binary be installed to? Exact path. No trailing slash.
                  • user=$(whoami) # Current User
                  • group=$(id -g -n $user) # Current user's primary group
                  • # Internal Settings - These do not usually need to be manually changed
                  • declare -a conf
                  • declare -a menu # Menu options are set within zesarux_prompt()
                  • declare -a message # Index indicates related conf, mode or menu item
                  • declare -a mode # Used for notices
                  • conf[0]=1 # Essentials # Install build essential software. 0 = Not done, 1 = Done
                  • conf[1]=2 # Clean Stale # Do no cleaning or run make clean or delete source files? 0/1/2. 0 = No, 1 = Soft, 2 = Hard.
                  • conf[2]=0 # Parallel jobs to run during build # Number of CPU cores + 1 is safe. Can be as high as 2*CPU cores. More jobs can shorten build time but not always and risks system stability. 0 = Auto.
                  • conf[3]=$(nproc) # Number of CPU cores the computer has.
                  • conf[4]=$(zesarux --version) # Installed ZEsarUX Version
                  • conf[5]=$(curl -v --silent 'https://github.com/chernandezba/zesarux/commit/master' --stderr - | grep '<relative-time datetime' | sed -E 's#.+">(.+)<.+#\1#')
                  • ## END User Options
                  • let safeproc=${conf[3]}+${conf[3]} # Safe number of parallel jobs, possibly.
                  • # Other settings
                  • bold=$(tput bold)
                  • normal=$(tput sgr0)
                  • # Locate Where We Are
                  • filepath="$( echo $PWD )"
                  • # A Little precaution
                  • cd "$filepath"
                  • # Make SRC directory if it does not already exist
                  • if test ! -d "$HOME/src"; then
                  • mkdir "$HOME/src"
                  • fi
                  • # Functions
                  • function zesarux_run() {
                  • # Check for terminal then run else just run program
                  • tty -s
                  • if test "$?" -ne 0 ; then
                  • zesarux_launch
                  • else
                  • zesarux_prompt "${menu[*]}"
                  • fi

                  • }
                  • function zesarux_prompt() {
                  • while true; do
                  • # Set Menu Options
                  • case ${conf[1]} in

                  • 0)
                  • message[1]='No cleaning'
                  • menu[1]='Update ZEsarUX. Do not clean build cache.'
                  • mode[1]='MODE 1: Update. Press 3 to change mode.'
                  • ;;
                  • 1)
                  • message[1]='Clean Compiler Cache'
                  • menu[1]='Update ZEsarUX. Clean cache before build.'
                  • mode[1]='MODE 2: Update. Press 3 to change mode.'
                  • ;;
                  • 2)
                  • message[1]='Delete Source Files'
                  • menu[1]='Install ZEsarUX. Delete old source code. Download fresh source code before build.'
                  • mode[1]='MODE 3: Install. Press 3 to change mode.'
                  • ;;
                  • esac
                  • menu[2]=''

                  • case "${conf[2]}" in

                  • 0)
                  • menu[3]="Number of parallel jobs the installer should run. ${conf[3]} is Safe. $safeproc Max: Auto"
                  • ;;

                  • *)
                  • menu[3]="Number of parallel jobs the installer should run ( Auto, Safe(${conf[3]}) or Max($safeproc) ): ${conf[2]}"
                  • ;;

                  • esac

                  • menu[4]="Clean Level: ${message[1]}"
                  • menu[5]=''

                  • case "${conf[0]}" in

                  • 0)
                  • menu[6]='Install Essential Build Packages'

                  • case ${conf[1]} in

                  • 0) # Update - No spring clean. Update source files
                  • message[1]='\nIf installation fails Install Essential Build Packages and/or change to Mode 2 or 3 then try again.\n'
                  • ;;

                  • 1) # Update - spring clean first. Update source files
                  • message[1]='\nIf installation fails Install Essential Build Packages and/or change to Mode 3 try again.\n'
                  • ;;

                  • 2) # Clean install. Delete source files. Download fresh source files.
                  • message[1]='\nIf installation fails Install Essential Build Packages then try again.\n'
                  • ;;

                  • esac

                  • ;;

                  • esac
                  • printf $bold
                  • printf "${mode[1]}\n"
                  • printf $normal

                  • printf "\nMENU\n\n"
                  • n=1
                  • for i in "${menu[@]}"; do
                  • if [ "$i" == '' ]; then
                  • printf "\n"
                  • else
                  • printf "$n) $i\n"
                  • let n=n+1
                  • fi
                  • done
                  • printf "\n0) Exit\n\n"
                  • # Notices
                  • printf $bold
                  • printf "${message[1]}"
                  • printf "\nIf the computer crashes during installation lower the number of parallel jobs used by the installer then try again.\n"
                  • printf "\nGENERAL INFO\n"

                  • printf $normal
                  • printf "\n System ZEsarUX: ${conf[4]}"
                  • printf "\n Latest git commit: ${conf[5]}\n"
                  • printf $bold
                  • printf "\nChoose Wisely: "
                  • printf $normal
                  • read REPLY
                  • case $REPLY in
                  • 1) # Install / Update ZEsarUX
                  • printf "\nInstalling ZEsarUX. This could take between a few moments and a long time or even a very long time. Go get a coffee.\n"
                  • cd "$HOME/src"
                  • # Test source files exist. Download them if not.
                  • if test -d "$HOME/src/zesarux" ; then
                  • # Make sure we own the source files
                  • sudo chown -R $user:$group "$HOME/src/zesarux"

                  • # Decide whether to update or install
                  • case ${conf[1]} in

                  • 0) # Update - No spring clean. Update source files
                  • cd "$HOME/src/zesarux"
                  • git pull -p
                  • ;;

                  • 1) # Update - spring clean first. Update source files
                  • cd "$HOME/src/zesarux"
                  • make clean
                  • make distclean
                  • git pull -p
                  • ;;

                  • 2) # Clean install. Delete source files. Download fresh source files.
                  • rm -r -f "$HOME/src/zesarux"
                  • git clone --depth 1 "$srcloc"
                  • cd "$HOME/src/zesarux"
                  • ;;

                  • esac
                  • else
                  • # Clean install necessary - Source files not present yet
                  • git clone --depth 1 "$srcloc"
                  • cd "$HOME/src/zesarux"
                  • fi
                  • case "${conf[2]}" in
                  • 0)
                  • jobs=''
                  • ;;

                  • *)
                  • jobs="-j${conf[2]}"
                  • ;;
                  • esac

                  • # Build ZEsarUX
                  • cd "$HOME/src/zesarux/src"
                  • ./configure
                  • make $jobs
                  • # Install ZEsarUX
                  • if test -f "$HOME/src/zesarux/src/zesarux"; then
                  • chmod u+x "$HOME/src/zesarux/src/zesarux"
                  • sudo make install
                  • # sudo ln -s "$HOME/src/zesarux/src/zesarux" "$install/zesarux" # We were going to softlink to the executable but the program wouldn't run as a link
                  • # Add desktop file for application menu if it does not already exist
                  • if test -f "$HOME/src/zesarux/src/extras/logos/zesarux.png"; then
                  • sudo mv "$HOME/src/zesarux/src/extras/logos/zesarux.png" "/usr/share/icons/zesarux.png"
                  • fi

                  • if test ! -f "/usr/share/applications/zesarux.desktop"; then
                  • echo -e "[Desktop Entry]\nType=Application\nCategories=Game;Games\nName=ZEsarUX\nExec=zesarux\nIcon=zesarux\n" > "$HOME/src/zesarux/src/zesarux.desktop"
                  • sudo mv "$HOME/src/zesarux/src/zesarux.desktop" "/usr/share/applications/zesarux.desktop"
                  • fi
                  • sudo ldconfig
                  • sudo updatedb

                  • conf[4]=$(zesarux -v | grep 'ZEsarUX Version:') # Newly installed zesarux version
                  • clear
                  • printf "\nZEsarUX is ready to use.\n"
                  • printf "\nRun by typing zesarux into a terminal or find zesarux in your applications manager.\n"
                  • else
                  • printf "\n\nZEsarUX installation failed. \n\n"
                  • fi
                  • printf "\nPress ANY key"
                  • read something
                  • ;;
                  • 2) # Parallel jobs to run during build

                  • case "${conf[2]}" in

                  • $safeproc)
                  • let conf[2]=0
                  • sed -i -E "0,/conf\[2\]=[0-9]{1,2}/s/conf\[2\]=[0-9]{1,2}/conf\[2\]=${conf[2]}/" "$0"
                  • ;;
                  • *)
                  • let conf[2]=${conf[2]}+1
                  • sed -i -E "0,/conf\[2\]=[0-9]{1,2}/s/conf\[2\]=[0-9]{1,2}/conf\[2\]=${conf[2]}/" "$0"

                  • ;;
                  • esac
                  • clear
                  • ;;
                  • 3) # Set update, install, clean flag

                  • case ${conf[1]} in

                  • 0)
                  • sed -i -E "0,/conf\[1\]=0/s/conf\[1\]=0/conf\[1\]=1/" "$0"
                  • conf[1]=1
                  • ;;
                  • 1)
                  • sed -i -E "0,/conf\[1\]=1/s/conf\[1\]=1/conf\[1\]=2/" "$0"
                  • conf[1]=2
                  • ;;
                  • 2)
                  • sed -i -E "0,/conf\[1\]=2/s/conf\[1\]=2/conf\[1\]=0/" "$0"
                  • conf[1]=0
                  • ;;
                  • esac
                  • clear

                  • ;;
                  • 4) # Install software packages necessary to build ZEsarUX
                  • sudo apt-get update
                  • packages=( build-essential gcc g++ libqtwebkit-dev libsdl2* sdllib libqt5* qt5* libssl libsndfile schedtool libpthread* curl )
                  • for i in "${packages[@]}"; do
                  • sudo apt-get build-dep -y -q $i
                  • sudo apt-get install -y -q --install-suggests $i
                  • done
                  • sed -i -E "0,/conf\[0\]=0/s/conf\[0\]=0/conf\[0\]=1/" "$0"
                  • conf[0]=1
                  • printf "\nPress any key to continue\n"
                  • read something
                  • clear
                  • ;;
                  • 0) # Exit
                  • exit 0
                  • ;;
                  • *)
                  • esac
                  • done
                  • }
                  • ## launch terminal
                  • function zesarux_launch() {
                  • terminal=( konsole gnome-terminal x-terminal-emulator xdg-terminal terminator urxvt rxvt Eterm aterm roxterm xfce4-terminal termite lxterminal xterm )
                  • for i in ${terminal[@]}; do
                  • if command -v $i > /dev/null 2>&1; then
                  • exec $i -e "$0"
                  • # break
                  • else
                  • printf "\nUnable to automatically determine the correct terminal program to run e.g Console or Konsole. Please run this program from the command line.\n"
                  • read something
                  • exit 1
                  • fi
                  • done
                  • }
                  • ## Boot
                  • zesarux_run "$@"
                  • # Exit is at end of zesarux_run()
                  • # FOR DEBUGGING
                  • # declare -p
    • Ensure the script is executable:
      • Right-click > properties > Executable
        • OR
      • chmod u+x zesarux.sh
    • Make sure to install git: sudo apt install git
    • Launch the script. Click zesarux.sh or type bash zesarux.sh in a terminal.
    • Run ZEsarUX. Type zesarux into a terminal, into the application launcher (Alt+F2 or Kicker etc…) or browse for it in your applications manager.

FUSE

(Using the standard repositories in Ubuntu 16.04 and 18.04 and 20.04

Install it like this:

sudo apt update sudo apt install fuse-emulator.common fuse-emulator-gtk fuse-emulator-utils libspectrum8 spectrum-roms

Or install it from flatpak

EightyOne

https://sourceforge.net/projects/eightyone-sinclair-emulator/

http://www.sinclairzxworld.com/viewtopic.php?f=3&t=1781

This emulator perfectly not only emulates ZX Spectrum computers, but also the ZX80 and ZX81

Download this program and open a terminal in the folder that you extracted the emuklator in. Start it with ./zesarux

FBZX

This is an emulator that does NOT support The Recreated ZX Spectrum at the moment. It is in the repositories and you install it like this:

sudo apt update

sudo apt install fbzx

Full screen ZX Spectrum on the Raspberry Pi (2016 version)

http://www.mwebb.me.uk/2016/01/full-screen-zx-spectrum-on-raspberry-pi.html

RetroPie

https://github.com/RetroPie/RetroPie-Setup/wiki/ZX-Spectrum

on a X86 PC

https://retropie.org.uk/forum/topic/15095/retropie-x86-testing-on-different-cpu-types

https://www.reddit.com/r/RetroPie/comments/5xo2w5/is_there_any_way_to_run_retropie_on_a_regular_pc/

https://batocera-linux.xorhub.com/

An arcade Spectrum on a raspberry Pie

https://www.arcadepunks.com/kinguyrons-loaded-zx-spectrum-pi-image-simply-austin-zx-spectrum-base-first-look/

ZXSP for MacOS

http://k1.spdns.de/Develop/Projects/zxsp-osx/Documentation/index.html