docs/source/contributing/index.rst
.. _contributing:
So you want to contribute to MAME but aren’t sure where to start? Well the great news is that there’s always plenty to do for people with a variety of skill sets.
.. _contributing-testing:
One thing MAME can always do with is more testing and bug reports. If
you’re familiar with a system that MAME emulates and notice something
wrong, or if you find a bug in MAME’s user interface, you can head over
to MAME Testers <https://mametesters.org/>_ and, assuming it isn’t
already reported, register an account and open an issue. Be sure to
read the FAQ <https://mametesters.org/faq.html>_ and
rules <https://mametesters.org/rules.html>_ first to ensure you start
out on the right foot. Please note that MAME Testers only accepts
user-facing bugs in tagged release versions.
For other kinds of issues, we have
GitHub Issues <https://github.com/mamedev/mame/issues/>_. There’s a
bit more leeway here. For example we accept developer-facing issues
(e.g. bugs in internal APIs, or build system inadequacies), feature
requests, and major regressions before they make it into a released
version. Please respect the fact that the issue tracker is not a
discussion or support forum, it’s only for reporting reproducible
issues. Don’t open issues to ask questions or request support. Also,
keep in mind that the master branch is unstable. If the current
revision doesn’t compile at all or is completely broken, we’re probably
already aware of it and don’t need issues opened for that. Wait a while
and see if there’s an update. You might want to comment on the commit
in question with the compiler error message, particularly if you’re
compiling in an unorthodox but supported configuration.
When opening an issue, remember to provide as much information as possible to help others understand, reproduce, and diagnose the issue. Things that are helpful to include:
.. _contributing-code:
MAME itself is written in C++, but that isn’t the sum total of the source code. The source code also includes:
reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>_
markup.plugins <plugins>, written in
Lua 5.3 <https://www.lua.org/manual/5.3/>_.described here <layfile>.Poedit <https://poedit.net/>_.Our primary source code repository is
hosted on GitHub <https://github.com/mamedev/mame/>. We prefer to
receive source code contributions in the form of
pull requests <https://github.com/mamedev/mame/pulls>. You’ll need
to learn the basics of git distributed version control and familiarise
yourself with the git tools. The basic process for creating a pull
request is as follows:
master branch in your forked
repository.master branch
in the mamedev/mame repository.Please keep the following in mind (note that not all points are relevant to all kinds of changes):
DEBUG=1 to check that assertions compile and don’t trigger.System-Specific Setup and Information <https://wiki.mamedev.org/index.php/System-Specific_Setup_and_Information>_
page of the MAME Wiki <https://wiki.mamedev.org>_. Anyone can edit
the wiki after creating an account, and sub-pages for your system
which discuss technical details of the system are also welcome.We have guidelines for specific parts of the source:
.. toctree:: :titlesonly:
cxx
softlist