Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A basic randomizer of Pokemon TCG (GBC), written in Java. Work in progress.

It randomizes the following ROM:

  • Pokémon Trading Card Game (U) [C][!].gbc md5: 219b2cc64e5a052003015d4bd4c622cd

Current features

Currently, it randomizes the following data inherent to Pokemon cards (all options are selectable):

  • HP
  • Weaknesses and resistances
  • Retreat cost
  • The moves across Pokemon cards of the same type are shuffled with an algorithm that accounts for energy requirements. Empty moves and Pokemon powers are not shuffled. For the rest, a 1-energy move will become another 1-energy move, a 2-energy move will become another 2-energy move, and a 3- or 4-energy move will become another 3- or 4-energy move (always between cards of the same type).

The minimum and maximum HP, retreat cost, and number of weaknesses and resistances is selectable. The HP and retreat cost ranges are selectable for 6 types of evolution classes or stages.

Current bugs or flaws

  • (Bug) If the shuffle moves option is selected, most Pokemon names in the move descriptions will be wrong as they will still refer to the original card.
  • (Flaw) If the shuffle moves option is selected, there is a chance that a card ends up with no damage-dealing move (more common for cards with a single move slot).
  • (Flaw) If the shuffle moves option is selected, Call for Family and similar effects are inconsistent with the card Pokemon species.

Planned features or tweaks (in no particular order)

I'm no longer working on this. Anyone is free to pick this project up and add new features or fix current issues if he/she wishes

  • Fix wrong Pokemon names showing in the descriptions of the shuffled moves.
  • Selectable "energy mappings" in the shuffle moves option.
  • Option to force a damaing move on every card.
  • Further randomization of moves, beyond just shuffling the effects, and randomizing energy requirements and damage. Randomizing the move effects themselves may be a possibility, but further reverse engineering of the Pokemon TCG duel engine will be necessary first.
  • Randomization of types. This is related to the randomization of energy requirements and would require adjusting the decks to keep them type-consistent.
  • Randomization of other misc Pokemon card data.
  • Option to make the randomization repeatable so that different people can generate the same changes.
  • Being able to load the Pokemon TCG ROM from the file system.

Contributions aren't expected but would always be welcome.



1 2 3 4 5 6 7 8 9 10



At the moment, the Pokemon TCG ROM detailed above must be in the same directory as the .jar file, and must be named tcg.gbc. Make sure you have a recent version of Java installed on your computer. Execute the .jar file and choose your settings. Finally, click on the "Randomize!" button to generate a randomized ROM that will named tcgrandomized.gbc.