What are bus conflicts?
Bus conflicts are what occur when a game program writes to a memory mapper in order to change a bank of CHR graphics or PRG code. Memory mappers get switched by having the NES program write to some address in the ROM address space [$8000-$FFFF]; however, this address area is normally WRITE ONLY, so the data on the data lines of the cartridge connector comes into conflict with what the CPU is trying to do. I’ll give the CNROM board as an example. Mapper 3 games such as Cybernoid, Adventure Island, etc, use the CNROM board to effect character bank switching. To switch the CHR banks, you simply have to write the bank value to some address between $8000-$FFFF. However, since you can’t actually write a value into the address area, the CNROM switcher just takes whatever value is on the data bus at the address specified. And since this is a game, it usually is a random value. That is not what we want. To get around this, many games have included in the game program a table of known data value