Support emulation projects: Difference between revisions

From Emulation General Wiki
Jump to navigation Jump to search
Ahayri (talk | contribs)
Ahayri (talk | contribs)
Line 781: Line 781:
|Author of [[BlastEm]]
|Author of [[BlastEm]]
|-
|-
!rowspan="1"|[https://github.com/fleroviux Mireille (fleroviux)]
!rowspan="1"|Mireille (fleroviux)
|[[NanoBoyAdvance]] project.
|[[NanoBoyAdvance]] project.
|}
|}

Revision as of 15:24, 24 March 2025

There are several ways to support or contribute to an emulation project (or similar projects such as compatibility layers, game engine recreations, source ports or simulators). Explained here are different ways you can get involved, even if you have low technical skill and/or no money.

Note that almost all these methods require getting involved in some way. Offering to help in a specific area may not be necessary in some cases, so you'll have to check with each project you're interested in to determine what they're looking for and what they find useful.

Testing & bug reporting

One area you may be able to help in is reporting information, especially if you notice bugs in games that you play. This can be done a number of ways, but they all help the developer see where the emulator still has to improve.

Compatibility reporting

A compatibility report communicates the emulation quality. It is aimed at other users, and often consists of a compatibility list.

Some emulators use GitHub for their lists. Most projects have instructions on how they should be written. Make sure you search to see if any issues you're having has already been encountered by another user. Note that sending users to GitHub is dangerous - you should only do it if the project has a simplified compatibility list which doesn't require technical understanding / writing; most projects actually use wikis or custom tools / websites for compatibility reporting. Some use spreadsheets and forms to get their data.

Bug reporting

A bug report concerns one specific problem. It is aimed at emulator developers.

Because bug reports are meant for developers, they are expected to be more technical than a compatibility report. They're also typically expected to include details about specific situations when the problem arises, but also technical details as to why it happens. Developers also read compatibility reports and create respective bug reports themselves.

Sometimes you need a fair bit of experience in order to report bugs to the major projects. If you lack the experience to match what developers themselves report then most smaller projects are fine with it as long as you try to make it coherent and professional. Many projects have the program set up to automatically forward logs to developers at the user's discretion. This can avoid having to explain the problem, though sometimes they'll want context in case they need to reproduce it.

Generally you should chat to other developers / maintainers (via IRC or Discord) before creating a bug report. Often they are aware of issues and have grouped them under a known technical term.

Console verification

Despite being aimed at developers, users should read / follow bug reports they care about.

Many emulators not only need games tested in the emulator, but also on real hardware, because games aren't perfect. If you've been involved with the speedrunning community, you know bugs exist, and can be taken advantage of to get a faster time. Determining what is a bug in the game and what is inaccurate emulation can prevent developers from wasting time on problems they didn't create. All projects encounter this at some point; even the testers behind Dolphin encounter bugs that happen on hardware. Ideally, you should have a capture card for recording footage from hardware.

During the research and documentation phase, some developers will also write small programs to test hardware behavior. In some cases the developers don't have access to the physical hardware or they need to confirm results by having multiple users run the tests. This can also be done in cases where the code doesn't work on all hardware revisions, and the developer needs to test it on all revisions to understand where each model has deficiencies; sometimes they don't have all models, but the more accuracy-focused projects will have this covered in some way. Hackers and those in the homebrew scene may have documented these deficiencies already. You can follow developer chat-rooms, and offer assistance by running tests and collecting data from real hardware.

Providing support for end users

Helping and guiding other users through problems is one of the pillars of open communities. If there's one thing a developer doesn't want to have to do alone, it's troubleshoot problems that end users get themselves into. Providing support for end-users will allow developers to focus on the software they make, creating a filter that allows actual bugs to be reported and saving time in the process. You also need a slight sense of confidence to make decisions for the user. For most people who work in IT (or just Google their problems), this comes naturally.

Support can be provided on a Discord server, IRC server, or a project's forums.

