I doubt anyone remembers me, but hello again.
I built a copynes from scratch a few years ago for fun - and it worked! I love the NES and know/knew quite a bit about it's internal workings. I used to know the copynes inside and out (I studied it to build my own) and remember basically how it does what it does.
Well, that is more that enough unnecessary background.. I am exploring an idea and am hoping for any feedback that might be offered before I go much beyond the idea stage. Not long after my copynes experience I bought and modded an xbox1. They are great as part of a media center and game system - there are emulators for almost anything, and of course for the NES. I want to see if copynes can be used to make using a NES controller on the xbox emulator easier. The idea is something like:
Basic add on (glue) hardware that interfaces to the copynes I/O port (parallel) and a xbox1 controller board (lots of broken xbox controllers out there). This would require additional code for the copynes system. It could be loaded like a cart dump code block, or (probably way better)could be added to the copynes eeprom.
There are tons of tutorials on how to gut your NES controller and wire the buttons to the xbox controller, but I wanted to be able to use any NES controller and not have to destroy them. I felt this way I wouldn't have to destroy anything.
Feedback welcomed.
Xbox has four ports on the front that are electrically identical to USB ports.
RetroZone sells an NES to USB HID adapter with proper jacks and plugs. With this, your Xbox-based emulator just needs to have a USB HID driver.
A more interesting way to use CopyNES + PowerPak Lite + Xbox would be to have a game that needs two monitors: one connected to the NES and one to the Xbox.
Well I guess it IS possible since all in all that p-port is connected to a 6522. But I dont really think its worth it. You'd need to upload the code to the copynes then switch the cable. Also I wouldnt be surprised if this method caused a tiny bit of lag.
edit: tepples beat me to it. And had some other good advice.
That adapter won't work with xbox unless I run linux based emulators on an xbox-linux system. Xbox emulators are compiled with the microsoft XDK and will only recognize hardware made for the xbox.
(Though the xbox does use USB, it doesn't follow proper USB protocol and I don't know how difficult it would be to alter the mentioned adapter to work with the xbox)
I don't see lag being an issue - I'm sure even the lowly NES has enough power to read in and spit out data for 8 logic states quickly enough.
I should add - I do have he ability to flash my copynes eeprom.
The thing is the nes has to read a serial port. Which takes a little bit extra time. After this is has to put them on the 6522 output. Then the xbox controller must read them. Then you have to redo it all again. I'm not saying it'll be alot of lag. But theres gonna be lag (I didnt say it was gonna be noticable perse)
The simplest method would be to connect the NES controller's 8 buttons to an Xbox controller's buttons. This could be done by connecting directly inside the NES controller. More cleanly, the NES controller's normal serial output could be converted to parallel by a microntroller (e.g. PIC) that constantly polls it and outputs the 8 individual buttons to the Xbox controller. Discrete logic could be used as well; you'd need a clock and a shift register. Since it would be constantly polling the NES controller thousands of times a second, this wouldn't introduce any significant lag as compared to using an Xbox controller directly.
blargg wrote:
The simplest method would be to connect the NES controller's 8 buttons to an Xbox controller's buttons.
Yes, destroying my NES controler and commiting that one controller to xbox only use, and not allowig for other controllers to be used.
Quote:
More cleanly, the NES controller's normal serial output could be converted to parallel by a microntroller (e.g. PIC) that constantly polls it and outputs the 8 individual buttons to the Xbox controller. Discrete logic could be used as well; you'd need a clock and a shift register.
Yes, I've considered this - but I have a hardware device sitting here that can read the NES controller.
The NES basically reads in the state of each button one at a time, via the shift register, but I never noticed any lag when playing my NES. I don't see that as an issue. The copynes can read in the controller state and spit it out the parallel port - I don't see how this could introduce noticible lag if this is all the NES has to do. I should even be able to add macro functionality for fun.
Movax wrote:
That adapter won't work with xbox unless I run linux based emulators on an xbox-linux system.
Then run linux based emulators on an xbox-linux system. Or figure out how to add drivers for custom USB devices to the XDK; it can't be much harder than interfacing an NES to the XDK.
Intersting. But a kernel hacker I am not. And, though I like linux (am using it now) The xbox native emulators are far and away better than dealing with linux emulators. My idea would simply be logic to connect the controller output to an xbox controller board.
edit:Well.. thanks much for the alternative ideas and suggestions. I think I might give this a try - besides possible lag, I think it should work. It may not be the most elegant, but it should be fun. Hopefully I do try it, rather than only get to the idea stage.
If you intend to program a copynes to convert to xbox controls why can't you just do the same thing with a MCU, it would certainly be a lot more practical and not as difficult.
MCU?
I could use a PIC with a USB interface, as was sort of mentioned, but I don't know if I want to learn xbox USB (I don't know any USB protocol to begin with). I do know 6502 assembly and some basic electronics.
Then don't learn, wire to to your xbox controller board. I know from experience it can work well.
I see, you're going to use you NES as the microcontroller in my example, reading the NES controller normally and outputting the individual buttons in parallel, wired to the button inputs on an Xbox controller. This won't introduce any meaningful lag. I use a similar setup for hooking a NES/SNES controller to my PC; the NES/SNES polls the controller constantly and sends a byte over RS-232 when any button state changes. The latency is on the order of 0.1 msec.