iNES mapper 2 (UxROM) and bus conflicts (also 3 / CNROM)

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
iNES mapper 2 (UxROM) and bus conflicts (also 3 / CNROM)
by on (#154439)
In trying to discuss NES 2.0 submapper proposals re: bus conflicts I am finding a lack of available information about mappers 2 and 3.

There is a statement in disch's mapper notes that mapper 2 includes non-UxROM boards that do not have bus conflicts:
disch notes wrote:
UxROM has bus conflicts, however mapper 002 is meant to be UxROM and compatible. So some mappers which were similar in function, but did not have bus conflicts are included.

I'm trying to find information about this, which games it includes and whether they rely on the lack of bus conflicts, or even if it's true at all. So far the only game I found mentioned was the relatively recent Donkey Kong Pie Factory hack. Has anyone ever run into other examples?

I also have the same question about mapper 3. There is a given example for Cybernoid on a CNROM board that requires bus conflicts, and a Sachen game Colorful Dragon on a non-CNROM board that requires no bus conflicts. Are these the only two edge cases? There seem to be a bunch of non-CNROM games in mapper 3, but do any of these boards prevent bus conflicts, and importantly do any of these games rely on that?
Re: iNES mapper 2 (UxROM) and bus conflicts (also 3 / CNROM)
by on (#154441)
Alternatively, an existing emulator behaviour survey might help in lieu of game information:

Mapper 2

Nestopia: Bus conflicts only if ROM has CHR-RAM, no WRAM, and horizontal or vertical mapping. (NstBoard.cpp)
Nintendulator: No bus conflicts. (mapper002.cpp: Latch::Load(Sync, FALSE))
FCEUX: Bus conflicts. (datalatch.cpp, are they incorrectly implemented?)
Bizhawk: No bus conflicts. (UxROM.cs, funny comment asking why there are no bus conflicts)
MESS: Bus conflicts. (nxrom.c)


Mapper 3

Nestopia: No bus conflicts? Seems to detect a difference between STD_CXROM/UNL_CXROM and one other board internally, but doesn't appear to emulate bus conflicts in either case? (There is an NST_VERIFY against bus conflicts in debug build?)
Nintenduator: No bus conflicts. (mapper003.cpp: Latch::Load(Sync, FALSE))
FCEUX: Bus conflicts. (datalatch.cpp)
Bizhawk: No bus conflicts by default, can be overridden by board detection. (CNROM.cs)
MESS: Bus conflicts by default, can be overridden by board detection? (nxrom.c)


I'll try to verify this with test ROMs later, though in cases using heuristics like Nestopia it may be a nuisance to try and catch all cases. :S
Re: iNES mapper 2 (UxROM) and bus conflicts (also 3 / CNROM)
by on (#154556)
Test ROMs for mapper 3 are available in the iNES 2 discussion thread: http://forums.nesdev.com/viewtopic.php?p=154555#p154555