Recover HP mushroom routine (my player HP meter patch):
LDA !Freeram_PlayerCurrHP ;
CMP !Freeram_PlayerMaxHP ;
SEP #$20 ;
BEQ ..Wrong ;>If HP full, don't consume item box
ADC.w #10 ;>Amount of HP recovered, decimal.
LDA !Freeram_PlayerMaxHP ;>Prevent recovering 99% HP to > 100%
LDA #$0A ;\Powerup mushroom sfx
STA $1DF9+!addr ;/
STZ $0DC2+!addr ;>Consume item.
If you want to recover a certain fraction of max HP, consider looking into the HP patch's routine in the patch under mushroom or a custom block that acts like a mushroom, under "if !MushRecovTyp == 2". Be sure that you have the JSL subroutines as well.