The Raspberry Pi has a independent Master I2C device, and a independent Slave I2C device. It is interesting that a Raspberry Pi can talk with itself, due to the fact that both units are separate from each other.
Data transmissions are limited to 400,000Hz, which is very slow for multi megabyte entities to be transferred quickly. I'm trying to keep the transfer times below 5 seconds, that limits the data to about 128Kb per entity/character. Now I need to test with live subroutines.
I might end up using a 10 pin(8 Bit) parallel bus to speed up the transfers.
Poling the NES/SNES controllers takes up way to many CPU cycles, so I've decided to use interrupts for them, the ARM timer works pretty well for this, the BSC~I2C Master/Slave units both generate their own interrupts. This is really only an issue with the 2835 chip, the 2836 is a quad core, so one core can poll everything over and over again, without much of an issue of waisted CPU cycles.