I’m breaking on read on the MaxHp/currentHp bytes in ram and in the unit data, as well as what we know so far. I’m not delving into growths, but the caps themselves.
08018AC4
08018A74
(current HP)
08018A86
(Max HP)
08029510
08029440
08029518
(Battle data current HP)
0803371E
0803379E
080337CA
08028CE2
(Map Battle Preview Display)
Found another one.
08017C6A
08018A9E
08018210
08018224
08018222
08018242
Does something with writing back HP after battle?
Change all of these to their unsigned versions.
This works so far, except the display in battle glitches, but the actual numbers are preserved.
More on Breaking the HP cap: After battles, if it’s a player unit, HP is capped at 08017C86. Remove the check at 08017C80 (write a FF there).
Enemy HP is capped at 08017C8C (to 0x78) (check at 08017C76)
08029F38
Checks against the fire dragon’s ability.
Also, I have a sneaking suspicion about the branch at 080522D2 if nothing else works.
0203E0BA is Max HP number?
0203E0BE is max HP to draw (for the right hand player)
0203E0C2 is the current HP to draw
Both halfwords
Cast to signed halfword at 080522C4. Get rid of that too
Damage is also treated as a signed byte, though it is calculated as a signed halfword. The damage cap is at 080292F0 and lethality damage is at 080292CC (changed if you install any of my hacks, really)
In calculations, at 08029454, it is shoved into the upper byte, then compared with bge(signed greater than or equal to). I would either change it to a bcc or get rid of the shove (probably the latter?)