1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa "An Atari 2600 VCS Emulator"
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa Copyright (c) 1995,1996,1997
// SS SS tt ee ll ll aa aa Bradford W. Mott
// SSSS ttt eeeee llll llll aaaaa
//
//============================================================================
/**
Object of this class are used to represent 4K cartridges.
@author Bradford W. Mott
@version $Id: Cart4K.cxx,v 1.2 1997/05/17 19:00:03 bwmott Exp $
*/
#include "Cart4K.hxx"
#include "System.hxx"
//============================================================================
// Constructor
//============================================================================
Cartridge4K::Cartridge4K(System& system, uByte* image)
: Cartridge(system),
myImageOffset(0)
{
// Copy the ROM image into my buffer
for(uWord addr = 0; addr < 4096; ++addr)
myImage[addr] = image[addr];
// Map all of my addresses in the system
for(uWord address = 0; address < 8192; ++address)
{
if(address & 0x1000)
{
mySystem.mapPeek(address, *this,
&myImage[address & 0x0fff], &myImageOffset);
mySystem.mapPoke(address, *this);
}
}
}
//============================================================================
// Destructor
//============================================================================
Cartridge4K::~Cartridge4K()
{
}
//============================================================================
// Answer the byte at the given address
//============================================================================
uByte Cartridge4K::peek(uWord addr)
{
return myImage[addr & 0x0fff];
}
//============================================================================
// Reset to my power on state
//============================================================================
void Cartridge4K::reset()
{
myImageOffset = 0;
}
|