mirror of https://github.com/stella-emu/stella.git
initial commit (removed directPeek/PokeBase)
This commit is contained in:
parent
d9c8750d01
commit
6b900f2ba0
|
@ -119,7 +119,7 @@ bool CartridgeCM::bank(uInt16 bank, uInt16)
|
|||
// Lower 2K (always ROM)
|
||||
for(uInt16 addr = 0x1000; addr < 0x1800; addr += System::PAGE_SIZE)
|
||||
{
|
||||
access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)];
|
||||
//access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)];
|
||||
access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)];
|
||||
access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)];
|
||||
access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize];
|
||||
|
@ -133,23 +133,23 @@ bool CartridgeCM::bank(uInt16 bank, uInt16)
|
|||
|
||||
if(mySWCHA & 0x10)
|
||||
{
|
||||
access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)];
|
||||
//access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)];
|
||||
access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)];
|
||||
access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)];
|
||||
access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize];
|
||||
}
|
||||
else
|
||||
{
|
||||
access.directPeekBase = &myRAM[addr & 0x7FF];
|
||||
//access.directPeekBase = &myRAM[addr & 0x7FF];
|
||||
access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x07FF)];
|
||||
access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x07FF)];
|
||||
access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x07FF) + myAccessSize];
|
||||
}
|
||||
|
||||
if((mySWCHA & 0x30) == 0x20)
|
||||
access.directPokeBase = &myRAM[addr & 0x7FF];
|
||||
else
|
||||
access.directPokeBase = nullptr;
|
||||
//if((mySWCHA & 0x30) == 0x20)
|
||||
// access.directPokeBase = &myRAM[addr & 0x7FF];
|
||||
//else
|
||||
// access.directPokeBase = nullptr;
|
||||
|
||||
mySystem->setPageAccess(addr, access);
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ void CartridgeEnhanced::install(System& system)
|
|||
{
|
||||
const uInt16 offset = addr & myRamMask;
|
||||
|
||||
access.directPeekBase = &myRAM[offset];
|
||||
//access.directPeekBase = &myRAM[offset];
|
||||
access.romAccessBase = &myRomAccessBase[myReadOffset + offset];
|
||||
access.romPeekCounter = &myRomAccessCounter[myReadOffset + offset];
|
||||
access.romPokeCounter = &myRomAccessCounter[myReadOffset + offset + myAccessSize];
|
||||
|
@ -264,10 +264,10 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment)
|
|||
{
|
||||
const uInt32 offset = bankOffset + (addr & myBankMask);
|
||||
|
||||
if(myDirectPeek && addr != hotSpotAddr)
|
||||
access.directPeekBase = &myImage[offset];
|
||||
else
|
||||
access.directPeekBase = nullptr;
|
||||
//if(myDirectPeek && addr != hotSpotAddr)
|
||||
// access.directPeekBase = &myImage[offset];
|
||||
//else
|
||||
// access.directPeekBase = nullptr;
|
||||
access.romAccessBase = &myRomAccessBase[offset];
|
||||
access.romPeekCounter = &myRomAccessCounter[offset];
|
||||
access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize];
|
||||
|
@ -309,7 +309,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment)
|
|||
{
|
||||
const uInt32 offset = bankOffset + (addr & myRamMask);
|
||||
|
||||
access.directPeekBase = &myRAM[offset - mySize];
|
||||
//access.directPeekBase = &myRAM[offset - mySize];
|
||||
access.romAccessBase = &myRomAccessBase[offset];
|
||||
access.romPeekCounter = &myRomAccessCounter[offset];
|
||||
access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize];
|
||||
|
|
|
@ -66,10 +66,10 @@ void CartridgeMNetwork::setAccess(uInt16 addrFrom, uInt16 size,
|
|||
|
||||
for(uInt16 addr = addrFrom; addr < addrFrom + size; addr += System::PAGE_SIZE)
|
||||
{
|
||||
if(type == System::PageAccessType::READ)
|
||||
access.directPeekBase = &directData[directOffset + (addr & addrMask)];
|
||||
else if(type == System::PageAccessType::WRITE) // all RAM writes mapped to ::poke()
|
||||
access.directPokeBase = nullptr;
|
||||
//if(type == System::PageAccessType::READ)
|
||||
// access.directPeekBase = &directData[directOffset + (addr & addrMask)];
|
||||
//else if(type == System::PageAccessType::WRITE) // all RAM writes mapped to ::poke()
|
||||
// access.directPokeBase = nullptr;
|
||||
access.romAccessBase = &myRomAccessBase[codeOffset + (addr & addrMask)];
|
||||
access.romPeekCounter = &myRomAccessCounter[codeOffset + (addr & addrMask)];
|
||||
access.romPokeCounter = &myRomAccessCounter[codeOffset + (addr & addrMask) + myAccessSize];
|
||||
|
|
|
@ -121,9 +121,9 @@ uInt8 System::peek(uInt16 addr, Device::AccessFlags flags)
|
|||
|
||||
// See if this page uses direct accessing or not
|
||||
uInt8 result;
|
||||
if(access.directPeekBase)
|
||||
result = *(access.directPeekBase + (addr & PAGE_MASK));
|
||||
else
|
||||
//if(access.directPeekBase)
|
||||
// result = *(access.directPeekBase + (addr & PAGE_MASK));
|
||||
//else
|
||||
result = access.device->peek(addr);
|
||||
|
||||
#ifdef DEBUGGER_SUPPORT
|
||||
|
@ -157,17 +157,17 @@ void System::poke(uInt16 addr, uInt8 value, Device::AccessFlags flags)
|
|||
#endif
|
||||
|
||||
// See if this page uses direct accessing or not
|
||||
if(access.directPokeBase)
|
||||
{
|
||||
// Since we have direct access to this poke, we can dirty its page
|
||||
*(access.directPokeBase + (addr & PAGE_MASK)) = value;
|
||||
myPageIsDirtyTable[page] = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//if(access.directPokeBase)
|
||||
//{
|
||||
// // Since we have direct access to this poke, we can dirty its page
|
||||
// *(access.directPokeBase + (addr & PAGE_MASK)) = value;
|
||||
// myPageIsDirtyTable[page] = true;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// The specific device informs us if the poke succeeded
|
||||
myPageIsDirtyTable[page] = access.device->poke(addr, value);
|
||||
}
|
||||
//}
|
||||
|
||||
#ifdef DEBUGGER_SUPPORT
|
||||
if(!myDataBusLocked)
|
||||
|
|
|
@ -240,21 +240,21 @@ class System : public Serializable
|
|||
*/
|
||||
struct PageAccess
|
||||
{
|
||||
/**
|
||||
Pointer to a block of memory or the null pointer. The null pointer
|
||||
indicates that the device's peek method should be invoked for reads
|
||||
to this page, while other values are the base address of an array
|
||||
to directly access for reads to this page.
|
||||
*/
|
||||
uInt8* directPeekBase{nullptr};
|
||||
///**
|
||||
// Pointer to a block of memory or the null pointer. The null pointer
|
||||
// indicates that the device's peek method should be invoked for reads
|
||||
// to this page, while other values are the base address of an array
|
||||
// to directly access for reads to this page.
|
||||
//*/
|
||||
//uInt8* directPeekBase{nullptr};
|
||||
|
||||
/**
|
||||
Pointer to a block of memory or the null pointer. The null pointer
|
||||
indicates that the device's poke method should be invoked for writes
|
||||
to this page, while other values are the base address of an array
|
||||
to directly access for pokes to this page.
|
||||
*/
|
||||
uInt8* directPokeBase{nullptr};
|
||||
///**
|
||||
// Pointer to a block of memory or the null pointer. The null pointer
|
||||
// indicates that the device's poke method should be invoked for writes
|
||||
// to this page, while other values are the base address of an array
|
||||
// to directly access for pokes to this page.
|
||||
//*/
|
||||
//uInt8* directPokeBase{nullptr};
|
||||
|
||||
/**
|
||||
Pointer to a lookup table for marking an address as CODE, DATA, GFX,
|
||||
|
|
Loading…
Reference in New Issue