Mesen-SX/Core/BaseCartridge.h

67 lines
1.5 KiB
C
Raw Normal View History

2019-02-15 21:33:13 -05:00
#pragma once
#include "stdafx.h"
#include "IMemoryHandler.h"
2019-03-12 09:15:57 -04:00
#include "CartTypes.h"
#include "../Utilities/ISerializable.h"
2019-02-15 21:33:13 -05:00
class MemoryManager;
class VirtualFile;
namespace CartFlags
{
enum CartFlags
{
LoRom = 1,
HiRom = 2,
FastRom = 4,
ExLoRom = 8,
ExHiRom = 16,
CopierHeader = 32
};
}
2019-03-12 09:15:57 -04:00
class BaseCartridge : public ISerializable
2019-02-15 21:33:13 -05:00
{
private:
vector<unique_ptr<IMemoryHandler>> _prgRomHandlers;
vector<unique_ptr<IMemoryHandler>> _saveRamHandlers;
SnesCartInformation _cartInfo;
CartFlags::CartFlags _flags;
2019-02-24 20:04:59 -05:00
string _romPath;
2019-02-15 21:33:13 -05:00
uint8_t* _prgRom = nullptr;
uint8_t* _saveRam = nullptr;
uint32_t _prgRomSize = 0;
uint32_t _saveRamSize = 0;
void MapBanks(MemoryManager &mm, vector<unique_ptr<IMemoryHandler>> &handlers, uint8_t startBank, uint8_t endBank, uint16_t startPage = 0, uint16_t endPage = 0x0F, uint16_t pageIncrement = 0, bool mirror = false);
2019-02-24 20:04:59 -05:00
void LoadBattery();
int32_t GetHeaderScore(uint32_t addr);
void DisplayCartInfo();
2019-02-15 21:33:13 -05:00
public:
virtual ~BaseCartridge();
2019-02-16 01:16:57 -05:00
static shared_ptr<BaseCartridge> CreateCartridge(VirtualFile &romFile, VirtualFile &patchFile);
2019-02-15 21:33:13 -05:00
void Init();
void SaveBattery();
2019-02-26 22:27:09 -05:00
RomInfo GetRomInfo();
2019-03-12 09:15:57 -04:00
string GetSha1Hash();
2019-02-26 22:27:09 -05:00
void RegisterHandlers(MemoryManager &mm);
2019-02-15 21:33:13 -05:00
uint8_t* DebugGetPrgRom() { return _prgRom; }
uint8_t* DebugGetSaveRam() { return _saveRam; }
uint32_t DebugGetPrgRomSize() { return _prgRomSize; }
uint32_t DebugGetSaveRamSize() { return _saveRamSize; }
2019-03-12 09:15:57 -04:00
void Serialize(Serializer &s) override;
2019-02-15 21:33:13 -05:00
};