I have recently been thinking about features for NESFaCE (an NES emulator I am writing) and this idea came to mind. One of the main reasons I had for starting this emulator in the first place was to provide 100% compatibility, which as far as I know, NO current NES emulator offers. One of the biggest reasons for this is a lack of support for certain mappers. Sometimes it's because there is a lack of technical information, sometimes the author(s) just won't spend the time to program all of them, and sometimes the games declare the wrong mapper number in the header or don't even have a header.
However, a lot of the mappers that aren't often programmed into emulators are compatible with one of the more common mappers (MMC1, MMC3, etc). So, I propose that if an emulator can't detect what mapper a cartridge is using and/or doesn't support that mapper, let the user try the mappers it does support, one by one. Sure, you could force many current emulators to do this now by modifying the iNES header, but an option in the emulator would be much more user friendly. It would also be a good idea to have this option for games even where a supported mapper is detected in case the game really uses a different mapper.
As far as coding this, it seems like it would be fairly easy in most cases. Most NES emulators clearly split the mapper code from the other types of code and only use the code for whatever mapper the cart they are running at the time uses, so they would only need to change which mapper code is being used. If anyone has any additional ideas or comments about this, let me know.
However, a lot of the mappers that aren't often programmed into emulators are compatible with one of the more common mappers (MMC1, MMC3, etc). So, I propose that if an emulator can't detect what mapper a cartridge is using and/or doesn't support that mapper, let the user try the mappers it does support, one by one. Sure, you could force many current emulators to do this now by modifying the iNES header, but an option in the emulator would be much more user friendly. It would also be a good idea to have this option for games even where a supported mapper is detected in case the game really uses a different mapper.
As far as coding this, it seems like it would be fairly easy in most cases. Most NES emulators clearly split the mapper code from the other types of code and only use the code for whatever mapper the cart they are running at the time uses, so they would only need to change which mapper code is being used. If anyone has any additional ideas or comments about this, let me know.