Jump to content
IGNORED

Atari2600 - Programmable multicartridge. Bankswitching circuitry?


keoni29

Recommended Posts

 

I made a multicartridge that can hold up to two 4k atari2600 games that do not use bankswitching. Tested it and it works fine with every game I tested it with (yeah I finally played air raid on the real hardware)

Before I made this multicartridge I made a cardreader that can dump rom images from atari2600 cartridges and dump them to my pc over usb serial. Now it can also write roms to on of the 4k banks on the multicartridge. I want to be able to play 8k games that use bankswitching as well, but I don't know what the bankswitching logic is supposed to be like. Can anyone help me with that?

 

Edit: I want to have F8 and activision 8k types at the very least. Can this be implemented using a 20Mhz microcontroller?

Edited by keoni29
Link to comment
Share on other sites

 

I made a multicartridge that can hold up to two 4k atari2600 games that do not use bankswitching. Tested it and it works fine with every game I tested it with (yeah I finally played air raid on the real hardware)

Before I made this multicartridge I made a cardreader that can dump rom images from atari2600 cartridges and dump them to my pc over usb serial. Now it can also write roms to on of the 4k banks on the multicartridge. I want to be able to play 8k games that use bankswitching as well, but I don't know what the bankswitching logic is supposed to be like. Can anyone help me with that?

 

Edit: I want to have F8 and activision 8k types at the very least. Can this be implemented using a 20Mhz microcontroller?

 

Very cool project, I always like to see things like this :)

 

This should be a helpful link, it implements the F8 scheme in 3 TTL chips. There are also schematics for F6 and PB bankswitching on the same site.

 

http://www94.pair.com/jsoper/bankswitch_f8.html

 

I'm assuming you're using binary counters to handle the address bus on your arduino board, which is a slight issue once you get bankswitching involved. Since (for an F8 cartridge) you need to hit either $1FF8 or $1FF9 to select the bank you want to address, you'd need a way to actually select the address you want to read/write instead of just incrementing it. You would probably need a loop that increments the registers thousands of times until it's at the desired address.

 

I'm not sure about a 20 MHz microcontroller but it should be possible if it was fast enough. The Harmony cartridge supplies not only the bankswitching logic, but also the ROM data to the 2600 using only an ARM processor.

 

In most of the homebrew cartridges that use bankswitching, programmable logic is used. You may want to look into that.

Link to comment
Share on other sites

Correction: I am not using counters, but 4 bit d-type flipflops to expand the address bus. This way I can switch banks easily. I made a function called putAddress which loads the address into two 4bit registers and puts the remaining 4 high significant bits on the last 4 address lines. Works like a charm.

In case I did use a counter IC: Going trough a loop thousands of times before switching banks will not be a huge problem since the arduino runs at 16Mhz, so 16000.000 instructions are carried out every second. 4000 loops of toggling the clock pin of a counter will take less than a second.

Link to comment
Share on other sites

You can always opt for a manual bankswitch by using DIP switches. A multicart with bootloader combined with a series of unmodified games may not work as expected (say for instance you have a bootloader on bank 1 of a 32kb ROM, and you use the bootloader to select one of seven games in the remaining banks: if the unmodified 4k game attempts to read certain addresses towards the back of the ROM, it may trigger another bank switch which will likely crash the game). For 4k games, if you want to make a multicart, you could always stuff a larger EPROM into a 4k cartridge and tie the LSB lines to a set of DIP switches mounted on the back of the cart. For example, a 32kb EPROM with a set of three switches could select 32/4 or 8 different games. Each combination of switches would result in loading a different game. If you wanted to support 8kb games, you would need an 8kb donor cart, then divide the EPROM into 8kb banks instead of 4kb chunks. 4kb games would need to be duplicated twice to fill in each 8kb bank. That way, if a bank swap occurred, it would not disrupt the game logic becase the data in the upper 4kb is identical to the lower 4kb. Again, you would divide the EPROM by 8kb, and you need a dip switch for each available LSB address line. Beware bigger ROMs likely have a different pinout so extensive rewiring may be necessary. Someone on NintendoAge posted a thread about a Super Mario Brothers 1, 2, 3, and lost levels Multicart he made using an MMC3 board + an additional custom bankswitch circuit (the EPROM was divided using 256kb banks and games were selected by resetting the console - the reset signal activated a 4-bit counter on a daughter board inside the cart, which controlled the LSB of the ROM, manually switching from one bank to the next - this is not possible on the 2600 since the Atari does not have a true reset switch, so you'll have to resort to physical DIP switches on the cart to swap banks). I wouldn't recommend flipping the DIP switches while the game is running, although I suppose randomly bank switching between different games might cause the Atari to glitch or freeze in extraordinary ways, mua-ha-ha!

 

EDIT: Or just use a Harmony cart...

Edited by stardust4ever
Link to comment
Share on other sites

First of all: My multicart has an 8k SRAM chip and not an eprom. It already has a switch for manual bankswitching (selecting one of two 4k games.) I want some bankswitching circuitry that can be deactivated using a switch if the bank should be selected manually. Throw in another switch for that and we're golden.

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