Jump to content
electrotrains

UnoCart-2600 : a DIY SD multi-cart for the 2600

Recommended Posts

Hi All,

 

Some of you may know me from the Atari 8-bit forum - I've designed a couple of open-source multi-carts for the Atari 8-bit (the UnoCart and UltimateCart).

 

The Atari 8-bit was my childhood home computer, but I picked up a 2600 jr on ebay at xmas, since I fondly remembered playing Combat on a friend's Atari VCS after school. However I thought it would be nice to play some other games and try some of the more recent homebrew creations, and so...

 

Over the last couple of weeks, I've been busy building a version of the UnoCart for the Atari 2600 - The UnoCart-2600.

The video below shows it in action (code from a week or so ago - I've renamed it since then!)

 

https://www.youtube.com/watch?v=jLiPAbxEQOc

 

Like the UnoCart, this is something you can build yourself with minimal soldering. It just requires an off-the-shelf STM32F4-DISCOVERY board, an SD-card breakout board, and a breakout board for the Atari 2600 cartridge slot. Everything can be hooked up with jumper wires.

 

The source code, firmware, breakout-PCB design and (very rough) building instructions are on a new github page for the project:

https://github.com/robinhedwards/UnoCart-2600

 

The cartridge successfully auto-detects and emulates pretty much all the ROM dumps available on AtariMania (with the exception of Pitfall II, since I'm not emulating the DSP stuff).

 

So far, this has just been tested on my Atari 2600 jr - would anybody else be interested in building one and helping me find any remaining bugs in the cartridge emulation?

 

I've got a few cartridge breakout PCBs spare, since that is the only part that is hard to obtain. PM me if interested?

 

Robin

Share this post


Link to post
Share on other sites

Very interesting.  Are you thinking about making it Melody Board compatible?  

 

I'm not 100% sure of the details of the Melody board, but the UnoCart-2600 supports all the standard bankswitching methods so should be generally compatible with games designed for the melody I would guess.

 

However, it doesn't support any of the DPC or DPC+ stuff though (which as far as I know is not open source) though I guess could maybe be reverse engineered from the Stella source code?

 

Robin

Edited by electrotrains

Share this post


Link to post
Share on other sites

I've started to write up the documentation for the project, but thought it would be useful to post a list of all the cartridge types emulated by the current firmware. I've tested at least one example of all the cartridge types below, but if anybody has anything unusual or hard to find, I'd appreciate a copy.

 

The cartridge uses the detection signatures from Stella to auto-detect the types below from a .BIN, .ROM or .A26 file.

 

Supported Cartridge Types

  • 2K
  • 4K
  • F8 (8K)
  • F8 SC (8K+128 bytes RAM)
  • F6 (16K)
  • F6 SC (16K+128 bytes RAM)
  • F4 (32K)
  • F4 SC (32K+128 bytes RAM)
  • FE (Activision 8K)
  • 3F (Tigervision, up to 64K ROM)
  • 3E (up to 64K ROM, up to 32K RAM)
  • E0 (Parker Bros, 8K)
  • 0840 (8K)
  • CV (CommaVid, 2K + 1K RAM)
  • EF (64K)
  • EF SC (64K+128 bytes RAM)
  • F0 (64K)
  • FA (CBS RAM Plus, 12K + 256 bytes RAM)
  • E7 (M-Network, 16K + 2K RAM)

Cartridge types not supported - Activision DSP used by Pitfall 2.

 

Share this post


Link to post
Share on other sites
What if the UNO cannot determine the cartridge type from the file? Like maybe a previously undumped game or new homebrew? Will it "guess" or will it crash?

Share this post


Link to post
Share on other sites

Well, it will have much the same reaction as Stella would to a new homebrew, since they are using much the same code.

 

But most of the "signatures" in Stella are to do with the actual bankswitch instructions, rather than say checksums of a bunch of ROMs. So in general, Stella will guess right, even if its a new title.

 

However, I've put in an override mechanism by file extension, so if you rename something to CART.F8, then it will always use F8 bankswitching, rather than the auto-detected type.

 

Robin

Share this post


Link to post
Share on other sites

However, I've put in an override mechanism by file extension, so if you rename something to CART.F8, then it will always use F8 bankswitching, rather than the auto-detected type.

 

This change is actually coming to Stella too; I just haven't gotten around to it yet.

Share this post


Link to post
Share on other sites

This is interesting. My question is, How does this compare to the Harmony Encore, as far as cost?

 I can see this being a fun project to build, but cost would be a major factor. 

The Harmony Encore comes ready to use, where this requires some work.

If you could create the same thing for the 7800, That would indeed be VERY interesting.

Share this post


Link to post
Share on other sites

This is interesting. My question is, How does this compare to the Harmony Encore, as far as cost?

 I can see this being a fun project to build, but cost would be a major factor. 

The Harmony Encore comes ready to use, where this requires some work.

If you could create the same thing for the 7800, That would indeed be VERY interesting.

 

The STM32F407 DISCO board is available in the UK for about £15. A SD card breakout board is about £5. The only other thing needed is the 2600 breakout board - I got a bunch made for £10. So the total cost of the hardware is about £30 (probably about $35).

 

But its more about the fun of building something, and having access to the source code so you can change it or improve it.

 

Robin

Share this post


Link to post
Share on other sites

 

 So the total cost of the hardware is about £30 (probably about $35).

 

It's closer to $43, but that's still not that expensive, unless these same pasts can't be sourced in other parts of the world. Shipping would quickly become cost prohibitive. Still, I'm really happy that you've created this. As I mentioned before, if you ever decide to make a version for the 7800, I'm sure there will be a lot of us building them! :-D

Share this post


Link to post
Share on other sites
Cool project!
I have an Harmony cart, but I also like diy projects like this and I might give it a try in the future. Thanks for sharing!
 

The STM32F407 DISCO board is available in the UK for about £15. A SD card breakout board is about £5. The only other thing needed is the 2600 breakout board - I got a bunch made for £10. So the total cost of the hardware is about £30 (probably about $35).


You could just remove the rom chip from a common game and use that as the breakout board.

Share this post


Link to post
Share on other sites

Do you think an STMF3 would suffice? And... (I know I'm pushing it) what would it take to make this 7800 compatible?

 

An STMF3 would probably suffice for the 2600, however you'd need a chip with enough RAM, which pushes you up the range a bit. I'm supporting up to 32k of cartridge RAM, though as far as I know only the boulderdash demo uses 16k, and nothing uses 32k yet. The STM32F4 could support up to 128k RAM maybe more, if I shifted the ROM storage over to the internal flash (its also running from RAM at the moment).

 

Mainly, I used a STM32F4 because I was already familiar with it (having used it for the Atari 8-bit, where a STM32F3 would almost certainly not do).

 

Plus, you can buy a STM32F407 from ebay for less than £4, which makes producing this as a stand-alone cartridge pretty cost effective anyway.

 

EDIT - oops forgot to answer the question about the 7800....

 

The 7800 wasn't really a thing in the UK - I don't remember ever seeing one anyway, and I've only been developing mulit-carts for systems that I have some connection with. Having said that, if somebody in PAL land wants to donate me a 7800, I could see what I could do! :)

 

Robin

Edited by electrotrains

Share this post


Link to post
Share on other sites

Actually, reading up a bit more on the 7800, it seems I'd need to emulate pokey for it to be a decent multi-cart.

 

The probably means I'd want to use an FPGA, rather than a MCU, so I'd probably base a 7800 multi-cart on my Ultimate Cart design, rather than the UnoCart.

I've already tried using foft's VHDL pokey in the Ultimate Cart, and it works very well - see:

https://atariage.com/forums/topic/250996-easter-holiday-project-dual-pokeys-on-an-ultimate-cart/

 

But FPGA carts are a lot of work - the Ultimate Cart took over my life for several months, so I think I'll probably leave this one for someone else (though happy to help out along the way).

 

Robin

Share this post


Link to post
Share on other sites

Hi all,

 

My PCBs arrived this lunchtime, so I took the afternoon off to solder the bits on and see if the design worked. Happy to say it does :). So I can enjoy playing games on the 2600 without worrying the kids are going to knock one of the wires off the development/breakout board version.

 

I've got some spare PCBs (HASL coated, so not for long term use - HASL isn't very durable for edge connections), which I can build up into cartridges, if anybody is interested in helping me test and doesn't mind covering the cost of the board/parts (about £15).

 

Next step - a nice 3d printed shell...

 

[attachment=552789:P1160293.jpg]

 

Robin

 

Share this post


Link to post
Share on other sites

This is a very cool project! Regarding DPC: Kevin Horton's breakdown of bankswitch schemes is pretty much all that is needed, but I also took a look at Stella's source for some edge cases.The source of my implementation in 6502.ts is [url="https://github.com/6502ts/6502.ts/blob/master/src/machine/stella/cartridge/CartridgeDPC.ts"]here[/url] if you need another reference :) As for DPC+ and CDF, there is indeed nothing out there detailed enough for emulation out there other than Stella's source and my implementation (which is modeled after Stella's). The 6502.ts versions are [url="https://github.com/6502ts/6502.ts/blob/master/src/machine/stella/cartridge/CartridgeCDF.ts"]here (CDF)[/url] and [url="https://github.com/6502ts/6502.ts/blob/master/src/machine/stella/cartridge/CartridgeDPCPlus.ts"]here (DPC+)[/url]; my modified version of Thumbulator (the ARM core) is available [url="https://github.com/DirtyHairy/thumbulator.ts"]here[/url]. However, those don't cover everything; in particular, interrupt driven audio is committed in the emulation (as the emulated ARM core runs in zero 6502 time), but Spiceware or cd-w could certainly fill you in on those ;)

 

I feel the itch of getting a board and start toying with the firmware and cartridge emulation myself, but I realistically don't have any time left :( However, if you have questions, feel free to drop me a line.

Edited by DirtyHairy

Share this post


Link to post
Share on other sites

Awesome project! :)

 

Do you plan to add support for SuperCharger format?

 

The Harmony supports the binaries but not loading them from tape or ipod like the previous multicarts did.

 

I think that would be a great feature to add to a multicart; fun to browse games using your phone as a wired remote. 

Share this post


Link to post
Share on other sites

I am late to the party, but this looks like a really cool piece of hardware.

 

I especially like that the menu is not flickering, is that 6507 code running? And what are your plans for navigating through lots and lots of games?

Edited by Thomas Jentzsch

Share this post


Link to post
Share on other sites

Hi Thomas,

 

Thanks! But the menu is flickering though, its just my TV + camera does a good job of masking it.

 

Joystick up/down moves up and down, left/right pages forwards and back, and of course you can use directories to help arrange things.

 

I love your conversion of Thrust by the way, it is probably my favorite title I played while testing the cart and I'm definitely planning to return to it - I'm sure it is way better than either the ZX Spectrum or Atari 8-bit versions from back in the day.

 

Robin

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.

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