diff --git a/Core/HdNesPack.cpp b/Core/HdNesPack.cpp index 34ea5409..2d040f9d 100644 --- a/Core/HdNesPack.cpp +++ b/Core/HdNesPack.cpp @@ -332,9 +332,6 @@ HdPackTileInfo* HdNesPack::GetCachedMatchingTile(uint32_t x, uint32_t y, HdPpuTi HdPackTileInfo* HdNesPack::GetMatchingTile(uint32_t x, uint32_t y, HdPpuTileInfo* tile, bool* disableCache) { auto hdTile = _hdData->TileByKey.find(*tile); - if(hdTile == _hdData->TileByKey.end()) { - hdTile = _hdData->TileByKey.find(tile->GetKey(true)); - } if(hdTile != _hdData->TileByKey.end()) { for(HdPackTileInfo* hdPackTile : hdTile->second) { @@ -348,6 +345,20 @@ HdPackTileInfo* HdNesPack::GetMatchingTile(uint32_t x, uint32_t y, HdPpuTileInfo } } + //repeat with default if not found + hdTile = _hdData->TileByKey.find(tile->GetKey(true)); + if (hdTile != _hdData->TileByKey.end()) { + for (HdPackTileInfo* hdPackTile : hdTile->second) { + if (disableCache != nullptr && hdPackTile->ForceDisableCache) { + *disableCache = true; + } + + if (hdPackTile->MatchesCondition(_hdScreenInfo, x, y, tile)) { + return hdPackTile; + } + } + } + return nullptr; }