Hello everyone. I'm completely new to NES development, as in may not even. I am thinking of making a game for the NES as a senior project for school, and thought it would be unique and interesting to make a small MMO-type RPG-style game, where players can interact within a central hub and possibly more. Of course, doing this (if even possible) would require some connecting medium between the NES and something Internet capable (I was thinking a smartphone). Which brings me to my question, is there anything like that that would allow me to connect the NES to a phone or computer so I could send and receive small amounts of data?
I think the expansion port on the bottom could be used for this, although you'd have to cut through the plastic to get to it... Can the NES send information through the controller ports, or can it only receive information?
You would probably need some intermediary hardware to handle the modern communication protocols, because I don't think the NES CPU could handle that AND play a game on the side.
I thought that was pretty much a given.
Espozo wrote:
I think the expansion port on the bottom could be used for this, although you'd have to cut through the plastic to get to it... Can the NES send information through the controller ports, or can it only receive information?
It can send information through the strobe, but communicating through the controller port is relatively limited bandwidth anyway.
The best way to do it would probably be through cartridge hardware, not through the expansion port. You'd need something special in the cartridge anyway to listen to the EXP pins, so you might as well just cut out the middle-man and just plug something right into the cart.
Quote:
The best way to do it would probably be through cartridge hardware, not through the expansion port. You'd need something special in the cartridge anyway to listen to the EXP pins, so you might as well just cut out the middle-man and just plug something right into the cart.
Is that something that exists that I can buy, or would I have to make it special? My hardware skills are really limited.
The Everdrive N8 with USB attachment, or the USB CopyNES modification both have ways to communicate with another computer. You could use either of these to transfer information over a USB connection to some application running on your PC, like some kinda netplay server app.
The Everdrive is a flash cart, relatively easy to program. You might need to write a custom mapper for it. This is probably the easiest way.
The CopyNES is an NES hardware modification; requires carefully desoldering the CPU. (Might be built into the HD NES mod kevtris made, but that involves desoldering both the CPU and PPU.)
Oh, cool! That's great to hear. But dang, those are pricey. I don't know if I want to shell out that kind of cash for a school project. Thank you though, rainwarrior.
~$100 seems a relatively small price to pay for something you're probably going to have to spend at least 50 hours programming and getting working, but you may have a different view of what your time is worth.
Well, college students are known for their lack of money. But thank you anyway, though. I'll look into more. Even if I decide to do something different, I want to keep this idea on the shelf and maybe eventually do it.
What can be done cheaply right now, is to use a controller port to USB adapter. That shows up on the PC as a COM port, then you would use a PC program that simply redirects data I/O to a specific IP address over TCP (I found a free program that does this, I'd have to look it up again, if you're interested let me know and I will. There are a bunch of commercial ones too.).
The big problem with the easy to build adapters, is that the communication is asynchronous, and the NES doesn't have a UART, so the UART has to be done in software. I've written code that does that, and so have several other people. Problem with the software UART is that the NES will miss any incoming data unless it's actively polling the port as it comes in. This can be worked around using time-outs, CRC error-detecting, and re-transmit requests, but it's going to be terribly slow. It's probably fine for turn-based games though. I currently use this method with XMODEM protocol to program my Cheapocabra/GTROM NES flash carts.
Currently I'm working on a synchronous controller port to USB adapter with an MCU, literally just wired up the prototype today, about to get started on the code, finally. With this, the MCU will buffer incoming data, the NES can read the port once to know if data is ready, and when it is ready, it will be much faster to transfer because it will be synchronous, like the controller port is supposed to be. I'm hoping to get about 30kB/sec into the NES with this. For comparison, the async cable gets about 3kB/sec at 19200 baud, and it also completely ties up the NES CPU so it can't do anything else while receiving. Have to disable NMI and everything.
I can get one of the async cables to you cheaply, if you're interested (like $10 is reasonable). It's going to be a lot of work to get a game working like this, but if writing this type of communications software is what you're interested in, it's possible. I'm not sure when the synchronous cable would be ready, hopefully not too long. If things work out well, it might not even cost much more than the cheaper async cable, too.
Did everyone forget the
ENIO project ?
Zonomi wrote:
Did everyone forget the
ENIO project ?
I was gonna mention that but forgot, sounds like cost is a concern in this case. I'm not sure if the ENIO CPU boards are for sale, at least they're not listed with a price.
The closest thing to this was a SNES that streamed twitch chat through the joystick port.
I believe ENIO is more or less the same as using something that connects to the controller plug (i.e. the same low bandwidth), just connected through the bottom port instead of a controller plug, unless you want to make a custom cartridge to use the EXP pins, though there might be some ethernet stuff already ready to go with an ENIO, I think that was one of the project goals.
Yeah, the ENIO CPU board does work with any cartridge by using $4016/$4017. The 8-bit parallel mode requires the special cartridge. My old
8T-ROM board was wired for it, not sure about the PowerPak and Everdrive. Was 3 expansion pins I believe, one chip enable and 2 address lines.
While it hasn't been publicly released, the retroUSB scoreboard uses a network connection to upload highscores to Nintendoage. It will be included with the AVS console, and if I remember correctly it was going to be a part of the copyNES 2, but I have no idea when/if that will ever be finished. I think Brian is concentrating on a different project right now.
Add ENC28J60 chip (Stand-Alone Ethernet Controller with SPI™ Interface) + RJ45 ethernet socket. This chip will be entirelly responsivle for network communication. The communication between CPU and this chip is via SPI. SPI can be implemented in CPLD (XC9572 is the best). ENC28J60 is capable of using interrupts to notify about incoming packets so no polling is needed.
krzysiobal wrote:
Add ENC28J60 chip (Stand-Alone Ethernet Controller with SPI™ Interface) + RJ45 ethernet socket. This chip will be entirelly responsivle for network communication. The communication between CPU and this chip is via SPI. SPI can be implemented in CPLD (XC9572 is the best). ENC28J60 is capable of using interrupts to notify about incoming packets so no polling is needed.
Better idea: use ENC624J600 or ENC424J600 instead—it natively supports a parallel interface rather than needing a separate chip for a parallel-to-SPI translator.
OP, why not target a different console then, one that would have easier existing hw? Both the Dreamcast and Gamecube have ethernet adapters and decent homebrew support. The (original, not i or 3d, as they don't have as good homebrew support) DS has built-in wireless. The gameboys all have a link cable slot, and I'm sure there's cheap adapters for gb->serial. Wii has wireless and an ethernet adapter.
calima wrote:
OP, why not target a different console then, one that would have easier existing hw? Both the Dreamcast and Gamecube have ethernet adapters and decent homebrew support.
But where's the fun in connecting to the internet a console that was designed to be connected to the internet?

Might just as well code the game for the PC and not bother with the complications of console development.
I don't get when someone asks "how do I do X with console Y" and someone else replies "how about using console Z which would do it better?"... 99% of the time these questions are asked, it's precisely because X isn't common or straightforward in console Y, otherwise there might not even be any reason for asking. And I believe that for most people, consoles are not interchangeable, and the point is not to do Y on whatever platform, but only on the console(s) they have some sort of connection with.
calima wrote:
OP, why not target a different console then, one that would have easier existing hw? Both the Dreamcast and Gamecube have ethernet adapters and decent homebrew support.
Very few Dreamcast and GameCube consoles actually have an Ethernet adapter installed, as far as I can tell. On the secondhand market, they've become collector's items. Or have replica Ethernet adapters been produced?
Quote:
The (original, not i or 3d, as they don't have as good homebrew support) DS has built-in wireless.
DS games cannot use WPA encryption, only the long-broken WEP encryption. Only DSi mode and 3DS mode games can use WPA. Most DS users upgraded their home routers from WEP to WPA when GameSpy (the matchmaking service underlying Nintendo Wi-Fi Connection) closed its doors.
Quote:
And I believe that for most people, consoles are not interchangeable, and the point is not to do Y on whatever platform, but only on the console(s) they have some sort of connection with.
We'd need OP to chime in on that. I got the feel doing the project on a console, any console, would be enough to impress the prof, and cost constraints ruled out the nes. That is, I think the point was to do a networked console game, not specifically to connect a NES to the 'net.
Quote:
Very few Dreamcast and GameCube consoles actually have an Ethernet adapter installed, as far as I can tell. On the secondhand market, they've become collector's items. Or have replica Ethernet adapters been produced?
I haven't looked in years, if they're rare now, then that rules those two out for OP. My cube has both a modem and an ethernet adapter, and I didn't pay much for them.
Quote:
DS games cannot use WPA encryption, only the long-broken WEP encryption. Only DSi mode and 3DS mode games can use WPA. Most DS users upgraded their home routers from WEP to WPA when GameSpy (the matchmaking service underlying Nintendo Wi-Fi Connection) closed its doors.
The scenario had a smartphone, which can create a local AP with tiny range. If somebody in the same room is trying to hack your smartphone wifi, you can probably tell by looking at their face

I don't have a wifi network at home, when I played my DS online I first created a local AP on my laptop, with MAC filtering set to only allow the DS. AFAIK homebrew support for DSi is still bad, and for 3ds does not exist.