Jump to content
IGNORED

Can an MCU drive the TI's cartridge port?


Willsy

Recommended Posts

Anyone know if an MCU (preferably something like a Atmel ATmega328, though it could be something like an ARM M0) is man enough to be able to feed data to the cartridge port?

 

I'm interested to know if an MCU can be used as a replacement for an EPROM, as having an intelligent device on the end of the cart port opens up all sorts of possibilities. My use case would be to hang a load of RAM off of the SPI port on an MCU, and be able to read/write that RAM, and execute code on the 9900 from the RAM, via the MCU- so the TI wouldn't know there is anything other than an EPROM on the cart port.

 

Just wondering if anyone has ever tried this? AT Mega family would be nice, as I have all the tools and am comfortable with C++ and Atmel's native C++ functions (i.e. I don't need Arduino-style wrappers/training wheels which are nice, but kill performance). The ATMEGA328 can run up to 20MHZ and return ~16MIPS at that clock speed.

 

Failing that, is there a cart design that supports multiple pages of 8K banks, with, say, 1K of RAM permanently mapped in to the top of the cart space? This could open up lots of possibilities for games that could run on a bare console.

  • Like 3
Link to comment
Share on other sites

Kind of yes. But the TI must be able to run programs as normal from the cartridge. That means the MCU has to decode the various lines on the cart port and arbitrate them appropriately. It's literally behaving like an EPROM as far as the TI is concerned. Although I'd be happy with a 64k or 128k cart (split into 8K pages) with 1K of ram permanently mapped in (so only 7K of ROM available per page). In this case, it would just be discrete components. A ROM, RAM, and some decoding logic? This would be great for standalone (no 32K/PEB/memory expansion) games or even utilities. 

Link to comment
Share on other sites

The UberGROM is an Atmega running on the cartridge port. ;)

 

However, an ATMega at 20MHz is not fast enough to provide the ROM side in real time. You have to present your data to the bus within about 300ns of the enable line going low, which is tricky for this series of MCU. It's been a long time since I looked at the feasibility so I doubt I have the numbers anymore.

 

 

  • Like 4
Link to comment
Share on other sites

The FlashROM is exactly what you're looking for.  It uses an ATmega 8515 (because of its many pins) and runs at 8 MHz (IIRC).  There's also a SRAM chip and some standard logic chips for bank switching and signal control as well as a SD card slot.

 

Or are you asking for a bare MCU solution?  It's possible to get rid of the three signal controllers and the SRAM if the MCU is serving the bus directly (instead of the SRAM), but then you'd need more pins than are currently available AFAIK.

Link to comment
Share on other sites

In the StrangeCart project I am doing exactly this, i.e. emulating ROM, GROM, RAM simultaneously using a MCU. I use the LPC54114 MCU, which I run at either 96MHz or 150MHz. This is a 64 pin chip, so it has enough I/O pins to connect to pretty much every signal delivered via the cartridge port. The reason I chose the LPC54114 was that it's IO pins are 5V tolerant, it's pretty fast and is a dual core chip. With my software one core is serving the TMS9900 bus, while the other can do other things (such as run my Basic interpreter).

You could do something also with an AVR chip such as ATMega 1280, which has up to 86 I/O pins in 100 pin package. However, I am not sure that it runs fast enough for this purpose. Also, depending on how much memory you need, it may not have enough. The LPC54114 has 192K on chip RAM, while the ATMega1280 has only 8K.

  • Like 6
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...