the cutting room mirror

Angry Birds Go!

Angry Birds Go! is a kart racer built off Exient's XGS engine. The game was really good with optional IAPs, but controversial decisions were made in later updates and made many prefer the old versions of the game.

Debugging Utilities#

Debug Menu#

A Debug Menu screen going by uidebugmenuscreen.xml in ui/xml.pak is present. Public builds of the game do not have a screen nor a function to load it normally, thus a modification to an existing screen must be done to load it. 12 items are displayed on a single page and the blue buttons go up/down one row and the same goes for the green buttons but for pages.

  • Metrics: No known effect.
  • Cycle LOC: Changes the text locale to a new one, also can use String IDs, to show the internal string IDs from the localization file instead of the original text, does not affect the Debug Menu. The current locale is displayed by the CURRENT value.
  • Back: Returns to the Map Screen.

After choosing a screen, an overlay exists with the following option.

  • Back to Debug: Goes back to the Debug Menu.

Unused text#

Text for content that didn't get used like a Developer (Cheat) Menu is present.

These strings exist in the localization file:

String ID

English

Chinese (simplified)

French

German

Italian

Japanese

Korean

Portuguese (Brazil)

Russian

Spanish

Description

PLAY_GAME_BUTTON

Play Game

Jouer

Spielen

ゲームをプレイ

Jugar

Unknown.

YOUR_MISSIONS

Your Challenges:

Tes défis :

Deine Herausforderungen:

チャレンジ:

Tus misiones:

Unknown.

RESET_ALL

Reset All Data

Réinitialiser toutes les données

Alle Daten zurücksetzen

データをすべてリセット

Borrar datos del juego

Unknown.

OPEN_DEBUG_MENU

Open Debug

Ouvrir écran de debug

Debug-Konsole öffnen

デバッグを開く

Abrir debug

Unknown.

KART_OFFROADTEST

Offroad Test

Test hors-piste

Offroad-Test

オフロードテスト

Prueba todoterreno

An unused kart type, likely to be tested on the Rocky Road episode.

KART_PROTOTYPE

Prototype

Prototype

Prototype

プロトタイプ

Prototype

Unknown.

KART_TESTKART

TestKart

TestKart

TestKart

TestKart

TestKart

Unknown.

KART_DISTANCE

Distance

Distance

Distance

距離

Distance

Unknown.

KART_HYBRID

Hybrid

Hybrid

Hybrid

ハイブリッド

Hybrid

Unknown.

KART_AIRTEST

Air Test

Air Test

Air Test

エアテスト

Air Test

An unused kart type, meant to be tested on the Air episode.

KART_BOSS_1

Boss 1

Boss 1

Boss 1

ボス1

Boss 1

Unknown.

THEME_1

Cobalt Plateau

Cobalt Plateau

Cobalt Plateau

コバルト プラトー

Cobalt Plateau

Early name for Seedway.

THEME_2

Rocky Roads

Rocky Roads

Rocky Roads

ロッキー ロード

Rocky Road

Namesake.

THEME_3

Air

Air

Air

スカイ ドライブ

Air

Namesake. "Sky drive" in Japanese.

THEME_4

Stunt

Stunt

Stunt

クラッシュ キャニオン

Stunt

Namesake. "Crash Canyon" in Japanese.

THEME_5

Theme 5

Theme 5

Theme 5

テーマ5

Theme 5

Likely a placeholder for Sub Zero.

MODE_BOSS_FRUIT_RUSH

Champion Fruit Splat

Course de champion fruitée

Champion-Früchtejagd

チャンピオンフルーツスプラット

Desafío frutal

Unused Fruit Splat mode with bosses?

MODE_CAPTURE_THE_CROWN

Capture The Crown!

Capture la couronne !

Kronenjagd!

王冠を狙え

Rey de la pista

Removed mode?

MODE_BOSS_FRUIT_RUSH_DESC

Splat more fruit than %s!

Éclate plus de fruits que %s !

Überfahre mehr Früchte als %s!

%s以上にフルーツを叩き潰せ!

¡Aplasta más fruta que %s!

%s is the name of the boss, like King Pig.

MODE_TIME_ATTACK_STARS_1

Finish in time

Termine dans les temps

Bleibe in der Zeit

