Whatever kills the player does it the same way: the collision code sets bit 6
of the +$0D of his legs' record (the mover's bit 7, or the obstacle's bit 5,
ADJ_DU_FOR_OBJ_INTERSECT), and the next time his update routine
PLAYER_LEGS runs it tests that bit
and turns him into the puff. Make the BIT 6 a RES 6 -- one byte, the fourth of
the instruction -- and the JR Z after it a JR, and the mark is wiped and
ignored every turn. His body is out of every collision test already (
PLAYER_TOP),
so nothing else needs doing. Deadly things still bump him, and homers still
chase him.
Tested: the same trial as the lives poke -- room 6, standing between the two
deadly pacers -- four deaths in 63 turns and the game over without it; with
it, 1200 turns, no death, three lives.