aboutsummaryrefslogtreecommitdiff
path: root/engines/glk
diff options
context:
space:
mode:
authorPaul Gilbert2018-12-09 21:06:49 -0800
committerPaul Gilbert2018-12-09 21:06:49 -0800
commitcf82dfaec5847d791c5f7f98e31544cd4098d901 (patch)
treea8530958e27365e10cd18f6161905d49a9afde1c /engines/glk
parent3a2dd360535ad42f788f8c610d48e6ef7cac3023 (diff)
downloadscummvm-rg350-cf82dfaec5847d791c5f7f98e31544cd4098d901.tar.gz
scummvm-rg350-cf82dfaec5847d791c5f7f98e31544cd4098d901.tar.bz2
scummvm-rg350-cf82dfaec5847d791c5f7f98e31544cd4098d901.zip
GLK: FROTZ: Add game names for ZCode games on if-archive
Diffstat (limited to 'engines/glk')
-rw-r--r--engines/glk/frotz/detection.cpp10
-rw-r--r--engines/glk/frotz/detection_tables.h690
2 files changed, 695 insertions, 5 deletions
diff --git a/engines/glk/frotz/detection.cpp b/engines/glk/frotz/detection.cpp
index 1d3e1ce412..08865e1f6a 100644
--- a/engines/glk/frotz/detection.cpp
+++ b/engines/glk/frotz/detection.cpp
@@ -66,10 +66,12 @@ bool FrotzMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &g
continue;
Common::String md5 = Common::computeStreamMD5AsString(gameFile, 5000);
size_t filesize = gameFile.size();
- char serial[7] = "unkown";
+ char serial[9] = "";
if (!filename.hasSuffixIgnoreCase(".zblorb")) {
gameFile.seek(18);
- gameFile.read(&serial[0], 6);
+ strcpy(&serial[0], " \"");
+ gameFile.read(&serial[1], 6);
+ strcpy(&serial[7], "\"");
}
gameFile.close();
@@ -98,8 +100,8 @@ bool FrotzMetaEngine::detectGames(const Common::FSList &fslist, DetectedGames &g
if (dot)
fname = Common::String(fname.c_str(), dot);
- debug("ENTRY0(\"%s\", \"%s-%s\", \"%s\", %u),",
- folderName.c_str(), fname.c_str(), serial, md5.c_str(), (uint)filesize);
+ debug("ENTRY0(\"%s\", %s, \"%s\", %u),",
+ fname.c_str(), strlen(serial) ? serial : "nullptr", md5.c_str(), (uint)filesize);
}
const PlainGameDescriptor &desc = FROTZ_GAME_LIST[0];
gd = DetectedGame(desc.gameId, desc.description, Common::UNK_LANG, Common::kPlatformUnknown);
diff --git a/engines/glk/frotz/detection_tables.h b/engines/glk/frotz/detection_tables.h
index c7727ae04c..3fbaa13e49 100644
--- a/engines/glk/frotz/detection_tables.h
+++ b/engines/glk/frotz/detection_tables.h
@@ -103,6 +103,691 @@ const PlainGameDescriptor FROTZ_GAME_LIST[] = {
{ "questprobe2", "Questprobe 2: Spiderman" },
{ "scottsampler", "Adventure International's Mini-Adventure Sampler" },
+ // English ZCode games
+ { "404life", "404 - Life not found" },
+ { "69105keys", "69,105 Keys" },
+ { "905", "9:05" },
+ { "9dancers", "The Nine Dancers (Larsoft Adventure number 4)" },
+ { "cockandbull", "A_Cock_and_Bull_Story" },
+ { "aasmasters", "AAS Masters, in which all is revealed" },
+ { "accuse", "Accuse" },
+ { "acheton", "Acheton" },
+ { "acorncourt", "The Acorn Court" },
+ { "acrobat", "The Mysterious Case of the Acrobat and His Peers" },
+ { "acrossthestars", "Across the Stars" },
+ { "addendum", "Flawed Addendum" },
+ { "adv", "Adventure, Colossal Cave" },
+ { "adv350", "Adventure, 350 point Colossal Cave" },
+ { "adv440", "Adventure II, 440 point Colossal Cave" },
+ { "adv550", "Adventure 3, 550 point Colossal Cave" },
+ { "adv551", "Adventure 6, 551 point Colossal Cave" },
+ { "adventuretime", "Adventure Time" },
+ { "adverbum", "Ad Verbum" },
+ { "affront", "Annoyotron IV: Affrontotron" },
+ { "aisle", "Aisle" },
+ { "alice", "Alice Through the Looking Glass" },
+ { "allroads", "All Roads" },
+ { "alongtheriver", "Along the River" },
+ { "alpha", "Journey to Alpha Centauri (In Real Time)" },
+ { "ambassadorsdaughter", "The Ambassador''s Daughter, a Brief Romance" },
+ { "amish", "Amishville" },
+ { "amiss", "Amissville" },
+ { "anchor", "Anchorhead: an Interactive Tale of Lovecraftian Horror" },
+ { "hipponewyear", "And A Hippo New Year" },
+ { "animals", "Animals 1.1" },
+ { "annoy", "Annoyotron" },
+ { "aotyrz", "Attack of the Yeti Robot Zombies" },
+ { "aphasiaquest", "Aphasia_Quest" },
+ { "apollo", "Apollo 18+20: The IF Tribute Album" },
+ { "appall", "Appallatron: Annoyotron 3" },
+ { "aridandpale", "Arid and Pale" },
+ { "asylum", "Asylum" },
+ { "atrocitron", "Atrocitron, An Interactive Puzzlebox" },
+ { "ats", "A Tight Spot" },
+ { "atwork", "Danger! Adventurer At Work!" },
+ { "aug4", "Augmented Fourth, an Interactive Performance" },
+ { "avon", "Avon" },
+ { "awoken", "The Awakening" },
+ { "awitl", "A Week In The Life" },
+ { "ayac", "Are You A Chef? An interactive ifMUD-saving" },
+ { "b2demo", "Pick up the Phone Booth and Die, Part 2" },
+ { "b7snare", "Snare, an interactive Blake's 7 adventure" },
+ { "babytree", "Baby tree" },
+ { "back2wakeup", "Back to WakeUp, a Backpacker Tale" },
+ { "martyquest", "Back to the Future - Marty Quest: an adventure through time" },
+ { "backup", "Backup, an Interactive System Failure" },
+ { "balances", "Balances, An Interactive Short Story" },
+ { "baldersdeath", "Balder's Death" },
+ { "ballerina102", "Not Just an Ordinary Ballerina" },
+ { "balt24", "Baltimore:24, An Exercise in Interactive Fiction" },
+ { "bathtub", "There's a Snake in the Bathtub, a Test of Patience" },
+ { "bazic", "baZic version 0.1, Z-Machine BASIC implementation" },
+ { "bear", "A Bear's Night Out, an Interactive Children's Story" },
+ { "bedlam", "Bedlam, An Interactive Preview" },
+ { "bedtime", "Bed Time" },
+ { "andrewplotkin", "Being Andrew Plotkin" },
+ { "beingsteve", "Being Steve" },
+ { "beneath", "Beneath: a Transformation" },
+ { "bibleretold", "The Bible Retold: The Bread and the Fishes" },
+ { "bicon", "BiCon, an Interactive Infatuation" },
+ { "biscuit", "Biscuit, An Interactive Funeral" },
+ { "bishoes", "Buried In Shoes" },
+ { "bj", "Blow Job Drifter, An Interactive You Kno What" },
+ { "blair", "Tales From The College Presents A Breath Of Fresh Blair" },
+ { "bluechairs", "Blue Chairs" },
+ { "blues", "Tinseltown Blues: A quest for success in Hollyweird" },
+ { "bofh", "The Bastard Operator from Hell" },
+ { "bomber", "The Mad Bomber" },
+ { "bookvol", "Book and Volume" },
+ { "booth", "Pick up the Phone Booth and Die" },
+ { "boothdye", "Pick up the Phone Booth and Dye" },
+ { "brainnightguest", "Brain of the Night Guest" },
+ { "brandx", "BrandX" },
+ { "breakin", "Break-In, an Interactive Burglary" },
+ { "bronze", "Bronze, Inform 7 demonstration game" },
+ { "bryantcollection", "The Bryant Collection, an Interactive Anthology" },
+ { "bse", "BSE, An Interactive Epidemic" },
+ { "building", "Building" },
+ { "nightbunnies", "The Night of the Vampire Bunnies" },
+ { "bureaucrocy", "Bureaucrocy, a frustrating tale about paperwork" },
+ { "burglar", "Burglar! A Learning Experience" },
+ { "burnsnightsupper", "Burns Night Supper" },
+ { "burnkoran", "Burn The Koran and Die" },
+ { "busted", "Busted! A game of high cunning and low humor" },
+ { "byzantine", "Byzantine Perspective" },
+ { "cabal", "The Cabal: The Interactive Illuminati" },
+ { "cacophony", "Cacophony, an interactive stumbling" },
+ { "calendar", "Calendar, an Inform 7 abuse" },
+ { "calmmutemoving", "Calm, Mute, Moving" },
+ { "calypso", "Calypso" },
+ { "candy", "Candy, An Attempt at Reliving Childhood" },
+ { "cars2", "ASCII Cars!!! A game of racing with the imagination" },
+ { "casting", "Casting" },
+ { "castleadventure", "Castle Adventure!" },
+ { "castleredprince", "Castle of the Red Prince, an interactive land of darkness" },
+ { "siliconcastles", "Silicon Castles" },
+ { "catcherintherye", "Catcher in the Rye" },
+ { "catseye2", "Cat's Eye, Miniventure #2" },
+ { "causality", "Causality: The Search for Eternal Life" },
+ { "caveadventure", "Cave Adventure" },
+ { "cavernofdoom", "Zork: The Cavern of Doom" },
+ { "cavernsofchaos", "Caverns of Chaos" },
+ { "cavetrip", "The Spelunking Trip" },
+ { "ccake", "Arthur Yahtzee: The Curse of Hell's Cheesecake" },
+ { "chaos", "Chaos" },
+ { "chaosgame", "Chaos" },
+ { "cheater", "Cheater, An Annoying Adventure" },
+ { "cheesedoff", "Cheesed Off!" },
+ { "cheeseshop", "Cheeseshop" },
+ { "cheshirecat", "Save the Cheshire Cat!" },
+ { "chico", "Chico and I Ran" },
+ { "childsplay", "Child's Play, A child, a toy, and a rival" },
+ { "chix", "Chicks Dig Jerks" },
+ { "cia", "CIA Adventure" },
+ { "claw", "Wearing the Claw" },
+ { "codenamesilver", "Code Name Silver Steel" },
+ { "cointoss", "Coin toss" },
+ { "coke", "Coke Is It!" },
+ { "coldiron", "Cold Iron" },
+ { "colonists", "Colonists" },
+ { "coloromc", "Color of Milk Coffee" },
+ { "comp96", "Yearly IF competitions unofficial 'front-end' game" },
+ { "conankill", "Conan Kill Everything" },
+ { "dreamcorruptor", "Corrupter of Dreams" },
+ { "cottage", "Cottage" },
+ { "cove", "The Cove" },
+ { "creepydemo", "A Day in the Creepy Life of Bob Demo" },
+ { "crimescene", "A Crime Scene, a Short Story" },
+ { "criticalbreach", "Critical Breach, an Escape Story" },
+ { "crobe", "Crobe" },
+ { "cryptographer", "Cryptographer" },
+ { "crystalpalace", "The Crystal Palace" },
+ { "csbb", "Crystal and Stone Beetle and Bone" },
+ { "ctdoom", "Countdown to Doom" },
+ { "curses", "Curses, An Interactive Diversion" },
+ { "curves", "Dangerous Curves" },
+ { "cycles", "Vicious Cycles" },
+ { "cyclops", "The Land of the Cyclops" },
+ { "dday", "D-Day" },
+ { "damnatiomemoriae", "Damnatio Memoriae" },
+ { "darkiss1", "Darkiss! Wrath of the Vampire - Chapter 1: The Awakening" },
+ { "dashslapney", "Dash Slapney, Patrol Leader" },
+ { "dayinlife", "A Day in Life" },
+ { "dd4", "Dutch Dapper IV: The Final Voyage" },
+ { "deadmansgrave", "Dead Man's Grave: A Tell Don't Show Mystery" },
+ { "deadmeat", "Dead Meat in the Pit" },
+ { "deadpavane", "Dead Pavane for a Princess" },
+ { "deadreckoning", "Dead Reckoning" },
+ { "deasville", "Deadsville" },
+ { "death", "Death to my Enemies" },
+ { "debate", "Debate" },
+ { "deephome", "Deephome" },
+ { "degeneracy", "Degeneracy" },
+ { "dejavu", "Deja Vu" },
+ { "deliciousbreakfast", "Delicious Breakfast" },
+ { "delusions", "Delusions" },
+ { "detective", "Detective" },
+ { "detention", "Detention, an attempt to escape from school" },
+ { "devildoit", "The Devil Made Me Do It" },
+ { "devours", "All Things Devours" },
+ { "dewdrops", "Within a Wreath of Dewdrops" },
+ { "djinni", "The Djinni Chronicles \"Undercurrents of Manipulation\"" },
+ { "dogslife", "It's a Dog's Life" },
+ { "zunidoll", "The Zuni Doll" },
+ { "dontgo", "Don't Go" },
+ { "dontpeeyourself", "Don't Pee Yourself!" },
+ { "dotd", "Dawn of the Demon" },
+ { "downthematrix", "Down The Matrix" },
+ { "dpod", "Dracula - Prince of Darkness" },
+ { "dracula2", "Dracula: Part 2, The Arrival" },
+ { "dracula1", "Dracula: Part 1, The First Night" },
+ { "dragon", "Dragon Adventure" },
+ { "dragonflies", "Dragon Flies Like Labradorite" },
+ { "dragontroll", "The Dragon and the Troll" },
+ { "dremhold", "The Dreamhold" },
+ { "dreamtooreal", "A Dream Too Real" },
+ { "dual", "Dual Transform" },
+ { "dumont", "Dr. Dumont's Wild P.A.R.T.I" },
+ { "eas", "Earth And Sky: Episode 1" },
+ { "cliffedge", "Edge of the Cliff" },
+ { "edifice", "The Edifice" },
+ { "eyptianwalking", "Egyptian Walking Simulator" },
+ { "elephants", "When I Was Shot By Elephants III" },
+ { "eleven", "Film at Eleven" },
+ { "eliza", "Eliza" },
+ { "enemies", "Enemies" },
+ { "Enigma", "Enimga" },
+ { "enterprise", "The Enterprise Incidents" },
+ { "entropy", "Entropy" },
+ { "epyk", "Eypk" },
+ { "erden", "Travels in the Land of Erden: In Quest of the Adventure" },
+ { "eric", "Eric The Power-Mad Dungeon Master" },
+ { "escape", "Escape!" },
+ { "escaperemember", "An Escape To Remember" },
+ { "eurydice", "Eurydice" },
+ { "f209", "Apartment 209" },
+ { "fable", "A Fable" },
+ { "faculty", "The Care and Feeding of Adjuncts" },
+ { "failsafe", "FailSafe" },
+ { "farm", "The Farmer's Daughter" },
+ { "fff", "Fox, Fowl and Feed" },
+ { "figaro", "Figaro" },
+ { "figueres", "Figueres in my Basement" },
+ { "findesick", "Fin de sickleburg" },
+ { "findthebed", "Find the Bed" },
+ { "finetuned", "Fine-Tuned" },
+ { "fingertips", "Fingertips: I Found a New Friend" },
+ { "firstday", "The First Day of My New Life" },
+ { "fmvpoker", "Frobozz Magic Video Poker" },
+ { "forestdemo", "Forest Demo" },
+ { "fork", "Fork: The Great Underground Dining Room" },
+ { "hiddennazi", "The Game Formerly Known as Hidden Nazi Mode" },
+ { "forms", "Of Forms Unknown" },
+ { "fracture", "Fractured Metamorphoses (Example Version)" },
+ { "fragileshells", "Fragile Shells" },
+ { "frankie", "Frankenstein Adventure" },
+ { "freefall", "Free Fall" },
+ { "frobozzi", "The Encyclopedia Frobozzica (Abridged Edition)" },
+ { "frozen", "Frozen: A Night at the Lab" },
+ { "fyleet", "Fyleet" },
+ { "ga", "Geocaching Adventure - GC3JJ9C - Cryptic Puzzle #6" },
+ { "gamer", "Gamer: Digital Limbo" },
+ { "gamlet", "Gamlet" },
+ { "gardening", "Gardening for Beginners" },
+ { "gatoron", "Gator-On, Friend to Wetlands!" },
+ { "gaucho", "Gaucho" },
+ { "gd", "Goodbye Doggy" },
+ { "geb", "Goose, Egg, Badger" },
+ { "geist", "Geist" },
+ { "gerbilriot", "Gerbil Riot" },
+ { "ghost", "The Ghost Train" },
+ { "glass", "Glass, a fractured fairy tale" },
+ { "glik1", "Glik part 1: Undead Menace" },
+ { "gnuzoo", "Gnu in the Zoo" },
+ { "godot", "Looking For Godot" },
+ { "goldilocks", "Goldilocks is a Fox!" },
+ { "golf", "Textfire Golf" },
+ { "gostak", "The Gostak" },
+ { "gourmet", "Gourmet" },
+ { "gourmetgaffe", "Gourmet Gaffe" },
+ { "gowest", "Go West" },
+ { "greatxavio", "The Great Xavio" },
+ { "greenrain", "A Green Rain" },
+ { "growingup", "Growing Up" },
+ { "grue", "GRUE" },
+ { "guard", "Guard Duty" },
+ { "guess", "Guess The Verb!" },
+ { "guestreet", "Life on Gue Street" },
+ { "gumshoe", "Gumshoe" },
+ { "gussdeath", "Guss's Death" },
+ { "halloweve", "Hallow Eve" },
+ { "hamhouse", "In the House of Professor Evil: The HAM HOUSE" },
+ { "hamil", "Hamil" },
+ { "hangar22", "Hangar 22" },
+ { "happyeverafter", "Happy Ever After" },
+ { "crabhat", "Oh No, Mr Crab Stole Your Hat!" },
+ { "hauntedhouse", "Haunted House" },
+ { "hauntings", "Hauntings" },
+ { "heist", "Heist: The Crime of the Century" },
+ { "heliopause", "Hoist Sail for the Heliopause and Home" },
+ { "welcometohell", "Welcome to Hell" },
+ { "hellosword", "Hello Sword - The journey" },
+ { "hellsbasement", "Hell's Basement" },
+ { "helpcollides", "When Help Collides: The Wreck of the H.M.S. Snark" },
+ { "heroes", "Heroes" },
+ { "heroinesmantle", "Heroine's Mantle" },
+ { "hidepachyderm", "Hide a pachyderm!" },
+ { "hlainform", "HLA Inform: A Classic Quest" },
+ { "hobbittruestory", "The Hobbit - The True Story" },
+ { "robotempire", "Holy Robot Empire" },
+ { "home", "Home" },
+ { "homecoming", "Homecoming" },
+ { "hoosegow", "Hoosegow, a Wild West Wreck" },
+ { "housekey1", "Housekey, Part I" },
+ { "housedream", "House of Dream of Moon" },
+ { "humongouscave", "Adventure in Humongous Cave" },
+ { "humongouscavehints", "Humongous Cave Hints" },
+ { "hummingbird", "Flight of the Hummingbird" },
+ { "hunterdark", "Hunter, in Darkness" },
+ { "hyperrpg", "Hyper RPG Game!" },
+ { "i0", "I-0: the \"jailbait on the interstate\" game" },
+ { "Ibo", "Ibo" },
+ { "iceweb", "Iceweb" },
+ { "identity", "Identity" },
+ { "ifwhispers5", "IF Whispers 5" },
+ { "ifaquarium", "IF Aquarium" },
+ { "ifquake", "Text adventure interpretation of Id's classic FPS Level 1" },
+ { "ill", "I'll" },
+ { "imiagination", "Imiagination" },
+ { "cubicle", "In The Cubicle" },
+ { "inamanor", "In a Manor of Speaking" },
+ { "inevita", "Inevitable" },
+ { "informatory", "Informatory" },
+ { "inhumane", "Inhumane: An Infralogic Massacre" },
+ { "insight", "Insight" },
+ { "intangible", "Intangible" },
+ { "ifplayer", "Interactive Fiction Player" },
+ { "interviewrockstar", "Interview with a Rock Star" },
+ { "lionskin", "In the Skin of a Lion Quest: Caravaggio's Journey" },
+ { "intruder", "Intruder - Interactive Fiction: A Burglary" },
+ { "invisibleadv", "The Believable Adventures of an Invisible Man" },
+ { "pressedon", "I pressed on, being chased by a stapler with my name on it" },
+ { "iraqiinvasion", "Iraqi Invasion: A Text Misadventure" },
+ { "islandsfaraway", "Islands Far Away" },
+ { "beanstalker", "The Bean Stalker" },
+ { "jetblue", "Jet-Blue" },
+ { "jewelofknowledge", "The Jewel of Knowledge" },
+ { "jigsaw", "Jigsaw, An Interactive History" },
+ { "jigsawrules", "Jigsaw: Rules and Footnotes" },
+ { "juicehead", "Juicehead, an interactive binge" },
+ { "justanotherday", "Just Another Day" },
+ { "karn", "Return to Karn" },
+ { "keepingdido", "Keeping Dido" },
+ { "kidnapsea", "Kidnapped - On the Sea" },
+ { "kierkegaardsspider", "Kierkegaard's Spider" },
+ { "kiiwii", "Kii!Wii! A tiny friend to brighten your day" },
+ { "killingthedoctor", "Killing the Doctor" },
+ { "kirby", "The X-Child, Kevin Johnson Residence Hall Saga 2" },
+ { "kitten", "robotfindskitten" },
+ { "kooku", "Kook U" },
+ { "lambs", "Silence of the Lambs" },
+ { "lambs2", "Silence of the Lambs 2" },
+ { "largemachine", "Large Machine" },
+ { "lash", "Local Asynchronous Satellite Hookup" },
+ { "ldodoom", "Last Days of Doom" },
+ { "leaptime", "Leap Time" },
+ { "lecture", "Lecture Feature" },
+ { "lex", "LeX" },
+ { "librariani7", "Life of A Librarian (Inform 7 version)" },
+ { "libraryfront", "All Quiet on the Library Front" },
+ { "lifeordeath", "Life or Death" },
+ { "blacklily", "The Black Lily" },
+ { "limp", "Limp" },
+ { "nemeanlion", "The Nemean Lion: another anonymous joke game" },
+ { "lists", "Lists and Lists" },
+ { "livejoseph", "LiveJoseph" },
+ { "llr3", "A Little Like Rogue" },
+ { "lmstvg", "LMS The Video Game" },
+ { "lookingtothesky", "Looking to the Sky" },
+ { "motherloose", "Mother Loose" },
+ { "lostspellmaker", "The Lost Spellmaker" },
+ { "lostpig", "Lost Pig And Place Under Ground" },
+ { "lostsheep", "The Bible Retold: The Lost Sheep" },
+ { "luicorp", "The Ludicorp Mystery" },
+ { "magictoyshop", "The Magic Toyshop" },
+ { "magicmuffin", "Magic Muffin - The Desert" },
+ { "mahadev", "Mahadev: Painless Little Stupid Games #6" },
+ { "makeitgood", "Make it Good" },
+ { "mansion", "Mansion" },
+ { "revenger", "Revenger" },
+ { "masquerade", "Masquerade" },
+ { "medusa", "Medusa, NPC Conversations Example" },
+ { "mercy", "Mercy" },
+ { "metamorphoses", "Metamorphoses" },
+ { "mhpquest", "Quest for the Magic Healing Plant" },
+ { "midpoints", "Midpoints" },
+ { "mimesis", "Sins Against Mimesis" },
+ { "mindelectric", "The Mind Electric" },
+ { "mines", "Mines" },
+ { "christminster", "Christminster" },
+ { "misdirection", "The Act Of Misdirection" },
+ { "missinggrandpa", "Missing Grandpa: Lost in Time" },
+ { "mobius", "Mobius" },
+ { "monstermaker", "Monster Maker" },
+ { "monzasphantom", "Monza's Phantom" },
+ { "moonshaped", "Moon-Shaped" },
+ { "moonglow", "Moonglow, Miniventure #1" },
+ { "moonwrecked", "Moonwrecked" },
+ { "more", "More" },
+ { "mortlakemanor", "Mortlake Manor" },
+ { "mountain", "Mountain, an Interactive Expedition" },
+ { "mousequest", "Mouse Quest Chapter 1 - The Arrival of Winter" },
+ { "mrp", "The Story of Mr. P." },
+ { "mst3k1", "Detective, An Interactive MiSTing (Mystery Science Theater 3000)" },
+ { "mst3k2", "A Fable, interactive MiSTing-up of \"A Fable\"" },
+ { "mulldoon", "The Mulldoon Legacy" },
+ { "mulldoonmurders", "The Mulldoon Murders" },
+ { "murdac", "Murdac" },
+ { "murdererleft", "What The Murderer Had Left" },
+ { "muse", "Muse: An Autumn Romance" },
+ { "musician", "The Musician" },
+ { "myangel", "My Angel" },
+ { "mylastduchess", "My Last Duchess" },
+ { "conceptisproven", "My Little Project Concept is Proven" },
+ { "oceantower", "Love, Hate and the Mysterious Ocean Tower" },
+ { "nameless", "Endless, Nameless" },
+ { "nautilisia", "Nautilisia" },
+ { "newday", "A New Day" },
+ { "nidus", "Nidus" },
+ { "nightcomputer", "Night at the Computer Center" },
+ { "nightchristmas", "An Abbreviated Night Before Christmas" },
+ { "nihilism", "The Abyss" },
+ { "ninepoints", "Nine Points" },
+ { "njag2", "Not Just A Game" },
+ { "noroom", "No Room" },
+ { "northnorth", "The Northnorth Passage" },
+ { "nudistsgonewild", "Nudists Gone Wild" },
+ { "adventurelobjan", "Adventure (Lobjan translation)" },
+ { "oad", "Only After Dark" },
+ { "odieus", "Odieus's Quest for the Magic Flingshot (Beta)" },
+ { "omniquest", "Omniquest" },
+ { "ogisoas", "One Game in Search of a Story" },
+ { "onegirl", "One Girl" },
+ { "onyourback", "On Your Back" },
+ { "orevore", "Orevore Courier" },
+ { "bloodless", "Bloodless on the Orient Express" },
+ { "orion", "The Orion Agenda" },
+ { "ottumwa", "PDFA Ottumwa" },
+ { "outofthepit", "Out of the Pit" },
+ { "paddlingmania", "Total Paddling Mania" },
+ { "paint", "Paint and Corners" },
+ { "palebluelight", "Pale Blue Light" },
+ { "paperchase", "Paper Chase" },
+ { "parallel", "Parallel" },
+ { "paranoia", "Paranoia" },
+ { "parc", "Parc" },
+ { "pathway", "Pathway to Destruction" },
+ { "peacock", "Not Made With Hands" },
+ { "pegasus", "Pegasus" },
+ { "pentari", "Pentari" },
+ { "pirilousmagic", "Perilous Magic" },
+ { "perrysworld", "Perry's World" },
+ { "phlegm", "Phlegm" },
+ { "photograph", "Photograph, a Portrait of Reflection" },
+ { "photopia", "Photopia" },
+ { "piece", "Piece of Mind" },
+ { "pigpancake", "Pigpancake" },
+ { "piracy2", "Piracy 2.0" },
+ { "piraterailroad", "Pirate Railroad" },
+ { "plsg", "Painless Little Stupid Games" },
+ { "praser5", "Praser 5" },
+ { "primer", "Primer" },
+ { "primrose", "The Primrose Path" },
+ { "iceprincess", "The Ice Princess" },
+ { "probing", "Offensive Probing" },
+ { "promoted", "Promoted!" },
+ { "puerto", "The board game Puerto Rico" },
+ { "punkpoints", "Punk Points" },
+ { "puppetman", "The Puppet-Man (Larsoft Adventure number 5)" },
+ { "putpbaa", "Pick Up the Phone Booth and Aisle" },
+ { "pytho", "Pytho's Mask" },
+ { "muffinquest", "The Quest for the Magic Muffin" },
+ { "muffinquest3", "Quest for the Magic Bagel...Err Muffin 3" },
+ { "simpletheft2", "A Simple Theft 2: A Simple Theftier" },
+ { "quidditch1954", "The Quidditch Final of 1954" },
+ { "ralph", "Ralph, An Interactive Sniffing" },
+ { "rameses", "Rameses, a Tale of Heroes" },
+ { "rans", "RANS, an interworld progress" },
+ { "rachaelbadday", "Rachel has a bad day" },
+ { "readinginmay", "A Reading in May" },
+ { "relief", "The Hunt For Relief" },
+ { "reorsbushcave", "Reor's Bush-Cave (The Sprout Pouch pt 4)" },
+ { "reser", "Rock'Em Sock'Em Robots" },
+ { "resident", "The Resident" },
+ { "retrofatale", "Retro Fatale" },
+ { "reverb", "Reverberations" },
+ { "reverzi", "Reverzi" },
+ { "ribbons", "Ribbons" },
+ { "risenecropolis", "Rise of the Necropolis" },
+ { "risorg", "Risorgimento Represso" },
+ { "robots", "Robots - Another Abuse of the Z-Machine" },
+ { "rogue", "zRogue" },
+ { "roomserial", "Room Serial, an escape game" },
+ { "rota", "The Reliques of Tolti-Aph" },
+ { "rpn", "RPN" },
+ { "rtdoom", "Return to Doom" },
+ { "samegame", "SameGame, another episode in the Z-Machine abuse saga" },
+ { "samhain", "Samhain: Pick Up The Pumpkin and KILL" },
+ { "sangraal", "Sangraal" },
+ { "santassleighride", "Santa's Sleigh Ride" },
+ { "saveprinceton", "Save Princeton" },
+ { "savoirfaire", "Savoir-Faire" },
+ { "scald", "Scald" },
+ { "informschool", "Inform School" },
+ { "schooldays", "Schooldays" },
+ { "scopa", "Scopa, a graphical (Z-code V6) card game" },
+ { "finalselection", "Final Selection" },
+ { "sfiction", "Speculative Fiction: Beginner's Lessons" },
+ { "shadowgate", "Shadowgate" },
+ { "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" },
+ { "sherlock4", "Sherlock gamebook #4: The Crown vs Dr. Watson" },
+ { "shade", "Shade" },
+ { "shadowofmemories", "Shadow of Memories" },
+ { "shadowsoldiers", "Shadow Soldiers" },
+ { "shallow", "Shallow" },
+ { "sherbet", "The Meteor, the Stone and a Long Glass of Sherbet" },
+ { "shrapnel", "Shrapnel" },
+ { "sixgrayrats", "Six Gray Rats Crawl Up The Pillow" },
+ { "slackerx", "Slacker X" },
+ { "sleepcycle", "Sleep Cycle" },
+ { "snafufun", "SNAFUFUN" },
+ { "snowquest", "Snowquest" },
+ { "neverplayed", "So, You've Never Played a Text Adventure Before, Huh?" },
+ { "sofar", "So Far, An Interactive Catharsis" },
+ { "softporn", "Softporn Adventure" },
+ { "solitary", "Solitary" },
+ { "somewhere", "Somewhere" },
+ { "soreality", "So Reality" },
+ { "spacestation", "Space Station: based on Planetfall example transcript" },
+ { "spaceinvaderz", "Space InvaderZ" },
+ { "spadventure", "SpAdventure" },
+ { "spiritwrak", "SpiritWrak" },
+ { "sporkery1", "Sporkery 1: There Will Be Sporking" },
+ { "spot", "The Spot" },
+ { "spring", "She's Got a Thing For a Spring" },
+ { "spycatcher", "Spycatcher" },
+ { "starborn", "Starborn" },
+ { "seeksorrow", "Starry Seeksorrow" },
+ { "stealingthestolen", "Stealing the Stolen" },
+ { "stiffmst", "Stiffy Makane: Mystery Science Theater 3000" },
+ { "stinkorswim", "Stink or Swim" },
+ { "stonecave", "The Stone Cave" },
+ { "stormcellar", "Storm Cellar" },
+ { "strangeworld", "Strange World" },
+ { "sturdlint", "Sturdlint (The Mempotnaclob): Painless Little Stupid Games #7" },
+ { "suicide", "Suicide, a self-ordered death sentence" },
+ { "sunburn", "Sunburn" },
+ { "sunburst", "Sunburst: A C64 science fiction adventure game" },
+ { "sundayafternoon", "Sunday Afternoon" },
+ { "briantimmons", "The Surprising Case of Brian Timmons" },
+ { "sushi", "A Day For Fresh Sushi" },
+ { "sutwin", "The Space Under the Window" },
+ { "suvehnux", "Suveh Nux" },
+ { "swineback", "Swineback Ridge" },
+ { "sycamoratree", "Sycamora Tree" },
+ { "taipan", "Taipan!" },
+ { "spiderandweb", "Spider And Web" },
+ { "tatctae", "Time: All things come to an end" },
+ { "tauntingdonut", "Taunting Donut" },
+ { "tblw", "The Blood lust Warrior" },
+ { "tcomremake", "The Color of Magic remake" },
+ { "tcoty", "The Citizen of the Year" },
+ { "teacherfeature", "Teacher Feature" },
+ { "williamtell", "William Tell" },
+ { "telling", "Whom The Telling Changed" },
+ { "temple", "The Temple" },
+ { "terrortabby", "Attack of the Terror Tabby!" },
+ { "tesseract", "Beyond The Tesseract" },
+ { "tgm", "The Great Machine - a fragment" },
+ { "thatdamnelevator", "That Damn Elevator" },
+ { "thatdamnremote", "thatdamnremote" },
+ { "cenricfamilycurse", "The Cenric Family Curse" },
+ { "vergingpaths", "The Garden of Verging Paths" },
+ { "minimalistgame", "The Minimalist Game" },
+ { "talemorning", "The Mundane Tale of the Morning After" },
+ { "paperbagprincess", "The Paper Bag Princess" },
+ { "worldupsidedown", "The World Turned Upside Down" },
+ { "advhoudini", "The Adventures of Houdini" },
+ { "penury", "The Algophilists' Penury" },
+ { "theatre", "Theatre" },
+ { "dayishothitler", "The Day I Shot..." },
+ { "doghouse", "The Dog/House" },
+ { "emptyroom", "The Empty Room" },
+ { "forgottengirls", "The Forgotten Girls" },
+ { "henribeauchamp", "The Gallery of Henri Beauchamp" },
+ { "garliccage", "The Garlic Cage, Episode I" },
+ { "grandquest", "The Grand Quest" },
+ { "thegreat", "The Great, A Voyage To The Inner Self" },
+ { "greatpancake", "The Great Pancake Detectives - Case #27" },
+ { "horriblepyramid", "The Horrible Pyramid" },
+ { "house", "The House" },
+ { "houseoffear", "The House of Fear" },
+ { "island", "The Island" },
+ { "kazooist", "The Kazooist" },
+ { "lastdarkday", "The Last Dark Day: Painless Little Stupid Games #8" },
+ { "priceoffreedom", "The Price of Freedom" },
+ { "prize", "The Prize" },
+ { "nascarexperience", "The Realistic Nascar eXperience" },
+ { "smallroom", "Trapped in a Small Room" },
+ { "spotlight", "The Spotlight" },
+ { "stargods", "The Star Gods" },
+ { "terribleoldmanse", "The Terrible Old Manse: 8bit fun in 7bit ASCII" },
+ { "townmusicians", "The Town Musicians" },
+ { "valleyhouse", "The Valley House: Painless Little Stupid Games #10" },
+ { "warblersnest", "The Warbler's Nest" },
+ { "thorn", "The Thorn" },
+ { "threecows", "Three Cows and Two Doors" },
+ { "threediopolis", "Threediopolis" },
+ { "threemore", "Three More Visitors" },
+ { "timefortea", "Time For Tea: A Game of Tea, Cakes, and Deadly Secrets" },
+ { "tirehoax", "My Magic Tire Hoax" },
+ { "tk1", "Time Killer #1: Claustrophobia" },
+ { "tkatc", "The King and the Crown, Special Edition" },
+ { "toask", "Treasures of a Slaver's Kingdom" },
+ { "tok", "ToK" },
+ { "downtowntokyo", "Downtown Tokyo Present Day" },
+ { "tower", "Tower, a surreal trip" },
+ { "toxinx", "Toxin X" },
+ { "trapped", "Trapped" },
+ { "troll", "Zork: A Troll's Eye View" },
+ { "trw", "Tull Road Warrior" },
+ { "trystoffate", "Tryst of Fate" },
+ { "tubetrouble", "Tube Trouble" },
+ { "tutorial", "Tutorial" },
+ { "tutorialhotel", "Hotel Tutorial" },
+ { "tuuli", "Tuuli" },
+ { "typo", "Typo!" },
+ { "uhohdemo", "Uh-oh! (demo version)" },
+ { "underdoos", "The Underoos that ate New York!" },
+ { "underthebed", "Under the Bed" },
+ { "ungodlyhour", "Ungodly hour" },
+ { "uninvited", "Uninvited" },
+ { "unicornpool", "The Unicorn Pool" },
+ { "vacation", "Vacation Gone Awry" },
+ { "vagueness", "What Happens In Vagueness" },
+ { "vampiresun", "House of the Midnight Sun - A Vampire's Tale" },
+ { "notinvenice", "Not in Venice" },
+ { "vespers", "Vespers" },
+ { "varicella", "Varicella" },
+ { "vigilance", "Internal Vigilance" },
+ { "vindaloo", "Vindaloo" },
+ { "violet", "Violet" },
+ { "virtuality", "Virtuality" },
+ { "lackofvision", "Lack of Vision" },
+ { "visitor", "The Visitor" },
+ { "vosr", "Voices of Spoon River" },
+ { "wadewar3", "The WadeWars Book III" },
+ { "walkamongus", "Walk Among Us" },
+ { "walkinthepark", "A Walk in the Park" },
+ { "wallpaper", "Delightful Wallpaper" },
+ { "warp", "Warp!" },
+ { "wizardscastle", "Wizard's Castle" },
+ { "weareunfinished", "We Are Unfinished" },
+ { "weapon", "The Weapon" },
+ { "weather", "A Change in the Weather" },
+ { "thewedding", "The Wedding" },
+ { "weding", "Wedding" },
+ { "weirdcity", "Weird City Interloper" },
+ { "weirdness", "Weirdness: Strange, Different, and Altogether Weird" },
+ { "wwwanderer", "Werewolves and Wanderer" },
+ { "wernersquest", "Werner's Quest Parts 1-4" },
+ { "whispers", "The Corn Identity, an \"IF Whispers\" collaborative project" },
+ { "whitehouses", "White Houses" },
+ { "wildflowers", "Wildflowers" },
+ { "windchester", "Winchester's Nightmare" },
+ { "windhall", "The Windhall Chronicles, Volume One" },
+ { "winterwonderland", "Winter Wonderland" },
+ { "wir1", "When in Rome 1: Accounting for Taste" },
+ { "wir2", "When in Rome 2: Far from Home" },
+ { "wireless", "Get Magazine. Open Magazine. Read Article" },
+ { "insidewoman", "Inside Woman" },
+ { "wossname", "Spodgeville Murphy and The Jewelled Eye of Wossname" },
+ { "wrenlaw", "Wrenlaw" },
+ { "wscholars", "Weishaupt Scholars" },
+ { "wump2ka", "Wumpus 2000, The Virulent Labyrinth Of Yob-Shuggoth" },
+ { "wumpus", "Hunt the Wumpus" },
+ { "wurm", "Wurm" },
+ { "xenophobia", "Xenophobia" },
+ { "yagwad", "YAGWAD: Yes, Another Game With A Dragon!" },
+ { "yakshaving", "Yak Shaving for Kicks and Giggles!" },
+ { "yomomma", "Raising the Flag on Mount Yo Momma" },
+ { "stewgoing", "You've Got A Stew Going!" },
+ { "zlife", "Z-Life" },
+ { "zassball", "ZassBall, Another Abuse of the Z-Machine" },
+ { "zbefunge", "ZBefunge 0.7 beta" },
+ { "zcamel", "Camel" },
+ { "zcatalog", "The Z-Files, a Z-Code Catalog" },
+ { "zchess", "Z-Chess" },
+ { "zdungeon", "ZDungeon" },
+ { "zedfunge", "ZedFunge 0.7.3 beta" },
+ { "zedit", "ZEdit, The World's Most Portable Text Editor" },
+ { "zegro", "Zegrothenus" },
+ { "zenon", "Escape from the Starship Zenon" },
+ { "zenspeak", "Zen Speaks!" },
+ { "zokoban", "Z-Machine Sokoban" },
+ { "zombies", "Zombies, yet another abuse of the Z-Machine" },
+ { "zorklxix", "Zork LXIX: The Great Underground Hot Dog" },
+ { "zorkianstories1", "Zorkian Stories 1: G.U.E" },
+ { "zorknplus9", "Zork N plus 9" },
+ { "zracer", "ZRacer" },
+ { "zsnake", "Z-Snake" },
+ { "ztornado", "Z-Tornado" },
+ { "ztrek", "Super Z Trek" },
+ { "ztuu", "Zork: The Undiscovered Underground" },
+ { "zugzwang", "Zugzwang: The Interactive Life of a Chess Piece" },
+
{ nullptr, nullptr }
};
@@ -250,7 +935,10 @@ const FrotzGameDescription FROTZ_GAMES[] = {
ENTRY0("questprobe2", "980329", "6b9cb86c332c092b3a93973ba9f4c946", 27136),
ENTRY0("voodoocastle", "980329", "bff285e6c9291fc6ba77c9743b610c2d", 24064),
-
+ // English ZCode games
+ ENTRY0("404life", "110524", "a4ee7ba2cb611e0ae3e413a6eb9dc4da", 506770),
+ ENTRY0("69105keys", "090302", "bc343936e0e9d79a3736b200eadfc6ee", 195162),
+
FROTZ_TABLE_END_MARKER
};