Jump to content
IGNORED

Building your own carts


Asmusr

Recommended Posts

I'm not usually a hardware guy, but I think it would be really interesting to make my own 4 Bank 8K Supercart <http://www.mainbyte....art_4bank.html>, and I believe I have found all the components on <https://www.jameco.com/>. The thing that's holding me back is that I have to remove the GROM from my precious (gollum, gollum) E/A card. Does anyone know what would happen if you don't add the GROM, could you still use the RAM for storing programs? An alternative to soldering the GROM onto the board would be to place it in an IC socket - slightly less risky I guess.

 

I've also thought about building a MegaMod 2010 cart <http://home.vodafone...l#megamod_2010> because I use Cf2k and CfHdxS a lot, but it looks like it would cost $150 to have 2 of Jon Guidry's circuit boards manufactured by <http://www.expresspcb.com/>, and then I would also need get the EPROM: perhaps order it from <http://www.mainbyte....re/EPROMS.html>, or invest in my own EPROM burner.

 

Does anyone have recent experience with any of these cart projects? Someone from the EU perhaps, who knows a cheaper way to order these components, or suggestions for other great cart building projects?

 

Thanks in advance for any advice you can provide.

Link to comment
Share on other sites

The company Jon used will only run batches of boards in quantities of 100, 250, or 500, and you have to supply the obsolete 74LS379 logic chips. There are plenty of hobbyist-quantity PCB services available now, but the design needs to be done with software that will output the standard files needed by these services. Hobbyists tend to use either EagleCAD or KiCAD.

 

A bank-switch board will run without GROM, and yes you could socket your original GROM instead of soldering it to a board. However, *desoldering* the original GROM without damaging it is not easy if you are not experienced at desoldering (which is easily twice as hard as soldering).

 

There is an effort to make a new bank-switch board that includes lots of extras including a microcontroller, but I don't know the status and it may have stalled.

 

I've been kicking around the idea of making a mega-cart for some time. If you want to talk about feature sets and ideas, maybe something will come of it. :-)

 

Link to comment
Share on other sites

The new bank-switch board project was stalled for a long time, but I delivered the final GROM code and test code to Jon recently, and he is doing some testing. I still need to write the configuration tool for the microcontroller (which will handle loading GROM code and configuring the I/O). I need to do a few more long term tests as well, but it looks pretty stable.

 

Getting your own EPROM burner is worth the investment if you want to start making cartridges. I have this one and have been quite happy with it: http://www.mcumall.com/comersus/store/comersus_viewItem.asp?idProduct=4282

 

You will also want a UV eraser (I don't have a link for one as I bought mine in a brick and mortar store), that way you can reuse and recycle UV EPROMs.

 

Also.. I don't know about your E/A cart, but mine is a single-sided board, meaning it does not have the edge contacts needed to be used in a ROM cartridge (a GROM cartridge has all the needed pins on one side of the edge connector). But if you were just adding ROM capability to a cart, there's no need to remove the GROM, they exist in separate memory spaces.

Link to comment
Share on other sites

Thank you, Matthew, for the information. Actually our local electronics store has some 74LS379 chips left that I might buy for future use, but I think I will stick to the 4 bank supercart as my project because of the cost of getting a circuit board for the 64K cartridge. It's good to know that you don't have to add the GROM so I can wait with this until I find another E/A card.

 

I'm not sure what the difference is between a supercart, a multicart and a megacart?

 

This is my shopping list for a 4 bank supercart from www.Jameco.com (enough for two carts):

 

 

Part Number, Description, Quantity, Unit Cost, Total

41988,"IC,43256-12L,DIP-28,SRAM","2","$3.75","$7.50"

36311,"@ DIODE,SWITCH,1N914","10","$0.05","$0.50"

690865,"@ RES,CF,1K OHM,1/4 WATT,5%,","100","$0.04","$4.00"

690582,"@RES,CF,68 OHM,1/4 WATT,5%,","100","$0.04","$4.00"

691024,"@ RES,CF,4.7K OHM,1/4 WATT,5%,","100","$0.04","$4.00"

33736,"CAP,TANT,2.2uF,35V,10%","2","$0.39","$0.78"

333973,"@LED,RED,643NM,T-1 3/4,","10","$0.12","$1.20"

14162,"BAT,LITHIUM,3V,180mAh,.787 DIA","2","$1.25","$2.50"

2135478,"SWITCH,TOG,MINI,SPST,ON-OFF","4","$1.49","$5.96"

2178486,"BATTERY HOLDER FOR CR2032 COIN","2","$0.79","$1.58"

, , ,Subtotal,"$32.02"

Link to comment
Share on other sites

The new bank-switch board project was stalled for a long time, but I delivered the final GROM code and test code to Jon recently, and he is doing some testing. I still need to write the configuration tool for the microcontroller (which will handle loading GROM code and configuring the I/O). I need to do a few more long term tests as well, but it looks pretty stable.

 

That's sounds very exciting, but will it require a PEB? What are the specifications?

Link to comment
Share on other sites

A super cart is usually an Editor/Assembler cartridge with RAM - specifications vary. :)

A multi-cart is just a cartridge with more than one program on it.

