mirror of https://github.com/stella-emu/stella.git
fixed 3E bankswitching
This commit is contained in:
parent
8525c605f4
commit
9685887833
|
@ -71,3 +71,18 @@ uInt8 Cartridge3E::peek(uInt16 address)
|
||||||
|
|
||||||
return CartridgeEnhanced::peek(peekAddress);
|
return CartridgeEnhanced::peek(peekAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool Cartridge3E::poke(uInt16 address, uInt8 value)
|
||||||
|
{
|
||||||
|
uInt16 pokeAddress = address;
|
||||||
|
address &= ROM_MASK;
|
||||||
|
|
||||||
|
if(address < 0x0040) // TIA access
|
||||||
|
{
|
||||||
|
checkSwitchBank(address, value);
|
||||||
|
return mySystem->tia().poke(address, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return CartridgeEnhanced::poke(pokeAddress, value);
|
||||||
|
}
|
||||||
|
|
|
@ -113,6 +113,15 @@ class Cartridge3E : public CartridgeEnhanced
|
||||||
*/
|
*/
|
||||||
uInt8 peek(uInt16 address) override;
|
uInt8 peek(uInt16 address) override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Change the byte at the specified address to the given value
|
||||||
|
|
||||||
|
@param address The address where the value should be stored
|
||||||
|
@param value The value to be stored at the address
|
||||||
|
@return True if the poke changed the device address space, else false
|
||||||
|
*/
|
||||||
|
bool poke(uInt16 address, uInt8 value) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool checkSwitchBank(uInt16 address, uInt8 value) override;
|
bool checkSwitchBank(uInt16 address, uInt8 value) override;
|
||||||
|
|
||||||
|
|
|
@ -232,7 +232,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment)
|
||||||
uInt32 bankOffset = uInt32(mySize) + (ramBank << (myBankShift - 1));
|
uInt32 bankOffset = uInt32(mySize) + (ramBank << (myBankShift - 1));
|
||||||
|
|
||||||
// Remember what bank is in this segment
|
// Remember what bank is in this segment
|
||||||
myCurrentSegOffset[segment] = bank << myBankShift;
|
myCurrentSegOffset[segment] = uInt32(mySize) + (ramBank << myBankShift);
|
||||||
|
|
||||||
// Set the page accessing method for the RAM writing pages
|
// Set the page accessing method for the RAM writing pages
|
||||||
uInt16 fromAddr = (ROM_OFFSET + segmentOffset + myWriteOffset) & ~System::PAGE_MASK;
|
uInt16 fromAddr = (ROM_OFFSET + segmentOffset + myWriteOffset) & ~System::PAGE_MASK;
|
||||||
|
|
Loading…
Reference in New Issue