Jump to content
IGNORED

Diode matrix ROM for Atari 2600


Recommended Posts

Making a ROM circuit out of diodes has long been a goal of mine, in order to better understand how memory works. Diode ROMS were often used before ROM chips existed or were too costly. You'll find a circuit similar to this inside an EPROM. I've just finished making a 64 byte diode matrix ROM for the Atari 2600. In the demo, the Atari shows all it's possible colors and allows you to move a black rectangle in 3 directions with the right joystick controller. Pretty simple, but even that was tough to fit into the 64 bytes of available space.

 

In case anyone is interested, the parts include:

 

(many) 1N60 diodes

8 X 3.3K ohm pullup resistors

.1 uf decoupling caps for each IC

2 X 74AS04 inverters

2 X 74HC244 buffers

9 X 74LS138 3:8 decoders

 

Of course, I don't plan to make a schematic, but if anyone wants to take on a similar project, I'd be more than willing to share information about the circuit.

 

Here are some pictures of the board, also included is the ROM image padded to 4K for compatibility with emulators and source code.

 

post-12776-0-29912100-1403747079_thumb.jpg

 

post-12776-0-52586100-1403747432_thumb.jpg

 

post-12776-0-14917200-1403747622_thumb.jpg

 

 

Now we wait for Random Terrain's 32 byte diode ROM comment :D

 

DiodeROM.zip

Edited by Wickeycolumbus
  • Like 13
Link to comment
Share on other sites

Thanks for the kind words!

 

Way cool, Wickey!

 

Ever since I read an article about diode matrix rom I've wanted to do this. Good on you for beating me to it. :)

Thanks Rev! Hope I don't discourage you from making your own though, It's always fun when you can get something like this working.

 

This is awsome! :) I wonder what a 1K board with a mini-game would look like :)

If the diodes are the ROM, what's in the IC's?

1K would be a ridiculous amount to wire, but it would definitely be cool to see! I considered going higher to fit a small game, but as you can see the boards I use just barely fit 64 bytes. It would have been cool to do 256 bytes so I could fit my 256 byte pong clone.

 

The IC's are used for address demultiplexing and buffering mostly. Since the data bus is shared among many other chips, it is necessary to disable the cartridges ability to control it by placing it in 'high impedance' mode. You need a tri-state buffer for this. The address demultiplexing is necessary to convert the 6 address lines into 64 individual select lines, one for each byte. I also use a buffer on the address lines to strengthen the signal. Not sure if this is necessary, but I didn't want to find out the hard way :) The other two chips are inverters, which I used to cut down on the diode count. I figured out that if I used a diode to signify a '1' rather than '0' it would use far less diodes (173 vs 339). They basically just invert the state of the data lines before they go to the tristate buffer.

 

Individual transistors. I can see it now..

That could get interesting... Maybe a 16 byte ROM made of discrete transistors, resistors, and diodes. I'll look into it!

  • Like 2
Link to comment
Share on other sites

Nice work, Wickeycolumbus! I stopped in to say hi after seeing a post about your project on the forum at 6502.org. http://forum.6502.org/viewtopic.php?f=12&p=33888#p33888

No doubt LOTS of other folks have noticed, too, since your diode ROM was featured on Hackaday! I hope you're enjoying the well-deserved attention. :)

 

BigO mentioned taking the diode ROM concept into the third dimension, and that prompted me to share some photos. This ancient project of mine has a ROM that's both 3D and manually alterable! Every diode has a SPST switch in series with it. Its capacity is eight 12-bit words (plus two 5-bit words, but who's counting). There are two 12-bit buses that feed a 12-bit counter and a 12-bit comparator, implemented in CMOS (which is very well suited for interfacing with diode logic).

 

What it all does is count encoder pulses for machine control, and altering the ROM sets various distances the motor has to move. In case anyone's wondering, this project predates microcontrollers. Although it has peripherals that can digest 12-bit values, the "CPU" on this board is a one-bit design similar to this: http://hackaday.com/2014/04/20/the-computer-without-a-cpu/#comments

 

cheers,

Jeff

 

http://LaughtonElectronics.com

post-39643-0-09271300-1403895541_thumb.jpg

post-39643-0-44644200-1403895582_thumb.jpg

post-39643-0-39885300-1403901480_thumb.jpg

Edited by Dr Jefyll
  • Like 1
Link to comment
Share on other sites

There is that 128 byte Pong that runs from the RIOT ram.

That could be something to shoot for in builds like this.

If you didn't want a game, there are demos in 128 bytes.

Anyone know of demos smaller than 128 bytes?

