keoni29 Posted March 12, 2013 Share Posted March 12, 2013 (edited) 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 March 12, 2013 by keoni29 Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted March 12, 2013 Share Posted March 12, 2013 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. Quote Link to comment Share on other sites More sharing options...
yllawwally Posted March 12, 2013 Share Posted March 12, 2013 (edited) Wickeycolumbus beat me to it. Edited March 12, 2013 by yllawwally Quote Link to comment Share on other sites More sharing options...
keoni29 Posted March 12, 2013 Author Share Posted March 12, 2013 Should not be a problem even if I did use counters. If address pin 12 is low the cartridge should not even be selected. Quote Link to comment Share on other sites More sharing options...
keoni29 Posted March 13, 2013 Author Share Posted March 13, 2013 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. Quote Link to comment Share on other sites More sharing options...
Andromeda Stardust Posted March 13, 2013 Share Posted March 13, 2013 (edited) 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 March 13, 2013 by stardust4ever Quote Link to comment Share on other sites More sharing options...
keoni29 Posted March 13, 2013 Author Share Posted March 13, 2013 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. Quote Link to comment Share on other sites More sharing options...
+Random Terrain Posted March 13, 2013 Share Posted March 13, 2013 EDIT: Or just use a Harmony cart... I wondered why it seemed like nobody was mentioning the Harmony Cartridge. Quote Link to comment Share on other sites More sharing options...
Wickeycolumbus Posted March 13, 2013 Share Posted March 13, 2013 I wondered why it seemed like nobody was mentioning the Harmony Cartridge. Well that's not as fun! You learn much more this way. Quote Link to comment Share on other sites More sharing options...
keoni29 Posted March 13, 2013 Author Share Posted March 13, 2013 (edited) And this is way cheaper than a harmony cart. So far I only used parts I got from old electronics. Edited March 13, 2013 by keoni29 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.