Outreach & promotion

Outreach and promotion is an important factor in the success of an emulator because it gets people talking about it, especially emulators for newer consoles that make strides in their efforts regularly.

This can be done by writing official blog posts, posting news on social media, providing information, making videos for YouTube, explaining and summarizing change logs, etc.

Archival & hardware donations

Optical discs like CD and DVDs have a limited lifespan. They degrade over time and will eventually be unreadable to a disc reader. Projects like No-Intro and Redump are focused on identifying all officially released carts and discs, respectively. Each known cart/disc is stored with information which makes it possible for users to verify the correctness of their cart/disc. Contributing to these databases (by dumping your cart/disc and contributing metadata) helps to build a full-set for testing emulators. It also encourages users to make legal backups of their carts/discs before they break.

Game databases like MobyGames can be used to find additional information for each game. Launchers can use the uploaded descriptions and cover artwork. You can contribute by scanning your game artwork, finding and adding game information (such as release dates). MobyGames also stores barcodes and serial numbers which can be used to find releases in Redump's database. You can look at the existing cover artwork and extract such information.

You can donate games or hardware to developers or other volunteers who are accepting such donations. Donated games can then be analyzed by the recipient and their information can be added to databases such as those listed above. Emulator developers usually require a large number of consoles, games, and peripherals (controllers, memory cards, ..), so donations are typically welcome. Depending on the project structure these will be forwarded to people who are in need of such hardware. Contact project maintainers to find out what they accept.

Help with technical documentation

Emulators depend on technical documentation about the systems they emulate. Typically, there are dedicated communities (often including people from the homebrew scene, and much less commonly the piracy and warez scene) for these research and documentation tasks.

These research communities often uses wikis that need to be maintained. Beginners can help by fixing typos or formatting. For some of these tasks, no coding skills are required. Advanced users and developers can contribute their own research, or participate in technical discussions.

Many of these communities also maintain their own tools which can be helpful for ROM dumping or testing emulation. These tools are often written in beginner-friendly programming languages (such as C# or Python) and can be stepping-stone for moving towards actual emulator development.

Communities

Learn how to code and help out

A pretty obvious one, but it should be stated that most open-source emulation projects don't get nearly enough support in the programming area. Bigger projects often have an abundance of developers to constantly check on the code and make sure it's written well, but those are rare, so most projects are often one man operations or have few (if multiple) developers. Many projects are actively looking for programmers, so if you have knowledge in systems programming and such, you could definitely be of help.

Programming for the emulator itself isn't even necessary, as many projects are in need of websites and continuous integration (CI). If the emulator doesn't use stable builds (or all that exists are instructions for compiling from source), you could implement CI and integrate it with the website so it can host precompiled builds for users. Continuous integration is also useful because it can run the program with test ROMs to ensure that compatibility isn't broken between commits. The major projects will have this covered. Sometimes older project developers don't like to change the website's infrastructure, so you're better off handling projects for which there is no existing website.

Porting, typically adding new operating system support, sometimes as large as a entirely separate class of devices. This can be difficult it greatly increases the possible systems that the emulator can run on. If you're experience with Linux, you can help port a program to it, your distro (Like Debian) or your favorite packing format (like AppImages).

Maintaining or Fixing code, while this can be active development with refactoring of code it can also be re-writing or fixing lines of code, such as minor inaccuracies, off-by-one errors and other small errors not noticed by the developers.

Emulator development is a time-intensive task. A lot of projects could use some money, especially ones where they often don't get it when they should. Some projects are simply possible because the developers have money from their existing job to be able to fund their efforts on the emulator. Sometimes it goes a long way in helping archivists on the team hunt for rare items.

Many projects are often a group effort, so from a user's perspective there's no fair way to distribute what comes in. Often developers of emulators can only do their work because research has been done by other people - unfortunately, that work often goes unrewarded. It's therefore important to understand who you donate to, and how that money will be shared and used among the group. Make sure developers are upfront about who gets paid and what they're using your donations for. More informal ones will say they use the donations on a beer or coffee, but it's also often put towards project operations like domain registration for the website and such to keep the website running.

Some problems may arise from this; money can potentially be a deterrent for newcomers on open-source projects. By only supporting the core developer group, it might actively discourage other contributors because the reward system would be unfair. ("Why do I have to work for free when x is getting paid on a monthly basis?") This can quickly lead to one "hero" developer - if they ever disappear, the project essentially dies because nobody else is familiar with the source code. Some projects have countered this by implementing a bounty system, where newcomers can be rewarded for fixing bugs that are outside the scope of what the core developers focus on. Keep in mind that even in the hundreds of dollars, a bounty isn't going to pay the developer's bills, but it's a better incentive than otherwise.

For some projects, there is no practical use for money: money doesn't write code. There's also a lot of free services for open-source projects, so many projects don't have any expenses.

Monetary donations

There are several emulators that support donations, some emulators have Patreons, PayPal addresses and such on their homepages.

Big projects

Note that this list is only intended to provide examples of ways to help out/getting involved, so we only list major examples.

Has a contributing page and you can submit bug reports to MAME Testers.

It's not possible to donate money directly to MAME, but several other projects that help MAME's development by dumping and decapping ROMs can be supported. See this Reddit post by a MAME developer for more info.

The libretro Team has

The ScummVM Team has

The Wine Team has a Donate page where you can find information on how to donate with PayPal and other ways to send money. You can also support them by buying merchandise.

Another option is to buy CrossOver which is a commercialized, supported version of Wine from CodeWeavers. They contribute all of their work on CrossOvers back to Wine and make up about two thirds of the commits made to Wine.

Patreon is a service that allows fans to contribute to creators' projects on a recurring basis (where they're known as patrons). A ton of emulator developers are already using it so if you wish to support any project with money, we've listed the accounts below. We also have a page on other ways to support emulation projects.

