26 explicit Cartridge(
const std::vector<u8>& rom_data);
27 ~Cartridge() =
default;
29 bool load_rom(
const std::vector<u8>& rom_data);
31 u8 read(u16 address)
const;
32 void write(u16 address, u8 value);
35 std::string get_title()
const {
return title; }
36 u8 get_mbc_type()
const {
return header.type; }
37 u8 get_rom_size_code()
const {
return header.rom_size; }
38 u8 get_ram_size_code()
const {
return header.ram_size; }
39 const std::vector<u8>& get_rom_bytes()
const {
return rom; }
41 u8 get_current_rom_bank()
const {
return current_rom_bank; }
42 void set_current_rom_bank(u8 bank) { current_rom_bank = bank; }
44 const std::vector<u8>& get_ram_bytes()
const {
return ram; }
45 std::vector<u8>& get_ram_bytes_mutable() {
return ram; }
46 void set_ram_bytes(
const std::vector<u8>& ram_data) { ram = ram_data; }
48 bool is_ram_enabled()
const {
return ram_enabled; }
49 void set_ram_enabled(
bool enabled) { ram_enabled = enabled; }
58 MBCType mbc_type = MBCType::None;
65 u8 current_rom_bank = 1;
66 u8 current_ram_bank = 0;
67 bool ram_enabled =
false;