Make sure to use correct 'virtual' size of ROM when creating the internal buffer.

This commit is contained in:
Stephen Anthony 2020-06-09 11:19:49 -02:30
parent 8483b6d160
commit 476a2b2c56
1 changed files with 5 additions and 2 deletions

View File

@ -52,7 +52,8 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size,
}
}
else
mySize = size;
// Make sure to use size defined by the bankswitching scheme
mySize = std::max(size, bsSize);
// Initialize ROM with all 0's, to fill areas that the ROM may not cover
size_t bufSize = std::max<size_t>(mySize, System::PAGE_SIZE);
@ -73,7 +74,9 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size,
// TODO: should we mirror here too??
// Directly copy the ROM image into the buffer
std::copy_n(image.get(), mySize, myImage.get());
// Only copy up to the amount of data the ROM provides; extra unused
// space will be filled with 0's from above
std::copy_n(image.get(), std::min(mySize, size), myImage.get());
}
else
{