Screenshot of RPCEmu

RPCEmu is an emulator of classic Acorn computer systems, such as the Risc PC and A7000. It runs on multiple platforms including Windows, Linux and Mac OS X

RPCEmu requires a RISC OS ROM image to work, find details of where to find one.

RPCEmu should be considered Alpha Quality code. It has many known and unknown bugs, and all files used with it should be well backed up before using them with RPCEmu.


The following documents are available.

If you have any questions or need help, there is a RPCEmu Mailing List, however please specify the version number to avoid confusion. Your patches, suggestions and even bug reports are gratefully received.


Binary Packages (Version 0.9.0)

  Format Notes
XP Vista 7 8 10
(32/64 bit)
Zip Archive Install to the location of your choice.

Source Code (Version 0.9.0)

  Format Notes
All Platforms Source Code Use this to compile up a version for Linux or OpenBSD, also for Windows.

Contributed Builds

  Format Notes
Mac OS X Binary A 0.8.14 binary (Theo Markettos)

Previous Releases

Additional Downloads

Blank Pre-Formatted Hard Discs ADFS E 256MB 1GB
ADFS E+ (long filenames,
RISC OS 3.80 or later only)
256MB 1GB
Blank Pre-Formatted Floppy Discs ADFS E 800KB
All downloads in Zip format, decompress before use. No download is larger that 1MB.

Release Notes

Version 0.9.0 - 05/05/2018

Changes in this build

The two major changes in version 0.9.0 compared to previous versions.

  • Changed to the Qt5 library for the GUI. Previously we used the Allegro 4 library and additional win32 code.
    • The GUI is shared by all platforms, reducing maintenance work.
    • The Linux/BSD builds gain the full GUI that previously was Windows only.
    • The full-screen mode should no longer crash.
    • The full-screen mode uses software scaling. It will no longer resize your host OS desktop and it preserves the aspect ratio of the emulator video modes.
    • The clock "drift" (where host and emulated clock move apart) should be gone. As such we no longer enable the SyncClock module by default. However if this is causing you an issue please report it.
  • Changed the threading model of the program so that the GUI is in a separate thread from the emulation of the machine.
    • The most obvious change from this is that opening menus and configure windows do not halt the emulation of the machine while you work with them.

Additional fixes in version 0.9.0

  • Linux: Support being built as a position independent executable (PIE), this allows the 64-bit recompiler builds to work without modification on Linux distributions which compile all software as PIE by default (e.g. Ubuntu 16.10 and later)
  • Windows: HostFS date stamps should be correct regardless of Daylight Savings Time flag.
  • ARM Core: STM with store of R15 should vary with processor type (x86 recompiler).
  • ARM Core: STRT/STRBT with store of R15 should store same value as STR/STRB.
  • The mouse will work when changing between A7000 and RPC models without having to rerun RPCEmu.
  • In 'Follow host mouse' mode, enabled support for OS_Word 21,3 'Move Mouse', also supports BBC BASIC 'MOUSE TO'.
  • In 'Follow host mouse' mode, the mouse should work correctly if you change to fullscreen, change RISC OS mode and leave fullscreen again.
  • Clang compiler is now recognised when writing to the log file.

A special thanks to the members of the RPCEmu mailing list who helped with testing these wide-ranging changes.

Older Release Notes

Full Changelog

Developer Information

We're very happy for RPCEmu to accept code and contributions from third parties, already many people have contributed code and we hope to continue down this route.

The RPCEmu source is stored inside the Mercurial version control system, Mercurial clients are available for many platforms, including (but not limited to) Windows, Linux, Mac OS X, Solaris, BSDs. If you are used to a different version control system, such as CVS or SVN, Mercurial (as a distributed version control system) may seem a little odd, but there are plenty of tutorials and advice for users coming from other systems on the web.

The Mercurial repository is based at

and checking out the code is as simple as

hg clone rpcemu

How to get code committed into the repository

Prepare a patch file of the differences between your new code and the current 'HEAD' of the project.

Mercurial provides the 'hg diff' command, which generates diff files suitable for this.

Then post this patch file to the mailing list (or to us directly if you so wish), with an explanation of what it's for, and in the case of bug fixes, the bug it's meant to fix (it's not always obvious from the code)

Generally the smaller the patch, with the most specific function or reason, the easier the patch is to merge in, whereas a "I fixed everything I thought was wrong" would take a very long time to verify and test.

Patches may get edited before being committed, or if the changes required are particularly large an updated patch may be requested of the developer. In some rare cases it might not be possible to commit a patch, and at that point there should be a stated reason (e.g. patch overlaps with another patch that deprecates it, patch is too widespread to verify (suggest breaking into smaller patches), etc).

If you have any questions, once again the mailing list is the best place to ask, also, if you're considering a particulaly large change, that would affect a large functional area or many files, it might well be worth getting some advice from the developers on the mailing list first, incase it overlaps with other development work, or even just a suggestion of how to accomplish it in smaller changes.