mirror of https://github.com/bsnes-emu/bsnes.git
59 lines
1.4 KiB
C++
59 lines
1.4 KiB
C++
struct Cartridge : MMIO {
|
|
auto pathID() const -> uint { return information.pathID; }
|
|
auto sha256() const -> string { return information.sha256; }
|
|
auto manifest() const -> string { return information.manifest; }
|
|
auto title() const -> string { return information.title; }
|
|
|
|
auto load() -> bool;
|
|
auto save() -> void;
|
|
auto unload() -> void;
|
|
|
|
auto readIO(uint16 address) -> uint8;
|
|
auto writeIO(uint16 address, uint8 data) -> void;
|
|
|
|
auto power() -> void;
|
|
auto second() -> void;
|
|
|
|
auto serialize(serializer&) -> void;
|
|
|
|
struct Information {
|
|
uint pathID = 0;
|
|
string sha256;
|
|
string manifest;
|
|
string title;
|
|
} information;
|
|
|
|
struct Memory {
|
|
auto read(uint address) const -> uint8;
|
|
auto write(uint address, uint8 data) -> void;
|
|
|
|
uint8* data = nullptr;
|
|
uint size = 0;
|
|
} rom, ram, rtc;
|
|
|
|
bool bootromEnable = true;
|
|
|
|
private:
|
|
struct Mapper {
|
|
virtual auto second() -> void {}
|
|
virtual auto read(uint16 address) -> uint8 = 0;
|
|
virtual auto write(uint16 address, uint8 data) -> void = 0;
|
|
virtual auto power() -> void = 0;
|
|
virtual auto serialize(serializer&) -> void = 0;
|
|
};
|
|
Mapper* mapper = nullptr;
|
|
|
|
#include "mbc0/mbc0.hpp"
|
|
#include "mbc1/mbc1.hpp"
|
|
#include "mbc1m/mbc1m.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"
|
|
#include "tama/tama.hpp"
|
|
};
|
|
|
|
extern Cartridge cartridge;
|