時間内にフィニッシュ

Llega a la meta a tiempo

Unused star requirement?

MODE_TIME_ATTACK_STARS_2

3 seconds left

3 seconds left

Noch 3 Sekunden

残り3秒

Llega con 3 segundos de margen

Unused star requirement?

MODE_TIME_ATTACK_STARS_3

6 seconds left

Plus que 6 secondes

Noch 6 Sekunden

残り6秒

Llega con 6 segundos de margen

Unused star requirement?

MODE_MAIN_EVENT_STARS_1

Finish within time limit

Termine avant la fin du temps

Bleibe im Zeitlimit

時間制限内にフィニッシュ

Llega a la meta a tiempo

Unused star requirement?

MODE_MAIN_EVENT_STARS_2

Podium finish

Classement final

Schaffe es aufs Treppchen

ポディウムフィニッシュ

Entra en el podio

Unused star requirement?

MODE_MAIN_EVENT_STARS_3

First place

Première place

Erster Platz

1位

Primera posición

Unused star requirement?

MODE_BOSS_BATTLE_STARS_1

One star.

Une étoile.

Ein Stern.

1スター。

¡Una estrella!

Test?

MODE_BOSS_BATTLE_STARS_2

Two star!

Deux étoiles !

Zwei Sterne!

2スター!

¡2 estrellas!

Test?

MODE_BOSS_BATTLE_STARS_3

THREE STAR!

TROIS ÉTOILES !

DREI STERNE!

3スター!

¡3 ESTRELLAS!

Test?

PAUSE_MENU_TITLE

Pause Menu

Menu Pause

Pause-Menü

ポーズメニュー

Menú de pausa

Not used in v1.13.7+.

SCORE_COIN

Coin

Pièce

Münze

コイン

Moneda

Not used in v1.13.7+.

SCORE_PIG

Pig

Cochon

Schwein

ピッグ

Cerdo

Not used in v1.13.7+.

SCORE_KART_DESTROYED

Opponent Trashed

Adversaire vaincu

Gegner zerstört

対戦相手に勝利

Rival destruido

Not used in v1.13.7+.

SCORE_KART_HIT

Ram

Bélier

Rammen

激突

Choque

Not used in v1.13.7+.

SCORE_TRIGGERED_ABILITY

Special Power

Super-pouvoir

Superkraft

特殊パワー

Poder especial

Not used in v1.13.7+.

SCORE_REMAINING_HEALTH

Remaining Health

Santé restante

Verbleibendes Leben

残りの体力

Salud restante

Not used in v1.13.7+.

SCORE_GRIND

Scrape

Frottement

Wandschrammer

グラインド

Rosadura

Not used in v1.13.7+.

SCORE_WIN_GAP

Win Gap

Avance du vainqueur

Vorsprung

ウィンギャップ

Margen de victoria

Not used in v1.13.7+.

Double Tap
Swipe Up
Swipe Down
Swipe Left
Swipe Right
Swipe Up & Right
Swipe Up & Left
Swipe Up Diagonal
Pulldown
Off
Grid
Both
No Override
Force Off
Force Level 1
Force Level 2
Force Level 3
Force Super Powered
No Driving Assist
Driving Assist LOW
Driving Assist LOW/MID
Driving Assist MEDIUM
Driving Assist MID/HIGH
Driving Assist HIGH
No Braking Assist
Braking Assist LOW
Braking Assist MEDIUM
Braking Assist HIGH
Regular Brake
Hand Brake
Tilt Controls
On Screen Joystick
Fine
Damaged
AI
Player
Hatch
Saloon
4x4
Wireframe
Solid
Force High Lod
Force Medium Lod
Force Low Lod
On
Detailed
With forward/right/up vectors

Game executables have these strings while some are exclusive to V1.

Debug Tweaklist XML#

A debugging feature tweak list is present in gameplay/misc.pak/ and is named: DebugTweakables.xml. It has a LOT of tweaks that are enabled (aside from true debugging tweaks) on every game bootup, even for a retail build, some code isn't present in the library and/or the XML logically, anything in XMLs ONLY from the Library can be used as settings are called from it and not the XMLs alone.

