On this page
  1. Related
  2. Games
  3. References
  4. Sources

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

GameYearHowNote
Harvest Moon 641999Pointsa 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

  1. ^ 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 milkType is 0, whatever its affection.Codeharvestwhisperer/hm64-decomp
    How we know
    428        if (gFarmAnimals[animalIndex].affection >= 221) {
    
    src/game/animals.c lines 410–434 at 9824b88 · upstream ↗
    19#define MAX_AFFECTION 255
    
    src/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.

    In the claim ledger

  2. ^ abIn the US release, adjustFarmAnimalAffection scales 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: updateFarmStatusRain makes it mad when getRandomNumberInRange(0, 3) returns 0 and then applies −20, or sick when getRandomNumberInRange(0, 7) returns 0 and then applies −30, and a cow already sick gets −20.Codeharvestwhisperer/hm64-decomp
    How 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.

    In the claim ledger

Sources

Code