mirror of https://github.com/stella-emu/stella.git
Updated FA2 scheme to include 28KB ROMs.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2432 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
bccac33a55
commit
56f22a2220
|
@ -380,7 +380,7 @@ string Cartridge::autodetectType(const uInt8* image, uInt32 size)
|
||||||
else
|
else
|
||||||
type = "F6";
|
type = "F6";
|
||||||
}
|
}
|
||||||
else if(size == 24*1024) // 24K
|
else if(size == 24*1024 || size == 28*1024) // 24K & 28K
|
||||||
{
|
{
|
||||||
type = "FA2";
|
type = "FA2";
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,22 +25,27 @@
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
CartridgeFA2::CartridgeFA2(const uInt8* image, uInt32 size, const Settings& settings)
|
CartridgeFA2::CartridgeFA2(const uInt8* image, uInt32 size, const Settings& settings)
|
||||||
: Cartridge(settings)
|
: Cartridge(settings),
|
||||||
|
mySize(size)
|
||||||
{
|
{
|
||||||
|
// Allocate array for the ROM image
|
||||||
|
myImage = new uInt8[mySize];
|
||||||
|
|
||||||
// Copy the ROM image into my buffer
|
// Copy the ROM image into my buffer
|
||||||
memcpy(myImage, image, BSPF_min(24576u, size));
|
memcpy(myImage, image, mySize);
|
||||||
createCodeAccessBase(24576);
|
createCodeAccessBase(mySize);
|
||||||
|
|
||||||
// This cart contains 256 bytes extended RAM @ 0x1000
|
// This cart contains 256 bytes extended RAM @ 0x1000
|
||||||
registerRamArea(0x1000, 256, 0x100, 0x00);
|
registerRamArea(0x1000, 256, 0x100, 0x00);
|
||||||
|
|
||||||
// Remember startup bank
|
// Remember startup bank
|
||||||
myStartBank = 5;
|
myStartBank = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
CartridgeFA2::~CartridgeFA2()
|
CartridgeFA2::~CartridgeFA2()
|
||||||
{
|
{
|
||||||
|
delete[] myImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -131,6 +136,12 @@ uInt8 CartridgeFA2::peek(uInt16 address)
|
||||||
bank(5);
|
bank(5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x0FFB:
|
||||||
|
// Set the current bank to the seventh 4k bank
|
||||||
|
// This is only available on 28K ROMs
|
||||||
|
if(mySize == 28*1024) bank(6);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -190,6 +201,12 @@ bool CartridgeFA2::poke(uInt16 address, uInt8)
|
||||||
bank(5);
|
bank(5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x0FFB:
|
||||||
|
// Set the current bank to the seventh 4k bank
|
||||||
|
// This is only available on 28K ROMs
|
||||||
|
if(mySize == 28*1024) bank(6);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -240,7 +257,7 @@ uInt16 CartridgeFA2::bank() const
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
uInt16 CartridgeFA2::bankCount() const
|
uInt16 CartridgeFA2::bankCount() const
|
||||||
{
|
{
|
||||||
return 6;
|
return (mySize / 4096);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -264,7 +281,7 @@ bool CartridgeFA2::patch(uInt16 address, uInt8 value)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
const uInt8* CartridgeFA2::getImage(int& size) const
|
const uInt8* CartridgeFA2::getImage(int& size) const
|
||||||
{
|
{
|
||||||
size = 24576;
|
size = mySize;
|
||||||
return myImage;
|
return myImage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ class System;
|
||||||
This is an extended version of the CBS RAM Plus bankswitching scheme
|
This is an extended version of the CBS RAM Plus bankswitching scheme
|
||||||
supported by the Harmony cartridge.
|
supported by the Harmony cartridge.
|
||||||
|
|
||||||
There are six 4K banks and 256 bytes of RAM.
|
There are six (or seven) 4K banks and 256 bytes of RAM.
|
||||||
|
|
||||||
@author Chris D. Walton
|
@author Chris D. Walton
|
||||||
@version $Id$
|
@version $Id$
|
||||||
|
@ -143,11 +143,14 @@ class CartridgeFA2 : public Cartridge
|
||||||
// Indicates which bank is currently active
|
// Indicates which bank is currently active
|
||||||
uInt16 myCurrentBank;
|
uInt16 myCurrentBank;
|
||||||
|
|
||||||
// The 24K ROM image of the cartridge
|
// The 24K/28K ROM image of the cartridge
|
||||||
uInt8 myImage[24576];
|
uInt8* myImage;
|
||||||
|
|
||||||
// The 256 bytes of RAM on the cartridge
|
// The 256 bytes of RAM on the cartridge
|
||||||
uInt8 myRAM[256];
|
uInt8 myRAM[256];
|
||||||
|
|
||||||
|
// Size of the ROM image
|
||||||
|
uInt32 mySize;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue