
Release Info
This release introduces mostly new editor features, but also a a few Robotic features to note. It also fixes over 30 bugs.
MegaZeux now features a palette editor for SMZX modes 2 and 3, and worlds can be saved and loaded in SMZX mode. The char editor has been changed to allow preview palettes (mostly to aid with SMZX editing), and can now access the extended character sets. The new vlayer editor allows the vlayer to be edited directly.
On the Robotic side of things, LOAD_COUNTERS actually works now, SMZX mode 3 indices can be loaded from a file, the message line can be configured to use normal MZX mode in SMZX modes, and new string features such as simple wildcard matching and negative offsets have been added. String support has been improved to disallow invalid or nonsense string splices that previously had undefined behavior.
Additionally, asie's new Nintendo 3DS port has been merged into MZX, and optional SDL support has been added for the Wii.
Complete Changelog
Credits
Lachesis - Developer, maintainer
Dr. Lancer-X - Developer (layer rendering)
asiekierka - Developer (3DS port)
Terryn - Help file, testing
Spectere - Darwin binaries
Insidious - Ubuntu binaries
>>DOWNLOAD MEGAZEUX v2.91<<













Or, on Windows, you can press U or F7 on the title screen to run MegaZeux's built-in updater.
>>Read the New Release FAQ<<
>>Standalone Release Guide<<
>>Online Help File (updated for 2.91)<<
New Features in MegaZeux 2.91
While not quite as feature-packed as 2.90, there are a lot of new features in this release.
New counters
- LOAD_COUNTERS - not "new", but now actually works as advertised.
- MOD_LENGTH - returns the length of the current playing file in rows (modules) or samples (OGG/WAV).
- MAX_SAMPLES - can be used to limit the maximum number of simultaneous samples. Defaults to -1 (no limit). There is also a new config file option "max_simultaneous_samples" that can be used to limit the maximum samples that will play at once universally.
- RANDOM_SEED0 and RANDOM_SEED1 - these counters read and write to the random seed, and can be used to manipulate random behavior in both Robotic and in MegaZeux built-ins. This may be useful for creating gameplay demos in games that rely on built-in enemies or SET RANDOM. They also persist between worlds, meaning they can be used to set up e.g. tool assisted speedruns.
- SMZX_MESSAGE - in SMZX mode when SMZX_MESSAGE is set to 0, the built-in message will display in regular MZX mode using the first 16 colors of the palette (like in 2.90X). Otherwise, it will display normally in SMZX mode. Defaults to 1.
- set "filename.palidx" "SMZX_INDICES" - loads a file of palette indices in SMZX mode 3.
Strings
- Malformed string indexes, offsets, and limits are no longer accepted. In other words, set "$string+1" "abcd" is considered valid, but nonsense like "$string+1aaaaaaaa" "abcd" is rejected.
- COPY BLOCK $string can now write to a string splice.
- Strings can now be referenced by negative indexes and offsets. The index or offset '-N' will read or write to/from the string at the Nth character counting from the end of the string.
- Strings can now be indexed by multiple characters at a time, e.g. set "counter" "$string.N#L". This can be used to read and write larger values than 255 to a string at the expense of using more characters. The value of 'L' can be between 1 and 4; when L is 4, the range of the value is equivalent to a counter.
- Strings can now be compared case sensitively with the === equality.
set "$string1" to "abc"
set "$string2" to "ABC"
. "The program will execute #inc."
if "$string1" = "$string2" then "#inc"
. "The program will NOT execute #dec."
if "$string1" === "$string2" then "#dec" - Strings can now be compared with basic wildcard matching using the ?= equality.
set "$string" to "abcde"
. "The ? wildcard can match any character exactly one time."
if "$string" ?= "a?c?e" then "#inc"
. "The % wildcard can match any number of or any character (including zero times)."
if "$string" ?= "ab%" then "#inc"
. "The two can be combined in any order."
if "$string" ?= "?%cd?" then "#inc"
set "$string2" "abc?%"
. "A string can be used for the pattern, as well."
if "$string" ?= "$string2" then "#inc"
. "To match a literal ? or %, use a backslash. The backslash will appear doubled; this is normal."
. "A case-sensitive version of this equality also exists."
if "$string" ?== "ABCDE" then "#dec"
Vlayer
- A new vlayer editor can be used to resize and edit the vlayer for any world. This editor is accessed by pressing Alt+V while editing a board, and functions mostly the same as the board editor. The vlayer is saved and loaded with the world.
- When VLAYER_WIDTH or VLAYER_HEIGHT are set during gameplay, they attempt to preserve the data overlapping the old dimensions and the new dimensions (i.e. like you would expect to see when you resize the vlayer in the editor). This only applies to 2.91+ worlds.
- When VLAYER_SIZE is increased, the new parts of the VLAYER are initialized to c07 char 32s. This only applies to 2.91+ worlds.
Super MegaZeux
- A new SMZX palette editor has been added for modes 2 and 3, giving access to all 256 colors in these modes and to the indices in mode 3.
- Color component values can now be typed into the palette editor by clicking a component's value.
- The SMZX mode, palette, and indices are now saved and loaded with MZX worlds.
- Various minor interface tweaks and fixes have been implemented to make SMZX more friendly to use in the editor.
- The F11 SMZX toggle has been replaced with a proper mode selection menu.
- The undocumented (mostly historical) Shift+F7 shortcut to toggle SMZX mode has been removed.
Char editor
- The char editor now supports SMZX modes properly.
- A preview palette can be selected in the char editor by pressing 'C'; the editing window and preview will be displayed in this color while it is active, as well as the selection in the char selector. Press 'Alt+C' to disable the preview palette. This feature is intended to make char editing easier in SMZX mode.
- Numerous missing shortcuts have been added to the char editor help; cycle pages by pressing 'H'.
- The char editor can now access extended charsets with 'PgUp' and 'PgDn'.
- The char editor's tiling behavior when using selections across multiple rows in the char selector has been improved. The plus and minus keys will now attempt to find the next valid tile in the character set, and these keys can now be used in the char editor's char selector to preview how a selection will tile. Note that certain selections (e.g. 3x3) will leave many chars unreached, as these sizes do not tile well inside of 32x8.
- The char editor's import/export functionality has been extended to allow for tiling in applicable situations. The regular import/export has also been improved to allow the selection of a different import/export size and to display instructions for multiple import/export.
- The last used dimensions for a given block size will be remembered between selections. For example, if 6 chars are selected at 2x3, then 2x3 will be highlighted the next time 6 chars are selected.
- The undo and redo shortcuts for the char editor have been changed to Ctrl+Z and Ctrl+Y.
- Mouse clicks are now properly handled by the undo stack.
Other editing
- The palette editor and character editor can now be opened during testing by pressing Alt+E and Alt+C (respectively) in the counter debugger.
- The board, overlay, and vlayer now have undo stacks that can be used to undo or redo changes to the board/overlay/vlayer data (Ctrl+Z and Ctrl+Y, respectively). These do not affect global settings, the global robot, board settings, or the board/vlayer size. The board/overlay stacks are cleared whenever the board is resized, cleared, or a new board is selected. The vlayer stack is cleared whenever the vlayer is resized or cleared.
- The default size for (all) undo stacks has been increased to 100.
- When creating a new world, the user will be prompted to create a new board. Entering a board name or pressing enter will generate a new board in addition to the titlescreen and set this new board as the starting board. Pressing escape to close this prompt will create just the titlescreen. This prompt can also be bypassed by holding Alt when entering the editor.
- Saved positions now have confirmation dialogs and are saved and loaded to the [world].editor.cnf file.
- Pressing 'Enter' on the overlay now grabs from the overlay and changes the both the overlay and the buffer instead of just changing just the buffer.
- Pressing 'P' on the overlay now edits the buffer, not the overlay.
- Ctrl+Arrows doesn't require an initial block to be placed anymore.
- Alt+D now toggles default colors for placed objects (as in DOS versions). When default colors are disabled, a red dot will appear on the status bar.
- The color selector can now seek to a color when a hex color number is typed in, e.g. "FF" will jump to color 255.
Misc
- MegaZeux can now be played on the Nintendo 3DS.
- The Wii port has been restored to (mostly) working order.
- The Nintendo DS port can now create and load saves properly.
- When a scaling shader fails to compile, MegaZeux will now attempt to fall back to the default shader.
- Unbound sprite ccheck mode 3 now works correctly.
- When SPR_YORDER is enabled and multiple sprites have the exact same (Y + CY) value, they are now consistently drawn in the order of their sprite numbers.
- The downver utility has been reimplemented. Downver is still available from the Export menu as well.