mirror of https://github.com/stella-emu/stella.git
added E7 support for 12K ROMs
This commit is contained in:
parent
3fa692dee2
commit
187979a2ae
|
@ -30,13 +30,16 @@ CartridgeE7Widget::CartridgeE7Widget(
|
|||
ostringstream info;
|
||||
|
||||
info << "E7 cartridge, "
|
||||
<< (myCart.romBankCount() == 4 ? "four" : "eight")
|
||||
<< (myCart.romBankCount() == 4 ? "four"
|
||||
: myCart.romBankCount() == 6 ? "six" : "eight")
|
||||
<< " 2K banks ROM + 2K RAM, \n"
|
||||
<< " mapped into three segments\n"
|
||||
<< "Lower 2K accessible @ $F000 - $F7FF\n"
|
||||
<< (myCart.romBankCount() == 4
|
||||
? " ROM banks 0 - 2 (hotspots $FFE4 to $FFE6)\n"
|
||||
: " ROM Banks 0 - 6 (hotspots $FFE0 to $FFE6)\n")
|
||||
? " ROM banks 0 - 2 (hotspots $FFE4 - $FFE6)\n"
|
||||
: myCart.romBankCount() == 6
|
||||
? " ROM Banks 0 - 4 (hotspots $FFE0/$FFE1\n and $FFE4 - $FFE6)\n"
|
||||
: " ROM Banks 0 - 6 (hotspots $FFE0 - $FFE6)\n")
|
||||
<< " 1K RAM bank 3 (hotspot $FFE7)\n"
|
||||
<< " $F400 - $F7FF (R), $F000 - $F3FF (W)\n"
|
||||
<< "256B RAM accessible @ $F800 - $F9FF\n"
|
||||
|
@ -205,6 +208,10 @@ const char* CartridgeE7Widget::getSpotLower(int idx)
|
|||
static constexpr std::array<const char*, 4> spot_lower_8K = {
|
||||
"#0 - ROM ($FFE4)", "#1 - ROM ($FFE5)", "#2 - ROM ($FFE6)", "#3 - RAM ($FFE7)"
|
||||
};
|
||||
static constexpr std::array<const char*, 6> spot_lower_12K = {
|
||||
"#0 - ROM ($FFE0)", "#1 - ROM ($FFE1)",
|
||||
"#2 - ROM ($FFE4)", "#3 - ROM ($FFE5)", "#4 - ROM ($FFE6)", "#5 - RAM ($FFE7)"
|
||||
};
|
||||
static constexpr std::array<const char*, 8> spot_lower_16K = {
|
||||
"#0 - ROM ($FFE0)", "#1 - ROM ($FFE1)", "#2 - ROM ($FFE2)", "#3 - ROM ($FFE3)",
|
||||
"#4 - ROM ($FFE4)", "#5 - ROM ($FFE5)", "#6 - ROM ($FFE6)", "#7 - RAM ($FFE7)"
|
||||
|
@ -212,7 +219,9 @@ const char* CartridgeE7Widget::getSpotLower(int idx)
|
|||
|
||||
return myCart.romBankCount() == 4
|
||||
? spot_lower_8K[idx]
|
||||
: spot_lower_16K[idx];
|
||||
: myCart.romBankCount() == 6
|
||||
? spot_lower_12K[idx]
|
||||
: spot_lower_16K[idx];
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -98,7 +98,10 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si
|
|||
}
|
||||
else if(size == 12_KB)
|
||||
{
|
||||
type = Bankswitch::Type::_FA;
|
||||
if(isProbablyE7(image, size))
|
||||
type = Bankswitch::Type::_E7;
|
||||
else
|
||||
type = Bankswitch::Type::_FA;
|
||||
}
|
||||
else if(size == 16_KB)
|
||||
{
|
||||
|
|
|
@ -115,6 +115,14 @@ void CartridgeE7::checkSwitchBank(uInt16 address)
|
|||
{
|
||||
bank(address & 0x0003);
|
||||
}
|
||||
else if(romBankCount() == 6 && (address >= 0x0FE0) && (address <= 0x0FE7))
|
||||
{
|
||||
static constexpr std::array<int, 8> banks = {
|
||||
0, 1, 0, 1, 2, 3, 4 ,5
|
||||
};
|
||||
|
||||
bank(banks[address & 0x0007]);
|
||||
}
|
||||
else if(romBankCount() == 8 && (address >= 0x0FE0) && (address <= 0x0FE7))
|
||||
{
|
||||
bank(address & 0x0007);
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue