Super MegaZeux

From MZXWiki
Revision as of 03:36, 13 April 2021 by Lachesis (talk | contribs) (Cleanup, update with newer information.)
Jump to navigation Jump to search
Super MegaZeux
And.png
Author MadBrain, Akwende, Exophase
Company n/a
Release Date n/a
Genre MegaZeux Fork, regular feature since 2.69
Download DMZX Archive

Super MegaZeux (or SMZX mode) is the name for an alternative graphics mode accessible through MegaZeux. Its first mode (SMZX mode 1) was first introduced by MadBrain in a fork of 2.51s3.2; this original version was referred to as Super MegaZeux 100 Alpha (smzx100a). It relied on a little-documented text mode supported almost exclusively by nVidia and ATi chipsets. SMZX mode 1 was included in MZXAk, but not in any other MZX releases until MZX 2.69, which sported the original mode plus the more advanced mode 2. Mode 3 was introduced in 2.80, and does not correlate to an actual hardware text mode (as MZX no longer actually relied on text mode).

SMZX mode can be accessed by setting the SMZX_MODE counter to 1, 2, or 3. In the editor, the current SMZX mode can be changed with the Select Screen Mode dialog (F11).

How It Works

SMZX Mode halves the horizontal screen resolution in favor of adding two colors per character, effectively making a color palette of 256 unique colors.

Each "pixel" in SMZX can be either color I (represented in MZX mode as two 'off' pixels), color II ('on' and 'off'), color III ('off' and 'on') ad color IV (both 'on').


SMZX Mode 1

SMZX mode 1, the original mode, generates two new palette colors as intermediates of the two normal-mode colors specified by the palette. This is the simplest Super MegaZeux mode to use, and is used in conjunction with a standard 16 color MZX palette. The example below uses the default palette for simplicity.

SMZX Mode 1
Palette color Derived by Example (c4F)
Color I Background of specified palette 42, 0, 0 (color 4)
Color II 1/3 between BG and FG colors 49, 21, 21
Color III 2/3 between BG and FG colors 56, 42, 42
Color IV Foreground of specified palette 63, 63, 63 (color 15)


SMZX Mode 2

SMZX mode 2 was the first to allow 4 colors per character that the user had full control over. It uses the same color matrix as SMZX mode 1, but instead of automatically generating the new colors off of a standard 16 color palette, it references a user-defined 256 color palette to find the colors. All colors are defined in pairs of 2 hex digits, represented below by 0xNN. Given the same example palette as before, c4F, the colors are referenced as such:

SMZX Mode 2
Palette color Derived by Example (c4F)
Color I Uses the background color for both hex digits Color #0x44 (68 decimal)
Color II Uses the FG for the most significant hex digit and the BG for the least significant hex digit Color #0xF4 (244 decimal)
Color III Uses the BG for the most significant hex digit and the FG fore the least significant hex digit Color #0x4F (79 decimal)
Color IV Uses the foreground color for both hex digits Color #0xFF (255 decimal)

If the color indexes for colors II and III seem backwards to experienced programmers, it is not a mistake; this is how they actually are.


SMZX Mode 3

SMZX mode 3, which was added with the SDL port, uses a palette of 256 separate colors as opposed to 16 foreground and 16 background colors (each color, in hex, is a 2-digit pair consisting of the background color and the foreground color). Characters can access these as following:

SMZX Mode 3
Palette Color Derived by Example (c4F)
Color I The color in the palette specified by cXX Color #0x4F (79 decimal)
Color II Color I plus 1 Color #0x50 (80 decimal)
Color III Color I plus 2 Color #0x51 (81 decimal)
Color IV Color I plus 3 Color #0x52 (82 decimal)

hence yielding a set of 64 unique color palettes. The colors wrap around, so a character set to color 255 (0xFF) will use color 0 for color II, etc.

As of MegaZeux 2.90, the color mappings of all 256 subpalettes in SMZX mode 3 can be customized either by using the SMZX_IDXx,y counter or by reassigning them in the SMZX palette editor.

Compatibility issues

There are some minor and/or past issues with SMZX mode:

  • Modes 1 and 2 only worked on selected video hardware in DOS versions. DOSBox does not support SMZX.
  • Prior to MegaZeux 2.90, the Super MegaZeux modes did not leave room in the palette for the reserved UI colors, and thus the UI borrowed the game colors. This resulted in the UI palette looking corrupted, especially in SMZX mode 3. As of MegaZeux 2.90, the UI is almost always drawn in normal mode with the protected palette. (The main exception to this is 8bpp indexed software rendering, which still has graphical issues.)
  • SMZX modes are not supported by the (fairly limited) Nintendo DS port.

Notable games that use SMZX mode