Mega-Cart

Modding and Technical Issues

Moderator: Moderators

User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

6502dude wrote:Demon Attack, Atlantis, and Dragonfire are now working on the All-in-one-Cart :D

I had to patch each game to fix the problem.

Fortunately, this only required one byte to be changed in each ROM image...
Could you tell us what alteration was done exactly?
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

eslapion wrote:
6502dude wrote:Demon Attack, Atlantis, and Dragonfire are now working on the All-in-one-Cart :D

I had to patch each game to fix the problem.

Fortunately, this only required one byte to be changed in each ROM image...
Could you tell us what alteration was done exactly?
The author of these programs included a start up routine to write #$00 to
all addresses from $00FF to $A0FF. He/she used indexed indirect addressing with Y register.

I suspect this was done as a copy protection measure, to prevent people from running game from RAM.

By using this range, there were writes occurring in IO2 & IO3 areas.
Although base reference address is different for each game, it is the same routine for all 3 games.

Writing 00 to video memory is needed to clear screen for subsequent image set up. So, I could not just use NOP in place of author's routine.

So, I simply changed top page of routine from #$A0 to #$98, which does not hit my software based reset (the one that is not supposed to work :wink: )

Unfixed, I don't think these games will run in any "multi-cart" design (unless it has hardware based switches - which just adds to cost and inconvience for end user).
Plus one would need very quick relexes to flip a switch after games starts and before code starts to execute overwrite routine.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

6502dude wrote:The author of these programs included a start up routine to write #$00 to
all addresses from $00FF to $A0FF. He/she used indexed indirect addressing with Y register.

I suspect this was done as a copy protection measure, to prevent people from running game from RAM.

By using this range, there were writes occurring in IO2 & IO3 areas.
Although base reference address is different for each game, it is the same routine for all 3 games.

Writing 00 to video memory is needed to clear screen for subsequent image set up. So, I could not just use NOP in place of author's routine.

So, I simply changed top page of routine from #$A0 to #$98, which does not hit my software based reset (the one that is not supposed to work :wink: )

Unfixed, I don't think these games will run in any "multi-cart" design (unless it has hardware based switches - which just adds to cost and inconvience for end user).
Plus one would need very quick relexes to flip a switch after games starts and before code starts to execute overwrite routine.
I am a bit puzzled here. Wouldn't poking zeros into the 6522 and 6560 control registers cause some serious problems? It is also possible, on the other hand that there is a good reason for poking 0s in these registers.

I also note that page 0 is not subjected to that treatment.

If your "software based reset that is not supposed to work" works fine then it is either because what you put on your board is different from what's on your plan or because the pulse that triggers it lasts a lot longer than 1us. I suspect the latter.

If in fact it is the latter then it should be of absolutely no concern...

However, there is another potential problem with this system. Even when not triggered, it pulls the reset line down to 4.2v. I am sure you have a multimeter to verify that.

Since the VIC is supposed to be compatible with both TTL and CMOS types of signaling then it is quite possible that it doesn't matter at all but I can't say for sure.

Personnally, I would recommend you use an HCT14 instead of the standard LS14 or normal 7414 to make that circuit.

Unlike standard TTL/LS chips which have a 0.3-3.5V swing on their outputs, HCT chips (high speed CMOS witgh TTL compatible inputs) have a full 0-5V swing on their outputs so this problem is completely eliminated.

P.S.: Honestly, I put this circuit on a breadboard here and a 1us pulse does not trigger a reset... I was able to get one with a 100us pulse but to anyone that still feels like a blink of an eye...
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

eslapion wrote: I am a bit puzzled here. Wouldn't poking zeros into the 6522 and 6560 control registers cause some serious problems? It is also possible, on the other hand that there is a good reason for poking 0s in these registers.
Don't blame me, I didn't wrtite the routine :lol:
All of the poking occurs before registers are set up for the games. So, no big deal.
I also note that page 0 is not subjected to that treatment.
Zero page is used by indirect Y addressing. In the case of Atlantis, $8E and $8F are used for the loop to do all the writes.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

6502dude wrote:...Don't blame me, I didn't wrtite the routine :lol:...
I don't blame anyone, I just observe. Just like the Dragnet guys said: "Just the facts maam."
Zero page is used by indirect Y addressing. In the case of Atlantis, $8E and $8F are used for the loop to do all the writes.
Makes perfect sense to skip this page then.

Also, since this loop pokes all the way up to $A0FF, this would normally destroy the code from the first page of the game itself thereby protecting against running in RAM.
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

6502dude wrote:...Final product will be done on printed circuit board prepared professionally by a quality firm, which specialized in PCB production.

I would like to get an idea of how many people may be interested in purchasing one of these units.

Objective will be to keep final price under $100US.
If you can, I suggest you get these people to use as much surface mount chips as possible. It reduces the footprint on your PCBs and therefore the cost of your boards and the chips themselves are cheaper.

If possible, I also suggest to put chips on both sides of the board, to save even more footprint space.

You indicated you did not have any problems with the faster skinny DIP SRAM chip. I never did have problems myself with them. However, Dragos did report that my first hand made ultimate expander which has a surface mount version of such a chip (from Cypress) did cause problems with one of his VICs. No exact clue why but I suspect the very high dv/dt of these chips may cause ringing on the data bus.
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

eslapion wrote:If you can, I suggest you get these people to use as much surface mount chips as possible. It reduces the footprint on your PCBs and therefore the cost of your boards and the chips themselves are cheaper.

