Move 'max rom size' into a const method, and make use of it elsewhere in the code.

This commit is contained in:
Stephen Anthony 2020-05-25 17:32:01 -02:30
parent 6869582d5a
commit ad781da69d
3 changed files with 8 additions and 5 deletions

View File

@ -90,9 +90,9 @@ using DWordBuffer = std::unique_ptr<uInt32[]>; // NOLINT
using AdjustFunction = std::function<void(int)>;
// We use KB a lot; let's make a literal for it
constexpr uInt32 operator "" _KB(unsigned long long size)
constexpr size_t operator "" _KB(unsigned long long size)
{
return static_cast<uInt32>(size * 1024);
return static_cast<size_t>(size * 1024);
}
static const string EmptyString("");
@ -128,6 +128,9 @@ namespace BSPF
static const string ARCH = "NOARCH";
#endif
// Maximum size of a ROM that Stella can support
inline constexpr size_t romMaxSize() { return 512_KB; }
// Make 2D-arrays using std::array less verbose
template<typename T, size_t ROW, size_t COL>
using array2D = std::array<std::array<T, COL>, ROW>;

View File

@ -83,7 +83,7 @@ uInt16 Cartridge::bankSize(uInt16 bank) const
getImage(size);
return std::min(uInt32(size) / romBankCount(), 4_KB); // assuming that each bank has the same size
return std::min(size / romBankCount(), 4_KB); // assuming that each bank has the same size
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -236,7 +236,7 @@ size_t FilesystemNode::read(ByteBuffer& image) const
return size;
// Otherwise, the default behaviour is to read from a normal C++ ifstream
image = make_unique<uInt8[]>(512 * 1024);
image = make_unique<uInt8[]>(BSPF::romMaxSize());
ifstream in(getPath(), std::ios::binary);
if (in)
{
@ -247,7 +247,7 @@ size_t FilesystemNode::read(ByteBuffer& image) const
if (length == 0)
throw runtime_error("Zero-byte file");
size = std::min<size_t>(length, 512 * 1024);
size = std::min<size_t>(length, BSPF::romMaxSize());
in.read(reinterpret_cast<char*>(image.get()), size);
}
else