Wram banks and mobile make this tough, since any address can secretly be a ghost. As usual, mobile completely disregards 99% of the codebase. It's been ignored in kind.
SUBSTATUS_ROLLOUT was actually SUBSTATUS_RAMPAGE. SUBSTATUS_ENCORED was actually SUBSTATUS_ROLLOUT. Substatus 5 bit 4 was actually SUBSTATUS_ENCORED. Also use some more (sub)status constants where needed.
Functions prefixed with _ imply they're private. The real purpose of this function is to use an address, rather than saving a few cycles on push/pop.