Skip to content
ArkoSammy12Public

Repository files navigation

jemu logo

jemu

Multi-system emulator written in Java.

License: MIT Java Build

Supported systems

System CLI identifier Status
CHIP-8 chip8 ✅ Supported
STRICT CHIP-8 strict-chip8 ✅ Supported
CHIP-8X chip8x ✅ Supported
CHIP-48 chip48 ✅ Supported
SUPER-CHIP 1.0 schip10 ✅ Supported
SUPER-CHIP 1.1 schip11 ✅ Supported
SUPER-CHIP MODERN schip-modern ✅ Supported
XO-CHIP xochip ✅ Supported
MEGA-CHIP megachip ✅ Supported
HyperWaveCHIP-64 hyperwave-chip64 ✅ Supported
VIP CHIP-8 vip-chip8 ✅ Supported
VIP CHIP-8X vip-chip8x ✅ Supported
COSMAC VIP cosmac-vip ✅ Supported
RCA Studio II rca-studioii ✅ Supported
Game Boy (DMG) gameboy ✅ Supported
Game Boy Color (CGB) gameboy-color ✅ Supported
Nintendo Entertainment System nes ✅ Supported
Atari 2600 atari-2600 ✅ Supported
Commodore 64 c64 ✅ Supported
Apple II — 🗓 Planned
Space Invaders arcade cabinet — 🗓 Planned
Sega Master System — 🗓 Planned
ZX Spectrum — 🗓 Planned
Sega Genesis — 🗓 Planned
Super Nintendo Entertainment System — 🗓 Planned

Keybindings

CHIP-8 / STRICT CHIP-8 / CHIP-8X / CHIP-48 / SUPER-CHIP 1.0 / SUPER-CHIP 1.1 / SUPER-CHIP MODERN / XO-CHIP / MEGA-CHIP / HyperWaveCHIP-64 / COSMAC VIP / VIP CHIP-8 / VIP CHIP-8X

Keypad 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

RCA Studio II

Keypad A Keyboard key
1 2 3 1 2 3
4 5 6 Q W E
7 8 9 A S D
- 0 - - X -
Keypad B Numpad key Keyboard key
1 2 3 7 8 9 7 8 9
4 5 6 4 5 6 U I O
7 8 9 1 2 3 J K L
- 0 - - 0 - - , -

Game Boy / Game Boy Color / Nintendo Entertainment System

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

Atari 2600

Action Key
Game Select E
Game Reset R
Left Joystick Up W
Left Joystick Down S
Left Joystick Left A
Left Joystick Right D
Left Joystick Fire F
Right Joystick Up I
Right Joystick Down K
Right Joystick Left J
Right Joystick Right L
Right Joystick Fire ;

Commodore 64

The Commodore 64 core uses symbolic keybindings for the built-in keyboard.

Action Key
A-Z A-Z
0-9 0-9
Left Arrow `
£ ~ (Shift+`)
! ! (Shift+1)
@ @ (Shift+2)
# # (Shift+3)
$ $ (Shift+4)
% % (Shift+5)
Up Arrow ^ (Shift+6)
& & (Shift+7)
* * (Shift+8)
( ( (Shift+9)
) ) (Shift+0)
- -
= =
+ + (Shift+=)
Commodore TAB
CLR/HOME \
Shift Lock Caps Lock
: : (Shift+;)
[ (Shift+:) [
; ;
] (Shift+;) ]
Return Enter
` '
" (Shift+2) " (Shift+')
Left Shift Left Shift
Right Shift Right Shift
, ,
< (Shift+,) < (Shift+,)
. .
> (Shift+.) > (Shift+.)
/ /
? (Shift+/) ? (Shift+/)
Ctrl Ctrl
F1 F1
F2 (Shift+F1) F2
F3 F3
F4 (Shift+F3) F4
F5 F5
F6 (Shift+F5) F6
F7 F7
F8 (Shift+F7) F8
RUN/STOP ESC
RESTORE F12
Up (Shift+CRSR UP/DOWN) Up
Down (CRSR UP/DOWN) Down
Left (Shift+CRSR LEFT/RIGHT) Left
Right (CRSR LEFT/RIGHT) Right
Space Space

Peripherals:

Action Key
Joystick 1 Up Numpad 8
Joystick 1 Down Numpad 5
Joystick 1 Left Numpad 4
Joystick 1 Right Numpad 6
Joystick 1 Fire Numpad 0

Datasette:

Action Key
Play Home
Stop End

Command-line usage

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.

Dev Builds

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.

Building

A Java Development Kit targeting Java 25 or later is required to build this project.

This repository contains git submodules. When cloning, use the --recurse-submodules flag to ensure they are all downloaded correctly.

Once cloned, run the following from the top-level directory:

Windows:

.\mvnw clean package

macOS/Linux:

./mvnw clean package

An executable .jar file will be generated at target/jemu-x.y.z.jar.

To skip the automated unit tests, append -DskipTests to the build command.

License

This project is licensed under the MIT License.

Special thanks

Releases

Packages

Contributors

Languages