We just released a prototype of the cancelled SNES port of Puggsy! Take a look!
As always, thank you for supporting The Cutting Room Floor on Patreon!

Angry Birds Rio

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Angry Birds Rio

Developers: Rovio, Fox Digital Entertainment, Blue Sky Studios
Publisher: Rovio
Platforms: Windows, Mac OS X, iOS, Android, Nintendo 3DS, Wii U, Xbox 360, Windows Phone
Released internationally: September 13, 2012

GraphicsIcon.png This game has unused graphics.
DebugIcon.png This game has debugging material.

Angry Birds Rio is the third game in the Angry Birds saga, featuring characters and environments from the 2011 Fox Animation/Blue Sky Studios movie Rio, and later Rio 2.

Title Theme

Before the release of Rio 2, the game's main theme was an upbeat, samba-esque remix of the original Angry Birds theme. After the game changed to match the film release, the theme was changed to a more relaxing remix with random lyrics.

Before 2.0.0
(Rio remix)
After 2.0.0
(Rio 2 remix)

Debugging Functions

Just like other Angry Birds games built with Lua, debugging functions are mentioned in certain Lua files and named certain Lua files.

FPS+Memory+Stack(?) Display

If the game is not a release build, on every bootup, the game will show a display for those status on the bottom corner.

Debugging Info in Credits

If the game is not a release build, the game will show the customerString in the credits menu.

Developer Cheats

Main Menu

This button loads a list of 9 functions that can be done:

  • Clear Level Progress = Wipes level progress for a save.
  • Clear Achievements = Wipes achievements for a save.


  • Lose = Makes the game act like you lost the level.
  • 1xStar = Makes the game act like you beat the level but rigs the score to approximately one star.
  • 2xStar = Makes the game act like you beat the level but rigs the score to approximately two stars.
  • 3xStar = Makes the game act like you beat the level but rigs the score to approximately three stars.


  • Image boxes: Pressing D will toggle visibility of boxes on the majority of textures.
  • FPS + Memory display: Pressing F will toggle visibility of the given display.

Level Editor

A level editor is present in the game's files and is shown at the main menu if the value to show it is enabled in the build settings.

The mobile release however lacks support for touch controls, meaning you can only look at levels. Unlike Angry Birds where its editor uses right-click to test levels (which mobiles call double-finger click), this game zooms in/out on levels, and it's similar to the computer version's editor.

Developer Leftovers

Developer Directory

scripts/menu/CutscenePage.lua uncompiled mentions a source directory for the Free version's end movie.


Unknown JSON File

A similar JSON file from Angry Birds Seasons made it's way in version 1.5.0 for Android. Unlike other similar files, this one has an edited value for the options file, being set to "not True".

    "additionalPermissions": [], 
    "appName": "Angry Birds", 
    "archs": [
    "buildDate": "2012-12-12", 
    "buildStartedBy": "", 
    "compatibleScreens": [], 
    "compileLua": true, 
    "compressLua": true, 
    "copyAssets": [
    "copyExcludes": [], 
    "copyPatterns": [
    "copyTo": "p:/RovioMobile/AngryBirdsRio/Software/Android/2012-12-12_1.5.0_(8484)_androidmarket", 
    "customLuaOptions": {
        "gamelua.applyChinaRestictions": false, 
        "gamelua.cheatsEnabled": false, 
        "gamelua.customerString": "'androidmarket'", 
        "gamelua.g_registrationEnabled": false, 
        "gamelua.g_updateCheckEnabled": false, 
        "gamelua.gameVersionNumber": "'1.5.0'", 
        "gamelua.hdProductIapIds": false, 
        "gamelua.iap_available": true, 
        "gamelua.isABStarWarsAvailable": true, 
        "gamelua.isHDVersion": false, 
        "gamelua.isKorea": false, 
        "gamelua.isPremium": false, 
        "gamelua.loadMightyEagle": true, 
        "gamelua.premiumProductIapIds": false, 
        "gamelua.releaseBuild": true, 
        "gamelua.showEditor": false, 
        "gamelua.svnRevisionNumber": "'8484'", 
        "gamelua.useDynamicAssets": false, 
        "gamelua.useMockAchievementLimits": "not True"
    "customScripts": {
        "assetFilter": "update_level_filenames.py"
    "customer": "androidmarket", 
    "debug": false, 
    "defines": [
    "dirSuffix": "", 
    "encryptLua": true, 
    "encryptionKey": "__SECRET__", 
    "externalModules": [], 
    "failOnConfigurationWarnings": false, 
    "includeDirs": [
    "jobs": 8, 
    "keyAlias": "__SECRET__", 
    "keyAliasPassword": "__SECRET__", 
    "keyStore": "__SECRET__", 
    "keyStorePassword": "__SECRET__", 
    "luaOptionsFile": "data/scripts/options.lua", 
    "minSdkVersion": "8", 
    "modules": [
    "obfuscate": true, 
    "outputName": "AngryBirdsRio_1.5.0_ADS_androidmarket_DISTRIBUTION", 
    "packageName": "angrybirdsrio", 
    "platform": "android", 
    "projectName": "AngryBirdsRio", 
    "releasePackage": true, 
    "sourceExcludes": [
    "sourceFiles": [
    "subDir": "gen", 
    "svnRevision": "8484", 
    "targetPrefix": "android-", 
    "targetSdkVersion": "13", 
    "verbosity": 1, 
    "versionCode": "1500", 
    "versionString": "1.5.0"

Configuration Script

A configuration script (config.lua) from the developer end made it's way into version 1.5.0. It's not too special but it provides a little insight on the data_src directory. An uncompiled version of the file exists in the iOS releases.

product = "Angry Birds Rio"
publisher = "Rovio"

width = 1024
height = 600

orientation = 0

datapath = "data_src"
imagePath = "images"
fontPath = "fonts"
audioPath = "audio"
localizationPath = "localization"
levelPath = "levels"
scriptPath = "scripts"
deviceModel = "windows"
fullscreen = false
showCursor = false
singleton = true

name = "AngryBirdsRio"

fullscreen = false
renderer = { "gles2" }
autoOrientations = { 90, 270 }

Variant Directory

To do:
There's also some JSON files in the directory, purpose?

The game's data directory has a variant directory in v1.8.0 and beyond, having two scripts for Rovio's internal build tool directory, being validate.py and validate.bat.

import json
import sys
import os
import jsonschema

def main():
	configFileNames = ["variantconfig.json"]
	if len(sys.argv) > 1:
		configFileNames = sys.argv[1:]

	for configFileName in configFileNames:
		with open(configFileName) as configFile:
			config = json.load(configFile)
		with open("schema.json") as schemaFile:
			schema = json.load(schemaFile)
			jsonschema.validate(config, schema)
			print(configFileName + " successfully validated")
		except jsonschema.ValidationError, e:
			print("Failed to validate " + configFileName)

if __name__ == '__main__':
@set pypath=..\..\..\external\Fusion\buildtool\tools\python-2.6.6-win-x86\
@if not exist %pypath% (set pypath=)
@%pypath%python.exe validate.py %*