Mechanic · simulation · farming simulation
Affection
A count per character or animal that the player's care raises and neglect lowers, read at thresholds for what the character gives or does.
On this page
Affection turns care into outcomes. In Harvest Moon 64 a cow’s affection sets the size of its milk1. The same code’s mood scaling turns a loss into a gain for a mad, sick, or happy cow2.
- PointsHarvest Moon 64 (1999). A cow's affection from 0 to 255 sets its milk size, and its mood scales each change.1,2
Games
| Game | Year | How | Note |
|---|---|---|---|
| Harvest Moon 64 | 1999 | Points | a cow's affection from 0 to 255 sets its milk size, and its mood scales each change |
Every claim about this mechanic, by game (2)
References
- ^ abIn the US release, a cow's milk size comes from its affection (0 to 255): small at 150 or less, medium from 151 to 220, large from 221, and golden for a cow whose
milkTypeis 0, whatever its affection.Codeharvestwhisperer/hm64-decompHow we know
428 if (gFarmAnimals[animalIndex].affection >= 221) {src/game/animals.c lines 410–434 at 9824b88 · upstream ↗ 19#define MAX_AFFECTION 255src/game/game.h line 19 at 9824b88 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Checked by a second AI model, 2026-10-22.
- ^ abIn the US release,
adjustFarmAnimalAffectionscales a change by an adult cow's condition: a happy cow's gains are doubled and a mad or sick cow's halved. Its loss branch negates the scaled amount,-(amount * 2)for mad and sick and-(amount / 2)for happy, and since the amount is already negative, the result is positive: a loss raises a mad, sick, or happy cow's affection, by twice or half the loss (computed). Leaving an adult cow outdoors on a rainy day can trigger this:updateFarmStatusRainmakes it mad whengetRandomNumberInRange(0, 3)returns 0 and then applies −20, or sick whengetRandomNumberInRange(0, 7)returns 0 and then applies −30, and a cow already sick gets −20.Codeharvestwhisperer/hm64-decompHow we know
353 adjusted = (amount >= 0) ? (amount / 2) : -(amount * 2); ⋮ 361 adjusted = (amount >= 0) ? (amount / 2) : -(amount * 2);
src/game/animals.c lines 344–362 at 9824b88 · upstream ↗ 402 gFarmAnimals[animalIndex].affection += adjustValue(gFarmAnimals[animalIndex].affection, adjusted, MAX_AFFECTION);src/game/animals.c line 402 at 9824b88 · upstream ↗ 275 gFarmAnimals[index].condition = condition;src/game/animals.c lines 238–276 at 9824b88 · upstream ↗ 322 setAnimalState(2, i, 0xFF, COW_MAD, 0);src/game/gameStatus.c lines 298–342 at 9824b88 · upstream ↗ Checked against the evidence by its author, an AI model, 2026-10-22.
Checked by a second AI model, 2026-10-22.
Sources
Code
- harvestwhisperer and hm64-decomp contributors. 2026. “hm64-decomp: a decompilation of Harvest Moon 64 (harvestwhisperer/hm64-decomp).” Commit 9824b88. harvestwhisperer/hm64-decomp @ 9824b88 · licence, all uses