Mesen2/Core/SMS/SmsControlManager.h
Sour d6d0b87c22 Added ColecoVision support
Also adds mode 1 (text mode) and mode 3 (multicolor mode) support for the SMS/SG-1000
2024-07-27 14:52:31 +09:00

40 lines
No EOL
976 B
C++

#pragma once
#include "pch.h"
#include "SMS/SmsTypes.h"
#include "Shared/SettingTypes.h"
#include "Shared/BaseControlManager.h"
class SmsConsole;
class SmsVdp;
class SmsControlManager : public BaseControlManager
{
private:
SmsConsole* _console = nullptr;
SmsVdp* _vdp = nullptr;
SmsControlManagerState _state = {};
SmsConfig _prevConfig = {};
CvConfig _prevCvConfig = {};
bool GetTh(bool portB);
bool GetTr(bool portB);
uint8_t InternalReadPort(uint8_t port);
uint8_t ReadColecoVisionPort(uint8_t port);
void WriteColecoVisionPort(uint8_t value);
public:
SmsControlManager(Emulator* emu, SmsConsole* console, SmsVdp* vdp);
shared_ptr<BaseControlDevice> CreateControllerDevice(ControllerType type, uint8_t port) override;
SmsControlManagerState& GetState() { return _state; }
void UpdateControlDevices() override;
bool IsPausePressed();
uint8_t ReadPort(uint8_t port);
void WriteControlPort(uint8_t value);
void Serialize(Serializer& s) override;
};