mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2024-11-22 22:05:38 +00:00
41 lines
765 B
C++
41 lines
765 B
C++
#ifndef INCLUDED_ROMSET_H
|
|
#define INCLUDED_ROMSET_H
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <map>
|
|
#include <vector>
|
|
#include <cstdint>
|
|
|
|
// Holds a single ROM region
|
|
struct ROM
|
|
{
|
|
struct BigEndianPatch
|
|
{
|
|
uint32_t offset;
|
|
uint64_t value;
|
|
unsigned bits;
|
|
|
|
BigEndianPatch(uint32_t o, uint64_t v, unsigned b)
|
|
: offset(o),
|
|
value(v),
|
|
bits(b)
|
|
{}
|
|
};
|
|
|
|
std::shared_ptr<uint8_t> data;
|
|
std::vector<BigEndianPatch> patches;
|
|
size_t size = 0;
|
|
|
|
void CopyTo(uint8_t *dest, size_t dest_size, bool apply_patches = true) const;
|
|
};
|
|
|
|
struct ROMSet
|
|
{
|
|
std::map<std::string, ROM> rom_by_region;
|
|
|
|
ROM get_rom(const std::string ®ion) const;
|
|
};
|
|
|
|
#endif // INCLUDED_ROMSET_H
|