Open bus occurs when nothing puts a 0 or 1 on a bit of the data bus during a read. Capacitance holds the old voltages in place for the CPU to use as the value. Reading nonexistent memory, for example, usually leaves the instruction's last byte on the bus, which on 6502 is the address's high byte.
But the PowerPak has been known to interfere with open bus before. Pull-up resistors for 3.3 V to 5 V conversion tend to remove old bits from the data bus. Mindscape games would fail to see presses because they expected open bus on unused bits of the controller port.
Here's what I expected:
Code: Select all
PPU readback result
00 FF 00 FF 00 FF 00 FF
Open bus result
40 40 20 20 20 3F 3F 3F
Controller bits
40 40 20 20 41 41 21 21
Code: Select all
PPU readback result
00 FF 00 FF 00 FF 3F 3F
Open bus result
40 40 00 00 00 00 00 3F
Controller bits
40 40 00 00 41 41 01 01
Code: Select all
PPU readback result
00 FF 00 FF 00 FF 00 FF
Open bus result
40 40 FF FF FF FF FF FF
Controller bits
40 40 00 00 41 41 00 01
Code: Select all
PPU readback result
00 FF 00 FF 00 FF FF FF
Open bus result
FF FF FF FF FF FF FF FF
Controller bits
E0 E0 E0 E0 E1 E0 E1 E1
This test ROM has a known defect. An improved test will be posted soon.