2020-02-19 23:53:34 -05:00
|
|
|
#pragma once
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include "RamHandler.h"
|
|
|
|
#include "IMemoryHandler.h"
|
|
|
|
#include "../Utilities/ISerializable.h"
|
|
|
|
|
|
|
|
class BsxMemoryPackHandler;
|
2020-02-22 17:42:18 -05:00
|
|
|
class Console;
|
2020-02-19 23:53:34 -05:00
|
|
|
|
|
|
|
class BsxMemoryPack : public ISerializable
|
|
|
|
{
|
2020-02-22 17:42:18 -05:00
|
|
|
private:
|
|
|
|
Console* _console = nullptr;
|
2020-02-19 23:53:34 -05:00
|
|
|
vector<uint8_t> _orgData;
|
|
|
|
uint8_t* _data = nullptr;
|
|
|
|
uint32_t _dataSize = 0;
|
|
|
|
vector<unique_ptr<IMemoryHandler>> _handlers;
|
|
|
|
|
|
|
|
uint8_t _calculatedSize = 0x0C;
|
|
|
|
|
2020-02-22 17:42:18 -05:00
|
|
|
bool _persistFlash = false;
|
2020-02-19 23:53:34 -05:00
|
|
|
bool _enableCsr = false;
|
|
|
|
bool _enableEsr = false;
|
|
|
|
bool _enableVendorInfo = false;
|
|
|
|
bool _writeByte = false;
|
|
|
|
uint16_t _command = 0;
|
|
|
|
|
|
|
|
public:
|
2020-02-22 17:42:18 -05:00
|
|
|
BsxMemoryPack(Console* console, vector<uint8_t>& data, bool persistFlash);
|
2020-02-19 23:53:34 -05:00
|
|
|
virtual ~BsxMemoryPack();
|
|
|
|
|
2020-02-22 17:42:18 -05:00
|
|
|
void SaveBattery();
|
|
|
|
|
2020-02-19 23:53:34 -05:00
|
|
|
void Serialize(Serializer& s) override;
|
|
|
|
|
|
|
|
void ProcessCommand(uint8_t value, uint32_t page);
|
|
|
|
void Reset();
|
2021-03-10 11:13:28 -05:00
|
|
|
|
2020-02-19 23:53:34 -05:00
|
|
|
vector<unique_ptr<IMemoryHandler>>& GetMemoryHandlers();
|
|
|
|
uint8_t* DebugGetMemoryPack();
|
|
|
|
uint32_t DebugGetMemoryPackSize();
|
2021-03-10 11:13:28 -05:00
|
|
|
|
2020-02-19 23:53:34 -05:00
|
|
|
class BsxMemoryPackHandler : public RamHandler
|
|
|
|
{
|
|
|
|
BsxMemoryPack* _memPack;
|
|
|
|
uint32_t _page;
|
|
|
|
|
|
|
|
public:
|
|
|
|
BsxMemoryPackHandler(BsxMemoryPack* memPack, uint32_t offset);
|
|
|
|
|
|
|
|
uint8_t Read(uint32_t addr) override;
|
|
|
|
void Write(uint32_t addr, uint8_t value) override;
|
|
|
|
};
|
|
|
|
};
|