Now I have heard about "bus conflicts" in certain mappers (in this case, CNROM aka mapper 3).
How exactly do they work?
Code:
$830C:A9 00 LDA #$00 A:00 X:00 Y:FF P:nvUbdIZc
$830E:2C A9 01 BIT $01A9 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8311:2C A9 02 BIT $02A9 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8314:2C A9 03 BIT $03A9 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8317:84 01 STY $0001 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8319:A8 TAY A:00 X:00 Y:FF P:nvUbdIZc
$831A:B9 23 83 LDA $8323,Y @ $8323 = #$DC A:00 X:00 Y:00 P:nvUbdIZc
$831D:99 23 83 STA $8323,Y @ $8323 = #$DC A:DC X:00 Y:00 P:NvUbdIzc
$8320:A4 01 LDY $0001 = #$FF A:DC X:00 Y:00 P:NvUbdIzc
$8322:60 RTS A:DC X:00 Y:FF P:NvUbdIzc
I think this game must be reliant on the problem because it writes odd values. In the end only the low 2 bits of the value written to the mapper matter (according to Disch's doc).$830E:2C A9 01 BIT $01A9 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8311:2C A9 02 BIT $02A9 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8314:2C A9 03 BIT $03A9 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8317:84 01 STY $0001 = #$00 A:00 X:00 Y:FF P:nvUbdIZc
$8319:A8 TAY A:00 X:00 Y:FF P:nvUbdIZc
$831A:B9 23 83 LDA $8323,Y @ $8323 = #$DC A:00 X:00 Y:00 P:nvUbdIZc
$831D:99 23 83 STA $8323,Y @ $8323 = #$DC A:DC X:00 Y:00 P:NvUbdIzc
$8320:A4 01 LDY $0001 = #$FF A:DC X:00 Y:00 P:NvUbdIzc
$8322:60 RTS A:DC X:00 Y:FF P:NvUbdIzc
Is it safe to just ignore the other bits?