MDM scheme now uses hotspots from $800-$BFF instead of $800-$FFF.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3001 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2014-10-01 22:36:15 +00:00
parent ab2e086fe0
commit 5959f69405
3 changed files with 11 additions and 4 deletions

View File

@ -15,7 +15,9 @@
4.1.1 to 4.2: (xxx xx, 2014)
* Fixed 'MDM' scheme to trigger bankswitching on writes to hotspots
(previously it only triggered on reads).
(previously it only triggered on reads). Also, the scheme has been
modified as originally designed by E. Blink; hotspots are now in the
range $800-$BFF instead of $800-$FFF.
-Have fun!

View File

@ -89,7 +89,8 @@ uInt8 CartridgeMDM::peek(uInt16 address)
{
// Because of the way we've set up accessing above, we can only
// get here when the addresses are from 0x800 - 0xFFF
bank(address & 0x0FF);
if(address < 0xC00)
bank(address & 0x0FF);
int hotspot = ((address & 0x0F00) >> 8) - 8;
return myHotSpotPageAccess[hotspot].device->peek(address);
@ -102,7 +103,8 @@ bool CartridgeMDM::poke(uInt16 address, uInt8 value)
// about those below $1000
if(!(address & 0x1000))
{
bank(address & 0x0FF);
if(address < 0xC00)
bank(address & 0x0FF);
int hotspot = ((address & 0x0F00) >> 8) - 8;
myHotSpotPageAccess[hotspot].device->poke(address, value);

View File

@ -33,7 +33,10 @@
http://atariage.com/forums/topic/56073-cheap-2k4k-x-in-1-menu-driven-multicart-for-atari-2600
The hotspots in this scheme are read/write at addresses $800 to $FFF, where
Note that this code implements a modified scheme (as designed by E. Blink).
In this version, the hotspots are from $800 to $BFF instead of $800 to $FFF.
The hotspots in this scheme are read/write at addresses $800 to $BFF, where
the lower byte determines the actual 4K bank switch to. In the current
implementation, only 128 banks are supported, so selecting bank 128+ results
in further bankswitching being locked. A reset line is used to reset to