I haven't seen anything called a mega-cart yet so I can't guess on that one, maybe that is Jon's new cart. ;)

 

That's sounds very exciting, but will it require a PEB? What are the specifications?

 

It's for people who want to make their own cartridges, so, no PEB needed. There's a full thread on it (not updated for a while) here:

http://atariage.com/forums/topic/193163-512k-cartridge-status/page__hl__%20512k%20%20cartridge

 

Since there isn't much for specs there, I'll go update the thread with the GROM information, at least. I also have a couple of YouTube videos showing the test program run (which is not very exciting, but lets you see all the hardware built-in). I'll put them there, too.

Link to comment
Share on other sites

I'm not sure what the difference is between a supercart, a multicart and a megacart?

 

What I call a "megacart" is what every other classic computer / game system seems to have, i.e. a single cartridge that you can load via USB or SD card that has hundreds of original cartridges on it. For the 99/4A, doing such a thing means GROM support, which was a lot of extra work prior to inexpensive programmable-logic or microcontrollers. Also, the 99/4A community seems to be smaller than other classic systems, so less people to step-up and do the work.

 

My gripe with the existing bank-switch boards is that they still use EPROMs or EEPROMs, which require a hardware-programmer. There are some that are affordable now, as Tursi mentioned he is happy with his, but it is still a pain in the ass and a $150 (minimum) investment.

 

I like the USB or at least SD card approach personally, since it makes the cartridge much more usable to the end user. Imagine being able to distribute your new cartridge game as an SD card that someone just plugs into their megacart! Or that people just download and copy to an SD card, or load to their megacart via USB.

 

Of course there is also those who are asking for some RAM banks too, which should not be a big deal either. The problem comes in how do you offer various configurations to the developers, or to support the existing cartridge ROM/GROM/RAM configurations.

 

That's the part I have been kicking around in my head for a long time. I tend to go overboard, which means a longer more complicated development, and ultimately stalls before I start. :-( Coming up with something that supports existing cartridges, yet offers some enhancements would be a nice compromise. But defining the exact feature set is not so easy.

Edited by matthew180
Link to comment
Share on other sites

What I call a "megacart" is what every other classic computer / game system seems to have, i.e. a single cartridge that you can load via USB or SD card that has hundreds of original cartridges on it. For the 99/4A, doing such a thing means GROM support, which was a lot of extra work prior to inexpensive programmable-logic or microcontrollers. Also, the 99/4A community seems to be smaller than other classic systems, so less people to step-up and do the work.

 

My gripe with the existing bank-switch boards is that they still use EPROMs or EEPROMs, which require a hardware-programmer. There are some that are affordable now, as Tursi mentioned he is happy with his, but it is still a pain in the ass and a $150 (minimum) investment.

 

I like the USB or at least SD card approach personally, since it makes the cartridge much more usable to the end user. Imagine being able to distribute your new cartridge game as an SD card that someone just plugs into their megacart! Or that people just download and copy to an SD card, or load to their megacart via USB.

 

Of course there is also those who are asking for some RAM banks too, which should not be a big deal either. The problem comes in how do you offer various configurations to the developers, or to support the existing cartridge ROM/GROM/RAM configurations.

 

That's the part I have been kicking around in my head for a long time. I tend to go overboard, which means a longer more complicated development, and ultimately stalls before I start. :-( Coming up with something that supports existing cartridges, yet offers some enhancements would be a nice compromise. But defining the exact feature set is not so easy.

 

Then why not uses the format that the SAMS uses and make it a Supercart that does the same thing as the SAMS in a Cart?

We have exiting standards for AMS and SAMS that we do know work and could be used on the new SAMS CART?

Link to comment
Share on other sites

What I call a "megacart" is what every other classic computer / game system seems to have, i.e. a single cartridge that you can load via USB or SD card that has hundreds of original cartridges on it.

 

The other communities I've seen this in (mostly console, I'm not in other computer communities) would just call that a flash cart.

 

But yeah.

 

At this point, with the GROM code proven (and should easily port if you wanted to run it on an ARM or such), all that's needed is to interface the microcontroller to a flash chip, or even RAM. Let it handle the interfacing to the SD card, programming the flash chip for ROM use and the GROM emulation as well, and you should be able to get away with a minimal solution there. The AVR is not fast enough to work as a bus controller for bank switching, but inexpensive ARMs are. That, or a CPLD would easily have enough memory to do it in hardware.

 

But the carts being produced so far are not really aimed at being general-purpose reprogrammable devices.

 

Link to comment
Share on other sites

  • 4 months later...

I want to see Ti Scramble in a cartridge, so yesterday I ordered 10 PCBs for Jon Guidry's 64K cart from this Chinese company:

http://imall.iteadstudio.com/open-pcb/pcb-prototyping.html

 

It all seems very professional, the web site is excellent, and the price is only $35 + shipping (DHL $25) including . A similar order from ExpressPCB would have cost me $100 - $200 more, so if this turns out OK I can recommend this company.

 

I got some original 74LS379 chips from the local electronics retail store, and I ordered 10 Winbond W27C512 chips from China, and a Chinese EPROM programmer from Germany. I hope it all fits together...

  • Like 4
