Skip to content

macpato82/KineticBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kinetic Box — SA-1110 fork

A Linux/Qt fork of RPCEmu 0.9.5 — the Acorn RiscPC and A7000 emulator — extended with a StrongARM SA-1110 machine, a dual RISC OS 4 / RISC OS 5 launcher, an emulated KineticGraphics card that lifts the VIDC20 display ceiling, and a range of other fixes.

Runs on modern Ubuntu / Debian / Fedora / Arch with Qt 5 or Qt 6.

Portions Copyright © 2026 Martin Eastwood — RISCOS Technologies. Licensed under the GNU General Public License, Version 2 (see LICENSE).


Highlights over stock RPCEmu 0.9.5

Machines

  • Six machines: ARM610, ARM710, StrongARM RiscPC, A7000, A7000+, and a new StrongARM SA-1110 model. Phoebe and Risc PC ARM810 removed from the picker.
  • FPA10 hardware coprocessor emulation enabled (interpreter and amd64 dynarec) with cycle‑accurate timing — ~100× the software FPEmulator on Whetstone.

KineticGraphics card

  • Emulated 64 MB graphics podule at physical 0x40000000, driven by the bundled KineticGfx GraphicsV module (ObjAsm source under riscos-progs/KGXDriver/, pre‑built module in poduleroms/).
  • Bypasses VIDC20 entirely — supports modes from 16×16 up to 4096×2560 at 16M colours (32bpp).
  • Hardware pointer, hardware‑scroll display start register, and a small 2D blit engine.
  • New RISC OS commands: *KGXInfo, *KGXSelect, *KGXMode w h, *KGXDesktop w h, *KGXRevert, *KGXWimpMode.

Networking

  • SLiRP NAT with Access+/ShareFS broadcast relay (talk to other RISC OS systems on the host LAN).
  • 64‑deep RX FIFO in the NAT path — absorbs bursty ShareFS discovery that the single‑slot design dropped.
  • Correct source‑port handling for external Access unicasts (no more split ShareFS conversations that stall on opening a shared disc).
  • IFF_RUNNING filter — skips idle virtual bridges like docker0.

Front end

  • Qt 5 or Qt 6 (pick with -DRPCEMU_QT_VERSION=6).
  • Dual‑machine launcher: --riscos4 uses rpc-riscos4.cfg, --riscos5 uses rpc.cfg. Each has its own CMOS, disc image and HostFS root, so you can install RO4 and RO5 in parallel without stepping on each other.
  • Pixel‑perfect integer scaling — Settings → Pixel‑perfect Scaling.
  • Start in Full‑screen — Settings → Start in Full‑screen.
  • RISC OS Shutdown closes the emulator window — OS_Reset with the “&OFF” magic is intercepted and turned into a clean Qt quit.

Reliability

  • The amd64 dynarec now recompiles flag‑setting data‑processing instructions inline (ADDS/SUBS/RSBS/CMP/CMN/ANDS/EORS/ORRS/BICS/MOVS/ MVNS/TST/TEQ). Comes with a differential test suite (tests/test_jit_flags.c, 8320 checks, all pass against the interpreter).
  • HostFS hardening: guest path strings truncated rather than overflowing fixed host buffers; open‑file handles validated instead of raw‑indexed; Boot$Dir defined at module init so drag‑copy between HostFS discs works without !Boot.
  • Disc parsing hardening: HFE geometry validated and track‑list malloc checked; ADF format sanity check against the track buffer.
  • Memory allocation checksfatal() on failure instead of NULL deref.

RISC OS 5 (RISCPC.ROM) patches — applied automatically at ROM load

  • VRAM cap raised to 16 MB (was 8 MB in the shipped ROM).

Building

Debian / Ubuntu:

sudo apt install cmake build-essential qt6-base-dev qt6-multimedia-dev
cmake -S . -B build -DRPCEMU_QT_VERSION=6 -DRPCEMU_DYNAREC=ON
cmake --build build -j$(nproc)
./rpcemu-recompiler

Optional: run the JIT flag differential test.

cmake -S . -B build-tests -DRPCEMU_DYNAREC=ON -DRPCEMU_BUILD_TESTS=ON
cmake --build build-tests --target test_jit_flags
./build-tests/tests/test_jit_flags       # expect: 8320 checks, 0 failures

Qt 5 works too (-DRPCEMU_QT_VERSION=5), and the interpreter engine builds without the dynarec (-DRPCEMU_DYNAREC=OFF) for non‑x86 hosts.


Running

The emulator is a two‑binary layout: pick RO4 or RO5 at launch time.

./rpcemu-recompiler --riscos5      # loads rpc.cfg          + roms/
./rpcemu-recompiler --riscos4      # loads rpc-riscos4.cfg  + roms-riscos4/

ROM images are not shipped — supply your own. The RISC OS 5.31 image is freely downloadable from RISC OS Open under Apache 2.0; RISC OS 4 / Adjust is not.

For the KineticGraphics card, once RO5 has booted, from a Task window:

*KGXInfo                  # confirm the card is present
*KGXDesktop 2560 1440     # switch the desktop to that mode
*KGXRevert                # back to VIDC20

Credits

  • Original RPCEmu © 2005‑2010 Sarah Walker and contributors, GPLv2.
  • Qt front‑end originated by Peter Howkins and Matthew Howkins.
  • HostFS module © 2005‑2010 Matthew Howkins.
  • KineticGraphics card + KGXDriver GraphicsV module — ported from Kinetic Box 2.0 © 2026 Martin Eastwood.
  • Various fixes ported from Andrew Timmins' rpcemu-extended fork.
  • Session ports, integrations, and the SA-1110 fork work © 2026 Martin Eastwood — RISCOS Technologies.

Bug reports, patches, and hate mail welcome via GitHub Issues.

About

RPCEmu SA-1110 fork: StrongARM Acorn RiscPC / A7000 emulator with KineticGraphics card, Qt5/6 front end, and dual RISC OS 4/5 launcher for Linux.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages