1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Adjusted Super Chip test to look for two portions of 128 bytes. It now spots Dig Dug and doesn't acquire any further false positives amongst the tested set. So failure to spot the Activision stack-based paging mechanism is now the only remaining failure.

This commit is contained in:
Thomas Harte 2017-03-12 20:39:45 -04:00
parent cae48aaa95
commit 8c5e39c0c5

View File

@ -179,13 +179,15 @@ static void DeterminePagingForCartridge(StaticAnalyser::Target &target, const St
}
// check for a Super Chip. Atari ROM images [almost] always have the same value stored over RAM
// regions.
if(target.atari.paging_model != StaticAnalyser::Atari2600PagingModel::CBSRamPlus && target.atari.paging_model != StaticAnalyser::Atari2600PagingModel::MNetwork)
// regions; when they don't they at least seem to have the first 128 bytes be the same as the
// next 128 bytes. So check for that.
if( target.atari.paging_model != StaticAnalyser::Atari2600PagingModel::CBSRamPlus &&
target.atari.paging_model != StaticAnalyser::Atari2600PagingModel::MNetwork)
{
bool has_superchip = true;
for(size_t address = 0; address < 256; address++)
for(size_t address = 0; address < 128; address++)
{
if(segment.data[address] != segment.data[0])
if(segment.data[address] != segment.data[address+128])
{
has_superchip = false;
break;