View Single Post
Old February 28th, 2013 (5:16 PM). Edited February 28th, 2013 by karatekid552.
karatekid552's Avatar
karatekid552 karatekid552 is offline
What happens if I push it?....
    Join Date: Nov 2012
    Location: Do you really want to know? Really?
    Gender: Male
    Nature: Bold
    Posts: 1,766
    Originally Posted by Jambo51 View Post
    So, I've gotten sick of being asked for this, so I figured it might be a good idea to share it. It's so short and easy that it definitely doesn't warrant having its own thread, so putting it here seems like a good compromise.

    Extending the Number of Direct Sound Tracks on 3rd Gen Pokémon Games

    It's as easy as this:
    1. Search for the hex string "00 C5 94 00" in your ROM
    2. Replace said string with "00 CX 94 00" where X stands for the number of maximum DS tracks

    Now, there are limits here. Fire Red and Emerald (presumably Leaf Green too) can support a maximum of 12 (0xC) tracks, so you can put 00 CC 94 00 for these ROMs, however, Ruby (presumably Sapphire too) are different. RS can only support a maximum of 7!

    BPR - 12
    BPG - 12
    BPE - 12
    AXV - 7
    AXP - 7

    I just wanted to add that in RS there are actually two locations that have contain that string of hex values. One in the one 1D0000s and one in the E70000's. I believe after some talks with ShinyDragonHunter a while back I discovered this. I believe that it ended up being the first one.


    I also recently spent a lot of time pouring over the maximum number of overworld limiting bytes and found that in all games except Emerald, (which I have yet to figure out as it is very different, but I am close) that there were actually three different compare commands that prevent the increasing of OWs. The first was a normal check that set the limit at 151 for FR and 217 for Ruby. (Please note that there are 152 ows in FR and 218 in Ruby. This means that the SS Anne is not special like once assumed, this check is solely based off of the OW numbers used in A-map and NSE).

    The second and third checks actually worked together in order to allow the use of higher number OWs over OW #240 by pulling different OWs from the origional table. If you only change one of these checks, it screws up your OW's pallette and position on the map. They must be used in sync.

    The offsets for the ASM routines which control these limits are:

    Ruby: 0x0805BC10

    FireRed: 0x0805F2C8

    Please note that this is the beginning of the entire routine, not the checks themselves. I plan on extending Darthatron's Advanced OW Editing Tutorial (with permission if he lets me:D) in order to account for these checks. So unless you have a good understanding of basic ASM, don't play with this quite yet.

    Paired with Simba
    Reply With Quote