Friday, July 30, 2010

Arduino->NES Transfer Tool + FaMI - Family MIDI


I've been working at a serial connection to the NES for a few months now. At first I came up with a board to try and establish a serial line to the NES through the controller port - I only made 2. They worked - but I figured that it was possible to do it without the board if I did some tricky stuff with the ATMega interrupts on the Arduino. After a few days of debugging (and cycle counting) it’s working flawlessly. The advantage of this over a software serial based approach is that the Arduino acts as a buffer that’ll hold incoming messages (up to 128 bytes) until the NES is ready to get the next one. This means that the NES is free to do other things and doesn’t need to spend time polling the controller port! The latency is extremely low - about as fast as the NES could handle - faster than the MIDI standard. The serial code is compact and easily relocatable - it works great as a replacement to any controller code. Working on a new name for this since it really just acts like a bridge between your PC and the NES. Both the ROMs and the Arduino stuff will be open source so if you have the hardware you're ready to go!

Arduino->NES Transfer Tool features:

PRG Upload (2K max ($6000-$7FFF) - great for quickly debugging small programs)
CHR-RAM Uploader - CHR banks / nametable data
Full PPU control (palette / scroll registers / mirroring etc..)
Full sound register control

Demo video of PRG/PPU uploading. First the transfer tool is loaded from the powerpak - then glitchNES is uploaded over serial- then from there a couple of new CHR banks are loaded while glitchNES is running.


Example software: (I'll upload videos as I record them)
PRG Upload for fast development cycle on real hardware
Bridge PC data through serial - (ex. network data sent over serial to Twitter client)
Analog sensor input for alternate controls
MIDI CC control of glitchNES
Atari punk type console using the APU
Hardware NSF player

What you need:

An NES
Arduino Duemilanove or equivalent (testing RBBB this weekend - should be no problems)
Desoldered NES controller cord (I have about 50 of these that I intended to use for the boards)
Powerpak or other devcart (All software is currently using NROM (PRG-ROM + CHR-RAM) to make things simpler)
Optional: MIDI-in circuit for Arduino for FaMI

- That’s it! No internal modification / extra components needed. It took a while to get the Arduino to handle everything but it was worth it to eliminate any external components. Just hook up the wires to the Arduino / run the software and pop that badboy into port 2.




And... presenting...


FaMI (Family MIDI) - Open source NES MIDI software + live visualization by NO CARRIER


Right now channels 1-4 are working with no issues. There aren't any effects yet - but it’s completely stable / performance worthy in the state that it’s in. I'll be working on pitch bends / cc control in the next couple of weeks - but it's open source so hopefully people will develop beyond that! The samples work but they are fixed- I’m working on a mapper for powerpak right now that may allow sample uploading.

What’s great about using this Arduino setup is that you can use VBlanks MIDI->serial processing app so you don’t even need to build a MIDI circuit - just use the USB cable!

I’ll be releasing the source code for the Arduino/ROMs within the next week after I clean up the code/comment. I'm hoping to have a suite of audio/VJ tools that are ready to run so I’m looking for inspiration as to what else to use this stuff for! So please let me know if you have any ideas!

Thanks to
+ NO CARRIER for FaMI name / logo / layout
+ bucky for the encouragement / pitch tables
+ Animal Style / enso / entire Philly crew for being awesome dudes.
+ neilbaldwin and blargg for inspiration to finish this NES stuff

Oh yeah I've got a bunch of desoldered controller cables (40+) - if you're going to pulsewave this weekend and have the hardware to try this out, let me know! I'll bring you one so you don't have to destroy a controller - free of charge - just help me test this stuff! smile

17 comments:

  1. This is great. Hopefully more people catch on to your blog or at least comment. All my gear just went into temporary storage since moving and it probably won't make it out until February but I definitely need to pick up an Arduino in the future. Being able sent data/commands over the controller port is ideal.

    ReplyDelete
  2. I love this, but where is the download for the PRG upload tool

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Thanks for the valuable feedback. I think that strategy is sound and can be easily replicable.Great posts. I love this article. We are currently making quality quick chargers to supercharge your entire devices Hoverboard charger, Self balancing scooter charger, Uwheels charger, Electric scooter charger, Iohawk charger, Electric bike charger and more.

    ReplyDelete
  5. Genuinely, I am propelled from this post. The person who make this post is truly unprecedented. Thankful for offering this to us. I found this instructive and interesting blog so I think its to a great degree accommodating and capable. I might need to thank you for the tries you have made in forming this article.
    αλυσοπρίονα stihl husqvarna

    ReplyDelete
  6. Great article. I think these tool family is not actual today, because we have much better tools today.
    online data room providers

    ReplyDelete
  7. Approve, and promote increasingly in the event that you wish for overhaul alarms from this site around then you need to subscribe for it, it will be a reasonable for you Jackson. Have a dazzling day!
    Energy efficiency heater

    ReplyDelete
  8. Really inspirational to hear someone pursuing their dreams and becoming successful instead of following the traditional path. I have read your article about real estate. I think it's good and impressed to know your service. Thanks for share this Information.

    Pfaff Sewing Machine

    ReplyDelete
  9. For most up-to-date news you have to pay a visit internet and on world-wide-web I found this web site as a best website for most up-to-date updates.

    ---------------------
    Saorview installer

    ReplyDelete
  10. If any one should be a productive blogger, after that he/she ought to peruse this section, for the reason that it consolidates al} procedures related to that.Virtual furniture

    ReplyDelete
  11. Is but is mixed with Replica watches UK other metals, also equally good exercise can be a, “he said.However, sometimes even Replica handbags old-fashioned office environment, it is, for example, can be convenient touch if there is a sporty handbag replica suit and pair a little contrast tailor messages. Replica Watches , perhaps you can suggest that it is the active soul is a little dangerous, Rolex Daytona in the face of great help to convey a bold personality, Mr. Melnitsky said.

    ReplyDelete
  12. Mind boggling focuses. Sound contentions. Keep up the considerable work. Portuguese property

    ReplyDelete
  13. Thankful to you an extraordinary arrangement for giving individuals a to a great degree bewildering believability to examine fundamental overviews from this site.
    Gay dating

    ReplyDelete
  14. Your own one of a kind duty to getting the message all through came to be somewhat capable and have reliably empowered workers quite recently like me to land at their coveted objectives.
    Free algarve Property Guide

    ReplyDelete