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;
|
ostringstream info;
|
||||||
|
|
||||||
info << "E7 cartridge, "
|
info << "E7 cartridge, "
|
||||||
<< (myCart.romBankCount() == 4 ? "four" : "eight")
|
<< (myCart.romBankCount() == 4 ? "four"
|
||||||
|
: myCart.romBankCount() == 6 ? "six" : "eight")
|
||||||
<< " 2K banks ROM + 2K RAM, \n"
|
<< " 2K banks ROM + 2K RAM, \n"
|
||||||
<< " mapped into three segments\n"
|
<< " mapped into three segments\n"
|
||||||
<< "Lower 2K accessible @ $F000 - $F7FF\n"
|
<< "Lower 2K accessible @ $F000 - $F7FF\n"
|
||||||
<< (myCart.romBankCount() == 4
|
<< (myCart.romBankCount() == 4
|
||||||
? " ROM banks 0 - 2 (hotspots $FFE4 to $FFE6)\n"
|
? " ROM banks 0 - 2 (hotspots $FFE4 - $FFE6)\n"
|
||||||
: " ROM Banks 0 - 6 (hotspots $FFE0 to $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"
|
<< " 1K RAM bank 3 (hotspot $FFE7)\n"
|
||||||
<< " $F400 - $F7FF (R), $F000 - $F3FF (W)\n"
|
<< " $F400 - $F7FF (R), $F000 - $F3FF (W)\n"
|
||||||
<< "256B RAM accessible @ $F800 - $F9FF\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 = {
|
static constexpr std::array<const char*, 4> spot_lower_8K = {
|
||||||
"#0 - ROM ($FFE4)", "#1 - ROM ($FFE5)", "#2 - ROM ($FFE6)", "#3 - RAM ($FFE7)"
|
"#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 = {
|
static constexpr std::array<const char*, 8> spot_lower_16K = {
|
||||||
"#0 - ROM ($FFE0)", "#1 - ROM ($FFE1)", "#2 - ROM ($FFE2)", "#3 - ROM ($FFE3)",
|
"#0 - ROM ($FFE0)", "#1 - ROM ($FFE1)", "#2 - ROM ($FFE2)", "#3 - ROM ($FFE3)",
|
||||||
"#4 - ROM ($FFE4)", "#5 - ROM ($FFE5)", "#6 - ROM ($FFE6)", "#7 - RAM ($FFE7)"
|
"#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
|
return myCart.romBankCount() == 4
|
||||||
? spot_lower_8K[idx]
|
? 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)
|
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)
|
else if(size == 16_KB)
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,6 +115,14 @@ void CartridgeE7::checkSwitchBank(uInt16 address)
|
||||||
{
|
{
|
||||||
bank(address & 0x0003);
|
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))
|
else if(romBankCount() == 8 && (address >= 0x0FE0) && (address <= 0x0FE7))
|
||||||
{
|
{
|
||||||
bank(address & 0x0007);
|
bank(address & 0x0007);
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue