/JChip8

A Chip8 emulator, assembler, and disassembler written in Java

Primary LanguageJava

/******************************************************************************
 * JChip8 - A free assembler, disassembler, and emulator for the Chip8        *
 * by Calvin "calzoneman" Montgomery                                          *
 ******************************************************************************
 *                                                                            *
 * This work is licensed under the Creative Commons Attribution 3.0 Unported  *
 * License. To view a copy of this license, visit                             *
 * http://creativecommons.org/licenses/by/3.0/ or send a letter to            *
 * Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, *
 *  94041, USA.                                                               *
 *                                                                            *
 ******************************************************************************/
 
 
--- JChip8 v1.0 by Calvin Montgomery ---

Usage: java -jar JChip8.jar <run(r)|assemble(a)|disassemble(d)|hexdump(h)> <file> [--output(-o) <dest>]

run <file> loads Chip8 bytecode from <file> and executes it
assemble <file> assembles Chip8 assembly into bytecode.  If the -o flag is specified, it is saved to <dest>, otherwise <file>.ch8
disassemble <file> disassembles Chip8 bytecode from <file>. If the -o flag is specified, it is saved to <dest>, otherwise <file>.asm
hexdump <file> prints the contents of <file> in hexadecimal

As of v1.0, the keymap is hardcoded as follows:

 Chip8       US Keyboard
1|2|3|C        6|7|8|9
4|5|6|D        Y|U|I|O
7|8|9|E        H|J|K|L
A|0|B|F        N|M|,|.

Also as of v1.0, The emulation speed is unrestricted*.  I have been unable to find documentation on the number of instructions per second
executed on the Chip-8.  If you happen to know or have suggestions, please contact me.

* While execution speed is not limited, the values of DT and ST are subtracted at a rate of 60Hz, as on the original Chip8

I can't provide ROMs or assembly sources that I did not write without documentation of their licensing, but 
here are some websites where you may find some:
<http://www.pong-story.com/chip8/>
<http://chip8.com/?page=88>

For assembly reference, see
<http://devernay.free.fr/hacks/chip8/C8TECH10.HTM>
The mnemonic format used by JChip8's assembler follows the syntax described on that page.