mirror of
https://github.com/TomHarte/CLK.git
synced 2024-12-23 05:29:23 +00:00
Merge pull request #339 from TomHarte/AcornROMs
Allows the Electron to load 8kb ROMs.
This commit is contained in:
commit
cdae0fa593
@ -66,7 +66,13 @@ class ConcreteMachine:
|
||||
break;
|
||||
}
|
||||
|
||||
std::memcpy(target, &data[0], std::min(static_cast<std::size_t>(16384), data.size()));
|
||||
// Copy in, with mirroring.
|
||||
std::size_t rom_ptr = 0;
|
||||
while(rom_ptr < 16384) {
|
||||
std::size_t size_to_copy = std::min(16384 - rom_ptr, data.size());
|
||||
std::memcpy(&target[rom_ptr], data.data(), size_to_copy);
|
||||
rom_ptr += size_to_copy;
|
||||
}
|
||||
}
|
||||
|
||||
// Obtains the system ROMs.
|
||||
|
@ -23,9 +23,9 @@ static std::list<std::shared_ptr<Storage::Cartridge::Cartridge>>
|
||||
// only one mapped item is allowed
|
||||
if(segments.size() != 1) continue;
|
||||
|
||||
// which must be 16 kb in size
|
||||
// which must be 8 or 16 kb in size
|
||||
Storage::Cartridge::Cartridge::Segment segment = segments.front();
|
||||
if(segment.data.size() != 0x4000) continue;
|
||||
if(segment.data.size() != 0x4000 && segment.data.size() != 0x2000) continue;
|
||||
|
||||
// is a copyright string present?
|
||||
uint8_t copyright_offset = segment.data[7];
|
||||
|
Loading…
Reference in New Issue
Block a user