Link to comment
Share on other sites

I too bought a bunch of the guidry boats from a Chinese manufacturer. Turned out really good and was super cheap. I had 150 boards made. I can recommend that approach. The Chinese makers are really getting it together.

 

Did he also design a boat? Where do you plug it in? :) Seriously, did you buy assembled boards or did you have to solder them? Where did you get the 379 chips from? Which EPROM did you use?

 

Just to explain about my carts, what I'm planning is the simple solution that still requires the 32K expansion to be present. It's admirable what Retroclouds did with Pitfall, but even if it was possible to do the same with my games it seems like a huge amount of trouble in order to reach a few more users.

 

With the easy solution it takes 2 minutes to make the necessary ROM file for Scramble from Classic99. I will also try a similar approach with Titanium, but this requires some more work because the data files will have to be converted to ROM banks. I don't think any tools exist to help you with this. I will need two banks for the program, and probably 5 more for the maps and and the music. I guess a test cycle would involve 1. compiling the code to run from CPU RAM, 2. loading it into Classic99, 3. exporting to a 379 ROM image, 4. adding the extra ROM banks to the exported image, 5. testing the combined image in Classic99. It would be easier if I would swap cartridges in Classic99 without the TI resetting, then I could test the loading of data files from ROM banks without also running the program from ROM. Any ideas?

 

Anyway, this is all experimental. I'm not committing to selling any of these carts, but it's definitely something I will consider.

Link to comment
Share on other sites

I just bought bare boards and soldered them all up myself. All the chips including the eproms came from eBay. Had no trouble at all - all the boards worked first time.

You have a couple of options with making your game a cart... I seem to recall that you keep the level data in a compressed format and there is a small delay at the end of each level as the data is extracted. Well if you have a room rom at your disposal you could run the game code from ram and pad ram as you currently do but have the level data in room rom in uncompressed form - no delays. And no performance penalty either!

Edited by Willsy
Link to comment
Share on other sites

You have a couple of options with making your game a cart... I seem to recall that you keep the level data in a compressed format and there is a small delay at the end of each level as the data is extracted. Well if you have a room at your disposal you could run the game code from ram and pad ram as you currently do but have the level data in room in uncompressed form - no delays. And no performance penalty either!

 

Great idea. Is there no performance difference between reading from 8 bit ROM and RAM?

Link to comment
Share on other sites

 

Great idea. Is there no performance difference between reading from 8 bit ROM and RAM?

As far as I know, reading from 8-bit ROM in the cart is exactly the same speed as 8-bit RAM in the console. So no speed penalty. So, the startup code in the cart would copy the main game logic to RAM, load up VDP etc, but keep the level data in ROM, in un-compressed form.

Link to comment
Share on other sites

no existing ROM chip is too slow for the 8-to-16-bit converter logic ;-) (check Thierry's site!)

http://nouspikel.group.shef.ac.uk/ti99/wait.htm

8-bit ROM is just as fast as 8-bit RAM

 

Thank you for the answer. It's really exciting that I could improve the game by putting it in a cartridge. I have read the the 379 chips can start up in any state, which is why you need the header and start up code in every bank. This is really annoying if you data segments are exactly 8K. Is there anything you can do about that?

Link to comment
Share on other sites

In practice my turboforth carts always came up in bank 1 as opposed to bank 0 but my results were all from the same console which likely has its own unique startup characteristics. Might get different results on different consoles. Anyone else had any experience of this?

Link to comment
Share on other sites

I tried a 74LS175 for bank selection, it has a -RESET input to start at bank 0, and it allows for true (write >0 for bank 0)or inverted ('379 style, write >F for bank 0) output. Drawback: you need an extra 74LS32 (or a strange construction with two diodes and a pull-down resistor) to combine -CS and -WE to clock the register.

If you need more banks, the 74LS174 stores 6 bits, but has only true outputs

Link to comment
Share on other sites

It's likely that a chip that appears consistent will remain consistent (in the same batch), but if you want to be really safe, you do need the header in every bank. That said, just make the first executed instruction in every bank set the correct bank, and that's all the code that the non-main banks need. For instance, if your game code is in the bank switched by >6000:

 

(bank 6000)

(header)

START MOV R0,@>6000 * select bank >6000 - just to be consistent

(game code here)

 

(bank 6002)

(header)

START MOV R0,@>6000 * select bank >6000 - this bank loses control after this

(game data here)

 

(bank 6004)

(header)

START MOV R0,@>6000 * select bank >6000, etc

(game data here)

 

.. and so on. You only lose the size of the header plus 4 bytes of code in each bank, and it will work regardless of the startup state. It's also handy because at one point, at least, the emulators disagreed on the default startup bank of the 379s ;)

  • Like 1
Link to comment
Share on other sites

The Super Space II uses CRU-based bank switching. I assume that the cartridge ripper must modify the code of non-CRU banked cartridges. If I wanted to start playing with cartridge building using the Super Space, then I would have to worry about differences in bank switching and compatibility with emulators. Without me asking any specific questions, what are your thoughts on this?

Link to comment
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...