mirror of https://github.com/bsnes-emu/bsnes.git
79 lines
1.4 KiB
C++
79 lines
1.4 KiB
C++
struct Cartridge : MMIO, property<Cartridge> {
|
|
Cartridge();
|
|
~Cartridge();
|
|
|
|
auto load_empty(System::Revision revision) -> void;
|
|
auto load(System::Revision revision) -> void;
|
|
auto unload() -> void;
|
|
|
|
auto rom_read(uint addr) -> uint8;
|
|
auto rom_write(uint addr, uint8 data) -> void;
|
|
auto ram_read(uint addr) -> uint8;
|
|
auto ram_write(uint addr, uint8 data) -> void;
|
|
|
|
auto mmio_read(uint16 addr) -> uint8;
|
|
auto mmio_write(uint16 addr, uint8 data) -> void;
|
|
|
|
auto power() -> void;
|
|
|
|
auto serialize(serializer&) -> void;
|
|
|
|
#include "mbc0/mbc0.hpp"
|
|
#include "mbc1/mbc1.hpp"
|
|
#include "mbc2/mbc2.hpp"
|
|
#include "mbc3/mbc3.hpp"
|
|
#include "mbc5/mbc5.hpp"
|
|
#include "mmm01/mmm01.hpp"
|
|
#include "huc1/huc1.hpp"
|
|
#include "huc3/huc3.hpp"
|
|
|
|
enum Mapper : uint {
|
|
MBC0,
|
|
MBC1,
|
|
MBC2,
|
|
MBC3,
|
|
MBC5,
|
|
MMM01,
|
|
HuC1,
|
|
HuC3,
|
|
Unknown,
|
|
};
|
|
|
|
struct Information {
|
|
string markup;
|
|
string title;
|
|
|
|
Mapper mapper;
|
|
bool ram;
|
|
bool battery;
|
|
bool rtc;
|
|
bool rumble;
|
|
|
|
uint romsize;
|
|
uint ramsize;
|
|
} information;
|
|
|
|
auto manifest() const -> string;
|
|
auto title() const -> string;
|
|
|
|
struct Memory {
|
|
uint id;
|
|
string name;
|
|
};
|
|
vector<Memory> memory;
|
|
|
|
readonly<bool> loaded;
|
|
readonly<string> sha256;
|
|
|
|
uint8* romdata = nullptr;
|
|
uint romsize = 0;
|
|
|
|
uint8* ramdata = nullptr;
|
|
uint ramsize = 0;
|
|
|
|
MMIO* mapper = nullptr;
|
|
bool bootrom_enable = true;
|
|
};
|
|
|
|
extern Cartridge cartridge;
|