Sunday, August 1, 2010
PC->NES Speed improvement!
So I've been wrestling with the timing of the transfer tool. The Arduino end is a huge unknown since I can't get access to the underlying assembly. The good news is I figured out what was blowing the timing. I had 2 bytes being sent each time - pretty much like a PISO (parallel in serial out) shift register. The way I was doing it originally was
PORTC = (byteToSend1 >> bitIndex);
Which was fine, but in the worst case it would have to shift the value 15 times.
Instead I made the change persistant:
byteToSend1 = (byteToSend1 >> 1);
PORTC = (byteToSend1);
Which ensures each bit only needs to be shifted once!