Screenshot of RPCEmu

RPCEmu allows you to emulate classic Acorn systems, such as the Risc PC and A7000, 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.8.15)

  Format Notes
XP Vista 7 8 10
(32/64 bit)
Windows Installer Run the provided .msi file, installs to Program Files. Adds links into you 'Start' menu. Note: upgrading from previous versions may overwrite your cmos.ram and rpc.cfg files.
Zip Archive Install to the location of your choice.

Source Code (Version 0.8.15)

  Format Notes
All Platforms Source Code Use this to compile up a version for Linux.

Contributed Builds

  Format Notes
Mac OS X Binary A 0.8.13 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

Full Changelog

Not all features are available on all platforms, check the matrix below for details

LinuxSolarisWindowsMac OS X

Version 0.8.15 - 26/10/2016

Changes in this build

  • All Platforms
    • Issue with 8MB VRAM being less stable has been resolved, code is now correctly allowed in the 2-8MB area.
    • ARM SWP instruction correctly handles unaligned access.
    • Enhancements to TLB to correctly flush caches on more operations.
  • Windows
    • The window maximise button has been disabled, as the size of the window is determined by the mode in RISC OS.

Version 0.8.14 - 8/2/2016

Changes in this build

  • All Platforms
    • RISC OS Select 4i2 to 6i1 (6.06 to 6.20) now boot 'out of the box' due to clearing the *unplug bits in the distributed cmos.ram file. If applying the upgrade to an existing install you must use the provided cmos.ram file and then apply your changes to cmos settings afterwards.

      If you have used the 'installer' version on windows Vista, 7, 8, 10 then you will probably need to delete the copy of cmos.ram that is in this directory

      C:\Users\<USERNAME>\AppData\Local\VirtualStore\Program Files (x86)\RPCEmu

    • Add support for 8MB VRAM (via patching) on RISC OS 3.50/3.60/3.70/3.71/ 4.04/4.29/4.33/4.37/4.39/6.02. This is in addition to the support for RISC OS 4.02 (via patching) and RISC OS 5.2x and 6.10 to 6.20 via OS autodetection.

    • RISC OS 5.2x now work with 0MB VRAM as we now allow video data to be stored in any part of Simm 0 Bank 0 of RAM.

    • RISC OS Select 4i2 to 6i1 (6.06 to 6.20) now work with 0MB VRAM as we no longer create TLB entries for VRAM when none is configured.

    • Translate characters in HostFS paths that would be invalid on Windows, using the same translations for ? < and > as used by LanMan. Contributed by Alan Buckley.

Version 0.8.13 - 21/10/2015

Changes in this build

  • All Platforms
    • Dynamic recompiler is no longer StrongARM specific. It supports a wider range of OSes with more processors. (RISC OS 3.50, 3.60, 3.70, 3.71, 5.22).
    • Host pointer integration (follows host mouse) now works in rectangular pixel modes (e.g. Mode 12).
    • The daylight saving time flag in CMOS should be automatically set on startup based on the timezone information from the host machine.
    • ARM Core
      • Abort handling of LDM/STM now follows the varying Abort Model of the different ARM processors.
      • LDM/STM now check for abort on each data transfer, which gives accurate abort detection.
  • Linux
    • The display now supports pixel doubling of rectangular pixel modes (e.g. Mode 12) in the same way as the Windows version.

Version 0.8.12 - 22/10/2014

Changes in this build

  • All Platforms
    • ARM Core
      • Fix 4 issues related to the SWP instruction
      • Fix for STRB where the PC should be offset
      • Fix implementation-specific behaviour for single data transfer
    • Floppy Drive
      • Support the FDC Format and Verify commands, this enables you to format an empty 800KB or 1600KB file as a disc image. Including code provided by Rob Sprowson.
      • Experimental fix for floppy-drive support in Recompiler. Please report any issues discovered with this.
    • Fix rendering of wimp modes 29 and 30 (800x600 in 1bpp and 2bpp)
    • HostFS
      • Add support for RISC OS ImageFS extensions and add a default disc name This enables several programs that previous failed to work to work, including Photodesk and the Acorn C/C++ installer.
      • Add support for querying HostFS free disc space.
    • Add a 'Help' menu to the UI with links to the website and manual

Version 0.8.11 - 23/10/2013

Changes in this build

  • All Platforms
    • Support for emulating Phoebe, the Risc PC 2. Produced with the assistance of The Centre for Computing History.

      Instructions on how to setup Phoebe emulation and the required files are on the 4corn website.

      Note, this is a prototype machine, so is more for historical interest than running production code.

    • Introduced the concept of configuring the Hardware Model rather than using CPU type to determine hardware. See the Settings->Settings window for details. You may need to reselect a model based on your previous CPU choice.
    • Fix very rare bug in which the MIPS count was sometimes wildly incorrect.
  • Windows
    • Fix 'Follows Host Mouse' bug, where the host and emulated mouse pointers were not lined up until the RPCEmu window had been moved.
    • Fix network GUI bug where the selected networking type was not correctly set.

