I have two 8-bit Xmas ROMs (2012 and 2014), not sure if they're publicly released so I can't share them, but they seem to indicate a problem with the UNROM 512 mapper:
I'm noticing CHR bank switching and other glitches with these ROMs that don't occur in FCEUX. I suspect it's the register only covering $C000-FFFF in the variants of the board that have LED lights attached, since they use an additional register at $8000-BFFF (conveniently also required for self flashing, so generally enabled by the battery save flag).
Edit: doesn't actually seem to be a conflict in the $8000-BFFF range, I rescind this suggestion. There is a CHR banking problem when played in Mesen but I'm not sure what it is yet. Forcing XMAS 2012 to 8k CHR-RAM hides the problem, but XMAS 2014 relies on 32k CHR banking.
Edit: the bug is actually really weird, what is happening is that one of the CHR pages is being corrupted.
What appears to happen is that when CHR bank 00 is selected and the nametable at PPU $2XXX is written to, CHR-RAM at $6XXX is also written to at the same time, corrupting it. This actually triggers a breapoint for CHR write at that address range, too! I have no idea why this is specifically happening for the $6000 page, but that's what seems to be the problem. Somehow writing to $2XXX (at least the first 1K anyway, the game only uses the frst nametable) when CHR bank 0 is selected is also writing to CHR $6XXX.
Edit: Looked up your implementation
and the answer is apparent, you are explicitly mapping it there for the 4-screen mirroring case, except you're not really testing for 4-screen mirroring... you're testing for !_oneScreenMirroring which you've used to conflate 4-screen and 1-screen?
My ROMs are set as horizontal mirroring, incidentally (not sure if that's how the carts are wired, but they only ever write to the first nametable anyway), but I'm pretty sure this mapping should only occur when 4-screen mirroring is requested, not 1-screen, and not hardwired horizontal or vertical.