This level UberASM will cause Layer 2 to smoothly scroll down then up N tiles, similarly to how Sprite EA functions, but with much more customization. The distance Layer 2 moves, the max speed it moves at, and the acceleration of Layer 2 are all customizable.
Requires 5 bytes of RAM (one 1-byte, two 2-byte sections), which can be configured in the .asm file. Also make sure to set Layer 2 Vertical Scroll Rate to NONE.
The .asm file contains tons more information so be sure to read the comments. This is also my first submission to this site so it could likely be optimized.
Well, I inserted your code after changing the speed so it was slow... and?
This happens. I know this is not you intended to happen (it was not for me). I would suggest you, before everything, whip up a readme file with example values and how the values work exactly, as it's always possible I made some mistakes.
Last suggestion: If you increment the !addr define to your FreeRAMs, your code could be made fully SA-1 compatible.