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

Stamina limits what a character can do. Little Mac’s hearts in Mike Tyson’s Punch-Out!! start each round at no less than a set count for the fight, and at zero he can’t punch1. In Harvest Moon 64, stamina is a daily budget: each tool use costs an amount set by the tool and its charge2, and a night in bed refills it to the maximum3.

  • Action costMike Tyson's Punch-Out!! (1987). Hearts drop by 1 or 3; at zero Little Mac can't punch, and each round starts at no less than a set count.1
  • DailyHarvest Moon 64 (1999). Each tool use costs 1 to 6 stamina by tool and charge, work in rain or at night adds fatigue, and a night in bed refills stamina.2,3

Games

GameYearHowNote
Mike Tyson's Punch-Out!!1987Action costhearts drop by 1 or 3; at zero Little Mac can't punch, and each round starts at no less than a set count
Harvest Moon 641999Dailyeach tool use costs 1 to 6 stamina by tool and charge, work in rain or at night adds fatigue, and a night in bed refills stamina
Every claim about this mechanic, by game (3)
Mike Tyson's Punch-Out!! 1987Little Mac's hearts in the NES Rev 1 are a two-digit decimal count. Glass Joe's fight data, in its comments, starts rounds 1, 2, and 3 at 20, 20, and 15 hearts, with normal recoveries of 15, 15, and 10 and reduced ones of 9, 9, and 5. The round setup routine, uncommented (it also loads the round's clock rate and starts the round timer), sets hearts to the table's value in round 1 and raises them to it in rounds 2 and 3 if they're lower, and it copies the two recovery values for the round. An uncommented routine at $843E takes hearts away, 1 or 3 at each of its six callers; when the count reaches zero or below it clears MacCanPunch, which the define reads as "Little Mac can't punch".Code
Harvest Moon 64 1999In the US release, toolToFatigueScore gives each tool a stamina cost per charge level: the sickle and hoe 2, 4, and 6; the ax and hammer 1, 2, and 3; the watering can 1, 2, and 6; the milker, bell, brush, clippers, the seed bags, and grass seeds 1; the rest 0. Releasing B subtracts the cost from stamina. If it is raining or snowing, or the hour is before 6:00 or from 18:00, and the player isn't in the greenhouse, the same cost is added to fatigue (out of 100), or half of it once a life-event flag the decompilers name KAPPA_POWER_NUT_GIFT is set. Holding B raises the charge level each time a hold counter reaches 16, up to the tool's upgrade level, while stamina covers the next level's cost.Code
In the US release, going to bed refills stamina to its maximum and, unless fatigue is at 100, takes 2 points of fatigue off for each hour of sleep before 6:00, 3 with the cushion (life event HAVE_CUSHION): the hour taken is the bedtime, plus 24 if before 6:00, subtracted from 30. Staying up until 6:00 runs the next day's update by another path that doesn't touch stamina or fatigue. Food and drink add the item's stamina value and take off its fatigue value.Code

