Infinite lives
lose_life takes a life with DEC (HL) at $D13F; make it a NOP. The lives shown stay at five from the start, and dying costs nothing. Tested: a death took the lives from 4 to 3 without the poke, and left them at 4 with it.
POKE 53567,0
Endless time
inc_days ends the game when the day count reaches $40, forty days. Make the comparison $FF, which a BCD count never reaches: the days still pass and are shown, but they never run out. Tested: with the day count set to $39 and run on to the next dawn, the game ended without the poke and carried on with it.
POKE 50210,255
Immunity
upd_player_bottom checks, every frame, whether anything harmful has touched the player, and starts his death if so. Make its JR Z at $C82F an unconditional JR, and spikes, fire, guards and ghosts pass him by. Tested: flagging the player as touched cost a life without the poke, and nothing with it.
POKE 51247,24
A moveable block that moves
The block type the game calls moveable clears its velocity before it moves, which cancels every push (see the bug). Take out that CALL, at $C4AD: pushed blocks then keep the push, and slide on -- as the chest does -- until something stops them. Tested: a moveable block in the player's path did not move in 20 frames without the poke, and was pushed 47 units with it.
POKE 50349,0: POKE 50350,0: POKE 50351,0