5 ms·
Does anyone have any links to blog posts they consider good descriptions of what goes into making a game console emulator? I am super impressed by the content
by gamegoblin 6y ago
Does anyone have any links to blog posts they consider good descriptions of what goes into making a game console emulator?
I am super impressed by the content of this post, but I bet there is also a lot that is going over my head that I am not even aware of.
- Cyph0n 6y agoI’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
- denkmoon 6y agohttps://cturt.github.io/cinoop.html https://cturt.github.io/cinoop.html Basic overview of a GameBoy emulator. Far cry from the complexities of a Switch, but still a great writeup by cturt.
- HideousKojima 6y agoIf you want to get into writing emulators yourself, I'd recommend starting with the CHIP-8. I just wrote one in C# and it was pretty easy, still need to properly handle input and rendering though (I'm currently saving the display output to a bitmap after every draw call)
- fermentation 6y agoIf you’ve got a bitmap you’re almost there, you can stream that bad boy over the bus to SDL for rendering.
- riverg 6y agoI wrote up a series [0] documenting a CHIP-8 emulator I wrote that I hope explains how to get something like this working from the ground up, albeit for a much simpler system. [0] https://river.codes/emulating-a-computer-part-1/ https://river.codes/emulating-a-computer-part-1/
- TAForObvReasons 6y agoDolphin (wii / gc emulator) blog is great: https://dolphin-emu.org/blog/ https://dolphin-emu.org/blog/
- lathiat 6y agoThere are some pretty good YouTube videos on the subject, worth a search
- JetSpiegel 6y agohttps://byuu.net/ https://byuu.net/