Git Product home page Git Product logo

chip8emu's Introduction

Chip8emu

A Chip8 interpreter featuring keyboard IO and graphics output.

There are many more features which could easily be implemented (save / load states, a game open menu, debug), however I grew very tired toward the end of this project, and was starting to get more and more feature creep. This was my first time working on such a large project, and my first time with a graphics / GUI library, so the code quality involving those parts might not be the best. It doesn't have fancy optimization features, but it runs fine. Tested on my computer with an i7-7700k running Ubuntu, (just eyeballing it) the Space Invaders intro screen ran at it's maximum up to around 500hz. It is certainly fast enough that it can run games without clocking out, at far beyond what is needed for any game.

Usage

To use the emulator, open a game by specifying a command line argument in shell with the game ROM you want to open. For example: ./chip8emu games/glitchGhost.ch8. If the emulator is just quickly opening and closing, make sure you specified the correct game path! You can control the clock speed by clicking the "Settings" menu bar in the top right corner, and dragging the ClockSpeed slider.

Dependencies

I'm not sure how I would include this properly into my github, but my game uses SDL2 as a renderer and imgui as a GUI library with the custom imgui_sdl backend. These can be found here:

SDL2: https://www.libsdl.org/ imgui: https://github.com/ocornut/imgui imgui_sdl: https://github.com/Tyyppi77/imgui_sdl

Building

I didn't implement a proper makefile, and I just relied on a build script to build my code. You'll have to install libsdl2-dev, and clone into imgui and imgui_sdl. Then, copy the contents of imgui_sdl into imgui. Since there's no makefile, imgui_sdl can't include SDL, because no include path is specified. To get around this, change the SDL include from "SDL.h" to <SDL2/SDL.h>. Finally, run the build shell script.

chip8emu's People

Contributors

icanquitwheneveriwant avatar

Stargazers

 avatar

Watchers

Sam Huang avatar  avatar

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.