mirror of https://github.com/stella-emu/stella.git
93 lines
2.6 KiB
C++
93 lines
2.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-2021 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.
|
||
|
//============================================================================
|
||
|
|
||
|
#include "System.hxx"
|
||
|
#include "Settings.hxx"
|
||
|
#include "CartARM.hxx"
|
||
|
|
||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
CartridgeARM::CartridgeARM(const string& md5, const Settings& settings)
|
||
|
: Cartridge(settings, md5)
|
||
|
{
|
||
|
myIncCycles = settings.getBool("dev.settings")
|
||
|
&& settings.getBool("dev.thumb.inccycles");
|
||
|
}
|
||
|
|
||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
void CartridgeARM::updateCycles(int cycles)
|
||
|
{
|
||
|
if(myIncCycles)
|
||
|
{
|
||
|
mySystem->incrementCycles(cycles); // * ~1.79 is the limit for ZEVIOUZ title screen (~88,000 cycles)
|
||
|
cerr << cycles << " ";
|
||
|
}
|
||
|
myStats = myThumbEmulator->stats();
|
||
|
myPrevStats = myThumbEmulator->prevStats();
|
||
|
}
|
||
|
|
||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
void CartridgeARM::incCycles(bool enable)
|
||
|
{
|
||
|
myIncCycles = enable;
|
||
|
}
|
||
|
|
||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
void CartridgeARM::cycleFactor(double factor)
|
||
|
{
|
||
|
myThumbEmulator->cycleFactor(factor);
|
||
|
}
|
||
|
|
||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
bool CartridgeARM::save(Serializer& out) const
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
out.putInt(myPrevStats.fetches);
|
||
|
out.putInt(myPrevStats.reads);
|
||
|
out.putInt(myPrevStats.writes);
|
||
|
out.putInt(myStats.fetches);
|
||
|
out.putInt(myStats.reads);
|
||
|
out.putInt(myStats.writes);
|
||
|
}
|
||
|
catch(...)
|
||
|
{
|
||
|
cerr << "ERROR: CartridgeARM::save" << endl;
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||
|
bool CartridgeARM::load(Serializer& in)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
myPrevStats.fetches = in.getInt();
|
||
|
myPrevStats.reads = in.getInt();
|
||
|
myPrevStats.writes = in.getInt();
|
||
|
myStats.fetches = in.getInt();
|
||
|
myStats.reads = in.getInt();
|
||
|
myStats.writes = in.getInt();
|
||
|
}
|
||
|
catch(...)
|
||
|
{
|
||
|
cerr << "ERROR: CartridgeARM::load" << endl;
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|