Cartridge Atari MEGACART

Mi Megacart

Presento aquí mi nuevo diseño, es un cartridge Atari del tipo Megacart.
Hay un documento en internet, llamado "Types of Atari cartridge images", que define todos los tipos de cartridge, definición necesaria para que los emuladores soporten los diferentes tipos de carts. El documento de puede consultar aquí (
http://ftp.pigwa.net/stuff/emulators_and_utils/8-bit/Atari%20ROM%20Maker/cart.txt).

 

La Búsqueda

Hace tiempo que me propuse la misión de encontrar todos los esquemáticos de todos los cartridges atari, y el megacart es uno de los que me faltaba. Me refiero a carts simples, con memorias eprom sólo de lectura. No existe mayor información en internet acerta del megacart, aparte de un vendedor europeo que vende un "Megacart", que es regrabable y tiene su propio sofware generador. Aquí se puede consultar su sitio web  (http://herale.org/). Este cartride comercial es similar a otros cart re-grabables (el SIC, el UNO, el Maxflash, el The!Cart, el Ultimate, etc etc)
Pero, yo busco lo simple, barato y bonito. Un simple cartridge que corra imágenes de Megacart con (e)eprom estándar.

Entonces, estas son las definiciones de los megacarts, según el documento ya mencionado:

***************** Copy-Paste:

+---------------------------------------------------------------------------+
| Type 26: MegaCart 16 KB cartridge                                         |
+---------------------------------------------------------------------------+

 A 16 KB cartridge, that occupies 16 KB of address space between $8000
 and $BFFF, and can be disabled by writing a byte with bit 7 set to
 $D500-$D5FF.

+---------------------------------------------------------------------------+
| Type 27: MegaCart 32 KB cartridge                                         |
+---------------------------------------------------------------------------+

 A bank-switched cartridge that occupies 16 KB of address space between
 $8000 and $BFFF. It is controlled by a byte written to $D500-$D5FF. Bit 0
 selects one of two available banks, bit 7 disables the cartridge.

+---------------------------------------------------------------------------+
| Type 28: MegaCart 64 KB cartridge                                         |
+---------------------------------------------------------------------------+

 A bank-switched cartridge that occupies 16 KB of address space between
 $8000 and $BFFF. It is controlled by a byte written to $D500-$D5FF. Bits 0
 and 1 select one of four available banks, bit 7 disables the cartridge.

+---------------------------------------------------------------------------+
| Type 29: MegaCart 128 KB cartridge                                        |
+---------------------------------------------------------------------------+

 A bank-switched cartridge that occupies 16 KB of address space between
 $8000 and $BFFF. It is controlled by a byte written to $D500-$D5FF.
 Bits 0,1,2 select one of 8 available banks, bit 7 disables the cartridge.

+---------------------------------------------------------------------------+
| Type 30: MegaCart 256 KB cartridge                                        |
+---------------------------------------------------------------------------+

 A bank-switched cartridge that occupies 16 KB of address space between
 $8000 and $BFFF. It is controlled by a byte written to $D500-$D5FF. Four
 lowest bits select one of 16 available banks, bit 7 disables the cartridge.

+---------------------------------------------------------------------------+
| Type 31: MegaCart 512 KB cartridge                                        |
+---------------------------------------------------------------------------+

 A bank-switched cartridge that occupies 16 KB of address space between
 $8000 and $BFFF. It is controlled by a byte written to $D500-$D5FF. Five
 lowest bits select one of 32 available banks, bit 7 disables the cartridge.

+---------------------------------------------------------------------------+
| Type 32: MegaCart 1 MB cartridge                                          |
+---------------------------------------------------------------------------+

 A bank-switched cartridge that occupies 16 KB of address space between
 $8000 and $BFFF. It is controlled by a byte written to $D500-$D5FF. Six
 lowest bits select one of 64 available banks, bit 7 disables the cartridge.

*************** Fin del copy-Paste.

Resumiendo, se trata de un bankswitch con bancos de 16KB, accionado por el bus de datos, y el bit 7 deshabilita el cartridge. Muy similar al cart atarimax, pero con el bus de datos, y bancos de 16K.

Diseño del Megacart

Y aquí se puso complicada la cosa: Jamás pude encontrar un esquemático simple de un Megacart. Así que, me propuse construirlo. Hice muchos test.. Armé varios carts, hasta que finalmente, se me encendió la ampolleta y me resultó... (coro de ángeles)

Se me ocurrió que la base debería ser un cart estándar de 16K. ¿Por qué?, En Altirra, un cart estandar de 16KB también se puede cargar como "16K Megacart". Este cart usa las líneas de dirección de A0 a A12, y usa S4 como A13. Aquí se puede ver un cartridge estandar de 16K, versión eprom estándar:

Atari 16K cart

Luego, se pueden usar flip-flops de manera estándar para las direcciones superiores, de A14 hasta A20.  ¿A20? ¿No será mucho? Sería posible fabricar un cart de 2 MB, el doble de capacidad que un Atarimax...
Decidí hacerlo para eproms estandar de 128/256KB, para empezar.
Llegué a este diseño, que es el que finalmente resultó:

Atari Megacart Schematics

Tal como dije, simple, barato y bonito XD
Sólo tres chips, en mi cart hay más bases y más chips (¡Mucha experimentación!), pero lo básico son 4 chips. Posteriormente lo reduje a tres chips, usando diodos. Y lo puedo reducir aún más, a dos chips, usando una eprom y una GAL, pronto voy a hacerlo.
En el diseño original use un 74LS08, y después lo reemplacé con dos diodos, funciona igual.

Aqui hay una versión con didos en vez del 74LS08 (testeada ok): Versión diodos.

Y una versión con transistor (no testeda): Versión con transistor.

Fotos del cart:

Aquí se ve que reemplacé el LS08.


Uso del software

MegacartStudio Soft

Hice un importante descubrimiento: El software asociado al "Megacart comercial" ("Megacart Studio V5.8") puede generar imágenes estandard de carts megacart, desde 512KB hasta 4MB. Estas imágenes se pueden testear en emuladores. No se necesita ser un experto en código atari para hacer estos multicarts, cualquiera puede hacerlos con este software.

El software se puede descargar desde aquí: http://www.abbuc.de/~bernd/4MB_FLASH_MEGACART/assets/megacartstudiov5.8.zip

El uso es muy simple, permite agregar ejecutables Atari hasta llenar la capacidad del cart disponible.

Se puede editar el título principal, y los nombres de los juegos. Permite salvar la compilación como carts de 512K, 2M o 4M. Pero, se pueden reducir más. Por ejemplo, al hacer una compilación de un solo juego, puede quedar de tamaño menor a 32KB, y el final del archivo queda lleno con FF. Entonces, se puede cortar el archivo, y dejarlo de 32768 bytes, y grabarlo en una eprom de 32K, una 27256. Lo comprobé, funciona en el emulador y en el cart. Es una lástima que el software no ofrezca la opción de auto-start, sería ideal para un solo juego.
Sólo he probado eproms de 128 y 256K, por ahora no tengo eprom más grandes (no hay plata). Hay que experimentar con eprom más grandes, deberían funcionar sin mayores problemas.
Para recortar los archivos (eliminar las FF sobrantes), usé winHex.

Unos pantallazos de compilaciones corriendo en mi Atari:

The Eidolon, el primer cart en formato megacart que me funcionó...

También hay disponibles imágenes de carts Atari en formato megacart, es cosa de buscar, en Atariage encontré varias. Normalmente se usa el formato megacart cuando el juego es grande, 256K y más. Aquí dejo una pequeña compilación de carts en formato megacart: Link

Y aquí dejo algunas compilaciones que yo mismo hice con MegacartStudio. Todas funcionan en Altirra (cargar como megacart), y en el cart: Link

Problemas

No todo va a ser perfecto, hay algunos problemas. Algunos juegos no funcionan, hay por ahí algunos que no arrancan (la minoría). El mismo software oficial lo advierte: "It is recommended to execute compatibility tests in emulator".
Y también dice: " If you notice any problem, please change the Loader address (to $400 instead of $700) and try it again." No sé como hacer esto... Pero bueno, normalmente, funciona casi siempre.
Pero esto es casi normal en estos multicarts, puede haber problemas con el uso de la memoria entre el loader y determinado juego. Tengo que testearlo más, cada compilación debe ser verificada. Pero, el 95% de las veces, todo funciona correctamente.

Resumen

Hacer el megacart es un proyecto que busqué durante años, no es algo que hice en un día. Y encontré muy poca información acerca del hardware in internet. Es por esto, que puede haber errores en mis desarrollos y razonamientos. Si alguien quiere hacer algún aporte o comentario, que me mande un mail.

Links:

http://herale.org/
http://www.abbuc.de/~bernd/4MB_FLASH_MEGACART/assets/megacartstudiov5.8.zip
http://ftp.pigwa.net/stuff/emulators_and_utils/8-bit/Atari%20ROM%20Maker/cart.txt

 Yo  SpaceInvader, 4/9/2018
Mail:
gamemasterquilpue@hotmail.com

Home