Jump to content
Blinky

Cheap 2K/4K X-in-1 menu driven Multicart for Atari 2600

Recommended Posts

I'm not an electronic expert, but I guess the additional circuit is a latch that prevents further bankswitch after the first one.

 

If so, you only need it if you're using a 8Mbit EPROM like the 27C80 in the schematic, having 255 4k games on the cart.

If using the original schematic, in fact, only the upper 128 games would have the bankswitch locked. The advantage of it is that you can have games larger than 4k in the lower half of the eprom (but the games have to be modified to work with the multicart).

If you're using smaller eprom (for 127 4k games or less), you don't need the extra circuit, because you can make the menu itself to lock the bankswitching after the game is selected, and you can do that for each game independently, allowing to mix 4k and larger games in any order (you still need to modify games larger than 4k).

In the source attached previously in this thread, you need to change the values in the "BankList" table. Here is how it looks like in the source:

BankList
    .byte   0,  1,  2,  3,  4,  5,  6,  7,  8,  9
    .byte  10, 11, 12, 13, 14, 15, 16, 17, 18, 19
    .byte  20, 21, 22, 23, 24, 25, 26, 27, 28, 29
    .byte  30, 31, 32, 33, 34, 35, 36, 37, 38, 39
    .byte  40, 41, 42, 43, 44, 45, 46, 47, 48, 49
    .byte  50, 51, 52, 53, 54, 55, 56, 57, 58, 59
    .byte  60, 61, 62, 63, 64, 65, 66, 67, 68, 69
    .byte  70, 71, 72, 73, 74, 75, 76, 77, 78, 79
    .byte  80, 81, 82, 83, 84, 85, 86, 87, 88, 89
    .byte  90, 91, 92, 93, 94, 95, 96, 97, 98, 99
    .byte 100,101,102,103,104,105,106,107,108,109
    .byte 110,111,112,113,114,115,116,117,118,119
    .byte 120,121,122,123,124,125,126,127

If you leave it like that, bankswitching will still be active after a game is loaded, which could cause some 4k games to crash.

If you add 128 to a number in the table, the game in that position will have the bankswitch locked after it's selected.

So, if you only need 4k games, just replace the entire table with the one below, and you won't have any game crash even without the extra circuit.

BankList
    .byte  128, 129, 130, 131, 132, 133, 134, 135, 136, 137
    .byte  138, 139, 140, 141, 142, 143, 144, 145, 146, 147
    .byte  148, 149, 150, 151, 152, 153, 154, 155, 156, 157
    .byte  158, 159, 160, 161, 162, 163, 164, 165, 166, 167
    .byte  168, 169, 170, 171, 172, 173, 174, 175, 176, 177
    .byte  178, 179, 180, 181, 182, 183, 184, 185, 186, 187
    .byte  188, 189, 190, 191, 192, 193, 194, 195, 196, 197
    .byte  198, 199, 200, 201, 202, 203, 204, 205, 206, 207
    .byte  208, 209, 210, 211, 212, 213, 214, 215, 216, 217
    .byte  218, 219, 220, 221, 222, 223, 224, 225, 226, 227
    .byte  228, 229, 230, 231, 232, 233, 234, 235, 236, 237
    .byte  238, 239, 240, 241, 242, 243, 244, 245, 246, 247
    .byte  248, 249, 250, 251, 252, 253, 254, 255

Here is the source code with the table already replaced.
megacardmenu_v2_3--all_games_locked.asm

