Jump to content

TheShadyRelapse

New Member
  • Posts

    6
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by TheShadyRelapse

  1. This exercise will make it so traded Pokémon will listen to you fully at any level. It's a small tweak that changes it from 8 Badges to listen fully to 0 Badges to listen fully.
     
    Platinum
    ------------
    Open up the overlay_0016.bin file in a hex editor.
     
    Go to the location 0x13090 in overlay_0016.bin.
     
    You should see a string of bytes like this (square brackets for emphasis): 98 D7 F5 C4 FE [08] 28 02 DB 0C
     
    Change the 08 to be 00.
     
    Save, and reinsert the file into your ROM.
     
    You should now find that traded Pokémon always listen to you.
     
    HG / SS
    ------------
    Extract a decompressed overlay_0012.bin with crystaltile2 via the "Extract" option, then open it in a hex editor.
     
    Go to the location 0x136A4 in the decompressed overlay_0012.bin.
     
    You should see a string of bytes like this (square brackets for emphasis): 98 DE F5 46 F8 [08] 28 02 DB 0C
     
    Change the 08 to be 00.
     
    Save, and reinsert into your ROM with crystaltile2 using the "Compression" option.
     
    You should now find that traded Pokémon always listen to you.

    • Like 1
  2. Editing Poké Mart Items
    ---

    A quick addendum - this only definitely works for fixed item inventories, like the secondary clerk in some Poké Marts. I'm not sure how to edit the general market that changes after every few Badges.
    This requires the use of a hex editor such as Hex Workshop or HxD.

    This tutorial can be used for Platinum or HG/SS. I think the same steps may apply to Black/White as well, but in Black 2/White 2 it's stored in a different file (I believe a/2/8/2).

    Step 1: Calculate the hex string for the items in the mart that you want to edit.
    ---
    https://bulbapedia.bulbagarden.net/wiki/List_of_items_by_index_number_(Generation_IV)

    This page lists all items in the game with their numerical index. Internally, the game has a list of items that appear in each Poké Mart.
    Take note of the "Hex" column in that page. For example, a Protector has a hexadecimal index of 0x0141.
    The other thing to note is that the game stores bytes in little endian form. That means internally, you'd see the Protector written as "41 01". Each byte is the opposite way around.
    The hex string is just a few of these strung together.

    So for example, let's say we had a mart that sold Grass Mail (0x0089), Flame Mail (0x008A) and Bubble Mail (0x008B) and it's listed in that exact order in-game...

    Grass Mail
    Flame Mail
    Bubble Mail

    That means we'll need to search "89 00 8A 00 8B 00" to find it - each individual item has its bytes flipped due to little endian form, and then they're just strung together.

    In HG/SS, the item order is top left first, then top right, then middle left, middle right, bottom left, bottom right, top left on page two etc.

    To find what items to search for, look at the Poké Mart inventory you want to edit, cross-reference it with the page linked above and you can produce the hex string from that.

    Step 2: Extract the file the data is contained in.
    ---
    Poké Mart data is located in the arm9.bin.
    If you're playing Platinum, you can just open it up in the hex editor immediately. You can get your arm9.bin by extracting it with crystaltile2, or in the file folders SDSME/PPRE produce when a ROM is loaded into them.
    If you're playing HG/SS, you need to first decompress the arm9.bin as it's compressed internally. To do this, extract the arm9.bin with crystaltile2 but select "Extract(U)" instead of "Export".

    Step 3: Search the hex string in the arm9.bin
    ---
    Simply open your arm9.bin file up in a hex editor and search for the string above. For example, I'd search "89 00 8A 00 8B 00" if I were following the example above.
    Generally there should only be one result, as most of the fixed mart inventories are unique.

    Step 4: Edit the hex string to be the items you want
    ---
    Now we just change the items to what we want. Following the example above, let's say instead of Grass Mail, Flame Mail and Bubble Mail, I want to now sell Bloom Mail, Tunnel Mail and Steel Mail.
    I replace Grass Mail with Bloom Mail; referencing the index number document, I replace 89 00 with 8C 00.
    I replace Flame Mail with Tunnel Mail; so I change 8A 00 to be 8D 00.
    I replace Bubble Mail with Steel Mail; so I change 8B 00 to be 8E 00.

    That's all there is to this part! We can then save the arm9.bin file.

    Step 5: Reinsert the arm9.bin file into the game
    ---
    If this is Platinum and you just opened the arm9.bin file out of a folder PPRE/SDSME produced, you can just write the ROM. Otherwise, import the arm9.bin file over the current one with crystaltile2, then save your ROM.
    For HG/SS, you'll need to right-click on the arm9.bin in the File Explorer on crystaltile2 again, and this time select "Compression" followed by your arm9.bin. You should have a short pause as it reinserts, then you can save your ROM.

    You should now see the changes reflected in-game!

  3. On 4/18/2019 at 10:40 PM, Drayano said:

    Thank you very much for posting this!

    I've been after this knowledge for ages but I had no idea how to figure this out. Thank you again, this is a simple change but such a good quality of life improvement to the games.

    edit:
    Ah, sorry, I don't think I can actually use this in my hacks. It looks like while it does make the TMs infinite, it makes everything else infinite too. So you can use Rare Candies infinitely, give/take items from Pokémon to duplicate held items etc. It's very abusable. But this is still good for a personal playthrough on vanilla Platinum/HG/SS so it's still great that you've shared this!

    Is there any reason you chose to replace 49 with BD specifically, by the way? I tried some other bytes in place of BD to see what would happen and I got the infinite item effect with a few others like FF. 

    This was all tested on Platinum, by the way.

    I chose 49 because at the time I was thinking maybe If I change the the byte to any number it would do something so I tried 49 and it worked I also tried 64 which also worked so I'm glad that it works

    • Like 1
  4. Infinite TMs in Gen IV
    ---
    Let me first preface this by saying that this was figured out by Mikelan98 (with some help from Nextworld and BagBoy to find some of the offsets in different languages). Mikelan98 has requested that you give credit to him if you implement this in your hack.
     
    This is simply a documentation so the information doesn't get lost - I didn't figure out any of this myself!
     
    This is for the American (U) versions of Platinum and Heart Gold / Soul Silver.
     
    Step 1: Extract the relevant files
    ---
    First we need to get the right files out of the ROM.
     
    For Platinum, you'll need the arm9.bin and the overlay_0084.bin files.
    For HG / SS, you'll need the decompressed arm9.bin and a decompressed overlay_0015.bin files. (Use the Extract(U) option in crystaltile2 to decompress.) 
     
    Step 2: Edit the code to make the TM quantity not drop after use
    ---
    For Platinum, we want to make the following changes:
    * Search for "FE 00 28 07 D1 08 48" in the arm9.bin file.
    * Replace the "D1" with "E0" so that it now reads "FE 00 28 07 E0 08 48".
     
    For HG/SS, we want to make the following changes:
    * Search for "FD 00 28 07 D1 0A 48" in the decompressed arm9.bin file.
    * Replace the "D1" with "E0" so that it now reads "FD 00 28 07 E0 0A 48".
     
    Step 3: Edit the code to make the item quantity not appear for TMs in the bag
    ---
    For Platinum, we want to make the following changes:
    * Search for "FF F7 83 FF 04 B0" in the overlay_0084.bin file.
    * Replace the first four bytes with "00 00 00 00", so it should now read "00 00 00 00 04 B0".
     
    For HG/SS, we want to make the following changes:
    * Search for "81 42 53 D3" in the decompressed overlay_0015.bin file.
    * Replace the "D3" with E0 so that it now reads "81 42 53 E0".
     
    Step 4: Rebuild the ROM
    ---
    You'll need to reinsert the relevant files as needed. For HG/SS, you'll need to recompress them when adding them to the ROM by using the "Compression" option to import them back when using crystaltile2.
     
    After that, save and/or build your ROM, and you should find that TMs don't show a quantity anymore, and they also won't disappear after being used. 

    • Like 3
×
×
  • Create New...