diff options
-rw-r--r-- | engines/glk/frotz/detection.cpp | 10 | ||||
-rw-r--r-- | engines/glk/frotz/detection_tables.h | 690 |
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 }; |