/gbemu

A Gameboy emulator written in C# for fun

Primary LanguageC#MIT LicenseMIT

gbemu

CircleCI

This is a Gameboy emulator written in C# and ASP.NET Core/Standard. Written purely for educational purposes!

Current roadmap - 0.1.0

  • Start Project!
    • Define Skeleton
    • Define methods of loading .gb files
    • Define modular components (Processor, GraphicsProcessor, Memory, etc)
  • Create Processor Module
    • Fetch Opcodes from Memory
    • Decode Opcodes (technique on this is still in discussion; currently using Dictionary with opcode being the index, and returning an action to execute.
    • Implement all Flags and Register related functionality; i.e. Updating Flags and Registers, returning Paired Registers, etc
    • How do we test the Processor Module? Here is a collection of gb-test-roms that we may be able to leverage.
  • Look into MemoryController and Memory management

All decisions are loosely made are open for discussion for improvement. Most decisions are based from the documentation of the Gameboy development cycle as well as the resources linked below.

Some development resources

CPU/OpCode Resources
Gameboy CPU Manual
Gameboy CPU (LR35902) instruction set
GameBoy Opcode Summary
GameBoy CPU InstructionSet Sheet (GCISheet)
DECODING Gameboy Z80 OPCODES