I just wrote a quick PHP script(source below), to find more duplicates. It only searched addresses and did not search for overlapping addresses, that is on my to do list. I will run the script on the RAM map in my next post.
EDIT: Good news, the RAM map has no duplicates, at least no direct duplicates. I will work on a script to check for overlaps later.
The list of duplicates it found was as follow:
Code
03291 $00:B091 15 bytes
03291 $00:B091 12 bytes
Code
0517B $00:CF7B 1 byte
0517B $00:CF7B 1 byte
Code
09ED7 $01:9CD7 4 bytes
09ED7 $01:9CD7 24 bytes
Code
0E4FB $01:E2FB 1 byte
0E4FB $01:E2FB 1 byte
Code
10D8C $02:8B8C 8 bytes
10D8C $02:8B8C 8 bytes
Code
11547 $02:9347 3 bytes
11547 $02:9347 3 bytes
Code
1A01C $03:9E1C 5 bytes
1A01C $03:9E1C 5 bytes
The script:
Code
<?php
$array = array(); //fill in array...
$cmp_unique = create_function ('$value',
'if ($value > 1){
return true;
}
');
$result = array_keys (array_filter (array_count_values($array), $cmp_unique));
var_dump($result);
?>
______________________________________________________
DOUBLE EDIT: I just finished my scan for overlapping addresses, the script will again be posted below. But first, the overlaps(Be prepared this is quite a few...)
Code
07376 $00:F176 131 bytes
//07376 ends at 073F9
073E9 $00:F1E9 1 byte
073EA $00:F1EA 2 bytes
Code
08963 $01:8763 38 bytes
//08963 ends at 08979
08978 $01:8778 3 bytes
Code
09E1D $01:9C1D 12 bytes
//09E1D ends at 09E31
09E25 $01:9C25 2 bytes
Code
09E5C $01:9C5C 10 bytes
//09E5C ends at 09E66
09E65 $01:9C65 4 bytes
Code
09E7F $01:9C7F 199 bytes
//09E7F ends at 09F46
//NOTE:this is a duplicated address
//as well as an overlapping address
09ED3 $01:9CD3 4 bytes
09ED7 $01:9CD7 4 bytes
09ED7 $01:9CD7 24 bytes
Code
0CF1E $01:CD1E 12 bytes
//0CF1E ends at 0CF2A
0CF23 $01:CD23 7 bytes
Code
0D8D2 $01:D6D2 6 bytes
//0D8D2 ends at 0D8D8
0D8D5 $01:D6D5 1 byte
0D8D7 $01:D6D7 1 byte
Code
0F46A $01:F26A 9 bytes
//0F46A ends at 0F473
0F470 $01:F270 1 byte
Code
0F473 $01:F273 9 bytes
//0F473 ends at 0F47C
0F479 $01:F279 1 byte
Code
10208 $02:8008 108 bytes
//10208 ends at 10274
10272 $02:8072 10 bytes
Code
1082F $02:862F 52 bytes
//1082F ends at 10863
1084E $02:864E 1 byte
10856 $02:8656 1 byte
Code
10D84 $02:8B84 8 bytes
//10D84 ends at 10D8C
//NOTE, this one ends on the first
//byte of the next so may be a
//false alarm...
10D8C $02:8B8C 8 bytes
Code
183F5 $03:81F5 68 bytes
//183F5 ends at 18439
18434 $03:8234 1 byte
Code
1D3A4 $03:D1A4 138 bytes
//1D3A4 ends at 1D42E
1D3D7 $03:D1D7 2 bytes
1D3DD $03:D1DD 2 bytes
Code
2794B $04:F74B 35 bytes
//2794B ends at 2796E
27950 $04:F750 3 bytes
27954 $04:F754 1 byte
Code
2A421 $05:A221 863 bytes
//2A421 ends at 2A765
2A762 $05:A562 30 bytes
Code
327B9 $06:A5B9 72 bytes
//327B9 ends at 32801
32800 $06:A600 745 bytes
Code
6B4CA $0D:B2CA 108 bytes
//6B4CA ends at 6B536
6B528 $0D:B328 1 byte
6B529 $0D:B329 2 bytes
6B532 $0D:B332 1 byte
6B533 $0D:B333 2 bytes
WOW! That was a lot of typing and looking up! Anyways, here is the sorting script I wrote....now to run it on the RAM map....oh joy....
Code
<?php
require "bytes.php"; //contains $byte_array
require "addresses.php"; //contains $addresses_array
$array = array();
function generate_array($addresses, $bytes)
{
global $array;
$i = 0;
foreach($addresses as $address){
for($a = 0; $a < $bytes[$i]; $a++){
array_push($array, ($address+$a));
}
$i++;
}
}
generate_array($addresses_array, $byte_array);
$cmp_unique = create_function ('$value',
'if ($value > 1){
return true;
}
');
$result = array_keys (array_filter (array_count_values($array), $cmp_unique));
$handle = fopen("/mnt/store/html/testing/dup.txt", "w");
foreach($result as $item){
if(in_array($item, $addresses_array)){
fwrite($handle,dechex($item) . "\n");
}
}
fclose($handle);
?>
raw output of duplicate and overlapping addresses, which may be easier to ready...:
Code
3291
517b
73e9
73ea
8978
9e25
9e65
9ed3
9ed7
cf23
d8d5
d8d7
e4fb
f470
f479
10272
1084e
10856
10d8c
11547
18434
1a01c
1d3d7
1d3dd
27950
27954
2a762
32800
60200
621f9
621fd
62205
6220c
6b528
6b529
6b532
6b533
______________________________________________________
TRIPLE EDIT:
Good news again for the RAM map, it is clean once again. 
After everything is sorted out lets try to keep things sorted so that nobody has to spend two hours sorting addresses again . (10 min coding, hour and 50 min transferring data from ROM map to here...)
AFAIK everything has been checked now. Let me know if anything else needs attention, I have plenty of spare time for awhile.
______________________________________________________
QUADRUPLE EDIT:
Improved and cleaned up the source a bit...
Code
<?php
require "bytes.php";
require "addresses.php";
$array = array();
function is_unique($item)
{
if ($item > 1){
return true;
}
}
function generate_array($addresses, $bytes)
{
global $array;
$i = 0;
foreach($addresses as $address){
for($a = 0; $a < $bytes[$i]; $a++){
array_push($array, ($address+$a));
}
$i++;
}
}
generate_array($addresses_array, $byte_array);
$array = array_keys(array_filter(array_count_values($array), "is_unique"));
$handle = fopen("./dup.txt", "w");
foreach($array as $item){
if(in_array($item, $addresses_array)){
fwrite($handle,dechex($item) . "\n");
}
}
fclose($handle);
?>
|