To do:
Enable and show most of these on v2.9.1. Compare libraries of v1 for existing functions, some are in v1 but not v2, you can find them here, https://pastebin.com/raw/dtm2wBfe has a bunch.

Other debugging functions#

To do:
Possible to enable, figure out how to RE the XMLs controlling these settings.

In-game debugging buttons are mentioned in UI.pak, in the XML directory, but they are hidden from releases.

Chromecast#

  • Debug Show Devices: Shows all devices?

Cloud Save#

To do:
This is a Behavior Link ID, without spaces, relate to it on a group to use it.

  • Debug Close: Closes a requested cloud save.

Curves#

  • Debug Timer Spin: Unknown.

LMP Lobby#

To do:
Set this to true.

  • Debug Show Parties: Shows parties?

Map#

  • Debug Button: Loads the Developer (Cheat) Menu, this is likely stripped from the public build of game.

Results#

  • Debug Score Scroller: Unknown.
  • Debug Score Source: Unknown.
  • Debug Restart: Unknown, likely restarts the level, the state to change to is likely stripped from the public build of the game as the executable does not mention debugRestart.
  • Debug Reopen: Unknown, the state to change to is likely stripped from the public build of game as the executable does not mention debugReopen.

Styles#

  • Debug Panel Text: Unknown.
  • Debug Panel: Unknown.

Tournament Select#

  • Debug ID: Tournament Debug ID, relating to the debug tournament file?

Debugging Tournaments#

