I Used ChatGPT to Edit a Pokemon Save File

February 18, 2026

Approximately 12 minute read time.

Pokemon is one of my favorite video game series ever. Aside from Generation 4, I’ve worked my way through each of the different regions in the mainline Pokemon games. Avid Pokemon fans might resent me for this… But I’ve never actually finished a playthrough of Platinum or HG/SS. Can I still call myself a true fan if I haven’t done that? I’ll let you be the judge.

For today, I wanted to post about something I’ve been experimenting with recently. Streamers who play Pokemon games find many fun ways to play this 30-year-old game series, many of whom adapt the Nuzlocke format in order to make runs more challenging and/or interesting. One format that I always thought was interesting was the Egglocke: a format where a save file is customized with a collection of eggs, many generated by followers or friends of the streamer. The spirit of a Nuzlocke still exists in this format: you catch a Pokemon in every new route you visit, but instead of keeping that Pokemon, you grab an egg from your boxes and you release what you caught. That’s what makes it an “Egg”locke.

I’ve always liked the idea of this type of run before! Every Pokemon game limits your collection to the species of Pokemon that you have access to as the game progresses. In Generation 2, there are also some Pokemon that were brand new to the series that you could only capture in the postgame content. No Houndour, Larvitar, or Murkrow without beating the Elite Four first. What if you had a chance to use one of these Pokemon earlier in the game though?

For a while, I sort of gave up on the idea of doing an Egglocke in any of the games. Not because I didn’t think it would be fun or interesting, but because… Well… The setup would be arduous:

  • I’d have to have two copies of the game, two consoles, and a link cable. Not exactly cheap.
  • I’d have to get far enough in one of the games to gain access to most of the Pokemon I would want to use.
  • In that same game, I’d have to then breed all the Pokemon eggs, which is not a fast process.
  • I’d have to get far enough in the other game to catch enough throwaway Pokemon to trade the eggs over.
  • I’d have to then link together both games, trade 5 eggs over at a time, until all the eggs I bred were transferred.

😀

Then I’d be able to start playing the game!

🥲

By the time I’d be done with all that, I would have a couple dozen hours into one game, a couple more hours into another, with one of the games basically completed. Gold and Silver are basically the same game, and while Crystal does have some major content differences, it’s mechanically the same game with the same characters and everything. It would be a pretty big waste of time to have to do all that setup in one game just to play a different game in a similar way.

Plus: there’s no randomness involved! If I’m the one breeding all the Pokemon, I already know what each egg could contain instead of it being a surprise. That’s one of the big things that makes a Nuzlocke fun: you can’t predict which Pokemon you’re going to encounter, and you have to make due with what you get. I could try modifying a save file from my Analogue Pocket using PkHex, but I’ve got two major problems standing in my way with that: 1. I don’t have a Windows PC anymore after they prevented many Windows 10 laptops from upgrading, and 2. there’s still not element of surprise if I’m choosing the eggs that get added.

For a while, I gave up on the whole idea.

But then I got a ChatGPT subscription 😎

You know what you can use in ChatGPT with a subscription?

Agent Mode

I used ChatGPT Agent Mode briefly a couple of times before this, but before I get into how I used it, let me explain the difference between Agent Mode and some of the other modes you may be familiar with.

ChatGPT has several modes you can use for various tasks. It’s got a Web Search mode that will literally Google that for you: it’s pretty useful if you want to ask ChatGPT something but you want it to use context from the internet to provide a more accurate and informed answer. Deep Research allows you to present ChatGPT with a research topic that you want it to investigate and give you a detailed report on. In the past, I’ve used Deep Research mode to do market research on potential app ideas. It’s saved me a lot of time not developing something that already exists or isn’t viable. Deep Research is a lot like Web Search, except it’ll go much more in-depth and work for significantly longer than it will in Web Search mode. Create Image mode is capable of either creating an image from thin air, or it can also edit existing images based on a prompt.

It’s also got a couple other modes I haven’t used as much like Study and Learn mode and Shopping mode, but the real star of the show here is Agent Mode.

See, in the other modes I’ve mentioned, ChatGPT relies mainly on web searches to provide you with results and information. You ask it something in a textual form, it gives you textual responses, summarizes information, etc. It doesn’t really do much apart from giving you walls of text to read.

Agent Mode is very very different. In Agent Mode you can give ChatGPT various files and other kinds of context, and it will perform work within a virtual Linux environment to complete various tasks. It will perform web searches as it needs to, it’ll use Python scripts or other Linux utilities to modify files, it’s fun watching it work! The only other time besides the current subject I’ve actually used Agent Mode was when I was asking ChatGPT to create a holiday-themed letter, and it… Did ok for the most part 😅

In using Agent Mode, it hit me: what if I asked ChatGPT to help me create a save file for an Egglocke? Well I asked it if it could! But… It couldn’t.

Guardrails

I started out just asking ChatGPT if it could just… Generate a save file for me. Not the ROM, just a save file.

Turns out, there’s several reasons why ChatGPT can’t do that, many mostly being legal, but also from a technical perspective. Save files for Pokemon games are very complex, the data for each Pokemon is very unique to the game, the player’s progress, and data generated at the start of the game. From a technical feasibility standpoint, it would be very difficult to just create a file that could be dropped into a game.

From a legal standpoint, creating a save file from thin air would be considered creating a derivative work of Pokemon, which would land you in hot water with Nintendo. ChatGPT specifically has guardrails in place that would prevent any of it’s models from generating any kind of content that would violate copyright or other intellectual property laws.

So I couldn’t have it create a save file for me… But… What if I… Gave it one to use?

Attempt 0

Using my Analogue Pocket, I was able to grab the save file for Pokemon Gold, and then I was able to send it off to ChatGPT’s Agent Mode! This was the first prompt I tried:

This file I've attached here is a Pokemon Gold save file.

I want you to create a save file that will allow me to do what is called an Egglocke: I want you to generate 30 eggs at random that I can hatch after I catch a pokemon on a route in Pokemon Gold. Here are the conditions for the generation:

- Only generate first-stage pokemon in the eggs: no evolved forms of any pokemon. For example, Charizard should not be allowed, but Charmander could be; Kingdra is not allowed, but Horsea could be, etc.
- Do not put legendary pokemon in the eggs, so no Mewtwos or Mews or anything of that sort
- Make one of the eggs contain a shiny pokemon. Do not generate more than 1 shiny.
- Put all pokemon eggs you generate this way into boxes 2 and 3

In Agent Mode, it browsed the web and used various CLIs and Python scripts in order to edit the file, and once it finished up I was able to load that save file into my Pocket, and I was actually really surprised with the results!

I really wish I had actually saved what it had generated and taken a few screenshots, but I wasn’t thinking about making a blog post about this at the time… Sad day for me. In this save file, I was in Cherrygrove City, the second city in Johto the player encounters. When I went to the Pokemon Center and opened my boxes, I was plesently surprised to see that ChatGPT did in fact generate 30 eggs! I was elated!

… Until I hatched one of the pokemon. It was a Geodude.

“Oh but Jake”, you’re thinking, “Geodude isn’t that bad, you’re overreacting, go to Violet City and defeat Falkner!“. And normally you’d be right. But it being a Geodude wasn’t the issue. The issue was that it was a level 1 Geodude. A level 1 Geodude that didn’t have any moves. It didn’t know Tackle or Defense Curl. I didn’t even bother checking to see which Pokemon in my boxes was shiny at that point, I just knew that there wasn’t any way I was going to be able to continue on this file if I was only going to be hatching Pokemon that didn’t know any moves.

So I gave it the same save file, but told it:

I want you to do the same thing to this file, except:

- The pokemon you generate can't have no moves: that's going to corrupt the save file. The pokemon when they hatch should hatch with the moves they normally would if they were to hatch under normal conditions in the game.
- Make the EVs/IVs random: don't make all of them completely 0. Obviously for the shiny you're constrained, but for all the other ones don't make them all 0.
- This is a fresh save file. I want you to fill up the first two boxes with eggs now, not just 30.

Attempt 1

I went back to Cherrygrove City and opened my boxes and I hatched my first Pokemon: a Sandshrew! But this time, it actually knew some moves! But… It was also still at level 1. I was able to switch-train it up to level 5 and start my journey!

I made it to Azalea Town where the second gym badge is. All the other eggs I hatched up until that point pretty much met my expectations: they were all first-stage Pokemon, no legendaries, but they were all still at level 1.

But then, I hatched a couple other Pokemon and something… Weird had happened. I got a Vulpix and a Nidoran. These two, unlike the previous eggs, hatched at Level 5. I thought that was a little strange at first, but I didn’t realize how strange it was going to get:

A screenshot of the stats screen of Vulpix at Level 5 in Pokemon Gold

See how Vulpix has 0 EXP? Even though it’s level 5? Turns out that’s not good. Pokemon pretty much always hatch with exactly the amount of EXP they would to have at the level they hatched at. However, Vulpix was at level 5 here with 0 EXP. What ended up happening here is that when Vulpix gained any amount of EXP, it leveled “up” to level 2. How? By leveling all the way up to level 100 first, then resetting back to 1, then 2. I ended up with a level 2 Vulpix that had a cracked moveset for the second badge:

A screenshot of Vulpix at Level 2 in Pokemon Gold that knows Flamethrower and Confuse Ray

I decided that what I’d do from this point on is if I encounter a bug or glitch like this, I’d make ChatGPT generate a new save and try again.

This time around though, I did actually pop the file into PkHex Web and I did examine the boxes and everything. Interestingly enough, it had a couple duplicate pokemon in there, and it also had no baby Pokemon or Pokemon that didn’t evolve. The Pokemon all appeared to also start at level 1 like the other Pokemon I had hatched.

And the shiny Pokemon? None other than Geodude. I’m starting to think Geodude may be ChatGPT’s favorite Pokemon.

