RPCEmu
RPCEmu emulates an Acorn Risc PC and A7000 on
multiple platforms including Windows, Linux and Mac OS X
Introduction
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.
Documentation
The following documents are available here.
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.
Downloads
Binary Packages (Version 0.8.10)
| | Format | Notes |
| Windows 2000/XP/Vista/7 |
Windows Installer |
Recommended. Run the provided .msi file. 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.10)
Contributed Builds
| | Format | Notes |
| Mac OS X |
Universal Binary |
rpcemu-spoon-0.8.9-fjd-beta.zip. A 0.8.9 universal binary for x86 and PowerPC. It should run on
Mac OS X 10.7 and other versions, but please test "I've only lightly tested it, so success or failure reports are appreciated,
particularly if you're running a different version of OS X from me (I'm on
10.7.2).".
(Francis Devereux) |
| RPCEmu Bootable CD |
Puppy Binary |
A 0.8.6 binary to update the
Puppy Linux live CD.
(Paul Stewart) |
Additional Downloads
| |
Format |
| 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
| Linux | Solaris | Windows | Mac OS X |
| Networking | Y | N | Y | N |
|---|
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:
http://www.marutan.net/rpcemu/manual/network.html
The support for RISC OS 5 has changed a fair amount since the last release.
Please see the updated documentation here:
http://www.marutan.net/rpcemu/ro5.html
- 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.
http://www.marutan.net/rpcemu/ro5.html
- 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 too) 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
http://www.home.marutan.net/hg/rpcemu
and checking out the code is as simple as
hg clone http://www.home.marutan.net/hg/rpcemu 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.