Looking for a Pokemon Crystal EXP multiplier cheat

Discussion in 'General Gaming Discussion' started by BORTZ, Jan 13, 2016.

  1. BORTZ

    BORTZ Tired of being the good guy

    GBAtemp Patron
    BORTZ is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Dec 2, 2007
    United States
    Hi all again

    I'm looking for a cheat/code that might not even exist, but I'm going to ask anyways. I am trying to find a code that allows me to multiply the number of EXP points a pokemon gets after battle.

    I have found a few codes already, but I dont understand how to use them, but I do understand what they do. Here's the most promising code I found:

    Exp. Points code explained
    Here's how to use the Exp. Points cheat:
    1. Put your Pokemon that you want to train in slot 1.
    2. Take a look at his experience.
    3. Add to that number the amount of experience you want him to get (for the purposes of this post I assume it has 3000xp and you want him to have 2000xp more)
    4. Convert the result to hexadecimal using a site such ashttp://www.statman.info/conversions/hexadecimal.html.
    5. The result is 1388
    Put the number into blocks of three and replace the xx's below depending on how large it is.
    ------------------------------Gold/Silver- Crystal
    E.g. This becomes
    Exp. Points Modifier (Larger) 01xx32DA -- 91xxE7DC
    Exp. Points Modifier (Shorter) 01xx33DA -- 91xxE8DC
    Exp. Points Modifier (Smaller) 01xx34DA -- 91xxE9DC
    Exp. Points Modifier (Larger) 010032DA -- 9100E7DC
    Exp. Points Modifier (Shorter) 011333DA -- 9113E8DC
    Exp. Points Modifier (Smaller) 018834DA -- 9188E9DC
    Alternatively, put the one hit kill code plus the 255 enemy Pokemon code and you will get lots of xp each time. (can be found above)
    From what I can gather, this code allows you to set a specific number of EXP that your pokemon will get after a battle offset by the number of EXP the pokemon already has. This works to a degree, but its not a good "set it and forget it solution like an EXP multiplier would be. This one would require constant babysitting because I think if you do the numbers wrong, you can delevel your pokes.

    The other one that I found was this:
    01FF86D0 which I think just gives an ass ton of ex. That makes sense seeing as the XX value is FF. But I think thats it, it doesnt scale, it just keeps handing you that same set huge number after each battle.

    Long story short, I'm trying out a hack called Pokemon Crystal Kazio. Its a really ruthless hack where all gym leaders have 6 pokemon, no duplicates, and the Kanto region gym leaders are all stocked with over level 100 pokemon. So i would like to play the hack, but with less of a grind. I dont want to simply jump to level 40 or 100, but give myself a little exp boost.

    If anyone know how to create codes for GBC I need your help, please!
  2. jakrodriguez

    jakrodriguez Member

    Jul 10, 2013
    United States
    I found this gameshark code:
    Experience Earned in Battle Mod (Pittstonjoma)
    I haven't tested extensively but using "01" or "02" in place of the "??" will get you higher but not ridiculous amounts of exp.
    Last edited by jakrodriguez, Jan 13, 2016
  3. FAST6191

    FAST6191 Techromancer

    pip Reporter
    Nov 21, 2005
    United Kingdom
    OK let us do some code analysis. I am not sure I would attack this (this seems to be total experience), however the memory value used would be part of the things I look at. For a multiplier you would usually do a shift ( https://gbatemp.net/threads/reverse-engineering-golden-sun-dark-dawn-exp-multiplyer-code.272880/ ) of experience gained but shift this and it will be very rapid growth indeed. There is also an ongoing disassembly for pokemon crystal ( https://github.com/pret/pokecrystal ), though I have yet to have some fun with grep to find the experience (moves, evolution and what looked like a false start in stats_screen.asm but not simple exp).

    Anyway from http://doc.kodewerx.org/hacking_gb.html#gs

    Type Description
    01xxyyzz 8-bit RAM write
    Writes the byte xx to the address zzyy.
    8bxxyyzz 8-bit RAM write (with bank change)
    Changes the RAM bank to b, then writes the byte xx to the address zzyy.
    9bxxyyzz 8-bit RAM write (with WRAM bank change)
    Changes the WRAM bank to b and then writes the byte xx to the address zzyy. GBC only.

    Exp cheat for slot 1 pokemon in pokemon Crystal
    Exp. Points Modifier (Larger) 91xxE7DC
    Exp. Points Modifier (Shorter) 91xxE8DC
    Exp. Points Modifier (Smaller) 91xxE9DC
    Wanting 5000 total (1388 in hex) turns it into this
    Exp. Points Modifier (Larger) 9100E7DC
    Exp. Points Modifier (Shorter) 9113E8DC
    Exp. Points Modifier (Smaller) 9188E9DC

    So 00 in the first is padding (used for values 65536 decimal), 13 and 88 appear to go in order (no endianness to account for or anything fun). For a truly ridiculous amount of experience (assuming it is a 32 bit value) I imagine 91XXE6DC would be the fourth cheat (used for exp values of 16777216 and up). It might be easy enough to add it for subsequent pokemon (6 in inventory I assume, depending upon whether the stats and hp/pp and stuff are written afterwards changes where it ends up but it will still be some logical amount forward or backward each time).

    Memory map
    D000-DFFF 4KB Work RAM Bank 1 (WRAM) (switchable bank 1-7 in CGB Mode)

    Memory location DCE? according to the cheat above. Also for Crystal it changes to bank 1.

    So on crystal it changes the WRAM bank to 1 and then writes a value. As there are three of them I am guessing it is counting up as the total exp value (which this would change) is going to be more than 8 bit (at least 24 bit, not sure if they would have gone the full 32).

    Anyway this is all academic as there is no especially sensible way to multiply gained exp with this (you would have to mirror it, figure out the difference, multiply that and then write it back... all quite doable, even on something as limited as the GBC, but very long winded unless you really want a 3x experience rather than a power of two multiple). To that end you are going to have to go back up the chain and figure out where the thing that gets added ends up and shift that.
    Is there an experience sharing item in Crystal like there was in the RGBY games? I imagine that would be fun to play with as part of this.

    From here you will want to get a debugging emulator and set write breakpoints on DCE7. DCE8 and DCE9 -- one would do, especially as it is breakpoints and not differences for cheats, but the high one might not get hit in the early game, the mid one is good as you will probably be getting more than 255 experience and theoretically you could get some value that does not touch the low value). You then get to work backwards to figure out the maths it uses to get there and eventually shift the value it uses to get to the total. Being largely 8 bit and operating across at least 24 bits a simple shift could get annoying ( http://problemkaputt.de/pandocs.htm#cpuinstructionset http://www.z80.info/z80syntx.htm ).

    Also as I am curious what happens when you knock out a pokemon (presumably it not getting experience) and have this cheat active. Probably nothing or acting as though it were not KOed but could be something strange.

    Apologies for going off topic at times there; I had to do something to make up for the street cred I am losing by hacking pokemon.
    VinsCool and BORTZ like this.
  4. jastolze

    jastolze GBAtemp Fan

    May 2, 2012
    United States
    Hey I'd also like to know a cheat for an EXP multiplier as well. I couldn't find one either. By the way if anyone's interested, I compiled a small mod of Pokemon Crystal that allows level up to 250 without glitches/cheat codes. This includes both leveling up by EXP and Rare Candies. I'm currently working on making the max stats 4 digits, instead of the normal 3 digits (999).

    P.S: It also works with rom hacks :)
    Last edited by jastolze, Jan 13, 2016
  5. BORTZ

    BORTZ Tired of being the good guy

    GBAtemp Patron
    BORTZ is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Dec 2, 2007
    United States
    I think I can just barely grapple with what FAST is presenting. But, I don't think I will be able to extrapolate and create my own multiplier out of all this. That stinks, I get that the old game coding isn't nearly as robust as the GBA or DS counterparts are.

    I guess I am just struggling with these different desires to either replay the old GBC games (or this Kazio hack) or the new DS reamkes. Both have their own inherent "problems" lol. I get that I'm being a bitch here but hear me out.

    The old GBC games come at the cost of graphics and niceties that the new DS versions have. But the GBC Kazio hack has all 251 pokemon available and fully utilized Gym leaders with 6 pokemon each. The problem is grinding. The hack sounds fun, but no way in hell am I going to grind those pokes up to fighting levels (the last gym leader has pokemon that are over level 90). Without a modern EXP multiplier code, there is no way to set my own sort of grinding slope.
    Alternatively I could use the code that @jakrodriguez posted which does seem to work, however without extensive testing, im not sure how it works. It seems to add a flat value (or close to it) to the EXP you get from a battle. After checking a few times I found that a level 2 weedle hands over 15 EXP after a battle. After using the code and replaceing the "??" with a hex "01" in each, I found another weedle. This time I was in the neighborhood of 245 EXP. The number "02" in each slot seemed to bump me into the 500s. I am not sure what happens if you where to mix values, say adding a "01" to the first and a "02" the second one. I mean i know its easy to test, I just didnt have time last night.

    The new DS remakes are almost perfect if you ask me, save one thing. I don't like the inclusion of the new pokemon in the Kanto region. I know its not really that big of a deal, but it breaks my immersion. A true faithful remake wouldn't have added in the new post generation 2 pokemon. Again, the solution is either make a hack myself and remove all the post gen 2 pokes, or suck it up haha.

    Anyways, I know this isnt getting us any closer to a solution but I just felt the need to vent about my stupid problems lol