I just saw the "ROB the Robot Programming?" topic, and the short discussion on the NTF2 System Cartridge. Now's a good time to post the research I made about this cartridge recently. (Although I'm not sure whether this thread belongs in the NESdev forum or the NES Hardware and Flash Equipment forum; feel free to move it if necessary)
As noted in this post, the NES Test Station puts a register at $1000, which would normally be a mirror of WRAM $0000 in a regular Famicom or NES.
From examining the NTF2 System Cartridge ROM in a debugger, I have found that the register reports the following data:
For now, I'm calling this register "NTF2STATUS".
During the AC Adapter test, NTF2STATUS must report the exact value 0xFE; any other value is considered a fail. Similarly, the Audio/Video Cable Test requires the value 0xFD. In both cases, all 3 DIP switches are set to OFF, and the dial sets the selected test bit low and the other 2 test select bits high. The RF Switch Test does not read NTF2STATUS at all after it has been selected.
The Accessories Test is selected when all 3 test select bits are 1; it does not bother checking bit 3 (0x08) at all. But assuming that bit 3 is indeed for selecting the Accessories Test, that would leave bit 4 (0x10) for indicating the pass/fail state of the AC Adapter and Audio/Video Cable tests. This is uncertain, though.
In Game-Tech.us's NES Test Station videos, the BIOS cartridge is a 60-pin Famicom cartridge, but bootgod's database reports that a 72-pin NES cartridge version exists as well. You'll need to disassemble your NES Test Station to figure out which type of cartridge you need.
I would like to find out the following things about the NES Test Station and see it posted to the NesDev wiki:
Also, I have experienced a write to the register: When starting the Power Pad Test, or when unplugging the Power Pad while the test is running, it will actually write the value 0xFE to $1000. This happened at $E0E9 in the ROM. Is there an NTF2CTRL register in addition to NTF2STATUS?
As noted in this post, the NES Test Station puts a register at $1000, which would normally be a mirror of WRAM $0000 in a regular Famicom or NES.
From examining the NTF2 System Cartridge ROM in a debugger, I have found that the register reports the following data:
- 0 (0x01): AC Adapter Test (active low)
- 1 (0x02): Audio/Video Cable Test (active low)
- 2 (0x04): RF Switch Test (active low)
- 3 (0x08): Unknown (probably low for the Accessories Test and high for other tests?)
- 4 (0x10): Unknown (probably low for fail and high for pass during the AC Adapter and Audio/Video Cable Tests)
- 5 (0x20): DIP Switch 1. OFF is 1, and ON is 0. The Audio/Video Cable Test will examine the DIP Switches when powering up (not when resetting)
- 6 (0x40): DIP Switch 2
- 7 (0x80): DIP Switch 3
For now, I'm calling this register "NTF2STATUS".
During the AC Adapter test, NTF2STATUS must report the exact value 0xFE; any other value is considered a fail. Similarly, the Audio/Video Cable Test requires the value 0xFD. In both cases, all 3 DIP switches are set to OFF, and the dial sets the selected test bit low and the other 2 test select bits high. The RF Switch Test does not read NTF2STATUS at all after it has been selected.
The Accessories Test is selected when all 3 test select bits are 1; it does not bother checking bit 3 (0x08) at all. But assuming that bit 3 is indeed for selecting the Accessories Test, that would leave bit 4 (0x10) for indicating the pass/fail state of the AC Adapter and Audio/Video Cable tests. This is uncertain, though.
In Game-Tech.us's NES Test Station videos, the BIOS cartridge is a 60-pin Famicom cartridge, but bootgod's database reports that a 72-pin NES cartridge version exists as well. You'll need to disassemble your NES Test Station to figure out which type of cartridge you need.
I would like to find out the following things about the NES Test Station and see it posted to the NesDev wiki:
- Do bits 3 (0x08) and 4 (0x10) actually report the data that I predict they might above? Bit 3 might be low for the Accessories Test and high for all of the cable tests, and bit 4 might be the Pass/Fail state of the AC Adapter and Audio/Video Cable tests, with 1 indicating pass and 0 indicating fail.
- Where else is NTF2STATUS mirrored? $0800-$0FFF, $1001-$17FF, and/or $1800-$1FFF? If NTF2STATUS is not at these regions, then are they mirrors of WRAM or open bus?
- What value is bit 4 (0x10) during the RF Switch Test? This test doesn't give a Pass/Fail result like the others, so this bit is currently unspecified during this test.
- What value is bit 4 (0x10) during the Accessories Test? Always 1? Always 0? More advanced behavior?
- What does NTF2STATUS report during the Game Pak Test? Does it turn into a mirror of $0000 then? You'll need to insert your custom code cartridge into the Game Pak slot on the front of the machine instead of the internal slot for this one.
- Do DIP switches even exist inside the NES Test Station, or are those 3 bits hardwired to always be 1?
Also, I have experienced a write to the register: When starting the Power Pad Test, or when unplugging the Power Pad while the test is running, it will actually write the value 0xFE to $1000. This happened at $E0E9 in the ROM. Is there an NTF2CTRL register in addition to NTF2STATUS?