Path: blob/master/libsnes/bsnes/snes/cartridge/cartridge.hpp
2 views
struct Cartridge : property<Cartridge> {1enum class Mode : unsigned {2Normal,3BsxSlotted,4Bsx,5SufamiTurbo,6SuperGameBoy,7};89enum class Region : unsigned {10NTSC,11PAL,12};1314enum class Slot : unsigned {15Base,16Bsx,17SufamiTurbo,18SufamiTurboA,19SufamiTurboB,20GameBoy,21};2223MappedRAM rom;24MappedRAM ram;2526readonly<bool> loaded;27readonly<unsigned> crc32;28readonly<string> sha256;2930readonly<Mode> mode;31readonly<Region> region;32readonly<unsigned> ram_size;3334readonly<bool> has_bsx_slot;35readonly<bool> has_nss_dip;36readonly<bool> has_superfx;37readonly<bool> has_sa1;38readonly<bool> has_necdsp;39readonly<bool> has_hitachidsp;40readonly<bool> has_armdsp;41readonly<bool> has_srtc;42readonly<bool> has_sdd1;43readonly<bool> has_spc7110;44readonly<bool> has_spc7110rtc;45readonly<bool> has_obc1;46readonly<bool> has_msu1;47readonly<bool> has_link;4849struct NonVolatileRAM {50const string id;51uint8_t *data;52unsigned size;53Slot slot;54NonVolatileRAM() : id(""), data(0), size(0), slot(Slot::Base) {}55NonVolatileRAM(const string id, uint8_t *data, unsigned size, Slot slot = Slot::Base)56: id(id), data(data), size(size), slot(slot) {}57};58linear_vector<NonVolatileRAM> nvram;5960struct Mapping {61function<uint8 (unsigned)> read;62function<void (unsigned, uint8)> write;63Bus::MapMode mode;64unsigned banklo;65unsigned bankhi;66unsigned addrlo;67unsigned addrhi;68unsigned offset;69unsigned size;7071Mapping();72Mapping(const function<uint8 (unsigned)>&, const function<void (unsigned, uint8)>&);73Mapping(Memory&);74};75linear_vector<Mapping> mapping;7677struct Information {78struct NSS {79lstring setting;80lstring option[16];81} nss;82} information;8384void load(Mode, const char*);85void unload();8687void serialize(serializer&);88Cartridge();89~Cartridge();9091private:92void parse_markup(const char*);93void parse_markup_map(Mapping&, XML::Node&);9495void parse_markup_rom(XML::Node&);96void parse_markup_ram(XML::Node&);97void parse_markup_nss(XML::Node&);98void parse_markup_icd2(XML::Node&);99void parse_markup_superfx(XML::Node&);100void parse_markup_sa1(XML::Node&);101void parse_markup_necdsp(XML::Node&);102void parse_markup_hitachidsp(XML::Node&);103void parse_markup_armdsp(XML::Node&);104void parse_markup_bsx(XML::Node&);105void parse_markup_sufamiturbo(XML::Node&);106void parse_markup_srtc(XML::Node&);107void parse_markup_sdd1(XML::Node&);108void parse_markup_spc7110(XML::Node&);109void parse_markup_obc1(XML::Node&);110void parse_markup_msu1(XML::Node&);111void parse_markup_link(XML::Node&);112113inline uint8 rom_read(unsigned addr);114inline void rom_write(unsigned addr, uint8 n);115inline uint8 ram_read(unsigned addr);116inline void ram_write(unsigned addr, uint8 n);117};118119extern Cartridge cartridge;120121122