Emudev Survey Results
by cqcumbers on 10 Jan 2021The emulator developer survey has just wrapped up, and as promised the results are summarized here. Many thanks to every one of the 143 people who filled out this survey, this was made possible by your participation. The survey was open for 2 weeks between December 28 2020 and January 10 2021, and most people probably saw it on either the emudev discord or r/emudev on reddit.
- Are you currently writing an emulator?
- Have you written an emulator?
- Have you contributed to an existing emulator project?
- How are your emulators licensed?
- What systems have you emulated?
- What system would you recommend to beginners?
- What systems are you interested in emulating in the future?
- What languages have you used to write emulators?
- Which of the following techniques have you used?
- Which frontend libraries have you used?
- What platform do you primarily develop on?
- What platforms have you targeted?
- If you’ve written assembly, what is your favorite ISA?
- Have you written homebrew or test ROMs?
- Have you written hardware documentation?
- How useful do you find unofficial docs, as compared to official ones?
- What topics would you like to see more written about?
- Where do you interact with other emulator developers?
- How often do you interact with other emulator developers?
- How would you rate your interactions with the emulator development community?
- Have you been paid for emulation work?
- How long have you been writing emulators?
- How long have you been programming?
- What country do you live in?
- How old are you?
- What is your gender?
- Are you transgender?
- Are you a student?
- What is the highest level of education you have completed?
- Do you write software professionally?
- How frequently do you work on emulators?
- How frequently do you program?
- What other kinds of software do you write?
- What other communities are you a part of?
- What are some tools or resources you think emudevs should be more aware of?
- What do you think the emulator development community should prioritize more?
Are you currently writing an emulator?
Single select.
Have you written an emulator?
Single select. About 75% of the people who responded were working on an emulator at the time, and even more of them have written an emulator in the past.
Have you contributed to an existing emulator project?
Single select. Emulator development seems to be a solitary effort for most, with only around a quarter of respondents having contributed to an existing project.
How are your emulators licensed?
Multiple select. Despite mostly being developed alone, it seems most developers appreciate the value of open source, with almost half of respondents using the permissive MIT license. Among open source licenses, the distant second in popularity is GPL3, followed by BSD. In the “Other” category, the most popular option was source visible but not licensed.
What systems have you emulated?
Multiple select. The most popular beginner systems, Chip-8 and Game Boy, dominate here, followed by the NES. Game Boy Advance, Playstation, and Sega Master System follow. Past the fifth generation of consoles experience gets much scarcer. The write-ins varied a great deal, but included various arcade systems, VAX, and Game Gear.
What system would you recommend to beginners?
Single select. About 2/3 of respondents would recommend Chip-8 to beginners, and about 1/6 would recommend Game Boy. NES is less popular than expected, perhaps because of the number of mappers needed. The Sega Master System was the most popular of the write-ins, enough so to merit its own category.
What systems are you interested in emulating in the future?
Multiple select. The Game Boy Advance tops this list by a decent margin, perhaps because it appears as the logical step up from the ever-popular Game Boy, as well as having a large library of memorable games. The Super Nintendo is second, followed by the NES and Game Boy. The original Sony Playstation and Sega Genesis are next as the most popular non-Nintendo systems. The most popular write-in response was the NEC PC-98, a line of x86-based personal computers big in Japan.
What languages have you used to write emulators?
Multiple select. C++ is unsuprisingly the most popular language for emulators, but its dominance is somewhat less than expected, with just under 60% of respondents having used it for emudev. The most popular write-in was golang.
Which of the following techniques have you used?
Multiple select. Note that more than half of the people who responded to this survey did not select any of the provided options. Interestingly, fewer people have experience using dynarecs than cached interpretation, despite (anecdotally) the latter term being less well known. Presumably this is because the latter is more easily added to an existing interpreter. The number of people who’ve used static recompilers and virtualization is also a little suprising, given how infrequently these topics seem to be discussed.
Which frontend libraries have you used?
Multiple select. SDL is the standard front-end choice, used by almost 80% of respondents. Imgui is popular but not quite as univeral, while libretro, though well-known to users, is rarely useful for developers. The most popular write-in was SFML, followed by GLFW and WGPU.
What platform do you primarily develop on?
Single select. Developers are evenly split between Linux and Windows as their primary development platform. macOS is significantly less common.
What platforms have you targeted?
Multiple select. Although one would think their users make up a minority of the general emulation userbase, Linux is the most popular target in this survey, beating out Windows by a small margin. macOS also seems disproportionately represented for its market share, while Android and iOS appear underserved. The write-ins include both non-macOS BSDs and DOS.
If you’ve written assembly, what is your favorite ISA?
Single select. About one third of respondents did not answer this question.
Have you written homebrew or test ROMs?
Single select. Almost half of respondents have written some homebrew or test ROM, probably for exploring behavior or debugging issues against another emulator. I suspect (from my own experience) most of these are not made public, though.
Have you written hardware documentation?
Single select. Writing human-readable hardware documentation is less common, involving less than a quarter of respondents. Since many developers gravitate towards already well-documented systems, this could be due to lack of original content to write about, as well as lack of time and interest.
How useful do you find unofficial docs, as compared to official ones?
Single select. People really appreciate unofficial documentation, with 62% finding them essential for writing an emulator, and nobody calling them unnecessary - which perhaps speaks to how incomplete and inaccurate official documentation tends to be for most systems.
What topics would you like to see more written about?
Multiple select. Lots of people are eager for more articles about recompilers, though there aren’t many experts with time to write, and many possible optimizations to discuss. The graphics pipeline is also a highly requested topic, though this probably has to be more system specific. The most popular write-in response was sound emulation. If you’re interested in contributing an article on these topics and would like help, please get in touch on discord.
Where do you interact with other emulator developers?
Multiple select. As expected from where this survey was posted, most respondents use Discord and Reddit.
How often do you interact with other emulator developers?
Single select. Most respondents only occasionally interact with other emudevs, and so represent a different slice of the community than one might get only looking at the most active or well-known participants.
How would you rate your interactions with the emulator development community?
Single select. The people who took this survey generally find their interactions with the community positive, despite not interacting very often.
Have you been paid for emulation work?
Single select. The emulation community is 90% hobbyist, but there is a small minority who have been paid for emulation work. I would assume this mostly consists of hobby projects that have found donors to fund their work, but it could also be from employers like VMWare who develop emulation commercially.
How long have you been writing emulators?
Single select. Those who answered this survey are largely beginners, with more than a third having less than a year of experience with emulation. Less than 10% have more than 10 year of experience in emulation specifically.
How long have you been programming?
Single select. It seems most emulator developers have lots of experience writing other software - almost half of respondents had more than 10 years of experience in programming.
What country do you live in?
Single select. Most developers are from the United States or United Kingdom, and the remainder are largely from European countries. 3% are from South America, 3% are from Australia or New Zealand, and 5% are from Asia, including Turkey.
How old are you?
Single select. Emulator development may seem to attract younger people than the wider programming community, but not by that much. The average American Stack Overflow user is about 34, while our global median age is in the 25-29 range.
What is your gender?
Single select. The emulation community seems to be about 90% male, which is roughly the same as on Stack Overflow. Nonbinary representation seems a bit higher than average and female representation a bit lower.
Are you transgender?
Single select. About 5% of those surveyed were transgender.
Are you a student?
Single select. Contrary to the stereotype of emulator developers as students with lots of free time, only a third of those surveyed were full time students.
What is the highest level of education you have completed?
Single select. Many developers are highly educated, with two thirds having some kind of college degree. However, nobody with a doctorate seems to have the time to write emulators (and answer this survey).
Do you write software professionally?
Single select. Professional programmers make up the majority of emulator devs, though not overwhelmingly so. About 30% plan to write software professionally in the future, but the remainder would prefer it remain a hobby.
How frequently do you work on emulators?
Single select. For most people, emulation is a hobby, and the amount of time respondents spend on it lines up with that. The median is between 1 and 5 hours a week spent developing emulators.
How frequently do you program?
Single select. People spend a remarkable amount of time programming every week, with nearly a quarter doing more than 40 hours, over a full workweek spent exclusively writing software.
What other kinds of software do you write?
Multiple select. Video games and web backend were the most popular categories of other software people write, followed by game engines and embedded software. Interestingly, emulator developers are more likely to have experience creating programming languages than designing websites, despite the latter being a much more common job. The similarities in how languages and emulators are implemented likely play a role. The “Other” category varied a lot, but included desktop apps and simulation software.
What other communities are you a part of?
Multiple select. About two thirds of respondents did not choose any of the options given for this question. The most popular response was game decompilation, followed by speedrunning. Write-ins included hacking and game collecting.
What are some tools or resources you think emudevs should be more aware of?
- Ghidra
- Intel/AMD programming guide/manuals (or ARM too I suppose)
- They know ‘em all
- Beyond Compare, any hexeditor, Ghidra, IDE with good debugger (sorry, GDB is not a good tool), compiler features like ASAN, UBSAN, etc
- KiCad for hardware design
- nesdev.com
- Google always helps
- The new ImHex hex editor, which is fully OS
- Emulators which have debugging tools
- emacs
- Development toolchains for the platforms you’re working on emulating
- FPGAs
- Ghidra seems underutilized (I’m guilty of this too)
- Ghidra
- The people in the discord
- Dunno
- Profilers
- I’m fairly new to emulation, but test roms and logs from others emulators have been very helpful to me
- Visual studio debugger is quite good
- Resouces: https://copetti.org/projects/consoles/, our server, other emudevs. Tools: (Windows): 010 Editor, Beyond Compare
Free response. Only a few people answered this question. The responses are difficult to summarize, but many included Ghidra, an open source decompiler and reversing tool.
What do you think the emulator development community should prioritize more?
- Documentation
- Since I consider it a hobby activity, may each developer find what interest them. Other than that, less drama would be nice.
(O_O)
- Giving back to the community - sharing knowledge, fixing documentation and write test suites.
- Architectures of Emulators
- Proper licensing
- Writing blogs and guides for more advanced systems
- I’d like to see original Xbox games play on PC
- Tutorials for 2nd tier systems (IBM PC for example)
- Collaborating on common tools, specially for binary translation
- When beginners ask “what system should I start with”, actually examine potential candidate systems properly and explain their pros and cons
- Accessibility
- Any features of the hardware (built-in or as an add-on/peripheral) that currently have missing or incomplete implementations.
- Collaboration
- Optimization
- Getting rid of idiots on the discord who dont actually dev emus and only ever talk about their personal lives, politics, etc.
- Easy-to-read code
- I think a simple toy system that has the basic features of a typical machine, but is simple to implement would be much better for beginners than any of the existing choices
- The process of reverse engineering machines; and the proper dump of game contents
- Clarity and verbosity of documentation
- Nothing; it’s a bunch of individuals working on things they individually find rewarding. No need to coordinate a ‘community’
- Cooperation
- We should create some open source and beginner friendly projects (NDS, GCN?)
- Directing new emulator devs to systems other than chip-8
- Depends on the emulator/group but a wider focus of game compat (cemu only works on Zelda it feels) or underapreciated platforms (Xbox 360). Also closed source is unacceptable for large (patreon paid) projects as this does nothing for the preservation of the hardware
- I’m not sure
- Resources for beginners and opportunities for collaboration
- More attention to 1) modern systems / HLE, and 2) obscure unemulated systems in danger of disappearing
Free response. These also vary a lot, but many stressed reverse engineering of obscure systems, as well as better documentation and more tests in general.