Skip to content

stephenroden/proton

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Acorn Proton

Acorn Proton is a Rust-based BBC Micro emulator.

Status

Acorn Proton is an in-progress emulator focused on accurate BBC Micro Model B behaviour, with recent work concentrated on video timing, display streaming, disc support, and emulator architecture.

Current priorities are:

  • hardware-accurate behaviour over title-specific fixes
  • a cleaner video pipeline with explicit display-stream boundaries
  • macOS as the primary first-class desktop target

Some parts of the wider BBC Micro ecosystem are still incomplete, so this should be read as an actively developed emulator rather than a finished all-features release.

Requirements

These instructions are for macOS, which is what this repository currently targets most directly.

  • Xcode Command Line Tools
  • Rust toolchain via rustup

Install them with:

xcode-select --install
curl https://sh.rustup.rs -sSf | sh
source "$HOME/.cargo/env"

Open a new shell after installing Rust if cargo is not yet on your PATH.

Run The Application

From the repository root:

cargo run

On first GUI launch, Proton can download the required ROM assets automatically if they are not already present on the machine. Downloaded managed assets default to ~/Documents/Acorn Proton.

Build A macOS App Bundle

To build Acorn Proton.app:

./make-app.sh
open "Acorn Proton.app"

The app bundle script builds a release binary and assembles a macOS .app package that you can also drag into /Applications.

To sign the app with a local Developer ID certificate:

SIGN_APP=1 \
SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
./make-app.sh

Build A macOS Release DMG

To build a versioned macOS release artifact:

./make-dmg.sh

This creates a compressed .dmg in dist/ containing Acorn Proton.app and an Applications shortcut, suitable for attaching to a GitHub release.

To sign and notarize the DMG without storing secrets in the repository:

  1. Store notarization credentials once in your macOS keychain:
xcrun notarytool store-credentials "YOUR_NOTARY_PROFILE" \
  --apple-id "your-apple-id@example.com" \
  --team-id "TEAMID"
  1. Build, sign, and notarize:
SIGN_APP=1 \
SIGN_DMG=1 \
NOTARIZE_DMG=1 \
SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
NOTARY_PROFILE="YOUR_NOTARY_PROFILE" \
./make-dmg.sh

This keeps the signing identity in your keychain and uses a named notary profile instead of embedding credentials in scripts.

Development Commands

Run these from the repository root:

cargo check
cargo test
cargo fmt
cargo clippy -- -D warnings

Some tests require local ROM, tape, or disc fixtures and will fail if those assets are not available in the expected locations.

Assets

Proton does not ship copyrighted ROMs.

  • Required ROMs can be downloaded on first launch.
  • Managed downloads are stored under ~/Documents/Acorn Proton.
  • Repository-local fallback assets are supported during development when present.

Project Layout

  • src/: emulator source code
  • packaging/: macOS app bundle resources
  • src/assets/: app images and sound assets

Within src/, the main areas are:

  • src/hardware/: CPU, video, VIA, disc, tape, sound, keyboard, and display pipeline code
  • src/machine/: machine integration and higher-level BBC Model B behaviour
  • src/app/: startup, config, UI, assets, and platform-specific runtime code

Notes

  • Startup depends on ROM assets being available locally or downloadable at first launch.
  • make-app.sh requires cargo to be available on your PATH.
  • The repository intentionally avoids bundling ROMs, disc images, and tape fixtures.

Acknowledgements

Proton is developed independently, but it benefits from the wider BBC Micro preservation and emulator community.

  • Emulator projects that were useful points of comparison while investigating behaviour and hardware timing include B-em, jsbeeb, BeebEm, and b2.
  • The BBC Micro documentation ecosystem has been invaluable, especially The Advanced User Guide for the BBC Micro by Andrew Bray, Adrian Dickens, and Mark Holmes.
  • Hardware-oriented reference material from the BeebFPGA project and related BBC Micro hardware writeups has also been helpful when checking implementation details.
  • More broadly, thanks are due to the authors, maintainers, archivists, and reverse-engineers who have kept BBC Micro software, ROMs, manuals, and hardware knowledge accessible.

About

Acorn Proton - A BBC Microcomputer emulation

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors