I have recently implemented a VRC4 mapper. According to some of the documentation I found, this can be made to support mapper 21 via Rev A and C pinout variations, mapper 25 via rev B and D pinout variations, and apparently, mapper 23 via Rev E/F pinout variations (whose existence is disputed). Elsewhere, I have found that Mapper 23 is assigned to VRC2 Rev B (mapper 22 is used for BRC2 Rev A).
So far, ROMs with mapper id 23 that I have tried to run on VRC4 rev E/F do not seem to render the correct CHR tiles in some places. Perhaps it is because the CHR bank index for this case is supposed to ignore bit 0 of the index.
So my question is: how to best tackle mapper 23? My inclination now is to make a VRC2 mapper implementation that supports Rev A and B, assigning them to mappers 22 and 23 respectively (instead of trying to use VRC4 for 23).
Thoughts?
So far, ROMs with mapper id 23 that I have tried to run on VRC4 rev E/F do not seem to render the correct CHR tiles in some places. Perhaps it is because the CHR bank index for this case is supposed to ignore bit 0 of the index.
So my question is: how to best tackle mapper 23? My inclination now is to make a VRC2 mapper implementation that supports Rev A and B, assigning them to mappers 22 and 23 respectively (instead of trying to use VRC4 for 23).
Thoughts?