Emulators

Name System(s) Sponsorship links License Early access Other rewards
Yaba Sanshiro (Yaba) Saturn devmiyax
liberapay
GPLv2 (Copyleft) Patron-only posts and messages
BigPEmu Jaguar richwhitehouse Proprietary Discord, credits/homages in author's all solo work
Delta Multi-system rileytestut AGPLv3 (Copyleft) iPad and SEGA Genesis support in Delta, 3rd party sources in AltStore, QOL improvements and bug fixes, Interaction with developers and community, active support from dedicated channels, providing feedback on upcoming features
Provenance Multi-system provenance
GitHub Sponsor
Open Collective
Author's Amazon wishlist
BSD-3-Clause (Permissive) Discord, Bug fix requests, Feature requests, Cloud saves, Patron shout-out, Cloud ROMs, and ISOs, Phone call, Digital comissions, Dedicated feature development (2 hours of time).
86Box x86 CPUs 86box, PayPal GPLv2 (Copyleft) Name in YouTube videos, and on website. Priority video requests.
AetherSX2 PlayStation 2 aethersx2 Proprietary
Cemu Wii U cemu MPL 2.0 (Copyleft) Discord, exclusive news, name in emulator
Citra Nintendo 3DS citraemu GPLv2 (Copyleft) Discord, exclusive news, technical support, development polls
Cxbx-Reloaded, ares Xbox, Sega Chihiro (Arcade, WIP), Nintendo 64 LukeUsher, Ko-fi
GitHub Sponsor, PayPal
GPLv2 (Copyleft)
ISC (Permissive)
Exclusive news, name in emulator
DobieStation PlayStation 2 dobiestation GPLv3 (Copyleft) Discord
libretro Multi-system libretro ? Discord
simple64 Nintendo 64 loganmc10 GPLv3 (Copyleft) Exclusive news
melonDS Nintendo DS Arisotura (formerly Staplebutter) GPLv3 (Copyleft)
Mesen Nintendo NES Mesen GPLv3 (Copyleft)
mGBA Nintendo GBA, GB, GBC mgba MPL 2.0 (Copyleft) Special icon, name in emulator
Mikage Nintendo 3DS mikage TBD Exclusive news, technical support
NooDS Nintendo DS Hydr8gon GPLv3 (Copyleft) Discord
Nova Sega Saturn, Sega Titan Video (Arcade) nova_emu Proprietary Exclusive news, name in emulator
Planet Virtual Boy emulator Virtual Boy GuyPerfect zlib License (Permissive)
Play! PlayStation 2 jpd002
GitHub Sponsor
BSD-2-Clause (Permissive) Discord
PCBox x86 CPUs qeegmfer GPLv2 (Copyleft) Discord, technical support
OpenEmu Multi-system openemu
Cash App
Bitcoin
BitcoinCash
? Name in emulator
Orbital PlayStation 4 AlexAltea MIT (Permissive) Discord, exclusive news
Project64 Nintendo 64 Project64 GPLv2 (Copyleft) Remove prompts for support
Retro Virtual Machine ZX Spectrum, Amstrad CPC retrovirtualmachine Proprietary Exclusive news, name in emulator
RPCS3 PlayStation 3 Nekotekina
Alipay
GPLv2 (Copyleft) Discord, exclusive news, technical support, development polls, name in emulator
Ryujinx Nintendo Switch ryujinx MIT (Permissive) Discord
StrikeBox Xbox StrikerX3 BSD-2-Clause (Permissive) Exclusive news
TeknoParrot Windows-based Arcade systems Teknogods Proprietary Exclusive emulator features, Discord, exclusive news
Vita3K PlayStation Vita Vita3K GPLv2 (Copyleft) Discord, name in readme, higher priority on reported issues
xemu Xbox mborgerson GPLv2 (Copyleft) Name on videos
Xenia Xbox 360 xenia_project
gibbed
GitHub Sponsor (gibbed)
GitHub Sponsor (JoelLinn)
GitHub Sponsor (Razzile)
BSD-3-Clause (Permissive) Discord
Yabause Sega Saturn yabause GPLv2 (Copyleft) Name in emulator, documentation, support

