Hugo Change Log
---------------

To do:
------


v3.1.03 - 5-Jan-05
------------------
- Windows - fixed improper shared resizing/moving behavior affecting
 in-game windows
- Windows - hetalk.cpp's speech_speak_status wasn't being obeyed
 for overriding speaking status window text
- Pocket PC - fixed "..." button to bring up in-game context menu first,
 then user-selected word menu
- GetVal() was incorrectly saving local variable undo information
- objlib.h - added DoPutIn before rule to component class

v3.1.02 - 18-Jan-05
-------------------
- verbstub.h - added CheckReach calls to relevant stub verbroutines
- hugolib.h - added FINDOBJECT_NONLIVING flag for better ParseError phrasing
- Linux - improved packaging for binaries
- Pocket PC - screen positioning problem if started with keyboard showing
- Pocket PC - properly uses program directory for PocketHugo.settings
- hemisc.c - fixed FileIO() path generation for file reading/writing
- hugolib.h - >GET UNKNOWN FROM X no longer mentions the unknown object
- Pocket PC - added LoadDefaultCESettingsFile() in addition to
 LoadCESettingsFile() to fix loading/saving setting files
- Pocket PC - LoadDefaultCESettingsFile() moved from LoadRegistryDefaults()
 to SetupCEWindow()
- Pocket PC - fixed improper system() time value in hugo_gettimeformatted()
- Pocket PC - addressed minor graphics corruption with image display
- Palm - fixed failed crash on long resource names
- MAX_RES_PATH now used in heres.c; defaults to length of 255
- Pocket PC - properly handles changes in screen orientation under Windows
 Mobile 2003
- Windows - SetClientDimensions() explicitly called in WinMain()--to avoid
 potential wrong startup behavior under WinCE

v3.1.01 - 18-Sep-04
-------------------
- change fcolor, bgcolor, icolor, default_bgcolor to explicit 'signed char'
- fixed font-size-related linespacing issue with wxWidgets ports (Mac/Linux)
- hemisc.c - sanity check in Printout() for mismatched font heights
- increased default initial window size for wxWidgets ports
- Windows - 04-Jan-05 update:
- Windows - changing colors screws up background of first-printed line
- Windows - debugger's "Code" window not showing up properly

v3.1 - 7-Aug-04
---------------
- herun.c - added 'isxverb' argument to Perform calls for v3.1 and later
- hemisc.c - SetupDisplay() sets default fore/back colors properly
- Windows - getline_active toggled for menu-selected Restart
- compiler - put back '-e' switch for expanded error format
- various - hugo_scrollwindowup() doesn't call TB_Scroll() for sub-line
 lineheight values
- hemisc.c - added contingency TB_AddWord() call to Flushpbuffer()
- Windows, BeOS, Mac, Linux - improved client resizing behavior
- Palm - cached WinHandle for push/pop draw state in RunDialog()
- BeOS - MediaView.cpp - video playback fix using wildcard rowbytes
- Windows - fixed spacing/linewrap issue for bold fixed printing
- hemisc.c - added pre-scrolling PromptMore() check
- Palm - saves context menu, command-input font, scrollback for AutoResume()
- Windows - wndCompassProc calls RedrawWindow(wndMain) when moving compass
- heparse.c - enhanced behavior of disambiguation calls within MatchObject()
 where multiple objects are used (resulting in multiple pobjcount)
- hccode.c - proper resolving for, e.g., "if RoutineName = val1, val2..."
- heset.c - fixed bug in:  array[n] |= value
- herun.c - RunGame() now checks for blank ('""') parsestr before setting
 parseerr
- compiler - options no longer explicitly list -25 switch
- herun.c - input color always defaults to fcolor if no 3rd arg is given
- Windows - MikMod always uses wndMain for DirectSound focus via hwndMikMod
- various - updated hugo_splitpath() functions to sanity-check extension
 for empty filename
- Win32/WinCE - improved Unicode support
- hcbuild.c - 'break' can also cause 'Statement will never be reached'
- hemisc.c - PromptMore() sets background more intelligently, before
 pausing (where appropriate)
- Windows - better mousewheel and scrolling behavior in child windows
- MatchObject - calls ParseError(6) for unmatchable object at start of
 command instead of ParseError(2)
- hdwin.c - greatly optimized textgrid redraw for Windows debugger
- hugolib.h - fixes to tall-style listing of objects
- Mac, Linux - MikMod_Update() now may be called from a thread to avoid
 blocking on disk i/o
- debugger - better maintenance of dbnest for JUMP_T
- Windows - implemented proper Copy functionality for debugger windows
- debugger - RunRoutine() properly resets dbnest _before_ BREAK_T stack pop
- debugger - EnterSearch() no longer always puts found search at top
 of window
