A Game Boy emulator written in C, C++ and Qt for Linux, Windows and Android
Find a file
2024-09-08 15:48:01 +00:00
.vscode Aldonis prefiksitajn komandojn 2024-09-02 13:52:53 +02:00
.gitignore Initial commit 2024-08-13 20:09:45 +00:00
disassembler dismuntistilo preta 2024-09-05 19:25:22 +02:00
disassembler.c dismuntistilo preta 2024-09-05 19:25:22 +02:00
LICENSE Initial commit 2024-08-13 20:09:45 +00:00
Opcodes.json Disassembler skeleton added 2024-08-19 17:41:54 +02:00
README.md Update README.md 2024-09-08 15:48:01 +00:00
snake.gb Disassembler skeleton added 2024-08-19 17:41:54 +02:00
snake1.gb dismuntistilo preta 2024-09-05 19:25:22 +02:00

QBoy

QBoy logo

QBoy is pronounced as "cube-ee"

A Game Boy emulator written in C, C++ and Qt for Linux, Windows and Android

Introduction

Image of a Gameboy QBoy is a Game Boy emulator written in C (the C-library would implement the processor emulation) and a GUI implemented with C++ and Qt for graphics and timing. I am largely following a blog by Inspired by Python which implemented the emulator in Python.

I already implemented a Intel-8080 emulator. The original 1989 Game Boy used an 8-bit Z80 (LR35902) CPU, which supports the Intel-8080 instructions and more but with even more power running at 4.19 MHz! Thus the intuition should be transferable, however the GB will be much more complex than the previous project.

Here the motivation for why someone should write a GB emulator: Tim Jacobs: Why YOU Shoud Write A Gameboy Emulator

Goals

  • Successfully emulate The Legend of Zelda Link's Awakening (not all machine instructions need to be implemented)
  • Create a Citra/Yuzu-style GUI which can locate the game files in a directory and allows for button mapping
  • Create an installable package for PC
  • Create a Hugo website for it hosted on GitLab
  • Look into GBC emulation
  • Look into GBA emulation

Implementation tasks

  • Read the basics and assembling the necessary literature and sources
  • Write a disassembler (very similar to the Intel-8080 emulator)
  • Implement an interactive debugger (similar to the Intel-8080 emulator)
  • Implementing a Qt API and basic UI for both PCs and Android
  • Language support for German, Slovene and especially Esperanto
  • Add savestates (and the ability to import them - export as json to learn json)
  • GB Graphics (Vertical Blanking, Blitting, Scrolling and Sprites; this was hard with the i8080)
  • Version 1 Milestone: LoZ: LA works + GUI works + Hugo website running
  • Code optimizations from the guide