Hacking friends in Pokemon Yellow

Some months ago, the source code of a game I and many others played as a kid was leaked. The game is written in assembly, and people have already reverse-engineered the original game. Still, I was very curious about the original comments in these source files.

After reading some source files, I started figuring out how to compile it. Luckily, people online have already figured it out and posted this online. After compiling and verifying it ran in an emulator, I decided it was time to edit some assembly to allow changes I wished I always had.

One of the things I never liked while replaying the game was how the messages appeared on the screen. The typewriter-style animation takes too much time to show, even when setting it to "fast".

"Fast" typewriter-style message

I've edited the delay out. A simple change, but nice to have.

Non-typewriter-style message

Another thing that bugged me had always been the extreme amount of wild pokemon that appear. So I programmed an extra menu option to activate a max repel on demand.

Repel changing in menu showing the memory table in the back

Sadly, I don't have the changed code anymore. I have the compiled binary, which should be reversely engineerable, but it wouldn't be worth the time.

Another fantastic journey was adding friends to the game. Replacing Pokémon was something I couldn't figure out online. The editing of the strings was the easy part, but adding the images took it to a whole other level. Images in Pokémon Yellow only use four colours: black, white, colour one shade one and colour one shade two. With the help of photoshop greyscale bitmap inverted images, my friends came alive in the game I loved.

0:00
/
Adding a friend to the game

That's it for this journey. I wished I still had the changed assembly parts to share, but sadly I've lost all of it due to data loss shortly after writing the extended version of this blog post.