diff --git a/Cargo.lock b/Cargo.lock index a2f5f62..68c9156 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -622,7 +622,7 @@ checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" [[package]] name = "iso2god" -version = "1.5.0" +version = "1.5.1" dependencies = [ "anyhow", "bitflags 2.6.0", diff --git a/Cargo.toml b/Cargo.toml index ad7c159..8fbe8c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "iso2god" -version = "1.5.0" +version = "1.5.1" description = "A tool to convert between Xbox 360 ISO and Games On Demand file formats" repository = "https://github.com/iliazeus/iso2god-rs" edition = "2021" diff --git a/src/game_list.rs b/src/game_list.rs index 72c416e..144c7bb 100644 --- a/src/game_list.rs +++ b/src/game_list.rs @@ -1,3 +1,5 @@ +// TODO: extract game title from ISOs themselves + pub fn find_title_by_id(title_id: [u8; 4]) -> Option { GAMES_BY_TITLE_ID .binary_search_by_key(&u32::from_be_bytes(title_id), |x| x.0) @@ -6,7 +8,7 @@ pub fn find_title_by_id(title_id: [u8; 4]) -> Option { } #[rustfmt::skip] -const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ +const GAMES_BY_TITLE_ID: &[(u32, &'static str)] = &[ (0x315A07D1, "NBA 2K16"), (0x315A07D2, "WWE 2K16"), (0x324707D1, "Love Tore: Sweet"), @@ -46,7 +48,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x415607D4, "Tony Hawk's American Wasteland"), (0x415607D6, "Quake 4 Bonus Disc"), (0x415607D7, "Quake 4"), - (0x415607DA, "Marvel: Ultimate Alliance (Gold Edition)"), (0x415607DA, "Marvel: Ultimate Alliance"), (0x415607DD, "Tony Hawk's Project 8"), (0x415607DE, "Wolfenstein"), @@ -78,9 +79,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x41560824, "Secret Service"), (0x41560825, "The History Channel: Civil War — Secret Missions"), (0x41560826, "Cabela's Dangerous Adventures"), - (0x41560826, "Cabela's Dangerous Hunts 2009"), (0x41560827, "Millennium Series Championship Paintball 2009"), - (0x41560827, "NPPL Championship Paintball 2009"), (0x4156082A, "Monsters vs. Aliens"), (0x4156082F, "Marvel: Ultimate Alliance 2"), (0x41560830, "Guitar Hero: Metallica"), @@ -159,8 +158,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4156091B, "Tony Hawk's Pro Skater 5"), (0x4156091C, "Destiny Demo"), (0x4156091E, "Teenage Mutant Ninja Turtles: Mutants in Manhattan"), - (0x41560920, "Guitar Hero Live (Disc 1)"), - (0x41560920, "Guitar Hero Live (Disc 2)"), + (0x41560920, "Guitar Hero Live"), (0x41560922, "The Peanuts Movie: Snoopy's Grand Adventure"), (0x41560923, "Transformers: Devastation"), (0x41560924, "King's Quest - Chapter 1"), @@ -175,8 +173,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x415907D1, "Supreme Commander"), (0x415907D5, "Supreme Commander"), (0x415907D7, "Black College Football: The Xperience — The Doug Williams Edition"), - (0x424107D1, "Zegapain NOT"), - (0x424107D1, "Zegapain XOR"), + (0x424107D1, "Zegapain"), (0x424107D2, "Culdcept Saga (Updated Version)"), (0x424107D6, "Mobile Suit Gundam: Operation Troy"), (0x424107DD, "Culdcept Saga"), @@ -184,8 +181,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x424907D1, "WSC Real 09: World Snooker Championship"), (0x424907D4, "WSC Real 11: World Snooker Championship"), (0x425007D1, "Super Robot Taisen XO"), - (0x425307D1, "The Elder Scrolls IV: Oblivion — 5th Anniversary Edition (Disc 1)"), - (0x425307D1, "The Elder Scrolls IV: Oblivion — 5th Anniversary Edition (Disc 2)"), + (0x425307D1, "The Elder Scrolls IV: Oblivion — 5th Anniversary Edition"), (0x425307D2, "Star Trek: Legacy"), (0x425307D3, "Rogue Warrior"), (0x425307DB, "WET"), @@ -219,21 +215,15 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x434307EC, "Dead Rising 2"), (0x434307ED, "Lost Planet 2"), (0x434307F0, "MotoGP 09/10"), - (0x434307FC, "Super Street Fighter IV: Arcade Edition"), (0x434307FC, "Super Street Fighter IV"), - (0x434307FC, "Ultra Street Fighter IV"), - (0x434307FD, "Monster Hunter Frontier G1 Premium Package (Disc 1)"), (0x434307FD, "Monster Hunter Frontier Online"), (0x43430806, "Marvel vs. Capcom 3: Fate of Two Worlds"), (0x4343080B, "MotoGP 10/11"), (0x4343080F, "Street Fighter X Tekken"), - (0x43430814, "Dragon's Dogma: Dark Arisen (Disc 1)"), - (0x43430814, "Dragon's Dogma: Dark Arisen (Disc 2)"), (0x43430814, "Dragon's Dogma"), (0x43430816, "Steel Battalion: Heavy Armor"), (0x43430817, "Asura's Wrath"), - (0x43430819, "Resident Evil 6 (Disc 1)"), - (0x43430819, "Resident Evil 6 (Disc 2)"), + (0x43430819, "Resident Evil 6"), (0x4343081C, "Resident Evil 4"), (0x4343081D, "Resident Evil: Operation Raccoon City"), (0x4343081E, "Devil May Cry HD Collection"), @@ -270,15 +260,12 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x434D0809, "Overlord II"), (0x434D080D, "Fuel"), (0x434D0811, "Operation Flashpoint: Dragon Rising"), - (0x434D0811, "Operation Flashpoint: Dragon Rising"), (0x434D0822, "Leisure Suit Larry: Box Office Bust"), (0x434D082B, "Ashes Cricket 2009"), (0x434D082D, "F1 2010"), - (0x434D082D, "F1 2010"), (0x434D0836, "International Cricket 2010"), (0x434D0838, "Operation Flashpoint: Red River"), (0x434D0839, "Bodycount"), - (0x434D083D, "DiRT 3 — Complete Edition"), (0x434D083D, "DiRT 3"), (0x434D0842, "F1 2011"), (0x434D0844, "GRID 2"), @@ -291,7 +278,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x434E07D3, "Autobahn Polizei"), (0x434E07D5, "SBK: Superbike World Championship"), (0x435607D1, "World Championship Poker 2: All In"), - (0x435607D1, "World Championship Poker Featuring Howard Lederer: All In"), (0x435607D4, "Summer Athletics: The Ultimate Challenge"), (0x435607D5, "Crash Time: Autobahn Pursuit"), (0x435607D7, "Pinball Hall of Fame: The Williams Collection"), @@ -353,16 +339,13 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x445407DE, "The Cursed Crusade"), (0x445407E1, "Crash Time 5: Undercover"), (0x454107E8, "NCAA Football 07"), - (0x454107E9, "Der Pate (The Godfather)"), - (0x454107E9, "El Padrino (The Godfather)"), - (0x454107E9, "le Parrain (The Godfather)"), + (0x454107E9, "The Godfather"), (0x454107F2, "NCAA March Madness 07"), (0x454107F8, "Army of Two"), (0x45410806, "Burnout Paradise: The Ultimate Box"), (0x45410814, "NASCAR 08"), (0x4541081A, "NCAA Football 08"), (0x4541082D, "NASCAR 08"), - (0x45410830, "Left 4 Dead — Game of the Year Edition"), (0x45410830, "Left 4 Dead"), (0x45410837, "NCAA March Madness 08"), (0x45410841, "NFL Head Coach 09"), @@ -370,10 +353,8 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4541084C, "Army of Two"), (0x4541085D, "NCAA Football 09"), (0x45410860, "Command & Conquer: Alarmstufe Rot 3 (Red Alert 3)"), - (0x45410864, "Madden NFL 09 20th Anniversary Collector's Edition"), (0x45410864, "Madden NFL 09"), - (0x45410866, "El Padrino II (The Godfather II)"), - (0x45410866, "le Parrain II (The Godfather II)"), + (0x45410866, "The Godfather II"), (0x4541086F, "Monopoly"), (0x45410870, "Tiger Woods PGA Tour 09"), (0x45410879, "NASCAR 09"), @@ -419,19 +400,15 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x45410934, "Need for Speed Shift 2: Unleashed"), (0x45410937, "Madden NFL 12"), (0x4541093A, "Rango"), - (0x4541093D, "Mass Effect 2 (Disc 1)"), - (0x4541093D, "Mass Effect 2 (Disc 2)"), + (0x4541093D, "Mass Effect 2"), (0x4541093E, "Kingdoms of Amalur: Reckoning"), (0x45410949, "Dragon Age: Origins — Ultimate Edition"), - (0x45410949, "Dragon Age: Origins Ultimate Edition (Disc 2)"), (0x4541094C, "NBA Jam"), (0x4541094D, "Tiger Woods PGA Tour 12: The Masters"), (0x4541094E, "NCAA Football 12"), - (0x45410950, "Battlefield 3 (Disc 1)"), - (0x45410950, "Battlefield 3 (Disc 2)"), + (0x45410950, "Battlefield 3"), (0x45410955, "Harry Potter and the Deathly Hallows: Part 2"), - (0x45410959, "Dead Space 2 (Disc 1)"), - (0x45410959, "Dead Space 2 (Disc 2)"), + (0x45410959, "Dead Space 2"), (0x45410962, "The Sims 3: Pets"), (0x45410964, "NHL 12"), (0x45410966, "Hasbro Family Game Night 4: The Game Show"), @@ -439,17 +416,14 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4541096D, "SSX"), (0x4541096E, "Fuse"), (0x4541096F, "Hasbro Family Game Night — Fun Pack"), - (0x45410972, "Tiger Woods PGA Tour 13: Masters Collector's Edition"), (0x45410972, "Tiger Woods PGA Tour 13"), (0x4541097B, "FIFA Street"), (0x4541097C, "Hasbro Family Game Night 4: The Game Show"), (0x4541098A, "NCAA Football 13"), (0x4541098B, "Madden NFL 13"), - (0x45410997, "Dragon Age: Inquisition (Disc 1)"), - (0x45410997, "Dragon Age: Inquisition (Disc 2)"), + (0x45410997, "Dragon Age: Inquisition"), (0x4541099B, "NHL 13"), (0x4541099F, "Zuma's Revenge!"), - (0x454109A9, "Tiger Woods PGA Tour 14: Masters Historic Edition"), (0x454109A9, "Tiger Woods PGA Tour 14"), (0x454109AB, "Army of Two: The Devil's Cartel"), (0x454109B6, "NCAA Football 14"), @@ -458,11 +432,9 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x454109C6, "Need for Speed Rivals"), (0x454109C9, "Plants vs. Zombies: Garden Warfare"), (0x454109D4, "2014 FIFA World Cup Brazil"), - (0x454109D4, "Copa Mundial de la FIFA Brasil 2014 (2014 FIFA World Cup Brazil)"), (0x454109D9, "Madden NFL 15"), (0x454109DC, "NHL 15"), - (0x454109E0, "Battlefield Hardline (Disc 1)"), - (0x454109E0, "Battlefield Hardline (Disc 2)"), + (0x454109E0, "Battlefield Hardline"), (0x454109EB, "Madden NFL 16"), (0x454109EC, "NHL Legacy Edition"), (0x454109F2, "Madden NFL 17"), @@ -489,7 +461,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x464707D1, "AquaZone: Life Simulator"), (0x464A07D1, "The Escapists"), (0x464F07D7, "MorphX"), - (0x464F07D8, "Naughty Bear — Gold Edition"), (0x464F07D8, "Naughty Bear"), (0x464F07D9, "Naval Assault: The Killing Tide"), (0x464F07DA, "Backbreaker"), @@ -497,7 +468,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x464F07E1, "Michael Phelps: Push the Limit"), (0x464F07E4, "Supremacy MMA"), (0x464F07E7, "Grease: Dance"), - (0x464F07E8, "Sniper Elite V2 — Game of the Year Edition"), (0x464F07E8, "Sniper Elite V2"), (0x464F07E9, "Brunswick Pro Bowling"), (0x464F07EB, "Greg Hastings Paintball 2"), @@ -506,15 +476,12 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x464F07F2, "Blackwater"), (0x464F07F6, "Jillian Michaels' Fitness Adventure"), (0x464F0802, "Terraria"), - (0x464F0803, "Sniper Elite III — Ultimate Edition"), (0x464F0803, "Sniper Elite III"), (0x465307D1, "Tenchu Z"), (0x465307D2, "[eM] -eNCHANT arM- (Japanese Version)"), (0x465307D3, "[eM] -eNCHANT arM- (Asian Version)"), (0x465307D7, "Tenchu Z"), (0x465307E3, "Armored Core: Verdict Day"), - (0x465307E4, "Dark Souls II: Scholar of the First Sin (Disc 1)"), - (0x465307E4, "Dark Souls II: Scholar of the First Sin (Disc 2)"), (0x465307E4, "Dark Souls II"), (0x465607D1, "Ketsui: Kizuna Jigoku Tachi Extra"), (0x465607D2, "DoDonPachi Dai-Ou-Jou Black Label Extra"), @@ -523,7 +490,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x465607D5, "Memories Off 6: T-wave"), (0x465607D6, "Memories Off 6: Next Relation"), (0x465607D7, "Tayutama: Kiss on my Deity"), - (0x465607D8, "Steins;Gate — Platinum Collection"), (0x465607D8, "Steins;Gate"), (0x465607DB, "W.L.O. Sekai Renai Kikou"), (0x465607DC, "Chaos;Head Love Chu*Chu!"), @@ -619,11 +585,8 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x494D0869, "Official Xbox Magazine Demo Disc 117"), (0x494F07D4, "Deadly Premonition"), (0x494F07E8, "National Geographic Challenge!"), - (0x4A5707D2, "ArcaniA - Gothic 4"), (0x4A5707D2, "Arcania: Gothic 4"), - (0x4A5707D2, "Arcania: The Complete Tale"), (0x4A5707D3, "Sherlock Holmes Versus Jack the Ripper"), - (0x4B4D07DF, "Dead Island — Game of the Year Edition"), (0x4B4D07DF, "Dead Island"), (0x4B4D07E2, "The X Factor"), (0x4B4D07E5, "Winter Stars"), @@ -634,7 +597,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4B4D07EB, "Summer Stars 2012"), (0x4B4D07F2, "Dead Island: Riptide"), (0x4B4D07F5, "Metro: Last Light"), - (0x4B4D07F6, "Saints Row IV — Game of the Century Edition (Disc 2)"), + (0x4B4D07F6, "Saints Row IV — Game of the Century Edition"), (0x4B4D07F9, "Saints Row IV"), (0x4B4D07FB, "NASCAR '14"), (0x4B4D07FD, "Risen 3: Titan Lords"), @@ -653,7 +616,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4B4E07E7, "Dancing Stage Universe 2"), (0x4B4E07E9, "Pro Evolution Soccer 2008"), (0x4B4E07EE, "Otomedius Gorgeous"), - (0x4B4E07EF, "Dance Dance Revolution Universe 3 Chinese Song Special Edition"), (0x4B4E07EF, "Dance Dance Revolution Universe 3"), (0x4B4E07F3, "Karaoke Revolution Presents: American Idol Encore 2"), (0x4B4E07F6, "Rock Revolution"), @@ -682,8 +644,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4B4E0845, "Silent Hill HD Collection"), (0x4B4E084D, "Castlevania: Lords of Shadow 2"), (0x4B4E0856, "World Soccer Winning Eleven 2014: Aoki Samurai no Chousen"), - (0x4B4E085E, "Metal Gear Solid V: The Phantom Pain (Disc 1)"), - (0x4B4E085E, "Metal Gear Solid V: The Phantom Pain (Disc 2)"), + (0x4B4E085E, "Metal Gear Solid V: The Phantom Pain"), (0x4B4F07D5, "Samurai Warriors 2: Empires"), (0x4B4F07D6, "Samurai Warriors 2 Empires"), (0x4B4F07D7, "Fatal Inertia"), @@ -708,24 +669,18 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4B5607E5, "Dynasty Warriors 8"), (0x4B5607E6, "Shin Sangoku Musou 7 (Dynasty Warriors 8)"), (0x4B5607E8, "Dead or Alive 5 Ultimate"), - (0x4B5807D1, "Entaku no Seito: Students of Round — DRPG Selection"), (0x4B5807D1, "Entaku no Seito: Students of Round"), (0x4B5807D5, "Tsurugi no Machi no Ihoujin: Shiro no Oukyuu"), (0x4B5907D8, "The First Templar"), (0x4B5907DA, "DarkStar One: Broken Alliance"), - (0x4B5907DC, "Tropico 4 — Gold Edition"), (0x4B5907DC, "Tropico 4"), (0x4B5907DF, "Port Royale 3: Pirates & Merchants"), (0x4B5907E0, "Air Conflicts: Secret Wars"), (0x4B5907E5, "Omerta: City of Gangsters"), (0x4B5907E6, "Dark"), (0x4B5907EA, "Tropico 5"), - (0x4C4107D2, "Star Wars: The Force Unleashed — Ultimate Sith Edition (Disc 1)"), - (0x4C4107D2, "Star Wars: The Force Unleashed — Ultimate Sith Edition (Disc 2)"), (0x4C4107D2, "Star Wars: The Force Unleashed"), (0x4C4107D4, "Fracture"), - (0x4C4107D6, "Thrillville: Fuera de Control (Thrillville: Off the Rails)"), - (0x4C4107D6, "Thrillville: Le Parc en Folie (Thrillville: Off the Rails)"), (0x4C4107D6, "Thrillville: Off the Rails"), (0x4C4107E2, "Star Wars: The Clone Wars — Republic Heroes"), (0x4C4107ED, "LEGO Indiana Jones 2: The Adventure Continues"), @@ -786,44 +741,33 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4D530834, "Wireless Racing Wheel Demo Disc"), (0x4D530837, "Xbox Live Arcade Compilation Disc"), (0x4D530843, "Xbox Live Arcade Compilation Disc"), - (0x4D53084D, "Forza Motorsport 3: Ultimate Collection (Disc 1)"), - (0x4D53084D, "Forza Motorsport 3: Ultimate Collection (Disc 2)"), + (0x4D53084D, "Forza Motorsport 3: Ultimate Collection"), (0x4D53085B, "Halo: Reach (XGD3 beta)"), (0x4D53085F, "Viva Pinata: Trouble in Paradise"), (0x4D530873, "Forza Motorsport 2 — Platinum Hits Bonus Disc"), (0x4D530876, "Gears Of War 2 Limited Collector's Edition Bonus Disc"), (0x4D53087B, "Gears of War Platinum Hits Edition Bonus Disc"), - (0x4D530888, "Lips: Canta en Espanol"), - (0x4D530888, "Lips: Deutsche Partyknaller (German Party Hits)"), - (0x4D530888, "Lips: I Love The 80s"), - (0x4D530888, "Lips: Number One Hits"), (0x4D530888, "Lips: Party Classics"), (0x4D5308AA, "Banjo-Kazooie: Nuts & Bolts — Demo Disc"), (0x4D5308AF, "Lips: Number One Hits"), - (0x4D5308B3, "Kinectimals: Now with Bears!"), (0x4D5308B3, "Kinectimals"), (0x4D5308BB, "Mass Effect Bonus Disc"), (0x4D5308BC, "Crackdown 2"), - (0x4D5308C9, "Kinect Sports: Ultimate Collection (Disc 1)"), (0x4D5308C9, "Kinect Sports"), (0x4D5308CE, "Halo Waypoint"), (0x4D5308D4, "Gears Of War 2 Limited Collector's Edition Bonus Disc"), (0x4D5308DC, "Xbox Live Arcade Game Pack"), (0x4D5308DE, "Alan Wake Limited Collector's Edition Bonus Disc"), (0x4D530901, "Game Room"), - (0x4D530910, "Forza Motorsport 4 — Essentials Edition"), - (0x4D530910, "Forza Motorsport 4 — Racing Game of the Year Edition (Disc 1)"), - (0x4D530910, "Forza Motorsport 4 — Racing Game of the Year Edition (Disc 2)"), - (0x4D530919, "Halo 4 (Disc 2)"), + (0x4D530910, "Forza Motorsport 4 — Racing Game of the Year Edition"), + (0x4D530919, "Halo 4"), (0x4D53093B, "Kinect Joy Ride"), (0x4D5309B1, "Halo: Combat Evolved Anniversary"), (0x4D5309B6, "Kinect Rush: A Disney Pixar Adventure"), (0x4D5309C5, "Xbox Live Arcade Triple Pack — Limbo / Trials HD / 'Splosion Man"), - (0x4D5309CD, "Kinect Nat Geo TV (Disc 1)"), - (0x4D5309CD, "Kinect Nat Geo TV (Disc 2)"), + (0x4D5309CD, "Kinect Nat Geo TV"), (0x4D5309D6, "Kinect Sports: Season Two"), - (0x4D5309DA, "Kinect Sesame Street TV (Disc 1)"), - (0x4D5309DA, "Kinect Sesame Street TV (Disc 2)"), + (0x4D5309DA, "Kinect Sesame Street TV"), (0x4D5309DF, "The Gunstringer"), (0x4D530A0C, "Kinect Rush: A Disney Pixar Adventure — Game Demos: Just for Fun!"), (0x4D530A1C, "Kinect Star Wars — Game Demos: Just for Fun!"), @@ -863,12 +807,9 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4E4D07FC, "Tekken 6"), (0x4E4D0801, "Inversion"), (0x4E4D0805, "Tales of Vesperia"), - (0x4E4D080A, "MagnaCarta 2"), - (0x4E4D080A, "MagnaCarta II (Disc 1)"), - (0x4E4D080B, "MagnaCarta II (Disc 1)"), - (0x4E4D080B, "MagnaCarta II (Disc 2)"), - (0x4E4D080C, "MagnaCarta II (Disc 1)"), - (0x4E4D080C, "MagnaCarta II (Disc 2)"), + (0x4E4D080A, "MagnaCarta II"), + (0x4E4D080B, "MagnaCarta II"), + (0x4E4D080C, "MagnaCarta II"), (0x4E4D0827, "Body and Brain Connection A.K.A. Dr. Kawashima's Body and Brain Exercises"), (0x4E4D0834, "Dynasty Warriors: Gundam 3"), (0x4E4D083A, "Dark Souls: Prepare to Die Edition"), @@ -891,7 +832,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x4F5807D1, "PDC World Championship Darts 2008"), (0x504307D1, "Fairytale Fights"), (0x504307D4, "Infernal: Hell's Vengeance"), - (0x504307D4, "Infernal: Hell's Vengeance"), (0x504707D1, "PopCap Arcade Vol. 1"), (0x504707D4, "PopCap Arcade Vol. 2"), (0x504707D6, "PopCap Arcade"), @@ -977,8 +917,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x53450858, "Captain America: Super Soldier"), (0x5345085A, "Dreamcast Collection"), (0x5345085D, "Sonic & All-Stars Racing Transformed"), - (0x5345085E, "Alien: Isolation (Disc 1)"), - (0x5345085E, "Alien: Isolation (Disc 2)"), + (0x5345085E, "Alien: Isolation"), (0x534A07D1, "Williams Pinball Classics"), (0x534E07D2, "The King of Fighters XII"), (0x534E07D5, "Samurai Shodown: Sen"), @@ -988,27 +927,20 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x535007E5, "X-Blades"), (0x535007E8, "Velvet Assassin"), (0x535107D2, "Final Fantasy XI - Beta"), - (0x535107D2, "Final Fantasy XI Online Beta"), (0x535107D2, "Official Xbox Magazine Demo Disc 54e"), (0x535107D4, "Project Sylpheed: Arc of Deception"), - (0x535107D5, "Final Fantasy XI: All In One Pack 2006"), - (0x535107D5, "Final Fantasy XI: Ultimate Collection — Seekers Edition"), (0x535107D5, "Final Fantasy XI: Ultimate Collection"), - (0x535107D5, "Final Fantasy XI: Vana'diel Collection 2008"), - (0x535107E4, "Final Fantasy XIII (Disc 1)"), - (0x535107E4, "Final Fantasy XIII (Disc 2)"), - (0x535107E4, "Final Fantasy XIII (Disc 3)"), + (0x535107E4, "Final Fantasy XIII"), (0x535107E8, "Nier"), (0x535107E9, "Front Mission Evolved"), (0x535107ED, "NieR Gestalt"), (0x535107EF, "Batman: Arkham Asylum"), (0x535107F1, "Mindjack"), (0x535107F3, "Just Cause 2"), - (0x535107FA, "Deus Ex: Human Revolution — Director's Cut (Disc 1)"), - (0x535107FA, "Deus Ex: Human Revolution — Director's Cut (Disc 2)"), + (0x535107FA, "Deus Ex: Human Revolution — Director's Cut"), (0x53510803, "Thief"), (0x53510819, "Sleeping Dogs"), - (0x5351081C, "Hitman HD Trilogy (Disc 1) — Hitman 2: Silent Assassin / Hitman: Contracts"), + (0x5351081C, "Hitman HD Trilogy — Hitman 2: Silent Assassin / Hitman: Contracts"), (0x5351081E, "Murdered: Soul Suspect"), (0x535407D1, "SuperStar Karaoke"), (0x535507D1, "Operation Darkness"), @@ -1032,7 +964,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x545107F6, "MotoGP '07"), (0x54510801, "Cars: La Copa Internacional de Mate (Mater-National)"), (0x5451080B, "WWE SmackDown vs. Raw 2008"), - (0x5451080B, "WWE SmackDown vs. Raw 2008"), (0x54510821, "Conan"), (0x54510826, "WWE SmackDown vs. Raw 2009"), (0x5451082C, "Warhammer 40000: Space Marine"), @@ -1042,7 +973,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x5451083B, "50 Cent: Blood on the Sand"), (0x54510840, "Are You Smarter Than A 5th Grader? Game Time"), (0x54510844, "WWE SmackDown vs. Raw 2010"), - (0x54510844, "WWE SmackDown vs. Raw 2010"), (0x54510848, "Cars: Race-O-Rama"), (0x54510852, "50 Cent: Blood on the Sand"), (0x54510859, "The Biggest Loser: Ultimate Workout"), @@ -1056,7 +986,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x54510866, "WWE All Stars"), (0x54510869, "You Don't Know Jack"), (0x5451086B, "Deepak Chopra's Leela"), - (0x5451086D, "Saints Row: The Third — The Full Package (Disc 1)"), + (0x5451086D, "Saints Row: The Third — The Full Package"), (0x54510873, "The Penguins of Madagascar: Dr. Blowhole Returns — Again!"), (0x54510874, "Kung Fu Panda 2"), (0x54510875, "Rio"), @@ -1076,7 +1006,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x545108B4, "WWE '13"), (0x545407D2, "College Hoops 2K6"), (0x545407D3, "Major League Baseball 2K6"), - (0x545407D8, "BioShock: Ultimate Rapture Edition — BioShock Add-On Content"), (0x545407D8, "BioShock"), (0x545407DC, "Don King Presents: Prizefighter"), (0x545407DD, "The Bureau: XCOM Declassified"), @@ -1087,7 +1016,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x545407EE, "The Darkness"), (0x545407F1, "College Hoops 2K7"), (0x545407F2, "Grand Theft Auto: Episodes from Liberty City"), - (0x545407F8, "Midnight Club: Los Angeles — Complete Edition"), (0x545407F8, "Midnight Club: Los Angeles"), (0x545407FF, "Top Spin 3"), (0x54540804, "The Darkness"), @@ -1100,9 +1028,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x54540823, "NBA 2K8"), (0x54540829, "NBA 2K9"), (0x5454082A, "The Darkness"), - (0x5454082B, "Red Dead Redemption — Game of the Year Edition (Disc 1)"), - (0x5454082B, "Red Dead Redemption — Game of the Year Edition (Disc 2)"), - (0x5454082B, "Red Dead Redemption: Undead Nightmare Collection"), (0x5454082B, "Red Dead Redemption"), (0x5454082E, "NHL 2K9"), (0x5454082F, "MLB Front Office Manager"), @@ -1118,15 +1043,8 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x54540865, "BioShock 2"), (0x54540866, "Borderlands"), (0x54540867, "BioShock 2"), - (0x5454086B, "Max Payne 3 (Disc 1)"), - (0x5454086B, "Max Payne 3 (Disc 2)"), - (0x5454086C, "L.A. Noire (Disc 1)"), - (0x5454086C, "L.A. Noire (Disc 2)"), - (0x5454086C, "L.A. Noire (Disc 3)"), - (0x5454086C, "L.A. Noire: The Complete Edition (Disc 1)"), - (0x5454086C, "L.A. Noire: The Complete Edition (Disc 2)"), - (0x5454086C, "L.A. Noire: The Complete Edition (Disc 3)"), - (0x5454086C, "L.A. Noire: The Complete Edition (Disc 4)"), + (0x5454086B, "Max Payne 3"), + (0x5454086C, "L.A. Noire"), (0x5454086D, "Borderlands: Double Game Add-On Pack"), (0x5454087A, "NBA 2K11"), (0x5454087C, "Borderlands 2"), @@ -1135,8 +1053,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x54540882, "XCOM: Enemy Unknown"), (0x54540883, "Nicktoons MLB"), (0x5454088E, "Major League Baseball 2K11"), - (0x5454088F, "Borderlands — Game of the Year Edition (Disc 2)"), - (0x5454088F, "Borderlands — Triple Pack Edition (Disc 2)"), + (0x5454088F, "Borderlands — Game of the Year Edition"), (0x54540890, "Carnival Games: Monkey See Monkey Do"), (0x54540894, "NBA 2K12"), (0x54540895, "Nickelodeon Dance"), @@ -1145,19 +1062,16 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x5454089E, "Major League Baseball 2K12"), (0x545408A2, "NBA 2K13"), (0x545408A5, "Nickelodeon Dance 2"), - (0x545408A7, "Grand Theft Auto V (Disc 1)"), - (0x545408A7, "Grand Theft Auto V (Disc 2)"), + (0x545408A7, "Grand Theft Auto V"), (0x545408AB, "Major League Baseball 2K13"), (0x545408AE, "XCOM: Enemy Within"), (0x545408B0, "NBA 2K14"), (0x545408B2, "WWE 2K14"), - (0x545408B3, "Borderlands 2 — Game of the Year Edition (Disc 2)"), - (0x545408B3, "Borderlands 2 — Triple Pack Edition (Disc 2)"), - (0x545408B4, "Borderlands: The Pre-Sequel — Triple Pack Edition (Disc 2)"), + (0x545408B3, "Borderlands 2 — Game of the Year Edition"), (0x545408B4, "Borderlands: The Pre-Sequel"), (0x545408B5, "NBA 2K15"), (0x545408B6, "WWE 2K15"), - (0x545408B7, "BioShock Infinite: The Complete Edition (Disc 2)"), + (0x545408B7, "BioShock Infinite: The Complete Edition"), (0x545408B8, "Grand Theft Auto: San Andreas"), (0x545408B9, "Tales from the Borderlands: A Telltale Games Series"), (0x545408BA, "WWE 2K17"), @@ -1192,7 +1106,6 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x5553080F, "Lost: Via Domus"), (0x5553081B, "Tom Clancy's Ghost Recon Advanced Warfighter 2 — Legacy Edition Bonus Disc"), (0x5553081C, "Call of Juarez: Bound in Blood"), - (0x5553081E, "Shaun White Snowboarding — Target Limited Edition"), (0x5553081E, "Shaun White Snowboarding"), (0x55530825, "Naruto: The Broken Bond"), (0x55530828, "Brothers in Arms: Hell's Highway"), @@ -1225,19 +1138,16 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x55530890, "Just Dance Kids"), (0x555308AC, "Ubisoft Triple Pack — Beyond Good & Evil HD / From Dust / Outland"), (0x555308AD, "Marvel Avengers: Battle for Earth"), - (0x555308AE, "Assassin's Creed: Birth of a New World — The American Saga (Disc 1)"), - (0x555308AE, "Assassin's Creed: Birth of a New World — The American Saga (Disc 2)"), + (0x555308AE, "Assassin's Creed: Birth of a New World — The American Saga"), (0x555308B2, "Just Dance: Greatest Hits"), (0x555308B3, "Just Dance: Disney Party"), (0x555308B4, "The Hip Hop Dance Experience"), - (0x555308B7, "Watch_Dogs (Disc 1)"), - (0x555308B7, "Watch_Dogs (Disc 2)"), + (0x555308B7, "Watch_Dogs"), (0x555308BD, "The Smurfs 2"), (0x555308C0, "Rocksmith 2014"), (0x555308C3, "Rayman Legends"), (0x555308C7, "Just Dance Kids 2014"), - (0x555308CB, "The Crew (Disc 1)"), - (0x555308CB, "The Crew (Disc 2)"), + (0x555308CB, "The Crew"), (0x555308CC, "Just Dance: Disney Party 2"), (0x555308CE, "Assassin's Creed Rogue"), (0x555308CF, "Far Cry 3: Blood Dragon"), @@ -1275,8 +1185,7 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x573607E2, "WRC 5: FIA World Rally Championship"), (0x573607E3, "Rugby World Cup 2015"), (0x573607E4, "Handball 16"), - (0x574607D2, "The Witcher 2: Assassins of Kings — Enhanced Edition (Disc 1)"), - (0x574607D2, "The Witcher 2: Assassins of Kings — Enhanced Edition (Disc 2)"), + (0x574607D2, "The Witcher 2: Assassins of Kings — Enhanced Edition"), (0x574607D5, "Dead Island: Riptide"), (0x575207D2, "Looney Tunes: Acme Arsenal"), (0x575207D5, "Looney Tunes: Acme Arsenal"), @@ -1297,19 +1206,14 @@ const GAMES_BY_TITLE_ID: [(u32, &'static str); 2780] = [ (0x575207FD, "Mortal Kombat"), (0x57520800, "F.E.A.R. 3"), (0x57520801, "Game Party: In Motion"), - (0x57520802, "Batman: Arkham City — Game of the Year Edition (Disc 1)"), - (0x57520802, "Batman: Arkham City — Game of the Year Edition (Disc 2)"), (0x57520802, "Batman: Arkham City"), (0x5752080C, "Sesame Street: Once Upon a Monster"), (0x5752080D, "Happy Feet Two"), (0x57520812, "LEGO Harry Potter: Years 5-7"), (0x57520817, "LEGO Batman 2: DC Super Heroes"), (0x5752081D, "LEGO The Lord of the Rings"), - (0x57520824, "The Witcher 2: Assassins of Kings — Enhanced Edition (Disc 1)"), - (0x57520824, "The Witcher 2: Assassins of Kings — Enhanced Edition (Disc 2)"), (0x57520824, "The Witcher 2: Assassins of Kings — Enhanced Edition"), (0x57520826, "Harry Potter for Kinect"), - (0x57520829, "Injustice: Gods Among Us — Ultimate Edition"), (0x57520829, "Injustice: Gods Among Us"), (0x5752082F, "Midway Arcade Origins"), (0x57520833, "Mad Max"),