1 #pragma once 2 #include "stdafx.h" 3 #include "ControlManager.h" 4 #include "CPU.h" 5 #include "Console.h" 6 #include "VsZapper.h" 7 #include <assert.h> 8 #include "StandardController.h" 9 #include "MovieManager.h" 10 #include "IInputProvider.h" 11 12 class BaseControlDevice; 13 14 class VsControlManager : public ControlManager, public IInputProvider 15 { 16 private: 17 uint8_t _prgChrSelectBit = 0; 18 uint8_t _slaveMasterBit = 0; 19 20 bool _refreshState = false; 21 22 VsSystemType _vsSystemType; 23 24 uint32_t _protectionCounter = 0; 25 const uint32_t _protectionData[3][32] = { 26 { 27 0xFF, 0xBF, 0xB7, 0x97, 0x97, 0x17, 0x57, 0x4F, 28 0x6F, 0x6B, 0xEB, 0xA9, 0xB1, 0x90, 0x94, 0x14, 29 0x56, 0x4E, 0x6F, 0x6B, 0xEB, 0xA9, 0xB1, 0x90, 30 0xD4, 0x5C, 0x3E, 0x26, 0x87, 0x83, 0x13, 0x00 31 }, 32 { 33 0x00, 0x00, 0x00, 0x00, 0xB4, 0x00, 0x00, 0x00, 34 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 35 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 36 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 37 }, 38 { 39 0x05, 0x01, 0x89, 0x37, 0x05, 0x00, 0xD1, 0x3E, 40 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 41 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 42 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 43 } 44 }; 45 46 protected: 47 ControllerType GetControllerType(uint8_t port) override; 48 void RemapControllerButtons() override; 49 uint8_t GetOpenBusMask(uint8_t port) override; 50 51 void UpdateSlaveMasterBit(uint8_t slaveMasterBit); 52 53 public: 54 using ControlManager::ControlManager; 55 56 void StreamState(bool saving) override; 57 void Reset(bool softReset) override; 58 59 void GetMemoryRanges(MemoryRanges &ranges) override; 60 61 uint8_t GetPrgChrSelectBit(); 62 63 void UpdateControlDevices() override; 64 65 uint8_t ReadRAM(uint16_t addr) override; 66 void WriteRAM(uint16_t addr, uint8_t value) override; 67 68 // Inherited via IInputProvider 69 virtual bool SetInput(BaseControlDevice* device) override; 70 };