I reversed the ‘evolve’ function in the Tamagotchi Friends to make the first ‘growth chart’ for this Tamagotchi version. Growth on the Tamagotchi Friends is determined by how well the Tamagotchi is cared for, its personality, which is set by specific user behaviours and randomness.
The evolve function was pretty easy to find in the code, as it is similar to the Tamatown Tama-Go’s evolve function in that is uses the X register for most comparisons. This is unusual in the Tamagotchi’s code, so it stood out.
As shown above, the function splits into four main paths right away. These correspond to a baby becoming a child, a child becoming a teen, a teen becoming and adult, and an adult’s baby becoming its own character (which I didn’t look at).
Baby Becoming a Child
The child a baby becomes is random, it is determined from entropy source C0. For even generations, the child is completely random. For odd generations, the child sprite of the previous generation is fetched, and there is a 2/3 chance that it will be the sprite that the baby did not grow into last time
Child Becoming a Teen
The teen a child becomes is based entirely on a single care factor at address 0x328. It ranges between 0 and 15, with low values corresponding to good care. It was difficult to tell everything that affect this factor, but it’s definitely affected by feeding and playing with the Tamagotchi. Unlike with the Tama-Go, it does not appear to have a random element.
Different child sprites react differently to the care factor though. Turtletchi and Terupatchi can be cared for slightly less well than Petithanaatchi or Mitsumarutchi without ‘excellent’ care becoming ‘good’ care. On the other hand, Petithanaatchi or Mitsumarutchi can be cared for less well than Turtletchi and Terupatchi without ‘good’ care becoming ‘okay’.
The characters for each care level are shown below.
Teen Becoming Adult
The adult a teen becomes is based on two bytes, the care factor at address 328 described above, and another factor at address 31A. This turned out to be the Tamagotchi’s ‘personality’. It starts out having a value of 0, which means the Tamagotchi has no specific personality, and the personality can get set the following ways:
Social— A Tamagotchi becomes social if you send or receive at least 10 SMS messages while the Tamagotchi is a teen
Active— A Tamagotchi becomes active if you play coin catch with it 10 times while it is a teenager (other games might also work)
Gourmet— A Tamagotchi becomes gourmet if you feed it at least 15 meals while it is a teenager (I feel like this should only apply to meals that are purchased versus the default bread, but I can’t find anywhere this happens, so I suspect it works with the bread too.
When a teen evolves, its care level is first determined based on the following table:
Note that the harder the teen character was to obtain care-wise when it was a child, the easier it is to get a high level of care when it evolves as an adult. So care adds up across life stages!
Then, the character is selected based on the Tamagotchi’s personality.
“Random” means a character is selected randomly from the row for its care level.
Below is the full growth chart!
This is of course a work in progress. If you have anything to add, or this contradicts what you see on your Tamagotchi, please comment on this post, or email me.