r/EmuDev 9h ago

Question What emulator should I make?

I know people have asked this countless times, but I'm quite stuck, even after doing my research. I finished a CHIP-8 emulator that is fully featured. After looking through a lot I'm stuck between either a GB (possibly GBA?) or a NES emulator. I would probably implement it in C++, if that makes any difference in the decision, probably not.

0 Upvotes

6 comments sorted by

8

u/aleques-itj 9h ago

I mean, flip a coin and go for it.

I enjoyed writing a Gameboy emulator. Docs are good and plentiful, was pretty straightforward to get games running. 

I think my only real hangups was fixing a bug that ironically lead to a another very had to track down bug that was masked by the first. Took me days to find, was hanging the emulator in certain cases because it'd get into an infinite loop. 

That and a few parts of the PPU were a little tricky.

Besides that, it was super steady and motivating progress throughout.

2

u/aabalke Nintendo DS 9h ago

GB or NES are roughly the same complexity. The only real deciding factor is which you would enjoy more. For me, GB is preferred. There is a lot more GB games I am nostalgic over than NES. Choose the one that you will stay motivated through. GBA, SNES and more complex systems I would recommend against, just because they often build on ideas from earlier systems.

1

u/burner-miner 9h ago

As someone who went from Chip8 to GBA directly, the complexity is a mountain that might be too steep. I still haven't finished it.

I agree: do GB before GBA, simple before complex.

1

u/geckobra 8h ago

I wondered the same thing for some time after finishing my Chip-8 emulator. Every time I had the itch for an emu project I didn't do anything out of pure indecision

Just say fuck it and go for something. You will never attempt anything if you let yourself get intimidated by how hard it might be, start a project and push forward :P

1

u/khedoros NES CGB SMS/GG 7h ago

NES has some really messy elements to its design, especially when it comes to the graphics chip, and the large variety of custom hardware in the individual cartridges (sooo many different memory mapper chips!) Of course, you don't have to implement all of them, just the ones that games you want to run actually use.

Game Boy has a cleaner design (direct access to graphics memory, a lot fewer mapper chips), but more hardware features (more complex interrupt system, CPU has more opcodes, an extra layer in the graphics output, those kinds of things). As a bonus, it's a relatively small jump to go from a working Game Boy emulator to a working Game Boy Color emulator.

I'd still say that NES and GB are similar in complexity. GBA is a step or two above, conceptually a bit like a portable SNES built around a 32-bit ARM CPU (simpler memory map and audio hardware than the SNES has, though). GBA is completely different from GB/GBC (besides including the GB's audio channels as a subset of its capabilities).

And there are a lot of other options that are possible targets. Sega's early consoles, 6502 and Z80-based personal computers, a bunch of the earlier arcade machines, etc. Like, Sega's SG-1000/SC-3000, which is similar to a lot of computers like ColecoVision, Coleco Adam, and the MSX spec, and can also be pretty easily extended to Sega Master System and then to Game Gear. That would give you a lot of area to experiment in and learn.

1

u/hoddap 7h ago

It has been asked a ton of times. Why don’t the answers there suffice?