Version 0.8.10 - 27/3/2013

Changes in this build

  • All Platforms
    • Fix bug in emulation of SMLAL instruction in 32-bit DynaRec.
    • Fix bug in emulation of unaligned STR with Writeback in 32-bit DynaRec.
    • Fix bug in emulation of LDR/LDRB with Writeback in both 32-bit and 64-bit DynaRec.
    • Extensive code-refactoring enabling the above fixes, and in preparation for future improvements.
  • Windows
    • Host CD-ROM drives now appear correctly in the CD-ROM submenu.
  • Linux
    • A program icon has been added to the main Window.

Version 0.8.9 - 1/1/2012

Changes in this build

  • All Platforms
    • Add support for emulation of 256 MB of RAM - the maximum possible in the Risc PC and A7000 architecture.
    • A new option to reduce CPU usage. By enabling this menu option, RPCEmu will attempt to reduce its CPU usage by utilising the 'Idle' feature of RISC OS. Once enabled, the CPU usage should reduce roughly 30 seconds after booting RISC OS provided that activity is low enough. No 'Portable' module is required to use this feature. This is partly based on code by Jeffrey Lee.
    • A two-button mouse mode, for use on laptops and similar: this menu option swaps the right and middle mouse buttons, allowing the more common RISC OS use of Select and Menu on two-button mouse systems such as laptops.
    • Several fixes to the "Follow host mouse" feature, which should make it more reliable: Correctly interprets OS_Byte 106 and handles pointer/cursor linking.
    • SWIs are now intercepted even when called using CallASWI, based on a patch by Alan Buckley. This further improves the reliability of the "Follow host mouse" feature.
    • The mouse type will be automatically configured based on the type of emulated machine. Previously it was necessary to use '*configure mousetype' when changing between Risc PC and A7000 emulation.
    • Resolved ARM bug where rotate could set C flag incorrectly.
    • A possible crash in the Dynamic Recompiler has been prevented by a fix from Tom Walker.
    • RISC OS 4.02 with no VRAM configured now boots in Risc PC emulation.
    • Accuracy improvements to emulation of IOMD.
    • Workaround ADC issue on 64bit recompiler which prevented RISC OS 5.17 from booting.
    • Refactoring of code, particularly relating to RAM and IOMD.
  • Windows
    • The window size is now taller by one pixel. Previously it was too short, and the very bottom row of the display was missing.
    • Some improvements to the GUI, including enabling Windows "Visual Styles" so that windows adopt the native look of the OS, and improving the layout of the "Configure" window.
    • A potential freeze when choosing "File->Exit" has been fixed.
    • An improved icon, which includes high-resolution variants for Windows Vista and later.
  • Linux
    • Some improvements to the GUI, including improving the layout of the "Configure" window.

Version 0.8.8 - 19/9/2010

Changes in this build

  • Solaris
    • The configure script has been updated so RPCEmu should now compile on Solaris 10 and Open Solaris without any additional changes.
  • Linux
    • The configure script has been updated so that RPCEmu should now compile on Fedora 13 without any additional changes.
  • Windows
    • Fix issue where is was possible that the selected processor and the processor chosen in the GUI could get out of sync.
  • All Platforms
    • Fixed 'Follow Host Mouse' mouse-drag problem that was reported with 0.8.7.
    • Fixed 'Follow Host Mouse' crash reported when using RISC OS 4.39.
    • OS version is now written to the rpclog.txt log file, to aid in bug triage.

Version 0.8.7 - 1/9/2010

Changes in this build

This release contains lots of updates to the networking support; as such a new section to the manual has been written explaining how to setup networking on Linux and Windows:

The support for RISC OS 5 has changed a fair amount since the last release. Please see the updated documentation here:
  • Windows
    • Added networking support using 'bridged' network style (Leo Smiers); works with the win32 TAP interface (from the QEMU project) and uses the OpenVPN TUN/TAP drivers.
    • Two fixes have reduced the likelihood of encountering a crash when using fullscreen mode.
  • Linux and Windows
    • Network GUI: a GUI to assist in configuring the network settings is available. For more details see the Networking section of the manual mentioned above.
  • All Platforms
    • A considerable number of fixes to the accuracy of HostFS as a RISC OS filing system.
    • Add support for .iso image files that are > 2GiB in size. Previously some of the data would have been inaccessible.
    • Added suport for the scrollwheel on PS/2 mouse emulation; this only works with the ARM7500 or ARM7500FE (A7000 and A7000+ are the only hardware with PS2 mouse ports). Also requires RISC OS support from RISC OS Select (not present on earlier versions) and for you not to be using 'Follow Host Mouse'.
    • Improved emulation of the I2C bus and Real Time Clock. Allows RISC OS 5.17 RTC autodetection to work. (Based on code by Jochen Karrer from the Softgun project).
    • 'Follow Host Mouse' is now 32-bit compliant and working on RISC OS 5 (Timothy Coltman)
    • Configure script for source compilation on 'Unix' systems no longer stops if it's not Linux.
    • Significant refactoring of code, particularly mouse handling sections, SWI handling and Networking.

