Skip to content

ybchen97/orbiboy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orbiboy: A Browser based GameBoy Emulator

Orbiboy is a project about developing a Gameboy emulator that runs on modern web browsers. The emulator is written entirely in C++, and subsequently compiled into WebAssembly via Emscripten to be deployed on our website. This project is done together with tanyyhh as part of a school project under National University of Singapore called Orbital.

Check out our video demo.
Emulator.

How to Use

  1. Choose a ROM file by pressing "Select ROM".
  2. Press "Load".
  3. Enjoy!

Components

On the emulator side, we have emulated most of the components of the Gameboy architecture as shown below:

  • CPU
  • Memory Management Unit (including Memory Bank Controllers 1 & 2)
  • Graphical Processing Unit
  • Timer System
  • Interrupt System
  • Joypad Controls

Some notable exclusions are the less common Memory Bank Controllers (we have only implemented MBC 1 and 2), the serial port, and sound. The emulator is still buggy, based on testing with Blargg’s test ROMs, a suite of ROMs designed specifically to test Gameboy emulators. We managed to pass 8/11 of the CPU instructions test, but failed the rest of the tests. Nevertheless, our emulator still manages to run simple games such as Tetris and Super Mario Land.

List of games that run on our emulator:

  • Tetris
  • Super Mario Land (small bugs)
  • Mario & Yoshi
  • Klax

For the web app, we have included the following features:

  • Uploading of Gameboy ROM files from the user’s local file system
  • Saving & loading of the current game state: A snapshot of the current game can be saved, downloaded, and - re-loaded onto the webapp by the user
  • Pausing of the game

Screenshot

Super Mario Land

Resources

A few people to thank in the process of making of this emulator: