I see. good work.
So your primary assumption is that the addresses are pointing to maps that are identical, more or less. The more-or-less part is where you do the distance checking (or inner-product test if you are a real geek) like a spell-checker.
I see. I can also see how there are multiple sources of errors possible.
NO. You misunderstand I think, I don't expect that addresses are pointing to maps that are identical.
I am assuming the code which looks for the specific map does not change much between revs of code. The code moves location - so the addresses change always, both program counter and target addresses, but the function structure remains almost static. When the structure of the routine changes the Levenshtein distance is not great FOR THE STRUCTURE OF THE FUNCTION AS A WHOLE, not it's location. I search for 0 distance in routine structure first as it is fast.
I'm not assuming the map is identical, they aren't even if the function is the same.
If I just assumed that because G rom, read data at program counter 0x88a43b, that in every rom a map is read at 0x88a43b I'd be off by miles on every single target.