If possible, I also suggest to put chips on both sides of the board, to save even more footprint space.
Thanks for the tips. :)

Since you have worked good quality PCB shops, can you recommend ones which would do a good job?
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
dragos
Vic 20 Afficionado
Posts: 479
Joined: Mon Nov 21, 2005 6:41 pm

case

Post by dragos »

And please spend a little time making it fit a vic cart casing.... Be nice to have something that looks good too.....
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

6502dude wrote:Since you have worked good quality PCB shops, can you recommend ones which would do a good job?
I have used the services of APCircuits in Alberta for making my low cost prototypes. See : http://www.apcircuits.com/

They are pretty much the cheapest for small batches of standard boards.

For my full quality boards with gold plating on the edge connector, I have used the services of Multifor here in Quebec. See : http://www.multifor.com/

Of course, you need to have industry standard gerber files ready.

I created my boards using Altium DXP 6.
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

Here is an update for this weekend's progress:

Quackers NTSC version has been tested and works fine. Thanks to NBLA000 for this conversion!

Super Expander & Vic-Mon have been combined into single A000 image tested and work fine in ROM area. Testing is in progress to use both images with expanded RAM.

Note, Super Expander & Vic-mon run from ROM with full access to 3K RAM expansion work fine. The RAM option is intended for access to expanded ram for 24K RAM +3K + 3.5K use with Vic-mon & Super Expander.

Easter egg option has been tested and works 100% :!:

Dragonfire, Demon Attack, & Atlantis now menu supported!

Over a dozen tests & confirmations have been done.

Rom image count is now at 199 games / applications as verified working.

I have had the pleasure of testing with All-in-one-Cart (or MegaCart) menu. It is phenomenal :D
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

6502dude wrote:Super Expander & Vic-Mon have been combined into single A000 image tested and work fine in ROM area. Testing is in progress to use both images with expanded RAM.
That is something I had already done for a few users of the ultimate expander.

You should also be able to combine the $6000 version of VICMON with Programmer's Aid in a single $6000-$7FFF image.

Programmer's Aid can also combine with Schema & Boray's utility cart in BLK3.

You should also be able to combine VICMON for $B000 with Schema & Boray's utility cart in BLK5 and also Basic V4 should also combine well with VICMON for $B000.
Last edited by eslapion on Tue Jul 17, 2007 8:22 pm, edited 1 time in total.
Doppleganger
Vic 20 Dabbler
Posts: 77
Joined: Tue May 08, 2007 2:12 pm
Website: http://www.doppleganger.org
Location: Phelps, NY
Occupation: Deskside Geek

Post by Doppleganger »

How about...

"All Your Carts Are Belong To Us"?

Catchy? :)
-Jay
Vic-20 User Since 1982'ish.
User avatar
eslapion
ultimate expander
Posts: 5458
Joined: Fri Jun 23, 2006 7:50 pm
Location: Canada
Occupation: 8bit addict

Post by eslapion »

I just checked the pricing for OTP/PROMs vs UV erasable EPROMs. Both are programmed in exactly the same manner and are fully compatible with one another once programmed.

However, OTP (One Time Programming) PROMs cannot be erased willfully or otherwise and they are much cheaper than erasable chips.

I suspect it could have a good downward impact on the final cost of the megacart if you used OTP/PROMs instead of UV erasable EPROMs. Just make sure your final version is truly final as no upgrades are possible afterwards unless you throw away the older chips.

Digikey sells 8Mbit OTP/PROMs for 6.50$ each while UV EPROMs are around 10$ each.
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

eslapion wrote:I just checked the pricing for OTP/PROMs vs UV erasable EPROMs. Both are programmed in exactly the same manner and are fully compatible with one another once programmed.

However, OTP (One Time Programming) PROMs cannot be erased willfully or otherwise and they are much cheaper than erasable chips.

I suspect it could have a good downward impact on the final cost of the megacart if you used OTP/PROMs instead of UV erasable EPROMs. Just make sure your final version is truly final as no upgrades are possible afterwards unless you throw away the older chips.

Digikey sells 8Mbit OTP/PROMs for 6.50$ each while UV EPROMs are around 10$ each.
Thanks.

I sourced some 27C801s for about $4.00 each.

I'd like the idea of using eproms so if in the future there is a major update, the MegaCart owners be able to do a field update with an eprom swap.

This is not as slick as flash update, but it is workable.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
6502dude
megacart
Posts: 1581
Joined: Wed Dec 01, 2004 9:53 am

Post by 6502dude »

Here is an update on Mega-Cart progress:

- piggy back chips for 3K Expansion addition were removed and small daughterboard added to prototype (final production will be single board)
- NVRAM added (thanks to eslapion for this idea)
- Menu now stores favourities slections list to NVRAM rather than disk and it works quite nicely!
- 3K RAM expansion still present in /RAM1 /RAM2 /RAM3
- NVRAM present in IO2 @ 1K and IO3 @ 128 bytes

Adding up all memory expansion spots, the base Vic-20 goes from 3,583 bytes of memory to 40,575 bytes of memory.

Easy Load Turbo supports multiple configurations:
----- 3.5K Unexpanded mode
----- 3.5K + 3K mode
----- 3.5K + 8K mode
----- 3.5K + 16K mode
----- 3.5K + 24K mode
----- 3.5K + 32K mode

Work continues on testing and adding menu enhacements.
Image Mega-Cart: the ultimate cartridge for your Commodore Vic-20
Post Reply