
GameLad – Gameboy emulator written in C++ - vkoskiv
https://github.com/Dooskington/GameLad
======
khedoros1
I finished a Game Boy + Color emulator about a month ago:
[https://github.com/khedoros/khedgb](https://github.com/khedoros/khedgb)

It was my second major emulation project, and took roughly 3 months to write.
Years ago, I started work on an NES emulator and worked on it on+off
for...well, probably about 5-7 years. Despite the time investment, khednes is
a much uglier chunk of code than khedgb. I like to think of it as evidence
that I've learned some things in the meantime.

Game Boy's fun; the CPU's a little nicer than the NES's, the memory
controllers in the cartridges are less numerous and more regular, and the
video controller is built in such a way that most games use less cycle-
counting than they did on NES, so timing isn't as finicky.

I'm moving on to Game Boy Advance now. Figuring out ARM instruction decoding
and reading up on the architecture has taken about the amount of time that it
took to write my initial GBZ80 implementation.

------
AHTERIX5000
Writing Gameboy emulator is fun, just like writing a raytracer. And it can be
nice way to learn a new language. Is there something special/different in this
project compared to many others?

For me the most interesting GB emulation project is Mooneye due to being
written in Rust and its emphasis on accuracy and documentation of GB hardware:
[https://github.com/Gekkio/mooneye-gb](https://github.com/Gekkio/mooneye-gb)

~~~
ericfrederich
My thoughts exactly. Being written in C++ isn't interesting enough on its own.

What about the implementation is interesting? Does it make heavy use of some
new feature like coroutines, or something? It is supposed to be very elegant?
What?

~~~
drewying
Does it have to be interesting to share? Writing a gameboy emulator is a fun
and challenging project in and of itself, and something that not everyone can
do. That alone I think is impressive enough to share.

------
djhworld
Cool.

I wrote a gameboy emulator a few years ago now in Go
([https://github.com/djhworld/gomeboycolor](https://github.com/djhworld/gomeboycolor)),
it was a personal project that had a lot of highs but crippling lows.

Very rewarding, but frustrating. I don't think it builds anymore due to
library conflicts.

------
blackmagevivi9
Nice, looks awesome! I've been writing my own GB emulator off and on for a few
years now. Was this your first emulator? What were the major challenges with
this project for you?

------
jirenandcell
This is cool - well done. What sites / documents did you use to be able to
create an emulator?

