Page 1 of 1

Piggybacking an NOAC console?

Posted: Fri Jan 31, 2014 1:47 am
by The_YongGrand
I know that those NOAC (Nintendo on a chip) consoles are still available for cheap ($10~30) in a local supermarket, especially with the cartridge slots. Plus, they offer a few million-in-one games cart too with all the classic games inside.

However, that is not why I'm buying that console. Having successfully experimented with a clone PPU with a microcontroller, I believe I could poke the address and data lines in that console to a microcontroller to (directly) access the PPU and the audio unit within the customized 6502 inside. One guy named Jarek Lupinski had ripped out an old NES CPU, connect it to a Arduino and play chiptunes. He accessed the APU address lines, manipulated with it and got the sounds out of it.

The hardest thing is to get some sort of a prototyping card with 60-pin (here in Malaysia it's all Famicom clone, so no 72-pin here), route the A0-13 and the D0-7 and the remaining lines to a microcontroller. I tried finding a prototyping card here, but all I found is the ISA ones which doesn't fit on it. I'll make the board myself if all fails (hope not).

The main question is, does the NOAC contains a Video RAM and the latch inside? If there is a Video RAM inside (for sprite storage) I won't have to get myself a latch and a 62256 SRAM, and just directly interface a microcontroller to it without anything else. The microcontroller is mostly big enough (I have a few 32k and 64k flash ones) to store a lot of sprite and OAM data inside.

I've searched around the net for those generic NOAC datasheet, and I don't find much info about it. I'll keep searching in the meantime. :)

Re: Piggybacking an NOAC console?

Posted: Fri Jan 31, 2014 3:27 am
by lidnariq
The_YongGrand wrote:One guy named Jarek Lupinski had ripped out an old NES CPU, connect it to a Arduino and play chiptunes. He accessed the APU address lines, manipulated with it and got the sounds out of it.
How the heck does that work? There's absolutely no way to drive the CPU's address bus in reverse and use it to select the APU SFRs. No, seriously, the 2A03 has only one direction the data can flow from the address bus: out. It's the electrical equivalent of spitting in a faucet and having it turn your neighbor's shower on. The only thing he could possibly be doing is live-injecting 6502 instructions just-in-time as the 2A03 executes, except the example code doesn't do that.
The main question is, does the NOAC contains a Video RAM and the latch inside?
Many (but not all?) NOACs not only contain the latch, but completely de-multiplex the PPU's address/data bus, so there are simply 14 address lines and 8 data lines.
As far as RAM goes, they probably only provide the default NES 2KiB for nametables.
For one of the ones that contain baked-in games, they probably contain one or two epoxy blobs for the PRG and CHR, but whether the CHR is RAM or ROM will vary.
Given the architecture of most NOACs, I don't see any reason to believe that you'll reliably be able to back-drive the CPU's address bus to drive the NOAC's PPU.

Re: Piggybacking an NOAC console?

Posted: Fri Jan 31, 2014 3:35 am
by Jeroen
It worked with a circuit that I believe Kevtris designed. Basically it generates nops unless you feed it something else. This way you can send the Cpu instructions to turn on/off the relevant registers etc.

It indeed does not directly feed the adress lines.

Re: Piggybacking an NOAC console?

Posted: Fri Jan 31, 2014 5:43 am
by The_YongGrand
lidnariq wrote:How the heck does that work? There's absolutely no way to drive the CPU's address bus in reverse and use it to select the APU SFRs. No, seriously, the 2A03 has only one direction the data can flow from the address bus: out. It's the electrical equivalent of spitting in a faucet and having it turn your neighbor's shower on. The only thing he could possibly be doing is live-injecting 6502 instructions just-in-time as the 2A03 executes, except the example code doesn't do that.
Thanks for the opinions. Really appreciate it. I re-read the schematics in that link - and you are right. It's not directly accessing the CPU's address bus, but it's to use the 6502's instructions and such to access that particular unit. I have to look at his schematics again on how he could do that.