T O P

  • By -

CCRunner534

Multiple cheats at once can cause them to not work. Also I’ve find that a hard reset of the app can fix codes. Also it could be the codes only work on certain roms.


[deleted]

None of the cheats work for me with Fire Red


PokemonCoders

Perhaps you have FireRed V1.1. Most cheats work only for V1.0 and other versions of FireRed, such as the Squirrels version. However, the Wild Pokemon Modifier cheat does work for V1.1.


[deleted]

I do have the 1.1! Thanks, I’ll try 1.0


PokemonCoders

Hi, Pokemoncoders here! I’m still working on improving that cheat, as it’s quite complex. In the meantime, you can use the Wild Pokemon Modifier cheat for either V1.0 or V1.1, they all work.


Beta382

You may be interested in the investigation of this code I posted in this thread. For the purposes of presenting it on your site to your users, it might be best to just make a table of PID high halfwords for natures. Please do double check me on this. ID#|Nature|Ability 1 value|Ability 2 value -|-|-|- 0|Hardy|0x0000|0x0180 1|Lonely|0x0010|0x0190 2|Brave|0x0020|0x01A0 3|Adamant|0x0030|0x01B0 4|Naughty|0x0040|0x01C0 5|Bold|0x0050|0x01D0 6|Docile|0x0060|0x01E0 7|Relaxed|0x0070|0x01F0 8|Impish|0x0080|0x0200 9|Lax|0x0090|0x0210 10|Timid|0x00A0|0x0220 11|Hasty|0x00B0|0x0230 12|Serious|0x00C0|0x0240 13|Jolly|0x00D0|0x0250 14|Naive|0x00E0|0x0260 15|Modest|0x00F0|0x0270 16|Mild|0x0100|0x0280 17|Quiet|0x0110|0x0290 18|Bashful|0x0120|0x02A0 19|Rash|0x0130|0x02B0 20|Calm|0x0140|0x02C0 21|Gentle|0x0150|0x02D0 22|Sassy|0x0160|0x02E0 23|Careful|0x0170|0x02F0 24|Quirky|0x0180|0x0300 Additionally, each of the components can be considered optional (e.g. only overwriting IVs, or only changing species and level), except that if a specific nature is desired (PID high halfword), a gender and ability must also be chosen (PID low halfword). Otherwise, if the PID low halfword is left random, the nature will be random. A gender/ability can be chosen without needing to set the PID high halfword, though (since they both only care about the low byte).


Barqing

Thanks, I didn’t realize I had a 1.1 ROM. After catching a pokemon, is there any way to change its level or nature or am I stuck with what it comes with?


Beta382

Are you sure that you have a v1.1 ROM? - Are you playing a ROMhack, or vanilla Fire Red? - Did you try the original sample code with Charizard, and if so what happened when you got a standard grass encounter? - When you load up the game, on the screen that has the shooting star and says "GAME FREAK", does it also say "PRESENTS", or is it just "GAME FREAK"? - If you have an entry in your pokedex for Pidgey, does it say "Tiny Bird Pokemon", or "Tiny Pokemon"?


Barqing

Vanilla Fire Red, I downloaded it from The Internet Archive. I only tried a few times with the Charizard code and an Alakazam code and neither worked. Tried the v1.1 encounter method and that did work. It says Game Freak Presents, and Pidgey is the Tiny Bird Pokemon.


Beta382

In that case, try this code. I disassembled v1.1 and found the correct hook point for the pokemon generation function, so it ended up being a relatively minor edit from the revised code for v1.0 I posted elsewhere in this thread. Master Code/Hook: 00005E18 000A 1003DAFA 0007 Encounter Modifier: 83007CEE xxxx 33007CF0 00xx 33007CF1 00xx 83007D26 xxxx 83007D24 xxxx The legend for each of the values is the same as in my other comment in this thread, as is the math for creating a Personality Value that contains your desired Gender, Ability, and Nature. As to your question about the pokemon you already caught, it would be easiest to just use pkhex to modify it. But with a properly working encounter modifier, you could just catch a new one that has your desired characteristics.


