Pokémon Catch Rate Calculator

The catch rate calculator for Pokémon games from generations 2, 3, and 4 is now available after considerable effort. As I made this, I encountered some interesting and unplanned bugs specific to generation 2, which I have successfully accounted for.

Fast Ball

The code is supposed to check if the Pokémon is in one of the first 3 tables for fleeing Pokémon. Instead, it checks if it is in the first three of the first table.

Moon Ball

The code examines whether the Pokémon evolves using a moon stone. However, there is a peculiar oversight in the code where a constant from Pokémon Red was mistakenly reused. This resulted in an incorrect check for a Pokémon's evolution using burn heal instead of a moon stone.

Love Ball

The code correctly checks if the Pokémon belongs to the same species as yours. However, it mistakenly verifies if the Pokémon shares the same gender as yours (love wins?)

Heavy Ball

An error was found in the weight check for three Pokémon exclusive to Pokémon Crystal. These Pokémon have weights evenly divisible by 64, and the code incorrectly assumed their weight to be 5000. As a result, the catch rate received an inflated boost of 40.

Calculation Overview

The overall calculation can be summarized as follows: X=max((3M-2H)C3M,1)+S Unless you are using a level ball. In that case, it's just X=C

X (Overall Chance)

X is the chance of capturing the Pokémon. After it is generated, the game will then generate a random number between 0 and 255. If it is less than or equal to X, the Pokémon is caught.

C (Modified Capture Rate)

C is the modified capture rate. Every Pokemon has a base capture rate, which is the base chance of catching it. This is then modified by ball you use, some multiplying the base capture rate, others adding a flat bonus.

M (Max HP) and C (Current HP)

M is the Pokémon's maximum HP, and C is its current HP. Simple enough. That being said, if you are playing with the calculator or playing a modified version of the game, there are some odd effects that can happen with higher than intended HP values. For example, if the max HP is exactly 342 or

    You have a 6.25% chance of capturing it per ball