December 8, 2007 - MZX 2.81h

Another bugfix release with a couple of new features, in time for the
Winter 2007 Dualstream Day of Zeux. The major new features of this release
are automatic module renaming in the editor, PNG screenshots and many
improvements to MZX on embedded platforms (like PSP and DS).

MegaZeux can now be compiled in MZXRun mode (like the old DOS
implementation) and by disabling features such as unnecessary renderers
and audio support, can be made approximately 70% smaller.

Thanks again to Terryn for relentlessly tracking down many serious bugs;
we've tried to fix all the issues that have crept up in the last 5 months.

Thanks too to Exophase, Mr_Alert and Wervyn for contributing to this
release; your time and help is invaluable.

Happy Holidays!

USERS

+ Added a more lenient WAV file loader so that ModPlug isn't relied on as much
  to play malformed WAV files (mostly old SAM conversions) (Mr_Alert).
+ Added SCORE and mzx_speed to the counter debugger (Mr_Alert, ajs).
+ Added a 16-bit software renderer and a half-width renderer for the GP2X port
  (Mr_Alert).
+ Made the mouse cursor in the "opengl2" renderer look more like the mouse
  cursor in the other renderers (Mr_Alert).
+ Setting vlayer_size, vlayer_width or vlayer_height to values less than or
  equal to zero would crash MegaZeux. Limit the smallest vlayer size to 1x1.
+ Setting vlayer_width or vlayer_height to a value larger than vlayer_size
  would crash MegaZeux. Limit the largest size of either dimension to a 
  maximum of vlayer_size.
+ If selecting a module with a non 8.3 filename, MZX will now ask you if you
  want to rename it to 8.3, and do so in an intelligent way. This means that
  music can be selected in the editor and correctly saved (Wervyn).
+ The OpenBSD compiler detected some serious string bugs in MegaZeux. These
  have now been fixed and should eliminate some more potential crashes.
+ Fixed a bug where an ENERGIZER item or use of the INVINCO counter would
  cause the original player color to be corrupted at the end of the colour
  blitz.
+ Fixed a long-standing bug where set "$string" to "FWRITEn" would be
  cheerfully ignored.
