Research & DevelopmentGot 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!
Research & Development programs in this forum are subject to moderator approval before they are displayed.
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.
*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:
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: