In several cases, more than one game shares a mapper, and the games expect different behaviors. For example, the same mapper number represents
Uchuusen: Cosmo Carrier and
Holy Diver, but the nametable mirroring control differs between the two. So a lot of emulators use some sort of hash (CRC, MD5, SHA-1, etc.) to identify which board to emulate. The trouble with that is that anything other than the exact good dump of
Holy Diver gets emulated with
Uchuusen behavior, giving incorrect graphics when scrolling. If you want to make a ROM hack of
Holy Diver or a homebrew game on the
Holy Diver board, too bad.
The long-term solution is the
NES 2.0 header, which lets the ROM specify how much RAM is present. It also offers a
submapper field, which allows distinguishing behaviors that had been combined into one mapper number. But a lot of emulator authors don't want to catch up even to 2006, or they've moved on from NES emulation and abandoned their work. For that I can only recommend one thing:
display a warning message.