QBoy/README.md

38 lines
2.1 KiB
Markdown
Raw Normal View History

2024-08-13 20:09:45 +00:00
# QBoy
2024-08-13 21:11:58 +00:00
![QBoy logo](https://i.redd.it/kfnmr5ukyhid1.png)
2024-08-13 21:14:36 +00:00
2024-08-13 20:59:16 +00:00
QBoy is pronounced as "cube-y"
2024-08-13 20:17:51 +00:00
A Game Boy emulator written in C, C++ and Qt for Linux, Windows and Android
## Introduction
2024-09-05 17:26:35 +00:00
![Image of a Gameboy](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.elconsolas.cl%2Fwp-content%2Fuploads%2F2020%2F09%2Ftop-50-game-boy-games.original.jpg&f=1&nofb=1&ipt=26f93bafc29c74ce4ec8447fd4b15d91c26c99952cbaa31bd11472b1dd646433&ipo=images)
2024-08-15 12:34:24 +00:00
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.
2024-08-13 20:59:16 +00:00
2024-08-13 21:14:36 +00:00
2024-08-13 20:59:16 +00:00
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.
2024-08-13 21:14:36 +00:00
2024-08-13 20:59:16 +00:00
Here the motivation for why someone should write a GB emulator:
![Tim Jacobs: Why YOU Shoud Write A Gameboy Emulator](https://youtu.be/ElwhYW5wjts)
2024-08-13 20:17:51 +00:00
## Goals
2024-08-13 20:59:16 +00:00
- [ ] 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
2024-08-14 20:36:11 +00:00
- [x] Read the basics and assembling the necessary literature and sources
2024-09-05 17:26:35 +00:00
- [x] Write a disassembler (very similar to the Intel-8080 emulator)
2024-08-13 20:59:16 +00:00
- [ ] Implement an interactive debugger (similar to the Intel-8080 emulator)
- [ ] Implementing a Qt API and basic UI for both PCs and Android
2024-08-14 20:55:52 +00:00
- [ ] Language support for German, Slovene and especially Esperanto
2024-08-13 20:59:16 +00:00
- [ ] 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