I’ve probably spent more of my lifetime, relative to other skilled pursuits at least, studying the insides of Generation III Pokémon games, than anything else. About six years ago when I first embarked on this journey in earnest, a term arose to describe the people who really delved deep into the mechanics of the Game Boy Advance and the engine code that these games ran on; they were called ASMAGICIANS, and they studied ASMAGIX.
I love to recall the story of where the term came from. It began as an inside joke, started by two fellow ASMAGICIANS named Touched and daniilS, who were probably mocking some ridiculous rando who pestered them for all I recall. I was still in the throes of learning about all of this stuff, so I took fondly to the idea of considering myself an ASMAGICIAN one day, in good spirit of course.
In the years since then though, the fanhacking scene has invariably collapsed. The PokéCommunity has imploded and become a ghostly shell still frequented for lack of a better locus, and many splinter communities have formed, siphoning off people according to kin. Major centers of development have since become cesspools with various ongoing drama that the greater public isn’t interested in.
More importantly though, the rise of C programming amongst all these local-yocal elites has extinguished the term of ASMAGICIAN. I’ll often ask old passersby, even those who were there in the old IRC channels and remember the joke, and I always get the reply, “yeah, people have moved on to C since then, thank heavens.” Nobody seems to miss the old days that much.
Lately with the scene I have found myself in a strange place. I am now quite a bit more alone—not that it’s a bother, I manage fairly well anyway—and I am still apparently an ASMAGICIAN. I had tried to use the C repositories to develop Pokémon SwowS, and failed as I could not rely on the community to explicate the countless idiosyncrasies of their repositories. Since the repos are so complex that such help is effectively mandatory, I had to fall back onto my own method, which I originally created before the decompilations were a thing.
I call this method sourcepatching. It is a hybrid method of writing straight source code and patching it onto the end of the original game, using a list of hooks to hack it into the game in the same way it is done in the old-fashioned binary hacking.
Most of a game’s edits will have more to do with assets than code modifications. So, while some C will be written, most of the interesting hacks will be changes of headers, tables to data, and other such things. Incidentally, it is more straightforward to change such things in assembly rather than C, hence it is ASMAGIX. Isn’t that strange?
In early 2016 when I last worked on Pokémon Citrite, I was using Advance Map exports of a dummy ROM for mapping. Today, I am using an ancient version of Porymap editing an old commit of pokeruby to achieve the same thing. The main goal is still to create a fanhack, through the most pragmatic means possible.
I wonder where things will go from here? It is strange to me how things can fall to the wayside over the years like this, though I suppose that’s life sometimes. Maybe there could be a revival one day as I trudge along. Who knows.
Until next time,