I'm trying to make a ROM that distinguishes the NES from the Famicom and lists which controllers are plugged into the system. I planned to do this using distinct open bus behavior, but the PowerPak and several emulators are disagreeing again.
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:
Here's what FCEUX gives me:
And Mednafen:
The PowerPak behaves as if all lines had pull-ups (I'm a big kid now):
What do you get on a modded donor board or INL-ROM?
This test ROM has a known defect. An improved test will be posted soon.
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:
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
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
Here's what FCEUX gives me:
Code:
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
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
And Mednafen:
Code:
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
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
The PowerPak behaves as if all lines had pull-ups (I'm a big kid now):
Code:
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
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
What do you get on a modded donor board or INL-ROM?
This test ROM has a known defect. An improved test will be posted soon.