PokéBot Gen3 (libmgba) is a bot, written in Python that automatically shiny hunts in Pokémon Ruby, Sapphire, Emerald, FireRed and LeafGreen.
Initially created to complete a Prof. Oak and Living ✨Shiny✨ Dex Challenge in Pokémon Emerald, a 🔴24/7 livestream of the challenge can be found ongoing here.
pokebot-gen3.mp4
Main Interface | Load Save State | Debugger |
---|---|---|
Shiny Notifications | Phase Stats | Milestones |
This bot is still in development, as such, functionality is subject to change - always make sure you back up your profiles
folders before updating your bot!
The bot is frame perfect and can technically cheat by reading data from any point in memory and manipulating RNG. By default it will attempt to perform actions as if a human were playing to make gameplay as representative as possible, some examples:
- Starter Pokémon are generated just 1 frame after confirming the starter selection, the bot will wait until the battle begins, and the starter Pokémon sprite is visible before resetting
- It's possible to peek inside un-hatched eggs to view stats and shininess as soon as they're received from the daycare, the bot will wait until the eggs are fully hatched before checking and logging
- Feebas tile locations could be instantly located by reading memory, the bot will attempt to locate the tiles by searching each tile individually
These are intentional design decisions, bot cheats can be used to bypass them (in most cases).
- Running mGBA at unbound speeds (3,000+ frames per second on high-end PCs), can cause very fast and bright flashing!
- Any unbounded video examples on the wiki will be hidden by default, and marked with ⚠ photosensitivity warning
Visit the wiki for information getting started, keybinds/inputs, bot modes, configuration files and more!
The bot supports auto-starting a profile and can also be launched into a "debug" mode which will open an extra pane next to the emulator to aid bot development.
The debug tabs includes information such as currently running game tasks and callbacks, emulator inputs, as well as information about recent battles, player status, current map, daycare and event flags.
positional arguments:
profile Profile to initialize. Otherwise, the profile selection menu will appear.
options:
-h, --help show this help message and exit
-m {MODE_NAME}, --bot-mode {MODE_NAME}
Initial bot mode (default: Manual)
-s {0,1,2,3,4}, --emulation-speed {0,1,2,3,4}
Initial emulation speed (0 for unthrottled; default: 1)
-nv, --no-video Turn off video output by default
-na, --no-audio Turn off audio output by default
-t, --always-on-top Keep the bot window always on top of other windows
-d, --debug Enable extra debug options and a debug menu
Click here for a list of bot mode strings to use in place of MODE_NAME
.
Core functionality:
Other awesome PokéBot projects:
This project would not be possible without the decompiled symbol tables and other various data from the following projects:
- Pokémon Emerald decompilation (symbols)
- Pokémon Ruby and Sapphire decompilation (symbols)
- Pokémon FireRed and LeafGreen decompilation (symbols)
- PKHeX Plugin: MissingEventFlagsCheckerPlugin (event flags data)
Test save states and bot profiles: