Jump to content
disjaukifa

A Brand New Atari 2600 Clone Project

Recommended Posts

And as I mentioned in the link, using OpenGL mode and sync'ing to vblank/monitor refresh rate on a 60Hz LCD results in smooth movement, exactly like on the real system. So the Stella codebase is capable of such a feat; it's the operating system you're running on that causes these issues. But if we were using custom hardware, that drawback could be eliminated.

If custom hardware removes the little problems I always have with Stella on Windows PCs, sounds good to me. And if the Stella software is easily upgradable, the Stellacon will get even better over time. I hope someone with the skill/talent/time will be able to do that 40hr/week job to get Stella as perfect as the original hardware. Then the Stellacon will get an upgrade that will make everyone cry tears of joy. Perfect emulation. Can't tell the difference between a real Atari 2600 and the Stellacon.

Share this post


Link to post
Share on other sites

Stella rules. Thanks for your work on it Stephen. Sorry I never was able to get to taking it through IRIX. I bagged on those machines, as it was time to move on, right about the time you asked... :(

 

Your comments on "emulation" vs "hardware" are very interesting. Micros can do classic looking video displays easily, and provide them on VGA / s-video / composite, maybe even component video.

 

Blending the two isn't anywhere near the hardware exercise that a rebuild in silicon would be. Keeping the rest in software has an appeal otherwise.

 

That combination of things brings the idea of this from "dream" to "maybe possible", IMHO.

 

One seriously good artifact of that would be something like "pause", which would be very, very difficult otherwise.

 

If done on a fairly flexible design, more than a VCS would be possible as well. For me, one of the biggest appeals of the older systems is how their video looks. There is a texture to it that is seen on CRT devices, that is difficult to capture otherwise. A micro doing video would be capable of duplicating those rather closely, giving the emulator running an output device that makes sense and that looks authentic.

 

The video coding for micros (at least the one I've been working with), isn't something I would call easy. It's not. It is however, something that one person could get done on a spare time without taking years. The product of that is whatever the emulator needs to see. Probably double frame buffer, sync flags, and whatever else it needs to see.

 

Anyway, that gets to "works on a TV" and "looks great on newer TV / VGA", with a 1:1 display characteristics mapping, which is where the "feel" is on classic hardware anyway. I would be interested in such a project actually, because it's a nice use of more modern hardware to capture / replicate that retro feel.

 

Done on one of those single board computers, the result would easily be retro-fitted to the authentic case, and life is good from there.

 

Another side effect is some retro activity on other devices. IMHO, lots of potential there, and an area of interest of mine that does align somewhat with this idea, so I thought I would just post a few thoughts myself.

Edited by potatohead

Share this post


Link to post
Share on other sites

One seriously good artifact of that would be something like "pause", which would be very, very difficult otherwise.

 

The Brazilians didn't think so, 25+ years ago. ;)

 

onyx_junior.jpg

Share this post


Link to post
Share on other sites

One seriously good artifact of that would be something like "pause", which would be very, very difficult otherwise.

 

The Brazilians didn't think so, 25+ years ago. ;)

 

onyx_junior.jpg

 

That is the coolest! How did they do it? Is it something like what is being discussed here, or...?

 

The diversity of "clone" hardware never ceases to amaze me.

 

Edit: Well, I really don't know enough to judge the pause difficulty. From what I do know, it sure seems tough --at least to maintain a screen display while paused. Maybe just stop the whole works?

 

So then, we arrive at "save"... Any clones get that done? Heh...

Edited by potatohead

Share this post


Link to post
Share on other sites

That is the coolest! How did they do it? Is it something like what is being discussed here, or...?

 

The diversity of "clone" hardware never ceases to amaze me.

 

Edit: Well, I really don't know enough to judge the pause difficulty. From what I do know, it sure seems tough --at least to maintain a screen display while paused. Maybe just stop the whole works?

 

So then, we arrive at "save"... Any clones get that done? Heh...

From what I've read, the screen display is not preserved. I don't think you can stop the 6507's clock, but you should be able to pull the RDY line high indefinitely without losing anything.

Share this post


Link to post
Share on other sites

That is the coolest! How did they do it? Is it something like what is being discussed here, or...?

 

The diversity of "clone" hardware never ceases to amaze me.

 

Edit: Well, I really don't know enough to judge the pause difficulty. From what I do know, it sure seems tough --at least to maintain a screen display while paused. Maybe just stop the whole works?

 

So then, we arrive at "save"... Any clones get that done? Heh...

From what I've read, the screen display is not preserved. I don't think you can stop the 6507's clock, but you should be able to pull the RDY line high indefinitely without losing anything.

 

Actually they did not use a 6507 and yes, the screen goes blank, but who cares?

Share this post


Link to post
Share on other sites

I'm not opposed to an emulation based implimentation, so long as it is indistinguishable from a hardware based one. If we are talking about making a dedicated 2600 clone with the core chipset running in emulation on a microcontroler, vs having it implimented with an FPGA, There are several things that both would have in common. For example both would need a custom PCB, cartridge connector, controler ports, switches, and a case. I favor designing new controlers to put the console switches on the controler. I also would want to have some circuit that takes the TIA output and processes it to work better with modern displays.

 

The question then is, how hard would this be?

 

For the emulation version, you would have to port Stella to whatever microcontroler is chosen, and make it work better than it does now on Windows or Mac. For the FPGA version, you would need to port over the VCS chipset to Verilog or VHDL, and make it work better then the Flashback 2 works. I don't have the experience to state which one would be harder, but there is at least one person who has gone the FPGA route:

 

http://tolgaretro.blogspot.com/2007/05/atari-2600-on-fpga.html

 

It looks like he etched his own board, too. He used a 100,000 gate FPGA and as far as I can tell, it was about a $9.50 part.

Share this post


Link to post
Share on other sites

I'm not opposed to an emulation based implimentation, so long as it is indistinguishable from a hardware based one. If we are talking about making a dedicated 2600 clone with the core chipset running in emulation on a microcontroler, vs having it implimented with an FPGA, There are several things that both would have in common. For example both would need a custom PCB, cartridge connector, controler ports, switches, and a case. I favor designing new controlers to put the console switches on the controler. I also would want to have some circuit that takes the TIA output and processes it to work better with modern displays.

 

The question then is, how hard would this be?

 

For the emulation version, you would have to port Stella to whatever microcontroler is chosen, and make it work better than it does now on Windows or Mac. For the FPGA version, you would need to port over the VCS chipset to Verilog or VHDL, and make it work better then the Flashback 2 works. I don't have the experience to state which one would be harder, but there is at least one person who has gone the FPGA route:

 

http://tolgaretro.blogspot.com/2007/05/atari-2600-on-fpga.html

 

It looks like he etched his own board, too. He used a 100,000 gate FPGA and as far as I can tell, it was about a $9.50 part.

 

I was actually thinking the other way around. Use a micro to generate a retro, but good quality video signal, and drive it with a modest single board computer, so the emulation can be more or less run directly on it. A few tweaks to take advantage of the video, controller options, and whatever else makes sense, and something is running for $100 or so.

 

The reason would be the solution being almost completely software, emulation and the code running on the micro to draw appropriate video signals. (VCS has one kind of output, NES another, etc....)

 

That leaves a nice case and such to figure out how to build. Maybe 3D print them and paint them on demand...

 

End result would be a project that could be built, and those who do that have a very nice machine to game on, not for the masses, but for those who really are into either the quality, or just the hobby part of things.

 

I don't see any way a mass production makes any sense.

Share this post


Link to post
Share on other sites

Even though I don't understand all of the hardware-specific talk that is going on this thread, I have to say I'm excited about the prospect of a new clone solution via software or hardware emulation. Does anyone have ideas for how to do small-run case creation for something like this? (In a way that is cost-effective, of course.)

Share this post


Link to post
Share on other sites

Some possible methods of case fabrication:

  • rapid prototype aka 3D printing... too expensive ($100s or $1000s per part) and takes very long per part.
  • Injection molding... Initial setup is expensive. May be cost effective depending on your definition of "small run"
  • NC mill... Similar cons to 3D printer.
  • DIY vacuform... Case needs to be simple and designed with this in mind. Check benheck forums for examples.

Share this post


Link to post
Share on other sites

 

From what I've read, the screen display is not preserved. I don't think you can stop the 6507's clock, but you should be able to pull the RDY line high indefinitely without losing anything.

So in thoery, simply feeding pin 3?(RDY) 5 volts though a pull up resistor would add pause to the 2600? That's a 5 minute mod, 2 wires, a resistor and a switch, it must be more complicated than that!

Edited by Kenny_McCormic

Share this post


Link to post
Share on other sites

Has anyone here seen this?:6502 + Propellor chip some of the text mentions using it as an emulator of older systems and seeing some of the propellor demos around it seems pretty impressive for the price. Source code and schematics are available on the site, in theory could the custom chip parts of Stella be ported to the propeller allowing the 6502 to run natively?

 

Note: The Replica I uses a propeller for video output

 

 

 

Barnie

Edited by barnieg

Share this post


Link to post
Share on other sites

 

From what I've read, the screen display is not preserved. I don't think you can stop the 6507's clock, but you should be able to pull the RDY line high indefinitely without losing anything.

So in thoery, simply feeding pin 3?(RDY) 5 volts though a pull up resistor would add pause to the 2600? That's a 5 minute mod, 2 wires, a resistor and a switch, it must be more complicated than that!

Now that you mention it, although the method I pointed out should work, you could probably improve it by only allowing the pause to occur during VBLANK.

 

However, someone should try the pause switch mod (may require cutting a trace, as the RDY line is probably directly connected to the TIA.)

Share this post


Link to post
Share on other sites

Has anyone here seen this?:6502 + Propellor chip some of the text mentions using it as an emulator of older systems and seeing some of the propellor demos around it seems pretty impressive for the price. Source code and schematics are available on the site, in theory could the custom chip parts of Stella be ported to the propeller allowing the 6502 to run natively?

 

Note: The Replica I uses a propeller for video output

 

 

 

Barnie

 

Lots of people in the Propeller community want one of those boards!! The guy that built it did it to place in a design competition. They are not currently being produced, however the complete project documentation is online. Not sure whether or not he posted up his board artwork, but I'm sure he would, if asked.

 

The propeller is capable of near perfectly emulating all of the 8-bit video chip sets, and beyond as WOLF3D was rendered on it, at speed and resolution last week, in 32K!

 

I'm not sure how accurate sound would be, but it's capable of quite a lot. Who knows there. There is a guy working on SID, who has gotten far enough to play some tunes, and several very nice audio file players have been written.

 

Using the reference video output circuit, which is essentially a few resistors, drivers have been written to very closely model many classic computer video outputs. You can see a coupla those in my blog, and on the wiki at http://propeller.wikispaces.com That circuit doesn't really have the luma depth to go full on Atari 8 bit + VCS video (only has 6 useful levels), but an alternative one using different resistors totally could. Eric Ball wrote a pretty great driver using the circuit in an alternative way to get very nice color. Lots of options here that don't require expensive or difficult to source chips. Just resistors and some code. If a better DAC using a few more resistors was setup, going down the road he already traveled would yield authentic video without a ton of hassle.

 

Frankly, I think that board could just full on execute raw VCS code, with no modifications being necessary. I would be surprised to find it couldn't. That means a NTSC / PAL machine with no worries. Could even translate between the two.

 

I don't think it will emulate a 6502 at VCS speed, though a Z80 emulation does run at speed for CP/M on the thing. If it can, it would be a lot of work. The Z80 project was a big effort, and does run nicely, though it's not cycle exact. That's the big slowdown there. Running with a real 6502 is the trick.

 

There is a 6809 emulation in the works right now too.

 

The Z80 one is actually decent, with some people running single board CP/M computers, with SD card file system support, using a few of the chips working together to get that done. It can be run on one chip, but memory space is tight.

 

What is very distinctive about that particular board is the real CPU gets it's data through the Propeller, allowing for all kinds of cool tricks to be done, without all the speed and complexity full on emulators require. The chip isn't quite fast enough to emulate a CPU at the speeds needed here, though it can feed one easily enough, while drawing a nice video display, due to it's parallel multi-processing capability. That's awful attractive for retro on new hardware types, like me :)

 

That board brings that to the table with a real 6502, meaning memory mapped I/O, and cycle / signal exact video can be combined. This can be done without having to author a complex kernel to manage everything, as the chip runs 8 CPU's together, at the same time, all having round robin access to the 32K of shared "HUB" memory, and each CPU having 2K, or 512 32 bit instruction data locations separate, and in addition to the many 32K chip RAM. Typical use is to load a 32K image, that fires off the CPU's, known as COGs, that can then overwrite the HUB once running, freeing that RAM for whatever purpose.

 

Somebody needs to make these damn things... Hell, I'll mount one in a woody and start working on what it takes to do TIA. Others would gladly jump in. Getting some programming help on a project like that would be totally doable.

 

The Replica I video output would barely tax the chip.

 

I've finally got some time this weekend to work on the guts of FREEWAY. It's a port, with some embellishments, using a VCS like driver. Lots of sprites, and a display list for simple text / background graphics. Right now, the driver does not do VCS color clock timing, but it will here in the very near future, giving a very authentic look. I'll post up some stuff in my blog here soon.

 

HERO is being worked on, as is a port of ADVENTURE, using that driver, and the SPIN higher level language the chip can execute. That runs at about 8 bit assembly language speed, is interpreted by an on-chip interpreter, and generally easy compared to assembly language programs.

 

I think on this board, the key would be to use the Stella TIA / RIOT emulation to rewrite the same on the Prop for that board. They are different enough targets that a recompile won't cut it. That would mean a few of the CPU's running assembly language bits, combined with a SPIN layer to wrap it all together.

 

If this ever sees traction, count me in. I'm totally game.

Edited by potatohead

Share this post


Link to post
Share on other sites

 

From what I've read, the screen display is not preserved. I don't think you can stop the 6507's clock, but you should be able to pull the RDY line high indefinitely without losing anything.

So in thoery, simply feeding pin 3?(RDY) 5 volts though a pull up resistor would add pause to the 2600? That's a 5 minute mod, 2 wires, a resistor and a switch, it must be more complicated than that!

Now that you mention it, although the method I pointed out should work, you could probably improve it by only allowing the pause to occur during VBLANK.

 

However, someone should try the pause switch mod (may require cutting a trace, as the RDY line is probably directly connected to the TIA.)

Computer logic is not something I am good at, I barely know what a pull up resistor is. What would VBLANK do?

 

So you would need to cut off the TIA from RDY, and then pull it high? With a SPDT switch? Could you just put a diode inline to make it more instant?

Edited by Kenny_McCormic

Share this post


Link to post
Share on other sites

 

From what I've read, the screen display is not preserved. I don't think you can stop the 6507's clock, but you should be able to pull the RDY line high indefinitely without losing anything.

So in thoery, simply feeding pin 3?(RDY) 5 volts though a pull up resistor would add pause to the 2600? That's a 5 minute mod, 2 wires, a resistor and a switch, it must be more complicated than that!

Now that you mention it, although the method I pointed out should work, you could probably improve it by only allowing the pause to occur during VBLANK.

 

However, someone should try the pause switch mod (may require cutting a trace, as the RDY line is probably directly connected to the TIA.)

Computer logic is not something I am good at, I barely know what a pull up resistor is. What would VBLANK do?

 

So you would need to cut off the TIA from RDY, and then pull it high? With a SPDT switch? Could you just put a diode inline to make it more instant?

 

VBLANK is a specific period of time where the VCS is not drawing the screen. Making the switch more instant wouldn't impact this. Making the switch change states at a specific time would.

Share this post


Link to post
Share on other sites

I take it this would preserve the screen? So I would need an AND gate to pull RDY high when the pause switch is flipped and VBLANK is ?low?(this would need a inverter too, right?)

Edited by Kenny_McCormic

Share this post


Link to post
Share on other sites

I take it this would preserve the screen? So I would need an AND gate to pull RDY high when the pause switch is flipped and VBLANK is ?low?(this would need a inverter too, right?)

 

It wouldn't. The 2600 "screen" only exists in motion, with the machine drawing a small part of it at any one time. If the machine is paused, the screen would be blank.

 

IMHO, VBLANK was mentioned as a good time to stop that drawing to pause. I don't know the circuit details, sorry.

Share this post


Link to post
Share on other sites

I looked on the TIA schematics, and RDY appears to be open drain, and there is also a pullup on the RDY line (which backs this up.) This means you can just place a switch to ground on the RDY line to pause, and no trace cutting is necessary.

 

There is a BLK pin on the TIA which I assume is active during VBLANK. It appears to be active low, so enabling your switch only when BLK is active is possible but will require a transistor or two.

Share this post


Link to post
Share on other sites

Re: Propeller + 6502 board.

 

Spent some time looking at this over the holiday weekend. It appears the circuit will probably fit onto my PPDB. Been trying to sort out what I want to build on to it.

 

http://www.parallax.com/Store/Microcontrollers/PropellerDevelopmentBoards/tabid/514/CategoryID/73/List/0/Level/a/ProductID/515/Default.aspx?SortField=ProductName%2cProductName

 

I think this circuit holds some potential Atari goodness. Only one way to find out! Build one up and see what can be done. TIA is a beast, and I don't know whether or not the 5 or so COG's availiable for general use in this configuration can do it in real time, or not. That's what the build is for!

 

Right at this moment, I've got spit 'n polish left on my 80 column color text driver (my blog), and some code left to do on my port of FREEWAY for the Propeller. Those won't take all that long. Coupla three weeks maybe.

 

After that, I'm gonna try and build up a prototype of this.

 

Somebody is doing a gerber file for the project circuit shown. I'm sure they would modify this according to what the prototype reveals would be needed video wise. The video output in the Project is enough to vet the idea of running a virtual TIA, but not enough for an authentic look, IMHO.

 

I'm not gonna worry about sound on the first pass, to keep the circuit as small and as simple as possible.

 

So...

 

Does anybody wanna trade for some Propeller stuff, and maybe build one of these as well?

 

Items I need, or will have to buy: (Ideally two sets)

 

(1) 2Mhz capable 6502

 

(1) UM61512AK-15 static RAM chip (64Kx8)

 

(2) 74LS244 Octal Buffer

 

I think I either have, or can easily source the misc resistors, caps and transistor. Some of those are sound related, and can be had later on, after it makes sense.

 

Frankly, I'm not sure where my skill level is at these things. Two sets of chips would be killer, in case I let the smoke out of one.

 

 

Here's what I've got to trade:

 

(1) Propeller Proto Board USB (New, in package, and has Propeller on it, ready to program.)

 

(1) DIP 40 package Propeller Chip (known good)

 

(1) 5 or 6 Mhz crystal

 

 

Here's the Proto Board detail:

 

http://www.parallax.com/Store/Microcontrollers/PropellerDevelopmentBoards/tabid/514/CategoryID/73/List/0/Level/a/ProductID/509/Default.aspx?SortField=ProductName%2cProductName

 

The board I have is a variation of the one shown in the project documentation, meaning the trader could build one of these project circuits up too. I want to breadboard this up to learn, and be able to make tweaks to video and sound outputs easy.

 

Who is game? PM me!

Edited by potatohead

Share this post


Link to post
Share on other sites

It's been years since I've done any thing close to to the level of ability required - I've build a bread boarded Z80 sbc and created simple PCBS at college a long time ago.

However the propeller appeals to me as a nice side hobby to my attempts at Atari 800 & VCS programming.

 

My thoughts on emulating an Atari 2600 with a propeller would be to just start with replacing the TIA in a real 2600 with a propeller protoboard wired into the 2600 motherboard, the question is how to convert the 3.3v of the propeller to the 5volts used by the 2600?

 

At to a commercial product attempt I'd be willing to donate something to a bounty to get a prototype created (maybe pay for a protoboard). I think 7800 compatibility would be needed to make it worthwhile

 

 

There is a quite a lot of pre-made propeller parts and code for atari joystick compatibility and composite + audio out so some of the work has already been done, for the 7800 it would probably need more complex logic.

 

Barnie

 

 

 

I think on this board, the key would be to use the Stella TIA / RIOT emulation to rewrite the same on the Prop for that board. They are different enough targets that a recompile won't cut it. That would mean a few of the CPU's running assembly language bits, combined with a SPIN layer to wrap it all together.

 

If this ever sees traction, count me in. I'm totally game.

Share this post


Link to post
Share on other sites

I looked on the TIA schematics, and RDY appears to be open drain, and there is also a pullup on the RDY line (which backs this up.) This means you can just place a switch to ground on the RDY line to pause, and no trace cutting is necessary.

 

There is a BLK pin on the TIA which I assume is active during VBLANK. It appears to be active low, so enabling your switch only when BLK is active is possible but will require a transistor or two.

 

Just to be sure i have his all figured out.

 

Quick n dirty pause: short RDY pin on the 6507 to ground.

 

Proper (black screen) way, build circuit to short RDY pin of the 6507 to ground when VLBANK pin of the TIA is low.

Share this post


Link to post
Share on other sites

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...