ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
How to useIndex
2
These damage calcs take all the stats from each of the rental Pokémon and each of the opposing Pokémon in each cup. Before doing anything, you will need to duplicate this file to be able to edit it, by going to 'File > Make a copy', as if two people were to use this sheet at the same time, they would not have a good time. Find the right cup either with the index to the right or by scrolling through the bottom. After that it's simply selecting the proper Pokémon, the right move (the drop down for moves is auto filled), and the right opposing trainer/Pokémon. The calc will auto-fill with all the required stats, and give you the damage ranges for a regular attack and a critical hit, the combination odds for a "true" OHKO percentage, then the full odds, which calcs accuracy as well. Everything under the yellow line is just a mess of numbers but look at it if you want to I guess. If there are any problems, find me on discord (Deku King#9456) or twitter (@ironically_quo) and I'll get to it. Before I send you off, please speedrun Pokémon Snap.Offensive CalcsDefensive Calcs
3
GLC R1GLC R2GLC R1GLC R2
GLC R1 and R2 Big Table
4
Pika Cup R1Pika Cup R2
5
Petit Cup R1Petit Cup R2
6
Poké Cup Poké Ball R1Poké Cup Poké Ball R2
7
Poké Cup Great Ball R1Poké Cup Great Ball R2
8
Poké Cup Ultra Ball R1Poké Cup Ultra Ball R2
9
Poké Cup Master Ball R1Poké Cup Master Ball R2Poké Cup Master Ball R1Poké Cup Master Ball R2
10
Prime Cup Poké Ball R1Prime Cup Poké Ball R2
11
Prime Cup Great Ball R1Prime Cup Great Ball R2
12
Prime Cup Ultra Ball R1Prime Cup Ultra Ball R2
13
Prime Cup Master Ball R1Prime Cup Master Ball R2
14
Mewtwo
15
Some notes
16
Multi-hit moves such as Pin Missile will only give you the calc for a single hit. Multi hit moves have a 3/8 chance of hitting twice, 3/8 chance of hitting three times, 1/8 chance of hitting four times and 1/8 chance of hitting five times. Each hit will do the same amount of damage as the first hit, and crit chance is only calculated on the first hit as well. If one crits, they will all crit.
17
Crit chances are based off of speed, this is taken into account for the combo odds calc.
18
Since the defensive calcs aren't as highly utilized, I will only do them on request. Contact me if you need anything done.
19
More to come(?)
20
21
22
23
24
25
26
How damage is calculated
27
This section is not important to understand or read, but I will go over how Stadium decides to do it's damage calculation, in case it is of any interest to people. There are minor differences from this game and the main series gen 1 games, but there is still a lot inspired by it's code. I'm writing this based on my game knowledge of Stadium and the main series games, as well as the ROM map for this game (linked below). There may be some mistakes in transcribing the game's assembly to readable language, but this should be an accurate enough writeup on how the game decides how much damage will be done, if any. MIPS (the assembly language) likes to have a lot of Spaghetti Code, so figuring out the actual order of operations here can be tricky, but I will break it down the best I can with what I've got.
28
Misc: Most calculations are done on 8 bits, which means that there are 256 total possible values to compare against, usually. For example, take Thunder's Accuracy, which is 70% to us, in game the Accuracy is 178, which is later compared against 255 values. 178/255 = ~69.8% accuracy.
In some calculations, divisions will be used. The assembly language cannot hold decimals, so all numbers will get rounded down to the nearest whole number.
29
Initialization: The game loads data from the move being used (ID, Effect, Power, Type, Accuracy and PP) and stores them for later use. Other stats like Attack and Defense of Pokemon are already loaded and will be used soon. Each stat has it's own stage to calculate modifiers, and works as follows:
For Attack, Defense, Speed and Special, each stat starts at stage 7, and goes up or down one stage depending on if a stat modifying move is used. The list to the right is what stat level you're at, and what's the multiplication it will go through to calculate the Damage later. For example, if you raise you Attack by two, you'll be at stage 9, and you'll multiply the Attack by 200/100. The Attack, Defense and Special modifiers will be used in the Damage Calculation later. I won't touch on Speed much, whoever has the higher speed, after modifiers, will move first. In the case of a tie, it's a 50/50. As for what Crits do to modifiers, we will get to that later.
Stat Stage Modifiers
1 - 025/100
2 - 028/100
3 - 033/100
4 - 040/100
5 - 050/100
6 - 066/100
7 - 100/100
8 - 150/100
9 - 200/100
10 - 250/100
11 - 300/100
12 - 350/100
13 - 400/100
30
PRNG and RNs: So first off, this game uses PRNG (Pseudorandom Number Generator) for many things, as we will soon see. The PRNG generates a RN (Random Number) to use in calculations. This RN changes every frame, so unfortunately there will be no manips in this game ever.
31
Move Success Test: The next step is to determine if a move will succeed. A move will fail if any one of 5 conditions are met: 1. The move is Dream Eater and the target is not Asleep, 2. The move intends to drain HP and the target is behind a Substitute, 3. The move is not Swift and the opponent is in an invulnerable state (Fly or Dig), 4. The move a is non damaging move that cannot be used (Light Screen if it's already up, Focus Energy if it was already used, Haze if there are no stat changes, etc.), and 5. The move fails the Accuracy check. In these cases, it skips to after the Damage Calculation and Extra Effects. Fun fact, Swift gets checked 3 times during Move Success Test, and it will skip to straight to the damage calc, forgoing the Accuracy check.
32
Accuracy and Evasion modifiers: This is done before the move success test actually, but regardless, it will calculate the Adjusted Accuracy based on the move's Accuracy, the user's Accuracy level, and the target's Evasion level. Stat levels work like this:
Each stat starts at stage 7, and goes up or down one stage depending on if a stat modifying move is used. The modifyers for Accuracy and Evasion are a bit different from the ones for Attack, Defense, Special and Speed. The list to the right is what stat level you're at, and what's the multiplication it will go through to calculate the Adjusted Accuracy. For example, if you raise you Accuracy by one, you'll be at stage 8, you'll multiply the Accuracy of the move by 133/100. Evasion works in reverse, if you raise it by one, it will go to stage 6, meaning when the opponent tries to hit you, their Accuracy will be multiplied by 75/100. If the Adjusted Accuracy ends up being higher than 255, it will be lowered to 255. If it is 0 or lower, it will be raised to 1. Fun fact, there are no moves to raise your Accuracy, or lower your/your opponent's Evasion.
Accuracy and Evasion Stage Modifiers
1 - 1/3
2 - 036/100
3 - 043/100
4 - 1/2
5 - 066-100
6 - 075/100
7 - 1/1
8 - 133/100
9 - 166/100
10 - 2/1
11 - 233/100
12 - 266/100
13 - 3/1
33
Accuracy Check: Once the Adjusted Accuracy is calculated, a RN will be compared against it. If the RN is 255, a new RN will be rolled (this was put in place to avoid gen 1 miss). If the RN is lower than the Adjusted Accuracy, the move will hit, and if it's equal or higher, it will miss.
Examples:
Tentacruel uses Hydro Pump. There have been no Accuracy or Evasion modifiers. Hydro Pump's Accuracy is 216, so the calculation would look like this: 216 * (1/1) * (1/1) = 216. During the Accuracy check, the PRNG rolls a 150, which is lower than the Adjusted Accuracy. The move hits, and we move on to the Critical Hit check.
Jolteon uses Thunder. The opponent has used Double Team twice (stage 5). Thunder's Accuracy is 178, so the calc would be: 178 * (1/1) * (66/100) = 117 (~45.8%). The PRNG rolls a 150, which is higher than the Adjusted Accuracy. The move misses, and we skip to after the Damage Calculation and Extra Effects.
Note: In rare cases, if the first RN is 255 and needs to be rerolled, the second RN also ends up being 255 and will lead to a miss no matter what. This is a 1/65536 chance, or a 0.0015% chance of happening.
34
Critical Hit Check: The crit calculation was changed from the main series games. There is a CH Ratio, which is at base (Base Speed + 76) and then a division of, usually, 4. Without any changes, the calc is Crit = (Base Speed + 76) / 4. Next the game checks for if Focus Energy is active. If it is, it will add 160 to the base CH Ratio, and the division is changed to only be 2. The last check is a high critical hit move, which just multiplies the CH Ratio by 8. If the CH Ratio is higher than 255, it will be set to 255.

CH Ratio base = (Speed + 76) / 4
CH Ratio with FE = (Speed + 236) / 2
CH Ratio with High Crit = (Speed + 76) * 2 (always crits if you have 52 Speed)
CH Ratio with High Crit and FE = (Speed + 236) * 4 (always crits)
For comparison, Electrode has 168 Speed. In total, 104 Pokémon have more than 52 Speed.

The CH Ratio will later be compared against an RN between 0 and 255, much like Accuracy. If the RN is smaller than the CH Ratio, the crit flag is set to 1 and the move will crit, if it's equal or higher, the crif flag is set to 0 and the move will not crit. Interestingly, if the PRNG rolls a 255, the move will never crit, effectively acting like a gen 1 miss. Fun fact, high critical hit moves are hard coded to the Move ID, as opposed to being a Move Effect.
35
Damage Manipulation: Next up is some preliminary manipulation before going in to the real damage calc. First off, the game makes sure the move's power is not 0 (for status moves like Toxic, for example). This function is where the game loads up the move Power, Type (for STAB later), Attack and Defense/Special and Special, whether Reflect/Light Screen is up, whether the move is a Crit, and the user's Level. If Reflect or Light Screen is set up, it multiplies the Defense/Special by 2. If the crit flag is 1, the base Level of the Pokemon is multiplied by 2 (we'll see why later). After this, there's a check for if the move is Explosion or Self Destruct, as it halves the opponent's Defense. It then checks if the move is an OHKO move, and if it is not, it moves on to the Damage Calculation. It's not clear when it happens, but Burns lowering Attack, Confusion check, Paralysis check and Sleep Turn check are all done sometime before the actual Damage Calculation. Also to note, Critical hits ignoring stat modifiers seems to be intended by the developers.
36
Damage Calculation: We finally made it. There is a new check to make sure the move's power is not 0, and then we can start crunching numbers. Keep in mind, each time a number has some sort of decimal, it gets rounded down. For the examples, I will be using Articuno's Ice Beam against Giovanni's Nidoking from GLC R1.
The first step takes your Level into account, and this is where the Crit bonus slides in. For a non critical hit, the user's Level is multiplied by 2, divided by 5, then increased by 2. For a level 50 Pokemon, this gives 22. If there is a Crit, the Level was doubled back in the Damage Manipulation, so the same calculation would end up with 42. This calc essentially makes the Critical Multiplier improve the higher the Level is, which is about a 91% boost in this case. Next up is multiplying the number we got by the Move's Power and the Attack/Special (modifiers included, as mentioned in Initialization), and then divide by the opponent's Defense/Special (with modifiers). in this case, we would end up with 22 * 95 * 153 / 103, which gives us 3104. After this, we divide the whole by 50, then add 2, giving us 64.The final touches are STAB and weakness/resistance, so here we would multiply by 1.5 for Ice Beam being the same type as Articuno, then by 2 for Ice being effective against Nidoking's Ground typing to end up with a total maximum damage of 192 (or 360 for a Crit).
37
Damage Variation: Once the game has it's max damage, it will calculate a range equal or lower than this max. If first checks the move's Power again to make sure it's not 0 or 1. Moves with 1 power are reserved for fixed damage or otherwise special moves, including OHKO moves, Super Fang, Dragon Rage, Sonicboom, Psywave, Night Shade, Seismic Toss and Counter. Once that's clear, the game will keep rolling RNs until there's one between 217 and 255, each possibility being as likely as the other. Next, we take the maximum damage and multiply it by our RN, and then divide by 255. Worst case scenario, we're left with about 85% of what our max damage could be. This is also where our damage range comes from. Nidoking has 166 HP, so if we roll a 217, 218, 219 or 220, he will survive with between 1-3 health, but if we roll a 221 or higher, he will faint. This gives us 35 chances out of 39 to land a OHKO, which gives us a 89.7% chance. For our calculation, let's say we roll RNs until we land on a 235, we would multiply our finnal amount of the damage calc, 192, with this number, giving us 45120. We would then divide this by 255, giving us 176.94, which, as mentionned before, gets rounded down to 176 damage to be dealt.
38
Dealing Damage: Assuming no Substitute, the game will deal damage to the opponent's health. If our move's damage is more than the target's remaining HP, the move's damage output gets lowered to equal the opponent's HP to not let the HP fall into the negatives. In this scenario, we skip the extra effects and go to the KO function (the Pokemon faints, I won't touch on it much since it's pretty self explanitory). Since our 176 damage dealt is more than Nidoking's 166 HP, our damage dealt gets reduced to 166, resulting in a KO and skipping the extra effects.
39
Extra Effects: After dealing damage, if the defending Pokemon survives, the extra effects come into play. There's a check to not include extra effects against defending Pokemon who share the same type as the move. Body Slam, a Normal type move, would not paralyze Normal type Pokemon, for example. This does not affect status-only moves, so, for example, Thunder Wave can still Paralyze Electric type Pokemon. If a move's extra effect is not guaranteed, the PRNG rolls a number to compare against the odds of the effect activating.
40
Conclusion: There's still more to write on this, but nothing particularly important. Things like how Counter or Psywave work, how two turn moves work, how Pin Missile and other 2-5 turn moves work, etc. This is already 2000 words more than I intended to type about a damage calculator, but hopefully you learnt a thing or two about Pokémon.
41
ROM Map
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100