2015-12-26 17:11:00 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include <deque>
|
|
|
|
#include "INotificationListener.h"
|
|
|
|
#include "../Utilities/AutoResetEvent.h"
|
|
|
|
|
2017-11-19 23:08:23 -05:00
|
|
|
class VirtualFile;
|
2018-07-01 15:21:05 -04:00
|
|
|
class Console;
|
2017-11-19 23:08:23 -05:00
|
|
|
|
2017-04-23 18:47:28 -04:00
|
|
|
class RecordedRomTest : public INotificationListener
|
2015-12-26 17:11:00 -05:00
|
|
|
{
|
|
|
|
private:
|
2018-07-01 15:21:05 -04:00
|
|
|
shared_ptr<Console> _console;
|
|
|
|
|
2015-12-26 17:11:00 -05:00
|
|
|
bool _recording;
|
|
|
|
bool _runningTest;
|
2015-12-29 20:54:55 -05:00
|
|
|
int _badFrameCount;
|
2015-12-27 09:13:52 -05:00
|
|
|
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;
|
2015-12-27 09:13:52 -05:00
|
|
|
|
2017-11-19 23:08:23 -05:00
|
|
|
//Used when making a test out of an existing movie/test
|
|
|
|
vector<uint8_t> _movieData;
|
2015-12-27 09:13:52 -05:00
|
|
|
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:
|
2018-07-01 15:21:05 -04:00
|
|
|
RecordedRomTest(shared_ptr<Console> console);
|
2017-04-23 18:47:28 -04:00
|
|
|
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);
|
2017-11-19 23:08:23 -05:00
|
|
|
void RecordFromMovie(string testFilename, VirtualFile movieFile);
|
2015-12-27 09:13:52 -05:00
|
|
|
void RecordFromTest(string newTestFilename, string existingTestFilename);
|
2016-01-16 19:33:10 -05:00
|
|
|
int32_t Run(string filename);
|
2015-12-26 17:11:00 -05:00
|
|
|
void Stop();
|
|
|
|
};
|