(Hi! If you came here from Google in search of the forbidden Gap game knowledge, the codes you seek are 894367 for Skate Race and 426985 for Snowball Frenzy.)
I’ve been looking forward to tonight’s game for some time: Snow Day: The GapKids Quest. That’s right: it’s an actual Gap-based video game, or GapKids to be more precise. The sleeve copy states that the CD-ROM contains 3 games ready to play and 2 more that are unlockable via secret code. Oh dear, I hope it’s not another deal like the Taco Bell Tek Kids Flash Ops where I’m expected to collect a number of different discs. No, in fact there is a different system which will be explained (maybe) later.
Indeed, the game holds true to its title– this is a game about a snow day. Finally! A game that I can relate to on a deeply personal level. Actually, where I grew up, if a snow day were to be called, it would happen early in the morning; rarely, if ever would school let out when it was already in session, as is colorfully depicted in the setup for this game. So school is let out early and our group of carefully multicultural GapKids is free to engage in a variety of fun, frolicky, frivolous games that kids play in such inclement weather. Or not. Maybe I should just show you the specifics of the games.
The first — and perhaps most disturbing — game in the repertoire is innocuously entitled Snowed In. The object is simple: shovel all the snow. You wouldn’t expect a simulation of such a laborious chore to be much fun, and the designers shared your sentiment, so they added killer snowmen to the proceedings:
The above screenshot actually depicts what happens when your GapKid obtains the snowblower powerup in the game– the hunted becomes the hunter and the look of unbridled terror on the snowmens’ faces is priceless. As you can plainly see, this game is a thinly-veiled ripoff of the venerable Pac-Man concept. One key difference is that the 4 snowmen spawn from 4 different places. And if a snowman touches you, your GapKid is depicted as shivering frantically, but not necessarily dying. He does have to start over, but with the same area of snow already cleared.
Next up is Snowman Match. Unlike the previous game which exploits our most profound childhood fears of snow-spawned demons, this is a memory game that briefly shows you a glimpse of a snowman fashionably dressed in Gap apparel. The snowman melts away and 4 new snowmen rise up. You have to match the snowman you just saw, and you have to perform 8 correct matches within a given time limit. It’s not always as easy as it sounds. Sometimes the game throws 4 fairly similar snowmen at you:
The last game that is, per default, unlocked is Snowboard Slalom, a fairly benign downhill snowboarding game where you must dodge trees, logs, rocks, and ice patches but, thankfully, no killer snowmen. Your X-treme snowboarder dude is quite resilient:
Obstacles are merely temporary setbacks and he bounces right back to continue on his downhill trek. The goal is to reach the finish line at the bottom of the hill under a certain time constraint.
There are still 2 locked games. How to unlock the games? That’s unclear, but here is the intelligence that the installation program lends: “Sometime soon, a secret timer inside your Snow Day CD-ROM will ring and your computer will tell you how to unlock 2 secret games! Be sure to check your computer every week so you can find out how to get the secret code.” This is further reiterated when you quit the game:
I want my secret games unlocked NOW! (which, BTW, are Skate Race and Snowball Frenzy and the codes are 6 characters long, or at most 6 characters long). Maybe someone else out there on the vast internet has looked at this first. A quick Google search brings up a brief mention on another of my blogs as well as my master games spreadsheet. I guess I’m the only person out there who has ever thought that this game is interesting enough to write anything about. So now I’m investigating the game a little deeper.
The rest of this post is just me thinking out loud about how to recover the codes, which turned out to be superfluous.
Let’s talk technical: Snow Day is a Smacker-based video game. My first clue to this effect was when I watched the installer program copy over nothing but Smacker files, WAV files, and an EXE file. All of the cutscenes are Smacker files. Further, the backgrounds, character animations, and UI widgets are all Smacker files as well. I am able to see from the directory structure and filenames that there are, in fact, 4 mazes in the Shoveled In Pac-Man clone. I only made it to the 3rd maze. I wonder if formally completing the 3 unlocked games would expedite the unlocking of the other 2 games? My secret gaming shame is that I have never been very good at Pac-Man or derivatives thereof.
Now we get into my favorite computer-related pasttimes: Reverse engineering! There is only one executable file and one support file, the Smacker decoding DLL. I disassembled the executable and looked for interesting strings. The first fascinating string is “Hypnotix”. I recognize that name. I recognize it from a 1995 demo CD-ROM of a Smacker-heavy game called Wetlands. This game bears the name of BrandGames, which is also known to be responsible for Taco Bell: Tasty Temple Challenge which, from the MobyGames screenshots, has nothing in common with this game’s engine. The context in which the “Hypnotix” string appears in the binary is for manipulating Windows registry keys. The registry does have entries in “Software\Hypnotix\GapSnowDay”, but only for CD drive letter and game directory. Thus, I suspect that BrandGames may have licensed the engine from Hypnotix. It also appears that there is a CD check in the game as evidenced by the string “Please insert the Gap Snow Day CD-Rom and then press OK”. But the game still runs fine after installation without the CD-ROM in the tray. A CD check doesn’t make much sense for a promotional game with 35 MB of game data that is copied completely onto the HD during game installation.
I have followed a number of theories to recover the codes:
- I found the Smacker file that notifies the user about the wrong code being entered. I looked up the string in the binary, hoping that it would lead me somewhere interesting. I found the filename, but the logic around it was not immediately obvious.
- The game has to grab characters entered by the user, but I’m not sure which of the standard imported Windows functions does the trick.
- Under the assumption that the string that the user enters is maintained as a string, it would be compared against the correct code string. I see that CompareStringW() and CompareStringA() are being called. Googling these functions brings up Wine references, first and foremost. The usage is quite odd; if I understand this program correctly, it is passing the same string as string1 and string2 into these functions.
So I’m not getting anywhere with this tonight, and I don’t have any good, live analysis tools installed on this machine (i.e., no breakpoints or memory inspection). Perhaps I will get around to installing my old copy of Visual Studio. That could take up to 2 weeks, if memory serves, so it might be easier to just wait out the estimated 2 weeks it will take for the codes to somehow manifest themselves.
I’m still curious about exactly how the game is going to spring new codes on me on a weekly basis. SpyBot doesn’t report any new known spyware, and I don’t think the game installed any special background service (the level of technical ingenuity that went into building the game is certainly not on the same level as writing such daemons). I suspect that when I start the game again at certain times, it will let me know about certain codes. This might imply that the game knows when it was installed (perhaps by checking certain key file timestamps) and checking if the current clock is 1 or 2 weeks later. This could be corroborated by the usage of FileTimeToLocalFileTime() and FileTimeToSystemTime(). I suppose I could set the clock ahead, but I get nervous about doing that for some reason. Perhaps in a VMware session, though?
Check back in 1 and 2 weeks.
Update: Things just got easier when I found this old article that mentions the 2 codes: “For Skate Race, enter 894367; for Snowball Frenzy it’s 426985.” According to the article, the game would periodically tell you to visit your local Gap store to get the codes for the other games. I should try that just to see if they know the codes for this 6 or 7-year old game.
Update 2: See also Snow Day Bonus Games.