Misc

Name Description Sponsorship links Rewards
anodium Citra progress report and blog writer anodium
CAPS0ff Chip decapping, currently used for improving MAME's emulation. 4805718 Chance to influence what they work on, early blog posts.
EmuVR Game room simulation in VR. EmuVR Exclusive news.
GLideN64 One of the more popular N64 plugins. Gliden64 Early access, exclusive news.
InternalLoss (AKA 'Billy' UK) Insignia server (For Xbox games), open-source web tools, OS network services for retro game systems. billy549 (Ko-fi)
JayFoxRox XQEMU, Citra, Sega Lindbergh, pinball emulation, open-source PC game ports. jayfoxrox
Lioncache Core developer on Dolphin, Citra and yuzu. 9377665 Monthly cat photos.
Libbers (AKA 'Libby') Insignia server for Xbox games. Twitter. LibbyLoops
Lutris An open-source frontend for Linux. lutris Early access, remote support with a desktop sharing program, custom forum badge.
m4xw Works on improving various emulators, such as Mupen64Plus, Mupen64Plus-Next, RetroArch libnx port, Switch PPSSPP Port. Also makes Nintendo Switch homebrew. m4xwdev Discord, feature requests.
Martin Korth Developer of the No$ emulators. martin_korth
MooglyGuy/TheMogMiner Assist with expenses in acquiring obscure computers and electronic hardware for MAME's emulation. moogly Patreon posts
Playnite An open-source frontend for Windows. playnite Early access, access to polls prioritizing upcoming features, credits.
Silent (AKA 'CookiePLMonster') Occasional contributions to Xenia, RPCS3, Cxbx-Reloaded; unofficial patches/enhancements for PC games & some old console games; other mods for Grand Theft Auto games. CookiePLMonster Patreon posts, credits, access to private to-do list.
thrimbor Insignia server (For Xbox games), Xbox original tools, various fixes/mods to open-source projects and games/software. Twitter. StefanSchmidt
Wine-Staging Testing area and experimental features for Wine. winestaging
Zophar's Domain Emulation/game data archival website. zophar Ad-free, your own post, link to your emulation project.
Tuxality Developing Infuse (Zeebo and BREW emulator) and PowerVR SGL wrapper Tuxality

