in atari_py/ale_interface/src/emucore/TIA.cxx [308:401]
bool TIA::save(Serializer& out)
{
string device = name();
try
{
out.putString(device);
out.putInt(myClockWhenFrameStarted);
out.putInt(myClockStartDisplay);
out.putInt(myClockStopDisplay);
out.putInt(myClockAtLastUpdate);
out.putInt(myClocksToEndOfScanLine);
out.putInt(myScanlineCountForLastFrame);
out.putInt(myCurrentScanline);
out.putInt(myVSYNCFinishClock);
out.putInt(myEnabledObjects);
out.putInt(myVSYNC);
out.putInt(myVBLANK);
out.putInt(myNUSIZ0);
out.putInt(myNUSIZ1);
out.putInt(myCOLUP0);
out.putInt(myCOLUP1);
out.putInt(myCOLUPF);
out.putInt(myCOLUBK);
out.putInt(myCTRLPF);
out.putInt(myPlayfieldPriorityAndScore);
out.putBool(myREFP0);
out.putBool(myREFP1);
out.putInt(myPF);
out.putInt(myGRP0);
out.putInt(myGRP1);
out.putInt(myDGRP0);
out.putInt(myDGRP1);
out.putBool(myENAM0);
out.putBool(myENAM1);
out.putBool(myENABL);
out.putBool(myDENABL);
out.putInt(myHMP0);
out.putInt(myHMP1);
out.putInt(myHMM0);
out.putInt(myHMM1);
out.putInt(myHMBL);
out.putBool(myVDELP0);
out.putBool(myVDELP1);
out.putBool(myVDELBL);
out.putBool(myRESMP0);
out.putBool(myRESMP1);
out.putInt(myCollision);
out.putInt(myPOSP0);
out.putInt(myPOSP1);
out.putInt(myPOSM0);
out.putInt(myPOSM1);
out.putInt(myPOSBL);
out.putInt(myCurrentGRP0);
out.putInt(myCurrentGRP1);
// pointers
// myCurrentBLMask = ourBallMaskTable[0][0];
// myCurrentM0Mask = ourMissleMaskTable[0][0][0];
// myCurrentM1Mask = ourMissleMaskTable[0][0][0];
// myCurrentP0Mask = ourPlayerMaskTable[0][0][0];
// myCurrentP1Mask = ourPlayerMaskTable[0][0][0];
// myCurrentPFMask = ourPlayfieldTable[0];
out.putInt(myLastHMOVEClock);
out.putBool(myHMOVEBlankEnabled);
out.putBool(myM0CosmicArkMotionEnabled);
out.putInt(myM0CosmicArkCounter);
out.putBool(myDumpEnabled);
out.putInt(myDumpDisabledCycle);
// Save the sound sample stuff ...
mySound->save(out);
}
catch(char *msg)
{
ale::Logger::Error << msg << endl;
return false;
}
catch(...)
{
ale::Logger::Error << "Unknown error in save state for " << device << endl;
return false;
}
return true;
}