Ok, so I now have this issue resolved and another official motion class added to my game.
Great job!
To clean it up, you might want to use the hex equivalent for the 32768 instead, so it looks more like a "flag": $8000. I guess this is a signal that marks the end of the list of cels/points.
And the two 65436 in the array should be -100, so it's clear it's just moving it off screen.
One the problems with decompiling is trying to guess whether a number is signed or not. When I encounter a 65535, it's almost certain this was a -1 in the original source code, so I special-case that.
The unsigned range (32768, 65535) corresponds to the signed range (-32768, -1)
What do you think the M stands for? MultiCycle? MultiCel?