+ Fixed a bug where a corrupt robot list could crash MegaZeux (e.g. the
  list from Star Quest from DoZ'02).
+ FEATURE: Screenshots are now saved in a palettized PNG file format. For
  platforms without libpng, PNG support can be compiled out, and BMP will
  be used instead.
+ Fixed a bug where changing boards in the editor could sometimes corrupt
  memory, later causing a crash (either testing or coming out of testing a
  board).
+ Fixed a sensor bug that happens when a sensor can't go anywhere it is told
  to, and the player is on it (Exophase).
+ Fixed using ABORT LOOP in some situations. Using it outside of a loop
  still has undefined semantics and this has been documented in the help
  file (Exophase).
+ Setting a board option below its numeric limit is no longer
  possible (Exophase).
+ Fixed problems with going over Robot name character limits using the .@
  command (Exophase).
+ Fixed problems with LOAD_ROBOT freezing on a robot with no newline at the
  end of the file.
+ Fixed a problem with "Replace All" in the robotic editor, that could
  sometimes cause a line to exceed 240 characters and crash the editor.
+ Fixed a problem with "Replace" in the robotic editor, which could cause a
  line to temporarily become 241 characters and then truncate silently to
  240 characters.
+ Fix a bug that caused the original game palette to be lost when testing
  a game in the editor that switched between Regular/SMZX1 and SMZX2/3 modes.
  MegaZeux should now try much harder to preserve the user palette,
  regardless of game edits.
+ Fix a bug causing board switching to not correctly alter the x,y viewport
  scroll leading to the display of raw memory and potentially crashes, with
  differently sized boards.
+ Fixed stack corruption caused by SCROLL CHAR SOUTH, detected by Ubuntu's
  SSP (Stack Smashing Protection) enabled binary.

DEVELOPERS

+ Made the build system less verbose by default (like Linux). This should help
  make warnings (due to coding errors) easier to identify. If you don't like
  the new syntax, or need the command debug, you can build with "make V=1".
+ Updated Win32 builds with SDL 1.2.12.
+ Rewrote the build system to not use recursive Makefiles. Variable propagation
  was starting to be a problem, and recursive designs are generally discouraged.
+ Refactored the graphics rendering code to modularize the renderers and reduce
  code duplication (Mr_Alert).
+ GDM2S3M switched over to use inttypes.h instead of home-brew types.
+ MegaZeux now compiles on OpenBSD (and probably other BSDs).
+ Made all unnecessary global symbols static. This should improve compiler
  optimisations and correctness (Mr_Alert, ajs).
+ Fix compilation of MegaZeux against SDL 1.3 SVN. However, this SDL version
  is still in development, and MegaZeux does not work correctly when compiled
  against it.
+ MegaZeux now builds with the experimental MINGW-x64 branch, enabling x64
  binaries for Windows.
+ MegaZeux now builds with MSVC if you apply the patch from contrib/,
    megazeux-r326-replace-c99-variable-arrays-with-malloc-free.diff
  This patch is required for MSVC because it makes non-compiler-specific
  changes (which involve converting from C99 variable length arrays to
  malloc/free) which are slower and should not be used with competent
  C99 compilers like GCC.
  Microsoft Visual C++ Express Edition 2005 was used to build libogg,
  libvorbis, libsdl and MegaZeux itself. Only 32bit builds were tested.
+ MegaZeux now has size optimisations which can reduce binary size when
  features are disabled. For example, all renderers can now be disabled,
  and when module engines are disabled, audio will not export any symbols.
+ The entire audio subsystem can now be disabled. This further reduces
  binary size on embedded platforms. However, SFX editing still remains
  enabled (though useless) until editor modularity is implemented.
+ The PSP port is now officially supported, and compiles out of the box.
  See docs/psp.txt.
+ Renamed macos platform "darwin", to reflect its true nature (use Xcode to
  build as a real Application, instead of just a UNIX binary). Also fixed
  some bogosities with robo_ed's X11 includes on OS 10.5.
+ The editor can now be disabled, a la MZXRUN from the old DOS versions.
  Configure with --disable-editor to shrink MZX by about 150k.
+ MegaZeux can now be compiled with size optimisations (--optimize-size to
  config.sh) for a 20% space saving.
+ MegaZeux's core now builds with -W (basically all GCC warnings) plus
  some additional warnings that aren't switched on by this flag. All
  warnings have been fixed.

July 4, 2007 - MZX 2.81g

Again, no significant new features have been introduced in this release.
However, there have been many essential bugfixes, including improved
compatibility with games made in older versions of MegaZeux.

Additionally, improvements have been made to the opengl2 and overlay2
renderers, improving performance for most users. A port of MegaZeux to the
GP2X console has been added. MegaZeux has been backported to C (rather than
C++) and can operate correctly on a CPU without a floating-point unit.

Particular thanks go out to Mr_Alert (for his valuable bug fixes),
Lancer-X (for fixing what I was too lazy to) and Terryn (for finding many
annoying bugs that nobody else could).

USERS

+ Fixed a bug in the audio code. The linear resampler was not taking volume
  into account, which broke changing the volume of samples (WAV and Vorbis)
  which cannot natively alter their volumes.
+ Fixed a regression in the overlay editor caused by the new editor space
  semantics.
+ Screenshots are now rendered to a separate texture using the 8bit software
  renderer. This means that the hardware scalers will not affect the quality
  of the screenshot. It also fixes a bug when using opengl2, which would dump
  only a white screen.
+ Temporarily reverted a bugfix that broke Zeux IV - Forest of Ruin. I'm not
  dropping the bugfix, I just can't immediately see what's wrong.
+ Fixed a bug where setting the viewport to negative coordinates would crash
  MegaZeux. There was code to handle this, but it was wrong.
+ Fixed a bug that permitted the mouse y coordinate to be warped to row 25,
  which does not exist. This bug caused some of the renderers to crash, and
  the software renderer to draw in memory it did not possess.
+ Fixed a bug where games made before 2.68 could have available the "key?"
  counters, unsupported in that version. This caused collisions with counters
  with the key? name used with inc/dec/mul/div/mod. Fixes "Doom Keep".
+ Imported libmodplug 0.8.4, which adds MIDI/PAT and ABC format support,
  fixes some bugs in the mixer, and should build on more platforms.
  NOTE: MID files currently cannot be selected in the editor, because they
        do not play correctly.
+ Improved the performance of the "opengl2" renderer, by removing the
  convoluted 3D drawing commands and replacing them with 2D ones. Reduced the
  quad count by using an intermediary 80x25 texture. MegaZeux now depends on
  fewer GL features (LogiCow).
+ Introduced an "fsafegets" to work around problems where robots exported by
  a Windows version of MegaZeux would not load on other platforms. This was
  due to differing EOL style and broke at least one game (Termination).
+ Renamed "force_resolution" to "fullscreen_resolution" to better match its
  semantics with the scaling renderers. The new name is less accurate for
  software render modes, but most people using software will not want to
  change it from the default anyway.
+ Fix a bug where the variable-length string allocator would prematurely
  bail out when reading a string (of indeterminate length) from a file with
  the set "$var" to "FREAD" syntax.
+ Fix a bug where more than 256 errors would crash the robotic checker.
+ Improved performance of the overlay2 (faster) renderer (Mr_Alert).
+ Make the transparent overlay "really" transparent when used in conjunction
  with sprites (Mr_Alert).
+ Fixed a bug reported by Mr_Alert where MZX would not handle short,
  non-looping mods in the editor. The editor would try to destroy the mod
  again, even after the callback had destroyed it (premature termination).
+ Fixed a bug with SWAP WORLD where file translation would occur but the
  result would mistakenly not be used. This broke some uses of SWAP WORLD
  on non-Windows platforms (Mr_Alert).
+ Fixed a bug where using JUMP to MOD ORDER right after switching boards
  would fail due to the board music not having been loaded yet (Mr_Alert).
+ Fixed a bug where games made before 2.80 would inadvertently trigger
  "PLAYERHURT" due to using the SET command to reduce the amount of
  health (Mr_Alert).
+ Fixed a bug where player clones where generated when entering transports
  during FREEZETIME (Lancer-X).
+ Debug menu is now eradicated on leaving the editor (Lancer-X).
+ Debug menu is now properly painted over when the board size is < the editor
  viewport. Fixes various graphical glitches (Lancer-X).
+ Fix a crash bug when playing older MZX games from read-only media (such as a
  CD) or where file-system permissions prohibited creating SAM conversions
  (Lancer-X).
+ Fixed bug where certain file formats would not be automatically converted
  if their extensions were mixed or upper case (e.g. OGG/SAM/GDM).
+ Restored functionality of "if lasttouched DIR" which has been broken since
  MZX 2.02.
+ Fixed a bug where attempting to decrypt a read-only world file would result
  in a crash (Mr_Alert).
+ Fixed several bugs where an error loading a world file would result in
  crashes in several different situations (Mr_Alert).
+ Fixed a bug where a robot using the BECOME command to change into a
  PushableRobot or vice versa would freeze (Mr_Alert).
+ Fixed memory leaks in the file selection dialog, the counter debugger, the
  collision list and the global robot (Mr_Alert).
+ Updated counter list (see docs/counter_list.txt in the source) (Terryn).
+ Fixed a bug where pressing escape when editing the effect of a ring or potion
  would result in an invalid parameter which would later cause a crash if
  edited again (Mr_Alert).
+ Fixed a bug in which robot-driven text boxes using option commands (the ?
  command) could overflow by two characters and spill over the side (Lancer-X).
+ Fixed the list box searching mechanism (used in the file manager and F11
  counter list) and made the existing function more understandable. (Lancer-X).
+ Fixed a bug in which the message string given to the 'ask' command could
  spill over. Now, the 'ask' dialog resizes if possible, and clips when no
  further resizing can be performed (Lancer-X).
+ Clipped the 'input string' message properly, to prevent similar overflow.
+ Fixed a bug with the EXPLODE, DIE, DIE ITEM and BECOME commands when used
  with the global robot (would clear the global robot, eventually corrupting
  memory when in the editor). Presumably, these commands are bogus for the
  global robot, and have been disabled.

DEVELOPERS

+ Rewrote config.sh to use POSIX sh compatible functions, so that there is
  no dependency on the BASH interpreter. Surprisingly, some distributions
  still don't enable BASH by default (using csh, ash or zsh instead).
+ Ported most of MegaZeux back to C. This should further reduce the platform
  requirements for running MZX, and enable marginally faster compilation.
+ Enabled GCC's -W flag for even more warnings, switching off unused
  parameter warnings (useful for delegates). Mostly typing fixes, but it
  found a bug in string handling.
+ No longer suppress char-subscript warnings, and fix up any remaining
  abuses in the tree.
+ Add manpages for 'megazeux' and other binaries for the Debian packages.
  Comply with the Debian packaging guidelines by providing a copyright
  note, listing significant contributors to MegaZeux.
+ Added support to the build system for supporting icons modularly.
  See contrib/icons/README for more information.
+ The debug build (make DEBUG=1) now enables GCC 4.x's stack protector. This
  breaks compatibility with GCC 3.x, but you can just remove the flag if you
  don't want to use it (the stack protector will improve stack corruption
  detection and provide more usable debug traces).
