4 ms·
I’ve recently been working on a Gameboy Color emulator in Rust[1], mostly as a learning project, and it has been an absolute blast! I’ve never enjoyed working o
by Cyph0n 6y ago
I’ve recently been working on a Gameboy Color emulator in Rust[1], mostly as a learning project, and it has been an absolute blast! I’ve never enjoyed working on a project this much to be honest - it’s very satisfying to gradually see your emulator run games developed for another system, especially if it’s a system you’ve personally used in the past.
In my opinion, the best way to learn how an emulator works is to start writing one. /r/emudev and the emudev Discord (see subreddit sidebar) are a great place to start. The Discord in particular is great: it’s split into channels for each system, and there are a ton of pointers to resources for all systems in the main channel.
As far as consoles go, the typical recommendation is to start with CHIP-8. It’s a straightforward system with a very simple design, which makes it relatively easy to emulate.
[1] For the curious: https://github.com/aksiksi/gbc https://github.com/aksiksi/gbc
- city41 6y agoI agree for older machines this is a great approach. A lot of the challenge is being organized and persistent, powering through all the opcodes and making sure they're accurately implemented. I made a Sega Master System emulator many years ago and it was a fun project. I do wonder how one takes on modern machines though. It seems like it'd be a completely different ball of wax.
- Cyph0n 6y agoOh definitely, writing an emulator for a modern system is an entirely different ballgame. I truly respect the dedication and skill of the people behind large emulator projects like PCSX2 and Dolphin.
- agret 6y agoModern game consoles have a lot of common library / OS system calls that instead of emulating you re-create those calls and make your own implementation with the expected return values. The low level stuff and shader translation aspects are very complicated though.
- djmips 6y agoThere must be hundreds of Gameboy emulators now. I guess it's the equivalent of "Hello World" for emulators.
- TylerE 6y agoInfocom Z-Machine? Probably even simpler to implement since it was designed to be emulated.
- sanj 6y agoBeen there, done that! And it was a blast.
- AnIdiotOnTheNet 6y agoPretty sure the word "emulation" doesn't apply. The Z-Machine never had hardware to be emulated, only a virtual machine to be implemented. Ditto CHIP-8 though. For emulating a real system, the Gigatron would be relatively simple. The hard part would be the display because it is bit-banged into NTSC.
- Cyph0n 6y agoI think CHIP-8 is a better candidate for that title. But yes, Gameboy emulators are quite common.
- deleted 6y ago[deleted]
- peteretep 6y ago> it’s very satisfying to gradually see your emulator run This does sound like fun. I feel like I’ve had a similar experience in porting and refactoring legacy code, and each successive step forward unlocks more and more cool stuff