Skip to content

Instantly share code, notes, and snippets.

@wheremyfoodat
Last active March 18, 2024 19:05
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save wheremyfoodat/81412590a9fd6f243ede27c7d06d8812 to your computer and use it in GitHub Desktop.
Save wheremyfoodat/81412590a9fd6f243ede27c7d06d8812 to your computer and use it in GitHub Desktop.
Why having multiple emulators is good

Forenote: Most of the following is simply my point of view as an emulator developer. Various names are omitted for privacy reasons.

I usually write blog posts aimed at developers, but I'd like to make an exception just this once. For a lot of game consoles you have likely noticed that there's multiple emulators for said console. Even for more modern systems like the Nintendo 3DS, you've got several active emulators such as Citra, Mikage and Panda3DS, and some less active ones at the moment such as Corgi3DS. This has made many people in the emulation community ask "Why do emulator developers not simply collaborate"? Thus, I'd like to dedicate this post to answering this question as an emulator developer myself.

1) We actually do collaborate!

Even when we're working on different emulators, we very often collaborate and help each other. A lot of people don't know, since it usually happens over messages that are either private or don't get much traction. For example, both the Mikage and Citra teams have helped me one way or another with Panda3DS and have always been supportive.

In particular, the Citra team has offered a vast amount of help with their code, by being willing to answer questions, and sometimes even contributing essential code directly to the Panda repo. Citra has also helped Panda gain public attention, by promoting it on their Twitter and helping moderate the Discord server.

Neobrain from Mikage at the same time has also helped me debug issues and found bugs in my code, and has been more than happy to help with any questions I've sent his way. Just last month, Neo found a bug in Panda's texture wrapping code that was messing with Captain Toad graphics, and has helped understand several other things.

Imgur Aforementioned aptain Toad bug. The window he's looking out of is meant to be circular. Image is kind of crispy due to me being dumb.

Furthermore, even developers working on emulating different consoles can assist each other directly or indirectly. The most iconic example of this is Dolphin, whose codebase is a treasure trove of helpful tools. You can find pieces of its code on so many other emulators even non-emulator projects.

Of course, I'm also willing to try my best to help other devs when necessary. So at the end of the day, even when we're working on different codebases, there's still a form of collaboration going on.

2) A lot of emudev drama isn't actually drama

It's often thought that devs of different emulators have some sort of drama between them. While that may be true on specific occasions, a staggering amount of "drama" is actually fabricated by certain communities and doesn't really exist, or is blown way out of proportion. It's best to remember that things aren't always black and white in human relations. Most other emulator developers I know, not just from the 3DS scene, are fine and pleasant people to talk with. It's also important to emphasize that most emulator developers don't want fans of their projects to trash-talk other projects, nor the other way around. For example, I'm very happy to see people enjoy one of the projects I've contributed to, but seeing them say bad things about other projects typically doesn't spark joy. In fact, I'd be very happy to see more projects popping up.

3) More often than not, it's good to do your own thing.

First of all, having more emulators to choose from, with different sets of featuress and goals, is a good thing. It means that the end user can easily find an emulator that suits their needs. One may need various things from an emulator, ranging from playing X game, to having specific graphics enhancements, speedrun tools, scripting tools, a configurable UI, netplay, or even the ability to use the emulator to train an AI (This has actually been done with several emulators, such as PCSX-Redux or PyBoy). This might all be too hard to integrate in a single codebase in a reasonable amount of time, so having multiple choices is always good. Of course, nothing is stopping the end user from using multiple emulators for different purposes, there's no reason to only support one project.

It's like restaurants; they all have a specific goal, providing people with food. But they do so in different ways while providing different sets of features. There's no reason you can't enjoy both a creperie and an Italian restaurant.

Additionally, having multiple different options also helps with other things such as amassing more knowledge and research about the system (which helps the development of homebrew, hacks, other emulators, and so on), being able to port to different platforms, and more. Also, and very importantly, it's fun to make your own thing a lot of the time!

So, what can we do to ensure a healthier emulation community? Can we achieve that when a system has several active emulators?

Of course! The main thing that needs to be done is to respect each other and stay civil, developers and end users alike. This is what is required to create a competitive and healthy environment where all projects can flourish and help the scene grow even further.

Additionally, it's important for end users to focus on providing constructive feedback rather than being strictly dismissive of certain projects. For example, it's best to submit an issue on a project's repository saying "X game has this bug" or "Could you add this feature?" or "I don't like the way this part of the project works" than to resort to insults and dismissal. Always remember that devs are human too: Most emulator work is done as volunteer work, or while receiving some funds but far from enough to pay the bills (a few exceptions do exist though). Certain emulators are even developed at a loss of money, due to needing to buy necessary hardware. We too have feelings, and seeing productive feedback is nice, while seeing people post "lol this project sux" is hurtful.

Thank you for this lengthy read, see you next time! Feel free to mention your own opinions and ideas as well.

@RobLoach
Copy link

RobLoach commented Oct 8, 2023

Thanks for sharing this! It's always good to have more emulator options out there. We all learn from each other, and grow together.

@G-Spawn
Copy link

G-Spawn commented Oct 8, 2023

End of the day we truly are all in this together. Use everything available to you option wise! Especially if it helps you enjoy the nostalgic games that made you who you are today 😛

@CCCP1982
Copy link

CCCP1982 commented Oct 9, 2023

It’s a pity that there is no competitor for Dolphin!

@geextahslex
Copy link

very informative, thank you

@Justin-ojay
Copy link

AHH, nice to know

@Brsena14
Copy link

Thanks for sharing this!

@LukeUsher
Copy link

It’s a pity that there is no competitor for Dolphin!

It doesn't necessarily need a competitor, but Dolwin (one of the first-ever GameCube emulators from ~2005) recently resumed development as PlayCube/PureiKyubu over at https://github.com/emu-russia/pureikyubu

@CCCP1982
Copy link

It’s a pity that there is no competitor for Dolphin!

It doesn't necessarily need a competitor, but Dolwin (one of the first-ever GameCube emulators from ~2005) recently resumed development as PlayCube/PureiKyubu over at https://github.com/emu-russia/pureikyubu

I know, but still no progress. That's why I wrote that Dolphin has no competitor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment