diff options
| author | Darkelarious <darkelarious@333networks.com> | 2015-02-09 07:58:06 +0100 |
|---|---|---|
| committer | Darkelarious <darkelarious@333networks.com> | 2015-02-09 07:58:06 +0100 |
| commit | 5057ec47aa9a1702b2483e0a0b3ba325bb0b7abb (patch) | |
| tree | b1a394f64ec7ec2cf69f33bceb54a5b51199c0a4 | |
| parent | 6ac9d390e417b868b6ed79441b8cc6e1b2ebeb13 (diff) | |
| download | MasterServer-Perl-5057ec47aa9a1702b2483e0a0b3ba325bb0b7abb.tar.gz MasterServer-Perl-5057ec47aa9a1702b2483e0a0b3ba325bb0b7abb.zip | |
receive UDP beacons, validate them and store with country indicator
| -rwxr-xr-x | README | 14 | ||||
| -rwxr-xr-x | data/database/tables-Pg.sql | 71 | ||||
| -rwxr-xr-x | data/masterserver-config.pl | 179 | ||||
| -rwxr-xr-x | data/supportedgames.pl | 3149 | ||||
| -rwxr-xr-x | lib/MasterServer.pm | 50 | ||||
| -rwxr-xr-x | lib/MasterServer/Core/Core.pm | 147 | ||||
| -rwxr-xr-x | lib/MasterServer/Core/Logging.pm | 66 | ||||
| -rwxr-xr-x | lib/MasterServer/Core/Secure.pm | 210 | ||||
| -rwxr-xr-x | lib/MasterServer/Core/Util.pm | 35 | ||||
| -rwxr-xr-x | lib/MasterServer/Core/Version.pm | 41 | ||||
| -rwxr-xr-x | lib/MasterServer/Database/Pg/dbBeacon.pm | 123 | ||||
| -rwxr-xr-x | lib/MasterServer/Database/Pg/dbCore.pm | 44 | ||||
| -rwxr-xr-x | lib/MasterServer/Database/Pg/dbServerlist.pm | 44 | ||||
| -rwxr-xr-x | lib/MasterServer/UDP/BeaconCatcher.pm | 67 | ||||
| -rwxr-xr-x | lib/MasterServer/UDP/BeaconProcessor.pm | 120 | ||||
| -rwxr-xr-x | util/masterserver.pl | 25 |
16 files changed, 4379 insertions, 6 deletions
@@ -26,6 +26,7 @@ REQUIREMENTS DBD::Pg or DBD::SQLite AnyEvent AnyEvent::Handle::UDP + IP::Country - screen (or another terminal multiplexer, optional) INSTALL @@ -65,15 +66,13 @@ CONFIGURATION Postgresql: ['dbi:Pg:dbname=database_name', 'user', 'password'] SQLite: ["dbi:SQLite:dbname=$ROOT/data/database_name.db",'',''] - MySQL: ["dbi:mysql:database=database_name;host=localhost;port=3306", - 'user','password', {'RaiseError' => 1}] Logging All events are logged by default. Every new beacon, database transaction or serverlist request is recorded in the logfile. For debugging purposes, this is very useful, but during regular use, the logfile will grow big very fast. With the "suppress" option, log messages can be suppressed from being logged. This - option takes the message type, seperated by spaces. To suppress a message + option takes the message type, separated by spaces. To suppress a message type, use the identifier between brackets. Example: [2015-01-31 17:31:47] [Success] > Connected to the Postgres database. @@ -85,6 +84,9 @@ CONFIGURATION suppress => " Success " More message types can be suppressed, where the types are seperated by spaces. + If you want to log a lot of events, you could consider rotating the logs every + day, week, month or year. The 'log_rotate' allows you to store events in + different files. Network settings The masterserver uses UDP and TCP networking. The default port numbers are @@ -157,13 +159,13 @@ RUNNING screen -dmS "UTMSE" ./util/masterserver.pl - Keep in mind that this configuration of database, master server and website + Keep in mind that this configuration of database, masterserver and website is designed for 333networks. If you want to set up your own system for any game other than Unreal Tournament, you may want to look at other repositories - on 333networks how this is achieved. See also http://git.333networks.com + on 333networks HOW this is achieved. See also http://git.333networks.com 333networks is not responsible for your masterserver querying (or spamming) - game servers and/or masterservers. + game servers and/or masterservers. Your configuration is YOUR responsibility! COPYING Copyright (c) 2005-2015 Darkelarious & 333networks.com diff --git a/data/database/tables-Pg.sql b/data/database/tables-Pg.sql new file mode 100755 index 0000000..1502c05 --- /dev/null +++ b/data/database/tables-Pg.sql @@ -0,0 +1,71 @@ +CREATE TABLE serverlist( + id SERIAL UNIQUE NOT NULL PRIMARY KEY, + ip inet NOT NULL DEFAULT '0.0.0.0', + port INTEGER NOT NULL DEFAULT 0, + gamename VARCHAR(50) NOT NULL DEFAULT ' ', + gamever VARCHAR(50) NOT NULL DEFAULT ' ', + hostname VARCHAR(100) NOT NULL DEFAULT ' ', + hostport INTEGER NOT NULL DEFAULT 0, + country VARCHAR(5), + b333ms BOOLEAN NOT NULL DEFAULT FALSE, + blacklisted BOOLEAN NOT NULL DEFAULT FALSE, + added timestamptz NOT NULL DEFAULT NOW(), + beacon timestamptz NOT NULL DEFAULT NOW(), + updated timestamptz NOT NULL DEFAULT NOW() +); + +CREATE TABLE pending( + id SERIAL UNIQUE NOT NULL PRIMARY KEY, + ip inet NOT NULL DEFAULT '0.0.0.0', + beaconport INTEGER NOT NULL DEFAULT 0, + heartbeat INTEGER NOT NULL DEFAULT 0, + gamename VARCHAR(25) NOT NULL DEFAULT ' ', + secure VARCHAR(12) NOT NULL DEFAULT ' ', + enctype INTEGER NOT NULL DEFAULT 0, + added timestamptz NOT NULL DEFAULT NOW() +); + +CREATE TABLE server_info( + server_id SERIAL REFERENCES serverlist(id), + minnetver INTEGER NOT NULL DEFAULT 400, + gamever INTEGER NOT NULL DEFAULT 400, + location INTEGER NOT NULL DEFAULT 0, + listenserver BOOLEAN NOT NULL DEFAULT TRUE, + hostport INTEGER NOT NULL DEFAULT 7777, + hostname varchar(200) NOT NULL DEFAULT '', + adminname varchar(200) NOT NULL DEFAULT '', + adminemail varchar(300) NOT NULL DEFAULT '', + password BOOLEAN NOT NULL DEFAULT FALSE, + gametype varchar(50) NOT NULL DEFAULT '', + gamestyle varchar(50) NOT NULL DEFAULT 'Normal', + changelevels BOOLEAN NOT NULL DEFAULT FALSE, + maptitle varchar(100) NOT NULL DEFAULT 'Unknown', + mapname varchar(100) NOT NULL DEFAULT '', + numplayers INTEGER NOT NULL DEFAULT 0, + maxplayers INTEGER NOT NULL DEFAULT 0, + minplayers INTEGER NOT NULL DEFAULT 0, + botskill varchar(30) NOT NULL DEFAULT 'Novice', + balanceteams BOOLEAN NOT NULL DEFAULT FALSE, + playersbalanceteams BOOLEAN NOT NULL DEFAULT FALSE, + friendlyfire varchar(10) NOT NULL DEFAULT '0%', + maxteams INTEGER NOT NULL DEFAULT 4, + timelimit INTEGER NOT NULL DEFAULT 0, + goalteamscore INTEGER NOT NULL DEFAULT 0, + fraglimit INTEGER NOT NULL DEFAULT 0, + mutators TEXT NOT NULL DEFAULT 'None' +); + +CREATE TABLE player_info( + server_id SERIAL NOT NULL, + player varchar(40) NOT NULL DEFAULT 'Player', + team INTEGER NOT NULL DEFAULT 255, + frags INTEGER NOT NULL DEFAULT 0, + mesh varchar(100) NOT NULL DEFAULT '', + skin varchar(100) NOT NULL DEFAULT '', + face varchar(100) NOT NULL DEFAULT '', + ping INTEGER NOT NULL DEFAULT 0, + ngsecret varchar(10) NOT NULL DEFAULT 'false', + updated timestamptz NOT NULL DEFAULT NOW() +); + + diff --git a/data/masterserver-config.pl b/data/masterserver-config.pl new file mode 100755 index 0000000..f6e0ad7 --- /dev/null +++ b/data/masterserver-config.pl @@ -0,0 +1,179 @@ +package MasterServer; +our (%S, $ROOT); +our %S = ( + +################################################################################ +# Masterserver HOST information # +# # +# Please fill in your contact details here, for two-way synchronization and # +# for your users to be able to contact you. # +# # +# Values may not contain backslashes and quotes: no \ or \\, nor ' and ", # +# unless you know exactly what you're doing! # +# # +################################################################################ + + # example: 333networks -- http://master.333networks.com -- info@333networks.com + contact_details => '333networks -- http://master.333networks.com -- info@333networks.com', + + # host address (and tcp port) + masterserver_address => 'master.333networks.com:28900', + +################################################################################ +# Database Login Configuration # +# # +# Login credentials for the database that was created manually before. # +# Use only one option: Postgresql, SQLite (or future: MySQL) # +# # +################################################################################ + + # Postgresql + dblogin => ['dbi:Pg:dbname=testdatabase', 'unrealmaster', 'unrealmasterpassword'], + + # SQLite + #dblogin => ["dbi:SQLite:dbname=$ROOT/data/database_name.db",'',''], + + # MySQL + #dblogin => ["dbi:mysql:database=database_name;host=localhost;port=3306",'user','password'], + +################################################################################ +# Logging configuration # +# # +# All messages are printed to the log (and screen) by default. The following # +# settings determine the file locatioin and which messages are suppressed. # +# # +################################################################################ + + # log file location + log_dir => "$ROOT/log/", + + #rotate log? options: daily, weekly, monthly, yearly, none + log_rotate => "weekly", + + # print to screen (1=yes, 0=no) + printlog => 1, + + # which messages do you NOT want to see in the logs (and screen)? + suppress => " module debug ", + +################################################################################ +# Network settings # +# # +# Beacon UDP port and Browser TCP port # +# Settings for games that require different data formats # +# # +################################################################################ + + # port settings + listen_port => 28900, # default 28900 + beacon_port => 28906, # default 27900 + + # these games require a special hex format instead of \ip\ip:port\ + hex_format => "bcommander", + +################################################################################ +# Secure/Validate configuration # +# # +# Which servers have to validate? Which games may be ignored? # +# # +################################################################################ + + # Disable checks, all games pass as validated. (0=validate, 1=allow all) + debug_validate => 0, + + # accept only servers that pass the secure/validate challenge + require_secure_beacons => 0, + + # ignore keys from games that use multiple keys or do not support keys at all + ignore_beacon_key => "deusex ut", + ignore_browser_key => "deusex", + +################################################################################ +# Enable + Timer settings # +# # +# When does what process start? Format: after [s], interval [s], # +# maximum cycle time [s] (optional) # +# Wait 60+ seconds before starting timers for incoming beacons # +# # +################################################################################ + + # Synchronization with other 333networks-based masterservers + sync_enabled => 1, + sync_time => [60, 1200], + + # Query UCC-based applets + master_applet_enabled => 1, + master_applet_time => [70, 600], + + # Beacon Checker query all addresses in the database, requesting "basic" and + # "info". Execute at least twice per hour, to avoid time-outs in own data. + # disabling may break support for certain games. + beacon_checker_enabled => 1, + beacon_checker_time => [80, 0.25, 1800], + + # Collect server information for the 333networks main site. Identical + # mechanism as the Beacon Checker. Disable when not interested in UT info. + utserver_query_enabled => 1, + utserver_query_time => [90, 0.125, 240], + + # Maintenance duties like cleaning out old servers/players + maintenance_time => [3600, 60], + +################################################################################ +# Synchronization settings # +# # +# Request the masterlist for selected or all games from other 333networks- # +# based masterservers. # +# # +################################################################################ + + # additional masters to sync with (in addition to db-entries) + sync_masters => [ + { address => "master.333networks.com", port => 28900 }, # default + { address => "master.noccer.de", port => 28900 }, + { address => "master.oldunreal.com", port => 28900 }, + { address => "master.errorist.tk", port => 28900 }, + ], + + # sync all or selected games? + # 0 = all, 1 + gamenames = selected + sync_games => [0], + #sync_games => [1, "ut unreal"], + +################################################################################ +# Query UCC Applets # +# # +# Request the masterlist for single games from the remote UCC applet or # +# equivalent. # +# # +################################################################################ + + # remote applets to be queried + master_applet => [ + {ip => "utmaster.epicgames.com", port => 28900, game => "ut"}, + {ip => "master.hypercoop.tk", port => 28900, game => "unreal"}, + {ip => "master.newbiesplayground.net", port => 28900, game => "unreal"}, + ], + +); #end %S + +################################################################################ +# # +# Supported Games. # +# # +# List of games that are supported by the 333networks masterserver. Note that # +# adding a game does not necessarily mean that suddenly the protocol will # +# be supported. # +# # +# Import either the first or the second file; the first one is a sample file # +# that holds all the game names, but not their keys (public version). The # +# other file is not included in this git and contains both game names and # +# their confidential ciphers. # +# # +# Importing both may give some unstable "invalid gamename" checks. # +# # +################################################################################ +#require "$ROOT/data/supportedgames.pl"; +require "/server/Repositories/supportedgames.pl"; + +1; diff --git a/data/supportedgames.pl b/data/supportedgames.pl new file mode 100755 index 0000000..58a3fd6 --- /dev/null +++ b/data/supportedgames.pl @@ -0,0 +1,3149 @@ +our %S = (%S, # do not overwrite the current config + +# Version: public-20150209 + +# Supported Games & Secure/Validate +# All GameSpy protocol games communicate according to a protocol that requires +# servers and clients to authenticate each other. As far as 333networks are +# concerned, the authentication ciphers (keys) are confidential and intellectual +# property. +# +# If you have a configuration file with keys, you can simply import that list +# instead of this file. If you do not have the correct ciphers, you can choose +# to bypass the secure/validate challenge. This also allows hackers and +# opportunists to provide fake data or request the data without authorization. +# See option "require_secure_beacons" in the configuration file. +# +# For questions contact darkelarious@333networks.com or visit at irc. +# irc.synirc.net #333networks +# +# Usage: +# +# game code => {key => "game key", label => "game name label", port => "default port number"} + game => { + "12ironds" => {key => "", label => "12Iron (DS)"}, + "12irondsam" => {key => "", label => "12Iron Automatch (DS)"}, + "2kboxingds" => {key => "", label => "2K Boxing (DS)"}, + "3celsiuswii" => {key => "", label => "3* Celsius (WiiWare)"}, + "3dpicrossds" => {key => "", label => "3D Picross (DS)"}, + "3dpicrosseuds" => {key => "", label => "3D Picross (EU) (DS)"}, + "3dpicrossUSds" => {key => "", label => "3D Picross (US) (DS)"}, + "3DUltraMinigolf" => {key => "", label => "3D Ultra Minigolf Adventures"}, + "4x4evo" => {key => "", label => "4x4 Evolution"}, + "4x4evodemo" => {key => "", label => "4x4 Evolution Demo"}, + "4x4retail" => {key => "", label => "4x4 Evolution"}, + "50centjpnps3" => {key => "", label => "50 Cent: Blood on the Sand (JPN) (PS3)"}, + "50centjpnps3am" => {key => "", label => "50 Cent: Blood on the Sand Automatch (JPN) ("}, + "50centjpnps3d" => {key => "", label => "50 Cent: Blood on the Sand Demo (JPN) (PS3)"}, + "50centsandps3" => {key => "", label => "50 Cent: Blood on the Sand (PS3)"}, + "50centsandps3am" => {key => "", label => "50 Cent: Blood on the Sand Automatch (PS3)"}, + "50ctsndlvps3" => {key => "", label => "50 Cent: Blood on the Sand - Low Violence (PS"}, + "50ctsndlvps3am" => {key => "", label => "50 Cent: Blood on the Sand - Low Violence Au"}, + "7kingdoms" => {key => "", label => "Seven Kingdoms 2"}, + "8ballstarsds" => {key => "", label => "8-Ball Allstars (DS)"}, + "aarmy3" => {key => "", label => "America's Army 3"}, + "aarts" => {key => "", label => "Axis and Allies RTS"}, + "aartsd" => {key => "", label => "Axis and Allies RTS demo"}, + "abominatio" => {key => "", label => "Abomination"}, + "ace" => {key => "", label => "A.C.E."}, + "acejokerUSds" => {key => "", label => "Mega Man Star Force 3: Black Ace/Red Joker (U"}, + "acrossingds" => {key => "", label => "Animal Crossing (DS)"}, + "acrossingdsam" => {key => "", label => "Animal Crossing (DS, Automatch)"}, + "acrossingwii" => {key => "", label => "Animal Crossing Wii (Wii)"}, + "actofwar" => {key => "", label => "Act of War: Direct Action"}, + "actofwaram" => {key => "", label => "Act of War: Direct Action (Automatch)"}, + "actofward" => {key => "", label => "Act of War: Direct Action demo"}, + "actofward" => {key => "", label => "Act of War: Direct Action Demo"}, + "actofwardam" => {key => "", label => "Act of War: Direct Action Demo (Automatch)"}, + "actofwarht" => {key => "", label => "Act of War: High Treason"}, + "actofwarhtam" => {key => "", label => "Act of War: High Treason Automatch"}, + "actofwarhtd" => {key => "", label => "Act of War: High Treason Demo"}, + "actofwarhtdam" => {key => "", label => "Act of War: High Treason Demo Automatch"}, + "actval1" => {key => "", label => "Activision Value Title 1"}, + "afllive05ps2" => {key => "", label => "AFL Live 2005 (ps2)"}, + "afrikakorps" => {key => "", label => "Afrika Korps"}, + "afrikakorpsd" => {key => "", label => "Desert Rats vs. Afrika Korps Demo"}, + "agentps3" => {key => "", label => "Agent (PS3)"}, + "agentps3am" => {key => "", label => "Agent Automatch (PS3)"}, + "ageofconanb" => {key => "", label => "Age of Conan beta"}, + "ageofsail2" => {key => "", label => "Age of Sail 2"}, + "AGON" => {key => "", label => "AGON: The Lost Sword of Toledo D2D"}, + "agrome" => {key => "", label => "Against Rome"}, + "airhockeywii" => {key => "", label => "World Air Hockey Challenge! (WiiWare)"}, + "airwingsds" => {key => "", label => "Air Wings (DS)"}, + "aliencrashwii" => {key => "", label => "Alien Crash (WiiWare)"}, + "aliencross" => {key => "", label => "Alien Crossfire"}, + "AliensCMPC" => {key => "", label => "Aliens: Colonial Marines (PC)"}, + "AliensCMPCam" => {key => "", label => "Aliens: Colonial Marines Automatch (PC)"}, + "AliensCMPCd" => {key => "", label => "Aliens: Colonial Marines Demo (PC)"}, + "AliensCMPS3" => {key => "", label => "Aliens: Colonial Marines (PS3)"}, + "AliensCMPS3am" => {key => "", label => "Aliens: Colonial Marines Automatch (PS3)"}, + "AliensCMPS3d" => {key => "", label => "Aliens: Colonial Marines Demo (PS3)"}, + "allegiance" => {key => "", label => "MS Allegiance"}, + "alphacent" => {key => "", label => "Alpha Centauri"}, + "altitude" => {key => "", label => "Altitude"}, + "amairtac" => {key => "", label => "Army Men - Air Tactics"}, + "americax" => {key => "", label => "America Addon"}, + "amfbowlingds" => {key => "", label => "AMF Bowling: Pinbusters! (DS)"}, + "AmMcGeeGrimm02" => {key => "", label => "American Mcgee's Grimm Episode 2"}, + "AmMcGeeGrimm03" => {key => "", label => "American Mcgee's Grimm Episode 3"}, + "AmMcGeeGrimm04" => {key => "", label => "American McGee's Grimm Episode 4"}, + "amworldwar" => {key => "", label => "Army Men World War"}, + "anarchyonline" => {key => "", label => "Anarchy Online"}, + "AncientQofSaq" => {key => "", label => "Ancient Quest of Saqqarah D2D"}, + "and1sballps2" => {key => "", label => "AND1: Streetball Online (PS2)"}, + "and1sballps2am" => {key => "", label => "AND1: Streetball Online Automatch (PS2)"}, + "anno1503" => {key => "", label => "Anno 1503"}, + "anno1503b" => {key => "", label => "Anno 1503 Beta"}, + "anno1602ad" => {key => "", label => "1602 A.D."}, + "anno1701" => {key => "", label => "Anno 1701"}, + "anno1701d" => {key => "", label => "Anno 1701 Demo"}, + "aoe" => {key => "", label => "Age of Empires"}, + "aoe2" => {key => "", label => "Age of Empires 2"}, + "aoe2demo" => {key => "", label => "Age of Empires II Trial"}, + "aoe2tc" => {key => "", label => "Age of Empires II: The Co"}, + "aoe2tcdemo" => {key => "", label => "Age of Empires II - The C"}, + "aoe3wcd" => {key => "", label => "Age of Empires 3: The Warchiefs Demo"}, + "aoemythds" => {key => "", label => "Age of Empires: Mythologies (DS)"}, + "aoex" => {key => "", label => "Age of Empires Expansion"}, + "aow2" => {key => "", label => "Age of Wonders 2"}, + "aow2d" => {key => "", label => "Age of Wonders 2 Beta Dem"}, + "aow3" => {key => "", label => "Age of Wonders: Shadow Ma"}, + "aowdemo" => {key => "", label => "Age Of Wonders Demo"}, + "aowfull" => {key => "", label => "Age of Wonders"}, + "aowfull" => {key => "", label => "Age Of Wonders"}, + "aowsm" => {key => "", label => "Age of Wonders: Shadow Ma"}, + "appletest" => {key => "", label => "Apple SDK test"}, + "appletestam" => {key => "", label => "Apple SDK test Automatch"}, + "appletestd" => {key => "", label => "Apple SDK test Demo"}, + "aquanox" => {key => "", label => "Aquanox"}, + "arc" => {key => "", label => "ARC"}, + "arc" => {key => "", label => "Arc: Sierra"}, + "archlord" => {key => "", label => "Archlord"}, + "ardinokingds" => {key => "", label => "Ancient Ruler Dinosaur King (DS)"}, + "area51pc" => {key => "", label => "Area 51"}, + "area51pc" => {key => "", label => "Area 51 (PC)"}, + "area51pcb" => {key => "", label => "Area 51 (PC) Beta"}, + "area51ps2" => {key => "", label => "Area 51 (PS2)"}, + "area51ps2" => {key => "", label => "Area 51 PS2"}, + "arkanoidds" => {key => "", label => "Arkanoid DS (DS)"}, + "arkaUSEUds" => {key => "", label => "Arkanoid DS (US/EU) (DS)"}, + "arkwarriors" => {key => "", label => "Arkadian Warriors"}, + "arkwarriorsam" => {key => "", label => "Arkadian Warriors Automatch"}, + "arma2oapc" => {key => "", label => "Arma 2: Operation Arrowhead (PC)"}, + "arma2oapcam" => {key => "", label => "Arma 2: Operation Arrowhead Automatch (PC)"}, + "arma2oapcd" => {key => "", label => "Arma 2: Operation Arrowhead Demo (PC)"}, + "arma2pc" => {key => "", label => "Arma II (PC)"}, + "arma2pc" => {key => "", label => "ArmA2: Armed Assault 2"}, + "arma2pcam" => {key => "", label => "Arma II Automatch (PC)"}, + "arma2pcd" => {key => "", label => "Arma II Demo (PC)"}, + "armaas" => {key => "", label => "ArmA: Armed Assault"}, + "armada2" => {key => "", label => "Star Trek Armada 2"}, + "armada2beta" => {key => "", label => "Star Trek: Armada 2 Beta"}, + "armada2d" => {key => "", label => "Star Trek: Armada II Demo"}, + "armedass" => {key => "", label => "ArmA"}, + "armedass" => {key => "", label => "ArmA: Armed Assault (correct gamekey)"}, + "armedassd" => {key => "", label => "ArmA Demo"}, + "armygame" => {key => "", label => "Americas Army: Special Forces"}, + "armygamemac" => {key => "", label => "America's Army: Operations MAC"}, + "armygamemac" => {key => "", label => "Americas Army: Special Forces (Mac)"}, + "armymen" => {key => "", label => "Army Men"}, + "armymen2" => {key => "", label => "Army Men II"}, + "armymenrts" => {key => "", label => "Army Men RTS"}, + "armymenspc" => {key => "", label => "Army Men Toys in Space"}, + "asbball2005ps2" => {key => "", label => "All-star Baseball 2005"}, + "ascensionpc" => {key => "", label => "Ascension (PC)"}, + "ascensionpcam" => {key => "", label => "Ascension Automatch (PC)"}, + "ascensionpcd" => {key => "", label => "Ascension Demo (PC)"}, + "asobids" => {key => "", label => "Asobi Taizen (DS)"}, + "Asonpartywii" => {key => "", label => "Asondewakaru THE Party/Casino (Wii)"}, + "assaultheroes" => {key => "", label => "Assault Heroes"}, + "assaultheroesam" => {key => "", label => "Assault Heroes Automatch"}, + "AssaultHeroesD2" => {key => "", label => "Assault Heroes"}, + "assimilation" => {key => "", label => "Assimilation"}, + "assultwii" => {key => "", label => "Assult (Wii)"}, + "atlantica" => {key => "", label => "Atlantica"}, + "atlantis" => {key => "", label => "Atlantis"}, + "atlantispre" => {key => "", label => "Atlantis Prequel"}, + "atlantispre" => {key => "", label => "Atlantis: Search for the Journal"}, + "atlas_samples" => {key => "", label => "ATLAS Sample Apps"}, + "austerlitz" => {key => "", label => "Austerlitz: Napoleons Gre"}, + "avp" => {key => "", label => "Aliens Vs Predator"}, + "avp2" => {key => "", label => "Aliens vs Predator 2"}, + "avp2demo" => {key => "", label => "Aliens vs Predator 2 Demo"}, + "avp2lv" => {key => "", label => "Aliens vs. Predator 2 (Low violence)"}, + "avp2ph" => {key => "", label => "Aliens vs. Predator 2: Primal Hunt"}, + "avpnotgold" => {key => "", label => "Aliens vs. Predator"}, + "avponlive" => {key => "", label => "Aliens Vs Predator (OnLive)"}, + "avponliveam" => {key => "", label => "Aliens Vs Predator Automatch (OnLive)"}, + "axallirnb" => {key => "", label => "Axis & Allies: Iron Blitz"}, + "axis" => {key => "", label => "Axis"}, + "axisallies" => {key => "", label => "Axis & Allies"}, + "backgammon" => {key => "", label => "Hasbro's Backgammon"}, + "baldursg" => {key => "", label => "Baludurs Gate"}, + "ballarenaps3d" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "ballers3ps3" => {key => "", label => "NBA Ballers: Chosen One (PS3)"}, + "ballers3ps3am" => {key => "", label => "NBA Ballers: Chosen One Automatch (PS3)"}, + "ballers3ps3d" => {key => "", label => "NBA Ballers: Chosen One Demo (PS3)"}, + "banburadxds" => {key => "", label => "Banbura DX Photo Frame Radio (DS)"}, + "bandbrosds" => {key => "", label => "Daiggaso! Band Brothers DX (DS)"}, + "bandbrosEUds" => {key => "", label => "Daiggaso! Band Brothers DX (EU) (DS)"}, + "bandits" => {key => "", label => "Bandits: Phoenix Rising"}, + "banditsd" => {key => "", label => "Bandits: Phoenix Rising Demo"}, + "bandw" => {key => "", label => "Black and White"}, + "bang" => {key => "", label => "Bang! Gunship Elite"}, + "bangdemo" => {key => "", label => "Bang! Gunship Elite Demo"}, + "bangler2003" => {key => "", label => "Bass Angler 2003"}, + "batmanaa2ps3" => {key => "", label => "Batman: Arkham Asylum 2 (PS3)"}, + "batmanaa2ps3am" => {key => "", label => "Batman: Arkham Asylum 2 Automatch (PS3)"}, + "battlefield2" => {key => "", label => "Battlefield 2"}, + "battlefield2d" => {key => "", label => "Battlefield 2 Demo"}, + "battlemages" => {key => "", label => "Battle Mages"}, + "battlerealms" => {key => "", label => "Battle Realms"}, + "battlerealmsbBA" => {key => "", label => "Battle Realms Beta"}, + "batwars2wii" => {key => "", label => "Battalion Wars II (Wii)"}, + "bballarenaps3" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bballarenaps3am" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bbangminids" => {key => "", label => "Big Bang Mini (DS)"}, + "bbarenaEUps3" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bbarenaEUps3am" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bbarenaEUps3d" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bbarenaJPNps3" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bbarenaJPNps3am" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bbarenaJPps3d" => {key => "", label => "Supersonic Acrobatic Rocket-Powered BattleCar"}, + "bbladeds" => {key => "", label => "Bay Blade (DS)"}, + "bboarderswii" => {key => "", label => "Battle Boarders (WiiWare)"}, + "bbobblewii" => {key => "", label => "Bubble Bobble Wii (WiiWare)"}, + "bc3k" => {key => "", label => "Battle Cruiser 3000 AD"}, + "bcm" => {key => "", label => "Battlecruiser: Millenium"}, + "bcommander" => {key => "", label => "Star Trek: Bridge Commander", port => 22101}, + "bderlandruspc" => {key => "", label => "Borderlands RUS (PC)"}, + "bderlandruspcam" => {key => "", label => "Borderlands RUS Automatch (PC)"}, + "bderlandruspcd" => {key => "", label => "Borderlands RUS Demo (PC)"}, + "bderlands360am" => {key => "", label => "Borderlands Automatch (360)"}, + "bderlandspc" => {key => "", label => "Borderlands (PC)"}, + "bderlandspcam" => {key => "", label => "Borderlands Automatch (PC)"}, + "bderlandspcd" => {key => "", label => "Borderlands Demo (PC)"}, + "bderlandsps3" => {key => "", label => "Borderlands (PS3)"}, + "bderlandsps3am" => {key => "", label => "Borderlands Automatch (PS3)"}, + "bderlandsps3d" => {key => "", label => "Borderlands Demo (PS3)"}, + "bderlandsx360" => {key => "", label => "Borderlands (360)"}, + "bderlandsx360d" => {key => "", label => "Borderlands Demo (360)"}, + "beaterator" => {key => "", label => "Beaterator (PSP/iphone)"}, + "beateratoram" => {key => "", label => "Beaterator Automatch (PSP/iphone)"}, + "beateratord" => {key => "", label => "Beaterator Demo (PSP/iphone)"}, + "beateratoriph" => {key => "", label => "Beaterator (iPhone)"}, + "beateratoripham" => {key => "", label => "Beaterator Automatch (iPhone)"}, + "beateratoriphd" => {key => "", label => "Beaterator Demo (iPhone)"}, + "beateratorpsp" => {key => "", label => "Beaterator (PSP)"}, + "beateratorpspam" => {key => "", label => "Beaterator Automatch (PSP)"}, + "beateratorpspd" => {key => "", label => "Beaterator Demo (PSP)"}, + "beatrunnerwii" => {key => "", label => "Beat Runner (WiiWare)"}, + "beijing08pc" => {key => "", label => "Beijing 2008 (PC)"}, + "beijing08pcam" => {key => "", label => "Beijing 2008 Automatch (PC)"}, + "beijing08pcd" => {key => "", label => "Beijing 2008 Demo (PC)"}, + "beijing08ps3" => {key => "", label => "Beijing 2008 (PS3)"}, + "beijing08ps3am" => {key => "", label => "Beijing 2008 Automatch (PS3)"}, + "beijing08ps3d" => {key => "", label => "Beijing 2008 Demo (PS3)"}, + "bejeweled2wii" => {key => "", label => "Bejeweled 2 (Wii)"}, + "bejeweled2wiiam" => {key => "", label => "Bejeweled 2 Automatch (Wii)"}, + "ben10bb" => {key => "", label => "Ben 10 Bounty Battle"}, + "ben10bbam" => {key => "", label => "Ben 10 Bounty Battle Automatch"}, + "besieger" => {key => "", label => "Besieger"}, + "bestfriendds" => {key => "", label => "Best Friend - Main Pferd (DS)"}, + "betonsoldier" => {key => "", label => "Bet on Soldier"}, + "betonsoldierd" => {key => "", label => "Bet On Soldier"}, + "bewarewii" => {key => "", label => "Beware (WiiWare)"}, + "bf1942swmac" => {key => "", label => "Battlefield 1942: Secret Weapons of WW2 Mac"}, + "bf2142" => {key => "", label => "Battlefield 2142"}, + "bf2142b" => {key => "", label => "Battlefield 2142 (Beta)"}, + "bf2142d" => {key => "", label => "Battlefield 2142 Demo"}, + "bf2142e" => {key => "", label => "Battlefield 2142 (EAD)"}, + "bf2ddostest" => {key => "", label => "Battlefield 2 DDoS testing"}, + "bf2sttest" => {key => "", label => "Battlefield 2 Snapshot testing"}, + "bfield1942" => {key => "", label => "Battlefield 1942"}, + "bfield1942d" => {key => "", label => "Battlefield 1942 Demo"}, + "bfield1942mac" => {key => "", label => "Battlefield 1942 (Mac)"}, + "bfield1942mac" => {key => "", label => "Battlefield 1942 MAC"}, + "bfield1942ps2" => {key => "", label => "Battlefield Modern Combat (PS2)"}, + "bfield1942ps2am" => {key => "", label => "Battlefield Modern Combat Automatch (PS2)"}, + "bfield1942ps2b" => {key => "", label => "Battlefield Modern Combat (PS2) Beta"}, + "bfield1942rtr" => {key => "", label => "Battlefield 1942: Road to Rome"}, + "bfield1942rtrm" => {key => "", label => "Battlefield 1942 Road to Rome (Mac)"}, + "bfield1942sw" => {key => "", label => "Battlefield 1942: Secret Weapons of WW2"}, + "bfield1942swd" => {key => "", label => "Battlefield 1942: Secret Weapons of WW2 Demo"}, + "bfield1942t" => {key => "", label => "Battlefield 1942 Testing"}, + "bfield2xp1" => {key => "", label => "Battlefield 2: Special Forces"}, + "bfvietnam" => {key => "", label => "Battlefield: Vietnam"}, + "bfvietnamt" => {key => "", label => "Battlefield: Vietnam Testing"}, + "bg2bhaal" => {key => "", label => "Baldurs Gate 2: Throne of Bhaal"}, + "bgate" => {key => "", label => "Baldur's Gate"}, + "bgate2" => {key => "", label => "Balders Gate 2"}, + "bgatetales" => {key => "", label => "Baldurs Gate: Tales of the Sword Coast"}, + "bgeverwii" => {key => "", label => "Best Game Ever (WiiWare)"}, + "biahhJPps3" => {key => "", label => "Brothers In Arms: Hell's Highway (PS3) (JPN)"}, + "biahhJPps3am" => {key => "", label => "Brothers In Arms: Hell's Highway Automatch ("}, + "biahhJPps3d" => {key => "", label => "Brothers In Arms: Hell's Highway Demo (PS3)"}, + "biahhPCHpc" => {key => "", label => "Brothers In Arms: Hell's Highway (PC) (POL/CZ"}, + "biahhPCHpcam" => {key => "", label => "Brothers In Arms: Hell's Highway Automatch ("}, + "biahhPOLps3" => {key => "", label => "Brothers In Arms: Hell's Highway (PS3) (POL)"}, + "biahhPOLps3am" => {key => "", label => "Brothers In Arms: Hell's Highway Automatch ("}, + "biahhPOLps3d" => {key => "", label => "Brothers In Arms: Hell's Highway Demo (PS3)"}, + "biahhPRps3" => {key => "", label => "Brothers In Arms: Hell's Highway (PS3) (RUS)"}, + "biahhPRps3am" => {key => "", label => "Brothers In Arms: Hell's Highway Automatch ("}, + "biahhPRps3d" => {key => "", label => "Brothers In Arms: Hell's Highway Demo (PS3)"}, + "biahhRUSpc" => {key => "", label => "Brothers In Arms: Hell's Highway (PC) (RUS)"}, + "biahhRUSpcam" => {key => "", label => "Brothers In Arms: Hell's Highway Automatch ("}, + "bioshock" => {key => "", label => "Bioshock Demo"}, + "bioshockd" => {key => "", label => "Bioshock"}, + "birhhpc" => {key => "", label => "Brothers In Arms: Hell's Highway (PC)"}, + "birhhpcam" => {key => "", label => "Brothers In Arms: Hell's Highway Automatch (P"}, + "birhhps3" => {key => "", label => "Brothers In Arms: Hell's Highway (PS3)"}, + "birhhps3am" => {key => "", label => "Brothers In Arms: Hell's Highway Clone Automa"}, + "black9pc" => {key => "", label => "Black9 (PC)"}, + "black9ps2" => {key => "", label => "Black9 (PS2)"}, + "blade" => {key => "", label => "Blade"}, + "blade" => {key => "", label => "Blade of Darkness"}, + "blademasters" => {key => "", label => "Legend of the Blademasters"}, + "blahblahtest" => {key => "", label => "Just another test for masterid"}, + "blahmasterid" => {key => "", label => "Just another test for masterid"}, + "blahtest" => {key => "", label => "Just another test for masterid"}, + "blandsjpnps3" => {key => "", label => "Borderlands JPN (PS3)"}, + "blandsjpnps3am" => {key => "", label => "Borderlands JPN Automatch (PS3)"}, + "blandsonlive" => {key => "", label => "Borderlands ONLIVE"}, + "blandsonliveam" => {key => "", label => "Borderlands ONLIVE Automatch"}, + "bldragondds" => {key => "", label => "Blue Dragon D (DS)"}, + "bldragonddsam" => {key => "", label => "Blue Dragon D Automatch (DS)"}, + "bldragondfdsam" => {key => "", label => "Blue Dragon F Automatch (DS)"}, + "bldragonds" => {key => "", label => "Blue Dragon (DS)"}, + "bldragoneuds" => {key => "", label => "Blue Dragon EU (DS)"}, + "bldragoneudsam" => {key => "", label => "Blue Dragon EU Automatch (DS)"}, + "bldragonfds" => {key => "", label => "Blue Dragon F (DS)"}, + "bldragonfdsam" => {key => "", label => "Blue Dragon F Automatch (DS)"}, + "bldragonids" => {key => "", label => "Blue Dragon I (DS)"}, + "bldragonidsam" => {key => "", label => "Blue Dragon I Automatch (DS)"}, + "bldragonNAds" => {key => "", label => "Blue Dragon - Awakened Shadow"}, + "bldragonNAdsam" => {key => "", label => "Blue Dragon - Awakened Shadow Automatch"}, + "bldragonsds" => {key => "", label => "Blue Dragon S (DS)"}, + "bldragonsdsam" => {key => "", label => "Blue Dragon S Automatch (DS)"}, + "bleach1EUds" => {key => "", label => "Bleach DS (EU) (DS)"}, + "bleach1USds" => {key => "", label => "Bleach DS (US) (DS)"}, + "bleach2ds" => {key => "", label => "Bleach DS 2: Requiem in the black robe (DS)"}, + "bleach2EUds" => {key => "", label => "Bleach DS 2: Requiem in the black robe (EU) ("}, + "bleach2USds" => {key => "", label => "Bleach DS 2 (US) (DS)"}, + "bleach2wii" => {key => "", label => "BLEACH Wii2 (Wii)"}, + "bleachds" => {key => "", label => "Bleach (DS)"}, + "blic2007" => {key => "", label => "Brian Lara International Cricket 2007"}, + "blindpointpc" => {key => "", label => "Blind Point (PC)"}, + "blindpointpcam" => {key => "", label => "Blind Point Automatch (PC)"}, + "blindpointpcd" => {key => "", label => "Blind Point Demo (PC)"}, + "blitz08ps3" => {key => "", label => "Blitz: The League 08 (PS3)"}, + "blitz08ps3am" => {key => "", label => "Blitz: The League 08 Automatch (PS3)"}, + "blitz08ps3d" => {key => "", label => "Blitz: The League 08 Demo (PS3)"}, + "blitz2004ps2" => {key => "", label => "NFL Blitz 2004 (PS2)"}, + "blitz2004ps2b" => {key => "", label => "NFL Blitz Pro 2004 Beta (PS2)"}, + "blitz2004ps2e" => {key => "", label => "NFL Blitz Pro 2004 E3 (PS2)"}, + "blitz2005ps2" => {key => "", label => "Blitz: The League 2005"}, + "blitzkrieg" => {key => "", label => "Blitzkrieg"}, + "blitzkriegrt" => {key => "", label => "Blitzkrieg: Rolling Thunder"}, + "blkhwkdnps2" => {key => "", label => "Delta Force: Black Hawk Down (PS2)"}, + "blkhwkdnps2" => {key => "", label => "Delta Force: Black Hawk Down PS2"}, + "blkuzushiwii" => {key => "", label => "THE Block Kuzushi - With the Stage Creation f"}, + "bllrs2004pal" => {key => "", label => "NBA Ballers PAL (PS2)"}, + "bllrs2004ps2" => {key => "", label => "NBA Ballers (PS2)"}, + "bllrs2004ps2d" => {key => "", label => "NBA Ballers Demo (PS2)"}, + "bllrs2005ps2" => {key => "", label => "NBA Ballers 2005 (PS2)"}, + "bllrs2005ps2d" => {key => "", label => "NBA Ballers 2005 Demo (PS2)"}, + "blockade" => {key => "", label => "Operation Blockade"}, + "blockoutwii" => {key => "", label => "Blockout (Wii)"}, + "blockrushwii" => {key => "", label => "Blockrush! (WiiWare)"}, + "blood2" => {key => "", label => "Blood II"}, + "bluemarspc" => {key => "", label => "Blue Mars (PC)"}, + "bluemarspcam" => {key => "", label => "Blue Mars Automatch (PC)"}, + "blurds" => {key => "", label => "Blur (DS)"}, + "blurdsam" => {key => "", label => "Blur Automatch (DS)"}, + "blzrdriverds" => {key => "", label => "Blazer Drive (DS)"}, + "bmbermanexdsi" => {key => "", label => "Bomberman Express (DSiWare)"}, + "boardgamesds" => {key => "", label => "The Best of Board Games (DS)"}, + "bodarkness" => {key => "", label => "Blade of Darkness"}, + "boggle" => {key => "", label => "Boggle"}, + "bokujomonods" => {key => "", label => "Bokujo Monogatari DS2: Wish-ComeTrue Island ("}, + "bokujyods" => {key => "", label => "Bokujyo Monogatari Himawari Shoto wa Oosawagi"}, + "bokujyomonds" => {key => "", label => "Bokujyo Monogatari Youkoso! Kaze no Bazzare ("}, + "bokutwinvilds" => {key => "", label => "Bokujyo Monogatari Twin Village (DS)"}, + "bomberfunt" => {key => "", label => "BomberFUN Tournament"}, + "bomberman20ds" => {key => "", label => "Bomberman 2.0 (DS)"}, + "bomberman2wii" => {key => "", label => "Bomberman 2 (Wii)"}, + "bomberman2wiid" => {key => "", label => "Bomberman 2 Demo (Wii)"}, + "bombermanslds" => {key => "", label => "Bomberman Story/Land DS"}, + "bombls2ds" => {key => "", label => "Touch! Bomberman Land 2 / Bomberman DS 2 (DS)"}, + "bonkwii" => {key => "", label => "Bonk (Wii)"}, + "botbattles" => {key => "", label => "Tex Atomics Big Bot Battles"}, + "bots" => {key => "", label => "Bots (Lith)"}, + "boyvgirlcwii" => {key => "", label => "Boys vs Girls Summer Camp (Wii)"}, + "breed" => {key => "", label => "Breed"}, + "breedd" => {key => "", label => "Breed Demo"}, + "bridgebaron14" => {key => "", label => "Bridge Baron"}, + "brigades" => {key => "", label => "Gamespy Brigades"}, + "bsmidway" => {key => "", label => "Battlestations Midway Demo"}, + "bsmidwaypc" => {key => "", label => "Battlestations Midway PC"}, + "bsmidwaypcam" => {key => "", label => "Battlestations Midway PC (automatch)"}, + "bsmidwayps2" => {key => "", label => "Battlestations Midway PS2"}, + "bsmidwayps2am" => {key => "", label => "Battlestations Midway PS2 (automatch)"}, + "bspiritsds" => {key => "", label => "Battle Spirits (DS)"}, + "bspiritsdsam" => {key => "", label => "Battle Spirits Automatch (DS)"}, + "bstormps3" => {key => "", label => "BulletStorm (PS3)"}, + "bstormps3am" => {key => "", label => "BulletStorm Automatch (PS3)"}, + "bstrikeotspc" => {key => "", label => "Battlestrike: Operation Thunderstorm (PC)"}, + "bstrikeotspcam" => {key => "", label => "Battlestrike: Operation Thunderstorm Automat"}, + "bstrikeotspcd" => {key => "", label => "Battlestrike: Operation Thunderstorm Demo (P"}, + "buccaneer" => {key => "", label => "Buccaneer The Pursuit of Infamy"}, + "buccaneerpc" => {key => "", label => "Buccaneer (PC)"}, + "buccaneerpcam" => {key => "", label => "Buccaneer Automatch (PC)"}, + "buccaneerpcd" => {key => "", label => "Buccaneer Demo (PC)"}, + "buckmaster" => {key => "", label => "Buckmaster Deer Hunting"}, + "buckshotwii" => {key => "", label => "Buck Shot (Wii)"}, + "buckshotwiiam" => {key => "", label => "Buck Shot Automatch (Wii)"}, + "bumperwars" => {key => "", label => "Bumper Wars!"}, + "bz2" => {key => "", label => "Battlezone 2"}, + "c5" => {key => "", label => "Conflict: Denied Ops"}, + "cadZ2JPwii" => {key => "", label => "Caduceus Z2 (Wii)"}, + "callofduty" => {key => "", label => "Call of Duty"}, + "callofduty2" => {key => "", label => "Call of Duty 2"}, + "callofduty4" => {key => "", label => "Call of Duty 4: Modern Warfare"}, + "callofduty4d2d" => {key => "", label => "Call of Duty 4: Modern Warfare"}, + "callofduty4d2d" => {key => "", label => "Call of Duty 4: Modern Warfare (D2D)"}, + "callofduty5" => {key => "", label => "Call of Duty 5"}, + "callofdutyps2" => {key => "", label => "Call of Duty (PS2)"}, + "callofdutyps2" => {key => "", label => "Call of Duty: Finest Hour PS2"}, + "callofdutyps2d" => {key => "", label => "Call of Duty (PS2) Sony Beta"}, + "callofdutyuo" => {key => "", label => "Call of Duty: United Offensive"}, + "capitalism2" => {key => "", label => "Capitalism 2"}, + "captsubasads" => {key => "", label => "Captain tsubasa (DS)"}, + "cardgamesds" => {key => "", label => "The Best of Card Games (DS)"}, + "cardherods" => {key => "", label => "Card Hero DSi (DS)"}, + "cardherodsam" => {key => "", label => "Card Hero DSi Automatch (DS)"}, + "cardheroesds" => {key => "", label => "Card Heroes (DS)"}, + "cardiowrk2wii" => {key => "", label => "Cardio Workout 2 (Wii)"}, + "carnivalkwii" => {key => "", label => "Carnival King (WiiWare)"}, + "carnivores3" => {key => "", label => "Carnivores 3"}, + "casinotourwii" => {key => "", label => "Casino Tournament (Wii)"}, + "casinotourwiiam" => {key => "", label => "Casino Tournament Automatch (Wii)"}, + "castles" => {key => "", label => "Castles and Catapluts"}, + "castlestrike" => {key => "", label => "Castle Strike"}, + "cavestorywii" => {key => "", label => "Cave Story (WiiWare)"}, + "cb2ds" => {key => "", label => "CB2 (DS)"}, + "cc3arenapc" => {key => "", label => "Command & Conquer: Arena"}, + "cc3arenapcam" => {key => "", label => "Command & Conquer: Arena Automatch"}, + "cc3arenapcd" => {key => "", label => "Command & Conquer: Arena Demo"}, + "cc3dev" => {key => "", label => "Command & Conquer 3 Dev Environment"}, + "cc3devam" => {key => "", label => "Command & Conquer 3 Dev Environment Automatch"}, + "cc3kw" => {key => "", label => "Command & Conquer 3 Kanes Wrath"}, + "cc3kw" => {key => "", label => "Command and Conquer 3 Kanes Wrath"}, + "cc3kwcd" => {key => "", label => "Command and Conquer 3 Kanes Wrath CD Key Auth"}, + "cc3kwcdam" => {key => "", label => "Command and Conquer 3 Kanes Wrath CD Key Auth"}, + "cc3kwmb" => {key => "", label => "Command and Conquer 3 Kanes Wrath Match Broad"}, + "cc3tibwars" => {key => "", label => "Command & Conquer 3: Tiberium Wars"}, + "cc3tibwarsam" => {key => "", label => "Command & Conquer 3: Tiberium Wars Automatch"}, + "cc3tibwarscd" => {key => "", label => "Command & Conquer 3: Tiberium Wars CD Key Aut"}, + "cc3tibwarscdam" => {key => "", label => "Command & Conquer 3: Tiberium Wars CD Key Aut"}, + "cc3tibwarsd" => {key => "", label => "Command & Conquer 3 Demo"}, + "cc3tibwarsmb" => {key => "", label => "Command & Conquer 3: Tiberium Wars Match Broa"}, + "cc3xp1" => {key => "", label => "Command & Conquer 3: Expansion Pack 1"}, + "cc3xp1" => {key => "", label => "Command & Conquer 3: Kanes Wrath"}, + "cc3xp1am" => {key => "", label => "Command & Conquer 3: Expansion Pack 1 Automat"}, + "cc3xp1mb" => {key => "", label => "Command & Conquer 3: Kane's Wrath Match Broad"}, + "ccgenerals" => {key => "", label => "Command & Conquer Generals"}, + "ccgenerals" => {key => "", label => "Command and Conquer Generals"}, + "ccgeneralsb" => {key => "", label => "Command and Conquer Generals Closed Beta"}, + "ccgenzh" => {key => "", label => "Command & Conquer Generals Zero Hour"}, + "ccgenzh" => {key => "", label => "Command and Conquer Generals: Zero Hour"}, + "ccombat3" => {key => "", label => "Close Combat 3"}, + "ccombat3" => {key => "", label => "Close Combat III: The Russian Front"}, + "ccrenegade" => {key => "", label => "Command and Conquer: Renegade"}, + "ccrenegadedemo" => {key => "", label => "Command and Conquer: Renegade Demo"}, + "celebdm" => {key => "", label => "Celebrity Deathmatch"}, + "cellfactorpc" => {key => "", label => "CellFactor: Ignition (PC)"}, + "cellfactorpcam" => {key => "", label => "CellFactor: Ignition Automatch (PSN) Clone"}, + "cellfactorpsn" => {key => "", label => "CellFactor: Ignition (PSN)"}, + "cellfactorpsnam" => {key => "", label => "CellFactor: Ignition Automatch (PSN)"}, + "cellfacttwpc" => {key => "", label => "Cell Factor:TW (PC)"}, + "cellfacttwpcam" => {key => "", label => "Cell Factor:TW Automatch (PC)"}, + "celtickings" => {key => "", label => "Druid King"}, + "celtickingsdemo" => {key => "", label => "Celtic Kings Demo"}, + "celtickingspu" => {key => "", label => "Nemesis of the Roman Empire"}, + "cfs" => {key => "", label => "Combat Flight Simulator"}, + "cfs2" => {key => "", label => "Combat Flight Simulator 2"}, + "cfs2" => {key => "", label => "MS Combat Flight Simulator 2"}, + "champgamesps3" => {key => "", label => "High Stakes on the Vegas Strip: Poker Edition"}, + "charcollectds" => {key => "", label => "Character Collection! DS (DS)"}, + "chaser" => {key => "", label => "Chaser"}, + "chaserd" => {key => "", label => "Chaser Demo"}, + "chasspart5" => {key => "", label => "ChessPartner 5"}, + "chat" => {key => "", label => "Chat Service"}, + "checkers" => {key => "", label => "Hasbro's Checkers"}, + "cheetah3ds" => {key => "", label => "The Cheetah Girls 3 (DS)"}, + "chesk" => {key => "", label => "Chesk"}, + "chess" => {key => "", label => "Hasbro's Chess"}, + "chesschalwii" => {key => "", label => "Chess Challenge! (WiiWare)"}, + "chesschalwiiam" => {key => "", label => "Chess Challenge! Automatch (WiiWare)"}, + "chessrevmac" => {key => "", label => "chess revolution mac"}, + "chessrevmacam" => {key => "", label => "chess revolution mac Automatch"}, + "chessrevpc" => {key => "", label => "chess revolution pc"}, + "chessrevpcam" => {key => "", label => "chess revolution pc Automatch"}, + "chesswii" => {key => "", label => "Wii Chess (Wii)"}, + "chessworlds" => {key => "", label => "Chess Worlds"}, + "cheuchre" => {key => "", label => "Championship Euchre"}, + "chhearts" => {key => "", label => "Championship Hearts"}, + "chocmbeuds" => {key => "", label => "Chocobo & Magic Book (EU) (DS)"}, + "chocobombds" => {key => "", label => "Chocobo & Magic Book (DS)"}, + "chocotokids" => {key => "", label => "Shido to Chocobo no Fushigina Dungeon Tokiwas"}, + "chocotokiwii" => {key => "", label => "Chocobo no Fushigina Dungeon: Toki-Wasure no"}, + "chspades" => {key => "", label => "Championship Spades"}, + "cityofheroes" => {key => "", label => "City of Heroes"}, + "cityofvl" => {key => "", label => "City of Villains"}, + "civ2gold" => {key => "", label => "Civilization 2: Gold"}, + "civ2gold" => {key => "", label => "Civilization II Gold"}, + "civ2tot" => {key => "", label => "Civ2TOTime"}, + "civ2tot" => {key => "", label => "Civilization II: Test of Time"}, + "civ3con" => {key => "", label => "Civilization III: Conquests"}, + "civ3conb" => {key => "", label => "Civilization III: Conquests Beta"}, + "civ3ptw" => {key => "", label => "Civilization III: Play Th"}, + "civ4" => {key => "", label => "Civilization IV"}, + "civ4am" => {key => "", label => "Civilization IV Automatch"}, + "civ4b" => {key => "", label => "Civilization 4 Beta"}, + "civ4bts" => {key => "", label => "Civilization IV: Beyond the Sword"}, + "civ4btsam" => {key => "", label => "Civilization IV: Beyond the Sword Automatch"}, + "civ4btsjp" => {key => "", label => "Civilization IV: Beyond the Sword (Japanese)"}, + "civ4btsjpam" => {key => "", label => "Civilization IV: Beyond the Sword Automatch"}, + "civ4ch" => {key => "", label => "Civiliation IV (Chinese)"}, + "civ4cham" => {key => "", label => "Civiliation IV Automatch (Chinese)"}, + "civ4coljp" => {key => "", label => "Sid Meier's Civilization 4: Colonization (PC"}, + "civ4coljpam" => {key => "", label => "Sid Meier's Civilization 4: Colonization Aut"}, + "civ4colpc" => {key => "", label => "Sid Meier's Civilization 4: Colonization (PC/"}, + "civ4colpcam" => {key => "", label => "Sid Meier's Civilization 4: Colonization Aut"}, + "civ4colpcd" => {key => "", label => "Sid Meier's Civilization 4: Colonization Dem"}, + "civ4jp" => {key => "", label => "Civiliation IV (Japanese)"}, + "civ4jpam" => {key => "", label => "Civiliation IV Automatch (Japanese)"}, + "civ4mac" => {key => "", label => "Civilization IV (MAC)"}, + "civ4macam" => {key => "", label => "Civilization IV Automatch (MAC)"}, + "civ4ru" => {key => "", label => "Civiliation IV (Russian)"}, + "civ4ruam" => {key => "", label => "Civiliation IV Automatch (Russian)"}, + "civ4wrld" => {key => "", label => "Civilization IV: Warlords"}, + "civ4wrldam" => {key => "", label => "Civilization IV: Warlords Automatch"}, + "civ4wrldcn" => {key => "", label => "Civilization IV: Warlords (Chinese)"}, + "civ4wrldcnam" => {key => "", label => "Civilization IV: Warlords Automatch (Chinese"}, + "civ4wrldjp" => {key => "", label => "Civilization IV: Warlords (Japan)"}, + "civ4wrldjpam" => {key => "", label => "Civilization IV: Warlords Automatch (Japan)"}, + "civ4wrldmac" => {key => "", label => "Civilization IV: Warlords (MAC)"}, + "civ4wrldmacam" => {key => "", label => "Civilization IV: Warlords Automatch (MAC)"}, + "civ4xp3" => {key => "", label => "Civilization IV: 3rd Expansion"}, + "civ4xp3am" => {key => "", label => "Civilization IV: 3rd Expansion Automatch"}, + "civ4xp3d" => {key => "", label => "Civilization IV: 3rd Expansion Demo"}, + "civ5" => {key => "", label => "Civilization 5"}, + "civconps3" => {key => "", label => "Civilization Revolution (PS3)"}, + "civconps3am" => {key => "", label => "Civ Console Automatch (PS3)"}, + "civconps3d" => {key => "", label => "Civilization Revolution Demo (PS3)"}, + "civrevasiaps3" => {key => "", label => "Civilization Revolution (Asia) (PS3)"}, + "civrevasips3d" => {key => "", label => "Civilization Revolution Demo (Asia) (PS3)"}, + "civrevoasiads" => {key => "", label => "Sid Meier's Civilization Revolution (DS, Asia"}, + "civrevods" => {key => "", label => "Sid Meier's Civilization Revolution (DS)"}, + "claw" => {key => "", label => "Claw"}, + "close4bb" => {key => "", label => "Close Combat IV: Battle of the Bulge"}, + "close4bb" => {key => "", label => "CloseCombat4BB"}, + "close5" => {key => "", label => "Close Combat 5"}, + "close5dmo" => {key => "", label => "Close Combat 5 Demo"}, + "close5dmo" => {key => "", label => "Close Combat 5: Invasion Normandy Demo"}, + "closecomftf" => {key => "", label => "Close Combat: First to Fight"}, + "closecomftfmac" => {key => "", label => "Close Combat: First to Fight Mac"}, + "closecomftfmac" => {key => "", label => "Close Combat: First to Fight MAC"}, + "clubgameKORds" => {key => "", label => "Clubhouse Games (KOR) (DS)"}, + "CM_Testing" => {key => "", label => "Content Moderation Test Game"}, + "cmanager" => {key => "", label => "Cycling Manager"}, + "cmanager3" => {key => "", label => "Cycling Manager 3"}, + "cmmwcpoker" => {key => "", label => "Chris Moneymaker's World Championship Poker"}, + "cmmwcpoker" => {key => "", label => "Chris Moneymakers World Championship Poker"}, + "cmr4pc" => {key => "", label => "Colin McRae Rally 4 (PC)"}, + "cmr4pcd" => {key => "", label => "Colin McRae Rally 4 Demo (PC)"}, + "cmr5pc" => {key => "", label => "Colin McRae Rally 5 PC"}, + "cmr5pcd" => {key => "", label => "Colin McRae Rally 5 PC demo"}, + "cmr5ps2" => {key => "", label => "Colin McRae Rally 5 PS2"}, + "CMwrldkitwii" => {key => "", label => "Cooking Mama: World Kitchen (Wii)"}, + "cneagle" => {key => "", label => "Codename: Eagle"}, + "cnoutbreak" => {key => "", label => "Codename: Outbreak"}, + "cnoutbreakd" => {key => "", label => "Codename: Outbreak Demo"}, + "cnpanzers" => {key => "", label => "Codename Panzers"}, + "cnpanzers2" => {key => "", label => "Codename Panzers Phase 2"}, + "cnpanzers2cw" => {key => "", label => "Codename Panzers 2: Cold Wars (PC)"}, + "cnpanzers2cwam" => {key => "", label => "Codename Panzers 2: Cold Wars Automatch"}, + "cnpanzers2cwb" => {key => "", label => "Codename Panzers 2: Cold Wars BETA (PC)"}, + "cnpanzers2cwbam" => {key => "", label => "Codename Panzers 2: Cold Wars BETA Automatch"}, + "cnpanzers2cwd" => {key => "", label => "Codename Panzers 2: Cold Wars Demo"}, + "cod5victoryds" => {key => "", label => "Call of Duty 5: Victory (DS)"}, + "cod5wii" => {key => "", label => "Call of Duty 5 (Wii)"}, + "cod7ds" => {key => "", label => "Call of Duty 7 (DS)"}, + "cod7dsam" => {key => "", label => "Call of Duty 7 Automatch (DS)"}, + "codbigredps2" => {key => "", label => "Call of Duty 2: Big Red One (PS2)"}, + "codblackopspc" => {key => "", label => "Call of Duty: Black Ops (PC)"}, + "codblackopspcam" => {key => "", label => "Call of Duty: Black Ops Automatch (PC)"}, + "codedarmspsp" => {key => "", label => "Coded Arms (PSP)"}, + "codedarmspspam" => {key => "", label => "Coded Arms Automatch (PSP)"}, + "codmw2ds" => {key => "", label => "Call of Duty: Modern Warfare 2 (DS)"}, + "codwaw" => {key => "", label => "Call of Duty: World at War"}, + "codwawbeta" => {key => "", label => "Call of Duty: World at War Beta"}, + "coh2pc" => {key => "", label => "Code of Honor 2 (PC)"}, + "coh2pcam" => {key => "", label => "Code of Honor 2 Automatch (PC)"}, + "cohof" => {key => "", label => "Company of Heroes: Opposing Fronts"}, + "cohofbeta" => {key => "", label => "Company of Heroes: Opposing Fronts MP Beta"}, + "colcourseds" => {key => "", label => "Collision Course (DS)"}, + "combat" => {key => "", label => "Combat"}, + "combatzonepc" => {key => "", label => "Combat Zone - Special Forces (PC)"}, + "combatzonepcam" => {key => "", label => "Combat Zone - Special Forces Automatch (PC)"}, + "combatzonepcd" => {key => "", label => "Combat Zone - Special Forces Demo (PC)"}, + "commandos2" => {key => "", label => "Commandos 2"}, + "commandos3" => {key => "", label => "Commandos 3"}, + "commandpc" => {key => "", label => "Commanders: Attack!"}, + "commandpcam" => {key => "", label => "Commanders: Attack! Automatch"}, + "comrade" => {key => "", label => "Comrade"}, + "conan" => {key => "", label => "Conan: The Dark Axe"}, + "condemned2bs" => {key => "", label => "Condemned 2: Bloodshot (PS3)"}, + "condemned2bsam" => {key => "", label => "Condemned 2: Bloodshot Automatch"}, + "condemned2bsd" => {key => "", label => "Condemned 2: Bloodshot Demo (PS3)"}, + "conduit2wii" => {key => "", label => "The Conduit 2 (Wii)"}, + "conduitwii" => {key => "", label => "The Conduit (Wii)"}, + "conflictsopc" => {key => "", label => "Conflict: Global Storm"}, + "conflictsopc" => {key => "", label => "Conflict: Special Ops"}, + "conflictsopc" => {key => "", label => "Conflict: Special Ops PC"}, + "conflictsops2" => {key => "", label => "Conflict: Global Storm PS2"}, + "conflictsops2" => {key => "", label => "Conflict: Special Ops PS2"}, + "conflictzone" => {key => "", label => "Conflict Zone"}, + "connect4" => {key => "", label => "Hasbro's Connect 4"}, + "conquestfw" => {key => "", label => "Conquest: Frontier Wars"}, + "conquestfwd" => {key => "", label => "Conquest: Frontier Wars D"}, + "contactds" => {key => "", label => "Contact JPN (DS)"}, + "contactusds" => {key => "", label => "Contact US (DS)"}, + "contractjack" => {key => "", label => "Contract Jack"}, + "contractjackd" => {key => "", label => "Contract Jack Demo"}, + "contractjackpr" => {key => "", label => "Contract Jack PR Demo"}, + "contrads" => {key => "", label => "Contra DS (DS)"}, + "cossacks" => {key => "", label => "Cossacks: European Wars"}, + "coteagles" => {key => "", label => "War Front: Turning Point"}, + "coteaglesam" => {key => "", label => "War Front: Turning Point Automatch"}, + "coteaglessp" => {key => "", label => "War Front: Turning Point (singleplayer)"}, + "cpenguin2ds" => {key => "", label => "Club Penguin 2 (DS)"}, + "cpenguin2wii" => {key => "", label => "Club Penguin 2 (Wii)"}, + "crashnburnps2" => {key => "", label => "Crash 'n' Burn PS2"}, + "crashnburnps2" => {key => "", label => "Crash N Burn (PS2)"}, + "crashnburnps2b" => {key => "", label => "Crash N Burn Sony Beta (PS2)"}, + "crashnitro" => {key => "", label => "Crash Nitro Carts"}, + "cribbage" => {key => "", label => "Hasbro's Cribbage"}, + "cricket2007" => {key => "", label => "Brian Lara International Cricket 2007"}, + "crimson" => {key => "", label => "Crimson Skies"}, + "crmgdntdr2k" => {key => "", label => "Carmageddon TDR 2000"}, + "crttestdead" => {key => "", label => "CRT - TEST"}, + "cruciform" => {key => "", label => "Genesis Rising: The Universal Crusade"}, + "cruciformam" => {key => "", label => "Genesis Rising: The Universal Crusade Automat"}, + "crysis" => {key => "", label => "Crysis (PC)"}, + "crysis2pc" => {key => "", label => "Crysis 2 (PC)"}, + "crysis2pcam" => {key => "", label => "Crysis 2 Automatch (PC)"}, + "crysis2pcd" => {key => "", label => "Crysis 2 Demo (PC)"}, + "crysis2ps3" => {key => "", label => "Crysis 2 (PS3)"}, + "crysis2ps3am" => {key => "", label => "Crysis 2 Automatch (PS3)"}, + "crysis2ps3d" => {key => "", label => "Crysis 2 Demo (PS3)"}, + "crysis2x360" => {key => "", label => "Crysis 2 (Xbox 360)"}, + "crysis2x360am" => {key => "", label => "Crysis 2 Automatch (Xbox 360)"}, + "crysis2x360d" => {key => "", label => "Crysis 2 Demo (Xbox 360)"}, + "crysisb" => {key => "", label => "Crysis Beta"}, + "crysisd" => {key => "", label => "Crysis Demo"}, + "crysisspd" => {key => "", label => "Crysis SP Demo"}, + "crysiswars" => {key => "", label => "Crysis Wars"}, + "crystalw1wii" => {key => "", label => "Crystal - Defender W1 (WiiWare)"}, + "crystalw2wii" => {key => "", label => "Crystal - Defender W2 (WiiWare)"}, + "cskies" => {key => "", label => "Crimson Skies"}, + "cskiesdemo" => {key => "", label => "Crimson Skies Trial"}, + "cstaisends" => {key => "", label => "Chotto Sujin Taisen (DS)"}, + "cstrike" => {key => "", label => "Counter-Strike"}, + "cueballworld" => {key => "", label => "Jimmy White Cueball World"}, + "cueballworldd" => {key => "", label => "Cueball World Demo"}, + "cuesportswii" => {key => "", label => "Cue Sports (WiiWare)"}, + "culdceptds" => {key => "", label => "Culdcept DS (DS)"}, + "cultures" => {key => "", label => "Cultures"}, + "cusrobousds" => {key => "", label => "Gekitoh! Custom Robo (DS) (US)"}, + "custoboeuds" => {key => "", label => "Custom Robo (EU) (DS)"}, + "Customrobods" => {key => "", label => "Custom Robo DS (DS)"}, + "cvania08ds" => {key => "", label => "Castlevania 2008 (DS)"}, + "CVjudgmentwii" => {key => "", label => "Castlevania: Judgment (Wii)"}, + "DaggerdalePC" => {key => "", label => "Daggerdale PC"}, + "DaggerdalePCam" => {key => "", label => "Daggerdale PC Automatch"}, + "DaggerdalePS3" => {key => "", label => "Daggerdale PS3"}, + "DaggerdalePS3am" => {key => "", label => "Daggerdale PS3 Automatch"}, + "daikatana" => {key => "", label => "Daikatana"}, + "damnationpc" => {key => "", label => "DamNation (PC)"}, + "damnationpcam" => {key => "", label => "DamNation Automatch (PC)"}, + "damnationpcd" => {key => "", label => "DamNation Demo (PC)"}, + "damnationps3" => {key => "", label => "DamNation (PS3)"}, + "damnationps3am" => {key => "", label => "DamNation Automatch (PS3)"}, + "daoc" => {key => "", label => "Dark Age of Camelot"}, + "darkheaven" => {key => "", label => "DarkHeaven"}, + "darkplanet" => {key => "", label => "DarkPlanet"}, + "darkreign2" => {key => "", label => "Dark Reign 2"}, + "darkstone" => {key => "", label => "Darkstone"}, + "darkstone" => {key => "", label => "DarkStone"}, + "dartspartywii" => {key => "", label => "Darts Wii Party (Wii)"}, + "dawnheroesds" => {key => "", label => "Dawn of Heroes (DS)"}, + "dday" => {key => "", label => "D-Day"}, + "ddayd" => {key => "", label => "D-Day Demo"}, + "ddayxp1" => {key => "", label => "D-Day: 1944 Battle of the Bulge"}, + "ddozenpt" => {key => "", label => "Deadly Dozen: Pacific Theater"}, + "ddozenptd" => {key => "", label => "Deadly Dozen Pacific Theater Demo"}, + "DeathtoSpies" => {key => "", label => "Death to Spies"}, + "decasport2wii" => {key => "", label => "Deca Sports 2 (Wii)"}, + "decasport3wii" => {key => "", label => "Deca Sports 3 (Wii)"}, + "Decathletesds" => {key => "", label => "Decathletes (DS)"}, + "decsprt3euwii" => {key => "", label => "Deca Sports 3 (Europe) (Wii)"}, + "decsprt3nawii" => {key => "", label => "Deca Sports 3 (NA) (Wii)"}, + "demoderby" => {key => "", label => "Demolition Derby & Figure"}, + "demonforgepc" => {key => "", label => "Demon's Forge (PC)"}, + "demonforgepcam" => {key => "", label => "Demon's Forge Automatch (PC)"}, + "demonforgepcd" => {key => "", label => "Demon's Forge Demo (PC)"}, + "demonforgeps3" => {key => "", label => "Demon's Forge (PS3)"}, + "demonforgeps3am" => {key => "", label => "Demon's Forge Automatch (PS3)"}, + "demonforgeps3d" => {key => "", label => "Demon's Forge Demo (PS3)"}, + "demonstar" => {key => "", label => "Demonstar"}, + "dental2ds" => {key => "", label => "dental2 (DS)"}, + "dental2dsam" => {key => "", label => "dental2 Automatch (DS)"}, + "derbydogwii" => {key => "", label => "Derby Dog (WiiWare)"}, + "descent3" => {key => "", label => "Descent 3"}, + "destruction" => {key => "", label => "Destruction 101 (Namco Bandai)"}, + "destructionam" => {key => "", label => "Destruction 101 Automatch"}, + "deusex" => {key => "", label => "Deus Ex"}, + "devastation" => {key => "", label => "Devastation"}, + "devastationd" => {key => "", label => "Devastation Demo"}, + "dexplorerds" => {key => "", label => "Dungeon Explorer (DS)"}, + "dfriendsEUds" => {key => "", label => "Disney Friends DS (EU)"}, + "dh2003" => {key => "", label => "Deerhunter 2003"}, + "dh2004" => {key => "", label => "Deer Hunter 2004"}, + "dh2004d" => {key => "", label => "Deer Hunter 2004 Demo"}, + "dh2005" => {key => "", label => "Deer Hunter 2005"}, + "dh2005d" => {key => "", label => "Deer Hunter 2005 demo"}, + "dh3" => {key => "", label => "Deer Hunter 3"}, + "dh4" => {key => "", label => "Deer Hunter 4"}, + "dh5" => {key => "", label => "Deer Hunter 5"}, + "dhunterps2dis" => {key => "", label => "Deer Hunter (PS2)"}, + "diablo" => {key => "", label => "Diablo"}, + "diablo2" => {key => "", label => "Diablo 2"}, + "digichampds" => {key => "", label => "Digimon Championship (DS)"}, + "digichampKRds" => {key => "", label => "Digimon Championship (KOR) (DS)"}, + "digichampUSds" => {key => "", label => "Digimon Championship (US) (DS)"}, + "Digidwndskds" => {key => "", label => "Digimon World Dawn/Dusk (DS)"}, + "digimonsleds" => {key => "", label => "Digimon Story Lost Evolution (DS)"}, + "digistoryds" => {key => "", label => "Digimon Story (DS)"}, + "digistorydsam" => {key => "", label => "Digimon Story Automatch (DS)"}, + "digisunmoonds" => {key => "", label => "Digimon Story Sunburst/Moonlight (DS)"}, + "digiwrldds" => {key => "", label => "Digimon World DS (DS)"}, + "dimensitypc" => {key => "", label => "Dimensity (PC)"}, + "dimensitypcam" => {key => "", label => "Dimensity Automatch (PC)"}, + "dimensitypcd" => {key => "", label => "Dimensity Demo (PC)"}, + "dinerdashwii" => {key => "", label => "Diner Dash (WiiWare)"}, + "dinokingEUds" => {key => "", label => "Ancient Ruler Dinosaur King (EU) (DS)"}, + "dinokingUSds" => {key => "", label => "Dinosaur King (US) (DS)"}, + "diplomacy" => {key => "", label => "Diplomacy"}, + "dirt2onlive" => {key => "", label => "DIRT 2 (OnLive)"}, + "dirt2onliveam" => {key => "", label => "DIRT 2 Automatch (OnLive)"}, + "dirtdemo" => {key => "", label => "DiRT Demo"}, + "disciples" => {key => "", label => "Disciples"}, + "disciples" => {key => "", label => "Disciples: Sacred Lands"}, + "disciples2" => {key => "", label => "Disciples 2"}, + "disfriendsds" => {key => "", label => "Disney Friends DS (DS)"}, + "disneydev" => {key => "", label => "Disney Development/Testing"}, + "disneydevam" => {key => "", label => "Disney Development/Testing Automatch"}, + "djangosabds" => {key => "", label => "Bokura No Taiyou: Django & Sabata (DS)"}, + "dkracingds" => {key => "", label => "Diddy Kong Racing DS (DS)"}, + "dmania" => {key => "", label => "DMania"}, + "dmhand" => {key => "", label => "Dead Man Hand"}, + "dod" => {key => "", label => "Day of Defeat"}, + "dogalo" => {key => "", label => "MechWarrior 3"}, + "dogsofwar" => {key => "", label => "Dogs of War"}, + "dogsrunamock" => {key => "", label => "name"}, + "dominion" => {key => "", label => "Dominion"}, + "dominos" => {key => "", label => "Hasbro's Dominos"}, + "doom3" => {key => "", label => "Doom 3"}, + "doraemonds" => {key => "", label => "Doraemon Nobita no Shinmakai Daiboken DS (DS)"}, + "Doragureidods" => {key => "", label => "Doragureido (DS)"}, + "dow" => {key => "", label => "Dawn of War"}, + "dow_dc" => {key => "", label => "Dawn of War: Dark Crusade"}, + "dqmonjkr2plds" => {key => "", label => "Dragon Quest Monsters Joker 2 Plus version (D"}, + "dqmonjoker2ds" => {key => "", label => "Dragon Quest Monsters: Joker 2 (DS)"}, + "dqmonjokerds" => {key => "", label => "Dragon Quest Monsters: Joker (DS)"}, + "draculagolds" => {key => "", label => "Akumajou Dracula: Gallery of Labyrinth (DS)"}, + "draglade2ds" => {key => "", label => "Custom Beat Battle: Draglade 2 (DS)"}, + "dragladeds" => {key => "", label => "Draglade (DS)"}, + "dragladeEUds" => {key => "", label => "Draglade (EU) (DS)"}, + "dragonbzUSwii" => {key => "", label => "Dragonball Z: Tenkaichi 3 (US) (Wii)"}, + "dragonbzwii" => {key => "", label => "Dragonball Z (Wii)"}, + "dragoncrwnwii" => {key => "", label => "Dragon's Crown (Wii)"}, + "dragonthrone" => {key => "", label => "Dragon Throne"}, + "dragquestsds" => {key => "", label => "Dragon Quest S (DSiWare)"}, + "drainworks" => {key => "", label => "Drainworks (iPhone)"}, + "drainworksam" => {key => "", label => "Drainworks Automatch (iPhone)"}, + "drakan" => {key => "", label => "Drakan"}, + "dreamchronwii" => {key => "", label => "Dream Chronicle (Wii)"}, + "drmariowii" => {key => "", label => "Dr. Mario (WiiWare)"}, + "DrnWrk(iphon)am" => {key => "", label => "DrainWorks Automatch (iphone)"}, + "druidking" => {key => "", label => "Druid King"}, + "ds9dominion" => {key => "", label => "DS9: Dominion Wars"}, + "dsakurads" => {key => "", label => "Dragon Sakura DS (DS)"}, + "dshard" => {key => "", label => "The Dragonshard Wars"}, + "dshardam" => {key => "", label => "The Dragonshard Wars (Automatch)"}, + "dsiege2" => {key => "", label => "Dungeon Siege 2"}, + "dsiege2" => {key => "", label => "Dungeon Siege 2 The Azunite Prophecies"}, + "dsiege2am" => {key => "", label => "Dungeon Siege 2 The Azunite Prophecies Automa"}, + "dsiege2bw" => {key => "", label => "Dungeon Siege II: Broken World"}, + "dsnattest" => {key => "", label => "ds nat test"}, + "dsnattest2" => {key => "", label => "ds nat test 2"}, + "dstallionds" => {key => "", label => "Derby Stallion DS (DS)"}, + "DSwars2ds" => {key => "", label => "DS Wars 2 (DS)"}, + "dtr" => {key => "", label => "Dirt Track Racing"}, + "dtr2" => {key => "", label => "Dirt Track Racing II"}, + "dtr2d" => {key => "", label => "Dirt Track Racing 2 Demo"}, + "dtracing" => {key => "", label => "Dirt Track Racing"}, + "dtrsc" => {key => "", label => "Dirt Track Racing: Sprint Cars"}, + "dtrscdmo" => {key => "", label => "Dirt Track Racing: Sprint"}, + "ducatimotods" => {key => "", label => "Ducati Moto (DS)"}, + "duelfield" => {key => "", label => "Duelfield"}, + "duke4" => {key => "", label => "Duke Nukem Forever"}, + "dukes" => {key => "", label => "Dukes Of Hazzard: Racing"}, + "dundefndpc" => {key => "", label => "Dungeon Defenders (PC)"}, + "dundefndpcam" => {key => "", label => "Dungeon Defenders Automatch (PC)"}, + "dundefndps3" => {key => "", label => "Dungeon Defenders (PS3)"}, + "dundefndps3am" => {key => "", label => "Dungeon Defenders Automatch (PS3)"}, + "dundfniphone" => {key => "", label => "Dungeon Defenders (iphone)"}, + "dundfniphoneam" => {key => "", label => "Dungeon Defenders Automatch (iphone)"}, + "dungeonlords" => {key => "", label => "Dungeon Lords"}, + "dungeonr" => {key => "", label => "Dungeon Runners"}, + "dungeonsiege" => {key => "", label => "Dungeon Siege"}, + "dv" => {key => "", label => "Dark Vengeance"}, + "dwctest" => {key => "", label => "DWC NintendoTest App"}, + "dynamiczanwii" => {key => "", label => "Dynamic Zan (Wii)"}, + "dynaztrialwii" => {key => "", label => "Dynamic Zan TRIAL (Wii)"}, + "E3_2003" => {key => "", label => "E3_2003"}, + "earth2150" => {key => "", label => "Earth 2150"}, + "eawar" => {key => "", label => "European Air War"}, + "echelon" => {key => "", label => "Echelon"}, + "echelonww" => {key => "", label => "Echelon Wind Warriors"}, + "echelonwwd" => {key => "", label => "Echelon Wind Warriors Dem"}, + "ecocreatureds" => {key => "", label => "Eco-Creatures: Save the Forest (DS)"}, + "ecolisEUds" => {key => "", label => "Ecolis (EU) (DS)"}, + "ecorisds" => {key => "", label => "Ecoris (DS)"}, + "ee3" => {key => "", label => "Empire Earth 3"}, + "ee3alpha" => {key => "", label => "Empire Earth III Alpha"}, + "ee3beta" => {key => "", label => "Empire Earth III Beta"}, + "eearth2" => {key => "", label => "Empire Earth 2"}, + "eearth2d" => {key => "", label => "Empire Earth 2 demo"}, + "eearth2xp1" => {key => "", label => "Empire Earth II: The Art of Supremacy"}, + "eearth3" => {key => "", label => "Empire Earth III"}, + "eearth3am" => {key => "", label => "Empire Earth III Automatch"}, + "eearth3b" => {key => "", label => "Empire Earth III Beta"}, + "eearth3bam" => {key => "", label => "Empire Earth III Beta Automatch"}, + "eearth3d" => {key => "", label => "Empire Earth III Demo"}, + "eearth3dam" => {key => "", label => "Empire Earth III Demo Automatch"}, + "eforcesr" => {key => "", label => "Eternal Forces"}, + "ejammingmac" => {key => "", label => "eJamming Jamming Station MAC (engine)"}, + "ejammingpc" => {key => "", label => "eJamming Jamming Station PC"}, + "ekorisu2ds" => {key => "", label => "Ekorisu 2 (DS)"}, + "elebitsds" => {key => "", label => "Elebits DS - Kai to Zero no Fushigi na Bus (D"}, + "elecrailds" => {key => "", label => "Momotaro Electric Railway World (DS)"}, + "elecraildsam" => {key => "", label => "Momotaro Electric Railway World Automatch (D"}, + "elemonsterds" => {key => "", label => "Elemental Monster (DS)"}, + "elevenkords" => {key => "", label => "World Soccer Winning Eleven DS (KOR) (DS)"}, + "ellipticpc" => {key => "", label => "Elliptic Twist (PC)"}, + "ellipticpcam" => {key => "", label => "Elliptic Twist Automatch (PC)"}, + "emperorbfd" => {key => "", label => "Emperor: Battle For Dune"}, + "empireearth" => {key => "", label => "Empire Earth"}, + "empires" => {key => "", label => "Empires: Dawn of the Modern World"}, + "empiresam" => {key => "", label => "Empires Dawn of the Modern World (AM)"}, + "empiresd" => {key => "", label => "Empires: Dawn of the Modern World Demo"}, + "empiresdam" => {key => "", label => "Empires: Dawn of the Modern World"}, + "entente" => {key => "", label => "The Entente"}, + "epochwarspc" => {key => "", label => "Epoch Wars (PC)"}, + "epochwarspcam" => {key => "", label => "Epoch Wars Automatch (PC)"}, + "eq" => {key => "", label => "Everquest"}, + "escviruswii" => {key => "", label => "Escape Virus (WiiWare)"}, + "eternalforces" => {key => "", label => "Eternal Forces Demo"}, + "eternalforcesam" => {key => "", label => "Eternal Forces Automatch"}, + "etforces" => {key => "", label => "Eternal Forces"}, + "etherlords" => {key => "", label => "Etherlords"}, + "etherlordsbeta" => {key => "", label => "Etherlords Patch Beta"}, + "etherlordsd" => {key => "", label => "Etherlords Demo"}, + "evaspacewii" => {key => "", label => "Evasive Space (WiiWare)"}, + "everquest2" => {key => "", label => "EverQuest II"}, + "evolva" => {key => "", label => "Evolva"}, + "evosoc08EUwii" => {key => "", label => "Pro Evolution Soccer 2008 (EU) (Wii)"}, + "evosoc08USds" => {key => "", label => "Pro Evolution Soccer 2008 (US) (DS)"}, + "evosoc08USwii" => {key => "", label => "Pro Evolution Soccer 2008 (US) (Wii)"}, + "evosoccer08ds" => {key => "", label => "Pro Evolution Soccer 2008 (DS)"}, + "excessive" => {key => "", label => "Excessive Q3"}, + "exciteracewii" => {key => "", label => "Excite Racing (Wii)"}, + "exigo" => {key => "", label => "Armies of Exigo"}, + "exigoam" => {key => "", label => "Armies of Exigo (Automatch)"}, + "exigob" => {key => "", label => "Armies of Exigo Beta"}, + "exigobam" => {key => "", label => "Armies of Exigo Beta (Automatch)"}, + "exigor" => {key => "", label => "Armies of Exigo Retail"}, + "exigoram" => {key => "", label => "Armies of Exigo (Automatch)"}, + "exitds" => {key => "", label => "Hijyoguchi: EXIT DS (DS)"}, + "expertpool" => {key => "", label => "Expert Pool"}, + "f12002" => {key => "", label => "F1 2002"}, + "f1comp" => {key => "", label => "F1 1999-2000 Compilation"}, + "f1teamdriver" => {key => "", label => "Williams F1 Team: Team Dr"}, + "facesofwar" => {key => "", label => "Faces of War"}, + "facesofwaram" => {key => "", label => "Faces of War Automatch"}, + "facesofward" => {key => "", label => "Faces of War Demo"}, + "facesofwarxp1" => {key => "", label => "Faces of War Standalone (XP1)"}, + "facesofwarxp1am" => {key => "", label => "Faces of War Standalone Automatch (XP1)"}, + "facesow" => {key => "", label => "Faces of War"}, + "fairstrike" => {key => "", label => "Fair Strike"}, + "fairstriked" => {key => "", label => "Fair Strike Demo"}, + "fairyfightpc" => {key => "", label => "Fairytale Fights (PC)"}, + "fairyfightpcam" => {key => "", label => "Fairytale Fights Automatch (PC)"}, + "fairyfightpcd" => {key => "", label => "Fairytale Fights Demo (PC)"}, + "fairyfightps3" => {key => "", label => "Fairytale Fights (PS3)"}, + "fairyfightps3am" => {key => "", label => "Fairytale Fights Automatch (PS3)"}, + "fairyfightps3d" => {key => "", label => "Fairytale Fights Demo (PS3)"}, + "fairyfightspc" => {key => "", label => "Fairytale Fights (PC)"}, + "fairyfightspcam" => {key => "", label => "Fairytale Fights Automatch (PC)"}, + "fairyfightspcd" => {key => "", label => "Fairytale Fights Demo (PC)"}, + "fakk2" => {key => "", label => "F.A.K.K. 2"}, + "fakk2" => {key => "", label => "Heavy Metal: F.A.K.K. 2 Arena"}, + "fallout3" => {key => "", label => "Fallout 3"}, + "falloutbos" => {key => "", label => "Fallout Tactics"}, + "falloutbosd" => {key => "", label => "Fallout Tactics"}, + "famfishwii" => {key => "", label => "Family Fishing (Wii)"}, + "famista09ds" => {key => "", label => "Pro Yakyu Famista DS 2009 (DS)"}, + "famista2010ds" => {key => "", label => "Famista 2010 (DS)"}, + "famstadiumwii" => {key => "", label => "Family Stadium Wii (Wii)"}, + "fantcubewii" => {key => "", label => "Fantastic Cube (WiiWare)"}, + "farcry" => {key => "", label => "Far Cry"}, + "fargate" => {key => "", label => "Far Gate"}, + "fatedragon" => {key => "", label => "Fate of the Dragon"}, + "fatedragond" => {key => "", label => "Fate of the Dragon Demo 2"}, + "fbackgammon" => {key => "", label => "Fiendish Backgammon"}, + "fbackgammon" => {key => "", label => "Small Rockets Backgammon"}, + "fblackjack" => {key => "", label => "Fiendish Blackjack"}, + "fear" => {key => "", label => "FEAR: First Encounter Assault Recon"}, + "fear2ol" => {key => "", label => "Fear 2: Project Origin (onlive)"}, + "fear2ol" => {key => "", label => "woir3wijfw9er3jwjfsldkjewijfs"}, + "fear2olam" => {key => "", label => "woir3wijfw9er3jwjfsldkjewijfs Automatch"}, + "fearcb" => {key => "", label => "FEAR: First Encounter Assault Recon (Closed B"}, + "feard" => {key => "", label => "FEAR: First Encounter Assault Recon Demo"}, + "fearob" => {key => "", label => "FEAR: First Encounter Assault Recon (Open Bet"}, + "fearobsc" => {key => "", label => "FEAR: First Encounter Assault Recon (Open Bet"}, + "fearxp1" => {key => "", label => "FEAR: Extraction Point"}, + "fearxp2" => {key => "", label => "FEAR Perseus Mandate (PC)"}, + "ffantasy3ds" => {key => "", label => "Final Fantasy III (DS)"}, + "ffantasy3euds" => {key => "", label => "Final Fantasy III - EU (DS)"}, + "ffantasy3usds" => {key => "", label => "Final Fantasy III - US (DS)"}, + "ffccechods" => {key => "", label => "Final Fantasy Crystal Chronicles: Echos of Ti"}, + "ffcryschronds" => {key => "", label => "Final Fantasy: Crystal Chronicles - Ring of F"}, + "ffowbeta" => {key => "", label => "Frontlines: Fuel of War Beta"}, + "ffurtdriftps2" => {key => "", label => "The Fast and the Furious: Tokyo Drift (PS2)"}, + "ffurtdriftps2am" => {key => "", label => "The Fast and the Furious: Tokyo Drift Automa"}, + "ffvsttr" => {key => "", label => "Freedom Force vs. The Third Reich"}, + "ffvsttrd" => {key => "", label => "Freedom Force vs. The Third Reich MP Demo"}, + "ffwcbeta" => {key => "", label => "Frontlines: Fuel of War Beta"}, + "fherjwkk" => {key => "", label => "Namco Test"}, + "FieldOps" => {key => "", label => "Field Ops"}, + "fifa08ds" => {key => "", label => "FIFA 08 Soccer (DS)"}, + "fifa09ds" => {key => "", label => "FIFA 09 Soccer (DS)"}, + "fifasoc10ds" => {key => "", label => "FIFA Soccer 10 (DS)"}, + "fifasoc11ds" => {key => "", label => "FIFA Soccer 11 (DS)"}, + "fightclubps2" => {key => "", label => "Fight Club (PS2)"}, + "fightclubps2" => {key => "", label => "Fight Club PS2"}, + "figlandds" => {key => "", label => "Figland (DS)"}, + "fileplanet" => {key => "", label => "FilePlanet.com"}, + "finertiaps3" => {key => "", label => "Fatal Inertia (PS3)"}, + "finertiaps3am" => {key => "", label => "Fatal Inertia Automatch (PS3)"}, + "firearmsevopc" => {key => "", label => "Firearms Evolution (PC)"}, + "firearmsevopcam" => {key => "", label => "Firearms Evolution Automatch (PC)"}, + "firecapbay" => {key => "", label => "Fire Captain: Bay Area Inferno"}, + "fireemblemds" => {key => "", label => "Fire Emblem DS (DS)"}, + "flashanzands" => {key => "", label => "Flash Anzan Doujou (DS)"}, + "flatout" => {key => "", label => "FlatOut"}, + "flatout2pc" => {key => "", label => "FlatOut 2"}, + "flatout2pc" => {key => "", label => "FlatOut 2 (PC)"}, + "flatout2ps2" => {key => "", label => "FlatOut 2 (PS2)"}, + "flatoutps2" => {key => "", label => "Flat Out (PS2)"}, + "FlockPC" => {key => "", label => "Flock (PC)"}, + "FlockPCam" => {key => "", label => "Flock Automatch (PC)"}, + "FlockPCd" => {key => "", label => "Flock Demo (PC)"}, + "FlockPSN" => {key => "", label => "Flock (PSN)"}, + "FlockPSNam" => {key => "", label => "Flock Automatch (PSN)"}, + "FlockPSNd" => {key => "", label => "Flock Demo (PSN)"}, + "fltsim2002" => {key => "", label => "Flight Simulator 2002"}, + "fltsim2k" => {key => "", label => "Flight Simulator 2000"}, + "fltsim98" => {key => "", label => "FlightSimulator 98"}, + "flyinghero" => {key => "", label => "Flying Heroes"}, + "fmasterwtwii" => {key => "", label => "Fishing Master: World Tour (Wii)"}, + "fordvchevyps2" => {key => "", label => "Ford Versus Chevy (PS2)"}, + "foreverbl2wii" => {key => "", label => "Forever Blue 2 (Wii)"}, + "foreverbwii" => {key => "", label => "Forever Blue (Wii)"}, + "forsaken" => {key => "", label => "Forsaken"}, + "foxtrotpc" => {key => "", label => "Blacklight: Tango Down (PC)"}, + "foxtrotpcam" => {key => "", label => "Blacklight: Tango Down Automatch (PC)"}, + "foxtrotpcd" => {key => "", label => "Blacklight: Tango Down Demo (PC)"}, + "foxtrotps3" => {key => "", label => "Blacklight: Tango down (PS3)"}, + "foxtrotps3am" => {key => "", label => "Blacklight: Tango Down Automatch (PS3)"}, + "foxtrotps3d" => {key => "", label => "Blacklight: Tango Down Demo (PS3)"}, + "freedomforce" => {key => "", label => "Freedom Force"}, + "freepark" => {key => "", label => "Hasbro's Free Parking"}, + "freessbalpha" => {key => "", label => "Freestyle Street Basketball Client Alpha"}, + "Frogger" => {key => "", label => "frogger"}, + "frontlinesfow" => {key => "", label => "Frontlines: Fuel of War"}, + "fstarzerods" => {key => "", label => "Fantasy Star ZERO (DS)"}, + "fstreetv3ds" => {key => "", label => "FIFA Street v3 (DS)"}, + "fsw10hpc" => {key => "", label => "Full Spectrum Warrior: Ten Hammers (PC)"}, + "fsw10hps2" => {key => "", label => "Full Spectrum Warrior: Ten Hammers (PS2)"}, + "fsw10hps2kor" => {key => "", label => "Full Spectrum Warrior: Ten Hammers (Korea, PS"}, + "fsw10hps2pal" => {key => "", label => "Full Spectrum Warrior: Ten Hammers (PAL, PS2)"}, + "fswpc" => {key => "", label => "Full Spectrum Warrior"}, + "fswps2" => {key => "", label => "Full Spectrum Warrior PS2"}, + "fswps2jp" => {key => "", label => "Full Spectrum Warrior (PS2, Japanese)"}, + "fswps2kor" => {key => "", label => "Full Spectrum Warrior Korean (PS2)"}, + "fswps2pal" => {key => "", label => "Full Spectrum Warrior PAL PS2"}, + "fsx" => {key => "", label => "Flight Simulator 2006"}, + "fsxa" => {key => "", label => "Flight Simulator X: Acceleration"}, + "fsxaam" => {key => "", label => "Flight Simulator X: Acceleration Automatch"}, + "fuelpc" => {key => "", label => "FUEL (PC)"}, + "fuelpcam" => {key => "", label => "FUEL Automatch (PC)"}, + "fuelpcd" => {key => "", label => "FUEL Demo (PC)"}, + "fuelps3" => {key => "", label => "FUEL (PS3)"}, + "fuelps3am" => {key => "", label => "FUEL Automatch (PS3)"}, + "fuelps3d" => {key => "", label => "FUEL Demo (PS3)"}, + "fuelps3ptchd" => {key => "", label => "FUEL (PS3) Patched version"}, + "fuelps3ptchdam" => {key => "", label => "FUEL Automatch (PS3) Patched version"}, + "fullautops3" => {key => "", label => "Full Auto 2: Battlelines (PS3)"}, + "fullautops3d" => {key => "", label => "Full Auto 2: Battlelines Demo (PS3)"}, + "fullmatcgds" => {key => "", label => "Fullmetal Alchemist Trading Card Game (DS)"}, + "furaishi3wii" => {key => "", label => "Furai no Shiren 3 Karakuri Yashiki no Nemuri"}, + "furdemo" => {key => "", label => "Fur Fighters Demo"}, + "furfighters" => {key => "", label => "Fur Fighters"}, + "furfiighters" => {key => "", label => "Fur Fighters"}, + "fury" => {key => "", label => "Fury"}, + "fushigidun5ds" => {key => "", label => "Fushigi no Dungeon Furai no Shiren 5 Fortune"}, + "fushigidunds" => {key => "", label => "Fushigi no Dungeon Furai no Shiren 4 Kami no"}, + "fuusuibands" => {key => "", label => "Fuusuiban (DS)"}, + "fwarriorpc" => {key => "", label => "Fire Warrior"}, + "fwarriorps2" => {key => "", label => "Fire Warrior (PS2)"}, + "fwarriorps2" => {key => "", label => "Warhammer 40,000: Fire Warrior PS2"}, + "fxtrainingds" => {key => "", label => "FX Training DS (DS)"}, + "fxtrainlvds" => {key => "", label => "FX TRAINING DS-LV (DS)"}, + "gamebot" => {key => "", label => "GameBot Test"}, + "gamepopulator" => {key => "", label => "Game Populator"}, + "gamepopulatoram" => {key => "", label => "Game Populator (AM)"}, + "GameSpy.com" => {key => "", label => "GameSpy.com"}, + "gamespy1pc" => {key => "", label => "Gamespy Game 1 (PC)"}, + "gamespy2" => {key => "", label => "Gamespy 2"}, + "gamespy2pc" => {key => "", label => "Gamespy Game 2 (PC)"}, + "gamespy2pcam" => {key => "", label => "Gamespy Game 2 Automatch (PC)"}, + "gamevoice" => {key => "", label => "MS Game Voice"}, + "gangland" => {key => "", label => "Gangland"}, + "ganglandd" => {key => "", label => "Gangland demo"}, + "ganglandd" => {key => "", label => "Gangland Demo"}, + "gangsters2" => {key => "", label => "Gansters II: Vendetta"}, + "gauntletds" => {key => "", label => "Gauntlet (DS)"}, + "gauntletps2" => {key => "", label => "Gauntlet (PS2)"}, + "gc2demo" => {key => "", label => "Ground Control 2 Demo"}, + "gcracing" => {key => "", label => "Great Clips Racing"}, + "genesisr" => {key => "", label => "Genesis Rising"}, + "genesisrbeta" => {key => "", label => "Genesis Rising Beta"}, + "genetrooperpc" => {key => "", label => "Gene Trooper (PC)"}, + "genetrooperps2" => {key => "", label => "Gene Troopers (PS2)"}, + "getmede" => {key => "", label => "Get Medieval"}, + "gettysburg" => {key => "", label => "Gettysburg!"}, + "gh4ghitswii" => {key => "", label => "Guitar Hero 4: Greatest Hits (Wii)"}, + "gh4metalwii" => {key => "", label => "Guitar Hero 4: Metallica (Wii)"}, + "gh4vhalenwii" => {key => "", label => "Guitar Hero 4: Van Halen (Wii)"}, + "gh4vhalenwiiam" => {key => "", label => "Guitar Hero 4: Van Halen Automatch (Wii)"}, + "ghero4wii" => {key => "", label => "Guitar Hero 4 (Wii)"}, + "ghostraw" => {key => "", label => "Ghost Recon Advanced Warfighter"}, + "ghostrecon" => {key => "", label => "Ghost Recon"}, + "ghostrecond" => {key => "", label => "Ghost Recon Demo"}, + "ghostreconds" => {key => "", label => "Ghost Recon: Desert Siege"}, + "ghostsquadwii" => {key => "", label => "Ghost Squad (Wii)"}, + "ghpballps2" => {key => "", label => "Greg Hastings Paintball (PS2)"}, + "giants" => {key => "", label => "Giants"}, + "gicombat1" => {key => "", label => "G.I. Combat"}, + "ginrummy" => {key => "", label => "Hasbro's Gin Rummy"}, + "girlsds" => {key => "", label => "Girls (DS)"}, + "girlskoreads" => {key => "", label => "Girls_Korea (DS)"}, + "girlssecEUds" => {key => "", label => "Winx Club Secret Diary 2009 (EU) (DS)"}, + "girlssecretds" => {key => "", label => "Girls Secret Diary (DS)"}, + "globalops" => {key => "", label => "Global Operations"}, + "globalopsd" => {key => "", label => "Global Ops Demo"}, + "gloftpokerwii" => {key => "", label => "Gameloft Poker (WiiWare)"}, + "glracerwii" => {key => "", label => "GameLoft's Racer (WiiWare)"}, + "gmtest" => {key => "", label => "Test / demo / temporary"}, + "gmtestam" => {key => "", label => "test (Auto-Matchmaking)"}, + "gmtestcd" => {key => "", label => "Test (Chat CD Key validation)"}, + "gmtestcdam" => {key => "", label => "Test Automatch (Chat CD Key validation)"}, + "godzilla2ps2" => {key => "", label => "Godzilla: Save the Earth (PS2)"}, + "gokuidsi" => {key => "", label => "Gokui (DSiWare)"}, + "gopetsvids" => {key => "", label => "GoPets: Vacation Island (DS)"}, + "gore" => {key => "", label => "Gore"}, + "gore" => {key => "", label => "Gore Special Edition"}, + "goreAV" => {key => "", label => "Gore (Ad version)"}, + "goreAVam" => {key => "", label => "Gore Automatch (Ad version)"}, + "goreAVd" => {key => "", label => "Gore Demo (Ad version)"}, + "gored" => {key => "", label => "Gore Retail Demo"}, + "goredemo" => {key => "", label => "Gore Demo"}, + "gorese" => {key => "", label => "Gore Special Edition"}, + "gotcha" => {key => "", label => "Gotcha!"}, + "gotchad" => {key => "", label => "Gotcha! Demo"}, + "gp500" => {key => "", label => "GP500"}, + "gp500" => {key => "", label => "Grand Prix 500"}, + "gradiusrbwii" => {key => "", label => "Gradius ReBirth (WiiWare)"}, + "gravitronwii" => {key => "", label => "Gravitronix (WiiWare)"}, + "greconawf" => {key => "", label => "Ghost Recon: Advanced Warfighter"}, + "greconawf2" => {key => "", label => "Ghost Recon Advanced Warfighter 2"}, + "greconawf2" => {key => "", label => "Ghost Recon: Advanced Warfighter 2"}, + "greconawf2am" => {key => "", label => "Ghost Recon: Advanced Warfighter 2 Automatch"}, + "greconawf2b" => {key => "", label => "Ghost Recon: Advanced Warfighter 2 Beta"}, + "greconawf2bam" => {key => "", label => "Ghost Recon: Advanced Warfighter 2 Beta Autom"}, + "greconawf2d" => {key => "", label => "Ghost Recon: Advanced Warfighter 2 Demo"}, + "greconawf2g" => {key => "", label => "Ghost Recon Advanced Warfighter 2"}, + "greconawfd" => {key => "", label => "Ghost Recon: Advanced Warfighter Demo"}, + "greconfswii" => {key => "", label => "Ghost Recon Future Soldier (Wii)"}, + "groundcontrol2" => {key => "", label => "Ground Control 2"}, + "group" => {key => "", label => "Group Room"}, + "gruntz" => {key => "", label => "Gruntz"}, + "gsbgammon" => {key => "", label => "GameSpy Backgammon"}, + "gscheckers" => {key => "", label => "GameSpy Checkers"}, + "gschess" => {key => "", label => "GameSpy Chess"}, + "gshearts" => {key => "", label => "GameSpy Hearts"}, + "gsiphonefw" => {key => "", label => "GameSpy iPhone Framework"}, + "gslive" => {key => "", label => "GameSpy Arcade"}, + "gspoker" => {key => "", label => "GameSpy Poker"}, + "gspylite" => {key => "", label => "GameSpy Lite"}, + "gspylite" => {key => "", label => "GamespyLite"}, + "gspyweb" => {key => "", label => "GameSpy Web"}, + "gsreversi" => {key => "", label => "GameSpy Reversi"}, + "gsspades" => {key => "", label => "GameSpy Spades"}, + "gsTiaKreisDS" => {key => "", label => "Genso Suikokuden TiaKreis (DS)"}, + "gsttestgame" => {key => "", label => "GST test game name"}, + "gsyarn" => {key => "", label => "GameSpy Y.A.R.N."}, + "gta3pc" => {key => "", label => "Grand Theft Auto 3 (PC)"}, + "gta4pc" => {key => "", label => "Grand Theft Auto 4 (PC)"}, + "gta4pcam" => {key => "", label => "Grand Theft Auto 4 Automatch (PC)"}, + "gta4pcdev" => {key => "", label => "Grand Theft Auto 4 Dev (PC)"}, + "gta4pcdevam" => {key => "", label => "Grand Theft Auto 4 Dev Automatch (PC)"}, + "gta4ps3" => {key => "", label => "Grand Theft Auto 4 (PS3)"}, + "gta4ps3am" => {key => "", label => "Grand Theft Auto 4 Automatch (PS3)"}, + "gta4ps3dev" => {key => "", label => "Grand Theft Auto 4 Dev (PS3)"}, + "gta4ps3devam" => {key => "", label => "Grand Theft Auto 4 Dev Automatch (PS3)"}, + "gta4ps3grm" => {key => "", label => "Grand Theft Auto 4 German (PS3)"}, + "gta4ps3grmam" => {key => "", label => "Grand Theft Auto 4 German Automatch (PS3)"}, + "gta4ps3test" => {key => "", label => "Grand Theft Auto 4 Test (PS3)"}, + "gta4x" => {key => "", label => "Grand Theft Auto 4 (Xbox 360)"}, + "gta4xam" => {key => "", label => "Grand Theft Auto 4 Automatch (Xbox 360)"}, + "gta4xgrm" => {key => "", label => "Grand Theft Auto 4 German (Xbox 360)"}, + "gta4xgrmam" => {key => "", label => "Grand Theft Auto 4 German Automatch (Xbox 36"}, + "gtacwarsds" => {key => "", label => "Grand Theft Auto: Chinatown Wars (DS)"}, + "gtacwarspsp" => {key => "", label => "Grand Theft Auto: Chinatown Wars (PSP)"}, + "gtacwarspspam" => {key => "", label => "Grand Theft Auto: Chinatown Wars Automatch ("}, + "gtacwarspspd" => {key => "", label => "Grand Theft Auto: Chinatown Wars Demo (PSP)"}, + "gtacwiphone" => {key => "", label => "Grand Theft Auto: Chinatown Wars (iPhone)"}, + "gtacwiphoneam" => {key => "", label => "Grand Theft Auto: Chinatown Wars Automatch ("}, + "gtacwiphoned" => {key => "", label => "Grand Theft Auto: Chinatown Wars Demo (iPhon"}, + "gtasaps2" => {key => "", label => "Grand Theft Auto San Andreas (PS2)"}, + "gticsfestwii" => {key => "", label => "GTI Club Supermini Festa (Wii)"}, + "gts4xdev" => {key => "", label => "Grand Theft Auto 4 Dev (Xbox 360)"}, + "gts4xdevam" => {key => "", label => "Grand Theft Auto 4 Dev Automatch (Xbox 360)"}, + "guinnesswrds" => {key => "", label => "Guinness World Records: The Video Game (DS)"}, + "guinnesswriph" => {key => "", label => "Guinness World Records: The Video Game (iPhon"}, + "guinnesswripham" => {key => "", label => "Guinness World Records: The Video Game Autom"}, + "guinnesswriphd" => {key => "", label => "Guinness World Records: The Video Game Demo"}, + "guinnesswrwii" => {key => "", label => "Guinness World Records: The Video Game (Wii)"}, + "guitarh3wii" => {key => "", label => "Guitar Hero 3 (Wii)"}, + "guitarh3xpwii" => {key => "", label => "Guitar Hero 3 Expansion Pack (Wii)"}, + "gulfwarham" => {key => "", label => "Gulf War: Operatin Desert"}, + "GunMahjongZds" => {key => "", label => "Kidou Gekidan Haro Ichiza Gundam Mah-jong+Z ("}, + "gunman" => {key => "", label => "Gunman Chronicles"}, + "gunnylamacwii" => {key => "", label => "GUNBLADE NY & L.A. MACHINEGUNS (Wii)"}, + "gwgalaxiesds" => {key => "", label => "Geometry Wars Galaxies (DS)"}, + "gwgalaxieswii" => {key => "", label => "Geometry Wars Galaxies (Wii)"}, + "h2cdigitalps3" => {key => "", label => "Hail to the Chimp (PSN)"}, + "h2cdigitalps3d" => {key => "", label => "Hail to the Chimp Demo (PSN)"}, + "haegemonia" => {key => "", label => "Haegemonia"}, + "haegemoniaxp" => {key => "", label => "Hegemonia Expansion"}, + "hail2chimps3" => {key => "", label => "Hail to the Chimp (PS3)"}, + "hail2chimps3am" => {key => "", label => "Hail to the Chimp Automatch (PS3)"}, + "hail2chimps3d" => {key => "", label => "Hail to the Chimp Demo (PS3)"}, + "hail2chimps3r" => {key => "", label => "Hail to the Chimp Retail (PS3)"}, + "hail2chimps3ram" => {key => "", label => "Hail to the Chimp Retail Automatch (PS3)"}, + "halflife" => {key => "", label => "Half Life"}, + "halflife" => {key => "", label => "Team Fortress 1.5"}, + "halo" => {key => "", label => "Halo Beta"}, + "halod" => {key => "", label => "Halo Demo"}, + "halom" => {key => "", label => "Halo Multiplayer Expansion"}, + "halomac" => {key => "", label => "Halo Mac"}, + "halomac" => {key => "", label => "Halo MAC"}, + "halomacd" => {key => "", label => "Halo Demo (Mac)"}, + "halor" => {key => "", label => "Halo: Combat Evolved"}, + "Happinuds" => {key => "", label => "Happinuvectorone! (DS)"}, + "harbunkods" => {key => "", label => "Harlequin Bunko (DS)"}, + "hardtruck" => {key => "", label => "Hard Truck Tycoon"}, + "harley3" => {key => "", label => "Harley Davidson III"}, + "harleywof" => {key => "", label => "Harley Davidson: Wheels of Freedom"}, + "harmoon2ds" => {key => "", label => "Harvest Moon DS 2 (EU) (DS)"}, + "harmoon2kords" => {key => "", label => "Harvest Moon 2 Korea (DS)"}, + "harmoon2kordsam" => {key => "", label => "Harvest Moon 2 Korea Automatch (DS)"}, + "harmooniohds" => {key => "", label => "Harvest Moon : Island of Happiness (US) (DS)"}, + "harvfishEUds" => {key => "", label => "Harvest Fishing (EU) (DS)"}, + "hastpaint2wii" => {key => "", label => "Greg Hastings Paintball 2 (Wii)"}, + "hawxpc" => {key => "", label => "Tom Clancy's HAWX"}, + "hd" => {key => "", label => "Hidden & Dangerous Enhanc"}, + "hd2" => {key => "", label => "Hidden and Dangerous 2"}, + "hd2b" => {key => "", label => "Hidden and Dangerous 2 Beta"}, + "hd2d" => {key => "", label => "Hidden and Dangerous 2 Demo"}, + "hd2ss" => {key => "", label => "Hidden & Dangerous 2 - Sabre Squadron"}, + "hearts" => {key => "", label => "Hasbro's Hearts"}, + "heavygear2" => {key => "", label => "Heavy Gear 2"}, + "heiseikyods" => {key => "", label => "Heisei Kyoiku Iinkai DS Zenkoku Touitsu Moshi"}, + "heistpc" => {key => "", label => "Heist (PC)"}, + "heistpcam" => {key => "", label => "Heist Automatch (PC)"}, + "heistpcd" => {key => "", label => "Heist Demo (PC)"}, + "heistps3" => {key => "", label => "Heist (PS3)"}, + "heistps3am" => {key => "", label => "Heist Automatch (PS3)"}, + "heretic2" => {key => "", label => "Heretic II"}, + "heroes3" => {key => "", label => "Heroes of Might and Magic III"}, + "heroes3" => {key => "", label => "Heroes Of Might And Magic III"}, + "heroes3arm" => {key => "", label => "Heroes of Might and Magic"}, + "heroesmanads" => {key => "", label => "Seiken Densetsu: Heroes of Mana (DS)"}, + "heroeswii" => {key => "", label => "Heroes (Wii)"}, + "hexenworld" => {key => "", label => "Hexenworld"}, + "hhball2003" => {key => "", label => "High Heat Baseball 2003"}, + "hhbball2000" => {key => "", label => "High Heat Baseball 2000"}, + "hhbball2001" => {key => "", label => "High Heat Baseball 2001"}, + "hhbball2002" => {key => "", label => "High Heat Baseball 2002"}, + "hinterland" => {key => "", label => "Hinterland"}, + "hitz2004ps2" => {key => "", label => "NHL Hitz 2004 PS2"}, + "hlwarriors" => {key => "", label => "Highland Warriors"}, + "hobbitds" => {key => "", label => "Hobbit (DS)"}, + "hobbitdsam" => {key => "", label => "Hobbit Automatch (DS)"}, + "hokutokenwii" => {key => "", label => "Hokuto no Ken (WiiWare)"}, + "homeworld2" => {key => "", label => "Homeworld 2"}, + "homeworld2b" => {key => "", label => "Homeworld 2 Beta"}, + "homeworld2d" => {key => "", label => "Homeworld 2 (Demo)"}, + "homeworld2d" => {key => "", label => "Homeworld 2 demo"}, + "homm4" => {key => "", label => "Heroes of Might and Magic"}, + "hoodzps2" => {key => "", label => "Hoodz (PS2)"}, + "hookagainwii" => {key => "", label => "Hooked Again! (Wii)"}, + "hookedEUwii" => {key => "", label => "Hooked! Real Motion Fishing (EU) (Wii)"}, + "hookedfishwii" => {key => "", label => "Hooked! Real Motion Fishing (Wii)"}, + "hookedJPNwii" => {key => "", label => "Hooked! Real Motion Fishing (JPN) (Wii)"}, + "hooploopwii" => {key => "", label => "HooperLooper (WiiWare)"}, + "hoopworldwii" => {key => "", label => "Hoopworld (Wii)"}, + "horserace" => {key => "", label => "HorseRace"}, + "hotncoldds" => {key => "", label => "Hot 'n' Cold (DS)"}, + "hotpaceudps2" => {key => "", label => "Heroes of the Pacific EU Demo (PS2)"}, + "hotpacificpc" => {key => "", label => "Heroes of the pacific"}, + "hotpacificpc" => {key => "", label => "Heroes of the Pacific PC"}, + "hotpacificpcd" => {key => "", label => "Heroes of the pacific demo"}, + "hotpacificpcd" => {key => "", label => "Heroes of the Pacific PC Demo"}, + "hotpacificps2" => {key => "", label => "Heroes of the Pacific (PS2)"}, + "hotpacificps2" => {key => "", label => "Heroes of the pacific PS2"}, + "hotpacnadps2" => {key => "", label => "Heroes of the Pacific NA Demo (PS2)"}, + "hotrod" => {key => "", label => "Hot Rod, American Street Drag"}, + "hotrod2" => {key => "", label => "Hot Rod 2: Garage to Glory"}, + "hotrodwii" => {key => "", label => "High Voltage Hod Rod Show (WiiWare)"}, + "hotrodwiiam" => {key => "", label => "High Voltage Hod Rod Show Automatch (WiiWare"}, + "hotwheels2pc" => {key => "", label => "Hot Wheels 2 (PC)"}, + "hotwheels2pcd" => {key => "", label => "Hot Wheels 2 Demo (PC)"}, + "hotwheels2ps2" => {key => "", label => "Hot Wheels 2 (PS2)"}, + "hotwheels2ps2" => {key => "", label => "Hot Wheels: Stunt Track Challenge PS2"}, + "hrollerzds" => {key => "", label => "Homies Rollerz (DS)"}, + "hsmusicalds" => {key => "", label => "High School Musical (DS)"}, + "hunterdanwii" => {key => "", label => "Hunter Dan's Triple Crown Tournament Fishing"}, + "hustleps2" => {key => "", label => "Hustle: Detroit Streets (PS2)"}, + "hustleps2am" => {key => "", label => "Hustle: Detroit Streets Automatch (PS2)"}, + "hwbasharena" => {key => "", label => "Hot Wheels Bash Arena"}, + "idolmasterds" => {key => "", label => "The Idolmaster DS (DS)"}, + "idraculawii" => {key => "", label => "iDracula (WiiWare)"}, + "igowii" => {key => "", label => "Igo (Wii) (WiiWare)"}, + "ihraracing" => {key => "", label => "IHRA Drag Racing"}, + "ikaropc" => {key => "", label => "Ikaro (PC)"}, + "ikaropcam" => {key => "", label => "Ikaro Automatch (PC)"}, + "ikaropcd" => {key => "", label => "Ikaro Demo (PC)"}, + "il2sturmovik" => {key => "", label => "IL-2 Sturmovik"}, + "il2sturmovikd" => {key => "", label => "IL-2 Sturmovik Demo"}, + "il2sturmovikfb" => {key => "", label => "IL-2 Sturmovik Forgotten Battles"}, + "ilrosso" => {key => "", label => "Il Rosso e il Nero"}, + "im1pc" => {key => "", label => "Interstellar Marines (PC)"}, + "im1pcam" => {key => "", label => "Interstellar Marines Automatch (PC)"}, + "im1pcd" => {key => "", label => "Interstellar Marines Demo (PC)"}, + "imagineartds" => {key => "", label => "Imagine: Artist (DS)"}, + "imaginejdds" => {key => "", label => "Imagine: Jewelry Designer (DS)"}, + "impglory" => {key => "", label => "Imperial Glory"}, + "incomingforces" => {key => "", label => "Incoming Forces"}, + "indycarps2" => {key => "", label => "Indycar Series (PS2)"}, + "infectedpsp" => {key => "", label => "Infected (PSP)"}, + "infectedpspam" => {key => "", label => "Infected (PSP) Automatch"}, + "influencepc" => {key => "", label => "Influence (PC)"}, + "influencepcam" => {key => "", label => "Influence Automatch (PC)"}, + "ingenious" => {key => "", label => "Ingenious"}, + "insane" => {key => "", label => "Insane"}, + "insanedmo" => {key => "", label => "Insane Demo"}, + "ioftheenemy" => {key => "", label => "I of the Enemy"}, + "irl2000" => {key => "", label => "Indy Racing League 2000"}, + "ironstorm" => {key => "", label => "Iron Storm"}, + "ironstormd" => {key => "", label => "Iron Storm Demo"}, + "ironstrategy" => {key => "", label => "Iron Strategy"}, + "itadakistds" => {key => "", label => "Itadaki Street DS (DS)"}, + "itadakistwii" => {key => "", label => "Itadaki Street (Wii)"}, + "itycoon2" => {key => "", label => "Industry Tycoon 2"}, + "iwar2" => {key => "", label => "Independance War 2"}, + "iwd2" => {key => "", label => "Icewind Dale 2"}, + "iwdale" => {key => "", label => "Icewind Dale"}, + "iwdalehow" => {key => "", label => "Icewind Dale: Heart of Winter"}, + "jacknick6" => {key => "", label => "Jack Nicklaus Golden Bear"}, + "janefightpc" => {key => "", label => "Jane's Advanced Strike Fighters (PC)"}, + "janefightpcam" => {key => "", label => "Jane's Advanced Strike Fighters Automatch ("}, + "janefightps3" => {key => "", label => "Jane's Advanced Strike Fighters (PS3)"}, + "janefightps3am" => {key => "", label => "Jane's Advanced Strike Fighters Automatch (P"}, + "janesattack" => {key => "", label => "Janes Attack Squadron"}, + "janesf15" => {key => "", label => "Janes F-15"}, + "janesf18" => {key => "", label => "Janes F/A-18"}, + "janesfa" => {key => "", label => "Janes Fighters Anthology"}, + "janesusaf" => {key => "", label => "Janes USAF"}, + "janesww2" => {key => "", label => "Janes WWII Fighters"}, + "jbnightfire" => {key => "", label => "James Bond: Nightfire"}, + "jbond08wii" => {key => "", label => "James Bond 2008 (Wii)"}, + "jbond2009ds" => {key => "", label => "James Bond 2009 (DS)"}, + "jbondmv2ds" => {key => "", label => "James Bond Non Movie 2 (2010) (DS)"}, + "jbondmv2dsam" => {key => "", label => "James Bond Non Movie 2 Automatch (2010) (DS)"}, + "jefftest" => {key => "", label => "Test for Jeffs Games"}, + "jeopardyps2" => {key => "", label => "Jeopardy (PS2)"}, + "jetfighter4" => {key => "", label => "Jet Fighter 4"}, + "jetfighter4" => {key => "", label => "Jet Fighter 4: Fortress America"}, + "jikkyonextwii" => {key => "", label => "Jikkyo Powerful Pro Yakyu NEXT (Wii)"}, + "jikkyopprowii" => {key => "", label => "Jikkyo Powerful Pro Yakyu Wii Kettei ban (Wii"}, + "jikkyoprowii" => {key => "", label => "Jikkyo Powerful Pro Yakyu Wii (Wii)"}, + "jissenpachwii" => {key => "", label => "Jissen Pachinko Slot (Wii)"}, + "jk" => {key => "", label => "Jedi Knight"}, + "jk2" => {key => "", label => "Jedi Knight II: Jedi Outcast"}, + "jk3" => {key => "", label => "Star Wars Jedi Knight: Jedi Academy"}, + "jkmosith1" => {key => "", label => "Jedi K:Mystery of Sith1"}, + "jkmots" => {key => "", label => "Jedi Knight - Mysteries o"}, + "jnglspeedwii" => {key => "", label => "Jungle Speed (WiiWare)"}, + "judgedredddi" => {key => "", label => "Judge Dredd (disabled)"}, + "jumpsstars2ds" => {key => "", label => "Jump Super Stars 2 (DS)"}, + "justsingds" => {key => "", label => "Just Sing! (DS)"}, + "jyankenparwii" => {key => "", label => "Jyanken (rock-paper-scissors) Party Paradise"}, + "Jyotrainwii" => {key => "", label => "Minna de Jyoshiki Training Wii (Wii)"}, + "kacademy" => {key => "", label => "Klingon Academy"}, + "kaihatsuds" => {key => "", label => "Kaihatsushitsu (DS)"}, + "kaiwanowads" => {key => "", label => "KAIWANOWA (DS)"}, + "kaosmpr" => {key => "", label => "Kaos MPR"}, + "kaosmpram" => {key => "", label => "Kaos MPR Automatch"}, + "kaosmprd" => {key => "", label => "Kaos MPR Demo"}, + "karajoy3wii" => {key => "", label => "Karaoke JOYSOUND Wii Ver3.0 (Wii)"}, + "kateifestds" => {key => "", label => "Katei Kyoshi Hitman Reborn DS Vongole Festiva"}, + "katekyohitds" => {key => "", label => "katekyo hitman REBORN! DS FLAME RUMBLE XX (DS"}, + "keenracerswii" => {key => "", label => "Keen Racers (WiiWare)"}, + "kenteitvwii" => {key => "", label => "Kentei! TV Wii (Wii)"}, + "kentomashods" => {key => "", label => "Ide Yohei no Kento Masho DS (DS)"}, + "keuthendev" => {key => "", label => "Keuthen.net Development"}, + "keuthendevam" => {key => "", label => "Keuthen.net Development Automatch"}, + "kidslearnwii" => {key => "", label => "Kids Learning Desk (WiiWare)"}, + "kingbeetlesds" => {key => "", label => "The King of Beetles Mushiking Super Collectio"}, + "kingclubsds" => {key => "", label => "King of Clubs (DS)"}, + "kingpin" => {key => "", label => "Kingpin"}, + "kingtigerspc" => {key => "", label => "King Tigers (PC)"}, + "kingtigerspcam" => {key => "", label => "King Tigers Automatch (PC)"}, + "kingtigerspcd" => {key => "", label => "King Tigers Demo (PC)"}, + "kiss" => {key => "", label => "KISS: Psycho Circus"}, + "kissdc" => {key => "", label => "Kiss: Dreamcast"}, + "kissdc" => {key => "", label => "KISS: Psycho Circus DC"}, + "kkhrebornwii" => {key => "", label => "Katei Kyoshi Hitman REBORN! Kindan no Yami no"}, + "knelynch2ddol" => {key => "", label => "Kane & Lynch 2: Dog Days (OnLive)"}, + "knelynch2ddolam" => {key => "", label => "Kane & Lynch 2: Dog Days Automatch (OnLive)"}, + "knightsoh" => {key => "", label => "Knights of Honor"}, + "knightsohd" => {key => "", label => "Knights of Honor Demo"}, + "kodawar2010ds" => {key => "", label => "Kodawari Saihai Simulation Ochanoma Pro Yakyu"}, + "kohan" => {key => "", label => "Kohan: Immortal Sovereigns"}, + "kohanag" => {key => "", label => "Kohan: Ahrimans Gift"}, + "kohanagdemo" => {key => "", label => "Kohan: Ahrimans Gift Demo"}, + "kohandemo" => {key => "", label => "Kohan Demo"}, + "kohanexp" => {key => "", label => "Kohan Expansion"}, + "kohankow" => {key => "", label => "Kohan: Kings of War"}, + "kohankowd" => {key => "", label => "Kohan: Kings of War Demo"}, + "koinudewii" => {key => "", label => "Koinu de Kururin Wii (WiiWare)"}, + "konductrads" => {key => "", label => "Konductra (DS)"}, + "konsportswii" => {key => "", label => "Konami Sports Club @ Home (WiiWare)"}, + "kororinpa2wii" => {key => "", label => "Kororinpa 2 (Wii)"}, + "koshien2ds" => {key => "", label => "PowerPro Pocket Koshien 2 (DS)"}, + "kott2pc" => {key => "", label => "Knights of the Temple 2 (PC)"}, + "kott2ps2" => {key => "", label => "Knights of the Temple 2 (PS2)"}, + "kott2ps2" => {key => "", label => "Knights of the Temple 2 PS2"}, + "kqmateDS" => {key => "", label => "KaitoranmaQ Mate! (DS)"}, + "krabbitpcmac" => {key => "", label => "KrabbitWorld Origins (PC/Mac)"}, + "krabbitpcmacam" => {key => "", label => "KrabbitWorld Origins Automatch (PC/Mac)"}, + "krabbitpcmacd" => {key => "", label => "KrabbitWorld Origins Demo (PC/Mac)"}, + "krissxpc" => {key => "", label => "KrissX (PC)"}, + "krissxpcam" => {key => "", label => "KrissX Automatch (PC)"}, + "kumawar" => {key => "", label => "Kuma War"}, + "kurikinds" => {key => "", label => "Kurikin (DS)"}, + "kurikurimixds" => {key => "", label => "Kuri Kuri Mix DS (DS)"}, + "lanoirepc" => {key => "", label => "L.A. Noire (PC)"}, + "lanoirepcam" => {key => "", label => "L.A. Noire Automatch (PC)"}, + "lanoirepcd" => {key => "", label => "L.A. Noire Demo (PC)"}, + "lanoireps3" => {key => "", label => "L.A. Noire (PS3)"}, + "lanoireps3am" => {key => "", label => "L.A. Noire Automatch (PS3)"}, + "lanoireps3d" => {key => "", label => "L.A. Noire Demo (PS3)"}, + "lanoirex360" => {key => "", label => "L.A. Noire (x360)"}, + "lanoirex360am" => {key => "", label => "L.A. Noire Automatch (x360)"}, + "lanoirex360d" => {key => "", label => "L.A. Noire Demo (x360)"}, + "laserarena" => {key => "", label => "Laser Arena (2015)"}, + "laserarena" => {key => "", label => "Laser Arena Demo"}, + "laserarenad" => {key => "", label => "Laser Arena Demo"}, + "laststorywii" => {key => "", label => "The Last Story (Wii)"}, + "lazgo2demo" => {key => "", label => "Lazgo 2 Demo"}, + "lbookofbigsds" => {key => "", label => "Little Book of Big Secrets (DS)"}, + "le_projectx" => {key => "", label => "Legend Entertainment Project X"}, + "leadfoot" => {key => "", label => "Leadfoot"}, + "leadfootd" => {key => "", label => "Leadfoot Demo"}, + "legendarypc" => {key => "", label => "Legendary (PC)"}, + "legendarypcam" => {key => "", label => "Legendary Automatch (PC)"}, + "legendarypcd" => {key => "", label => "Legendary Demo (PC)"}, + "legendaryps3" => {key => "", label => "Legendary (PS3)"}, + "legendaryps3am" => {key => "", label => "Legendary Automatch (PS3)"}, + "legendsmm" => {key => "", label => "Legends of Might and Magic"}, + "legendsmmbeta" => {key => "", label => "Legends of Might and Magic Beta"}, + "legendsmmbeta" => {key => "", label => "Legends of Might and Magic First Look"}, + "legendsmmbeta2" => {key => "", label => "Legends of Might and Magic First Look 2"}, + "legionarena" => {key => "", label => "Legion Arena"}, + "legofwreps3" => {key => "", label => "WWE Legends of Wrestlemania (PS3)"}, + "legofwreps3am" => {key => "", label => "WWE Legends of Wrestlemania Automatch (PS3)"}, + "legofwrex360" => {key => "", label => "WWE Legends of Wrestlemania (Xbox 360)"}, + "legofwrex360am" => {key => "", label => "Legends of Wrestlemania Automatch (Xbox 360)"}, + "legouniverse" => {key => "", label => "LEGO Universe"}, + "liightwii" => {key => "", label => "Liight (WiiWare)"}, + "links2000" => {key => "", label => "Links LS 2000"}, + "links2001" => {key => "", label => "Links 2001"}, + "links2001dmo" => {key => "", label => "Links 2001 Demo"}, + "links2004" => {key => "", label => "Links 2004"}, + "links98" => {key => "", label => "Links LS 1998"}, + "links99" => {key => "", label => "Links LS 1999"}, + "linksds" => {key => "", label => "Links (DS)"}, + "linksext" => {key => "", label => "Links Extreme"}, + "lionheart" => {key => "", label => "Lionheart"}, + "lithdev" => {key => "", label => "Monolith Development"}, + "lithdevam" => {key => "", label => "Monolith Development Automatch"}, + "livewire" => {key => "", label => "GameSpy Livewire"}, + "locksquestds" => {key => "", label => "Construction Combat: Lock's Quest"}, + "locomotion" => {key => "", label => "Chris Sawyer's Locomotion"}, + "lonposUSwii" => {key => "", label => "Lonpos (US) (WiiWare)"}, + "lonposwii" => {key => "", label => "Lonpos (WiiWare)"}, + "lostmagicds" => {key => "", label => "Lost Magic (DS)"}, + "lostmagicwii" => {key => "", label => "Lost Magic Wii (Wii)"}, + "lotr3" => {key => "", label => "Lords of the Realm III"}, + "lotr3b" => {key => "", label => "Lords of the Realm III Beta"}, + "lotrbfme2" => {key => "", label => "The Rise of The Witch-king"}, + "lotrbme" => {key => "", label => "Lord of the Rings: The Battle For Middle-Eart"}, + "lotrbme2" => {key => "", label => "Lord of the Rings: The Battle for Middle-eart"}, + "lotrbme2r" => {key => "", label => "Lord of the Rings: Battle for Middle-earth 2"}, + "lotrbme2r" => {key => "", label => "Lord of the Rings: The Battle for Middle-eart"}, + "lotrbme2wk" => {key => "", label => "Lord of the Rings: The Battle for Middle-eart"}, + "lovegolfwii" => {key => "", label => "Wii Love Golf (Wii)"}, + "lozphourds" => {key => "", label => "The Legend of Zelda: Phantom Hourglass (DS)"}, + "luchalibrepc" => {key => "", label => "Lucha Libre AAA 2010 (PC)"}, + "luchalibrepcam" => {key => "", label => "Lucha Libre AAA 2010 Automatch (PC)"}, + "luchalibrepcd" => {key => "", label => "Lucha Libre AAA 2010 Demo (PC)"}, + "luchalibreps3" => {key => "", label => "Lucha Libre AAA 2010 (PS3)"}, + "luchalibreps3am" => {key => "", label => "Lucha Libre AAA 2010 Automatch (PS3)"}, + "luchalibreps3d" => {key => "", label => "Lucha Libre AAA 2010 Demo (PS3)"}, + "luchalibrewii" => {key => "", label => "Lucha Libre AAA 2010 (Wii)"}, + "luchalibrewiiam" => {key => "", label => "Lucha Libre AAA 2010 Automatch (Wii)"}, + "luckystar2ds" => {key => "", label => "Lucky Star 2 (DS)"}, + "ludicrousmac" => {key => "", label => "Ludicrous (MAC)"}, + "ludicrousmacam" => {key => "", label => "Ludicrous Automatch (MAC)"}, + "ludicrousmacd" => {key => "", label => "Ludicrous Demo (MAC)"}, + "ludicrouspc" => {key => "", label => "Ludicrous (PC)"}, + "ludicrouspcam" => {key => "", label => "Ludicrous Automatch (PC)"}, + "ludicrouspcd" => {key => "", label => "Ludicrous Demo (PC)"}, + "lumark3eyesds" => {key => "", label => "Luminous Ark 3 Eyes (DS)"}, + "luminarc2ds" => {key => "", label => "Luminous Arc 2 Will (DS)"}, + "luminarc2EUds" => {key => "", label => "Luminous Arc 2 Will (EU) (DS)"}, + "luminarc2USds" => {key => "", label => "Luminous Arc 2 Will (US) (DS)"}, + "luminarcUSds" => {key => "", label => "Luminous Arc (US) (DS)"}, + "machines" => {key => "", label => "Machines"}, + "madden08ds" => {key => "", label => "Madden NFL 08 (DS)"}, + "madden09ds" => {key => "", label => "Madden NFL 09 (DS)"}, + "madeinoreds" => {key => "", label => "Made in Ore (DS)"}, + "mafia" => {key => "", label => "Mafia"}, + "mafia" => {key => "", label => "Mafia: City of Lost Heaven"}, + "mafia2pc" => {key => "", label => "Mafia 2 (PC)"}, + "mafia2pcam" => {key => "", label => "Mafia 2 Automatch (PC)"}, + "mafia2ps3" => {key => "", label => "Mafia 2 (PS3)"}, + "mafia2ps3am" => {key => "", label => "Mafia 2 Automatch (PS3)"}, + "mageknight" => {key => "", label => "Mage Knight Apocalypse"}, + "mageknightd" => {key => "", label => "Mage Knight Apocalypse Demo"}, + "magmay2" => {key => "", label => "Magic & Mayhem 2"}, + "magmay2d" => {key => "", label => "The Art of War"}, + "mahjongkcds" => {key => "", label => "Mah-Jong Kakuto Club (DS)"}, + "majesty" => {key => "", label => "Majesty"}, + "majesty" => {key => "", label => "Majesty: The Fantasy Kingdom Sim"}, + "Majesty2PC" => {key => "", label => "Majesty 2 (PC)"}, + "Majesty2PCam" => {key => "", label => "Majesty 2 Automatch (PC)"}, + "Majesty2PCd" => {key => "", label => "Majesty 2 Demo (PC)"}, + "majestyx" => {key => "", label => "Majesty Expansion"}, + "makibamonods" => {key => "", label => "Makiba Monogatari: Wish-ComeTrue Island DS"}, + "mariokartds" => {key => "", label => "Mario Kart (DS)"}, + "mariokartdsam" => {key => "", label => "Mario Kart (DS, Automatch )"}, + "mariokartkods" => {key => "", label => "Mario Kart DS (DS) (KOR)"}, + "mariokartwii" => {key => "", label => "Mario Kart Wii (Wii)"}, + "mariosprtwii" => {key => "", label => "Mario Sports MIX (Wii)"}, + "marveltcard" => {key => "", label => "Marvel Trading Card Game (PC & PSP)"}, + "marveltcardds" => {key => "", label => "Marvel Trading Card Game (DS)"}, + "marveltcardps" => {key => "", label => "Marvel Trading Card Game (PSP)"}, + "marvlegjpps3" => {key => "", label => "Marvel Legends (PS3, Japan)"}, + "marvlegjpps3am" => {key => "", label => "Marvel Legends Automatch (PS3, Japan)"}, + "marvlegnpsp" => {key => "", label => "Marvel Legends (PSP, NTSC)"}, + "marvlegnpspam" => {key => "", label => "Marvel Legends Automatch (PSP, NTSC)"}, + "marvlegpc" => {key => "", label => "Marvel Legends (PC)"}, + "marvlegpcam" => {key => "", label => "Marvel Legends Automatch (PC)"}, + "marvlegpcd" => {key => "", label => "Marvel Legends Demo (PC)"}, + "marvlegpcdam" => {key => "", label => "Marvel Legends Demo Automatch (PC)"}, + "marvlegps2" => {key => "", label => "Marvel Legends (PS2)"}, + "marvlegps2am" => {key => "", label => "Marvel Legends Automatch (PS2)"}, + "marvlegps2p" => {key => "", label => "Marvel Legends PAL (PS2)"}, + "marvlegps2pam" => {key => "", label => "Marvel Legends Automatch PAL (PS2)"}, + "marvlegps3" => {key => "", label => "Marvel Legends (PS3)"}, + "marvlegps3am" => {key => "", label => "Marvel Legends Automatch (PS3)"}, + "marvlegps3p" => {key => "", label => "Marvel Legends PAL (PS3)"}, + "marvlegps3pam" => {key => "", label => "Marvel Legends PAL Automatch (PS3)"}, + "marvlegpsp" => {key => "", label => "Marvel Legends (PSP, PAL)"}, + "marvlegpspam" => {key => "", label => "Marvel Legends Automatch (PSP, PAL)"}, + "masterrally" => {key => "", label => "Master Rally"}, + "matrixproxy" => {key => "", label => "Matrix Proxy"}, + "maxpayne3pc" => {key => "", label => "Max Payne 3 (PC)"}, + "maxpayne3pcam" => {key => "", label => "Max Payne 3 Automatch (PC)"}, + "maxpayne3pcd" => {key => "", label => "Max Payne 3 Demo (PC)"}, + "maxpayne3ps3" => {key => "", label => "Max Payne 3 (PS3)"}, + "maxpayne3ps3am" => {key => "", label => "Max Payne 3 Automatch (PS3)"}, + "maxpayne3ps3d" => {key => "", label => "Max Payne 3 Demo (PS3)"}, + "maxpayne3x360" => {key => "", label => "Max Payne 3 (360)"}, + "maxpayne3x360am" => {key => "", label => "Max Payne 3 Automatch (360)"}, + "maxpayne3x360d" => {key => "", label => "Max Payne 3 Demo (360)"}, + "mcdcrewds" => {key => "", label => "McDonald's DS Crew Development Program (DS)"}, + "mclub2pc" => {key => "", label => "Midnight Club 2"}, + "mclub2pc" => {key => "", label => "Midnight Club 2 (PC)"}, + "mclub2ps2" => {key => "", label => "Midnight Club 2 (PS2)"}, + "mclub3ps2" => {key => "", label => "Midnight Club 3 DUB Edition (PS2)"}, + "mclub4ps3" => {key => "", label => "Midnight Club 4 (PS3)"}, + "mclub4ps3am" => {key => "", label => "Midnight Club 4 Automatch (PS3)"}, + "mclub4ps3dev" => {key => "", label => "Midnight Club 4 Dev (PS3)"}, + "mclub4ps3devam" => {key => "", label => "Midnight Club 4 Dev Automatch (PS3)"}, + "mclub4xbox" => {key => "", label => "Midnight Club 4 (Xbox360)"}, + "mclub4xboxam" => {key => "", label => "Midnight Club 4 Automatch (Xbox360)"}, + "mclub4xboxdev" => {key => "", label => "Midnight Club 4 Dev (Xbox360)"}, + "mclub4xboxdevam" => {key => "", label => "Midnight Club 4 Dev Automatch (Xbox360)"}, + "mcm2demo" => {key => "", label => "Motocross Madness 2 Trial"}, + "mcmad" => {key => "", label => "Motocross Madness"}, + "mcmaddemo" => {key => "", label => "Motocross Madness Trial"}, + "mcmania" => {key => "", label => "Motocross Mania"}, + "mcmaniadmo" => {key => "", label => "Motocross Mania Demo"}, + "mcomm2" => {key => "", label => "MechCommander 2"}, + "mcommgold" => {key => "", label => "MechCommander Gold"}, + "mdamiiwalkds" => {key => "", label => "Minna de Aruku! Mii Walk (DS)"}, + "mdungeonds" => {key => "", label => "Mysterious Dungeon: Shiren the Wanderer DS (D"}, + "mebiuswii" => {key => "", label => "Mebius Drive (WiiWare)"}, + "mech3" => {key => "", label => "Mech Warrior 3"}, + "mech3" => {key => "", label => "MechWarrior 3"}, + "mech3pm" => {key => "", label => "Pirates Moon"}, + "mech4" => {key => "", label => "Mechwarrior 4"}, + "mech4bkexp" => {key => "", label => "MechWarrior Black Knight"}, + "mech4bwexpd" => {key => "", label => "MechWarrior Black Knight"}, + "mech4merc" => {key => "", label => "MechWarrior 4: Mercenarie"}, + "mech4st" => {key => "", label => "MechWarrior 4: Vengeance"}, + "mechamotedsi" => {key => "", label => "Mechamote Iincho 4 (DSi)"}, + "mechamotedsiam" => {key => "", label => "Mechamote Iincho 4 Automatch (DSi)"}, + "mechcomm" => {key => "", label => "MechCommander"}, + "mechcomm2" => {key => "", label => "MechCommander 2"}, + "medarotds" => {key => "", label => "MedaRot DS (DS)"}, + "medarotkuds" => {key => "", label => "Medarot DS kuwagata (DS)"}, + "medarotkudsam" => {key => "", label => "Medarot DS kuwagata Automatch (DS)"}, + "medieval" => {key => "", label => "Medieval: Total War"}, + "medieval2" => {key => "", label => "Medieval 2 Total War"}, + "medieval2am" => {key => "", label => "Medieval 2 Total War Automatch"}, + "medieval2d" => {key => "", label => "Medieval II Demo"}, + "medievalvi" => {key => "", label => "Medieval Total War Viking Invasion"}, + "megaman10wii" => {key => "", label => "Mega Man 10 (WiiWare)"}, + "megaman9wii" => {key => "", label => "Mega Man 9 (WiiWare)"}, + "megamansfds" => {key => "", label => "Mega Man Star Force (US) (DS)"}, + "megamansfeuds" => {key => "", label => "Mega Man Star Force (EU) (DS)"}, + "mekurucawii" => {key => "", label => "Mekuruca (WiiWare)"}, + "memansf2EUDS" => {key => "", label => "Mega Man Star Force 2: Zerker x Shinobi / Sau"}, + "memansf2USDS" => {key => "", label => "Mega Man Star Force 2: Zerker x Shinobi / Sau"}, + "menofvalor" => {key => "", label => "Men of Valor"}, + "menofvalord" => {key => "", label => "Men of Valor Demo"}, + "MenofWar" => {key => "", label => "Men of War"}, + "menofwar:as" => {key => "", label => "Men of War: UNUSED"}, + "menofwar:asam" => {key => "", label => "Men of War: UNUSED"}, + "menofwar:nam" => {key => "", label => "Men of War: UNUSED"}, + "menofwar:namam" => {key => "", label => "Men of War: UNUSED"}, + "menofwaras" => {key => "", label => "Men of War: Assault Squad (Demo)"}, + "menofwarasam" => {key => "", label => "Men of War: Assault Squad Automatch"}, + "menofwarasr" => {key => "", label => "Men of War: Assault Squad (Retail)"}, + "menofwarnam" => {key => "", label => "Men of War: Vietnam"}, + "menofwarnamam" => {key => "", label => "Men of War: Vietnam Automatch"}, + "menofwarpc" => {key => "", label => "Men of War"}, + "menofwarpc" => {key => "", label => "Men of War (PC)"}, + "menofwarpcam" => {key => "", label => "Men of War Automatch (PC)"}, + "menofwarpcb" => {key => "", label => "Men of War (PC) BETA"}, + "menofwarpcbam" => {key => "", label => "Men of War Automatch (PC) BETA"}, + "menofwarpcd" => {key => "", label => "Men of War MP DEMO (PC)"}, + "menofwarpcdam" => {key => "", label => "Men of War MP DEMO Automatch (PC)"}, + "merchant2" => {key => "", label => "Merchant Prince II"}, + "metalcrush3" => {key => "", label => "Metal Crush 3"}, + "metalfight3ds" => {key => "", label => "Metal Fight Bay Blade DS3 (DS)"}, + "metalfight3dsam" => {key => "", label => "Metal Fight Bay Blade DS3 Automatch (DS)"}, + "metalfightds" => {key => "", label => "Metal Fight Bayblade (DS)"}, + "metalmax3ds" => {key => "", label => "Metal Max 3 (DS)"}, + "metalmax3dsam" => {key => "", label => "Metal Max 3 Automatch (DS)"}, + "metprime3wii" => {key => "", label => "Metroid Prime 3 (Wii)"}, + "mezasetm2wii" => {key => "", label => "Mezase!! Tsuri Master 2 (Wii)"}, + "mfatigue" => {key => "", label => "Metal Fatigue"}, + "mfcoachwii" => {key => "", label => "My Fitness Coach (Wii)"}, + "mfightbbueuds" => {key => "", label => "Metal Fight Bay Blade ULTIMATE Europe (DS)"}, + "mfightbbukds" => {key => "", label => "Metal Fight Bay Blade ULTIMATE Korea (DS)"}, + "mfightbbukdsam" => {key => "", label => "Metal Fight Bay Blade ULTIMATE Korea Automat"}, + "mfightbbultds" => {key => "", label => "Metal Fight Bay Blade ULTIMATE (DS)"}, + "mfightbbunads" => {key => "", label => "Metal Fight Bay Blade ULTIMATE North America"}, + "mh3uswii" => {key => "", label => "Monster Hunter 3 (US/EU) (Wii)"}, + "micchannelwii" => {key => "", label => "Mic Chat Channel (Wii)"}, + "midmad" => {key => "", label => "Midtown Madness"}, + "midmad2" => {key => "", label => "Midtown Madness 2"}, + "midmad2dmo" => {key => "", label => "Midtown Madness 2 Trial"}, + "midmaddemo" => {key => "", label => "Midtown Madness Demo"}, + "midmaddemo" => {key => "", label => "Midtown Madness Trial"}, + "migalley" => {key => "", label => "Mig Alley"}, + "millebourn" => {key => "", label => "Hasbro's Mille Borne"}, + "millebourn" => {key => "", label => "Hasbro's Mille Bournes"}, + "mini4wdds" => {key => "", label => "Mini 4WD DS (DS)"}, + "mk9ps3" => {key => "", label => "Mortal Kombat 9 (PS3)"}, + "mk9ps3am" => {key => "", label => "Mortal Kombat 9 Automatch (PS3)"}, + "mk9test" => {key => "", label => "Midway MK9 Test"}, + "mk9testam" => {key => "", label => "Midway MK9 Test Automatch"}, + "mk9testd" => {key => "", label => "Midway MK9 Test Demo"}, + "mkarmpalps2" => {key => "", label => "Mortal Kombat: Armageddon PAL (PS2)"}, + "mkarmps2" => {key => "", label => "Mortal Kombat: Armageddon (PS2)"}, + "mkdeceppalps2" => {key => "", label => "Mortal Kombat Deception PAL (PS2)"}, + "mkdeceptionps2" => {key => "", label => "Mortal Kombat Deceptions (PS2)"}, + "mkdeceptionps2" => {key => "", label => "Mortal Kombat: Deception PS2"}, + "mkvsdcEUps3" => {key => "", label => "Mortal Kombat vs. DC Universe (EU) (PS3)"}, + "mkvsdcEUps3am" => {key => "", label => "Mortal Kombat vs. DC Universe Automatch (EU)"}, + "mkvsdcEUps3b" => {key => "", label => "Mortal Kombat vs. DC Universe Beta (EU) (PS3"}, + "mkvsdcps3" => {key => "", label => "Mortal Kombat vs. DC Universe (PS3)"}, + "mkvsdcps3am" => {key => "", label => "Mortal Kombat vs. DC Universe Automatch (PS3"}, + "mkvsdcps3b" => {key => "", label => "Mortal Kombat vs. DC Universe Beta (PS3)"}, + "mkvsdcps3bam" => {key => "", label => "Mortal Kombat vs. DC Universe Beta Automatch"}, + "mkvsdcxbox" => {key => "", label => "Mortal Kombat vs. DC Universe (Xbox)"}, + "mkvsdcxboxam" => {key => "", label => "Mortal Kombat vs. DC Universe Automatch (Xbo"}, + "mlb2k11wii" => {key => "", label => "Major League Baseball 2K11"}, + "mlb2k9ds" => {key => "", label => "Major League Baseball 2K9 Fantasy All-Stars ("}, + "MLBallstarsds" => {key => "", label => "Major League Baseball Fantasy All-Stars (DS)"}, + "mleatingJPwii" => {key => "", label => "Major League Eating: The Game (JPN) (WiiWare)"}, + "mleatingJPwiiam" => {key => "", label => "Major League Eating: The Game Automatch (JPN"}, + "mleatingwii" => {key => "", label => "Major League Eating: The Game (EU/US) (WiiWar"}, + "mmadexps3d" => {key => "", label => "Monster Madness EX Demo (PS3)"}, + "mmadness2" => {key => "", label => "Motocross Madness 2"}, + "mmadnessexps3" => {key => "", label => "Monster Madness EX (PS3)"}, + "mmadnessexps3am" => {key => "", label => "Monster Madness EX Automatch (PS3)"}, + "mmadnesswii" => {key => "", label => "Military Madness (WiiWare)"}, + "mmartracewii" => {key => "", label => "Mega Mart Race (WiiWare)"}, + "mmessagesds" => {key => "", label => "Mixed Messages (DS)"}, + "mmtest" => {key => "", label => "Matchmaking Backend Test"}, + "mmtestam" => {key => "", label => "Matchmaking Backend Test Automatch"}, + "mmvdkds" => {key => "", label => "Mini Mario vs Donkey Kong (DS)"}, + "mobileforces" => {key => "", label => "Mobile Forces"}, + "mobileforcesd" => {key => "", label => "Mobile Forces Demo"}, + "mogumonwii" => {key => "", label => "Tataite! Mogumon (WiiWare)"}, + "mohaa" => {key => "", label => "Medal of Honor Allied Assault"}, + "mohaab" => {key => "", label => "Medal of Honor: Allied Assault Breakthrough"}, + "mohaabd" => {key => "", label => "Medal of Honor: Allied Assault Breakthrough D"}, + "mohaabdm" => {key => "", label => "Medal of Honor: Allied Assault Breakthrough ("}, + "mohaabmac" => {key => "", label => "Medal of Honor: Breakthrough (Mac)"}, + "mohaad" => {key => "", label => "Medal of Honor: Allied Assault Demo"}, + "mohaamac" => {key => "", label => "Medal of Honor: Allied Assault (Mac)"}, + "mohaas" => {key => "", label => "Medal of Honor: Allied Assault Spearhead"}, + "mohaasd" => {key => "", label => "Medal of Honor: Allied As"}, + "mohaasmac" => {key => "", label => "Medal of Honor: Allied Assault Spearhead (Mac"}, + "MOHADemo" => {key => "", label => "Medal of Honor Airborne Demo"}, + "mohairborne" => {key => "", label => "Medal of Honor: Airborne"}, + "mohpa" => {key => "", label => "Medal of Honor: Pacific Assault"}, + "mohpad" => {key => "", label => "Medal of Honor: Pacific Assault Demo"}, + "molecontrolpc" => {key => "", label => "Mole Control (PC)"}, + "molecontrolpcam" => {key => "", label => "Mole Control Automatch (PC)"}, + "momo2010wii" => {key => "", label => "Momotaro Dentetsu 2010 Nendoban (Wii)"}, + "momoden16wii" => {key => "", label => "Momotaro Dentetsu 16 - Hokkaido Daiido no Mak"}, + "momotaro20ds" => {key => "", label => "Momotaro Dentetsu 20 Shuunen (DS)"}, + "momotarodends" => {key => "", label => "Momotaro Dentetsu 16 ~ Hokkaido Daiido no Mak"}, + "monfarm2ds" => {key => "", label => "Monster Farm DS 2 (DS)"}, + "monhunter3wii" => {key => "", label => "Monster Hunter 3 (JPN) (Wii)"}, + "monhuntergwii" => {key => "", label => "Monster Hunter G (Wii)"}, + "monkmayhemwii" => {key => "", label => "Maniac Monkey Mayhem (WiiWare)"}, + "monlabwii" => {key => "", label => "Monster Lab (Wii)"}, + "monopoly" => {key => "", label => "Monopoly"}, + "monopoly" => {key => "", label => "Monopoly 2000"}, + "monopoly3" => {key => "", label => "Monopoly 3"}, + "monopolyty" => {key => "", label => "Monopoly Tycoon"}, + "monracersds" => {key => "", label => "Monster Racers (DS)"}, + "monsterfarmds" => {key => "", label => "Monster Farm DS (DS)"}, + "moo3" => {key => "", label => "Master of Orion III"}, + "moo3a" => {key => "", label => "Master of Orion III"}, + "mooncommander" => {key => "", label => "Moon Commander"}, + "moonproject" => {key => "", label => "Earth 2150: The Moon Project"}, + "moonproject" => {key => "", label => "Moon Project"}, + "moritashogids" => {key => "", label => "Morita Shogi DS (DS)"}, + "mostwanted" => {key => "", label => "Most Wanted"}, + "motogp08pc" => {key => "", label => "MotoGP 2008"}, + "MotoGP08PC" => {key => "", label => "MotoGP08 (PC)"}, + "MotoGP08PCam" => {key => "", label => "MotoGP08 Automatch (PC)"}, + "motogp08ps3" => {key => "", label => "MotoGP 2008 PS3"}, + "MotoGP08PS3" => {key => "", label => "MotoGP08 (PS3)"}, + "MotoGP08PS3am" => {key => "", label => "MotoGP08 Automatch (PS3)"}, + "motogp09pc" => {key => "", label => "Moto GP 09 (PC)"}, + "motogp09pcam" => {key => "", label => "Moto GP 09 Automatch (PC)"}, + "motogp09pcd" => {key => "", label => "Moto GP 09 Demo (PC)"}, + "motogp09ps3" => {key => "", label => "Moto GP 09 (PS3)"}, + "motogp09ps3am" => {key => "", label => "Moto GP 09 Automatch (PS3)"}, + "motogp09ps3d" => {key => "", label => "Moto GP 09 Demo (PS3)"}, + "motogp2" => {key => "", label => "MotoGP 2"}, + "motogp2007" => {key => "", label => "MotoGP 2007"}, + "motogp2007am" => {key => "", label => "MotoGP 2007 Automatch"}, + "motogp2d" => {key => "", label => "MotoGP 2 Demo"}, + "motogp3" => {key => "", label => "MotoGP 3"}, + "motogp3d" => {key => "", label => "MotoGP 3 Demo"}, + "motogp4ps2" => {key => "", label => "MotoGP 4 (PS2)"}, + "motoracer3" => {key => "", label => "Motoracer 3"}, + "mototrax" => {key => "", label => "Moto Trax"}, + "mototrax" => {key => "", label => "MTX MotoTrax PS2"}, + "moutlawne" => {key => "", label => "Midnight Outlaw Nitro"}, + "moutlawned" => {key => "", label => "Midnight Outlaw Illegal Street Drag Nitro Edi"}, + "mparty1ds" => {key => "", label => "Mario Party (DS)"}, + "mphearts" => {key => "", label => "mphearts"}, + "mplayer" => {key => "", label => "MPlayer"}, + "mprimeds" => {key => "", label => "Metroid Prime Hunters (DS)"}, + "mrpantsqm" => {key => "", label => "Mr. Pants QuickMatch"}, + "mrwtour" => {key => "", label => "Motoracer World Tour"}, + "ms2012wii" => {key => "", label => "Mario & Sonic at the London 2012 Olympic Game"}, + "mschargedwii" => {key => "", label => "Mario Strikers Charged (Wii)"}, + "msecurity" => {key => "", label => "Alcatraz: Prison Escape"}, + "msgolf99" => {key => "", label => "Microsoft Golf '99"}, + "msgolf99" => {key => "", label => "MS Golf '99"}, + "MSolympicds" => {key => "", label => "Mario & Sonic at the Olympic Games (DS)"}, + "MSolympicwii" => {key => "", label => "Mario & Sonic at the Olympic Games (Wii)"}, + "mswinterds" => {key => "", label => "Mario & Sonic at the Olympic Winter Games (DS"}, + "mswinterwii" => {key => "", label => "Mario & Sonic at the Olympic Winter Games (Wi"}, + "mt2003" => {key => "", label => "Monopoly 2003"}, + "mta" => {key => "", label => "Multitheft Auto"}, + "mtgbgrounds" => {key => "", label => "Magic The Gathering: Battlegrounds"}, + "mtgbgrounds" => {key => "", label => "Magic: The Gathering - Battlegrounds"}, + "mtmdemo" => {key => "", label => "MonsterTruckMadnessTrial"}, + "mtruckm2" => {key => "", label => "Monster Truck Madness 2"}, + "mtxmototrax" => {key => "", label => "MTX MotoTrax"}, + "mua2wii" => {key => "", label => "Marvel Ultimate Alliance 2: Fusion (Wii)"}, + "mukoubuchids" => {key => "", label => "Mukoubuchi - Goburei, Shuryoudesune (DS)"}, + "musicmakerwii" => {key => "", label => "Music Maker (Wii)"}, + "mvsdk25ds" => {key => "", label => "Mario vs Donkey Kong 2.5 (DS)"}, + "mxravenpsp" => {key => "", label => "MX Reflex (Raven) (PSP)"}, + "mxravenpspam" => {key => "", label => "MX Raven Automatch (PSP)"}, + "mxun05pc" => {key => "", label => "MX vs. ATV Unleashed"}, + "mxun05pc" => {key => "", label => "MX vs. ATV Unleashed (PC)"}, + "mxun05pcam" => {key => "", label => "MX vs. ATV Unleashed Automatch (PC)"}, + "mxun05ps2" => {key => "", label => "MX Unleashed 05 (PS2)"}, + "mxun05ps2" => {key => "", label => "MX vs. ATV Unleashed PS2"}, + "mxun05ps2am" => {key => "", label => "MX Unleashed 05 (PS2) Automatch"}, + "mxvatvuPALps2" => {key => "", label => "MX vs ATV Untamed PAL (PS2)"}, + "mxvatvuPALps2am" => {key => "", label => "MX vs ATV Untamed PAL Automatch (PS2)"}, + "mxvatvutEUwii" => {key => "", label => "MX vs ATV Untamed (EU) (Wii)"}, + "mxvsatvutps2" => {key => "", label => "MX vs ATV Untamed (PS2)"}, + "mxvsatvutps2am" => {key => "", label => "MX vs ATV Untamed Automatch (PS2)"}, + "mxvsatvutwii" => {key => "", label => "MX vs ATV Untamed (Wii)"}, + "mysecretsds" => {key => "", label => "My Secrets (DS)"}, + "mysimsflyerds" => {key => "", label => "MySims Flyers (DS)"}, + "mysimsflyEUds" => {key => "", label => "MySims Flyers EU (DS)"}, + "myth3" => {key => "", label => "Myth 3"}, + "myth3demo" => {key => "", label => "Myth 3 Demo"}, + "na2rowpc" => {key => "", label => "NAT2 Row (PC)"}, + "na2rowpcam" => {key => "", label => "NAT2 Row Automatch (PC)"}, + "na2runpc" => {key => "", label => "NAT2 Run (PC)"}, + "na2runpcam" => {key => "", label => "NAT2 Run Automatch (PC)"}, + "nakedbrbndds" => {key => "", label => "Naked Brothers Band World of Music Tour (DS)"}, + "namcotest" => {key => "", label => "Namco SDK Test"}, + "namcotestam" => {key => "", label => "Namco SDK Test Automatch"}, + "namcotestd" => {key => "", label => "Namco SDK Test Demo"}, + "nameneverds" => {key => "", label => "Nameless Neverland (DS)"}, + "nanost2EUds" => {key => "", label => "Nanostray 2 (EU) (DS)"}, + "nanostray2ds" => {key => "", label => "Nanostray 2 (DS)"}, + "naruto5ds" => {key => "", label => "NARUTO: Saikyou Ninja Daikesshuu 5 (DS)"}, + "narutoex4wii" => {key => "", label => "NARUTO SHIPPUDEN GEKITOU NINJATAISEN ! EX4 (W"}, + "Narutonin2ds" => {key => "", label => "Naruto: Path of the Ninja 2 (DS)"}, + "narutor3euwii" => {key => "", label => "Naruto Shippuden: Clash of Ninja Revolution 3"}, + "narutorev3wii" => {key => "", label => "Naruto Shippuden: Clash of Ninja Revolution 3"}, + "narutorpg3ds" => {key => "", label => "Naruto RPG 3 (DS)"}, + "nba2k10wii" => {key => "", label => "NBA 2K10 (Wii)"}, + "nba2k11wii" => {key => "", label => "NBA 2K11 (Wii)"}, + "nba2k11wiiam" => {key => "", label => "NBA 2K11 Automatch (Wii)"}, + "necrolcpc" => {key => "", label => "NecroVisioN: Lost Company (PC)"}, + "necrolcpcam" => {key => "", label => "NecroVisioN: Lost Company Automatch (PC)"}, + "necrolcpcd" => {key => "", label => "NecroVisioN: Lost Company Demo (PC)"}, + "necrovision" => {key => "", label => "NecroVision"}, + "necrovisionpc" => {key => "", label => "NecroVision (PC)"}, + "necrovisionpcam" => {key => "", label => "NecroVision Automatch (PC)"}, + "necrovisionpcd" => {key => "", label => "NecroVision Demo (PC)"}, + "necrovisionpd" => {key => "", label => "NecroVision (PC) Demo"}, + "necrovisionpdam" => {key => "", label => "NecroVision Automatch (PC) Demo"}, + "neopetspapc" => {key => "", label => "Neopets Puzzle Adventure (PC)"}, + "neopetspapcam" => {key => "", label => "Neopets Puzzle Adventure Automatch (PC)"}, + "neopetspapcd" => {key => "", label => "Neopets Puzzle Adventure Demo (PC)"}, + "nerfarena" => {key => "", label => "Nerf Arena"}, + "netathlon" => {key => "", label => "NetAthlon"}, + "netathlon2" => {key => "", label => "NetAthlon"}, + "newgamename" => {key => "", label => "dhdh"}, + "newgamenameam" => {key => "", label => "dhdh Automatch"}, + "nexttetris" => {key => "", label => "The Next Tetris"}, + "nexttetris" => {key => "", label => "The Next Tetris DC"}, + "nfs6" => {key => "", label => "Need For Speed: Hot Pursuit 2"}, + "nfsmwucoverds" => {key => "", label => "Need for Speed Most Wanted: Undercover (DS)"}, + "nfsprostds" => {key => "", label => "Need for Speed Pro Street (DS)"}, + "nhl2k10wii" => {key => "", label => "NHL 2K10 (Wii)"}, + "nhl2k11wii" => {key => "", label => "NHL 2K11 (Wii)"}, + "nhl2k11wiiam" => {key => "", label => "NHL 2K11 Automatch (Wii)"}, + "nights2wii" => {key => "", label => "NiGHTS: Journey of Dreams (Wii)"}, + "nindev" => {key => "", label => "Nintendo Network Development Testing"}, + "ninjagaidends" => {key => "", label => "Ninja Gaiden: Dragon Sword (DS)"}, + "ninsake" => {key => "", label => "Nintendo Sake Test"}, + "nitrobikeps2" => {key => "", label => "Nitrobike (PS2)"}, + "nitrobikeps2am" => {key => "", label => "Nitrobike Automatch (PS2)"}, + "nitrobikewii" => {key => "", label => "Nitrobike (Wii)"}, + "nitrofamily" => {key => "", label => "Nitro Family"}, + "nitrosample" => {key => "", label => "Nitro Sample"}, + "NN2Simple" => {key => "", label => "NatNeg2 Simple Test"}, + "noahprods" => {key => "", label => "Noah's Prophecy (DS)"}, + "nobunagapktds" => {key => "", label => "Nobunaga no Yabou DS Pocket Senshi (DS)"}, + "nobuyabou2ds" => {key => "", label => "Nobunaga no Yabou DS 2 (DS)"}, + "nolf" => {key => "", label => "No One Lives Forever"}, + "nolf2" => {key => "", label => "No One Lives Forever 2"}, + "nolf2d" => {key => "", label => "No One Lives Forever: The Operative 2 Demo"}, + "nomansland" => {key => "", label => "No Mans Land"}, + "nplusds" => {key => "", label => "N+ (DS)"}, + "nrs2003" => {key => "", label => "NASCAR Racing Season 2003"}, + "nsr0405" => {key => "", label => "NASCAR Sim Racing (2005)"}, + "nthunder2003" => {key => "", label => "NASCAR Thunder 2003"}, + "nthunder2004" => {key => "", label => "NASCAR Thunder 2004"}, + "nthunder2004d" => {key => "", label => "NASCAR Thunder 2004 Demo"}, + "Nushizurids" => {key => "", label => "Nushizuri DS Yama no megumi Kawa no seseragi"}, + "nvchess" => {key => "", label => "nvChess"}, + "nwn" => {key => "", label => "Neverwinter Nights"}, + "nwn2" => {key => "", label => "NeverWinter Nights 2"}, + "nwn2mac" => {key => "", label => "NeverWinter Nights 2 (MAC)"}, + "nwn2macam" => {key => "", label => "NeverWinter Nights 2 Automatch (MAC)"}, + "nwnlinux" => {key => "", label => "Neverwinter Nights (Linux)"}, + "nwnlinux" => {key => "", label => "Neverwinter Nights for Linux"}, + "nwnmac" => {key => "", label => "Neverwinter Nights (Mac)"}, + "nwnmac" => {key => "", label => "Neverwinter Nights MAC"}, + "nwnxp1" => {key => "", label => "Neverwinter Nights: Shado"}, + "nwnxp2" => {key => "", label => "Neverwinter Nights: Hordes of Underdark"}, + "obiwon" => {key => "", label => "Obi-Wan"}, + "octoEUwii" => {key => "", label => "Octomania (EU) (Wii)"}, + "officersgwupc" => {key => "", label => "Officers: God With Us"}, + "officersgwupcam" => {key => "", label => "Officers: God With Us Automatch"}, + "oishiids" => {key => "", label => "Oishii Recipe (DS)"}, + "okirakuwii" => {key => "", label => "Okiraku Daihugou Wii (WiiWare)"}, + "oldscrabble" => {key => "", label => "Hasbro Scrabble 1.0"}, + "oldscrabble" => {key => "", label => "Scrabble 1.0"}, + "olg2ps2" => {key => "", label => "Outlaw Golf 2 PS2"}, + "olg2PS2" => {key => "", label => "Outlaw Golf 2 PS2"}, + "oltps2" => {key => "", label => "Outlaw Tennis PS2"}, + "olvps2" => {key => "", label => "Outlaw Volleyball PS2"}, + "olvps2" => {key => "", label => "Outlaw Volleyball Remix PS2"}, + "omfbattle" => {key => "", label => "One Must Fall Battlegrounds"}, + "omfbattleb" => {key => "", label => "One Must Fall Battlegrounds"}, + "omfbattlecp" => {key => "", label => "One Must Fall Battlegrounds (GMX)"}, + "omfbattled" => {key => "", label => "One Must Fall Battlergounds Demo"}, + "onslaughtpc" => {key => "", label => "Onslaught: War of the Immortals"}, + "onslaughtpcam" => {key => "", label => "Onslaught: War of the Immortals Automatch"}, + "onslaughtpcd" => {key => "", label => "Onslaught: War of the Immortals Demo"}, + "opblitz" => {key => "", label => "Operation Blitzsturm"}, + "openseasonds" => {key => "", label => "OpenSeason DS (DS)"}, + "opflash" => {key => "", label => "Operation Flashpoint"}, + "opflashd" => {key => "", label => "Operation Flashpoint Demo"}, + "opflashr" => {key => "", label => "Operation Flashpoint: Resistance"}, + "opfor" => {key => "", label => "Opposing Force"}, + "orb" => {key => "", label => "O.R.B."}, + "orbb" => {key => "", label => "O.R.B. Beta"}, + "orderofwarpc" => {key => "", label => "Order of War (PC)"}, + "orderofwarpcam" => {key => "", label => "Order of War Automatch (PC)"}, + "orderofwarpcd" => {key => "", label => "Order of War Demo (PC)"}, + "originalwar" => {key => "", label => "Original War"}, + "othellods" => {key => "", label => "Othello de Othello DS"}, + "othellowii" => {key => "", label => "Othello (WiiWare)"}, + "otonatrainds" => {key => "", label => "Imasara hitoniwa kikenai Otona no Jyoshikiryo"}, + "otonazenshuds" => {key => "", label => "Otona no DS Bungaku Zenshu (DS)"}, + "outlaws" => {key => "", label => "Outlaws"}, + "outlawsdem" => {key => "", label => "Outlaw Multiplay Demo"}, + "overturnwii" => {key => "", label => "Overturn (WiiWare)"}, + "owar" => {key => "", label => "Original War"}, + "pachgundamwii" => {key => "", label => "Pachisuro Kido Senshi Gundam Aisenshi Hen (Wi"}, + "painkiller" => {key => "", label => "Painkiller"}, + "painkillerd" => {key => "", label => "Painkiller Demo"}, + "painkillerod" => {key => "", label => "Painkiller Overdose"}, + "painkillerodam" => {key => "", label => "Painkiller Overdose Automatch"}, + "painkillerodd" => {key => "", label => "Painkiller Overdose Demo"}, + "painkilleroddam" => {key => "", label => "Painkiller Overdose Demo Automatch"}, + "painkillert" => {key => "", label => "Painkiller Multiplayer Test"}, + "painkresurrpc" => {key => "", label => "Painkiller Resurrection (PC)"}, + "painkresurrpcam" => {key => "", label => "Painkiller Resurrection Automatch (PC)"}, + "painkresurrpcd" => {key => "", label => "Painkiller Resurrection Demo (PC)"}, + "paintball" => {key => "", label => "Paintball"}, + "pandeponds" => {key => "", label => "Panel De Pon DS (DS)"}, + "pangmagmichds" => {key => "", label => "Pang: Magical Michael (DS)"}, + "panzergen2" => {key => "", label => "Panzer General"}, + "parabellumpc" => {key => "", label => "Parabellum (PC)"}, + "parabellumpcam" => {key => "", label => "Parabellum Automatch (PC)"}, + "parabellumpcd" => {key => "", label => "Parabellum Demo (PC)"}, + "parabellumpcdam" => {key => "", label => "Parabellum Demo Automatch (PC)"}, + "parabellumps3" => {key => "", label => "Parabellum (PS3)"}, + "parabellumps3am" => {key => "", label => "Parabellum Automatch (PS3)"}, + "paradisecity" => {key => "", label => "Paradise City"}, + "paraworld" => {key => "", label => "ParaWorld"}, + "paraworldam" => {key => "", label => "ParaWorld Automatch"}, + "paraworldd" => {key => "", label => "ParaWorld Demo"}, + "parcheesi" => {key => "", label => "Hasbro's Parcheesi"}, + "pariahpc" => {key => "", label => "Pariah (PC)"}, + "pariahpcd" => {key => "", label => "Pariah Demo (PC)"}, + "patchtest" => {key => "", label => "Patching Test"}, + "pb4" => {key => "", label => "Extreme Paintbrawl 4"}, + "pba2001" => {key => "", label => "PBA Bowling 2001"}, + "pba2001" => {key => "", label => "PBA Bowling 2001 PC & DC"}, + "pbellumr1" => {key => "", label => "Parabellum Region 1 (PC)"}, + "pbellumr2" => {key => "", label => "Parabellum Region 2 (PC)"}, + "pbellumr3" => {key => "", label => "Parabellum Region 3 (PC)"}, + "pbfqm" => {key => "", label => "PlanetBattlefield QuickMatch"}, + "pbfqm2" => {key => "", label => "PlanetBattlefield QuickMatch 2"}, + "pbfqmv" => {key => "", label => "PlanetBattlefield QuickMatch Vietnam"}, + "penginhimids" => {key => "", label => "Pengin himitsu oukoku (DS)"}, + "penginhimidsam" => {key => "", label => "Pengin himitsu oukoku Automatch (DS)"}, + "pente" => {key => "", label => "Hasbro's Pente"}, + "peoplesgen" => {key => "", label => "Peoples General"}, + "perimeter" => {key => "", label => "Perimeter"}, + "perimeterd" => {key => "", label => "Perimeter Demo"}, + "petz09ds" => {key => "", label => "Petz Catz/Dogz/Hamsterz/Babiez 2009 (DS)"}, + "phoenix" => {key => "", label => "Phoenix (Stainless Steel)"}, + "phybaltraiwii" => {key => "", label => "Physiofun Balance Trainer (WiiWare)"}, + "phylon" => {key => "", label => "Phylon"}, + "picrossds" => {key => "", label => "Picross (DS)"}, + "picrossEUds" => {key => "", label => "Picross (EU) (DS)"}, + "pitcrewwii" => {key => "", label => "Pit Crew Panic (WiiWare)"}, + "pkodgerman" => {key => "", label => "Painkiller Overdose (German)"}, + "pkodgermanam" => {key => "", label => "Painkiller Overdose Automatch (German)"}, + "pkodgermand" => {key => "", label => "Painkiller Overdose Demo (German)"}, + "plandmajinds" => {key => "", label => "Professor Layton and Majin no Fue (DS)"}, + "planecrazy" => {key => "", label => "Plane Crazy"}, + "planetside" => {key => "", label => "PlanetSide"}, + "playgroundds" => {key => "", label => "Playground (DS)"}, + "playgrounddsam" => {key => "", label => "Playground Automatch (DS)"}, + "plunderpc" => {key => "", label => "Age of Booty (PC)"}, + "plunderpcam" => {key => "", label => "Plunder Automatch (PC)"}, + "plunderpcd" => {key => "", label => "Plunder Demo (PC)"}, + "plunderps3" => {key => "", label => "Age of Booty (PS3)"}, + "plunderps3am" => {key => "", label => "Plunder Automatch (PS3)"}, + "plunderps3d" => {key => "", label => "Plunder Demo (PS3)"}, + "pnomads" => {key => "", label => "Project Nomads"}, + "pocketwrldds" => {key => "", label => "My Pocket World (DS)"}, + "pokebattlewii" => {key => "", label => "Pokemon Battle Revolution (Wii)"}, + "pokedngnwii" => {key => "", label => "Pokemon Dungeon (Wii)"}, + "pokedungeonds" => {key => "", label => "Pokemon Fushigi no Dungeon (DS)"}, + "pokemondpds" => {key => "", label => "Pokemon Diamond-Pearl (DS)"}, + "pokemonplatds" => {key => "", label => "Pokemon Platinum (DS)"}, + "pokerangerds" => {key => "", label => "Pokemon Ranger 2 (DS)"}, + "poolshark2pc" => {key => "", label => "Pool Shark 2 (PC)"}, + "poolshark2ps2" => {key => "", label => "Pool Shark 2 (PS2)"}, + "populoustb" => {key => "", label => "Populous: The Beginning"}, + "popwii" => {key => "", label => "Pop (WiiWare)"}, + "por2" => {key => "", label => "Pool of Radiance 2"}, + "poriginpc" => {key => "", label => "Fear 2: Project Origin (PC)"}, + "poriginpcam" => {key => "", label => "Fear 2: Project Origin Automatch (PC)"}, + "poriginpcd" => {key => "", label => "Fear 2: Project Origin Demo (PC)"}, + "poriginpcjp" => {key => "", label => "Fear 2: Project Origin (JP) (PC)"}, + "poriginpcjpam" => {key => "", label => "Fear 2: Project Origin Automatch (JP) (PC)"}, + "poriginpcjpd" => {key => "", label => "Fear 2: Project Origin Demo (JP) (PC)"}, + "poriginps3" => {key => "", label => "Fear 2: Project Origin (PS3)"}, + "poriginps3am" => {key => "", label => "Fear 2: Project Origin Automatch (PS3)"}, + "poriginps3d" => {key => "", label => "Fear 2: Project Origin Demo (PS3)"}, + "poriginps3jp" => {key => "", label => "Fear 2: Project Origin (JP) (PS3)"}, + "poriginps3jpam" => {key => "", label => "Fear 2: Project Origin Automatch (JP) (PS3)"}, + "poriginps3jpd" => {key => "", label => "Fear 2: Project Origin Demo (JP) (PS3)"}, + "postal2" => {key => "", label => "Postal 2"}, + "postal2d" => {key => "", label => "Postal 2 Demo"}, + "postpetds" => {key => "", label => "PostPetDS Yumemiru Momo to Fushigi no Pen (DS"}, + "potbs" => {key => "", label => "Pirates of the Burning Sea"}, + "potco" => {key => "", label => "Pirates of the Caribbean Online"}, + "PowaPPocketds" => {key => "", label => "PowaProkun Pocket10 (DS)"}, + "powerkoushds" => {key => "", label => "Powerful Koushien (DS)"}, + "powerpinconds" => {key => "", label => "Powershot Pinball Constructor (DS)"}, + "powerslide" => {key => "", label => "Powerslide"}, + "powerslide" => {key => "", label => "Powerslide v1.01"}, + "powprokundsi" => {key => "", label => "PowerPro-kun Pocket 13 (DSi)"}, + "powprokundsiam" => {key => "", label => "PowerPro-kun Pocket 13 Automatch (DSi)"}, + "ppirates" => {key => "", label => "Puzzle Pirates"}, + "ppkpocket11ds" => {key => "", label => "PowerPro-kun Pocket 11 (DS)"}, + "praetorians" => {key => "", label => "Praetorians"}, + "praetoriansd" => {key => "", label => "Praetorians Demo"}, + "prey" => {key => "", label => "Prey"}, + "preyd" => {key => "", label => "Prey Demo"}, + "preystarsds" => {key => "", label => "Prey The Stars (DS)"}, + "prismgs" => {key => "", label => "PRISM Guard Shield"}, + "prismgs" => {key => "", label => "PRISM: Guard Shield"}, + "prismgsd" => {key => "", label => "PRISM: Guard Shield Demo"}, + "projecteden" => {key => "", label => "Project Eden"}, + "projectigi2" => {key => "", label => "IGI 2: Covert Strike Demo"}, + "projectigi2d" => {key => "", label => "IGI 2: Covert Strike Demo (depreciated)"}, + "projectigi2r" => {key => "", label => "IGI 2 Covert Strike"}, + "propocket12ds" => {key => "", label => "PowerPro-kun Pocket 12 (DS)"}, + "protocolwii" => {key => "", label => "Protocol (WiiWare)"}, + "proyakyuds" => {key => "", label => "Pro Yakyu Famisute DS (DS)"}, + "pssake" => {key => "", label => "Professional Services Sake Test"}, + "psyintdevpc" => {key => "", label => "Psyonix Internal Development (PC)"}, + "psyintdevpcam" => {key => "", label => "Psyonix Internal Development Automatch (PC)"}, + "psyintdevpcd" => {key => "", label => "Psyonix Internal Development Demo (PC)"}, + "ptacticsds" => {key => "", label => "Panzer Tactics (DS)"}, + "pubdartswii" => {key => "", label => "Pub Darts (WiiWare)"}, + "puffinsds" => {key => "", label => "Puffins: Island Adventures (DS)"}, + "punchoutwii" => {key => "", label => "Punch-Out!! (Wii)"}, + "puyobomberds" => {key => "", label => "Puyo Puyo Bomber (DS)"}, + "puyopuyo7ds" => {key => "", label => "PuyoPuyo 7 (DS/Wii)"}, + "puyopuyo7wii" => {key => "", label => "Puyopuyo 7 (Wii)"}, + "puyopuyods" => {key => "", label => "Puyo Puyo! (DS)"}, + "puzquestds" => {key => "", label => "Puzzle Quest: Challenge of the Warlords (DS)"}, + "puzzlemojiwii" => {key => "", label => "Kotoba no Puzzle Moji Pittan Wii (WiiWare)"}, + "puzzleqt2ds" => {key => "", label => "Puzzle Quest 2 (DS)"}, + "puzzlernumds" => {key => "", label => "Puzzler Number Placing Fun & Oekaki Logic 2 ("}, + "puzzshangwii" => {key => "", label => "Puzzle Games Shanghai Wii (WiiWare)"}, + "q3tademo" => {key => "", label => "Team Arena Demo"}, + "q3tafull" => {key => "", label => "Team Arena Retail"}, + "qlione" => {key => "", label => "Qlione"}, + "qsolace" => {key => "", label => "Quantum of Solace"}, + "quake1" => {key => "", label => "Quake"}, + "quake2" => {key => "", label => "Quake II"}, + "quake3" => {key => "", label => "Quake 3: Arena"}, + "quake4" => {key => "", label => "Quake 4"}, + "quakewarset" => {key => "", label => "Enemy Territory: Quake Wars"}, + "quakewarsetb" => {key => "", label => "Enemy Territory: Quake Wars Beta"}, + "quakewarsetd" => {key => "", label => "Enemy Territory: Quake Wars Demo"}, + "quakeworld" => {key => "", label => "Quakeworld"}, + "quizmagic2ds" => {key => "", label => "Quiz Magic Academy DS2 (DS)"}, + "quizmagicds" => {key => "", label => "Quiz Magic Academy DS (DS)"}, + "ra2" => {key => "", label => "Rocket Arena 2"}, + "ra3" => {key => "", label => "Rocket Arena 3"}, + "Rabgohomewii" => {key => "", label => "Rabbids Go Home (Wii)"}, + "racedriver" => {key => "", label => "TOCA Race Driver"}, + "racedriver2" => {key => "", label => "Race Driver 2"}, + "racedriver2d" => {key => "", label => "Race Driver 2 Demo"}, + "racedriver2ps2" => {key => "", label => "Race Driver 2 (PS2)"}, + "racedriver2ps2" => {key => "", label => "Race Driver 2 PS2"}, + "racedriver3pc" => {key => "", label => "Race Driver 3 (PC)"}, + "racedriver3pcd" => {key => "", label => "Race Driver 3 Demo (PC)"}, + "racedriverd" => {key => "", label => "Race Driver Demo"}, + "racedriverds" => {key => "", label => "Race Driver (DS)"}, + "rachelwood" => {key => "", label => "Rachel Wood Test Game Name"}, + "racko" => {key => "", label => "Hasbro's Rack-O"}, + "racko" => {key => "", label => "Hasbro's Racko"}, + "radiohitzwii" => {key => "", label => "Radiohitz: Guess That Song! (WiiWare)"}, + "rafcivatwar" => {key => "", label => "Rise And Fall: Civilizations at War"}, + "rafcivatwaram" => {key => "", label => "Rise And Fall: Civilizations at War (automatc"}, + "rafcivatwart" => {key => "", label => "Rise And Fall: Civilizations at War Test"}, + "rafcivatwartam" => {key => "", label => "Rise And Fall: Civilizations at War Test Auto"}, + "ragonlineKRds" => {key => "", label => "Ragunaroku Online DS (KOR) (DS)"}, + "ragonlinenads" => {key => "", label => "Ragunaroku Online DS (NA) (DS)"}, + "ragunonlineds" => {key => "", label => "Ragunaroku Online DS (DS)"}, + "railsam" => {key => "", label => "Rails Across America"}, + "railsamd" => {key => "", label => "Rails Across America Demo"}, + "railty2" => {key => "", label => "Railroad Tycoon II"}, + "railty3" => {key => "", label => "Railroad Tycoon 3"}, + "rainbowislwii" => {key => "", label => "Rainbow Island Tower! (WiiWare)"}, + "rainbowsixv" => {key => "", label => "Rainbow Six Vegas"}, + "rally" => {key => "", label => "Rally Masters"}, + "rallychamp" => {key => "", label => "Mobil1 Rally Championship"}, + "rallychampx" => {key => "", label => "Rally Championship Extrem"}, + "rallytrophy" => {key => "", label => "Rally Trophy"}, + "ras" => {key => "", label => "Red Ace Squadron"}, + "ravenshield" => {key => "", label => "Raven Shield"}, + "ravenshieldas" => {key => "", label => "Raven Shield: Athena's Sword"}, + "raw2009wii" => {key => "", label => "WWE Smackdown! vs RAW 2009 (Wii)"}, + "raymanrr2wii" => {key => "", label => "Rayman Raving Rabbids 2 (Wii)"}, + "raymanRR3wii" => {key => "", label => "Rayman Raving Rabbids 3 (Wii)"}, + "rb6" => {key => "", label => "Rainbow Six"}, + "rb6" => {key => "", label => "Tom Clancy's Rainbow Six"}, + "rbeaverdefwii" => {key => "", label => "Robocalypse - Beaver Defense (WiiWare)"}, + "rdgridds" => {key => "", label => "Race Driver: Grid (DS)"}, + "rdpoker" => {key => "", label => "Reel Deal Poker"}, + "rdr2ps3" => {key => "", label => "Red Dead Redemption (PS3)"}, + "rdr2ps3am" => {key => "", label => "Red Dead Redemption Automatch (PS3)"}, + "rdr2x360" => {key => "", label => "Red Dead Redemption (x360)"}, + "rdr2x360am" => {key => "", label => "Red Dead Redemption Automatch (x360)"}, + "rdriver3ps2" => {key => "", label => "Race Driver 3 (PS2)"}, + "rdriver3ps2d" => {key => "", label => "Race Driver 3 Demo (PS2)"}, + "realwar" => {key => "", label => "Real War"}, + "realwarrs" => {key => "", label => "Real War: Rogue States"}, + "realwarrsd" => {key => "", label => "Real War: Rogue States De"}, + "rebellion" => {key => "", label => "Star Wars Rebellion"}, + "redalert" => {key => "", label => "Red Alert"}, + "redalert2" => {key => "", label => "Red Alert 2"}, + "redalert2exp" => {key => "", label => "Red Alert 2: Yuris Reveng"}, + "redalert3pc" => {key => "", label => "Command & Conquer Red Alert 3"}, + "redalert3pc" => {key => "", label => "Red Alert 3 (PC)"}, + "redalert3pcam" => {key => "", label => "Red Alert 3 Automatch (PC)"}, + "redalert3pcb" => {key => "", label => "Command & Conquer Red Alert 3 Beta"}, + "redalert3pcb" => {key => "", label => "Red Alert 3 Beta (PC)"}, + "redalert3pcbam" => {key => "", label => "Red Alert 3 Beta (PC) Automatch"}, + "redalert3pcbmb" => {key => "", label => "Red Alert 3 Beta (PC) Match Broadcast"}, + "redalert3pccd" => {key => "", label => "Red Alert 3 (PC, CDKey)"}, + "redalert3pccdam" => {key => "", label => "Red Alert 3 Automatch (PC, CDKey)"}, + "redalert3pcd" => {key => "", label => "Red Alert 3 Demo (PC)"}, + "redalert3pcdam" => {key => "", label => "Red Alert 3 Demo Automatch (PC)"}, + "redalert3pcdmb" => {key => "", label => "Red Alert 3 Demo (PC) Match Broadcast"}, + "redalert3pcmb" => {key => "", label => "Red Alert 3 (PC) Match Broadcast"}, + "redalert3ps3" => {key => "", label => "Red Alert 3 (PS3)"}, + "redalert3ps3am" => {key => "", label => "Red Alert 3 Automatch (PS3)"}, + "redbaronps3" => {key => "", label => "Red Baron WWI (PS3)"}, + "redbaronps3am" => {key => "", label => "Red Baron WWI Automatch (PS3)"}, + "redbaronww1" => {key => "", label => "Red Baron"}, + "redbaronww1" => {key => "", label => "Red Baron WWI"}, + "redfactionwii" => {key => "", label => "Red Faction Wii (Wii)"}, + "redline" => {key => "", label => "Redline"}, + "redlinenet" => {key => "", label => "Redline Multi-Player Inst"}, + "redorchestra" => {key => "", label => "Red Orchestra Ostfront"}, + "redsteel2wii" => {key => "", label => "Red Steel 2 (Wii)"}, + "regimentpc" => {key => "", label => "The Regiment PC"}, + "regimentps2" => {key => "", label => "The Regiment PS2"}, + "reichpc" => {key => "", label => "Reich (PC)"}, + "reichpcam" => {key => "", label => "Reich Automatch (PC)"}, + "reichps3" => {key => "", label => "Reich (PS3)"}, + "reichps3am" => {key => "", label => "Reich Automatch (PS3) Clone"}, + "reloadpc" => {key => "", label => "Reload PC"}, + "reloadpcam" => {key => "", label => "Reload PC Automatch"}, + "reloadtdwii" => {key => "", label => "Reload: Target Down (Wii)"}, + "reloadtdwiiam" => {key => "", label => "Reload: Target Down Automatch (Wii)"}, + "renegadebf" => {key => "", label => "Renegade Battlefield"}, + "resevildrkwii" => {key => "", label => "Resident Evil: The Darkside Chronicles (Wii)"}, + "revolt" => {key => "", label => "Re-Volt"}, + "revolt" => {key => "", label => "Revolt"}, + "revolution" => {key => "", label => "Revolution"}, + "rfactory2ds" => {key => "", label => "Rune Factory 2 (DS)"}, + "rfactory3ds" => {key => "", label => "Rune Factory 3 (DS)"}, + "rfactoryEUds" => {key => "", label => "Rune Factory: A Fantasy Harverst Moon (EU) (D"}, + "rfactoryKRds" => {key => "", label => "Rune Factory: A Fantasy Harverst Moon (KOR) ("}, + "rfberlin" => {key => "", label => "Rush for Berlin"}, + "rfgrlaonlive" => {key => "", label => "Red Faction Guerrilla ONLIVE"}, + "rfgrlaonliveam" => {key => "", label => "Red Faction Guerrilla ONLIVE Automatch"}, + "rftbomb" => {key => "", label => "Rush for the Bomb"}, + "rfts" => {key => "", label => "Reach For The Stars"}, + "riseofnations" => {key => "", label => "Rise of Nations"}, + "riseofnationsam" => {key => "", label => "Rise of Nations Auto-Matching"}, + "risingeagleg" => {key => "", label => "Rising Eagle"}, + "risingeaglepc" => {key => "", label => "Rising Eagle"}, + "risk" => {key => "", label => "Risk"}, + "risk" => {key => "", label => "Risk C.1997"}, + "risk2" => {key => "", label => "Risk II"}, + "riskingdoms" => {key => "", label => "Rising Kingdoms"}, + "riskingdomsam" => {key => "", label => "Rising Kingdoms Automatch"}, + "riskingdomsd" => {key => "", label => "Rising Kingdoms demo"}, + "riskingdomsd" => {key => "", label => "Rising KIngdoms Demo"}, + "riskps2dis" => {key => "", label => "Risk (PS2)"}, + "ritesofwar" => {key => "", label => "Warhammer: Rites of War"}, + "RKMvalleyds" => {key => "", label => "River King: Mystic Valley (DS)"}, + "rman2blkredds" => {key => "", label => "Ryusei no Rockman 3: Black Ace / Red Joker (J"}, + "rmth2003" => {key => "", label => "Trophy Hunter 2003"}, + "rmth3" => {key => "", label => "Rocky Mountain Trophy Hunter 3"}, + "rnconsole" => {key => "", label => "Real Networks Console"}, + "rnconsole" => {key => "", label => "RealArcade"}, + "roadwars" => {key => "", label => "Road Wars"}, + "robolypsewii" => {key => "", label => "Robocalypse (WiiWare)"}, + "robotarena2" => {key => "", label => "Robot Arena 2"}, + "robotech2" => {key => "", label => "Robotech 2 (PS2)"}, + "rock" => {key => "", label => "Rock"}, + "rockmanBSDds" => {key => "", label => "Rockman 2 - Berserk: Shinobi / Dinosaur (DS)"}, + "rockmanwds" => {key => "", label => "Rockman WAVES (DS)"}, + "rockstardev" => {key => "", label => "Rockstar Development"}, + "rockstardevam" => {key => "", label => "Rockstar Development Automatch"}, + "rockstarsclub" => {key => "", label => "Rockstar Social Club"}, + "rockstarsclubam" => {key => "", label => "Rockstar Social Club Automatch"}, + "rof" => {key => "", label => "Rise of Legends"}, + "rofam" => {key => "", label => "Rise of Legends Automatching"}, + "rogerwilco" => {key => "", label => "Roger Wilco"}, + "roguespear" => {key => "", label => "Rogue Spear"}, + "roguespeard" => {key => "", label => "Rogue Spear Demo"}, + "roguewarpc" => {key => "", label => "Rogue Warrior (PC)"}, + "roguewarpcam" => {key => "", label => "Rogue Warrior Automatch (PC)"}, + "roguewarpcd" => {key => "", label => "Rogue Warrior Demo (PC)"}, + "roguewarps3" => {key => "", label => "Rogue Warrior (PS3)"}, + "roguewarps3am" => {key => "", label => "Rogue Warrior Automatch (PS3)"}, + "roguewarps3d" => {key => "", label => "Rogue Warrior Demo (PS3)"}, + "rometw" => {key => "", label => "Rome: Total War"}, + "ronb" => {key => "", label => "Rise of Nations Beta"}, + "ronbam" => {key => "", label => "Rise of Nations Beta Automatching"}, + "rontp" => {key => "", label => "Rise of Nations: Throne and Patriots"}, + "rontpam" => {key => "", label => "Rise of Nations: Throne and Patriots"}, + "rook" => {key => "", label => "Hasbro's Rook"}, + "rpgtkooldsi" => {key => "", label => "RPG tkool DS (DSi)"}, + "rrt2scnd" => {key => "", label => "Railroad Tycoon II - The"}, + "rsblackthorn" => {key => "", label => "Rogue Spear: Black Thorn"}, + "rsblackthornd" => {key => "", label => "Black Thorn Demo"}, + "rscovertops" => {key => "", label => "Rainbow Six: Covert Ops"}, + "rsurbanops" => {key => "", label => "Rogue Spear: Urban Ops"}, + "rtcw" => {key => "", label => "Return to Castle Wolfenstein"}, + "rtcwet" => {key => "", label => "Wolfenstein: Enemy Territory"}, + "rtcwett" => {key => "", label => "Wolfenstein: Enemy Territory Test"}, + "rtcwtest" => {key => "", label => "Wolfenstein MP Test"}, + "rtlwspor11wii" => {key => "", label => "RTL Winter Sports 2011 (Wii)"}, + "rtlwspor11wiiam" => {key => "", label => "RTL Winter Sports 2011 Automatch (Wii)"}, + "rtlwsportswii" => {key => "", label => "RTL Winter Sports 2010 (Wii)"}, + "rtrooperpc" => {key => "", label => "Rogue Trooper (PC)"}, + "rtrooperpcam" => {key => "", label => "Rogue Trooper Automatch (PC)"}, + "rtrooperps2" => {key => "", label => "Rogue Trooper (PS2)"}, + "rubikguidewii" => {key => "", label => "Rubik's Puzzle World: Guide (WiiWare)"}, + "rulesotg" => {key => "", label => "Rules of the Game"}, + "rune" => {key => "", label => "Rune"}, + "runedemo" => {key => "", label => "Rune Demo"}, + "runefactoryds" => {key => "", label => "Rune Factory (DS)"}, + "runefantasyds" => {key => "", label => "Rune Factory: A Fantasy Harvest Moon (DS)"}, + "ryantest" => {key => "", label => "Ryan'st test gamename"}, + "ryantestam" => {key => "", label => "Ryan'st test gamename Automatch"}, + "s_cssource" => {key => "", label => "Counter-Strike Source"}, + "s_cstrikecz" => {key => "", label => "Steam Counter-Strike Condition Zero"}, + "s_darkmmm" => {key => "", label => "Dark Messiah of Might and Magic"}, + "s_GalacticBowli" => {key => "", label => "Galactic Bowling"}, + "s_hl2dm" => {key => "", label => "s_hl2dm"}, + "s_l4d" => {key => "", label => "Steam Left 4 Dead"}, + "s_tf2" => {key => "", label => "Team Fortress 2"}, + "saadtest" => {key => "", label => "SaadsTest"}, + "saadtestam" => {key => "", label => "SaadsTest"}, + "sacrifice" => {key => "", label => "Sacrifice"}, + "sakatsukuds" => {key => "", label => "Sakatsuku DS (DS)"}, + "sakuraTDDds" => {key => "", label => "Sakura Taisen Dramatic Dungeon - Kimiarugatam"}, + "sakwcha2010ds" => {key => "", label => "Sakatsuku DS WorldChallenge 2010 (DS)"}, + "SampAppTest" => {key => "", label => "Sample App Developement"}, + "SampAppTestam" => {key => "", label => "Sample App Developement Automatch"}, + "sandbags" => {key => "", label => "Sandbags and Bunkers"}, + "sangotends" => {key => "", label => "Sangokushitaisen Ten (DS)"}, + "sanity" => {key => "", label => "Sanity"}, + "sanitybeta" => {key => "", label => "Sanity public beta"}, + "sanitydemo" => {key => "", label => "Sanity Demo"}, + "santietam" => {key => "", label => "Sid Meiers Antietam"}, + "saspc" => {key => "", label => "SAS (PC)"}, + "saspcam" => {key => "", label => "SAS Automatch (PC)"}, + "saturdayns" => {key => "", label => "Saturday Night Speedway"}, + "saturdaynsd" => {key => "", label => "Saturday Night Speedway Demo"}, + "sawpc" => {key => "", label => "SAW (PC)"}, + "sawpcam" => {key => "", label => "SAW Automatch (PC)"}, + "sawpcd" => {key => "", label => "SAW Demo (PC)"}, + "sawps3" => {key => "", label => "SAW (PS3)"}, + "sawps3am" => {key => "", label => "SAW Automatch (PS3)"}, + "sawps3d" => {key => "", label => "SAW Demo (PS3)"}, + "sballrevwii" => {key => "", label => "Spaceball: Revolution (WiiWare)"}, + "sbk08pc" => {key => "", label => "SBK '08: Superbike World Championship (PC)"}, + "sbk08pcam" => {key => "", label => "SBK '08: Superbike World Championship Automa"}, + "sbk08pcd" => {key => "", label => "SBK '08: Superbike World Championship Demo ("}, + "sbk08ps3" => {key => "", label => "SBK '08: Superbike World Championship (PS3)"}, + "sbk08ps3am" => {key => "", label => "SBK '08: Superbike World Championship Automa"}, + "sbk09pc" => {key => "", label => "SBK '09 (PC)"}, + "sbk09pc" => {key => "", label => "SBK 09: Superbike World Championship"}, + "sbk09pcam" => {key => "", label => "SBK '09 Automatch (PC)"}, + "sbk09ps3" => {key => "", label => "SBK '09 (PS3)"}, + "sbk09ps3am" => {key => "", label => "SBK '09 Automatch (PS3)"}, + "sbk09usps3" => {key => "", label => "SBK '09 (US) (PS3)"}, + "sbk09usps3am" => {key => "", label => "SBK '09 Automatch (US) (PS3)"}, + "sbk09usps3d" => {key => "", label => "SBK '09 Demo (US) (PS3)"}, + "sbkUSpc" => {key => "", label => "SBK '08 (US) (PC)"}, + "sbkUSpcam" => {key => "", label => "SBK '08 Automatch (US) (PC)"}, + "sbkUSpcd" => {key => "", label => "SBK '08 Demo (US) (PC)"}, + "sbkUSps3" => {key => "", label => "SBK '08 (US) (PS3)"}, + "sbkUSps3am" => {key => "", label => "SBK '08 Automatch (US) (PS3)"}, + "sbkUSps3d" => {key => "", label => "SBK '08 Demo (US) (PS3)"}, + "sbkxpc" => {key => "", label => "SBK X: Superbike World Championship (PC)"}, + "sbkxpcam" => {key => "", label => "SBK X: Superbike World Championship Automatc"}, + "sbkxpcd" => {key => "", label => "SBK X: Superbike World Championship Demo (UN"}, + "sbkxpcdemo" => {key => "", label => "SBK X: Superbike World Championship Demo (PC"}, + "sbkxpcdemoam" => {key => "", label => "SBK X: Superbike World Championship Demo Au"}, + "sbkxps3" => {key => "", label => "SBK X: Superbike World Championship (PS3)"}, + "sbkxps3am" => {key => "", label => "SBK X: Superbike World Championship Automatc"}, + "sbkxps3d" => {key => "", label => "SBK X: Superbike World Championship Demo (UN"}, + "sbkxps3demo" => {key => "", label => "SBK X: Superbike World Championship Demo (PS3"}, + "sbkxps3demoam" => {key => "", label => "SBK X: Superbike World Championship Demo Aut"}, + "sbkxusps3" => {key => "", label => "SBKX PS3 - USA"}, + "sbkxusps3am" => {key => "", label => "SBKX PS3 - USA Automatch"}, + "sbubpop" => {key => "", label => "Super Bubble Pop"}, + "scompany" => {key => "", label => "Shadow Company"}, + "scotttest" => {key => "", label => "Scott's test gamename"}, + "scotttestam" => {key => "", label => "Scott's test gamename Automatch"}, + "scourgepc" => {key => "", label => "The Scourge Project (PC)"}, + "scourgepcam" => {key => "", label => "The Scourge Project Automatch (PC)"}, + "scourgepcd" => {key => "", label => "The Scourge Project Demo (PC)"}, + "scourgeps3" => {key => "", label => "The Scourge Project (PS3)"}, + "scourgeps3am" => {key => "", label => "The Scourge Project Automatch (PS3)"}, + "scourgeps3d" => {key => "", label => "The Scourge Project Demo (PS3)"}, + "scourgerpc" => {key => "", label => "The Scourge Project: Renaissance PC"}, + "scourgerpcam" => {key => "", label => "The Scourge Project: Renaissance PC Automatch"}, + "scrabble" => {key => "", label => "Scrabble"}, + "scrabble3" => {key => "", label => "Scrabble 3"}, + "scrabbledel" => {key => "", label => "Scrabble Deluxe"}, + "scrabbleo" => {key => "", label => "Scrabble Online"}, + "scratchdjpc" => {key => "", label => "Scratch: The Ultimate DJ (PC)"}, + "scratchdjpcam" => {key => "", label => "Scratch: The Ultimate DJ Automatch (PC)"}, + "scrbnateu2ds" => {key => "", label => "Scribblenauts 2 (EU) (DS)"}, + "scrbnatot2ds" => {key => "", label => "Scribblenauts 2 (Other) (DS)"}, + "scribnaut2ds" => {key => "", label => "Scribblenauts 2 (DS)"}, + "scribnaut2dsam" => {key => "", label => "Scribblenauts 2 Automatch (DS)"}, + "scribnaut2pc" => {key => "", label => "Scribblenauts 2 (PC)"}, + "scribnaut2pcam" => {key => "", label => "Scribblenauts 2 Automatch (PC)"}, + "scribnaut2wii" => {key => "", label => "Scribblenauts 2 (Wii)"}, + "scribnauteuds" => {key => "", label => "Scribblenauts (EU) (DS)"}, + "scribnautjpds" => {key => "", label => "Scribblenauts (JP) (DS)"}, + "scribnautsds" => {key => "", label => "Scribblenauts (DS)"}, + "scsdw" => {key => "", label => "S.C.S. Dangerous Waters"}, + "scsdwd" => {key => "", label => "S.C.S. Dangerous Waters Demo"}, + "scsdws" => {key => "", label => "S.C.S. Dangerous Waters Steam"}, + "sdamigowii" => {key => "", label => "Samba de Amigo (Wii)"}, + "seafarmwii" => {key => "", label => "Seafarm (WiiWare)"}, + "secondlife" => {key => "", label => "Second Life"}, + "section8pc" => {key => "", label => "Section 8 (PC)"}, + "section8pcam" => {key => "", label => "Section 8 Automatch (PC)"}, + "section8pcb" => {key => "", label => "Section 8 Beta (PC)"}, + "section8pcbam" => {key => "", label => "Section 8 Beta Automatch (PC)"}, + "section8pcbd" => {key => "", label => "Section 8 Beta Demo (PC)"}, + "section8pcd" => {key => "", label => "Section 8 Demo (PC)"}, + "section8ps3" => {key => "", label => "Section 8 (PS3)"}, + "section8ps3am" => {key => "", label => "Section 8 Automatch (PS3)"}, + "section8ps3d" => {key => "", label => "Section 8 Demo (PS3)"}, + "section8x360" => {key => "", label => "Section 8 (Xbox360)"}, + "section8x360am" => {key => "", label => "Section 8 Automatch (Xbox360)"}, + "section8x360d" => {key => "", label => "Section 8 Demo (Xbox360)"}, + "segaracingds" => {key => "", label => "Sega Superstars Racing (DS)"}, + "segaracingwii" => {key => "", label => "Sega Superstars Racing (Wii)"}, + "segarally2" => {key => "", label => "Sega Rally 2"}, + "segarally2" => {key => "", label => "Sega Rally Championship 2"}, + "segatennisps3" => {key => "", label => "Sega SuperStars Tennis (PS3)"}, + "segatennisps3am" => {key => "", label => "Sega SuperStars Tennis Automatch"}, + "sekainodokods" => {key => "", label => "Sekai no Dokodemo Shaberu! DS Oryori Navi (DS"}, + "sengo3wii" => {key => "", label => "Sengokumuso 3"}, + "sengo3wiijp" => {key => "", label => "Sengoku Musou3 Moushoden"}, + "serioussam" => {key => "", label => "Serious Sam"}, + "serioussam2" => {key => "", label => "Serious Sam 2 PC"}, + "serioussam2d" => {key => "", label => "Serious Sam 2 Demo"}, + "serioussamps2" => {key => "", label => "Serious Sam (PS2)"}, + "serioussamse" => {key => "", label => "Serious Sam: Second Encounter"}, + "serioussamsed" => {key => "", label => "Serious Sam: Second Encounter Demo"}, + "SF3PS3PSrv" => {key => "", label => "ProfServ - SF3 Test (PS3)"}, + "SF3PS3PSrvam" => {key => "", label => "ProfServ - SF3 Test Automatch (PS3)"}, + "SF3PS3PSrvmb" => {key => "", label => "ProfServ - SF3 Test Broadcast (PS3)"}, + "SF3RemiXbox" => {key => "", label => "Street Fighter 3 Remix (Xbox360)"}, + "SF3RemiXboxam" => {key => "", label => "Street Fighter 3 Remix Automatch (Xbox360)"}, + "SF3RemiXboxmb" => {key => "", label => "Street Fighter 3 Remix Match Broadcast (Xbox3"}, + "SF3RemixPS3" => {key => "", label => "Street Fighter 3 Remix (PS3)"}, + "SF3RemixPS3am" => {key => "", label => "Street Fighter 3 Remix Automatch (PS3)"}, + "SF3RemixPS3mb" => {key => "", label => "Street Fighter 3 Remix Match Broadcast (PS3)"}, + "SF3RemixXbox" => {key => "", label => "Street Fighter 3 Remix (Xbox360)"}, + "SF3RemixXboxam" => {key => "", label => "Street Fighter 3 Remix Automatch (Xbox360)"}, + "SF3XboxPSrv" => {key => "", label => "ProfServ - SF3 Test"}, + "SF3XboxPSrvam" => {key => "", label => "ProfServ - SF3 Test Automatch"}, + "SF3XboxPSrvmb" => {key => "", label => "ProfServ - SF3 Test Broadcast (Xbox)"}, + "sfc" => {key => "", label => "Starfleet Command"}, + "sfc2dv" => {key => "", label => "Starfleet Command 2: Empires At War Dynaverse"}, + "sfc2op" => {key => "", label => "Starfleet Command: Orion"}, + "sfc2opdv" => {key => "", label => "Starfleet Command II: Orion Pirates (Dynavers"}, + "sfc3" => {key => "", label => "Starfleet Command III"}, + "sfc3dv" => {key => "", label => "Starfleet Command III (Dynaverse)"}, + "sfc3dv" => {key => "", label => "Starfleet Command III Dynaverse"}, + "sfcdemo" => {key => "", label => "Starfleet Command Demo"}, + "sforces" => {key => "", label => "Special Forces"}, + "shadowforce" => {key => "", label => "Shadow Force: Razor Unit"}, + "sharpshooter" => {key => "", label => "Sharp Shooter"}, + "shatteredunion" => {key => "", label => "Shattered Union"}, + "shikagariwii" => {key => "", label => "Shikagari (Wii)"}, + "shirends2ds" => {key => "", label => "Fushigi no Dungeon: Furai no Shiren DS2 (DS)"}, + "shirenUSEUds" => {key => "", label => "Mysterious Dungeon: Shiren the Wanderer DS (U"}, + "shogiwii" => {key => "", label => "Shogi (Wii) (WiiWare)"}, + "shogo" => {key => "", label => "Shogo"}, + "shootantowii" => {key => "", label => "Shootanto (Wii)"}, + "siextremeds" => {key => "", label => "Space Invaders Extreme"}, + "silenthunter2" => {key => "", label => "Silent Hunter 2"}, + "simcitywii" => {key => "", label => "SimCity Creator (Wii)"}, + "simplejudowii" => {key => "", label => "Simple The Ju-Do (WiiWare)"}, + "simsflyerswii" => {key => "", label => "MySims Flyers (Wii)"}, + "simspartywii" => {key => "", label => "MySims Party (Wii)"}, + "simsportsds" => {key => "", label => "MySims Sports (DS)"}, + "simsportswii" => {key => "", label => "MySims Sports (Wii)"}, + "simsraceEUds" => {key => "", label => "MySims Racing DS (EU) (DS)"}, + "simsraceJPNds" => {key => "", label => "MySims Racing DS (JPN) (DS)"}, + "simsracingds" => {key => "", label => "MySims Racing DS (DS)"}, + "sin" => {key => "", label => "Sin"}, + "sinmac" => {key => "", label => "Sin (Mac)"}, + "sinpun2NAwii" => {key => "", label => "Sin & Punishment 2 NA (Wii)"}, + "sinpunish2wii" => {key => "", label => "Sin & Punishment 2 (Wii)"}, + "skateitds" => {key => "", label => "Skate It (DS)"}, + "slancerdc" => {key => "", label => "Starlancer DC"}, + "slancerdc" => {key => "", label => "Starlancer: Dreamcast"}, + "slavezero" => {key => "", label => "Slave Zero"}, + "slclothingds" => {key => "", label => "Style Lab: Clothing (DS)"}, + "slclothingdsam" => {key => "", label => "Style Lab: Clothing Automatch (DS)"}, + "slugfest06ps2" => {key => "", label => "Slugfest '06 (PS2)"}, + "slugfestps2" => {key => "", label => "Slugfest Pro (PS2)"}, + "smackdn2ps2" => {key => "", label => "WWE Smackdown vs RAW 2 (PS2)"}, + "smackdn2ps2kor" => {key => "", label => "WWE Smackdown vs RAW 2 Korea (PS2)"}, + "smackdn2ps2pal" => {key => "", label => "WWE Smackdown vs RAW 2 PAL (PS2)"}, + "smackdnps2" => {key => "", label => "WWE Smackdown vs RAW (PS2) Sony Beta"}, + "smackdnps2kor" => {key => "", label => "WWE Smackdown vs RAW (PS2) Korean"}, + "smackdnps2pal" => {key => "", label => "WWE Smackdown vs RAW (PS2) PAL"}, + "smackdnps2palr" => {key => "", label => "WWE Smackdown vs RAW (PS2) PAL Retail"}, + "smackdnps2r" => {key => "", label => "WWE Smackdown vs RAW (PS2) Retail"}, + "smashbrosxwii" => {key => "", label => "Dairantou Smash Brothers X (Wii)"}, + "smball2iph" => {key => "", label => "Super Monkey Ball 2 (iPhone)"}, + "smball2ipham" => {key => "", label => "Super Monkey Ball 2 Automatch (iPhone)"}, + "smball2iphd" => {key => "", label => "Super Monkey Ball 2 Demo (iPhone)"}, + "smgettysbu" => {key => "", label => "Sid Meier's Gettysburg"}, + "smrailroads" => {key => "", label => "Sid Meier's Railroads!"}, + "smrailroadsjp" => {key => "", label => "Sid Meier's Railroads! Japan"}, + "smrailroadsjpam" => {key => "", label => "Sid Meier's Railroads! Japan Automatch"}, + "snackdsi" => {key => "", label => "Snack (DSiWare)"}, + "sneeziesdsw" => {key => "", label => "Sneezies (DSiWare)"}, + "sneeziesdswam" => {key => "", label => "Sneezies Automatch (DSiWare)"}, + "sneezieswiiw" => {key => "", label => "Sneezies (WiiWare)"}, + "snightxds" => {key => "", label => "Summon Night X (DS)"}, + "sniperelpc" => {key => "", label => "Sniper Elite"}, + "sniperelpc" => {key => "", label => "Sniper Elite (PC)"}, + "sniperelps2" => {key => "", label => "Sniper Elite (PS2)"}, + "snooker2003" => {key => "", label => "Snooker 2003"}, + "soa" => {key => "", label => "Soldiers of Anarchy"}, + "soad" => {key => "", label => "Soldiers of Anarchy Demo"}, + "soccerjamds" => {key => "", label => "Soccer Jam (DS)"}, + "socelevends" => {key => "", label => "World Soccer Winning Eleven DS (DS)"}, + "sof" => {key => "", label => "Soldier of Fortune"}, + "sof2" => {key => "", label => "Soldier of Fortune 2"}, + "sof2demo" => {key => "", label => "Soldier of Fortune 2 Demo"}, + "sofretail" => {key => "", label => "Soldier of Fortune: Retail"}, + "soldiersww2" => {key => "", label => "Soldiers: Heroes of World War II"}, + "sonic2010ds" => {key => "", label => "SONIC 2010 (DS)"}, + "sonic2010dsam" => {key => "", label => "SONIC 2010 Automatch (DS)"}, + "sonic2010wii" => {key => "", label => "SONIC 2010 (Wii)"}, + "sonic2010wiiam" => {key => "", label => "SONIC 2010 Automatch (Wii)"}, + "sonicbkwii" => {key => "", label => "Sonic and the Black Knight (Wii)"}, + "sonicdlwii" => {key => "", label => "Sonic DL (WiiWare)"}, + "sonicrkords" => {key => "", label => "Sonic Rush Adventure (KOR) (DS)"}, + "sonicrushads" => {key => "", label => "Sonic Rush Adventure (DS)"}, + "sonoatest" => {key => "", label => "Sonoa Test Gamename"}, + "sonoatestam" => {key => "", label => "Sonoa Test Gamename Automatch"}, + "sonriders2wii" => {key => "", label => "Sonic Riders 2 (Wii)"}, + "source" => {key => "", label => "Half Life 2"}, + "southpark" => {key => "", label => "South Park"}, + "spacepod" => {key => "", label => "SpacePod"}, + "spacepodd" => {key => "", label => "Space Pod Demo"}, + "spaceremixds" => {key => "", label => "Space Invaders Extreme Remix (DS)"}, + "spades" => {key => "", label => "Hasbro's Spades"}, + "sparta2pc" => {key => "", label => "Sparta 2: The Conquest of Alexander the Great"}, + "sparta2pcam" => {key => "", label => "Sparta 2: The Conquest of Alexander the Great"}, + "sparta2pcd" => {key => "", label => "Sparta 2: The Conquest of Alexander the Great"}, + "spartaaw" => {key => "", label => "Sparta: Ancient Wars"}, + "spartaawd" => {key => "", label => "Sparta: Ancient Wars Demo"}, + "spartan" => {key => "", label => "Spartan & Spartan"}, + "spartand" => {key => "", label => "Spartan Demo"}, + "spbobbleds" => {key => "", label => "Space Puzzle Bobble (DS)"}, + "spcell3coop" => {key => "", label => "Splinter Cell 3 CoOp"}, + "specialforces" => {key => "", label => "Special Forces"}, + "specops" => {key => "", label => "Spec Ops"}, + "spectro2wii" => {key => "", label => "Spectrobes 2 (Wii)"}, + "spectrobes2ds" => {key => "", label => "Kaseki Choshinka Spectrobes 2 (DS)"}, + "spellforce" => {key => "", label => "Spellforce"}, + "spellforced" => {key => "", label => "Spellforce Demo"}, + "spinvgewii" => {key => "", label => "Space Invaders: Get Even (WiiWare)"}, + "splintcellchaos" => {key => "", label => "splintcellchaos"}, + "spoilsofwar" => {key => "", label => "Spoils of War"}, + "spoilsofwaram" => {key => "", label => "Spoils of War (Automatch)"}, + "sporearenads" => {key => "", label => "Spore Hero Arena (DS)"}, + "sporeds" => {key => "", label => "Spore (DS)"}, + "springwidgets" => {key => "", label => "Spring Widgets"}, + "springwidgetsam" => {key => "", label => "Spring Widgets Automatch"}, + "sptouzokuds" => {key => "", label => "Steel Princess Touzoku Koujyo (DS)"}, + "spyvsspyps2" => {key => "", label => "Spy vs Spy PS2"}, + "srally2dmo" => {key => "", label => "Sega Rally 2 PC Demo"}, + "srgakuends" => {key => "", label => "Super Robot Gakuen (DS)"}, + "srgakuendsam" => {key => "", label => "Super Robot Gakuen Automatch (DS)"}, + "srow2pc" => {key => "", label => "Saint's Row 2 (PC)"}, + "srow2pcam" => {key => "", label => "Saint's Row 2 Automatch (PC)"}, + "srow2ps3" => {key => "", label => "Saint's Row 2 (PS3)"}, + "srow2ps3am" => {key => "", label => "Saint's Row 2 Automatch"}, + "srow2ps3d" => {key => "", label => "Saint's Row 2 (PS3) Demo"}, + "srow2ps3dam" => {key => "", label => "Saint's Row 2 Automatch (PS3) Demo"}, + "srow2xb360" => {key => "", label => "Saint's Row 2 (Xbox 360)"}, + "srow2xb360am" => {key => "", label => "Saint's Row 2 Automatch (Xbox 360)"}, + "srsyndpc" => {key => "", label => "Street Racing Syndicate (PC)"}, + "srsyndps2" => {key => "", label => "Street Racing Syndicate (PS2)"}, + "srsyndps2" => {key => "", label => "Street Racing Syndicate PS2"}, + "ssamdemo" => {key => "", label => "Serious Sam Demo"}, + "sshafricawii" => {key => "", label => "Super Slam Hunting: Africa (NA)"}, + "sshafricawii" => {key => "", label => "Super Slam Hunting: Africa (NA) (Wii)"}, + "sshafricawiiam" => {key => "", label => "Super Slam Hunting: Africa Automatch (NA)"}, + "ssmahjongwii" => {key => "", label => "Simple Series: The Mah-Jong (WiiWare)"}, + "ssoldierrwii" => {key => "", label => "Star Soldier R (WiiWare)"}, + "st_highscore" => {key => "", label => "Stats and Tracking Sample"}, + "st_ladder" => {key => "", label => "Global Rankings Sample - Ladder"}, + "st_rank" => {key => "", label => "Global Rankings Sample"}, + "stalinsub" => {key => "", label => "The Stalin Subway"}, + "stalkercoppc" => {key => "", label => "STALKER: Call of Pripyat (PC)"}, + "stalkercoppcam" => {key => "", label => "STALKER: Call of Pripyat Automatch (PC)"}, + "stalkercoppcd" => {key => "", label => "STALKER: Call of Pripyat Demo (PC)"}, + "stalkercs" => {key => "", label => "Stalker: Clear Sky (PC)"}, + "stalkercsam" => {key => "", label => "Stalker: Clear Sky Automatch (PC)"}, + "stalkercsd" => {key => "", label => "Stalker: Clear Sky Demo (PC)"}, + "starcraft" => {key => "", label => "Starcraft"}, + "starcraftdmo" => {key => "", label => "Starcraft Demo"}, + "starcraftexp" => {key => "", label => "Starcraft: Brood Wars"}, + "starfoxds" => {key => "", label => "Starfox DS (DS)"}, + "starlancer" => {key => "", label => "StarLancer"}, + "starpballwii" => {key => "", label => "Starship Pinball (WiiWare)"}, + "starraiders" => {key => "", label => "Star Raiders"}, + "starsiege" => {key => "", label => "Starsiege"}, + "startopia" => {key => "", label => "Startopia"}, + "startreklegacy" => {key => "", label => "Star Trek: Legacy"}, + "startrekmac" => {key => "", label => "Star Trek: D-A-C (MAC)"}, + "startrekmacam" => {key => "", label => "Star Trek Automatch (MAC)"}, + "starwrsfrc" => {key => "", label => "Star Wars Force Commander"}, + "statesmen" => {key => "", label => "Statesmen"}, + "stbotf" => {key => "", label => "Birth of the Federation"}, + "steeltide" => {key => "", label => "Operation Steel Tide"}, + "stef1" => {key => "", label => "Star Trek: Elite Force Voyager"}, + "stef1exp" => {key => "", label => "Elite Force Expansion"}, + "stef2" => {key => "", label => "Elite Force II"}, + "stefdemo" => {key => "", label => "Star Trek: Elite Force Demo"}, + "stella" => {key => "", label => "Battlefield 2142"}, + "stella" => {key => "", label => "Battlefield 2142 (correct gamekey)"}, + "stellad" => {key => "", label => "Battlefield 2142 (Demo)"}, + "stitandemo" => {key => "", label => "Submarine Titans Demo"}, + "stitans" => {key => "", label => "Submarine Titans"}, + "stlegacy" => {key => "", label => "Star Trek: Legacy"}, + "stlprincessds" => {key => "", label => "Steal Princess (DS)"}, + "stlprinEUds" => {key => "", label => "Steal Princess (EU) (DS)"}, + "stlprinKORds" => {key => "", label => "Steal Princess (KOR) (DS)"}, + "stnw" => {key => "", label => "Star Trek: New Worlds"}, + "stormrisepc" => {key => "", label => "Stormrise (PC)"}, + "stormrisepcam" => {key => "", label => "Stormrise Automatch (PC)"}, + "stormrisepcd" => {key => "", label => "Stormrise Demo (PC)"}, + "strategistpc" => {key => "", label => "The Strategist (PC)"}, + "strategistpcam" => {key => "", label => "The Strategist Automatch (PC)"}, + "strategistpcd" => {key => "", label => "The Strategist Demo (PC)"}, + "strategistpsn" => {key => "", label => "The Strategist (PSN)"}, + "strategistpsnam" => {key => "", label => "The Strategist Automatch (PSN)"}, + "strategistpsnd" => {key => "", label => "The Strategist Demo (PSN)"}, + "strategistwii" => {key => "", label => "Strategist (Wii)"}, + "streetjam" => {key => "", label => "UltraWheels StreetJam"}, + "streetracer" => {key => "", label => "Streetracer"}, + "strfltcmd2" => {key => "", label => "Starfleet Command Volume"}, + "strfltcmd2d" => {key => "", label => "Empires at War Demo"}, + "strifeshadow" => {key => "", label => "StrifeShadow"}, + "strifeshadowd" => {key => "", label => "Strifeshadow Demo"}, + "strikefighters1" => {key => "", label => "Strike Fighters: Project"}, + "stronghold" => {key => "", label => "Stronghold"}, + "stronghold2" => {key => "", label => "Stronghold 2"}, + "strongholdc" => {key => "", label => "Stronghold: Crusaders"}, + "strongholdcd" => {key => "", label => "Stronghold Crusaders Demo"}, + "strongholdce" => {key => "", label => "Stronghold: Crusader Extreme"}, + "strongholdd" => {key => "", label => "Stronghold Demo"}, + "strongholdl" => {key => "", label => "Stronghold Legends"}, + "stylelabds" => {key => "", label => "Style Lab: Fashion Design (NOT USED)"}, + "subcommand" => {key => "", label => "Sub Command"}, + "suddenstrike" => {key => "", label => "Sudden Strike"}, + "suddenstrike2" => {key => "", label => "Sudden Strike II"}, + "suddenstrike3" => {key => "", label => "Sudden Strike 3: Arms for Victory"}, + "suitelifeds" => {key => "", label => "Suite Life of Zack & Cody: Circle of Spies (D"}, + "suitelifeEUds" => {key => "", label => "Suite Life of Zack & Cody: Circle of Spies (E"}, + "sukashikds" => {key => "", label => "Sukashikashipanman DS (DS)"}, + "sumofallfears" => {key => "", label => "The Sum of All Fears"}, + "sumofallfearsd" => {key => "", label => "The Sum of All Fears Demo"}, + "suparobods" => {key => "", label => "Suparobo Gakuen (DS)"}, + "supcomfabeta" => {key => "", label => "Supreme Commander: Forged Alliance beta"}, + "supcomm" => {key => "", label => "Supreme Commander"}, + "supcommb" => {key => "", label => "Supreme Commander (Beta)"}, + "supcommdemo" => {key => "", label => "Supreme Commander Demo"}, + "superpower2" => {key => "", label => "Super Power 2"}, + "Superslamhapc" => {key => "", label => "Super Slam Hunting PC"}, + "Superslamhapcam" => {key => "", label => "Super Slam Hunting PC Automatch"}, + "superv8ncpc" => {key => "", label => "Superstars V8 Next Challenge (PC)"}, + "superv8ncpcam" => {key => "", label => "Superstars V8 Next Challenge Automatch (PC)"}, + "superv8ncpcd" => {key => "", label => "Superstars V8 Next Challenge Demo (PC)"}, + "superv8ncps3" => {key => "", label => "Superstars V8 Next Challenge (PS3)"}, + "superv8ncps3am" => {key => "", label => "Superstars V8 Next Challenge Automatch (PS3)"}, + "superv8ncps3d" => {key => "", label => "Superstars V8 Next Challenge Demo (PS3)"}, + "superv8pc" => {key => "", label => "Super V8 Racing"}, + "superv8pc" => {key => "", label => "Superstars V8 Racing (PC)"}, + "superv8pcam" => {key => "", label => "Superstars V8 Racing Automatch (PC)"}, + "superv8pcd" => {key => "", label => "Superstars V8 Racing Demo (PC)"}, + "superv8ps3" => {key => "", label => "Superstars V8 Racing (PS3)"}, + "superv8ps3am" => {key => "", label => "Superstars V8 Racing Automatch (PS3)"}, + "superv8ps3d" => {key => "", label => "Superstars V8 Racing Demo (PS3)"}, + "superv8USpc" => {key => "", label => "Superstars V8 Racing US (PC)"}, + "superv8USpcam" => {key => "", label => "Superstars V8 Racing US Automatch (PC)"}, + "superv8usps3" => {key => "", label => "Superstars V8 Racing (US) (PS3)"}, + "superv8usps3am" => {key => "", label => "Superstars V8 Racing Automatch (US) (PS3)"}, + "superv8usps3d" => {key => "", label => "Superstars V8 Racing Demo (US) (PS3)"}, + "supruler2010" => {key => "", label => "Supreme Ruler 2010"}, + "supv8ncusps3" => {key => "", label => "Superstars V8 NC PS3 - USA"}, + "supv8ncusps3am" => {key => "", label => "Superstars V8 NC PS3 - USA Automatch"}, + "surfsupds" => {key => "", label => "Surf's Up (DS)"}, + "surkatamarwii" => {key => "", label => "Surinukeru Katamari (WiiWare)"}, + "survivor" => {key => "", label => "Survivor Ultimate"}, + "survivorm" => {key => "", label => "Survivor: Marquesas"}, + "svsr09ps3" => {key => "", label => "WWE Smackdown vs. RAW 2009 (PS3)"}, + "svsr09x360" => {key => "", label => "WWE Smackdown vs. RAW 2009 (Xbox 360)"}, + "svsr10ps3" => {key => "", label => "WWE Smackdown vs. Raw 2010 (PS3)"}, + "svsr10ps3am" => {key => "", label => "WWE Smackdown vs. Raw 2010 Automatch (PS3)"}, + "svsr10ps3d" => {key => "", label => "WWE Smackdown vs. Raw 2010 Demo (PS3)"}, + "svsr10x360" => {key => "", label => "WWE Smackdown vs. Raw 2010 (Xbox 360)"}, + "svsr10x360am" => {key => "", label => "WWE Smackdown vs. Raw 2010 Automatch (Xbox 3"}, + "svsr10x360d" => {key => "", label => "WWE Smackdown vs. Raw 2010 Demo (Xbox 360)"}, + "svsr11ps3" => {key => "", label => "Smackdown vs Raw 2011 (PS3)"}, + "svsr11ps3am" => {key => "", label => "Smackdown vs Raw 2011 Automatch (PS3)"}, + "svsr11ps3d" => {key => "", label => "Smackdown vs Raw 2011 Demo (PS3)"}, + "svsr11ps3dev" => {key => "", label => "Smackdown vs Raw 2011 DEV (PS3)"}, + "svsr11ps3devam" => {key => "", label => "Smackdown vs Raw 2011 DEV Automatch (PS3)"}, + "svsr11x360" => {key => "", label => "Smackdown vs Raw 2011 (x360)"}, + "svsr11x360am" => {key => "", label => "Smackdown vs Raw 2011 Automatch (x360)"}, + "svsr11x360d" => {key => "", label => "Smackdown vs Raw 2011 Demo (x360)"}, + "svsr11x360dev" => {key => "", label => "Smackdown vs Raw 2011 DEV (x360)"}, + "svsr11x360devam" => {key => "", label => "Smackdown vs Raw 2011 DEV Automatch (x360)"}, + "swat4" => {key => "", label => "SWAT 4"}, + "swat4d" => {key => "", label => "SWAT 4 Demo"}, + "swat4xp1" => {key => "", label => "SWAT 4: The Stetchkov Syndicate"}, + "swat4xp1_tmp" => {key => "", label => "SWAT 4: The Stetchkov Syndicate Temp"}, + "swbf3psp" => {key => "", label => "Star Wars: Battlefront 3 (PSP)"}, + "swbf3pspam" => {key => "", label => "Star Wars: Battlefront 3 Automatch (PSP)"}, + "swbfespsp" => {key => "", label => "Star Wars: Battlefront - Elite Squadron (PSP)"}, + "swbfespspam" => {key => "", label => "Star Wars: Battlefront - Elite Squadron Auto"}, + "swbfespspd" => {key => "", label => "Star Wars: Battlefront - Elite Squadron Demo"}, + "swbfffpsp" => {key => "", label => "Star Wars Battlefront: Renegade Squadron (PSP"}, + "swbfront2pc" => {key => "", label => "Star Wars Battlefront 2 PC"}, + "swbfront2pcb" => {key => "", label => "Star Wars Battlefront 2 PC Beta"}, + "swbfront2pcd" => {key => "", label => "Star Wars Battlefront 2 PC Demo"}, + "swbfront2ps2" => {key => "", label => "Star Wars Battlefront 2 (PS2)"}, + "swbfront2ps2" => {key => "", label => "Star Wars Battlefront 2 PS2"}, + "swbfront2ps2j" => {key => "", label => "Star Wars Battlefront 2 (PS2) Japanese"}, + "swbfront3pc" => {key => "", label => "Star Wars Battlefront 3 (PC)"}, + "swbfront3pcam" => {key => "", label => "Star Wars Battlefront 3 Automatch (PC)"}, + "swbfront3pcCam" => {key => "", label => "Star Wars Battlefront 3 Automatch (PS3)"}, + "swbfront3ps3" => {key => "", label => "Star Wars Battlefront 3 (PS3)"}, + "swbfront3wii" => {key => "", label => "Star Wars: Battlefront 3 (Wii)"}, + "swbfrontpc" => {key => "", label => "Star Wars: Battlefront (PC)"}, + "swbfrontps2" => {key => "", label => "Star Wars Battlefront PS2"}, + "swbfrontps2" => {key => "", label => "Star Wars: Battlefront (PS2, Japan)"}, + "swbfrontps2p" => {key => "", label => "Star Wars: Battlefront (PS2)"}, + "sweawfoc" => {key => "", label => "Star Wars: Empire at War - Forces of Corrupti"}, + "sweawfocd" => {key => "", label => "Forces of Corruption Demo"}, + "swempire" => {key => "", label => "Star Wars: Empire at War"}, + "swempire" => {key => "", label => "Swar Wars Empire at War"}, + "swempiream" => {key => "", label => "Star Wars: Empire at War (Automatch)"}, + "swempiremac" => {key => "", label => "Star Wars: Empire at War (Mac)"}, + "swempiremacam" => {key => "", label => "Star Wars: Empire at War Automatch (Mac)"}, + "swempirexp1" => {key => "", label => "Star Wars: Empire at War - Forces of Corrupti"}, + "swempirexp1" => {key => "", label => "Swar Wars Empire at War Forces of Corruption"}, + "swg" => {key => "", label => "Star Wars Galaxies"}, + "swgb" => {key => "", label => "Star Wars: Galactic Battl"}, + "swgbcc" => {key => "", label => "Star Wars Galactic Battle"}, + "swgbd" => {key => "", label => "Star Wars: Galactic Battl"}, + "swine" => {key => "", label => "S.W.I.N.E."}, + "swinedemo" => {key => "", label => "Swine Demo"}, + "swordotnw" => {key => "", label => "Sword of the New World"}, + "swordots" => {key => "", label => "Sword of the Stars"}, + "swrcommando" => {key => "", label => "Star Wars Republic Commando"}, + "swrcommandod" => {key => "", label => "Star Wars Republic Commando"}, + "swrcommandoj" => {key => "", label => "Star Wars Republic Commando Japanese Dist"}, + "swrcommandot" => {key => "", label => "Star Wars Republic Commando Thai Dist"}, + "swsnow2wii" => {key => "", label => "Shaun White Snowboarding 2 (Wii)"}, + "swtakoronwii" => {key => "", label => "Shall we Takoron (Wii)"}, + "syachi2ds" => {key => "", label => "syachi 2 (DS)"}, + "ta" => {key => "", label => "Total Annihilation"}, + "tablegamestds" => {key => "", label => "Table Game Stadium (D3-Yuki) (Wii)"}, + "tacore" => {key => "", label => "Core Contingency"}, + "tacticalops" => {key => "", label => "Tactical Ops"}, + "taisends" => {key => "", label => "Sangokushi Taisen DS (DS)"}, + "takameijinwii" => {key => "", label => "Takahashi Meijin no Boukenshima (WiiWare)"}, + "takeda" => {key => "", label => "Takeda"}, + "taking" => {key => "", label => "Total Anihilation: Kingdo"}, + "takingdoms" => {key => "", label => "TA: Kingdoms"}, + "takoronKRwii" => {key => "", label => "Takoron (KOR) (Wii)"}, + "takoronUSwii" => {key => "", label => "Takoron (US) (Wii)"}, + "talesofgrawii" => {key => "", label => "Tales of Graces (Wii)"}, + "tankbattlesds" => {key => "", label => "Tank Battles (DS)"}, + "tankbeat2ds" => {key => "", label => "Tank Beat 2 (DS)"}, + "tankbeatds" => {key => "", label => "Tank Beat (JPN) (DS)"}, + "tankbeatEUds" => {key => "", label => "Tank Beat (EU) (DS)"}, + "tankbeatusds" => {key => "", label => "Tank Beat (US) (DS)"}, + "taprace" => {key => "", label => "Tap Race (iPhone Sample)"}, + "tapraceam" => {key => "", label => "Tap Race Automatch (iPhone Sample)"}, + "tarlawdartwii" => {key => "", label => "Target Toss Pro: Lawn Darts (Wii)"}, + "tarlawdartwiiam" => {key => "", label => "Target Toss Pro: Lawn Darts Automatch (Wii)"}, + "tataitemogwii" => {key => "", label => "Tataite! Mogumon US/EU (WiiWare)"}, + "tatvscapwii" => {key => "", label => "Tatsunoko vs. Capcom Ultimate All Stars (Wii)"}, + "tcendwar" => {key => "", label => "Tom Clancy's EndWar"}, + "tcghostreconaw" => {key => "", label => "tcghostreconaw"}, + "tcounterwii" => {key => "", label => "Tecmo Counter"}, + "tdubeta" => {key => "", label => "Test Drive Unlimited Beta"}, + "teamfactor" => {key => "", label => "Team Factor"}, + "tecmoblkickds" => {key => "", label => "Tecmo Bowl Kickoff (DS)"}, + "tempunavail" => {key => "", label => "Test for temporarily disabled games"}, + "tenchu4wii" => {key => "", label => "Tenchu 4 (Wii)"}, + "tenchuds" => {key => "", label => "Tenchu (DS)"}, + "terminator3" => {key => "", label => "Terminator 3"}, + "terminator3d" => {key => "", label => "Terminator 3 demo"}, + "terminator3d" => {key => "", label => "Terminator 3 Demo"}, + "terminus" => {key => "", label => "Terminus"}, + "TerroristT2" => {key => "", label => "Terrorist Takedown 2"}, + "terrortkdwn2" => {key => "", label => "Terrorist Takedown 2"}, + "terrortkdwn2am" => {key => "", label => "Terrorist Takedown 2 Automatch"}, + "terrortkdwn2d" => {key => "", label => "Terrorist Takedown 2 Demo"}, + "test" => {key => "", label => "Test"}, + "test071806" => {key => "", label => "Test"}, + "TEST1" => {key => "", label => "TEST 1"}, + "test1" => {key => "", label => "test1"}, + "testam" => {key => "", label => "Test Automatch"}, + "testdriveu" => {key => "", label => "Test Drive Unlimited (Unused)"}, + "testdriveuak" => {key => "", label => "Test Drive Unlimited (Akella)"}, + "testdriveub" => {key => "", label => "Test Drive Unlimited"}, + "testdriveud" => {key => "", label => "Test Drive Unlimited Demo"}, + "tetpartywii" => {key => "", label => "Tetris Party (WiiWare)"}, + "tetrisdeluxds" => {key => "", label => "Tetris Party Deluxe (DSiWare)"}, + "tetrisds" => {key => "", label => "Tetris DS (DS)"}, + "tetriskords" => {key => "", label => "Tetris DS (KOR) (DS)"}, + "tetrisppwii" => {key => "", label => "Tetris++ (WiiWare)"}, + "tetrisworlds" => {key => "", label => "Tetris Worlds"}, + "texasholdwii" => {key => "", label => "Texas Hold'em Tournament (WiiWare)"}, + "tf15" => {key => "", label => "Half-Life 1.5"}, + "TG09360" => {key => "", label => "TG09 (xbox360)"}, + "TG09360am" => {key => "", label => "TG09 (xbox360) Automatch"}, + "TG09PC" => {key => "", label => "TG09 (PC)"}, + "TG09PCam" => {key => "", label => "TG09 (PC) Automatch"}, + "TG09PS3" => {key => "", label => "TG09 (PS3)"}, + "TG09PS3am" => {key => "", label => "TG09 (PS3) Automatch"}, + "tgmasterds" => {key => "", label => "Table Game Master DS (DS)"}, + "tgstadiumwii" => {key => "", label => "Table Game Stadium (Wii)"}, + "th2003d" => {key => "", label => "Trophy Hunter 2003 Demo"}, + "thawpc" => {key => "", label => "Tony Hawk's American Wasteland"}, + "thawpc" => {key => "", label => "Tony Hawk's American Wasteland (PC)"}, + "thdhilljamds" => {key => "", label => "Tony Hawk's Downhill Jam (DS)"}, + "thecombatwii" => {key => "", label => "SIMPLE Wii Series Vol.6 THE Minna de Waiwai C"}, + "themark" => {key => "", label => "The Mark"}, + "themarkam" => {key => "", label => "The Mark Automatch"}, + "theracewii" => {key => "", label => "The Race (Wii)"}, + "thesactionwii" => {key => "", label => "The Shooting Action (Wii)"}, + "thetsuriwii" => {key => "", label => "The Tsuri (Wii)"}, + "THPGds" => {key => "", label => "Tony Hawks Proving Ground (DS)"}, + "thps3media" => {key => "", label => "Tony Hawk Pro Skater 3 Media"}, + "thps3pc" => {key => "", label => "Tony Hawk 3 PC"}, + "thps3pcr" => {key => "", label => "Tony Hawk 3 PC (Rerelease)"}, + "thps3ps2" => {key => "", label => "Tony Hawk Pro Skater 3 (PS2)"}, + "thps3ps2" => {key => "", label => "Tony Hawk's Pro Skater 3 PS2"}, + "thps4pc" => {key => "", label => "Tony Hawk: Pro Skater 4 (PC)"}, + "thps4pcr" => {key => "", label => "Tony Hawk: Pro Skater 4 (PC) Rerelease"}, + "thps4pcram" => {key => "", label => "Tony Hawk: Pro Skater 4 Automatch (PC) Rerel"}, + "thps4ps2" => {key => "", label => "Tony Hawk: Pro Skater 4 (PS2)"}, + "thps4ps2" => {key => "", label => "Tony Hawk's Pro Skater 4 PS2"}, + "thps5pc" => {key => "", label => "Tony Hawks Underground (PC)"}, + "thps5ps2" => {key => "", label => "Tony Hawk's Underground (PS2)"}, + "thps5ps2" => {key => "", label => "Tony Hawk's Underground PS2"}, + "thps6pc" => {key => "", label => "T.H.U.G. 2"}, + "thps6ps2" => {key => "", label => "Tony Hawk's Underground 2 PS2"}, + "thps6ps2" => {key => "", label => "Tony Hawks Underground 2 (PS2)"}, + "thps7ps2" => {key => "", label => "Tony Hawk's American Wasteland PS2"}, + "thps7ps2" => {key => "", label => "Tony Hawks American Wasteland (PS2)"}, + "tiberiansun" => {key => "", label => "Tiberian Sun"}, + "timeshift" => {key => "", label => "TimeShift (PC)"}, + "timeshiftb" => {key => "", label => "TimeShift Beta (PC)"}, + "timeshiftd" => {key => "", label => "TimeShift Demo (PC)"}, + "timeshiftg" => {key => "", label => "Timeshift"}, + "timeshiftps3" => {key => "", label => "TimeShift (PS3)"}, + "timeshiftps3d" => {key => "", label => "TimeShift Demo (PS3)"}, + "timeshiftx" => {key => "", label => "TimeShift (Xbox 360)"}, + "titanquest" => {key => "", label => "Titan Quest"}, + "titanquestit" => {key => "", label => "Titan Quest Immortal Throne"}, + "tiumeshiftu" => {key => "", label => "TimeShift (Unlock codes)"}, + "tmntds" => {key => "", label => "Teenage Mutant Ninja Turtles (DS)"}, + "tmntsmashwii" => {key => "", label => "TMNT Smash Up (Wii)"}, + "tokyoparkwii" => {key => "", label => "Tokyo Friend Park II Wii (Wii)"}, + "tolmamods" => {key => "", label => "Tolmamo (DS)"}, + "tomenasawii" => {key => "", label => "Tomenasanner (WiiWare)"}, + "tongaribouids" => {key => "", label => "Tongaribousi to mahono omise (DS)"}, + "tongaribouidsam" => {key => "", label => "Tongaribousi to mahono omise Automatch (DS)"}, + "topanglerwii" => {key => "", label => "Top Angler (Wii)"}, + "topspin" => {key => "", label => "Top Spin"}, + "topspin2pc" => {key => "", label => "Top Spin 2 (PC)"}, + "topspin3euds" => {key => "", label => "Top Spin 3 (EU) (DS)"}, + "topspin3usds" => {key => "", label => "Top Spin 3 (US) (DS)"}, + "topspin4wii" => {key => "", label => "TOPSPIN 4 (Wii)"}, + "topspinps2" => {key => "", label => "Top Spin (PS2)"}, + "topspinps2" => {key => "", label => "Top Spin PS2"}, + "topspinps2am" => {key => "", label => "Top Spin (PS2) Automatch"}, + "toribashwii" => {key => "", label => "Toribash (WiiWare)"}, + "tothrainbowds" => {key => "", label => "TOTH Rainbow Trail of Light (DS)"}, + "touchmast4dsi" => {key => "", label => "TouchMaster 4: Megatouch Edition (DSi)"}, + "touchpanicds" => {key => "", label => "Touch Panic (DS)"}, + "tpfolEUpc" => {key => "", label => "Turning Point: Fall of Liberty (EU) (PC)"}, + "tpfolEUpcam" => {key => "", label => "Turning Point: Fall of Liberty Automatch (EU"}, + "tpfolEUpcB" => {key => "", label => "Turning Point: Fall of Liberty (EU-B) (PC)"}, + "tpfolEUpcBam" => {key => "", label => "Turning Point: Fall of Liberty Automatch (EU"}, + "tpfolEUpcBd" => {key => "", label => "Turning Point: Fall of Liberty Demo (EU-B) ("}, + "tpfolEUpcd" => {key => "", label => "Turning Point: Fall of Liberty Demo (EU) (PC"}, + "tpfolEUps3" => {key => "", label => "Turning Point: Fall of Liberty (EU) (PS3)"}, + "tpfolEUps3am" => {key => "", label => "Turning Point: Fall of Liberty Automatch (EU"}, + "tpfolpc" => {key => "", label => "Turning Point: Fall of Liberty (PC)"}, + "tpfolpcam" => {key => "", label => "Turning Point: Fall of Liberty Automatch (PC"}, + "tpfolpcB" => {key => "", label => "Turning Point: Fall of Liberty (B) (PC)"}, + "tpfolpcBam" => {key => "", label => "Turning Point: Fall of Liberty Automatch (B)"}, + "tpfolpcBd" => {key => "", label => "Turning Point: Fall of Liberty Demo (B) (PC)"}, + "tpfolpcd" => {key => "", label => "Turning Point: Fall of Liberty Demo (PC)"}, + "tpfolps3" => {key => "", label => "Turning Point: Fall of Liberty (PS3)"}, + "tpfolps3am" => {key => "", label => "Turning Point: Fall of Liberty Automatch (PS"}, + "tqexp1" => {key => "", label => "Titan Quest: Immortal Throne"}, + "tqexp1am" => {key => "", label => "Titan Quest: Immortal Throne (Automatch)"}, + "trackfieldds" => {key => "", label => "International Track & Field (DS)"}, + "trackmania2ds" => {key => "", label => "Trackmania DS 2 (DS)"}, + "treadmarks" => {key => "", label => "Tread Marks"}, + "treasurewldds" => {key => "", label => "Treasure World (DS)"}, + "tribes" => {key => "", label => "Starsiege TRIBES"}, + "tribes2" => {key => "", label => "Tribes 2"}, + "tribes2demo" => {key => "", label => "Tribes 2 Demo"}, + "tribesv" => {key => "", label => "Tribes Vengeance"}, + "tribesvb" => {key => "", label => "Tribes Vengeance Beta"}, + "tribesvd" => {key => "", label => "Tribes Vengeance Demo"}, + "trivialppalpc" => {key => "", label => "Trivial Pursuit PAL (PC)"}, + "trivialppalps2" => {key => "", label => "Trivial Pursuit PAL (PS2)"}, + "trivialppc" => {key => "", label => "Trivial Pursuit (PC) US"}, + "trivialppcfr" => {key => "", label => "Trivial Pursuit (PC) French"}, + "trivialppcgr" => {key => "", label => "Trivial Pursuit (PC) German"}, + "trivialppcit" => {key => "", label => "Trivial Pursuit (PC) Italian"}, + "trivialppcsp" => {key => "", label => "Trivial Pursuit (PC) Spanish"}, + "trivialppcuk" => {key => "", label => "Trivial Pursuit (PC) UK"}, + "trivialpps2" => {key => "", label => "Trivial Pursuit (PS2)"}, + "trkmaniads" => {key => "", label => "Trackmania (DS)"}, + "trkmaniawii" => {key => "", label => "Trackmania (Wii)"}, + "tron20" => {key => "", label => "TRON 2.0"}, + "tron20d" => {key => "", label => "TRON 2.0 Demo"}, + "tron20mac" => {key => "", label => "TRON 2.0"}, + "tron20mac" => {key => "", label => "TRON 2.0 MAC"}, + "truecrime" => {key => "", label => "True Crime"}, + "tsfirestorm" => {key => "", label => "Tiberian Sun - Firestorm"}, + "tstgme" => {key => "", label => "test game"}, + "tsurimasterds" => {key => "", label => "Mezase!! Tsuri Master DS (DS)"}, + "turok2" => {key => "", label => "Turok 2"}, + "tvshwking2wii" => {key => "", label => "TV Show King 2 (WiiWare)"}, + "twc" => {key => "", label => "Takeout Weight Curling"}, + "twc2" => {key => "", label => "Takeout Weight Curling 2"}, + "twoods08ds" => {key => "", label => "Tiger Woods 08 (DS)"}, + "tycoonnyc" => {key => "", label => "Tycoon City - New York"}, + "tzar" => {key => "", label => "TZAR"}, + "ubisoftdev" => {key => "", label => "Ubisoft Development"}, + "ubisoftdevam" => {key => "", label => "Ubisoft Development Automatch"}, + "ubraingamesds" => {key => "", label => "Ultimate Brain Games (DS)"}, + "ucardgamesds" => {key => "", label => "Ultimate Card Games (DS)"}, + "uchaosrrps2" => {key => "", label => "Urban Chaos: Riot Response (PS2)"}, + "uchaosrrps2am" => {key => "", label => "Urban Chaos: Riot Response Automatch (PS2)"}, + "ufc09ps3" => {key => "", label => "UFC 2009 (PS3)"}, + "ufc09ps3am" => {key => "", label => "UFC 2009 Automatch (PS3)"}, + "ufc09ps3d" => {key => "", label => "UFC 2009 Demo (PS3)"}, + "ufc09x360" => {key => "", label => "UFC 2009 (Xbox 360)"}, + "ufc09x360am" => {key => "", label => "UFC 2009 Automatch (Xbox 360)"}, + "ufc09x360d" => {key => "", label => "UFC 2009 Demo (Xbox 360)"}, + "ufc10ps3" => {key => "", label => "UFC 2010 (PS3)"}, + "ufc10ps3am" => {key => "", label => "UFC 2010 Automatch (PS3)"}, + "ufc10ps3d" => {key => "", label => "UFC 2010 Demo (PS3)"}, + "ufc10ps3DEV" => {key => "", label => "UFC 2010 DEV (PS3-DEV)"}, + "ufc10ps3DEVam" => {key => "", label => "UFC 2010 DEV Automatch (PS3-DEV)"}, + "ufc10ps3DEVd" => {key => "", label => "UFC 2010 DEV Demo (PS3-DEV)"}, + "ufc10x360" => {key => "", label => "UFC 2010 (x360)"}, + "ufc10x360am" => {key => "", label => "UFC 2010 Automatch (x360)"}, + "ufc10x360d" => {key => "", label => "UFC 2010 Demo (x360)"}, + "ufc10x360dev" => {key => "", label => "UFC 2010 DEV (360-DEV)"}, + "ufc10x360devam" => {key => "", label => "UFC 2010 DEV Automatch (360-DEV)"}, + "ufc10x360devd" => {key => "", label => "UFC 2010 DEV Demo (360-DEV)"}, + "ufc2010iphoam" => {key => "", label => "UFC 2010 (iphone) Automatch"}, + "ufc2010iphone" => {key => "", label => "SNSJDFJIk;jiaoj"}, + "ufc2010iphone" => {key => "", label => "UFC 2010 (iphone)"}, + "ufc2010iphoneam" => {key => "", label => "SNSJDFJIk;jiaoj Automatch"}, + "ufcfitwii" => {key => "", label => "UFC Fitness Trainer (Wii)"}, + "ufcfitwiiam" => {key => "", label => "UFC Fitness Trainer Automatch (Wii)"}, + "ultibandwii" => {key => "", label => "Ultimate Band (Wii)"}, + "ultimateMKds" => {key => "", label => "Ultimate Mortal Kombat (DS)"}, + "unavailable" => {key => "", label => "Test for disabled games"}, + "unbballswii" => {key => "", label => "Unbelievaballs (Wii)"}, + "uno" => {key => "", label => "UNO"}, + "unodsi" => {key => "", label => "UNO (DSiWare)"}, + "unowii" => {key => "", label => "UNO (WiiWare)"}, + "unreal" => {key => "", label => "Unreal"}, + "uotd" => {key => "", label => "Ultima Online Third Dawn"}, + "uprising2" => {key => "", label => "Uprising 2"}, + "upwords" => {key => "", label => "upwords"}, + "usingwii" => {key => "", label => "U-Sing (Wii)"}, + "ut" => {key => "", label => "Unreal Tournament"}, + "ut2" => {key => "", label => "Unreal Tournament 2003"}, + "ut2004" => {key => "", label => "Unreal Tournament 2004"}, + "ut2004d" => {key => "", label => "Unreal Tournament 2004 Demo"}, + "ut2d" => {key => "", label => "Unreal Tournament 2003 Demo"}, + "ut3" => {key => "", label => "Unreal Tournament 3"}, + "ut3demo" => {key => "", label => "Unreal Tournament 3 Demo"}, + "ut3jppc" => {key => "", label => "Unreal Tournament 3 Japanese (PC)"}, + "ut3jppcam" => {key => "", label => "Unreal Tournament 3 Japanese Automatch (PC)"}, + "ut3jpps3" => {key => "", label => "Unreal Tournament 3 Japanese (PS3)"}, + "ut3jpps3am" => {key => "", label => "Unreal Tournament 3 Japanese Automatch (PS3)"}, + "ut3onlive" => {key => "", label => "Unreal Tournament 3 ONLIVE"}, + "ut3onliveam" => {key => "", label => "Unreal Tournament 3 ONLIVE Automatch"}, + "ut3pc" => {key => "", label => "Unreal Tournament 3"}, + "ut3pc" => {key => "", label => "Unreal Tournament 3 (PC)"}, + "ut3pcam" => {key => "", label => "Unreal Tournament 3 Automatch (PC)"}, + "ut3pcd" => {key => "", label => "Unreal Tournament 3 Demo (PC)"}, + "ut3pcdam" => {key => "", label => "Unreal Tournament 3 Demo Automatch (PC)"}, + "ut3ps3" => {key => "", label => "Unreal Tournament 3 (PS3)"}, + "ut3ps3am" => {key => "", label => "Unreal Tournament 3 Automatch (PS3)"}, + "ut3ps3d" => {key => "", label => "Unreal Tournament 3 Demo (PS3)"}, + "utdc" => {key => "", label => "Unreal Tournament: Dreamcast"}, + "valknightswii" => {key => "", label => "Valhalla Knights (Wii)"}, + "vanguardbeta" => {key => "", label => "Vanguard beta"}, + "vanguardsoh" => {key => "", label => "Vanguard Saga of Heroes"}, + "velocitypc" => {key => "", label => "Velocity PC"}, + "velocityps2" => {key => "", label => "Velocity PS2"}, + "venomworld" => {key => "", label => "Venom World"}, + "vietcong" => {key => "", label => "Vietcong"}, + "vietcong2" => {key => "", label => "Vietcong 2"}, + "vietcong2d" => {key => "", label => "Vietcong 2 Demo"}, + "vietcong2pd" => {key => "", label => "Vietcong 2 Public Demo"}, + "vietcongd" => {key => "", label => "Vietcong Demo"}, + "vietkong" => {key => "", label => "Vietkong"}, + "vietnamso" => {key => "", label => "Line of Sight: Vietnam"}, + "vietnamsod" => {key => "", label => "Line of Sight: Vietnam Demo"}, + "viper" => {key => "", label => "Viper"}, + "virtualpool3" => {key => "", label => "Virtual Pool 3"}, + "virtuaten4wii" => {key => "", label => "Virtua Tennis 4 (Wii)"}, + "virtuaten4wiiam" => {key => "", label => "Virtua Tennis 4 Automatch (Wii)"}, + "voiceapp" => {key => "", label => "VoiceApp Voice SDK Test"}, + "vtennisacewii" => {key => "", label => "Virtua Tennis: Ace (Wii)"}, + "wosin" => {key => "", label => "Wages of Sin"}, + "warcraft2bne" => {key => "", label => "Warcraft 2"}, + "warfronttp" => {key => "", label => "War Front: Turning Point"}, + "warlordsb" => {key => "", label => "Warlords Battlecry"}, + "warlordsb2" => {key => "", label => "Warlords Battlecry II"}, + "warlordsb2d" => {key => "", label => "Warlords Battlecry II Dem"}, + "warlordsdr" => {key => "", label => "Warlords III: Dark Rising"}, + "warmonger" => {key => "", label => "Warmonger"}, + "warnbriads" => {key => "", label => "Warnbria no Maho Kagaku (DS)"}, + "warriorkings" => {key => "", label => "Warrior Kings"}, + "waterloo" => {key => "", label => "Waterloo"}, + "wcpoker2pc" => {key => "", label => "World Championship Poker 2 (PC)"}, + "wcpokerpalps2" => {key => "", label => "World Championship Poker PAL (PS2)"}, + "wcpokerps2" => {key => "", label => "World Championship Poker (PS2)"}, + "wcpool2004pc" => {key => "", label => "World Championship Pool 2004"}, + "wcpool2004ps2" => {key => "", label => "World Championship Pool 2004 (PS2)"}, + "wcpool2004ps2" => {key => "", label => "World Snooker Championship 2004 PS2"}, + "wcsnkr2004pc" => {key => "", label => "World Championship Snooker 2004 (PC)"}, + "wcsnkr2004ps2" => {key => "", label => "World Championship Snooker 2004 (PS2)"}, + "wcsnkr2005" => {key => "", label => "World Championship Snooker 2005 (PC)"}, + "wcsnkr2005" => {key => "", label => "World Snooker Championship 2005"}, + "wcsnkr2005ps2" => {key => "", label => "World Championship Snooker 2005 PS2"}, + "wcsnkr2005ps2" => {key => "", label => "World Snooker Championship 2005 PS2"}, + "weleplay09wii" => {key => "", label => "Winning Eleven PLAY MAKER 2009 (Wii)"}, + "werewolf" => {key => "", label => "Werewolf: The Apocalypse"}, + "wh40kdow2crol" => {key => "", label => "Warhammer 40K - Dawn of War 2 - Chaos Rising"}, + "wh40kdow2crolam" => {key => "", label => "Warhammer 40K - Dawn of War 2 - Chaos Rising"}, + "wh40kp" => {key => "", label => "Warhammer 40,000: Dawn of War Patch"}, + "wh40kwap" => {key => "", label => "Warhammer 40,000: Winter Assault Patch"}, + "whamdowfr" => {key => "", label => "Warhammer 40,000: Dawn of War - Soulstorm"}, + "whamdowfram" => {key => "", label => "Warhammer 40,000: Dawn of War - Final Reckoni"}, + "whamdowfrb" => {key => "", label => "Warhammer 40,000: Dawn of War - Final Reckoni"}, + "whamdowfrbam" => {key => "", label => "Warhammer 40,000: Dawn of War - Final Reckoni"}, + "whammer40000" => {key => "", label => "Warhammer 40,000: Dawn of War"}, + "whammer40000" => {key => "", label => "Warhammer 40000 Dawn of War"}, + "whammer40000am" => {key => "", label => "Warhammer 40,000: Dawn of War"}, + "whammer40kb" => {key => "", label => "Warhammer 40,000: Dawn of War Beta"}, + "whammer40kbam" => {key => "", label => "Warhammer 40,000: Dawn of War Beta (Automatch"}, + "whammer40kdc" => {key => "", label => "Warhammer 40,000: Dark Crusade"}, + "whammer40kdcam" => {key => "", label => "Warhammer 40,000: Dark Crusade Automatch"}, + "whammer40kt" => {key => "", label => "Warhammer 40000: Dawn of War test"}, + "whammer40ktds" => {key => "", label => "Warhammer 40,000 Tactics (DS)"}, + "whammer40kwa" => {key => "", label => "Warhammer 40,000: Winter Assault"}, + "whammer40kwaam" => {key => "", label => "Warhammer 40,000: Winter Assault (Automatch)"}, + "whammermoc" => {key => "", label => "Warhammer: Mark of Chaos"}, + "whammermocam" => {key => "", label => "Warhammer: Mark of Chaos Automatch"}, + "whammermocbm" => {key => "", label => "Warhammer: Mark of Chaos - Battle March"}, + "whammermocbmam" => {key => "", label => "Warhammer: Mark of Chaos - Battle March Autom"}, + "whammermocbmd" => {key => "", label => "Warhammer: Mark of Chaos - Battle March Demo"}, + "whammermocd" => {key => "", label => "Warhammer: Mark of Chaos Demo"}, + "whammermocdam" => {key => "", label => "Warhammer: Mark of Chaos Demo Automatch"}, + "whammermoct" => {key => "", label => "Warhammer: Mark of Chaos Test"}, + "whammermoctam" => {key => "", label => "Warhammer: Mark of Chaos Test Automatch"}, + "whammermok" => {key => "", label => "Warhammer: Mark of Chaos (OLD)"}, + "whtacticspsp" => {key => "", label => "Warhammer 40,000: Tactics (PSP)"}, + "whtacticspspam" => {key => "", label => "Warhammer 40,000: Tactics Automatch (PSP)"}, + "wic" => {key => "", label => "World in Conflict Demo"}, + "wicb" => {key => "", label => "World in Conflict Beta"}, + "wicd" => {key => "", label => "World in Conflict Demo"}, + "wiibombmanwii" => {key => "", label => "Wii Bomberman / WiiWare Bomberman / Bomberman"}, + "wiilinkwii" => {key => "", label => "Wii Link (Wii)"}, + "wiinat" => {key => "", label => "Wii NAT Negotiation Testing"}, + "wildwings" => {key => "", label => "Wild Wings"}, + "wincircleds" => {key => "", label => "Winner's Circle (DS)"}, + "winel10jpnwii" => {key => "", label => "Winning Eleven PLAY MAKER 2010 Japan Edition"}, + "winel10jpnwiiam" => {key => "", label => "Winning Eleven PLAY MAKER 2010 Japan Edition"}, + "winelev10wii" => {key => "", label => "Winning Eleven Play Maker 2010 (Wii)"}, + "winelev11wii" => {key => "", label => "Winning Eleven PLAY MAKER 2011 (Wii)"}, + "wingsofwar" => {key => "", label => "Wings of War"}, + "wingsofward" => {key => "", label => "Wings of War Demo"}, + "winters3nawii" => {key => "", label => "Winter Sports 3 NA (Wii)"}, + "winters3nawiiam" => {key => "", label => "Winter Sports 3 NA Automatch (Wii)"}, + "winx2010ds" => {key => "", label => "Winx Club Secret Diary 2010 (DS)"}, + "witcher" => {key => "", label => "The Witcher"}, + "wkingsb" => {key => "", label => "Warrior Kings Battles"}, + "wkingsbd" => {key => "", label => "Warrior Kings Battles Demo"}, + "wlclashpc" => {key => "", label => "War Leaders: Clash of Nations"}, + "wlclashpc" => {key => "", label => "War Leaders: Clash of Nations (PC)"}, + "wlclashpcam" => {key => "", label => "War Leaders: Clash of Nations Automatch (PC)"}, + "wlclashpcd" => {key => "", label => "War Leaders: Clash of Nations Demo (PC)"}, + "wmarkofchaos" => {key => "", label => "Warhammer Mark of Chaos"}, + "wmarkofchaosd" => {key => "", label => "Warhammer Mark of Chaos Demo"}, + "wmarkofchaosdam" => {key => "", label => "Warhammer Mark of Chaos Demo Automatch"}, + "wofor" => {key => "", label => "WOFOR: War on Terror"}, + "woforam" => {key => "", label => "WOFOR: War on Terror Automatch"}, + "woford" => {key => "", label => "WOFOR: War on Terror Demo"}, + "wofordam" => {key => "", label => "WOFOR: War on Terror Demo Automatch"}, + "wofps2" => {key => "", label => "Wheel of Fortune (PS2)"}, + "woosc" => {key => "", label => "World of Outlaws Sprint Cars"}, + "wooscd" => {key => "", label => "World of Outlaws Sprint Cars Demo"}, + "wordjongds" => {key => "", label => "Word Jong - US (DS)"}, + "wordjongeuds" => {key => "", label => "Wordjong EU (DS)"}, + "wordjongFRds" => {key => "", label => "Word Jong - FR (DS)"}, + "wordzap" => {key => "", label => "WordZap"}, + "worldshiftpc" => {key => "", label => "WorldShift (PC)"}, + "worldshiftpcam" => {key => "", label => "WorldShift Automatch (PC)"}, + "worldshiftpcb" => {key => "", label => "WorldShift Beta (PC)"}, + "worldshiftpcbam" => {key => "", label => "WorldShift Beta Automatch (PC)"}, + "worldshiftpcd" => {key => "", label => "WorldShift Demo (PC)"}, + "worms2" => {key => "", label => "Worms 2"}, + "worms3" => {key => "", label => "Worms 3D"}, + "worms4" => {key => "", label => "Worms 4 Mayhem"}, + "worms4d" => {key => "", label => "Worms 4 Mayhem Demo"}, + "wormsarm" => {key => "", label => "Worms Armageddon"}, + "wormsasowii" => {key => "", label => "Worms: A Space Oddity (Wii)"}, + "wormsforts" => {key => "", label => "Worms Forts"}, + "wormsow2ds" => {key => "", label => "Worms Open Warfare 2 (DS)"}, + "wormspsp" => {key => "", label => "Worms (PSP)"}, + "wormspspam" => {key => "", label => "Worms Automatch (PSP)"}, + "wormswiiware" => {key => "", label => "Worms (WiiWare)"}, + "wormswiiwaream" => {key => "", label => "Worms Automatch (WiiWare)"}, + "wosinmac" => {key => "", label => "Wages of Sin (Mac)"}, + "wot" => {key => "", label => "Wheel of Time"}, + "wotr" => {key => "", label => "War of the Ring"}, + "wotrb" => {key => "", label => "War of the Ring Beta"}, + "wptps2" => {key => "", label => "World Poker Tour PS2"}, + "wptps2pal" => {key => "", label => "World Poker Tour PAL (PS2)"}, + "wracing1" => {key => "", label => "World Racing 1"}, + "wracing2" => {key => "", label => "World Racing 2 (PC)"}, + "wrcpc" => {key => "", label => "WRC (PC)"}, + "wrcpcam" => {key => "", label => "WRC Automatch (PC)"}, + "wrcpcd" => {key => "", label => "WRC Demo (PC)"}, + "wrcps3" => {key => "", label => "WRC (PS3)"}, + "wrcps3am" => {key => "", label => "WRC Automatch (PS3)"}, + "wrcps3d" => {key => "", label => "WRC Demo (PS3)"}, + "wrldgoowii" => {key => "", label => "World of Goo (WiiWare)"}, + "wsc2007" => {key => "", label => "World Snooker Championship 2007"}, + "wsc2007pc" => {key => "", label => "World Snooker Championship 2007 (PC)"}, + "wsc2007ps2" => {key => "", label => "World Snooker Championship 2007 (PS2)"}, + "wsc2007ps3" => {key => "", label => "World Snooker Championship 2007 (PS3)"}, + "wsoppc" => {key => "", label => "World Series of Poker"}, + "wsoppc" => {key => "", label => "World Series of Poker (PC)"}, + "wsoppcam" => {key => "", label => "World Series of Poker (PC) Automatch"}, + "wsopps2" => {key => "", label => "World Series of Poker (PS2)"}, + "wsopps2" => {key => "", label => "World Series of Poker PS2"}, + "wsopps2am" => {key => "", label => "World Series of Poker (PS2) Automatch"}, + "wsoppsp" => {key => "", label => "World Series of Poker (PSP)"}, + "wsoppsp" => {key => "", label => "World Series of Poker PSP"}, + "wsoppspam" => {key => "", label => "World Series of Poker (PSP, Automatch)"}, + "WSWeleven07ds" => {key => "", label => "World Soccer Winning Eleven DS 2007 (DS)"}, + "WSWelevenwii" => {key => "", label => "World Soccer Winning Eleven Wii (Wii)"}, + "wtrwarfarewii" => {key => "", label => "Water Warfare (WiiWare)"}, + "ww2btanks" => {key => "", label => "WWII Battle Tanks: T-34 vs Tiger"}, + "ww2frontline" => {key => "", label => "World War II: Frontline C"}, + "wwkuzushiwii" => {key => "", label => "SIMPLE THE Block Kuzushi (WiiWare)"}, + "wwpuzzlewii" => {key => "", label => "Simple: The Number - Puzzle"}, + "wz2100" => {key => "", label => "WarZone2100"}, + "wz2100demo" => {key => "", label => "Warzone 2100 Demo"}, + "xar" => {key => "", label => "Xtreme Air Racing"}, + "xboxtunnel" => {key => "", label => "Xbox Tunnel Service"}, + "xcomenforcer" => {key => "", label => "X-Com: Enforcer"}, + "xenocellpc" => {key => "", label => "srthe6w5iuh"}, + "xenocellpc" => {key => "", label => "Xenocell (PC)"}, + "xenocellpcam" => {key => "", label => "srthe6w5iuh Automatch"}, + "xenocellpcam" => {key => "", label => "Xenocell (PC) Automatch"}, + "xmenleg2psp" => {key => "", label => "X-Men: Legends 2 (PSP)"}, + "xmenlegpc" => {key => "", label => "X-Men Legends"}, + "xmenlegpc" => {key => "", label => "X-Men Legends PC"}, + "xmenlegps2" => {key => "", label => "X-Men Legends (PS2)"}, + "xmenlegps2" => {key => "", label => "X-Men Legends PS2"}, + "xmenlegps2pal" => {key => "", label => "X-Men Legends PAL (PS2)"}, + "xmenlegps2pals" => {key => "", label => "X-Men Legends PAL Spanish (PS2)"}, + "xwingtie" => {key => "", label => "X-Wing vs. Tie Fighter"}, + "yakumands" => {key => "", label => "Yakuman DS (DS)"}, + "yakumanwii" => {key => "", label => "Yakuman Wii (WiiWare)"}, + "yetisportswii" => {key => "", label => "Yetisports (Wii)"}, + "yetisportswiiam" => {key => "", label => "Yetisports Automatch (Wii)"}, + "ysstrategyds" => {key => "", label => "Y's Strategy (DS)"}, + "yugioh5dds" => {key => "", label => "Yu-Gi-Oh 5Ds (DS)"}, + "yugioh5dwii" => {key => "", label => "Yu-Gi-Oh! 5D's Duel Simulator (Wii)"}, + "yugiohgx2ds" => {key => "", label => "Yu-Gi-OH! Duel Monsters GX2 (DS)"}, + "yugiohWC07ds" => {key => "", label => "Yu-Gi-Oh! Dual Monsters World Championship 20"}, + "yugiohwc08ds" => {key => "", label => "Yu-Gi-Oh! World Championship 2008 (DS)"}, + "yugiohwc10ds" => {key => "", label => "Yu-Gi-Oh! World Championship 2010 (DS)"}, + "yugiohwc11ds" => {key => "", label => "Yu-Gi-Oh! World Championship 2011"}, + "zax" => {key => "", label => "Zax"}, + "zdoom" => {key => "", label => "ZDoom"}, + "zeroGds" => {key => "", label => "ZeroG (DS)"}, + "zsteel" => {key => "", label => "Z: Steel Soldiers"}, + "ZumaDeluxe" => {key => "", label => "Zuma Deluxe"}, + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # + # 333networks supports syncing between other 333networks masters. The + # details are furthermore explained in the config file. The secure + # challenge still applies, but with the gamename "333networks" + # + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + "333networks" => {key => "", label => "333networks Synchronization Protocol"}, + }, + + # rotations for encryption in the secure/validate challenge for challenges + # with enctype 1 or 2. See README for more information. + enc_chars => ( qw | + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 + |), +); + +1; diff --git a/lib/MasterServer.pm b/lib/MasterServer.pm new file mode 100755 index 0000000..c0bd914 --- /dev/null +++ b/lib/MasterServer.pm @@ -0,0 +1,50 @@ + +package MasterServer; + +use strict; +use warnings; + +our $OBJ = bless {}, 'MasterServer::Object'; + +# Load modules, recursively +# All submodules should be under the same directory in @INC +# Greets to Yorhel for this one. +sub load_recursive { + my $rec; + $rec = sub { + my($d, $f, $m) = @_; + for my $s (glob "$d/$f/*") { + $OBJ->_load_module("${m}::$1") if -f $s && $s =~ /([^\/]+)\.pm$/; + $rec->($d, "$f/$1", "${m}::$1") if -d $s && $s =~ /([^\/]+)$/; + } + }; + for my $m (@_) { + (my $f = $m) =~ s/::/\//g; + my $d = (grep +(-d "$_/$f" or -s "$_/$f.pm"), @INC)[0]; + $OBJ->_load_module($m) if -s "$d/$f.pm"; + $rec->($d, $f, $m) if -d "$d/$f"; + } +} + +# Load modules +sub load { + $OBJ->_load_module($_) for (@_); +} + +# run our master server +sub run { + $OBJ->main(); +} + +# The namespace which inherits all functions to be available in the global +# object. +package MasterServer::Object; + +# load modules +sub _load_module { + my($self, $module) = @_; + die $@ if !eval "use $module; 1"; +} + + +1; diff --git a/lib/MasterServer/Core/Core.pm b/lib/MasterServer/Core/Core.pm new file mode 100755 index 0000000..d49e36b --- /dev/null +++ b/lib/MasterServer/Core/Core.pm @@ -0,0 +1,147 @@ + +package MasterServer::Core::Core; + +use strict; +use warnings; +use AnyEvent; +use Exporter 'import'; +use Data::Dumper 'Dumper'; +use DBI; + +our @EXPORT = qw | halt main |; + +## +## Halt +## Handle shutting down the program for whatever reason. +sub halt { + my $self = shift; + + # When other processes are still + # running, set all other scopes + # to null/undef? + + # log shutdown + $self->log("stop", "Stopping the masterserver now."); + + # and send signal to condition var + $self->{must_halt}->send; + + # allow everything to be written to the logs + sleep(2); + + exit; +} + +## +## Main +## Initialize all processes and start them +sub main { + my $self = shift; + + # condition var prevents or allows the program from ending + $self->{must_halt} = AnyEvent->condvar; + + # determine version info + $self->version(); + + # keep several objects alive outside their original scope + $self->{scope} = (); + + + # Startup procedure + $self->log("info", "333networks Master Server Application."); + $self->log("info", "Build: $self->{build_type}"); + $self->log("info", "Version: $self->{build_version}"); + $self->log("info", " Written by $self->{build_author}"); + $self->log("info", "Logs are written to $self->{log_dir}"); + + + # determine the type of database and load the appropriate module + { # start db type + # read from login + my @db_type = split(':', $self->{dblogin}->[0]); + + # format supported (yet)? + if ( "Pg SQLite" =~ m/$db_type[1]/i) { + + # inform us what DB we try to load + $self->log("loader","Loading $db_type[1] database module."); + + # load dbd and tables/queries for this db type + MasterServer::load_recursive("MasterServer::Database::$db_type[1]"); + + # Connect to database + $self->{dbh} = $self->database_login(); #FIXME!!!! + } + else { + # raise error and halt + $self->log("fatal", "The masterserver could not determine the chosen database type."); + $self->halt(); + } + } # end db type + + + # start the listening service (listen for UDP beacons) + $self->{scope}->{beacon_catcher} = $self->beacon_catcher(); + + + $self->log("info", "All modules loaded. Starting..."); + + +=pod + + ############################################################################## + ## + ## Initiate Scheduled tasks + ## + ## Main Tasks + ## beacon_catcher (udp server) + ## beacon_checker (udp client, timer) + ## browser_server (tcp server) + ## + ## Synchronization + ## ucc_applet_query (tcp client, timer) + ## syncer_scheduler (tcp client, timer) + ## + ## 333networks website specific + ## ut_server_query (udp client, timer) + ## + ## Core Functions + ## maintenance (timer, dbi) + ## statistics (timer, dbi) + ## + ## (store objects in hash to keep them alive outside their own scopes) + ############################################################################## + + ## servers + $ae{beacon_catcher} = $self->beacon_catcher(); + $ae{beacon_checker} = $self->beacon_checker_scheduler(); + $ae{browser_server} = $self->browser_server(); + + # synchronizing + $ae{ucc_applet_query} = $self->ucc_applet_query_scheduler(); + $ae{syncer_scheduler} = $self->syncer_scheduler(); + + # status info for UT servers (333networks site) + $ae{ut_server_scheduler} = $self->ut_server_scheduler(); + + # maintenance + $ae{maintenance_runner} = $self->maintenance_runner(); + $ae{stats_runner} = $self->stats_runner(); +=cut + + + + + + + + + + + # prevent main program from ending prematurely + $self->{must_halt}->recv; + $self->log("stop", "Logging off. Enjoy your day."); +} + +1; diff --git a/lib/MasterServer/Core/Logging.pm b/lib/MasterServer/Core/Logging.pm new file mode 100755 index 0000000..efd2123 --- /dev/null +++ b/lib/MasterServer/Core/Logging.pm @@ -0,0 +1,66 @@ + +package MasterServer::Core::Logging; + +use strict; +use warnings; +use POSIX qw/strftime/; +use Exporter 'import'; + +our @EXPORT = qw| log |; + +################################################################################ +# +# Log to file and print to screen. +# args: $self, message_type, message +# +################################################################################ +sub log { + my ($self, $type, $msg) = @_; + + # parse time of log entry and prep for rotating log + my $time = strftime('%Y-%m-%d %H:%M:%S',localtime); + my $yearly = strftime('-%Y',localtime); + my $monthly = strftime('-%Y-%m',localtime); + my $weekly = strftime('-%Y-week%U',localtime); + my $daily = strftime('-%Y-%m-%d',localtime); + + # is the message suppressed in config? + if (defined $type && $self->{suppress} =~ m/$type/i){ + print "[$time] [SUPPRESSED] [$type] $msg\n"; #FIXME + return; # return if <$> + } + + # determine filename + my $f = "MasterServer-333networks"; + + # rotate log filename according to config + $f .= $daily if ($self->{log_rotate} =~ /^daily$/i ); + $f .= $weekly if ($self->{log_rotate} =~ /^weekly$/i ); + $f .= $monthly if ($self->{log_rotate} =~ /^monthly$/i ); + $f .= $yearly if ($self->{log_rotate} =~ /^yearly$/i ); + $f .= ".log"; + + # put log filename together + my $logfile = $self->{log_dir}.((substr($self->{log_dir},-1) eq "/")?"":"/").$f; + + print "[$time] [$type] > $msg\n" if $self->{printlog}; + + # temporarily disable the warnings-to-log, to avoid infinite recursion if + # this function throws a warning. + my $old = $SIG{__WARN__}; + $SIG{__WARN__} = undef; + + chomp $msg; + $msg =~ s/\n/\n | /g; + if($logfile && open my $F, '>>:utf8', $logfile) { + flock $F, 2; + seek $F, 0, 2; + print $F "[$time]\t[$type]\t$msg\n"; + flock $F, 4; + close $F; + } + $SIG{__WARN__} = $old; +} + + +1; diff --git a/lib/MasterServer/Core/Secure.pm b/lib/MasterServer/Core/Secure.pm new file mode 100755 index 0000000..dbe9c1f --- /dev/null +++ b/lib/MasterServer/Core/Secure.pm @@ -0,0 +1,210 @@ + +package MasterServer::Core::Secure; + +use strict; +use warnings; +use POSIX qw/strftime/; +use Exporter 'import'; + +our @EXPORT = qw| secure_string validated_beacon validated_request validate_string charshift get_validate_string|; + +## generate a random string of 6 characters long for the \secure\ challenge +sub secure_string { + # spit out a random string, only uppercase characters + my @c = ('A'..'Z'); + my $s = ""; + $s .= $c[rand @c] for 1..6; + + # return random string + return $s; +} + +## Check if beacon has a valid response. +sub validated_beacon { + my ($self, $gamename, $secure, $enctype, $validate) = @_; + + # debugging enabled? Then don't care about validation + return 1 if ($self->{debug_validate}); + + # enctype given? + $enctype = 0 unless $enctype; + + if ($self->{ignore_beacon_key} =~ m/$gamename/i){ + $self->log("secure", "Ignored beacon validation for $gamename."); + return 1; + } + + # compare received response with challenge + return ($self->validate_string($gamename, $secure, $enctype) eq $validate) || 0; +} + +## Check if request has valid response +sub validated_request { + my ($self, $gamename, $secure, $enctype, $validate) = @_; + + # debugging enabled? Then don't care about validation + return 1 if ($self->{debug_validate}); + + # enctype given? + $enctype = 0 unless $enctype; + + # ignore games and beacons that are listed + if ($self->{ignore_browser_key} =~ m/$gamename/i){ + $self->log("secure", "Ignored browser validation for $gamename."); + return 1; + } + + # compare received response with challenge + return ($self->validate_string($gamename, $secure, $enctype) eq $validate) || 0; +} + +################################################################################ +# calculate the \validate\ response for the \secure\ challenge. +# args: gamename, secure_string, encryption type +# returns: validate string (usually 8 characters long) +# !! requires cipher hash to be configured in config! (imported or else) +################################################################################ +sub validate_string { + my ($self, $game, $sec, $enc) = @_; + + # get cipher from gamename + my $cip = $self->{game}->{$game}->{key} || "XXXXXX"; + + # don't accept challenge longer than 16 characters -- usually h@xx0rs + if (length $sec > 16) { + return "0"} + + # check for valid encryption choises + my $enc_val = (defined $enc && 0 <= $enc && $enc <= 2) ? $enc : 0; + + # calculate and return validate string + return $self->get_validate_string($cip, $sec, $enc_val); +} + +################################################################################ +# rotate characters as part of the secure/validate algorithm. +# arg and return: int (representing a character) +################################################################################ +sub charshift { + my ($self, $reg) = @_; + return($reg + 65) if ($reg < 26); + return($reg + 71) if ($reg < 52); + return($reg - 4) if ($reg < 62); + return(43) if ($reg == 62); + return(47) if ($reg == 63); + + # if all else fails + return(0); +} + +################################################################################ +# algorithm to calculate the response to the secure/validate query. processes +# the secure_string and returns the challenge_string with which GameSpy secure +# protocol authenticates games. +# +# the following algorithm is based on gsmsalg.h in GSMSALG 0.3.3 by Luigi +# Auriemma, aluigi@autistici.org, aluigi.org, copyright 2004-2008. GSMSALG 0.3.3 +# was released under the GNU General Public License, for more information, see +# the original software at http://aluigi.altervista.org/papers.htm#gsmsalg +# +# conversion and modification of the algorithm by Darkelarious, June 2014. +# +# args: game cipher, 6-char challenge string, encryption type +# returns: validate string (usually 8 characters long) +# !! requires cipher hash to be configured in config! (imported or else) +################################################################################ +sub get_validate_string { + my ($self, $cipher_string, $secure_string, $enctype) = @_; + + # import pre-built rotations from config for enctype + # -- see GSMSALG 0.3.3 reference for copyright and more information + my @enc_chars = $self->{enc_chars}; + + # convert to array of characters + my @cip = split "", $cipher_string; + my @sec = split "", $secure_string; + + # length of strings/arrays which should be 6 + my $sec_len = scalar @sec; + my $cip_len = scalar @cip; + + # from this point on, work with ordinal values + for (0..$sec_len-1) { $sec[$_] = ord $sec[$_]; } + for (0..$cip_len-1) { $cip[$_] = ord $cip[$_]; } + + # helper vars + my ($i,$j,$k,$l,$m,$n,$p); + + # too short or too long -- return empty string + return "" if ($sec_len <= 0 || $sec_len >= 32); + return "" if ($cip_len <= 0 || $cip_len >= 32); + + # temporary array with ascii characters + my @enc; + for(0..255) {$enc[$_] = $_;} + + $j = 0; + for(0..255) { + $j += $enc[$_] + $cip[$_ % $cip_len]; + $j = $j % 256; + $l = $enc[$j]; + $enc[$j] = $enc[$_]; + $enc[$_] = $l; + } + + # store temporary positions + my @tmp; + + $j = 0; + $k = 0; + for($i = 0; $sec[$i]; $i++) { + $j += $sec[$i] + 1; + $j = $j % 256; + $l = $enc[$j]; + $k += $l; + $k = $k % 256; + $m = $enc[$k]; + $enc[$k] = $l; + $enc[$j] = $m; + $tmp[$i] = $sec[$i] ^ $enc[($l + $m) & 0xff]; + } + +# part of the enctype 1-2 process + for($sec_len = $i; $sec_len % 3; $sec_len++) { + $tmp[$sec_len] = 0; + } + + if ($enctype == 1) { + for (0..$sec_len-1) { + $tmp[$_] = $enc_chars[$tmp[$_]]; + } + } + elsif ($enctype == 2) { + for (0..$sec_len-1) { + $tmp[$_] ^= $cip[$_ % $cip_len]; + } + } + + # parse the validate array + $p = 0; + my @val; + for($i = 0; $i < $sec_len; $i += 3) { + $l = $tmp[$i]; + $m = $tmp[$i + 1]; + $m = $m % 256; + $n = $tmp[$i + 2]; + $n = $n % 256; + $val[$p++] = $self->charshift($l >> 2); + $val[$p++] = $self->charshift((($l & 3 ) << 4) | ($m >> 4)); + $val[$p++] = $self->charshift((($m & 15) << 2) | ($n >> 6)); + $val[$p++] = $self->charshift($n & 63); + } + + # return to ascii characters + my $str = ""; + for (@val) { $str .= chr $_} + + return $str; +} + +1; diff --git a/lib/MasterServer/Core/Util.pm b/lib/MasterServer/Core/Util.pm new file mode 100755 index 0000000..001137d --- /dev/null +++ b/lib/MasterServer/Core/Util.pm @@ -0,0 +1,35 @@ + +package MasterServer::Core::Util; + +use strict; +use warnings; +use IP::Country::Fast; +use POSIX qw/strftime/; +use Exporter 'import'; + +our @EXPORT = qw| valid_address ip2country |; + +## return the abbreviated country based on IP +sub ip2country { +my ($self, $ip) = @_; + my $reg = IP::Country::Fast->new(); + return $reg->inet_atocc($ip); +} + +## Verify whether a given domain name or IP address and port are valid. +## returns true/false if valid ip + port +sub valid_address { + my ($self, $a, $p) = @_; + + # check if ip and port are in valid range + my $val_addr = ($a =~ '\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b'); + my $val_port = (0 < $p && $p <= 65535); + + # exclude addresses where we don't want people sniffing + for (qw|192.168.(.\d*).(.\d*) 127.0.(.\d*).(.\d*) 10.0.(.\d*).(.\d*)|){$val_addr = 0 if ($a =~ m/$_/)} + + # only return true if both are valid + return ($val_addr && $val_port); +} + +1; diff --git a/lib/MasterServer/Core/Version.pm b/lib/MasterServer/Core/Version.pm new file mode 100755 index 0000000..5bd3f1c --- /dev/null +++ b/lib/MasterServer/Core/Version.pm @@ -0,0 +1,41 @@ + +package MasterServer::Core::Version; + +use strict; +use warnings; +use Exporter 'import'; + +our @EXPORT = qw| version |; + + +################################################################################ +# +# Version information +# +################################################################################ +sub version { + my $self = shift; + + # version and author information + # -- addition to the LICENCE, you are only allowed to modify these lines + # if you send Darkelarious a postcard or email with your compliments or, + # in case of a company editing, a letter of commendation. + # + # You are not allowed to modify these variables without making (significant) + # alterations to the source code of this master server program. Only changing + # these fields does not count as a significant alteration. + + # master type + $self->{build_type} = "333networks Masterserver-Perl"; + + # version + $self->{build_version} = "0.2"; + + # date yyyy-mm-dd + $self->{build_date} = "2015-01-31"; + + #author, email + $self->{build_author} = "Darkelarious, darkelarious\@333networks.com"; +} + +1; diff --git a/lib/MasterServer/Database/Pg/dbBeacon.pm b/lib/MasterServer/Database/Pg/dbBeacon.pm new file mode 100755 index 0000000..a234b25 --- /dev/null +++ b/lib/MasterServer/Database/Pg/dbBeacon.pm @@ -0,0 +1,123 @@ + +package MasterServer::Database::Pg::dbBeacon; + +use strict; +use warnings; +use Exporter 'import'; + +our @EXPORT = qw| add_beacon get_pending_beacon remove_pending set_direct_beacon |; + +## Update beacon in serverlist or pending list. Add if beacon does not exist in +## either list. Return 0,1,2 if success in adding or -1 on error +sub add_beacon { + my ($self, $ip, $beaconport, $heartbeat, $gamename, $secure) = @_; + + # if address is in list, update the timestamp + my $u = $self->{dbh}->do( + "UPDATE serverlist + SET beacon = NOW(), + updated = NOW(), + gamename = ?, + b333ms = TRUE + WHERE ip = ? + AND port = ?", + undef, lc $gamename, $ip, $heartbeat); + + # notify + $self->log("updated", "beacon heartbeat for $ip:$heartbeat") if ($u > 0); + + # if serverlist was updated return 0 + return 0 if ($u > 0); + + # if it is already in the pending list, update it with a new challenge + $u = $self->{dbh}->do( + "UPDATE pending + SET added = NOW(), + beaconport = ?, + gamename = ?, + secure = ? + WHERE ip = ? + AND heartbeat = ?", + undef, $beaconport, lc $gamename, $secure, $ip, $heartbeat); + + # notify + $self->log("updated", "beacon heartbeat $ip:$beaconport pending $gamename:$heartbeat") if ($u > 0); + + # beacon was already in pending list and was updated + return 1 if ($u > 0); + + # if not found, add it + $u = $self->{dbh}->do( + "INSERT INTO pending (ip, beaconport, heartbeat, gamename, secure) + SELECT ?, ?, ?, ?, ?", + undef, $ip, $beaconport, $heartbeat, lc $gamename, $secure); + + # notify + $self->log("added", "beacon heartbeat $ip:$beaconport pending $gamename:$heartbeat") if ($u > 0); + + # it was added to pending + return 2 if ($u > 0); + + # or else report error + $self->log("error", "an error occurred adding beacon $ip:$beaconport with $gamename:$heartbeat to the pending list"); + return -1; +} + + +## Get pending server by ip, beacon port. +sub get_pending_beacon { + my ($self, $ip, $port) = @_; + + # if address is in list, update the timestamp + return $self->{dbh}->selectall_arrayref( + "SELECT * FROM pending + WHERE ip = ? + AND beaconport = ?", + undef, $ip, $port)->[0]; +} + + +## server checks out, remove entry from the pending list. +sub remove_pending { + my ($self, $id) = @_; + + # if address is in list, update the timestamp + my $u = $self->{dbh}->do("DELETE FROM pending WHERE id = ?", undef, $id); + + # notify + $self->log("deleted", "removed pending id $id from the list of pending servers") if ($u > 0); + + # it was added to pending + return 2 if ($u > 0); + + # or else report error + $self->log("error", "an error occurred deleting server $id from the pending list"); + return -1; +} + + +## mark server as "direct beacon to this masterserver" +sub set_direct_beacon { + my ($self, $ip, $port) = @_; + + # update or add server to serverlist + my $u = $self->{dbh}->do("UPDATE serverlist + SET b333ms = TRUE + WHERE ip = ? + AND port = ?", + undef, $ip, $port); + + # notify + $self->log("updated", "$ip:$port is a direct beacon.") if ($u > 0); + + # if found, updated; done + return 0 if ($u > 0); + + # or else report error + $self->log("error", "an error occurred setting server $ip:$port as direct beacon"); + return -1; +} + + + +1; diff --git a/lib/MasterServer/Database/Pg/dbCore.pm b/lib/MasterServer/Database/Pg/dbCore.pm new file mode 100755 index 0000000..c6e3182 --- /dev/null +++ b/lib/MasterServer/Database/Pg/dbCore.pm @@ -0,0 +1,44 @@ + +package MasterServer::Database::Pg::dbCore; + +use strict; +use warnings; +use Exporter 'import'; + +our @EXPORT = qw| database_login |; + +################################################################################ +## database_login +## login to the database with credentials provided in the config file. +## returns dbh object +################################################################################ +sub database_login { + my $self = shift; + + # create the dbi object + my $dbh = DBI->connect(@{$self->{dblogin}}, {PrintError => 0}); + + # verify that the database connected + if (defined $dbh) { + # log the event + $self->log("database","Connected to the Postgres database."); + + # turn on error printing + $dbh->{printerror} = 1; + + # return the dbi object for further use + return $dbh; + } + else { + # fatal error + $self->log("fatal", "$DBI::errstr!"); + + # end program + $self->halt(); + } + + # unreachable + return undef; +} + +1; diff --git a/lib/MasterServer/Database/Pg/dbServerlist.pm b/lib/MasterServer/Database/Pg/dbServerlist.pm new file mode 100755 index 0000000..8d1a2b2 --- /dev/null +++ b/lib/MasterServer/Database/Pg/dbServerlist.pm @@ -0,0 +1,44 @@ + +package MasterServer::Database::Pg::dbServerlist; + +use strict; +use warnings; +use Exporter 'import'; + +our @EXPORT = qw| add_to_serverlist |; + +## beacon was verified or otherwise accepted and will noe now be added to the +## serverlist. +sub add_to_serverlist { + my ($self, $ip, $port, $gamename) = @_; + + # update or add server to serverlist + my $u = $self->{dbh}->do("UPDATE serverlist + SET updated = NOW() + WHERE ip = ? + AND port = ?", + undef, $ip, $port); + + # notify + $self->log("updated", "$ip:$port timestamp updated") if ($u > 0); + + # if found, updated; done + return 0 if ($u > 0); + + # if not found, add it. + $u = $self->{dbh}->do("INSERT INTO serverlist (ip, port, gamename, country) + SELECT ?, ?, ?, ?", + undef, $ip, $port, $gamename, $self->ip2country($ip)); + + # notify + $self->log("added", "$ip:$port added to serverlist") if ($u > 0); + + # return added + return 1 if ($u > 0); + + # or else report error + $self->log("error", "an error occurred adding server $ip:$port ($gamename) to the serverlist"); + return -1; +} + +1; diff --git a/lib/MasterServer/UDP/BeaconCatcher.pm b/lib/MasterServer/UDP/BeaconCatcher.pm new file mode 100755 index 0000000..7fdc630 --- /dev/null +++ b/lib/MasterServer/UDP/BeaconCatcher.pm @@ -0,0 +1,67 @@ + +package MasterServer::UDP::BeaconCatcher; + +use strict; +use warnings; +use AnyEvent::Handle::UDP; +use Socket qw(sockaddr_in inet_ntoa); +use Exporter 'import'; + +our @EXPORT = qw| beacon_catcher on_beacon_receive|; + +## +## Receive UDP beacons according the \heartbeat\7778\gamename\ut\ format +## where "ut" depicts the game and 7778 the query port of the game. +sub beacon_catcher { + my $self = shift; + + # module startup log + $self->log("loader","Loading UDP Beacon Catcher."); + + # UDP server + my $udp_server; + $udp_server = AnyEvent::Handle::UDP->new( + + # Bind to this host and use the port specified in the config file + bind => ['0.0.0.0', $self->{beacon_port}], + + # when datagrams are received + on_recv => sub {$self->on_beacon_receive(@_)}, + ); + + # display that the server is up and listening for beacons + $self->log("ok", "Listening for UT Beacons on port $self->{beacon_port}."); + + # allow object to exist beyond this scope. Objects have ambitions too. + return $udp_server; +} + +## process (new) beacons +sub on_beacon_receive { + # $self, beacon address, handle, packed client address + my ($self, $b, $udp, $pa) = @_; + + # unpack ip from packed client address + my ($port, $iaddr) = sockaddr_in($pa); + my $peer_addr = inet_ntoa($iaddr); + + # if the beacon has a length longer than a certain amount, assume it is + # a fraud or crash attempt + if (length $b > 64) { + # log + $self->log("attack","length exceeded in beacon: $peer_addr:$port sent $b"); + + # truncate and try to continue + $b = substr $b, 0, 64; + } + + # if a heartbeat format was detected... + $self->process_udp_beacon($udp, $pa, $b, $peer_addr, $port) + if ($b =~ m/\\heartbeat\\/ && $b =~ m/\\gamename\\/); + + # or if this is a secure response, verify the response code and add mark it verified + $self->process_udp_validate($b, $peer_addr, $port, undef) + if ($b =~ m/\\validate\\/); +} + +1; diff --git a/lib/MasterServer/UDP/BeaconProcessor.pm b/lib/MasterServer/UDP/BeaconProcessor.pm new file mode 100755 index 0000000..a41905f --- /dev/null +++ b/lib/MasterServer/UDP/BeaconProcessor.pm @@ -0,0 +1,120 @@ + +package MasterServer::UDP::BeaconProcessor; + +use strict; +use warnings; +use Data::Dumper 'Dumper'; +use AnyEvent::Handle::UDP; +use Exporter 'import'; + +our @EXPORT = qw| process_udp_beacon process_udp_validate |; + + +## process beacons that have a \heartbeat\ and \gamename\ format +sub process_udp_beacon { + # $self, handle, packed address, udp data, peer ip address, $port + my ($self, $udp, $pa, $buf, $peer_addr, $port) = @_; + + # received heartbeat in $buf: \heartbeat\7778\gamename\ut\ + my %r; + $buf =~ s/\\([^\\]+)\\([^\\]+)/$r{$1}=$2/eg; + + # check whether the beacon has a gamename that is supported in our list + if (defined $r{gamename} && exists $self->{game}->{lc $r{gamename}}) { + # log the beacon + $self->log("beacon", "$peer_addr:$r{heartbeat} for $r{gamename}"); + + # some games (like bcommander) have a default port and don't send a + # heartbeat port. + if ($r{heartbeat} == 0) { + # assuming a default port exists + if (exists $self->{game}->{lc $r{gamename}}->{port}) { + $r{heartbeat} = $self->{game}->{lc $r{gamename}}->{port}; + } + } + + # + # verify valid server address (ip+port) + if ($self->valid_address($peer_addr,$r{heartbeat})) { + + # generate a new secure string + my $secure = $self->secure_string(); + + # update beacon in serverlist if it already exists, otherwise update + # or add to pending with new secure string. + my $auth = $self->add_beacon($peer_addr, $port, $r{heartbeat}, $r{gamename}, $secure); + + # send secure string back + if ($auth > 0) { + + # verify that this is a legitimate client by sending the "secure" query + $udp->push_send("\\secure\\$secure\\final\\", $pa); + + # log this as a new beacon + $self->log("secure", "challenged new beacon $peer_addr:$port with $secure."); + } + } + + # invalid ip+port combination, like \heartbeat\0\ or local IP + else { + # Log that beacon had incorrect information, such as port 0 or so. Spams log! + $self->log("invalid","$peer_addr:$r{heartbeat} ($r{heartbeat}) had bad information"); + } + } + + # gamename not valid or not found in supportedgames.pl + else { + # log + $self->log("support", "received unknown beacon \"$r{gamename}\" from $peer_addr:$r{heartbeat}"); + } +} + + +## process the received validate query and determine whether the server is allowed in our database +sub process_udp_validate { + # $self, udp data, ip, port + my ($self, $buf, $peer_addr, $port, $heartbeat) = @_; + + # received heartbeat in $b: \validate\string\queryid\99.9\ + my %r; + $buf =~ s/\\([^\\]+)\\([^\\]+)/$r{$1}=$2/eg; + + # get our existing knowledge about this server from the database + # if the heartbeat/queryport known? then use that instead as beacon ports --> may vary after server restarts! + my $pending = (defined $heartbeat) ? $self->get_pending_info($peer_addr, $heartbeat) : $self->get_pending_beacon($peer_addr, $port); + + # if indeed in the pending list, check + if (defined $pending) { + + #determine if it uses any enctype + my $enc = (defined $r{enctype}) ? $r{enctype} : 0; + + # database may not contain the correct gamename (ucc applet, incomplete beacon, change of gameserver) + $pending->[4] = (defined $r{gamename} && exists $self->{game}->{lc $r{gamename}}) ? $r{gamename} : $pending->[4]; + + # verify challenge gamename secure enctype validate_response + my $val = $self->validated_beacon($pending->[4], $pending->[5], $enc, $r{validate}); + + # log challenge results + $self->log("secure", "$peer_addr:$port validated with $val for $pending->[4]"); + + # if validated, add to db + if ($val > 0) { + + # successfully added? ip, query port, gamename + my $sa = $self->add_to_serverlist($pending->[1], $pending->[3], $pending->[4]); + + # remove the entry from pending if successfully added + $self->remove_pending($pending->[0]) if ( $sa >= 0); + + # and set as direct beacon + $self->set_direct_beacon($pending->[1], $pending->[3]); + } + else { + # else failed validation + $self->log("error","beacon $peer_addr:$port failed validation for $pending->[4] (details: $pending->[5] sent, got $r{validate})"); + } + } +} + +1; diff --git a/util/masterserver.pl b/util/masterserver.pl new file mode 100755 index 0000000..9142d82 --- /dev/null +++ b/util/masterserver.pl @@ -0,0 +1,25 @@ +#!/usr/bin/perl + +package MasterServer; + +use strict; +use warnings; +use Cwd 'abs_path'; + +our $ROOT; +BEGIN { ($ROOT = abs_path $0) =~ s{/util/masterserver\.pl$}{}; } +use lib $ROOT.'/lib'; + +use MasterServer; + +our %S; +require "$ROOT/data/masterserver-config.pl"; + +#add %C from config.pl to OBJ +$MasterServer::OBJ->{$_} = $S{$_} for (keys %S); + +# load MasterServer core libs +MasterServer::load_recursive('MasterServer::Core', 'MasterServer::UDP'); + +# Run the MasterServer process +MasterServer::run(); |
