Mesen-SX/Core/BsxStream.h

64 lines
1.2 KiB
C
Raw Permalink Normal View History

#pragma once
#include "stdafx.h"
#include "../Utilities/ISerializable.h"
2020-02-21 23:30:14 -05:00
class Console;
class MemoryManager;
class BsxStream : public ISerializable
{
private:
2020-02-21 23:30:14 -05:00
Console* _console;
MemoryManager* _memoryManager;
ifstream _file;
tm _tm = {};
uint16_t _channel = 0;
uint8_t _prefix = 0;
uint8_t _data = 0;
uint8_t _status = 0;
bool _prefixLatch = false;
bool _dataLatch = false;
bool _firstPacket = false;
uint32_t _fileOffset = 0;
uint8_t _fileIndex = 0;
uint16_t _queueLength = 0;
uint8_t _prefixQueueLength = 0;
uint8_t _dataQueueLength = 0;
uint16_t _activeChannel = 0;
uint8_t _activeFileIndex = 0;
2020-02-21 23:30:14 -05:00
int64_t _resetDate = -1;
uint64_t _resetMasterClock = 0;
void OpenStreamFile();
bool LoadStreamFile();
void InitTimeStruct();
uint8_t GetTime();
public:
BsxStream();
2020-02-21 23:30:14 -05:00
void Reset(Console* console, int64_t customDate);
uint16_t GetChannel();
2020-02-21 23:30:14 -05:00
bool NeedUpdate();
bool FillQueues();
uint8_t GetPrefixCount();
uint8_t GetPrefix();
uint8_t GetData();
uint8_t GetStatus(bool reset);
void SetChannelLow(uint8_t value);
void SetChannelHigh(uint8_t value);
void SetPrefixLatch(uint8_t value);
void SetDataLatch(uint8_t value);
void Serialize(Serializer& s) override;
};