Welcome to Zip 2000! ==================== Zip 2000 is a Standard interpreter (Revision 1.1) for Z-code programs. In plain English, that means if you want to play Infocom interactive fiction, or games written with the Inform compiler, this is the program for you. Features include: * Full support for Version 1,2,3,4,5,6,7 & 8 games. * Full conformance to Graham Nelson's "Z-Machine Standards Document", Revision 1.1. * Complete Blorb version 1.1 support. * Graphics support. * Colour support. * Timed-input support. * Sound support. * Mouse support. * Menu support. * Full function key/cursor key/keypad support. * Full foreign language support, including runes and Unicode. * Easily adjustable screen size. * Full use of anti-aliased outline fonts. * Line editing & command recall. * Quetzal-format save files. * Full alpha-compositing, dithering and gamma correction for PNG pictures. * Multiple UNDO. * High speed - the fastest Z-code interpreter for RISC OS. * The best-looking Z-code interpreter on any platform. What's Z-code? -------------- In the dim and distant past, when one could buy more than one type of computer, a certain company that wished to produce interactive fiction wanted to come up with a portable game file that could be played on any number of microcomputers. So they invented an imaginary computer called the Z-machine, which ran an imaginary language called Z-code. They then compiled their games for this machine, and effectively wrote a Z-machine emulator for each computer they wished to support. This program is a Z-machine emulator for RISC OS. With it you can play any Infocom game and games (or programs - the Z-machine isn't limited to games) produced with Graham Nelson's Z-code compiler "Inform". How do I play an Infocom/Inform game, then? ------------------------------------------- First, find your story file. Infocom games are most readily available in the form of the "Lost Treasures of Infocom" packages. Buy the PC version, then copy the .DAT and .ZIP files (Version 1-5 games are usually .DAT, version 6 games .ZIP) onto your hard disc (or a RISC OS floppy). Give them more sensible names, and set their type to "Z-Code". Then, just double-click on your chosen story file. For Version 6 games (Arthur, Journey, Shogun, Zork Zero), you require the ".MG1" IBM graphics file. These may not have been included in the Lost Treasures packages, but the missing files are available from the IF-archive (see below). Give them the same name as their corresponding Z-code file, and place them in !Zip2000.Resources.Graphics. Alternatively the MG1 file can be renamed to "Graphics" and placed in the same directory as the Z-code file. A large number of Inform-produced games can be downloaded over the Internet. Undoubtedly the best source for all things interactive-fiction related is the IF-archive, at www.ifarchive.org. Two of the best freely-available games are "Curses" by Graham Nelson, and "Christminster" by Gareth Rees. Games are generally archived with the extensions ".z5", ".z8" etc. Download them, and set their type to "Z-Code". Then, double-click away. Z-code programs were formerly given (unofficial) filetypes 061-068 (Z-Code1 to Z-Code8) indicating which version they were. The extant versions are: Versions 1 & 2: Used by very early Infocom games; of historical interest only. Maximum file size of 128K. Version 3: Used by most Infocom games. Only supports simple text displays, with limited split- screen support. Version 4: Full support for split-screen operation, custom status lines and real-time input. Text effects (italic etc.) added. Maximum file size increased to 256K. Version 5: Added support for undo, colours, multiple fonts, real-time input, and the mouse. Version 6: Radically overhauled the screen model, adding multiple windows and graphics. Also increased the maximum file size to 512K. Versions 7 & 8: Long after the death of Infocom, these were invented by Graham Nelson. They are exactly the same as Version 5, except internal changes allow larger game files. (512K in both cases). They are a way of creating large games that doesn't involve handling all the extra complexities of Version 6. The old filetypes are now deprecated, as an official filetype (11A) has been allocated for Z-code programs. You can find out the version of a story file (regardless of its filetype) from Zip 2000's "About this file" dialogue box (see below). What do I do with a Blorb file? ------------------------------- Blorb is a standard for packaging a Z-code story file together with its sound and graphical resources. On other platforms, Blorb files are given the extension ".blb". On RISC OS, the filetype should be set to Blorb (17B). If the Blorb file contains the Z-code, you can just treat it as a standard story file, and double-click on it to start it. If a game has separate Z-code and story files, the Blorb file can be either: 1) Called "Blorb", in the same directory as the Z-code file. 2) If the Z-code is "games.MyGame", the Blorb is "blorb.MyGame". or 3) Placed in !Zip2000.Resources.Blorb, with the same name as the Z-code file. These locations are searched in that order. If a Blorb file is found, Zip 2000 will not look anywhere else for its sound or graphics files. What widgets does Zip 2000 have? -------------------------------- Well, for starters you can alter the screen size while running. This might cause some games to get a bit confused, as they may only check the screen size when loaded/restarted. Version 6 games are given a hint that the screen size has changed, so they may refresh themselves automatically. I would suggest you find a screen size you like then use the Choices dialogue box to save it. The four Infocom V6 games are optimised for 80x25 displays. You can also choose which fonts to use for display. Any text already on the screen may become wrongly aligned when you change font, but any new text will be OK. The font you choose as your "fixed-space" font _must_ be fixed space, or the screen display will go awry. Some odd fonts (such as System.Fixed) will not produce nice results, as they are somewhat differently aligned to most other fonts. If you have a game that uses unusual accented characters, you should select an appropriate font, then select the correct alphabet from the Alphabet menu. Some fonts can provide a number of alphabets. Trinity.Medium, for example, provides Latin1, Latin2, Latin3 and Latin4. Others will provide a fixed alphabet - you should tell Zip 2000 what alphabet your font provides by selecting the appropriate alphabet. I recommend that you turn on horizontal sub-pixel anti-aliasing up to 12pt in Configure for a higher quality display. The window border can be turned on and off using the "Border" menu item on the Style menu. A full-screen option is available from the Style menu. Full-screen mode doesn't change the display size or screen mode; you can do this separately. Full-screen mode requires Window Manager 3.98 or later to work correctly. The Choices dialogue box contains a number of options: Quick loading: Don't pop up a "The story is loading" message while loading the file. Pause on exit: When a game quits, wait for a keypress before closing the window. You might find some games tend to print lots of text, then quit. Turn this on if you want a chance to read it. Show caret...: Normally the caret is only shown while inputting a line of text. Turn this on to also show the caret while waiting for a keypress. (Does not affect V6 games, which are able to turn the caret on and off themselves). Confirm quitting: Ask if you really want to quit the game when you close the window. Confirm Ask if you really want to overwrite saved game overwriting: files or command script files. Smart quotes: Try to turn the standard "sexless" quotes into open and close quotes intelligently, use fi and fl ligatures, and use em and en dashes where appropriate. Interpreter Nº: Some Infocom games behave differently depending on which machine they think they're running. This menu option allows you to change what Zip 2000 claims to be. Note that the games often only check this when restarted. For best results, I recommend keeping this set to 6 (IBM PC). Consecutive UNDOs:This option allows you to choose how many times you wish to be able to UNDO in succession. Each available UNDO will take typically 30K of memory. If you change this option, it will not take effect until Zip 2000 is reloaded. Note that games created with Inform (as of version 6/7 of the library) do not allow multiple UNDOs, so this feature currently only works with Infocom games. Stefan Jokisch's Frotz gets around this by having an UNDO "hot key", but I believe that this affects game balance - a game may not wish UNDO to be available in certain situations (eg Beyond Zork during combat). Therefore you will have to wait for the Inform library to be updated. Dithering: If you are running a graphical Blorb game, you have the option of turning on dithering. This should improve display quality, but at the expense of speed, and possibly memory. Update often: Normally Zip 2000 will not update the window after every single picture plot in a V6 game, as this can be a significant performance hit. Turning this on will make it update the window after every DRAW_PICTURE or ERASE_PICTURE operation. Default colours: Choose your default screen colours here. At the moment, this will usually not take effect until the game is restarted. The Save button saves these options, plus any other options set elsewhere. The Files... button brings up the file choices dialogue box, described below. The Utilities menu currently contains three options. "Claim F12" sets whether Zip 2000 claims F12 and passes it to the game, or ignores it and lets the Wimp bring up the command line. "Line editing" enables the line editing feature - you can use the left and right cursor keys to move the cursor within the line. If this option is enabled, the game will not receive the left and right cursor keys if they are pressed during line input. This should not normally be a problem. The line editing keys Zip 2000 responds to with line-editing enabled are: Left, Right, Shift-Left, Shift-Right, Ctrl-Left, Ctrl-Right, Delete, Backspace, Copy/End, Ctrl-Copy/End, Ctrl-U With line-editing disabled, you can only use: Delete, Backspace, Ctrl-U "Command recall" enables the command recall feature - use the up and down cursor keys to recall previous lines of input. If enabled, the game will not receive the up and down cursor keys if they are pressed during line input. This might cause a problem in some games - Beyond Zork being a case in point. "Keypad functions" selects whether the numeric keypad is used for number entry or as a set of special "function keys". In some games, for example Beyond Zork, the keypad can be used to move you around if this option is enabled. The "About this file" dialogue box is slightly unorthodox. It shows the release number and serial number of a game file, plus its Z-code version. Any information stored in a Blorb file's "SNam", "(c) ", "AUTH" and "ANNO" chunks is also shown. The size shown is the size of the story data (excluding any trailing garbage), together with the size of the Blorb file, if any. Where do saved files go? ------------------------ Z-code programs can produce four different types of file - saved games, transcripts, command recordings and auxiliary files. The way each of these is handled can be customised in the File choices dialogue box. The central location for saved games is !Zip2000.Resources.SavedGames. The central location for auxiliary files is !Zip2000.Resources.Files. Either of these can be overridden by modifying the appropriate system variable in Zip 2000's !Run file. The other location options should be self-explanatory. If the "Prompt for filename" option is deselected, then Zip 2000 will not prompt the user for a filename - it will just use the default location and leafname. If the "Use Save dialogue box" option is selected, then rather than prompt textually, a standard RISC OS Save as box will be displayed. At the textual prompt, filenames entered are relative to the default directory. You can press F2 to open that directory (whether loading or saving), and F3 to bring up a Save as box (if saving). You can also navigate the menu tree to bring up the Save as box. After a successful load or save, the filename used is remembered, and becomes the default for that file type for the rest of the session. Note that files will only be saved at the game's request - this will normally be as the result of an input command or menu selection. Similarly, you can normally only load files when requested by the game. When requested, you can drag a file of the appropriate type onto the game window. For saved games only, you are also able to double-click on the saved game file - if a game is waiting to load a saved game then it will try to load that file, otherwise a new copy of Zip 2000 will be started. You can also drag a saved game file onto the game window at any time. Note that some games may not function correctly if a saved game file is loaded when not prompted. As a handy short cut, clicking with Adjust on the icon bar icon will open the default saved game directory. You mentioned sound support. How does this work? ------------------------------------------------ Modern Z-code games will come with, or packaged in, a Blorb file with the sound effects. See above for details. Only two of Infocom games support sound: The Lurking Horror, and Sherlock. You will need to ensure you have a version of the game that supports sound - release 221 for The Lurking Horror, and release 26 for Sherlock. Patches are available at www.ifarchive.org to convert any version of an Infocom game into any other version. The sound effects for the two games are available at www.ifarchive.org packaged as Blorb files (courtesy of yours truly). This version of Zip 2000 no longer supports the original Infocom sound files. You mentioned mouse support. How does this work? ------------------------------------------------ You click on the window. This will only work if a game states that it wants to use the mouse in its header. The only games that I know of that use the mouse are Beyond Zork, Zork Zero, Shogun, Journey, Arthur, and my own SameGame. I notice that Zip 2000 puts the full title of a game into its title bar. How do they do that? --------------------------------------------- By cheating. The file !Zip2000.Messages contains a full list of all known Infocom games, plus some Inform ones, matching release/version numbers (as shown by the About this File box) to full names. You may feel free to add new games to this file. Also, a Blorb story file may give its own name, which Zip 2000 will use if available. Version 6 notes --------------- The original Infocom games' graphics frequently use colours not well approximated by RISC OS' default 256-colour palette. Therefore for best effect, you should ideally play in a 32 thousand colour mode, or turn on dithering if you have Blorb versions of the graphics. A few visual glitches occur in Zork Zero and Journey. This is the result of Infocom not properly taking account of the effects of proportional fonts (eg measuring the width of a string to centre it, but switching to bold _after_ it's measured it, because it assumes a piece of bold text is the same length as the same text in roman). Other mistakes are probably mine. The screen bitmap is stored either as a 640x200 or 640x400 sprite in 256, 32 thousand or 16 million colours, depending on the current screen mode when Zip 2000 is loaded. This does not change until Zip 2000 is reloaded, so if you change from a square pixel mode to a rectangular pixel mode (or vice versa), or change colour depth, you should start Zip 2000 again. Zip 2000 is not bright enough to turn off the border if you start a Version 6 game in a 640x480 mode, so you will lose part of the display. You can turn it off manually (and save this choice if you wish). What standards does Zip 2000 conform to? ---------------------------------------- 1) Zip 2000 aims to be an accurate Z-machine implementation, as per the Z-Machine Standards Document, Version 1.1. To support Unicode characters, Zip 2000 will allow you to select a font + an "alphabet" setting. The alphabet selects a mapping table, to tell Zip 2000 what Unicode characters &80-&FF in the font correspond to. (&00-&7F are assumed to correspond to ASCII/ ZSCII/Unicode characters &00-&7F). Some RISC OS fonts, such as Trinity.Medium, can provide multiple alphabets, and will switch as you change the alphabet setting. Others provide only one alphabet, so you must select the correct alphabet to tell Zip 2000 what that alphabet is. To teach Zip 2000 about a new alphabet, just create a mapping file and place it in !Zip2000.Resources.Encodings. Zip 2000 is not capable of handling bidirectional text, combining characters, or languages with unusual formatting rules. 2) Zip 2000's save files are in the standard Quetzal format. This means you can transfer your saved positions to and from other Quetzal-supporting interpreters. Previous versions of Zip 2000 used two other formats (an uncompressed format from version 1.00 to 1.14, and a Frotz-like compressed format from 1.15 to 1.29). This version will no longer load these. 3) A new format for packaging sound and graphics for Z-code programs has been defined, called Blorb. Zip 2000 fully supports this format, except that JPEG graphics chunks only work on RISC OS 3.6 or later (or if you have the JPEG SWIs otherwise available). Zip 2000 also understands Infocom IBM .MG1 graphics files, as described above. How much do I pay you for this wondrous program? ------------------------------------------------ Nothing, unless you particularly want to. Zip 2000 is freeware. So, like, what's the history of this thing? ------------------------------------------- Version 1.00 (17-Nov-95) ~~~~~~~~~~~~~~~~~~~~~~~~ First public release. Conformance to Graham Nelson's proposed Standard 0.2 (15-Nov-95). Version 1.01 (20-Nov-95) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: File size now extracted from header. Bugs fixed: When the screen size was changed, the game wasn't told. When games exited, anything printed since the last new-line wasn't displayed. Conformance improvements: random 0 (randomise RNG) was not implemented All sorts of screen handling stuff fixed, in particular: Buffering in upper window on V4 and earlier. Initial cursor position in V4 and earlier. Character wrapping when buffering off. Style changes in upper window being passed to lower. erase_window -1 & -2 sorted out. The illegal command SOUND_EFFECT (no parameters) caused a crash. It now simply beeps. Version 1.02 (22-Nov-95) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: You can now choose whether the caret is displayed while waiting for a character. Function keys F1-F11 now always claimed - F12 is toggleable. Quitting behaviour overhauled. Command recall part of line editing implemented. Smart quotes, ligatures and dashes. Conformance improvements: Accented characters are now correctly lower-cased when put into input buffer. Backspace now returned from read_char (this was an omission from revision 0.2 of the Standard). Foreign quotes (« and ») swapped - a mistake in revision 0.2. Interrupt routines were being called with the timeout as a parameter. Return is now passed to the game as code 13, rather than 10 - this is required by Bureaucracy. Version 1.03 (23-Nov-95) ~~~~~~~~~~~~~~~~~~~~~~~~ Bugs fixed: Memory was often lost when a game using sound was quit. Repeated sounds didn't work properly in V5. Conformance improvements: Sound callback routines implemented - Sherlock's sounds now operate correctly. Delete input code changed from 8 to 127. Version 1.04 (27-Nov-95) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Sound data now stored in a dynamic area, rather than the module area. Official filetype allocated. Selectable fonts. Paging system removed to speed up interpretation (it was broken anyway). Various other optimisations made. Bugs fixed: The save opcode was not correctly implemented in V4 - it was not possible to save on many V4 games. Text was often a couple of pixels out of line in upper window. Some upper window flicker removed. Nasty memory corruption fixed - printing a complicated line of text (lots of style changes) would mangle the game's dictionary (if you were lucky). The size of a Version 7 game was wrongly read from the header for the purposes of the verify opcode, and in a number of other places (although note that Inform 5.5 also puts the wrong size in the header - these bugs would cancel each other out for V7 games less than 256K). Conformance improvements: The return value of the read opcode was -1 (rather than 0) if it was terminated by a time-out. The nop opcode was not implemented (!). The get_cursor opcode was not implemented. Trapped divide by zero errors nicely. Now more rigorous trapping writes outside the dynamic area. Tokeniser revised - it was being over-clever. [MORE] prompts improved. set_font 0 wasn't implemented. Alternate alphabets can now be changed at run-time. Fourth parameter of print_table was not implemented. Characters 0 and 13 in text did not behave as specified. Mouse position was only updated on clicks. It should now be possible to write a doodling program (!). Version 1.05 (28-Nov-95) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Prototype (text-only) version 6 support. Sufficient to get Zork Zero going in a basic sort of fashion. Version 1.06 (30-Nov-95) ~~~~~~~~~~~~~~~~~~~~~~~~ Bugs fixed: Version 3 games didn't take account of the status line when deciding when to print "[MORE]". Beeps made slightly quieter (they were somewhat louder than the standard VDU 7 beep). Game file no longer kept open while playing. Conformance improvements: Mid-line font changes, and changes of the fixed-space header bit handled better. This includes a major word-wrapping overhaul. Output stream 1 couldn't be turned on and off in mid-line. [This trick is used at the start of Zork Zero so that the initial letter A is a fancy graphic on screen, but output as normal to a transcript. Interestingly, though, Infocom's IBM interpreter also gets this wrong.] Version 1.10 (13-Dec-95) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Full Version 6 support, including graphics and menus. Word-wrapping wraps on hyphens. Performance improvement by removing unnecessary 16-bitness. Can choose what type of computer Zip 2000 claims to be. Sound files split into directories inside Resources.Sounds. Will also look for sounds in a "Sounds" directory alongside the game file. Window border can be turned on and off. Default text colours selectable. Bugs fixed: READ_MOUSE slightly corrupted memory. Couldn't transcript to "RAM:Fred". Various problems with the caret fixed. For example, Zip 2000 wouldn't let the input focus escape while you were playing Freefall. Error handling improved. The window will be forced to a suitable size for the current screen mode when Zip 2000 is loaded. Conformance improvements: Mouse buttons weren't handled correctly. Slight end-of-paragraph wordwrapping glitch fixed. Two changes following a newsletter distributed by Graham Nelson: Version 7 respecified - V7 games produced with Inform 5.5 will no longer be playable. Some foreign characters added (OE ligatures, plus Spanish inverted ? and !). Accented characters sometimes incorrectly terminated a line of input. Version 1.11 (18-Dec-95) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Another slight performance improvement by removing unnecessary 16-bitness. Bugs fixed: The primary colours were in the wrong order in V6. Font 3 (runes and character graphics) came out half-height in a high- resolution mode in V6. Newlines due to a character wrap weren't sent to the transcript. Conformance improvements: ERASE_PICTURE wasn't implemented. SCROLL_WINDOW with a negative number of pixels wasn't implemented. The line count wasn't reset to zero when a window was cleared (so it would say [MORE] too early). The line count wasn't incremented on a character wrap (so it would say [MORE] too late). Byte-sized properties weren't implemented in V4+ - this may have affected Shogun, Journey and Zork Zero (they were never used by Infocom in V4/5 and aren't used by Inform). Journey had problems with its menus due to COPY_TABLE not working in the way it expected. A temporary fix has been made until the correct behaviour in V6 has been investigated. (If you found yourself stuck at the river with a choice of "Return", "Return", or "Return", this is why). Version 1.12 (20-Dec-95) ~~~~~~~~~~~~~~~~~~~~~~~~ Bugs fixed: Buffer wasn't flushed before output redirection enabled. This mis-aligned Zork Zero's function key definitions screen. Lines sometimes character-wrapped instead of word-wrapping (character wrapping occurred 1 pixel before word wrapping). Version 1.15 (15-Jan-96) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: More efficiency improvements. Saved games are now compressed (they're now typically 10 times smaller). Graphics rendering approx 450% faster, thanks to more intelligent use of the PICTURE_TABLE opcode. Multiple UNDO. Line input vastly improved: line editing implemented, V6 editing much tidier, now limited to window width. "Line editing" option split into "Line editing" and "Command recall". "Confirm overwriting" option added. "Smart quotes" option added. You can press Escape to cancel a load/save. You now get a friendly message if you attempt to load a saved game belonging to another game. "The story is loading..." message restored to V6 games. Main window regains the input focus after you've finished with the choices dialogue box. Bugs fixed: Character wrap problem in V6 totally eradicated. Sound crashes fixed. Zork Zero's map of Antharia would kill Zip 2000 (it couldn't cope with cacheing a picture twice). Conformance improvements: Behaviour of COPY_TABLE revised for all versions. Input buffer was incorrectly terminated by a zero-byte in V5+; TOKENISE could not cope with an unterminated text buffer in V5+ - this affected Journey. A number of small problems with input routines fixed. Recording, scripting and playback improved. Command script files now store timeout information, terminating characters and mouse co-ordinates. SOUND_EFFECT 2 now low-pitched instead of high-pitched. DRAW_PICTURE now takes co-ordinates as signed (the view from the top of the Sunset Tower in Journey did not appear because of this). Handling of header over restores and restarts made more rigorous. Input line now redrawn if a timeout routine prints something. Version 1.16 (15-Jan-96) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Tokeniser made more efficient (code borrowed from Frotz). [MORE] prompt appears 1 line earlier after a READ, to stop your line of input disappearing off the top of the screen. Bugs fixed: The "new improved" command replaying didn't work properly. Replayed commands with terminating characters did not display correctly. Replayed commands had a spurious newline after them. V6 smart quotes were broken in version 1.15. Version 1.17 (18-Jan-96) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Large overhaul of the Z-machine "CPU". It is now almost totally 32-bit internally, resulting in far more effective use of the ARM. In a quick benchmark, a prime-finding routine that took 3 minutes 13 seconds in Zip 2000 v1.00 now takes 1 minute 30 seconds. (This also shaved 3½K of code off v1.16). Bugs fixed: Newlines printed while buffering was off didn't increment the line counter. Line counts after a READ tweaked again. Version 1.18 (23-Jan-96) ~~~~~~~~~~~~~~~~~~~~~~~~ Conformance improvements: INPUT_STREAM 0 wasn't implemented. Bugs fixed: Confirm overwriting didn't work properly. If command recall was used during a filename prompt, Zip 2000 would crash. Zip 2000 now crashes somewhat more gently(!) Version 1.19 (28-Jan-96) ~~~~~~~~~~~~~~~~~~~~~~~~ Bugs fixed: Used to abort with a "Buffer too short." error when run on a machine with Doggysoft's "NewerLook" installed. The last word separator (usually " in Infocom games) was not picked up. Version 1.20 (10-Mar-96) ~~~~~~~~~~~~~~~~~~~~~~~~ General improvements: Memory usage reduced for non-V6 games. The game data and stack now placed in a dynamic area (primarily to aid the experimental Infix debugger). Central instruction dispatcher hand-crafted in assembler for speed (the aforementioned speed benchmark now takes 1 minute 10 seconds). Bugs fixed: If you had one of Zip 2000's menus up when you quit Zip 2000 (by typing QUIT in the game), the desktop would collapse. This is thanks to a bug in the current version of the Toolbox. Menus are now closed just before quitting, as a work-around. Doesn't reset the current sound voice to WaveSynth-Beep after playing a sound effect. Version 1.21 (20-Mar-96) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Font 3 not loaded until required. Conformance improvements: Text margins are no longer reset when a window was cleared. Cursor now confined within margins when using SET_CURSOR. Bugs fixed: PICTURE_DATA now responds correctly when asked about a non-existent picture. Now copes correctly with text windows that are not a whole number of lines high (eg in Shogun while exploring Osaka). V6 text width measurements were broken for anything other than Roman text. The last space of a line would sometimes overflow the right margin. Version 1.22 (03-Apr-96) ~~~~~~~~~~~~~~~~~~~~~~~~ Bugs fixed: RESTART didn't work properly in version 1.21. Version 1.23 (03-Oct-96) ~~~~~~~~~~~~~~~~~~~~~~~~ New feature: Keypad can now be made to act normally, instead of being treated specially. Version 1.24 (29-Aug-97) ~~~~~~~~~~~~~~~~~~~~~~~~ Bug fixed: Beyond Zork used to crash nastily at a certain point (no spoilers here.) This crept in in version 1.17, and is, strictly speaking, a bug in Beyond Zork. Now worked around. Version 1.25 (20-Oct-97) ~~~~~~~~~~~~~~~~~~~~~~~~ Bugs fixed: Didn't act on Message_PaletteChanged. Keeps clear of the icon bar when opening windows. Version 1.30 (22-Jul-98) ~~~~~~~~~~~~~~~~~~~~~~~~ Conformance improvements: Updated to version 1.0 of the Z-Machine Standards Document. Now saves and loads Quetzal-format save files. New features: Selectable alphabets. Released as freeware. General improvements: Much stricter regulation of memory accesses - never used to fault writes outside dynamic memory, for example. Version 1.31 (04-Aug-98) ~~~~~~~~~~~~~~~~~~~~~~~~ Conformance improvements: Will play Blorb story files. Currently only supports Audio IFF sounds. Will show boxes for PNG graphics. RANDOM -n (for n < 1000) now seeds the random number generator as suggested in the Standard. Screen model for V6 shaken up - screen is now 640x400 Z-pixels; this makes more sense for Blorb graphics games. GET_PROP_LEN 0 now returns 0. Shogun seems to require this. Bug fixes: Any Unicode characters outside the Latin-1 range would get garbled if printed in the upper window. Data aborts, etc, were bringing up a garbled error message. General improvements: File information dialogue box extended to show Blorb auxiliary information. Default choices tweaked slightly. Version 1.32 (23-Aug-98) ~~~~~~~~~~~~~~~~~~~~~~~~ Conformance improvements: Checks that an external Blorb file belongs to the Z-Code file. Gets the game name from the Blorb file. Displays PNG graphics in Blorb file. Bug fixes: Versions 1.30 and 1.31 didn't work if Font Manager 3.36 or earlier was in use. Parameters to ERASE_PICTURE now treated as signed. Wasn't looking in ^.blorb.GameName for Blorb file. A drag in the main window resulted in a superfluous click event. RESTORE_UNDO was not updating the internal frame counter used since Quetzal support was added - the main effect of this was that if you UNDO after death, a subsequent save would fail. Font selection in 1.30 and 1.31 was rather intermittent. General improvements: Uses system variables called Zip2000$Dir, etc. instead of Zip$Dir. Double-clicking on save files now supported. "Update often" and "Dithering" options added. No longer uses a dynamic area unnecessarily. Version 1.33 (24-Aug-98) ~~~~~~~~~~~~~~~~~~~~~~~~ Conformance improvements: In version 1.32 the colour number stored in the window properties for non-standard colours was unpredictable. Now always &FF. Bug fixes: Version 1.32 would frequently crash when saving the game. Switching reversed text off in V6 would sometimes set the wrong colours. Version 1.40 (07-Nov-01) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Full-screen mode. Uses the SNam chunk of Quetzal files to report which game a save file belongs to if an attempt is made to load it into the wrong game. Conformance improvements: Handles 64-byte properties. Updated to full Blorb 1.1 support, including MODs, SONGs and JPEGs (see the standards chapter above). Sounds are declared unavailable if no Blorb MOD, SONG or AIFF chunks are found. Non-ASCII characters now handled in menus. Text colour selection expanded to Amiga range (three shades of grey). Upper window can now occupy full screen (not clear from Z-spec whether this is legal, but useful for totally upper-screen based programs). PICTURE_DATA 0 now stores the number of images, rather than the highest numbered image, and branches depending on whether pictures are present. Bug fixes: Didn't handle AIFFs with their SSND chunk before the COMM chunk. Gamma tables weren't initialised if a Choices file didn't exist. Menu n can now be created if menu n-1 doesn't exist. Window no longer jumps off screen or gets stuck undersized. General improvements: Recompiled to be 32-bit compatible (except for the included DataVox and QTM modules). Screen size can be adjusted in V6. More critical routines hand-crafted in assembler, using global register variables for speed. A prime-finding benchmark came down from 2 minutes 4 seconds to 1 minute. This had seemed like an idle pasttime at first, but Inform-generated games are getting ever more processor-intensive, and I have seen games that still have a visible response delay on a StrongARM. Optimisation to V6 redraw speed that will primarily improve operation on pre-RISC OS 3.6 machines in 8bpp modes. Will hold multiple samples in memory if loaded with SOUND_EFFECT X 1. Uses the device claim protocol to claim the sound system. Sound scheduling improved. Uses flex memory for graphics, reducing total memory usage. Cached sounds and graphics will be discarded in the event of memory exhaustion. Menu tree can stay intact when contents change. File save location can be modified. Attempts to move the cursor outside the current window now faulted politely (the first time) and constrained; for pre-V6 the status window will be stretched. Text colour greys now gamma-adjusted. Other changes: As part of the performance optimisation, this version will no longer load old pre-Quetzal saved games. Infocom sound files are no longer supported. Blorb versions of the effects for the Infocom games are available from www.ifarchive.org. ZipSave$Path changed to Zip2000Save$Path. Version 1.41 (21-Nov-01) ~~~~~~~~~~~~~~~~~~~~~~~~ New features: Totally overhauled file handling system. Backtrace button added to warning and error boxes. Conformance improvements: Now loads V1 and V2 saved games correctly. Buffer flushed before WINDOW_STYLE. Character size window property and header fields now updated in line with current font and style. SPLIT_WINDOW now repositions cursor correctly in V6. Bug fixes: Stylised text now handled (a lot) better during input. Terminated input transcripting fixed for V6. General improvements: Sets screen border when in full-screen mode. Screen redraw optimised and flicker reduced in non-V6 mode. Consumes processor time a bit more forcefully when the Z-machine is thinking. This helps Silicon Castles to no small degree. Minor speed-up to PNG handling when no gamma-correction is required. Other changes: Now declares itself as interpreter version 'Z' (V5) or 200 (V6), to help distinguish itself from ZIP. Version 1.50 (14-Nov-09) ~~~~~~~~~~~~~~~~~~~~~~~~ Conformance improvements: Updated to version 1.1 of the Z-Machine Standards Document. SET_TRUE_COLOUR and transparency added. BUFFER_SCREEN added. Now clips text correctly within margins. Dictionary matching improved in V1 and V2. Indirect references to the stack no longer push/pull. ZSCII character 0 now ignored. ZSCII character 9 treated as a space in the middle of a line. Bold and italic availability now checked and reported. Reports mouse position outside window, but constrains pointer during drags. Don't recycle first 240 colour numbers. Bug fixes: Alignment of fixed-space and graphic font improved. In V6 windows buffering was ignored if wrapping was disabled. READ_MOUSE now correctly returns the current mouse status. Fix possible V6 screen corruption after save box opened. Handle unknown sound types (such as OGGV) better. Fix default location of auxiliary files - was often one directory too high. General improvements: Now handles system alphabet being set to UTF8. 32-bit QTM and DataVox modules supplied. Menu separator added between Zip 2000's menu entries and the game's. Transcript and recording output now line-buffered. Now checks that the executable chunk of a Blorb file is of type ZCOD. [MORE] prompt no longer appears unexpectedly soon after filename prompts. Reported mouse co-ordinates now absolutely precise. V6 programs requested to refresh the screen after font and alphabet changes. Own up, who helped you with it? ------------------------------- Well, by far the largest credit goes to Mark Howell, on whose Zip interpreter core this program was originally based. Many thanks, Mark. Graham Nelson made lots of encouraging noises as I sent him two new versions a day during early development. He also suggested all sorts of features, some of which have actually been implemented, and wrote the excellent Z-machine Standards Document to which Zip 2000 conforms (all 81 pages of it!). He also writes great test files! (Advert: Download your copy of Jigsaw today). Stefan Jokisch provided help with the sound support, and guided me through the Zip source. His list of Zip bugs was most helpful, inspiring many of the changes in versions 1.04 and 1.06. Versions 1.15 onwards have borrowed many ideas (and some code!) from his Frotz interpreter. Philip Banks wrote the excellent DataVox module that Zip 2000 uses to play sound effects. Music is handled using QTM: QTM (Q The Music) v1.41, 30th July 2006 © Steve Harrison 1993-2001 URL: http://www.listen.to/qtm/ Zip 2000 uses the PNG Reference Library: libpng version 1.2.40 - September 10, 2009 Copyright (c) 1998-2009 Glenn Randers-Pehrson (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) URL: http://www.libpng.org/pub/png/libpng.html The PNG Reference Library uses the zlib compression library: version 1.2.3, July 18th, 2005 Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler URL: http://www.zlib.net/ The Quetzal save file format was created by Martin Frost. The Blorb resource format was created by Andrew Plotkin, and Zip 2000 uses his Blorb library: Blorblib version 1.0.2 Designed by Andrew Plotkin URL: http://www.eblong.com/zarf/blorb/index.html Are there any bugs^H^H^H^H unexpected features? ----------------------------------------------- If you play Beyond Zork, with a non-standard colour set (eg white on blue), on a machine with RISC OS 3.5, in a 32-thousand colour mode, you will notice that the character graphics' colours don't match. This is a limitation of RISC OS 3.5 (not a bug). I could work around it, but it's probably not worth the trouble. RISC OS 3.6 is fine. The colour selection in the Choices dialogue box will generally not take effect until the game is restarted. Changing the font may cause the current input line to become a little confused. This will be cured when you press Return. Smart dashes don't work as well in V6 as in other versions. JPEGs only work on RISC OS 3.6 or later (or if the JPEG SWIs are otherwise available, such as if you have the new version of SpriteExtend supplied with Acorn Browse). SpriteExtend (at the time of writing) only supports baseline JFIF JPEGs - so progressive or multi-scan images will not work. Ogg Vorbis support for Blorb 2.0 is not implemented. And where can I contact you when I find more "features"? -------------------------------------------------------- My e-mail address is kevin@bracey-griffith.freeserve.co.uk. My physical location is: Kevin Bracey, 5 St. Paul's Walk, CAMBRIDGE CB1 2EX The Zip 2000 home page is: http://www.bracey-griffith.freeserve.co.uk/Zip2000/ Please, please, please, please, _please_, let me know of any bugs you find, or any suggestions you have for future versions. Licence arrangements -------------------- Zip 2000 is Copyright 2009, Kevin Bracey. It may be freely distributed, providing you distribute the whole application directory unaltered, including this file.