Basic implementation of Chip-81 emulator in Java 17. Library used to handle screen, time and keyboard is JavaFX.
- Java 17+
- Maven
mvn clean javafx:run-
18.03.2023: Emulator support only few instructions needed to run the simplest program - IBM Logo.
List of current instructions:
- 00E0 (clear screen)
- 1NNN (jump to NNN)
- 6XNN (set NN in register X)
- 7XNN (add NN to register X)
- ANNN (set NNN in index register)
- DXYN (draw N rows indicated by index register)
Screen dump after executing of the program:
######## ######### ##### ##### ######## ########### ###### ###### #### ### ### ##### ##### #### ####### ####### ####### #### ####### ### ####### ### #### ### ### ### ##### ### ######## ########### ##### ### ##### ######## ######### ##### # ##### -
19.03.2023: Added processor tests. Creating the tests helped improve the 7XNN instruction to be more consistent with the documentation.
-
20.03.2023: Incrementation of program count moved to fetch step. Good practice to keep code clean.
-
21.03.2023: All 36 chip-8 commands were implemented. ROM "test_opcode.ch8" works correctly:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β ββ β β ββββββ β ββ β β βββββ ββ β β β βββββ ββ ββ βββ β β βββββββ β β βββ β β ββββββ ββ ββ β β ββββββ βββ β β ββ β β β ββββββ β β ββββ β β β βββββ β βββ β β β β βββββ β β β ββ β β ββββββ β ββ β β βββββ ββ ββ β β βββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β β ββ β β ββββββ β ββ β β βββββ β β β β βββββ β ββ βββ β β βββββββ β β ββ β β ββββββ β βββ β β ββββββ βββ β β ββ β β β ββββββ β β β ββ β β β βββββ β β β β β β βββββ βββ β β ββ β β ββββββ β ββ β β βββββ β β β β βββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β β ββ β β ββββββ β βββ β β βββββ β β β β βββββ ββ βββ βββ β β βββββββ ββ βββ β β ββββββ β ββ β β ββββββ βββ β β ββ β β β ββββββ β ββ βββ β β β βββββ β β βββ β β β βββββ ββ ββ β ββ β β ββββββ β ββ β β βββββ β β β β βββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β ββ β β ββββββ β ββ β β βββββ ββ β β β βββββ βββ ββ βββ β β βββββββ βββ ββ β β ββββββ ββββ ββ β β ββββββ βββ β β ββ β β β ββββββ β β βββ β β β βββββ ββββ β β β β βββββ βββ β β ββ β β ββββββ β ββ β β βββββ ββββ ββ β β βββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β β ββ β β ββββββ β ββ β β βββββ β β β β βββββ β ββ βββ β β βββββββ ββ ββ β β ββββββ ββββ β β β ββββββ βββ β β ββ β β β ββββββ β βββ ββ β β β βββββ ββββ β β β β βββββ β β β ββ β β ββββββ β ββ β β βββββ βββ β β β βββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ ββ β ββ β β ββββββ β β ββ β β βββββ ββ β β β β βββββ β β ββ βββ β β βββββββ β ββ β β βββββββ βββ ββ β β ββββββ β β β ββ β β β ββββββ β βββ ββ β β β ββββββ ββ β β β β β βββββ β β β β ββ β β ββββββ βββ ββ β β βββββ β β β β β βββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ -
22.02.2023:
- After painstaking research and debugging, finally found issues with faulty instructions!
- Added JavaFX. Now emulator looks much better :)
- Added keyboard and sound support, I am able to play all games.
-
23.02.2023:
- File chooser allows to select ROM before emulation. Rummaging through the source code is no longer needed to run programs.
- Refactor Window class by moving code to separate classes. Code looks more readable