Offline
Minneapolis

That's very cool, but something is missing. Mainly, the download. *blatant hint hint* smile

By the way, this runs in NROM with CHR RAM, yes? If so, I think it might work with the Munchausen Cart, which is great because it means the two projects can be used together.

Anyhoo, take your time with the release of course, it's looking very nice. As for full access to the PPU/APU, what RAM bank is it poking these into? Is the user limited to the 2kb WRAM onboard the NES, or can the 8kb or whatever on the cartridge be used too?

Offline

As I understand it, this is a device which connects to the NES controller port, and doesn't require anything special on the NES side; it's all in software. So anything can make full use of it, be it a program running on PowerPak, a cart with EPROM in it, etc. It's just a software protocol you use to communicate with it.

And being synchronous as I understand it, it doesn't require any cycle-timed code, and can run quite fast. If the hardware can keep up, the NES can read bits from the controller port at a maximum rate of 447 kilobits per second. More realistically, if it's actually saving the data somewhere, around 150 kilobits per second. And if I understand it right, the protocol makes it trivial software-wise, just a few instructions to read a bit.

Last edited by blargg (Aug 2, 2010 12:10 pm)

Offline
Brooklyn, NY

Blargg - you're exactly right.

I do save the incoming data to two registers (command & value). That explains the ~100kbps rate in the picture - I had to slow it down a bit for the arduino. The reason I chose the arduino was that most people already have it and it seemed to be just fast enough to pull this off. It hasn't been all that pleasant though - there are a bunch of background timers that trigger an overflow interrupt routine (that I can't seem to disable)  - if it happens within the sending routine it causes a random delay. The best case I've seen from a response time from a LDA $4017 is ~2 usec but the worst case has always been <10us - which makes the previous stuff okay. I may create a board using a PIC that would give me greater control and would let me approach those ~400kbps speeds- but I wanted to make this stuff as accessible to as many people as possible (which is why I chose the simple opcode routine).

I'm super impressed that you got 115kbps working with software serial - it was clever to use the CTS line - I hadn't thought of that on my initial approach. I'm a big fan of your other work (the DMC saw stuff is amazing) - if you ever want to talk code I PM'd you my email.

Last edited by Batsly Adams (Aug 2, 2010 2:16 pm)

Offline

Yeah, your approach makes sense: leverage what many people have already. And note that the ~450 kbps rate I gave was the NES just reading $4017 constantly and ignoring the value. smile You can't do anything useful with the data, but it does give an upper bound to anything possible... errr, unless you did three-bit parallel data transfer that is, using D0, D3, and D4 on the controller port. Wow, that'd give you about 1.5 Mbps. We're talking broadband, man! Upper limit, of course. I'm not at all familiar with the Arduino, and I think it may only have a 57.6 kbps host rate anyway.

Offline
killadelphia

B@7$LY B3 M4K1N $0M3:

$111111111111111K
$H17
Y0

$$$$$$$$$$$$$$$$$$$BLING$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$MUTHA$$$$$$$$$$FUCKAZ$$$$$$$$$$$$

Offline
Brooklyn, NY
blargg wrote:

We're talking broadband, man!

I like the way you think!

animalstyle wrote:

$111111111111111K
$H17
Y0


Bought a KORG nanokontroller today - modified the great logoNES to take CC messages!


Things are coming together nicely.

Last edited by Batsly Adams (Aug 3, 2010 5:31 am)

Offline
New York City

Some more crazy shit. My head is asploding.
I need to test this.
What do you think about my MIDI instruments idea, batsley?

Offline
Philly/NY
Batsly Adams wrote:

Bought a KORG nanokontroller today - modified the great logoNES to take CC messages!


Things are coming together nicely.

Fantastic.

Offline
Minneapolis

Very nice stuff! I'll have to look into building one of these cables when I get the money. Actually, more like I'll have to buy an Arduino and wait for the code to come out.

Oh, and by the way, I'm extremely jealous of your WICKED AWESOME SCOPE! That thing is so coooool!

Offline
Brooklyn, NY
akira^8GB wrote:

What do you think about my MIDI instruments idea, batsley?

I totally dig it - I'm trying to get all of the basic MIDI features to be perfect (velocity is working now - next is a smooth pitch bend!). I'll probably release it once those are working even though the sounds might be kind of boring. I'd love feedback from musicians as to what kind of stuff I can add for the next version - do you have a powerpak/devcart by the way (akira)?

Last edited by Batsly Adams (Aug 3, 2010 6:01 pm)

Offline
New York City

Unfortunately, Batsly, I do not have such wondrous device. sad But maybe I can burn an EPROM into the Famicom donor carts I will get in Japan, muhuhehehehe.
Or maybe I will just not have anything D:

Last edited by akira^8GB (Aug 3, 2010 6:23 pm)

Offline
Ciudad de méxico, MX

an arduino duenamilove is really cheap. and it can be used on several proyects. a must for everybody!

Offline
Minneapolis

If I had an arduino I would volunteer to try this out, since I have plenty of teh devcarts! smile

Offline
Cambridge, UK

this looks like a really amazing tool. i look forward to experimenting with it. great job.

Offline
Sweeeeeeden

The Atmega168 has hardware support for SPI, which might or might not be abusable for faster Arduino->Controller port speeds.

Offline
Brooklyn, NY
mr.spastic wrote:

this looks like a really amazing tool. i look forward to experimenting with it. great job.

Thanks man! I'm really sorry I missed you at 8static, I really dig your music.

nitro2k01 wrote:

The Atmega168 has hardware support for SPI, which might or might not be abusable for faster Arduino->Controller port speeds.

Ah yeah I tried that on my initial approach! After fixing (speeding) up the arduino core source code I found that it was even faster to have the interrupts respond to the "clocks". The SPI stuff uses digitalWrite(n) as far as I can remember which is fine for most applications, but accessing the port directly makes a huge difference in speed. PM me if you're interested the gory details, I'll release my code soon and show you what I mean smile

I'm going to put up a couple of videos tonight of some other stuff I've done with the interface. Then more work on FaMI!

Last edited by Batsly Adams (Aug 16, 2010 10:28 pm)