Remember to set the number of games by changing the "NrTitles" value (this menu software supports up to 127 titles, for more titles you'll need to modify it or use a different one)

; ---------------------------------------------------------------------------
;    These settings control the behaviour of the menu        (Change This)
; ---------------------------------------------------------------------------
FirstTitleBank  = 1                    ; Indicates the real BankNr of the first bank in the menu.
                                       ; When setting this to 4, the menu will load the 5th bank
                                       ; when selecting the first title.
                                       ; By default this would be 1 if bank 0 contains a menu,
                                       ; or 2 if bank 0 would contain a safety net and 1 the menu.

NrTitles        = 127                  ; The actual number of menu items, currently a range of 8 to 230,
                                       ; But since bank 128 to 255 are mirrors of 0-127, this number of
                                       ; Entries/Titles will not be needed.
PAL             = 0                    ; 1 = PAL   0 = NTSC
Edited by alex_79
  • Like 1

Share this post


Link to post
Share on other sites

I do not know how it is possible, but in two Ataris from different manufacturers, and with slightly different speeds, the menu of the program only works well at slower atari. In Brazil it is difficult to find the 74HCT27, I am using 74HC27. 74HC27 will be the cause of instability in faster atari?

Edited by arturfreddy

Share this post


Link to post
Share on other sites

I tested the "megacardmenu_v2_3--all_games_locked" with a set of games that works well, I made adjustments in relation to the amount of games and titles, something strange happens, the menu does not trigger the games correctly and Stella does not work properly.

Share this post


Link to post
Share on other sites

The menu you posted works correctly if it's placed in the first 4k of the eprom. But since you have 30 titles I guess you want the "safe net ROM" (the one in this post) in the first bank so you can use the reset button on the cart.

In that case you should change "FirstTitleBank" value to "2" in the source file.

; ---------------------------------------------------------------------------
;    These settings control the behaviour of the menu        (Change This)
; ---------------------------------------------------------------------------
FirstTitleBank  = 2                    ; Indicates the real BankNr of the first bank in the menu.
                                       ; When setting this to 4, the menu will load the 5th bank
                                       ; when selecting the first title.
                                       ; By default this would be 1 if bank 0 contains a menu,
                                       ; or 2 if bank 0 would contain a safety net and 1 the menu.

NrTitles        = 30                   ; The actual number of menu items, currently a range of 8 to 230,
                                       ; But since bank 128 to 255 are mirrors of 0-127, this number of
                                       ; Entries/Titles will not be needed.
PAL             = 0                    ; 1 = PAL   0 = NTSC

Here is the resulting rom after making that change:
megacard.bin
Let me know if it works.

Share this post


Link to post
Share on other sites
Curious, the menu is offset in relation to the game in a step 5, select the River Raid and access the Enduro, this is happening to everyone.

In the end of the menu items:

I want my mom open Pacman4k

Jaw Breaker open Qbert

Tac Scan restarts the menu

Keystone Kaper open Demon Attack

Lockn Chase open Boing

Pacman4k open Cosmic arc

Qbert open Defender

Share this post


Link to post
Share on other sites

Did you include the "safe net rom" before the menu in the eprom?

You must have the safe net rom in the first 4kb, then the menu, then the 30 games, for a total of 128Kb
With this configuration works fine for me (in Stella emulator).

If I only put the menu and the 30 games (124Kb) I got the behaviour you described (offset by 5).

Share this post


Link to post
Share on other sites

Added the safenet.bin, the latest games (Keystone, pacman 4k, qbert) do not work, the reactor jumps to the River Raid.

 

 

Alex 79, see the result!

 

I tested the binary you posted in Stella and every game works fine here, including Keystone, Pacman4k, Qbert and Reactor.

 

If it doesn't work for you in Stella, ensure you're using the latest version (http://stella.sourceforge.net/downloads.php).

 

If, instead, the problems you described happen on real hardware I can't be of much help as my skills in electronics are quite limited, but there are many experts here on Atariage who surely can figure out what's going on.

 

Share this post


Link to post
Share on other sites

Alex 79, congratulations! I tested the atari! All games work perfectly! Including the reset button!

I'm glad it worked!

 

Alex_79 if I want to make a cartridge using 8K games, the procedure will be the same?

No, with games larger than 4k things complicates a lot. You can't just place existing roms of those games in the eprom. Instead, they need to be disassembled so that the part of the code that handles the bank switching can be modified to work with the multicart scheme.

You need to decide where the game will be on the eprom before modifying it, as it will be hacked to use specific banks of the multicart, and it won't work if you move it in a different position. Moreover, you can't lock the bankswitch as with 4k games after you select them from the menu, so you must also ensure that the rest of the code doesn't accidentally trigger a bankswitch that will cause the game to crash.

 

The design is flexible because allows mixing different size roms in the same multicart, but requires some knowledge of 6502 programming to hack the games larger than 4k to work with it.

Share this post


Link to post
Share on other sites

My latest software on the linker dumps all of my cards, but I can not test compatibility for other cards.

I don't use the same software as Blinky does because he focusses on writing his own flash card. I on the other hand focus on dumping cards.

My software will detect what kind of bankswitching is used and will dump the complete rom.

 

But not much intrest has been shown by people, and at the moment I'm not working on it myself.

  • Like 1

Share this post


Link to post
Share on other sites

I did some studies and tests, I was able to make the cartridge with menu having games of 8K and 4K.

The scheme is not completely adjusted, I used a V29C51002T instead of the emprom to speed up the tests.

post-47443-0-67575900-1479295938_thumb.jpg

arqsaida_old.bin

Edited by arturfreddy
  • Like 1

Share this post


Link to post
Share on other sites

My latest software on the linker dumps all of my cards, but I can not test compatibility for other cards.

I don't use the same software as Blinky does because he focusses on writing his own flash card. I on the other hand focus on dumping cards.

My software will detect what kind of bankswitching is used and will dump the complete rom.

 

But not much intrest has been shown by people, and at the moment I'm not working on it myself.

I think I helped with my last test!

I found a simple way to join 4k and 8k games with a little extra hardware and using the same program.

Share this post


Link to post
Share on other sites

I'm glad it worked!

 

No, with games larger than 4k things complicates a lot. You can't just place existing roms of those games in the eprom. Instead, they need to be disassembled so that the part of the code that handles the bank switching can be modified to work with the multicart scheme.

You need to decide where the game will be on the eprom before modifying it, as it will be hacked to use specific banks of the multicart, and it won't work if you move it in a different position. Moreover, you can't lock the bankswitch as with 4k games after you select them from the menu, so you must also ensure that the rest of the code doesn't accidentally trigger a bankswitch that will cause the game to crash.

 

The design is flexible because allows mixing different size roms in the same multicart, but requires some knowledge of 6502 programming to hack the games larger than 4k to work with it.

I found a simple way to join 4k and 8k games with a little extra hardware and using the same program.

Thank you very much for your help, DrWho198, Blinky, and all who collaborate with this forum!

Share this post


Link to post
Share on other sites

I found a simple way to join 4k and 8k games with a little extra hardware and using the same program.

Thank you very much for your help, DrWho198, Blinky, and all who collaborate with this forum!

 

Arthur, como você fez com as tabelas ? Imaginei que em jogos de 8k vc deve ter pulado um numero da sequencia certo ?

 

Em cartuchos com jogos de somente 4k não entendi a necessidade de usar tabelas, vc pode simplismente usar o numero da seleção para tal, tb não entendi porque tem que ser apartir do 128, seja como for, bastava pegar o numero da seleção e adicionar 128 (acho que 127 para dar certo).

 

Voce manja de ASM ou só a parte do hardware ?

 

Abraço

Share this post


Link to post
Share on other sites

 

Arthur, como você fez com as tabelas ? Imaginei que em jogos de 8k vc deve ter pulado um numero da sequencia certo ?

 

Em cartuchos com jogos de somente 4k não entendi a necessidade de usar tabelas, vc pode simplismente usar o numero da seleção para tal, tb não entendi porque tem que ser apartir do 128, seja como for, bastava pegar o numero da seleção e adicionar 128 (acho que 127 para dar certo).

 

Voce manja de ASM ou só a parte do hardware ?

 

Abraço

Opa, não programo em ASM, talvez um dia, a implementação do F8 foi apenas um pico de inspiração! rsrsrs Abs

Share this post


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

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