+ Custom Random() implementation to provide a more uniform number
  distribution. Factored out for future (better) implementations.
+ The audio backend (audio.cpp) has been modularised to support the use of
  mikmod instead of modplug. This should enable ports of MZX to platforms
  without an FPU, and improve performance on platforms with weak FPUs.
+ Added GP2X port to config.sh, based on work done by Simon Parzer.

January 30, 2007 - MZX 2.81f

This release is mostly about the new renderers, the first of which was
introduced in the previous version. There's also a few important bugfixes,
and a lot of internal tidy-up work. I'd like to thank Mr_Alert, Quantum P.
and LogiCow for contributing to this release. Thanks guys.

USERS

+ Renamed the force_32bpp config option to force_bpp, in preparation for
  16bit OpenGL render modes. This option now takes 8, 16 or 32. 16 is
  reportedly broken on Windows, so stick to 32 for now.
- The force_height_multiplier option has been removed. A lot of code
  wasn't properly designed to handle it, there have been mouse warp bugs
  with it for years, and nobody seems to use it. If people want stretching,
  they can choose one of the four hardware renderers to achieve this.
+ Added infrastructure for "pluggable" renderers. This code isn't perfect,
  but it's far better than the mess in 'e'. Defaults to the 'software'
  render mode.
+ Added Logicow's alternative OpenGL renderer. For more information about
  this renderer, see config.txt. NOTE: This code may be buggy! Please test!
+ Added Mr Alert's YUV overlay renderers. One does full YUV macropixel
  approximation, the other (faster) render does chroma supersampling. See
  config.txt for more information. NOTE: This code may be buggy! Please test!
+ Simplified Exophase's OpenGL renderer present in 'e', and fixed a few bugs
  that caused it to not work for some people.
+ Really made MegaZeux use 'directx' by default on Windows. The code in 'e'
  was non-functional. Use 'windib.bat' to run MegaZeux with the SDL windib
  driver.
+ The OpenGL renderers now have a 'filter' option that allows you to choose
  linear (where pixels are interpolated, looks "blurred") or nearest (where
  nearest-neighbour approximation occurs, looks "sharp").
+ Mouse warping was broken when using any of the hardware renderers. There
  should be code in there now to take account of this (thanks Mr_Alert).
+ Added an option 'editor_spaces_toggle' which allows you to revert MZX's
  space overwrite behavior to the semantics of 'd' (the feature was
  removed in 'e'). By default, the behavior is unchanged.
+ F6 (the debug menu) can now no longer be enabled anywhere but in the
  editor Alt-T test mode. In 'e', it was possible to enable on the title
  screen, but could not be enabled in a game. Like the cheats, this option
  is now visible only in test mode.
- Removed the 'lame/1337' menu feature.
+ Fixed a bug where the global robot could be exited via some legal commands,
  in an abnormal fashion. The bug resulted in all the code up to the offending
  command being executed over and over.

DEVELOPERS

+ OpenGL can now be disabled via config.sh. This allows MegaZeux ebuilds
  to be constructed on systems that do not have any form of OpenGL support.
  (Although MZX runtime loads the OpenGL library, 'e' required the headers
   to build correctly. This is now no longer the case.)
+ On Windows, due to an ATi driver bug, I have provided a means of linking
  directly to opengl32.dll, instead of relying on the dynamic loader. This
  reduces binary portability, but fixes many bug reports of being unable
  to fullscreen on ATi video cards. See OPENGL_LINKING for more information.
+ Improved support for cross compiling with mingw32 on Linux, combined the
  win32 Makefile with this new support.
+ Rewrote the config.sh script. All of the options have changed, and the
  broken platform auto-detection has been removed. See ./config.sh for more
  information.
+ Rejigged MegaZeux's headers so that they can be used in both C and C++
  mode. Renamed fsafeopen.cpp to fsafeopen.c. Hopefully by 'g' most of
  MegaZeux should be ported back to C, instead of the "C++" it is now.
+ Fixed up the 'txt2hlp' utility which Terryn has been using a version of
  to build the internal MZX help system. This binary is built in the source
  distribution, but it is not distributed with the MegaZeux binaries.
+ Moved some antiquated Greg code out into 'old'. No attempt has been made
  to make it compile, it is provided purely for reference.
+ For the windows binaries, "windib.bat" is now generated by package.sh
  and auto-generated for the name of the MegaZeux executable.
+ Updated Xcode package from Quantum P. (see macosx.zip).

January 18, 2007 - MZX 2.81e

+ Made grabbing in the editor not combine background color, only uses
  "special" in game colors for player, tell me if anything ends up being
  weird because of this.
+ Possibly fixed an obscure bug where moving something happened
  immediately if it was sent to a label by a robot further east/south than
  it and it moved north or west (has to do with the way robots are
  reverse scanned). Tell me if this changed any behavior for the worse and
  I'll change it back or try to work out something new.
+ Added GDMs to ctrl + n, this will of course auto convert and play the
  s3m.
+ Added ability to preset player locked status from board settings.
- Removed ability to change SMZX mode ingame (F11)
+ Instead added ability to debug variables (counters and strings)
  ingame with F11. There's also an option to export the current variables
  to Robotic program that sets them.
+ Fixed bug where moving a block with the player into an overlapping
  region leaves a space where the player was.
+ Fixed bug with a robot indirectly sending itself to a subroutine via
  send all or send name causing it to loop the send.
+ Added compatability hacks for key# prior to MZX 2.69 worlds and
  ridNAME falling through in MZX 2.70 and earlier worlds.
+ F6, F7, F8, and F11 debug/cheat keys only work in editing mode now
  (as things were prior to the port) You can still save/load in the editor
  so if you want all of these things you can play the game from the start
  there.
+ Space in the editor no longer deletes something of similar type that is
  beneath not sure what the point of this was anyway.
+ Fixed bug causing cursor to clipped be out of bounds in SMZX char editor
  if changing to smaller multichar edit region.
+ Accidentally messed up screen centering in fullscreen for 32bpp mode,
  fixed.
+ Added hardware scaling option. You can now supply a window resolution
  besides 640x350 and allow for window resizing if hardware scaling is on;
  this will also scale fullscreen output to fill the entire screen. This
  can slow down rendering somewhat.
+ Fixed bug causing flip block to crash in the editor.
+ Made blocked directions relative to the player for put dir player.
+ Fixed bug where putting something to a direction relative the player
  overwriting the robot could crash MZX.
+ Fixed ability to input in input boxes by clicking on their question
  string.
+ Removed the bogus patch to Modplug and correctly fixed it in the build
  system.
+ Added 'debian' subdirectory for building Debian and Ubuntu upstream
  packages. Hopefully MegaZeux will be in the primary pool in a few
  months.
