From eb5eb43bccaa2b0d1039f33ea786777124f09b92 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 13 Oct 2020 19:57:30 -0700 Subject: [PATCH] GLK: Add detection for IF Comp 2020 games --- NEWS.md | 1 + engines/glk/adrift/detection_tables.h | 31 ++++++++--------- engines/glk/glulx/detection.cpp | 5 ++- engines/glk/glulx/detection_tables.h | 48 +++++++++++++++++++++++++++ engines/glk/hugo/detection_tables.h | 2 ++ engines/glk/quest/detection.cpp | 6 +++- engines/glk/quest/detection_tables.h | 2 ++ engines/glk/streams.cpp | 2 +- engines/glk/tads/detection_tables.h | 6 ++++ engines/glk/zcode/detection_tables.h | 10 ++++++ 10 files changed, 95 insertions(+), 18 deletions(-) diff --git a/NEWS.md b/NEWS.md index 1fb39455c22..bc95cdb2c43 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,7 @@ For a more comprehensive changelog of the latest experimental code, see: Glk: - Fix savegame issues with several subengines. - Fix memory overrun in Level9 game detector. + - Added detections for 2020 IF Comp games. Lure: - Fix fire animation in first room when loading saves. diff --git a/engines/glk/adrift/detection_tables.h b/engines/glk/adrift/detection_tables.h index 04a1fbeaa3a..7eb81e87e30 100644 --- a/engines/glk/adrift/detection_tables.h +++ b/engines/glk/adrift/detection_tables.h @@ -268,22 +268,17 @@ const PlainGameDescriptor ADRIFT_GAME_LIST[] = { }; const PlainGameDescriptor ADRIFT5_GAME_LIST[] = { + { "1hgamonkeytoomany", "A Monkey too many" }, { "axeofkolt", "The Axe of Kolt" }, { "castlecoris", "The Spectre of Castle Coris" }, { "cybercow", "Lair of the Cybercrow" }, { "fistoffire", "Die Feuerfaust - The Fist of Fire" }, { "hangover", "Hangover" }, + { "jaft", "Just Another Fairy Tale" }, { "magneticmoon", "Magnetic Moon" }, { "mystman", "Mystman" }, - { "starshipquest", "Starship Quest" }, + { "rtcc", "Return to Castle Coris" }, { "sixsilverbullets", "Six Silver Bullets" }, - { "tcom1", "The Cave of Morpheus 1" }, - { "tcom2", "The Cave of Morpheus 2" }, - { "thetest", "The Test" }, - { "tingalan", "Tingalan" }, - // ADRIFT One-Hour Game Competition 1 - { "1hgamonkeytoomany", "A Monkey too many" }, - // English Blorb Games { "spacedetective1", "Space Detective, episode 1" }, { "spacedetective2", "Space Detective, episode 2" }, { "spacedetective3", "Space Detective, episode 3" }, @@ -291,6 +286,11 @@ const PlainGameDescriptor ADRIFT5_GAME_LIST[] = { { "spacedetective5", "Space Detective, episode 5" }, { "spacedetective6", "Space Detective, episode 6" }, { "spacedetective7", "Space Detective, episode 7" }, + { "starshipquest", "Starship Quest" }, + { "tcom1", "The Cave of Morpheus 1" }, + { "tcom2", "The Cave of Morpheus 2" }, + { "thetest", "The Test" }, + { "tingalan", "Tingalan" }, { nullptr, nullptr } }; @@ -444,15 +444,10 @@ const GlkDetectionEntry ADRIFT_GAMES[] = { DT_ENTRY0("cybercow", "1ee59ffd44378be75b4b099c06e386a9", 108209), DT_ENTRY0("fistoffire", "3b76af72ce4876dfea4da23ab0b7f641", 567450), DT_ENTRY0("hangover", "610c83cbe9d9e1353ebc444a769c85a9", 33933), + DT_ENTRY0("jaft", "0c754a07c00d9701b36f68703f1a58bd", 2018252), DT_ENTRY0("magneticmoon", "26a11345dd49413dea2c1b4f7fd2b3fd", 488582), DT_ENTRY0("mystman", "c3ca694117fbf7b655f3b7d729d94048", 74498), - DT_ENTRY0("starshipquest", "02fb2460c61c8d82c31fa1d763e63a7e", 449736), - DT_ENTRY0("sixsilverbullets", "e0f6170b5cbde7005609e68d8a25ddd3", 376934), - DT_ENTRY0("tcom", "61364f96ffdfd01e878f1a33557aff93", 37422), - DT_ENTRY0("tcom2", "b22abbff746998051e06bfa9a8083432", 67783), - DT_ENTRY0("thetest", "61a6f178f646c6158c0557ae4257b20d", 22465), - DT_ENTRY0("tingalan", "08c9ecd86664b62335d3852a2bb3d201", 259969026), - // English Blorb games + DT_ENTRY0("rtcc", "c79ed07084f08890c2ec4912c353ed34", 300308), DT_ENTRY0("spacedetective1", "170517dae3a195f37d876f5645637953", 34044), DT_ENTRY0("spacedetective2", "1e12b19d8777173cbf9866b3dd2fc2f0", 32632), DT_ENTRY0("spacedetective3", "fc9fb75830d7f59bf932896152b1e759", 30560), @@ -460,6 +455,12 @@ const GlkDetectionEntry ADRIFT_GAMES[] = { DT_ENTRY0("spacedetective5", "f1bf863cce436a5ef17e64237803571a", 32676), DT_ENTRY0("spacedetective6", "6035c865f7a4831e4539b7a2ff2ab711", 31922), DT_ENTRY0("spacedetective7", "2044086edd9b2288ff2279b3824dfcef", 30066), + DT_ENTRY0("starshipquest", "02fb2460c61c8d82c31fa1d763e63a7e", 449736), + DT_ENTRY0("sixsilverbullets", "e0f6170b5cbde7005609e68d8a25ddd3", 376934), + DT_ENTRY0("tcom", "61364f96ffdfd01e878f1a33557aff93", 37422), + DT_ENTRY0("tcom2", "b22abbff746998051e06bfa9a8083432", 67783), + DT_ENTRY0("thetest", "61a6f178f646c6158c0557ae4257b20d", 22465), + DT_ENTRY0("tingalan", "08c9ecd86664b62335d3852a2bb3d201", 259969026), #endif // Italian Games diff --git a/engines/glk/glulx/detection.cpp b/engines/glk/glulx/detection.cpp index c36fef7ed20..7ed013b3ba9 100644 --- a/engines/glk/glulx/detection.cpp +++ b/engines/glk/glulx/detection.cpp @@ -87,7 +87,10 @@ bool GlulxMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &g gameList.push_back(GlkDetectedGame(desc.gameId, desc.description, filename, md5, filesize)); } else { PlainGameDescriptor gameDesc = findGame(p->_gameId); - gameList.push_back(GlkDetectedGame(p->_gameId, gameDesc.description, filename)); + DetectedGame gd = DetectedGame("glk", p->_gameId, gameDesc.description, p->_language, Common::kPlatformUnknown, p->_extra); + + gd.addExtraEntry("filename", filename); + gameList.push_back(gd); } } diff --git a/engines/glk/glulx/detection_tables.h b/engines/glk/glulx/detection_tables.h index 419313e4ee4..863d4124108 100644 --- a/engines/glk/glulx/detection_tables.h +++ b/engines/glk/glulx/detection_tables.h @@ -32,12 +32,14 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { // English games { "aafn", "An Apple From Nowhere" }, + { "academicpursuits", "Academic Pursuits As Opposed To Regular Pursuits" }, { "acg", "Adventurer's Consumer Guide" }, { "adventglulx", "Adventure" }, { "adventura", "Adventura" }, { "airport", "The Airport" }, { "alabaster", "Alabaster" }, { "aliasthemagpie", "Alias 'The Magpie'" }, + { "alone", "Alone" }, { "alongdrink", "A Long Drink" }, { "anatidaephobia", "A N A T I D A E P H O B I A" }, { "anchorheaddemo", "Anchorhead: Special Edition Demo" }, @@ -47,7 +49,9 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "andromedaawakening", "Andromeda Awakening - The Final Cut"}, { "ariadneinaeaea", "Ariadne in Aeaea" }, { "aroilingoriginal", "A Roiling Original: Squeeal! A Sequel!" }, + { "aropeofchalk", "A Rope of Chalk" }, { "artoffugue", "Art of Fugue" }, + { "ascensionlimbs", "Ascension of Limbs" }, { "ascentgothictower", "The Ascent of the Gothic Tower" }, { "atc", "ATC, an interactive aviation" }, { "aurora", "Aurora" }, @@ -92,6 +96,7 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "deadcities", "Dead Cities" }, { "deathoffthecuff", "Death Off the Cuff" }, { "delphinashouse", "Delphina's House" }, + { "desolation", "Desolation" }, { "diaperquest", "Diaper Quest" }, { "discovertheworld", "Discover The World" }, { "doctorm", "The Life (and Deaths) of Doctor M" }, @@ -109,6 +114,7 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "dungeontext1", "Dungeon Text I - Escape From Darkness" }, { "eas2", "Another Earth, Another Sky. Earth And Sky: Episode 2" }, { "eatme", "Eat Me" }, + { "elsegar1", "Elsegar I - Arrival" }, { "endlesssands", "Endless Sands" }, { "endling", "The Endling Archive" }, { "enterpriseincidents", "The Enterprise Incidents: A Middle School Fantasy" }, @@ -117,9 +123,12 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "fair", "Fair, an extra-curricular activity" }, { "farmquest", "Farm Quest" }, { "ferrousring", "Ferrous Ring" }, + { "ferrymansgate", "Ferryman's Gate" }, { "finalproject", "Final Project" }, + { "flattenedlondon", "Flattened London" }, { "flexiblesurvival", "Flexible Survival" }, { "followingastar", "The Bible Retold: Following A Star" }, + { "foraplace", "For a Place by the Putrid Sea" }, { "further", "Further, a color-coded existential tangle" }, { "genesisquest", "Genesis Quest, an interlude through stories" }, { "ghosteringtonnight", "Ghosterington Night" }, @@ -143,12 +152,14 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "kingshredspatches", "The King of Shreds and Patches" }, { "klaustrophobia", "Klaustrophobia" }, { "koa", "Kingdom of Amphibia" }, + { "lasthouse", "Last House on the Block" }, { "lastresort", "Last Resort, a sweltering afternoon in the Deep South" }, { "limeergot", "Lime Ergot" }, { "lmstvgglulx", "LMS The Video Game" }, { "lockkey", "Lock and Key" }, { "lockdown", "Lockdown: a story of insanity, denial and death" }, { "lostislandsofalabaz", "The Lost Islands of Alabaz" }, + { "lovelyassistant", "Lovely Assistant Magical Girl" }, { "makechangeglulx", "Maybe make some change" }, { "mollybutterthieves", "Molly and the Butter Thieves" }, { "moments1", "Moments out of Time: Renegade" }, @@ -188,11 +199,14 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "rover", "Rover's Day Out" }, { "safe", "Safe" }, { "sagebrushcactus", "'Mid the sagebrush and the cactus" }, + { "sagesanctumscramble", "Sage Sanctum Scramble" }, { "samfortunepi", "Sam Fortune - Private Investigator" }, { "scrollthief", "Scroll Thief, an Interactive Heist" }, + { "seasonalapocalypse", "Seasonal Apocalypse Disorder" }, { "section1awakened", "Section 1 - Awakened" }, { "sensory", "Sensory Jam" }, { "sequitur", "Sequitur" }, + { "shadowoperative", "Shadow Operative" }, { "shapes", "Shapes: an Interactive Surrealism" }, { "sheephere", "Sheep Here" }, { "shufflingaround", "Shuffling Around" }, @@ -205,14 +219,17 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "spaceship", "Spaceship!" }, { "spellbound", "Spellbound" }, { "spirI7wrak", "SpirI7wrak" }, + { "standingshoulders", "Standing on the Shoulders of Giants" }, { "starlight", "Starlight" }, { "stiffymakane", "Stiffy Makane - Apocolocyntosis" }, + { "stuffoflegend", "Stuff of Legend" }, { "subrosa", "Sub Rosa: The Seven Deceits of Confessor Destine" }, { "superluminalvagranttwin", "Superluminal Vagrant Twin" }, { "tacoFiction", "Taco Fiction" }, { "terminatorrobotrescue", "Terminator, a Robot Rescue" }, { "tcom", "The Colour of Magic" }, { "theabbey", "The Abbey, a medieval murder mystery" }, + { "theeleusinianmiseries", "The Eleusinian Miseries" }, { "thehours", "The Hours" }, { "thehouseoffear", "The House of Fear, or, Loplop Introduces the World" }, { "thelibrary", "The Library" }, @@ -230,21 +247,28 @@ const PlainGameDescriptor GLULXE_GAME_LIST[] = { { "theislandofdoctorwooby", "The Island of Doctor Wooby" }, { "thelaughinggnome", "The Laughing Gnome" }, { "thelostkingdomofcodetopia", "The Lost Kingdom of Codetopia" }, + { "themagpietakesthetrain", "The Magpie Takes the Train" }, { "themaryjaneoftomorrow", "The Mary Jane of Tomorrow" }, { "theoutcasts", "The Outcasts" }, { "therealmofaoria", "The Realm of A'oria" }, { "thestorm", "The Storm, a self-portrait" }, { "thetraintoabaddon", "The Train To Abaddon" }, + { "thewaywardstory", "The Wayward Story" }, { "thiefpokemon", "Thief, a Pokemon Text Adventure" }, { "tohellinahamper", "To Hell in a Hamper" }, + { "tomtrundle", "The Incredibly Mild Misadventures of Tom Trundle" }, { "transparent", "Transparent, an interactive exploration" }, { "trialofthetnuop", "Trial of the Inuop" }, { "trollslayer", "Trollslayer" }, { "tryagain", "Try Again " }, + { "turbochesthair", "Turbo Chest Hair Massacre" }, { "uglyoafs", "Ugly Oafs. Save Green Terra! Repel the Wrath Pulse!" }, { "uie", "Under, In Erebus" }, + { "undertheythunder", "Under They Thunder" }, { "unscientificfiction", "Unscientific Fiction" }, + { "vainempires", "Vain Empires" }, { "valleyofsteel", "Valley of Steel" }, + { "vampireltd", "Vampire Ltd" }, { "wand", "The Wand" }, { "winterstormdraco", "Winter Storm Draco" }, { "wishertheurgist", "Wisher, Theurgist, Fatalist" }, @@ -306,12 +330,14 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY0("aafn", "98c22f842ffadfb08a8e2a93d32c7495", 163328), DT_ENTRY0("aafn", "07d590dc62f0be38f6f879763b6eb12c", 163072), DT_ENTRY1("acg", "070501", "1a3eb782d28dd8ae8da40f21adb174f0", 817408), + DT_ENTRY0("academicpursuits", "37f8d2484cf254f7836fd938b37584b6", 931046), DT_ENTRY1("adventglulx", "961209", "e1939485dc2d4aab637144fc842b479d", 195406), DT_ENTRY1("adventglulx", "961209", "cf232df2a3364a6f0821a8ef631c81a1", 167424), DT_ENTRY1("adventura", "171031", "4ca16a77854814124e1ab8df7270ed20", 659912), DT_ENTRY1("airport", "080204", "d3db494abc309a42b4dccfa53243a783", 234728), DT_ENTRY1("alabaster", "090609", "7f664b6eef28485a2f85a1831b041246", 3132122), DT_ENTRY1("aliasthemagpie", "190206", "a4281a03b797582ea53aa203b1eb7236", 1875956), + DT_ENTRY1("alone", "200927", "8ceba612963681d5c8a61cead9c8f1f0", 1078102), DT_ENTRY1("alongdrink", "150214", "8120604cd0cb566897fdb0f2786f4b43", 2164954), DT_ENTRY1("anatidaephobia", "170121", "a651c03db50e624fc8da5679ac731b53", 786902), DT_ENTRY1("anchorheaddemo", "070202", "f2e60c4c3aad4c6a2b18d4d20040ed76", 635974), @@ -321,8 +347,10 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("andromedaawakening", "120121", "64b2e5268c154130dc0d46b40c4e3e94", 884850), DT_ENTRY1("ariadneinaeaea", "161129", "f796d793ea7b26e21abf6478ecb841a8", 1219646), DT_ENTRY1("aroilingoriginal", "150327", "48719b01e0b805df27fcf1e021c6780f", 3731214), + DT_ENTRY1("aropeofchalk", "200926", "26dfd5161d72ec2a9e88b93c74e79e36", 1653800), DT_ENTRY1("artoffugue", "100911", "2be7f91abade14d81b85843d82d52e86", 21605450), DT_ENTRY1("artoffugue", "100911 No Music", "b570048a98acb680b8305043f1f1c866", 1596664), + DT_ENTRY1("ascensionlimbs", "200927", "30aa45bec407ff833a56e552b451ff95", 1160460), DT_ENTRY0("atc", "312ef9bf8d06145948994ad596c57ce3", 65536), DT_ENTRY1("aurora", "110219", "5561b20f74d67b0e71c2b73c2ca85943", 2198110), DT_ENTRY1("beautyaustere", "180112", "7efa8da4a65c8e70f6783f30750f7a00", 2127234), @@ -375,6 +403,7 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("deadcities", "081214", "0d276d62017b6b1b9e07b79e3fd98b5f", 1195136), DT_ENTRY1("deathoffthecuff", "130930", "8e48819a77855adf1a1879b2fb2e03ab", 1211826), DT_ENTRY1("delphinashouse", "150214", "5c6e7d0f23ccc3fb17d64bcfdc14ae5e", 2199754), + DT_ENTRY0("desolation", "6a9f300f70d246e52dafbc65430e6cad", 675208), DT_ENTRY1("diaperquest", "171224", "31d355119d0aa4c719cd8093457857b3", 417101284), DT_ENTRY1("discovertheworld", "150731", "77b1b18260082d25f4de51318e885eaa", 17127846), DT_ENTRY1("doctorm", "120219", "7fb0073619cb071dd5d1be97285e6454", 1293208), @@ -391,6 +420,7 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("dungeontext1", "130317", "1c69e410ff3fa7c7dcf83875a7f3a963", 746466), DT_ENTRY1("eas2", "030112", "fc2b4a123489076679597a57d04c5acc", 845600), DT_ENTRY1("eatme", "171013", "5e9c50e06ae1f954b9dd41abcfc0f09b", 2570070), + DT_ENTRY1("elsegar1", "200917", "76925bff593a871c2668bedafe099058", 863114), DT_ENTRY1("endlesssands", "150215", "2105d775eb759af04ab788e046d965e0", 982748), DT_ENTRY1("endlesssands", "150712", "55b31591423b011bb99be2724a6bdbe9", 1005788), DT_ENTRY1("endling", "090217", "52500f2301277154258d2a846d45aedb", 148908), @@ -400,10 +430,13 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("farmquest", "111028", "e49e02b73047fb16427c8882035a4be6", 415940), DT_ENTRY1("ferrousring", "1007276", "af11f50b1ef9ba444bd176de4ee22002", 432128), DT_ENTRY0("ferrousring", "e3763b5e021f6ee2c6e383bae2b4bc8a", 450560), + DT_ENTRY1("ferrymansgate", "200928", "276ff9f09734b59364199fc948f9e221", 2655820), DT_ENTRY1("finalproject", "140517", "9ace3f9fa908a3b96a6153afa0e30720", 738248), + DT_ENTRY1("flattenedlondon", "200926", "f3fa437bc2e99ceb97b43c5617f0d4db", 1785910), DT_ENTRY1("flexiblesurvival", "110307", "0d225782edd27fffb7ab0e423e9bad4d", 860108), DT_ENTRY1("followingastar", "034107", "fec0b3c288daa456c3feff5e10bced8a", 1172892), DT_ENTRY0("followingastar", "4f88888ed4c75099e64ef8e05bd177cc", 1170332), + DT_ENTRY1("foraplace", "200928", "0a27fe6717a60a99e7130ea54354eaf5", 1476540), DT_ENTRY1("further", "150117", "227bf3da188ae42e43b8b88b66561252", 682770), DT_ENTRY1("genesisquest", "140319", "c51f6d78e73aa0d846a2e38d4c187cfc", 1647616), DT_ENTRY1("ghosteringtonnight", "150815", "29ee591bd93084b5a450f2324d47de3b", 1940030), @@ -428,11 +461,13 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("kerkerkruip", "140419", "879c34531bc7dbb66bad8fca651bc428", 22109534), DT_ENTRY1("klaustrophobia", "110926", "d8751353ff883a1439c4c90cac2991fa", 3599478), DT_ENTRY1("koa", "000001", "f70361a47c2e9571a4fdc72ce7453197", 1085696), + DT_ENTRY1("lasthouse", "200928", "94ca1a21467c2b2f07e9cf6afeeb818a", 933328), DT_ENTRY1("lastresort", "070213", "bc26a4383290d3c04657ea58841b3d91", 787200), DT_ENTRY1("limeergot", "151130", "1290543b3d72115bc31201ed244b5011", 1008590), DT_ENTRY1("lmstvgglulx", "080404", "9dc7716acde7bc5bdc460f11f7ad51f9", 312920), DT_ENTRY1("lockkey", "1.12", "6f621089d571d2dada889e4367f4d20b", 269862), DT_ENTRY1("lockdown", "150112", "556ecd86ad03658d443e8deaba126601", 1338172), + DT_ENTRY1("lovelyassistant", "200923", "16931f135f38efaee72dac89a7c9ae27", 1051098), DT_ENTRY1("makechangeglulx", "120107", "0ee70eea03ca810bf0de3dcecfd9c741", 6456118), DT_ENTRY1("mollybutterthieves", "160704", "e8d72805a49b658df517a91857a7feaf", 1870384), DT_ENTRY1("moments1", "061113", "6a7092f959c8a731cb2651860a00a4eb", 684314), @@ -478,12 +513,15 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY0("rover", "5a404fb92af606a86bdae9bbf91547c1", 1739014), DT_ENTRY1("safe", "110109", "95af9e7de6e31fdeff6bd3cf7969434d", 648720), DT_ENTRY1("sagebrushcactus", "100918", "de27a377b78387126b77552bccf0a085", 640246), + DT_ENTRY1("sagesanctumscramble", "200922", "bd21d0b625abb8bab93e83cc93fd35ee", 876800), DT_ENTRY1("samfortunepi", "090510", "f177d973432b7a27302f1a79c8106f72", 706326), DT_ENTRY1("scrollthief", "150729", "9c26a3dc0f4fb681bf79f681e63c0d76", 2367848), + DT_ENTRY0("seasonalapocalypse", "5e951b117302169cdb77e832115937f0", 2207454), DT_ENTRY1("section1awakened", "150812", "e05b999f193566771ff08679d5512143", 625112), DT_ENTRY1("sensory", "000329", "7432f9e1d416034acf10e8a499368b9e", 202258), DT_ENTRY1("sensory", "000329", "7c5a00524809e4402ddf0554394e81bc", 132608), DT_ENTRY1("sequitur", "140813", "c7e384b1938915f17cc0b7d50f41d235", 1642480), + DT_ENTRY1("shadowoperative", "200929", "3bb8da82f1d81e35ee152d5ecd6ba3e4", 1140422), DT_ENTRY1("shapes", "000001", "a011827749eeef8afe6f6b8d5bfb78db", 1254912), DT_ENTRY1("sheephere", "160416", "1de700b758ef6f975150a6bd8926880d", 621466), DT_ENTRY1("shufflingaround", "150328", "00b2a517ec539936b96e84fabb91e5db", 3208092), @@ -499,8 +537,10 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("spaceship", "090928", "e52390cba328a8c863150ce4651fa71f", 1429732), DT_ENTRY1("spellbound", "160728", "c37e0e19a2fe74edc2d1df90bc97e132", 1061586), DT_ENTRY1("spirI7wrak", "141218", "d7e58b86d1c6e06ecdc83ebbb7b20242", 2631214), + DT_ENTRY1("standingshoulders", "200925", "78cb38272e79595781f5e1be65171a75", 836802), DT_ENTRY1("starlight", "151119", "ee4d2ed91518392981bf3cfd0fcf644d", 885152), DT_ENTRY0("stiffymakane", "f978ca1dafb3e44f1b29bd26527f342c", 2486436), + DT_ENTRY0("stuffoflegend", "447ea6caf1c51226b3f6a54d857b76b6", 1536382), DT_ENTRY1("subrosa", "160324", "30e7ded8624c26c04e8361d235f42c67", 1481628), DT_ENTRY1("superluminalvagranttwin", "160316", "7beb275a3e66b7b9840019caa3041723", 1162788), DT_ENTRY1("tacoFiction", "130422", "766be6495cb312d8270587c4d45d7e6a", 1928530), @@ -514,6 +554,7 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("kingshredspatches", "090722", "87765824be7facf6400a392633f84602", 4340676), DT_ENTRY1("lostislandsofalabaz", "110524", "9f439a77eccf4813aebebbe8093e8c57", 3145932), DT_ENTRY1("theabbey", "080626", "3abcc1b85a36efb73815e1cd37143210", 645274), + DT_ENTRY1("theeleusinianmiseries", "200926", "4ca599f36ae1559356bb224879213382", 2265116), DT_ENTRY0("thehours", "2d94f14e3ce959173da1ed35502f1419", 1281774), DT_ENTRY1("thehouseoffear", "111109", "f952621c0d7d8808ec4c339f0c1b3872", 1132748), DT_ENTRY1("thelibrary", "141212", "a545e2f3c25715a0b693ada6407e2b54", 1201984), @@ -533,23 +574,30 @@ const GlkDetectionEntry GLULXE_GAMES[] = { DT_ENTRY1("theislandofdoctorwooby", "150811", "c6bf4a675821d51c1ec251ff2bfd4770", 1164724), DT_ENTRY1("thelaughinggnome", "160212", "c55fc26f587526618c4baf820b33f3f4", 728918), DT_ENTRY1("thelostkingdomofcodetopia", "171113", "961fcb440ebd5f7738545a2f705c9785", 747220), + DT_ENTRY1("themagpietakesthetrain", "200924", "19d8fc67b3dfbb7a1dc88fa02d26e6d4", 2315066), DT_ENTRY1("themaryjaneoftomorrow", "160605", "b8842f2deb9b283cccd272c0dbfc2369", 10344070), DT_ENTRY1("theoutcasts", "170312", "234a5a35fc846aca8a4363a773d032e1", 731070), DT_ENTRY1("therealmofaoria", "160412", "29f1e1568486fbcc95d06c470534c233", 4466630), DT_ENTRY1("therealmofaoria", "161205", "87e9e7411e535e335e580d16be255671", 6458822), DT_ENTRY1("thestorm", "190107", "f0a0f037fec735bdfe770f1f171e03a8", 820842), DT_ENTRY1("thetraintoabaddon", "141107", "55a4a454fba273067cc127c4f1a8ce3a", 848180), + DT_ENTRY1("thewaywardstory", "200929", "4fe03ab93289d4d8d53b04983010f529", 929536), DT_ENTRY1("thiefpokemon", "140111", "2bfabf36b6171ed487858c10af0ea88d", 358392), DT_ENTRY1("tohellinahamper", "170412", "f12baa1762e29c9528baec31347a18b0", 973550), + DT_ENTRY1("tomtrundle", "200928", "8d720c498a6a7115628f70b61eb413c6", 2885100), DT_ENTRY1("transparent", "150401", "3f4e5effb8ed8f4d0c3f277bb47ba161", 11084272), DT_ENTRY1("transparent", "150626 (No Sound)", "13dc495dc3ed802e663b193bd862b994", 2284454), DT_ENTRY1("trialofthetnuop", "170813", "d8a34dc6c9b0e2d037d8cc3de006f42b", 616062), DT_ENTRY1("trollslayer", "151112", "fa3dee31c195732ad6a13a6e0b54d625", 920230), DT_ENTRY1("tryagain", "160922", "64de60e3dbc7eb492a34a0a693156659", 626116), + DT_ENTRY1("turbochesthair", "200928", "420f40b233e4b221e6fff2bec050dc23", 2091802), DT_ENTRY1("uglyoafs", "150403", "39ba113801d9b90d506b356f6b3ba25a", 660078), DT_ENTRY1("uie", "101122", "ed892c12a8b2d65fcda5ba6a228e04ed", 2016322), + DT_ENTRY1("undertheythunder", "200928", "bd069d2e3e841cea7a7d2694681b548a", 1070370), DT_ENTRY1("unscientificfiction", "090803", "de1c4a2bf4024eb4c0e5fee0e0fd4746", 679608), + DT_ENTRY1("vainempires", "200928", "4b28e67ecabbb8e6db40e5e99f5e8140", 3914438), DT_ENTRY1("valleyofsteel", "140330", "88311986461cec17e776d82a5ac18416", 1853024), + DT_ENTRY1("vampireltd", "200926", "7d5d5a10930db0adfcadf79860f3223f", 829986), DT_ENTRY1("wand", "171118", "b824638fc1d015b0837688322839ada0", 830208), DT_ENTRY1("winterstormdraco", "150928", "b4835af78525e56420f138c2e5f6806c", 812124), DT_ENTRY1("wishertheurgist", "160708", "4bbe0b3a29d57d1428e6cd6cf7c97fce", 824204), diff --git a/engines/glk/hugo/detection_tables.h b/engines/glk/hugo/detection_tables.h index 816d9501d64..0d58b4efaca 100644 --- a/engines/glk/hugo/detection_tables.h +++ b/engines/glk/hugo/detection_tables.h @@ -33,6 +33,7 @@ const PlainGameDescriptor HUGO_GAME_LIST[] = { { "acs", "A Crimson Spring" }, { "annoyotron2", "Aggravatron: Annoyotron II" }, { "cb2", "The Clockwork Boy 2" }, + { "cryptozookeeper", "Cryptozookeeper" }, { "hugoclock", "The Hugo Clock" }, { "adv350h", "Adventure, 350 point Colossal Cave" }, { "distress", "Distress" }, @@ -81,6 +82,7 @@ const GlkDetectionEntry HUGO_GAMES[] = { DT_ENTRY1("acs", "0.09.0 Beta", "8788f1e28a4cd875f220155b2aeae8c8", 356450), DT_ENTRY0("annoyotron2", "944056721054fd1c9af9d1e95e63ce52", 66762), DT_ENTRY0("cb2", "232827c10abd45c98d77ceffaf9ac9fa", 155732), + DT_ENTRY0("cryptozookeeper", "1b8301b969882c46ffa9f635e1695c41", 840567), DT_ENTRY0("hugoclock", "53a0b99011ccb14ddc45cfeb8c23d417", 120887), DT_ENTRY0("adv350h", "d6735640ca21797f24e3cadb12be4ae2", 124148), DT_ENTRY0("distress", "fe61c8722d8625d3d196b3d390346a55", 188317), diff --git a/engines/glk/quest/detection.cpp b/engines/glk/quest/detection.cpp index 1423bc13fcf..f04f59a2f69 100644 --- a/engines/glk/quest/detection.cpp +++ b/engines/glk/quest/detection.cpp @@ -52,7 +52,11 @@ bool QuestMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &g continue; Common::String filename = file->getName(); - if (!filename.hasSuffixIgnoreCase(".cas") && !filename.hasSuffixIgnoreCase(".asl")) + if (!filename.hasSuffixIgnoreCase(".cas") && !filename.hasSuffixIgnoreCase(".asl") +#ifdef QUEST_EXT + && !filename.hasSuffixIgnoreCase(".quest") +#endif + ) continue; Common::File gameFile; diff --git a/engines/glk/quest/detection_tables.h b/engines/glk/quest/detection_tables.h index a6a545e4a16..dad3bf9b7c7 100644 --- a/engines/glk/quest/detection_tables.h +++ b/engines/glk/quest/detection_tables.h @@ -54,6 +54,7 @@ const PlainGameDescriptor QUEST_GAME_LIST[] = { { "questforloot", "Quest for loot and something else" }, { "sleepingassassin", "El asesino durmiente (The Sleeping Assassin)" }, { "spondre", "Spondre" }, + { "murderjennylee", "The Brutal Murder of Jenny Lee" }, { "thelasthero", "The Last Hero" }, { "tokindlealight", "To Kindle a Light" }, { "xanadu", "Xanadu - The World's Only Hope" }, @@ -86,6 +87,7 @@ const GlkDetectionEntry QUEST_GAMES[] = { DT_ENTRY0("questforloot", "f7e32aec0f961a59a69bead3fadff4f0", 1357373), DT_ENTRY0("sleepingassassin", "9c2aa213bb73d8083506ee6f64436d9d", 287227), DT_ENTRY0("spondre", "c639077eb487eb6d1b63cda2c9ba5a9b", 1169469), + DT_ENTRY0("murderjennylee", "27d0f3ff28fd13e556203ab3d53edbe6", 80486), DT_ENTRY0("thelasthero", "31e10b8a7f11a6289955b89437f8178c", 62512), DT_ENTRY0("tokindlealight", "5d3b57830b003046a621620ba0869d7c", 811845), DT_ENTRY0("xanadu", "fef25e3473755ec572d4236d56f918e2", 396973), diff --git a/engines/glk/streams.cpp b/engines/glk/streams.cpp index a2dbbab1ed4..8c66104102c 100644 --- a/engines/glk/streams.cpp +++ b/engines/glk/streams.cpp @@ -309,7 +309,7 @@ void WindowStream::setReverseVideo(bool reverse) { MemoryStream::MemoryStream(Streams *streams, void *buf, size_t buflen, FileMode mode, uint rock, bool unicode) : Stream(streams, mode != filemode_Write, mode != filemode_Read, rock, unicode), _buf(buf), _bufLen(buflen), _bufPtr(buf) { - assert(_buf && _bufLen); + assert(_buf || !_bufLen); assert(mode == filemode_Read || mode == filemode_Write || mode == filemode_ReadWrite); if (unicode) diff --git a/engines/glk/tads/detection_tables.h b/engines/glk/tads/detection_tables.h index 93a4650f7f3..ab57b5c95d4 100644 --- a/engines/glk/tads/detection_tables.h +++ b/engines/glk/tads/detection_tables.h @@ -205,12 +205,14 @@ const PlainGameDescriptor TADS3_GAME_LIST[] = { // English games { "allhope", "All Hope Abandon" }, { "blightedisle", "Blighted Isle" }, + { "captivity", "Captivity" }, { "combatdemo", "TADS 3 Combat Demos" }, { "comp02tr", "Comp02ter Game" }, { "cookoff", "Cook Off" }, { "darkangel", "Dark Angel" }, { "deadmansparty", "Dead Mans Party" }, { "dearbrian", "Dear Brian" }, + { "deezlebub", "Deezlebub" }, { "devildetails", "The Devil in the Details" }, { "elysiumenigma", "The Elysium Enigma" }, { "foreveralways", "Elizabeth Hawk's Forever Always" }, @@ -219,6 +221,7 @@ const PlainGameDescriptor TADS3_GAME_LIST[] = { { "homeopen", "Home Open" }, { "indigo", "Indigo" }, { "it", "It" }, + { "edgeofchaos", "Jay Schilling's Edge of Chaos" }, { "korenvliet", "Korenvliet" }, { "lookaroundthecorner", "Look Around the Corner" }, { "lydiasheart", "Lydia's Heart" }, @@ -453,6 +456,7 @@ const GlkDetectionEntry TADS_GAMES[] = { DT_ENTRY1("allhope", "WebUI", "c65cff5c63cfecad3d8c922f0086816f", 2434146), DT_ENTRY0("blightedisle", "a400f71d73c0efdf301635e73ff00c79", 3326591), DT_ENTRY1("blightedisle", "WebUI", "4ee80cdf2e39f41e721440db7ddbc05e", 3999970), + DT_ENTRY0("captivity", "aeeb0bcd430448867d45a4e6bea96c23", 1908803), DT_ENTRY0("combatdemo", "23a59262f9d8534562379b123e1272b7", 515392), DT_ENTRY0("combatdemo", "23a59262f9d8534562379b123e1272b7", 620151), DT_ENTRY0("comp02tr", "23327e39fa44259fcabcb99917302c22", 960653), @@ -462,6 +466,7 @@ const GlkDetectionEntry TADS_GAMES[] = { DT_ENTRY0("deadmansparty", "bc78f6e390df143a13aeabcdb9de1fed", 1638558), DT_ENTRY1("deadmansparty", "WebUI", "831ba48e61a40e442a7459aa798da3ea", 2056080), DT_ENTRY0("dearbrian", "8488c4f5c18a76ab65dd9e8eb72393ac", 999423), + DT_ENTRY0("deezlebub", "57d532aa89fc21abaa52745689326a5f", 1142633), DT_ENTRY0("devildetails", "0cca588557a79231daa78ef948f62397", 2892947), DT_ENTRY0("elysiumenigma", "f98f0e4de8c7cf5d6f471b56c6a96d81", 2095654), DT_ENTRY1("elysiumenigma", "WebUI", "7ca73a03b433b28a831808066a843d79", 2149533), @@ -475,6 +480,7 @@ const GlkDetectionEntry TADS_GAMES[] = { DT_ENTRY1("it", "WebUI", "e69e00d227df2ea9179bb3bc20d779c9", 1589779), DT_ENTRY0("korenvliet", "4ab26eb23354a000f66b77bcbb820be4", 719957), DT_ENTRY0("korenvliet", "9c91716c269e268938c5051dbfc07f33", 1311919), + DT_ENTRY0("edgeofchaos", "6e20b8013ff2e8cc1a9e1b0ce570adbb", 11780522), DT_ENTRY0("lookaroundthecorner", "c9ac24c941c39ef57b23a55ed36f844d", 664271), DT_ENTRY1("lookaroundthecorner", "WebUI", "5e7d1e0c7f93662fb455972797795f15", 1079205), DT_ENTRY0("lydiasheart", "aa92fa47c4e04e90d358e9cfd50de671", 2620069), diff --git a/engines/glk/zcode/detection_tables.h b/engines/glk/zcode/detection_tables.h index 0c00d06b39d..82fa8610d19 100644 --- a/engines/glk/zcode/detection_tables.h +++ b/engines/glk/zcode/detection_tables.h @@ -185,6 +185,7 @@ const PlainGameDescriptor ZCODE_GAME_LIST[] = { { "burnsnightsupper", "Burns Night Supper" }, { "burnkoran", "Burn The Koran and Die" }, { "busted", "Busted! A game of high cunning and low humor" }, + { "byod", "BYOD" }, { "byzantine", "Byzantine Perspective" }, { "cabal", "The Cabal: The Interactive Illuminati" }, { "cacophony", "Cacophony, an interactive stumbling" }, @@ -277,6 +278,7 @@ const PlainGameDescriptor ZCODE_GAME_LIST[] = { { "dragontroll", "The Dragon and the Troll" }, { "dreamhold", "The Dreamhold" }, { "dreamtooreal", "A Dream Too Real" }, + { "drego", "Dr Ego and the egg of ManToomba" }, { "dual", "Dual Transform" }, { "dumont", "Dr. Dumont's Wild P.A.R.T.I" }, { "eas", "Earth And Sky: Episode 1" }, @@ -288,6 +290,7 @@ const PlainGameDescriptor ZCODE_GAME_LIST[] = { { "eliza", "Eliza" }, { "enemies", "Enemies" }, { "enigma", "Enimga" }, + { "entangled", "Entangled" }, { "enterprise", "The Enterprise Incidents" }, { "entropy", "Entropy" }, { "epyk", "Eypk" }, @@ -581,6 +584,7 @@ const PlainGameDescriptor ZCODE_GAME_LIST[] = { { "finalselection", "Final Selection" }, { "sfiction", "Speculative Fiction: Beginner's Lessons" }, { "shadowgatez", "Shadowgate" }, + { "sheepcrossing", "Sheep Crossing" }, { "sherlock1", "Sherlock gamebook #1: Murder at the Diogenes Club" }, { "sherlock2", "Sherlock gamebook #2: The Black River Emerald" }, { "sherlock3", "Sherlock gamebook #3: Death at Appledore Towers" }, @@ -672,6 +676,7 @@ const PlainGameDescriptor ZCODE_GAME_LIST[] = { { "prize", "The Prize" }, { "nascarexperience", "The Realistic Nascar eXperience" }, { "smallroom", "Trapped in a Small Room" }, + { "theimpossiblebottle", "The Impossible Bottle" }, { "spotlight", "The Spotlight" }, { "stargods", "The Star Gods" }, { "terribleoldmanse", "The Terrible Old Manse: 8bit fun in 7bit ASCII" }, @@ -1227,6 +1232,7 @@ const FrotzGameDescription FROTZ_GAMES[] = { ENTRY0("burnsnightsupper", "120124", "a1153aab71b7a3bc4bd1aa056f3145e8", 251342), ENTRY0("burnkoran", "101128", "216f61842ba2024b291b4e0ae7769500", 222746), ENTRY0("busted", "941223", "e164cfeed308fd25bc102a18b3c8f15c", 82944), + ENTRY0("byod", "200928", "90b19dc00264bc1ae97c1338d5ea0bca", 549618), ENTRY0("byzantine", "091119", "61dcb1e79885f76f9f5f5c62ce2c7e8d", 1727208), ENTRY0("cabal", "041127", "b8f7f30bef898f4ed1814b0094c40b1e", 178176), ENTRY0("cacophony", "091209", "a612e786ee256ecf14580bd7e922b27a", 364032), @@ -1319,6 +1325,7 @@ const FrotzGameDescription FROTZ_GAMES[] = { ENTRY0("dragontroll", "070120", "44e48cb9689e156d322a1de0a14d420e", 3584), ENTRY0("dreamhold", "041231", "78eb852b88f9424647a4e18caa4c6707", 386560), ENTRY0("dreamtooreal", "061128", "ac2bc1ebcfd2c8b5eed405c4f7fcb10c", 138124), + ENTRY0("drego", "", "8a983690928e36c8a77ed50bdbe98bd9", 132096), ENTRY0("dual", "100225", "57f0e173be4258de1ce224e74172ea11", 430282), ENTRY0("dumont", "990223", "c5b6b0c7dcf3e771207bc44a7a3eaa0b", 224768), ENTRY0("eas", "011204", "5dffcdadd1f24333aa6cb03fefce22fe", 183296), @@ -1330,6 +1337,7 @@ const FrotzGameDescription FROTZ_GAMES[] = { ENTRY0("eliza", "990207", "293e7e1e2790af326547cd7be6c44d92", 7680), ENTRY0("enemies", "990115", "ff9fc17bf66ffbfba125d9a7c20c2c60", 289280), ENTRY0("enigma", "160202", "743b7440094810ebe9b9d86d994ef07b", 418468), + ENTRY0("entangled", "200928", "773ad8d10e980531127a040679a4e3eb", 494080), ENTRY0("enterprise", "020428", "791a68da0a0da75307ce60bcf6f07f55", 156672), ENTRY0("entropy", "090516", "2acf5da303368989679bbb8ee71da5ea", 125440), ENTRY0("epyk", "091111", "2d14b9b9499bc87ecad01215009fa2c7", 236988), @@ -1627,6 +1635,7 @@ const FrotzGameDescription FROTZ_GAMES[] = { ENTRY0("finalselection", "061009", "2dd1a94db68abf9626f55e8bd6fa91a7", 151040), ENTRY0("sfiction", "120706", "662d83be00d1a832e37bdedc565c1a71", 275968), ENTRY0("shadowgatez", "040616", "9015104db32c046798870273f0754d3c", 141824), + ENTRY0("sheepcrossing", "200928", "22c2f8a7784272952125344f9e52ccd0", 411456), ENTRY0("sherlock1", "021024", "97577dc5e6be837277acd5c134620d92", 230912), ENTRY0("sherlock2", "021101", "b4e67e63abe681449d5cc727b161e4ea", 285794), ENTRY0("sherlock3", "021114", "605303b5dfddc04e590e6f060369463f", 220672), @@ -1717,6 +1726,7 @@ const FrotzGameDescription FROTZ_GAMES[] = { ENTRY0("prize", "120827", "9dc341cb340b6950602c52bd8ef76305", 408786), ENTRY0("nascarexperience", "130827", "d45dc3ab1f9898cf85a09854db0a6b17", 152576), ENTRY0("smallroom", "100805", "5102ac48e17b26b69ab8737ceb00b3d5", 154112), + ENTRY0("theimpossiblebottle", "1", "ca6e77c892f34f602ea25277a8ac6a20", 759930), ENTRY0("spotlight", "140531", "ac25066421da9530f5f19c7245d0f6d9", 336384), ENTRY0("stargods", "111216", "92a0b939e5d12178f74b3e23ece89ca1", 268288), ENTRY0("terribleoldmanse", "100819", "518a610437203e063fa550d5c240e664", 891570),