Skip to content

jcrespo/Chip8

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CHIP-8 Emulator

Another Chip8 emulator writed For educational purposes 2018-2026 by Javier Crespo

Description

CHIP-8 is an interpreted programming language, developed by Joseph Weisbecker on his COSMAC VIP and Telmac 1800 8-bit microcomputers in the mid-1970s. It was designed to allow video games to be more easily programmed for these computers, which had very limited memory and processing power. The language runs on a virtual machine, providing a simple yet powerful abstraction for graphics, sound, and input.

The architecture of a CHIP-8 system typically includes 4KB of memory, 16 8-bit registers (V0 to VF), a 16-bit address register (I), and two timers for delay and sound. The display is a monochrome grid of 64x32 pixels, and input is handled through a 16-key hexadecimal keypad. This minimalistic set of specifications makes it an ideal "first project" for developers interested in emulator development.

Programs for CHIP-8 are composed of two-byte opcodes that perform operations such as clearing the screen, jumping to addresses, performing arithmetic, and drawing sprites onto the display. Because it is interpreted, CHIP-8 code is platform-independent, meaning a game written for the COSMAC VIP can run on any system that has a CHIP-8 interpreter.

Over the decades, CHIP-8 has maintained a dedicated following in the hobbyist and retro-computing communities. Its simplicity allows developers to focus on the core concepts of emulation—such as fetch-decode-execute cycles, memory management, and hardware abstraction—without the overwhelming complexity of modern architectures.

References

Controls

The emulator uses the following mapping for the CHIP-8 hexadecimal keypad:

CHIP-8 Keyboard
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

For Pong:

  • Player 1: 1 (Up), Q (Down)
  • Player 2: 4 (Up), R (Down)

Usage

To run the emulator with a specific ROM:

javac *.java
java Chip8 path/to/rom

About

Another Chip8 emulator - For educational purposes

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages