emuStudio is a modular desktop application for emulating historic and teaching-oriented computers and for writing, loading, and debugging programs for them ("compile, load, emulate" workflow). It is built around a plugin model, so compilers, CPUs, memories, and devices can be combined into complete virtual computers.
emuStudio is used both as a learning tool, but also as a base for emulator development, providing well-documented and rich SDK. Emulated computers are called "virtual computers". Often they are full system, feature-rich and cycle-accurate emulators, capable of running original games or software.
emuStudio is very appropriate for use at schools as teaching tool. For example, emuStudio is used at the Technical University of Košice since 2007.
- Desktop application with computer schema editor, source code editor and emulation debugger
- CLI entry point for launching configured virtual computers and running automation
- Official compiler, CPU, memory, and device plugins
- Bundled computer configurations and example files shipped with the distribution
- MITS Altair 8800
- Manchester SSEM
- Random Access Machine (RAM)
- Random Access Stored Program (RASP)
- BrainDuck, a Brainfuck-oriented teaching machine
- ZX Spectrum 48K (in development, not included in releases yet)
Bundled configuration files live in application/src/main/files/config.
At first, download a packaged release from https://www.emustudio.net/download/.
Prerequisite is to have:
- Java 11 or newer
- Linux, Windows or Mac
After unpacking the release package, start emuStudio with:
- Linux, Mac:
./emuStudio - Windows:
emuStudio.bat
Useful CLI entry points:
./emuStudio --help
./emuStudio --computers-list
./emuStudio automation --helpBuild the full project:
./gradlew buildCreate a distributable archive:
./gradlew :application:distZip
./gradlew :application:distTarDistribution archives are written to application/build/distributions/.
There are several related projects used by emuStudio that contributors should be familiar with:
- emuLib, shared runtime library (defines plugins API, common data structures, and utilities)
- Edigen, instruction decoder and disassembler generator (used for CPU plugins)
- Edigen Gradle plugin
- CPU testing suite, framework for writing and running CPU instruction tests
- emuStudio website, source for the project website and user/developer documentation
- User documentation: https://www.emustudio.net/documentation/user/introduction/
- Contributing guide:
CONTRIBUTING.md - Developer documentation: https://emustudio.github.io/documentation/developer/getting_started/contributing
- Release notes:
RELEASES.md - Plugin-specific notes: README files inside individual plugin directories
emuStudio builds on documentation, research, and emulator work from projects and communities such as:
- simh
- MAME
- David Sharp's SSEM site
- Esolang's Brainfuck site
- DeRamp Altair
- Altair Clone
- Study of techniques for emulation programming
- Intel 8080 instruction table
- ZX-Poly emulator
- Patrik Rak's z80 test suite
- ZXSpectrum Next tests
...and many more! Thanks to all the emulator developers, documenters, and researchers who have shared their work and made projects like emuStudio possible.
