blargg wrote:
With optimized code and assuming that open-bus bits of $4017 read back as clear (except bit 6), a byte can be received in 18 cycles, achieving 795 kbit/sec:
You have me there. When I built the NES232 I didn't know about using pins 6 & 7 to input data on the controller port. And while I'm sure you can work around issues with DPCM, I don't want to spend the time building workarounds into both the NES and MCU side of things. On the other hand, if I get close to the end of the project and find that 795 kbit/sec is sufficient, it would be worth going back to using the controller port for external I/O. It would certainly make the end result more attractive to folks who don't want to crack open their NES and take a soldering iron to it.
Memblers wrote:
A parallel port for the NES, that would really be nice to have. PIC24F and PIC32 both seem to have similar parallel ports, that can be used in "Addressable Parallel Slave Port Mode". Is PIC24F also 5V tolerant?
The PIC32 is a better choice; I may end up going with that instead. The digital only pins on the PIC24FJ64GB002 are 5v tolerant, but that doesn't encompass all pins used by the PMP/PSP port. Besides, it would be safer to make everything 3.3v coming out of the EXP Port 2 just in case you accidentally hooked something up to a 3.3v only pin.
Memblers wrote:
The way I'm saying it though would have the signals all being 5V at the connector, I guess I'm not sure what's in the circuit you have in the NES (5V-3V translation?).
The EXP Port 2 board does 3 things:
1. Performs high byte address decoding so you can have one peripheral use the whole $4700-$47FF range or have up to 256 peripheral addresses by using the lower address byte.
2. Provides a transparent buffer to the data bus so that the peripheral can't communicate out of turn.
3. Provides 5v->3.3v level shifting on both data and control lines.
The board is pretty simple. It consists of a 3.3v regulator, a 74x245 for a buffer then 74x30 & 74x04 chips for decoding the high address byte. I found that using HCT chips powered at 3.3v works well. LCX might be a better choice, but I only have HCT chips on hand at the moment.