Romhacking

Name Description Sponsorship links Rewards
Hilltop Localizations of Japanese-only videogames (Especially PS1 & PS2) titles. hilltopworks Patron-only Discord room, patron role, exclusive posts, early access to content, BTS developer info, answers to romhacking questions, patch credits.
ROMhacking.net Rom hacking website. The biggest(?) database of rom hacks and translations. Romhackingnet Site themes, site development forum, ad-free, sticky article, new site feature or improvement of your choosing.
Name Description Sponsorship links Rewards
atrac17 Fixes to arcade FPGA cores for MiSTer and others, MAME contributor. atrac17 Private posts
José Manuel Barroso Galindo Maintains the old Update_All_MiSTer script and newer, improved MiSTer Downloader for MiSTer FPGA. theypsilon Early access, private posts, Patreon keys, Discord benefits, shout-outs, chance to influence what he works on.
Jose Tejada Arcade FPGA cores for MiSTer and others, MAME contributor. topapate Early access, private posts, name/face in projects, chance to influence what he works on.
MiSTer Open source FPGA project targeted to replicate retro computers, consoles and similar devices using modern USB input devices and output high quality video to HDMI. FPGAMiSTer
PayPal
RetroRGB.com A website with corresponding YouTube, Podcast and social media accounts dedicated to highlighting the people and projects in the retro gaming scene (particularly FPGA scene too). retrorgb, Floatplane, Ko-fi, PayPal, Others Early access, private posts, Discord.
Robert Peip Development and enhancements to console FPGA cores for MiSTer and others. Best known for creating PSX core. Also made Atari Lynx, GBA & Wonderswan cores, and added improvements to other cores. Check his Twitter updates, too. FPGAzumSpass Early access, private posts.
Sergey Dvodnenko Console FPGA cores for MiSTer and others. Best known for creating Saturn core. Also did major work on Sega Genesis, Mega CD & TurboGrafx-16/CD. Check his Twitter, too. srg320
Name Games Description Sponsorship links Rewards
OpenMW TES 3: Morrowind List of several individual devs. Several devs
ReC98 Touhou 1 - 5 (PC-98) Updated page with many completion status bars needing certain amounts. GitHub Sponsors (Progress bars)

Video game preservation

Name Description Sponsorship links Rewards
classicrebirth.com (The Apple of Eden) Plug & play enhancements for classic Resident Evil and Dino Crisis games on modern Windows (i.e. Vista+). classicrebirth Private posts, full patches collection, early access, in-game credit.
HG101 Comprehensive web overviews/retrospectives, ebooks/books and podcasts of retro/modern video games. hg101 Private posts, private messages, Discord, ebooks/books (also autographic option), materials, votes/nominations.
Hit Save! A non-profit dedicated to video game preservation, their history, and related physical and digital materials. hitsave, Ghost, Others Private posts, messages, polls, Discord, early access content, credit, memorabilia.
Home of the Underdogs A non-profit site dedicated to the preservation and promotion of 5000+ underrated PC games (and a few non-PC games) of all ages, 1000+ documents. Includes game info, reviews, media, download/purchase links. Old versions with game/docs downloads ended in 2009. hotu Discord.
Unseen64 An historical archive with articles, screenshots and videos for cancelled, beta & unseen videogames. Full U64 backup on Archive.org. unseen64 Private posts, polls, credit in posts, ebook.
Axed
The Video Game Preservation Collective (VGPC) Video game preservation. Contributes to redump.org, No-Intro and Internet Archive. vgpc Name on website
External links
  • Graphtreon - View a project's Patreon earnings, statistics, graphs and rankings.

