Giter Site home page Giter Site logo

gameboy-emulator's Introduction

Gameboy Emulator

An emulator for the first version of the Nintendo Gameboy. Made for higher learning purposes, written from scratch in C++ using the SFML library for windowing & IO.

Gameplay

Blargg CPU tests Tetris Pokemon Red Super Mario Land
Legend of Zelda Kirby's Dream Land Minesweeper Castellian

Features

  • Accurate CPU and Memory emulation
  • 4-bit Grayscale Palette
  • Plays most .gb games
  • Game save states (up to 12 for each game)
  • Ability to overclock CPU x100
  • 60fps Display

Folder Structure

./
    /saves/
    /roms/
    <emulator executable>

Controls

Keyboard Key Function
A A
S B
Z Start
X Select
Up Up
Down Down
Left Left
Right Right
LShift + F1 thru F12 Save State
F1 thru 12 Load Saved State
Space (hold) Overclock CPU x100

Future Plans

Although I already met my main goal of getting the emulator to a point where it could play my favorite childhood game (Pokemon Red), The following are things I would like to add to this project in the future when I have more free time:

  • Implement Audio
  • Add MBC2 support
  • Add Gameboy Color support
  • Add support for Gameshark memory editing cheats

Missing Features / Known Bugs

  • No audio support
  • Currently the ROM is hardcoded into the program, and will need to be re-compiled to play a different ROM, this will be changed once I finish polishing the emulator up.
  • Sprites are not rendered at each scanline, but all at once when each frame is rendered. this may cause visual glitches with sprites in some games.
  • Sprites sometimes overlap each other with garbage background data. There are still a few conditional sprite rendering issues to work out, but they don't affect gameplay very much at all.
  • Missing MBC2 support
  • Loading save states sometimes freezes the emulator, can be fixed by restarting and trying to load it again. The save states are always valid, the emulator just has trouble loading them sometimes.

gameboy-emulator's People

Contributors

mattbruv avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  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.