Giter Site home page Giter Site logo

emuboy's Introduction

Emu Boy

A Nintendo Game Boy emulator written in C++.

Why another emulator?

There are many PC-based emulators that have existed for some time including VBA and BGB. This project was intentionally started independently as a hobby/practice exercise.

Acknowledgments

Emu Boy has been built using Game Boy hardware information available online, primarily:

Game Boy CPU manual

CPU opcodes

Pan Docs

GB boot ROM

The repo includes a binary of GBSnake.

Dependencies

Emu Boy uses SFML for outputting video & audio, and Google Test for unit testing.

Current status

As of now Emu Boy is still in its early stages and is very much a work in progress. It currently supports the following:

  • Fairly cycle-accurate emulation of the LR35902 CPU (all documented instructions + interrupts)
  • Full graphics implementation (sprites + background + window support)
  • Runs (at least) the included snake and Super Mario World, though the latter has some graphical glitches
  • Unit testing of most CPU instructions
  • Windows-only (Visual Studio 2015 solution)
  • Simulates the slow response-time of the Game Boy LCD screen and smoothes upsized jagged pixels
  • Keyboard input

ย 

To-do list

Various features remain to be added including:

  • Sound
  • Menus & ROM file selector
  • Linux/Mac OSX support
  • Performance optimisation

emuboy's People

Contributors

tekr avatar

Watchers

 avatar  avatar

emuboy's Issues

Super Mario Land selects invalid ROM bank

Near the beginning of the 3rd demo Mario level, the CPU sets bit 5 of the ROM bank, which causes indexing beyond the end of the cartridge data (which has only 2 banks).

Could be:

  1. Incorrect value written due to emulator bug
  2. Bits used to select banks not present (i.e. anything above bit 0 in this case) may be ignored, in which case the bank # selected should be the set value mod the # of banks.

Pause text garbled in Super Mario Land

When the game is paused (hit when game is running), PAUSE should be displayed in the bottom right of the screen. Currently it shows an unintelligible mess.

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.