This will switch the player from Mario to Luigi and back when Pressing the R button on the overworld during a Single Player game while leaving the 2 Player option intact.
It will take Mario's Score, Bonus Stars, Powerups, Yoshi's, overworld position and completely allows you to swap players without any odd behaviors like some of the other versions of "Switch Characters" blocks or patches.
This will work with Smallhacker's Separate Player graphics patch to give Luigi separate graphics from Mario. Instructions in the uberasm
Note: Does require a patch for asar that is included. It fixes the lives system so that you won't get weird behaviors when you get a game over as Luigi.
Also included a patch that maps player 1 and player 2 to the same controller.
The code seems to work without any issues, but this is being rejected due to there not being an "unpatch file" for the necessary hijacks. Also, it is mentioned that it is compatible with "Smallhacker's Separate Player graphics patch", but to make it as such, the user has to modify the patch themselves by adding lines of code. While this is not grounds for rejection on its own, it may be worth considering an alternative that doesn't make the user have to write anything. Once you submit a new version of this with the unpatch files, this should be easily approvable.