Under the microscope: Shrek Extra Large (GameCube)
Shrek and the long shadow of Doom
In this edition, I’m examining the 2003 game Shrek: Extra Large for GameCube. This game is a port of Shrek, which came out for Xbox in 2001.
The lead programmer for the Xbox original wrote that it’s “not a great game,” but that he is nonetheless proud of its technical aspects:
The graphics engine was definitely the coolest piece of tech. Rich wrote a great engine that did deferred lighting of bump-mapped stencil-shadowed geometry. Adrian wrote some crazy over-zealous offline shadow volume optimization for the static shadows. My favorite bit was figuring out how to do deferred point lights.
That lead programmer was Atman Binstock, now at Oculus. “Rich” is Richard Geldreich and “Adrian” is Adrian Johnston.
Not all of these graphical features carried through to the GameCube version, which was handled by Digital Illusions. IGN’s reviewer wasn’t happy about that:
Gamers who remember the bump-mapped technical demo that was Shrek for Xbox are in for a visual disappointment with the franchise’s transition to GameCube. In place of the extensive bump-mapping is no bump-mapping and in place of the smoother framerate is a jumpy, jerky one that is anything but consistent.
I found something to be happy about in the Digital Illusions version of Shrek, however: an unreported cheat code. Details on what it is and how it works are below.
Easter egg hunting
Since lots of games use special player names to activate hidden features, I always put a distinctive one in:
That makes it easy to search for in memory snapshots (at least if the game uses a simple encoding like ASCII).
In Shrek Extra Large, my name showed up four times in a memory snapshot (exported from the Dolphin emulator):
8039cdac "ringsofsaturn 0/50"
803c8e30 "ringsofsaturn"
803c90a0 "ringsofsaturn 0/50"
80637b88 "ringsofsaturn"The ones with 0/50 probably refer to my game progress. Ghidra, with the help of the GameCube Loader plugin, finds dozens of references to the other two addresses. Many of those references are in the function at 8009842c, which has some logic that looks like this:
if (
some_function(PLAYER_NAME, "gaston") == 0
or some_function(PLAYER_NAME, "idkfa") == 0
):
some_value = 99Investigating some_function reveals that it’s an implementation of the not-quite-standard C function strcasecmp:

If either of the string comparisons succeeds (i.e., returns 0), some effect is applied. What is it?
We can find out by putting in either GASTON or IDKFA on the name entry screen. One effect is immediately visible: after pressing Start, you begin on the world map instead of the training level. Furthermore, all of the stages are available to play:
What’s more, the pause screen will have the Cheat menu active:
And you’ll have $99 available, which is enough to purchase every cheat:
In summary, these special names unlock pretty much everything. Useful!
Outro
Interestingly, the IDKFA name is a reference to a cheat code in the PC version of Doom:
idkfa: Grants full megaarmor protection (200%), all weapons, full ammo, and all the keys.
This cheat has inspired a fan game, a remixed soundtrack for Doom, and probably more.
Who GASTON refers to is beyond me, however. Leave a comment if you know!
For more cheat code mining articles, see my archive. And for more retro game reverse engineering, subscribe to Rings of Saturn here on Substack:







Can’t tell if engagement farming but Gaston is the bad guy from Beauty and the Beast.