Helping out - mdeguzis/RetroRig GitHub Wiki
- Intro
- Getting Started
- IRC Channel
- Wiki documentation
- Programming
- Building Software Packages
- Gamepad testing
- Adding/Testing Emulators
- Testing/Debugging
- Standard test checklist
- Using the alternative git branches
- Merging code / pushing changes
This section will contain guidelines for contributing code/corrections, as well as how you can help out. For now, please keep an eye on "help wanted" tags in the Issues section of the project, as well as any pull requests that are withstanding.
Below are some helpful sites and documents to start you out on contributing:
Many times, the easiest way to ask a simple question or collaborate is to join the #retrorig-dev IRC channel on freenode.net. Instructions for joining IRC channels and such can be found here. Please ask any questions via the contact page on www.libregeek.org
Basically, once you have an IRC client installed (you should register your nick, but its not required for this channel), simple type /join #retrorig-dev under the freenode.net channel. Typically, you can edit which networks auto-join (such as freenode) in your IRC client.
If you are interested in writing documentation, just submit a contact inquiry (top right) on www.libregeek.org. I will get the email and respond as soon as I have time. I know not many folks like writing documentation, but come on...it can be funnnnnnnnnn! heh. For current areas that need work, please ask on IRC, or via the contact page at www.libregeek.org.
If you are interested in programming, the project is in need of folks good with Python, the XML structure of XBMC, and writing addons for XBMC. There is a crude "settings" menu in > 0.9.5b of the RetroRig, but it will need some big changes to be useful as a settings menu. Developing a competent native (XBMC) menu system for that area is one of the biggest examples where help is needed.
Debugging and programming XBMC is something that you can also help out with the team. You don't need to be an expert programmer. I started this project with moderate Bash programming skills, knowledge of XML, and thanks to JC on the team, now have gained a lot of knowledge from his code changes and tremendous help. Those that are handy with Python are extremely welcome, as well as C/Cpp programmers.
Have a good idea? Don't be afraid to ask! We are very open to adding neat features, so don't hesitate. If there is an emulator feature you cannot get in upstream code, it's possible we would be willing to work that in. There is always work to be done to improve the emulators, services, code, and more.
Features and implementations change over time, so it is hard to pinpoint a singular feature or issue that needs help. With that in mind, joining the IRC channel, contacting PK via libregeek.org, or an issues ticket, is often the best approach to reach out.
We are in increasing need of folks to help build software packages for various platforms. The reason we do so, is to make enhancements and fixes particular to our project, such as proper Dual-display support.
We are currently in need of packaging help for:
- Arch Linux (AUR)
- Fedora (RPM)
If you would like to help us build packages, the landing page for information is located in the following wiki pages. If/When more distributions are added, they will appear below. The sections below only pertain to information that has been currently compiled for contributors.
For all other information not in the wiki, please check back for updates.
There is a large need for folks to test out other gamepads. Since there are many configuration files, I ask that you submit a tarball or zip archive of your emulator configurations via the contact page on www.libregeek.org, or note them in a pull request. If there is enough demand to support new controllers, I will make supporting them a larger priority. For the moment, the most common controllers (PS3/Xbox 360) are the prime targets.
The following controllers are currently supported: Supported Gamepads
The following configurations affect controller usability:
$HOME/.retrorig/.qjoypad3/ (deprecated > 0.9.5b)
$HOME/.retrorig/.config/antimicro
$HOME/.retrorig/.dolphin-emu/
$HOME/.retrorig/.config/mupen64plus/
$HOME/.retrorig/.config/ppsspp
$HOME/.retrorig/.mame/cfg/
$HOME/.retrorig/.mess/cfg/
$HOME/.retrorig/.config/pcsx2/
$HOME/.retrorig/.stella/
$HOME/.retrorig/.mednafen/
$HOME/.retrorig/.gens/
/usr/default/xboxdrv/ (your xboxdrv config file, if modified)
/etc/init.d/xboxdrv (your xboxdrv init script)
/etc/init.d/sixad (your Playstation Bluetooth init script)
Some internal emulators like MESS and mednafen can be adapted quite easily to add more console support than what I have preconfigured. Take a look at the other wiki docs and the script code for comments and documentation. Moste notably, checkout the Emulator Resource Page for information on known emulators and projects.
Some of the biggest things that I consider for inclusion for an emulator by default:
- Is it Open Source / Free software (as in freedom)
- Is the emulator gamepad friendly? Can it be made to be?
- Does the emulator have an editable configuration file?
- Is the configuration file portable and extensible for multiple controllers?
- Does the emulator support command line options (for Rom Collection Browser), and are they sufficient?
- What are the system requirements? Can this emulator run on low to medium hardware?
One of the best resources at the moment to get a jump start on support and/or testing of an emulator, is the XBMC Advanced Launcher wiki page. While RetroRig does not largely use Advance Launcher, the wiki contains valuable information on emulator support, and command line options. There, you can also get an idea if Linux support is available.
You can also request new emulator support via an Issue ticket, or submit a pull request for code to add your own. At some point in the future I may add source-compiled versions of the emulators, so help there is also greatly appreciated.
Emulators in progress/testing/
For a list of emulators that have been looked at previously, and their current problems, please see the links below:
When writing this script, I can miss syntax errors from time to time. The install script is testing on a physical PC with integrated graphics to ensure low-end compatibility and performance. If you would like to test out beta features, there is a git branch for that as well. Reporting bugs and other mishaps greatly helps me identify them. Be sure to include the date/time when you cloned/updated the git repo, so I can review what changes were made during that time period.
<a name="checklist"
It is suggested you try to go over any large pull requests or features changes with the Standard Checklist in the supplemental folder. This checklist is not mandatory, but saves me time and headaches if things break (I break things too, no worries). Any suggestions of corrections should be addressed to the developer team in the AUTHORS.md file.
I make daily changes to this project, so if you notice something wrong, please submit an issue.
* master - "stable" (as much as I can I suppose)
* beta - "test bed" for changes to merge into master
The beta branch is mainly for development purposes, and should be considered "unstable."
When you "checkout" a new branch, the files in the source folder of RetroRig literally change instantly (or near instantly). It is a good idea to quit any work in progress, or text editors beforehand, but some will let you reload the contents just fine. As far as contributing goes, you can always submit a pull request on the GitHub page or learn more about contributing from GitHub themselves here. A cheat sheet can be found at this PDF link.
If you end up becoming a contributor to this project, there are several resources I must first point you to, if you are not already privy to them:
- Git Cheat Sheet
- Git Basic Branching and Merging
- Git Fetch and Merge: Don't Pull
- Git Merge Tools: Merging via The GUI
- GitHub Training
For all other questions, you can direct them to me, @ProfessorKaos64 via an issues request (concerning a pull request) or by contacting me via libregeek.org. You can also visit LibreGeek.org and checkout the available social media portals, as well as the main contact page there.