+ Added OS X xcode project files (see 'macosx.zip'). Fixed many bugs
  relating to endian that caused MegaZeux to be buggy on big-endian
  architectures (like PPC). Credit goes to Quantum P for finding these
  bugs and engineering high quality solutions.
+ Made 'directx' the default video render again on Windows. NOTE: This
  overrides the default SDL behaviour, but will not be applied if you
  set SDL_VIDEODRIVER yourself.
+ Repaired the 'linux-static' target so that it no longer includes a
  system C++ library, which caused unpredictable results on distros
  without a static version.
+ Fixed a locking bug with the audio code that caused hangs at startup
  on OS X. Also provided a mutex implementation using GNU pthreads as
  a temporary workaround for an SDL bug on the Linux platform.
+ Added PlayStation Portable (PSP) port. This code was written by Exophase
  and is highly experimental. It may not work at all for you. Please
  see docs/build.txt for more information regarding this port.
+ Fixed mouse movement from being affected by height_multiplier when
  not in fullscreen mode
+ Fixed height_multiplier config.txt option allowing you to enter really
  stupid values (like negatives, 0, and values too large for the
  resolution)
+ Added in an extra video mode check to stop MZX crashing on video modes
  that the video card can not reproduce
+ Fixed Avalanche to a constant placement rate of 1/18 (this caused MZX
  to deliver an uneven number of boulders, and crash with certain board
  sizes
+ Fixed sprite collision box to stop MZX from crashing when stupid values
  are entered
+ Fixed setting the viewport size to weird values like some old MZX games
  do
+ Default fullscreen resolution is now 640x480, this can be changed in
  config.txt
+ The config.txt option force_32bpp is now enabled by default
+ Seeking with mod_position when using a .WAV file as background music
  now works (thanks Mr_Alert)

December 10, 2006 - MZX 2.81d

+ Fixed a compilation failure on Linux, due to SDL no longer depending
  on libX11. Now we manually link X11 into MZX if necessary.
+ Various build system improvements, fixing bugs in the prefixing
  of dependencies.
+ New libmodplug 0.8 imported, fixing many endian problems on big-endian
  machines, integrating all of our local patches to 0.7.
+ Fixed bug causing MZX to freeze when starting up on Win9x machines.
+ Fix a warning generated by GCC 4.1.
+ Update the GPL boilerplates project-wide to the newest FSF address.
+ Fix a string range check causing an obscure crash in certain games.
+ Update the build.txt documentation.
+ Address documentation bugs found in the internal MZX help system (Terryn).
+ Fixed a recently introduced bug breaking the open command.
+ Fixed some bugs with changing params and pressing escape.

December 14, 2005 - MZX 2.81c

+ Oops, accidentally broke shift + F2. Fixed that..
+ Also accidentally broke &+counter& for full hex representation. Fixed.
+ Fixed memory leak problem with playing certain WAVs in a loop.
+ Fixed inconsistency of bad viewport sizes behaving differently on
  current versions from old DOS versions.
+ Accidentally broke joystick stuff in config.txt (has to do with way
  configure options were being read), fixed.
+ Fixed bug causing crash when loading MZBs larger than the current board
  size.
+ Made cursor hidden in alt + V in editor.
+ String comparison failed with nulls in the strings, fixed. Also
  should be slightly more optimal.
+ Fixed bug when using negative numbers for if sprite_colliding "counter"
+ Fixed math operations (inc, dec, etc) not working on string indeces.
+ Added ability to force screen to 32bpp. Fixes some slight rendering
  issues, and if you have problems with fullscreen let me know if this
  helps (try it without first though). See force_32bpp in config.txt.
+ Fixed sprite clipping bug with respect to overlay.
+ Fixed bug where pressing enter on things besides robots, scrolls/signs,
  or sensors in the editor would clear whatever was underneath it.
+ Accidentally broke SFX with optional PC speaker chains (played both,
  should only play PC speaker when digital music is off, fixes Bernard
  the Bard)
+ Made last character in char selection for F3 and alt + C remembered
  (note that they're remembered in two different places for both)
+ Accidentally broke life animations, fixed

November 26, 2005 - MZX 2.81b

+ Fixed inability to make proper .savs of worlds with strings (they'd
  crash when loaded..)
+ Fixed PC speaker audio bug causing a constant high pitched noise to
  be played instead of PC speaker audio sometimes.
+ Fixed some issues with long pathnames.
+ Fixed a bug causing Caverns to crash in recent versions (long story,
  it was most likely due to an error in ver1to2)
+ Now when you set mzx_speed in a game you can no longer change the
  speed from the F2 menu. Setting mzx_speed to 0 reallows this (and
  doesn't set the speed)
+ When loading a game its speed is now set to the speed MZX started
  with (whatever's in config.txt, or the default of 4)
+ Added backup_ext config.txt option to specify the extension of backup
  files (default is .mzx).
+ Fixed backup_interval for config.txt possibly being broken.
+ Fixed a bug messing up the death board on some old MZX games
  (like Nick Brick 2)
+ Escaped more things and made displays always in escaped form for
  certain character sequences. It should be impossible to type
  non-escaped forms. The following should be used:
  \0 for 0 (this probably won't work in strings, but in chars should)
  \t for tab (character 9)
  \n for newline (character 10)
  \r for carriage return (character 13)
  \" for double quote
  \\ for slash
+ Copy + paste on escaped character won't unescape them anymore.
+ Fixed error message for invalid lines in Robotic
+ Fixed inability to import text files from other directories.
+ Huge overhaul of the source (proper types for things, directions,
  equalities, conditions, chest items, and potions), if anything is
  suddenly broken now let me know.
+ Made scrolls/signs only display text (letters, numbers, etc) in the
  default char set. That should be enough for now.
+ Added mousewheel support for robot editor and robot box display.
+ Fixed inability to load MZMs from other directories in the editor.
+ Wrapped audio stuff in proper mutex, hopefully this fixes some issues
  (like crashing when changing mod_frequency a lot).
+ Long current directory paths no longer write out too much in the file
  loader (instead the last bit is shown with a ... prefixing the
  beginning)
+ Decided to be nice and make board_scan not crash. Don't use it. It's
  only there to make one legacy game work. If you use it I will
  personally scold you. And don't tell other people to use it (that
  means you CJA). Use copy block x y w h "$str" t instead. If you don't
  know what that means read the help file, it explains everything.
+ Removed ability to copy + paste after changing board dimensions of the
  source under any circumstances (alt + R, alt + Z, import world, import
  board)
+ Fixed appearance of ghosts in F10 menu.
+ Prevented char editor from counting moving the cursor as an undo step
  if nothing was actually drawn.
+ Made pressing escape on initial char selection/board selection/param
  selection for things cause it to cancel placing anything.
+ Made it impossible to set board width/height to 0 again (oops)
+ Made starting lives and starting health take effect immediately for
  the first alt + t
+ Added ability to play OGG from alt + l (but not the other mods, don't
  want to clutter that up)
+ Made it so if no note follows an embedded SAM in a play string it's
  played at native frequency.
+ Accidentally made loading worlds in the editor not change the current
  directory, fixed that.

November 20, 2005 - MZX 2.81

+ Fixed a bug where MZX world/save names > 12 chars could cause weird
  things to happen (like doors breaking)
+ Fixed problems with helpfile/charsets loading when loading MZX
  outside of the directory MZX is in. This should fix file associations
  on Windows as well.
+ Changed board selector so when board 0 is "(no board)" it doesn't
  actually refer to the title but to no board.
+ Made import world not overwrite the title string.
+ Fixed bug that causes crash when trying to flood fill an area with
  the color it already is in the SMZX char editor.
+ Redid audio engine. Everything is unified now, meaning that anything
  you can use as a mod you can use as a sam and vice-versa.
+ The new audio engine uses its own master resampler that has three
  interpolation modes - see config.txt for more information.
+ sam 0 filename will play a file at its native frequency (note that
  SAMs that have been converted from WAVs are set to be played at
  8363Hz).
+ Added support for OGG vorbis audio files.
+ Fixed bug causing SFX volume control in F2 menu to not work.
+ Removed limitation on number of SAMs that can be played
  simultaneously.
+ Fixed bug where the mouse got "stuck" in the black border edges of
  non 640x350 fullscreen resolutions.
+ Fixed issues with message boxes being part default palette part
  current palette, they now always use the current palette.
+ Added mod_position counter. What these actually set/return is
  dependant on the type of file loaded. Modules use the current row,
  OGGs use the current PCM sample.
+ Added mod_frequency counter. There are a few things to note here:
  Modules have a "nominal" frequency of 44.1KHz. Other data types
  have their own nominal frequency to prevent output from
  sounding differently depending on the audio_sample_rate in config.txt.
  For OGGs and WAVs the nominal frequency is the one the file is
  encoded at.
  Changing the frequency can cause a noticeable one time popping sound,
  so it might not be desirable to slide it. This is much more prominent
  with lowering the frequency than raising it.
  This value is capped so it can't reach below 16.
+ Changed alt + L to play back at natural frequency instead of 8363Hz.
+ Fixed bug causing sensor deletion while the player is on top to
  destroy the player.
+ Fixed bug causing imported boards to possibly crash after being
  tested.
+ Fixed bug causing save_game and save_world to not work if a file
  with the given name isn't already present.
+ Changed function counter matching removing restriction on number of
  digits for parameters. 10+ digit inputs should no longer fail (for
  instance, abs-123456789)
- Save files from 2.80 are not compatible due to several changes in
  the save format.
+ Made counter/string names internally variable length instead of a
  fixed 14 chars. There is now no longer a name length limitation.
+ Changed alt+8 for mod * to just * in the hotkey listing.
+ Fixed crash when referencing (by param) sprites > 256.
+ The string system has been redone. Strings are now dynamically
  sized and don't have an artificial maximum length. Writing to
  string.N will guarantee that the size of the string becomes at
  least N, while reading in this way will return 0 if out of bounds
  to maintain the illusion of null termination. Be careful when using
  this.
+ $str.length returns the length of string $str (this is faster than
  iterating through it to find when chars hit 0)
+ Vlayer is dynamically sized. The vlayer_width/vlayer_height counters
  still work as per usual, but the vlayer_size counter has been added
  to adjust the maximum size. The default is 32768.
+ Fixed bug not allowing things to move over goop.
+ Fixed bugs causing current directory to be changed when importing
  things from other directories.
+ Properly implemented support for volume "string"
+ Fixed a few commands not working when they should from the global
  robot (such as put to dir of player)
+ Fixed a bug where going to a label at the end of a robot would treat
  it as if it's the first of its name in a sequence of labels.
+ Fixed a bug involving moving the a block with the player not moving
  what was underneath the player.
+ New help file, thanks MUCHLY to Terryn for pulling off this enormous
  effort!

June 6, 2005 - MZX 2.80h

+ Fixed a bug which could cause crashes when quiting the game.
+ Fixed some bugs when changing boards and other things that can
  cause duplicate players.. I think.
+ Fixed a bug that could cause crashes when adding boards
+ Improved response time in editor for slower computers/high load
  situations
+ Fixed some endian issues with the GUI
+ Fixed some crash when moving the mouse cursor around in the editor
+ Fixed bug where you if you had a robot whose name is the same as
  the global robot it wouldn't get messages (fixes yoyo in Weirdness)
+ Fixed debug box not moving with text input
+ Fixed bug with duplicate player appearing when killed and a new one
  can't be put at 0, 0
+ Added copy/paste for outside of MZX to/from the robot editor. It
  only works in Windows and X11, and functionality may be limited in
  X11 right now (currently seems to work in native X11 apps and
  GTK 2.6 apps but not earlier GTK or QT, also try shift + insert to
  paste)
+ Fixed bug in resizing involving overlay blanking.
+ Fixed clear messages/projectiles not working (and damaging the game
  instead)
+ Fixed behavior of P key in editor for wildweasel.
+ Fixed random in Robotic not correctly swapping the range if they're
  given in the wrong order
+ Fixed clip length in [ messages
+ Fixed crash when changing volume without a game loaded
+ Redid internal GUI system, fixes some minor things
+ New file loading/saving window - press del to delete a file/dir,
  alt + n to create a new directory, alt + r to rename a file/dir.
+ Added PC speaker volume control to F2 settings and config.txt
+ Fixed yet another crash bug with resizing boards
+ Fixed inability to type * in text placement in the editor
  (although this adds inability to turn on mod * while F2 is on...)
+ Added ctrl + n in the editor to load a module for listening only
  (won't set the current board's module, and will let you choose
  ones from different directories)
+ Fixed crash on macros with more variables than can be displayed
  in their configuration.
+ Fixed bug that causes char selection cursor to reset to 0 on
  unhandled keys (and continuously do so for lock keys)
+ Tweaked ctrl + dir in text entry boxes.
+ Added gdm2s3m in-tree to the contrib/ directory. gdm2s3m no longer
  needs to be installed on the system before compiling mzx.
+ Improved the build system to automatically build .c and .cpp files
  with compound system CFLAGS/CXXFLAGS, respectively.
+ Made package.sh automatically ship the source package with a
  Makefile.dist to warn the user that they need to run config.sh before
  'make'.
+ Rectified inconsistency in source copyrights.
+ Added multicharacter editor. Select multiple keys in the character
  selection with shift. The char editor also now has the ability to
  perform operations (delete, copy, scroll, etc) on subblocks. Hold
  down shift or press alt + b to highlight a region (press escape to
  remove the latter). Blocks copied like this will be pasted to where
  the cursor is at. Other small things in chareditor tweaked/changed...
  No longer press tab to toggle through set/clear/toggle draw modes,
  instead tab for set mode and shift + tab for clear (no more toggle).
  Mouse behavior is modified as well. In non-SMZX left click sets,
  right click clears. Shift + F2 will cut a block (clear + copy)

  alt + x/alt + i can now be used to import/export partial charsets
  while in the char editor. You can do so for several in series:
  put a # in the name of the charset then set the First for the
  first number # will be replaced with and the Count value to
  indicate how many in series to work with.
  For instance, saving s#.chr with first = 0, count = 3, starting
  at offset 100, with a 2x2 char selection will save charsets
  s0.chr from 100, s1.chr from 104, s2.chr from 108, and
  s3.chr from 112.

  *** NOTE *** Series import/export will only work correctly with
  char selections that are one in height (can still be split up
  another way in the editor itself). So if you want to use
  partial charsets on your edits it's important that you select
  all the chars in a row.

+ Made characters for the editor/GUI use another charset that's
  protected. Please notify me if any characters are incorrect.
  Modify mzx_edit.chr to change this charset.
+ The same thing goes for colors. It doesn't work for SMZX, which
  also might look a bit different in the editor...
+ Added option (defaults on) to protect chars 32-127 in input
  boxes and strings in the robot editor.
+ Mouse warping goes to middle instead of top corner now, so there
  isn't a biased towards moving up.
+ Hopefully fixed another bug with the cursor and changing boards...
+ Fixed module looping problem in modplug...
+ Added libmodplug 0.7 with both patches (see contrib/) in-tree.
  Removes system dependency on libmodplug.
+ Made auto-backup on by default (3 count)
+ Made if touching idle, beneath always false instead of like nodir
+ Fixed bug that caused bad things to happen if you pressed too many
  different keys too rapidly.
+ Made mouse wheel emulate up/down in dialog boxes and list menu.
+ Added ctrl + backspace to intake (delete previous word)
+ Made modulo operator use floored instead of truncated mod (uses
  positive remainder instead of negative)
+ Fixed crash when testing after using ctrl + z to clear a board.
+ Fixed bug where sending other robots to subroutines caused the
  return address to be to the next instruction like local subroutine
  calling works.
+ Fixed bug where going to a label on the last line of the robot could
  screw the game up.
+ Fixed a bug where the editor froze if you tried to fill the board with
  players (eheh...)
+ Fixed a bug that could cause crashes when sending all sensors something.
+ Fixed some crashes when exporting/saving fails.
+ Fixed import world's ability to go over the board limit and cause
  crashes.
+ Allowed input of decimal numbers for params.

April 1, 2005 - MZX 2.80g

+ Fixed crash on alt + x in robot editor.
+ Fixed missing line on alt + h in robot editor.
+ Introduced incorrect enter action in robot editor (didn't reset to beginning
  of the line), fixed.
+ Fixed garbage appearing when moving from a larger to smaller board and being
  outside of that board's scroll region.
+ Fixed bug that could cause glitches/crashing when resizing the board
+ Fixed error with global next option not retaining the three checkmark
  options correctly.
+ Added work around so that move block moves the player (won't move it on
  inter-board moves)
+ Fixed bad palette loading for Linux introduced in 2.80e or f or something
+ Made it so block highlighting doesn't highlight the debug window.
+ Made the debug window move if necessary when home/end is pressed.
+ Added autorepeat buffering so previous keys can be resumed.
+ Fixed bug with swap world possibly not working (crashing??) off Windows
+ Fixed more problems with garbage/crashes when resizing with the cursor
  in a position causing the scroll to go off the edge
+ Fixed incorrect text cursor offset with force_height_multiplier on.
+ Redid way directories are loaded internally so you can load dirs with over
  4096 entries now. Might be faster (unsure)
+ Chest contents list menu looked funny, fixed.
+ Changed default.spl to smzx.pal so you can load it more sanely.
+ Export block wasn't getting the last selected line. Fixed.
+ Hacked scroll editor so it wouldn't crash when removing lines. Scroll code
  either needs to be 100% overhauled or replaced by robots somehow...
+ Fixed config files not being closed.
+ Added include file option for config files. Use it like this:
  include configfile  e.g. include subconfig.cnf will load subconfig.cnf's
  options
+ Fixed freadN not terminating strings.
+ Fixed graphical glitch when using the mouse in the char selector.
+ Fixed save games crashing when they can't load fopened files.
+ Fixed some other problems with save games and fopened files...
+ Accidentally had title screen running a bit slow...
+ Value strings starting with ( not parsed as an expression if they
  don't end with the )
+ Fixed problem with key_code being triggered for keys that aren't
  in-game
+ Removed the unimplemented if player dir and if not player dir
  commands from RASM
+ Added extended macros. This allows for parameter based macros to
  be entered in the robot editor via a window or by command. See
  macro.txt for more information.
+ Fixed player cloning after flip/mirror and player placing.
+ Added random seeding that was mysteriously missing...
+ Finally added drive changing for Windows builds.
+ Fixed mousex/mousey for resolutions other than 640x350 (only applies to
  fullscreen)
+ Fixed crash on weird invalid death/endgame boards...
+ % and & messages clip correctly now.
+ Fixed potential crash on double closing the files.
+ Fixed crash bugs with placing sensors and maybe scrolls.
+ Fixed sending sensors when you have robots of the same name (fixes
  Weirdness chapter 1)
+ Fixed bug that can screw up your world when placing scrolls or sensors..
  sometimes.

December 26, 2004 - MZX 2.80f

+ Fixed a bug that could cause crashes when auto-quoting params in the robot
  editor (eg, set x 1 -> set "x" to 1)
+ Fixed a bug that could crash the robot editor if you added a new line prior
  to the first line of a marked block, then did an action on it.
+ Fixed a bug where clearing the first and only line could cause it to appear
  as if it hadn't been cleared at all.
+ Unified global and global next parameter setting so that nothing is lost
  between first/next but information can be cancelled without application.
+ Fixed E/S block markers appearing in the robot editor when they should be
  off the screen.
+ Left click position in robot editor mysteriously disappeared after having
  been added somewhere after 2.80d. Readded.
+ Added option to hide the hotkeys help and horizontal border in the robot
  editor with alt + h. Also added a config.txt option to have it default
  this way.
+ Search/replace in the robot editor. ctrl + f to find or replace/replace all,
  ctrl + r to repeat either search or replace (depending the last one you did,
  if you cancelled this does nothing)
+ The load_game counter sequence was broken; fixed.
+ Hopefully fixed all means of overrunning the current line max length in the
  robot editor...
+ Fixed robot editor validation not showing every 13th line
+ Fixed aesthetic problem with validation report....
+ Fixed crash with setting message column less than 0.
+ A couple things added for 2.80e mysteriously disappeared in source handling.
  Readded.
+ Changed max board size prevention to auto resize the lower dimension to the
  max that can be handled with the higher (ex, 30000x25000 becomes 30000x559)
+ Added floodfill to char editors (alt + f)
+ Added single depth undo to char editors (alt + u)

December 19, 2004 - MZX 2.80e

+ Fixed a bug causing problems with static overlay if a non-overlaid sprite
  is displayed so it's clipped off the edge of the screen.
+ Fixed a bug in the display of c?x color boxes in the F2 menu in the robot
  editor
+ Fixed a bug that caused incorrect thisx/thisy for one cycle after copyblock
+ Fixed a bug preventing calls to nonexistant subroutines from passing that
  point in the robot
+ Fixed crash on sam 0 "file"
+ Fixed a bug where loading new SFX may not correctly overwrite previous ones
+ Fixed a bug where you could only load/unload so many mods before MZX couldn't
  load anymore.. same bug as the SAMs but went unnoticed!
+ Fixed a bug that caused you to be infinitely stuck in the global settings
  dialog box when you press previous on the next page.
+ Fixed a bug where going to next then exiting would not save the changes
  from the previous page.
+ Fixed a bug that could cause crashes while ending modules.
+ Fixed a bug that could do the same kind of thing with sams.
+ Fixed an allocation bug when loading MZX worlds that could lead to crashes.
+ Fixed a bug that caused MZX to crash if you interpolated an expression with
  a value equal to or greater than 1 billion.
+ Fixed a bug where mixing ccheck1/2 with sprites from board and vlayer could
  cause problems (that's the short version of the explanation, I'll spare you
  the long one)
+ Fixed a bug that could cause certain old MZX games to crash after the title
  screen
+ Somewhere broke missiles between 2.80c and 2.80d. Fixed.
+ Fixed error in lit bomb anim sequence setup in char ID editor.
+ Reworked a lot of robot editor code; adding/deleting lines while marked areas
  are active should work more naturally now and it's hopefully no longer possible
  to crash it in the same ways it was previously.
+ Fixed crash when setting mesg row to less than 0.
+ Fixed mouse presses not working in the robot editor.
+ Made MZX ignore alt + tab so you can safely switch in your WM without it
  triggering...
+ Added numerical key entry for number boxes. Use 0-9 to add to the most
  significant digit and backspace to take it away.
- Fixed maximum board size to about 16.7 million tiles (128MB), for now.
+ Added config.txt option to make MZX pause when key focus is lost
  (when clicking on another window, perhaps) or when it's minimized. Music will
  still continue.
+ Added save/load position to the editor. Works for loads inbetween boards as
  well. Press ctrl + num to save to slots 0 through 9 and alt + num to load from
  that slot. Please press shift + 8 or the numpad * key instead of alt + 8 to
  set mod wildcard.
+ MZX now ignores the mouse scroll wheel instead of interpreting it as a click.
+ Fixed a further bug that could cause playing samples to crash.
+ Added config file option to revert the robot editor to the default palette
  when loaded.
+ Fixed bug in shoot command.
+ Fixed error when making save name in editor but cancelling.
+ Auto-backup - see config.txt for details.
+ Joystick key mapping - see config.txt for details.
+ You can now load game-specific config files by creating game.cnf for the
  corresponding game.cnf (for instance, caverns.cnf). This is mainly useful
  for joystick key mapping. Note that these settings will NOT go away if
  another game is loaded that doesn't have a .cnf.
+ Alt-enter finally works as block action in the robot editor.
+ Loading a .mzx/.sav from another directory indirectly (via command-line or
  robotic) will now actually change the current working directory.
+ Fixed bug that crashed MZX with ctrl + i in the robot editor.

October 9, 2004 - MZX 2.80d

+ Fixed cursor going invisible when escaping from import in the editor
+ Fixed robot editor entry when pressing OK on global info
+ Fixed lack of name for MZB import/export (any MZB's exported in prior
  beta versions still won't have a name)
+ Fixed some problems with setting the mouse position
+ Fixed problem with exits not bringing you all the way to the edge if width
  over 400 or height over 200
+ Fixed bug that cleared too much when increasing both width and height while
  resizing the board
+ Fixed problem with 1 char shortcut commands with spaces immediately after them
+ Fixed problems with load_robot and load_bc (caused crashes and infinite loops)
+ Optmized RASM heavily (this should be most noticable when doing a lot of
  external robot loading from text files)
+ Fixed inability to use absolute paths in loading a game from command line
+ Fixed lastshot/lasttouch conditions with directions not working
+ Fixed char editor in robots not going into SMZX mode when proper
+ Cleaned up source code so it passes -Wall without complaint and in the process
  corrected some glaring code errors that may have corrected random problems
+ File opening broken in 2.80c, fixed
+ Implemented MZM2 saving and loading and rewrote mzm.cpp (if anything is changed
  or fixed regarding MZMs, attribute it to this). MZM2s can be of larger
  dimensions, smaller filesize for same amount of data, and can store robots.
+ Fixed bug that could cause MZX to crash when making new strings
+ Block operations to overlay when overlay was off caused crashes - fixed
+ Fixed a problem with sprite ccheck2 against other sprites
+ Optimized function counter lookups a bit; speed gain for all counter accesses
  (especially ones that begin with certain characters such as _)
+ Fixed disassembly error with ' ' character
+ Fixed assembly error where condition extended dir (such as blocked opp seek)
  was not getting compiled with the dir extension
+ Fixed editor bug where the param was not being cleared when overwriting things
  by double placement
+ Fixed inability to use counters with playercolor/bulletcolor/missilecolor
+ Added ability to use counters in place of p?? in the robot editor
  Note - even though this expands functionality of the editor this does not
  require a version number change because the worlds will still be playable in
  older MZX versions (and will display correctly in the robot editor - you simply
  won't be able to correctly edit the commands)
+ Mouse correctly limited to screen edges now
+ Fixed inability to overwrite robots with pushable robots and vice-versa,
  as well as scrolls with signs and vice-versa
+ Possibly fixed problem with windowing error when editing global robot (?)
+ Fixed disappearing cursor after color selection box with mouse (and other places?)
+ Fixed bug in sprite clipping that caused some to be clipped off inappropriately
+ Made board_id/board_param counters readable
+ Added bound checks for all counters using board_x/board_y/overlay_x/overlay_y
+ Removed ability to put robots, scrolls/signs, and sensors (with the put command in
  Robotic)
+ Fixed potential direction corruption bug causing directions not to work
  sometimes even if they display correctly in the robot editor
+ Fixed copy overlay to MZM copying to overlay too
+ Fixed a bug where debug window could display the wrong amount of robot mem
  and potentially even crash MZX
+ Fixed help_menu counter not doing anything (durr)
+ Changed sprite draw order so they're drawn underneath the message bar,
  debug box, and time remaining display
+ Changed put p?? in Robotic so it will put default params if available
+ Fixed a bug that could cause copies from overlay to vlayer to not end up at
  the correct destination
+ Fixed a bug where c?x and cx? would not display correctly in the robot editor
+ Optimized copy blocks a bit using variable length arrays instead of malloc

August 16, 2004 - MZX 2.80c

+ Fixed issues with the commands counter not being reset
+ Color intensity now gets reset when you enter the editor
+ SAMs got cutoff sometimes now.. fixed
+ Fixed bug where loading a world with empty boards could change the starting,
  endgame, and death boards
+ Fixed bug where you could text enter off the bottom of the board, causing
  problems
+ Fixed bug involving cutting/clearing the entire robot in the robot editor
  while not at the first line
+ Fixed robot name entry for global robot not disappearing on small boards
+ Fixed bug where you could duplicate the player by holding down a direction
  as a saved game loads
+ Fixed bug where you could go to line 0 in the robot editor
+ Saving an MZM now auto-adds the .mzm extension...
+ Fixed black screen on quicksave
+ Fixed bug where opening a file didn't close the old one if one was open
  (so it'd eventually crash MZX)
+ Changed alt+backspace behavior in intake so it doesn't exit
+ Added clipping for refx/refy/width/height for sprites (less than 0 at
  initialization, greater than board width/height at draw)
+ Fixed direction parsing for move all
+ Fixed bug where creating things on top of the player would use a slot
  for  robots/scrolls/signs/sensors instead of just copy to the buffer
+ Added ability to use chars as immediates in Robotic commands
  (ie, set "$str.0" 'a')
+ Added options to enable oversampling and specify resampling mode in
  the config file (higher quality audio)
+ Building with patched modplug that fixes loading 2-channel mods
  outputted by FT2. If you're building yourself, see build.txt.
+ Fixed inability to mouse click in alt + h mode
+ Fixed ability to mouse click outside of board range
+ Should work better for Linux users; case insensitivity for file opens
  has been added.
+ Fixed close bug that was affecting Linux builds (may affect more)
+ Keypad enter works where normal enter works now
+ Fixed disappearing cursor when cancelling out of abandon changes box
  when loading a new world in the editor
+ Fixed problems when loading/saving robots outside of ID range (do not
  hardcode ID's people)
+ Fixed problem with NO BOARD exits being set to something else when
  empty boards were being stripped or when worlds were being imported
+ Fixed bug where auto-decrypting worlds didn't work if the XOR value
  was negative
+ Fixed problem with rid not working the first cycle
+ Fixed inability to interpolate (with &&'s) counter names larger than
  14
+ Added new robot mem counter in debug box (only kb precise, rounds up)
+ Fixed ability to clone the player on non-title board after testing
+ Lengthened size of mod name buffers
+ Fixed bug where send x y doesn't work from the global robot
+ Fixed a few bugs that could cause MZX to crash
+ Fixed a bug that prevented copyrobot "string" from working in some
  situations
+ Fixed a bug allowing player duplication in board importing

August 11, 2004 - MZX 2.80b

+ Made it possible for robots to move through teleporters
+ Fixed bug with pressing shift in text entry boxes
+ Made it so alt + tab does not switch draw modes in editor
+ Fixed a disassembly error for color intensity N percent command
+ Fixed problem with looping on mods that do not loop explicitely
+ Fixed alt + dir scrolling in the char editor
+ Fixed not being able to click the rightmost char in the char editor
+ Readded unmark (alt + u) to robot editor (mysteriously disappeared??)
+ Fixed key label so it returns proper unicode values
+ The player and pushable robots can now be pushed by the push command
+ Fixed bug where you could clone the player by switching boards
+ Fixed bug where you could either turn off overlay or switch to boards
  that don't have it while in overlay edit mode...
+ Fixed bug where remains of debug window would not be cleared in editor
  if the board width is too small
+ Fixed bug where turning off the menu with a board too small would mess
  things up
+ Fixed bug where run lengths were saved one too large... this could fix
  stability problems in at least occasional cases (with saved worlds or
  save games, at least)
+ Fixed placing solid things beneath robots (like bombs)
+ Added support for a keyboard plus in the char editors
+ Fixed previous button in SFX editor
+ Made robot name box disappear when robot char box comes up...
+ Fixed bug where mods restart after pressing P if they're the same mod
  as what was playing before
+ Fixed problem with changing params (with P) in the editor.
+ Fixed bug where null boards were not being pruned from old worlds upon
  load
+ Made file name saving box larger (for saving games and worlds)
+ Fixed bug where default (100%) palette intensity values would not be
  applied to the palette a game loads with
+ Fixed bug where exporting char sets that are full size caused a 0
  byte charset to be exported (8bit wraparound)
- Removed export text in the board editor. Don't think anyone wanted it...
+ Added support for forms such as :line
+ Fixed sporadic incompletion of strings without trailing quotes at the
  end of the line
+ Fixed bug where clearing/cutting the last line of a robot crashed MZX
+ F4 in robot editor now works more generally
+ Made line numbers in robot editor error report start at 1
+ Added ctrl + G to go to a line in the robot editor (ala nano)
+ Made it possible to change a robot's color in the editor
+ Fixed bug where spitfire, seekers, and missiles didn't hurt something
  immediate adjacent to whatever shot it
+ Fixed editing of spitfires
+ Made default speed 4 again (5, bleh)
+ Readded quicksave/quickload
+ Readded F8 clear (always works - be careful)
+ Fixed autorepeat problems for spacepressed/delpressed.
+ Wrapped around sprite values so LogiCow's bad code would work (HTMCIAB)
+ Cleared block commands inbetween board changing and other things like
  that
+ Fixed bug where MZX would crash if put dir player overwrote the robot
  doing it
+ Fixed bug where playing SAMs would eventually crash MZX
+ Fixed some mod * problems (hopefully?)
+ Fixed bug where pasting blocks over the edge of the board in the editor
  would cause MZX to crash
+ Uses new GDM2S3M source that fixes some bugs. If your converted GDM's
  have problems, delete the S3M's it generated.

August 9, 2004 - First release, MZX 2.80 BETA