The file debugtournament.xml in xml/tournament.pak has a lot of debugging tournaments for Chinese New Year, named DCNYXXXX (with X's to replace), for debug tournament selection.

Error Messages#

Missing String Handler#

If the game detects a missing string that the game expects in a file, it will say !MISSING STRING!.

Unused playable characters#

Minion Pig#

To do:
This character unfortunately crashes the game after booting a level when used, fix the character if possible, more v1 character content.

In the character icon image ui_core.pak/textures/uicharacters_1_of_1.xgt (V2), there are complete icons for a Minion Pig for both the character select or daily challenge popup in v2 and online multiplayer team list in the v1 series before v1.13.9 as reserve drivers for players to replace them. There are also most unused sounds for them meaning Rovio was likely planning to make it possible to play as one, the character's script file is characters/charxml.pak/char_015.xml and it disabled the character as its instead used an AI rival. The character uses some of Foreman Pig's code, also used Red's ability icon for the ability icon outside of a race, however has none coded, V1 also a similar player icon, there's also no animations programmed for use or directories of them for the character.

Dealer Pig#

In one of the character script files: characters/charxml/char_016.xml, there's a mention for Dealer Pig and the script disabled the character, it is partially based on the unused/AI Minion Pig but preferably based on the Foreman Pig, it also used Red's ability icon outside of a race, there are no plain icons or sounds for this character during a race or at the showroom. The character is named MOUSTACHE PIG, the icon outside a race is Moustache Pig's in-race avatar from V1, stretched out to fit, the name of the character inside a race is not known in the game files. The ability he has is an instant explosion, but it unfortunately has no hitboxes, making it useless, it also has no icon during a race... Another thing is that the character "floats" over its vehicle, both during a race and in the showroom.

Removed playable characters#

Senna Bird#

The Senna Bird, both the regular and helmeted version, is no longer playable as of the v2 update, most textures, all animations and the character script for him still exist, not all sounds are programmed to play, only sounds for showroom idle, pre-race, some race sounds and win/lose race are present, the icon of the character is a black square, likely meaning not in the game files, the ability icon in races is also not present but the ability also works completely fine like before.

Chronicler Pig#

The Chronicler Pig was a old sprite model of Senna Bird prior to version 1.4.0.

Removed Music#

To do:
Figure out what versions removed/replaced these, its likely one of the V2 updates.

For whatever reason, the music that played in Versus mode, known as "The Big Stunt" in the soundtrack, was replaced after some time (by aby_music_dlc_1), however the original audio file that was used is still present. Old music: New music:

In all versions of the game, there is also a blanked (1 second) audio file in the game's music asset folder (or music_core.pak on newer versions) called aby_music_crash. Given its vague name its purpose is unknown, although it could have been meant for another game mode. Unfortunately, the XMLs or game's executable code doesn't mention anything regarding this file, making the file either act like a "dummy" or information/mentions of it are internal and not publicly revealed.

Music Naming Curiosities#

The Race theme music is known internally as aby_music_aerie_peaks. Given the similarities in names, this might imply that the track was meant to play specifically on the Air theme, and that at one time the theme was called "Aerie Peaks".
The Fruit Splat theme music is known internally as aby_music_cobalt. Given the name of some test events related to the Rocky Road theme (referring to it as "Cobalt Plateau"), and that the theme itself features cobalt rock formations, it is likely this theme was meant specifically for the Rocky Road theme. This also suggests that the theme was renamed to "Rocky Road" sometime later in development, as the Time Boom mode's theme is internally called aby_music_rocky_road.
The theme heard in the kart menus is known internally as aby_music_jenga. This suggests the theme was made specifically for the Pirate Pig Attack minigame and was later used for the kart menus.
The versus theme music that replaced the Stunt theme music is known internally as aby_music_dlc_1. Considering this track was played over preview footage for the Sub Zero update may imply that this track was meant specifically for the Sub Zero theme. It may also refer to the multiplayer DLC as this music is played during multiplayer races.

Leftover Version 1 assets#

A ton of assets are left over, including textures, boss events (rounds 2 & 3), Slalom events, and more.

Test events#

To do:
Load these somehow, give event IDs for ones other than 0000, say the title of events not titled Dummy Event, same for descriptions, what is the Seed Rush game mode?

A few test events are present in gameplay/eventdef_other.pak.

eventdef_cobaltplateau_seedrushtest.xml#

A test on Rocky Road for the Seed Rush game mode.

eventdef_cobaltplateaubumpy_seedrushtest.xml#

A test on Rocky Road with bumpy road for the Seed Rush game mode.

eventdef_coindash_sample.xml#

A test on Rocky Road with bumpy road for the Race game mode with a ton of coins.

eventdef_dummy.xml#

A dummy file for the Race game mode, on Seedway Track 1, very little data.

eventdef_dummyboss.xml#

Similar to eventdef_dummy.xml but for a boss battle.

eventdef_tmr_00_00.xml#

A test for a quick Multiplayer race.

eventdef_tokentest.xml#

A test event for the Race game mode, for testing track items as Red, the description says: A simple test of the xml based track item configuration system and the event is tagged: 01TE.

Unused powerups#

Excluding powerups no longer being used in v2 from v1.

Leaf Blower#

A powerup going by: POWERUP_LEAF_BLOWER is present in only v2 libraries of the game, it's not coded in any XML file. The leaf blower was present in early v2 versions, but was removed in later versions.

Unused PC DRM#

The game was likely planned for some time to computers (or Steam) but it was cancelled likely for the favor of mobile devices, the game library mentions PC DRM, including the DRM server URL, links and protocols.

(Source: LolHacksRule)

Development Mistakes#

Console Log#

In the game's ui_core.pak and screens.pak, a file called xgsconsole_log.html is present in the textures directory and the root of root of the other, it shows an error message log regarding XGSCore.

XGSConsole::Open() - debug console opened
*********************************
******* ASSERTION FAILED *******
*********************************
FILE : XGSCore\Common\XGSFileSystem\XGSFileSystem.cpp
LINE : 951
CONDITION : (eErr == EXGSError::OK) || (eErr == EXGSError::FileNotFound)
DETAILS : Error 14 (00000020) received by filesystem code

ABTF Naming Oddity#

pigLabCraftPulse is mentioned and used for the present in the results screen but there's no Pig Lab in the game, but Angry Birds: Transformers, suggesting it was used unknowingly.

Crash metadata file#

A latest.meta file is present in the crashes directory in the majority of extracted game directories. Most likely this is a build for development only.

ProductName=XGS&BuildID=100&ReleaseChannel=teamcity&Version=1.0&VersionNum=100

Debug API Files#

The Windows Phone versions have a debugapi.xml file in the root of the game executable.

v1.0.0.0:

<APIConfig>
    <Enabled>false</Enabled>
    <IPAddress>192.168.0.99</IPAddress>
    <DataRoot>C:\Work\ABKXGSTechStable\ABK\built\wp8_eu\</DataRoot>
    <Platform>WP8_EU_OPTS</Platform>
</APIConfig>

v1.8.7.0:

<APIConfig>
    <Enabled>true</Enabled>
    <NetworkPrintfEnabled>true</NetworkPrintfEnabled>
    <IPAddress>10.3.10.11</IPAddress>
    <DataRoot>C:\work\Senna\abk\built\wp8_eu\</DataRoot>
    <Platform>WP8_EU_OPTS</Platform>
</APIConfig>

XAL Compilation Metadata#

The asset list (XAL) files have compilation metadata after the assets for the game to use are generated, since it is partial, the full content is not possible to fully recover, they range from bits of compiled shaders, source file directories and web addresses.

v1.8.7 (Android):

\work\Senna\abk\scratch\temp\android_eu_opts\publisher\assets.xal

v1.13.7 (Android):

e t s - a . a k a m a i h d . n e t

It's possible that the unfinished word is cloudassets, mistassets or smokeassets, suspended content servers of Rovio.

v1.13.9 (Android):

TS\publisher\

v2.8.2 (Android):

\abk_dev\ABK\built\Android_staged\StorePackage\

v2.8.2 (Android, backup file):

cloudassets-a.

Probably cloudassets-a.akamaihd.net.

Developer notes#

In many XML files, there often are developer notes for setting up the XML assets or notes saying what the asset means, one goes by: CUP (awaiting design), another goes by: Workshop no panel required, should link to upgrade screen, Hey kids, this is advertising and possibly many more.

Boot options#

The game executable mentions these launch options:

To do:
Figure what these do.

  • --enable-smoke-test =
  • --enable-level-test =
  • --enable-ui-test =
  • --enable-soak-test =
  • --default-env= =
  • --enable-env-profile =

Unused textures#

To do:
Figure out how to get sizes for multiple textures from atlas files having the given metadata.

Rovio#

The Rovio logo when booting up the game is used but as of V2, an Exient texture that does not get used was added! It's possible the developers were continuing to pack assets of ABTF into the game as the logo does get used in that game while also being virtually identical there.

UIAdditional#

The XGT file only has one texture, a rainbow birdcoin, given by the atlas file, it is named abk_test.png. It is oversized by a medium sized portion.

Core#

The texture in the base game only has three textures, a checker-boarded square with many dots as well as Red, Chuck, Bomb, and one of the blue birds in their Classic designs. Given by the atlas file, the checker-boarded image is named dummy.png, Red is bird_red.png, Chuck is bird_yellow.png, Bomb is bird_black.png and the blue bird is named bird_blues.png. It is oversized by a decently sized portion and very low quality. It's possible the textures were likely used as character avatars according to the file names but was likely rejected for the current ones used. Despite being unused, it was updated in V2 to remove a possible oversight in compiling the texture and changed the order of the individual textures.

The texture from data/core/core_1_of_1.xgt in version 1. Converted by Noesis to PNG. The texture from data/core/core_1_of_1.xgt. Converted by to PNG.

Screens#

loading_sp_cmp_noalpha#

The ETC1 compressed XGT file only has one texture in a 1024x1024 image, an unused image for loading a match in single player, it is named loading_background_sp.png and it is oversized by a decently sized portion, the file loading_tbm_cmp_noalpha.atlas also has this image used in the exact same size and compression. It is possible to load this from navigating to the new user screen and clicking GO! on an existing save before crashing.

pfx_placeholder#

The uncompressed XGT file in data/effects.pak has the Exient logo on a black background.

Unused kart#

In 1.10.1 to 1.13.9, found in Rocky Road's kart texture archive cartextures.pak, there is an unused texture for a football themed kart named abk_football_kart_colour.xgt, likely meant to be used for a soccer themed event, with it's design supposedly being a roller skate, though the kart itself doesn't have any model or code.

The kart's texture.

In the same versions, however now on the telepod kart's texture archives, a leftover of Red as Energon Optimus Prime's texture from Angry Birds Transformers can be found, titled ab_bs_optimusenergon.xgt, made by the same developer. Abtransformersoptimusenergon.png

Internal Project Name#

The game assets, CDN url, and library code mention Yellow but also mention ABK, ABY and words ending with .kart. The project name was likely "Angry Birds Yellow" or "Angry Birds Kart".