This is topic

To visit this topic, use this URL:

Posted by

Previously, it had been reported that the maximum experience you can achieve in each stat is FE01 (65025). However, I was just working with NoCash, and I noticed that in the Blue game where I used nothing but an Arcanine, several of its stat experience values were at FFFF. To make sure, I tested a Chansey by setting its Defense stat exp (SE) to 7D50 and fighting a bunch of Pidgeys and Rattatas north of Pallet. The SE went all the way up to FFFF and stopped. It did not drop back down after I boxed the Chansey, but the stats didn't change from their FE01 level either.

Now, it's quite possible that FE01 is the maximum SE that the game will use, and anything above that is ignored. (I recall someone saying that the FE01 limit varies depending on the species.) However, it definitely is possible to get to FFFF via normal play.

BTW, each use of a stat booster gives you A00 (2560) points of stat experience. This is different from the 2550 figure that Necrosaro and Marcus Majarra give. With the ten-steroid limit, that means that they can provide around 40% of the total SE, at most. I didn't find where the cutoff line is, though (i.e. the amount of SE where it stops letting you use boosters).

When you defeat an enemy Pokemon, you get SE in each stat equal to that Pokemon's base stats.

Question: Does anyone know the formula for converting the total amount of stat experience (maximum of FFFF) into the one that's used in the max stat formula (maximum of 31.9 or 63.9, depending on how it's displayed)?

------------------

"This is Canada speaking. Give us all your stuff, or we'll annihilate you."

-- Mike Bullard

Posted by

But it isn't 7F00 or perhaps 7FFF? Grey Cloak (the SSF guy) asserted this once, though I imagine he got it from Necro.

If the cutoff line isn't some obvious fraction of maximum possible SE, perhaps it's an amount of SE that would produce a certain fraction of possible stat gain. I've no idea why they'd do it that way, of course.

**Question: Does anyone know the formula for converting the total amount of stat experience (maximum of FFFF) into the one that's used in the max stat formula (maximum of 31.9 or 63.9, depending on how it's displayed)?**

I sure don't. Presumably it's exponential, though? (Since 10 steroids provide only about 40% of possible SE, but ~62% of possible stat gain.)

Posted by

You know, it's bizarre that after all this time, and even putting matching stat experience GS codes in the Azure compendium, that nobody even bothered until now to look at two simple bytes in their game's RAM to debunk Necrosaro's 65,025 number.

We've always known that at least some things in the mechanics FAQ are flat out wrong. For example, Necrosaro said the probability of catching a max-stat pokemon on one try are 1 in 1,048,576 while most people on this forum now believe the probability to be 1 in 65,536. If we've always taken old research conclusions on such blind faith, who knows what else in the mechanics FAQ or Necrosaro's findings is erroneous.

[ 01-13-2005, 09:29 PM: Message edited by: JDonald ]

Posted by

JDonald:

The 65K number is correct. Altho, I can't complain, since we still list the 1M number on our site.

Well...we're getting to it...

------------------

"If it's just a lull, why am I bored right out of my skull?"

- The Replacements

Posted by

Every time I've given out the FE01 number I've given the provision "Provided Necro is correct...", which I've assumed to be true.

I never bother to check it in an emulator, mostly because I don't have one on my machine right now, and checking on a shark is a bitch an a half (I don't know why, honestly, it could have been so easy).

If that's the case then I've got an update for Mr. K, that's for sure. The shark page is then giving out fishy info.

Yea, the 1/64k thing has been around since March or something. It never got corrected here, and Marcus's FAQ never got updated either.

Much thanks to White Cat. If it is possible to get to max in normal play, then the shark page should reflect that.

Since I've been a lazy bum, I'll get on the stupid conversion from statEXP to actual stats... though I'm certain someone will post it before me now

I've wondered about that myself a lot.

By the way, in gold and silver there is only one special stat EXP. The question is: do you gain statEXP in special from their special attack, special defense, or an average?

------------------

-cfalcon

Infinite copies of this message also available through type BIRD.

Posted by

about the 64k thing - that was my error - when i originally found the two bytes that control the DV's, i found the four normal stats(atk,str,spd,spc), and when people started asking for HP i just assumed it was done in the same way without figuring that you could only fit four 0x10 values in two bytes. oh well - it doesn't really matter much except for those people who like to cheat with their game sharks anyway, or in theoretical probability statements.

and about whitecat's corrections on the other numbers that have to do with stat exp. i agree with him - the max stat exp you can get is ffff, which is 65535, and stat enhancers do raise your stats by 0A00, which gives you a maximum of 25600 thru stat enhancers. (BTW - the cutoff point for being able to use a stat enhancer is 25600: if you have 25599 stat exp you can still use an enhancer.) Those mistakes could be attributed to the fact that I was working with save game files in decimal mode and forgot that a 1 in a high byte meant 256, not 255. i was very young then, and i guess the margin of error was so small that nobody cared or even noticed =P

