Unintended Losses

2022/03/14

Once upon a time, two friends decided on a friendly challenge. They would play a game, and determine who the true master of butterflies was. The reward was bragging rights, as this was all just for fun. Set in the land of the original 151, a sure battle for butterfly supremacy.

Long story short, my friend Geo and I raced to see who could beat Pokémon Yellow with a Butterfree first. I won that, with El Diablo reigning supreme. As I mentioned before, we wanted to do another butterfly run. This time around, in my favorite region of Hoenn, centered on Beautifly. Pokémon Emerald was chosen as our battleground, with a custom patch from myself with various gameplay improvements for convenience. We also hashed out some other rules, the biggest being that we could have two butterflies in addition to meatshields.

I named mine Vinz and Zuul, since I just couldn’t resist a Ghostbusters reference.

Unlike the previous challenge in Yellow, this one proved to be a huge pain in the ass. Beautifly isn’t much better than Butterfree, which is to say it sucks. Pretty killer Special Attack stat, but it doesn’t make up for the… everything else. There was also the issue of getting two of them in the first place, given the Wurmple roulette and general rarity of Silcoon encounters (on my end, at least). Even with that out of the way, you have to contend with a Rock gym. I’ll be honest here, the only reason I won my first badge was my Mudkip meatshield.

I named him Memes, and I do very much liek him.

Geo ended up having a harder go than I did, a continuing trend from Yellow. In fact, it was bad enough that enthusiasm gradually dropped, especially when it came to the third gym. Brawly is a pushover once you have Gust, while Wattson proved to be a volcano spontaneously forming on the road. Butterflies and electricity don’t mix well, and, unlike me, Geo didn’t have a Marshtomp to save the entire run. He chose the less meme-worthy Treeko as his starter, the fool. While he kept trying to beat Wattson over and over, I’d scraped by with the power of Memes and RNG on my side, and could move on to Flannery.

She was a big challenge due to not only Vinz and Zuul being weak to Fire, but Fire types tending to have good Special Defense stats. I also encountered an error in the gym that I’ll talk about soon. Flannery, however, was too much for the heralds of the destroyer, forcing Memes into service to save the day. Though underleveled, he secured victory for the team, and once again proved his worth as a dated meme. It was the best I could ask for, allowing me to press on to face Norman.

In most of my runs of Emerald, I have an overpowered Blaziken that blows through the Petalburg gym. Boring, yes, but the OG Fire/Fighting starter holds a special place next to Mudkip. This time, I had two rather beefy butterflies and hope that they could beat down all those Normal types.

They couldn’t.

For a gym that had never given me trouble in the past, it really did now. I had my first whiteout here, even, which was a surprise. Up until then and during my entire Butterfree run, I had gone with nary a whiteout. I thought I had it in the bag, and I was formally reminded that brute force isn’t always the answer. Norman hammered that in especially, showing no favoritism towards his own child and their insane dream of ruling the region with a pair of Beautiflies. I wouldn’t have survived those goddamn Slakings without righteously abusing Double Team, making it impossible for dear ol’ dad to hit my team.

For our aside and small look into ROM hacking, the error I found was a curious one. A trainer in the Lavaridge gym was entirely wrong. Name, sprite, and team were all off. I eventually traced this to a de-capitalization patch I’d used, and the way trainer battles are handled. The game has a table with trainer data and an associated hexadecimal number for each entry, so when you start a battle, you only have to reference the right trainer ID in a script. The original ID for this particular trainer was 0xCD, and had been changed to 0xE7 in the script. The former number happens to be the same bytecode for an uppercase S for the game’s text, and the latter a lowercase S. Therefore, when the patch’s creator was doing a sweep for any lone uppercase S’- there are a couple for reasons- they affected this script by accident.

A simple mistake to make, and, for any entirely custom hacks, rather negligible in the end. For a mostly vanilla experience like Geo and I wanted, it was worthy of investigation, and goes to show how small things can have wider effects. This innocent search and replace would even go on to cause another issue, discovered when I entered Fortree’s gym. The puzzle in there relies on what us Gen III ROM hackers refer to as specials, functions called by a command. They do all sorts of things, and special 0xCD happens to control Fortree’s gym puzzle. So, imagine my surprise and subsequent panic when I walk into the place, and it’s a bunch of garbled sprites instead of the slider things.

I’m so lucky both of these ultimately involved changing two bytes.

Despite the fact that I was winning big time and about to tackle the sixth gym, my own enthusiasm was wearing out. The fun of the challenge was the race aspect, and it sure wasn’t one by now. Yellow saw me win in a landslide, but it was much closer at first. There was little joy to be had when I knew it was already over, and, without much thought, we both independently dropped off.

That was several months ago.

The Beautifly challenge- or, Beautideath, as I called it- recently came back to mind, and I finally asked Geo if he wanted to start over or cancel. We agreed to cancel in the end, and to plan out something new. So we did, that very day. I found a page detailing various Nuzlocke variants, and sent it Geo’s way to see if he liked any. I also found a Crystal hack for us, to spice things up. After some back and forth, we settled on a Loserlocke, in which you can only catch/use one and two-stage Pokémon (nothing that evolves twice), and only in standard Pokéballs.

After setting some ground rules and extra Nuzlocke clauses, we both started the next day.

What a mistake that turned out to be.

Let me be clear, though, and say that I actually like Gen II. If the first generation set the foundation, the second built the house. There are more recent mechanics lacking, sure, but this is really the start of modern Pokémon. I may be a hardcore Gen III fanboy, yet even I bow to the majesty of Gen II, and there is a wealth of good hacks to choose from. We used Perfect Crystal, mostly for the fixes and ability to complete the entire Dex.

That said, this challenge was painful. Johto is a cool place, but the Pokémon inhabiting it are… well, they’re pretty bad. Like, you can count the number of good Johto Pokémon on two hands, practically. That and the far too gentle level curve are my biggest gripes with this generation, and the former reared itself early on. My first ‘mon was a Sentret, who I affectionately named Furblez. Furblez was absolutely horrible, and nearly made me lose several times. I despise them, and my only saving grace was the Rattata the game blessed me with after three routes of nothing. With Hyper Fang, I was able to barely beat Falkner, since I was still trying to brute force my way through.

From what I know, Geo didn’t have a great time, either, and ventured on to Azalea Town while I took a break. His team, as far as I know, consisted of a Rattata, an Unown, and a Togepi. Not fantastic, but it was something. I planned to continue at night, hoping for new party members. Sadly, that would not come to pass.

Later on that first day, I received this message:

Well, Bofiab. Congratulations, I have been defeated.

Not even six hours had passed since we’d begun.

Talk about a letdown, man! Bugsy got the better of Geo, with Fury Cutter and his Scyther. He might have won, if his Rattata Savior hadn’t missed a Hyper Fang and cost the match. An untimely end to our fun and something we had literally planned the day before. With how many close calls I had, I think the ultimate deciding factor was the break. Had I not taken one, it may well have been Geo standing victorious instead. I did also urge Geo to pick up the pace to combat my recklessness, and have to wonder if that played into his demise. Poor guy needs a break, not to be done in by some dude with bugs.

Following that fiasco, we have elected to take another break from Pokémon stuff. Hopefully, next time it will last longer than a day, and we’ll derive some lasting fun from it. My suggestion is to redo the Loserlocke in Emerald, and figure out another Crystal challenge. As of now, we simply have two black marks on our challenge runs to learn from.

To the next great Pokémon master, whenever that shall be decided.

Return