Mesen-SX/Core/RecordedRomTest.h

46 lines
971 B
C
Raw Normal View History

2019-10-16 20:22:45 -04:00
#pragma once
#include "stdafx.h"
#include <deque>
#include "INotificationListener.h"
#include "../Utilities/AutoResetEvent.h"
class VirtualFile;
class Console;
class Ppu;
class RecordedRomTest : public INotificationListener, public std::enable_shared_from_this<RecordedRomTest>
{
private:
shared_ptr<Console> _console;
Ppu* _ppu;
bool _recording = false;
bool _runningTest = false;
int _badFrameCount = 0;
uint8_t _previousHash[16] = {};
std::deque<uint8_t*> _screenshotHashes;
std::deque<uint8_t> _repetitionCount;
uint8_t _currentCount = 0;
2019-10-16 20:22:45 -04:00
string _filename;
ofstream _file;
AutoResetEvent _signal;
private:
void Reset();
void ValidateFrame();
2019-10-16 20:22:45 -04:00
void SaveFrame();
void Save();
public:
RecordedRomTest(shared_ptr<Console> console = nullptr);
virtual ~RecordedRomTest();
void ProcessNotification(ConsoleNotificationType type, void* parameter) override;
void Record(string filename, bool reset);
int32_t Run(string filename);
void Stop();
};