Mesen-X/Core/RecordedRomTest.h

51 lines
1.2 KiB
C
Raw Normal View History

2015-12-26 17:11:00 -05:00
#pragma once
#include "stdafx.h"
#include <deque>
#include "INotificationListener.h"
#include "../Utilities/AutoResetEvent.h"
class VirtualFile;
class Console;
class RecordedRomTest : public INotificationListener
2015-12-26 17:11:00 -05:00
{
private:
shared_ptr<Console> _console;
2015-12-26 17:11:00 -05:00
bool _recording;
bool _runningTest;
int _badFrameCount;
bool _recordingFromMovie;
2015-12-26 17:11:00 -05:00
uint8_t _previousHash[16];
std::deque<uint8_t*> _screenshotHashes;
std::deque<uint8_t> _repetitionCount;
uint8_t _currentCount;
//Used when making a test out of an existing movie/test
vector<uint8_t> _movieData;
stringstream _romStream;
2015-12-26 17:11:00 -05:00
string _filename;
ofstream _file;
AutoResetEvent _signal;
private:
void Reset();
void ValidateFrame(uint16_t* ppuFrameBuffer);
void SaveFrame(uint16_t* ppuFrameBuffer);
void Save();
public:
RecordedRomTest(shared_ptr<Console> console);
virtual ~RecordedRomTest();
2015-12-26 17:11:00 -05:00
2016-12-17 23:14:47 -05:00
void ProcessNotification(ConsoleNotificationType type, void* parameter) override;
2015-12-26 17:11:00 -05:00
void Record(string filename, bool reset);
void RecordFromMovie(string testFilename, VirtualFile movieFile);
void RecordFromTest(string newTestFilename, string existingTestFilename);
int32_t Run(string filename);
2015-12-26 17:11:00 -05:00
void Stop();
};