- Windows - debugger was getting confused switching to game screen with
 scrollback active
- hugolib.h - fine-tuning of identical_class and ParsePluralObjects
- hugolib.h - added ImplicitTake and ImplicitTakeForDrop
- herun.c - prevented multiple listing of local variables in debugger
- Windows - additional update calls for debugger when switching between
 game/debug screens to keep displays up to date (hdnewwin.c)
- heparse.c - MatchObject() disallows improper >GET ALL OBJECT, etc.
- heset.c - fixed wrongly calculating af_addr in GetAnonymousFunction()
- library - test implementation of USE_CHECKHELD
- Palm - temporary fixed-font workaround for 1.5-density displays
- hccode.c - fixed comma-separated conditionals for long initial comparison
 value constructions in CodeLine()
- heobject.c - proper setting of complex property breakpoints (before/after)
- hdmisc.c - fixed shared allocation of non-routine-name strings in
 RoutineName()
- heparse.c - already_got_multicheck to account for grammar that mixes
 multi and non-multi tokens
- hemisc.c - In-text newlines set fcolor/bgcolor just in case--mainly
 in case a PromptMore() comes after a color change but before Printout()
- hemisc.c - SetupDisplay() uses 16/17 instead of DEF_FCOLOR/DEF_BGCOLOR
- Palm - fixed possible initial input text buffer offset in hugo_getline()
 (caused by hugo_scrollwindowup() from hugo_print())
- hugolib.h - better handling of "again" in Parse so >I. G. doesn't loop


v3.7.07a 8-Feb-04
-----------------
- Windows - changed installation to Inno Setup; David Kinder noted a couple
 of issues installing as a non-admin user on multiuser NT machine


v3.0.07 15-Jan-04
-----------------
- Palm - should accommodate nonstandard display sizes (like Sony Clie) better
- Palm - now gives an error when restoring settings if none are available
- Windows, Mac, X11, BeOS, PocketPC - option for graphics smoothing using
 bilinear filtering of resized images
- Windows - compiler front-end now uses WaitForSingleObject()
- hccode.c - proper error on 'print capital; ...'
- hcwin.c - properly accommodates pathnames with spaces
- hewin.c - processes WM_EXITMENULOOP to redraw corrupted video post-menu
- Windows - front-end dialogs properly scroll horizontally for long filenames
- Windows - fixed build structure for third-party libraries in 'lib' folder
- Windows - added SAPI 4.0 speech support to engine/debugger (with thanks to
 David Kinder)
- Windows CE/Pocket PC port ready for release
- Windows - option to turn off speaking in statusline window
- Palm - fix to hugo2pdb by Chris Tate - for the recently shipped PalmOS 6,
 games may have to be reconverted to PDB format
- Glk - fix to hugo_settextpos() adding glk_window_clear() by Simon Baldwin
- Mac - QDFlushPortBuffer() in HECanvas::Update() to speed OS X updating
- Glk - graphics display capability added (at least in XGlk) by Simon Baldwin
- Palm - FldDelete(fieldP, 0, MAXBUFFER) changed to non-debug-warning
 FldDelete(fieldP, 0, FldGetTextLength(fieldP)) by Chris Tate
- heparse.c - MatchObject() recursive call now utilizes better adjective-noun,
 etc. disambiguation
- Mac - fixed lockup in wxMac's macnotify.cpp
- Mac - recompiled libmikmod to address sporadic audio-related crash
- hugolib.h - added found_in property to plural/identical classes
- heparse.c - >OOPS IT wasn't working properly - added another call to
 library Parse() after oops-handling
- hugolib.h - last single object preferred for final disambiguation
- Windows - added progress bar and Cancel button to compiler front-end
- Palm - clean-up of sources by Chris Tate
- address_scale to change to 16 for v3.1-compiled executables


