This is a patch of… rather limited utility, but it is functional. Some of the timer’s quirks might cause unexpected behavior, though - users would best make note of the following:
Leading zeroes are automatically blanked out by the timer - a timer set to freeze on “070” will show up as “ 70”.
Freezing the timer at “099” will cause the “time is running out” music speed up sound to play over and over again.
Freezing the timer at “000” will kill the player.
Three-letter entries like “OOF” or “WOW” are technically numbers in the context of the timer, in fact rather large ones - ending a level with the timer set to a word like this will mess with the time/score tally just as if the timer were set too high normally.
Anything that directly interferes with the timer will likely conflict with this patch - the vanilla game’s own green berries, for instance, will turn a timer frozen at “WOW” into “XGW”, which will then resume counting down.
If the timer hits the “freeze” value before reaching the “warp” value, it’ll freeze on its own.
Originally posted by the patch
The following defines are timer values. They can be defined as bytes (ex. $00,$00,$09) or as strings (as it is).
Note that the quotes after !freeze = must be removed in order to define a time as bytes; the same must be done for the quotes around “!freeze” in freeze: db “!freeze” just after freecode.
Tested with Asar 1.71, Lunar Magic 3.03, SA-1 1.31, Snes9x 1.59.2.