#pragma once #include #include enum CartridgeType : u8 { CT_ROM_ONLY = 0x00, CT_MBC1 = 0x01, CT_MBC1_RAM = 0x02, CT_MBC1_RAM_BATTERY = 0x03, }; class Cartridge { private: u8* _data; size_t _size; char _title[17]; enum Offsets { TITLE = 0x0134, MANU_CODE = 0x013F, }; public: Cartridge(std::ifstream& file); u8 operator[](size_t addr); inline const char* title() const { return _title; } inline CartridgeType type() const { return (CartridgeType)_data[0x147]; } inline size_t size() const { return _size; } };