Skip to content

Instantly share code, notes, and snippets.

@besteon
Last active May 1, 2024 01:11
Show Gist options
  • Save besteon/ca8f899f6a8ffde7c0e870f9d9fc7a38 to your computer and use it in GitHub Desktop.
Save besteon/ca8f899f6a8ffde7c0e870f9d9fc7a38 to your computer and use it in GitHub Desktop.
IronMON Community Developer's Guide

So you want to contribute to the IronMON community, eh?

Over the years, the IronMON community has seen an ever-increasing amount of new content that enhances the playing experience - Tracker updates, extensions, quality of life patches, and more have made IronMON more accessible and fun to play. This guide aims to provide guidance on things you can do to increase the interoperability of your project with existing community projects.

  1. Developers
  2. ROM Hack Creators / Modders
  3. Content Creators

Developers

GitHub

Most of the community projects are hosted on GitHub, we recommend you do the same. GitHub provides a familiar place for our community members to download your project, and provides a number of quality of life features that enhance the development experience, such as robust version control.

  1. Include your source code in the repository! Having your source code available to everyone allows other developers to audit your code, creating a more trusted environment for everyone. Future community members can also take inspiration from your work and create something new!

  2. Your release asset files should NOT contain version information in the file name.

    • Use the tagging feature to denote which version a release is.
    • GitHub automatically provides a download to the latest release at the static address of: https://github.com/<username>/<repository>/releases/latest/download/<file> The key here is keeping the name of <file> consistent across releases. This makes it much easier to instantly grab the latest release of your project. For example, use MyExtension.lua and not MyExtension_v1.0.lua.
  3. A good README is vital! Most of our community is not tech-savvy by developer standards and may have trouble finding the correct files to download your project! It is worth specifying the specific file to download from the Assets section. For example, Ironmon-Tracker.zip instead of "Download the latest release". Many users may end up downloading your source code when they intend to download your release!

ROM Hack Creators / Modders

Patches

There are a lot of community patches that add quality of life features or additional content to the game. Unfortunately, it is not easy to create a patch that is compatible with other community patches. Here are some tips:

  1. Where possible, do not shift the address space of the game.

    • This allows the tracker and other extensions to read from known addresses to get information from the game.

    TODO: Add tips on how to do that (or how to determine where your new offsets would be).

  2. Your release should include information on the base ROM that the patch is intended for, and the resulting ROM. Use SHA1 hashes to denote this. For example:

    Intended for:
    ROM Pokemon Fire Red v1.1 (SHA1: dd5945db9b930750cb39d00c84da8571feebf417)
    ROM + Patch SHA1: 1484c6a6e02f13f4df6302dd2ac076d2c4044e67
    

    If you know that your ROM is compatible with other community ROMs, please denote that as well, along with the correct SHA1 hash of the resulting functioning ROMs.

  3. If you are aware of other popular patches that your patch IS or IS NOT compatible with, please document that so users know when they can and cannot use your patch.

Content Creators

Videos

Videos for YouTube or other content platforms are a great way to introduce others to IronMON!

  1. For links in the video description, use the static link to the latest version of a project when possible. For example, DO NOT use https://github.com/besteon/Ironmon-Tracker/releases/tag/v8.5.3 for linking to the Ironmon-Tracker. Instead, use https://github.com/besteon/Ironmon-Tracker/releases/latest, which will always point to the latest version, so you don't have to update the video description in the future.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment