Normally, bounce blocks such as note blocks or ?-block don't push the player downwards underwater. This patch makes it so that when you're underwater and swimming with an item, you get pushed downwards a little like in Super Mario Maker.
Techinically, forcing the player downwards so he 1-frame hits the block is not new. Things like non-bouncing block switches used in old hacks use this to prevent 2-4 frame hit blocks by simply having the MarioBelow set his Y speed to #$80.
A simple patch that adds a little organic touch to water movement, very nice!
1.) The swimming physics routine runs after this code, and thus imposes a maximum downward speed of #$10; any !PushSpeed settings greater than #$10 will be capped at this value.
2.) If the patch is set to play a sound effect in bank $1DF9, it will overwrite the "hit head" sound that normally plays when bumping the bottom of a block. If set to any sound effect in $1DFC, it will be overwritten by the normal sounds made by item/coin containing blocks.
Tested with Asar 1.81, Lunar Magic 3.31, SA-1 1.40, Snes9x 1.59.2.
This also happens in NSMB too. I think this is also good for on/off switches because without this patch, the player carrying a sprite would be hitting the switch repeatedly and rapidly, causing a 50% chance it would be in the undesired state.