This is the Smallhacker's "Separate Luigi Graphics" patch. Luigi's graphics are changed to be different from Mario, just like in Super Mario All-Stars + World.
Unlike version 2.1, this one relies on hijack $A1DA to change graphics every frame so you can change the player graphics without resetting the game. This patch also allows more than two player graphics, see the README for a tutorial on how to do this.
Now updated for Asar, which will find freespace automatically for the patch AND the Mario & Luigi graphics.
I keep getting : Warning: The ROM title appears to be "", which looks like garbage. Is this your ROM title? (Note that inproperly answering "yes" will crash your ROM.) My ROM is called Super Mario World (USA).sfc.
Emulator : ZSNES.
if read1($00FFD5) == $23
; Mario and Luigi graphics are stored separately in the files
; "Mario.bin" and "Luigi.bin". The graphics in GFX32 are no longer used.
; Make sure "Mario.bin" or "Luigi.bin" are around 24 KB in size,
; the same size as GFX32.bin, to avoid taking up freespace.
; The hack must have been edited by Lunar Magic before applying this patch.
; If you haven't used Lunar Magic, open your ROM, extract GFX, insert GFX
; and save a level.
; MUST BE AN UNUSED RAM ADDRESS
; (Default address: "Unused" part of stack)
!currentGfx = $7E010F
LDA $6DB3 ;\
CMP #$00 ;| See this? You can change this to whatever you want.
BEQ Mario ;|
LDA $6DB3 ;|
CMP #$01 ;|
BEQ Luigi ;/
Edit: Figured it out! You have to use ExGFX. For example, copy GFX00, change it to the Luigi version, rename it ExGFX80, insert it into the ROM, change "!gfx00Luigi = #$00" to "!gfx00Luigi = #$80" in the patch, then apply the patch.