I recently discovered that I had a MobyGames profile. Unfortunately, it was only listing 2 of the 3 games I worked on. It turned out that the credits for Ice Age Adventures on Windows were never added.
I could have just added myself, but that a) would have looked weird, b) might not be approved by MobyGames and c) would not be fair to the whole team – I also don’t remember my specific credits. So I went to research the credits properly. Unfortunately the games have been discontinued long ago (Ice Age Adventures in 2018), so I couldn’t just start it and take a screenshot - I also wouldn’t have the Windows Phone needed to launch it.
Launching them is nigh impossible – they all require a backend server, login, and an initial DLC download plus various configuration/IAP files to run. I did however find ways to reverse engineer the old asset formats to directly dump the credits.
Ice Age Adventures
About the Game
Ice Age Adventures (trailer) is an adventure mobile game based on the Ice Age franchise, announced by Gameloft in 2014. I was tasked to manage the porting to the Windows Phone store and Windows UWP (Windows 8). There was a big push at the time – Microsoft was paying studios to support their platform, and mobile games were a huge deal. So we got to porting Ice Age Adventures to Windows and shipped the first update for it.
Finding a Binary
This was the harder of the two games to find. I knew there might be some issues: these games can’t be launched, and they all included a system to download an initial set of data. This was done to a) keep the download size below 100MB (the limit for apps to be downloaded over mobile networks at the time) and b) allow for custom/dynamic configuration of some game dynamics (mostly IAP, achievements, and specific strength or RNG factors). I was fairly optimistic that credits being small and non-changing wouldn’t be affected, but I couldn’t really know.
I found a few ways to get to the binary:
The official Microsoft CDN: Even with games delisted, Microsoft doesn’t automatically remove the assets from the server (as with most app stores – once a game is uploaded, it remains available forever to people who bought/downloaded it). Since it’s delisted, this does require a few workarounds: store.rg-adguard.net can show you all binaries if you know the game ID (ProductId 9wzdncrfj126 or A278AB0D.IceAgeAdventures_h6adky7gbf63m PackageFamilyName for the Windows APPX), and appx4fun had a decent index of what used to be in the app store (WP8 version, UWP version). Unfortunately this didn’t work for two reasons: only the most recent version is available (where the credits were changed to when I worked on it), and the XAP files downloaded this way are useless as they can’t be decrypted anymore since Microsoft stopped the key service.
Unofficial dumps: Neither archive.org nor Google could help me find any Windows dumps of Ice Age (but a lot of movie trailers and APK/IPA dumps for Android and iOS). I did eventually find an unencrypted XAP in the W8Mobile Telegram Repsitory on mega.nz, but it turned out that this had exactly the same assets as the latest Windows release – too new for my purposes.
The Russian forum: I was almost about to give up, when somebody pointed me at the Russian mobile forum 4pda.to. It did take me some time, but after solving a Cyrillic captcha to use the search feature and a lot of Firefox Translate, I did find the impossible: somebody uploaded a binary of Ice Age Adventures v1.3.0.10 to the Ice Age Village thread (its more successful sibling and predecessor):
The 4PDA forum post from 2015 – mislabeled in the Ice Age Village thread
Solving the captcha was quite a trip in itself – I had to use Claude to decipher handwritten Cyrillic numerals:
Using Claude to solve a handwritten Cyrillic numeral captcha on 4PDA
The binary is now preserved on archive.org: ice_age_adventures_v1.3.0.10.xap
Extracting the Credits
Unpacking the XAP was easy (since I found unencrypted dump). But a quick check through the unpacked files didn’t show anything even remotely useful. One thing stuck out though: 0000_iaadata_dx.ark, a ~79MB file. This turns out to be a Gameloft ARK archive (v1.6 of the format I think), a proprietary format used by Gameloft across various games.
There are existing projects that work with variants of this format – for My Little Pony, for similar Gameloft games, and several threads on ZenHax discussing the format (including mentions of Ice Age Adventures specifically) with QuickBMS. Unfortunately none of these tools worked directly with this version’s encryption, so it was time to decompile.
The ARK file table is encrypted with XXTEA (a 128-bit block cipher). The ZenHax threads confirmed the use of XXTEA, and since the algorithm always uses a fixed delta constant 0x9E3779B9 (derived from the golden ratio), I could search for it directly in the binary – a standard RE technique. The encryption key was found in the main IceAgeAdventure.exe using Ghidra:
- Searched for the XXTEA delta constant
0x9E3779B9in the binary - Traced back to the decryption routines
- Found the 16-byte key at virtual address
0x00c649a8
With the key, I could decrypt the file table and extract all 7,039 files from the archive. The credits turned out to be stored across two files:
options/credits.json– a JSON structure defining roles and name slots using localization keys (STR_*)english.loc– a binary localization file (UTF-16LE) mapping those keys to actual text
credits.json – roles and names are stored as STR_ localization keys that reference the .loc file
english.loc – a binary format with ASCII keys interspersed with UTF-16LE encoded values
The extraction script merges these two files to produce the full credit listing.
For full technical details on the ARK format, XXTEA decompilation, and .loc parser, see the IceAgeAdventures README in the repo.
Shark Dash
About the Game
Shark Dash is a physics-based puzzle game (think Angry Birds with sharks in a bathtub), also published by Gameloft. I was already on MobyGames for this one, but not for the iOS version. This doesn’t sound like a huge thing, but Hanoi was almost exclusively a porting studio with the iOS originals being produced somewhere else. This was one of the few games that ended up being done for both platforms in Hanoi.
Finding a Binary
So I had to find an iOS dump. Being a less obscure platform, this was pretty straightforward. The IPA is available on archive.org: Shark_Dash_1.1.1_ios_6.0.ipa.
Extracting the Credits
Unlike Ice Age Adventures, Shark Dash stores its localization as plain text .lang files directly in the app bundle – no archive encryption needed. The format uses #$# as a delimiter between key-value pairs, with embedded font codes (#F23 for headers, #F10 for regular text, #n for newlines).
One complication was that this game got relaunched when I worked on it. For some reason the engineers didn’t remove the original credits functionality, but left it in there as dead code alongside the new credits (which included both teams). I had to ensure I extracted the version that included both the original and the relaunch team.
The binary analysis (done with Ghidra on the Mach-O ARM executable) confirmed how this works:
- Two credit sets exist:
STR_ABOUT_*(Barcelona, original) andSTR_ABOUT_HAN_*(Hanoi, relaunch) - They’re alternatives in a state machine (state 3 vs state 5 in the credit display function)
- The Hanoi version is a superset – it includes all Barcelona names plus the entire Hanoi Studio section
- The string lookup uses a boost::unordered hash table with a
toupper() * 37hash function
For full technical details on the .lang format, binary analysis, and credit system, see the SharkDash README in the repo.
Conclusion
In the end, I had the credits I wanted. Both sets of credits have been submitted to MobyGames and the extraction tools are available in the gameloft-credits-dump repo so the process can be reproduced and verified.
This whole exercise is a reminder of how easily game credits (and games themselves) get lost when titles are delisted. If you happen to have copies of other Gameloft games with similar asset formats, these tools might help extract their credits too – the ARK format and .lang format appear to be used across many Gameloft titles.
