An Android Ironmon / Kaizo emulator with a built-in IronMon Tracker — no PC, no setup, no second screen required.
IronMon Emu is distributed as an APK for sideloading. It is not on the Play Store.
-
Download the latest
ironmon_emulator.apkfrom the Latest Release page on this GitHub repo from your phone. -
Enable sideloading on your device:
- On Android 8+: when you open the APK, Android will prompt you to allow installs from that source (your browser or Files app). Tap Allow.
- On older Android: go to Settings → Security → Unknown sources and enable it.
-
Open the APK from your Files app and tap Install.
-
Grant storage permission on first launch so the app can scan for ROMs.
-
Tap the folder icon in the top bar, select the directory where your ROMs live, and you're ready to go. ROMs can be nested within this folder if you want further filesystem organization, the app will automatically scan within.
IronMon Emu replicates the full feature set of the Ironmon-Tracker Lua script — live, on your Android device. Everything you would see on a second monitor or stream overlay is shown in the right-hand panel while you play.
The tracker panel has three tabs, which you can select by tapping the tab name or by swiping left/right anywhere on the tracker panel:
- MY MON — Your lead Pokémon's species, level, nature (with stat impact highlighted), ability, held item, base stats, moves with power/accuracy/PP, type chips, shiny/Pokérus/gender indicators, HP bar, XP progress, and a GachaMon star rating (see below).
- OPPONENT — When a battle starts, the opponent tab automatically populates with the enemy Pokémon's species, level, type, BST, stat markings, and moves as they are revealed in the same column layout as the player's move table (category icon, type dot, move name, Pwr, Eff, Acc, PP). Wild vs. trainer battles are detected automatically.
- ROUTES — Shows the current route and all Pokémon that have been encountered in it, with trainer defeat counts.
Opponent tab showing enemy stats and revealed moves mid-battle
Routes tab showing current location, trainer counts, and possible encounters
The header bar always shows your current game, version, and run number. A Next Run button in the Tools menu starts a fresh run at any time without leaving the emulator.
The main tracker tab displays a ★★★★☆ star rating (1–5 stars, or 5+) for your lead Pokémon, computed from the same formula used by the Lua Ironmon Tracker's GachaMon system. The score accounts for ability quality, move ratings (with STAB, accuracy, and recoil bonuses), offensive/defensive/speed base stat thresholds, and nature. The numeric score is shown alongside the stars (e.g. ★★★☆☆ (38)).
In Emulator Settings, a Rating Ruleset dropdown lets you choose which ruleset to evaluate against: Standard, Ultimate, Kaizo, Survival, Super Kaizo, or Subpar. Banned and adjusted moves/abilities are scored at 0 or 50% per the selected ruleset. Defaults to Standard and is persisted across sessions.
When a Bluetooth or USB gamepad is connected, the on-screen touch controls automatically hide so they don't cover the game. Disconnect the controller and they reappear instantly.
On-screen controls hidden when a gamepad is connected
ROMs can be loaded either as single roms that get randomized each time you hit new run, or in a batch setup. The batch setup is recommended and more stable. You can see which setup is chosen for each ROM/ROM family on the initial selector page. Tap and hold on a ROM/family in order to change which mode is desired.
ROM families grouped on the home screen, in this case ROMs were named "KaizoFR#"
When you load the app for the first time, click the folder in the top status bar to locate your ROMs. This will open a file browser. The folder you select is where you should store any ROMs you want the app to load; they can be nested within subdirectories if you want. The batch setup is designed to be used with the Batch Generation mode of the randomizer app (either Android based, or the java one on a computer and then you manually transfer the ROMs to your computer). Once you have a folder with a batch of ROMs in it selected, the app will autoscan and create ROM families from them for you. To add ROMs in the future, tap the folder icon in the top bar and point it at a directory. The app scans recursively, so you can organize your ROMs in subfolders however you like.
The home screen groups your batch created ROMs into families rather than listing every file individually. A family is a set of ROMs that were batch generated together. Families are detected by name, and then sequenced by number (i.e. all "FireRed1" "FireRed2" ... will be grouped into a single family called "FireRed". The card shows how many ROMs are in the family and which run you were on last, and when you pick it will automatically start your last played rom. Quickload is auto tracked per family.
To pick a specific ROM from a family, long-press the family card and type in the ROM number you want to be on. To update your run count on a family, long-press the family card and type in the run number you want to be on.
Every family card shows a BATCH or UPR badge. In UPR mode, the family holds a single base ROM that gets re-randomized via UPR-Android on every "Next Run" — no need to pre-generate hundreds of ROMs. The app binds to UPR-Android's OverwriteService, receives the randomized ROM, writes it back to disk, and reloads automatically. The ROM needs to be loaded into the randomizer to work. This method works well for some, and is spotty for others. Reach out on the discord to @doctrDNA if you need help.
To switch a family to UPR mode, long-press its card and choose UPR Mode in the settings dialog. If UPR-Android is not installed, the ROM list shows a "✗ Randomizer not installed" status at the bottom and the UPR option is disabled. When UPR-Android is detected, it shows "✓ Randomizer installed" in green.
ROM list showing UPR and Batch family cards (left); Family Settings in Batch mode (center) and UPR mode (right)
Requirements for UPR mode: UPR-Android installed, Android 8.1+ (API 27) for SharedMemory support.
For Fire Red and Leaf Green, tapping any route name that has associated images opens a full-screen tabbed gallery overlay with two tabs:
- Maps — dungeon/building maps (Mt. Moon, Rock Tunnel, Power Plant, Rocket Hideout, Safari Zone, Seafoam Islands, Silph Co., Victory Road, Pokémon Mansion, Saffron Gym, S.S. Anne, and more)
- Hidden Items — hidden item location images for 46 FRLG locations
Routes with available images show a ↗ indicator in both the header and the Routes tab. Use the ◀ ▶ arrows to navigate between images.
Most elements in the tracker panel are interactive — tap them to get a detail sheet with more information.
| Tap target | What you get |
|---|---|
| Move name | Move detail sheet: full description, type, power, accuracy, PP |
| Ability name | Ability detail sheet: full in-game ability description |
| Type chip (on your Pokémon or opponent) | Type defense chart: full 2× / 0.5× / 0× breakdown against all 18 types |
| Moves | List of what level each move is learned |
| Stats | EVs, Friendship, and Hidden Power Type |
| Heals | Full bag status, PP heal %, status heals |
| Route name (FR/LG) | Full-screen map and hidden item image gallery |
| Wild Pokémon in Routes tab | Detail sheet: types, BST, evolutions, abilities |
Tapping a move name shows its full detail sheet
Open Emulator Settings from the ROM list page or from the in-game Tools menu. Settings are organized into five sections:
- Fast Forward Speed — multiplier applied when fast forward is active
- L button = Fast Forward — intercepts the physical L button for fast forward instead of sending it to the GBA emulator (disables GBA L)
- Fast Forward: Toggle — press once to activate / press again to deactivate, instead of holding
- Button Bindings — bind any physical controller button or keyboard key to emulator actions (Fast Forward, Save State, Load State, Tracker Open/Close, Next Run, Mute Toggle, Tools Menu) and all 10 GBA buttons (A, B, L, R, Start, Select, D-pad). Volume keys can also be captured and bound.
- Tracker Size — choose any 10%-increment split from 100%/0% to 0%/100% without restarting the game. Includes Game Overlay (game full-screen, tracker slides over) and Tracker Overlay (tracker full-screen, game slides under) modes. Font scale adjusts automatically.
- Collapsible tracker panel — adds a ◀/▶ arrow strip to hide/show the tracker panel with a tap or swipe
- Hide collapse button — removes the arrow strip; collapse/expand is then driven exclusively by the "Tracker Open/Close" key binding
- Always show on-screen controls — disables auto-hide when a gamepad is detected, which is useful if your phone shows no controls even when no gamepad is detected (this was an issue on Xiaomi phones and was fixed, but this setting remains as a fallback).
- Always hide on-screen controls — permanently hides the padboard (for keyboard or gamepad-only users)
- Controls opacity — slider (0–100%) to adjust on-screen controls transparency; default 70%
- Controls scale — slider (50–150%) to resize the on-screen controls; default 100%
- Game Over Condition — choose what triggers a run-end: "Lead Pokémon faints" (default), "Highest level faints", or "Entire party faints". Mirrors the Lua Ironmon Tracker's Game Over settings.
- Rating Ruleset — choose which GachaMon ruleset to score against: Standard, Ultimate, Kaizo, Survival, Super Kaizo, or Subpar
- Show FPS — displays a live frames-per-second counter
- Android 8.0 (Oreo) or later
- A GBA ROM (
.gba) — Fire Red, Leaf Green, Ruby, Sapphire, or Emerald - ~200 MB free storage
- Save states and battery saves are stored in the app's private storage and persist across updates.
- If Android warns that the file may be harmful, this is a standard warning shown for all sideloaded APKs — tap Install anyway.
- The app checks for updates on each launch. If a newer version is available, a banner appears on the ROM list page with a tap-to-download link.
- Will you make an ios version
- I dont have an iphone, and I havent dealt with jailbreaking ios devices in a decade, and since I'm not releasing an app with Nintedo assets into a real store, there is no plan. Feel free to put a PR in
- Will you put this in the actual play store
- No, for the same reasons of Nintendo assets.
- Something doesnt work
- Make an issue on github, and ill get to it! Or tag me on the discord @doctrDNA
- Did you use AI to make this?
- You betchya, its all vibe coded. If you are against the concept of using AI in any way, you should avoid this app.
- Can we donate in some way?
- No, but I need people to use my phone app for 14 days so i can release it on the app store. If you feel so inclined get the beta here and just open it every day for 14 days and you are the best :) https://play.google.com/store/apps/details?id=com.doctrdna.pantryExt


