Skip to content

Add a new game

Damien Brebion edited this page Dec 5, 2023 · 3 revisions

This section will help you to add a new game to the list of supported games (rom hack or other generations). Be aware, the games will not be maintains by the author of Pokebot if new features is added.

Step 1: Add new MemoryReader

Generally, I used GenXMemory because the format and address are almost the same between games of the same generation. For example, in emerald ruby sapphire fire red and leaf green it's the same memory reader called Gen3Memory. Create your class that implement the interface IMemory.

Step 2: Add new Runner

The runner is a class that execute specific action and can be different between games of the same generation. For example, in emerald ruby sapphire it's a specific runner and fire red and leaf green is another one. Create your class that implement the interface IActionRunner or abstract class CommonActionRunner.

Step 3: Add symbols

Read this guide to understand how symbols works and how to add new one.

Step 4: Add games information

Inside app.config you should add a new Generations section and new Versions. Generations is used to define contains of a version like pokemons, moves, caracters, items, ... Versions is used to define which ROM can be load and support by the tool and some parameters for bots to works.

Step 5: Add your version

When everything looks good you have now to add your game so it can be detected by the tool. Inside VersionCode enumeration you must add the code specific in the app.config of your version.

Then in VersionFactory add your game in the switch statement with your reader and your runner.

Step 6: Final & Tests

When you did all these steps, you should now be able to try it out. If symbols are correctly loaded you shouldn't even have fatal errors. If you have invalid data, then it's very likely that the addresses are invalid. If everything is working you can create a pull request and someone will review your code !

Thank you for helping Pokebot develop! 🥳

Clone this wiki locally