MegaZeux 3DS

From GameBrew

AuthorMegaZeux developers
Last Updated2020/11/22

MegaZeux is a game creation system (GCS) created by game developer Alexis Janson in 1994. Originally a DOS program, in 2005 a multi-platform port was released by Exophase. The most recent version of MegaZeux is 2.92f, which was released on November 22nd, 2020.

MegaZeux is officially supported on Windows, Linux/BSD, MacOS, as well as the NDS, 3DS, Wii, and PSP consoles. Historical support has also existed for GP2X, Pandora, and AmigaOS 4.


Copy the megazeux folder to the 3ds folder of your SD card. You can place the game (.mzx) anywhere on the SD card.

Then take a look at the config file and edit it according to your preference.

User guide

Config file

One of the first things you should do is edit the options in the config file; even experienced MZXers may find some of the customization options novel and useful. Open config.txt in any text editor, there is ample commentary to let you know how to change the options. Make sure to remove the # sign from any option you want set.

Editing the options can result in better sound, better/more customizable graphics, more fitting defaults, a more personalized Robotic editor, joystick support, extended macros, automated backup and much more. New versions - even minor version changes - can add new options to the config file or rename old ones, so it is helpful to keep this file current.

Online resources


Title screen:

A or Start - Play game

B or Select - Main menu

X or ZL - Load world

Y or ZR - Reload save

L/R - Settings

ZL - Load world

ZR - Reload save

Window, Game key (default):

D-Pad - Cursor, Move

A - Select, Space (shoot)

B - Cancel, Delete (lay bomb)

X - Select char, Enter (game menu)

Y - Backspace, S (Caverns: spells)

Select - Cancel, Game menu

Start - Select, Game menu

L - Next element, Insert (switch bombs)

R - Settings, P (Caverns: altar)

ZL - Page up, F3 (save game)

ZR - Page down, F4 (load save)

C-Stick Left - Home

C-Stick Right - End


megazeux3.png megazeux4.png

megazeux5.png megazeux6.png

megazeux7.png megazeux8.png

Known issues

Out of memory for larger worlds. See MegaZeux Bug tracker.


