Mesen2/Core/WS/WsCpuPrefetch.h
2024-09-19 21:19:43 +09:00

37 lines
674 B
C++

#pragma once
#include "pch.h"
#include "Utilities/ISerializable.h"
class WsCpu;
class WsMemoryManager;
class WsCpuPrefetch final : public ISerializable
{
private:
uint16_t _fetchCs = 0;
uint16_t _fetchIp = 0;
uint8_t _readPos = 0;
uint8_t _writePos = 0;
uint8_t _size = 0;
uint8_t _waitCycles = 0;
uint8_t _data[16] = {};
WsMemoryManager* _memoryManager = nullptr;
WsCpu* _cpu = nullptr;
bool IsFull();
void PushByte(uint8_t value);
public:
WsCpuPrefetch(WsCpu* cpu, WsMemoryManager* memoryManager);
void Prefetch();
void ProcessRep(uint8_t opCode);
uint8_t Read();
void Clear(uint16_t cs, uint16_t ip);
void Serialize(Serializer& s) override;
};