You're all naming stages that aren't unique to begin with.
All main stages clearly were intended to have completely unique gimmicks. The final stages often re-use these anyway.
If the main stages were meant to have unique theme songs, explain Duff's stage to begin with. If they already had another track for it, why re-use Bubble Crab's music? In addition, the final stage of X5 reuses Quick Man's theme as well. I'm sure there are others I just can't think of them, also forgot about the whole editing my post thing later as I had a long day at work, but yeah, there are more themes reused. Also just listened to the original Duff McWhalen theme song and it sounds very boring, slow, and repetetive. There's no music at all and to me it doesn't fit as a Megaman X song, since those are usually more lively. The final stage thing you're using honestly just sounds like a copout since I disproved the original point imo, but there, they reused Quick Man's theme, so I disproved that too. Happy?
I've managed to locate one snippet of code that controls part of Duff McWhalen stage's scrolling speed. Unfortunately, it only controls this first section here:
(Probably too fast, but I just wanted to show off that the speed can indeed be adjusted.)
The different sections of the stage must use different code to set the scroll speed, but at least I know I'll be able to speed things up as needed.
So we're looking at a more difficult Duff McWhalen stage? Sounds interesting.
It's a shame you can't do this. Is it possible to re-do the teleport in scenes when starting a stage when changing characters in order to change them? I don't know anything about actual hacking but if you could sort of redo the exit stage action for the character you're using and maybe call the character in with the original action, maybe that'd work?
As far as the game is concerned, it seems like it might be feasible (my skills on the other hand...)
The game has 2 values it checks in the active player table in RAM. The first values determines if you are X or Zero, and the second determines what armor is currently being used. Really the main issue is the need to swap out graphics (player graphics are compressed and stored in RAM, everything else gets put into VRAM during level loading).
In order from left to right: X swapped to Zero, Zero swapped to X, and X swapped to Forth Armor and then Ultimate Armor.
Edit:Weird, it didn't add what I typed. Anyways I was asking if it'd be possible to sort of queue the exit behavior of the character you're using and then queue the intro behavior (like when starting a stage) for the character you wanted to use. I dunno anything about hacking but just wondering if that'd be possible.