mirror of https://github.com/stella-emu/stella.git
113 lines
3.6 KiB
C++
113 lines
3.6 KiB
C++
//============================================================================
|
|
//
|
|
// SSSS tt lll lll
|
|
// SS SS tt ll ll
|
|
// SS tttttt eeee ll ll aaaa
|
|
// SSSS tt ee ee ll ll aa
|
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
|
// SS SS tt ee ll ll aa aa
|
|
// SSSS ttt eeeee llll llll aaaaa
|
|
//
|
|
// Copyright (c) 1995-2013 by Bradford W. Mott, Stephen Anthony
|
|
// and the Stella Team
|
|
//
|
|
// See the file "License.txt" for information on usage and redistribution of
|
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
|
//
|
|
// $Id$
|
|
//============================================================================
|
|
|
|
#include "Cart4KSC.hxx"
|
|
#include "Cart4KSCWidget.hxx"
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
Cartridge4KSCWidget::Cartridge4KSCWidget(
|
|
GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont,
|
|
int x, int y, int w, int h, Cartridge4KSC& cart)
|
|
: CartDebugWidget(boss, lfont, nfont, x, y, w, h),
|
|
myCart(cart)
|
|
{
|
|
// Eventually, we should query this from the debugger/disassembler
|
|
uInt16 start = (cart.myImage[0xFFD] << 8) | cart.myImage[0xFFC];
|
|
start -= start % 0x1000;
|
|
|
|
ostringstream info;
|
|
info << "4KSC cartridge, non-bankswitched\n"
|
|
<< "128 bytes RAM @ $F000 - $F0FF\n"
|
|
<< " $F080 - $F0FF (R), $F000 - $F07F (W)\n"
|
|
<< "Accessible @ $" << Common::Base::HEX4 << start << " - "
|
|
<< "$" << (start + 0xFFF);
|
|
|
|
addBaseInformation(4096, "homebrew intermediate format", info.str());
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
void Cartridge4KSCWidget::saveOldState()
|
|
{
|
|
myOldState.internalram.clear();
|
|
|
|
for(uInt32 i = 0; i < this->internalRamSize();i++)
|
|
{
|
|
myOldState.internalram.push_back(myCart.myRAM[i]);
|
|
}
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
uInt32 Cartridge4KSCWidget::internalRamSize()
|
|
{
|
|
return 128;
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
uInt32 Cartridge4KSCWidget::internalRamRPort(int start)
|
|
{
|
|
return 0xF080 + start;
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
string Cartridge4KSCWidget::internalRamDescription()
|
|
{
|
|
ostringstream desc;
|
|
desc << "$F000 - $F07F used for Write Access\n"
|
|
<< "$F080 - $F0FF used for Read Access";
|
|
|
|
return desc.str();
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
const ByteArray& Cartridge4KSCWidget::internalRamOld(int start, int count)
|
|
{
|
|
myRamOld.clear();
|
|
for(int i = 0; i < count; i++)
|
|
myRamOld.push_back(myOldState.internalram[start + i]);
|
|
return myRamOld;
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
const ByteArray& Cartridge4KSCWidget::internalRamCurrent(int start, int count)
|
|
{
|
|
myRamCurrent.clear();
|
|
for(int i = 0; i < count; i++)
|
|
myRamCurrent.push_back(myCart.myRAM[start + i]);
|
|
return myRamCurrent;
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
void Cartridge4KSCWidget::internalRamSetValue(int addr, uInt8 value)
|
|
{
|
|
myCart.myRAM[addr] = value;
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
uInt8 Cartridge4KSCWidget::internalRamGetValue(int addr)
|
|
{
|
|
return myCart.myRAM[addr];
|
|
}
|
|
|
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
string Cartridge4KSCWidget::internalRamLabel(int addr)
|
|
{
|
|
CartDebug& dbg = instance().debugger().cartDebug();
|
|
return dbg.getLabel(addr + 0xF080, false);
|
|
}
|