home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer 3.9 / 1997-12_Disc_3.9_No._1.bin / ZGI_DEMO / TXTGAMES / ZTUUWIN / WinFrotzReadme.txt < prev    next >
Text File  |  1997-08-28  |  22KB  |  401 lines

  1. -----------------------Special note to Activision readers----------------------
  2.  
  3. ZorkTUUWinFrotz is a special version of the WinFrotz Interpreter.
  4.  
  5. If you are downloading this in connection with the Activision giveaway of
  6. Zork: The Undiscovered Underground, it is quite easy to get it up and
  7. running. Here are the steps - 
  8.  
  9. 1) First, make a directory on your hard drive to contain the game (using 
  10. Explorer, open a hard disk and right click the mouse in an open area of the 
  11. window, then select New->Folder). Name the folder anything you like, maybe 
  12. "ZorkTUU".
  13.  
  14. 2) Extract the following files:
  15. ZorkTUUWinFrotz.exe
  16. ZorkTUUWinFrotz.hlp
  17. ZorkTUUWinFrotz.cnt
  18. ZTUU.z5
  19.  
  20. to the directory.
  21.  
  22. 3) Just double-click on "ZorkTUUWinFrotz.exe" and it will automatically load Z:TUU 
  23. for you! WinFrotz has many configurable options, if you don't understand what
  24. some of them do, just hit F1 and the help file will clarify it.
  25.  
  26. Keep in mind that WinFrotz can be used to play a lot more than just Z:TUU.
  27. There are MANY free text adventures similar to the Zork series out there for 
  28. you to enjoy. You can read the rest of the paragraphs below to find the place
  29. to get downloads of these works of interactive fiction.
  30.  
  31. The latest version of WinFrotz is always available from
  32.  
  33. http://www.cris.com/~Twist/WinFrotz/
  34.  
  35. There are also links from that page to find other adventures, and various 
  36. interactive fiction stuff.
  37.  
  38. Regarding the help file, there are a few known links that are currently not working:
  39. 1)     Under Commands select File Menu, Save, RecordingTranscripts  
  40. 2)     Under Commands select Edit Menu, Paste Link (Edit Menu Commands)
  41. 3)     Under Commands select Edit Menu, Insert New (Edit Menu Commands)
  42. 4)     Under Commands select Edit Menu, Object (Edit Menu Commands)
  43. 5)     Under Commands select Edit Menu, Links (Edit Menu Commands)
  44. 6)     Under Commands select Record Menu  WinFrotz Help Index
  45. 7)     Under Commands select View Menu, Graphics, V6, Graphics 
  46.     (Version 6 [Graphics] Games)
  47. None of these should prevent you from enjoying WinFrotz or the new Zork Text Adventure.
  48.  
  49. As a final note please keep in mind that Activision does not produce WinFrotz,
  50. they are simply including it as an easy way to play their new adventure. If
  51. you have questions/comments concerning WinFrotz itself, you should direct them
  52. to rich@kesmai.com (or any of the other e-mails listed later in this document).
  53.  
  54. Thanks, and have fun with the first new Zork text adventure in many years.
  55. -Rich
  56.  
  57. ------------------------------THE IMPORTANT STUFF------------------------------
  58. WinFrotz 2.22 R4.5
  59. by Rich Lawrence
  60. (Windows code (c) 1997 Rich Lawrence, Frotz (c) 1995-1997 Stefan Jokisch)
  61.  
  62. WinFrotz is a Win95/NT native version of Frotz, the Z-machine emulator from
  63. Stefan Jokisch. Stefan's code was in turn based on Mark Howell's Zip but long
  64. ago ceased to resemble that code. My work was in creating the code particular
  65. to the Windows version(s). The goal in creating WinFrotz was to make a
  66. Z-Machine emulator that was as close to perfect in it's support of the 
  67. standard possible,and still take advantage of it's 32 bit Windows environment.
  68. It has been tested on Win95, 95 R2 (OEM), Memphis, NT 3.51, and NT 4.0. I no 
  69. longer program in, nor have any desire to touch with a ten foot pole, Win 3.X.
  70. Source code is available for anybody who wishes to attempt a port (unlikely).
  71.  
  72. WinFrotz will play interactive fiction files, including the Infocom 
  73. adventures, that can contain text, sounds, and graphics. Other interactive
  74. fiction files can be obtained for free from ftp.gmd.de in the directory
  75. /if-archive/games. (Note: Do NOT download these with a web browser, they may
  76. not work. Use an FTP client)
  77.  
  78. I can be reached at the following emails: rich@kesmai.com, KesmaiRL@aol.com,
  79. 71101.2272@compuserve.com. It is likely that for some time WinFrotz will be in
  80. continual development; as I don't have the steady time required to get 
  81. everything done. Feel free to e-mail me with questions, comments or bug 
  82. reports. I maintain a WinFrotz page at http://www.cris.com/~Twist/WinFrotz/
  83.  
  84. WinFrotz is free, as my contribution to the interactive fiction world. Have 
  85. fun. If you happen to have an old Infocom boxed game or novel lying around
  86. you don't want, contact me and I'll take it off your hands, more than enough
  87. compensation for my time.
  88.  
  89. FEATURES:
  90.     - support for V1 to V8 games
  91.     - emulates CGA, EGA or MCGA for V6 (graphical) games
  92.     - various color and font display modes
  93.     - timed input ('Border Zone')
  94.     - command line editing and history, alias system
  95.     - small save files (Zip 2.0 format is still understood)
  96.     - switches for colour setting
  97.     - switch for setting the Tandy bit
  98.     - low- and high-pitched beep sounds
  99.     - sound effects via Windows wave device ('Lurking Horror' and 'Sherlock')
  100.     - cheat/debugging functions
  101.     - multiple UNDO (via hot key, even for old V1 to V4 games)
  102.     - input line recording and playback (via hot key/menu)
  103.     - underlined, reverse and boldface text displayed as font or special color
  104.     - fast performance despite Windows GDI
  105.     - high resolution font support including anti-aliased on hicolor displays
  106.     - Text scrollback buffer to review recent output
  107.     - copy and paste support (copy is through through scrollback buffer)
  108.  
  109. SPECIAL KEYS: (Frotz DOS & OS/2 keys supported)
  110.     Alt-A             - alias menu (also Options/Alias)
  111.     Alt-D             - debugging menu (Options/Debugging)
  112.     Alt-N             - new game (restart) (File/Restart)
  113.     Alt-P             - turn on input line playback (File/Open/Recording)
  114.     Alt-R             - input line recording on/off (File/Save/Recording)
  115.     Alt-S             - set the random seed
  116.     Alt-U             - multiple UNDO (even for old V1 to V4 games)
  117.     Alt-X             - exit game (quit)
  118.  
  119.     Ctrl-A      home              - move to beginning of line
  120.     Alt-B       ctrl-cursor left  - move to previous word
  121.                 ctrl-cursor right - move to next word
  122.     Ctrl-B  or  cursor left       - move one character to the left
  123.     Ctrl-D      delete            - delete character below cursor
  124.                 ctrl-delete       - delete word below cursor
  125.                 insert            - toggle overwrite mode on/off
  126.     Ctrl-E      end               - move to end of line
  127.     Ctrl-F      cursor right      - move one character to the right
  128.     Ctrl-H      backspace         - delete character to the left
  129.                 ctrl-backspace    - delete word to the left
  130.     Ctrl-L      scrollback        - view scrollback buffer
  131.     Ctrl-N      cursor down       - get next command
  132.     Ctrl-P      cursor up         - get previous command
  133.     Ctrl-T                        - transpose characters
  134.     Ctrl-U      escape            - delete whole input line
  135.  
  136. ----------------------------THE SEMI-IMPORTANT STUFF---------------------------
  137. Z-machine emulation functional differences in WinFrotz from DOS Frotz:
  138.  
  139. * WinFrotz does not yet support the graphical font of Beyond Zork. If somebody
  140. with a font editor wants to make this for me, that would be helpful. E-mail me
  141. first.
  142.  
  143. * WinFrotz can resize to a variety of configurations on the fly (but see the 
  144. "limitations" section for some constraints)
  145.  
  146. * WinFrotz allows for a large combination of font/color display styles that DOS
  147. Frotz cannot, including different fonts for the status/display windows.
  148.  
  149. * See the section "Graphical differences" for an overview of V6 games and how
  150. they behave.
  151.  
  152. LIMITATIONS:
  153.  
  154. * To copy text, you must do so from the scrollback buffer. Pasting directly
  155. into the input line works. For a discussion on why a text map (a required
  156. piece of a cut/copy system in Windows) does not work well with the Z-Machine,
  157. see the propeller head section at the end of this document.
  158.  
  159. * The status window must be fixed width (WinFrotz will enforce this via the
  160. font selector). This is unavoidable due to the way the Z-machine works.
  161.  
  162. * Some games will break in display geometry if you have a different status 
  163. font chosen than the display font. To make these games work, select the SAME
  164. font for Display and Status. These errors are rare.
  165.  
  166. * In addition, some version 4+ games behave quirky about the status window, 
  167. especially when it is resized on the fly. For instance, A Mind Forever Voyaging
  168. and others won't print past the 80th character no matter what size the screen 
  169. is. Many V5 games sample the screen width AT THE TIME THEY ARE STARTED and 
  170. accept that as the permanent width for the entire session. To help enforce
  171. this, WinFrotz will not let you resize a window to an area that is _smaller_
  172. than the existing status line width in V5 games. This is not an issue in V3 or
  173. before games, the status bar will grow or shrink to fit whatever width you 
  174. select. (The Z-Machine was never written for dynamic resizing. Getting it to
  175. work at all was something of a miracle, trust me).
  176.  
  177. * It is part of the design of the current Inform libraries to not print to the
  178. last character position of the status area, hence Inform games will usually
  179. have a dangling space at the end. This was done to support some older
  180. interpreters and will likely be removed in later libraries.
  181.  
  182. * The following games are not supported in this release:
  183.   Beyond Zork        Graphical font doesn't exist.
  184.   It is my goal to get it working with a later version.
  185.  
  186. GRAPHICAL DIFFERENCES (version 6 games):
  187.  
  188. The first and most obvious difference for WinFrotz from regular Frotz is that
  189. WinFrotz runs in larger resolutions than Frotz. Frotz's resolutions were
  190. 320x200 for MCGA, 640x200 for CGA and EGA. WinFrotz scales these to a minimum
  191. of 640x400 and a maximum of 1280x800 in integral multiples. WinFrotz handles
  192. internally the odd aspect ratios of CGA and EGA.
  193.  
  194. These larger resolutions were required to make the display bearable on a
  195. typical Windows desktop (I run 1280x1024 myself, and running at 320x200 didn't
  196. sound so great). Another benefit of the increased area is the ability to show
  197. real fonts instead of the blocky low-res ones provided by the original display
  198. modes.
  199.  
  200. In general the Z-Machine programs appear to handle the increased display area
  201. fairly well (of course, part of that is that WinFrotz does a convincing job of
  202. lying about the dimensions of the pictures so they will fit properly). It
  203. became obvious early on though that non-integral screen sizes weren't going to
  204. work in most games (Journey can cope somewhat, not the others) so WinFrotz
  205. limits you to reasonable choices as listed above. Even so there are a number
  206. of assumptions in the original Z-Machine programs that can cause problems
  207. (see Specific Game Oddities). The window size is "Locked" for the entire
  208. duration of a V6 game.
  209.  
  210. In MCGA mode with an 8-bit Windows display and running a V6 game, I was unable
  211. to get the proper default background color (dark grey) to work and had to
  212. settle for black. No matter how I put this color in the palette and forced it
  213. as the background for text with SetBkMode(), text printed over it was always
  214. opaque-style with a black background. Other background colors work (like blue).
  215. I don't know what's causing this, and I've largely given up trying to figure it
  216. out. It works under 16bit or higher display modes; use those.
  217.  
  218. Another difference from Frotz is the way colors are handled. Obviously I can't
  219. go around switching to 'MCGA' or 'CGA' mode, so I have to emulate them by
  220. creating Windows palettes (when applicable). In CGA mode, WinFrotz just draws a
  221. two-color display in your chosen user foreground/background colors. CGA
  222. graphics actually aren't that bad. In EGA mode I create a palette with roughly
  223. the EGA default colors (these were hard to find!) since Infocom never used the
  224. "copious" 64 colors EGA was capable of. EGA graphics look really poor. Believe
  225. it or not, EGA Arthur is supposed to look exactly that bad.
  226.  
  227. MCGA mode is a little more tricky, as it allows rotating the palette to any 
  228. combination of 16 colors. In 8-bit displays I can actually do this (rotate the 
  229. palette) with equivalent Windows calls. In 16 or 24-bit Windows modes there are
  230. no equivalent functions; as there is no palette. However this never surfaced as 
  231. real problem; the only place this is noticed is in Arthur, where the background
  232. graphics pattern will change color moving from location to location under 8-bit
  233. modes but not under 16-24-32 modes. It's debateable which was the more desired
  234. effect in any case. On the plus side under 24-32 modes I can use the true RGB
  235. values in the Infocom palette; not the lumin crippled variants of MCGA. If
  236. you're really hung up about the background in Arthur not being exactly right
  237. you can force it to redraw with the command "REFRESH". Unfortunately this is 
  238. destructive to text that is in the scroll box so I can't force it every input.
  239.  
  240. Side note: if anybody ever gets crazy and writes a new V6 adventure game, 
  241. WinFrotz can support up to about 200 colors on 8-bit displays and 255
  242. on 16-24-32 (using the old MCGA graphics format).
  243.  
  244. Graphics are slightly slower than they could be, as I use constructed on the
  245. fly DIBs and StretchBlts to place them (with two Blts required of course for
  246. transparencies; hurray for Windows). It was never really a problem on even my
  247. slowest test machine.
  248.  
  249. -----------------------------SPECIFIC GAME ODDITIES---------------------------
  250. (Send me new notes for this section via e-mail and I will include them)
  251.  
  252. A Mind Forever Voyaging
  253.   Does not print past the 80th character in the status area. This is a hard
  254. coded assumption in the original Z-Machine program.
  255.  
  256. Bureaucracy
  257.   The registration form (at the very beginning of the game) will not work well
  258. if you select a status font that is dissimilar in size when bold versus
  259. standard print. An example of a font that DOES work well is Courier and its
  260. variants. This is not a WinFrotz error; back then fonts were always the same
  261. size :-).
  262.  
  263. Border Zone
  264.   Does not handle status areas > 80 chars wide correctly. It works, but there
  265. will be holes in the coloring. This is a bug in the original Z-Machine code.
  266.  
  267. Zork Zero
  268.   In EGA/MCGA and under 8-bit displays, Zork Zero can fudge the background 
  269. color it displays certain text with. This is because it attempts to read the 
  270. pixel color from the screen, and Windows itself will make errors when doing 
  271. this from a palettized color. I'm looking at ways around it; for now run it in
  272. 16/24-bit color and it works fine.
  273.  
  274. Zork Zero EGA
  275.   Sometimes the icons used for introductory letters or to show which area you 
  276. are in will be overprinted/cropped off. This is due to a hard coded assumption
  277. about the ratio of the graphic to the font. Try using a different font size;
  278. usually making it slightly bigger fixes this problem.
  279.  
  280. ---------THE NOT TERRIBLY IMPORTANT BUT YOU'LL READ IT ANYWAY STUFF-----------
  281. Credits:
  282.  
  283. Everybody owes Stefan a huge debt for writing the original Frotz, making it so
  284. complete and stable, and releasing the code publicly. If that code base had not
  285. existing I never would have taken on WinFrotz, because I would have known I 
  286. couldn't get it done in the limited time I have to spend on it.
  287.  
  288. Christopher J. Madsen did the OS/2 port of Frotz, was willing to fill in for 
  289. Stefan who isn't available for some time due to his service year, and runs the
  290. Frotz page at http://www.geocities.com/SiliconValley/Heights/3222/frotz.html
  291. He also makes a nifty keen mapping utility very useful for adventure games
  292. called GUEmap; there are links to it from his page above.
  293.  
  294. Graham Nelson wrote Inform, gives it away, and made Z-machine emulation a 
  295. surmountable task by codifying the Z-machine standard document.
  296.  
  297. Many thanks to the beta testers of WinFrotz who sent in quite a flurry of bug
  298. reports helping me to get it polished up. It is a tribute to the participatory
  299. nature of IF fans that I had so much help. 
  300.  
  301. ---------------------------THE PROPELLER HEAD SECTION--------------------------
  302. Some programming stuff:
  303.  
  304. WinFrotz works by detaching the Z-machine (basically everthing Stefan wrote,
  305. plus os-dependent I/O code for Windows) as a seperate thread. The primary UI and
  306. display task maintains the window, refreshes, gets keystrokes, and all that 
  307. regular Windows jazz. The Z-machine literally runs in it's own world, going to
  308. sleep any time there isn't pending I/O (on a multi-processor machine WinFrotz
  309. will distribute :-) ). It's an exceedingly simple model with the only IPC 
  310. requirements being some state recognition and a keyboard buffer, both of which
  311. I just used globals for (the lazy approach, but there was no need for semaphores
  312. really).
  313.  
  314. I realized early on that proper, complete support for the Z-machine spec and 
  315. an ability for a scrollback, cut/paste type display were damn near mutually
  316. exclusive. The Z-machine allows for arbitrary changing of fonts (within a 
  317. word), color display, and graphics positioned anywhere on the window. Sure, 
  318. you're thinking CRichEditView. I actually have it semi-working for an offshoot
  319. I intend to make (see the WinFrotz beta page). But try printing a fixed font
  320. status bar at the top of a CRichEditView window. You can do that, but not as 
  321. part of the RichEditView itself. The part that killed me was dynamic resizing 
  322. of the status area, which is supposed to happen with transparency over the 
  323. primary display (window 0 to the Z-machine). For example, in Curses the 
  324. following occurs the first time the player types "inventory":
  325.  
  326. --------------------------------
  327. | status area window           | This is roughly the display geometry when the
  328. -------------------------------- player is allowed to input the inventory 
  329. | display area blah blah       | command.
  330. | blah blah blah               |
  331. | etc                          |
  332. |                              | 
  333. |                              | 
  334. |                              |
  335. --------------------------------
  336.  
  337. -------------------------------- 
  338. | status area window           | The status area window becomes larger after
  339. |                              | the command is entered, displays text that 
  340. | display area blah blah       | overlaps part of the primary window (win 0)
  341. | blah blah blah               |
  342. | etc                          |
  343. -------------------------------- 
  344. |                              | 
  345. |                              | 
  346. |                              |
  347. --------------------------------
  348.  
  349. --------------------------------
  350. | status area window           | The status window is then RETURNED to it's  
  351. -------------------------------- previous dimensions. The window size for the
  352. | display area blah blah       | status window is now actually smaller in the
  353. | blah blah blah               | y-axis then the bottom of the text it 
  354. | etc                          | displayed in the step immediately above. The 
  355. |                              | user is then allowed to input again.
  356. |                              | 
  357. |                              |
  358. --------------------------------
  359.  
  360. Basically this is depending on a persistence effect to drawn text that would 
  361. be impossible with CRichEditView. The Z-machine windows aren't "windows" the 
  362. way Windows itself would think of them. In a refresh condition on the above 
  363. display, you would probably sensibly write a routine that would refresh to the
  364. constrants of the status window at the time of refresh and ditto for the 
  365. primary window. However the primary window now has content that was _never 
  366. printed to the primary window_, it was printed to the status window (when the
  367. status window happened to be sized to overlap the primary window). A text-
  368. based refresh routine wouldn't be able to deal with this case.
  369.  
  370. So, I draw everything I'm doing on a bitmap (a common Windows technique from
  371. way back) and at refresh time just draw the bitmap. To have significant
  372. scrollback on a bitmap would chew up lots of memory - for simplicity I'm using
  373. GDI calls on non-palettized DDBs. Now, since I can't use EditView (text only,
  374. no color) or CRichEditView (text only unless I start messing with OLE stuff
  375. <shudder>) that means I get no edit controls from the display - I'd have to do
  376. 'em all myself.
  377.  
  378. I still might, actually. I'd need to keep a map of the bottom pixel of each
  379. line of text on the bitmap and the text in the lines themselves of course (ever
  380. notice in a RichEditView when you change font sizes the entire line is resized
  381. and smaller fonts are bottom-justified on that new size? Now you know why).
  382. Then when the user holds down LBUTTON you grab his Y position, scroll down the
  383. list of lines until you find the one he's on (remember each line might be a
  384. different size), and then go through the same process more or less for X 
  385. dimension. Then you get to start inverse coloring everything to show the
  386. selection etc...it's not something I'm salivating to do. But I might do it, and
  387. give about a screen or two of scrollback.
  388.  
  389. A much easier approach is sacrifice compatibility in the above instances and 
  390. just depend on text only in the main window - no persistence from overlapped
  391. status windows etc. Then you CRichEditView, do a bunch of funky tricks to keep
  392. the user from editing the story text (I've already done it, works) and there 
  393. you go. I'll probably release that as my scrollback and cut/paste version.
  394.  
  395. HELP with HELP:
  396. I don't like my .HLP file much, so I doubt anybody else will. It takes a truly
  397. amazing amount of time to write a help file, and that's the one commodity I
  398. don't have. If anybody would like to volunteer to rewrite the help file
  399. properly, email me at the specified addresses above. You must have knowledge
  400. of how to write an RTF help file and working knowlege of WinFrotz and
  401. interactive fiction.