General Boards => Maps Of The Month => Topic started by: JonLeung on January 31, 2020, 09:27:06 PM

Title: 2020/02: Sonic Advance (GBA) - TerraEsperZ
Post by: JonLeung on January 31, 2020, 09:27:06 PM
Sonic Advance (

For this month's "Maps Of The Month" featurette, I wish to draw your attention to TerraEsperZ's Sonic Advance (GBA) maps.

As Sonic heads to the big screen this month, let's take a look at one of his small screen adventures...

Doctor Eggman is once again causing trouble by "roboticizing" animals to build an army and threatening to take over the world. Who can possibly stop him? Well, the same hero that's stopped him for a little over a decade by this point, Sonic The Hedgehog! With his friends - Tails, Knuckles, and Amy Rose - and any Chaos Emeralds he can find along the way, he should have a chance to make it through numerous Zones, ranging from the Neo Green Hill Zone to Angel Island Zone and beyond.

Created in commemoration of the 10th anniversary of the first Sonic The Hedgehog game, Sonic Advance is also notable for being the very first Sonic game to be released on a Nintendo platform. This Sega mascot has appeared in numerous games on Nintendo's (and others') gaming devices since, even appearing in the Super Smash Bros. series as one of the first non-Nintendo characters (alongside Konami's Solid Snake) beginning with Super Smash Bros. Brawl on the Wii, and also starting at about this time, Sonic competes against Mario in numerous games based on the Olympic Games. So perhaps a whole generation of gamers don't find it unusual, but near the start of the millennium, Sega's main mascot on a Nintendo machine was sort of a big deal.

So to recognize the effort put into mapping this pivotal, portable adventure, TerraEsperZ's Sonic Advance (GBA) maps will be known as's Maps Of The Month for February 2020.
Title: Re: 2020/02: Sonic Advance (GBA) - TerraEsperZ
Post by: eishiya on February 07, 2020, 11:49:04 AM
I love how polished these maps look! TerraEsperZ always does a good job filling in the inaccessible parts of maps.
Title: Re: 2020/02: Sonic Advance (GBA) - TerraEsperZ
Post by: TerraEsperZ on February 12, 2020, 04:21:41 PM
Thanks for the compliment eishiya!

This project, like a few others, was a long time coming since I ended up completely re-doing it in 2011-2012, which was several years after my incomplete first attempt (2004-2006).

I honestly didn't think I would ever attempt this again but I changed my mind when I learned that the VisualBoy Advance-ReRecording emulator supported Lua scripting. A bit of reading online made me realize that Lua was incredibly similar to other programming languages I learned back in my IT courses in college. After playing around and doing some tests, it turned out that all three Sonic Advance games all feature very similar engines that are easy to exploit when it comes to moving the camera around and freezing all moving objects in their starting spots.

Without my custom Lua script, I wouldn't have been able to accurately capture everything that's inacessible and I would have been forced to "fudge it" like in my first attempt. Over the years, I've become a lot more obsessed with accuracy and I prefer to stick only to what's actually present in game (with the occasional exception like Sonic 3D Blast where the isometric maps are so full of bad tiling and holes that I've elected to correct and/or fill in what's messed up or missing).

I wish I had the time to do the second and third games as well but their maps are so much bigger than this game (which still took me so long to fully capture) that I doubt I'll ever get to them. Still, one out of three is better than nothing, right?
Title: Re: 2020/02: Sonic Advance (GBA) - TerraEsperZ
Post by: eishiya on February 12, 2020, 10:08:20 PM
Thanks for sharing a bit about the process! I don't think I'd even tackle a map like this precisely because of the difficulty of capturing everything in its proper state, it's awesome that you found a way to make it doable, even if it's still not easy.

One is definitely better than nothing!
Title: Re: 2020/02: Sonic Advance (GBA) - TerraEsperZ
Post by: G.E.R. on June 04, 2020, 02:57:12 AM
Lack of debug mode on this games is a big flaw, but It's possible to make debug mode by usind Cheat Engine. It need a lot of time to calculate values and setting up the program, but this allows to get a real way to move game screen on a map.
Title: Re: 2020/02: Sonic Advance (GBA) - TerraEsperZ
Post by: TerraEsperZ on June 04, 2020, 03:19:40 PM
I'm actually a lot more comfortable using Lua scripting when available in an emulator. I remember reading a Cheat Engine tutorial once about searching for a memory value that was referenced by a pointer and that just broke my mind. With Lua scripting, provided the values you need have a static location instead of a dynamic one, you can make a pretty powerful script.

With this game (and the other two), my script allows me to decouple the camera from Sonic's position with one key, move the camera around in fixed increments in both directions with two others and basically freeze all moving platforms and objects in their initial position/state with yet another key (since they all follow a small counter that keeps looping back to 0, freezing that counter at 0 effectively positions everything at the very start of a stage).

Now don't get me wrong, Cheat Engine has been a big help in other situations (such as moving the camera in Makai Toushi SaGa in the WonderSwan emulator Oswan) but I'm just not experienced or knowledgeable enough to use it properly. If I had a real need for it, I would probably make the effort but since I don't, well... I've always been somewhat lazy... ;)