GithubHelp home page GithubHelp logo

le36 / chip36 Goto Github PK

View Code? Open in Web Editor NEW
14.0 1.0 1.0 13.67 MB

CHIP-8 emulator made with Java. Supports CHIP-8, S-CHIP and XO-CHIP.

Java 96.81% CSS 3.19%
emulator chip8 chip-8 s-chip xo-chip superchip emulator-programming interpreter

chip36's Introduction

CHIP-36

Cross-platform CHIP-8 Emulator made with Java

Chip-8 interpreter and debugger. Currently runs everything made for CHIP-8, S-CHIP or XO-CHIP instruction set. Lots of different features, great tool for learning CHIP-8 or making ROMs for it.

Emu

There are two different modes for the emulator. With the extended mode you have all the registers visible to you all the time. With the normal mode you can focus on running the ROM without all the noise, showing you only the ROM.

Emulator

Quite cool feature is the fact that this emulator tries to remove some typical stutter and flicker CHIP-8 has by fading pixels rather than turning them straight off. The effect works great but has to be adjusted for each rom to get the best possible result. It can also be used to create cool trailing effects for sprites. Effect works even in XO-CHIP 4 color ROMs, but often in these ROMs it's not required and may affect performance.

Fade

There is a lot of customization available. Glow and blur effects for the game, all the colors are adjustable as well. With quirks, you can get any ROM running on this emulator, legacy CHIP-8 or modern XO-CHIP ROM, everything will work. Keyboard is rebindable, so you can truly make them ROMs feel good no matter which platform you are running this emulator.

Options

ROMs can be played from terminal and combined for example with cool-retro-term you can play ROMs like it's 1970. With XO-CHIP ROMs only the default plane will be printed to terminal.

Console

Loaded ROM can be disassembled during runtime. It is possible to follow program counter, or view the emulators RAM by hand. It's possible to see sprites easily with the graphical view feature.

Disassembler

There is separate sprite viewer that shows how the sprites are drawn. Sprites can also be extracted from the ROM. Sprite data can then be easily copied and used in Octo assembler.

Sprites

How to run

Requires Java 11 or newer to run.

Start

Clone project and use this command when in root folder to launch the program

Linux mvn compile exec:java -Dexec.mainClass=com.chip8.Main

Windows mvn compile exec:java -D"exec.mainClass"="com.chip8.Main"

or you can build with

mvn package

or get the prebuilt .jar file from releases.

Testing

Execute all tests

mvn test

Jacoco code coverage report

mvn test jacoco:report

Checkstyle report

mvn jxr:jxr checkstyle:checkstyle

Generate JavaDoc with

mvn javadoc:javadoc

chip36's People

Contributors

le36 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

rivierakid

chip36's Issues

help to make games

Hi

I'm starting to make my own chip-8 emulator in C#.
It will be only very basic so not like your project.

I wanted to try to write my own games but I haveno idea where to even start!
Your emulator seems to be a great working place to make roms.

Is it possible to get in contact with you for questions? I think nobody made a chip-8 emulator that has so cool features!
Did you ever made your own games using chip-8?

Thanks in advance!
Jessica

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.