[Trapper] is an 80’s kid, and back in the day the Nintendo Entertainment System was his jam. One fateful night, he turned over his favorite gray box, removed a small plastic guard, and revealed the mythical expansion port. What was it for? What would Nintendo do with it?
The expansion port on the NES wasn’t really used for anything, at least in the US market. Even in the homebrew scene, there’s only one stalled project that allows the NES to connect to external devices. To fulfill [Trap]’s childhood dream, he would have to build something for the NES expansion port. Twitter seemed like a good application.
The first step towards creating an NES Expansion Port Twitter thing was to probe the depths of this connector. The entire data bus for the CPU is there, along with some cartridge pass-through pins and a single address line. The design of the system uses a microcontroller and a small bit of shared SRAM with the NES. This SRAM shares messages between the microcontroller and NES, telling the uC to Tweet something, or telling the NES to put something on the screen.
Only a single address pin – A15 – is available on the expansion port, but [Trapper] needed to read and write to a certain section of memory starting at $6000. This meant Addresses A13 and A14 needed to be accessed as well. Fortunately, these pins are available on the cartridge slot, and there are a number of cartridge pass-through pins on the expansion connector. Making a bridge between a few pins of an unused cartridge solved this problem.
From there, it’s just a series of message passing between a microcontroller and the NES. With the help of [Trap]’s brother [Jered] and a Twitter relay app running on a server, this NES can actually Tweet. You can see a video of that below.
What an amazing project. I am so inspired by the creative things people are doing with older technology
Thanks for the kind words! I too was so inspired from HackADay that it led to this :)
The expansion port is a bit weird with only having A15 which doesn’t let you have an empty chunk of address space as $8000 is PRG ROM and $0000 is RAM. I guess Nintendo were intending to use some of the 8 EXP lines from a dedicated cartridge for addressing the expansion hardware.
Hmm. Thinking about it. You probably could avoid modding the cartridge if you used the 3 out lines to signal the expansion hardware then get the NES to do read/writes to unassigned address space. The expansion hardware would then just alter the CPU data lines and could appear as 4 registers (2 output pins + 1 strobe output pin) to communicate with the NES.
It isn’t really worth doing all this though since you’re going to have to get a custom ROM to drive it all and if you’re doing that then modding the cartridge isn’t much more work.
Neat project. Next step would be to modify a game to tweet the high scores :)
Ah. Here we go. Somebody has already worked it out. http://forums.nesdev.com/viewtopic.php?t=8941
Thanks for following up. I had read this before I started, but I wanted to keep both controller ports open for a possible two player local game. It might be possible to use this technique and still use both controller ports but thinking that through made my head hurt :)
Wow! I started learning hardware from Hack-A-Day and years later something I did got published! I can’t tell you what this means to me – thanks everyone for reading it!
in case anyone is still wondering what that botton port was intended for…
it was intended to connect to a dial-up NES-modem,
but the only use they could come up with was GAMBLING for only ONE specific state lottery…
needless to say it was canned because they thought kids might get ahold of the account and gamble. seriously, someone didnt think that one through enough.
it would have been amazing to be able to play two or four player mario through the telephone line!
PS: maybe also intended to connect the NES floppy disk system (FDS), but im not sure if all the required connections are brought out to that connector, the FDS was only intended for the famicom (Japan-NES) (that i know of?)