mirror of https://github.com/stella-emu/stella.git
fix CartFE to update access flags and counters
This commit is contained in:
parent
3f7db393ba
commit
a015cd9082
|
@ -180,6 +180,7 @@ uInt16 Cartridge::bankOrigin(uInt16 bank) const
|
||||||
{
|
{
|
||||||
// isolate the high 3 address bits, count them and
|
// isolate the high 3 address bits, count them and
|
||||||
// select the most frequent to define the bank origin
|
// select the most frequent to define the bank origin
|
||||||
|
// TODO: origin for banks smaller than 4K
|
||||||
const int intervals = 0x8000 / 0x100;
|
const int intervals = 0x8000 / 0x100;
|
||||||
uInt32 offset = bank * bankSize();
|
uInt32 offset = bank * bankSize();
|
||||||
//uInt16 addrMask = (4_KB - 1) & ~(bankSize(bank) - 1);
|
//uInt16 addrMask = (4_KB - 1) & ~(bankSize(bank) - 1);
|
||||||
|
@ -211,7 +212,7 @@ uInt16 Cartridge::bankOrigin(uInt16 bank) const
|
||||||
maxIdx = idx;
|
maxIdx = idx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return maxIdx << 13 | 0x1000 | (offset & 0xfff);
|
return maxIdx << 13 | 0x1000; //| (offset & 0xfff);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -49,11 +49,6 @@ void CartridgeFE::install(System& system)
|
||||||
System::PageAccess access(this, System::PageAccessType::READWRITE);
|
System::PageAccess access(this, System::PageAccessType::READWRITE);
|
||||||
for(uInt16 addr = 0x180; addr < 0x200; addr += System::PAGE_SIZE)
|
for(uInt16 addr = 0x180; addr < 0x200; addr += System::PAGE_SIZE)
|
||||||
mySystem->setPageAccess(addr, access);
|
mySystem->setPageAccess(addr, access);
|
||||||
|
|
||||||
// Map all of the cart accesses to call peek and poke
|
|
||||||
access.type = System::PageAccessType::READ;
|
|
||||||
for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE)
|
|
||||||
mySystem->setPageAccess(addr, access);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -104,6 +99,19 @@ bool CartridgeFE::bank(uInt16 bank)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
myBankOffset = bank << 12;
|
myBankOffset = bank << 12;
|
||||||
|
|
||||||
|
System::PageAccess access(this, System::PageAccessType::READ);
|
||||||
|
|
||||||
|
// Setup the page access methods for the current bank
|
||||||
|
// Map all of the cart accesses to call peek and poke
|
||||||
|
for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE)
|
||||||
|
{
|
||||||
|
access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)];
|
||||||
|
access.romPeekCounter = &myRomAccessCounter[addr & 0x0FFF];
|
||||||
|
access.romPokeCounter = &myRomAccessCounter[addr & 0x0FFF + myImage.size()];
|
||||||
|
mySystem->setPageAccess(addr, access);
|
||||||
|
}
|
||||||
|
|
||||||
return myBankChanged = true;
|
return myBankChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,7 +168,7 @@ bool CartridgeFE::load(Serializer& in)
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
{
|
{
|
||||||
cerr << "ERROR: CartridgeF8SC::load" << endl;
|
cerr << "ERROR: CartridgeFE::load" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue