The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Research & Development
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

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


Advertise here

Reply
 
Thread Tools
  #1    
Old June 30th, 2011, 01:11 AM
Mr.Pkmn
Someone making a pokemon hack
 
Join Date: May 2008

Advertise here
"How can leveling Pokemon be made less boring?": that is the question.

This is something that bothered me some time ago. When you complete the original game or normal difficulty hacks, your team rarely surpass lv 60. Challenging hacks may require you to grind up to lv 80-90, but the experience needed to reach those levels is 2-3 times the experience to reach lv 50, which can be very frustrating.

So I came to the conclusion that modifying the way the game gives you the experience or the required experience to gain a level could be a way to solve this problem and speed up things (& ending the game with lv 100 pokes). Since i can't ASM hack, i chose the second way.

Hacking the experience table
In Fire Red, around 0x253AE8, there's a table with all the values of the experience curve function stored in double words. Different tables for the different functions (erratic, fluctuating, medium-slow ecc..) exist, leaving the possibility of creating a custom function: linear, parabolic, logarithmic, exponential (lol no), piecewise ecc...
These functions are stored in this order:
Quote:
Medium-Fast
Erratic
Fluctuating
Medium-Slow
Fast
Slow
Medium-Fast
Medium-Fast
Don't ask me why there are three Medium-Fast groups (the real one is the first). This might be exploited to create new experience curves (eg: super slow only for legendaries).

I made this video for testing purposes:




Hacking the experience gain formula
This area needs research, but it can potentially do neat things like give a biased value of experience based on the level like in BW, or change the equation from linear to parabolic in order to gain more experience at higher levels.


My own implementation (Patch included)
I've decided to simply reduce the pendency of the original curves by dividing their values by a factor which is increased as the level rises. You can see the effect with this graph (old medium-fast compared to new):

h**p://i52.tinypic.com/2lrlu8.png

- Little to nothing changes up to level 30+
- The same experience required to reach lv 50 now allows you to reach lv 59
- The total experience to reach lv 100 is now halved

This graph shows you how the new curve follows the experience gained from battle:

h**p://i56.tinypic.com/wv69t0.png

Obviously this won't solve the problem of grinding at the lower levels, but you can create your own reducing factor. Please note that an excessive lowering of the needed experience to lv 100 can shorten the lifespan of your hack!
Attached Files
File Type: ips Fire Red - Exp Table Patch.ips‎ (3.1 KB, 25 views) (Save to Dropbox)
Reply With Quote
  #2    
Old July 2nd, 2011, 10:46 AM
RHIOneAlbum
Booted out - don't be like me!
 
Join Date: Jun 2011
Location: Dark Maroon City
Nature: Serious
Send a message via AIM to RHIOneAlbum
Interesting way to come across the question. Usually people just make the poke on give out more exp, or add more trainers, both of which are semi good ideas. But I can also see problems with this, the faster exp groups make it hard to grow early, but easier later on. You are right that wed have to edit the entire group to make it satisfying to players. Would it glitch up though?
Reply With Quote
  #3    
Old July 2nd, 2011, 03:37 PM
Mr.Pkmn
Someone making a pokemon hack
 
Join Date: May 2008
Quote:
Originally Posted by RHIOneAlbum View Post
Interesting way to come across the question. Usually people just make the poke on give out more exp, or add more trainers, both of which are semi good ideas. But I can also see problems with this, the faster exp groups make it hard to grow early, but easier later on. You are right that wed have to edit the entire group to make it satisfying to players. Would it glitch up though?
This is the most flexible solution, as you can shape the curve for your own needs. My need was reaching lv 100 in a faster way. You may change all pokemon from the Erratic group to the Fast group, or generate a level curve with all values halved. The latter though retains the hard part from lv 50 to lv 100, so while it makes all things faster (especially at the beginning) you'll still have to grind a lot for the final levels.

In a new game I haven't encountered any glitch, you can also check the video. It might create problems if you already had a save file with the old experience table though.
Reply With Quote
  #4    
Old July 4th, 2011, 01:02 PM
~Anbuja's Avatar
~Anbuja
Let's Keep It Simple
 
Join Date: Oct 2010
Location: In Snorlax Stomach
Gender: Male
Nature: Lonely
Send a message via Skype™ to ~Anbuja
to tell the truth i dont really get the point of shrinking the exp requiriment to rise the v of the pokemon how u did , i wouldt want to get an charizard lv 100 at brock the thing to train them hard and get mroe playtime is the uniqe thing at hacks for me not speeding the game to end it faster.
but this is just my opinion
__________________
Reply With Quote
  #5    
Old July 4th, 2011, 07:05 PM
Mr.Pkmn
Someone making a pokemon hack
 
Join Date: May 2008
Quote:
Originally Posted by Anbuja's_BlooDY View Post
to tell the truth i dont really get the point
You would've gotten the point if you actually read everything, not just watching the proof video.
Reply With Quote
  #6    
Old July 4th, 2011, 07:11 PM
RHIOneAlbum
Booted out - don't be like me!
 
Join Date: Jun 2011
Location: Dark Maroon City
Nature: Serious
Send a message via AIM to RHIOneAlbum
Aight, good discovery then. I still don't think it will take over as totally cool and standard, but nice to know that people can do this now. Good job :D
Reply With Quote
  #7    
Old July 4th, 2011, 08:35 PM
Deokishisu's Avatar
Deokishisu
Mr. Magius
 
Join Date: Feb 2006
Location: If I'm online, it's a safe bet I'm at a computer.
Gender: Male
Nature: Relaxed
There is a minor problem that might occur with lowering the experience required to get to certain levels. When trading to games not patched with this (or the stock Nintendo games), the levels would likely be reset to whatever they would be with that amount of experience normally when deposited into a box and withdrawn, as stats and such are recalculated upon doing so. Disregard this if experience values and levels aren't recalculated similarly, as I just have a basic understanding of what values go through this check when it happens.

EDIT: The solution would obviously be to keep the required experience to get to max level the same, and increase the amount of experience earned as a Pokemon levels, as opposed to lowering the requirements as it levels.
Reply With Quote
  #8    
Old July 4th, 2011, 09:51 PM
Mr.Pkmn
Someone making a pokemon hack
 
Join Date: May 2008
Quote:
Originally Posted by Deokishisu View Post
There is a minor problem that might occur with lowering the experience required to get to certain levels. When trading to games not patched with this (or the stock Nintendo games), the levels would likely be reset to whatever they would be with that amount of experience normally when deposited into a box and withdrawn, as stats and such are recalculated upon doing so. Disregard this if experience values and levels aren't recalculated similarly, as I just have a basic understanding of what values go through this check when it happens.

EDIT: The solution would obviously be to keep the required experience to get to max level the same, and increase the amount of experience earned as a Pokemon levels, as opposed to lowering the requirements as it levels.
I don't know if this is much of a problem since most hacks are played as standalone games. Some hacks are even more incompatible if they replaced pokemon with fakemon or modified the base stats and such.
Yes, the solution is hacking the experience gain formula but i don't know how we can do it. If it is SO important you can add the difference to all levels while maintaining the new experience curve. This will make lv 100 pokemon compatible with the other games.
Reply With Quote
  #9    
Old July 5th, 2011, 06:40 AM
TheDarkShark
Metal Headed Hacker
 
Join Date: May 2010
Location: Germany
Gender: Male
Nature: Calm
Hacking the formula shouldn't be as hard to do, as it seems (I hope so at least). Simply find the Pokémon's data offset in the RAM, put a break point on write to that offset and change the routine that looks like it could be the one calculating the gained EXP, if there's more than one. I'll see what I can do, but better don't trust into my ASM knowledge too much
__________________
There are two things every Rom-Hacker should learn:
1. Don't give away everything you know!

Reply With Quote
  #10    
Old July 5th, 2011, 08:18 AM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Quote:
Originally Posted by TheDarkShark View Post
Hacking the formula shouldn't be as hard to do, as it seems (I hope so at least). Simply find the Pokémon's data offset in the RAM, put a break point on write to that offset and change the routine that looks like it could be the one calculating the gained EXP, if there's more than one. I'll see what I can do, but better don't trust into my ASM knowledge too much
I've already managed to hack the experience formula. I will tell you right now, it's HARD. It's not laid out all nice and simple for you to find.

However, keeping in with this thread , I CAN tell you where the game writes the totalled up experience to (That is, the result of the Experience Formula).

I can't remember where in the rom exactly this happens, but the game writes the experience gain to 0x02023D50. I hope this will help people to come up with new and interesting ways of using exp gain. This is for the battle exp gain formula. The experience gaining types (slow, erratic etc) all use a LOOK UP table. I don't have the location of said table unfortunately, so you'll have to look it up yourself.

Hope this helps! :D
__________________
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
Reply With Quote
  #11    
Old July 6th, 2011, 01:19 AM
Mr.Pkmn
Someone making a pokemon hack
 
Join Date: May 2008
Quote:
Originally Posted by Jambo51 View Post
The experience gaining types (slow, erratic etc) all use a LOOK UP table. I don't have the location of said table unfortunately, so you'll have to look it up yourself.
If i didn't know i wouldn't have opened this topic
Reply With Quote
  #12    
Old July 6th, 2011, 04:45 AM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Quote:
Originally Posted by Mr.Pkmn View Post
If i didn't know i wouldn't have opened this topic
Yeah, I noticed you'd posted the table location after I posted my post. Hope the offset I provided helps though!
__________________
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
Reply With Quote
  #13    
Old January 25th, 2014, 08:14 AM
wael96
 
Join Date: Jul 2013
Location: Beijing,China
Gender: Male
...This is my result after beating the rival
http://user.qzone.qq.com/2992510925/4
Reply With Quote
Reply
Quick Reply

Sponsored Links


Advertise here
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
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 06:39 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.