Skip to content

WIP Nintendo Gameboy Emulator from scratch in C# using FNA

License

Notifications You must be signed in to change notification settings

Kraballa/GameboyEmulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gameboy Emulator

Introduction

This is a prototype gameboy emulator in a very early stage. Progress is slow/nonexistent. Built for education first and performance second. As such accuracy or emulating every part of the console is of no concern currently.

Graphics are done via the FNA library.

Setup Repo

  • pull this repository via git or download as zip
  • follow the steps to include FNA into the project file and copy the .dll files into the output
  • you can download the native libs here, the link in the wiki is broken

Helpful Links

Progress

This is an overview on what's been implemented and what's still left:

  • properly mapped memory
  • basic rom loading setup
  • flags and registers
  • cpu loop, instruction fetching, decoding and executing (last two are done at once)
  • basic support for interrupts
  • basic rendering pipeline (implemented, not working yet)
  • testing pipeline. a modified cpu can be injected with opcodes to test flags and registers
  • fully implement all opcodes
  • render tilemaps and sprite sheets for debugging purposes
  • use Dear ImGUI for options and other UI
  • memory bank switching
  • get through blarggs test roms
  • rendering results visible on screen (currently there's nothing visible on screen yet...)
  • make sure timings and interrupts work properly...
  • play tetris...
  • sound (out of scope for the near future)

Other things to consider

  • replace fixed setting of cycles with dynamically setting it (accessing memory takes 1 cycle per byte, pushing/popping from SP takes 1 cycle per byte, fetching takes 1 byte per fetch)

About

WIP Nintendo Gameboy Emulator from scratch in C# using FNA

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages