[Coco] ROMPak transfer to disk with cart2ram?

Robert Gault robert.gault at worldnet.att.net
Tue Jan 13 09:35:28 EST 2004


Willard Goosey wrote:
>>Date: Mon, 12 Jan 2004 04:57:07 -0500
>>From: Robert Gault <robert.gault at worldnet.att.net>
>>The flow should be 1) compile TransferA and save, compile TransferB and 
>>save; 2) use TransferA to copy ROM pak and save ROM pak. Then to play 
>>the pak the flow should be 1) loadm pak copy; 2) loadm TransferB and 
>>move pak to normal location; 3) run pak.
> 
> 
> OK, yeah.  I missed steps 2 & 3.
> 
>>Obviously not all paks will be happy with this or like a Coco3. 
> 
> 
> The pak itself runs fine.  It's just the last working ROMPak I've got
> that I haven't transfered to disk.  It's not like I ever play it or
> anything.  I'm just a completist.
> 
> 
>>If the pak contains a copy protection scheme, it will need to be
>>patched. That will best be done before it is saved to disk. Any patch
>>location used on the original ROM pak will need to be offset just as
>>the pak was during copy.
>>
> 
> And since Neil's list of patches didn't say where the ROMpak was
> loaded into before patching...
> 
> 
>>It looks like TransferA may need to be modified to reset $FF23 to its 
>>original state. Since I provided source code, a simple modification of 
>>the program to save the original state of $FF23 and restore it should be 
>>trivial.
> 
> 
> (looks up what's at $FF23.) Oh, the cartridge interrupt flag.  Yeah,
> that probably needs to be saved and restored.  
> 
> 
>>I don't know if the use of RESET will be detrimental. The code as posted 
>>did work for me but is certainly not written in stone. Modify it if needed.
> 
> 
> I'm still kinda confused, but that's partially because it's 3 AM.
> I'll add in the code for $FF23 and see if that helps.  I'm getting
> very strange results right now, and I can't tell if I'm doing
> something wrong or it's just copy protection biting me.
> 
> Willard

All ROM paks load to $C000. If you have patches relative to $C000 and 
move the ROM pak to $3000 (offset -$9000) and have a patch for ex. 
$CA00, the patch should load to $3A00.

Most of us can't do this math in our heads, so use a calculator or 
program. If you want the Coco to do the calculation, you will need to 
convert to modulo math since the Coco doesn't like negative $ values. 
So, that gives you, POKE &HCA00+&H7000,$mn. $CA00+$7000=$13A00 and the 
Coco conveniently drops the $10000 to give $3A00.




More information about the Coco mailing list