From a33d31d02af5cef29b5803492cbc8604dba1a30c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 17 Aug 2015 00:34:01 -0400 Subject: [PATCH] Fixed to allow loading of ROMs less than 1kb in size. --- Machines/Atari2600.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Machines/Atari2600.cpp b/Machines/Atari2600.cpp index 7d6e53007..913399ff1 100644 --- a/Machines/Atari2600.cpp +++ b/Machines/Atari2600.cpp @@ -568,8 +568,17 @@ void Machine::set_rom(size_t length, const uint8_t *data) while(_rom_size < length && _rom_size < 32768) _rom_size <<= 1; delete[] _rom; + _rom = new uint8_t[_rom_size]; - memcpy(_rom, data, std::min(_rom_size, length)); + + size_t offset = 0; + const size_t copy_step = std::min(_rom_size, length); + while(offset < _rom_size) + { + size_t copy_length = std::min(copy_step, _rom_size - offset); + memcpy(&_rom[offset], data, copy_length); + offset += copy_length; + } size_t romMask = _rom_size - 1; _romPages[0] = _rom;