{"id":49514193,"url":"https://github.com/andrewtimmins/rpcemu-extended","last_synced_at":"2026-05-01T21:08:28.677Z","repository":{"id":329942363,"uuid":"1080683845","full_name":"andrewtimmins/rpcemu-extended","owner":"andrewtimmins","description":"Extended fork of RPCEmu, the Acorn Risc PC/A7000 emulator, now with built-in debugger and machine inspector, live snapshots, breakpoints, and watchpoints.","archived":false,"fork":false,"pushed_at":"2025-12-23T16:32:01.000Z","size":20482,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-23T23:18:46.310Z","etag":null,"topics":["arm","emulator","riscos","riscpc"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrewtimmins.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-21T18:06:47.000Z","updated_at":"2025-12-23T16:32:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrewtimmins/rpcemu-extended","commit_stats":null,"previous_names":["andrewtimmins/rpcemu-extended"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/andrewtimmins/rpcemu-extended","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Frpcemu-extended","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Frpcemu-extended/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Frpcemu-extended/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Frpcemu-extended/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewtimmins","download_url":"https://codeload.github.com/andrewtimmins/rpcemu-extended/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewtimmins%2Frpcemu-extended/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32512780,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","emulator","riscos","riscpc"],"created_at":"2026-05-01T21:08:27.601Z","updated_at":"2026-05-01T21:08:28.661Z","avatar_url":"https://github.com/andrewtimmins.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RPCEmu – Spork Edition\n\n## Overview\nThis repository hosts a feature-rich fork of **RPCEmu**, the open-source emulator for Acorn Risc PC and A7000 machines. Alongside the standard emulator core, this edition layers in a modern Qt 5 front-end, a live machine inspector, integrated debugger controls, and a multi-machine configuration system. The project remains distributed under the GNU GPL v2.\n\n## Screenshots\n![Machine Selection](screenshots/machine-selection.png)\n![New Layout](screenshots/new-layout.png)\n![VNC Server](screenshots/vnc.png)\n![Access](screenshots/access.png)\n![Machine Inspector](screenshots/inspector.png)\n![Dissassembler](screenshots/diss.png)\n![Memory Browser](screenshots/mem.png)\n\n## Fork highlights\n- **Multi-machine configuration** – Create, edit, clone and manage multiple machine configurations from a startup selector dialog. Each machine has isolated CMOS, HostFS and hard disc storage.\n- **Quick machine switching** – Switch between machines on-the-fly via File → Recent Machines without restarting the emulator.\n- **Shared HostFS drive** – A second \"Shared\" drive icon on the RISC OS icon bar provides access to a common `shared/` folder visible to all machine instances, enabling easy file sharing between configurations.\n- **Access/ShareFS networking** – Full support for Acorn Access and ShareFS file sharing via NAT networking.\n- **FPA emulation** – Full Floating Point Accelerator (FPA10) coprocessor emulation with all operations implemented and cycle-accurate timing. Enables floating-point intensive RISC OS applications to run correctly.\n- **Pixel Perfect scaling** – Optional integer scaling mode for sharp, crisp pixels without bilinear blur. Toggle via Settings → Pixel Perfect.\n- **Built-in VNC server** – Remote desktop access to RISC OS from any VNC client. Enable via Settings → VNC Server. Connect from tablets, phones, or other computers on your network.\n- **Sound mute toggle** – Quickly mute/unmute audio via Settings → Mute Sound or press F10.\n- **Machine Inspector window** – Inspect CPU registers, pipeline state, MMU flags, performance counters, and key peripheral snapshots (VIDC, SuperIO, IDE, podules) with optional auto-refresh.\n- **Integrated debugger** – Pause/resume execution, single-step (×1/×5), and manage breakpoints and watchpoints directly in the GUI, with clear status readouts for the last halt reason.\n- **Keyboard shortcuts** – Comprehensive keyboard shortcuts for common operations (see Keyboard Shortcuts section).\n- **Recent disc images** – Quick access to recently used floppy and CD-ROM images via the Disc menu.\n- **Dynarec-aware instrumentation** – The ARM dynamic recompiler honours debugger pause requests, breakpoints, and watchpoints via shared hooks (`debugger_requires_instruction_hook`) so that interpreter and dynarec stays in sync.\n- **Snapshot plumbing** – Thread-safe `MachineSnapshot` and peripheral snapshot structs marshal detailed state off the emulator thread for UI consumption without stalls.\n\n## Machine configuration system\nThe emulator now supports multiple isolated machine configurations:\n\n| Directory | Purpose |\n| --- | --- |\n| `configs/` | Machine configuration files (`.cfg`). Each file defines model, RAM, VRAM, ROM, refresh rate, and networking settings. |\n| `machines/\u003cname\u003e/` | Per-machine runtime data: `cmos.ram`, `hostfs/`, `hd4.hdf`, `hd5.hdf`. Fully isolated between configurations. |\n| `shared/` | Common shared folder accessible from all machine instances via the Shared drive icon. |\n| `roms/` | Shared ROM images. Select which ROM to use per-machine in the Edit dialog. |\n\n### Configuration options\nEach machine configuration supports:\n- **Model** – RiscPC ARM610/710/810/StrongARM, A7000, A7000+, Phoebe\n- **RAM** – 4 MB to 256 MB\n- **VRAM** – None or 2 MB\n- **ROM** – Select from available ROM files in the `roms/` directory\n- **Refresh rate** – 20 Hz to 100 Hz (slider control)\n- **Networking** – Off, NAT, Ethernet Bridging, IP Tunnelling (Linux)\n- **Hard discs** – Create/manage HardDisc 4 and HardDisc 5 images (256 MB to 2 GB)\n\n\n## Project layout\n| Path | Purpose |\n| --- | --- |\n| `src/` | Core emulator engine (ARM interpreter, dynarec, hardware devices, debugger plumbing). |\n| `src/qt5/` | Qt 5 GUI, machine inspector, debugger controls, configuration selector \u0026 networking dialogs. |\n| `slirp/` | Bundled SLiRP networking library for NAT mode. |\n| `riscos-progs/` | RISC OS module source code (HostFS, HostFSFiler, ScrollWheel, EtherRPCEm). |\n| `poduleroms/` | Compiled podule ROM images loaded by the emulator. |\n| `hostfs/` | Default HostFS content (legacy location, now per-machine in `machines/\u003cname\u003e/hostfs/`). |\n| `shared/` | Common shared folder accessible from all RISC OS instances. |\n| `roms/` | Place your licensed RISC OS ROM images here (see [official instructions](http://www.marutan.net/rpcemu/manual/romimage.html)). |\n| `configs/` | Machine configuration files. |\n| `machines/` | Per-machine data directories (auto-created). |\n\n## HostFS and Shared drives\nThe emulator provides two filing system icons on the RISC OS icon bar:\n\n| Icon | RISC OS Path | Host Path | Purpose |\n| --- | --- | --- | --- |\n| **HostFS** | `HostFS::HostFS.$` | `machines/\u003cname\u003e/hostfs/` | Per-machine storage, isolated between configurations. |\n| **Shared** | `HostFS::Shared.$` | `shared/` | Common storage visible to all machine instances. |\n\nThis allows you to:\n- Keep machine-specific files (applications, settings) isolated in each machine's HostFS\n- Share common files, utilities, or applications between all machines via the Shared drive\n- Transfer files between different machine configurations without network setup\n\n## Using the machine selector\n1. On startup, the **Machine Selector** dialog appears listing all available configurations.\n2. **New** – Create a new machine configuration with default settings.\n3. **Edit** – Modify machine settings (model, RAM, ROM, networking, hard discs).\n4. **Clone** – Duplicate an existing configuration.\n5. **Delete** – Remove a configuration and optionally its associated data.\n6. **Start** – Launch the emulator with the selected configuration.\n\n## Using the debugger \u0026 machine inspector\n1. Open **Debug → Machine Inspector…** to reveal the inspector window.\n2. Tabs provide:\n   - **CPU** – Registers R0–R15, CPSR/mode, performance counters, interpreter vs dynarec state.\n   - **Pipeline** – Upcoming instruction addresses and opcodes for easy tracing.\n   - **Peripherals** – VIDC palette \u0026 doublescan mode, SuperIO registers, IDE channel state, podule IRQ mapping.\n   - **Debugger** – Run/Pause, Step, Step ×5 buttons, breakpoint \u0026 watchpoint lists, last hit summaries.\n3. Auto-refresh every 500 ms keeps the view current; toggle it or hit **Refresh now** for manual polling.\n4. Breakpoints and watchpoints entered in the inspector apply even while the dynarec is active, thanks to the shared debugger hooks in `ArmDynarec.c`.\n\n## Differences versus upstream RPCEmu\n- Qt front-end reworked for stability with modern Qt 5 deployments.\n- Multi-machine configuration system with isolated per-machine storage.\n- Quick machine switching via Recent Machines menu.\n- ROM selection per configuration.\n- **Dual HostFS drives** – Per-machine HostFS plus a common Shared drive for cross-machine file sharing.\n- Access/ShareFS networking support for file sharing between emulated machines.\n- **Full FPA emulation** – Complete FPA10 floating-point coprocessor with all operations and cycle timing (see below).\n- **Pixel Perfect scaling** – Integer scaling option for sharp pixels without blur.\n- **Built-in VNC server** – Remote desktop access using libvncserver (Linux). Enable via Settings → VNC Server.\n- **Sound mute toggle** – Quickly mute/unmute emulator audio.\n- **Recent disc images** – Quick access menus for recently used floppy and CD-ROM images.\n- **Floppy eject actions** – Eject floppy discs via menu or keyboard shortcuts.\n- In-depth machine inspector and debugger tooling not present upstream.\n- Comprehensive keyboard shortcuts for all major functions.\n- Dynarec pause logic patched so debugger operations are consistent across cores.\n- Custom ARM cross-assembler toolchain support for building RISC OS modules.\n\n## Keyboard shortcuts\n| Shortcut | Action |\n| --- | --- |\n| **Ctrl+S** | Save screenshot |\n| **Ctrl+R** | Reset machine |\n| **Ctrl+Q** | Quit emulator |\n| **Ctrl+1** | Load floppy disc into drive :0 |\n| **Ctrl+2** | Load floppy disc into drive :1 |\n| **Ctrl+Shift+1** | Eject floppy from drive :0 |\n| **Ctrl+Shift+2** | Eject floppy from drive :1 |\n| **Ctrl+,** | Open Settings/Configure dialog |\n| **F10** | Toggle sound mute |\n| **F11** | Toggle full-screen mode |\n| **F5** | Run (resume emulation) |\n| **F6** | Pause emulation |\n| **F7** | Single step |\n| **F8** | Step ×5 |\n| **Ctrl+I** | Open Machine Inspector |\n| **F1** | Open online manual |\n\n## FPA (Floating Point Accelerator) emulation\nThis fork includes complete FPA10 coprocessor emulation, enabling RISC OS applications that use hardware floating-point to run correctly. The implementation includes:\n\n### Supported operations\n| Category | Operations |\n| --- | --- |\n| **Dyadic** | ADF, MUF, SUF, RSF, DVF, RDF, POW, RPW, RMF, FML, FDV, FRD, POL |\n| **Monadic** | MVF, MNF, ABS, RND, SQT, LOG, LGN, EXP, SIN, COS, TAN, ASN, ACS, ATN, URD, NRM |\n| **Conversion** | FIX (float→int), FLT (int→float) with all IEEE rounding modes |\n| **Comparison** | CMF, CMFE, CNF, CNFE with proper NaN exception handling |\n| **Transfer** | LDF, STF, LFM, SFM (load/store single and multiple) |\n\n### Features\n- **Cycle-accurate timing** – Each operation has appropriate cycle costs (e.g., 10 cycles for load/store, 150 cycles for transcendental functions like SIN/COS/TAN).\n- **IEEE rounding modes** – FIX, RND, and URD support all four IEEE 754 rounding modes (nearest, +∞, −∞, zero).\n- **NaN handling** – Comparison operations correctly set the V flag for unordered (NaN) comparisons.\n- **Dynarec integration** – FPA works with both the interpreter and dynamic recompiler.\n\n### Compatibility notes\n- Ensure 16-bit sound is enabled in RISC OS configuration for correct audio playback when using FPA-intensive applications.\n- Some applications (e.g., !AMPlayer) may exhibit timing-sensitive behaviour; if issues occur, test with the interpreter mode.\n \n## Troubleshooting\n| Symptom | Remedy |\n| --- | --- |\n| Emulator launches without a window | Ensure Qt 5 runtime libs are discoverable; this fork delays snapshot requests to avoid deadlock, so missing Qt plugins are the usual culprit. |\n| No network connectivity | Confirm SLiRP support was compiled in (`CONFIG_SLIRP`) and NAT rules are configured. |\n| ROM not found | Ensure ROM files are placed in the `roms/` directory and selected in the machine configuration. |\n| Machine data not persisting | Check that the `machines/\u003cname\u003e/` directory exists and is writable. |\n\n## Contributing\nIssues and pull requests are welcome, especially around debugger/inspector features.\n\n## License \u0026 credits\n- Licensed under the **GNU General Public License v2**. See `COPYING` for details.\n- Original emulator by the RPCEmu contributors.\n ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewtimmins%2Frpcemu-extended","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewtimmins%2Frpcemu-extended","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewtimmins%2Frpcemu-extended/lists"}