The first release was the North American 1.0 version, which will be referred to as U 1.0. There was a later revision, U 1.1, which fixed several bugs. The fixed bugs include a few useful glitches that are exclusive to U 1.0: Luigi warping, glitched loading zones, and a few instances of worse collision that allows for easier out of bounds. The international Japanese (J), European (E), and Korean (K) releases were based off U 1.1, but additionally changed a lot of enemy stats, most notably decreasing many bosses' health. For a full list of the stats differences see the above spreadsheet. There are no known gameplay differences between J, E, and K aside from text language and the title screen. Because of overall lower boss health, J, E, and K are generally preferred for speedruns, but the U 1.0 exclusive glitches (mainly Luigi warping) save enough time for an All Bosses TAS to be faster overall on U 1.0.
The base calculation involves the Level and POW of the attacker, the DEF of the damage receiver, and the attack constant of the attack. The attacker is usually obvious: in a normal successful jump by baby and adult Mario, baby Mario is the attacker for his jump and adult Mario for his. For bro items, the attacker is the character that delivered the specific attack: the one who jumped for each copy flower or trampoline hit, the one who most recently hit the shell for each red or green shell hit, or the one who threw the fireball for each fireball that does damage. The attack constant depends on the type of the attack and whether or not it was successful. The attack constants for U 1.0 are listed in the spreadsheet though a few of them differ between versions.
Base damage is calculated by: (attacker LV)*(attacker POW)*(constant)/(defender DEF). If the result of the base calculation is less than 1, it is rounded up to 1 (it's left un-rounded if it's greater than 1).
Next, lucky and critical effects are taken into account. A hit is lucky if the next RNG value is less than the % lucky chance, which depends on the attacker's STACHE and the enemy's Level. Note that the attacker for this calculation may be different from the attacker for the damage calculation - in the case of bro and ice flowers, the STACHE of the bro who selected the attack is used for every fireball, but the LV and POW of the bro who threw the fireball are used for each individual fireball damage calculation. Only successful attacks by the player can be lucky and they multiply damage by 2. Critical hits occur when using a bro or mix flower against an enemy weak to fire, or an ice flower against an enemy weak to ice. They also multiply damage by 2. If a hit is lucky and critical, it only appears as lucky, and multiplies damage by 3. After this multiplication, damage is rounded to the nearest integer.
Finally, damage-changing badges are taken into account. Some badges, such as the Big-POW badge, give the wearer a temporary POW boost that is accounted for in the initial calculation, while others, such as the Risk badge, increase damage dealt, which is accounted for here at the end. These badges multiply the damage by some factor, and this result is finally rounded to the nearest integer.
Random number generation
Bro Flowers and Ice Flowers
Top screen storage
Every top screen room is intended to correspond to a particular bottom screen room. If the babies are in a top screen and the adults enter a bottom screen loading zone, the babies will be forced out of the top screen, in order to prevent a top screen corresponding to room A being loaded at the same time as room B is loaded. TSS involves getting around this restriction and having a top screen loaded while the wrong bottom screen is loaded. There are several ways to do this, explained below.
If you leave the top screen through a hole or with a spring, a script will be played on the current bottom screen. Normally this script will be of the babies returning to the bottom screen, but if a different bottom screen is loaded via TSS, some other script can play. This will often softlock or crash, but outcomes can include activating story cutscenes, pipe blocks, NPC dialogue, or simply placing the babies at (0,0), which is out of bounds in the top-left corner of the room.
If you leave the top screen through a normal loading zone, you will be placed on the current bottom screen at the coordinates that the loading zone normally takes you to.
With a spring
The goal of this method is to use a spring and take a loading zone with the adults at the same time. Loading zones can only be activated with the adults if you have control of the adults (usually - see glitched loading zones below), so the trick is use the spring without having control of the babies. It is possible to do some actions, notably jumping, with the pair you don't have control of when the pair you have control of is in the air.
With the adults
With glitched loading zones
With text storage
Glitched loading zones
Baby cake spin