Super MegaZeux: Difference between revisions

From MZXWiki
Jump to navigation Jump to search
(→‎Compatibility: Add kepstin's tests)
(→‎Incompatible hardware: Remove "first 16 colors" since it's not really helpful.)
Line 274: Line 274:
  | smzxtest
  | smzxtest
  | [https://tenforward.social/@kepstin/112034014921477716 kepstin]
  | [https://tenforward.social/@kepstin/112034014921477716 kepstin]
  | Doubles left pixel, 16 colors.
  | Doubles left pixel.
  |-
  |-
  | ATI Mobility Radeon X1300
  | ATI Mobility Radeon X1300
Line 281: Line 281:
  | smzxtest
  | smzxtest
  | pagerorgy
  | pagerorgy
  | No doubling.
  | No doubling. (ATI detected)
  |-
  |-
  | ATI Radeon HD 3450 (B629)
  | ATI Radeon HD 3450 (B629)
Line 288: Line 288:
  | 2.93
  | 2.93
  | Lachesis
  | Lachesis
  | Displays regular text mode, first 16 colors of VGA palette. The colors are derived from SMZX colors X0h and everything is shifted left by 1 pixel, suggesting ati_fix is being applied. This card needs further testing.
  | No doubling. (ATI detected)
  |-
  |-
  | Intel 852GMV
  | Intel 852GMV
Line 295: Line 295:
  | 2.93
  | 2.93
  | Lachesis
  | Lachesis
  | Doubles left pixel, first 16 colors of VGA palette.
  | Doubles left pixel.
  |-
  |-
  | Intel GMA 3100 (Intel G33)
  | Intel GMA 3100 (Intel G33)
Line 302: Line 302:
  | 2.93
  | 2.93
  | Lachesis
  | Lachesis
  | Doubles left pixel, first 16 colors of VGA palette.
  | Doubles left pixel.
  |-
  |-
  | Intel HD Graphics 2000
  | Intel HD Graphics 2000
Line 309: Line 309:
  | smzxtest
  | smzxtest
  | Lachesis
  | Lachesis
  | Doubles left pixel, first 16 colors of VGA palette.
  | Doubles left pixel.
  |-
  |-
  | Matrox MGA Millenium
  | Matrox MGA Millenium
Line 330: Line 330:
  | 2.93
  | 2.93
  | Lachesis
  | Lachesis
  | Doubles left pixel, 16 colors.
  | Doubles left pixel.
  |-
  |-
  | NeoMagic MagicGraph256AV (NM2200)
  | NeoMagic MagicGraph256AV (NM2200)
Line 337: Line 337:
  | smzxtest
  | smzxtest
  | [https://pouet.chapril.org/@bartitsu59/112033087218073323 bartitsu59]
  | [https://pouet.chapril.org/@bartitsu59/112033087218073323 bartitsu59]
  | Doubles left pixel, first 16 colors of VGA palette.
  | Doubles left pixel.
  |-
  |-
  | NeoMagic MagicGraph256ZX (NM2360)
  | NeoMagic MagicGraph256ZX (NM2360)
Line 344: Line 344:
  | 2.93
  | 2.93
  | Lachesis
  | Lachesis
  | Doubles left pixel, 16 colors.
  | Doubles left pixel.
  |-
  |-
  | NVIDIA GeForce 940MX
  | NVIDIA GeForce 940MX
Line 358: Line 358:
  | 2.70
  | 2.70
  | [https://github.com/joncampbell123/dosbox-x/issues/4764#issuecomment-1918121416 Jon Campbell]
  | [https://github.com/joncampbell123/dosbox-x/issues/4764#issuecomment-1918121416 Jon Campbell]
  | Doubles left pixel, 16 colors.
  | Doubles left pixel.
  |-
  |-
  | S3 Trio64V
  | S3 Trio64V
Line 365: Line 365:
  | 2.93
  | 2.93
  | Elig
  | Elig
  | Doubles left pixel, 16 colors.
  | Doubles left pixel.
  |-
  |-
  | SiS 530
  | SiS 530
Line 372: Line 372:
  | smzxtest
  | smzxtest
  | [https://mastodon.social/@indigoparadox/112032243607415455 indigoparadox]
  | [https://mastodon.social/@indigoparadox/112032243607415455 indigoparadox]
  | Doubles left pixel, first 16 colors of VGA palette.
  | Doubles left pixel.
  |}
  |}



Revision as of 19:33, 4 March 2024

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 by NVIDIA, C&T, ATI, and possibly other 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

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

  • Modes 1 and 2 only work on selected video hardware in DOS versions. Most DOS emulators, including DOSBox, do not support SMZX. Mode 3 was invented for the SDL port and has no hardware equivalent.
    • Prior to MegaZeux 2.93, to support Super MegaZeux correctly on DOS versions of MegaZeux combined with certain graphics cards, the creation of an "ati_fix" file in the same directory as the MegaZeux executable was required. This causes MegaZeux to tweak the horizontal pixel shift register and reverse the nibble order of each color. Newer versions of MegaZeux attempt automatic detection.
    • In MegaZeux 2.93 and above, the SVGA renderer can be used to draw SMZX in software. This enables its use on any SVGA-compatible graphics card, albeit at a performance cost compared to the EGA renderer.
  • 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.
    • Hardware SMZX in DOS does not support this and still draws the UI in SMZX mode.
    • 8bpp software rendering also doesn't support this and will draw the UI in normal mode but with SMZX palette colors.
  • SMZX modes are not supported by the (fairly limited) Nintendo DS port.

Compatible hardware

Hardware with Working SMZX Support
Video Adapter Year Device(s) Last tested MZX version Reverse nibbles? Horizontal shift hack? Reported by Notes
ATI Mobility Radeon X300 2005 ThinkPad T43 smzxtest Yes Yes pagerorgy
ATI Radeon 7000 (AGP) 2001 - smzxtest Yes Yes kepstin
ATI Radeon 8500 2001 - 2.70 Yes Yes ? ati_fix
ATI Radeon 9200 SE 2003 - smzxtest Yes Yes kepstin
ATI Rage Mobility-P (AGP) 1999 - smzxtest Yes Yes kepstin
ATI Rage XL (AGP) 1998 - smzxtest Yes Yes kepstin
C&T CT65548 1995 Toshiba Satellite 100CS 2.70 No No Lachesis
C&T F65554 1997 Toshiba Satellite Pro 465CDX 2.70 No No Jon Campbell
NVIDIA GeForce 2 MX100/200/400 2001 - 2.70, smzxtest No No Terryn, kepstin
NVIDIA GeForce 4 MX420 2002 - smzxtest No No kepstin
NVIDIA GeForce 6200 (AGP) 2005 - 2.93 No No BFeely
NVIDIA RIVA TNT2 1999 - 2.70 No No ?
Oak Technology OTi037C 1988 - smzxtest Yes No SpindleyQ
S3 UniChrome Pro (VIA VT3344) 2006 Neoware CA21 (VIA CN700) 2.93 No No Lachesis

Incompatible hardware

The most common failure mode for SMZX in video adapters seems to be a "pseudo-SMZX" mode with a 320x350 resolution where, for every pair of text mode pixels, the left 4-bit color is selected instead of combining their respective 4-bit colors into an 8-bit color.

Hardware with No SMZX Support
Video Adapter Year Device(s) Last tested MZX version Reported by Notes
3dfx Voodoo 3 2000 (AGP) 1999 - smzxtest kepstin Doubles left pixel.
ATI Mobility Radeon X1300 2006 IBM ThinkPad T60 smzxtest pagerorgy No doubling. (ATI detected)
ATI Radeon HD 3450 (B629) 2007 - 2.93 Lachesis No doubling. (ATI detected)
Intel 852GMV 2004 Dell Inspiron 1150 2.93 Lachesis Doubles left pixel.
Intel GMA 3100 (Intel G33) 2007 Dell Inspiron 530 2.93 Lachesis Doubles left pixel.
Intel HD Graphics 2000 2011 Intel Core i5-2400 smzxtest Lachesis Doubles left pixel.
Matrox MGA Millenium 1995 - smzxtest kepstin No doubling.
Matrox Millenium G200 (AGP) 1998 - smzxtest pagerorgy No doubling.
NeoMagic MagicGraph128XD (NM2160) 1998 IBM ThinkPad 560X 2.93 Lachesis Doubles left pixel.
NeoMagic MagicGraph256AV (NM2200) 1998 IBM ThinkPad 380Z smzxtest bartitsu59 Doubles left pixel.
NeoMagic MagicGraph256ZX (NM2360) 1999 IBM ThinkPad 600X 2.93 Lachesis Doubles left pixel.
NVIDIA GeForce 940MX 2016 Acer Aspire E 15 E5-575G-53VG smzxtest Lachesis Doubles left pixel.
Paradise/Western Digital SVGA (unknown model) 1994 Compaq LTE Elite 4/50CX 2.70 Jon Campbell Doubles left pixel.
S3 Trio64V 1995 Compaq 4704 2.93 Elig Doubles left pixel.
SiS 530 1998 Compaq Presario 5184 smzxtest indigoparadox Doubles left pixel.

Notable games that use SMZX mode