References

  1. ^ abLittle Mac's hearts in the NES Rev 1 are a two-digit decimal count. Glass Joe's fight data, in its comments, starts rounds 1, 2, and 3 at 20, 20, and 15 hearts, with normal recoveries of 15, 15, and 10 and reduced ones of 9, 9, and 5. The round setup routine, uncommented (it also loads the round's clock rate and starts the round timer), sets hearts to the table's value in round 1 and raises them to it in rounds 2 and 3 if they're lower, and it copies the two recovery values for the round. An uncommented routine at $843E takes hearts away, 1 or 3 at each of its six callers; when the count reaches zero or below it clears MacCanPunch, which the define reads as "Little Mac can't punch".Codenmikstas/mike-tysons-punch-out-disassembly
    How we know
    1100;Glass Joe Fight data. Loaded into $05A0 through $05FF.
    ⋮
    1104L931C:  .byte $20               ;Starting number of hearts, round 1(base 10).
    1105L931D:  .byte $15               ;Normal heart recovery, round 1(base 10).
    1106L931E:  .byte $09               ;Reduced heart recovery, round 1(base 10).
    1107L931F:  .byte $20               ;Starting number of hearts, round 2(base 10).
    1108L9320:  .byte $15               ;Normal heart recovery, round 2(base 10).
    1109L9321:  .byte $09               ;Reduced heart recovery, round 2(base 10).
    1110L9322:  .byte $15               ;Starting number of hearts, round 3(base 10).
    1111L9323:  .byte $10               ;Normal heart recovery, round 3(base 10).
    1112L9324:  .byte $05               ;Reduced heart recovery, round 3(base 10).
    
    source_files/PRG_Bank000.asm lines 1100–1112 at 60b2fa0 · upstream ↗
    207.alias HeartTable       $05A3   ;Table of heart values for this fight. (Indexing starts at 3)
    
    source_files/Mike_Tysons_Punchout_Defines.asm line 207 at 60b2fa0 · upstream ↗
    2733LB5A9:  LDA #$01
    2734LB5AB:  STA MacCanPunch
    2735LB5AD:  LDA RoundNumber
    2736LB5AF:  CMP #$04
    2737LB5B1:  BCC $B5B6
    2738LB5B3:  JMP $B621
    2739LB5B6:  ASL
    2740LB5B7:  ADC RoundNumber
    2741LB5B9:  TAX
    2742LB5BA:  CMP #$03
    2743LB5BC:  BEQ $B5CB
    2744LB5BE:  LDA HeartTable,X        ;($05A3)
    ⋮
    
    source_files/PRG_BankDEF.asm lines 2733–2786 at 60b2fa0 · upstream ↗
    514L843E:  TAX
    515L843F:  LDA CurHeartsLD
    516L8442:  ORA CurHeartsUD
    517L8445:  BEQ $849E
    518L8447:  TXA
    519L8448:  SEC
    520L8449:  STA $E7
    521L844B:  LDA CurHeartsLD
    522L844E:  SBC $E7
    523L8450:  BCS $8455
    524L8452:  ADC #$0A
    525L8454:  CLC
    ⋮
    
    source_files/PRG_Bank007.asm lines 514–535 at 60b2fa0 · upstream ↗
    109L80D1:  LDA #$01
    110L80D3:  JSR $843E
    
    source_files/PRG_Bank007.asm lines 109–110 at 60b2fa0 · upstream ↗
    163L8143:  LDA #$03
    164L8145:  JSR $843E
    
    source_files/PRG_Bank007.asm lines 163–164 at 60b2fa0 · upstream ↗
    94.alias MacCanPunch      $BC     ;#$00=Little Mac can't punch, #$01=Little Mac can punch.
    
    source_files/Mike_Tysons_Punchout_Defines.asm line 94 at 60b2fa0 · 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, toolToFatigueScore gives each tool a stamina cost per charge level: the sickle and hoe 2, 4, and 6; the ax and hammer 1, 2, and 3; the watering can 1, 2, and 6; the milker, bell, brush, clippers, the seed bags, and grass seeds 1; the rest 0. Releasing B subtracts the cost from stamina. If it is raining or snowing, or the hour is before 6:00 or from 18:00, and the player isn't in the greenhouse, the same cost is added to fatigue (out of 100), or half of it once a life-event flag the decompilers name KAPPA_POWER_NUT_GIFT is set. Holding B raises the charge level each time a hold counter reaches 16, up to the tool's upgrade level, while stamina covers the next level's cost.Codeharvestwhisperer/hm64-decomp
    How we know
    291    { 2, 4, 6 },
    292    { 2, 4, 6 },
    
    src/game/player.c lines 289–318 at 9824b88 · upstream ↗
    61#define WATERING_CAN 5
    
    src/game/items.h lines 57–85 at 9824b88 · upstream ↗
    1635                if (((SUNNY < gWeather && gWeather < 4) || !(5 < gHour && gHour < 18)) && gBaseMapIndex != GREENHOUSE) {
    
    src/game/player.c lines 1629–1660 at 9824b88 · upstream ↗
    8#define SNOW 3
    
    src/game/weather.h lines 6–8 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

  3. ^ abIn the US release, going to bed refills stamina to its maximum and, unless fatigue is at 100, takes 2 points of fatigue off for each hour of sleep before 6:00, 3 with the cushion (life event HAVE_CUSHION): the hour taken is the bedtime, plus 24 if before 6:00, subtracted from 30. Staying up until 6:00 runs the next day's update by another path that doesn't touch stamina or fatigue. Food and drink add the item's stamina value and take off its fatigue value.Codeharvestwhisperer/hm64-decomp
    How we know
    2531                gPlayer.fatigueCounter += adjustValue(gPlayer.fatigueCounter, -((30 - tempTime) * 2), 100);
    
    src/game/game.c lines 2520–2543 at 9824b88 · upstream ↗
    3254                    handleExitLevel(8, END_OF_DAY_1);    
    
    src/game/player.c lines 3252–3254 at 9824b88 · upstream ↗
    61            handleExitLevel(1, END_OF_DAY_2);
    
    src/game/time.c lines 56–61 at 9824b88 · upstream ↗
    2600        startNewDay();
    
    src/game/game.c lines 2559–2610 at 9824b88 · upstream ↗
    1791            gPlayer.currentStamina += adjustValue(gPlayer.currentStamina, getItemStaminaIncreaseValue(gPlayer.heldItem), gMaximumStamina);
    
    src/game/player.c lines 1788–1793 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