Phoenix mentioned the Regen Subroutine a while back, but I thought toperhaps show it in full...
Regen Routine
$03/E3FA 9C 7C 35 STZ $357C [$7E:357C] A:0003 X:0032 Y:0000 P:envMxdizc - Store Zero in 7E357C.
$03/E3FD A2 0A 00 LDX #$000A A:0003 X:0032 Y:0000 P:envMxdizc - Load 0A into X
$03/E400 8E 7D 35 STX $357D [$7E:357D] A:0003 X:000A Y:0000 P:envMxdizc - Store X in 7E357D (Healing Field)
$03/E403 EE 0A 39 INC $390A [$7E:390A] A:0003 X:000A Y:0000 P:envMxdizc - Add 1 to 7E390A
$03/E406 A9 19 LDA #$19 A:0003 X:000A Y:0000 P:envMxdizc - Load 19 into A. (Command Name)
$03/E408 8D C8 34 STA $34C8 [$7E:34C8] A:0019 X:000A Y:0000 P:envMxdizc - Store A into 7E34C8
$03/E40B A9 10 LDA #$10 A:0019 X:000A Y:0000 P:envMxdizc - Load 10 into A. (Message Bank)
$03/E40D 8D C7 34 STA $34C7 [$7E:34C7] A:0010 X:000A Y:0000 P:envMxdizc - Store A into 7E34C7.
$03/E410 A9 22 LDA #$22 A:0010 X:000A Y:0000 P:envMxdizc - Load 22 into A. (Appears to be partially necessary for the actual continuation of routine.)
$03/E412 8D 7B 39 STA $397B [$7E:397B] A:0022 X:000A Y:0000 P:envMxdizc - Store A into 7E397B.
$03/E415 A9 0C LDA #$0C A:0022 X:000A Y:0000 P:envMxdizc - Load 0C into A. (As above.)
$03/E417 85 D6 STA $D6 [$00:00D6] A:000C X:000A Y:0000 P:envMxdizc - Store A into D6.
$03/E419 A5 CD LDA $CD [$00:00CD] A:000C X:000A Y:0000 P:envMxdizc - Load xCD into A.
$03/E41B 20 36 9E JSR $9E36 [$03:9E36] A:0000 X:000A Y:0000 P:envMxdiZc - Jump to Subroutine.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
$03/9E36 9C 58 35 STZ $3558 [$7E:3558] A:0000 X:000A Y:0000 P:envMxdiZc - Store Zero in 7E3558
$03/9E39 C9 05 CMP #$05 A:0000 X:000A Y:0000 P:envMxdiZc - Does A read 05?
$03/9E3B 90 03 BCC $03 [$9E40] A:0000 X:000A Y:0000 P:eNvMxdizc - If not branch to 039E40.
$03/9E40 20 89 84 JSR $8489 [$03:8489] A:0000 X:000A Y:0000 P:eNvMxdizc - Jump to Cleaning/Timing Subroutine.
$03/9E43 A6 A6 LDX $A6 [$00:00A6] A:0000 X:0000 Y:0000 P:envMxdiZc - Load X from A6.
$03/9E45 BD 60 20 LDA $2060,x[$7E:2060] A:0000 X:0000 Y:0000 P:envMxdiZc - Load A from User's Relative Speed.
$03/9E48 85 A9 STA $A9 [$00:00A9] A:0005 X:0000 Y:0000 P:envMxdizc - Store Relative Speed in A9.
$03/9E4A BD 61 20 LDA $2061,x[$7E:2061] A:0005 X:0000 Y:0000 P:envMxdizc - Load A from User's Relative Speed 2.
$03/9E4D 85 AA STA $AA [$00:00AA] A:0000 X:0000 Y:0000 P:envMxdiZc - Store A in AA.
$03/9E4F BD 3B 20 LDA $203B,x[$7E:203B] A:0000 X:0000 Y:0000 P:envMxdiZc - Load User's Speed Modifier into A.
$03/9E52 A8 TAY A:0010 X:0000 Y:0000 P:envMxdizc - Transfer A to Y.
$03/9E53 8C 79 39 STY $3979 [$7E:3979] A:0010 X:0000 Y:0010 P:envMxdizc - Store Y in 7E3979.
$03/9E56 DA PHX A:0010 X:0000 Y:0010 P:envMxdizc - Push Index Register X?
$03/9E57 A5 D6 LDA $D6 [$00:00D6] A:0010 X:0000 Y:0010 P:envMxdizc - Load A from D6.
$03/9E59 0A ASL A A:000C X:0000 Y:0010 P:envMxdizc - Multiply A by 2.
$03/9E5A AA TAX A:0018 X:0000 Y:0010 P:envMxdizc - Transfer A to X.
$03/9E5B BF 05 A0 03 LDA $03A005,x[$03:A01D] A:0018 X:0018 Y:0010 P:envMxdizc - Load A from 03A01D?
$03/9E5F 85 80 STA $80 [$00:0080] A:0095 X:0018 Y:0010 P:eNvMxdizc - Store A in 80.
$03/9E61 BF 06 A0 03 LDA $03A006,x[$03:A01E] A:0095 X:0018 Y:0010 P:eNvMxdizc - Load A from 03A01E?
$03/9E65 85 81 STA $81 [$00:0081] A:009F X:0018 Y:0010 P:eNvMxdizc - Store A in 81.
$03/9E67 A9 03 LDA #$03 A:009F X:0018 Y:0010 P:eNvMxdizc - Load 03 into A.
$03/9E69 85 82 STA $82 [$00:0082] A:0003 X:0018 Y:0010 P:envMxdizc - Store A in 82.
$03/9E6B FA PLX A:0003 X:0018 Y:0010 P:envMxdizc - Pull Index Register X?
$03/9E6C DC 80 00 JML [$0080][$03:9F95] A:0003 X:0000 Y:0010 P:envMxdiZc - Jump Long to 039F95
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/E41E A9 03 LDA #$03 A:0000 X:0032 Y:0032 P:envMxdizc - Load 03 into A.
$03/E420 20 C8 85 JSR $85C8 [$03:85C8] A:0003 X:0032 Y:0032 P:envMxdizc - Jump to Subroutine.
$03/E423 A9 08 LDA #$08 A:0000 X:0003 Y:0032 P:envMxdiZc - Load 08 into A.
$03/E425 9D 06 2A STA $2A06,x[$7E:2A09] A:0008 X:0003 Y:0032 P:envMxdizc - Store A into 7E2A09.
$03/E428 A6 A6 LDX $A6 [$00:00A6] A:0008 X:0003 Y:0032 P:envMxdizc - Load X from A6.
$03/E42A A9 22 LDA #$22 A:0008 X:0000 Y:0032 P:envMxdiZc - Load 22 into A. (Changing this will change the action they take once Regen completes)
$03/E42C 9D 51 20 STA $2051,x[$7E:2051] A:0022 X:0000 Y:0032 P:envMxdizc - Store A in Character's next command.
$03/E42F 20 A6 85 JSR $85A6 [$03:85A6] A:0022 X:0000 Y:0032 P:envMxdizc - Jump to Subroutine.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/85A6 A9 F8 LDA #$F8 A:0022 X:0000 Y:0032 P:envMxdizc - Load F8 into A.
$03/85A8 8D C6 33 STA $33C6 [$7E:33C6] A:00F8 X:0000 Y:0032 P:eNvMxdizc - Store A in 7E33C6.
$03/85AB A9 03 LDA #$03 A:00F8 X:0000 Y:0032 P:eNvMxdizc - Load 03 into A.
$03/85AD 8D C7 33 STA $33C7 [$7E:33C7] A:0003 X:0000 Y:0032 P:envMxdizc - Store A in 7E33C7.
$03/85B0 60 RTS A:0003 X:0000 Y:0032 P:envMxdizc - Return
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$03/E432 A9 36 LDA #$36 A:0003 X:0000 Y:0032 P:envMxdizc - Load 36 into A.
$03/E434 8D CA 34 STA $34CA [$7E:34CA] A:0036 X:0000 Y:0032 P:envMxdizc - Store A in 7E34CA.
$03/E437 60 RTS A:0036 X:0000 Y:0032 P:envMxdizc - Return.
Hmm, there is clearly something missing here, likely alot...
There is no explanation within how the game puts the 10 HP into well... HP, and if there 's a way to possibly modify that to say MP like TAY did.