Multi-system emulator written in Java.
| System | CLI identifier | Status |
|---|---|---|
| COSMAC VIP | cosmac-vip |
✅ Supported |
| RCA Studio II | rca-studioii |
✅ Supported |
| VIP CHIP-8 | vip-chip8 |
✅ Supported |
| VIP CHIP-8X | vip-chip8x |
✅ Supported |
| Game Boy (DMG) | gameboy |
✅ Supported |
| Game Boy Color (CGB) | gameboy-color |
✅ Supported |
| Nintendo Entertainment System | nes |
✅ Supported |
| Commodore 64 | — | 🗓 Planned |
| Apple II | — | 🗓 Planned |
| Atari 2600 | — | 🗓 Planned |
| Sega Master System | — | 🗓 Planned |
| ZX Spectrum | — | 🗓 Planned |
| Sega Genesis | — | 🗓 Planned |
| Super Nintendo Entertainment System | — | 🗓 Planned |
| CHIP-8 key | Keyboard key |
|---|---|
1 2 3 C |
1 2 3 4 |
4 5 6 D |
Q W E R |
7 8 9 E |
A S D F |
A 0 B F |
Z X C V |
| Keypad A | Keyboard key |
|---|---|
1 2 3 |
Q W E |
4 5 6 |
A S D |
7 8 9 |
Z X C |
- 0 - |
- Alt - |
| Keypad B | Numpad key | Keyboard key |
|---|---|---|
1 2 3 |
7 8 9 |
1 2 3 |
4 5 6 |
4 5 6 |
4 5 6 |
7 8 9 |
1 2 3 |
7 8 9 |
- 0 - |
- 0 - |
- 0 - |
| Action | Key |
|---|---|
| D-Pad Up | W |
| D-Pad Down | S |
| D-Pad Left | A |
| D-Pad Right | D |
| A | J |
| B | K |
| Start | Enter |
| Select | Backspace |
If you launch jemu from the CLI, you can optionally pass arguments.
Usage:
jemu [-hV] -r=<romPath> [-s=<system>]
| Argument | Description | Default |
|---|---|---|
-r, --rom <path> |
Path to the ROM file. | — |
-s, --system <identifier> |
Launch with the specified system selected, or omit to use the saved setting or system detected from ROM file extension, if specified. See supported systems for valid identifiers. | — |
-h, --help |
Show the help message and exit. | — |
-V, --version |
Print version information and exit. | — |
On startup jemu will attempt to perform a power-cycle with the provided, detected, or saved system and specified ROM file, if any.
The repository has a Github Actions workflow that runs on every push to the dev branch and contains native app image artifacts for Windows, MacOS and Linux, which will stay available for 90 days afterwards: https://github.com/ArkoSammy12/jemu/actions/workflows/dev-build.yml
These builds are not well tested and may have bugs.
A Java Development Kit targeting Java version 25 or later is required to build this project.
Clone the repository and run the following command on the top level directory:
mvnw clean package
An executable .jar file should have then been generated in /target/jemu-x.y.z.jar.
Run with the -DskipTests flag to omit running the automated unit tests.
This project is licensed under the MIT License.
- Mathew "theklap" Sutton: Significant accuracy improvements to the NES core.
- dtabacaru: Providing audio filtering logic to system's audio processing units.
- Shawn (L. Spiro) Wilcoxen: Provide accurate audio filtering classes useful for quality NES APU output.
- Andrew "ajoneil" O'Neil: Significant accuracy improvements to the DMG/CGB cores.