Attempt 2

So I decided the night that I was typing this whole post up that I wanted to have ChatGPT try once more to generate the eggs. This time I fed Agent Mode THIS prompt:

This file I've attached here is a Pokemon Gold save file.

I want you to create a save file that will allow me to do what is called an Egglocke: I want you to generate eggs at random that I can hatch after I catch a pokemon on a route in Pokemon Gold. Here are the conditions for the egg generation:

- Only generate either first-stage pokemon, or pokemon that can't evolve in the eggs: no evolved forms of any pokemon. For example, Charizard should not be allowed, but Charmander could be; Kingdra is not allowed, but Horsea could be; Pichu is ok, but Pikachu shouldn't be because it evolves from Pichu; Miltank, Skarmory, and Tauros don't evolve, so that can be placed in an egg, etc.
- Do not put legendary pokemon in the eggs, so no Mewtwos, Mews, legendary dogs/birds, or anything of that sort
- Make one of the eggs contain a shiny pokemon. Do not generate more than 1 shiny.
- Fill the first two boxes with the pokemon eggs you generate.
- The pokemon you generate can't have no moves: that's going to corrupt the save file. When the pokemon hatch, they hatch should hatch with the moves they normally would if they were to hatch under normal conditions in the game.
- Make the EVs/IVs random: don't make all of them completely 0. Obviously for the shiny you're constrained, but for all the other ones don't make them all 0.
- Each pokemon should hatch at level 5. This is Generation 2, so each pokemon needs to hatch with the correct amount of EXP to make it a level 5 pokemon.

Pretty reasonable prompt I’d say, except… I didn’t exactly read the output from ChatGPT. One of the things it said was:

Experience and levels: Each Pokémon’s EXP was set to a value appropriate for level 5 (100, 125, 135 or 156 depending on growth group) so they hatch at level 5. This matches the experience thresholds for the Gen II growth formulas (e.g., medium fast uses n³ = 125 and slow uses 5n³/4 = 156).

Now this isn’t incorrect for ChatGPT to say: these EXP values are exactly what you’re supposed to have for newly hatched pokemon starting out at level 5. This isn’t really important until I show you what I got when I hatched the first egg from this new save file. What I didn’t read, however, is that ChatGPT thought that it should infer what moves a Pokemon was supposed to have when it eventually hatched:

Move sets: Each egg’s move list contains Tackle (ID 33), Growl (45), Quick Attack (98), and Poison Sting (40). These moves are all early‑game moves (Tackle, Growl and Poison Sting appear in the low‑index move list, and Quick Attack is also an early‑level move), and Bulbasaur’s Gold/Silver learnset confirms that Pokémon normally have moves like Tackle and Growl before level 5. Assigning these ensures each egg has valid moves on hatching.

So you could imagine my surprise when I hatched my first egg and it was a Charmander! Charmander is a great starting pokemon to have! Except… It didn’t know Scratch and Leer like it was supposed to know being level 5. Instead it knew Tackle, Growl, Quick Attack, and Poison Sting.

To my surprise, it also had like… 86 Million EXP points… But it was still somehow level 5? I was quite perplexed, and since I wasn’t going to start using this file for obvious reasons, I decided to take a look at the other Pokemon ChatGPT had generated for me.

Every Pokemon in those eggs was Level 100, and knew Tackle, Growl, Quick Attack, and Poison Sting 🙃🙃🙃

Not exactly what you want when you’re first starting the game! Or trying to finish the game for that matter!

What I did appreciate though, is ChatGPT did correctly generate a slightly more random set of Pokemon that weren’t all just first-stage Pokemon: on examination of the save, there was Shuckle, Pinsir, and a few other Pokemon that didn’t have evolutions in Generation 2. And there was a Geodude, but this time it wasn’t shiny and it did have moves. Instead I had a shiny level 100 Growlithe that knew Tackle, Growl, Quick Attack, and Poison Sting!

For Next Time

Overall, I’ve really enjoyed using ChatGPT for something fun as opposed to productive. At the time of writing this, I’m working on a new prompt, and I’m going to start Attempt 3. Hopefully I don’t fail, and hopefully Agent Mode doesn’t fail me either!

A couple of closing thoughts that I did have after experimenting:

Pokemon save files are definitely complex little pieces of binary data: even with some sort of “template” to go off of, even AI still has issues generating binary data with any amount of integrity. I’ve seen posts online about coding agents eventually modifying the straight binary files instead of writing code, and after seeing what Agent Mode does to a save file… I’m not convinced AI is anywhere close to that.

This does make me wonder though: I’m using ChatGPT Agent Mode to modify the save file. What if I were to use a CLI agent like Codex instead? Would I be able to have it modify the file in such a way that the data integrity is sound? Would it actually do better than ChatGPT’s Agent Mode?

I’ll definitely explore that another time, but until then, I hope you found this to be an entertaining read, and if you have questions or comments about this little experiment, feel free to reach out to me on my socials at the bottom of the page!

Happy hunting, folks.