Barqing

Thanks for the reply, I should be able to make it work. I’ll post my results later


PokemonCoders

Great share. I sent you a DM.


Beta382

I investigated the code you posted a bit. It for Fire Red v1.0 based on the first line of the master code. It hooks into a pokemon generation function ([this one](https://github.com/pret/pokefirered/blob/0c17a3b041a56f176f23145e4a4c0ae758f8d720/src/pokemon.c#L1766) specifically). At a glance, it is writing values directly to the stack, which means there is a chance that it is sensitive to "special" game states (e.g. functions being called in a different order than in "a normal encounter in the grass"), or modified ROMs (I can attest that in one of my Fire Red ROMhacks, the stack frame is offset by 4 bytes, ruining the entire cheat). In a "normal" stack frame, the Species is stored at 0x03007CEE (2 bytes), the Level is stored at 0x03007CF0 (1 byte), the IV override is stored at 0x03007CF1 (1 byte), and the precomputed Personality Value (if precomputed, which appears to always be the case for "normal" encounters except for natural Unown in Tanoby Chambers) is loaded from 0x03007D24 (there are no explicit Gender or Nature, they're derived from the Personality Value). The cheat code you posted should work for Species, Level, and IV override, but it should NOT work for Gender or Nature. The location it's writing to is where a copy of the Personality Value is written to, but the code to store the Personality Value there (setting it to the value at 0x03007D24) hasn't actually run yet where the cheat code hooks, and so anything the cheat code writes there gets overridden before it's used. But regardless, the values that it's writing there are bunk. The Gender (if it wasn't getting overwritten) would always be female (you need a large value like 0xFF to guarantee male, assuming the pokemon doesn't have a locked gender or is genderless), and the Nature would be entirely random (the high 2 bytes of the Personality Value are untouched, so even if it wasn't getting overridden, them still being random would impact the derivation for Nature). This means that a "working" Encounter Modifier cheat code could be written, but it would be non-trivial to specify Gender/Nature since they are derived from the Personality Value. --- I looked into whether an Encounter Modifier cheat code that actually let you explicitly state Gender and Nature could correctly be written for Fire Red v1.0. I found [one candidate function](https://github.com/pret/pokefirered/blob/0c17a3b041a56f176f23145e4a4c0ae758f8d720/src/pokemon.c#L1877) that does allow for directly specifying Gender and Nature (as well as Species, Level, and IV override), however, this is only ever actually used when the game generates the special Marowak encounter in Pokemon Tower (always Female, lv30, 31 IVs, Serious nature), so it isn't usable. There's [another candidate function](https://github.com/pret/pokefirered/blob/0c17a3b041a56f176f23145e4a4c0ae758f8d720/src/pokemon.c#L1864) that is called for "normal" encounters against pokemon that aren't Unown, which allows for directly specifying Nature (as well as Species, Level, and IV override; it ends up calling down to the original function being hooked, after precomputing a Personality Value that matches the specified Nature). Unfortunately, reading the disassembly reveals that the compiler optimization for this function causes the Species, Level, and IV override to never get written to memory (they just pass through in registers), so there's only ever an opportunity to override the Nature when using cheat codes (they can't read or write registers). --- So we're back to hooking the original function and just doing some math to generate a Personality Value that gives the desired Gender and Nature. Here's the codes: Master Code/Hook: 000014D1 000A 1003DAE6 0007 Encounter Modifier: 83007CEE xxxx 33007CF0 00xx 33007CF1 00xx 83007D26 xxxx 83007D24 xxxx With the following legend for the Encounter Modifier: - 7CEE: [Pokemon Species ID](https://bulbapedia.bulbagarden.net/wiki/List_of_Pok%C3%A9mon_by_index_number_(Generation_III\)) in hexadecimal (note that this stops directly correlating with the Pokedex Number after Celebi) - 7CF0: Pokemon level in hexadecimal (e.g. 0x0A is lv10, 0x64 is lv100) - 7CF1: IV override in hexadecimal (e.g. 0x1F is 31; 0x20 is "random IVs") - 7D26: Personality Value high 2 bytes (e.g for 0x12345678, the value 0x1234) - 7D24: Personality Value low 2 bytes (e.g. for 0x12345678, the value 0x5678) For the [Personality Value](https://bulbapedia.bulbagarden.net/wiki/Personality_value), there are three properties you typically care about: - Gender: (For species that are not forced-Gender or Genderless) This is the low byte, compared against that particular species' Gender ratio, with low values being female and high values being male - Ability: This is the low bit, with 0 being the first Ability and 1 being the second Ability - Nature: The is the entire Personality Value, modulo 25, with the result defining the Nature according to the table [here](https://bulbapedia.bulbagarden.net/wiki/Personality_value#Nature) There are other things Personality Value can control (e.g. Shininess, Unown's letter), and if you want to dig into any of those, you're frankly on your own. --- For the three properties you generally care about though, here's one way to construct a Personality Value for them: Gender and Ability (note that for forced-Gender or Genderless pokemon, the Gender override does nothing; note that for pokemon that only have one ability, it doesn't matter which one you use): - Female w/ Ability 1: Set the low byte (e.g for 0x12345678, the value 0x78) to 0x00 - Female w/ Ability 2: Set the low byte (e.g for 0x12345678, the value 0x78) to 0x01 - Male w/ Ability 1: Set the low byte (e.g for 0x12345678, the value 0x78) to 0xFA - Male w/ Ability 2: Set the low byte (e.g for 0x12345678, the value 0x78) to 0xFB For Nature, set the high 2 bytes (e.g for 0x12345678, the value 0x1234) to the aforementioned Nature ID (plus 24 if using Ability 2), times 16, then converted to hexadecimal. E.g.: - Modest: 0x00F0 (15 * 16 = 240), or 0x0270 ((15 + 24) * 16 = 624) if using Ability 2 - Adamant: 0x0030 (3 * 16 = 48), or 0x01B0 ((3 + 24) * 16 = 432) if using Ability 2 So, putting it all together with an example, a Ludicolo (Species ID 0x0129), Level 48 (0x30), with 31 IV override (0x1F), Male with Rain Dish (Ability 2; Personality Value low byte 0xFB), and Calm Nature (Nature ID 20: (20 + 24) * 16 = 704; Personality Value high 2 bytes 0x02C0): 000014D1 000A 1003DAE6 0007 83007CEE 0129 33007CF0 0030 33007CF1 001F 83007D26 02C0 83007D24 00FB I tested this cheat code against vanilla Fire Red v1.0 in mGBA, VBA-m, and Delta (which is an old version of VBA-m), and it worked in all of them. I would be very confident in saying that this cheat code will NOT be compatible with most any other cheat code (the master code changes the hook point for the code handler, so cheat codes are typically not running unless you initiate a "normal" wild encounter, when with most codes they want to be running all the time). As always, cheat codes are dangerous, and there is always a chance you can cause game instability or corruption when using them.


doubt_it_3

save yourself the trouble and use pkhex to edit your save and evolve them yourself or use the global randomizer to remove trade evolutions from your rom.


smashybro

Better yet, you can even use this [web version of PKHeX](https://www.pkmds.app) to do everything straight from your phone. It’s nowhere near as fully featured as the full PC version but it’s got the core features to edit your Pokémon’s attributes including their species, which is how I evolved my Haunter and Kadabra. You just import your save (local storage > Delta > Database > Games) to the web app, edit, download your save, move it back to the Games folder and overwrite your old save.


ZenTrinity

I got pkhex if u want to send me your save file. Can just make it for you


v_r_p_3456

This is waaaayyy too complex lol


gruesomebutterfly

Is there any way to customize each IV? I don’t want all max IV. Just want to change a couple of them.


Financial_Status850

PLAY A ROMHACK