Parsing more fields in header

This commit is contained in:
Selim Mustafaev 2025-06-24 17:51:49 +03:00
parent 44ea8baea8
commit f07633a69e
3 changed files with 9 additions and 10 deletions

View File

@ -22,7 +22,7 @@ int main() {
}); });
device.connect(std::make_shared<SdlKeyboardController>()); device.connect(std::make_shared<SdlKeyboardController>());
//device.insertCartridge("/home/selim/Downloads/dk.nes"); //device.insertCartridge("/home/selim/Downloads/dk.nes");
device.insertCartridge("/Users/selim/Documents/smb.nes"); device.insertCartridge("/Users/selim/Documents/ff.nes");
//device.insertCartridge("C:\\Users\\selim\\Documents\\nestest.nes"); //device.insertCartridge("C:\\Users\\selim\\Documents\\nestest.nes");
auto frameStart = std::chrono::steady_clock::now(); auto frameStart = std::chrono::steady_clock::now();

View File

@ -28,7 +28,6 @@ namespace nes {
_chrRom = std::span<uint8_t>(_romData.get() + sizeof(RomHeader) + prgSize, chrSize); _chrRom = std::span<uint8_t>(_romData.get() + sizeof(RomHeader) + prgSize, chrSize);
_mapper = std::make_unique<Mapper0>(_header->prgChunks, _header->chrChunks); _mapper = std::make_unique<Mapper0>(_header->prgChunks, _header->chrChunks);
_mirroring = _header->flags.mirroring == 0 ? Mirroring::Horizontal : Mirroring::Vertical;
} }
uint8_t Cartridge::readPrg(uint16_t address) { uint8_t Cartridge::readPrg(uint16_t address) {
@ -42,7 +41,7 @@ namespace nes {
} }
Cartridge::Mirroring Cartridge::mirroring() const { Cartridge::Mirroring Cartridge::mirroring() const {
return _mirroring; return _header->flags.mirroring;
} }
} }

View File

@ -22,13 +22,16 @@ namespace nes {
class Cartridge { class Cartridge {
public: public:
enum Mirroring { enum Mirroring {
Horizontal, Horizontal = 0,
Vertical Vertical = 1
}; };
struct Flags { struct Flags {
uint8_t mirroring: 1; Mirroring mirroring: 1;
uint8_t reserved: 7; uint8_t batteryBacked: 1;
uint8_t trainer: 1;
uint8_t nametableAltLayout: 1;
uint8_t mapper: 4;
}; };
struct RomHeader { struct RomHeader {
@ -53,9 +56,6 @@ namespace nes {
RomHeader* _header; RomHeader* _header;
std::span<uint8_t> _prgRom; std::span<uint8_t> _prgRom;
std::span<uint8_t> _chrRom; std::span<uint8_t> _chrRom;
private:
Mirroring _mirroring;
}; };
} }