Damage calculator for Generations 1 and 2
Both engines run a chain of integer divisions that truncate at every step. A floating-point calculator that rounds at the end is off by a point or two, and two points often decide the knockout. This one repeats the chain in the order the disassembly runs it.
How this works
Set the types and stats by hand
Filled from the two species, at the level chosen, with maximum DVs and no stat experience. Change whatever you know about your own Pokémon.
The chain, step by step
Every line is a truncation. This is where calculators part company.