"A Commodore Adventure" (Part I & II) By: Paul Panks (dunric@yahoo.com) (NOTE: The contents of this document are made available freely, and may be redistributed without restriction) Not posted to Homestead due to the length of the article. Introduction Nostalgia is said to bring out the best in people. Even after years have passed, I still long for the original disks to my very first game. The game itself was a mere 52kb in length, but the scope of the project spanned 8 months of my life. Countless hours were spent at the computer, perfecting what was inherently an imperfect game. Setting aside school, friends and even family, I labored in front of my old Commodore 128 to create what is now considered my very first full-length game: Westfront. The full-length title of the game was a tad obscure: Enchanter: West Front to Apse. But the main ideas behind the game were not. Technical Details Considering that I had played just about every text adventure known to man, it was a modest effort. The game itself spanned 208 blocks on disk, which roughly translated into 52 kilobytes total. That isn't a very large game (at least by today's standards), but for the BASIC 7.0 in native Commodore 128 Mode, it was a whopper of a program! The game had origins on the C64, and was quickly remodeled for 128 mode after variable space ran low. The game itself was approximately 206-210 blocks long, had some 70 rooms, 85 nouns, 32 or so verbs, and was WINDOWed in that the sprite graphic that you see in the link above was displayed above the actual room description. At the bottom were displayed highlighted Function Key commands, accessible by pressing the appropriate function key. I also used a sprite for the Long Range Mapping feature of the game, which displayed a blueish, 3-dimensional lined landscape with a flashing white dot that displayed the player location. The Short Range Mapping feature, depending on the room entered, would display the tavern interior, the shop interior and the church interior in multi-color, SHIFTed and COMMODORed Keyground-style Graphics. Gameplay Much of the game revolved around exploring sections of Norway, including Oslo, Trondheim, Stavanger, Bergen and the Flora island. There was also a Smurf village in the game, and part of the game involved rescuing Smurfette and drugging Asriel (from one of Papa Smurf's potions) and bringing his hide back to Handy smurf (for some equipment and armor items). Hey, this wasn't a kid's game! Also, if memory serves me, the player was supposed to visit some fellow named Gomar in a treehouse, read from one of his books, and have him explain worldly mysteries to the player helpful in finishing the game. Finally, the player took a boat to the Lighthouse on Flora Island and found several weapons, armor and possibly a backpack. There, they'd take the boat back to Bergen (I think), locate an open plain under a "deep blue sky", read from a scroll (either that, or incant a magical ring) and Mordimar the Evil Magician would appear. Looks like someone played the NES game Immortal, huh? :) Anyway, the player would win by defeating Mordimar and saving Smurf Village. A look back...and forward There are many stories behind the development of this game. First, there were the countless hours spent reading TSR Hobbies "Advanced Dungeons & Dragons Beginner Module 1", and the companion "Player's Handbook". Without these two books, Westfront would probably never have existed. I also attribute Westfront's existance to playing Magnetic Scrolls "The Pawn" during the Commodore's heyday. That game served as the basis for the layout and structure of my humble text adventure. Next, there were the self-beta testing sessions, mostly spent in frustration with squashing bug after bug after bug! This would consist of pressing the RUN/STOP and RESTORE keys repeatedly throughout a programming sessions. Eventually the keys worn down and I had to get my Commodore 128 repaired. Ugh! Finally, I remember the humorous look on my cousin's face when he played the game for the first time: Ryan: "Why can't I examine anything?" Paul: "Oh, you just examine _objects_ in the game..." Ryan: "Oh, ok...hey, what's the wine for?" Paul: "You drink it..." Ryan: (drinks wine)..."Ok...I'm now in Smurf Village. How the hell did _that_ happen?" Paul: "Keep playing, it gets better..." Another individual whom beta-tested my game was my other cousin, Tim McLaughlin. He had a fun time exploiting the bugs in the game to his advantage: Tim: (issues a GO NORTH command) "Ok, I just moved north..." Paul: "You can use abbreviations, you know..." Tim: "Really? Coooollll...." Paul: "Try typing: GO NO instead of GO NORTH." Tim: "Ok...Oh, neat! I like that feature!" Tim: "Can I pick up the tree?" Paul: "No." Tim: (issues a GET TREE command in the forest) "It says 'Ok.' " Paul: "Huh?" Paul: "Check your inventory..." Tim: (INVENTORY command reveals that he now has the TWO-HANDED SWORD) " What the heck? " Paul: "Wait a minute!..." The development of the game progressed from a simple two-word parser (courtesy of an issue of Compute!'s Gazette) to the remodeling from the initial C64 version and finally into the form described at the beginning of this article. In time, I managed to play a MUD online via telnet, and I then modeled the Village Shop after it (or at least I tried). This proved unremarkable, as there were several bugs in the Shop routine of the game. I also discovered that the WIELD command tacked on a "(wielded)." text string to the end of any item that the player attempted to wield. This led to a most frustating error: >inventory >You are carrying: BACKPACK. LANTERN. TWO-HANDED SWORD (wielded).(wielded). Play value, most important Despite the bugs in the game, Westfront had some redeeming play value in that it taught the end user patience. Sorely lacking in the game was thorough or even partially complete instructions. There was a nice introduction, to be sure, but the HELP command during game play displayed six terrible suggestions, among them: "5. Relax. Think as the computer would. If a noun or verb doesn't make sense, take a break from the computer and come back later on, refreshed and ready to try again." Needless to say, both Ryan and Tim scoffed at the HELP command's usefulness! Some Final Thoughts When I finally get around to locating that damn disk, I'll put up this game -- bugs and all -- for others to experience and enjoy. Mostly, I'd like to pay homage to my Commodore roots and re-release a version for Windows (without the bugs). For now, I am left searching for that long lost disk, hoping one day to resurrect the game in full. Although a partially complete version was resurrected a month ago, it contained only the first 40 or so rooms and had yet to implement much of the verbs (only the first 12 were completed, out of 31). I will work to find the complete version, and once that turns up, you can bet this page will be replaced by something more informative. UPDATE! July 24, 2003! I located an old version of my game! Upon reworking it, I have managed to recover 85% of the game as it was! Click here! (scroll down to "West Front to Apse" description, with download). A Commodore Adventure, Part II What I remember from memory (as it might have been). They say insight often comes from having dreams. Thanks to a dream I had recently, I can now recall with clarity what happened to my original version of "West Front to Apse" (henceforth, called 'Apse'). In my dream, I was shown exactly how I went about coding the game itself, as well as the general timeframe for the game's creation. I even saw specific lines of code as I LISTed the game on screen (a rarity for the often fractured nature of the mind's dream- scapes). This was a game I spent 8 long months working on, but it was also an amalgamation of two distict adventure games (one of which I fin- ished the previous summer, in 1993). It was written in the 128 mode of the Commodore 128 (in BASIC 7.0). The game included an attractive sprite title ("WESTFRONT") overhanging a scrolling, WINDOWed text display. I also made use of function keys for the most frequently used commands (such as "GO NORTH", "INVENTORY", "MAP", etc). Because of the sprite display, I ran the game in 40 column mode. To top things off, I included both short and long range displays of the gaming environment (viewable via the MAP command). The long range display showed a 3-dimensional, hyperbolic sprite of the mount- ainside (shaded in blue), with a bright dot showing the current play- er location (the dot would flash on and off slowly). The short range display, conversely, would show (depending on which room the player was in) an interior view of the tavern, shop, chur- ch, etc. I only made this map for the first few rooms (due to space limitations). The graphics were incorporated into the program list- ing (206 blocks long, with a 74 block sequential data file). The original game introduction (salvaged from a recovered, earlier version). The room descriptions were quite varied and very elaborate. I wanted to fill at least 320 characters (8 screen lines) with each individual room description. Some room descriptions were as large as two screens! Because of the enormous size of such descriptions, it became necess- ary to move most of them into a 74 block SEQuential file called "WEST- DATA". The commas had to be left out, of course. Influencing my decision to write Apse was the online MUD called "LustyMUD" (despite the name, it was/is a family-oriented Multi-User Dungeon game). The beauty of LustyMUD lay in the intricate and often detailed room descriptions, and of course, the exceptional monsters, items, armor and quests. Player interaction was also a key element, but that was not transferable to an ordinary text adventure. The game took place in Norway (don't ask me why; I flipped open a random World Book Encyclopedia and Norway was the most interesting place I found). I made sure to include descriptions of Oslo, Stavan- ger, Bergen, Trondheim and other towns. Even Flora Island was incorp- orated into the gameplay (the player had to travel by boat to Flora Island, where an old lighthouse could be explored at length). My imagination was not limited to my own mind, however, and so I turned to popular culture to help fill in the blanks. A common joke at that time was to always include a Smurf Village into a new text adventure, so that the game had an element of dry humor. I included the bare essentials: a few mushroom houses, Papa Smurf, Jokey Smurf, Brainy Smurf, Smurf forest, Handy Smurf, Gargamel's castle, Gargamel and Asriel (Gargamel's cat). In Gargamel's castle, I placed a lump of gold, a beaker (for mixing potions), a spellbook and a few miscellaneous items. But Gargamel seemed too wimpy an end boss, so I turned to Will Wright's "The Immortal" for help. My brother played this wonderful 3/4th perspective adventure game on his NES, and the help booklet was lying conveniently around. I leafed through that until I found the entry "Mordimar", an evil magician. He seemed devious enough for my tastes, and so I constructed a four room castle near Bergen, comp- lete with a golden throne and a flowing fountain in the castle court- yard. I also included Gomar, a wise troll, into the game (placing him up in a tree). Apparently, Mordimar had taken the "life force" (Chi) out of the forest and only Gomar, the wise Troll, knew how to bring it back to the woodland creatures (hey, I'm not making this one up). In all, I had roughly 8,000 bytes free upon reaching the 200+ block mark in BASIC 7.0. Variables, as you probably know, are stored in Bank 1 in Commodore 128 BASIC (Bank 0 contains the program itself). Thusly, I had over 120 KB to work with in molding my game into the contrived mess it became. An enlarged picture of the long range area surface map. For a parser, I borrowed heavily from the October 1984 issue of Comp- ute!'s Gazette. The Gazette ran a feature article entitled "Teaching your computer English". It was a simple text adventure, but the parser was easily understood. I had never written a parser before, and so I incorporated a modified version into Apse. This led to the interesting "feature" of being able to type "GO NO" for "GO NORTH", "IN" for "INVE- NTORY" and "GE LA" FOR "GET LANTERN" (among other examples). My cousin Tim, who helped bug test the game, enjoyed this shortcut immensely: Tim: (issues a GO NORTH command) "Ok, I just moved north..." Paul: "You can use abbreviations, you know..." Tim: "Really? Coooollll...." Paul: "Try typing: GO NO instead of GO NORTH." Tim: "Ok...Oh, neat! I like that feature!" Tim: "Can I pick up the tree?" Paul: "No." Tim: (issues a GET TREE command in the forest) "It says 'Ok.'" Paul: "Huh?" Paul: "Check your inventory..." Tim: (INVENTORY command reveals that he now has the TWO-HANDED SWORD) "What the heck?" Paul: "Wait a minute!..." My other cousin, Ryan, also beta-tested Apse. I remember (quite vividly) the look of puzzlement on his face the very first time he played my game: Ryan: "Why can't I examine anything?" Paul: "Oh, you just examine _objects_ in the game..." Ryan: "Oh, ok...hey, what's the wine for?" Paul: "You drink it..." Ryan: (drinks wine)..."Ok...I'm now in Smurf Village. How the hell did _that_ happen?" Paul: "Keep playing, it gets better..." Indeed it did get better, but only if the player exploited the bugs there- in. You see, this game had many, many errors. For example, you could sell items to the Bergen shop (which I modeled after the online version) even if the items themselves had no value whatsoever. I remember setting a price of "0" for the scroll, but that could be sold (and purchased) for "0 gold coins". Doesn't make sense, does it? The sprite title screen (enlarged to show design). The WIELD command was also buggy. In practice, the player should have been able to wield only one weapon at a time (especially the "TWO-HANDED SWORD"). But in some cases, the player could be wielding the "SCIMITAR" while he/she also was wielding the "DAGGER". Also perplexing was the inclusion of a "WINESKIN" (a kind of primitive water container). It could only hold water, but not wine. The "WINE BOTTLE" itself could only contain wine (never water). And you couldn't pick up the wine bottle and drink it. You had to drink it from the tavern table for any useful effect. Drinking the wine sent the player to Smurf Village, while reading the spellbook (inside Garga- mel's castle) sent him back to the Bergen Church. One other "feature" I will always remember about this game: the sprite data would occasionally overwrite small portions of the game itself. I in- advertently BLOADed the sprite data for either the title or exterior surf- ace map into locations 3584 through 4096. Since the beginning of BASIC 7.0 on the Commodore 128 was at location 4096, the first few lines of the game became corrupted. But since the sprite data was always the same, every time I ran the game twice I received an error in Line 0. Fixing a few random characters back to their original value fixed this error. A quick view of the BASIC 7.0 Reference Guide would have revealed that sprites ended at location 4095 (and not 4096), but I added 512 bytes to 3584 (instead of beginning my count at location 3583). Thus, I counted "3585" as byte 1, "3586" as byte 2, "3587" as byte 3, etc., instead of designating location 3584 as my first sprite byte (a block of 8 sprite shape definitions occupies 63 bytes per sprite data block; thus, 512 bytes/64-1 = 8 sprite shapes). I began coding the first version of this game in May, June and July of 1993. I set aside that original adventure (originally written for the Commodore 64), and went back to school at Chaparral High in Scottsdale. I completed my Junior year in June of 1994, but while there watched a film entitled "All Quiet on the Western Front". Although this movie had not one iota of similarity between a traditional text adventure game and what it discussed, I nevertheless chose "Westfront" as my lead title for my new adventure game. So how did "Apse" get added to the title "Westfront"? I was flipping through, yet again, a World Book Encyclopedia and read about the Christ- ian Catacombs of Rome. One of the references discussed the origins of the catholic church. I learned how old catholic churches often had "Apses". An Apse is essentially a vaulted or domed recess of a church, sometimes at the end of it (at times, towards the eastern portion). The nave in the apse usually extended past the pews, occasionally reaching the altar itself. This all sounded very cool, but I wanted to reverse the standard eastern end to be "western". Thusly, I included the term "Apse" into the full name of the title. The original interior surface map (showing the tavern). This was also found on another disk of mine. Beginning in mid-1994 (perhaps around May or June), I loaded up the old version of "Westfront" and decided it needed a serious makeover. Bet- ween May of 1994 and February of 1995, I worked on coding "Westfront to Apse". I spent countless hours at the keyboard, hammering away. I drew inspiration from everything: movies, books (including TSR Hobbies "Dun- geons & Dragons"), television, magazines and even dreams. While working on Apse, I took it easy on my Senior-level classes. I even casually men- tioned the game while playing paper football with my future fiancee (in art class). We drew unflattering pictures of the student teacher, which the regular art teacher discovered (and lectured me about), but that was another story. By mid-February 1995, I completed the final stages of Apse to my satis- faction. The result was a game encompassing over 80 rooms and 80 nouns. I think I limited Verbs to about 30 or 31. Overall, with the data and everything else, I had about 8,000 bytes of BASIC memory left after I hit the 200 Block mark. I was most proud of this game, even at one point asking the folks at comp.sys.cbm if they'd like a copy of it. I don't recall anyone ever showing interest, but that was in 1996, after all. For a few years after completion, I set the game aside, almost losing memory of it. Then one day, in early 1997, I pulled it out and played around with it. I was ashamed of all the bugs in it, so I formatted over the original disk (knowing I had a backup copy of it) and wrote "Westfront II" to be less error prone and more like online MUDs. It was also written for the Commodore 128 (but this time in 80-column mode), and eventually included over 350+ rooms and 80+ nouns. I stored all of the program data in SEQ data files on disk. "Westfront II" eventually became my popular text adventure "Westfront PC: The Trials of Guilder" on the Windows platform. That game, for trivia purposes, took 7 years to fully debug and complete. Thanks to the 32-bit architecture of Microsoft Windows (and PowerBASIC's Console Compiler), I was able to expand the game to 1,728 rooms and four continents. The game itself included over 200+ nouns, items, monsters, and other objects. I also included a staggering 50+ quests, as well as several dozen side quests and parlor games. A few years ago (in 2002), I pulled out the old backup copy of Apse and loaded it up. Unfortunately, although I had the habit of saving two copies of the game to each disk (named "WESTFRONT" and "BACKUP", resp- ectively), both programs stopped abruptly about 190 blocks in with "?DISK READ ERROR"s (meaning that both files were hopelessly corrupted). The re-created version of Apse, as it stands today. You can find it at my other homepage. LISTing either version of the game displayed approximately 3/4ths of the BASIC program listing, which was then followed by an endless stream of gibberish. Running the program halted it halfway through the initial- ization process, where an "?OUT OF DATA ERROR" would unfortunately occur (since the end of the program was DATA statements, the scrambled port- ion of the DATA forced the out of data error). I tried saving both files to another disk, but they too wouldn't save properly. In frustration, I formatted over the disk and wondered if I made additional copies of the game lying around. The only versions I found were, tragically, from late 1994 and did not include Mordimar, Norway or some of the other objects or areas that made the completed version so much fun. I eventually recoded the game in late 2003 from the remnants of the last existing version (approximately 153 blocks long). Thus, I was forced to recode nearly 35% of the game from scratch (e.g. from memory). Once I completed the new version of Apse, I placed it up on the web for others to download and enjoy (I made a point to remove all of Smurf Village and replaced it with a "Golden Elf village", for copy- right reasons; everything else remained the same). But the game wasn't an exact copy of the original, because some of the room descriptions also had to be rewritten from memory (as did the sprite definition of the title "WESTFRONT"). Although the sprite title of "WESTFRONT" had to be redrawn, the exterior surface map sprite was (thankfully) still preserved on a separate programming disk. I included that into the new edition of Apse. After much research, I determined that the dreaded Save-With-Replace bug was to blame for both files being corrupted (and thusly, overwri- tten). It was a long held practice of this programmer to type the comm- and 'SAVE"@0:[program name]",8' at the end of each programming session. After eight months of saving the same program over and over again, you can quite imagine the errors this produced on disk. The final chapter in the "Westfront to Apse" story has yet to be written. Currently, three of my programming disks believed to contain traces of the original, completed game have been sent to the Action- Front Data Recovery labs in Santa Clara, California. I also included a 1571 disk drive manual along with the diskettes (in order to better explain the unusual GCR format -- Group Code Recording -- of most Commodore formatted diskettes). Although I am not confident of full data recovery, I am hopeful that at least some remants of data are recoverable by ActionFront. UPDATE: July 24, 2005: Recovery of disks: 0% Reason: Would cost me many thousands of dollars and may not even be possible. Synopsis: Although ActionFront Data Recovery Labs was unable to recover any data on the three Commodore disks I sent them, I would definitely recommend them to others if they have disks or hard drives which need extensive data recovery. They went out of their way to ensure that my case was examined closely, and determined that because I had already formatted over the data (especially due to the unusual nature of the GCR format), that not much could be done. Even if data recovery of such an extensive amount were possible, I was informed it would cost many thousands of dollars. Short of formatting over old disks from a bygone era, I think ActionFront Data Recovery can recover most anything else and would highly recommend it to other Commodore users. Signed, Paul Panks dunric@yahoo.com