v3.0.06 - 27-Jun-03
-------------------
- hemisc.c - fixed font-changing bug in linebreaking code
- objlib.h - improvements to obstacle-finding algorithm for attachables
- objlib.h - renamed system routines for attachables for greater clarity
- hugolib.h - CheckReach now takes into account attached objects as reachable
 (as do objlib.h's AttachObject and DetachObject)
- hdmisc.c - fixed retrieval of routine names for upper-range packed addresses
- Palm - put additional "..." for context menus at bottom of menu
- heparse.c - "all" (actually TryObj()) now only considers nameable objects
- heparse.c - better built-in ambiguous ParseError for multiple Parse() calls
- Palm - turning off colors (in engine options) should make everything black
 on white--unless colors are statusline defaults
- Palm - default game .PDB size changed back to 4K
- Palm - much more highly optimized memory management for substantial
 performance improvement
- hemisc.c - Printout() tweaked to avoid spurious [MORE] prompts
- Palm - games should load and run on devices with as little as 2 MB of RAM
- Palm - added progress bar for extended file operations
- Mac - fixed mis-centering of initial window
- engine - fixed undoing of setting object.property, which was broken in the
 previous version (in RunSet())
- Windows - fixed "key-sticking" problem in hugo_print() (due to PM_NOREMOVE
 combined with processing key messages)
- Windows - attempted to reduce unnecessary CPU usage in hugo_getkey() and
 video playback
- engine - all 'system' calls now flush the printing buffer
- engine - fixed non-printing bug for printchar ' ' (ASCII 32)
- hemisc.c - fix color-bleeding problem in AP() when breaking a line
 with mixed colors over a [MORE] prompt
- hemisc.c - 'script' command wasn't checking for file-overwrite
- MatchObject() - "but", "except", etc. not allowed for xobject parsing
- MatchWord() - tweaked setting of domain from pobj to objlist[0]
- heparse.c - better engine handling of "all", etc., with AddAllObjects()
- heparse.c - fixed case of no grammar match in directed command
 trying to find speaking twice
- Mac - fixed startup window positioning
- wxWindows - updated Mac and Linux to compile with wxWindows 2.4.0 stable
- Windows - rewrote and optimized JPEG renderer
- BeOS - realigned JPEG and video renderer placement algorithms
- Windows, BeOS, Linux, Mac - fixed linefeed background coloring
- debugger - fixed potential output overwrites by using debug_line
- MatchWord() - if verbroutine unknown at xobject disambig., figure it out
- hugolib.h - modified DoLook to list container/platform contents, by default
- 32-bit DOS port rebuilt with updated djgpp; now works with Windows XP
- Mac OS X - command-line development tools now linked for OS X 10.2
- Windows - improved buffering for faster text rendering
- Palm - fixed setting of input (i.e., field) colors
- Windows - better buffering of text on Windows side for printing
- heparse.c - additional disambiguation check for clarification question
 where a single entered word equals a single object's name
- debugger - runaway_counter properly reset when for multi-command input
- hugofix.h - added parse_rank monitoring (in tandem with FindObject)
- MatchObject() - added initial disambiguation clarification disqualification
- hugolib.h - FindObject() tweaks parse_rank for certain verbs + attributes
- engine - inlined memory accessors for speed
- hebuffer.c - fixed buffer reading of cells with non-ASCII characters
- hcbuild.c - fixed crash with inheriting multiple comma-separated classes
- objlib.h - much improved reflexive-pronoun handling
- heset.c - array[n] |= val wasn't setting the element properly
- verblib.h - DoGo now checks "You'll have to get up first" earlier
- heset.c - fixed assignment of anonymous functions for non-properties
- Linux - Alex Butcher submitted a patch for building against wxGTK2.4
 on Red Hat 8.0
- resource.h - fixed PictureInText for hopefully better bottom-of-screen
 alignment
- compiler - fixed array definition with error in size identifier
- Windows - engine/debugger - improved MRU file list management
- hemisc.c - Max Cotin found a bug with trying to print Cyrillic
 characters
- Windows - also fixed a bug with printing non-Latin-1 characters
 in proportional font
- Windows - non-fast-scrolling was jerky for intermixed text/graphics
- hugofix.h - added a "check articles" capability to the HugoFix library
- heexpr.c - parse$ and string$ weren't being properly evaluated as
 standalone values
- heparse.c - fixed condition where "and", etc. used in an xobject
 wasn't getting flagged
- simple return statements are now tail-recursive on the runtime side
- Windows - fixed a bug where a sample would try to play despite sound
 being disabled
- icons redone for cross-platform consistency
- 'word' in grammar now sets object_is_number
- hugolib.h - added NewParseError to allow selective error replacement
- hemisc.c - Printout() plays nicer with RunWindow() and font changes
- hemisc.c - further AP() print optimizations eliminate duplicate font
 changes
- hewin - unnecessarily updating before drawing a graphic--changed
 UpdateClient(true) to false in hejpeg.c
- compiler now reports missing brace at the start of the object/etc.
 instead of at end-of-file in DefOther()
- FindWord() improvements for faster dictionary searching
- Windows - fixed default font selection charsets
- Mac - changed package name to hugov30_macos.sit


v3.0.05 - 11-Dec-02
-------------------
- No longer building "v2.5" executables per se; COMPILE_V25 results in
 a version number like "v3.0.05 (2.5)"
- Windows - fixed flickering when video finished playing in fullscreen
- Windows - fixed async updating in hugo_playvideo() for XP
- Mac - Carbonized app now runs on both OS X and OS 9/earlier
- Windows - fixed changing of fonts in-game and font/line clipping
- hcres.c - sped up building of resourcefiles using TRANSFER_BLOCK_SIZE
- hemisc.c - AP() - fixed smart-formatting where a line begins with "--"
- Windows, wxWin (Linux and Mac), BeOS, Palm - changed so that Story
 menu functions Save, Restore, and Undo pass an actual "typed" string
- Windows XP - video disappeared when changing window size
- Windows - fixed off-by-one error on bottom of statusline during video
- provided a monochrome mode for ncurses-based debugger (for non-color
 terminals, such as xterm or OS X Terminal)
- hugolib.h - better (object-based) handling of pronouns (currently
 turned off because it doesn't yet work perfectly)
- hugolib.h - more sensible parser errors thanks to implementation
 of parser_status
- hugolib.h - moved SetupDirectionObjects from Perform into its own
 routine
- Windows - compiler front-end now behaves properly if the program
 location contains a space (such as "C:\Program Files\Hugo")
- Mac - proper color-selector widget
- fixed line-counting bug left over from text-rendering rewrite by
 adding currentline to SAVED_WINDOW_DATA struct
- added system(SYSTEM_TIME) call to engine (and resource.h)
- resource.h - GetSystemTimeValue(TIME_CONSTANT) added
- compiler - fixed BuildEvent() to correct local-variable count
 (causing improper local name display in debugger)
- fixed return-value bug when calling runevents from a property routine
- objlib.h - components have an additional built-in scoper that
 makes them known if their "parent" is known
- debugger - fixed stepping out of a routine call that was not originally
 stepped into
- debugger - saving/loading of additional preferences, such as runtime
 warnings and nesting formatting
- hugolib.h - changes to indent-overriding allowing ShortDescribe to
 override indenting completely (including AFTER_PERIOD)
- Mac - scrollback window
- debugger - 'runevents' wasn't being stepped over properly
- debugger - multiple matched blocks of a complex property weren't being
 stepped over properly
- herun.c - RunWindow() calls hugo_settextpos() at close instead of
 resetting current_text_y directly
- hugolib.h - tweaked disambiguation of pronoun vs. possessive "her"
- Windows - fixed all-at-once updating of input line with when
 override_update_client is true (for context menus)
- heparse.c - fixed ordering of word[] and wd[] restore after a
 disambiguation GetCommand()
- heparse.c - reset odomain = 0 in MatchCommand() after NextStructure in
 case a previous HELD_T or MULTIHELD_T grammar is found invalid
- hebuffer.c - fixed storing/retrieval of text cells with smart-formatted
 characters
- hepass.c, hedef.c - changes to when CreateResourceFile() is called in
 order to allow compiler directives within resource blocks
- compiler - can now report total number of files compiled
- wxWin - hugo_getfilename() uses wxOVERWRITE_PROMPT, making
 hugo_overwrite() redundant
- Mac - now has proper scrollback
- wxWin - fixed incorrect saving of some font information when font-chooser
 dialog is cancelled
- Mac - better font selector dialog
- Mac - added compass rose
- Mac - added support for video (AVI/MPEG) and MIDI/MP3
- Mac - changed default Mac type/creator for Hugo games to Hugo/HUGO
- Unix he/hd - fixed bug with pressing Delete at the end of an input
- Palm - fixed non-repainting of prompt when returning to game screen
- Palm - fixed field colors to use proper system defaults
- smart formatting option for both Palm and BeOS
- Palm - fixed text buffering of formatted text to correct display glitches
- Palm - changing default blocksize of game .pdb files to 32 kB improves
 performance up to 8 times, in places (with other optimizations)
- Windows - shell properly enters .hex file into Recent Documents
- heparse.c - properly account for property routines in ObjWord()
- engine - implemented obj_parselist to predetermine what objects have
 noun/adjective properties
- PalmHugo - fixed sizing of "..." button popup and memory leak for entry[0]
- engine - changed implementations of hugo_getkey() to allow proper
 reporting of values > 127 (Windows, Mac, Linux, BeOS, Palm)
- Windows - fixed encoding of application-specific "control characters" to
 not interfere with Latin-1 range on input
- compiler - fixed overflow crash with misplaced quotes in long lines of
 text (and other very long error lines)
- engine - MoveObj() always moves an object, regardless of whether it was
 already in the specified new parent (for reordering capability)
- heparse.c - various speed optimizations
- compiler - stricter checking of verb definition headers
- BeOS, wxWindows - needed to set getline_active = false after menu-based
 restart--otherwise a mouse-click wouldn't work on an initial [MORE] prompt
- fixed lingering DOS/Mac/Unix line-ending counting problem
- file i/o (readfile and writefile) now better constrained to the engine's
 program or user's home directory, where appropriate for OS
- wxHugo - fixed off-by-one error in updating
- heparse.c - substantial improvement to how MatchWord() and MatchObject()
 find the xobject--which also fixes a bug regarding trailing dict. words
- heparse.c - fixed end-of-MatchObject() disambiguation when speaking
 to a character and no valid object is found
- fixed stepping issues with debugger in RunRoutine() by setting
 debugger_interrupt = false if debugger_step_over is true
- RunSet() was sending the property length to SaveUndo() instead of the
 property element--Undo() takes care of resetting the length anyway
- compiler - added fatal error for end-of-file before #endif
- debugger - fixed decoding of readfile/writefile lines
- Palm - fixed bug with printing underlined fixed-width text
- Win32 - Windows port converted to Unicode
- Win32 - ported to compile under Windows CE (eVC++ 4.0/WCE SDK)
- herun.c - added #ifdef NO_STRFTIME for PalmOS, WinCE; moved OS-specific
 strftime() replacement(s) to hugo_gettimeformatted()
- Mac - added option to use Quartz text rendering on OS X (10.1.5 or later)
- Win32 - fixed additional non-updating bug in hevideo.cpp for XP
- Win32 - worked around the one-letter-printing effect after playing video
- heparse.c - generalized disambiguation for non-player actors
- hemisc.c - fixed a line-count bug due to a rounding error in AP()
- engine - added MINIMAL_INTERFACE system() constant for Glk, etc.
- various - fixed bug with scrollback text leaving old text at end
- hugolib.h - added activate_event and deactivate_event properties
 for fuses and daemons
- Mac - filetyper utility is now written in AppleScript


v3.0.04/v2.5.04 (22-Mar-02)
---------------------------
- BeOS - optimized pre-calculation of text spacing
- Win32 - fixed updating issues post-restart (after image drawing)
- debugger breaks now when a DebugMessageBox is displayed
- Win32 - skips mouse click as input when setting app focus
- hugolib.h - Parse now checks player.before:{player PreParse}
- added display.needs_repaint property (settable by the individual
 port depending on if the window is resized or otherwise changed),
 implemented on:  Win32, wxWindows (Linux), BeOS
- Win32 - added most-recent-files list to engine/debugger
- put a cap on adjectives in SetObjWord in hugolib.h to match
 MAX_MOBJ in heparse.c (which is set to 16 words in total:
 15 adjectives + 1 noun)
- removed useless #defines for 'and', 'or', and 'not'
- removed need for -fwritable-strings when compiling with gcc
- wxMac - fixed MikMod bug where a sample would only play when
 music was playing
- Windows, BeOS, wxWindows - added text buffer for selecting text
 from the display
- Windows, BeOS, wxWindows - key toggle for sound on/off
- BeOS - hugo_charwidth() was incorrectly returning FIXEDCHARWIDTH
 for a non-proportional FORCED_SPACE
- better boundschecking for objects in PropAddr()
- better writefile security:  only 8 character or less alphanumeric
 filenames are allowed (not extensions, path separators, etc.)
- hugolib.h - changed ListObjects to list for objects that are both
 containers _and_ platforms (for SuperContainer functionality)
- added a proper fullscreen mode to the Windows engine
- updated all Kent's ports (except 16-bit simple) to v3.0
- fixed FindObject in hugolib.h to only set best_parse_rank
 if the object was actually found
- heparse.c - MatchObject() now prefers Available() objects for an
 'anything' token
- added GAME_RESET system() constant which is set after an undo
 or restore
- heparse.c - MatchObject() now offers "Better start with a verb"
 when no object match is made at the start of the input, instead of
 "You haven't seen any..."
- added hcreset.c to compiler sources
- Windows - changed compass rose shortcut to Ctrl+C from Ctrl+M
- Windows -  wasn't properly updating if compass rose showing initially
- fixed stack depth handling of labels in complex property blocks
- BeOS - added override_updating for context commands and word selection
- Windows - removed second simultaneous DirectSound playback buffer
- Compiler properly handles Mac-format text files
- fixed rare inaccurate line offset (and vertical input-positioning) in
 Windows, BeOS, and wxWindows
- resource files can now contain > 17 MB of data each (actually now up
 to 2,147,483,648 bytes, or 2048 MB)
- BeOS - screen properly redraws before Quit confirmation dialog
- hugolib.h - better handling of negative parse_rank properties
- hugolib.h - fixed FindObject for dealing with DoGet and similarly
 named objects (where one or more may be held)
- objlib.h - cleanup to attachable class, particularly with regard to
 attach_take and detach_take
- debgger wasn't properly displaying routine names during player input
- herun.c - fixed getting property of return value of function, as in
 Function(arg).property
- Mac - wxHugo now properly launches a double-clicked game file from
 the Finder
- Palm - occasional (non-reproducible but speculatively explicable)
 saving crash should be fixed
- Windows - better handling of international character sets
- compiler no longer prints banner by default
- fixed line-spacing bug for mixed prop/non-prop fonts under Windows
- hcmisc.c - removed '-e' switch for expanded error format
- hcdef.c - better compile-time initialization (CheckInitializer())
- mouse clicks now set display.pointer_x and display.pointer_y instead
 of cursor_column and cursor_row properties
- parser now loads all recognized words into the word[] array, even if
 it encounters an unrecognized one
- Windows - nicer, thicker border for non-maximized game window
- Terminal ports where the rightmost column forces a linefeed now have
 TERMINAL_LINEFEED #defined; non-Kent ports now #define this for
 consistency in heheader.h.  This helps in managing non-proportional
 printing for GUI ports.
- he - fixes to AP() for correctly optimizing font changes mid-string
- hugolib.h - change to FindObject() for objects that are supposed to
 be in a specific parent being found available regardless
- Windows, Mac - optional smart-formatting for curly quotes, etc.
- hugolib.h - Parse() attempts to differentiate "her" pronoun from
 "her" possessive
- Windows - hejpeg.c only calls update when there's a scroll_offset


v3.0.01d/v2.5.03d (9-Sep-01)
-----------------
- Win32 - fixed proportional/underline printing broken in last release
- changed hugov25_win32_source.zip to hugov30_win32_source.zip
- fixed setting of 'full = 0' in GetCommand() to avoid unnecessary
 "[MORE...]" prompt
- BeOS - Made Alt+C do a copy, not bring up the compass in the
 scrollback window
- 'local n = <non-static value>' now gives appropriate compiler
 warning
- BeOS - hugo_settextwindow() was one pixel too tall (low)
- BeOS - fixed bottom boundary of displayed images, also
- BeOS - caret was left visible on menu restart/restore/save
- changed hemisc.c SpecialChar() constants to hex values
- removed em-dash (code 151) from SpecialChar() due to lack of
 cross-platform support
- Win32 - fixed misbehaving video playback after several plays
 by making dcMain local, not global
- Win32 - rewrote video playback subsystem in C++
- Win32 - fixed positioning of video window in async threaded
 (background) playback
- hugolib.h - Fixes to FindObject() for non-present objects
- heparse.c - Fixed final disambiguation bug in MatchObject()
 (added k--) to not skip over object post-SubtractPobject()
- Modified MikMod v2.09 to play WAV files with a RIFF 'fact' chunk
- BeOS - change to calculation of ao->trackTime in AudioOutput.cpp
- IMPORTANT:  Changes to PlayMusic and PlaySound in resource.h;
 Hugo programs using these will need calling arguments modified
- BeOS - fixed threading sync by adding quit_he_thread = true to
 HugoWindow::QuitRequested()
- PromptMore() now clears key buffer every time
- BeOS - removed redundant overwrite confirmation
- Win32 - fixed image scaling making maxheight or maxwidth < 0
- Win32 - fixed typing flicker during background video playback
- Win32 - async video playback waits for video to actually start
- hugolib.h - changed SetObjWord to skip "" for nouns/adjectives
- "hc <filename.hex>" (by accident) is no longer valid (as it would
 delete filename.hex)
- fixed compiling/handling of user-defined $complex properties
- removed Win32 DirectSound volume fiddling to try to increase
 cross-platform audio level consistency
- Fixed 'Syntax' lines to use argv[0], not "he" or "hc", etc.
- Fixed loading of some MODs in heres.c
- hccode.c - fixed potential buffer overflow with some errors
- Win32 - less updating when drawing multiple images in succession
- hc - successive block comments with no newline between wrongly
 caused an error
- Win32 - fixed potential crash when stopping a sync-started video
- BeOS - fixed intermittent off-by-one error in view updating
- hugolib.h - Parse() - added additional words for referring to
 it_obj, him_obj, etc.
- verbstub.h - Made verb default responses player-person agnostic
- BeOS - fixed an off-by-one error in picture.cpp's DisplayBBitmap()
- hemisc.c - better runtime error checking of $MAXDICTEXTEND
- BeOS - added file attributes for Title, Author, and Genre
- hc - changed error format from path(line): to path:line:
- header-guarded Hugo Library files
- better handling of property elements <= 0 in compiler, engine,
 and debugger
- BeHugo - remembers last save/restore folder
- fixed setting of override_full in the engine for 'input' and
 'pause' commands
- Win32 - fixed use of GetVersion() to only limit audio functionality
 for NT 4.0 and earlier, not 2000 or XP
- Win32 - cleaned up source packaging
- Win32 - DirectSound sample playback from resource file no longer
 needs a tempfile
- Win32 - DirectShow video playback from resource file no longer
 needs a tempfile
- changed wxWin source to register drivers individually, not
 RegisterAllDrivers(), to avoid loading drv_raw, etc.


v3.0.01c/v2.5.03c (22-Mar-01)
-----------------
- BeOS - changed "right-click" behavior for one-button mousers
- push MOUSE_CLICK even when Hugo isn't explicitly waiting for a key,
 and queue the mouse position for retrieval with MOUSE_CLICK
- tweaked text renderer to fix odd linebreaks with bold/italic fonts
- "local n = true" was initializing n = 0
- debugger's 'system' token output was improperly terminated
- added additional misusage compiler warnings
- better PromptMore() "[MORE...]" for BeOS, Win32, wxWindows
- compiler was dropping trailing ':' from multi-line strings
- fixed font/style changes getting lost across linebreaks
- compiler does better warning of illegal characters in source
- ports without Latin-1 charsets (DOS, curses, etc.) handle Latin-1
 characters better now
- compiler has better handling of unterminated strings in
 SeparateWords()
- fixed resolution of explicit 'parent' objects in MatchWord() and
 Available()
- 'resource' blocks can now specify more than one filename per line
- fixed compiler overflow on very long 'case' statements
- fixed potential STRINGDATA_T overflow in GetToken()
- BeOS - added sample_thread guard using sample_deleted
- a number of enhancements to the debugging library hugofix.h
- DOS - fixed handling of text style colors
- MAXUNDO can now vary between ports; only ports with the
 same MAXUNDO can restore undo data from save files
- Context menu commands ending in "..." now add a trailing space
- Kent's ports:  right mouse button during input is the same as left
 button (i.e., for a context menu)
- Kent's ports:  compilers now all updated to v3.0
- fixed heobject.c GetProp() so that display.hasvideo works properly
- Perform's queue argument is now set if "all" is used to refer to
 only one object
- Fixed problem with replacing objects/routines containing labels


v3.0.01b/v2.5.03b (12-Dec-00)
-----------------
- Glk - disabled PAUSE_100TH_SECOND
- hc - Fix nested case problem
- wxWindows - included optional SDL-based modifications by
 Torbjorn Andersson to hesound.cpp


v3.0.01a/v2.5.03a (12-Oct-00)
-----------------
- Unix - changed Alt+a for debugger menu to Alt+Space
- Unix - added "make clean" option to Makefile
- hc - fixed problem with inheriting complex properties
- BeOS - tweaked updating before/after video playback, and on 'pause'
- BeOS/Win32 - audited tempfile management--better usage and
 cleanup of resource cache tempfiles
- BeOS - fixed video.cpp and sound.cpp to use SubsetIO
- GetResourceParameters() in heres.c now calls strupr() on filename
 if it's a resource file (since these are forced to all-caps in
 the compiler)


v3.0.01/v2.5.03 (25-Jul-00)
---------------
- Consolidated v3.0/v2.5 code bases to remove v3.0's beta status
- he - "object.property #n is not attribute" caused runtime crash
- BeOS - stopped audible playback of MODs even when audio is disabled
- updated library to 2.5.03.1
- Compiler can now optionally produce an objectfile even with errors


v2.5.02a (6-May-00)
--------
- Win32 - now recognizes VK_APPS (the application menu key)
- Unix/BeOS - Compiler now properly parses @resource=... paths
- Better handling for command-line #settings; both case-sensitivity
 (in CompilerSet) and presets (ParseCommand)
- Fixed non-error on illegal use of 'number' token
- Fixed superfluous "...needs more than one parameter" compiler error
- Squashed elusive dropped letters in some printed strings
- Win32 - Alt+F4, and the close box verify before closing the engine
- Win32 - Last non-looping sample doesn't play when focus returns
- Safer array writing (and property values, object numbers, etc.)
- Built hes.exe (simple text-based 16-bit DOS engine) for use with
 speech software
- Win32 - fixed stray cursor behavior

v3.0 beta (May-June):
- Added background argument to 'video' statement to play a video
 clip in the background (looping, if desired)
- Also added volume argument to hugo_playvideo()
- Upgraded BeOS package to v3.0
- Win32 - fixed improper sizing of video frames


v2.5.02 (22-Feb-00)
-------
- Compiler's DefEnum() caused errors on explicit "enumerate globals"
 or "enumerate constants"
- BeOS - Added character-encoding selection option and full-screen mode
- In Kent's ports, a mouse-click now passes keycode=1 to
 hugo_keywaiting(); also sets display.cursor_column and
 display.cursor_row
- Also in Kent's ports, fixed hugo_getline() so that it doesn't
 call hugo_scrollwindowup() unless we're at the window bottom
- Glk - Half-fixed hugo_settextpos putting things off-screen with
 positioning based on display.screenheight and screenwidth
- Removed usage of global 'z' from both heheader.h and hcheader.h
 (meaning a fairly thorough rewrite of some sections)
- Rewrote heheader.h and hcheader.h for brevity and clarity
- Added better compile-time checking to property value syntax
- Occasional usage of a local __selectvar in compiling select-case
 for proper working of random(), ++, etc.
- Tweaked the debugger's runaway-loop watchdog to reset on 'pause'
 statements
- Snazzy new icons for BeOS, Win32, Unix, and whoever else wants them
- Fixed an array-element parsing problem in heexpr.c (with inobj)
- Fix so that positioning on the lowest line in a window clears the
 "MORE" prompt count
- Better compiler label checking in DefOther()
- Better compiler argument checking for built-ins (such as string()
 and dict()) in CodeLine()
- Fixed compiler error exit code reporting (for front-ends like
 hcwin.exe)
- wxWindows - Now links dynamically to libmikmod instead of statically
- Win32 - Context menus now track either mouse button
- "text to <array>" printing now always appends a terminating zero
 (without advancing the textto index)
- Win32 - v2.5 now uses old non-DirectSound audio; v3.0 currently and
 inexplicably needs a debug-built libmik.lib to overcome hissy
 DirectSound playback


v2.5.01f (9-Feb-00)
--------
(Released only for the Win32 package of Guilty Bastards)


v2.5.01e (7-Jan-00)
--------
- Fixed a bug in the linker that would overflow when reading the
 text bank (because performaddr was getting missed)
- Added "'move' requires 'to'" compiler error
- Win32 - fixed LCC-Win32 makefiles and source to allow compiling of
 v2.5 with LCC-Win32 as well as MSVC++
- Fixed a disambiguation problem where, on a "Which...do you mean?"
 parser question, a parser error message might be printed before
 proper processing
- wxWindows - Torbjorn Andersson fixed where the file selector
 dialogs were displaying only directories
- Unix - removed drv_raw loading from MikMod to avoid massive
 music.raw file dumps when the sound device is unavailable


v2.5.01d (4-Dec-99)
--------
- Retooled 'notheld' and 'held' object disambiguation; released
 accompanying library 2.5.01.4 (and also changed the library so
 that the banner now contains the version)
- Win32 - v3.0 media now pay attention to audio/graphics menu
 settings
- Win32 - my brother Dean added the program icon to the scrollback
 window and made it resizable


v2.5.01c (29-Oct-99)
--------
- fixed bleeding text formatting at end/start of line (only
 noticeable on Win32?)
- more fixes to non-Latin character handling
- added BeOS compile option to heheader.h


v2.5.01b (9-Aug-99)
--------
- fixed glitch where saved games wouldn't restore if byte 0 or 1 of
 the game header is zero
- pressing '+' at the [MORE...] prompt during command playback skips
 further prompting
- Win32 - fixed/uglified the sound factory for better NT support and
 performance
- Win32 - fixed save/restore of user colors


v2.5.01a
--------
- bug in translation of >128 non-Latin characters
- heres.c incorrectly identified some MP3s as MOD-type mods
- fixed command playback in (at least Win/DOS) Glk port
- Win32 - added option to override automatic Latin-1 translation
- fixed RunRestore to avoid a warning on default unsigned char compilers
- Win32 - fixed script selection in ChooseFont dialog
- Win32 - padded temporary image bitmaps to align on word boundaries,
 hopefully fixing distorted images with some video cards
- Unix/Linux - first debugger port
- Win32 - enabled custom color selection of default colors
- Win32 - extended compiler user interface, allowing saving of compile
 sessions, redo last compile, changes to output font


v2.5.01 and v3.0 beta (26-Apr-99)
---------------------
- consolidation of v2.5 and v3.0 beta base-level functionality