Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!

Reply
 
Thread Tools
  #1    
Old July 16th, 2010 (6:30 PM). Edited July 17th, 2010 by Chaos Rush.
Chaos Rush's Avatar
Chaos Rush Chaos Rush is offline
     
    Join Date: May 2007
    Gender: Male
    Posts: 1,302
    After some researching, I managed to find out how to edit the Battle Tower Pokemon. The offset of the Pokemon Data base starts at 0x4038E0 (Pokemon Ruby).

    The offset in Emerald is somewhere around 0x5D97CC. I tried porting Emerald's list into Ruby, but I hit a brick wall when I couldn't find the offset. I thought the pointer in Ruby was at 0x134F54, but when I changed the bytes there to repoint to where I pasted the Emerald Pokemon list, the Battle Tower Pokemon were exactly the same as Pokemon Ruby & Sapphire. So then I tried simply pasting Emerald's list directly over Ruby's (even though Emerald has a much larger list than Ruby's, lol), all that did was crash the game when I tried to make a Battle Room challenge.

    Anyways, I don't think I need to explain how to change it, but at 0x4038E0 you see the bytes 19 00, right? Yeah, and if you use GoldFinger, if you look up at the top while 19 is highlighted, you should see, "19 (25)". And Pikachu's hex number is also 25, meaning that the first byte is the species of the Pokemon. According to this page, there are only two Pikachu you will encounter in the Battle Tower, so at 0x4038E0, change 19 to 18, and congratulations, 50% of all Pikachus will now turn into Arboks.

    I'm too lazy to figure out how to edit their moveset, but it's pretty easy, since the move bytes are very close to the species byte(s).

    So here's some screenshots to prove that I'm not making up stuff:



    I didn't edit the movesets, I just changed random 01s into 00s to change some of their species numbers, which is why you see non Hoenn-Pokemon using illegal moves (their movesets originally belonged to Hoenn Pokemon).

    Obviously, I'm no advanced hacker, but the reason why I'm posting this is because hopefully some of you advanced hackers can figure out how to port Emerald's Pokemon list over Ruby's.

    EDIT: I did a little more experimenting, I pasted part of Emerald's list over Ruby's, and that doesn't exactly work correctly. Usually it freezes right before you battle a trainer, but if you manage to make it into battle, the Pokemon use glitchy moves. One time where I made it into a Battle, when my foe Dustox attacked, it said, "Dustox used EXIT" and then it froze.


    Credits:
    *Serebii.net - for posting the Battle Tower list that helped me find Ruby's offset
    *Peterko (a member at Smogon) - for making this thread that helped me find Emerald's offset
    *HackMew - for making A-Trainer, which I used to mimic some Battle Tower Pokemon to help me find the offsets for both Ruby and Emerald
    *Whoever made GoldFinger, the hex editor I used to find everything.

    Also, this might help with research, but here's a patch for Ruby that makes some Kanto Pokemon appear in the Battle Tower with unfitting movesets:
    Attached Files
    File Type: ips RubyBattleTowerMod.ips‎ (1.8 KB, 10 views) (Save to Dropbox)
    __________________
    Reply With Quote

    Relevant Advertising!

      #2    
    Old July 21st, 2010 (5:19 AM). Edited July 22nd, 2010 by Wichu.
    Wichu's Avatar
    Wichu Wichu is offline
    Project Amethyst
       
      Join Date: Sep 2007
      Location: North Herts, England
      Age: 24
      Gender: Male
      Nature: Naive
      Posts: 2,051
      The reason it doesn't work if you just copy and paste is that the data format in Emerald is different. Also, even if you did repoint it, you'd have to change the number of Pokémon the game thinks there are in the list (if you just copied Emerald's list, Ruby would only consider the first part of the list, up to however many Pokémon are in Ruby's Battle Tower).

      Here's the structure of the Battle Tower data for both Emerald and Ruby:
      Code:
      Emerald:
      
      Pokémon List Offset: 0x5D97BC
      Slateport Tent Offset: 0x5DE02C
      Verdanturf Tent Offset: 0x5DEC28
      Fallarbor Tent Offset: 0x5DF69C
      Item List Offset: 0x5CECB0
      
      Species (2 bytes)
      Move 1 (2 bytes)
      Move 2 (2 bytes)
      Move 3 (2 bytes)
      Move 4 (2 bytes)
      Item (1 byte)
      EVs (1 byte)
      Nature (1 byte)
      Padding (3 bytes)
      
      Ruby:
      
      Pokémon List Offset: 0x4038E0
      Item List Offset: 0x403860
      
      Species (2 bytes)
      Item (1 byte)
      ?? (1 byte)
      Move 1 (2 bytes)
      Move 2 (2 bytes)
      Move 3 (2 bytes)
      Move 4 (2 bytes)
      EVs (1 byte)
      Nature (1 byte)
      Padding (2 bytes)
      Firstly, does anyone know what the unknown byte in Ruby does? It's not present in Emerald...

      Secondly, is there not an editor for this yet? Looks like I have something to do :)

      EDIT: By the way, the Item byte isn't an item ID, it refers to the Battle Tower's own item list. The item list is simply a list of 2-byte item IDs used in the Battle Tower.

      EDIT2: Whoops, seems like I accidentally added a byte to the Ruby ROM, so the format was wrong. I've now corrected it.
      __________________
      Reply With Quote
      Reply
      Quick Reply

      Sponsored Links
      Thread Tools

      Posting Rules
      You may not post new threads
      You may not post replies
      You may not post attachments
      You may not edit your posts

      BB code is On
      Smilies are On
      [IMG] code is On
      HTML code is Off

      Forum Jump


      All times are GMT -8. The time now is 3:55 AM.