Makes sense. Thanks everyone! I'll file a bug report/Issue with the NestopiaUE guy to have this rectified. I'll also see about updating the nesdev wiki (for VRC2).
As for FCEUX and its weird
V != 0xff quirk: if the code there is purely for VRC2 and not VRC4, then I don't know why they don't just mask off bits 7-1 and only honour bit 0. In other words, something like this would be clearer:
Code: Select all
/* Per official Konami documentation, VRC2 only implements horizontal (0) and
* vertical (1) mirroring; only bit 0 is used. nesdev thread confirming this fact:
* http://forums.nesdev.com/viewtopic.php?f=3&t=13473
*/
case 0x9000:
case 0x9001: mirr = V & 0x01; Sync(); break;
Though the
case statement isn't accurate -- the docs state clearly $9000-9FFF is mapped to the H/V toggle.
If the same code is used for VRC4, then I don't know what makes the
V != 0xff quirk necessary; possibly there's some justification for it (maybe someone has official VRC4 documentation), but my gut feeling is there's probably a weird game that does something unexpected and it worked around whatever the oddity was. Too bad the commit history doesn't go back to when it was written -- thanks for digging into that, rainwarrior!
Edit: you summarise the situation
beautifully well, lidnariq. Thanks for that. *thumbs up* :-)
P.S. -- I've run into my neighbour twice in the past 2 days, and he was supposed to come by last night to give me the translated results but didn't. I'll poke him tomorrow. He did say the Japanese wasn't hard and he more or less understood/got it all.