MZX 2.92f 2020/11/22


  • Added audio support to the NDS port. PC speaker effects and .SAM files will work out of the box, but .MOD/.S3M/.XM/.IT files require preconversion to .MAS using mmutil. All other audio formats are unsupported. (asie). Example mmutil -d -m CV_TECH.MOD.
  • Added protected character set and palette support to the NDS port and reduced overall RAM usage for the NDS port. (asie).
  • Fixed a bug in the NDS port where MZX would immediately focus the player after a touchscreen press event, preventing the touchscreen from being used to scroll the upper screen. (asie)
  • Fixed a crash that could occur sometimes when duplicating robots on a board with Reset Board on Entry enabled.
  • Added SET RANDOM, INC RANDOM, DEC RANDOM, and TAKE "label" commands to the list of commands that should allow "infinite" loops in pre-2.80 versions.
  • Fixed SET RANDOM # TO # for large ranges on certain platforms (example: Linux) confused by the 32-bit math used to calculate the random range.
  • Fixed crashes that could occur when attempting to run MegaZeux without help.fil.
  • Fixed graphics corruption when using the glsl and opengl2 renderers on big endian platforms.
  • Fixed a bug that would cause string searches to sometimes skip certain matches.
  • Improved performance of saving ZIP worlds/save files/etc. for some platforms.
  • Platforms without a protected palette and the meter enabled should now fade out properly before loading a world.
  • Rewrote decrypt() to work better on low-memory platforms.
  • Improved GLSL layer renderer performance slightly by sending the palette and indices to the GPU fewer times per frame.
  • Fixed a bug where the GLSL renderer could attempt to load the framebuffer symbols from a driver that doesn't support them when resizing the window.
  • Fixed a bug where checkres wouldn't correctly detect "LOAD_ROBOT#" when used to load to a specific robot.
  • Fixed a memory leak when printing network error messages in Windows builds.
  • Fixed a potential crash bug in the netcode where socket IDs could be reused after close() when attempting to connect.
  • Fixed a crash bug affecting the compatibility implementation of getaddrinfo() that would occur if NULL was returned by gethostbyname() during DNS resolution.
  • Fixed a potential crash in the compatibility implementation of getaddrinfo() caused by gethostbyname() being thread-unsafe.
  • Fixed a bug where the updater would hang for up to 10 seconds due to connections timing out during the confirmation UI.
  • Fixed a bug where the local manifest.txt would be overwritten by the remote manifest, potentially causing bugs. The local manifest will now be replaced only after a successful update.
  • Fixed bugs where the HTTP layer would filter header names, content/transfer coding values, and content type values too strictly.
  • Fixed a bug where INPUT STRING would display newlines from an interpolated string.
  • MZX now validates the world version of encrypted worlds before offering to decrypt them. This should reduce the chance of accidentally "decrypting" a corrupted file and prevents MZX from attempting to decrypt MZX 1.x files (which store the password differently).
  • Added config settings "editor_show_thing_blink_speed" and "editor_show_thing_toggles". The former controls the blinking speed of the show thing (Shift+F2 et al.) editor keys and the latter allows these keys to be treated as a toggle instead of blocking input.
  • Added SOCKS5 IPv6 and username/password support.
  • Added "network_address_family" config setting to allow users to force either IPv4 or IPv6 connections/name resolution. By default, MZX will now request either or both depending on the system IP address configuration (previously, it was hardcoded to only allow IPv4 despite IPv6 support being implemented).
  • The config setting "updater_enabled" has been added to turn off the updater system entirely without disabling networking.
  • The updater now allows update checks to be performed even when a full update wouldn't be possible, and should be more helpful about printing warnings to the console when this situation occurs.
  • Enabled rewinddir hack and .. file manager hacks for Nintendo Switch builds to fix the file manager and directory seeking.
  • Fixed a bug where importing a board over the title board would not update the world title.
  • Fixed a crash that could be caused by selecting a block on the overlay/vlayer, changing boards, then pressing enter.
  • Fixed a bug where the currently playing PC speaker note would play for the rest of its duration after turning off PC speaker sound effects, after "end play", after exiting gameplay, etc.
  • Fixed a regression where turning off music in the settings menu and then turning music back on would not start playing the music file for the current board.
  • Fixed multiple libvorbis and tremor crashes related to the 3DS platform_mutex_lock implementation not blocking.
  • Fixed audio frequency bugs in .SAM file playback.
  • Certain .WAV subtypes handled by SDL_LoadWav should now load properly on big endian machines.
  • Signed 16-bit samples should now work correctly with MOD SAM on big endian machines.
  • Fixed the white border present when using the GLSL renderer in HTML5 builds.
  • Added joystick input handlers for most editor interfaces. Only very basic things are supported like navigating boards and robots. This is intended for things like handheld consoles without a keyboard.
  • Fixed a bug where turning off the listening mod would load the mod that was playing when the listening mod was loaded instead of the current board's mod.
  • Fixed a bug where setting a board mod to a partiular mod, then setting the board mod to *, then changing to a different board with the same mod would not restart the board mod.
  • Fixed a bug where libxmp would not ignore zero volume samples in STM files.
  • Restored libxmp support for Soundtracker 2.6/IceTracker .MODs. Currently only libxmp supports this .MOD variant.
  • Fixed a bug where MZX would fail to load Noisetracker, Octalyser, and Mod's Grave .MOD files if they were named using the extensions .NST, .OCT, and .WOW (respectively). These can now be selected with Alt+N/Ctrl+N in the editor.
  • Enabled loading .XM and .AMF files with MikMod. Whatever the issue was with these in 2007 seems to have since been fixed.
  • Fixed loading Soundtracker 15-instrument .MODs with MikMod.
  • Fixed MOD_POSITION and MOD_LENGTH counters for MikMod.
  • MikMod now uses interpolation if module_resample_mode is set.
  • Disabled playing modules using the SAM command with MikMod to avoid crashes due to MikMod using a global player state.


  • The test worlds now run correctly when AddressSanitizer is enabled.
  • The SUPPRESS_BUILD Makefile flag has been split into several flags, allowing more granularity for disabling default rules. The Android and Darwin "dist" meta targets use these flags to to disable the default "all" target, so "make" can now be used in place of "make dist" for these platforms.
  • Using "make build" will now remove the build/${SUBPLATFORM} directory if it exists before preparing a build. Before, using "make build" when the platform build directory already exists would not copy any updated binaries/assets/etc., potentially causing confusion.
  • The check_alloc series of functions should now be thread safe. The main thread will display a fatal error as usual when allocation fails; others threads will print a warning and return NULL.
  • Added implementations of new/delete/__cxa_pure_virtual that can be linked to avoid linking libstdc++/libc++ on platforms and configurations that otherwise don't need those libraries.
  • Refactored the netcode to use C++ instead of/in addition to C, allowing some cleanup that otherwise wouldn't have worked. Host::bind, Host::listen, Host::accept, and Host::poll are no longer disabled. Other network deadcode functions have been updated but are still disabled.
  • Fixed FD_ISSET in the Windows netcode.
  • Added a EAI_AGAIN define for the getaddrinfo() fallback.
  • Fixed leak of updates.txt file pointers in the updater that could occur when updates.txt fails to download. The updater now downloads updates.txt to a buffer instead of to disk.
  • Added graphics.renderer.hardware_cursor for platforms with hardware cursors that may need to be updated during any frame regardless of the current cursor state/blinking (i.e. DJGPP).
  • Fixed "make build" error after using "make debuglink" with png support disabled.
  • Added const and restrict to the software render_graph and render_layer implementations for a small performance boost.
  • Added --disable-getaddrinfo and --disable-ipv6 flags to allow disabling these for old platforms and consoles SDKs. Amiga, Wii, and PSP network builds force-disable these. Switch and 3DS builds currently force-disable IPv6.
  • Added experimental network support for Wii, Switch, and 3DS.
  • Updated libxmp to git-ab70ec9f, refactored libxmp patches.
  • Removed unused libxmp Paula simulator code to save RAM. (asie)
  • SDL is no longer required to build MZX with MikMod enabled.
  • Fixed MikMod static linking on Windows.
  • Added --disable-stack-protector option. Platforms that previously disabled the stack protector in the Makefile now force disable this config option. These force disable hacks will probably be removed in the near future.


  • Programming and Overall Design by Gilead Kutnick (Exophase), Alistair Strachan (ajs), Alice Rowan (Lachesis) and Lancer-X.
  • Based off of original program and source code by Alexis Janson.
  • Help file by Terryn.
  • Default SMZX palette by Joel Lamontagne (LogiCow).
  • ccv utility by Lancer-X. png2smzx utility by Alan Williams (Mr_Alert). checkres utility by Josh Matthews (Revvy), ajs and Lachesis.
  • Port contributors: Adrian Siekierka (asiekierka) [3DS], Mr_Alert [Wii], Kevin Vance [NDS], Simon Parzer [GP2X].
  • Renderer code contributors: LogiCow, Mr_Alert. Shader code contributors: David Cravens (astral), GreaseMonkey.
  • Icon by Quantum P.; Extra icons by LogiCow. GDM conversion by ajs and MadBrain. Other past contributors: Spider124, Koji, JZig, Akwende, MenTaLguY.
  • Special Thanks to Dizzy (Testing, .deb and Arch packages) Spectere (Testing, OS X Builds, MSVC project) Terryn (Testing) mzxgiant (MSVC Testing, Bug Fixes) mzxrules (Testing) Quantum P. (OS X Testing / Builds) Wervyn (Testing).

External links