First off:
Almost always use the most recent release of MegaZeux (no, really).
The MegaZeux port historically has had mixed success in terms of keeping compatibility with older games. Much has been done since by ajs, Lancer, and I to fix these issues, but I'd like to continue improving support for older games where needed so there are as few excuses as possible for using old/slow/buggy/unstable versions of MZX.
This thread is meant to collect info on the known cases where actual compatibility issues still do exist and document past compatibility issues and when they were resolved. Note not every compatibility fix needs to be in this list, just the ones with known worlds that had the issue and were fixed. Also, short-term regressions are not accounted for here; this is primarily for notable long-standing issues, mostly due to changes between DOS versions or changes made in 2.80.
If you know of a game that doesn't work properly in the most recent release and needs a fix, please post about it here and/or report it to the bug tracker. We can't fix compatibility issues that we don't know about, and knowledge of some issues by the MZX development team has been lost over time. If there's a released game that previously had a compatibility issue that has since been fixed but isn't on this list, it's also worth posting here so it can be added to the list. Issues that were fixed years ago are likely underrepresented here.
Special thanks to Terryn for helping with this list and for finding/cataloguing a significant number of these compatibility issues in the first place.
Post Changelog
- 2019-07-22: Created this thread to correspond with the release of MegaZeux 2.92. (Lachesis)
- 2019-07-22: Added a world category to the patched to work section (worlds that originally referenced full-length filenames but had 8.3 files), clarified Captain Proton issue a bit. (Terryn)
- 2019-07-22: Added null-terminated string comparison bug (Mines of Madness). (Lachesis)
- 2019-08-31: Added MZXAk robot targeting section (Weeding out the Bad Plants). (Terryn)
- 2019-09-15: Fixed protected palette version/date, added protected charset to the same note. (Lachesis)
- 2019-09-24: Added COLOR FADE OUT save bug. (Lachesis)
- 2019-09-27: Change link to new downloads page. (Lachesis)
- 2019-09-28: Added MZXAk VALUE counter section, included Smallhacker Sidescrolling Engine in DOS SMZX list. (Terryn)
- 2020-05-08: Updated for 2.92c and 2.92d, added ZeuxNAX to the list of games relying on .SAM linking to .WAV, and clarified the issue with Slave Pit's global robot. (Lachesis)
- 2021-04-14: Added Xenogenesis title screen char editing issue, replaced remaining "vault" links.. (Lachesis)
- 2022-04-14: Tone tweaks and some examples of when not to use the latest version. (Lachesis)
- 2024-04-26: Added Nobo's Airship Engine. (Lachesis)
Example reasons why you might actually want to use older versions
- Your game was made with an older version and you're making minor updates or tweaks to it. Editing and saving it with the old MZX version ensures the version compatibility checks in newer MZX versions continue to work. It isn't always obvious when a game relies on these. To determine which version to use, you can open your game in the editor in a newer MZX release and press Alt+Y to open the debug window. The top right corner of the box will indicate which release series your game was previously saved with.
- Exploring the limitations of some particular DOS version of MZX. A lot of the DOS versions are landmark releases in their own right and are interesting because of that.
- Probably others...
Games that may still need to be played in older versions
- Anything still listed in this post. There are not very many of these and all of them should be patchable (and some can be fixed in future versions, despite what the title implies).
- Anything relying on subtle differences in the <2.80 behavior of COPYROBOT "" and RID*. This only goes for things actually legitimately broken by this.
- The Evil Midnight Bomber vs. The City by Impulse Software is completely playable in the port, but has a minor bug caused by this. This is the only known case of this bug affecting anything at the moment.
- Any <2.80 game that expects KEY_CODE to not have an autorepeat stall
- mo3_fungahhh.MZX by Fungahhh is the only known game to be "significantly" "affected" by this.
- Any <2.80 game relying on palette changes being delayed until after the robot message box closes.
- FIND TEH MEDICINE FOR OLD MAN (27523) by zombieguy will display an invisible message box on load because of this.
- Any game that uses MZXAk's inter-robot targeting feature.
- Weeding out the Bad Plants (404) by Leper_Mess uses inter-robot targeting to perform actions like sending a squad to a specific spot. This only works in MZXAk versions as inter-robot targeting was removed in MZX 2.6.
- Any game that uses MZXAk's obseleted built-in math counters.
- Global Death (34129) by Leper_Mess uses certain math counters introduced in MZXAk (ABS_VALUE, SQRT_VALUE, VALUE) to handle momentum for the first level's player character and to control projectiles in another level. These counters were replaced in 2.68 by more efficient counters named ABSn and SQRTn.
- Any game relying on the bizarre <2.6 behavior that allowed setting a user counter to override any built-in read-only counter.
- Nobo's Airship Engine and Nobo's Airship Engine v2 override PLAYERX and PLAYERY for the airship position and currently need to be played in a version between MZX 2.51s2 and MZXak.
- Games from <2.69c that rely on page flipping bugs in older DOS MZX versions.
- Xenogenesis by Autumn Dreams has a minor title screen graphical glitch in MZX versions 2.69c and up because it moves the title graphic a cycle early. This looked correct in prior versions due to MZX updating the wrong charset page, causing char edits to lag slightly behind.
- Pre-2.83 SVN games need to be played with a version of MegaZeux that isn't currently available in the archive. All known worlds with this issue can be fixed by changing a single byte in a hex editor. Known games in the archive that haven't been fixed:
- Gravity BKZX (tixrev2.mzx only)
- Revenge of the Toaster by LogiCow (easy.mzx only)
- Gravity BKZX (tixrev2.mzx only)
- Games from <2.80 relying on SFNs that can't be reproduced by normal means.
- Nova Force Demo 1 by Padogle somehow contains the SFN "CHEE#DF0.MOD" which is expected to link to the file "cheeseburger.mod"; this isn't a typical Win 9X generated SFN so it can't really be supported. This is the only file in the game that is affected and the second demo doesn't have the issue. This doesn't work in DOS MZX either unless the file is manually "corrected" to the expected name.
- Games intentionally designed to have version incompatibilities.
- ASCII Robowars 3D Demo Re-Release by Gemini uses the local counter to determine whether the user is running 2.51 or 2.51s1 and uses this to selectively enable one of two demo levels. Because this counter has a version check as of MZX 2.82, the game will always "detect" 2.51 and enable the cave level. The other level can be accessed by toggling the value of the "s3mode" counter with the editor, resaving the game with a later version, or by playing the game in a version between 2.51s1 and 2.81h.
Games that have been patched to work
- Any 2.68 game that relied on 2.68 features. The originals of these games worked ONLY in 2.68. The fix was just to resave these with MegaZeux 2.69, so they now they work in all versions from 2.69 up. The originals are still available as well if you need the most Authentic™ A* Pathfinding Engine experience possible.
- A* Pathfinding Engine by Koji
- BitSystem Inventory by Revvy
- Circles by Skylark
- Raycasting Engine by Mikawo
- A* Pathfinding Engine by Koji
- Pre-2.83 SVN games that were fixed:
- Pretentia by CJA
- Bombin' Dude by CJA (v2 was the bad release)
- Pretentia by CJA
- DOS-era games that had 8.3 filenames but referenced their intended full-length names.
- Hamlet by Rawhide C (simply repackaged with duplicate files with full namelengths)
- Zombie Quest by Jester/Jauhis (edited to reference the 8.3 filenames)
- Hamlet by Rawhide C (simply repackaged with duplicate files with full namelengths)
<2.80 games that DON'T work properly in DOS or DOSBox, but work in the port.
- Any <2.80 game that used SMZX (poor support with real hardware, doesn't work at all in DOSBox).
- Distance (28571) by Exophase, Quasar84, and Ghent.
- Hackers Can Turn Your Computer into a Bomb! by LogiCow
- Kaboink! by LogiCow
- SMZX Paint by LogiCow
- SMZX Tetris by Akwende
- Smallhacker Sidescrolling Engine by Smallhacker
- Distance (28571) by Exophase, Quasar84, and Ghent.
Fixed since MegaZeux 2.80g (2005-04-01) and/or MegaZeux 2.80h (2005-06-06)
- Palette edits and custom charsets no longer affect most UI elements.
- Essentially any non-SMZX game with an edited palette or charset.
Fixed since MegaZeux 2.81e (2007-01-20) and MegaZeux 2.81g (2007-07-04)
- Any game relying on counter names conflicting with the built-in counters KEY# and RID*:
- Doom Keep by ManofAction
- Nightmare MZX by Kewlio (1.0 only)
- Town of ZZT by Gemini
- Doom Keep by ManofAction
Fixed since MegaZeux 2.82 (2008-06-10)
- Most other games relying on counter names that conflicted with built-in counters added later:
- No specific examples prompted this fix, but if any are found, they should be added here.
Fixed since MegaZeux 2.84 (2012-06-03)
- Any game relying on the legacy cycle-ending behavior of labels.
- Kya's Sword by RyanThunder
- Stones and Roks II by zombieguy
- Kya's Sword by RyanThunder
- Any game relying on MOD "filename.mod*" loading filename.mod and then setting the board mod to "*".
- This fix may have been prompted by no specific example in particular.
Fixed since MegaZeux 2.84b (2012-06-21) and 2.84c (2012-12-24)
- Most games that could cause crashes from corrupted world data (LIST HERE). Due to the nature of these worlds they'll probably never work as originally intended, but this was true when they were first released anyway.
Fixed since MegaZeux 2.90 (2017-06-29)
- Any 2.83 game relying on the cycle-ending behavior of the SHOOT / SHOOTMISSILE / SHOOTSEEKER / SPITFIRE commands that was unique to that version.
- Cavern of Avians Z by Lachesis (1.0 only)
- Ryan Thunder by RyanThunder (1.0 only)
- Cavern of Avians Z by Lachesis (1.0 only)
- Any <2.80 game that relied on COPY BLOCK preserving the current robot line.
- Azeroth Demo by James Wong
- Dungeons of Dismay by PenguZ
- Technicolor Cheese Wedge Demo by Tony Sovari, although while this game is now at least playable, another compatibility issue that has not yet been resolved means this game is still buggy.
- Azeroth Demo by James Wong
- Any <2.60 game that relied on the limited range of keycodes returned by the KEY counter, and any <2.80 game that relied on KEY being a board counter instead of a global counter.
- Oath Demo by Caleb Seibert
- Any game that relied on multiple copies of labels with at least one copy of the label at the end of the program.
- Zane: Professional Idiot Demo from Dark Corner by Duhreetoh
- Any game with known unescapable infinite loop bugs caused by setting commands too high.
- Pandora's Gate (original DoZ version) by Lancer-X, Lachesis, and asgromo
- Any <2.80 game that relied on the maximum number of samples being limited to 4.
- Bernard the Bard by Otto Germain
- SMZX games no longer graphically corrupt UI elements.
- & by Lancer-X
- augh! by Lancer-X
- Celestial Altar by Lancer-X
- Hackers Can Turn Your Computer into a Bomb! by LogiCow
- Kaboink! by LogiCow
- Lexicon by nooodl
- red by Lancer-X
- SMZX Paint by LogiCow
- SMZX Tetris by Akwende
- Ultima IV: Quest of the Avatar by Lancer-X
- (and several others...)
- & by Lancer-X
Fixed since MegaZeux 2.91c (2018-03-04)
- Most password-protected games that could cause crashes while decrypting in some port versions.
- Bernard the Bard by Otto Germain
Fixed since MegaZeux 2.91d (2018-07-13)
- Any <2.80 game that relied on setting SPRn_OFF to 0 being ignored
- Comfat by Skylark
Fixed since MegaZeux 2.91g (2018-10-07)
- Password-protected games with passwords 15 characters long that would cause crashes while decrypting in some port versions.
- Eggplant Adventure Chapter 1 by Tabris
Fixed since MegaZeux 2.91j (2019-02-20)
- Any <2.83 game relying on the legacy SPR_NUM behavior for IF c?? Sprite
- Project MoveZig by asgromo
- Any <2.80 game relying on the player movement key repeat timers persisting after locking the player.
- Brotherhood by Hercules
Fixed since MegaZeux 2.92 (2019-07-22)
- Any 2.80 through 2.82b game referencing a .SAM or .GDM file that was only packed with a corresponding .WAV or .S3M file.
- Legend of Rhovanion by Padz
- Morning Star by NoahSoft
- Slave Pit by CHEZZY
- ZeuxNAX by Hoof
- Legend of Rhovanion by Padz
- Any <2.80 game that uses the MOD SAM command.
- Crisis in Stuffyou City (47506) by Kuddy, ShloobeR, RoSS, and Trev-MUN (original DoZ version) used MOD SAM on the Pacman board for the power pellet sound. Note that the rerelease replaced this with a PC speaker sound effect, as the MOD SAM command was unsupported in port versions for a very long time.
- Sprite Catcher by Nanobot uses MOD SAM for all of its sound effects.
- Talon's Tale by Otto Germain uses MOD SAM.
- Crisis in Stuffyou City (47506) by Kuddy, ShloobeR, RoSS, and Trev-MUN (original DoZ version) used MOD SAM on the Pacman board for the power pellet sound. Note that the rerelease replaced this with a PC speaker sound effect, as the MOD SAM command was unsupported in port versions for a very long time.
- Any >=2.51s1, <2.69b game relying on counters named "local#" (where # is any number) being global.
- Freedom Bound (4096) by Exophase, Starfire, and Ghent.
- Impact (027) by Exophase, Wervyn, and Quasar.
- Freedom Bound (4096) by Exophase, Starfire, and Ghent.
- Any <2.70 game relying on negative SPR_NUM values
- Sprite Catcher by Nanobot
- Any <2.84 game broken by a sprite collision bounding bug introduced in 2.84.
- Manuel the Manx (219) by CapnKev, MadBrain, LogiCow, and Lipid wasn't playable past the first board due to this bug.
- Any <2.69c game broken by the removal of a version check on if c?? Sprite in 2.80 (these worked in 2.83 through 2.91i only because the legacy if c?? Sprite behavior was removed altogether until 2.91j).
- Depravity (666) by Galladin, Jester, and Jauhis.
- Any <2.80 game relying on sprite values persisting between gameplay sessions or other relaxed requirements for initializing sprites.
- Hackers Can Turn Your Computer into a Bomb! by LogiCow uses PUT Sprite before initializing its sprites, meaning in DOS versions it relied on non-zero sprN_width and sprN_height values persisting between gameplay sessions. This game only "worked" in 2.69c and 2.70 before now, and only on the second attempt or after playing something else that sets these values.
- Lethal Recurse (215) by Lancer-X, Taitorian, and Ghent places a particular sprite to make sure an MZX bug isn't present but doesn't set its height correctly. This worked prior to 2.80, when MZX only required one sprite dimension to be set.
- Serum (404) by George Foster places a 0-height sprite for the message box.
- Trashman Dan (18349) by Tecki, Revvy, and Fungahhh relies on putting a sprite before initializing its height.
- Hackers Can Turn Your Computer into a Bomb! by LogiCow uses PUT Sprite before initializing its sprites, meaning in DOS versions it relied on non-zero sprN_width and sprN_height values persisting between gameplay sessions. This game only "worked" in 2.69c and 2.70 before now, and only on the second attempt or after playing something else that sets these values.
- Any <2.80 game that relied on SHOOT updating the robot blocked array.
- Captain Proton and the Reality Rippers (173) by Kevin Vance, md, and lipid. This would prevent the henchman on the first combat board from cleaning up the overlay correctly, as well as other similar bosses.
- Games fixed or improved by allowing bytecode validation to truncate/nop/patch problematic programs instead of rejecting the entire program:
- Eternal Eclipse Taoyarin by Lancer-X (malformed program ends, 1.0 only)
- Loco by zombieguy (corrupt part of program is fixable)
- Manuel the Manx (219) by CapnKev, MadBrain, LogiCow, and Lipid (a corrupted program on an inaccessible board is silently truncated).
- Sidewinder's Engines by Sidewinder (two robots ended with 0xFF instead of 0x00)
- Games created with Mikawo's zzt2mzx converter with the original broken global robot bytecode are automatically patched to work fully as intended (only the yellow key and white key cheats were truncated).
- Ep+Arp World MZX by "unknown"
- SaintZZT 7th by RinGames
- Ep+Arp World MZX by "unknown"
- Eternal Eclipse Taoyarin by Lancer-X (malformed program ends, 1.0 only)
Fixed since MegaZeux 2.92b (2019-09-23)
- Any game relying on saves preserving the game palette while COLOR FADE OUT is active.
- Better Than Nothing by ThDPro
- Ruin Diver III by KKairos
- Welkin by ThDPro
- Better Than Nothing by ThDPro
Fixed since MegaZeux 2.92c (2020-03-08)
- Games with robots marked unused saved with garbage programs that were erroneously validated starting from 2.84c.
Fixed since MegaZeux 2.92d (2020-05-08)
- Most <2.80 games relying on truncated DOS SFNs in the game linking to a file with an extended filename (bug only affected non-Windows platforms). This fix only works if there is exactly one file found that generates the same truncated SFN, so for best results keep your games in individual folders.
- Are Tomatoes Good for Your Health? (311) by LogiCow
- Billy's RPG by Billy of America
- Bob's Adventure by Christopher Cullen
- Burnt Rubber by Mark Wilson
- Call of Caethrath by Jauhis
- Dan F. 2 by KirbySSB is almost definitely fixed but it's hard to tell because the archive containing the affected file is missing. If the missing archive is found or reconstructed (or if the original single archive is found) that would be great.
- Energy Attack (84047) by Gofer-chan, mOdac, and Beige
- The Evil Internet Virus (160) by zombieguy
- Kya's Sword (original) by RyanThunder
- Larry the Junkie (37701) by Jester, Galladin, and Jauhis
- Lillygrass (sqrt10) by Lc3 and Court
- Neo Blaster X by Verasev
- The Plague by Harlander
- The Second Search by Easton Blue
- Stones and Roks by zombieguy
- Stones and Roks 2 by zombieguy
- Siphrian (rerelease) by Kayin, RoSS, and Koji
- Sword Quest (31740) by NoahSoft and Aeon17
- Tearaway by ShloobeR
- Telecrisis Ch. 1 by weasel
- Top Skater by Mark Wilson
- Trinity (1871) by Exophase, Tixus, Quasar84, and Es
- X-pedition (6068) by Spazz
- Zed! Demo by ShloobeR
- Are Tomatoes Good for Your Health? (311) by LogiCow
- Any <2.81 game relying on string compares being null-terminated.
- Mines of Madness (68874) by Lancer-X
This post has been edited by Lachesis: 27 April 2024 - 05:41 AM