Mario Paint does the following:

01E747: PHP
01E748: LDA $4212
01E74B: AND #$01
01E74D: BNE 01e747 (-$8)

Some kind of copy protection / timing check apparently (or simple bad code), because I don't see the point in pushing the P register. In MESS, we enter here at V point 226 (in BSNES that's 229 / 259) ... since we are "updating the inputs after three lines of vblank" that falls into timing edge case.

Very lucky. --"

Originally Posted By byuu

My mouse support sucks, too. I don't do anything with the mouse speed bits.

Heh, but your code doesn't ignore X/Y screen limits :P