this post was submitted on 01 Oct 2024
158 points (100.0% liked)
games
20608 readers
304 users here now
Tabletop, DnD, board games, and minecraft. Also Animal Crossing.
-
3rd International Volunteer Brigade (Hexbear gaming discord)
Rules
- No racism, sexism, ableism, homophobia, or transphobia. Don't care if it's ironic don't post comments or content like that here.
- Mark spoilers
- No bad mouthing sonic games here :no-copyright:
- No gamers allowed :soviet-huff:
- No squabbling or petty arguments here. Remember to disengage and respect others choice to do so when an argument gets too much
founded 4 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Emulation specifically is wickedly hard and there's a reason basically every emulator has a team of dozens to hundreds of contributors and is in active development rather than capable of perfect emulation
Eh, it isn't black magic. It's just very labor intensive to nail down the broadest degree of compatibility possible. Requires tons of testing, and eternal vigilance against regressions (i.e. fixing one game breaks another). The fundamental concepts are well documented, and often times already available in generic implementations (CPU emulators / JIT recompilers / OpenGL / Vulkan implementations / compatibility layers, input libraries, etc). A project like WINE (famously not an emulator) is a lot more complex than a virtual machine which just runs the official binary system firmware.
Not to say it is easy, but it is an interesting subject with tons of literature and free software implementations to study. It has a lot of moving parts, but part of doing effective software development is understanding you don't need to roll your own JIT recompiler when llvm and gcc-jit exist. Most contributors will specialize more or less in one thing (cpu architecture / graphics / audio / networking / debugging / reverse engineering / etc).
Implementing a CHIP-8 is a good way to get into emulation:
Yeah. It's not easy, but if you're a competent assembly programmer it's all fairly straightforward at the theory level.