Both.

When you store a current hp, mp value > 1023 (3FF), you get save corruption with weird values problem. Damage not reversible. Cannot recover old values.

Used 999 because that's the typical "max" value game shows you. And it's only 24 points from the absolute max when saving.

And 999 is an easy to understand number.

edit: It'd take a filthy amount of expansion work to save correct hp, mp values. Game is not equipped to handle 1024 (400) because it uses bit compression techniques (03 = 2 bits max, 04 = 3 bits => incorrect storage, readback).