mirror of https://github.com/stella-emu/stella.git
Removed some redundant includes in various Cart classes.
Introduced Cartridge::initializeRAM() method, to eliminate duplicate blocks of code in every bankswitch scheme that uses extra RAM. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@3316 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
be2f6f5b64
commit
883971985e
|
@ -18,8 +18,6 @@
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <cstring>
|
|
||||||
#include <sstream>
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
|
|
@ -76,6 +76,7 @@ using std::array;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
using std::make_pair;
|
using std::make_pair;
|
||||||
using std::runtime_error;
|
using std::runtime_error;
|
||||||
|
using std::memcpy;
|
||||||
|
|
||||||
// Common array types
|
// Common array types
|
||||||
using IntArray = std::vector<Int32>;
|
using IntArray = std::vector<Int32>;
|
||||||
|
|
|
@ -209,27 +209,8 @@ string Cartridge3EPlusWidget::bankState()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Cartridge3EPlusWidget::updateUIState()
|
void Cartridge3EPlusWidget::updateUIState()
|
||||||
{
|
{
|
||||||
// Set contents for actual banks number and type
|
// Set description for each 512b bank state (@ each index)
|
||||||
for(int i = 0; i < 4; ++i)
|
// Set contents for actual banks number and type (@ each even index)
|
||||||
{
|
|
||||||
uInt16 segment = myCart.segmentInUse[i];
|
|
||||||
|
|
||||||
if(segment == myCart.BANK_UNDEFINED)
|
|
||||||
{
|
|
||||||
myBankNumber[i]->clearSelection();
|
|
||||||
myBankType[i]->clearSelection();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int bankno = segment & myCart.BIT_BANK_MASK;
|
|
||||||
const char* banktype = segment & myCart.BITMASK_ROMRAM ? "RAM" : "ROM";
|
|
||||||
|
|
||||||
myBankNumber[i]->setSelected(bankno);
|
|
||||||
myBankType[i]->setSelected(banktype);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set description for each 512b bank state
|
|
||||||
for(int i = 0; i < 8; ++i)
|
for(int i = 0; i < 8; ++i)
|
||||||
{
|
{
|
||||||
uInt16 bank = myCart.bankInUse[i];
|
uInt16 bank = myCart.bankInUse[i];
|
||||||
|
@ -237,6 +218,11 @@ void Cartridge3EPlusWidget::updateUIState()
|
||||||
if(bank == myCart.BANK_UNDEFINED) // never accessed
|
if(bank == myCart.BANK_UNDEFINED) // never accessed
|
||||||
{
|
{
|
||||||
myBankState[i]->setText("Undefined");
|
myBankState[i]->setText("Undefined");
|
||||||
|
if(i % 2 == 0)
|
||||||
|
{
|
||||||
|
myBankNumber[i/2]->clearSelection();
|
||||||
|
myBankType[i/2]->clearSelection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -257,6 +243,12 @@ void Cartridge3EPlusWidget::updateUIState()
|
||||||
<< (bankno << myCart.RAM_BANK_TO_POWER) << " (R)";
|
<< (bankno << myCart.RAM_BANK_TO_POWER) << " (R)";
|
||||||
myBankState[i]->setText(buf.str());
|
myBankState[i]->setText(buf.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(i % 2 == 0)
|
||||||
|
{
|
||||||
|
myBankNumber[i/2]->setSelected(bankno);
|
||||||
|
myBankType[i/2]->setSelected("RAM");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -272,6 +264,12 @@ void Cartridge3EPlusWidget::updateUIState()
|
||||||
<< (bankno << myCart.RAM_BANK_TO_POWER);
|
<< (bankno << myCart.RAM_BANK_TO_POWER);
|
||||||
myBankState[i]->setText(buf.str());
|
myBankState[i]->setText(buf.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(i % 2 == 0)
|
||||||
|
{
|
||||||
|
myBankNumber[i/2]->setSelected(bankno);
|
||||||
|
myBankType[i/2]->setSelected("ROM");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,9 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
#include <sstream>
|
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
#include "Cart.hxx"
|
#include "Cart.hxx"
|
||||||
#include "Cart0840.hxx"
|
#include "Cart0840.hxx"
|
||||||
|
@ -364,6 +361,16 @@ void Cartridge::createCodeAccessBase(uInt32 size)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void Cartridge::initializeRAM(uInt8* arr, uInt32 size, uInt8 val) const
|
||||||
|
{
|
||||||
|
if(mySettings.getBool("ramrandom"))
|
||||||
|
for(uInt32 i = 0; i < size; ++i)
|
||||||
|
arr[i] = mySystem->randGenerator().next();
|
||||||
|
else
|
||||||
|
memset(arr, val, size);
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
string Cartridge::autodetectType(const uInt8* image, uInt32 size)
|
string Cartridge::autodetectType(const uInt8* image, uInt32 size)
|
||||||
{
|
{
|
||||||
|
|
|
@ -210,6 +210,15 @@ class Cartridge : public Device
|
||||||
*/
|
*/
|
||||||
void createCodeAccessBase(uInt32 size);
|
void createCodeAccessBase(uInt32 size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Fill the given RAM array with (possibly random) data.
|
||||||
|
|
||||||
|
@param arr Pointer to the RAM array
|
||||||
|
@param size The size of the RAM array
|
||||||
|
@param val If provided, the value to store in the RAM array
|
||||||
|
*/
|
||||||
|
void initializeRAM(uInt8* arr, uInt32 size, uInt8 val = 0) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
Get an image pointer and size for a ROM that is part of a larger,
|
Get an image pointer and size for a ROM that is part of a larger,
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "Cart0840.hxx"
|
#include "Cart0840.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,15 +17,12 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "Cart2K.hxx"
|
#include "Cart2K.hxx"
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Cartridge2K::Cartridge2K(const uInt8* image, uInt32 size, const Settings& settings)
|
Cartridge2K::Cartridge2K(const uInt8* image, uInt32 size, const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings)
|
||||||
myImage(nullptr)
|
|
||||||
{
|
{
|
||||||
// Size can be a maximum of 2K
|
// Size can be a maximum of 2K
|
||||||
if(size > 2048) size = 2048;
|
if(size > 2048) size = 2048;
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
#include "Cart3E.hxx"
|
#include "Cart3E.hxx"
|
||||||
|
@ -27,7 +25,6 @@
|
||||||
Cartridge3E::Cartridge3E(const uInt8* image, uInt32 size,
|
Cartridge3E::Cartridge3E(const uInt8* image, uInt32 size,
|
||||||
const Settings& settings)
|
const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
myImage(nullptr),
|
|
||||||
mySize(size),
|
mySize(size),
|
||||||
myCurrentBank(0)
|
myCurrentBank(0)
|
||||||
{
|
{
|
||||||
|
@ -45,12 +42,7 @@ Cartridge3E::Cartridge3E(const uInt8* image, uInt32 size,
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Cartridge3E::reset()
|
void Cartridge3E::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 32768);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 32768; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 32768);
|
|
||||||
|
|
||||||
// We'll map the startup bank into the first segment upon reset
|
// We'll map the startup bank into the first segment upon reset
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
#include "Cart3EPlus.hxx"
|
#include "Cart3EPlus.hxx"
|
||||||
|
@ -43,20 +41,13 @@ Cartridge3EPlus::Cartridge3EPlus(const uInt8* image, uInt32 size, const Settings
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Cartridge3EPlus::reset()
|
void Cartridge3EPlus::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, RAM_TOTAL_SIZE);
|
||||||
if (mySettings.getBool("ramrandom"))
|
|
||||||
for (uInt32 i = 0; i < RAM_TOTAL_SIZE; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, RAM_TOTAL_SIZE);
|
|
||||||
|
|
||||||
// Initialise bank values for all ROM/RAM access
|
// Initialise bank values for all ROM/RAM access
|
||||||
// This is used to reverse-lookup from address to bank location
|
// This is used to reverse-lookup from address to bank location
|
||||||
for (uInt32 b = 0; b < 8; b++)
|
for(uInt32 b = 0; b < 8; ++b)
|
||||||
{
|
|
||||||
bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible!
|
bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible!
|
||||||
segmentInUse[b/2] = BANK_UNDEFINED;
|
|
||||||
}
|
|
||||||
initializeBankState();
|
initializeBankState();
|
||||||
|
|
||||||
// We'll map the startup banks 0 and 3 from the image into the third 1K bank upon reset
|
// We'll map the startup banks 0 and 3 from the image into the third 1K bank upon reset
|
||||||
|
@ -75,16 +66,14 @@ void Cartridge3EPlus::install(System& system)
|
||||||
// we need to chain any accesses below 0x40 to the TIA. Our poke() method
|
// we need to chain any accesses below 0x40 to the TIA. Our poke() method
|
||||||
// does this via mySystem->tiaPoke(...), at least until we come up with a
|
// does this via mySystem->tiaPoke(...), at least until we come up with a
|
||||||
// cleaner way to do it).
|
// cleaner way to do it).
|
||||||
for (uInt32 i = 0x00; i < 0x40; i += (1 << System::PAGE_SHIFT))
|
for(uInt32 i = 0x00; i < 0x40; i += (1 << System::PAGE_SHIFT))
|
||||||
mySystem->setPageAccess(i >> System::PAGE_SHIFT, access);
|
mySystem->setPageAccess(i >> System::PAGE_SHIFT, access);
|
||||||
|
|
||||||
// Initialise bank values for all ROM/RAM access
|
// Initialise bank values for all ROM/RAM access
|
||||||
// This is used to reverse-lookup from address to bank location
|
// This is used to reverse-lookup from address to bank location
|
||||||
for (uInt32 b = 0; b < 8; b++)
|
for(uInt32 b = 0; b < 8; ++b)
|
||||||
{
|
|
||||||
bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible!
|
bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible!
|
||||||
segmentInUse[b/2] = BANK_UNDEFINED;
|
|
||||||
}
|
|
||||||
initializeBankState();
|
initializeBankState();
|
||||||
|
|
||||||
// Setup the last segment (of 4, each 1K) to point to the first ROM slice
|
// Setup the last segment (of 4, each 1K) to point to the first ROM slice
|
||||||
|
@ -103,13 +92,13 @@ uInt8 Cartridge3EPlus::peek(uInt16 address)
|
||||||
uInt32 bank = (address >> (ROM_BANK_TO_POWER - 1)) & 7; // convert to 512 byte bank index (0-7)
|
uInt32 bank = (address >> (ROM_BANK_TO_POWER - 1)) & 7; // convert to 512 byte bank index (0-7)
|
||||||
uInt16 imageBank = bankInUse[bank]; // the ROM/RAM bank that's here
|
uInt16 imageBank = bankInUse[bank]; // the ROM/RAM bank that's here
|
||||||
|
|
||||||
if (imageBank == BANK_UNDEFINED) // an uninitialised bank?
|
if(imageBank == BANK_UNDEFINED) // an uninitialised bank?
|
||||||
{
|
{
|
||||||
// accessing invalid bank, so return should be... random?
|
// accessing invalid bank, so return should be... random?
|
||||||
value = mySystem->randGenerator().next();
|
value = mySystem->randGenerator().next();
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (imageBank & BITMASK_ROMRAM) // a RAM bank
|
else if(imageBank & BITMASK_ROMRAM) // a RAM bank
|
||||||
{
|
{
|
||||||
// Reading from the write port triggers an unwanted write
|
// Reading from the write port triggers an unwanted write
|
||||||
value = mySystem->getDataBusState(0xFF);
|
value = mySystem->getDataBusState(0xFF);
|
||||||
|
@ -138,10 +127,10 @@ bool Cartridge3EPlus::poke(uInt16 address, uInt8 value)
|
||||||
// Check for write to the bank switch address. RAM/ROM and bank # are encoded in 'value'
|
// Check for write to the bank switch address. RAM/ROM and bank # are encoded in 'value'
|
||||||
// There are NO mirrored hotspots.
|
// There are NO mirrored hotspots.
|
||||||
|
|
||||||
if (address == BANK_SWITCH_HOTSPOT_RAM)
|
if(address == BANK_SWITCH_HOTSPOT_RAM)
|
||||||
changed = bankRAM(value);
|
changed = bankRAM(value);
|
||||||
|
|
||||||
else if (address == BANK_SWITCH_HOTSPOT_ROM)
|
else if(address == BANK_SWITCH_HOTSPOT_ROM)
|
||||||
changed = bankROM(value);
|
changed = bankROM(value);
|
||||||
|
|
||||||
// Pass the poke through to the TIA. In a real Atari, both the cart and the
|
// Pass the poke through to the TIA. In a real Atari, both the cart and the
|
||||||
|
@ -156,16 +145,15 @@ bool Cartridge3EPlus::poke(uInt16 address, uInt8 value)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Cartridge3EPlus::bankRAM(uInt8 bank)
|
bool Cartridge3EPlus::bankRAM(uInt8 bank)
|
||||||
{
|
{
|
||||||
if (bankLocked()) // debugger can lock RAM
|
if(bankLocked()) // debugger can lock RAM
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
//cerr << "bankRAM " << int(bank) << endl;
|
||||||
|
|
||||||
// Each RAM bank uses two slots, separated by 0x200 in memory -- one read, one write.
|
// Each RAM bank uses two slots, separated by 0x200 in memory -- one read, one write.
|
||||||
bankRAMSlot(bank | BITMASK_ROMRAM | 0);
|
bankRAMSlot(bank | BITMASK_ROMRAM | 0);
|
||||||
bankRAMSlot(bank | BITMASK_ROMRAM | BITMASK_LOWERUPPER);
|
bankRAMSlot(bank | BITMASK_ROMRAM | BITMASK_LOWERUPPER);
|
||||||
|
|
||||||
// Remember that this hotspot was accessed for RAM
|
|
||||||
segmentInUse[(bank >> BANK_BITS) & 3] = bank | BITMASK_ROMRAM;
|
|
||||||
|
|
||||||
return myBankChanged = true;
|
return myBankChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,8 +165,8 @@ void Cartridge3EPlus::bankRAMSlot(uInt16 bank)
|
||||||
bool upper = bank & BITMASK_LOWERUPPER; // is this the read or write port
|
bool upper = bank & BITMASK_LOWERUPPER; // is this the read or write port
|
||||||
|
|
||||||
uInt32 startCurrentBank = currentBank << RAM_BANK_TO_POWER; // Effectively * 512 bytes
|
uInt32 startCurrentBank = currentBank << RAM_BANK_TO_POWER; // Effectively * 512 bytes
|
||||||
cerr << "raw bank=" << std::dec << currentBank << endl
|
//cerr << "raw bank=" << std::dec << currentBank << endl
|
||||||
<< "startCurrentBank=$" << std::hex << startCurrentBank << endl;
|
// << "startCurrentBank=$" << std::hex << startCurrentBank << endl;
|
||||||
// Setup the page access methods for the current bank
|
// Setup the page access methods for the current bank
|
||||||
System::PageAccess access(this, System::PA_READ);
|
System::PageAccess access(this, System::PA_READ);
|
||||||
|
|
||||||
|
@ -196,9 +184,9 @@ cerr << "raw bank=" << std::dec << currentBank << endl
|
||||||
uInt32 start = 0x1000 + (bankNumber << (RAM_BANK_TO_POWER+1)) + (upper ? RAM_WRITE_OFFSET : 0);
|
uInt32 start = 0x1000 + (bankNumber << (RAM_BANK_TO_POWER+1)) + (upper ? RAM_WRITE_OFFSET : 0);
|
||||||
uInt32 end = start + RAM_BANK_SIZE - 1;
|
uInt32 end = start + RAM_BANK_SIZE - 1;
|
||||||
|
|
||||||
cerr << "bank RAM: " << bankNumber << " -> " << (bankNumber * 2 + (upper ? 1 : 0)) << (upper ? " (W)" : " (R)") << endl
|
//cerr << "bank RAM: " << bankNumber << " -> " << (bankNumber * 2 + (upper ? 1 : 0)) << (upper ? " (W)" : " (R)") << endl
|
||||||
<< "start=" << std::hex << start << ", end=" << end << endl << endl;
|
// << "start=" << std::hex << start << ", end=" << end << endl << endl;
|
||||||
for (uInt32 address = start; address <= end; address += (1 << System::PAGE_SHIFT))
|
for(uInt32 address = start; address <= end; address += (1 << System::PAGE_SHIFT))
|
||||||
{
|
{
|
||||||
if(upper)
|
if(upper)
|
||||||
access.directPokeBase = &myRAM[startCurrentBank + (address & (RAM_BANK_SIZE - 1))];
|
access.directPokeBase = &myRAM[startCurrentBank + (address & (RAM_BANK_SIZE - 1))];
|
||||||
|
@ -213,7 +201,7 @@ cerr << "bank RAM: " << bankNumber << " -> " << (bankNumber * 2 + (upper ? 1 : 0
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Cartridge3EPlus::bankROM(uInt8 bank)
|
bool Cartridge3EPlus::bankROM(uInt8 bank)
|
||||||
{
|
{
|
||||||
if (bankLocked()) // debugger can lock ROM
|
if(bankLocked()) // debugger can lock ROM
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Map ROM bank image into the system into the correct slot
|
// Map ROM bank image into the system into the correct slot
|
||||||
|
@ -222,9 +210,6 @@ bool Cartridge3EPlus::bankROM(uInt8 bank)
|
||||||
bankROMSlot(bank | 0);
|
bankROMSlot(bank | 0);
|
||||||
bankROMSlot(bank | BITMASK_LOWERUPPER);
|
bankROMSlot(bank | BITMASK_LOWERUPPER);
|
||||||
|
|
||||||
// Remember that this hotspot was accessed for ROM
|
|
||||||
segmentInUse[(bank >> BANK_BITS) & 3] = bank;
|
|
||||||
|
|
||||||
return myBankChanged = true;
|
return myBankChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +230,7 @@ void Cartridge3EPlus::bankROMSlot(uInt16 bank)
|
||||||
uInt32 start = 0x1000 + (bankNumber << ROM_BANK_TO_POWER) + (upper ? ROM_BANK_SIZE / 2 : 0);
|
uInt32 start = 0x1000 + (bankNumber << ROM_BANK_TO_POWER) + (upper ? ROM_BANK_SIZE / 2 : 0);
|
||||||
uInt32 end = start + ROM_BANK_SIZE / 2 - 1;
|
uInt32 end = start + ROM_BANK_SIZE / 2 - 1;
|
||||||
|
|
||||||
for (uInt32 address = start; address <= end; address += (1 << System::PAGE_SHIFT))
|
for(uInt32 address = start; address <= end; address += (1 << System::PAGE_SHIFT))
|
||||||
{
|
{
|
||||||
access.directPeekBase = &myImage[startCurrentBank + (address & (ROM_BANK_SIZE - 1))];
|
access.directPeekBase = &myImage[startCurrentBank + (address & (ROM_BANK_SIZE - 1))];
|
||||||
access.codeAccessBase = &myCodeAccessBase[startCurrentBank + (address & (ROM_BANK_SIZE - 1))];
|
access.codeAccessBase = &myCodeAccessBase[startCurrentBank + (address & (ROM_BANK_SIZE - 1))];
|
||||||
|
@ -326,7 +311,6 @@ bool Cartridge3EPlus::save(Serializer& out) const
|
||||||
{
|
{
|
||||||
out.putString(name());
|
out.putString(name());
|
||||||
out.putShortArray(bankInUse, 8);
|
out.putShortArray(bankInUse, 8);
|
||||||
out.putShortArray(segmentInUse, 4);
|
|
||||||
out.putByteArray(myRAM, RAM_TOTAL_SIZE);
|
out.putByteArray(myRAM, RAM_TOTAL_SIZE);
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
|
@ -345,7 +329,6 @@ bool Cartridge3EPlus::load(Serializer& in)
|
||||||
if (in.getString() != name())
|
if (in.getString() != name())
|
||||||
return false;
|
return false;
|
||||||
in.getShortArray(bankInUse, 8);
|
in.getShortArray(bankInUse, 8);
|
||||||
in.getShortArray(segmentInUse, 4);
|
|
||||||
in.getByteArray(myRAM, RAM_TOTAL_SIZE);
|
in.getByteArray(myRAM, RAM_TOTAL_SIZE);
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
|
|
|
@ -155,7 +155,6 @@ class Cartridge3EPlus: public Cartridge
|
||||||
|
|
||||||
static constexpr uInt16 BANK_UNDEFINED = 0x8000; // bank is undefined and inaccessible
|
static constexpr uInt16 BANK_UNDEFINED = 0x8000; // bank is undefined and inaccessible
|
||||||
uInt16 bankInUse[8]; // bank being used for ROM/RAM (eight 512 byte areas)
|
uInt16 bankInUse[8]; // bank being used for ROM/RAM (eight 512 byte areas)
|
||||||
uInt16 segmentInUse[4]; // set by bank methods, to know which hotspot was accessed
|
|
||||||
|
|
||||||
static constexpr uInt16 BANK_SWITCH_HOTSPOT_RAM = 0x3E; // writes to this address cause bankswitching
|
static constexpr uInt16 BANK_SWITCH_HOTSPOT_RAM = 0x3E; // writes to this address cause bankswitching
|
||||||
static constexpr uInt16 BANK_SWITCH_HOTSPOT_ROM = 0x3F; // writes to this address cause bankswitching
|
static constexpr uInt16 BANK_SWITCH_HOTSPOT_ROM = 0x3F; // writes to this address cause bankswitching
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
#include "Cart3F.hxx"
|
#include "Cart3F.hxx"
|
||||||
|
@ -27,7 +25,6 @@
|
||||||
Cartridge3F::Cartridge3F(const uInt8* image, uInt32 size,
|
Cartridge3F::Cartridge3F(const uInt8* image, uInt32 size,
|
||||||
const Settings& settings)
|
const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
myImage(nullptr),
|
|
||||||
mySize(size),
|
mySize(size),
|
||||||
myCurrentBank(0)
|
myCurrentBank(0)
|
||||||
{
|
{
|
||||||
|
@ -98,9 +95,7 @@ bool Cartridge3F::poke(uInt16 address, uInt8 value)
|
||||||
|
|
||||||
// Switch banks if necessary
|
// Switch banks if necessary
|
||||||
if(address <= 0x003F)
|
if(address <= 0x003F)
|
||||||
{
|
|
||||||
bank(value);
|
bank(value);
|
||||||
}
|
|
||||||
|
|
||||||
// Pass the poke through to the TIA. In a real Atari, both the cart and the
|
// Pass the poke through to the TIA. In a real Atari, both the cart and the
|
||||||
// TIA see the address lines, and both react accordingly. In Stella, each
|
// TIA see the address lines, and both react accordingly. In Stella, each
|
||||||
|
@ -114,7 +109,8 @@ bool Cartridge3F::poke(uInt16 address, uInt8 value)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Cartridge3F::bank(uInt16 bank)
|
bool Cartridge3F::bank(uInt16 bank)
|
||||||
{
|
{
|
||||||
if(bankLocked()) return false;
|
if(bankLocked())
|
||||||
|
return false;
|
||||||
|
|
||||||
// Make sure the bank they're asking for is reasonable
|
// Make sure the bank they're asking for is reasonable
|
||||||
if((uInt32(bank) << 11) < mySize)
|
if((uInt32(bank) << 11) < mySize)
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "M6532.hxx"
|
#include "M6532.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
|
@ -59,12 +57,7 @@ Cartridge4A50::Cartridge4A50(const uInt8* image, uInt32 size,
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Cartridge4A50::reset()
|
void Cartridge4A50::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 32768);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 32768; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 32768);
|
|
||||||
|
|
||||||
mySliceLow = mySliceMiddle = mySliceHigh = 0;
|
mySliceLow = mySliceMiddle = mySliceHigh = 0;
|
||||||
myIsRomLow = myIsRomMiddle = myIsRomHigh = true;
|
myIsRomLow = myIsRomMiddle = myIsRomHigh = true;
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "Cart4K.hxx"
|
#include "Cart4K.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "Cart4KSC.hxx"
|
#include "Cart4KSC.hxx"
|
||||||
|
|
||||||
|
@ -34,12 +32,8 @@ Cartridge4KSC::Cartridge4KSC(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Cartridge4KSC::reset()
|
void Cartridge4KSC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 128);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 128; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 128);
|
|
||||||
myBankChanged = true;
|
myBankChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "M6502.hxx"
|
#include "M6502.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartAR.hxx"
|
#include "CartAR.hxx"
|
||||||
|
@ -28,7 +26,6 @@ CartridgeAR::CartridgeAR(const uInt8* image, uInt32 size,
|
||||||
const Settings& settings)
|
const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
mySize(std::max(size, 8448u)),
|
mySize(std::max(size, 8448u)),
|
||||||
myLoadImages(nullptr),
|
|
||||||
myWriteEnabled(false),
|
myWriteEnabled(false),
|
||||||
myPower(true),
|
myPower(true),
|
||||||
myPowerRomCycle(0),
|
myPowerRomCycle(0),
|
||||||
|
@ -60,10 +57,7 @@ void CartridgeAR::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
// Initialize RAM
|
||||||
#if 0 // TODO - figure out actual behaviour of the real cart
|
#if 0 // TODO - figure out actual behaviour of the real cart
|
||||||
if(mySettings.getBool("ramrandom"))
|
initializeRAM(myImage, 6*1024);
|
||||||
for(uInt32 i = 0; i < 6 * 1024; ++i)
|
|
||||||
myImage[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
#endif
|
#endif
|
||||||
memset(myImage, 0, 6 * 1024);
|
memset(myImage, 0, 6 * 1024);
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartBF.hxx"
|
#include "CartBF.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartBFSC.hxx"
|
#include "CartBFSC.hxx"
|
||||||
|
|
||||||
|
@ -38,12 +36,7 @@ CartridgeBFSC::CartridgeBFSC(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeBFSC::reset()
|
void CartridgeBFSC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 128);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 128; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 128);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "CompuMate.hxx"
|
#include "CompuMate.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "M6532.hxx"
|
#include "M6532.hxx"
|
||||||
|
@ -41,12 +39,7 @@ CartridgeCM::CartridgeCM(const uInt8* image, uInt32 size, const Settings& settin
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeCM::reset()
|
void CartridgeCM::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 2048);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 2048; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 2048);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "OSystem.hxx"
|
#include "OSystem.hxx"
|
||||||
#include "Serializer.hxx"
|
#include "Serializer.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
|
@ -52,12 +50,7 @@ CartridgeCTY::CartridgeCTY(const uInt8* image, uInt32 size, const OSystem& osyst
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeCTY::reset()
|
void CartridgeCTY::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 64);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 64; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 64);
|
|
||||||
|
|
||||||
myRAM[0] = myRAM[1] = myRAM[2] = myRAM[3] = 0xFF;
|
myRAM[0] = myRAM[1] = myRAM[2] = myRAM[3] = 0xFF;
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartCV.hxx"
|
#include "CartCV.hxx"
|
||||||
|
|
||||||
|
@ -26,7 +24,6 @@
|
||||||
CartridgeCV::CartridgeCV(const uInt8* image, uInt32 size,
|
CartridgeCV::CartridgeCV(const uInt8* image, uInt32 size,
|
||||||
const Settings& settings)
|
const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
myInitialRAM(nullptr),
|
|
||||||
mySize(size)
|
mySize(size)
|
||||||
{
|
{
|
||||||
if(mySize == 2048)
|
if(mySize == 2048)
|
||||||
|
@ -58,14 +55,7 @@ void CartridgeCV::reset()
|
||||||
memcpy(myRAM, myInitialRAM.get(), 1024);
|
memcpy(myRAM, myInitialRAM.get(), 1024);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
initializeRAM(myRAM, 1024);
|
||||||
// Initialize RAM
|
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 1024; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 1024);
|
|
||||||
}
|
|
||||||
|
|
||||||
myBankChanged = true;
|
myBankChanged = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
#include "CartCVPlus.hxx"
|
#include "CartCVPlus.hxx"
|
||||||
|
@ -27,7 +25,6 @@
|
||||||
CartridgeCVPlus::CartridgeCVPlus(const uInt8* image, uInt32 size,
|
CartridgeCVPlus::CartridgeCVPlus(const uInt8* image, uInt32 size,
|
||||||
const Settings& settings)
|
const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
myImage(nullptr),
|
|
||||||
mySize(size),
|
mySize(size),
|
||||||
myCurrentBank(0)
|
myCurrentBank(0)
|
||||||
{
|
{
|
||||||
|
@ -45,12 +42,7 @@ CartridgeCVPlus::CartridgeCVPlus(const uInt8* image, uInt32 size,
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeCVPlus::reset()
|
void CartridgeCVPlus::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 1024);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 1024; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 1024);
|
|
||||||
|
|
||||||
// We'll map the startup bank into the first segment upon reset
|
// We'll map the startup bank into the first segment upon reset
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
#include "CartDASH.hxx"
|
#include "CartDASH.hxx"
|
||||||
|
@ -43,16 +41,11 @@ CartridgeDASH::CartridgeDASH(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeDASH::reset()
|
void CartridgeDASH::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, RAM_TOTAL_SIZE);
|
||||||
if (mySettings.getBool("ramrandom"))
|
|
||||||
for (uInt32 i = 0; i < RAM_TOTAL_SIZE; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, RAM_TOTAL_SIZE);
|
|
||||||
|
|
||||||
// Initialise bank values for all ROM/RAM access
|
// Initialise bank values for all ROM/RAM access
|
||||||
// This is used to reverse-lookup from address to bank location
|
// This is used to reverse-lookup from address to bank location
|
||||||
for (uInt32 b = 0; b < 8; b++)
|
for(uInt32 b = 0; b < 8; b++)
|
||||||
{
|
{
|
||||||
bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible!
|
bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible!
|
||||||
segmentInUse[b/2] = BANK_UNDEFINED;
|
segmentInUse[b/2] = BANK_UNDEFINED;
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartDF.hxx"
|
#include "CartDF.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartDFSC.hxx"
|
#include "CartDFSC.hxx"
|
||||||
|
|
||||||
|
@ -38,12 +36,7 @@ CartridgeDFSC::CartridgeDFSC(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeDFSC::reset()
|
void CartridgeDFSC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 128);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 128; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 128);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartDPC.hxx"
|
#include "CartDPC.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#ifdef DEBUGGER_SUPPORT
|
#ifdef DEBUGGER_SUPPORT
|
||||||
#include "Debugger.hxx"
|
#include "Debugger.hxx"
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,7 +28,6 @@
|
||||||
CartridgeDPCPlus::CartridgeDPCPlus(const uInt8* image, uInt32 size,
|
CartridgeDPCPlus::CartridgeDPCPlus(const uInt8* image, uInt32 size,
|
||||||
const Settings& settings)
|
const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
myImage(nullptr),
|
|
||||||
myFastFetch(false),
|
myFastFetch(false),
|
||||||
myLDAimmediate(false),
|
myLDAimmediate(false),
|
||||||
myParameterPointer(0),
|
myParameterPointer(0),
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartE0.hxx"
|
#include "CartE0.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartE7.hxx"
|
#include "CartE7.hxx"
|
||||||
|
|
||||||
|
@ -38,12 +36,7 @@ CartridgeE7::CartridgeE7(const uInt8* image, uInt32 size, const Settings& settin
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeE7::reset()
|
void CartridgeE7::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 2048);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 2048; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 2048);
|
|
||||||
|
|
||||||
// Install some default banks for the RAM and first segment
|
// Install some default banks for the RAM and first segment
|
||||||
bankRAM(0);
|
bankRAM(0);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartEF.hxx"
|
#include "CartEF.hxx"
|
||||||
|
|
||||||
|
|
|
@ -36,12 +36,7 @@ CartridgeEFSC::CartridgeEFSC(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeEFSC::reset()
|
void CartridgeEFSC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 128);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 128; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 128);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartF0.hxx"
|
#include "CartF0.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "Random.hxx"
|
#include "Random.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartF4.hxx"
|
#include "CartF4.hxx"
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartF4SC.hxx"
|
#include "CartF4SC.hxx"
|
||||||
|
|
||||||
|
@ -38,12 +36,7 @@ CartridgeF4SC::CartridgeF4SC(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeF4SC::reset()
|
void CartridgeF4SC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 128);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 128; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 128);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartF6.hxx"
|
#include "CartF6.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartF6SC.hxx"
|
#include "CartF6SC.hxx"
|
||||||
|
|
||||||
|
@ -38,12 +36,7 @@ CartridgeF6SC::CartridgeF6SC(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeF6SC::reset()
|
void CartridgeF6SC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 128);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 128; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 128);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartF8.hxx"
|
#include "CartF8.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartF8SC.hxx"
|
#include "CartF8SC.hxx"
|
||||||
|
|
||||||
|
@ -38,12 +36,7 @@ CartridgeF8SC::CartridgeF8SC(const uInt8* image, uInt32 size, const Settings& se
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeF8SC::reset()
|
void CartridgeF8SC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 128);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 128; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 128);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartFA.hxx"
|
#include "CartFA.hxx"
|
||||||
|
|
||||||
|
@ -38,12 +36,7 @@ CartridgeFA::CartridgeFA(const uInt8* image, uInt32 size, const Settings& settin
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeFA::reset()
|
void CartridgeFA::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 256);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 256; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 256);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -47,12 +47,7 @@ CartridgeFA2::CartridgeFA2(const uInt8* image, uInt32 size, const OSystem& osyst
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeFA2::reset()
|
void CartridgeFA2::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 256);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 256; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 256);
|
|
||||||
|
|
||||||
// Upon reset we switch to the startup bank
|
// Upon reset we switch to the startup bank
|
||||||
bank(myStartBank);
|
bank(myStartBank);
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartFE.hxx"
|
#include "CartFE.hxx"
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartMC.hxx"
|
#include "CartMC.hxx"
|
||||||
|
@ -49,12 +48,7 @@ CartridgeMC::CartridgeMC(const uInt8* image, uInt32 size,
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeMC::reset()
|
void CartridgeMC::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 32768);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 32768; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 32768);
|
|
||||||
|
|
||||||
myBankChanged = true;
|
myBankChanged = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,15 +17,12 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartMDM.hxx"
|
#include "CartMDM.hxx"
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
CartridgeMDM::CartridgeMDM(const uInt8* image, uInt32 size, const Settings& settings)
|
CartridgeMDM::CartridgeMDM(const uInt8* image, uInt32 size, const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
myImage(nullptr),
|
|
||||||
mySize(size),
|
mySize(size),
|
||||||
myCurrentBank(0),
|
myCurrentBank(0),
|
||||||
myBankingDisabled(false)
|
myBankingDisabled(false)
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id: CartSB.cxx,v 1.0 2007/10/11
|
// $Id: CartSB.cxx,v 1.0 2007/10/11
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartSB.hxx"
|
#include "CartSB.hxx"
|
||||||
|
|
||||||
|
@ -26,7 +24,6 @@
|
||||||
CartridgeSB::CartridgeSB(const uInt8* image, uInt32 size,
|
CartridgeSB::CartridgeSB(const uInt8* image, uInt32 size,
|
||||||
const Settings& settings)
|
const Settings& settings)
|
||||||
: Cartridge(settings),
|
: Cartridge(settings),
|
||||||
myImage(nullptr),
|
|
||||||
mySize(size),
|
mySize(size),
|
||||||
myCurrentBank(0)
|
myCurrentBank(0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "CartUA.hxx"
|
#include "CartUA.hxx"
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
#include "M6502.hxx"
|
#include "M6502.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
|
@ -44,12 +42,7 @@ CartridgeWD::CartridgeWD(const uInt8* image, uInt32 size,
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeWD::reset()
|
void CartridgeWD::reset()
|
||||||
{
|
{
|
||||||
// Initialize RAM
|
initializeRAM(myRAM, 64);
|
||||||
if(mySettings.getBool("ramrandom"))
|
|
||||||
for(uInt32 i = 0; i < 64; ++i)
|
|
||||||
myRAM[i] = mySystem->randGenerator().next();
|
|
||||||
else
|
|
||||||
memset(myRAM, 0, 64);
|
|
||||||
|
|
||||||
myCyclesAtBankswitchInit = 0;
|
myCyclesAtBankswitchInit = 0;
|
||||||
myPendingBank = 0xF0; // one more than the allowable bank #
|
myPendingBank = 0xF0; // one more than the allowable bank #
|
||||||
|
|
|
@ -17,8 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "M6532.hxx"
|
#include "M6532.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
|
|
|
@ -17,9 +17,7 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <cstring>
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
|
|
|
@ -17,10 +17,6 @@
|
||||||
// $Id$
|
// $Id$
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
|
||||||
#ifdef DEBUGGER_SUPPORT
|
#ifdef DEBUGGER_SUPPORT
|
||||||
|
|
Loading…
Reference in New Issue