Banner
Views: 236,225,156
Time: 2013-05-21 11:37:53 PM
9 users online: FlamingRok, o Giga, o imamelia, Jimmy52905, Mogsiah, Rextep, SacredSilverYoshi, Yoshi88, Z0mbie1337 - Guests: 14 - Bots: 12Users: 22,858 (1,278 active)
Latest: FUNKY kong ending
Tip: Use the Iggy/Larry Battle Tools to edit Iggy/Larry's platform.
Duplicate ROM map address
Forum Index - SMW Hacking - General SMW Hacking Help - SMW Data Repository - Duplicate ROM map address
Pages: « 1 »
As the title suggests, while searching the ROM map I found the following duplicated listing:

Code
621F8 $0C:9FF8 2 bytes ASM Mario's powerup status during the staff roll in the credits. Change to A9 00 for Small Mario, A9 01 for Big Mario, A9 02 for Cape Mario, A9 03 for Fiery Mario, A5 19 to keep the same powerup after Bowser's Battle.


Code
621F9 $0C:9FF9 1 byte Misc. Powerup of Mario in the Credits


9FF9 simple seems to be the exact powerup while 9FF8 includes the byte for loading it, A5 being an LDA $xx, A9 being LDA #$xx. It seems like the second address can be removed, and a note added to first address.

EDIT: Just to clarify, it should be noted that the first address is marked as 2 bytes, which includes the second address.
Last edited on 2010-04-20 08:46:14 PM by p4plus2.
there's some more after that one.
Originally posted by ROM Map
621FD | $0C:9FFD | 1 byte | Physics | X-Speed of Mario (Credits)
621FD | $0C:9FFD | 1 byte | Physics | How fast Mario walks during the staff roll. Doesn't actually affect the walking speed, but his walking animation speed.
62205 | $0C:A005 | 1 byte | Coordinate | X-position of Yoshi (Credits)
62205 | $0C:A005 | 1 byte | Coordinate | Yoshi's X position during the credits
6220C | $0C:A00C | 1 byte | Coordinate | Y-position of Yoshi (Credits)
6220C | $0C:A00C | 1 byte | Coordinate | Yoshi's Y position during the credits

1 has to be removed from these 3 since there's no need for Duplicate ROM Addresses
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 :P. (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); ?>
Last edited on 2010-04-21 03:26:57 AM by p4plus2.
Yeah, Alcaro made a script earlier to detect all dupes. I'll fix them whenever. Not high on my priority list now. (Although I'm not the only ROM map mod, so if anyone else has nothing else to do, that would be nice.)
Pages: « 1 »
Forum Index - SMW Hacking - General SMW Hacking Help - SMW Data Repository - Duplicate ROM map address

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2013 - SMW Central
Legal Information - Link To Us


Total queries: 29

Menu