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.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");
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);
_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) {
@ -42,7 +41,7 @@ namespace nes {
}
Cartridge::Mirroring Cartridge::mirroring() const {
return _mirroring;
return _header->flags.mirroring;
}
}

View File

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