B-em v2.2.3kk Acorn BBC Micro emulator

8-bit retrocomputer emulation on Linux is in a pretty good shape. Great emulators are available for e.g. the following:

I have tried them all and liked them. As of this writing (December 12th, 2017), they are available from the standard software repositories for Fedora Linux 27. However, I wanted to install a BBC Micro emulator in order to try out Bruce Lee on that 8-bit emulated platform. It turned out the beebem emulator is no longer being developed or maintained. I am not absolutely sure about this, but the latest source code packages that I managed to find were from 2006. Fortunately there exists another BBC Micro emulator called B-em v2.2. The latest versions that I found were dated 2012. The code is GNU GPL, so it is free sofware. Tom Walker is the author of this wonderful program, so thanks goes to him for writing it and making it free software for us to use, study and modify.

The standard Fedora Linux 27 software repositories do not contain any BBC Micro emulators as far as I can tell. I am not sure but I think B-em was originally Windows software and the B-em Linux port is a later idea. The B-em v2.2 code base itself is good, but not very practical on Linux: You have to compile from the source package, and the binary requires that all the auxiliary support files such as BBC Micro ROM images must be located in the same directory as the executable b-em binary. Yes, some of the resources are at least in their subdirectories, but not all of them. Some of them are directly located in the same directory with the binary. This is not very practical or pretty. The executable binary should be able to go anywhere and the resource files should have their own location.

It was my intention to create an RPM package for easy installation and distribution, but this certain lack of organisation made me hesitate. I thought about it and decided it was worth it. I proceeded to modify the emulator's C source code so that:

Modifying the C source was probably the easiest part in this small project. It was more time consuming trying to figure out how to use GNU Automake to make make install command work properly. After that was done, creating the RPM was pretty easy based on my earlier example files. I did not bother to cryptographically sign the RPM, though.

So here is the end result for you to use.

  1. DELETED (binary RPM for Fedora Linux 27)
  2. DELETED (source RPM)
  3. DELETED (plain tar.gz source package)

If you want to make things easy, I recommend installing Fedora Linux 27. Then become the root user and issue command:

dnf -y install /path/to/the/downloaded/b-em-2.2.1-kk.x86_64.rpm

I have just tested installing the binary RPM on a fresh Fedora Linux 27 virtual machine and it pulled in all the library dependencies correctly. I have tested the emulator by loading Lode Runner disk image. But here is also Bruce Lee disk image for BBC Micro for you to try out. Make sure to get it from here, since there are bad disk images floating around on the Internet! I first downloaded a faulty disk image from "emuparadise" site or something, it did not work at all! So here is a working copy for you.

The binary RPM will install the b-em emulator under /opt/b-em/bin. So to start the emulator and make it automatically run Bruce Lee, give the command:

/opt/b-em/bin/b-em /path/to/the/downloaded/BruceLee.ssd

Have fun! I know I did.

UPDATE January 4th, 2018: I have added USB Controller support (i.e. joystick-to-keyboard mapping) for b-em.

From the README:

I added joystick-to-keyboard mapping via a new command line option:

/opt/b-em/bin/b-em -joymap <joymapfile>

As far as I know, BBC Micros did not have Atari-style digital joystick ports, but an analog port that required special joysticks and thus it was not very popular. According to some Internet sources, that is why many if not most BBC Micro games support only keyboard control.

The main reason for adding the joystick-to-keyboard mapping was my desire to play Boulder Dash on a BBC Micro. Playing with the keyboard seemed horrible and moreover I just could not find a way to move downward!

So now you can use an USB Controller to play the games, but you need a joy2key mapping file for each game. I have provided two: One for Boulder Dash, another for Blagger.

First, download Boulder Dash for BBC Micro from the fantastic site bbcmicro.co.uk.

Then download the b-em 2.2.2kk RPM:

  1. DELETED (binary RPM for Fedora Linux 27)
  2. DELETED (source RPM)

dnf -y install /path/to/the/downloaded/b-em-2.2.2-kk.x86_64.rpm

/opt/b-em/bin/b-em -joymap /opt/b-em/resourcedir/joymaps/boulder_dash_joymap /path/to/the/Disc038-Boulderdash.ssd

It works fine, at least with a Logitech Rumblepad USB controller!

UPDATE February 21st, 2018: I have added a pretty ugly TCP-server feature to b-em so that I could hack Manic Miner. Here is the BBC Micro Manic Miner disk image for you to use. If you are interested in practicing that Manic Miner with infinite lives and free room selection, see my page Manic Miner on BBC Micro for details. For information on the ugly TCP-server feature, install the RPM and read /opt/b-em/doc/README.

UPDATE March 8th, 2018: No new code, just some more joy2key joystick-to-keyboard mappings for games in kk2 release!

You can download the b-em 2.2.3kk RPMs from here:

  1. b-em-2.2.3-kk2.x86_64.rpm (binary RPM for Fedora Linux 27, grab this for easy installation!)
  2. b-em-2.2.3-kk2.src.rpm (source RPM, get this if you want to compile yourself. Compiling might work on other RPM-based Linux distributions than Fedora Linux, too.)