However, the maximum stat exp bonus is still 31.9999, which is only 65025 exp - this has been proven for years, and just now i double checked it to be sure. Any amount of stat exp over 65025 would theoretically yield 32 exp by the formula. So, in a way FE01 exp is still the maximum in that it's the greatest amount that actually contributes towards your stats. Actually, now i'm even more confused as to why it doesn't come out to be ~32.124 than i was before.

i just figured out breakpoints and the break on memory write option in nocash, so maybe i'll track down some actual code and see what's up in the actual code.

But then again, figuring out the graphics compression on the pokemon images would be even more worthwhile =P

------------------

Posted by

Oh yeah, here's the equations relating stat exp to actual bonus points:

y = 64x² - 16x + 2

where x is the amount of stat points given and y is the amount of stat exp.

And, its inverse:

x = (16 + sqrt(256y-512))/128

------------------

Posted by

Very nice, and thank you.

This thread brought *everyone* out of the woodwork. Pretty impressive, actually...

Heck, Necrosaro's the one that led me to Azure in the first place.

As to why it doesn't go to the values predicted... it probably doesn't use the formulas as given. It is certainly demonstrable that the game derives the stat EXP bonus from stat EXP: it is also hard to believe that the gameboy performs a 24 bit square root. Almost assuredly this distribution is calculated differently internally.

Doesn't it also get screwy if you try to levels other than 100? It's probably just linear, but since everything is integers with wierd rounding...

Meowth also claimed that some monsters have different amounts of stat EXP that they max at. I've never checked this, and the differences reported by him were minor, so it probably isn't a big deal.

That first formula looks so easy to implement, though...

------------------

-cfalcon

Infinite copies of this message also available through type BIRD.

Posted by

It does go to the values predicted in ALL cases except those values greater than 65025. I have extensively tested this with several different pokemon types and the formula works exactly for any value from 2 to 65025 and for every level.

And the game doesn't perform any weird rounding, it simply rounds down. That's why 31.999 only gives you 31 stat points at level 50, and 63.998 only gives you 63 at level 100.

It would not be hard to implement the algorithm in the game, and there's no need for its inverse in the game code. In fact, all of the coefficients in the equation are powers of 2, which makes itself easily manupilative using binary bit shift lefts in ASM.

I'll hopefully be doing some major Pokemon hacking in the next few weeks so maybe I can find the actual code in the game that performs this calculation.

-necrosaro

------------------

Posted by

No, there isn't a need for it's inverse in code. That was what I meant by "it probably doesn't use the formula as given"... not saying that the formula is incorrect (your data shows it to be, if it works over that range), but that it wasn't calculated exactly as you wrote it (the shortcut formula with the square root).

All I was referring to by "it gets screwy" was the varying amount of stat points you get "per level" at a certain amount of statEXP...

That was all I meant by that.

It would be nice to have the code, but it isn't strictly necessary... While sure, I'd like to know why it doesn't use anything past FE01, an accurate formula is an accurate formula. You've shown it to be right. I didn't mean to imply that we actually *needed* the code (but if you dig it up we'll appreciate it)...

------------------

-cfalcon

FIREBREATHER DICK wants to battle!

Posted by

Something in a thread about R/S vitamins sent me looking for this...

Necrosaro:

y = 64x² - 16x + 2

where x is the amount of stat points given and y is the amount of stat exp.

And, its inverse:

x = (16 + sqrt(256y-512))/128

If you input 65025 as the y value of that formula, you get 31.9995098001522213213766322559934.

However, if you simply divide 65535 by 2048, you get 31.99951171875, which is idenical down to four decimal places.

I came up with this while working on my own SSF-like program. As cfalcon noted, it seems unlikely that they'd use a "24-bit square root", and 2048 is a computer-esque number, so it makes sense. However, Necro indicates that his calcs works as long as the stat exp was 65025 or less.

Dividing 65025 by 2048 gives 31.75048828125, which still doubles to over 63.

I tried a few test calculations, and couldn't find any problem with having 65535 as the "what the game actually uses" value. Can someone prove me wrong here, with either using 65025 or 65535 as the max? Was the actual stat exp formula ever extracted?

Posted by

But then again, figuring out the graphics compression on the pokemon images would be even more worthwhile =P

oh already did that with the jap version ^^ was not that hard - i wrote a program back then (and i am now porting it to the us version (only supporting sapp right now). if anyone wants to test it or does not believe it just ask.