MegaZeux Changelog

What's new in MegaZeux 2.82b

Jan 4, 2017
  • This release contains plenty of important bug fixes, ranging from regressions such as the broken command-line editor macro expansion to third party bugs like the Windows "directx" SDL video driver breakage.
  • There are also some new ports and features. MegaZeux now runs on the Wii (port by Mr_Alert) and AmigaOS 4.x (port by myself and Spot from os4depot). The Windows x64 port has matured immensely and can now be considered stable. MacOS X builds now have clipboard support. The hardware stretching renderers now have a couple of fixed aspect ratio modes.
  • The biggest feature of this release is the introduction of a portable network layer, which is currently being tested by the new built-in updater (F7/U).
  • Internally, MegaZeux is now modularized and builds as several DLL and EXE files, which should make redesigning parts like the help system and editor a little easier, as well as allowing us to ship a "mzxrun" executable for the first time since 2.69c. This "mzxrun" executable is now used by a majority of the console ports.
  • Contributions from Revvy, Mr_Alert, Terryn and Exophase have helped make this another solid release.
  • USERS:
  • Writing to $str.length (which previously did undefined things) will now truncate or enlarge the string to the size specified.
  • Removed filename size limit for FWRITE_MODIFY and FWRITE_APPEND. (Revvy)
  • Added support to the checkres tool to check worlds in non-local directories. (Revvy)
  • Fix an old bug with saving games and worlds from Robotic where a board could be prematurely "optimized", renumbering robot IDs within the same cycle. For commands like DIE this could cause unpredictable behaviour or simply crashes (if invoked in the same cycle). As a special case, end the cycle if either of these SET specials are used.
  • Mistaken or malicious file I/O such as set "$test" to "fread(-1>>1)" will no longer crash MegaZeux. The read size will be truncated to a contextual maximum for the current file.
  • Fixed a crash using "fwrite0" in conjunction with an empty string.
  • Fixed a bug where checking sprite_collisions on a disabled target sprite would unconditionally trigger (regardless of whether a collision was present or not).
  • Un-group the handling of the KEY and KEYn counters so that different compatibility checks can be applied to either counter. Fixes "Bocco Chronicles 1" and probably several other titles.
  • Fix a crash when using RIDn or ROBOT_ID_n in the same cycle as DIE for another robot positioned earlier in the board scan.
  • Fix poor sanity checks on BOARD_ID counter writes. Illegal character IDs such as -1 can no longer be used to bypass the check (causing subsequent crashes).
  • Windows builds now use a patched version of SDL 1.2.13 containing a fix for the directx+F10 issue.
  • Fix a bug where one robot could send another robot to "#return", with an address outside its program. In such cases, the robot will now terminate.
  • A "mzxrun" binary is now shipped alongside the editor-capable MZX binary.
  • Fix TIME/TIMERESET overflows with very large values. Board timeout is now programmatically limited to 32767, which is consistent with the Board Info control.
  • Clamp CHAR_X/CHAR_Y properly so that negative numbers can no longer be used to corrupt the editor charset and potentially other process memory.
  • Fix recent breakage of SHIFT+F{1,2,3,4} so that the percentage time spent displaying the original character and the '!' are equal.
  • Remove some bogus handling of lines containing "only" ';', ',' or ' '.
  • Honor user's robot character selection if they are holding shift when pressing return or space (would previously always return char 247).
  • Backspacing a line and then expanding a macro no longer restores the original line contents immediately after the expansion.
  • MacOS 10.x clipboard support (via Cocoa Pasteboard). Alt+Ins can be entered with Fn+Alt+Numpad0 on a Macbook or Powerbook keyboard.
  • Robot editor S_CHARACTER fields no longer bogusly escape characters such as ". In addition, rendering glitches are no longer encountered when using the ' S_CHARACTER (which is completely reasonable).
  • Fix robot editor glitches where the game charset SPACE would be used in places where the protected UI charset should be used instead.
  • The introductory help message is displayed if the load dialog is cancelled prior to loading a game. Hopefully the screen is now never totally blank.
  • The F7/F8 cheats can now be used freely in MZXRun (in MegaZeux proper they remain usable only in editor tests).
  • Saving to a directory above the MegaZeux startup directory, then attempting to save to this location again, will no longer crash MegaZeux. Instead, the parent directory will be changed into before the dialog is displayed.
  • Fixed numerous crash bugs with the scroll editor; it should be relatively usable now.
  • Writing to $str+0 is no longer interpreted in the same way as a plain write to $str. Instead, it behaves like writes to non-zero offsets (as more of a paste than a replace).
  • Display current X,Y position of robot in the robot editor status bar.
  • Fix directory rename so that it no longer displays garbage and/or crashes MegaZeux (Alt+R to rename a directory in any file picker).
  • In the robot editor, lines can now be split at a midpoint with enter and two consecutive lines merged together with backspace. (Exophase)
  • Fix use of status counter 6 and display of status counters in general, which has been broken since 2.80.
  • Fix swapping to encrypted worlds if initially the user decides to not decrypt the world. Previously, this would either crash, or loop forever.
  • - Removed the legacy "force_resolution" option which was replaced long ago by the more accurate "fullscreen_resolution" option.
  • When using the OpenGL or overlay renderers, in either windowed or fullscreen mode, the aspect ratio can now be preserved as either 4:3 (most similar to DOS) or 64:35 (most similar to the port). The display will be letterboxed or margins applied as appropriate. See the "video_ratio" configuration option for more information.
  • Fixed a bug on some systems where numlock could not be used as a key, only as a flag. The numlock "key" is now masked out of "key_code" and similar; hopefully this won't break any games.
  • Restored the meter widget from the old DOS MZX for use with the world loader and saver routines. This reassures users, especially on consoles, where loading a world can take a long time. (Mr_Alert)
  • On Windows, directx.bat now passes �% through to `start' so that features such as the updater continue to work. (MZXGiant)
  • Pasting into a string with set "$str+N" with an N > str.length will no longer crash MZX.
  • "Exit to DOS" is now "Exit MegaZeux" to reflect the multi-platform nature of the program.
  • Setting a substring size to zero with $string#0 will no longer return the whole string; it will instead return the empty string.
  • Accessing a substring with an offset >= $string.length will no longer return the last character from the string; it will instead return the empty string.
  • Writing beyond MAX_STRING_LEN (1MB) or using negative offsets (which has the same effect) no longer crashes. Instead, the write is ignored.
  • Fix crash when pasting to and from the same string, specifically in conjunction with $str+offset.
  • DEVELOPERS:
  • Ported to OpenSolaris. You need to install `SUNWxorg-headers' if you want X11 clipboard support.
  • Remove dependency on SDL_image on non-win32 platforms when enabling the icon branding feature (see pngops.c).
  • Ported to AmigaOS. You need to install the clib2 version of libSDL and miniGL, and the build system assumes you are using a cross compiler.
  • Added experimental port to the Wii. See arch/wii/README for more information. (Mr_Alert)
  • get_path() in util.c now returns