Notable projects and people

This section is for relevant/notable emulation projects and people who are part of them.

Platforms that need attention
Main article: Category:Partially emulated
There are several systems that require more attention from the emulation community. While multiple emulators may exist, none of them appear particularly promising.
Promising projects
There are several promising projects in active development — currently in a highly incomplete state with limited compatibility and with a basic user interface.
Delayed dreams
While more mature than 'promising projects', these are still don't reach the level of 'most impressive' projects.
Most impressive
State-of-the-art projects, excellent compatibility levels, robust hardware feature and peripheral support, and comprehensive enhancement support.
Historic emulators
see History of emulation for more early emulators.
These are not the most impressive/used emulators now, but were famous and/or revolutionary at one point.

This dedicated section celebrates the prominent figures in the emulation scene, giving a heartfelt round of applause to the developers who enrich our lives. A huge thanks to every hardworking soul who has contributed to emulation projects over the years—whether you’re still active or a past contributor, your efforts are deeply appreciated. When a game doesn’t work as expected or a feature you prioritize isn’t implemented, remember that the dev team may have different priorities or face technical challenges. Instead of attacking, consider expressing your appreciation for their hard work and dedication, perhaps by offering constructive feedback or support. These hobby projects are fueled by the passion and knowledge of individuals who volunteer their precious time for free. Even those who test, report bugs, maintain compatibility lists, or moderate forums dedicate countless hours to support these projects and their communities. These are real people—treat them with the kindness and respect you’d want in return.

Hans-Kristian Arntzen (Themaister) CEO & Founder of Arntzen Software AS
Contributor for lots of crucial emulator related projects
paraLLEl-RDP
paraLLEl-GS
Connor McLaughlin (Stenzek) Contributor to Dolphin Emulator
Contributions for the DuckStation project
Contributions for the PCSX2 project
Luke Usher Contributions for the ares project
Contributions for the CXBX-Reloaded project
Insignia project
George Moralis (Shadow) Founder of PCSX2 project
Founder of PCSX project
Contributions for the ShadPS4 project.
Henrik Rydgård Contributions for the PPSSPP project.
David Kirk Ginder (Near \ Byuu) Developed higan
Contributed to fan translations and SNES preservation efforts.
flyinghead Contributions for the Flycast project.
Gliniak Contributions for the Xenia Canary project.
AdrianCassar Contributions for the Xenia Canary Netplay project.
Refraction
JordanTheToaster
lightningterror
Contributions for the PCSX2 project
"VK_DEPENDENCY_BY_REGION_BIT" situation
Megamouse
elad335
kd-11
Contributions for the RPCS3 project
Vitaliy Kuzmin (Triang3l) Contributions for the Xenia project
"VK_EXT_fragment_shader_interlock" situation.
Matt Borgerson Contributions for the xemu project
Admiral H. Curtiss Contributions for the Dolphin project
Miran Grča (OBattler) Contributions for the 86Box project
Noah Pistilli Contributor to Dolphin Emulator
Project Lead @ WiiLink.
scribam Contributions for the Flycast project
Contributions for the Vita3K project
Alexandro Sanchez (AlexAltea) Orbital project
One of the developers of the RPCS3 project.
One of the developers of the Nucleus project.[1]
Rich Whitehouse BigPEmu project.
Sarah Walker PCem author.
Ryphecha Contributions for the mednafen project.
ciciplusplus
hikari-no-yume
Contributions for the touchHLE project
Martin Korth the creator of the No$ series of emulators
Michael Pavone (Mask of Destiny) Author of BlastEm
Mireille (fleroviux) NanoBoyAdvance project.
External links

See also