struct Cartridge { auto pathID() const -> uint { return information.pathID; } auto region() const -> string { return information.region; } auto sha256() const -> string { return information.sha256; } auto manifest() const -> string; auto title() const -> string; auto load() -> bool; auto save() -> void; auto unload() -> void; auto serialize(serializer&) -> void; MappedRAM rom; MappedRAM ram; struct Information { uint pathID = 0; string region; string sha256; } information; struct Has { boolean ICD; boolean MCC; boolean DIP; boolean Event; boolean SA1; boolean SuperFX; boolean ARMDSP; boolean HitachiDSP; boolean NECDSP; boolean EpsonRTC; boolean SharpRTC; boolean SPC7110; boolean SDD1; boolean OBC1; boolean MSU1; boolean GameBoySlot; boolean BSMemorySlot; boolean SufamiTurboSlotA; boolean SufamiTurboSlotB; } has; private: Emulator::Game game; Emulator::Game slotGameBoy; Emulator::Game slotBSMemory; Emulator::Game slotSufamiTurboA; Emulator::Game slotSufamiTurboB; Markup::Node board; //cartridge.cpp auto loadGameBoy() -> bool; auto loadBSMemory() -> bool; auto loadSufamiTurboA() -> bool; auto loadSufamiTurboB() -> bool; //load.cpp auto loadBoard(string) -> Markup::Node; auto loadCartridge(Markup::Node) -> void; auto loadCartridgeGameBoy(Markup::Node) -> void; auto loadCartridgeBSMemory(Markup::Node) -> void; auto loadCartridgeSufamiTurboA(Markup::Node) -> void; auto loadCartridgeSufamiTurboB(Markup::Node) -> void; auto loadMemory(MappedRAM&, Markup::Node, bool required) -> void; auto loadMap(Markup::Node, SuperFamicom::Memory&) -> void; auto loadMap(Markup::Node, const function&, const function&) -> void; auto loadROM(Markup::Node) -> void; auto loadRAM(Markup::Node) -> void; auto loadICD(Markup::Node) -> void; auto loadMCC(Markup::Node) -> void; auto loadBSMemory(Markup::Node) -> void; auto loadSufamiTurboA(Markup::Node) -> void; auto loadSufamiTurboB(Markup::Node) -> void; auto loadDIP(Markup::Node) -> void; auto loadEvent(Markup::Node) -> void; auto loadSA1(Markup::Node) -> void; auto loadSuperFX(Markup::Node) -> void; auto loadARMDSP(Markup::Node) -> void; auto loadHitachiDSP(Markup::Node, uint roms) -> void; auto loaduPD7725(Markup::Node) -> void; auto loaduPD96050(Markup::Node) -> void; auto loadEpsonRTC(Markup::Node) -> void; auto loadSharpRTC(Markup::Node) -> void; auto loadSPC7110(Markup::Node) -> void; auto loadSDD1(Markup::Node) -> void; auto loadOBC1(Markup::Node) -> void; auto loadMSU1(Markup::Node) -> void; //save.cpp auto saveCartridge(Markup::Node) -> void; auto saveCartridgeGameBoy(Markup::Node) -> void; auto saveCartridgeBSMemory(Markup::Node) -> void; auto saveCartridgeSufamiTurboA(Markup::Node) -> void; auto saveCartridgeSufamiTurboB(Markup::Node) -> void; auto saveMemory(MappedRAM&, Markup::Node) -> void; auto saveRAM(Markup::Node) -> void; auto saveMCC(Markup::Node) -> void; auto saveSA1(Markup::Node) -> void; auto saveSuperFX(Markup::Node) -> void; auto saveARMDSP(Markup::Node) -> void; auto saveHitachiDSP(Markup::Node) -> void; auto saveuPD7725(Markup::Node) -> void; auto saveuPD96050(Markup::Node) -> void; auto saveEpsonRTC(Markup::Node) -> void; auto saveSharpRTC(Markup::Node) -> void; auto saveSPC7110(Markup::Node) -> void; auto saveOBC1(Markup::Node) -> void; friend class Interface; friend class ICD; }; extern Cartridge cartridge;