Version 0.8.6 - 23/12/2009

Changes in this build

  • Mac OS X
    • Experimental support for DynaRec on Intel-based Mac OS X platforms.
  • All Platforms
    • More work refactoring the ARM emulation core to simplify and reduce code.
    • Several minor ARM fixes.
    • Added support for ARM7500FE and ARM810. ARM7500FE currently offers no floating-point performance advantage. ARM810 is largely experimental and only has limited support from most versions of RISC OS.
    • Fixed two crash bugs in IDE code relating to switching between Hard Disk and CD-ROM emulation. Thanks to Francis Devereux for good bug reporting and analysis.
    • Simplified and standardised MIPS display in title bar on all platforms. On Linux the MIPS counter is no longer displayed on the console.
    • Significant refactoring of code, particularly the DynaRec and sound sections.

Version 0.8.5 - 23/08/2009

Changes in this build

  • Compatibility Note
    • Because the DynaRec is no longer restricted to StrongARM processor type, you must explicitly choose StrongARM emulation to retain full backwards compatibility. Either edit the rpc.cfg config file or use the GUI to change processor type.
      Note that the DynaRec support for processor types other than StrongARM is experimental.
  • All Platforms
    • Add the SyncClock module by David Ruck (modified and tested to be 32-bit compatible). This module will regularly synchronise the RISC OS clock with the host machine to compensate for clock drift. It is enabled by default.
    • Improvements to co-processor 15 emulation mean that RISC OS 3.60 correctly no longer works with StrongARM emulation (like real hardware).
    • Some fixes to MMU emulation regarding virtual to physical address mapping and permission checking.
    • Much work refactoring the ARM emulation core to simplify and reduce code.
    • Minor improvements to IOMD relating to interrupt handling.
    • Significant refactoring of code, including removal of redundant or duplicate code, and addition of numerous comments.

Version 0.8.4 - 05/05/2009

Changes in this build

  • All Platforms
    • Experimental support for ROOL RISC OS 5.15 IOMD ROM image. However there are many issues, please follow this link for more details.
    • Fix redraw issues when no VRAM is configured.
    • Continuing source code tidying.
  • Linux/MacOS X
    • Mouse following (mousehack) can now be configured via the rpc.cfg file.

Version 0.8.3 - 15/04/2009

Changes in this build

  • Linux
    • Faster 64-bit DynaRec code by Tom Walker
  • All Platforms
    • Several ARM decode and execution bugs fixed, leading to...
    • Can boot Pace RISC OS 4 and experimental support for RISC OS 6 Preview 3 (but see Known Issues below)
    • Fixed screen corruption when using interpreter and StrongARM with RISC OS 4
    • Increasing memory size using GUI no longer crashes RPCEmu
    • Small performance increase to DynaRec 32-bit due to refactoring
    • Continuing source code tidying
  • Known Issues
    • RISC OS 6 Preview 3 will only boot with Interpreter if processor type is StrongARM
    • RISC OS 6 Preview 3 will not yet boot with 64-bit DynaRec

Version 0.8.2 - 09/02/2009

Changes in this build

  • Windows
    • Fix shortcut StartIn issues.
  • Mac OS X
    • Now compiles and runs on Mac OS X (Intel) by Timothy Coltman, no patching required.
  • All Platforms
    • Support more fullscreen modes.
    • Set the year portion of the time (stored in CMOS ram) to always be correct, and generate CMOS checksum. Based on work by Kees Grinwis.
    • ARM processor IDs corrected.
    • Continuing source code tidying.

Version 0.8.1 - 16/01/2009

Changes in this build

  • Windows
    • Fixed mapping of \ and # keys.
    • Removed console window.
    • Correctly return year portion of CMOS time.
  • Linux and Windows
    • Correctly return the CMOS time, regardless of when it is called.
    • Reject ROM images that are not 2MB, 4MB or 6MB in size and inform the user. This should prevent people trying to run compressed Select ROM images directly.
    • Continuing source code tidying.

Version 0.8.0 - 30/12/2008

Changes in this build

  • HostFS available out of the box.
  • Some HostFS issues resolved
  • RPCEmu Issue Tracker issues resolved.
    • RPCI001 - Pause/Break Key is now working.
    • RPCI003 - Clock is synchronised with Host on startup.
  • Keyboard repeat issue resolved
  • Easy installation on Windows

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.