There are a few of those games that run in RAM, I've even written a couple myself. The problem with those is that there is some code initialization in ROM that is only executed at start up to load the game to RAM and give the game some initial values. They also rely on self modifying code, so you wouldn't be able to strip it down some way and run it from ROM.

 

Not sure I've seen those 128 byte demos, could you post a link?

 

Nice work, Wickeycolumbus! I stopped in to say hi after seeing a post about your project on the forum at 6502.org. http://forum.6502.org/viewtopic.php?f=12&p=33888#p33888

No doubt LOTS of other folks have noticed, too, since your diode ROM was featured on Hackaday! I hope you're enjoying the well-deserved attention. :)

 

BigO mentioned taking the diode ROM concept into the third dimension, and that prompted me to share some photos. This ancient project of mine has a ROM that's both 3D and manually alterable! Every diode has a SPST switch in series with it. Its capacity is eight 12-bit words (plus two 5-bit words, but who's counting). There are two 12-bit buses that feed a 12-bit counter and a 12-bit comparator, implemented in CMOS (which is very well suited for interfacing with diode logic).

 

What it all does is count encoder pulses for machine control, and altering the ROM sets various distances the motor has to move. In case anyone's wondering, this project predates microcontrollers. Although it has peripherals that can digest 12-bit values, the "CPU" on this board is a one-bit design similar to this: http://hackaday.com/2014/04/20/the-computer-without-a-cpu/#comments

 

cheers,

Jeff

 

http://LaughtonElectronics.com

Thanks Jeff! 6502.org, great site, don't get on there enough. I saw your post about improving the design. Good insight! I don't know much about the differences between TTL families and what not. I just used whatever I had on hand and was available on Tayda Electronics.

 

Your diode ROM looks cool wired like that, thanks for sharing. Being able to change the data is really nice. And that 1 bit CPU is awesome. Having trouble wrapping my head around it, but it's very clever.

Link to comment
Share on other sites

I'm curious about those 128 byte demos. Assuming you use a dev cartridge (say harmony or something) to load the program into memory, and all data needed to run were contained within the RAM, would it be possible to then yank the cartridge out and leave the VCS running with nothing in the slot? Or would pulling the cartridge corrupt the game. I'm not worried about damage. We've all yanked live carts at some point in our gaming past with zero damage to the cart or system.

 

Also I'd like to see a ROM made entirely of SPST switches. Also if you're really narcissistic, it would be fun to use discrete transistors instead of 7400 series logic chips. You'd only need 16,384 switches to program in a simple game like Combat! 32,768 switches to run Pacman! :o

 

Flick a bunch of switches to reprogram a new game. It's all been done before; like Eniac with it's 17,468 vaccuum tubes!

Edited by stardust4ever
  • Like 1
Link to comment
Share on other sites

I LOVE genmusic2.bin and let it run for quite a while.

Very rave-hypnotic.

I'd love to have a big ol board of diodes that runs genmusic2!

 

Tjoppen seems to indicate he tried running 16b and 32b programs.

Yes, I've been experimenting with glitch art similar to wallflower. It's possible to get interesting results in 16 bytes, but unfortunately this leaves no room to initialize the console to a known state. Digging it up, it seems I'm just using INTIM to set up the stack pointer, then just pull and push random values between RIOT/TIA.

Link to comment
Share on other sites

I'm curious about those 128 byte demos. Assuming you use a dev cartridge (say harmony or something) to load the program into memory, and all data needed to run were contained within the RAM, would it be possible to then yank the cartridge out and leave the VCS running with nothing in the slot?

Yes, the demo would be able to keep working after the cart is removed, but since the address and data lines used to access the RAM are also connected to the cart, their state can be momentarily messed up as you remove the cart, possibly crashing the program. It's hit and miss, sometimes it works, sometimes it doesn't.

 

There is an NES program made for dumping carts that requires this kind of hotswapping. The dumping software is copied to RAM, at which point you remove the cart and insert the cart you want to dump. Then the contents of the cart are read and played back through the audio channels. You can record the output on your PC and use a software to convert the audio file back into a ROM file. It's a pretty neat idea.

  • Like 1
Link to comment
Share on other sites

I'm curious about those 128 byte demos. Assuming you use a dev cartridge (say harmony or something) to load the program into memory, and all data needed to run were contained within the RAM, would it be possible to then yank the cartridge out and leave the VCS running with nothing in the slot?

Here is the link for RAM Pong.

 

There are currently some plans to put it on a cart.

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

 

Of course, I don't plan to make a schematic, but if anyone wants to take on a similar project, I'd be more than willing to share information about the circuit.

 

 

 

Will you post a schematic here since I really want to take on a similar project? I looked high and low in the Internet area for this source.

 

Thank you very much in advance.

 

Dessony

 

 

Link to comment
Share on other sites

  • 7 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...